Skip to content

Commit

Permalink
Merging
Browse files Browse the repository at this point in the history
--HG--
branch : week-of-code
  • Loading branch information
matthewturk committed Jul 16, 2009
2 parents 23209ff + 1405dce commit 0c9d7e1
Show file tree
Hide file tree
Showing 12 changed files with 349 additions and 156 deletions.
69 changes: 69 additions & 0 deletions input/restart.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
#!/bin/sh

# Initial parameter file. Will change after restarts
AMRFILE=nBody.RunParamFile

# Set to 1 if the initial run is a restart
INIT_RESTART=0

# Redirection of output (doesn't work ...)
OUTPUT=""
#OUTPUT=">& estd.out"

# MPI call
MPI=mpirun

# Number of processors
NPROCS=1

# Enzo executable
EXE=/Users/jwise/codes/EnzoWOC/week-of-code/src/enzo/enzo.exe

# These shouldn't be changed as they're (for now) hard-coded into enzo
RESTART_FILE=RestartParamFile
FINISH_FILE=RunFinished

########################################################################
########################################################################

# Remove restarting and stopping flag files
if [ -e $RESTART_FILE ]; then
rm -f $RESTART_FILE
fi
if [ -e $FINISH_FILE ]; then
rm -f $FINISH_FILE
fi

if [ $INIT_RESTART -eq 1 ]; then
RESTART_FLAG="-r"
else
RESTART_FLAG=""
fi

# Loop until the run is finished. Restarting when found the restart flag.
FIRST_TIME=1
while [ ! -f $FINISH_FILE ]; do
echo "$MPI -np $NPROCS $EXE -d $RESTART_FLAG $AMRFILE $OUTPUT"
$MPI -np $NPROCS $EXE -d $RESTART_FLAG $AMRFILE $OUTPUT

# Exit if an error code is returned
if [ "$?" -ne "0" ]; then
exit 1;
fi

# Get restart parameter file from RESTART_FILE
if [ -f $RESTART_FILE ]; then

