diff options
103 files changed, 1438 insertions, 1646 deletions
diff --git a/Carpet/Carpet/src/CallFunction.cc b/Carpet/Carpet/src/CallFunction.cc index b1cd011d5..d16675e53 100644 --- a/Carpet/Carpet/src/CallFunction.cc +++ b/Carpet/Carpet/src/CallFunction.cc @@ -1,6 +1,8 @@ #include <assert.h> #include <stdlib.h> +#include <algorithm> + #include "cctk.h" #include "cctki_GHExtensions.h" @@ -9,7 +11,7 @@ #include "carpet.hh" extern "C" { - static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/CallFunction.cc,v 1.8 2003/05/08 15:35:49 schnetter Exp $"; + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/CallFunction.cc,v 1.9 2003/06/18 18:24:27 schnetter Exp $"; CCTK_FILEVERSION(Carpet_Carpet_CallFunction_cc); } @@ -32,10 +34,17 @@ namespace Carpet { // Global operation: call once if (do_global_mode) { - Waypoint ("%*sGlobal mode call at %s to %s::%s", 2*reflevel, "", + assert (component == -1); + const int saved_mglevel = mglevel; + if (mglevel!=-1) set_mglevel (cgh, -1); + const int saved_reflevel = reflevel; + if (reflevel!=-1) set_reflevel (cgh, -1); + Waypoint ("Global mode call at %s to %s::%s", attribute->where, attribute->thorn, attribute->routine); const int res = CCTK_CallFunction (function, attribute, data); assert (res==0); + if (reflevel!=saved_reflevel) set_reflevel (cgh, saved_reflevel); + if (mglevel!=saved_mglevel) set_mglevel (cgh, saved_mglevel); } } else if (attribute->level) { @@ -49,7 +58,7 @@ namespace Carpet { } else { // Local operation: call once per component - BEGIN_LOCAL_COMPONENT_LOOP(cgh) { + BEGIN_LOCAL_COMPONENT_LOOP(cgh, CCTK_GF) { Waypoint ("%*sLocal mode call on component %d at %s to %s::%s", 2*reflevel, "", component, @@ -57,7 +66,7 @@ namespace Carpet { const int res = CCTK_CallFunction (function, attribute, data); assert (res==0); - } END_LOCAL_COMPONENT_LOOP(cgh); + } END_LOCAL_COMPONENT_LOOP; } diff --git a/Carpet/Carpet/src/Checksum.cc b/Carpet/Carpet/src/Checksum.cc index 78b59cde6..ad3972a35 100644 --- a/Carpet/Carpet/src/Checksum.cc +++ b/Carpet/Carpet/src/Checksum.cc @@ -9,7 +9,7 @@ #include "carpet.hh" extern "C" { - static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/Checksum.cc,v 1.8 2002/10/24 10:39:38 schnetter Exp $"; + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/Checksum.cc,v 1.9 2003/06/18 18:24:27 schnetter Exp $"; CCTK_FILEVERSION(Carpet_Carpet_Checksum_cc); } @@ -31,55 +31,61 @@ namespace Carpet { checksums.resize(CCTK_NumVars()); for (int group=0; group<CCTK_NumGroups(); ++group) { - for (int var=0; var<CCTK_NumVarsInGroupI(group); ++var) { - - const int n = CCTK_FirstVarIndexI(group) + var; - const int num_tl = CCTK_NumTimeLevelsFromVarI(n); - assert (num_tl>0); - const int min_tl = mintl(where, num_tl); - const int max_tl = maxtl(where, num_tl); - - checksums[n].resize(maxreflevels); - checksums[n][reflevel].resize(num_tl); - for (int tl=min_tl; tl<=max_tl; ++tl) { - checksums[n][reflevel][tl].resize(hh->components(reflevel)); - BEGIN_COMPONENT_LOOP(cgh) { - checksums[n][reflevel][tl][component].valid = false; - } END_COMPONENT_LOOP(cgh); - } + const int grouptype = CCTK_GroupTypeI(group); + if (grouptype == CCTK_GF || reflevel==0) { + for (int var=0; var<CCTK_NumVarsInGroupI(group); ++var) { + + const int n = CCTK_FirstVarIndexI(group) + var; + const int num_tl = CCTK_NumTimeLevelsFromVarI(n); + assert (num_tl>0); + const int min_tl = mintl(where, num_tl); + const int max_tl = maxtl(where, num_tl); + + checksums[n].resize(maxreflevels); + checksums[n][reflevel].resize(num_tl); + for (int tl=min_tl; tl<=max_tl; ++tl) { + checksums[n][reflevel][tl].resize(hh->components(reflevel)); + BEGIN_COMPONENT_LOOP(cgh, grouptype) { + checksums[n][reflevel][tl][component].valid = false; + } END_COMPONENT_LOOP; + } + } } } for (int group=0; group<CCTK_NumGroups(); ++group) { - if (CCTK_QueryGroupStorageI(cgh, group)) { - for (int var=0; var<CCTK_NumVarsInGroupI(group); ++var) { - - const int n = CCTK_FirstVarIndexI(group) + var; - const int sz = CCTK_VarTypeSize(CCTK_VarTypeI(n)); - assert (sz>0); - const int num_tl = CCTK_NumTimeLevelsFromVarI(n); - assert (num_tl>0); - const int min_tl = mintl(where, num_tl); - const int max_tl = maxtl(where, num_tl); - - for (int tl=min_tl; tl<=max_tl; ++tl) { - BEGIN_LOCAL_COMPONENT_LOOP(cgh) { - const int gpdim = arrdata[group].info.dim; - int np = 1; - for (int d=0; d<gpdim; ++d) { - np *= *CCTK_ArrayGroupSizeI(cgh, d, group); - } - const void* data = cgh->data[n][tl]; - int chk = 0; - for (int i=0; i<np*sz/(int)sizeof chk; ++i) { - chk += ((const int*)data)[i]; - } - checksums[n][reflevel][tl][component].sum = chk; - checksums[n][reflevel][tl][component].valid = true; - } END_LOCAL_COMPONENT_LOOP(cgh); - } // for tl - } // for var - } // if has storage + const int grouptype = CCTK_GroupTypeI(group); + if (grouptype == CCTK_GF || reflevel==0) { + if (CCTK_QueryGroupStorageI(cgh, group)) { + for (int var=0; var<CCTK_NumVarsInGroupI(group); ++var) { + + const int n = CCTK_FirstVarIndexI(group) + var; + const int sz = CCTK_VarTypeSize(CCTK_VarTypeI(n)); + assert (sz>0); + const int num_tl = CCTK_NumTimeLevelsFromVarI(n); + assert (num_tl>0); + const int min_tl = mintl(where, num_tl); + const int max_tl = maxtl(where, num_tl); + + for (int tl=min_tl; tl<=max_tl; ++tl) { + BEGIN_LOCAL_COMPONENT_LOOP(cgh, grouptype) { + const int gpdim = arrdata[group].info.dim; + int np = 1; + for (int d=0; d<gpdim; ++d) { + np *= *CCTK_ArrayGroupSizeI(cgh, d, group); + } + const void* data = cgh->data[n][tl]; + int chk = 0; + for (int i=0; i<np*sz/(int)sizeof chk; ++i) { + chk += ((const int*)data)[i]; + } + checksums[n][reflevel][tl][component].sum = chk; + checksums[n][reflevel][tl][component].valid = true; + } END_LOCAL_COMPONENT_LOOP; + } // for tl + } // for var + } // if has storage + } // if reflevel } // for group } @@ -95,56 +101,59 @@ namespace Carpet { assert ((int)checksums.size()==CCTK_NumVars()); for (int group=0; group<CCTK_NumGroups(); ++group) { - if (CCTK_QueryGroupStorageI(cgh, group)) { - for (int var=0; var<CCTK_NumVarsInGroupI(group); ++var) { - - const int n = CCTK_FirstVarIndexI(group) + var; - const int sz = CCTK_VarTypeSize(CCTK_VarTypeI(n)); - assert (sz>0); - const int num_tl = CCTK_NumTimeLevelsFromVarI(n); - assert (num_tl>0); - const int min_tl = mintl(where, num_tl); - const int max_tl = maxtl(where, num_tl); - - assert ((int)checksums[n].size()==maxreflevels); - assert ((int)checksums[n][reflevel].size()==num_tl); - - for (int tl=min_tl; tl<=max_tl; ++tl) { - - bool unexpected_change = false; - - assert ((int)checksums[n][reflevel][tl].size() - == hh->components(reflevel)); - BEGIN_LOCAL_COMPONENT_LOOP(cgh) { - if (checksums[n][reflevel][tl][component].valid) { - const int gpdim = arrdata[group].info.dim; - int np = 1; - for (int d=0; d<gpdim; ++d) { - np *= *CCTK_ArrayGroupSizeI(cgh, d, group); - } - const void* data = cgh->data[n][tl]; - int chk = 0; - for (int i=0; i<np*sz/(int)sizeof chk; ++i) { - chk += ((const int*)data)[i]; - } - unexpected_change - = (unexpected_change - || chk != checksums[n][reflevel][tl][component].sum); - } - } END_LOCAL_COMPONENT_LOOP(cgh); - - if (unexpected_change) { - char* fullname = CCTK_FullName(n); - CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING, - "Timelevel %d of the variable \"%s\" has changed unexpectedly.", - tl, fullname); - free (fullname); - } - - } // for tl - - } // for var - } // if has storage + const int grouptype = CCTK_GroupTypeI(group); + if (grouptype == CCTK_GF || reflevel==0) { + if (CCTK_QueryGroupStorageI(cgh, group)) { + for (int var=0; var<CCTK_NumVarsInGroupI(group); ++var) { + + const int n = CCTK_FirstVarIndexI(group) + var; + const int sz = CCTK_VarTypeSize(CCTK_VarTypeI(n)); + assert (sz>0); + const int num_tl = CCTK_NumTimeLevelsFromVarI(n); + assert (num_tl>0); + const int min_tl = mintl(where, num_tl); + const int max_tl = maxtl(where, num_tl); + + assert ((int)checksums[n].size()==maxreflevels); + assert ((int)checksums[n][reflevel].size()==num_tl); + + for (int tl=min_tl; tl<=max_tl; ++tl) { + + bool unexpected_change = false; + + assert ((int)checksums[n][reflevel][tl].size() + == hh->components(reflevel)); + BEGIN_LOCAL_COMPONENT_LOOP(cgh, grouptype) { + if (checksums[n][reflevel][tl][component].valid) { + const int gpdim = arrdata[group].info.dim; + int np = 1; + for (int d=0; d<gpdim; ++d) { + np *= *CCTK_ArrayGroupSizeI(cgh, d, group); + } + const void* data = cgh->data[n][tl]; + int chk = 0; + for (int i=0; i<np*sz/(int)sizeof chk; ++i) { + chk += ((const int*)data)[i]; + } + unexpected_change + = (unexpected_change + || chk != checksums[n][reflevel][tl][component].sum); + } + } END_LOCAL_COMPONENT_LOOP; + + if (unexpected_change) { + char* fullname = CCTK_FullName(n); + CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING, + "Timelevel %d of the variable \"%s\" has changed unexpectedly.", + tl, fullname); + free (fullname); + } + + } // for tl + + } // for var + } // if has storage + } // if reflevel } // for group } diff --git a/Carpet/Carpet/src/Comm.cc b/Carpet/Carpet/src/Comm.cc index c3f59803b..f893b3c71 100644 --- a/Carpet/Carpet/src/Comm.cc +++ b/Carpet/Carpet/src/Comm.cc @@ -10,7 +10,7 @@ #include "carpet.hh" extern "C" { - static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/Comm.cc,v 1.16 2003/05/21 14:30:24 schnetter Exp $"; + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/Comm.cc,v 1.17 2003/06/18 18:24:27 schnetter Exp $"; CCTK_FILEVERSION(Carpet_Carpet_Comm_cc); } @@ -24,19 +24,31 @@ namespace Carpet { int SyncGroup (cGH* cgh, const char* groupname) { - if (hh->local_components(reflevel) != 1 && component != -1) { - CCTK_VWarn (0, __LINE__, __FILE__, CCTK_THORNSTRING, - "Cannot synchronise in local mode " - "(Tried to synchronise group \"%s\")", - groupname); - } - if (hh->local_components(reflevel) != 1) assert (component == -1); - - Checkpoint ("%*sSyncGroup %s", 2*reflevel, "", groupname); + DECLARE_CCTK_PARAMETERS; const int group = CCTK_GroupIndex(groupname); assert (group>=0 && group<CCTK_NumGroups()); + Checkpoint ("%*sSyncGroup %s", 2*reflevel, "", groupname); + + const int grouptype = CCTK_GroupTypeI(group); + + if (grouptype == CCTK_GF) { + if (reflevel == -1) { + CCTK_VWarn (0, __LINE__, __FILE__, CCTK_THORNSTRING, + "Cannot synchronise grid functions in global mode " + "(Tried to synchronise group \"%s\")", + groupname); + } + if (hh->local_components(reflevel) != 1 && component != -1) { + CCTK_VWarn (0, __LINE__, __FILE__, CCTK_THORNSTRING, + "Cannot synchronise grid functions in local mode " + "(Tried to synchronise group \"%s\")", + groupname); + } + if (hh->local_components(reflevel) != 1) assert (component == -1); + } + if (! CCTK_QueryGroupStorageI(cgh, group)) { CCTK_VWarn (2, __LINE__, __FILE__, CCTK_THORNSTRING, "Cannot synchronise group \"%s\" because it has no storage", @@ -44,6 +56,8 @@ namespace Carpet { return -1; } + if (CCTK_NumVarsInGroupI(group)==0) return 0; + const int n0 = CCTK_FirstVarIndexI(group); assert (n0>=0); const int num_tl = CCTK_NumTimeLevelsFromVarI(n0); @@ -52,19 +66,19 @@ namespace Carpet { assert (group<(int)arrdata.size()); for (int var=0; var<(int)arrdata[group].data.size(); ++var) { - if (CCTK_GroupTypeI(group) == CCTK_GF) { + if (grouptype == CCTK_GF) { if (arrdata[group].do_transfer) { if (reflevel>0) { + // use the current time here (which may be modified by the + // user) + const CCTK_REAL time = (cgh->cctk_time - cctk_initial_time) / delta_time; + if (false) { + const CCTK_REAL time1 = tt->time (tl, reflevel, mglevel); + const CCTK_REAL time2 = (cgh->cctk_time - cctk_initial_time) / delta_time; + assert (fabs((time1 - time2) / (fabs(time1) + fabs(time2) + fabs(cgh->cctk_delta_time))) < 1e-12); + } + for (int c=0; c<arrdata[group].hh->components(reflevel); ++c) { - // use the current time here (which may be modified by the - // user) - const CCTK_REAL time = cgh->cctk_time / base_delta_time; - if (false) { - const CCTK_REAL time1 = tt->time (tl, reflevel, mglevel); - const CCTK_REAL time2 = cgh->cctk_time / base_delta_time; - assert (fabs((time1 - time2) / (fabs(time1) + fabs(time2) + fabs(base_delta_time))) < 1e-12); - } - arrdata[group].data[var]->ref_bnd_prolongate (tl, reflevel, c, mglevel, time); } @@ -73,9 +87,11 @@ namespace Carpet { Checkpoint ("%*s(no prolongating for group %s)", 2*reflevel, "", groupname); } - } - for (int c=0; c<arrdata[group].hh->components(reflevel); ++c) { - arrdata[group].data[var]->sync (tl, reflevel, c, mglevel); + for (int c=0; c<arrdata[group].hh->components(reflevel); ++c) { + arrdata[group].data[var]->sync (tl, reflevel, c, mglevel); + } + } else { // grouptype != CCTK_GF + arrdata[group].data[var]->sync (0, 0, 0, 0); } } diff --git a/Carpet/Carpet/src/Evolve.cc b/Carpet/Carpet/src/Evolve.cc index b20b7d1cd..ebf6f4a66 100644 --- a/Carpet/Carpet/src/Evolve.cc +++ b/Carpet/Carpet/src/Evolve.cc @@ -18,7 +18,7 @@ #include "carpet.hh" extern "C" { - static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/Evolve.cc,v 1.21 2003/05/08 15:35:49 schnetter Exp $"; + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/Evolve.cc,v 1.22 2003/06/18 18:24:27 schnetter Exp $"; CCTK_FILEVERSION(Carpet_Carpet_Evolve_cc); } @@ -139,13 +139,11 @@ namespace Carpet { // Advance level times tt->advance_time (reflevel, mglevel); - - // TODO: set cctk_time in set_mglevel - cgh->cctk_time - = tt->time (0, reflevel, mglevel) * base_delta_time; + cgh->cctk_time = cctk_initial_time + tt->time (0, reflevel, mglevel) * cgh->cctk_delta_time; - Waypoint ("%*sCurrent time is %g%s", 2*reflevel, "", + Waypoint ("%*sCurrent time is %g, delta is %g%s", 2*reflevel, "", cgh->cctk_time, + cgh->cctk_delta_time / cgh->cctk_timefac, do_global_mode ? " (global time)" : ""); // Cycle time levels @@ -170,14 +168,14 @@ namespace Carpet { CalculateChecksums (cgh, currenttime); } - } END_MGLEVEL_LOOP(cgh); + } END_MGLEVEL_LOOP; // Regrid Waypoint ("%*sRegrid", 2*reflevel, ""); Regrid (cgh); } - } END_REFLEVEL_LOOP(cgh); + } END_REFLEVEL_LOOP; @@ -191,13 +189,11 @@ namespace Carpet { do_global_mode = cgh->cctk_iteration >= next_global_mode_iter_loop2; next_global_mode_iter_loop2 = cgh->cctk_iteration + 1; - - cgh->cctk_time - = tt->time (0, reflevel, mglevel) * base_delta_time; // Restrict - Waypoint ("%*sCurrent time is %g%s", 2*reflevel, "", + Waypoint ("%*sCurrent time is %g, delta is %g%s", 2*reflevel, "", cgh->cctk_time, + cgh->cctk_delta_time / cgh->cctk_timefac, do_global_mode ? " (global time)" : ""); Restrict (cgh); @@ -205,10 +201,10 @@ namespace Carpet { CCTK_ScheduleTraverse ("POSTRESTRICT", cgh, CallFunction); } - } END_MGLEVEL_LOOP(cgh); + } END_MGLEVEL_LOOP; } - } END_REVERSE_REFLEVEL_LOOP(cgh); + } END_REVERSE_REFLEVEL_LOOP; @@ -223,11 +219,9 @@ namespace Carpet { do_global_mode = cgh->cctk_iteration >= next_global_mode_iter_loop3; next_global_mode_iter_loop3 = cgh->cctk_iteration + 1; - cgh->cctk_time - = tt->time (0, reflevel, mglevel) * base_delta_time; - - Waypoint ("%*sCurrent time is %g%s", 2*reflevel, "", + Waypoint ("%*sCurrent time is %g, delta is %g%s", 2*reflevel, "", cgh->cctk_time, + cgh->cctk_delta_time / cgh->cctk_timefac, do_global_mode ? " (global time)" : ""); // Checkpoint @@ -246,10 +240,10 @@ namespace Carpet { CheckChecksums (cgh, alltimes); } - } END_MGLEVEL_LOOP(cgh); + } END_MGLEVEL_LOOP; } - } END_REFLEVEL_LOOP(cgh); + } END_REFLEVEL_LOOP; } // main loop diff --git a/Carpet/Carpet/src/Initialise.cc b/Carpet/Carpet/src/Initialise.cc index 91b8599a3..49b1b8da1 100644 --- a/Carpet/Carpet/src/Initialise.cc +++ b/Carpet/Carpet/src/Initialise.cc @@ -12,7 +12,7 @@ #include "carpet.hh" extern "C" { - static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/Initialise.cc,v 1.29 2003/05/27 12:01:11 schnetter Exp $"; + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/Initialise.cc,v 1.30 2003/06/18 18:24:27 schnetter Exp $"; CCTK_FILEVERSION(Carpet_Carpet_Initialise_cc); } @@ -42,7 +42,6 @@ namespace Carpet { // Initialise stuff cgh->cctk_iteration = 0; - cgh->cctk_time = cctk_initial_time; do_global_mode = true; // Enable storage and communtication @@ -65,10 +64,12 @@ namespace Carpet { BEGIN_MGLEVEL_LOOP(cgh) { + cgh->cctk_time = cctk_initial_time + tt->time (0, reflevel, mglevel) * cgh->cctk_delta_time; do_global_mode = reflevel == 0; - Waypoint ("%*sCurrent time is %g%s", 2*reflevel, "", + Waypoint ("%*sCurrent time is %g, delta is %g%s", 2*reflevel, "", cgh->cctk_time, + cgh->cctk_delta_time / cgh->cctk_timefac, do_global_mode ? " (global time)" : ""); // Checking @@ -78,20 +79,6 @@ namespace Carpet { Waypoint ("%*sScheduling BASEGRID", 2*reflevel, ""); CCTK_ScheduleTraverse ("CCTK_BASEGRID", cgh, CallFunction); - // Allow the time step to be changed - if (reflevel==0) { - // Initialise time and time step on coarse grid - base_delta_time = cgh->cctk_delta_time; - for (int d=0; d<dim; ++d) { - base_origin_space[d] = cgh->cctk_origin_space[d]; - } - } else { -// assert (abs(cgh->cctk_delta_time - base_delta_time / reflevelfactor) -// < 1e-6 * base_delta_time); - // This circumvents a bug in CactusBase/Time - cgh->cctk_delta_time = base_delta_time / reflevelfact * mglevelfact; - } - if (! init_each_timelevel) { // Set up the initial data @@ -103,7 +90,7 @@ namespace Carpet { } else { // init_each_timelevel - bool const orig_do_global_mode = do_global_mode; + bool const saved_do_global_mode = do_global_mode; tt->set_delta (reflevel, mglevel, - tt->get_delta (reflevel, mglevel)); @@ -115,18 +102,18 @@ namespace Carpet { for (int tl=-2; tl<=0; ++tl) { - do_global_mode = orig_do_global_mode && tl==0; + do_global_mode = saved_do_global_mode && tl==0; // Advance level times tt->advance_time (reflevel, mglevel); - cgh->cctk_time - = tt->time (0, reflevel, mglevel) * base_delta_time; + cgh->cctk_time = cctk_initial_time + tt->time (0, reflevel, mglevel) * cgh->cctk_delta_time; // Cycle time levels CycleTimeLevels (cgh); - Waypoint ("%*sCurrent time is %g%s", 2*reflevel, "", + Waypoint ("%*sCurrent time is %g, delta is %g%s", 2*reflevel, "", cgh->cctk_time, + cgh->cctk_delta_time / cgh->cctk_timefac, do_global_mode ? " (global time)" : ""); // Set up the initial data @@ -137,7 +124,7 @@ namespace Carpet { } // for tl - do_global_mode = orig_do_global_mode; + do_global_mode = saved_do_global_mode; } // init_each_timelevel @@ -148,13 +135,13 @@ namespace Carpet { // Checking PoisonCheck (cgh, alltimes); - } END_MGLEVEL_LOOP(cgh); + } END_MGLEVEL_LOOP; // Regrid Waypoint ("%*sRegrid", 2*reflevel, ""); Regrid (cgh, reflevel); - } END_REFLEVEL_LOOP(cgh); + } END_REFLEVEL_LOOP; @@ -164,18 +151,20 @@ namespace Carpet { do_global_mode = reflevel == 0; - // Restrict - Waypoint ("%*sCurrent time is %g%s", 2*reflevel, "", + Waypoint ("%*sCurrent time is %g, delta is %g%s", 2*reflevel, "", cgh->cctk_time, + cgh->cctk_delta_time / cgh->cctk_timefac, do_global_mode ? " (global time)" : ""); + + // Restrict Restrict (cgh); Waypoint ("%*sScheduling POSTRESTRICT", 2*reflevel, ""); CCTK_ScheduleTraverse ("POSTRESTRICT", cgh, CallFunction); - } END_MGLEVEL_LOOP(cgh); + } END_MGLEVEL_LOOP; - } END_REVERSE_REFLEVEL_LOOP(cgh); + } END_REVERSE_REFLEVEL_LOOP; @@ -192,8 +181,9 @@ namespace Carpet { do_global_mode = reflevel == 0; - Waypoint ("%*sCurrent time is %g%s", 2*reflevel, "", + Waypoint ("%*sCurrent time is %g, delta is %g%s", 2*reflevel, "", cgh->cctk_time, + cgh->cctk_delta_time / cgh->cctk_timefac, do_global_mode ? " (global time)" : ""); // Checking @@ -216,9 +206,9 @@ namespace Carpet { // Checking CheckChecksums (cgh, allbutcurrenttime); - } END_MGLEVEL_LOOP(cgh); + } END_MGLEVEL_LOOP; - } END_REFLEVEL_LOOP(cgh); + } END_REFLEVEL_LOOP; Waypoint ("done with Initialise."); @@ -239,7 +229,6 @@ namespace Carpet { BEGIN_REFLEVEL_LOOP(cgh) { BEGIN_MGLEVEL_LOOP(cgh) { - cgh->cctk_time = cctk_initial_time; // Cycle time levels (ignore arrays) cout << "3TL rl=" << reflevel << " cycling" << endl; @@ -247,10 +236,10 @@ namespace Carpet { // Advance level times tt->advance_time (reflevel, mglevel); - cgh->cctk_time += cgh->cctk_delta_time; + cgh->cctk_time = cctk_initial_time + tt->time (0, reflevel, mglevel) * cgh->cctk_delta_time; cout << "3TL rl=" << reflevel << " ml=" << mglevel << " time=" << tt->get_time (reflevel, mglevel) - << " time=" << cgh->cctk_time / base_delta_time << endl; + << " time=" << cgh->cctk_time / cgh->cctk_delta_time << endl; // Evolve forward Waypoint ("%*sScheduling PRESTEP", 2*reflevel, ""); @@ -271,11 +260,11 @@ namespace Carpet { tt->advance_time (rl, mglevel); } cgh->cctk_delta_time *= -1; - cgh->cctk_time += cgh->cctk_delta_time; - cgh->cctk_time += cgh->cctk_delta_time; + delta_time *= -1; + cgh->cctk_time = cctk_initial_time - tt->time (0, reflevel, mglevel) * cgh->cctk_delta_time; cout << "3TL rl=" << reflevel << " ml=" << mglevel << " time=" << tt->get_time (reflevel, mglevel) - << " time=" << cgh->cctk_time / base_delta_time << endl; + << " time=" << cgh->cctk_time / cgh->cctk_delta_time << endl; // Evolve backward Waypoint ("%*sScheduling PRESTEP", 2*reflevel, ""); @@ -296,14 +285,14 @@ namespace Carpet { tt->advance_time (rl, mglevel); } cgh->cctk_delta_time *= -1; - cgh->cctk_time += cgh->cctk_delta_time; - cgh->cctk_time += cgh->cctk_delta_time; + delta_time *= -1; + cgh->cctk_time = cctk_initial_time + tt->time (0, reflevel, mglevel) * cgh->cctk_delta_time; cout << "3TL rl=" << reflevel << " ml=" << mglevel << " time=" << tt->get_time (reflevel, mglevel) - << " time=" << cgh->cctk_time / base_delta_time << endl; + << " time=" << cgh->cctk_time / cgh->cctk_delta_time << endl; - } END_MGLEVEL_LOOP(cgh); - } END_REFLEVEL_LOOP(cgh); + } END_MGLEVEL_LOOP; + } END_REFLEVEL_LOOP; cout << "Hourglass structure in place" << endl; @@ -315,7 +304,7 @@ namespace Carpet { BEGIN_REVERSE_REFLEVEL_LOOP(cgh) { BEGIN_MGLEVEL_LOOP(cgh) { - cgh->cctk_time = cctk_initial_time + cgh->cctk_delta_time; + cgh->cctk_time = cctk_initial_time + cgh->cctk_delta_time / cgh->cctk_timefac; // Restrict cout << "3TL rl=" << reflevel << " restricting" << endl; @@ -335,11 +324,11 @@ namespace Carpet { tt->advance_time (rl, mglevel); } cgh->cctk_delta_time *= -1; - cgh->cctk_time += cgh->cctk_delta_time; - cgh->cctk_time += cgh->cctk_delta_time; + delta_time *= -1; + cgh->cctk_time = cctk_initial_time - tt->time (0, reflevel, mglevel) * cgh->cctk_delta_time; cout << "3TL rl=" << reflevel << " ml=" << mglevel << " time=" << tt->get_time (reflevel, mglevel) - << " time=" << cgh->cctk_time / base_delta_time << endl; + << " time=" << cgh->cctk_time / cgh->cctk_delta_time << endl; // Cycle time levels cout << "3TL rl=" << reflevel << " cycling" << endl; @@ -347,10 +336,10 @@ namespace Carpet { // Advance level times tt->advance_time (reflevel, mglevel); - cgh->cctk_time += cgh->cctk_delta_time; + cgh->cctk_time = cctk_initial_time - tt->time (0, reflevel, mglevel) * cgh->cctk_delta_time; cout << "3TL rl=" << reflevel << " ml=" << mglevel << " time=" << tt->get_time (reflevel, mglevel) - << " time=" << cgh->cctk_time / base_delta_time << endl; + << " time=" << cgh->cctk_time / cgh->cctk_delta_time << endl; // Evolve backward Waypoint ("%*sScheduling PRESTEP", 2*reflevel, ""); @@ -371,18 +360,17 @@ namespace Carpet { tt->advance_time (rl, mglevel); } cgh->cctk_delta_time *= -1; - cgh->cctk_time += cgh->cctk_delta_time; - cgh->cctk_time += cgh->cctk_delta_time; + delta_time *= -1; + cgh->cctk_time = cctk_initial_time + tt->time (0, reflevel, mglevel) * cgh->cctk_delta_time; cout << "3TL rl=" << reflevel << " ml=" << mglevel << " time=" << tt->get_time (reflevel, mglevel) - << " time=" << cgh->cctk_time / base_delta_time << endl; + << " time=" << cgh->cctk_time / cgh->cctk_delta_time << endl; - } END_MGLEVEL_LOOP(cgh); - } END_REVERSE_REFLEVEL_LOOP(cgh); + } END_MGLEVEL_LOOP; + } END_REVERSE_REFLEVEL_LOOP; // Reset stuff cgh->cctk_iteration = 0; - cgh->cctk_time = cctk_initial_time; CCTK_INFO ("Finished initialising three timelevels"); } diff --git a/Carpet/Carpet/src/Poison.cc b/Carpet/Carpet/src/Poison.cc index a698e1574..8cf7df051 100644 --- a/Carpet/Carpet/src/Poison.cc +++ b/Carpet/Carpet/src/Poison.cc @@ -8,7 +8,7 @@ #include "carpet.hh" extern "C" { - static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/Poison.cc,v 1.11 2003/05/23 23:51:17 schnetter Exp $"; + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/Poison.cc,v 1.12 2003/06/18 18:24:27 schnetter Exp $"; CCTK_FILEVERSION(Carpet_Carpet_Poison_cc); } @@ -38,6 +38,7 @@ namespace Carpet { void PoisonGroup (cGH* cgh, const int group, const checktimes where) { DECLARE_CCTK_PARAMETERS; + int ierr; assert (group>=0 && group<CCTK_NumGroups()); @@ -63,23 +64,20 @@ namespace Carpet { const int min_tl = mintl(where, num_tl); const int max_tl = maxtl(where, num_tl); - int np = 1; const int gpdim = CCTK_GroupDimI(group); - for (int d=0; d<gpdim; ++d) { - np *= *CCTK_ArrayGroupSizeI(cgh, d, group); - } - if (CCTK_GroupTypeI(group) == CCTK_GF) { + const int grouptype = CCTK_GroupTypeI(group); + + BEGIN_LOCAL_COMPONENT_LOOP(cgh, grouptype) { - BEGIN_LOCAL_COMPONENT_LOOP(cgh) { - for (int n=var0; n<var0+nvar; ++n) { - for (int tl=min_tl; tl<=max_tl; ++tl) { - memset (cgh->data[n][tl], poison_value, np*sz); - } // for tl - } // for var - } END_LOCAL_COMPONENT_LOOP(cgh); + vector<int> lsh(gpdim); + ierr = CCTK_GrouplshGI (cgh, gpdim, &lsh[0], group); + assert (!ierr); - } else { + int np = 1; + for (int d=0; d<gpdim; ++d) { + np *= lsh[d]; + } for (int n=var0; n<var0+nvar; ++n) { for (int tl=min_tl; tl<=max_tl; ++tl) { @@ -87,7 +85,7 @@ namespace Carpet { } // for tl } // for var - } // group type != gf + } END_LOCAL_COMPONENT_LOOP; } @@ -104,6 +102,8 @@ namespace Carpet { if (CCTK_QueryGroupStorageI(cgh, group)) { for (int var=0; var<CCTK_NumVarsInGroupI(group); ++var) { + const int grouptype = CCTK_GroupTypeI(group); + const int n = CCTK_FirstVarIndexI(group) + var; const int num_tl = CCTK_NumTimeLevelsFromVarI(n); @@ -113,7 +113,7 @@ namespace Carpet { for (int tl=min_tl; tl<=max_tl; ++tl) { - BEGIN_LOCAL_COMPONENT_LOOP(cgh) { + BEGIN_LOCAL_COMPONENT_LOOP(cgh, grouptype) { vect<int,dim> size(1); const int gpdim = arrdata[group].info.dim; for (int d=0; d<gpdim; ++d) { @@ -161,7 +161,7 @@ namespace Carpet { fullname, numpoison, tl); free (fullname); } - } END_LOCAL_COMPONENT_LOOP(cgh); + } END_LOCAL_COMPONENT_LOOP; } // for tl diff --git a/Carpet/Carpet/src/Restrict.cc b/Carpet/Carpet/src/Restrict.cc index c96ec56a7..810174f18 100644 --- a/Carpet/Carpet/src/Restrict.cc +++ b/Carpet/Carpet/src/Restrict.cc @@ -10,7 +10,7 @@ #include "carpet.hh" extern "C" { - static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/Restrict.cc,v 1.15 2003/05/14 08:33:37 schnetter Exp $"; + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/Restrict.cc,v 1.16 2003/06/18 18:24:27 schnetter Exp $"; CCTK_FILEVERSION(Carpet_Carpet_Restrict_cc); } @@ -42,8 +42,8 @@ namespace Carpet { const CCTK_REAL time = tt->time (tl, reflevel, mglevel); if (tl==0) { const CCTK_REAL time1 = tt->time (tl, reflevel, mglevel); - const CCTK_REAL time2 = cgh->cctk_time / base_delta_time; - assert (fabs((time1 - time2) / (fabs(time1) + fabs(time2) + fabs(base_delta_time))) < 1e-12); + const CCTK_REAL time2 = cgh->cctk_time / cgh->cctk_delta_time; + assert (fabs((time1 - time2) / (fabs(time1) + fabs(time2) + fabs(cgh->cctk_delta_time))) < 1e-12); } if (mglevel > 0) { diff --git a/Carpet/Carpet/src/SetupGH.cc b/Carpet/Carpet/src/SetupGH.cc index 786320839..809a1e43a 100644 --- a/Carpet/Carpet/src/SetupGH.cc +++ b/Carpet/Carpet/src/SetupGH.cc @@ -19,7 +19,7 @@ #include "carpet.hh" extern "C" { - static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/SetupGH.cc,v 1.45 2003/05/23 23:51:17 schnetter Exp $"; + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/SetupGH.cc,v 1.46 2003/06/18 18:24:27 schnetter Exp $"; CCTK_FILEVERSION(Carpet_Carpet_SetupGH_cc); } @@ -461,8 +461,15 @@ namespace Carpet { // Initialise time step on coarse grid - base_delta_time = 1.0; - base_origin_space = vect<CCTK_REAL,dim>((CCTK_REAL)0); + cgh->cctk_timefac = 1; + for (int d=0; d<dim; ++d) { + cgh->cctk_levoff[d] = 0; + cgh->cctk_levoffdenom[d] = 1; + } + + refleveltimes.resize (maxreflevels); + cgh->cctk_time = 0xdeadbeef; + cgh->cctk_delta_time = 0xdeadbeef; @@ -473,8 +480,8 @@ namespace Carpet { for (int group=0; group<CCTK_NumGroups(); ++group) { EnableGroupStorage (cgh, CCTK_GroupName(group)); } - } END_MGLEVEL_LOOP(cgh); - } END_REFLEVEL_LOOP(cgh); + } END_MGLEVEL_LOOP; + } END_REFLEVEL_LOOP; } Waypoint ("done with SetupGH."); diff --git a/Carpet/Carpet/src/Shutdown.cc b/Carpet/Carpet/src/Shutdown.cc index 67759e342..24e41a912 100644 --- a/Carpet/Carpet/src/Shutdown.cc +++ b/Carpet/Carpet/src/Shutdown.cc @@ -10,7 +10,7 @@ #include "carpet.hh" extern "C" { - static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/Shutdown.cc,v 1.9 2003/05/08 15:35:49 schnetter Exp $"; + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/Shutdown.cc,v 1.10 2003/06/18 18:24:27 schnetter Exp $"; CCTK_FILEVERSION(Carpet_Carpet_Shutdown_cc); } @@ -34,7 +34,6 @@ namespace Carpet { Waypoint ("Current time is %g", cgh->cctk_time); BEGIN_REFLEVEL_LOOP(cgh) { - BEGIN_MGLEVEL_LOOP(cgh) { do_global_mode = reflevel == 0; @@ -47,14 +46,13 @@ namespace Carpet { Waypoint ("%*sScheduling TERMINATE", 2*reflevel, ""); CCTK_ScheduleTraverse ("CCTK_TERMINATE", cgh, CallFunction); - } END_MGLEVEL_LOOP(cgh); - - } END_REFLEVEL_LOOP(cgh); + } END_MGLEVEL_LOOP; + } END_REFLEVEL_LOOP; do_global_mode = true; // Shutdown - Waypoint ("%*sScheduling SHUTDOWN", 2*reflevel, ""); + Waypoint ("Scheduling SHUTDOWN"); CCTK_ScheduleTraverse ("CCTK_SHUTDOWN", cgh, CallFunction); CCTK_PRINTSEPARATOR; diff --git a/Carpet/Carpet/src/Storage.cc b/Carpet/Carpet/src/Storage.cc index 86ddd3817..ef2477333 100644 --- a/Carpet/Carpet/src/Storage.cc +++ b/Carpet/Carpet/src/Storage.cc @@ -10,7 +10,7 @@ #include "carpet.hh" extern "C" { - static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/Storage.cc,v 1.20 2003/05/27 12:01:11 schnetter Exp $"; + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/Storage.cc,v 1.21 2003/06/18 18:24:27 schnetter Exp $"; CCTK_FILEVERSION(Carpet_Carpet_Storage_cc); } @@ -44,7 +44,10 @@ namespace Carpet { const int grouptype = CCTK_GroupTypeI(group); // No storage change in local mode - assert (! (component!=-1 && grouptype==CCTK_GF)); + if (grouptype == CCTK_GF) { + assert (reflevel == -1 + || hh->local_components(reflevel) == 1 || component == -1); + } if (CCTK_QueryGroupStorageI(cgh, group)) { // storage was enabled previously @@ -94,11 +97,12 @@ namespace Carpet { for (int var=0; var<(int)arrdata[group].data.size(); ++var) { const int n = n0 + var; switch (CCTK_VarTypeI(n)) { -#define TYPECASE(N,T) \ - case N: \ - arrdata[group].data[var] = new gf<T,dim> \ - (CCTK_VarName(n), *arrdata[group].tt, *arrdata[group].dd, \ - tmin, tmax, my_prolongation_order_time); \ +#define TYPECASE(N,T) \ + case N: \ + assert (! arrdata[group].data[var]); \ + arrdata[group].data[var] = new gf<T,dim> \ + (CCTK_VarName(n), *arrdata[group].tt, *arrdata[group].dd, \ + tmin, tmax, my_prolongation_order_time); \ break; #include "typecase" #undef TYPECASE @@ -115,7 +119,7 @@ namespace Carpet { } // for - PoisonGroup (cgh, group, alltimes); +// PoisonGroup (cgh, group, alltimes); // storage was not enabled previously return 0; @@ -152,9 +156,11 @@ namespace Carpet { for (int var=0; var<(int)arrdata[group].data.size(); ++var) { const int n = n0 + var; switch (CCTK_VarTypeI(n)) { -#define TYPECASE(N,T) \ - case N: \ - delete (gf<T,dim>*)arrdata[group].data[var]; \ +#define TYPECASE(N,T) \ + case N: \ + assert (arrdata[group].data[var]); \ + delete (gf<T,dim>*)arrdata[group].data[var]; \ + arrdata[group].data[var] = 0; \ break; #include "typecase" #undef TYPECASE diff --git a/Carpet/Carpet/src/carpet_public.hh b/Carpet/Carpet/src/carpet_public.hh index f74274b8f..11aa9390b 100644 --- a/Carpet/Carpet/src/carpet_public.hh +++ b/Carpet/Carpet/src/carpet_public.hh @@ -1,4 +1,4 @@ -// $Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/carpet_public.hh,v 1.28 2003/05/23 23:51:17 schnetter Exp $ +// $Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/carpet_public.hh,v 1.29 2003/06/18 18:24:28 schnetter Exp $ // It is assumed that the number of components of all arrays is equal // to the number of components of the grid functions, and that their @@ -73,13 +73,9 @@ namespace Carpet { // Is this the time for a global mode call? extern bool do_global_mode; - - - // Time step on base grid - extern CCTK_REAL base_delta_time; - - // Spatial origin on base grid - extern vect<CCTK_REAL,dim> base_origin_space; + // Current times on the refinement levels + extern vector<CCTK_REAL> refleveltimes; + extern CCTK_REAL delta_time; @@ -163,99 +159,117 @@ namespace Carpet { // Refinement level iterator -#define BEGIN_REFLEVEL_LOOP(cgh) \ - do { \ - int _rll; \ - assert (reflevel==-1); \ - for (int _rl=0; _rl<hh->reflevels(); ++_rl) { \ - set_reflevel ((cGH*)(cgh), _rl); \ +#define BEGIN_REFLEVEL_LOOP(cgh) \ + do { \ + int _rll; \ + cGH * const _cgh = const_cast<cGH*>(cgh); \ + assert (reflevel==-1); \ + for (int _rl=0; _rl<hh->reflevels(); ++_rl) { \ + set_reflevel (_cgh, _rl); \ { -#define END_REFLEVEL_LOOP(cgh) \ - } \ - } \ - set_reflevel ((cGH*)(cgh), -1); \ - assert (reflevel==-1); \ - _rll = 0; \ +#define END_REFLEVEL_LOOP \ + } \ + } \ + set_reflevel (_cgh, -1); \ + _rll = 0; \ } while (0) // Reverse refinement level iterator -#define BEGIN_REVERSE_REFLEVEL_LOOP(cgh) \ - do { \ - int _rrll; \ - assert (reflevel==-1); \ - for (int _rl=hh->reflevels()-1; _rl>=0; --_rl) { \ - set_reflevel ((cGH*)(cgh), _rl); \ +#define BEGIN_REVERSE_REFLEVEL_LOOP(cgh) \ + do { \ + int _rrll; \ + cGH * const _cgh = const_cast<cGH*>(cgh); \ + assert (reflevel==-1); \ + for (int _rl=hh->reflevels()-1; _rl>=0; --_rl) { \ + set_reflevel (_cgh, _rl); \ { -#define END_REVERSE_REFLEVEL_LOOP(cgh) \ - } \ - } \ - set_reflevel ((cGH*)(cgh), -1); \ - assert (reflevel==-1); \ - _rrll = 0; \ +#define END_REVERSE_REFLEVEL_LOOP \ + } \ + } \ + set_reflevel (_cgh, -1); \ + _rrll = 0; \ } while (0) // Multigrid level iterator -#define BEGIN_MGLEVEL_LOOP(cgh) \ - do { \ - int _mgl; \ - assert (reflevel>=0 && reflevel<hh->reflevels()); \ - assert (mglevel==-1); \ - for (int _ml=mglevels-1; _ml>=0; --_ml) { \ - set_mglevel ((cGH*)(cgh), _ml); \ +#define BEGIN_MGLEVEL_LOOP(cgh) \ + do { \ + int _mgl; \ + cGH * const _cgh = const_cast<cGH*>(cgh); \ + assert (reflevel>=0 && reflevel<hh->reflevels()); \ + assert (mglevel==-1); \ + for (int _ml=mglevels-1; _ml>=0; --_ml) { \ + set_mglevel (_cgh, _ml); \ { -#define END_MGLEVEL_LOOP(cgh) \ - } \ - } \ - set_mglevel ((cGH*)(cgh), -1); \ - assert (mglevel==-1); \ - _mgl = 0; \ +#define END_MGLEVEL_LOOP \ + } \ + } \ + set_mglevel (_cgh, -1); \ + _mgl = 0; \ } while (0) // Component iterator -#define BEGIN_COMPONENT_LOOP(cgh) \ +#define BEGIN_COMPONENT_LOOP(cgh, grouptype) \ do { \ int _cl; \ - assert (reflevel>=0 && reflevel<hh->reflevels()); \ - assert (mglevel>=0 && mglevel<mglevels); \ - assert (hh->local_components(reflevel)==1 || component==-1); \ - int const _saved_component = component; \ - for (int _c=0; _c<hh->components(reflevel); ++_c) { \ - set_component ((cGH*)(cgh), _c); \ + cGH * const _cgh = const_cast<cGH*>(cgh); \ + int const _grouptype = (grouptype); \ + int _mincl, _maxcl; \ + if (_grouptype == CCTK_GF) { \ + assert (reflevel>=0 && reflevel<hh->reflevels()); \ + assert (mglevel>=0 && mglevel<mglevels); \ + assert (hh->local_components(reflevel)==1 || component==-1); \ + _mincl=0; \ + _maxcl=hh->components(reflevel); \ + } else { \ + _mincl=component; \ + _maxcl=component; \ + } \ + for (int _c=_mincl; _c<_maxcl; ++_c) { \ + if (_grouptype==CCTK_GF) set_component (_cgh, _c); \ { -#define END_COMPONENT_LOOP(cgh) \ +#define END_COMPONENT_LOOP \ } \ } \ - set_component ((cGH*)(cgh), _saved_component); \ + if (_grouptype==CCTK_GF) set_component (_cgh, -1); \ _cl = 0; \ } while (0) -#define BEGIN_LOCAL_COMPONENT_LOOP(cgh) \ +#define BEGIN_LOCAL_COMPONENT_LOOP(cgh, grouptype) \ do { \ int _lcl; \ - assert (reflevel>=0 && reflevel<hh->reflevels()); \ - assert (mglevel>=0 && mglevel<mglevels); \ - assert (hh->local_components(reflevel)==1 || component==-1); \ - int const _saved_component = component; \ - for (int _c=0; _c<hh->components(reflevel); ++_c) { \ - if (hh->is_local(reflevel,_c)) { \ - set_component ((cGH*)(cgh), _c); \ - { -#define END_LOCAL_COMPONENT_LOOP(cgh) \ - } \ + cGH * const _cgh = const_cast<cGH*>(cgh); \ + int const _grouptype = (grouptype); \ + int _mincl, _maxcl; \ + if (_grouptype == CCTK_GF) { \ + assert (reflevel>=0 && reflevel<hh->reflevels()); \ + assert (mglevel>=0 && mglevel<mglevels); \ + assert (hh->local_components(reflevel)==1 || component==-1); \ + _mincl=0; \ + _maxcl=hh->components(reflevel); \ + } else { \ + _mincl=component; \ + _maxcl=component; \ + } \ + for (int _c=_mincl; _c<_maxcl; ++_c) { \ + if (_grouptype==CCTK_GF || hh->is_local(reflevel,_c)) { \ + if (_grouptype==CCTK_GF) set_component (_cgh, _c); \ + { +#define END_LOCAL_COMPONENT_LOOP \ + } \ } \ } \ - set_component ((cGH*)(cgh), _saved_component); \ + if (_grouptype==CCTK_GF) set_component (_cgh, -1); \ _lcl = 0; \ } while (0) diff --git a/Carpet/Carpet/src/helpers.cc b/Carpet/Carpet/src/helpers.cc index 1d9eea288..430966caf 100644 --- a/Carpet/Carpet/src/helpers.cc +++ b/Carpet/Carpet/src/helpers.cc @@ -5,6 +5,7 @@ #include <mpi.h> #include "cctk.h" +#include "cctk_FortranString.h" #include "cctk_Parameters.h" #include "Carpet/CarpetLib/src/defs.hh" @@ -14,7 +15,7 @@ #include "carpet.hh" extern "C" { - static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/helpers.cc,v 1.35 2003/05/27 12:01:11 schnetter Exp $"; + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/helpers.cc,v 1.36 2003/06/18 18:24:28 schnetter Exp $"; CCTK_FILEVERSION(Carpet_Carpet_helpers_cc); } @@ -216,6 +217,15 @@ namespace Carpet { assert (reflevel>=0 && reflevel<hh->reflevels()); assert (component == -1); + // Save + if (mglevel == -1) { + assert (cgh->cctk_time == 0xdeadbeef); + assert (cgh->cctk_delta_time == 0xdeadbeef); + } else { + refleveltimes[reflevel] = cgh->cctk_time; + delta_time = cgh->cctk_delta_time; + } + // Change mglevel = ml; mglevelfact = ipow(mgfact, mglevel); @@ -227,10 +237,13 @@ namespace Carpet { mglevelfact = 0xdeadbeef; cgh->cctk_convlevel = 0xdeadbeef; - cgh->cctk_delta_time = 0xdeadbeef; + cgh->cctk_timefac = 0; for (int d=0; d<dim; ++d) { - cgh->cctk_origin_space[d] = 0xdeadbeef; + cgh->cctk_levoff[d] = 0xdeadbeef; + cgh->cctk_levoffdenom[d] = 0xdeadbeef; } + cgh->cctk_time = 0xdeadbeef; + cgh->cctk_delta_time = 0xdeadbeef; vect<int,dim>::ref(cgh->cctk_gsh) = 0xdeadbeef; for (int group=0; group<CCTK_NumGroups(); ++group) { @@ -244,17 +257,18 @@ namespace Carpet { mglevelfact = ipow(mgfact, mglevel); cgh->cctk_convlevel = mglevel; - // TODO: set cctk_time here as well - cgh->cctk_delta_time = base_delta_time / reflevelfact * mglevelfact; + const bbox<int,dim>& baseext = dd->bases[reflevel][mglevel].exterior; - { - const bbox<int,dim>& baseext = dd->bases[reflevel][mglevel].exterior; - for (int d=0; d<dim; ++d) { - cgh->cctk_origin_space[d] = base_origin_space[d] + cgh->cctk_delta_space[d] / maxreflevelfact * baseext.lower()[d]; - } + assert (mglevelfact==1); + cgh->cctk_timefac = reflevelfact / mglevelfact; + cgh->cctk_time = refleveltimes[reflevel]; + cgh->cctk_delta_time = delta_time; + for (int d=0; d<dim; ++d) { + assert (baseext.lower()[d] * reflevelfact % maxreflevelfact == 0); + cgh->cctk_levoff[d] = baseext.lower()[d] * reflevelfact / maxreflevelfact; + cgh->cctk_levoffdenom[d] = 1; } - const bbox<int,dim>& baseext = dd->bases[reflevel][mglevel].exterior; vect<int,dim>::ref(cgh->cctk_gsh) = baseext.shape() / baseext.stride(); for (int group=0; group<CCTK_NumGroups(); ++group) { if (CCTK_GroupTypeI(group) == CCTK_GF) { @@ -355,15 +369,6 @@ namespace Carpet { } -#if 0 - cout << "set_component: reflevel=" << reflevel << endl; - cout << "set_component: gsh=[" << cgh->cctk_gsh[0] << "," << cgh->cctk_gsh[1] << "," << cgh->cctk_gsh[2] << "]" << endl; - cout << "set_component: lsh=[" << cgh->cctk_lsh[0] << "," << cgh->cctk_lsh[1] << "," << cgh->cctk_lsh[2] << "]" << endl; - cout << "set_component: lbnd=[" << cgh->cctk_lbnd[0] << "," << cgh->cctk_lbnd[1] << "," << cgh->cctk_lbnd[2] << "]" << endl; - cout << "set_component: origin_space=[" << cgh->cctk_origin_space[0] << "," << cgh->cctk_origin_space[1] << "," << cgh->cctk_origin_space[2] << "]" << endl; - cout << "set_component: delta_space=[" << cgh->cctk_delta_space[0] << "," << cgh->cctk_delta_space[1] << "," << cgh->cctk_delta_space[2] << "]" << endl; -#endif - for (int group=0; group<CCTK_NumGroups(); ++group) { if (CCTK_GroupTypeI(group) == CCTK_GF) { @@ -435,6 +440,14 @@ namespace Carpet { return 0; } + extern "C" void CCTK_FCALL CCTK_FNAME(CallScheduleGroup) + (int * const ierr, cGH * const cgh, ONE_FORTSTRING_ARG) + { + ONE_FORTSTRING_CREATE (group); + *ierr = CallScheduleGroup (cgh, group); + free (group); + } + // This is a temporary measure to call a local mode function from a @@ -448,16 +461,16 @@ namespace Carpet { // we are in global mode BEGIN_REFLEVEL_LOOP(cgh) { BEGIN_MGLEVEL_LOOP(cgh) { - BEGIN_LOCAL_COMPONENT_LOOP(cgh) { + BEGIN_LOCAL_COMPONENT_LOOP(cgh, CCTK_GF) { function (cgh); - } END_LOCAL_COMPONENT_LOOP(cgh); - } END_MGLEVEL_LOOP(cgh); - } END_REFLEVEL_LOOP(cgh); + } END_LOCAL_COMPONENT_LOOP; + } END_MGLEVEL_LOOP; + } END_REFLEVEL_LOOP; } else { // we are in level mode - BEGIN_LOCAL_COMPONENT_LOOP(cgh) { + BEGIN_LOCAL_COMPONENT_LOOP(cgh, CCTK_GF) { function (cgh); - } END_LOCAL_COMPONENT_LOOP(cgh); + } END_LOCAL_COMPONENT_LOOP; } return 0; } @@ -469,8 +482,8 @@ namespace Carpet { BEGIN_REFLEVEL_LOOP(cgh) { BEGIN_MGLEVEL_LOOP(cgh) { function (cgh); - } END_MGLEVEL_LOOP(cgh); - } END_REFLEVEL_LOOP(cgh); + } END_MGLEVEL_LOOP; + } END_REFLEVEL_LOOP; return 0; } diff --git a/Carpet/Carpet/src/variables.cc b/Carpet/Carpet/src/variables.cc index 648d84b92..886146a10 100644 --- a/Carpet/Carpet/src/variables.cc +++ b/Carpet/Carpet/src/variables.cc @@ -6,7 +6,7 @@ #include "carpet.hh" extern "C" { - static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/variables.cc,v 1.14 2003/05/12 16:24:25 schnetter Exp $"; + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/variables.cc,v 1.15 2003/06/18 18:24:28 schnetter Exp $"; CCTK_FILEVERSION(Carpet_Carpet_variables_cc); } @@ -55,13 +55,9 @@ namespace Carpet { // Is this the time for a global mode call? bool do_global_mode; - - - // Time step on base grid - CCTK_REAL base_delta_time; - - // Spatial origin on base grid - vect<CCTK_REAL,dim> base_origin_space; + // Current times on the refinement levels + vector<CCTK_REAL> refleveltimes; + CCTK_REAL delta_time; diff --git a/Carpet/CarpetIOASCII/param.ccl b/Carpet/CarpetIOASCII/param.ccl index 69cc43294..be609ca6a 100644 --- a/Carpet/CarpetIOASCII/param.ccl +++ b/Carpet/CarpetIOASCII/param.ccl @@ -1,5 +1,5 @@ # Parameter definitions for thorn CarpetIOASCII -# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOASCII/param.ccl,v 1.7 2002/10/24 12:00:34 schnetter Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOASCII/param.ccl,v 1.8 2003/06/18 18:24:28 schnetter Exp $ @@ -51,6 +51,12 @@ BOOLEAN out3D_outer_ghosts "Output outer boundary ghost zones as well" +BOOLEAN output_all_timelevels "Output all timelevels instead of only the current" +{ +} "no" + + + BOOLEAN separate_grids "Separate grid levels in the output file by additional empty lines" { } "yes" diff --git a/Carpet/CarpetIOASCII/src/ioascii.cc b/Carpet/CarpetIOASCII/src/ioascii.cc index 3c2796570..247705e62 100644 --- a/Carpet/CarpetIOASCII/src/ioascii.cc +++ b/Carpet/CarpetIOASCII/src/ioascii.cc @@ -30,7 +30,7 @@ #include "ioascii.hh" extern "C" { - static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOASCII/src/ioascii.cc,v 1.48 2003/05/13 16:32:10 schnetter Exp $"; + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOASCII/src/ioascii.cc,v 1.49 2003/06/18 18:24:28 schnetter Exp $"; CCTK_FILEVERSION(Carpet_CarpetIOASCII_ioascii_cc); } @@ -166,7 +166,8 @@ namespace CarpetIOASCII { assert (n0>=0 && n0<CCTK_NumVars()); const int var = n - n0; assert (var>=0 && var<CCTK_NumVars()); - const int tl = 0; + const int num_tl = CCTK_NumTimeLevelsFromVarI(n); + assert (num_tl>=1); // Check for storage if (! CCTK_QueryGroupStorageI(cgh, group)) { @@ -176,6 +177,9 @@ namespace CarpetIOASCII { return 0; } + const int grouptype = CCTK_GroupTypeI(group); + const int rl = grouptype==CCTK_GF ? reflevel : 0; + // Get grid hierarchy extentsion from IOUtil const ioGH * const iogh = (const ioGH *)CCTK_GHExtension (cgh, "IO"); assert (iogh); @@ -359,80 +363,88 @@ namespace CarpetIOASCII { // Traverse all components on this refinement and multigrid // level - BEGIN_COMPONENT_LOOP(cgh) { + BEGIN_COMPONENT_LOOP(cgh, grouptype) { const ggf<dim>* ff = 0; assert (var < (int)arrdata[group].data.size()); ff = (ggf<dim>*)arrdata[group].data[var]; - const gdata<dim>* const data - = (*ff) (tl, reflevel, component, mglevel); - bbox<int,dim> ext = data->extent(); - - vect<int,dim> lo = ext.lower(); - vect<int,dim> hi = ext.upper(); - vect<int,dim> str = ext.stride(); - - // Ignore ghost zones if desired - for (int d=0; d<dim; ++d) { - bool output_lower_ghosts - = cgh->cctk_bbox[2*d] ? out3D_outer_ghosts : out3D_ghosts; - bool output_upper_ghosts - = cgh->cctk_bbox[2*d+1] ? out3D_outer_ghosts : out3D_ghosts; - - if (! output_lower_ghosts) { - lo[d] += cgh->cctk_nghostzones[d] * str[d]; - } - if (! output_upper_ghosts) { - hi[d] -= cgh->cctk_nghostzones[d] * str[d]; - } - } - ext = bbox<int,dim>(lo,hi,str); - - // coordinates - const CCTK_REAL coord_time = cgh->cctk_time; - vect<CCTK_REAL,dim> global_lower, global_upper; - vect<CCTK_REAL,dim> coord_delta; - if (CCTK_GroupTypeI(group) == CCTK_GF) { + const int mintl = output_all_timelevels ? 1-num_tl : 0; + const int maxtl = 0; + for (int tl=mintl; tl<=maxtl; ++tl) { + + const gdata<dim>* const data + = (*ff) (tl, rl, component, mglevel); + bbox<int,dim> ext = data->extent(); + + vect<int,dim> lo = ext.lower(); + vect<int,dim> hi = ext.upper(); + vect<int,dim> str = ext.stride(); + + // Ignore ghost zones if desired for (int d=0; d<dim; ++d) { - const int ierr = CCTK_CoordRange - (cgh, &global_lower[d], &global_upper[d], d+1, 0, "cart3d"); - assert (!ierr); - coord_delta[d] = cgh->cctk_delta_space[d] / maxreflevelfact; + bool output_lower_ghosts + = cgh->cctk_bbox[2*d] ? out3D_outer_ghosts : out3D_ghosts; + bool output_upper_ghosts + = cgh->cctk_bbox[2*d+1] ? out3D_outer_ghosts : out3D_ghosts; + + if (! output_lower_ghosts) { + lo[d] += cgh->cctk_nghostzones[d] * str[d]; + } + if (! output_upper_ghosts) { + hi[d] -= cgh->cctk_nghostzones[d] * str[d]; + } + } + ext = bbox<int,dim>(lo,hi,str); + + // coordinates + const CCTK_REAL coord_time = cgh->cctk_time; + vect<CCTK_REAL,dim> global_lower; + vect<CCTK_REAL,dim> coord_delta; + if (grouptype == CCTK_GF) { + for (int d=0; d<dim; ++d) { + global_lower[d] = cgh->cctk_origin_space[d]; + coord_delta[d] = cgh->cctk_delta_space[d] / maxreflevelfact; + } + } else { + for (int d=0; d<dim; ++d) { + global_lower[d] = 0.0; + coord_delta[d] = 1.0 / (cgh->cctk_gsh[d] - 1); + } } - } else { + // Note: don't permute the "coord_delta" and + // "data->extent().lower()" + // (it seems that for gcc 2.95 you then pick up the + // integer operator*) + const vect<CCTK_REAL,dim> coord_lower = global_lower + coord_delta * vect<CCTK_REAL,dim>(lo); + const vect<CCTK_REAL,dim> coord_upper = global_lower + coord_delta * vect<CCTK_REAL,dim>(hi); + + vect<int,dim> offset1; for (int d=0; d<dim; ++d) { - global_lower[d] = 0; - global_upper[d] = 1; - coord_delta[d] = 1.0 / (cgh->cctk_gsh[d] - 1); + assert (cgh->cctk_levoffdenom[d]==1); + offset1[d] = (cgh->cctk_levoff[d] + offset[d]) * ext.stride()[d]; } - } - // Note: don't permute the "coord_delta" and "data->extent().lower()" - // (it seems that for gcc 2.95 you'll then pick up the - // integer operator*) - const vect<CCTK_REAL,dim> coord_lower = global_lower + coord_delta * vect<CCTK_REAL,dim>(lo); - const vect<CCTK_REAL,dim> coord_upper = global_lower + coord_delta * vect<CCTK_REAL,dim>(hi); - - const vect<int,dim> offset1 = ext.lower() + offset * ext.stride(); -#if 0 - cout << "IOA reflevel=" << reflevel << " global=" << global_lower << " coord=" << coord_lower << " offset=" << offset << endl; -#endif - - WriteASCII (file, data, ext, n, cgh->cctk_iteration, offset1, dirs, - tl, reflevel, component, mglevel, - coord_time, coord_lower, coord_upper); - - // Append EOL after every component - if (CCTK_MyProc(cgh)==0) { - if (separate_components) { - assert (file.good()); - file << endl; - } - } - assert (file.good()); + for (int d=0; d<outdim; ++d) { + offset1[dirs[d]] = ext.lower()[dirs[d]]; + } + + WriteASCII (file, data, ext, n, cgh->cctk_iteration, offset1, dirs, + tl, rl, component, mglevel, + coord_time, coord_lower, coord_upper); + + // Append EOL after every component + if (CCTK_MyProc(cgh)==0) { + if (separate_components) { + assert (file.good()); + file << endl; + } + } + assert (file.good()); + + } // for tl - } END_COMPONENT_LOOP(cgh); + } END_COMPONENT_LOOP; // Append EOL after every complete set of components if (CCTK_MyProc(cgh)==0) { @@ -601,29 +613,15 @@ namespace CarpetIOASCII { { assert (dir>=1 && dir<=dim); -#if 0 - CCTK_REAL lower, upper; - CCTK_CoordRange (cgh, &lower, &upper, dir, 0, "cart3d"); - - assert (reflevel!=-1 && mglevel!=-1); - const int npoints = (hh->baseextent.shape()[dir-1] - hh->baseextent.stride()[dir-1]) / hh->bases[reflevel][mglevel].stride()[dir-1] + 1; - - const CCTK_REAL rindex = (coord - lower) / (upper - lower) * (npoints-1); - int cindex = (int)floor(rindex + 0.5 + 1e-6); -#endif - assert (reflevel!=-1 && mglevel!=-1); const int npoints = cgh->cctk_gsh[dir-1]; - const CCTK_REAL lower = cgh->cctk_origin_space[dir-1]; const CCTK_REAL delta = cgh->cctk_delta_space[dir-1] / cgh->cctk_levfac[dir-1]; + const CCTK_REAL lower = cgh->cctk_origin_space[dir-1] + delta * cgh->cctk_levoff[dir-1] / cgh->cctk_levoffdenom[dir-1]; const CCTK_REAL upper = lower + (npoints-1) * delta; const CCTK_REAL rindex = (coord - lower) / delta; - int cindex = (int)floor(rindex + 0.5 + 1e-6); -#if 0 - cout << "CTO rl=" << reflevel << " gsh=" << npoints << " l,u,d=" << lower << "," << upper << "," << delta << " coord=" << coord << " cindex=" << cindex << endl; -#endif + int cindex = (int)floor(rindex + 0.75); if (cindex<0 || cindex>=npoints) { CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING, diff --git a/Carpet/CarpetInterp/src/interp.cc b/Carpet/CarpetInterp/src/interp.cc index 13f848729..c38bcc99f 100644 --- a/Carpet/CarpetInterp/src/interp.cc +++ b/Carpet/CarpetInterp/src/interp.cc @@ -1,4 +1,4 @@ -// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetInterp/src/interp.cc,v 1.9 2003/05/21 16:03:32 schnetter Exp $ +// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetInterp/src/interp.cc,v 1.10 2003/06/18 18:24:28 schnetter Exp $ #include <assert.h> #include <math.h> @@ -19,7 +19,7 @@ #include "interp.hh" extern "C" { - static char const * const rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetInterp/src/interp.cc,v 1.9 2003/05/21 16:03:32 schnetter Exp $"; + static char const * const rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetInterp/src/interp.cc,v 1.10 2003/06/18 18:24:28 schnetter Exp $"; CCTK_FILEVERSION(Carpet_CarpetInterp_interp_cc); } @@ -104,12 +104,12 @@ namespace CarpetInterp { const char * coord_system_name = CCTK_CoordSystemName (coord_system_handle); assert (coord_system_name); - rvect clower, cupper, cdelta; + rvect lower, upper, delta; for (int d=0; d<dim; ++d) { ierr = CCTK_CoordRange - (cgh, &clower[d], &cupper[d], d+1, 0, coord_system_name); + (cgh, &lower[d], &upper[d], d+1, 0, coord_system_name); assert (!ierr); - cdelta[d] = cgh->cctk_delta_space[d]; + delta[d] = (upper[d] - lower[d]) / (hh->baseextent.shape()[d] - hh->baseextent.stride()[d]); } assert (interp_coords); @@ -127,6 +127,7 @@ namespace CarpetInterp { int const minrl = reflevel==-1 ? 0 : reflevel; int const maxrl = reflevel==-1 ? hh->reflevels() : reflevel+1; + int const ml = 0; int maxncomps = 0; for (int rl=minrl; rl<maxrl; ++rl) { maxncomps = max(maxncomps, hh->components(rl)); @@ -138,10 +139,9 @@ namespace CarpetInterp { // TODO: interpolate in time for (int rl=minrl; rl<maxrl; ++rl) { int const tl = 0; - int const ml = 0; CCTK_REAL const time1 = tt->time (tl, rl, ml); - CCTK_REAL const time2 = cgh->cctk_time / base_delta_time; - assert (fabs((time1 - time2) / (fabs(time1) + fabs(time2) + fabs(base_delta_time))) < 1e-12); + CCTK_REAL const time2 = cgh->cctk_time / cgh->cctk_delta_time; + assert (fabs((time1 - time2) / (fabs(time1) + fabs(time2) + fabs(cgh->cctk_delta_time))) < 1e-12); } @@ -157,7 +157,7 @@ namespace CarpetInterp { assert (interp_coords_type_code == CCTK_VARIABLE_REAL); rvect pos; for (int d=0; d<dim; ++d) { - pos[d] = ((CCTK_REAL const *)interp_coords[d])[n]; + pos[d] = static_cast<CCTK_REAL const *>(interp_coords[d])[n]; } // Find the component that this grid point belongs to @@ -165,17 +165,12 @@ namespace CarpetInterp { home[n] = -1; for (int rl=maxrl-1; rl>=minrl; --rl) { - bbox<int,dim> const& baseext = dd->bases[rl][0].exterior; - rvect const lower = clower + cdelta / maxreflevelfact * rvect(baseext.lower()); - rvect const delta = cdelta / maxreflevelfact; - CCTK_REAL (* const rfloor) (CCTK_REAL const) = floor; - int const stride = maxreflevelfact / reflevelfact; - ivect const ipos = ivect(map(rfloor, (pos - lower) / delta / stride + 0.5)) * stride; + ivect const ipos = ivect(map(rfloor, (pos - lower) / delta + 0.5)); // TODO: use something faster than a linear search for (int c=0; c<hh->components(rl); ++c) { - if (hh->extents[reflevel][c][mglevel].contains(ipos)) { + if (hh->extents[rl][c][ml].contains(ipos)) { rlev[n] = rl; home[n] = c; goto found; @@ -228,7 +223,7 @@ namespace CarpetInterp { assert (dim==3); for (int d=0; d<dim; ++d) { allcoords[ind_prc(myproc,rl,c)][ivect(tmpcnts[ind_rc(rl,c)],d,0)] - = ((CCTK_REAL const *)interp_coords[d])[n]; + = static_cast<CCTK_REAL const *>(interp_coords[d])[n]; } ++ tmpcnts[c + (rl-minrl)*maxncomps]; } @@ -287,15 +282,15 @@ namespace CarpetInterp { if (reflevel>=minrl && reflevel<maxrl) { BEGIN_MGLEVEL_LOOP(cgh) { - BEGIN_LOCAL_COMPONENT_LOOP(cgh) { + BEGIN_LOCAL_COMPONENT_LOOP(cgh, CCTK_GF) { // Find out about the local geometry ivect lsh; rvect coord_origin, coord_delta; for (int d=0; d<dim; ++d) { lsh[d] = cgh->cctk_lsh[d]; - coord_origin[d] = cgh->cctk_origin_space[d]; coord_delta[d] = cgh->cctk_delta_space[d] / cgh->cctk_levfac[d]; + coord_origin[d] = cgh->cctk_origin_space[d] + (1.0 * cgh->cctk_levoff[d] / cgh->cctk_levoffdenom[d] + cgh->cctk_lbnd[d]) * coord_delta[d]; } @@ -354,29 +349,24 @@ namespace CarpetInterp { tmp_output_arrays[m] = &alloutputs[ind_prc(p,reflevel,component)][ivect(0,m,0)]; } - ierr = CCTK_InterpLocalUniform (N_dims, - local_interp_handle, - param_table_handle, - &coord_origin[0], - &coord_delta[0], - allhomecnts[ind_prc(p,reflevel,component)], - interp_coords_type_code, - &tmp_interp_coords[0], - N_input_arrays, - &lsh[0], - &input_array_type_codes[0], - &input_arrays[0], - N_output_arrays, - output_array_type_codes, - &tmp_output_arrays[0]); + + ierr = CCTK_InterpLocalUniform + (N_dims, local_interp_handle, param_table_handle, + &coord_origin[0], &coord_delta[0], + allhomecnts[ind_prc(p,reflevel,component)], + interp_coords_type_code, &tmp_interp_coords[0], + N_input_arrays, &lsh[0], + &input_array_type_codes[0], &input_arrays[0], + N_output_arrays, + output_array_type_codes, &tmp_output_arrays[0]); assert (!ierr); } // for processors - } END_LOCAL_COMPONENT_LOOP(cgh); - } END_MGLEVEL_LOOP(cgh); - } - } END_REFLEVEL_LOOP(cgh); + } END_LOCAL_COMPONENT_LOOP; + } END_MGLEVEL_LOOP; + } // if reflevel active + } END_REFLEVEL_LOOP; if (saved_reflevel!=-1) { set_reflevel ((cGH*)cgh, saved_reflevel); } @@ -407,7 +397,7 @@ namespace CarpetInterp { for (int m=0; m<N_output_arrays; ++m) { assert (interp_coords_type_code == CCTK_VARIABLE_REAL); assert (dim==3); - ((CCTK_REAL *)output_arrays[m])[n] = + static_cast<CCTK_REAL *>(output_arrays[m])[n] = alloutputs[ind_prc(myproc,rl,c)][ivect(tmpcnts[ind_rc(rl,c)],m,0)]; } ++ tmpcnts[ind_rc(rl,c)]; diff --git a/Carpet/CarpetLib/src/ggf.cc b/Carpet/CarpetLib/src/ggf.cc index 067542fc8..ba33f8a48 100644 --- a/Carpet/CarpetLib/src/ggf.cc +++ b/Carpet/CarpetLib/src/ggf.cc @@ -1,4 +1,4 @@ -// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/ggf.cc,v 1.24 2003/05/02 14:23:12 schnetter Exp $ +// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/ggf.cc,v 1.25 2003/06/18 18:24:28 schnetter Exp $ #include <assert.h> #include <stdlib.h> @@ -482,7 +482,7 @@ void ggf<D>::ref_restrict (int tl, int rl, int c, int ml, // if (t.get_time(rl,ml) != t.get_time(rl+1,ml)) { // printf("WARNING: Time on rl %d is %d, time on rl %d is %d\n",rl,t.get_time(rl,ml),rl+1,t.get_time(rl+1,ml)); // } - //assert (t.get_time(rl,ml) == t.get_time(rl+1,ml)); + assert (t.get_time(rl,ml) == t.get_time(rl+1,ml)); const vector<int> tl2s(1,tl); intercat (tl ,rl ,c,ml, &dh<D>::dboxes::recv_ref_fine, tl2s,rl+1, ml, &dh<D>::dboxes::send_ref_coarse, diff --git a/Carpet/CarpetReduce/src/reduce.cc b/Carpet/CarpetReduce/src/reduce.cc index 1a5bc0271..3996385f1 100644 --- a/Carpet/CarpetReduce/src/reduce.cc +++ b/Carpet/CarpetReduce/src/reduce.cc @@ -1,4 +1,4 @@ -// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetReduce/src/reduce.cc,v 1.23 2003/05/21 14:31:03 schnetter Exp $ +// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetReduce/src/reduce.cc,v 1.24 2003/06/18 18:24:28 schnetter Exp $ #include <assert.h> #include <float.h> @@ -22,7 +22,7 @@ #include "reduce.hh" extern "C" { - static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetReduce/src/reduce.cc,v 1.23 2003/05/21 14:31:03 schnetter Exp $"; + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetReduce/src/reduce.cc,v 1.24 2003/06/18 18:24:28 schnetter Exp $"; CCTK_FILEVERSION(Carpet_CarpetReduce_reduce_cc); } @@ -716,7 +716,11 @@ namespace CarpetReduce { Initialise (cgh, proc, num_outvals, &myoutvals[0], outtype, &mycounts[0], red); - if (reduce_arrays) { + int const saved_component = component; + if (component!=-1) { + set_component ((cGH*)cgh, -1); + } + BEGIN_LOCAL_COMPONENT_LOOP(cgh, reduce_arrays ? CCTK_ARRAY : CCTK_GF) { assert (grpdim<=dim); int lsh[dim], bbox[2*dim], nghostzones[dim]; @@ -727,34 +731,34 @@ namespace CarpetReduce { ierr = CCTK_GroupnghostzonesVI(cgh, grpdim, nghostzones, vi); assert (!ierr); for (int d=0; d<grpdim; ++d) { - assert (lsh[d]>=0); - assert (nghostzones[d]>=0 && 2*nghostzones[d]<=lsh[d]); + assert (lsh[d]>=0); + assert (nghostzones[d]>=0 && 2*nghostzones[d]<=lsh[d]); } vector<const void*> inarrays (num_invars); for (int n=0; n<num_invars; ++n) { - inarrays[n] = CCTK_VarDataPtrI(cgh, 0, invars[n]); - assert (inarrays[n]); + inarrays[n] = CCTK_VarDataPtrI(cgh, 0, invars[n]); + assert (inarrays[n]); } const int intype = CCTK_VarTypeI(vi); for (int n=0; n<num_invars; ++n) { - assert (CCTK_VarTypeI(invars[n]) == intype); + assert (CCTK_VarTypeI(invars[n]) == intype); } vect<int,dim> mylsh, mynghostzones; vect<vect<int,2>,dim> mybbox; for (int d=0; d<grpdim; ++d) { - mylsh[d] = lsh[d]; + mylsh[d] = lsh[d]; mybbox[d][0] = bbox[2*d ]; mybbox[d][1] = bbox[2*d+1]; - mynghostzones[d] = nghostzones[d]; + mynghostzones[d] = nghostzones[d]; } for (int d=grpdim; d<dim; ++d) { - mylsh[d] = 1; + mylsh[d] = 1; mybbox[d][0] = 0; mybbox[d][1] = 0; - mynghostzones[d] = 0; + mynghostzones[d] = 0; } Reduce (cgh, proc, &mylsh[0], &mybbox[0][0], &mynghostzones[0], @@ -762,64 +766,10 @@ namespace CarpetReduce { num_outvals, &myoutvals[0], outtype, &mycounts[0], red); - } else { // ! reduce_arrays - - int const saved_component = component; - if (component!=-1) { - set_component ((cGH*)cgh, -1); - } - BEGIN_LOCAL_COMPONENT_LOOP(cgh) { - - assert (grpdim<=dim); - int lsh[dim], bbox[2*dim], nghostzones[dim]; - ierr = CCTK_GrouplshVI(cgh, grpdim, lsh, vi); - assert (!ierr); - ierr = CCTK_GroupbboxVI(cgh, 2*grpdim, bbox, vi); - assert (!ierr); - ierr = CCTK_GroupnghostzonesVI(cgh, grpdim, nghostzones, vi); - assert (!ierr); - for (int d=0; d<grpdim; ++d) { - assert (lsh[d]>=0); - assert (nghostzones[d]>=0 && 2*nghostzones[d]<=lsh[d]); - } - - vector<const void*> inarrays (num_invars); - for (int n=0; n<num_invars; ++n) { - inarrays[n] = CCTK_VarDataPtrI(cgh, 0, invars[n]); - assert (inarrays[n]); - } - - const int intype = CCTK_VarTypeI(vi); - for (int n=0; n<num_invars; ++n) { - assert (CCTK_VarTypeI(invars[n]) == intype); - } - - vect<int,dim> mylsh, mynghostzones; - vect<vect<int,2>,dim> mybbox; - for (int d=0; d<grpdim; ++d) { - mylsh[d] = lsh[d]; - mybbox[d][0] = bbox[2*d ]; - mybbox[d][1] = bbox[2*d+1]; - mynghostzones[d] = nghostzones[d]; - } - for (int d=grpdim; d<dim; ++d) { - mylsh[d] = 1; - mybbox[d][0] = 0; - mybbox[d][1] = 0; - mynghostzones[d] = 0; - } - - Reduce (cgh, proc, &mylsh[0], &mybbox[0][0], &mynghostzones[0], - num_invars, &inarrays[0], intype, - num_outvals, &myoutvals[0], outtype, - &mycounts[0], red); - - } END_LOCAL_COMPONENT_LOOP(cgh); - if (saved_component!=-1) { - set_component ((cGH*)cgh, saved_component); - } - - } // ! reduce_arrays + } END_LOCAL_COMPONENT_LOOP; + if (saved_component!=-1) { + set_component ((cGH*)cgh, saved_component); + } Finalise (cgh, proc, num_outvals, outvals, outtype, &myoutvals[0], &mycounts[0], diff --git a/Carpet/CarpetSlab/src/slab.cc b/Carpet/CarpetSlab/src/slab.cc index 3d25430e1..6f522d671 100644 --- a/Carpet/CarpetSlab/src/slab.cc +++ b/Carpet/CarpetSlab/src/slab.cc @@ -1,4 +1,4 @@ -// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetSlab/src/slab.cc,v 1.8 2003/05/21 14:31:29 schnetter Exp $ +// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetSlab/src/slab.cc,v 1.9 2003/06/18 18:24:28 schnetter Exp $ #include <assert.h> #include <stdlib.h> @@ -21,7 +21,7 @@ #include "slab.hh" extern "C" { - static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetSlab/src/slab.cc,v 1.8 2003/05/21 14:31:29 schnetter Exp $"; + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetSlab/src/slab.cc,v 1.9 2003/06/18 18:24:28 schnetter Exp $"; CCTK_FILEVERSION(Carpet_CarpetSlab_slab_cc); } @@ -43,20 +43,6 @@ namespace CarpetSlab { const int stride[/*hdim*/], const int length[/*hdim*/]) { - if (reflevel == -1) { - CCTK_WARN (0, "It is not possible to use hyperslabbing in global mode"); - } - - // Check global state - assert (reflevel>=0); - assert (mglevel>=0); - - // Save global state - int saved_component = component; - if (component!=-1) { - set_component ((cGH*)cgh, -1); - } - // Check Cactus grid hierarchy assert (cgh); @@ -82,6 +68,11 @@ namespace CarpetSlab { const int typesize = CCTK_VarTypeSize(gp.vartype); assert (typesize>0); + if (gp.grouptype==CCTK_GF && reflevel==-1) { + CCTK_WARN (0, "It is not possible to use hyperslabbing for a grid function in global mode"); + } + const int rl = gp.grouptype==CCTK_GF ? reflevel : 0; + // Check dimension assert (hdim>=0 && hdim<=gp.dim); @@ -148,98 +139,85 @@ namespace CarpetSlab { memset (hdata, 0, totalsize * typesize); } - if (hh->components(reflevel) > 0) { - - // Only temporarily - component = 0; + // Get sample data + const gdata<dim>* mydata; + mydata = (*myff)(tl, rl, 0, 0); + + // Stride of data in memory + const vect<int,dim> str = mydata->extent().stride(); + + // Stride of collected data + vect<int,dim> hstr = str; + for (int dd=0; dd<hdim; ++dd) { + hstr[dirs[dd]-1] *= stride[dd]; + } + + // Lower bound of collected data + vect<int,dim> hlb(0); + for (int d=0; d<gp.dim; ++d) { + hlb[d] = origin[d] * str[d]; + } + + // Upper bound of collected data + vect<int,dim> hub = hlb; + for (int dd=0; dd<hdim; ++dd) { + hub[dirs[dd]-1] += (length[dd]-1) * hstr[dirs[dd]-1]; + } + + // Calculate extent to collect + const bbox<int,dim> hextent (hlb, hub, hstr); + assert (hextent.num_points() == totalsize); + + // Create collector data object + void* myhdata = rank==collect_proc ? hdata : 0; + gdata<dim>* const alldata = mydata->make_typed(); + alldata->allocate (hextent, collect_proc, myhdata); + + // Done with the temporary stuff + mydata = 0; + + // Loop over all components, copying data from them + BEGIN_LOCAL_COMPONENT_LOOP (cgh, gp.grouptype) { - // Get sample data - const gdata<dim>* mydata; - mydata = (*myff)(tl, reflevel, component, mglevel); + const int c = gp.grouptype==CCTK_GF ? component : 0; - // Stride of data in memory - const vect<int,dim> str = mydata->extent().stride(); + // Get data object + mydata = (*myff)(tl, rl, c, mglevel); - // Stride of collected data - vect<int,dim> hstr = str; - for (int dd=0; dd<hdim; ++dd) { - hstr[dirs[dd]-1] *= stride[dd]; - } + // Calculate overlapping extents + const bboxset<int,dim> myextents + = ((mydd->boxes[rl][c][mglevel].sync_not + | mydd->boxes[rl][c][mglevel].interior) + & hextent); - // Lower bound of collected data - vect<int,dim> hlb(0); - for (int d=0; d<gp.dim; ++d) { - hlb[d] = origin[d] * str[d]; + // Loop over overlapping extents + for (bboxset<int,dim>::const_iterator ext_iter = myextents.begin(); + ext_iter != myextents.end(); + ++ext_iter) { + + // Copy data + alldata->copy_from (mydata, *ext_iter); + } - // Upper bound of collected data - vect<int,dim> hub = hlb; - for (int dd=0; dd<hdim; ++dd) { - hub[dirs[dd]-1] += (length[dd]-1) * hstr[dirs[dd]-1]; + } END_LOCAL_COMPONENT_LOOP; + + // Copy result to all processors + if (dest_proc == -1) { + for (int proc=0; proc<CCTK_nProcs(cgh); ++proc) { + if (proc != collect_proc) { + + void* myhdata = rank==proc ? hdata : 0; + gdata<dim>* const tmpdata = mydata->make_typed(); + tmpdata->allocate (alldata->extent(), proc, myhdata); + tmpdata->copy_from (alldata, alldata->extent()); + delete tmpdata; + + } } - - // Calculate extent to collect - const bbox<int,dim> hextent (hlb, hub, hstr); - assert (hextent.num_points() == totalsize); - - // Create collector data object - void* myhdata = rank==collect_proc ? hdata : 0; - gdata<dim>* const alldata = mydata->make_typed(); - alldata->allocate (hextent, collect_proc, myhdata); - - // Done with the temporary stuff - mydata = 0; - component = -1; - - // Loop over all components, copying data from them - assert (component == -1); - for (component=0; component<hh->components(reflevel); ++component) { - - // Get data object - mydata = (*myff)(tl, reflevel, component, mglevel); - - // Calculate overlapping extents - const bboxset<int,dim> myextents - = ((mydd->boxes[reflevel][component][mglevel].sync_not - | mydd->boxes[reflevel][component][mglevel].interior) - & hextent); - - // Loop over overlapping extents - for (bboxset<int,dim>::const_iterator ext_iter = myextents.begin(); - ext_iter != myextents.end(); - ++ext_iter) { - - // Copy data - alldata->copy_from (mydata, *ext_iter); - - } - - } // Loop over components - component = -1; - - // Copy result to all processors - if (dest_proc == -1) { - for (int proc=0; proc<CCTK_nProcs(cgh); ++proc) { - if (proc != collect_proc) { - - void* myhdata = rank==proc ? hdata : 0; - gdata<dim>* const tmpdata = mydata->make_typed(); - tmpdata->allocate (alldata->extent(), proc, myhdata); - tmpdata->copy_from (alldata, alldata->extent()); - delete tmpdata; - - } - } - } // Copy result - - delete alldata; - - } // if components>0 + } // Copy result - // Restore global state - if (saved_component!=-1) { - set_component ((cGH*)cgh, saved_component); - } + delete alldata; // Success return hdata; diff --git a/CarpetAttic/CarpetIOFlexIO/src/ioflexio.cc b/CarpetAttic/CarpetIOFlexIO/src/ioflexio.cc index 4b18c8688..b58557176 100644 --- a/CarpetAttic/CarpetIOFlexIO/src/ioflexio.cc +++ b/CarpetAttic/CarpetIOFlexIO/src/ioflexio.cc @@ -34,7 +34,7 @@ #include "ioflexio.hh" extern "C" { - static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/CarpetAttic/CarpetIOFlexIO/src/ioflexio.cc,v 1.25 2003/05/08 15:35:49 schnetter Exp $"; + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/CarpetAttic/CarpetIOFlexIO/src/ioflexio.cc,v 1.26 2003/06/18 18:24:28 schnetter Exp $"; CCTK_FILEVERSION(Carpet_CarpetIOFlexIO_ioflexio_cc); } @@ -137,6 +137,9 @@ namespace CarpetIOFlexIO { return 0; } + const int grouptype = CCTK_GroupTypeI(group); + const int rl = grouptype==CCTK_GF ? reflevel : 0; + // Get grid hierarchy extentsion from IOUtil const ioGH * const iogh = (const ioGH *)CCTK_GHExtension (cgh, "IO"); assert (iogh); @@ -229,7 +232,7 @@ namespace CarpetIOFlexIO { origin[d] = lower[d]; delta[d] = cgh->cctk_delta_space[d]; } - timestep = base_delta_time; + timestep = cgh->cctk_delta_time; amrwriter->setTopLevelParameters (gpdim, origin, delta, timestep, maxreflevels); @@ -254,7 +257,7 @@ namespace CarpetIOFlexIO { } // Traverse all components on this refinement and multigrid level - BEGIN_COMPONENT_LOOP(cgh) { + BEGIN_COMPONENT_LOOP(cgh, grouptype) { const ggf<dim>* ff = 0; @@ -262,7 +265,7 @@ namespace CarpetIOFlexIO { ff = (ggf<dim>*)arrdata[group].data[var]; const gdata<dim>* const data - = (*ff) (tl, reflevel, component, mglevel); + = (*ff) (tl, rl, component, mglevel); // Make temporary copy on processor 0 bbox<int,dim> ext = data->extent(); @@ -301,7 +304,7 @@ namespace CarpetIOFlexIO { // Delete temporary copy delete tmp; - } END_COMPONENT_LOOP(cgh); + } END_COMPONENT_LOOP; // Close the file if (CCTK_MyProc(cgh)==0) { @@ -404,220 +407,202 @@ namespace CarpetIOFlexIO { assert (var>=0 && var<CCTK_NumVars()); const int tl = 0; - switch (CCTK_GroupTypeI(group)) { - - case CCTK_SCALAR: { - // Don't input scalars - CCTK_VWarn (2, __LINE__, __FILE__, CCTK_THORNSTRING, - "Cannout input variable \"%s\" because it is a scalar", - varname); + // Check for storage + if (! CCTK_QueryGroupStorageI(cgh, group)) { + CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING, + "Cannot input variable \"%s\" because it has no storage", + varname); return 0; } - case CCTK_ARRAY: - case CCTK_GF: { - - // Check for storage - if (! CCTK_QueryGroupStorageI(cgh, group)) { - CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING, - "Cannot input variable \"%s\" because it has no storage", - varname); - return 0; - } - - // Find the input directory - const char* myindir = GetStringParameter("indir3D", ""); + const int grouptype = CCTK_GroupTypeI(group); + const int rl = grouptype==CCTK_GF ? reflevel : 0; + + // Find the input directory + const char* myindir = GetStringParameter("indir3D", ""); + + // Invent a file name + const char* extension = 0; + if (CCTK_Equals(in3D_format, "IEEE")) { + extension = ".raw"; +#ifdef HDF5 + } else if (CCTK_Equals(in3D_format, "HDF4")) { + extension = ".hdf"; + } else if (CCTK_Equals(in3D_format, "HDF5")) { + extension = ".h5"; +#endif + } else { + assert (0); + } + extension = GetStringParameter ("in3D_extension", extension); + + ostringstream filenamebuf; + filenamebuf << myindir << "/" << alias << extension; + string filenamestr = filenamebuf.str(); + const char * const filename = filenamestr.c_str(); + + IObase* reader = 0; + AmrGridReader* amrreader = 0; + int ndatasets = -1; + + const int gpdim = CCTK_GroupDimI(group); + + int rank; + int dims[dim]; + int nbytes; + + // Read the file only on the root processor + if (CCTK_MyProc(cgh)==0) { - // Invent a file name - const char* extension = 0; + // Open the file + if (verbose) CCTK_VInfo (CCTK_THORNSTRING, "Opening file \"%s\"", filename); if (CCTK_Equals(in3D_format, "IEEE")) { - extension = ".raw"; + reader = new IEEEIO(filename, IObase::Read); #ifdef HDF5 } else if (CCTK_Equals(in3D_format, "HDF4")) { - extension = ".hdf"; + reader = new HDFIO(filename, IObase::Read); } else if (CCTK_Equals(in3D_format, "HDF5")) { - extension = ".h5"; + reader = new H5IO(filename, IObase::Read); #endif } else { - assert (0); + assert (0); } - extension = GetStringParameter ("in3D_extension", extension); - - ostringstream filenamebuf; - filenamebuf << myindir << "/" << alias << extension; - string filenamestr = filenamebuf.str(); - const char * const filename = filenamestr.c_str(); + if (!reader->isValid()) { + CCTK_VWarn (0, __LINE__, __FILE__, CCTK_THORNSTRING, + "Could not open file \"%s\" for reading", filename); + } + assert (reader->isValid()); - IObase* reader = 0; - AmrGridReader* amrreader = 0; - int ndatasets = -1; + if (verbose) CCTK_VInfo (CCTK_THORNSTRING, "Reading AMR info"); + amrreader = new AmrGridReader(*reader); - const int gpdim = CCTK_GroupDimI(group); + // Read information about dataset + if (verbose) CCTK_VInfo (CCTK_THORNSTRING, "Reading dataset info"); + IObase::DataType numbertype; + reader->readInfo (numbertype, rank, dims); + nbytes = IObase::nBytes(numbertype,rank,dims); + if (verbose) CCTK_VInfo (CCTK_THORNSTRING, "type=%d rank=%d dims=[%d,%d,%d] nbytes=%d", (int)numbertype, rank, dims[0], dims[1], dims[2], nbytes); - int rank; - int dims[dim]; - int nbytes; + // Check rank + assert (rank==gpdim); - // Read the file only on the root processor - if (CCTK_MyProc(cgh)==0) { - - // Open the file - if (verbose) CCTK_VInfo (CCTK_THORNSTRING, "Opening file \"%s\"", filename); - if (CCTK_Equals(in3D_format, "IEEE")) { - reader = new IEEEIO(filename, IObase::Read); -#ifdef HDF5 - } else if (CCTK_Equals(in3D_format, "HDF4")) { - reader = new HDFIO(filename, IObase::Read); - } else if (CCTK_Equals(in3D_format, "HDF5")) { - reader = new H5IO(filename, IObase::Read); -#endif - } else { - assert (0); - } - if (!reader->isValid()) { - CCTK_VWarn (0, __LINE__, __FILE__, CCTK_THORNSTRING, - "Could not open file \"%s\" for reading", filename); - } - assert (reader->isValid()); - - if (verbose) CCTK_VInfo (CCTK_THORNSTRING, "Reading AMR info"); - amrreader = new AmrGridReader(*reader); - - // Read information about dataset - if (verbose) CCTK_VInfo (CCTK_THORNSTRING, "Reading dataset info"); - IObase::DataType numbertype; - reader->readInfo (numbertype, rank, dims); - nbytes = IObase::nBytes(numbertype,rank,dims); - if (verbose) CCTK_VInfo (CCTK_THORNSTRING, "type=%d rank=%d dims=[%d,%d,%d] nbytes=%d", (int)numbertype, rank, dims[0], dims[1], dims[2], nbytes); - - // Check rank - assert (rank==gpdim); - - // Check datatype - // TODO: Check datatype correctly - assert (CCTK_VarTypeI(n) == CCTK_VARIABLE_REAL8 - || (sizeof(CCTK_REAL) == sizeof(CCTK_REAL8) - && CCTK_VarTypeI(n) == CCTK_VARIABLE_REAL)); - - // TODO: check grid spacing - - // Number of datasets - if (verbose) CCTK_VInfo (CCTK_THORNSTRING, "Reading number of datasets"); - ndatasets = reader->nDatasets(); - if (verbose) CCTK_VInfo (CCTK_THORNSTRING, "ndatasets=%d", ndatasets); - assert (ndatasets>=0); - } + // Check datatype + // TODO: Check datatype correctly + assert (CCTK_VarTypeI(n) == CCTK_VARIABLE_REAL8 + || (sizeof(CCTK_REAL) == sizeof(CCTK_REAL8) + && CCTK_VarTypeI(n) == CCTK_VARIABLE_REAL)); - // Broadcast rank, dimensions, and nbytes - MPI_Bcast (&rank, 1, MPI_INT, 0, dist::comm); - assert (rank>=1); - MPI_Bcast (&dims, rank, MPI_INT, 0, dist::comm); - for (int d=0; d<rank; ++d) assert (dims[d]>=0); - MPI_Bcast (&nbytes, 1, MPI_INT, 0, dist::comm); - assert (nbytes>=0); + // TODO: check grid spacing - // Broadcast number of datasets - MPI_Bcast (&ndatasets, 1, MPI_INT, 0, dist::comm); + // Number of datasets + if (verbose) CCTK_VInfo (CCTK_THORNSTRING, "Reading number of datasets"); + ndatasets = reader->nDatasets(); + if (verbose) CCTK_VInfo (CCTK_THORNSTRING, "ndatasets=%d", ndatasets); assert (ndatasets>=0); + } + + // Broadcast rank, dimensions, and nbytes + MPI_Bcast (&rank, 1, MPI_INT, 0, dist::comm); + assert (rank>=1); + MPI_Bcast (&dims, rank, MPI_INT, 0, dist::comm); + for (int d=0; d<rank; ++d) assert (dims[d]>=0); + MPI_Bcast (&nbytes, 1, MPI_INT, 0, dist::comm); + assert (nbytes>=0); + + // Broadcast number of datasets + MPI_Bcast (&ndatasets, 1, MPI_INT, 0, dist::comm); + assert (ndatasets>=0); + + // Read all datasets + // TODO: read only some datasets + for (int dataset=0; dataset<ndatasets; ++dataset) { + if (verbose) CCTK_VInfo (CCTK_THORNSTRING, "Handling dataset #%d", dataset); - // Read all datasets - // TODO: read only some datasets - for (int dataset=0; dataset<ndatasets; ++dataset) { - if (verbose) CCTK_VInfo (CCTK_THORNSTRING, "Handling dataset #%d", dataset); - - // Read grid - AmrGrid* amrgrid = 0; - int amr_origin[dim]; - int amr_dims[dim]; - - if (CCTK_MyProc(cgh)==0) { - - // Read data - if (verbose) CCTK_VInfo (CCTK_THORNSTRING, "Reading AMR data"); - amrgrid = amrreader->getGrid(dataset); - assert (amrgrid!=0); - assert (amrgrid->data!=0); - - // If iorigin attribute is absent, assume file has unigrid - // data. Initialize iorigin to 0. - IObase::DataType atype; - int alength; - if (reader->readAttributeInfo("iorigin", atype, alength) < 0) { - for (int d=0; d<gpdim; ++d) { - amrgrid->iorigin[d] = 0; - } - } - - for (int d=0; d<gpdim; ++d) { - amr_origin[d] = amrgrid->iorigin[d]; - amr_dims[d] = amrgrid->dims[d]; - } - for (int d=gpdim; d<dim; ++d) { - amr_origin[d] = 0; - amr_dims[d] = 1; - } - - } // MyProc == 0 - MPI_Bcast (amr_origin, dim, MPI_INT, 0, dist::comm); - MPI_Bcast (amr_dims, dim, MPI_INT, 0, dist::comm); - - // Traverse all components on this refinement and multigrid - // level - BEGIN_COMPONENT_LOOP(cgh) { - - ggf<dim>* ff = 0; - - assert (var < (int)arrdata[group].data.size()); - ff = (ggf<dim>*)arrdata[group].data[var]; - - gdata<dim>* const data - = (*ff) (tl, reflevel, component, mglevel); - - // Create temporary data storage on processor 0 - const vect<int,dim> str = vect<int,dim>(reflevelfact); - const vect<int,dim> lb = vect<int,dim>(amr_origin) * str; - const vect<int,dim> ub - = lb + (vect<int,dim>(amr_dims) - 1) * str; - const bbox<int,dim> ext(lb,ub,str); - gdata<dim>* const tmp = data->make_typed (); - - if (CCTK_MyProc(cgh)==0) { - tmp->allocate (ext, 0, amrgrid->data); - } else { - tmp->allocate (ext, 0, 0); - } - - // Copy into grid function - data->copy_from (tmp, ext); - - // Delete temporary copy - delete tmp; - - } END_COMPONENT_LOOP(cgh); - - if (CCTK_MyProc(cgh)==0) { - free (amrgrid->data); - free (amrgrid); - amrgrid = 0; - } - - } // loop over datasets + // Read grid + AmrGrid* amrgrid = 0; + int amr_origin[dim]; + int amr_dims[dim]; - // Close the file if (CCTK_MyProc(cgh)==0) { - if (verbose) CCTK_VInfo (CCTK_THORNSTRING, "Deleting AMR info"); - delete amrreader; - amrreader = 0; - if (verbose) CCTK_VInfo (CCTK_THORNSTRING, "Closing file"); - delete reader; - reader = 0; - } + + // Read data + if (verbose) CCTK_VInfo (CCTK_THORNSTRING, "Reading AMR data"); + amrgrid = amrreader->getGrid(dataset); + assert (amrgrid!=0); + assert (amrgrid->data!=0); + + // If iorigin attribute is absent, assume file has unigrid + // data. Initialize iorigin to 0. + IObase::DataType atype; + int alength; + if (reader->readAttributeInfo("iorigin", atype, alength) < 0) { + for (int d=0; d<gpdim; ++d) { + amrgrid->iorigin[d] = 0; + } + } + + for (int d=0; d<gpdim; ++d) { + amr_origin[d] = amrgrid->iorigin[d]; + amr_dims[d] = amrgrid->dims[d]; + } + for (int d=gpdim; d<dim; ++d) { + amr_origin[d] = 0; + amr_dims[d] = 1; + } + + } // MyProc == 0 + MPI_Bcast (amr_origin, dim, MPI_INT, 0, dist::comm); + MPI_Bcast (amr_dims, dim, MPI_INT, 0, dist::comm); + + // Traverse all components on this refinement and multigrid + // level + BEGIN_COMPONENT_LOOP(cgh, grouptype) { + + ggf<dim>* ff = 0; + + assert (var < (int)arrdata[group].data.size()); + ff = (ggf<dim>*)arrdata[group].data[var]; + + gdata<dim>* const data = (*ff) (tl, rl, component, mglevel); + + // Create temporary data storage on processor 0 + const vect<int,dim> str = vect<int,dim>(reflevelfact); + const vect<int,dim> lb = vect<int,dim>(amr_origin) * str; + const vect<int,dim> ub + = lb + (vect<int,dim>(amr_dims) - 1) * str; + const bbox<int,dim> ext(lb,ub,str); + gdata<dim>* const tmp = data->make_typed (); + + if (CCTK_MyProc(cgh)==0) { + tmp->allocate (ext, 0, amrgrid->data); + } else { + tmp->allocate (ext, 0, 0); + } + + // Copy into grid function + data->copy_from (tmp, ext); + + // Delete temporary copy + delete tmp; + + } END_COMPONENT_LOOP; - break; - } // ARRAY or GROUP + if (CCTK_MyProc(cgh)==0) { + free (amrgrid->data); + free (amrgrid); + amrgrid = 0; + } - default: - assert (0); + } // loop over datasets + + // Close the file + if (CCTK_MyProc(cgh)==0) { + if (verbose) CCTK_VInfo (CCTK_THORNSTRING, "Deleting AMR info"); + delete amrreader; + amrreader = 0; + if (verbose) CCTK_VInfo (CCTK_THORNSTRING, "Closing file"); + delete reader; + reader = 0; } return 0; diff --git a/CarpetAttic/CarpetIOFlexIOCheckpoint/src/checkpointrestart.cc b/CarpetAttic/CarpetIOFlexIOCheckpoint/src/checkpointrestart.cc index a413d45e9..3c928787f 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.2 2003/05/16 15:17:13 hawke Exp $"; + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/CarpetAttic/CarpetIOFlexIOCheckpoint/src/checkpointrestart.cc,v 1.3 2003/06/18 18:24:28 schnetter Exp $"; CCTK_FILEVERSION(Carpet_CarpetIOFlexIO_checkpointrestart_cc); } @@ -255,7 +255,7 @@ namespace CarpetCheckpointRestart { free (fullname); } // write the var - retval += WriteVarAs(cgh,writer,amrwriter,request->vindex,group); + retval += WriteVarAs(cgh,writer,amrwriter,request->vindex); } } /* end of loop over all variables */ diff --git a/CarpetAttic/CarpetIOFlexIOCheckpoint/src/ioflexio.cc b/CarpetAttic/CarpetIOFlexIOCheckpoint/src/ioflexio.cc index c7bd5fe72..0806e1ea0 100644 --- a/CarpetAttic/CarpetIOFlexIOCheckpoint/src/ioflexio.cc +++ b/CarpetAttic/CarpetIOFlexIOCheckpoint/src/ioflexio.cc @@ -43,7 +43,7 @@ #include "ioflexio.hh" extern "C" { - static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/CarpetAttic/CarpetIOFlexIOCheckpoint/src/ioflexio.cc,v 1.1 2003/05/16 14:02:18 hawke Exp $"; + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/CarpetAttic/CarpetIOFlexIOCheckpoint/src/ioflexio.cc,v 1.2 2003/06/18 18:24:28 schnetter Exp $"; CCTK_FILEVERSION(Carpet_CarpetIOFlexIO_ioflexio_cc); } @@ -168,19 +168,23 @@ namespace CarpetIOFlexIO { - int WriteVarAs (const cGH* const cgh, IObase* writer, AMRwriter* amrwriter, int varindex, int group) + int WriteVarAs (const cGH* const cgh, IObase* writer, AMRwriter* amrwriter, int varindex) { DECLARE_CCTK_PARAMETERS; - /* I have got no idea why this stuff below is needed... ask Eric Schnetter */ + /* I have got no idea why this stuff below is needed... ask Erik Schnetter */ + const int group = CCTK_GroupIndexFromVarI (varindex); const int n0 = CCTK_FirstVarIndexI(group); assert (n0>=0 && n0<CCTK_NumVars()); const int var = varindex - n0; assert (var>=0 && var<CCTK_NumVars()); const int tl = 0; - + + const int grouptype = CCTK_GroupTypeI(group); + assert (! (grouptype != CCTK_GF && reflevel>0)); + if (CCTK_MyProc(cgh)==0) { // Set datatype @@ -214,7 +218,7 @@ namespace CarpetIOFlexIO { origin[d] = lower[d]; delta[d] = cgh->cctk_delta_space[d]; } - timestep = base_delta_time; + timestep = cgh->cctk_delta_time; amrwriter->setTopLevelParameters (gpdim, origin, delta, timestep, maxreflevels); @@ -239,7 +243,7 @@ namespace CarpetIOFlexIO { } // Traverse all components on this refinement and multigrid level - BEGIN_COMPONENT_LOOP(cgh) { + BEGIN_COMPONENT_LOOP(cgh, grouptype) { const ggf<dim>* ff = 0; @@ -289,7 +293,7 @@ namespace CarpetIOFlexIO { // Delete temporary copy delete tmp; - } END_COMPONENT_LOOP(cgh); + } END_COMPONENT_LOOP; return 0; @@ -318,6 +322,9 @@ namespace CarpetIOFlexIO { return 0; } + const int grouptype = CCTK_GroupTypeI(group); + if (grouptype != CCTK_GF && reflevel>0) return 0; + // Get grid hierarchy extentsion from IOUtil const ioGH * const iogh = (const ioGH *)CCTK_GHExtension (cgh, "IO"); assert (iogh); @@ -394,7 +401,7 @@ namespace CarpetIOFlexIO { amrwriter = new AMRwriter(*writer); } - WriteVarAs(cgh,writer,amrwriter,n,group); + WriteVarAs(cgh,writer,amrwriter,n); // Close the file if (CCTK_MyProc(cgh)==0) { @@ -497,220 +504,201 @@ namespace CarpetIOFlexIO { assert (var>=0 && var<CCTK_NumVars()); const int tl = 0; - switch (CCTK_GroupTypeI(group)) { - - case CCTK_SCALAR: { - // Don't input scalars - CCTK_VWarn (2, __LINE__, __FILE__, CCTK_THORNSTRING, - "Cannout input variable \"%s\" because it is a scalar", - varname); + // Check for storage + if (! CCTK_QueryGroupStorageI(cgh, group)) { + CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING, + "Cannot input variable \"%s\" because it has no storage", + varname); return 0; } - case CCTK_ARRAY: - case CCTK_GF: { - - // Check for storage - if (! CCTK_QueryGroupStorageI(cgh, group)) { - CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING, - "Cannot input variable \"%s\" because it has no storage", - varname); - return 0; - } - - // Find the input directory - const char* myindir = GetStringParameter("indir3D", ""); + const int grouptype = CCTK_GroupTypeI(group); + if (grouptype != CCTK_GF && reflevel>0) return 0; + + // Find the input directory + const char* myindir = GetStringParameter("indir3D", ""); + + // Invent a file name + const char* extension = 0; + if (CCTK_Equals(in3D_format, "IEEE")) { + extension = ".raw"; +#ifdef HDF5 + } else if (CCTK_Equals(in3D_format, "HDF4")) { + extension = ".hdf"; + } else if (CCTK_Equals(in3D_format, "HDF5")) { + extension = ".h5"; +#endif + } else { + assert (0); + } + extension = GetStringParameter ("in3D_extension", extension); + + ostringstream filenamebuf; + filenamebuf << myindir << "/" << alias << extension; + string filenamestr = filenamebuf.str(); + const char * const filename = filenamestr.c_str(); + + IObase* reader = 0; + AmrGridReader* amrreader = 0; + int ndatasets = -1; + + const int gpdim = CCTK_GroupDimI(group); + + int rank; + int dims[dim]; + int nbytes; + + // Read the file only on the root processor + if (CCTK_MyProc(cgh)==0) { - // Invent a file name - const char* extension = 0; + // Open the file + if (verbose) CCTK_VInfo (CCTK_THORNSTRING, "Opening file \"%s\"", filename); if (CCTK_Equals(in3D_format, "IEEE")) { - extension = ".raw"; + reader = new IEEEIO(filename, IObase::Read); #ifdef HDF5 } else if (CCTK_Equals(in3D_format, "HDF4")) { - extension = ".hdf"; + reader = new HDFIO(filename, IObase::Read); } else if (CCTK_Equals(in3D_format, "HDF5")) { - extension = ".h5"; + reader = new H5IO(filename, IObase::Read); #endif } else { - assert (0); + assert (0); } - extension = GetStringParameter ("in3D_extension", extension); - - ostringstream filenamebuf; - filenamebuf << myindir << "/" << alias << extension; - string filenamestr = filenamebuf.str(); - const char * const filename = filenamestr.c_str(); + if (!reader->isValid()) { + CCTK_VWarn (0, __LINE__, __FILE__, CCTK_THORNSTRING, + "Could not open file \"%s\" for reading", filename); + } + assert (reader->isValid()); - IObase* reader = 0; - AmrGridReader* amrreader = 0; - int ndatasets = -1; + if (verbose) CCTK_VInfo (CCTK_THORNSTRING, "Reading AMR info"); + amrreader = new AmrGridReader(*reader); - const int gpdim = CCTK_GroupDimI(group); + // Read information about dataset + if (verbose) CCTK_VInfo (CCTK_THORNSTRING, "Reading dataset info"); + IObase::DataType numbertype; + reader->readInfo (numbertype, rank, dims); + nbytes = IObase::nBytes(numbertype,rank,dims); + if (verbose) CCTK_VInfo (CCTK_THORNSTRING, "type=%d rank=%d dims=[%d,%d,%d] nbytes=%d", (int)numbertype, rank, dims[0], dims[1], dims[2], nbytes); - int rank; - int dims[dim]; - int nbytes; + // Check rank + assert (rank==gpdim); - // Read the file only on the root processor - if (CCTK_MyProc(cgh)==0) { - - // Open the file - if (verbose) CCTK_VInfo (CCTK_THORNSTRING, "Opening file \"%s\"", filename); - if (CCTK_Equals(in3D_format, "IEEE")) { - reader = new IEEEIO(filename, IObase::Read); -#ifdef HDF5 - } else if (CCTK_Equals(in3D_format, "HDF4")) { - reader = new HDFIO(filename, IObase::Read); - } else if (CCTK_Equals(in3D_format, "HDF5")) { - reader = new H5IO(filename, IObase::Read); -#endif - } else { - assert (0); - } - if (!reader->isValid()) { - CCTK_VWarn (0, __LINE__, __FILE__, CCTK_THORNSTRING, - "Could not open file \"%s\" for reading", filename); - } - assert (reader->isValid()); - - if (verbose) CCTK_VInfo (CCTK_THORNSTRING, "Reading AMR info"); - amrreader = new AmrGridReader(*reader); - - // Read information about dataset - if (verbose) CCTK_VInfo (CCTK_THORNSTRING, "Reading dataset info"); - IObase::DataType numbertype; - reader->readInfo (numbertype, rank, dims); - nbytes = IObase::nBytes(numbertype,rank,dims); - if (verbose) CCTK_VInfo (CCTK_THORNSTRING, "type=%d rank=%d dims=[%d,%d,%d] nbytes=%d", (int)numbertype, rank, dims[0], dims[1], dims[2], nbytes); - - // Check rank - assert (rank==gpdim); - - // Check datatype - // TODO: Check datatype correctly - assert (CCTK_VarTypeI(n) == CCTK_VARIABLE_REAL8 - || (sizeof(CCTK_REAL) == sizeof(CCTK_REAL8) - && CCTK_VarTypeI(n) == CCTK_VARIABLE_REAL)); - - // TODO: check grid spacing - - // Number of datasets - if (verbose) CCTK_VInfo (CCTK_THORNSTRING, "Reading number of datasets"); - ndatasets = reader->nDatasets(); - if (verbose) CCTK_VInfo (CCTK_THORNSTRING, "ndatasets=%d", ndatasets); - assert (ndatasets>=0); - } + // Check datatype + // TODO: Check datatype correctly + assert (CCTK_VarTypeI(n) == CCTK_VARIABLE_REAL8 + || (sizeof(CCTK_REAL) == sizeof(CCTK_REAL8) + && CCTK_VarTypeI(n) == CCTK_VARIABLE_REAL)); - // Broadcast rank, dimensions, and nbytes - MPI_Bcast (&rank, 1, MPI_INT, 0, dist::comm); - assert (rank>=1); - MPI_Bcast (&dims, rank, MPI_INT, 0, dist::comm); - for (int d=0; d<rank; ++d) assert (dims[d]>=0); - MPI_Bcast (&nbytes, 1, MPI_INT, 0, dist::comm); - assert (nbytes>=0); + // TODO: check grid spacing - // Broadcast number of datasets - MPI_Bcast (&ndatasets, 1, MPI_INT, 0, dist::comm); + // Number of datasets + if (verbose) CCTK_VInfo (CCTK_THORNSTRING, "Reading number of datasets"); + ndatasets = reader->nDatasets(); + if (verbose) CCTK_VInfo (CCTK_THORNSTRING, "ndatasets=%d", ndatasets); assert (ndatasets>=0); + } + + // Broadcast rank, dimensions, and nbytes + MPI_Bcast (&rank, 1, MPI_INT, 0, dist::comm); + assert (rank>=1); + MPI_Bcast (&dims, rank, MPI_INT, 0, dist::comm); + for (int d=0; d<rank; ++d) assert (dims[d]>=0); + MPI_Bcast (&nbytes, 1, MPI_INT, 0, dist::comm); + assert (nbytes>=0); + + // Broadcast number of datasets + MPI_Bcast (&ndatasets, 1, MPI_INT, 0, dist::comm); + assert (ndatasets>=0); + + // Read all datasets + // TODO: read only some datasets + for (int dataset=0; dataset<ndatasets; ++dataset) { + if (verbose) CCTK_VInfo (CCTK_THORNSTRING, "Handling dataset #%d", dataset); - // Read all datasets - // TODO: read only some datasets - for (int dataset=0; dataset<ndatasets; ++dataset) { - if (verbose) CCTK_VInfo (CCTK_THORNSTRING, "Handling dataset #%d", dataset); - - // Read grid - AmrGrid* amrgrid = 0; - int amr_origin[dim]; - int amr_dims[dim]; - - if (CCTK_MyProc(cgh)==0) { - - // Read data - if (verbose) CCTK_VInfo (CCTK_THORNSTRING, "Reading AMR data"); - amrgrid = amrreader->getGrid(dataset); - assert (amrgrid!=0); - assert (amrgrid->data!=0); - - // If iorigin attribute is absent, assume file has unigrid - // data. Initialize iorigin to 0. - IObase::DataType atype; - int alength; - if (reader->readAttributeInfo("iorigin", atype, alength) < 0) { - for (int d=0; d<gpdim; ++d) { - amrgrid->iorigin[d] = 0; - } - } - - for (int d=0; d<gpdim; ++d) { - amr_origin[d] = amrgrid->iorigin[d]; - amr_dims[d] = amrgrid->dims[d]; - } - for (int d=gpdim; d<dim; ++d) { - amr_origin[d] = 0; - amr_dims[d] = 1; - } - - } // MyProc == 0 - MPI_Bcast (amr_origin, dim, MPI_INT, 0, dist::comm); - MPI_Bcast (amr_dims, dim, MPI_INT, 0, dist::comm); - - // Traverse all components on this refinement and multigrid - // level - BEGIN_COMPONENT_LOOP(cgh) { - - ggf<dim>* ff = 0; - - assert (var < (int)arrdata[group].data.size()); - ff = (ggf<dim>*)arrdata[group].data[var]; - - gdata<dim>* const data - = (*ff) (tl, reflevel, component, mglevel); - - // Create temporary data storage on processor 0 - const vect<int,dim> str = vect<int,dim>(reflevelfact); - const vect<int,dim> lb = vect<int,dim>(amr_origin) * str; - const vect<int,dim> ub - = lb + (vect<int,dim>(amr_dims) - 1) * str; - const bbox<int,dim> ext(lb,ub,str); - gdata<dim>* const tmp = data->make_typed (); - - if (CCTK_MyProc(cgh)==0) { - tmp->allocate (ext, 0, amrgrid->data); - } else { - tmp->allocate (ext, 0, 0); - } - - // Copy into grid function - data->copy_from (tmp, ext); - - // Delete temporary copy - delete tmp; - - } END_COMPONENT_LOOP(cgh); - - if (CCTK_MyProc(cgh)==0) { - free (amrgrid->data); - free (amrgrid); - amrgrid = 0; - } - - } // loop over datasets + // Read grid + AmrGrid* amrgrid = 0; + int amr_origin[dim]; + int amr_dims[dim]; - // Close the file if (CCTK_MyProc(cgh)==0) { - if (verbose) CCTK_VInfo (CCTK_THORNSTRING, "Deleting AMR info"); - delete amrreader; - amrreader = 0; - if (verbose) CCTK_VInfo (CCTK_THORNSTRING, "Closing file"); - delete reader; - reader = 0; - } + + // Read data + if (verbose) CCTK_VInfo (CCTK_THORNSTRING, "Reading AMR data"); + amrgrid = amrreader->getGrid(dataset); + assert (amrgrid!=0); + assert (amrgrid->data!=0); + + // If iorigin attribute is absent, assume file has unigrid + // data. Initialize iorigin to 0. + IObase::DataType atype; + int alength; + if (reader->readAttributeInfo("iorigin", atype, alength) < 0) { + for (int d=0; d<gpdim; ++d) { + amrgrid->iorigin[d] = 0; + } + } + + for (int d=0; d<gpdim; ++d) { + amr_origin[d] = amrgrid->iorigin[d]; + amr_dims[d] = amrgrid->dims[d]; + } + for (int d=gpdim; d<dim; ++d) { + amr_origin[d] = 0; + amr_dims[d] = 1; + } + + } // MyProc == 0 + MPI_Bcast (amr_origin, dim, MPI_INT, 0, dist::comm); + MPI_Bcast (amr_dims, dim, MPI_INT, 0, dist::comm); - break; - } // ARRAY or GROUP + // Traverse all components on this refinement and multigrid + // level + BEGIN_COMPONENT_LOOP(cgh, grouptype) { + + ggf<dim>* ff = 0; + + assert (var < (int)arrdata[group].data.size()); + ff = (ggf<dim>*)arrdata[group].data[var]; + + gdata<dim>* const data = (*ff) (tl, reflevel, component, mglevel); + + // Create temporary data storage on processor 0 + const vect<int,dim> str = vect<int,dim>(reflevelfact); + const vect<int,dim> lb = vect<int,dim>(amr_origin) * str; + const vect<int,dim> ub = lb + (vect<int,dim>(amr_dims) - 1) * str; + const bbox<int,dim> ext(lb,ub,str); + gdata<dim>* const tmp = data->make_typed (); + + if (CCTK_MyProc(cgh)==0) { + tmp->allocate (ext, 0, amrgrid->data); + } else { + tmp->allocate (ext, 0, 0); + } + + // Copy into grid function + data->copy_from (tmp, ext); + + // Delete temporary copy + delete tmp; + + } END_COMPONENT_LOOP; - default: - assert (0); + if (CCTK_MyProc(cgh)==0) { + free (amrgrid->data); + free (amrgrid); + amrgrid = 0; + } + + } // loop over datasets + + // Close the file + if (CCTK_MyProc(cgh)==0) { + if (verbose) CCTK_VInfo (CCTK_THORNSTRING, "Deleting AMR info"); + delete amrreader; + amrreader = 0; + if (verbose) CCTK_VInfo (CCTK_THORNSTRING, "Closing file"); + delete reader; + reader = 0; } return 0; diff --git a/CarpetAttic/CarpetIOFlexIOCheckpoint/src/ioflexio.hh b/CarpetAttic/CarpetIOFlexIOCheckpoint/src/ioflexio.hh index bd235fd66..858832243 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.1 2003/05/16 14:02:18 hawke Exp $ +// $Header: /home/eschnett/C/carpet/Carpet/CarpetAttic/CarpetIOFlexIOCheckpoint/src/ioflexio.hh,v 1.2 2003/06/18 18:24:28 schnetter Exp $ #ifndef CARPETIOFLEXIO_HH #define CARPETIOFLEXIO_HH @@ -73,7 +73,7 @@ namespace CarpetIOFlexIO { const char* GetStringParameter (const char* const parametername, const char* const fallback); - int WriteVarAs (const cGH* const cgh, IObase* writer,AMRwriter* amrwriter, int varindex, int group); + int WriteVarAs (const cGH* const cgh, IObase* writer,AMRwriter* amrwriter, int varindex); } // namespace CarpetIOFlexIO diff --git a/CarpetExtra/FOWaveToyF77/interface.ccl b/CarpetExtra/FOWaveToyF77/interface.ccl index a9abf3646..25a26046d 100644 --- a/CarpetExtra/FOWaveToyF77/interface.ccl +++ b/CarpetExtra/FOWaveToyF77/interface.ccl @@ -1,8 +1,8 @@ # Interface definition for thorn WaveToyF77 -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/FOWaveToyF77/interface.ccl,v 1.2 2002/02/18 14:36:02 shawley Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/FOWaveToyF77/interface.ccl,v 1.3 2003/06/18 18:24:28 schnetter Exp $ -implements: wavetoy -inherits: boundary grid idscalarwave +implements: FOwavetoy +inherits: boundary grid idFOscalarwave public: diff --git a/CarpetExtra/IDFOScalarWave/interface.ccl b/CarpetExtra/IDFOScalarWave/interface.ccl index 93e1b7e6b..bb329f723 100644 --- a/CarpetExtra/IDFOScalarWave/interface.ccl +++ b/CarpetExtra/IDFOScalarWave/interface.ccl @@ -1,7 +1,7 @@ # Interface definition for thorn IDScalarWave -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/IDFOScalarWave/interface.ccl,v 1.2 2002/02/18 14:45:39 shawley Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/IDFOScalarWave/interface.ccl,v 1.3 2003/06/18 18:24:28 schnetter Exp $ -implements: idscalarwave -inherits: wavetoy grid -friend: wavetoy +implements: idFOscalarwave +inherits: FOwavetoy grid +friend: FOwavetoy diff --git a/CarpetExtra/IDFOScalarWave/schedule.ccl b/CarpetExtra/IDFOScalarWave/schedule.ccl index 680bc6d22..2d6f28652 100644 --- a/CarpetExtra/IDFOScalarWave/schedule.ccl +++ b/CarpetExtra/IDFOScalarWave/schedule.ccl @@ -1,5 +1,5 @@ # Schedule definitions for thorn IDScalarWave -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/IDFOScalarWave/schedule.ccl,v 1.2 2002/02/18 14:58:21 shawley Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/IDFOScalarWave/schedule.ccl,v 1.3 2003/06/18 18:24:28 schnetter Exp $ schedule IDFOScalarWave_CheckParameters at PARAMCHECK { @@ -8,6 +8,6 @@ schedule IDFOScalarWave_CheckParameters at PARAMCHECK schedule IDFOScalarWave_InitialData as WaveToy_InitialData at INITIAL { - STORAGE: wavetoy::scalarevolve wavetoy::scalarevolve_derivs + STORAGE: FOwavetoy::scalarevolve FOwavetoy::scalarevolve_derivs LANG: Fortran } "Initial data for 3D wave equation" diff --git a/CarpetExtra/IDScalarWaveExpl/schedule.ccl b/CarpetExtra/IDScalarWaveExpl/schedule.ccl index f3cf87be0..b485852ac 100644 --- a/CarpetExtra/IDScalarWaveExpl/schedule.ccl +++ b/CarpetExtra/IDScalarWaveExpl/schedule.ccl @@ -1,5 +1,5 @@ # Schedule definitions for thorn IDScalarWaveExpl -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/IDScalarWaveExpl/schedule.ccl,v 1.2 2003/11/05 16:18:40 schnetter Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/IDScalarWaveExpl/schedule.ccl,v 1.1 2003/06/18 18:24:29 schnetter Exp $ SCHEDULE IDScalarWaveExpl_InitialData AT initial { diff --git a/CarpetExtra/IDScalarWaveExpl/src/initialdata.F77 b/CarpetExtra/IDScalarWaveExpl/src/initialdata.F77 index 33a19b6cb..052a616c0 100644 --- a/CarpetExtra/IDScalarWaveExpl/src/initialdata.F77 +++ b/CarpetExtra/IDScalarWaveExpl/src/initialdata.F77 @@ -1,8 +1,7 @@ -c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/IDScalarWaveExpl/src/initialdata.F77,v 1.2 2003/11/05 16:18:40 schnetter Exp $ +c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/IDScalarWaveExpl/src/initialdata.F77,v 1.1 2003/06/18 18:24:29 schnetter Exp $ #include "cctk.h" #include "cctk_Arguments.h" -#include "cctk_Functions.h" #include "cctk_Parameters.h" subroutine IDScalarWaveExpl_InitialData (CCTK_ARGUMENTS) diff --git a/CarpetExtra/IDScalarWaveFO/param.ccl b/CarpetExtra/IDScalarWaveFO/param.ccl index e6bc7b617..2283a5aca 100644 --- a/CarpetExtra/IDScalarWaveFO/param.ccl +++ b/CarpetExtra/IDScalarWaveFO/param.ccl @@ -1,15 +1,5 @@ # Parameter definitions for thorn IDScalarWaveFO -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/IDScalarWaveFO/param.ccl,v 1.3 2004/05/07 22:51:08 schnetter Exp $ - -RESTRICTED: - -KEYWORD initial_data "Type of initial data" -{ - "plane" :: "Plane wave" - "noise" :: "Noise" -} "plane" - -PRIVATE: +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/IDScalarWaveFO/param.ccl,v 1.1 2003/06/18 18:24:29 schnetter Exp $ CCTK_REAL wave_number[3] "Wave number" { diff --git a/CarpetExtra/IDScalarWaveFO/schedule.ccl b/CarpetExtra/IDScalarWaveFO/schedule.ccl index 8e615a685..4b68757d8 100644 --- a/CarpetExtra/IDScalarWaveFO/schedule.ccl +++ b/CarpetExtra/IDScalarWaveFO/schedule.ccl @@ -1,7 +1,8 @@ # Schedule definitions for thorn IDScalarWaveFO -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/IDScalarWaveFO/schedule.ccl,v 1.3 2004/01/11 12:20:39 schnetter Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/IDScalarWaveFO/schedule.ccl,v 1.1 2003/06/18 18:24:29 schnetter Exp $ SCHEDULE IDScalarWaveFO_InitialData AT initial { LANG: Fortran + STORAGE: WaveToyFO::scalarevolve[1] } "Initial data for the scalar field" diff --git a/CarpetExtra/IDScalarWaveFO/src/initialdata.F77 b/CarpetExtra/IDScalarWaveFO/src/initialdata.F77 index e2808d54f..15d6e0934 100644 --- a/CarpetExtra/IDScalarWaveFO/src/initialdata.F77 +++ b/CarpetExtra/IDScalarWaveFO/src/initialdata.F77 @@ -1,8 +1,7 @@ -c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/IDScalarWaveFO/src/initialdata.F77,v 1.5 2004/05/07 22:51:08 schnetter Exp $ +c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/IDScalarWaveFO/src/initialdata.F77,v 1.1 2003/06/18 18:24:29 schnetter Exp $ #include "cctk.h" #include "cctk_Arguments.h" -#include "cctk_Functions.h" #include "cctk_Parameters.h" subroutine IDScalarWaveFO_InitialData (CCTK_ARGUMENTS) @@ -14,48 +13,31 @@ c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/IDScalarWaveFO/src/ini parameter (pi = 3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117068d0) CCTK_REAL omega integer i, j, k - - if (CCTK_EQUALS(initial_data, "plane")) then - omega = sqrt(wave_number(1)**2 + wave_number(2)**2 + wave_number(3)**2) - do k=1,cctk_lsh(3) - do j=1,cctk_lsh(2) - do i=1,cctk_lsh(1) - phi(i,j,k) = amplitude * cos (2*pi * - $ ( wave_number(1)*(x(i,j,k)-phase_offset(1)) - $ + wave_number(2)*(y(i,j,k)-phase_offset(2)) - $ + wave_number(3)*(z(i,j,k)-phase_offset(3)) - $ + omega*(cctk_time-time_offset))) - psix(i,j,k) = amplitude * wave_number(1) / omega * cos (2*pi * - $ ( wave_number(1)*(x(i,j,k)-phase_offset(1)) - $ + wave_number(2)*(y(i,j,k)-phase_offset(2)) - $ + wave_number(3)*(z(i,j,k)-phase_offset(3)) - $ + omega*(cctk_time-time_offset))) - psiy(i,j,k) = amplitude * wave_number(2) / omega * cos (2*pi * - $ ( wave_number(1)*(x(i,j,k)-phase_offset(1)) - $ + wave_number(2)*(y(i,j,k)-phase_offset(2)) - $ + wave_number(3)*(z(i,j,k)-phase_offset(3)) - $ + omega*(cctk_time-time_offset))) - psiz(i,j,k) = amplitude * wave_number(3) / omega * cos (2*pi * - $ ( wave_number(1)*(x(i,j,k)-phase_offset(1)) - $ + wave_number(2)*(y(i,j,k)-phase_offset(2)) - $ + wave_number(3)*(z(i,j,k)-phase_offset(3)) - $ + omega*(cctk_time-time_offset))) - end do - end do - end do - - else if (CCTK_EQUALS(initial_data, "noise")) then - - do k=1,cctk_lsh(3) - do j=1,cctk_lsh(2) - do i=1,cctk_lsh(1) - call random_number (phi(i,j,k)) - call random_number (psix(i,j,k)) - call random_number (psiy(i,j,k)) - call random_number (psiz(i,j,k)) - end do + omega = sqrt(wave_number(1)**2 + wave_number(2)**2 + wave_number(3)**2) + do k=1,cctk_lsh(3) + do j=1,cctk_lsh(2) + do i=1,cctk_lsh(1) + phi(i,j,k) = amplitude * cos (2*pi * + $ ( wave_number(1)*(x(i,j,k)-phase_offset(1)) + $ + wave_number(2)*(y(i,j,k)-phase_offset(2)) + $ + wave_number(3)*(z(i,j,k)-phase_offset(3)) + $ + omega*(cctk_time-time_offset))) + psix(i,j,k) = - amplitude * (2*pi)**2 * wave_number(1) * omega * cos (2*pi * + $ ( wave_number(1)*(x(i,j,k)-phase_offset(1)) + $ + wave_number(2)*(y(i,j,k)-phase_offset(2)) + $ + wave_number(3)*(z(i,j,k)-phase_offset(3)) + $ + omega*(cctk_time-time_offset))) + psiy(i,j,k) = - amplitude * (2*pi)**2 * wave_number(2) * omega * cos (2*pi * + $ ( wave_number(1)*(x(i,j,k)-phase_offset(1)) + $ + wave_number(2)*(y(i,j,k)-phase_offset(2)) + $ + wave_number(3)*(z(i,j,k)-phase_offset(3)) + $ + omega*(cctk_time-time_offset))) + psiz(i,j,k) = - amplitude * (2*pi)**2 * wave_number(3) * omega * cos (2*pi * + $ ( wave_number(1)*(x(i,j,k)-phase_offset(1)) + $ + wave_number(2)*(y(i,j,k)-phase_offset(2)) + $ + wave_number(3)*(z(i,j,k)-phase_offset(3)) + $ + omega*(cctk_time-time_offset))) end do end do - - end if + end do end diff --git a/CarpetExtra/IDScalarWaveMoL/param.ccl b/CarpetExtra/IDScalarWaveMoL/param.ccl index b7d933e69..67d341ef5 100644 --- a/CarpetExtra/IDScalarWaveMoL/param.ccl +++ b/CarpetExtra/IDScalarWaveMoL/param.ccl @@ -1,15 +1,5 @@ # Parameter definitions for thorn IDScalarWaveMoL -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/IDScalarWaveMoL/param.ccl,v 1.2 2003/08/14 17:22:09 schnetter Exp $ - -KEYWORD initial_data "Initial data" -{ - "plane wave" :: "Plane wave" - "Gaussian pulse" :: "Gaussian pulse" -} "plane wave" - - - -# Plane wave specification +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/IDScalarWaveMoL/param.ccl,v 1.1 2003/06/18 18:24:29 schnetter Exp $ CCTK_REAL wave_number[3] "Wave number" { @@ -21,30 +11,12 @@ CCTK_REAL phase_offset[3] "Phase offset" *:* :: "" } 0.0 - - -# Gaussian pulse specification - -CCTK_REAL pulse_direction[3] "Pulse width" -{ - *:* :: "" -} 0.0 - -CCTK_REAL pulse_offset[3] "Pulse offset" -{ - *:* :: "" -} 0.0 - - - -# Generic specifications - CCTK_REAL time_offset "Time offset" { *:* :: "" } 0.0 -CCTK_REAL amplitude "Amplitude" +CCTK_REAL amplitude "Wave amplitude" { *:* :: "" } 1.0 diff --git a/CarpetExtra/IDScalarWaveMoL/schedule.ccl b/CarpetExtra/IDScalarWaveMoL/schedule.ccl index 4cb14d4d9..85b47361e 100644 --- a/CarpetExtra/IDScalarWaveMoL/schedule.ccl +++ b/CarpetExtra/IDScalarWaveMoL/schedule.ccl @@ -1,5 +1,5 @@ # Schedule definitions for thorn IDScalarWaveMoL -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/IDScalarWaveMoL/schedule.ccl,v 1.2 2003/11/05 16:18:40 schnetter Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/IDScalarWaveMoL/schedule.ccl,v 1.1 2003/06/18 18:24:29 schnetter Exp $ SCHEDULE IDScalarWaveMoL_InitialData AT initial { diff --git a/CarpetExtra/IDScalarWaveMoL/src/errors.F77 b/CarpetExtra/IDScalarWaveMoL/src/errors.F77 index a47394f84..8bfeac41c 100644 --- a/CarpetExtra/IDScalarWaveMoL/src/errors.F77 +++ b/CarpetExtra/IDScalarWaveMoL/src/errors.F77 @@ -1,8 +1,7 @@ -c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/IDScalarWaveMoL/src/errors.F77,v 1.2 2003/11/05 16:18:40 schnetter Exp $ +c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/IDScalarWaveMoL/src/errors.F77,v 1.1 2003/06/18 18:24:29 schnetter Exp $ #include "cctk.h" #include "cctk_Arguments.h" -#include "cctk_Functions.h" #include "cctk_Parameters.h" subroutine IDScalarWaveMoL_Errors (CCTK_ARGUMENTS) diff --git a/CarpetExtra/IDScalarWaveMoL/src/initialdata.F77 b/CarpetExtra/IDScalarWaveMoL/src/initialdata.F77 index f8385b48a..1e7f5923c 100644 --- a/CarpetExtra/IDScalarWaveMoL/src/initialdata.F77 +++ b/CarpetExtra/IDScalarWaveMoL/src/initialdata.F77 @@ -1,8 +1,7 @@ -c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/IDScalarWaveMoL/src/initialdata.F77,v 1.3 2003/11/05 16:18:40 schnetter Exp $ +c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/IDScalarWaveMoL/src/initialdata.F77,v 1.1 2003/06/18 18:24:29 schnetter Exp $ #include "cctk.h" #include "cctk_Arguments.h" -#include "cctk_Functions.h" #include "cctk_Parameters.h" subroutine IDScalarWaveMoL_InitialData (CCTK_ARGUMENTS) @@ -13,37 +12,22 @@ c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/IDScalarWaveMoL/src/in CCTK_REAL pi parameter (pi = 3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117068d0) CCTK_REAL omega - CCTK_REAL tmp integer i, j, k - if (CCTK_EQUALS(initial_data, "plane wave")) then - omega = sqrt(wave_number(1)**2 + wave_number(2)**2 - $ + wave_number(3)**2) - do k=1,cctk_lsh(3) - do j=1,cctk_lsh(2) - do i=1,cctk_lsh(1) - tmp = wave_number(1)*(x(i,j,k)-phase_offset(1)) - $ + wave_number(2)*(y(i,j,k)-phase_offset(2)) - $ + wave_number(3)*(z(i,j,k)-phase_offset(3)) - $ + omega*(cctk_time-time_offset) - phi(i,j,k) = amplitude * cos (2*pi * tmp) - psi(i,j,k) = - amplitude * 2*pi * omega * sin (2*pi * tmp) - end do + omega = sqrt(wave_number(1)**2 + wave_number(2)**2 + wave_number(3)**2) + do k=1,cctk_lsh(3) + do j=1,cctk_lsh(2) + do i=1,cctk_lsh(1) + phi(i,j,k) = amplitude * cos (2*pi * + $ ( wave_number(1)*(x(i,j,k)-phase_offset(1)) + $ + wave_number(2)*(y(i,j,k)-phase_offset(2)) + $ + wave_number(3)*(z(i,j,k)-phase_offset(3)) + $ + omega*(cctk_time-time_offset))) + psi(i,j,k) = - amplitude * 2*pi * omega * sin (2*pi * + $ ( wave_number(1)*(x(i,j,k)-phase_offset(1)) + $ + wave_number(2)*(y(i,j,k)-phase_offset(2)) + $ + wave_number(3)*(z(i,j,k)-phase_offset(3)) + $ + omega*(cctk_time-time_offset))) end do end do - else if (CCTK_EQUALS(initial_data, "Gaussian pulse")) then - omega = sqrt(pulse_direction(1)**2 + pulse_direction(2)**2 - $ + pulse_direction(3)**2) - do k=1,cctk_lsh(3) - do j=1,cctk_lsh(2) - do i=1,cctk_lsh(1) - tmp = pulse_direction(1)*(x(i,j,k)-pulse_offset(1)) - $ + pulse_direction(2)*(y(i,j,k)-pulse_offset(2)) - $ + pulse_direction(3)*(z(i,j,k)-pulse_offset(3)) - $ + omega*(cctk_time-time_offset) - phi(i,j,k) = amplitude * exp (-0.5d0 * tmp**2) - psi(i,j,k) = - tmp * omega * phi(i,j,k) - end do - end do - end do - end if + end do end diff --git a/CarpetExtra/SpaceTimeToy/interface.ccl b/CarpetExtra/SpaceTimeToy/interface.ccl index aadf4a350..3d91b639b 100644 --- a/CarpetExtra/SpaceTimeToy/interface.ccl +++ b/CarpetExtra/SpaceTimeToy/interface.ccl @@ -1,8 +1,15 @@ # Interface definition for thorn SpaceTimeToy -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/interface.ccl,v 1.5 2001/12/07 18:27:09 schnetter Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/interface.ccl,v 1.6 2003/06/18 18:24:29 schnetter Exp $ implements: spacetimetoy -inherits: hydrotoy boundary grid +inherits: hydrotoy boundary driver grid + + + +CCTK_INT FUNCTION Boundary_SelectGroupForBC(CCTK_POINTER IN GH, \ + CCTK_INT IN faces, CCTK_INT IN boundary_width, CCTK_INT IN table_handle, \ + CCTK_STRING IN group_name, CCTK_STRING IN bc_name) +USES FUNCTION Boundary_SelectGroupForBC diff --git a/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic.par b/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic.par index a69d8ea8a..f6cd458a7 100644 --- a/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic.par +++ b/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic.par @@ -7,9 +7,9 @@ # @enddesc # @@*/ # -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic.par,v 1.7 2002/10/24 21:11:05 schnetter Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic.par,v 1.8 2003/06/18 18:24:29 schnetter Exp $ -ActiveThorns = "Boundary IOBasic IOUtil Time Cart3d Carpet CarpetIOASCII CarpetIOFlexIO CarpetLib CarpetReducd CarpetRegrid CarpetSlab IDSpaceTimeToy SpaceTimeToy HydroToy" +ActiveThorns = "Boundary IOBasic IOUtil Time Cart3d Slab Carpet CarpetIOASCII CarpetIOFlexIO CarpetLib CarpetReduce CarpetRegrid CarpetSlab IDSpaceTimeToy SpaceTimeToy HydroToy" Carpet::poison_new_timelevels = yes #Carpet::check_for_poison = yes @@ -45,10 +45,10 @@ IOBasic::outScalar_vars = "spacetimetoy::spacetimeevolve" IOASCII::out1D_every = 1 # 2 IOASCII::out1D_vars = "spacetimetoy::spacetimeevolve grid::coordinates" -IOFlexIO::out3D_every = 24 -IOFlexIO::out3D_vars = "spacetimetoy::spacetimeevolve" -IOFlexIO::out3D_format = IEEE -IOFlexIO::out3D_extension = ".vcamr" +#IOFlexIO::out3D_every = 24 +#IOFlexIO::out3D_vars = "spacetimetoy::spacetimeevolve" +#IOFlexIO::out3D_format = IEEE +#IOFlexIO::out3D_extension = ".vcamr" SpaceTimeToy::icn_iterations = 2 SpaceTimeToy::bound = radiation diff --git a/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_coarse.par b/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_coarse.par index 12e017779..dbcabb184 100644 --- a/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_coarse.par +++ b/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_coarse.par @@ -7,9 +7,9 @@ # @enddesc # @@*/ # -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_coarse.par,v 1.9 2002/10/24 21:11:06 schnetter Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_coarse.par,v 1.10 2003/06/18 18:24:29 schnetter Exp $ -ActiveThorns = "Boundary IOBasic IOUtil Time Cart3d Carpet CarpetIOASCII CarpetIOFlexIO CarpetLib CarpetReduce CarpetRegrid CarpetSlab IDSpaceTimeToy SpaceTimeToy Hydrotoy" +ActiveThorns = "Boundary IOBasic IOUtil Time Cart3d Slab Carpet CarpetIOASCII CarpetIOFlexIO CarpetLib CarpetReduce CarpetRegrid CarpetSlab IDSpaceTimeToy SpaceTimeToy Hydrotoy" Carpet::poison_new_timelevels = yes #Carpet::check_for_poison = yes @@ -45,10 +45,10 @@ IOBasic::outScalar_vars = "spacetimetoy::spacetimeevolve" IOASCII::out1D_every = 1 # 2 IOASCII::out1D_vars = "spacetimetoy::spacetimeevolve grid::coordinates" -IOFlexIO::out3D_every = 12 -IOFlexIO::out3D_vars = "spacetimetoy::spacetimeevolve" -IOFlexIO::out3D_format = IEEE -IOFlexIO::out3D_extension = ".vcamr" +#IOFlexIO::out3D_every = 12 +#IOFlexIO::out3D_vars = "spacetimetoy::spacetimeevolve" +#IOFlexIO::out3D_format = IEEE +#IOFlexIO::out3D_extension = ".vcamr" SpaceTimeToy::icn_iterations = 2 SpaceTimeToy::bound = radiation diff --git a/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_coarse_rl2.par b/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_coarse_rl2.par index 9fc6be4d7..ed2f6bf8b 100644 --- a/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_coarse_rl2.par +++ b/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_coarse_rl2.par @@ -7,9 +7,9 @@ # @enddesc # @@*/ # -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_coarse_rl2.par,v 1.9 2002/10/24 21:11:06 schnetter Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_coarse_rl2.par,v 1.10 2003/06/18 18:24:29 schnetter Exp $ -ActiveThorns = "Boundary IOBasic IOUtil Time Cart3d Carpet CarpetIOASCII CarpetIOFlexIO CarpetLib CarpetReduce CarpetRegrid CarpetSlab IDSpaceTimeToy SpaceTimeToy Hydrotoy" +ActiveThorns = "Boundary IOBasic IOUtil Time Cart3d Slab Carpet CarpetIOASCII CarpetIOFlexIO CarpetLib CarpetReduce CarpetRegrid CarpetSlab IDSpaceTimeToy SpaceTimeToy Hydrotoy" Carpet::poison_new_timelevels = yes #Carpet::check_for_poison = yes @@ -51,10 +51,10 @@ IOBasic::outScalar_vars = "spacetimetoy::spacetimeevolve" IOASCII::out1D_every = 1 # 2 IOASCII::out1D_vars = "spacetimetoy::spacetimeevolve grid::coordinates" -IOFlexIO::out3D_every = 24 -IOFlexIO::out3D_vars = "spacetimetoy::spacetimeevolve" -IOFlexIO::out3D_format = IEEE -IOFlexIO::out3D_extension = ".vcamr" +#IOFlexIO::out3D_every = 24 +#IOFlexIO::out3D_vars = "spacetimetoy::spacetimeevolve" +#IOFlexIO::out3D_format = IEEE +#IOFlexIO::out3D_extension = ".vcamr" SpaceTimeToy::icn_iterations = 2 SpaceTimeToy::bound = radiation diff --git a/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_coarse_rl3.par b/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_coarse_rl3.par index 84a1a725a..30ecdcf97 100644 --- a/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_coarse_rl3.par +++ b/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_coarse_rl3.par @@ -7,9 +7,9 @@ # @enddesc # @@*/ # -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_coarse_rl3.par,v 1.10 2002/10/24 21:11:06 schnetter Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_coarse_rl3.par,v 1.11 2003/06/18 18:24:29 schnetter Exp $ -ActiveThorns = "Boundary IOBasic IOUtil Time Cart3d Carpet CarpetIOASCII CarpetIOFlexIO CarpetLib CarpetReduce CarpetRegrid CarpetSlab IDSpaceTimeToy SpaceTimeToy Hydrotoy" +ActiveThorns = "Boundary IOBasic IOUtil Time Cart3d Slab Carpet CarpetIOASCII CarpetIOFlexIO CarpetLib CarpetReduce CarpetRegrid CarpetSlab IDSpaceTimeToy SpaceTimeToy Hydrotoy" Carpet::poison_new_timelevels = yes #Carpet::check_for_poison = yes @@ -51,10 +51,10 @@ IOBasic::outScalar_vars = "spacetimetoy::spacetimeevolve" IOASCII::out1D_every = 1 # 2 IOASCII::out1D_vars = "spacetimetoy::spacetimeevolve grid::coordinates" -IOFlexIO::out3D_every = 48 -IOFlexIO::out3D_vars = "spacetimetoy::spacetimeevolve" -IOFlexIO::out3D_format = IEEE -IOFlexIO::out3D_extension = ".vcamr" +#IOFlexIO::out3D_every = 48 +#IOFlexIO::out3D_vars = "spacetimetoy::spacetimeevolve" +#IOFlexIO::out3D_format = IEEE +#IOFlexIO::out3D_extension = ".vcamr" SpaceTimeToy::icn_iterations = 2 SpaceTimeToy::bound = radiation diff --git a/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_fine.par b/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_fine.par index 9bd3fb198..4cfe64a4b 100644 --- a/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_fine.par +++ b/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_fine.par @@ -7,7 +7,7 @@ # @enddesc # @@*/ # -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_fine.par,v 1.2 2004/03/23 12:00:15 schnetter Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_fine.par,v 1.1 2003/06/18 18:24:29 schnetter Exp $ ActiveThorns = "Boundary IOBasic IOUtil Time Cart3d Slab Carpet CarpetIOASCII CarpetIOFlexIO CarpetLib CarpetReduce CarpetRegrid CarpetSlab IDSpaceTimeToy SpaceTimeToy HydroToy" diff --git a/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_fine_rl2.par b/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_fine_rl2.par index ca19dbbcc..b427b8d6d 100644 --- a/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_fine_rl2.par +++ b/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_fine_rl2.par @@ -7,7 +7,7 @@ # @enddesc # @@*/ # -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_fine_rl2.par,v 1.2 2004/03/23 12:00:15 schnetter Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_fine_rl2.par,v 1.1 2003/06/18 18:24:29 schnetter Exp $ ActiveThorns = "Boundary IOBasic IOUtil Time Cart3d Slab Carpet CarpetIOASCII CarpetIOFlexIO CarpetLib CarpetReduce CarpetRegrid CarpetSlab IDSpaceTimeToy SpaceTimeToy Hydrotoy" diff --git a/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_rl2.par b/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_rl2.par index d256f4a26..dbbf89dd5 100644 --- a/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_rl2.par +++ b/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_rl2.par @@ -7,9 +7,9 @@ # @enddesc # @@*/ # -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_rl2.par,v 1.9 2002/10/24 21:11:06 schnetter Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_rl2.par,v 1.10 2003/06/18 18:24:29 schnetter Exp $ -ActiveThorns = "Boundary IOBasic IOUtil Time Cart3d Carpet CarpetIOASCII CarpetIOFlexIO CarpetLib CarpetReduce CarpetRegrid CarpetSlab IDSpaceTimeToy SpaceTimeToy Hydrotoy" +ActiveThorns = "Boundary IOBasic IOUtil Time Cart3d Slab Carpet CarpetIOASCII CarpetIOFlexIO CarpetLib CarpetReduce CarpetRegrid CarpetSlab IDSpaceTimeToy SpaceTimeToy Hydrotoy" Carpet::poison_new_timelevels = yes #Carpet::check_for_poison = yes @@ -51,10 +51,10 @@ IOBasic::outScalar_vars = "spacetimetoy::spacetimeevolve" IOASCII::out1D_every = 1 # 2 IOASCII::out1D_vars = "spacetimetoy::spacetimeevolve grid::coordinates" -IOFlexIO::out3D_every = 48 -IOFlexIO::out3D_vars = "spacetimetoy::spacetimeevolve" -IOFlexIO::out3D_format = IEEE -IOFlexIO::out3D_extension = ".vcamr" +#IOFlexIO::out3D_every = 48 +#IOFlexIO::out3D_vars = "spacetimetoy::spacetimeevolve" +#IOFlexIO::out3D_format = IEEE +#IOFlexIO::out3D_extension = ".vcamr" SpaceTimeToy::icn_iterations = 2 SpaceTimeToy::bound = radiation diff --git a/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_rl3.par b/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_rl3.par index 7805e8cf8..a845e9765 100644 --- a/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_rl3.par +++ b/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_rl3.par @@ -7,9 +7,9 @@ # @enddesc # @@*/ # -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_rl3.par,v 1.8 2002/10/24 21:11:06 schnetter Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_rl3.par,v 1.9 2003/06/18 18:24:29 schnetter Exp $ -ActiveThorns = "Boundary IOBasic IOUtil Time Cart3d Carpet CarpetIOASCII CarpetIOFlexIO CarpetLib CarpetReduce CarpetRegrid CarpetSlab IDSpaceTimeToy SpaceTimeToy Hydrotoy" +ActiveThorns = "Boundary IOBasic IOUtil Time Cart3d Slab Carpet CarpetIOASCII CarpetIOFlexIO CarpetLib CarpetReduce CarpetRegrid CarpetSlab IDSpaceTimeToy SpaceTimeToy Hydrotoy" Carpet::poison_new_timelevels = yes #Carpet::check_for_poison = yes @@ -51,10 +51,10 @@ IOBasic::outScalar_vars = "spacetimetoy::spacetimeevolve" IOASCII::out1D_every = 1 # 2 IOASCII::out1D_vars = "spacetimetoy::spacetimeevolve grid::coordinates" -IOFlexIO::out3D_every = 96 -IOFlexIO::out3D_vars = "spacetimetoy::spacetimeevolve" -IOFlexIO::out3D_format = IEEE -IOFlexIO::out3D_extension = ".vcamr" +#IOFlexIO::out3D_every = 96 +#IOFlexIO::out3D_vars = "spacetimetoy::spacetimeevolve" +#IOFlexIO::out3D_format = IEEE +#IOFlexIO::out3D_extension = ".vcamr" SpaceTimeToy::icn_iterations = 2 SpaceTimeToy::bound = radiation diff --git a/CarpetExtra/SpaceTimeToy/par/st1d.gnu b/CarpetExtra/SpaceTimeToy/par/st1d.gnu index 1c7eee34b..3a11278d9 100644 --- a/CarpetExtra/SpaceTimeToy/par/st1d.gnu +++ b/CarpetExtra/SpaceTimeToy/par/st1d.gnu @@ -1,24 +1,4 @@ -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/st1d.gnu,v 1.2 2003/06/30 17:28:51 schnetter Exp $ - -set grid - -dt=0.05 -f(x)=cos(2*pi*(x+t*dt)) - -t=200 - - -p [0:1] "st1d_1l_0020/phi.xl" i t u 10:13 w l, "st1d_1l_0040/phi.xl" i t u 10:13 w l, "st1d_1l_0080/phi.xl" i t u 10:13 w l, f(x) - -p [0:1] "st1d_1l_0020/phi.xl" i t u 10:($13-f($10)) w l, "st1d_1l_0040/phi.xl" i t u 10:(4*($13-f($10))) w l, "st1d_1l_0080/phi.xl" i t u 10:(16*($13-f($10))) w l - - - -p [0:1] "st1d_2l_0020/phi.xl" i 2*t u 10:13 w l, "st1d_2l_0040/phi.xl" i 2*t u 10:13 w l, "st1d_2l_0080/phi.xl" i 2*t u 10:13 w l, "st1d_2l_0160/phi.xl" i 2*t u 10:13 w l, "st1d_2l_0320/phi.xl" i 2*t u 10:13 w l, f(x) - -p [0:1] "st1d_2l_0020/phi.xl" i 2*t u 10:($13-f($10)) w l, "st1d_2l_0040/phi.xl" i 2*t u 10:(4*($13-f($10))) w l, "st1d_2l_0080/phi.xl" i 2*t u 10:(16*($13-f($10))) w l, "st1d_2l_0160/phi.xl" i 2*t u 10:(64*($13-f($10))) w l, "st1d_2l_0320/phi.xl" i 2*t u 10:(256*($13-f($10))) w l - - +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/st1d.gnu,v 1.1 2003/06/18 18:24:29 schnetter Exp $ set grid diff --git a/CarpetExtra/SpaceTimeToy/par/st1d_1l_0020.par b/CarpetExtra/SpaceTimeToy/par/st1d_1l_0020.par index 96da55975..3102a06ce 100644 --- a/CarpetExtra/SpaceTimeToy/par/st1d_1l_0020.par +++ b/CarpetExtra/SpaceTimeToy/par/st1d_1l_0020.par @@ -1,4 +1,4 @@ -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/st1d_1l_0020.par,v 1.2 2004/03/23 12:00:15 schnetter Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/st1d_1l_0020.par,v 1.1 2003/06/18 18:24:29 schnetter Exp $ Cactus::cctk_initial_time = 0 Cactus::cctk_itlast = 3200 diff --git a/CarpetExtra/SpaceTimeToy/par/st1d_1l_0040.par b/CarpetExtra/SpaceTimeToy/par/st1d_1l_0040.par index ca8d2fa85..d33fd27fe 100644 --- a/CarpetExtra/SpaceTimeToy/par/st1d_1l_0040.par +++ b/CarpetExtra/SpaceTimeToy/par/st1d_1l_0040.par @@ -1,4 +1,4 @@ -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/st1d_1l_0040.par,v 1.2 2004/03/23 12:00:15 schnetter Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/st1d_1l_0040.par,v 1.1 2003/06/18 18:24:29 schnetter Exp $ Cactus::cctk_initial_time = 0 Cactus::cctk_itlast = 6400 diff --git a/CarpetExtra/SpaceTimeToy/par/st1d_1l_0080.par b/CarpetExtra/SpaceTimeToy/par/st1d_1l_0080.par index a2535989b..12150c5d5 100644 --- a/CarpetExtra/SpaceTimeToy/par/st1d_1l_0080.par +++ b/CarpetExtra/SpaceTimeToy/par/st1d_1l_0080.par @@ -1,4 +1,4 @@ -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/st1d_1l_0080.par,v 1.2 2004/03/23 12:00:15 schnetter Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/st1d_1l_0080.par,v 1.1 2003/06/18 18:24:30 schnetter Exp $ Cactus::cctk_initial_time = 0 Cactus::cctk_itlast = 12800 diff --git a/CarpetExtra/SpaceTimeToy/par/st1d_2l_0020.par b/CarpetExtra/SpaceTimeToy/par/st1d_2l_0020.par index 0d4263611..9f5388d92 100644 --- a/CarpetExtra/SpaceTimeToy/par/st1d_2l_0020.par +++ b/CarpetExtra/SpaceTimeToy/par/st1d_2l_0020.par @@ -1,4 +1,4 @@ -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/st1d_2l_0020.par,v 1.2 2004/03/23 12:00:15 schnetter Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/st1d_2l_0020.par,v 1.1 2003/06/18 18:24:30 schnetter Exp $ Cactus::cctk_initial_time = 0 Cactus::cctk_itlast = 3200 diff --git a/CarpetExtra/SpaceTimeToy/par/st1d_2l_0040.par b/CarpetExtra/SpaceTimeToy/par/st1d_2l_0040.par index 90261f6aa..9c4400c3d 100644 --- a/CarpetExtra/SpaceTimeToy/par/st1d_2l_0040.par +++ b/CarpetExtra/SpaceTimeToy/par/st1d_2l_0040.par @@ -1,4 +1,4 @@ -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/st1d_2l_0040.par,v 1.2 2004/03/23 12:00:15 schnetter Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/st1d_2l_0040.par,v 1.1 2003/06/18 18:24:30 schnetter Exp $ Cactus::cctk_initial_time = 0 Cactus::cctk_itlast = 6400 diff --git a/CarpetExtra/SpaceTimeToy/par/st1d_2l_0080.par b/CarpetExtra/SpaceTimeToy/par/st1d_2l_0080.par index ab4ff726c..f16a0f9a5 100644 --- a/CarpetExtra/SpaceTimeToy/par/st1d_2l_0080.par +++ b/CarpetExtra/SpaceTimeToy/par/st1d_2l_0080.par @@ -1,4 +1,4 @@ -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/st1d_2l_0080.par,v 1.2 2004/03/23 12:00:15 schnetter Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/st1d_2l_0080.par,v 1.1 2003/06/18 18:24:30 schnetter Exp $ Cactus::cctk_initial_time = 0 Cactus::cctk_itlast = 12800 diff --git a/CarpetExtra/SpaceTimeToy/par/st1d_2l_0160.par b/CarpetExtra/SpaceTimeToy/par/st1d_2l_0160.par index cb222029e..de72cf54c 100644 --- a/CarpetExtra/SpaceTimeToy/par/st1d_2l_0160.par +++ b/CarpetExtra/SpaceTimeToy/par/st1d_2l_0160.par @@ -1,4 +1,4 @@ -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/st1d_2l_0160.par,v 1.2 2004/03/23 12:00:15 schnetter Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/st1d_2l_0160.par,v 1.1 2003/06/18 18:24:30 schnetter Exp $ Cactus::cctk_initial_time = 0 Cactus::cctk_itlast = 25600 diff --git a/CarpetExtra/SpaceTimeToy/par/st1d_2l_0320.par b/CarpetExtra/SpaceTimeToy/par/st1d_2l_0320.par index 054046275..7c22efff2 100644 --- a/CarpetExtra/SpaceTimeToy/par/st1d_2l_0320.par +++ b/CarpetExtra/SpaceTimeToy/par/st1d_2l_0320.par @@ -1,4 +1,4 @@ -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/st1d_2l_0320.par,v 1.2 2004/03/23 12:00:15 schnetter Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/st1d_2l_0320.par,v 1.1 2003/06/18 18:24:30 schnetter Exp $ Cactus::cctk_initial_time = 0 Cactus::cctk_itlast = 51200 diff --git a/CarpetExtra/SpaceTimeToy/param.ccl b/CarpetExtra/SpaceTimeToy/param.ccl index 0213a9f61..d129baa51 100644 --- a/CarpetExtra/SpaceTimeToy/param.ccl +++ b/CarpetExtra/SpaceTimeToy/param.ccl @@ -1,5 +1,5 @@ # Parameter definitions for thorn SpaceTimeToy -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/param.ccl,v 1.3 2001/08/26 13:59:49 schnetter Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/param.ccl,v 1.4 2003/06/18 18:24:29 schnetter Exp $ shares: hydrotoy @@ -7,14 +7,10 @@ USES BOOLEAN hydrotoy_active private: -KEYWORD bound "Type of boundary condition to use" +STRING bound "Type of boundary condition to use" { - "none" :: "No boundary condition" - "flat" :: "Flat boundary condition" - "radiation" :: "Radiation boundary condition" - "robin" :: "Robin boundary condition" - "zero" :: "Zero boundary condition" -} "zero" + ".*" :: "Must be a registered boundary condition" +} "Static" CCTK_INT icn_iterations "Number of ICN iterations to take after the initial Euler step" { diff --git a/CarpetExtra/SpaceTimeToy/schedule.ccl b/CarpetExtra/SpaceTimeToy/schedule.ccl index 3b1230e77..e39f9a31d 100644 --- a/CarpetExtra/SpaceTimeToy/schedule.ccl +++ b/CarpetExtra/SpaceTimeToy/schedule.ccl @@ -1,5 +1,5 @@ # Schedule definitions for thorn SpaceTimeToy -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/schedule.ccl,v 1.5 2002/04/29 11:28:06 schnetter Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/schedule.ccl,v 1.6 2003/06/18 18:24:29 schnetter Exp $ STORAGE: spacetimeevolve[3] STORAGE: icn_state @@ -28,16 +28,57 @@ schedule SpaceTimeToy_EulerStep at EVOL \ { LANG: Fortran STORAGE: spacetimetemps hydrotemps - SYNC: spacetimeevolve } "Initial Euler step" - -schedule SpaceTimeToy_ICNStep at EVOL \ + +schedule SpaceTimeToy_Boundaries at EVOL \ + after SpaceTimeToy_EulerStep +{ + LANG: Fortran + SYNC: spacetimeevolve +} "Select boundary conditions after initial Euler step" + +schedule GROUP ApplyBCs at EVOL \ + after SpaceTimeToy_Boundaries +{ +} "Apply boundary conditions after initial Euler step" + + + +schedule GROUP SpaceTimeToy_ICNLoop at EVOL \ after SpaceTimeToy_EulerStep \ after HydroToy_EulerPredictor \ before HydroToy_EulerCorrector \ while SpaceTimeToy::do_iterate { +} "All ICN steps" + +schedule SpaceTimeToy_ICNStep in SpaceTimeToy_ICNLoop +{ LANG: Fortran STORAGE: spacetimetemps hydrotemps - SYNC: spacetimeevolve } "One ICN step" + +schedule SpaceTimeToy_Boundaries in SpaceTimeToy_ICNLoop \ + after SpaceTimeToy_ICNStep +{ + LANG: Fortran + SYNC: spacetimeevolve +} "Select boundary conditions after ICN step" + +schedule GROUP ApplyBCs in SpaceTimeToy_ICNLoop \ + after SpaceTimeToy_Boundaries +{ +} "Apply boundary conditions after ICN step" + + + +schedule SpaceTimeToy_Boundaries in POSTRESTRICT +{ + LANG: Fortran + SYNC: spacetimeevolve +} "Select boundary conditions after restricting" + +schedule GROUP ApplyBCs in POSTRESTRICT \ + after SpaceTimeToy_Boundaries +{ +} "Apply boundary conditions after restricting" diff --git a/CarpetExtra/SpaceTimeToy/src/SpaceTimeToy.F77 b/CarpetExtra/SpaceTimeToy/src/SpaceTimeToy.F77 index 304837390..c1f3f4b0b 100644 --- a/CarpetExtra/SpaceTimeToy/src/SpaceTimeToy.F77 +++ b/CarpetExtra/SpaceTimeToy/src/SpaceTimeToy.F77 @@ -1,9 +1,10 @@ c -*-Fortran-*- -c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/src/SpaceTimeToy.F77,v 1.9 2001/08/26 13:59:58 schnetter Exp $ +c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/src/SpaceTimeToy.F77,v 1.10 2003/06/18 18:24:30 schnetter Exp $ -#include "cctk.h" -#include "cctk_Parameters.h" +#include "cctk.h" +#include "cctk_Faces.h" #include "cctk_Arguments.h" +#include "cctk_Parameters.h" @@ -64,9 +65,6 @@ c Copy c Evolve call SpaceTimeToy_Step (CCTK_PASS_FTOF) -c Apply boundaries - call SpaceTimeToy_Boundaries (CCTK_PASS_FTOF) - c Initialise ICN iterations icn_iteration = 0 do_iterate = 1 @@ -138,9 +136,6 @@ c Average c Evolve call SpaceTimeToy_Step (CCTK_PASS_FTOF) -c Apply boundaries - call SpaceTimeToy_Boundaries (CCTK_PASS_FTOF) - c Step ICN iterations icn_iteration = icn_iteration + 1 if (icn_iteration .eq. icn_iterations) then @@ -200,45 +195,44 @@ c Evolve DECLARE_CCTK_FUNCTIONS DECLARE_CCTK_PARAMETERS - CCTK_REAL zero, one - parameter (zero=0, one=1) + character fbound*1000 + CCTK_INT fboundlen - CCTK_REAL finf - parameter (finf=1) - integer npow - parameter (npow=1) + integer options - integer sw(3) + CCTK_INT boundary_width + CCTK_INT options1 + + integer d integer ierr - sw(1) = cctk_nghostzones(1) - sw(2) = cctk_nghostzones(2) - sw(3) = cctk_nghostzones(3) - -c Apply boundary condition - if (CCTK_EQUALS(bound, "flat")) then - call BndFlatGN (ierr, cctkGH, sw, "spacetimetoy::spacetimeevolve") - else if (CCTK_EQUALS(bound, "zero")) then - call BndScalarGN (ierr, cctkGH, sw, zero, - $ "spacetimetoy::spacetimeevolve") - else if (CCTK_EQUALS(bound, "radiation")) then - call BndRadiativeGN (ierr, cctkGH, sw, zero, one, - $ "spacetimetoy::spacetimeevolve", "spacetimetoy::spacetimeevolve") - else if (CCTK_EQUALS(bound, "robin")) then - call BndRobinGN (ierr, cctkGH, sw, finf, npow, - $ "spacetimetoy::spacetimeevolve") - else if (CCTK_EQUALS(bound, "none")) then - ierr = 0 - else - call CCTK_WARN (0, "internal error") - end if - if (ierr .lt. 0) then - call CCTK_WARN (0, "Error while applying boundary condition") + external Boundary_SelectGroupForBC + CCTK_INT Boundary_SelectGroupForBC + + boundary_width = cctk_nghostzones(1) + do d=1,3 + if (cctk_nghostzones(d) .ne. boundary_width) then + call CCTK_WARN (0, "internal error") + end if + end do + + call Util_TableCreateFromString (options, "") + if (options .lt. 0) call CCTK_WARN (0, "internal error") + + call CCTK_FortranString (fboundlen, bound, fbound) + + options1 = options + ierr = Boundary_SelectGroupForBC (cctkGH, CCTK_ALL_FACES, boundary_width, options1, "spacetimetoy::spacetimeevolve", fbound) + if (ierr .lt. 0) then + call CCTK_WARN (0, "Error while selecting boundary condition") end if + call Util_TableDestroy (ierr, options) + if (ierr .lt. 0) call CCTK_WARN (0, "internal error") + call Cart3dSymGN (ierr, cctkGH, "spacetimetoy::spacetimeevolve") - if (ierr .lt. 0) then + if (ierr .lt. 0) then call CCTK_WARN (0, "Error while applying symmetry condition") end if - + end diff --git a/CarpetExtra/SpaceTimeToy/test/doubletoy_periodic_coarse.par b/CarpetExtra/SpaceTimeToy/test/doubletoy_periodic_coarse.par index e20b1db74..ad8212fed 100644 --- a/CarpetExtra/SpaceTimeToy/test/doubletoy_periodic_coarse.par +++ b/CarpetExtra/SpaceTimeToy/test/doubletoy_periodic_coarse.par @@ -1,8 +1,8 @@ -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/test/doubletoy_periodic_coarse.par,v 1.3 2002/10/24 21:11:06 schnetter Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/test/doubletoy_periodic_coarse.par,v 1.4 2003/06/18 18:24:30 schnetter Exp $ !DESC "DoubleToy with periodic boundaries, no refinement" -ActiveThorns = "Boundary IOBasic IOUtil Time Cart3d Carpet CarpetIOASCII CarpetLib CarpetReduce CarpetRegrid CarpetSlab IDSpaceTimeToy SpaceTimeToy IDHydroToy HydroToy" +ActiveThorns = "Boundary IOBasic IOUtil Time Cart3d Slab Carpet CarpetIOASCII CarpetLib CarpetReduce CarpetRegrid CarpetSlab IDSpaceTimeToy SpaceTimeToy IDHydroToy HydroToy" Carpet::poison_new_timelevels = yes Carpet::check_for_poison = yes diff --git a/CarpetExtra/SpaceTimeToy/test/spacetimetoy_periodic_coarse.par b/CarpetExtra/SpaceTimeToy/test/spacetimetoy_periodic_coarse.par index 881a8caeb..2def19864 100644 --- a/CarpetExtra/SpaceTimeToy/test/spacetimetoy_periodic_coarse.par +++ b/CarpetExtra/SpaceTimeToy/test/spacetimetoy_periodic_coarse.par @@ -1,8 +1,8 @@ -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/test/spacetimetoy_periodic_coarse.par,v 1.3 2002/10/24 21:11:07 schnetter Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/test/spacetimetoy_periodic_coarse.par,v 1.4 2003/06/18 18:24:30 schnetter Exp $ !DESC "SpaceTimeToy with periodic boundaries, no refinement" -ActiveThorns = "Boundary IOBasic IOUtil Time Cart3d Carpet CarpetIOASCII CarpetLib CarpetReduce CarpetRegrid CarpetSlab IDSpaceTimeToy SpaceTimeToy Hydrotoy" +ActiveThorns = "Boundary IOBasic IOUtil Time Cart3d Slab Carpet CarpetIOASCII CarpetLib CarpetReduce CarpetRegrid CarpetSlab IDSpaceTimeToy SpaceTimeToy Hydrotoy" Carpet::poison_new_timelevels = yes #Carpet::check_for_poison = yes diff --git a/CarpetExtra/SpaceTimeToy/test/spacetimetoy_periodic_coarse_rl2.par b/CarpetExtra/SpaceTimeToy/test/spacetimetoy_periodic_coarse_rl2.par index 1094894d3..bb9308218 100644 --- a/CarpetExtra/SpaceTimeToy/test/spacetimetoy_periodic_coarse_rl2.par +++ b/CarpetExtra/SpaceTimeToy/test/spacetimetoy_periodic_coarse_rl2.par @@ -1,8 +1,8 @@ -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/test/spacetimetoy_periodic_coarse_rl2.par,v 1.3 2002/10/24 21:11:07 schnetter Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/test/spacetimetoy_periodic_coarse_rl2.par,v 1.4 2003/06/18 18:24:30 schnetter Exp $ !DESC "SpaceTimeToy with periodic boundaries, 1 refinement level" -ActiveThorns = "Boundary IOBasic IOUtil Time Cart3d Carpet CarpetIOASCII CarpetLib CarpetReduce CarpetRegrid CarpetSlab IDSpaceTimeToy SpaceTimeToy Hydrotoy" +ActiveThorns = "Boundary IOBasic IOUtil Time Cart3d Slab Carpet CarpetIOASCII CarpetLib CarpetReduce CarpetRegrid CarpetSlab IDSpaceTimeToy SpaceTimeToy Hydrotoy" Carpet::poison_new_timelevels = yes #Carpet::check_for_poison = yes diff --git a/CarpetExtra/SpaceTimeToy/test/spacetimetoy_periodic_coarse_rl3.par b/CarpetExtra/SpaceTimeToy/test/spacetimetoy_periodic_coarse_rl3.par index 6f4162589..c84f00c0d 100644 --- a/CarpetExtra/SpaceTimeToy/test/spacetimetoy_periodic_coarse_rl3.par +++ b/CarpetExtra/SpaceTimeToy/test/spacetimetoy_periodic_coarse_rl3.par @@ -1,8 +1,8 @@ -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/test/spacetimetoy_periodic_coarse_rl3.par,v 1.3 2002/10/24 21:11:07 schnetter Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/test/spacetimetoy_periodic_coarse_rl3.par,v 1.4 2003/06/18 18:24:30 schnetter Exp $ !DESC "WaveToy with periodic boundaries, 2 refinement levels" -ActiveThorns = "Boundary IOBasic IOUtil Time Cart3d Carpet CarpetIOASCII CarpetLib CarpetReduce CarpetRegrid CarpetSlab IDSpaceTimeToy SpaceTimeToy Hydrotoy" +ActiveThorns = "Boundary IOBasic IOUtil Time Cart3d Slab Carpet CarpetIOASCII CarpetLib CarpetReduce CarpetRegrid CarpetSlab IDSpaceTimeToy SpaceTimeToy Hydrotoy" Carpet::poison_new_timelevels = yes #Carpet::check_for_poison = yes diff --git a/CarpetExtra/WaveToyExpl/interface.ccl b/CarpetExtra/WaveToyExpl/interface.ccl index 231d8e0ee..f565d69c8 100644 --- a/CarpetExtra/WaveToyExpl/interface.ccl +++ b/CarpetExtra/WaveToyExpl/interface.ccl @@ -1,17 +1,17 @@ # Interface definition for thorn WaveToyExpl -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyExpl/interface.ccl,v 1.3 2004/05/21 17:43:57 schnetter Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyExpl/interface.ccl,v 1.1 2003/06/18 18:24:30 schnetter Exp $ IMPLEMENTS: WaveToyExpl -INHERITS: grid +INHERITS: boundary grid -CCTK_INT FUNCTION Boundary_SelectGroupForBC(CCTK_POINTER_TO_CONST IN GH, \ +CCTK_INT FUNCTION Boundary_SelectGroupForBC(CCTK_POINTER IN GH, \ CCTK_INT IN faces, CCTK_INT IN boundary_width, CCTK_INT IN table_handle, \ CCTK_STRING IN group_name, CCTK_STRING IN bc_name) -REQUIRES FUNCTION Boundary_SelectGroupForBC +USES FUNCTION Boundary_SelectGroupForBC diff --git a/CarpetExtra/WaveToyExpl/par/ew1d_1l_0020.par b/CarpetExtra/WaveToyExpl/par/ew1d_1l_0020.par index 5f559808e..99c59e571 100644 --- a/CarpetExtra/WaveToyExpl/par/ew1d_1l_0020.par +++ b/CarpetExtra/WaveToyExpl/par/ew1d_1l_0020.par @@ -1,4 +1,4 @@ -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyExpl/par/ew1d_1l_0020.par,v 1.2 2004/03/23 12:00:28 schnetter Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyExpl/par/ew1d_1l_0020.par,v 1.1 2003/06/18 18:24:30 schnetter Exp $ Cactus::cctk_initial_time = 0 Cactus::cctk_itlast = 3200 diff --git a/CarpetExtra/WaveToyExpl/par/ew1d_1l_0040.par b/CarpetExtra/WaveToyExpl/par/ew1d_1l_0040.par index 9e17b21d3..8137ed8c4 100644 --- a/CarpetExtra/WaveToyExpl/par/ew1d_1l_0040.par +++ b/CarpetExtra/WaveToyExpl/par/ew1d_1l_0040.par @@ -1,4 +1,4 @@ -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyExpl/par/ew1d_1l_0040.par,v 1.2 2004/03/23 12:00:28 schnetter Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyExpl/par/ew1d_1l_0040.par,v 1.1 2003/06/18 18:24:30 schnetter Exp $ Cactus::cctk_initial_time = 0 Cactus::cctk_itlast = 6400 diff --git a/CarpetExtra/WaveToyExpl/par/ew1d_1l_0080.par b/CarpetExtra/WaveToyExpl/par/ew1d_1l_0080.par index 317a31c3e..da7d1b8f3 100644 --- a/CarpetExtra/WaveToyExpl/par/ew1d_1l_0080.par +++ b/CarpetExtra/WaveToyExpl/par/ew1d_1l_0080.par @@ -1,4 +1,4 @@ -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyExpl/par/ew1d_1l_0080.par,v 1.2 2004/03/23 12:00:28 schnetter Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyExpl/par/ew1d_1l_0080.par,v 1.1 2003/06/18 18:24:30 schnetter Exp $ Cactus::cctk_initial_time = 0 Cactus::cctk_itlast = 12800 diff --git a/CarpetExtra/WaveToyExpl/par/ew1d_2l_0020.par b/CarpetExtra/WaveToyExpl/par/ew1d_2l_0020.par index 1655ca90c..8665f42be 100644 --- a/CarpetExtra/WaveToyExpl/par/ew1d_2l_0020.par +++ b/CarpetExtra/WaveToyExpl/par/ew1d_2l_0020.par @@ -1,4 +1,4 @@ -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyExpl/par/ew1d_2l_0020.par,v 1.2 2004/03/23 12:00:28 schnetter Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyExpl/par/ew1d_2l_0020.par,v 1.1 2003/06/18 18:24:30 schnetter Exp $ Cactus::cctk_initial_time = 0 Cactus::cctk_itlast = 3200 diff --git a/CarpetExtra/WaveToyExpl/par/ew1d_2l_0040.par b/CarpetExtra/WaveToyExpl/par/ew1d_2l_0040.par index 9a03d1161..c2ebfca19 100644 --- a/CarpetExtra/WaveToyExpl/par/ew1d_2l_0040.par +++ b/CarpetExtra/WaveToyExpl/par/ew1d_2l_0040.par @@ -1,4 +1,4 @@ -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyExpl/par/ew1d_2l_0040.par,v 1.2 2004/03/23 12:00:28 schnetter Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyExpl/par/ew1d_2l_0040.par,v 1.1 2003/06/18 18:24:30 schnetter Exp $ Cactus::cctk_initial_time = 0 Cactus::cctk_itlast = 6400 diff --git a/CarpetExtra/WaveToyExpl/par/ew1d_2l_0080.par b/CarpetExtra/WaveToyExpl/par/ew1d_2l_0080.par index 19f8e285f..5ffce558f 100644 --- a/CarpetExtra/WaveToyExpl/par/ew1d_2l_0080.par +++ b/CarpetExtra/WaveToyExpl/par/ew1d_2l_0080.par @@ -1,4 +1,4 @@ -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyExpl/par/ew1d_2l_0080.par,v 1.2 2004/03/23 12:00:28 schnetter Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyExpl/par/ew1d_2l_0080.par,v 1.1 2003/06/18 18:24:30 schnetter Exp $ Cactus::cctk_initial_time = 0 Cactus::cctk_itlast = 12800 diff --git a/CarpetExtra/WaveToyExpl/par/ew1d_2l_0160.par b/CarpetExtra/WaveToyExpl/par/ew1d_2l_0160.par index c35b6f512..4862fe62a 100644 --- a/CarpetExtra/WaveToyExpl/par/ew1d_2l_0160.par +++ b/CarpetExtra/WaveToyExpl/par/ew1d_2l_0160.par @@ -1,4 +1,4 @@ -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyExpl/par/ew1d_2l_0160.par,v 1.2 2004/03/23 12:00:28 schnetter Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyExpl/par/ew1d_2l_0160.par,v 1.1 2003/06/18 18:24:30 schnetter Exp $ Cactus::cctk_initial_time = 0 Cactus::cctk_itlast = 25600 diff --git a/CarpetExtra/WaveToyExpl/par/ew1d_2l_0320.par b/CarpetExtra/WaveToyExpl/par/ew1d_2l_0320.par index 03637dfb0..0dc9290c1 100644 --- a/CarpetExtra/WaveToyExpl/par/ew1d_2l_0320.par +++ b/CarpetExtra/WaveToyExpl/par/ew1d_2l_0320.par @@ -1,4 +1,4 @@ -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyExpl/par/ew1d_2l_0320.par,v 1.2 2004/03/23 12:00:28 schnetter Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyExpl/par/ew1d_2l_0320.par,v 1.1 2003/06/18 18:24:30 schnetter Exp $ Cactus::cctk_initial_time = 0 Cactus::cctk_itlast = 51200 diff --git a/CarpetExtra/WaveToyExpl/schedule.ccl b/CarpetExtra/WaveToyExpl/schedule.ccl index 8ef598e24..08dc51abc 100644 --- a/CarpetExtra/WaveToyExpl/schedule.ccl +++ b/CarpetExtra/WaveToyExpl/schedule.ccl @@ -1,5 +1,5 @@ # Schedule definitions for thorn WaveToyExpl -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyExpl/schedule.ccl,v 1.3 2003/11/05 16:18:40 schnetter Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyExpl/schedule.ccl,v 1.1 2003/06/18 18:24:30 schnetter Exp $ STORAGE: scalarevolve[3] STORAGE: scalarevolveint[3] @@ -60,18 +60,18 @@ SCHEDULE GROUP ApplyBCs AS WaveToyExpl_ApplyFinalBoundaries AT evol AFTER WaveTo -SCHEDULE WaveToyExpl_IntBoundaries AT POSTRESTRICT +SCHEDULE WaveToyExpl_IntBoundaries IN postrestrict { LANG: Fortran SYNC: scalarevolveint } "Select boundary conditions after restricting" -SCHEDULE WaveToyExpl_FinalBoundaries AT POSTRESTRICT +SCHEDULE WaveToyExpl_FinalBoundaries IN postrestrict { LANG: Fortran SYNC: scalarevolve } "Select boundary conditions after restricting" -SCHEDULE GROUP ApplyBCs AS WaveToyExpl_ApplyBoundaries AT POSTRESTRICT AFTER (WaveToyMoL_IntBoundaries, WaveToyMoL_FinalBoundaries) +SCHEDULE GROUP ApplyBCs AS WaveToyExpl_ApplyBoundaries IN postrestrict AFTER (WaveToyMoL_IntBoundaries, WaveToyMoL_FinalBoundaries) { } "Apply boundary conditions after restricting" diff --git a/CarpetExtra/WaveToyExpl/src/finalboundaries.F77 b/CarpetExtra/WaveToyExpl/src/finalboundaries.F77 index c00960fc3..1f128821e 100644 --- a/CarpetExtra/WaveToyExpl/src/finalboundaries.F77 +++ b/CarpetExtra/WaveToyExpl/src/finalboundaries.F77 @@ -1,8 +1,8 @@ -c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyExpl/src/finalboundaries.F77,v 1.2 2003/10/27 15:31:40 schnetter Exp $ +c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyExpl/src/finalboundaries.F77,v 1.1 2003/06/18 18:24:30 schnetter Exp $ #include "cctk.h" #include "cctk_Arguments.h" -#include "cctk_Functions.h" +#include "cctk_Faces.h" #include "cctk_Parameters.h" subroutine WaveToyExpl_FinalBoundaries (CCTK_ARGUMENTS) @@ -10,6 +10,8 @@ c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyExpl/src/finalb DECLARE_CCTK_ARGUMENTS DECLARE_CCTK_FUNCTIONS DECLARE_CCTK_PARAMETERS + external Boundary_SelectGroupForBC + CCTK_INT Boundary_SelectGroupForBC CCTK_INT bndwidth parameter (bndwidth = 1) character fbound*100 diff --git a/CarpetExtra/WaveToyExpl/src/finalstep.F77 b/CarpetExtra/WaveToyExpl/src/finalstep.F77 index b4304d60e..39c19b42e 100644 --- a/CarpetExtra/WaveToyExpl/src/finalstep.F77 +++ b/CarpetExtra/WaveToyExpl/src/finalstep.F77 @@ -1,8 +1,7 @@ -c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyExpl/src/finalstep.F77,v 1.2 2003/10/27 15:31:40 schnetter Exp $ +c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyExpl/src/finalstep.F77,v 1.1 2003/06/18 18:24:30 schnetter Exp $ #include "cctk.h" #include "cctk_Arguments.h" -#include "cctk_Functions.h" #include "cctk_Parameters.h" subroutine WaveToyExpl_FinalStep (CCTK_ARGUMENTS) diff --git a/CarpetExtra/WaveToyExpl/src/initsymbound.F77 b/CarpetExtra/WaveToyExpl/src/initsymbound.F77 index 2f4f182fc..5237b2644 100644 --- a/CarpetExtra/WaveToyExpl/src/initsymbound.F77 +++ b/CarpetExtra/WaveToyExpl/src/initsymbound.F77 @@ -1,8 +1,7 @@ -c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyExpl/src/initsymbound.F77,v 1.2 2003/10/27 15:31:40 schnetter Exp $ +c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyExpl/src/initsymbound.F77,v 1.1 2003/06/18 18:24:30 schnetter Exp $ #include "cctk.h" #include "cctk_Arguments.h" -#include "cctk_Functions.h" #include "cctk_Parameters.h" subroutine WaveToyExpl_InitSymBound (CCTK_ARGUMENTS) diff --git a/CarpetExtra/WaveToyExpl/src/intboundaries.F77 b/CarpetExtra/WaveToyExpl/src/intboundaries.F77 index 838729f73..b5263c267 100644 --- a/CarpetExtra/WaveToyExpl/src/intboundaries.F77 +++ b/CarpetExtra/WaveToyExpl/src/intboundaries.F77 @@ -1,8 +1,8 @@ -c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyExpl/src/intboundaries.F77,v 1.3 2003/11/05 16:18:40 schnetter Exp $ +c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyExpl/src/intboundaries.F77,v 1.1 2003/06/18 18:24:30 schnetter Exp $ #include "cctk.h" #include "cctk_Arguments.h" -#include "cctk_Functions.h" +#include "cctk_Faces.h" #include "cctk_Parameters.h" subroutine WaveToyExpl_IntBoundaries (CCTK_ARGUMENTS) @@ -10,6 +10,8 @@ c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyExpl/src/intbou DECLARE_CCTK_ARGUMENTS DECLARE_CCTK_FUNCTIONS DECLARE_CCTK_PARAMETERS + external Boundary_SelectGroupForBC + CCTK_INT Boundary_SelectGroupForBC CCTK_INT bndwidth parameter (bndwidth = 1) character fbound*100 diff --git a/CarpetExtra/WaveToyExpl/src/intinit.F77 b/CarpetExtra/WaveToyExpl/src/intinit.F77 index b2ebbaea2..58b406dec 100644 --- a/CarpetExtra/WaveToyExpl/src/intinit.F77 +++ b/CarpetExtra/WaveToyExpl/src/intinit.F77 @@ -1,8 +1,7 @@ -c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyExpl/src/intinit.F77,v 1.2 2003/10/27 15:31:40 schnetter Exp $ +c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyExpl/src/intinit.F77,v 1.1 2003/06/18 18:24:30 schnetter Exp $ #include "cctk.h" #include "cctk_Arguments.h" -#include "cctk_Functions.h" #include "cctk_Parameters.h" subroutine WaveToyExpl_IntInit (CCTK_ARGUMENTS) diff --git a/CarpetExtra/WaveToyExpl/src/intstep.F77 b/CarpetExtra/WaveToyExpl/src/intstep.F77 index 909842c2a..02ecc5e75 100644 --- a/CarpetExtra/WaveToyExpl/src/intstep.F77 +++ b/CarpetExtra/WaveToyExpl/src/intstep.F77 @@ -1,8 +1,7 @@ -c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyExpl/src/intstep.F77,v 1.2 2003/10/27 15:31:40 schnetter Exp $ +c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyExpl/src/intstep.F77,v 1.1 2003/06/18 18:24:30 schnetter Exp $ #include "cctk.h" #include "cctk_Arguments.h" -#include "cctk_Functions.h" #include "cctk_Parameters.h" subroutine WaveToyExpl_IntStep (CCTK_ARGUMENTS) diff --git a/CarpetExtra/WaveToyExpl/src/startup.F77 b/CarpetExtra/WaveToyExpl/src/startup.F77 index ce33d9a1c..5dbf2c4a6 100644 --- a/CarpetExtra/WaveToyExpl/src/startup.F77 +++ b/CarpetExtra/WaveToyExpl/src/startup.F77 @@ -1,7 +1,6 @@ -c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyExpl/src/startup.F77,v 1.2 2003/10/27 15:31:40 schnetter Exp $ +c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyExpl/src/startup.F77,v 1.1 2003/06/18 18:24:30 schnetter Exp $ #include "cctk.h" -#include "cctk_Functions.h" #include "cctk_Parameters.h" subroutine WaveToyExpl_Startup diff --git a/CarpetExtra/WaveToyFO/interface.ccl b/CarpetExtra/WaveToyFO/interface.ccl index 91a6628a4..893aec679 100644 --- a/CarpetExtra/WaveToyFO/interface.ccl +++ b/CarpetExtra/WaveToyFO/interface.ccl @@ -1,24 +1,24 @@ # Interface definition for thorn WaveToyFO -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyFO/interface.ccl,v 1.4 2004/09/04 18:15:15 schnetter Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyFO/interface.ccl,v 1.1 2003/06/18 18:24:30 schnetter Exp $ IMPLEMENTS: WaveToyFO -INHERITS: grid +INHERITS: boundary grid MethodOfLines -CCTK_INT FUNCTION Boundary_SelectGroupForBC(CCTK_POINTER_TO_CONST IN GH, \ +CCTK_INT FUNCTION Boundary_SelectGroupForBC(CCTK_POINTER IN GH, \ CCTK_INT IN faces, CCTK_INT IN boundary_width, CCTK_INT IN table_handle, \ CCTK_STRING IN group_name, CCTK_STRING IN bc_name) -REQUIRES FUNCTION Boundary_SelectGroupForBC +USES FUNCTION Boundary_SelectGroupForBC CCTK_INT FUNCTION MoLRegisterEvolvedGroup(CCTK_INT IN EvolvedIndex, \ CCTK_INT IN RHSIndex) -REQUIRES FUNCTION MoLRegisterEvolvedGroup +USES FUNCTION MoLRegisterEvolvedGroup diff --git a/CarpetExtra/WaveToyFO/schedule.ccl b/CarpetExtra/WaveToyFO/schedule.ccl index 85ec91def..4b014b0b3 100644 --- a/CarpetExtra/WaveToyFO/schedule.ccl +++ b/CarpetExtra/WaveToyFO/schedule.ccl @@ -1,5 +1,5 @@ # Schedule definitions for thorn WaveToyFO -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyFO/schedule.ccl,v 1.6 2004/05/06 14:21:18 schnetter Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyFO/schedule.ccl,v 1.1 2003/06/18 18:24:30 schnetter Exp $ STORAGE: scalarevolve[3] STORAGE: scalarevolvedot @@ -17,7 +17,7 @@ SCHEDULE WaveToyFO_InitSymBound AT basegrid OPTIONS: global } "Schedule symmetries" -SCHEDULE WaveToyFO_RegisterVars IN MoL_Register +SCHEDULE WaveToyFO_RegisterVars IN FO_Register { LANG: Fortran OPTIONS: global @@ -25,44 +25,29 @@ SCHEDULE WaveToyFO_RegisterVars IN MoL_Register -SCHEDULE WaveToyFO_CalcRHS IN MoL_CalcRHS +SCHEDULE WaveToyFO_CalcRHS IN FO_CalcRHS { LANG: Fortran } "Calculate RHS for FO" -SCHEDULE WaveToyFO_RHSBoundaries IN MoL_CalcRHS AFTER WaveToyFO_CalcRHS -{ - LANG: Fortran - SYNC: scalarevolvedot - OPTIONS: level -} "Select RHS boundary conditions in FO" - -SCHEDULE GROUP ApplyBCs IN MoL_CalcRHS AFTER WaveToyFO_RHSBoundaries -{ -} "Apply RHSboundary conditions in FO" - - - -SCHEDULE WaveToyFO_Boundaries IN MoL_PostStep +SCHEDULE WaveToyFO_Boundaries IN FO_PostStep { LANG: Fortran SYNC: scalarevolve - OPTIONS: level } "Select boundary conditions in FO" -SCHEDULE GROUP ApplyBCs IN MoL_PostStep AFTER WaveToyFO_Boundaries +SCHEDULE GROUP ApplyBCs IN FO_PostStep AFTER WaveToyFO_Boundaries { } "Apply boundary conditions in FO" -SCHEDULE WaveToyFO_Boundaries AT POSTRESTRICT +SCHEDULE WaveToyFO_Boundaries IN postrestrict { LANG: Fortran SYNC: scalarevolve - OPTIONS: level } "Select boundary conditions after restricting" -SCHEDULE GROUP ApplyBCs AT POSTRESTRICT AFTER WaveToyFO_Boundaries +SCHEDULE GROUP ApplyBCs IN postrestrict AFTER WaveToyFO_Boundaries { } "Apply boundary conditions after restricting" diff --git a/CarpetExtra/WaveToyFO/src/boundaries.F77 b/CarpetExtra/WaveToyFO/src/boundaries.F77 index d2a0b03e2..b5ed40ddb 100644 --- a/CarpetExtra/WaveToyFO/src/boundaries.F77 +++ b/CarpetExtra/WaveToyFO/src/boundaries.F77 @@ -1,8 +1,8 @@ -c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyFO/src/boundaries.F77,v 1.3 2004/05/06 14:21:18 schnetter Exp $ +c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyFO/src/boundaries.F77,v 1.1 2003/06/18 18:24:30 schnetter Exp $ #include "cctk.h" #include "cctk_Arguments.h" -#include "cctk_Functions.h" +#include "cctk_Faces.h" #include "cctk_Parameters.h" subroutine WaveToyFO_Boundaries (CCTK_ARGUMENTS) @@ -10,6 +10,8 @@ c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyFO/src/boundari DECLARE_CCTK_ARGUMENTS DECLARE_CCTK_FUNCTIONS DECLARE_CCTK_PARAMETERS + external Boundary_SelectGroupForBC + CCTK_INT Boundary_SelectGroupForBC CCTK_INT bndwidth parameter (bndwidth = 1) character fbound*100 @@ -20,4 +22,6 @@ c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyFO/src/boundari ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, bndwidth, -1, $ "WaveToyFO::scalarevolve", fbound); if (ierr.ne.0) call CCTK_WARN (0, "internal error") + call CartSymGN (ierr, cctkGH, "WaveToyFO::scalarevolve") + if (ierr.ne.0) call CCTK_WARN (0, "internal error") end diff --git a/CarpetExtra/WaveToyFO/src/calcrhs.F77 b/CarpetExtra/WaveToyFO/src/calcrhs.F77 index 55734ed1e..46366f5bb 100644 --- a/CarpetExtra/WaveToyFO/src/calcrhs.F77 +++ b/CarpetExtra/WaveToyFO/src/calcrhs.F77 @@ -1,65 +1,23 @@ -c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyFO/src/calcrhs.F77,v 1.8 2004/08/28 19:10:33 schnetter Exp $ +c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyFO/src/calcrhs.F77,v 1.1 2003/06/18 18:24:30 schnetter Exp $ #include "cctk.h" #include "cctk_Arguments.h" -#include "cctk_Functions.h" #include "cctk_Parameters.h" - - - - function WaveToyFO_Deriv (fm2, fm1, f0, fp1, fp2, dx, dir) - implicit none - CCTK_REAL WaveToyFO_Deriv - CCTK_REAL fm2, fm1, f0, fp1, fp2 - CCTK_REAL dx - integer dir - - if (dir .eq. 0) then - WaveToyFO_Deriv = (fp1 - fm1) / (2 * dx) - else if (dir .eq. -1) then -c Use first order one-sided derivatives here. -c These are less dissipative than second order one-sided derivatives. -c (Sic.) - WaveToyFO_Deriv = (f0 - fm1) / dx -c$$$ WaveToyFO_Deriv = (+ 3*f0 - 4*fm1 + fm2) / (2*dx) - else if (dir .eq. +1) then - WaveToyFO_Deriv = (fp1 - f0) / dx -c$$$ WaveToyFO_Deriv = (- 3*f0 + 4*fp1 - fp2) / (2*dx) - else - call CCTK_WARN (0, "internal error") - end if - - end - - - -#define CHOOSEDIR(i,imin,imax) ((min(i+1,imax) - (i+1)) + (max(i-1,imin) - (i-1))) - -#define DIFFX(var,i,j,k) WaveToyFO_Deriv(var((i)-2,j,k), var((i)-1,j,k), var(i,j,k), var((i)+1,j,k), var((i)+2,j,k), dx(1), idir(1)) -#define DIFFY(var,i,j,k) WaveToyFO_Deriv(var(i,(j)-2,k), var(i,(j)-1,k), var(i,j,k), var(i,(j)+1,k), var(i,(j)+2,k), dx(2), idir(2)) -#define DIFFZ(var,i,j,k) WaveToyFO_Deriv(var(i,j,(k)-2), var(i,j,(k)-1), var(i,j,k), var(i,j,(k)+1), var(i,j,(k)+2), dx(3), idir(3)) - - - + subroutine WaveToyFO_CalcRHS (CCTK_ARGUMENTS) implicit none DECLARE_CCTK_ARGUMENTS DECLARE_CCTK_FUNCTIONS DECLARE_CCTK_PARAMETERS - CCTK_REAL dx(3) integer bndwidth(3) - integer imin(3), imax(3), idir(3) + integer imin(3), imax(3) integer i, j, k integer d - - external WaveToyFO_Deriv - CCTK_REAL WaveToyFO_Deriv - + integer ierr do d=1,3 - bndwidth(d) = 0 + bndwidth(d) = 1 end do - do d=1,3 if (cctk_bbox(2*d).ne.0) then imin(d) = 1+bndwidth(d) @@ -72,27 +30,20 @@ c$$$ WaveToyFO_Deriv = (- 3*f0 + 4*fp1 - fp2) / (2*dx) imax(d) = cctk_lsh(d)-cctk_nghostzones(d) end if end do - do d=1,3 - dx(d) = CCTK_DELTA_SPACE(d) + dx(d) = CCTK_DELTA_SPACE(3) end do - do k=imin(3),imax(3) - idir(3) = CHOOSEDIR(k,imin(3),imax(3)) do j=imin(2),imax(2) - idir(2) = CHOOSEDIR(j,imin(2),imax(2)) do i=imin(1),imax(1) - idir(1) = CHOOSEDIR(i,imin(1),imax(1)) - - phidot(i,j,k) = DIFFX (psix,i,j,k) - $ + DIFFY (psiy,i,j,k) - $ + DIFFZ (psiz,i,j,k) - psixdot(i,j,k) = DIFFX (phi,i,j,k) - psiydot(i,j,k) = DIFFY (phi,i,j,k) - psizdot(i,j,k) = DIFFZ (phi,i,j,k) - + phidot(i,j,k) = + $ ( (psix(i+1,j,k) - psix(i-1,j,k)) / (2*dx(1)) + $ + (psix(i,j+1,k) - psix(i,j-1,k)) / (2*dx(2)) + $ + (psix(i,j,k+1) - psix(i,j,k-1)) / (2*dx(3))) + psixdot(i,j,k) = (phi(i+1,j,k) - phi(i-1,j,k)) / (2*dx(1)) + psiydot(i,j,k) = (phi(i,j+1,k) - phi(i,j-1,k)) / (2*dx(2)) + psizdot(i,j,k) = (phi(i,j,k+1) - phi(i,j,k-1)) / (2*dx(3)) end do end do end do - end diff --git a/CarpetExtra/WaveToyFO/src/initsymbound.F77 b/CarpetExtra/WaveToyFO/src/initsymbound.F77 index 00ab7ef85..5c1c7eef5 100644 --- a/CarpetExtra/WaveToyFO/src/initsymbound.F77 +++ b/CarpetExtra/WaveToyFO/src/initsymbound.F77 @@ -1,8 +1,7 @@ -c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyFO/src/initsymbound.F77,v 1.2 2003/10/27 15:31:41 schnetter Exp $ +c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyFO/src/initsymbound.F77,v 1.1 2003/06/18 18:24:30 schnetter Exp $ #include "cctk.h" #include "cctk_Arguments.h" -#include "cctk_Functions.h" #include "cctk_Parameters.h" subroutine WaveToyFO_InitSymBound (CCTK_ARGUMENTS) diff --git a/CarpetExtra/WaveToyFO/src/make.code.defn b/CarpetExtra/WaveToyFO/src/make.code.defn index 6e92555b6..9251b378b 100644 --- a/CarpetExtra/WaveToyFO/src/make.code.defn +++ b/CarpetExtra/WaveToyFO/src/make.code.defn @@ -1,8 +1,8 @@ # Main make.code.defn file for thorn WaveToyFO -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyFO/src/make.code.defn,v 1.4 2004/09/04 18:15:15 schnetter Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyFO/src/make.code.defn,v 1.1 2003/06/18 18:24:30 schnetter Exp $ # Source files in this directory -SRCS = boundaries.F77 calcrhs.F77 initsymbound.F77 registervars.F77 rhsboundaries.F77 startup.F77 +SRCS = boundaries.F77 calcrhs.F77 initsymbound.F77 registervars.F77 startup.F77 # Subdirectories containing source files SUBDIRS = diff --git a/CarpetExtra/WaveToyFO/src/registervars.F77 b/CarpetExtra/WaveToyFO/src/registervars.F77 index 6f3bd41af..0f6391afe 100644 --- a/CarpetExtra/WaveToyFO/src/registervars.F77 +++ b/CarpetExtra/WaveToyFO/src/registervars.F77 @@ -1,8 +1,7 @@ -c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyFO/src/registervars.F77,v 1.2 2003/10/27 15:31:41 schnetter Exp $ +c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyFO/src/registervars.F77,v 1.1 2003/06/18 18:24:30 schnetter Exp $ #include "cctk.h" #include "cctk_Arguments.h" -#include "cctk_Functions.h" #include "cctk_Parameters.h" subroutine WaveToyFO_RegisterVars (CCTK_ARGUMENTS) @@ -10,6 +9,8 @@ c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyFO/src/register DECLARE_CCTK_ARGUMENTS DECLARE_CCTK_FUNCTIONS DECLARE_CCTK_PARAMETERS + external MolRegisterEvolvedGroup + CCTK_INT MolRegisterEvolvedGroup integer group, groupdot integer ierr call CCTK_GroupIndex(group, "WaveToyFO::scalarevolve") diff --git a/CarpetExtra/WaveToyFO/src/startup.F77 b/CarpetExtra/WaveToyFO/src/startup.F77 index ae38706af..166796537 100644 --- a/CarpetExtra/WaveToyFO/src/startup.F77 +++ b/CarpetExtra/WaveToyFO/src/startup.F77 @@ -1,7 +1,6 @@ -c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyFO/src/startup.F77,v 1.2 2003/10/27 15:31:41 schnetter Exp $ +c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyFO/src/startup.F77,v 1.1 2003/06/18 18:24:30 schnetter Exp $ #include "cctk.h" -#include "cctk_Functions.h" #include "cctk_Parameters.h" subroutine WaveToyFO_Startup diff --git a/CarpetExtra/WaveToyMoL/interface.ccl b/CarpetExtra/WaveToyMoL/interface.ccl index 65e4cb5a0..4cf1fea82 100644 --- a/CarpetExtra/WaveToyMoL/interface.ccl +++ b/CarpetExtra/WaveToyMoL/interface.ccl @@ -1,24 +1,24 @@ # Interface definition for thorn WaveToyMoL -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyMoL/interface.ccl,v 1.4 2004/05/21 17:43:57 schnetter Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyMoL/interface.ccl,v 1.1 2003/06/18 18:24:30 schnetter Exp $ IMPLEMENTS: WaveToyMoL -INHERITS: grid +INHERITS: boundary grid MethodOfLines -CCTK_INT FUNCTION Boundary_SelectGroupForBC(CCTK_POINTER_TO_CONST IN GH, \ +CCTK_INT FUNCTION Boundary_SelectGroupForBC(CCTK_POINTER IN GH, \ CCTK_INT IN faces, CCTK_INT IN boundary_width, CCTK_INT IN table_handle, \ CCTK_STRING IN group_name, CCTK_STRING IN bc_name) -REQUIRES FUNCTION Boundary_SelectGroupForBC +USES FUNCTION Boundary_SelectGroupForBC CCTK_INT FUNCTION MoLRegisterEvolvedGroup(CCTK_INT IN EvolvedIndex, \ CCTK_INT IN RHSIndex) -REQUIRES FUNCTION MoLRegisterEvolvedGroup +USES FUNCTION MoLRegisterEvolvedGroup @@ -35,8 +35,3 @@ CCTK_REAL scalarevolvedot TYPE=gf { phidot psidot } "Time derivative of the scalar field" - -CCTK_REAL scalarevolveerrorestimate TYPE=gf -{ - error -} "Error estimate" diff --git a/CarpetExtra/WaveToyMoL/par/sw1d.gnu b/CarpetExtra/WaveToyMoL/par/sw1d.gnu index 834756543..ab708d483 100644 --- a/CarpetExtra/WaveToyMoL/par/sw1d.gnu +++ b/CarpetExtra/WaveToyMoL/par/sw1d.gnu @@ -1,26 +1,4 @@ -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyMoL/par/sw1d.gnu,v 1.2 2003/06/30 17:28:51 schnetter Exp $ - -set grid - -dt=0.05 -f(x)=cos(2*pi*(x+t*dt)) - -t=200 - - -p [0:1] "sw1d_1l_0020/phi.xl" i t u 10:13 w l, "sw1d_1l_0040/phi.xl" i t u 10:13 w l, "sw1d_1l_0080/phi.xl" i t u 10:13 w l, f(x) - -p [0:1] "sw1d_1l_0020/phi.xl" i t u 10:($13-f($10)) w l, "sw1d_1l_0040/phi.xl" i t u 10:(4*($13-f($10))) w l, "sw1d_1l_0080/phi.xl" i t u 10:(16*($13-f($10))) w l - - - -p [0:1] "sw1d_2l_0020/phi.xl" i 2*t u 10:13 w l, "sw1d_2l_0040/phi.xl" i 2*t u 10:13 w l, "sw1d_2l_0080/phi.xl" i 2*t u 10:13 w l, "sw1d_2l_0160/phi.xl" i 2*t u 10:13 w l, "sw1d_2l_0320/phi.xl" i 2*t u 10:13 w l, f(x) - -p [0:1] "sw1d_2l_0020/phi.xl" i 2*t u 10:($13-f($10)) w l, "sw1d_2l_0040/phi.xl" i 2*t u 10:(4*($13-f($10))) w l, "sw1d_2l_0080/phi.xl" i 2*t u 10:(16*($13-f($10))) w l, "sw1d_2l_0160/phi.xl" i 2*t u 10:(64*($13-f($10))) w l, "sw1d_2l_0320/phi.xl" i 2*t u 10:(256*($13-f($10))) w l - - - - +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyMoL/par/sw1d.gnu,v 1.1 2003/06/18 18:24:31 schnetter Exp $ set grid diff --git a/CarpetExtra/WaveToyMoL/par/sw1d_1l_0020.par b/CarpetExtra/WaveToyMoL/par/sw1d_1l_0020.par index 7cd2fb167..3fcee519c 100644 --- a/CarpetExtra/WaveToyMoL/par/sw1d_1l_0020.par +++ b/CarpetExtra/WaveToyMoL/par/sw1d_1l_0020.par @@ -1,15 +1,23 @@ -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyMoL/par/sw1d_1l_0020.par,v 1.4 2004/07/07 16:15:31 tradke Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyMoL/par/sw1d_1l_0020.par,v 1.1 2003/06/18 18:24:31 schnetter Exp $ Cactus::cctk_initial_time = 0 Cactus::cctk_itlast = 3200 -ActiveThorns = "IOUtil Carpet CarpetLib CarpetRegrid CarpetInterp CarpetReduce CarpetSlab" +ActiveThorns = "LocalInterp NaNChecker Slab" + +NaNChecker::check_every = 32 +NaNChecker::check_vars = "all" +NaNChecker::action_if_found = terminate + + + +ActiveThorns = "Carpet CarpetLib CarpetRegrid CarpetInterp CarpetReduce CarpetSlab" driver::global_nx = 24 -driver::global_ny = 5 -driver::global_nz = 5 +driver::global_ny = 7 +driver::global_nz = 7 driver::ghost_size = 2 #Carpet::verbose = yes @@ -24,20 +32,12 @@ Carpet::init_each_timelevel = yes CarpetRegrid::refinement_levels = 1 CarpetRegrid::refined_regions = manual-gridpoint-list -CarpetRegrid::gridpoints = "[[ ([28,4,4]:[68,12,12]:[2,2,2]) ]]" +CarpetRegrid::gridpoints = "[[ ([28,6,6]:[68,16,16]:[2,2,2]) ]]" CarpetRegrid::outerbounds = "[[ [[0,0],[1,1],[1,1]] ]]" -ActiveThorns = "LocalInterp NaNChecker Slab" - -NaNChecker::check_every = 16 -NaNChecker::check_vars = "all" -NaNChecker::action_if_found = terminate - - - -ActiveThorns = "Boundary CoordBase SymBase CartGrid3D Periodic" +ActiveThorns = "Boundary CartGrid3D Periodic" grid::domain = full grid::type = byrange @@ -77,7 +77,7 @@ IDScalarWaveMoL::wave_number[0] = 1.0 -ActiveThorns = "IOBasic CarpetIOASCII" +ActiveThorns = "IOUtil IOBasic CarpetIOASCII" IO::out_dir = "sw1d_1l_0020" diff --git a/CarpetExtra/WaveToyMoL/par/sw1d_1l_0040.par b/CarpetExtra/WaveToyMoL/par/sw1d_1l_0040.par index 9c9f93248..aa73052ce 100644 --- a/CarpetExtra/WaveToyMoL/par/sw1d_1l_0040.par +++ b/CarpetExtra/WaveToyMoL/par/sw1d_1l_0040.par @@ -1,11 +1,19 @@ -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyMoL/par/sw1d_1l_0040.par,v 1.4 2004/07/07 16:15:31 tradke Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyMoL/par/sw1d_1l_0040.par,v 1.1 2003/06/18 18:24:31 schnetter Exp $ Cactus::cctk_initial_time = 0 Cactus::cctk_itlast = 6400 -ActiveThorns = "IOUtil Carpet CarpetLib CarpetRegrid CarpetInterp CarpetReduce CarpetSlab" +ActiveThorns = "LocalInterp NaNChecker Slab" + +NaNChecker::check_every = 64 +NaNChecker::check_vars = "all" +NaNChecker::action_if_found = terminate + + + +ActiveThorns = "Carpet CarpetLib CarpetRegrid CarpetInterp CarpetReduce CarpetSlab" driver::global_nx = 44 driver::global_ny = 5 @@ -29,15 +37,7 @@ CarpetRegrid::outerbounds = "[[ [[0,0],[1,1],[1,1]] ]]" -ActiveThorns = "LocalInterp NaNChecker Slab" - -NaNChecker::check_every = 32 -NaNChecker::check_vars = "all" -NaNChecker::action_if_found = terminate - - - -ActiveThorns = "Boundary CoordBase SymBase CartGrid3D Periodic" +ActiveThorns = "Boundary CartGrid3D Periodic" grid::domain = full grid::type = byrange @@ -77,23 +77,23 @@ IDScalarWaveMoL::wave_number[0] = 1.0 -ActiveThorns = "IOBasic CarpetIOASCII" +ActiveThorns = "IOUtil IOBasic CarpetIOASCII" IO::out_dir = "sw1d_1l_0040" -IOBasic::outInfo_every = 32 +IOBasic::outInfo_every = 64 IOBasic::outInfo_vars = "WaveToyMoL::phi IDScalarWaveMoL::phierror" -IOBasic::outScalar_every = 32 +IOBasic::outScalar_every = 64 IOBasic::outScalar_reductions = "minimum maximum norm1 norm2 norm_inf" IOBasic::outScalar_vars = "WaveToyMoL::scalarevolve IDScalarWaveMoL::scalarevolveerror" #IOASCII::output_all_timelevels = yes -IOASCII::out1D_every = 32 +IOASCII::out1D_every = 64 IO::out_yline_x = 0.5 IO::out_zline_x = 0.5 IOASCII::out1D_vars = "WaveToyMoL::scalarevolve IDScalarWaveMoL::scalarevolveerror" -#IOASCII::out3D_every = 32 +#IOASCII::out3D_every = 64 #IOASCII::out3D_vars = "WaveToyMoL::scalarevolve IDScalarWaveMoL::scalarevolveerror" diff --git a/CarpetExtra/WaveToyMoL/par/sw1d_1l_0080.par b/CarpetExtra/WaveToyMoL/par/sw1d_1l_0080.par index c8a040c7c..62164e592 100644 --- a/CarpetExtra/WaveToyMoL/par/sw1d_1l_0080.par +++ b/CarpetExtra/WaveToyMoL/par/sw1d_1l_0080.par @@ -1,11 +1,19 @@ -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyMoL/par/sw1d_1l_0080.par,v 1.4 2004/07/07 16:15:31 tradke Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyMoL/par/sw1d_1l_0080.par,v 1.1 2003/06/18 18:24:31 schnetter Exp $ Cactus::cctk_initial_time = 0 Cactus::cctk_itlast = 12800 -ActiveThorns = "IOUtil Carpet CarpetLib CarpetRegrid CarpetInterp CarpetReduce CarpetSlab" +ActiveThorns = "LocalInterp NaNChecker Slab" + +NaNChecker::check_every = 128 +NaNChecker::check_vars = "all" +NaNChecker::action_if_found = terminate + + + +ActiveThorns = "Carpet CarpetLib CarpetRegrid CarpetInterp CarpetReduce CarpetSlab" driver::global_nx = 84 driver::global_ny = 5 @@ -29,15 +37,7 @@ CarpetRegrid::outerbounds = "[[ [[0,0],[1,1],[1,1]] ]]" -ActiveThorns = "LocalInterp NaNChecker Slab" - -NaNChecker::check_every = 64 -NaNChecker::check_vars = "all" -NaNChecker::action_if_found = terminate - - - -ActiveThorns = "Boundary CoordBase SymBase CartGrid3D Periodic" +ActiveThorns = "Boundary CartGrid3D Periodic" grid::domain = full grid::type = byrange @@ -77,23 +77,23 @@ IDScalarWaveMoL::wave_number[0] = 1.0 -ActiveThorns = "IOBasic CarpetIOASCII" +ActiveThorns = "IOUtil IOBasic CarpetIOASCII" IO::out_dir = "sw1d_1l_0080" -IOBasic::outInfo_every = 64 +IOBasic::outInfo_every = 128 IOBasic::outInfo_vars = "WaveToyMoL::phi IDScalarWaveMoL::phierror" -IOBasic::outScalar_every = 64 +IOBasic::outScalar_every = 128 IOBasic::outScalar_reductions = "minimum maximum norm1 norm2 norm_inf" IOBasic::outScalar_vars = "WaveToyMoL::scalarevolve IDScalarWaveMoL::scalarevolveerror" #IOASCII::output_all_timelevels = yes -IOASCII::out1D_every = 64 +IOASCII::out1D_every = 128 IO::out_yline_x = 0.5 IO::out_zline_x = 0.5 IOASCII::out1D_vars = "WaveToyMoL::scalarevolve IDScalarWaveMoL::scalarevolveerror" -#IOASCII::out3D_every = 64 +#IOASCII::out3D_every = 128 #IOASCII::out3D_vars = "WaveToyMoL::scalarevolve IDScalarWaveMoL::scalarevolveerror" diff --git a/CarpetExtra/WaveToyMoL/par/sw1d_2l_0020.par b/CarpetExtra/WaveToyMoL/par/sw1d_2l_0020.par index 13f2de3ee..def16c101 100644 --- a/CarpetExtra/WaveToyMoL/par/sw1d_2l_0020.par +++ b/CarpetExtra/WaveToyMoL/par/sw1d_2l_0020.par @@ -1,11 +1,19 @@ -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyMoL/par/sw1d_2l_0020.par,v 1.5 2004/07/07 16:15:31 tradke Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyMoL/par/sw1d_2l_0020.par,v 1.1 2003/06/18 18:24:31 schnetter Exp $ Cactus::cctk_initial_time = 0 Cactus::cctk_itlast = 3200 -ActiveThorns = "IOUtil Carpet CarpetLib CarpetRegrid CarpetInterp CarpetReduce CarpetSlab" +ActiveThorns = "LocalInterp NaNChecker Slab" + +NaNChecker::check_every = 32 +NaNChecker::check_vars = "all" +NaNChecker::action_if_found = terminate + + + +ActiveThorns = "Carpet CarpetLib CarpetRegrid CarpetInterp CarpetReduce CarpetSlab" driver::global_nx = 24 driver::global_ny = 5 @@ -24,20 +32,12 @@ Carpet::init_each_timelevel = yes CarpetRegrid::refinement_levels = 2 CarpetRegrid::refined_regions = manual-gridpoint-list -CarpetRegrid::gridpoints = "[[ ([30,4,4]:[66,12,12]:[2,2,2]) ]]" +CarpetRegrid::gridpoints = "[[ ([28,4,4]:[68,12,12]:[2,2,2]) ]]" CarpetRegrid::outerbounds = "[[ [[0,0],[1,1],[1,1]] ]]" -ActiveThorns = "LocalInterp NaNChecker Slab" - -NaNChecker::check_every = 16 -NaNChecker::check_vars = "all" -NaNChecker::action_if_found = terminate - - - -ActiveThorns = "Boundary CoordBase SymBase CartGrid3D Periodic" +ActiveThorns = "Boundary CartGrid3D Periodic" grid::domain = full grid::type = byrange @@ -77,23 +77,23 @@ IDScalarWaveMoL::wave_number[0] = 1.0 -ActiveThorns = "IOBasic CarpetIOASCII" +ActiveThorns = "IOUtil IOBasic CarpetIOASCII" IO::out_dir = "sw1d_2l_0020" -IOBasic::outInfo_every = 16 +IOBasic::outInfo_every = 32 IOBasic::outInfo_vars = "WaveToyMoL::phi IDScalarWaveMoL::phierror" -IOBasic::outScalar_every = 16 +IOBasic::outScalar_every = 32 IOBasic::outScalar_reductions = "minimum maximum norm1 norm2 norm_inf" IOBasic::outScalar_vars = "WaveToyMoL::scalarevolve IDScalarWaveMoL::scalarevolveerror" #IOASCII::output_all_timelevels = yes -IOASCII::out1D_every = 16 +IOASCII::out1D_every = 32 IO::out_yline_x = 0.5 IO::out_zline_x = 0.5 IOASCII::out1D_vars = "WaveToyMoL::scalarevolve IDScalarWaveMoL::scalarevolveerror" -#IOASCII::out3D_every = 16 +#IOASCII::out3D_every = 32 #IOASCII::out3D_vars = "WaveToyMoL::scalarevolve IDScalarWaveMoL::scalarevolveerror" diff --git a/CarpetExtra/WaveToyMoL/par/sw1d_2l_0040.par b/CarpetExtra/WaveToyMoL/par/sw1d_2l_0040.par index 5f215164d..ddd962a72 100644 --- a/CarpetExtra/WaveToyMoL/par/sw1d_2l_0040.par +++ b/CarpetExtra/WaveToyMoL/par/sw1d_2l_0040.par @@ -1,11 +1,19 @@ -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyMoL/par/sw1d_2l_0040.par,v 1.6 2004/07/07 16:15:31 tradke Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyMoL/par/sw1d_2l_0040.par,v 1.1 2003/06/18 18:24:31 schnetter Exp $ Cactus::cctk_initial_time = 0 Cactus::cctk_itlast = 6400 -ActiveThorns = "IOUtil Carpet CarpetLib CarpetRegrid CarpetInterp CarpetReduce CarpetSlab" +ActiveThorns = "LocalInterp NaNChecker Slab" + +NaNChecker::check_every = 64 +NaNChecker::check_vars = "all" +NaNChecker::action_if_found = terminate + + + +ActiveThorns = "Carpet CarpetLib CarpetRegrid CarpetInterp CarpetReduce CarpetSlab" driver::global_nx = 44 driver::global_ny = 5 @@ -24,21 +32,11 @@ Carpet::init_each_timelevel = yes CarpetRegrid::refinement_levels = 2 CarpetRegrid::refined_regions = manual-gridpoint-list -CarpetRegrid::gridpoints = "[[ ([50,4,4]:[126,12,12]:[2,2,2]) ]]" +CarpetRegrid::gridpoints = "[[ ([48,4,4]:[128,12,12]:[2,2,2]) ]]" CarpetRegrid::outerbounds = "[[ [[0,0],[1,1],[1,1]] ]]" -ActiveThorns = "CoordBase LocalInterp Slab SymBase" - -ActiveThorns = "NaNChecker" - -NaNChecker::check_every = 32 -NaNChecker::check_vars = "all" -NaNChecker::action_if_found = terminate - - - ActiveThorns = "Boundary CartGrid3D Periodic" grid::domain = full @@ -72,28 +70,30 @@ IDScalarWaveMoL::wave_number[0] = 1.0 #ActiveThorns = "Dissipation" - +# +#Dissipation::epsdis = 0.1 +#Dissipation::timelevel = "n+1" #Dissipation::vars = "WaveToyMoL::scalarevolve" -ActiveThorns = "IOBasic CarpetIOASCII" +ActiveThorns = "IOUtil IOBasic CarpetIOASCII" IO::out_dir = "sw1d_2l_0040" -IOBasic::outInfo_every = 32 +IOBasic::outInfo_every = 64 IOBasic::outInfo_vars = "WaveToyMoL::phi IDScalarWaveMoL::phierror" -IOBasic::outScalar_every = 32 +IOBasic::outScalar_every = 64 IOBasic::outScalar_reductions = "minimum maximum norm1 norm2 norm_inf" IOBasic::outScalar_vars = "WaveToyMoL::scalarevolve IDScalarWaveMoL::scalarevolveerror" #IOASCII::output_all_timelevels = yes -IOASCII::out1D_every = 32 +IOASCII::out1D_every = 64 IO::out_yline_x = 0.5 IO::out_zline_x = 0.5 IOASCII::out1D_vars = "WaveToyMoL::scalarevolve IDScalarWaveMoL::scalarevolveerror" -#IOASCII::out3D_every = 32 +#IOASCII::out3D_every = 64 #IOASCII::out3D_vars = "WaveToyMoL::scalarevolve IDScalarWaveMoL::scalarevolveerror" diff --git a/CarpetExtra/WaveToyMoL/par/sw1d_2l_0080.par b/CarpetExtra/WaveToyMoL/par/sw1d_2l_0080.par index 5bfcdf1cc..a5ea971e1 100644 --- a/CarpetExtra/WaveToyMoL/par/sw1d_2l_0080.par +++ b/CarpetExtra/WaveToyMoL/par/sw1d_2l_0080.par @@ -1,11 +1,19 @@ -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyMoL/par/sw1d_2l_0080.par,v 1.5 2004/07/07 16:15:31 tradke Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyMoL/par/sw1d_2l_0080.par,v 1.1 2003/06/18 18:24:31 schnetter Exp $ Cactus::cctk_initial_time = 0 Cactus::cctk_itlast = 12800 -ActiveThorns = "IOUtil Carpet CarpetLib CarpetRegrid CarpetInterp CarpetReduce CarpetSlab" +ActiveThorns = "LocalInterp NaNChecker Slab" + +NaNChecker::check_every = 128 +NaNChecker::check_vars = "all" +NaNChecker::action_if_found = terminate + + + +ActiveThorns = "Carpet CarpetLib CarpetRegrid CarpetInterp CarpetReduce CarpetSlab" driver::global_nx = 84 driver::global_ny = 5 @@ -24,20 +32,12 @@ Carpet::init_each_timelevel = yes CarpetRegrid::refinement_levels = 2 CarpetRegrid::refined_regions = manual-gridpoint-list -CarpetRegrid::gridpoints = "[[ ([90,4,4]:[246,12,12]:[2,2,2]) ]]" +CarpetRegrid::gridpoints = "[[ ([88,4,4]:[248,12,12]:[2,2,2]) ]]" CarpetRegrid::outerbounds = "[[ [[0,0],[1,1],[1,1]] ]]" -ActiveThorns = "LocalInterp NaNChecker Slab" - -NaNChecker::check_every = 64 -NaNChecker::check_vars = "all" -NaNChecker::action_if_found = terminate - - - -ActiveThorns = "Boundary CoordBase SymBase CartGrid3D Periodic" +ActiveThorns = "Boundary CartGrid3D Periodic" grid::domain = full grid::type = byrange @@ -77,23 +77,23 @@ IDScalarWaveMoL::wave_number[0] = 1.0 -ActiveThorns = "IOBasic CarpetIOASCII" +ActiveThorns = "IOUtil IOBasic CarpetIOASCII" IO::out_dir = "sw1d_2l_0080" -IOBasic::outInfo_every = 64 +IOBasic::outInfo_every = 128 IOBasic::outInfo_vars = "WaveToyMoL::phi IDScalarWaveMoL::phierror" -IOBasic::outScalar_every = 64 +IOBasic::outScalar_every = 128 IOBasic::outScalar_reductions = "minimum maximum norm1 norm2 norm_inf" IOBasic::outScalar_vars = "WaveToyMoL::scalarevolve IDScalarWaveMoL::scalarevolveerror" #IOASCII::output_all_timelevels = yes -IOASCII::out1D_every = 64 +IOASCII::out1D_every = 128 IO::out_yline_x = 0.5 IO::out_zline_x = 0.5 IOASCII::out1D_vars = "WaveToyMoL::scalarevolve IDScalarWaveMoL::scalarevolveerror" -#IOASCII::out3D_every = 64 +#IOASCII::out3D_every = 128 #IOASCII::out3D_vars = "WaveToyMoL::scalarevolve IDScalarWaveMoL::scalarevolveerror" diff --git a/CarpetExtra/WaveToyMoL/par/sw1d_2l_0160.par b/CarpetExtra/WaveToyMoL/par/sw1d_2l_0160.par index c47ead004..3ce5d2885 100644 --- a/CarpetExtra/WaveToyMoL/par/sw1d_2l_0160.par +++ b/CarpetExtra/WaveToyMoL/par/sw1d_2l_0160.par @@ -1,11 +1,19 @@ -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyMoL/par/sw1d_2l_0160.par,v 1.5 2004/07/07 16:15:31 tradke Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyMoL/par/sw1d_2l_0160.par,v 1.1 2003/06/18 18:24:31 schnetter Exp $ Cactus::cctk_initial_time = 0 Cactus::cctk_itlast = 25600 -ActiveThorns = "IOUtil Carpet CarpetLib CarpetRegrid CarpetInterp CarpetReduce CarpetSlab" +ActiveThorns = "LocalInterp NaNChecker Slab" + +NaNChecker::check_every = 256 +NaNChecker::check_vars = "all" +NaNChecker::action_if_found = terminate + + + +ActiveThorns = "Carpet CarpetLib CarpetRegrid CarpetInterp CarpetReduce CarpetSlab" driver::global_nx = 164 driver::global_ny = 5 @@ -24,20 +32,12 @@ Carpet::init_each_timelevel = yes CarpetRegrid::refinement_levels = 2 CarpetRegrid::refined_regions = manual-gridpoint-list -CarpetRegrid::gridpoints = "[[ ([170,4,4]:[486,12,12]:[2,2,2]) ]]" +CarpetRegrid::gridpoints = "[[ ([168,4,4]:[488,12,12]:[2,2,2]) ]]" CarpetRegrid::outerbounds = "[[ [[0,0],[1,1],[1,1]] ]]" -ActiveThorns = "LocalInterp NaNChecker Slab" - -NaNChecker::check_every = 128 -NaNChecker::check_vars = "all" -NaNChecker::action_if_found = terminate - - - -ActiveThorns = "Boundary CoordBase SymBase CartGrid3D Periodic" +ActiveThorns = "Boundary CartGrid3D Periodic" grid::domain = full grid::type = byrange @@ -77,23 +77,23 @@ IDScalarWaveMoL::wave_number[0] = 1.0 -ActiveThorns = "IOBasic CarpetIOASCII" +ActiveThorns = "IOUtil IOBasic CarpetIOASCII" IO::out_dir = "sw1d_2l_0160" -IOBasic::outInfo_every = 128 +IOBasic::outInfo_every = 256 IOBasic::outInfo_vars = "WaveToyMoL::phi IDScalarWaveMoL::phierror" -IOBasic::outScalar_every = 128 +IOBasic::outScalar_every = 256 IOBasic::outScalar_reductions = "minimum maximum norm1 norm2 norm_inf" IOBasic::outScalar_vars = "WaveToyMoL::scalarevolve IDScalarWaveMoL::scalarevolveerror" #IOASCII::output_all_timelevels = yes -IOASCII::out1D_every = 128 +IOASCII::out1D_every = 256 IO::out_yline_x = 0.5 IO::out_zline_x = 0.5 IOASCII::out1D_vars = "WaveToyMoL::scalarevolve IDScalarWaveMoL::scalarevolveerror" -#IOASCII::out3D_every = 128 +#IOASCII::out3D_every = 256 #IOASCII::out3D_vars = "WaveToyMoL::scalarevolve IDScalarWaveMoL::scalarevolveerror" diff --git a/CarpetExtra/WaveToyMoL/par/sw1d_2l_0320.par b/CarpetExtra/WaveToyMoL/par/sw1d_2l_0320.par index 4836c42b9..fefe6be21 100644 --- a/CarpetExtra/WaveToyMoL/par/sw1d_2l_0320.par +++ b/CarpetExtra/WaveToyMoL/par/sw1d_2l_0320.par @@ -1,11 +1,19 @@ -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyMoL/par/sw1d_2l_0320.par,v 1.5 2004/07/07 16:15:31 tradke Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyMoL/par/sw1d_2l_0320.par,v 1.1 2003/06/18 18:24:31 schnetter Exp $ Cactus::cctk_initial_time = 0 Cactus::cctk_itlast = 51200 -ActiveThorns = "IOUtil Carpet CarpetLib CarpetRegrid CarpetInterp CarpetReduce CarpetSlab" +ActiveThorns = "LocalInterp NaNChecker Slab" + +NaNChecker::check_every = 512 +NaNChecker::check_vars = "all" +NaNChecker::action_if_found = terminate + + + +ActiveThorns = "Carpet CarpetLib CarpetRegrid CarpetInterp CarpetReduce CarpetSlab" driver::global_nx = 324 driver::global_ny = 5 @@ -24,20 +32,12 @@ Carpet::init_each_timelevel = yes CarpetRegrid::refinement_levels = 2 CarpetRegrid::refined_regions = manual-gridpoint-list -CarpetRegrid::gridpoints = "[[ ([330,4,4]:[966,12,12]:[2,2,2]) ]]" +CarpetRegrid::gridpoints = "[[ ([328,4,4]:[968,12,12]:[2,2,2]) ]]" CarpetRegrid::outerbounds = "[[ [[0,0],[1,1],[1,1]] ]]" -ActiveThorns = "LocalInterp NaNChecker Slab" - -NaNChecker::check_every = 256 -NaNChecker::check_vars = "all" -NaNChecker::action_if_found = terminate - - - -ActiveThorns = "Boundary CoordBase SymBase CartGrid3D Periodic" +ActiveThorns = "Boundary CartGrid3D Periodic" grid::domain = full grid::type = byrange @@ -77,23 +77,23 @@ IDScalarWaveMoL::wave_number[0] = 1.0 -ActiveThorns = "IOBasic CarpetIOASCII" +ActiveThorns = "IOUtil IOBasic CarpetIOASCII" IO::out_dir = "sw1d_2l_0320" -IOBasic::outInfo_every = 256 +IOBasic::outInfo_every = 512 IOBasic::outInfo_vars = "WaveToyMoL::phi IDScalarWaveMoL::phierror" -IOBasic::outScalar_every = 256 +IOBasic::outScalar_every = 512 IOBasic::outScalar_reductions = "minimum maximum norm1 norm2 norm_inf" IOBasic::outScalar_vars = "WaveToyMoL::scalarevolve IDScalarWaveMoL::scalarevolveerror" #IOASCII::output_all_timelevels = yes -IOASCII::out1D_every = 256 +IOASCII::out1D_every = 512 IO::out_yline_x = 0.5 IO::out_zline_x = 0.5 IOASCII::out1D_vars = "WaveToyMoL::scalarevolve IDScalarWaveMoL::scalarevolveerror" -#IOASCII::out3D_every = 256 +#IOASCII::out3D_every = 512 #IOASCII::out3D_vars = "WaveToyMoL::scalarevolve IDScalarWaveMoL::scalarevolveerror" diff --git a/CarpetExtra/WaveToyMoL/param.ccl b/CarpetExtra/WaveToyMoL/param.ccl index 37879c4d8..f4c10772a 100644 --- a/CarpetExtra/WaveToyMoL/param.ccl +++ b/CarpetExtra/WaveToyMoL/param.ccl @@ -1,5 +1,5 @@ # Parameter definitions for thorn WaveToyMoL -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyMoL/param.ccl,v 1.2 2004/04/07 17:08:21 schnetter Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyMoL/param.ccl,v 1.1 2003/06/18 18:24:30 schnetter Exp $ SHARES: MethodOfLines @@ -18,7 +18,3 @@ STRING bound "Type of boundary condition to use" { .* :: "must be a registered boundary condition" } "None" - -BOOLEAN estimate_error "Estimate the truncation error" -{ -} "no" diff --git a/CarpetExtra/WaveToyMoL/schedule.ccl b/CarpetExtra/WaveToyMoL/schedule.ccl index ffce79084..92eae59c1 100644 --- a/CarpetExtra/WaveToyMoL/schedule.ccl +++ b/CarpetExtra/WaveToyMoL/schedule.ccl @@ -1,31 +1,26 @@ # Schedule definitions for thorn WaveToyMoL -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyMoL/schedule.ccl,v 1.5 2004/04/07 17:08:21 schnetter Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyMoL/schedule.ccl,v 1.1 2003/06/18 18:24:30 schnetter Exp $ STORAGE: scalarevolve[3] STORAGE: scalarevolvedot -if (estimate_error) { - STORAGE: scalarevolveerrorestimate -} - SCHEDULE WaveToyMol_Startup AT startup { LANG: Fortran - OPTIONS: meta } "Register banner" SCHEDULE WaveToyMoL_InitSymBound AT basegrid { LANG: Fortran - OPTIONS: meta + OPTIONS: global } "Schedule symmetries" SCHEDULE WaveToyMoL_RegisterVars IN MoL_Register { LANG: Fortran - OPTIONS: meta + OPTIONS: global } "Register variables for MoL" @@ -38,7 +33,6 @@ SCHEDULE WaveToyMoL_CalcRHS IN MoL_CalcRHS SCHEDULE WaveToyMoL_Boundaries IN MoL_PostStep { LANG: Fortran - OPTIONS: level SYNC: scalarevolve } "Select boundary conditions in MoL" @@ -48,22 +42,12 @@ SCHEDULE GROUP ApplyBCs IN MoL_PostStep AFTER WaveToyMoL_Boundaries -if (estimate_error) { - - SCHEDULE WaveToyMoL_EstimateError AT poststep - { - LANG: Fortran - } "Estimate the truncation error" - - SCHEDULE WaveToyMoL_EstimateErrorBoundaries AT poststep AFTER WaveToyMoL_EstimateError - { - LANG: Fortran - OPTIONS: level - SYNC: scalarevolveerrorestimate - } "Select boundary conditions for the truncation error" - - SCHEDULE GROUP ApplyBCs AT poststep AFTER WaveToyMoL_EstimateError - { - } "Apply boundary conditions" - -} +SCHEDULE WaveToyMoL_Boundaries IN postrestrict +{ + LANG: Fortran + SYNC: scalarevolve +} "Select boundary conditions after restricting" + +SCHEDULE GROUP ApplyBCs IN postrestrict AFTER WaveToyMoL_Boundaries +{ +} "Apply boundary conditions after restricting" diff --git a/CarpetExtra/WaveToyMoL/src/boundaries.F77 b/CarpetExtra/WaveToyMoL/src/boundaries.F77 index 6b86f6383..64ad28fca 100644 --- a/CarpetExtra/WaveToyMoL/src/boundaries.F77 +++ b/CarpetExtra/WaveToyMoL/src/boundaries.F77 @@ -1,8 +1,8 @@ -c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyMoL/src/boundaries.F77,v 1.3 2004/04/07 17:08:21 schnetter Exp $ +c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyMoL/src/boundaries.F77,v 1.1 2003/06/18 18:24:31 schnetter Exp $ #include "cctk.h" #include "cctk_Arguments.h" -#include "cctk_Functions.h" +#include "cctk_Faces.h" #include "cctk_Parameters.h" subroutine WaveToyMoL_Boundaries (CCTK_ARGUMENTS) @@ -10,6 +10,8 @@ c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyMoL/src/boundar DECLARE_CCTK_ARGUMENTS DECLARE_CCTK_FUNCTIONS DECLARE_CCTK_PARAMETERS + external Boundary_SelectGroupForBC + CCTK_INT Boundary_SelectGroupForBC CCTK_INT bndwidth parameter (bndwidth = 1) character fbound*100 @@ -20,4 +22,6 @@ c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyMoL/src/boundar ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, bndwidth, -1, $ "WaveToyMoL::scalarevolve", fbound); if (ierr.ne.0) call CCTK_WARN (0, "internal error") + call CartSymGN (ierr, cctkGH, "WaveToyMoL::scalarevolve") + if (ierr.ne.0) call CCTK_WARN (0, "internal error") end diff --git a/CarpetExtra/WaveToyMoL/src/calcrhs.F77 b/CarpetExtra/WaveToyMoL/src/calcrhs.F77 index b3df37eb2..777979b81 100644 --- a/CarpetExtra/WaveToyMoL/src/calcrhs.F77 +++ b/CarpetExtra/WaveToyMoL/src/calcrhs.F77 @@ -1,8 +1,7 @@ -c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyMoL/src/calcrhs.F77,v 1.3 2003/10/27 15:31:41 schnetter Exp $ +c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyMoL/src/calcrhs.F77,v 1.1 2003/06/18 18:24:31 schnetter Exp $ #include "cctk.h" #include "cctk_Arguments.h" -#include "cctk_Functions.h" #include "cctk_Parameters.h" subroutine WaveToyMoL_CalcRHS (CCTK_ARGUMENTS) @@ -10,15 +9,26 @@ c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyMoL/src/calcrhs DECLARE_CCTK_ARGUMENTS DECLARE_CCTK_FUNCTIONS DECLARE_CCTK_PARAMETERS - CCTK_INT bndwidth - parameter (bndwidth = 1) - integer imin(3), imax(3) CCTK_REAL dx(3) + integer bndwidth(3) + integer imin(3), imax(3) integer i, j, k integer d + integer ierr + do d=1,3 + bndwidth(d) = 1 + end do do d=1,3 - imin(d) = 1+bndwidth - imax(d) = cctk_lsh(d)-bndwidth + if (cctk_bbox(2*d).ne.0) then + imin(d) = 1+bndwidth(d) + else + imin(d) = 1+cctk_nghostzones(d) + end if + if (cctk_bbox(2*d+1).ne.0) then + imax(d) = cctk_lsh(d)-bndwidth(d) + else + imax(d) = cctk_lsh(d)-cctk_nghostzones(d) + end if end do do d=1,3 dx(d) = CCTK_DELTA_SPACE(3) diff --git a/CarpetExtra/WaveToyMoL/src/initsymbound.F77 b/CarpetExtra/WaveToyMoL/src/initsymbound.F77 index 554eb16f0..af12a8009 100644 --- a/CarpetExtra/WaveToyMoL/src/initsymbound.F77 +++ b/CarpetExtra/WaveToyMoL/src/initsymbound.F77 @@ -1,8 +1,7 @@ -c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyMoL/src/initsymbound.F77,v 1.3 2004/04/07 17:08:21 schnetter Exp $ +c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyMoL/src/initsymbound.F77,v 1.1 2003/06/18 18:24:31 schnetter Exp $ #include "cctk.h" #include "cctk_Arguments.h" -#include "cctk_Functions.h" #include "cctk_Parameters.h" subroutine WaveToyMoL_InitSymBound (CCTK_ARGUMENTS) @@ -20,6 +19,4 @@ c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyMoL/src/initsym if (ierr.ne.0) call CCTK_WARN (0, "internal error") call SetCartSymVN (ierr, cctkGH, sym, "WaveToyMoL::phidot") if (ierr.ne.0) call CCTK_WARN (0, "internal error") - call SetCartSymVN (ierr, cctkGH, sym, "WaveToyMoL::error") - if (ierr.ne.0) call CCTK_WARN (0, "internal error") end diff --git a/CarpetExtra/WaveToyMoL/src/make.code.defn b/CarpetExtra/WaveToyMoL/src/make.code.defn index 59782e596..969543b4a 100644 --- a/CarpetExtra/WaveToyMoL/src/make.code.defn +++ b/CarpetExtra/WaveToyMoL/src/make.code.defn @@ -1,8 +1,8 @@ # Main make.code.defn file for thorn WaveToyMoL -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyMoL/src/make.code.defn,v 1.2 2004/04/07 17:08:21 schnetter Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyMoL/src/make.code.defn,v 1.1 2003/06/18 18:24:31 schnetter Exp $ # Source files in this directory -SRCS = boundaries.F77 calcrhs.F77 estimateerror.F77 initsymbound.F77 registervars.F77 startup.F77 +SRCS = boundaries.F77 calcrhs.F77 initsymbound.F77 registervars.F77 startup.F77 # Subdirectories containing source files SUBDIRS = diff --git a/CarpetExtra/WaveToyMoL/src/registervars.F77 b/CarpetExtra/WaveToyMoL/src/registervars.F77 index 51710f60a..df31c718a 100644 --- a/CarpetExtra/WaveToyMoL/src/registervars.F77 +++ b/CarpetExtra/WaveToyMoL/src/registervars.F77 @@ -1,8 +1,7 @@ -c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyMoL/src/registervars.F77,v 1.2 2003/10/27 15:31:41 schnetter Exp $ +c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyMoL/src/registervars.F77,v 1.1 2003/06/18 18:24:31 schnetter Exp $ #include "cctk.h" #include "cctk_Arguments.h" -#include "cctk_Functions.h" #include "cctk_Parameters.h" subroutine WaveToyMoL_RegisterVars (CCTK_ARGUMENTS) @@ -10,6 +9,8 @@ c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyMoL/src/registe DECLARE_CCTK_ARGUMENTS DECLARE_CCTK_FUNCTIONS DECLARE_CCTK_PARAMETERS + external MoLRegisterEvolvedGroup + CCTK_INT MoLRegisterEvolvedGroup integer group, groupdot integer ierr call CCTK_GroupIndex(group, "wavetoymol::scalarevolve") diff --git a/CarpetExtra/WaveToyMoL/src/startup.F77 b/CarpetExtra/WaveToyMoL/src/startup.F77 index 703d0d922..82d75c57e 100644 --- a/CarpetExtra/WaveToyMoL/src/startup.F77 +++ b/CarpetExtra/WaveToyMoL/src/startup.F77 @@ -1,7 +1,6 @@ -c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyMoL/src/startup.F77,v 1.2 2003/10/27 15:31:41 schnetter Exp $ +c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyMoL/src/startup.F77,v 1.1 2003/06/18 18:24:31 schnetter Exp $ #include "cctk.h" -#include "cctk_Functions.h" #include "cctk_Parameters.h" subroutine WaveToyMoL_Startup |