aboutsummaryrefslogtreecommitdiff
path: root/CarpetAttic/CarpetIOFlexIOCheckpoint/src/checkpointrestart.cc
diff options
context:
space:
mode:
authorcott <>2004-01-12 08:50:00 +0000
committercott <>2004-01-12 08:50:00 +0000
commit42aba9fa4095963646be9770e879ffd62c4691d6 (patch)
treec1ba31adf0a6572799e55aea22509ebdd5c428af /CarpetAttic/CarpetIOFlexIOCheckpoint/src/checkpointrestart.cc
parent29c34c256c04683b6958a6ab7d10fbb6df1a1b5a (diff)
Mostly code beautification. Incorporated Erik's new WriteAttribute
Mostly code beautification. Incorporated Erik's new WriteAttribute functions and changed the way CarpetIOFlexIO writes dataset attributes. All the functionality provided in CarpetIOFlexIO is now provided. darcs-hash:20040112085031-19929-ce03ec0298a148bc14855d0db33cfa50ce59e681.gz
Diffstat (limited to 'CarpetAttic/CarpetIOFlexIOCheckpoint/src/checkpointrestart.cc')
-rw-r--r--CarpetAttic/CarpetIOFlexIOCheckpoint/src/checkpointrestart.cc117
1 files changed, 33 insertions, 84 deletions
diff --git a/CarpetAttic/CarpetIOFlexIOCheckpoint/src/checkpointrestart.cc b/CarpetAttic/CarpetIOFlexIOCheckpoint/src/checkpointrestart.cc
index f92cd526e..392c8619d 100644
--- a/CarpetAttic/CarpetIOFlexIOCheckpoint/src/checkpointrestart.cc
+++ b/CarpetAttic/CarpetIOFlexIOCheckpoint/src/checkpointrestart.cc
@@ -32,10 +32,6 @@
#undef BYTE
#undef CHAR
-//#include "CactusBase/IOUtil/src/ioGH.h"
-//#include "CactusBase/IOUtil/src/ioutil_CheckpointRecovery.h"
-//#include "CactusBase/IOUtil/src/ioutil_Utils.h"
-
#include "bbox.hh"
#include "data.hh"
#include "gdata.hh"
@@ -43,13 +39,12 @@
#include "vect.hh"
-//#include "StoreNamedData.h"
#include "carpet.hh"
#include "ioflexio.hh"
extern "C" {
- static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/CarpetAttic/CarpetIOFlexIOCheckpoint/src/checkpointrestart.cc,v 1.21 2004/01/09 15:43:46 cott Exp $";
+ static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/CarpetAttic/CarpetIOFlexIOCheckpoint/src/checkpointrestart.cc,v 1.22 2004/01/12 10:50:31 cott Exp $";
CCTK_FILEVERSION(Carpet_CarpetIOFlexIO_checkpointrestart_cc);
}
@@ -284,7 +279,7 @@ int CarpetIOFlexIO_Recover (cGH* cgh, const char *basefilename, int called_from)
CCTK_INFO ("Recovering GH extensions");
result += RecoverGHextensions (cgh, reader);
- cout << refleveltimes[reflevel]<<endl;
+ // cout << refleveltimes[reflevel]<<endl;
tt->set_time(reflevel,mglevel,(CCTK_REAL) cgh->cctk_iteration/maxreflevelfact);
cout << "tt " << tt->time(0,reflevel,mglevel) << endl;
@@ -459,29 +454,6 @@ int CarpetIOFlexIO_Recover (cGH* cgh, const char *basefilename, int called_from)
CCTK_WARN (1, "Unable to restore GH->cctk_time, defaulting to 0.0");
realBuffer = 0.0;
}
-
- /* finally, we need all the times on the individual levels */
- i = reader->readAttributeInfo ("numberoftimes", datatype, dim);
- if(i >=0 && datatype == FLEXIO_INT && dim == 1) {
- char buffer[100];
- reader->readAttribute (i, &numberoftimes);
- assert(numberoftimes==refleveltimes.size());
- for(int lcv=0;lcv<numberoftimes;lcv++) {
- sprintf(buffer,"refleveltime%d",lcv);
- i = reader->readAttributeInfo (buffer, datatype, dim);
- if(i >=0 && datatype == FLEXIO_REAL && dim == 1) {
- reader->readAttribute (i, &refleveltimes[lcv]);
- }
- else {
- CCTK_WARN(0,"BAD BAD BAD! Can't read refleveltime!!");
- }
- }
- }
- else
- {
- CCTK_WARN (0, "Unable to restore reflevel times!");
- }
-
}
#ifdef CCTK_MPI
@@ -489,8 +461,7 @@ int CarpetIOFlexIO_Recover (cGH* cgh, const char *basefilename, int called_from)
/* NOTE: We have to use MPI_COMM_WORLD here
because PUGH_COMM_WORLD is not yet set up at parameter recovery time.
We also assume that PUGH_MPI_INT4 is a compile-time defined datatype. */
- CACTUS_MPI_ERROR (MPI_Bcast (&numberoftimes, 1, CARPET_MPI_INT4, 0,MPI_COMM_WORLD));
- CACTUS_MPI_ERROR (MPI_Bcast (&refleveltimes[0], numberoftimes, CARPET_MPI_REAL, 0, MPI_COMM_WORLD));
+
CACTUS_MPI_ERROR (MPI_Bcast (int4Buffer, 2, CARPET_MPI_INT4, 0,MPI_COMM_WORLD));
CACTUS_MPI_ERROR (MPI_Bcast (int4Buffer, 2, CARPET_MPI_INT4, 0,MPI_COMM_WORLD));
CACTUS_MPI_ERROR (MPI_Bcast (&realBuffer, 1, CARPET_MPI_REAL,0,MPI_COMM_WORLD));
@@ -498,15 +469,13 @@ int CarpetIOFlexIO_Recover (cGH* cgh, const char *basefilename, int called_from)
GH->cctk_time = refleveltimes[reflevel];
- cout << "cctk_time " << realBuffer << endl;
GH->cctk_iteration = (int) int4Buffer[0];
CCTK_SetMainLoopIndex ((int) int4Buffer[1]);
- cout << "refleveltimes" << refleveltimes[0] << " " << refleveltimes[1] << " " << refleveltimes[2] << endl;
return (0);
-}
+ }
@@ -519,8 +488,7 @@ int CarpetIOFlexIO_Recover (cGH* cgh, const char *basefilename, int called_from)
if(parameters)
{
- writer->writeAttribute("global_parameters",IObase::Char,
- strlen(parameters)+1,parameters);
+ WriteAttribute(writer,"global_parameters",parameters);
free(parameters);
}
@@ -540,23 +508,22 @@ int CarpetIOFlexIO_Recover (cGH* cgh, const char *basefilename, int called_from)
ioUtilGH = (ioGH *) CCTK_GHExtension (cgh, "IO");
itmp = CCTK_MainLoopIndex ();
- writer->writeAttribute("main loop index",FLEXIO_INT4,1,&itmp);
+ WriteAttribute(writer,"main loop index",itmp);
itmp = cgh->cctk_iteration;
- writer->writeAttribute("GH$iteration",FLEXIO_INT4, 1, &itmp);
+ WriteAttribute(writer,"GH$iteration",itmp);
itmp = ioUtilGH->ioproc_every;
- writer->writeAttribute("GH$ioproc_every",FLEXIO_INT4,1,&itmp);
+ WriteAttribute(writer,"GH$ioproc_every",itmp);
itmp = CCTK_nProcs (cgh);
- writer->writeAttribute("GH$nprocs",FLEXIO_INT4, 1, &itmp);
+ WriteAttribute(writer,"GH$nprocs",itmp);
dtmp = cgh->cctk_time;
- writer->writeAttribute("GH$time", FLEXIO_REAL, 1, &dtmp);
+ WriteAttribute(writer,"GH$time", dtmp);
version = CCTK_FullVersion ();
- writer->writeAttribute("Cactus version", FLEXIO_CHAR,
- strlen (version) + 1, version);
+ WriteAttribute(writer,"Cactus version", version);
return 0;
}
@@ -693,7 +660,6 @@ int CarpetIOFlexIO_Recover (cGH* cgh, const char *basefilename, int called_from)
}
}
- // cout << "refleveltimes: " << refleveltimes[0] << "," << refleveltimes[1] << endl;
// now dump the grid varibles for all reflevels and components, sorted by groups
BEGIN_REFLEVEL_LOOP(cgh) {
@@ -746,10 +712,6 @@ int CarpetIOFlexIO_Recover (cGH* cgh, const char *basefilename, int called_from)
&gdata.numtimelevels,NULL);
-
-
-
-
CCTK_GroupData (group, &gdata);
/* dump all timelevels except the oldest (for multi-level groups) */
@@ -797,22 +759,14 @@ int CarpetIOFlexIO_Recover (cGH* cgh, const char *basefilename, int called_from)
}
// write the var
- //#if 1
- if (grouptype == CCTK_SCALAR)
- {
- // retval += WriteGS(cgh,writer,request);
- retval += WriteGF(cgh,writer,amrwriter,request);
- }
- else
- //#endif
- if (grouptype == CCTK_ARRAY || grouptype == CCTK_GF)
- //else if (grouptype == CCTK_GF)
+
+ if (grouptype == CCTK_ARRAY || grouptype == CCTK_GF || grouptype == CCTK_SCALAR)
{
char* fullname = CCTK_FullName (request->vindex);
if (verbose)
CCTK_VInfo (CCTK_THORNSTRING,"%s:: reflevel: %d component: %d grouptype: %d ",fullname,reflevel,component,grouptype);
free(fullname);
- retval += WriteGF(cgh,writer,amrwriter,request);
+ retval += WriteGF(cgh,writer,amrwriter,request,1);
}
else
{
@@ -843,28 +797,28 @@ int CarpetIOFlexIO_Recover (cGH* cgh, const char *basefilename, int called_from)
if (retval == 0)
{
- if (rename (cp_tempname, cp_filename))
- {
- CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING,
- "Could not rename temporary checkpoint file '%s' to '%s'",
- cp_tempname, cp_filename);
- retval = -1;
- }
- else
- {
- if (myGH->cp_filename_list[myGH->cp_filename_index])
- {
- if (checkpoint_keep > 0)
+ if (CCTK_MyProc(cgh)==0) {
+ if (rename (cp_tempname, cp_filename))
+ {
+ CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING,
+ "Could not rename temporary checkpoint file '%s' to '%s'",
+ cp_tempname, cp_filename);
+ retval = -1;
+ }
+ else {
+ if (myGH->cp_filename_list[myGH->cp_filename_index])
{
- remove (myGH->cp_filename_list[myGH->cp_filename_index]);
+ if (checkpoint_keep > 0)
+ {
+ remove (myGH->cp_filename_list[myGH->cp_filename_index]);
+ }
+ free (myGH->cp_filename_list[myGH->cp_filename_index]);
}
- free (myGH->cp_filename_list[myGH->cp_filename_index]);
- }
- myGH->cp_filename_list[myGH->cp_filename_index] = strdup (cp_filename);
- myGH->cp_filename_index = (myGH->cp_filename_index+1) % abs (checkpoint_keep);
+ myGH->cp_filename_list[myGH->cp_filename_index] = strdup (cp_filename);
+ myGH->cp_filename_index = (myGH->cp_filename_index+1) % abs (checkpoint_keep);
+ }
}
}
-
return 0;
}
@@ -888,10 +842,8 @@ int CarpetIOFlexIO_Recover (cGH* cgh, const char *basefilename, int called_from)
MPI_Bcast (&ndatasets, 1, MPI_INT, 0, dist::comm);
assert (ndatasets>=0);
- // BEGIN_REFLEVEL_LOOP(cgh) {
- // BEGIN_MGLEVEL_LOOP(cgh) {
+
for (currdataset=1;currdataset < ndatasets;currdataset++) {
- //CCTK_VInfo(CCTK_THORNSTRING,"dataset: %d",currdataset);
if(myproc==0) {
reader->seek(currdataset);
}
@@ -899,9 +851,6 @@ int CarpetIOFlexIO_Recover (cGH* cgh, const char *basefilename, int called_from)
ReadGF(cgh,reader,amrreader,currdataset);
}
- // } END_MGLEVEL_LOOP;
- //} END_REFLEVEL_LOOP;
-
return retval;
}