# If this isn't the first loop, erase the previous restart dump
DIR=${AMRFILE%%/*}
if [ -d $DIR -a $FIRST_TIME -eq 0 ]; then
rm -r $DIR
fi

AMRFILE=`cat $RESTART_FILE`
RESTART_FLAG="-r"
FIRST_TIME=0

fi

done
68 changes: 49 additions & 19 deletions src/enzo/CheckForOutput.C
Original file line number Diff line number Diff line change
Expand Up @@ -64,11 +64,8 @@ int CheckForOutput(HierarchyEntry *TopGrid, TopGridData &MetaData,
MetaData.TimeLastDataDump += MetaData.dtDataDump;

//#ifdef USE_HDF5_GROUPS
if (Group_WriteAllData(MetaData.DataDumpName, MetaData.DataDumpNumber++,
TopGrid, MetaData, Exterior) == FAIL) {
fprintf(stderr, "Error in Group_WriteAllData.\n");
ENZO_FAIL("");
}
Group_WriteAllData(MetaData.DataDumpName, MetaData.DataDumpNumber++,
TopGrid, MetaData, Exterior);
// #else
// if (WriteAllData(MetaData.DataDumpName, MetaData.DataDumpNumber++,
// TopGrid, MetaData, Exterior) == FAIL) {
Expand All @@ -88,11 +85,8 @@ int CheckForOutput(HierarchyEntry *TopGrid, TopGridData &MetaData,
MetaData.CycleLastDataDump += MetaData.CycleSkipDataDump;

//#ifdef USE_HDF5_GROUPS
if (Group_WriteAllData(MetaData.DataDumpName, MetaData.DataDumpNumber++,
TopGrid, MetaData, Exterior) == FAIL) {
fprintf(stderr, "Error in Group_WriteAllData.\n");
ENZO_FAIL("");
}
Group_WriteAllData(MetaData.DataDumpName, MetaData.DataDumpNumber++,
TopGrid, MetaData, Exterior);
// #else
// if (WriteAllData(MetaData.DataDumpName, MetaData.DataDumpNumber++,
// TopGrid, MetaData, Exterior) == FAIL) {
Expand Down Expand Up @@ -123,11 +117,8 @@ int CheckForOutput(HierarchyEntry *TopGrid, TopGridData &MetaData,
MetaData.CycleLastDataDump = MetaData.CycleNumber;
if (debug) printf("CPUtime-based output!\n");
//#ifdef USE_HDF5_GROUPS
if (Group_WriteAllData(MetaData.DataDumpName, MetaData.DataDumpNumber++,
TopGrid, MetaData, Exterior) == FAIL) {
fprintf(stderr, "Error in Group_WriteAllData.\n");
ENZO_FAIL("");
}
Group_WriteAllData(MetaData.DataDumpName, MetaData.DataDumpNumber++,
TopGrid, MetaData, Exterior);
// #else
// if (WriteAllData(MetaData.DataDumpName, MetaData.DataDumpNumber++,
// TopGrid, MetaData, Exterior) == FAIL) {
Expand All @@ -138,6 +129,48 @@ int CheckForOutput(HierarchyEntry *TopGrid, TopGridData &MetaData,
WroteData = TRUE;
} // ENDIF

/* Check for output: restart-based. */

char *param;
FILE *pfptr;

if ((CurrentCPUTime >= MetaData.dtRestartDump &&
MetaData.dtRestartDump > 0 ) ||
(MetaData.CycleNumber - MetaData.CycleLastRestartDump >=
MetaData.CycleSkipRestartDump &&
MetaData.CycleSkipRestartDump > 0)) {

MetaData.CycleLastRestartDump = MetaData.CycleNumber;

if (debug) printf("Writing restart dump.\n");
Group_WriteAllData(MetaData.RestartDumpName, MetaData.RestartDumpNumber++,
TopGrid, MetaData, Exterior);

/* On the root processor, write the restart parameter filename to
a file that will be read by a (batch) script to restart enzo.
We cannot call another MPI application from here. */

if (MyProcessorNumber == ROOT_PROCESSOR) {
param = new char[512];
if (MetaData.RestartDumpDir != NULL)
sprintf(param, "%s%"CYCLE_TAG_FORMAT""ISYM"/%s%"CYCLE_TAG_FORMAT""ISYM,
MetaData.RestartDumpDir, MetaData.RestartDumpNumber-1,
MetaData.RestartDumpName, MetaData.RestartDumpNumber-1);
else
sprintf(param, "%s%"CYCLE_TAG_FORMAT""ISYM,
MetaData.RestartDumpName, MetaData.RestartDumpNumber-1);

if ((pfptr = fopen("RestartParamFile", "w")) == NULL)
ENZO_FAIL("Error opening RestartParamFile");
fprintf(pfptr, "%s", param);
fclose(pfptr);

delete [] param;
} // ENDIF ROOT_PROCESSOR

WroteData = TRUE;
}

/* Check for output: redshift-based. */

if (ComovingCoordinates)
Expand All @@ -155,10 +188,7 @@ int CheckForOutput(HierarchyEntry *TopGrid, TopGridData &MetaData,
}

//#ifdef USE_HDF5_GROUPS
if (Group_WriteAllData(Name, Number, TopGrid, MetaData, Exterior) == FAIL) {
fprintf(stderr, "Error in Group_WriteAllData.\n");
ENZO_FAIL("");
}
Group_WriteAllData(Name, Number, TopGrid, MetaData, Exterior);
// #else
// if (WriteAllData(Name, Number, TopGrid, MetaData, Exterior) == FAIL) {
// fprintf(stderr, "Error in WriteAllData.\n");
Expand Down
12 changes: 7 additions & 5 deletions src/enzo/CheckForResubmit.C
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ int CheckForResubmit(TopGridData &MetaData, int &Stop)
if (MetaData.ResubmitOn == FALSE)
return SUCCESS;

char *cmd = new char[256];
char *cmd = new char[512];
double CurrentCPUTime = ReturnWallTime() - MetaData.StartCPUTime;

if (CurrentCPUTime + MetaData.LastCycleCPUTime > MetaData.StopCPUTime) {
Expand All @@ -40,19 +40,21 @@ int CheckForResubmit(TopGridData &MetaData, int &Stop)
"Executing resubmission script, %s\n", MetaData.ResubmitCommand);
if (MyProcessorNumber == ROOT_PROCESSOR) {
if (MetaData.DataDumpDir != NULL)
sprintf(cmd, "%s/%s %d %s%4.4d/%s%4.4d", MetaData.GlobalDir,
MetaData.ResubmitCommand, NumberOfProcessors,
sprintf(cmd, "%s/%s %"ISYM" %s%"CYCLE_TAG_FORMAT""ISYM"/%s%"CYCLE_TAG_FORMAT""ISYM,
MetaData.GlobalDir, MetaData.ResubmitCommand, NumberOfProcessors,
MetaData.DataDumpDir, MetaData.DataDumpNumber-1,
MetaData.DataDumpName, MetaData.DataDumpNumber-1);
else
sprintf(cmd, "%s/%s %d %s%4.4d", MetaData.GlobalDir,
MetaData.ResubmitCommand, NumberOfProcessors,
sprintf(cmd, "%s/%s %"ISYM" %s%"CYCLE_TAG_FORMAT""ISYM,
MetaData.GlobalDir, MetaData.ResubmitCommand, NumberOfProcessors,
MetaData.DataDumpName, MetaData.DataDumpNumber-1);
printf("command: %s\n", cmd);
system(cmd);
}
Stop = TRUE;
} // ENDIF

delete [] cmd;

return SUCCESS;
}
Loading

0 comments on commit 0c9d7e1

Please sign in to comment.