aboutsummaryrefslogtreecommitdiff
path: root/CarpetAttic
diff options
context:
space:
mode:
authorcott <>2004-01-07 15:30:00 +0000
committercott <>2004-01-07 15:30:00 +0000
commitc6e7dedec9e6ea4bfad9b2a22b75b5f6ba7e78bc (patch)
tree1eb72ecd3c3fe60c5498a4824673907caa441599 /CarpetAttic
parentcad6c597fd298c92028ff7395aeab382978cd538 (diff)
Saving a day's work... don't try recovery yet.
darcs-hash:20040107153049-19929-d817dfcb9fcaae5f794d4648530bc781a2fa0982.gz
Diffstat (limited to 'CarpetAttic')
-rw-r--r--CarpetAttic/CarpetIOFlexIOCheckpoint/src/checkpointrestart.cc45
-rw-r--r--CarpetAttic/CarpetIOFlexIOCheckpoint/src/ioflexio.cc95
-rw-r--r--CarpetAttic/CarpetIOFlexIOCheckpoint/src/ioflexio.hh3
3 files changed, 124 insertions, 19 deletions
diff --git a/CarpetAttic/CarpetIOFlexIOCheckpoint/src/checkpointrestart.cc b/CarpetAttic/CarpetIOFlexIOCheckpoint/src/checkpointrestart.cc
index c01c1d99b..e503d0bfc 100644
--- a/CarpetAttic/CarpetIOFlexIOCheckpoint/src/checkpointrestart.cc
+++ b/CarpetAttic/CarpetIOFlexIOCheckpoint/src/checkpointrestart.cc
@@ -48,7 +48,7 @@
#include "ioflexio.hh"
extern "C" {
- static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/CarpetAttic/CarpetIOFlexIOCheckpoint/src/checkpointrestart.cc,v 1.18 2004/01/07 13:14:04 cott Exp $";
+ static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/CarpetAttic/CarpetIOFlexIOCheckpoint/src/checkpointrestart.cc,v 1.19 2004/01/07 16:30:49 cott Exp $";
CCTK_FILEVERSION(Carpet_CarpetIOFlexIO_checkpointrestart_cc);
}
@@ -63,7 +63,7 @@ namespace CarpetCheckpointRestart {
int Checkpoint (const cGH* const cgh, int called_from);
int RecoverParameters (IObase* reader);
- int RecoverGHextensions (cGH* cgh, IObase* reader);
+ static int RecoverGHextensions (cGH* cgh, IObase* reader);
int RecoverVariables (cGH* cgh, IObase* reader, AmrGridReader* amrreader);
void CarpetIOFlexIO_EvolutionCheckpoint( const cGH* const cgh){
@@ -224,7 +224,6 @@ int CarpetIOFlexIO_Recover (cGH* cgh, const char *basefilename, int called_from)
if (called_from == CP_RECOVER_PARAMETERS)
{
- CCTK_VInfo(CCTK_THORNSTRING,"called from recover parameters");
return (RecoverParameters (reader));
}
@@ -236,21 +235,24 @@ int CarpetIOFlexIO_Recover (cGH* cgh, const char *basefilename, int called_from)
BEGIN_REFLEVEL_LOOP(cgh) {
BEGIN_MGLEVEL_LOOP(cgh) {
+
+ /* make sure we are looking at the first dataset where
+ all the good stuff ist stored! */
+ reader->seek(0);
- /* Recover GH extentions */
+ /* Recover GH extentions */
CCTK_INFO ("Recovering GH extensions");
- result = RecoverGHextensions (cgh, reader);
-
- if (! result)
- {
- /* Recover variables */
- CCTK_VInfo (CCTK_THORNSTRING, "Recovering data! ");
- result = RecoverVariables (cgh, reader,amrreader);
- }
-
+ result += RecoverGHextensions (cgh, reader);
} END_MGLEVEL_LOOP;
- } END_REFLEVEL_LOOP;
+ } END_REFLEVEL_LOOP;
+ if (! result)
+ {
+ /* Recover variables */
+ CCTK_VInfo (CCTK_THORNSTRING, "Recovering data! ");
+ result = RecoverVariables (cgh, reader,amrreader);
+ }
+
delete reader;
delete amrreader;
}
@@ -772,14 +774,23 @@ int CarpetIOFlexIO_Recover (cGH* cgh, const char *basefilename, int called_from)
int RecoverVariables (cGH* cgh, IObase* reader, AmrGridReader* amrreader){
- CCTK_VInfo(CCTK_THORNSTRING,"Starting to recover data for refinement level %d",reflevel);
-
+ int retval = 0;
+ CCTK_VInfo(CCTK_THORNSTRING,"Starting to recover data!!!");
+ int ndatasets = reader->nDatasets();
+ //CCTK_VInfo (CCTK_THORNSTRING, "ndatasets=%d", ndatasets);
+ assert (ndatasets>=0);
- return 0;
+ for (int currdataset=1;currdataset < ndatasets;currdataset++) {
+ //CCTK_VInfo(CCTK_THORNSTRING,"dataset: %d",currdataset);
+ reader->seek(currdataset);
+ ReadGF(cgh,reader,amrreader);
}
+ return retval;
+ }
+
} // namespace CarpetCheckpointRestart
diff --git a/CarpetAttic/CarpetIOFlexIOCheckpoint/src/ioflexio.cc b/CarpetAttic/CarpetIOFlexIOCheckpoint/src/ioflexio.cc
index 3a817202a..384d6dde5 100644
--- a/CarpetAttic/CarpetIOFlexIOCheckpoint/src/ioflexio.cc
+++ b/CarpetAttic/CarpetIOFlexIOCheckpoint/src/ioflexio.cc
@@ -45,7 +45,7 @@
extern "C" {
- static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/CarpetAttic/CarpetIOFlexIOCheckpoint/src/ioflexio.cc,v 1.15 2004/01/07 13:14:04 cott Exp $";
+ static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/CarpetAttic/CarpetIOFlexIOCheckpoint/src/ioflexio.cc,v 1.16 2004/01/07 16:30:49 cott Exp $";
CCTK_FILEVERSION(Carpet_CarpetIOFlexIO_ioflexio_cc);
}
@@ -509,6 +509,99 @@ namespace CarpetIOFlexIO {
return retval;
}
+
+
+ int ReadGF (const cGH* const cgh, IObase* reader, AmrGridReader* amrreader) {
+
+ /* this functions reads in a variable on the current reflevel from an already open file. At
+ some point it should be called from InputVarAs */
+
+
+ DECLARE_CCTK_PARAMETERS;
+
+ int tl = -1;
+ int mglevel = -1;
+ int rl = -1;
+
+ int rank;
+ int dims[dim];
+ int nbytes;
+
+ char* varname;
+ char warnstring[256];
+ int asize,i;
+ IObase::DataType datatype;
+ int group,varindex;
+
+ // read the name of the variable
+ i = reader->readAttributeInfo ("name", datatype, asize);
+ if (i >= 0 && datatype == FLEXIO_CHAR && asize > 0)
+ {
+ varname = (char*) malloc(sizeof(char)*asize+1);
+ reader->readAttribute (i, varname);
+ }
+ else
+ {
+ CCTK_WARN (0, "Something is wrong! Can't read dataset names!!!");
+ }
+
+ varindex = CCTK_VarIndex(varname);
+
+ CCTK_VInfo(CCTK_THORNSTRING,"Recovering varindex: %d varname: %s",varindex,varname);
+ free(varname);
+ assert(varindex > -1);
+
+ group = CCTK_GroupIndexFromVarI(varindex);
+ assert(group > -1);
+
+ // Check for storage
+ if (! CCTK_QueryGroupStorageI(cgh, group)) {
+ CCTK_VWarn (0, __LINE__, __FILE__, CCTK_THORNSTRING,
+ "Cannot recover variable \"%s\" because it has no storage",
+ varname);
+ return 0;
+ }
+
+
+ // read reflevel
+ i = reader->readAttributeInfo ("reflevel", datatype, asize);
+ if (i >= 0 && datatype == FLEXIO_INT && asize > 0)
+ {
+ reader->readAttribute (i, &rl);
+ }
+ else
+ {
+ CCTK_WARN (0, "Something is wrong! Can't read refinement level!!!");
+ }
+
+ i = reader->readAttributeInfo ("timelevel", datatype, asize);
+ if (i >= 0 && datatype == FLEXIO_INT && asize > 0)
+ {
+ reader->readAttribute (i, &tl);
+ }
+ else
+ {
+ CCTK_WARN (0, "Something is wrong! Can't read timelevel!!!");
+ }
+
+ i = reader->readAttributeInfo ("mglevel", datatype, asize);
+ if (i >= 0 && datatype == FLEXIO_INT && asize > 0)
+ {
+ reader->readAttribute (i, &mglevel);
+ }
+ else
+ {
+ CCTK_WARN (0, "Something is wrong! Can't read multi group level!!!");
+ }
+
+ CCTK_VInfo(CCTK_THORNSTRING,"Recovering varindex: %d varname: %s tl: %d, rl: %d",varindex,varname,tl,rl);
+
+
+
+
+ return 0;
+ }
+
int InputGH (const cGH* const cgh) {
diff --git a/CarpetAttic/CarpetIOFlexIOCheckpoint/src/ioflexio.hh b/CarpetAttic/CarpetIOFlexIOCheckpoint/src/ioflexio.hh
index 181798404..ec4e06d20 100644
--- a/CarpetAttic/CarpetIOFlexIOCheckpoint/src/ioflexio.hh
+++ b/CarpetAttic/CarpetIOFlexIOCheckpoint/src/ioflexio.hh
@@ -1,4 +1,4 @@
-// $Header: /home/eschnett/C/carpet/Carpet/CarpetAttic/CarpetIOFlexIOCheckpoint/src/ioflexio.hh,v 1.10 2004/01/07 13:14:04 cott Exp $
+// $Header: /home/eschnett/C/carpet/Carpet/CarpetAttic/CarpetIOFlexIOCheckpoint/src/ioflexio.hh,v 1.11 2004/01/07 16:30:49 cott Exp $
#ifndef CARPETIOFLEXIO_HH
#define CARPETIOFLEXIO_HH
@@ -137,6 +137,7 @@ namespace CarpetIOFlexIO {
const char* const fallback);
int WriteGF (const cGH* const cgh, IObase* writer, AMRwriter* amrwriter, ioRequest* request);
+ int ReadGF (const cGH* const cgh, IObase* reader, AmrGridReader* amrreader);
} // namespace CarpetIOFlexIO