diff options
author | schnetter <> | 2001-04-23 06:10:00 +0000 |
---|---|---|
committer | schnetter <> | 2001-04-23 06:10:00 +0000 |
commit | 3c8cafa058889929160d7019304b99fab0656df8 (patch) | |
tree | 46dd47a05e490ed976623074c18bcdac45787c81 | |
parent | bcf0f1685d561b33bb1b0c1e033adb4a145767d3 (diff) |
Modified the Carpet driver so that it uses the same new timelevel
Modified the Carpet driver so that it uses the same new timelevel
cycling as does PUGH.
Modified the CarpetIOASCII and CarpetIOFlexIO output routines so that
they always output the current time level.
Found and fixed a bug in the time interpolation in CarpetLib.
Fixed a bug where the necessary number of ghost zones for space
interpolation was calculated incorrectly.
Fixed bugs in the example parameter files that used an insufficient
number of ghost zones.
darcs-hash:20010423061011-07bb3-c69e59f7bc5f283d7632a663c0770578cdb73881.gz
36 files changed, 603 insertions, 497 deletions
diff --git a/Carpet/Carpet/doc/TODO b/Carpet/Carpet/doc/TODO index 2f4cfbfe2..00eba8d0a 100644 --- a/Carpet/Carpet/doc/TODO +++ b/Carpet/Carpet/doc/TODO @@ -1,5 +1,5 @@ -*-Text-*- -$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/doc/TODO,v 1.4 2001/03/30 00:50:06 eschnett Exp $ +$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/doc/TODO,v 1.5 2001/04/23 08:10:11 schnetter Exp $ CarpetSlab: Add support for diagonal lines @@ -10,3 +10,8 @@ Carpet: Distribute processes in all directions, not only z Carpet: Test suite Carpet: Finish documentation + +CarpetIOASCII: put more information into output files + +Carpet: Allow en-/disabling storage for grid functions with one time +level diff --git a/Carpet/Carpet/param.ccl b/Carpet/Carpet/param.ccl index 142e17700..f777c7292 100644 --- a/Carpet/Carpet/param.ccl +++ b/Carpet/Carpet/param.ccl @@ -1,5 +1,5 @@ # Parameter definitions for thorn Carpet -# $Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/param.ccl,v 1.8 2001/03/30 00:21:20 eschnett Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/param.ccl,v 1.9 2001/04/23 08:10:11 schnetter Exp $ shares: Cactus @@ -86,6 +86,12 @@ CCTK_INT prolongation_order_time "Order of prolongation operator in time" +BOOLEAN enable_all_storage "Enable storage for all grid functions" +{ +} "no" + + + BOOLEAN poison_new_timelevels "Try to catch uninitialised grid elements by setting new timelevels to values that will catch your attention" { } "no" diff --git a/Carpet/Carpet/src/carpet.cc b/Carpet/Carpet/src/carpet.cc index 8a6d84b13..345a61e7f 100644 --- a/Carpet/Carpet/src/carpet.cc +++ b/Carpet/Carpet/src/carpet.cc @@ -4,7 +4,7 @@ // processors own the same number of components. // Scalar variables currently exist in one single incarnation for all -// refinement levels and all components. +// components. #include <assert.h> #include <math.h> @@ -35,7 +35,7 @@ #include "carpet.hh" -static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/Attic/carpet.cc,v 1.23 2001/04/17 17:07:09 schnetter Exp $"; +static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/Attic/carpet.cc,v 1.24 2001/04/23 08:10:12 schnetter Exp $"; @@ -47,17 +47,21 @@ namespace Carpet { static void CycleTimeLevels (cGH* cgh); static void Restrict (cGH* cgh); - // where=0: all time levels but next time level - // where=1: only next time level - // but never if there is only one time level - // where=2: all time levels + enum checktimes { currenttime, + currenttimebutnotifonly, + allbutlasttime, + allbutcurrenttime, + alltimes }; - static void Poison (cGH* cgh, int where); - static void PoisonGroup (cGH* cgh, int group, int where); - static void PoisonCheck (cGH* cgh, int where); + static void Poison (cGH* cgh, checktimes where); + static void PoisonGroup (cGH* cgh, int group, checktimes where); + static void PoisonCheck (cGH* cgh, checktimes where); - static void CalculateChecksums (cGH* cgh, int where); - static void CheckChecksums (cGH* cgh, int where); + static void CalculateChecksums (cGH* cgh, checktimes where); + static void CheckChecksums (cGH* cgh, checktimes where); + + static int mintl (checktimes where, int num_tl); + static int maxtl (checktimes where, int num_tl); // Debugging output static void Checkpoint (const char* fmt, ...); @@ -76,9 +80,6 @@ namespace Carpet { // Refinement factor on finest grid int maxreflevelfact; - // Active time level - int activetimelevel; // 0 for current, 1 for next - // Current iteration per refinement level vector<int> iteration; @@ -200,7 +201,7 @@ namespace Carpet { const int prolongation_stencil_size = dd->prolongation_stencil_size(); const int min_nghosts - = ((prolongation_stencil_size + refinement_factor - 2) + = ((prolongation_stencil_size + refinement_factor - 1) / (refinement_factor-1)); if (any(min(lghosts,ughosts) < min_nghosts)) { CCTK_VWarn (0, __LINE__, __FILE__, CCTK_THORNSTRING, @@ -226,8 +227,8 @@ namespace Carpet { scdata[group].data[var].resize(maxreflevels); for (int rl=0; rl<maxreflevels; ++rl) { scdata[group].data[var][rl].resize(CCTK_NumTimeLevelsFromVarI(n)); - for (int ti=0; ti<(int)scdata[group].data[var].size(); ++ti) { - scdata[group].data[var][rl][ti] = 0; + for (int tl=0; tl<(int)scdata[group].data[var].size(); ++tl) { + scdata[group].data[var][rl][tl] = 0; } } } @@ -306,9 +307,6 @@ namespace Carpet { // Initialise time step on coarse grid base_delta_time = 0; - // Active time level - activetimelevel = 0; - // Current iteration iteration.resize(maxreflevels, 0); @@ -317,6 +315,14 @@ namespace Carpet { set_mglevel (cgh, 0); set_component (cgh, -1); + // Enable storage for all groups if desired + // XXX + if (true || enable_all_storage) { + for (int group=0; group<CCTK_NumGroups(); ++group) { + EnableGroupStorage (cgh, CCTK_GroupName(group)); + } + } + Checkpoint ("done with SetupGH."); // We register only once, ergo we get only one handle, ergo there @@ -350,32 +356,46 @@ namespace Carpet { CCTKi_InitGHExtensions (cgh); // Check parameters + Checkpoint ("PARAMCHECK"); CCTK_ScheduleTraverse ("CCTK_PARAMCHECK", cgh, CallFunction); CCTKi_FinaliseParamWarn(); BEGIN_REFLEVEL_LOOP(cgh) { - Poison (cgh, 0); + // Checking + Poison (cgh, allbutlasttime); // Set up the grid + Checkpoint ("%*sScheduling BASEGRID", 2*reflevel, ""); CCTK_ScheduleTraverse ("CCTK_BASEGRID", cgh, CallFunction); if (reflevel==0) { base_delta_time = cgh->cctk_delta_time; } else { // assert (abs(cgh->cctk_delta_time - base_delta_time / reflevelfactor) // < 1e-6 * base_delta_time); - // This fixes a bug in CactusBase/Time + // This circumvents a bug in CactusBase/Time cgh->cctk_delta_time = base_delta_time / reflevelfact; } // Set up the initial data + Checkpoint ("%*sScheduling INITIAL", 2*reflevel, ""); CCTK_ScheduleTraverse ("CCTK_INITIAL", cgh, CallFunction); + Checkpoint ("%*sScheduling POSTINITIAL", 2*reflevel, ""); CCTK_ScheduleTraverse ("CCTK_POSTINITIAL", cgh, CallFunction); // Recover + Checkpoint ("%*sScheduling RECOVER_VARIABLES", 2*reflevel, ""); CCTK_ScheduleTraverse ("CCTK_RECOVER_VARIABLES", cgh, CallFunction); + Checkpoint ("%*sScheduling CPINITIAL", 2*reflevel, ""); CCTK_ScheduleTraverse ("CCTK_CPINITIAL", cgh, CallFunction); + // Poststep + Checkpoint ("%*sScheduling POSTSTEP", 2*reflevel, ""); + CCTK_ScheduleTraverse ("CCTK_POSTSTEP", cgh, CallFunction); + + // Checking + PoisonCheck (cgh, allbutlasttime); + } END_REFLEVEL_LOOP(cgh); BEGIN_REVERSE_REFLEVEL_LOOP(cgh) { @@ -383,22 +403,20 @@ namespace Carpet { // Restrict Restrict (cgh); - } END_REVERSE_REFLEVEL_LOOP(cgh); - - BEGIN_REVERSE_REFLEVEL_LOOP(cgh) { - - // Poststep - CCTK_ScheduleTraverse ("CCTK_POSTSTEP", cgh, CallFunction); - - PoisonCheck (cgh, 0); - CalculateChecksums (cgh, 0); + // Checking + CalculateChecksums (cgh, allbutlasttime); // Analysis + Checkpoint ("%*sScheduling ANALYSIS", 2*reflevel, ""); CCTK_ScheduleTraverse ("CCTK_ANALYSIS", cgh, CallFunction); // Output + Checkpoint ("%*sOutputGH", 2*reflevel, ""); CCTK_OutputGH (cgh); + // Checking + CheckChecksums (cgh, allbutlasttime); + } END_REVERSE_REFLEVEL_LOOP(cgh); Checkpoint ("done with Initialise."); @@ -422,43 +440,17 @@ namespace Carpet { || (cctk_final_time >= cctk_initial_time && cgh->cctk_time < cctk_final_time)) { - // Next iteration + // Advance time ++cgh->cctk_iteration; + cgh->cctk_time += base_delta_time / maxreflevelfact; Checkpoint ("Evolving iteration %d...", cgh->cctk_iteration); BEGIN_REFLEVEL_LOOP(cgh) { if ((cgh->cctk_iteration-1) % (maxreflevelfact/reflevelfact) == 0) { - // Prestep - CCTK_ScheduleTraverse ("CCTK_PRESTEP", cgh, CallFunction); - - // Move activity to next time level - assert (activetimelevel == 0); - ++activetimelevel; - - // Evolve - CCTK_ScheduleTraverse ("CCTK_EVOL", cgh, CallFunction); - - // Move activity back to current time level - --activetimelevel; - assert (activetimelevel == 0); - - } - } END_REFLEVEL_LOOP(cgh); - - // Advance time - cgh->cctk_time += base_delta_time / maxreflevelfact; - - BEGIN_REVERSE_REFLEVEL_LOOP(cgh) { - if (cgh->cctk_iteration % (maxreflevelfact/reflevelfact) == 0) { - - CheckChecksums (cgh, 0); - // Cycle time levels - PoisonCheck (cgh, 1); CycleTimeLevels (cgh); - Poison (cgh, 1); // Advance level times tt->advance_time (reflevel, mglevel); @@ -476,29 +468,48 @@ namespace Carpet { } } - // Restrict - Restrict (cgh); + // Checking + CalculateChecksums (cgh, allbutcurrenttime); + Poison (cgh, currenttimebutnotifonly); + + // Evolve + Checkpoint ("%*sScheduling PRESTEP", 2*reflevel, ""); + CCTK_ScheduleTraverse ("CCTK_PRESTEP", cgh, CallFunction); + Checkpoint ("%*sScheduling EVOL", 2*reflevel, ""); + CCTK_ScheduleTraverse ("CCTK_EVOL", cgh, CallFunction); + Checkpoint ("%*sScheduling POSTSTEP", 2*reflevel, ""); + CCTK_ScheduleTraverse ("CCTK_POSTSTEP", cgh, CallFunction); - CalculateChecksums (cgh, 0); + // Checking + PoisonCheck (cgh, currenttimebutnotifonly); } - } END_REVERSE_REFLEVEL_LOOP(cgh); + } END_REFLEVEL_LOOP(cgh); BEGIN_REVERSE_REFLEVEL_LOOP(cgh) { if (cgh->cctk_iteration % (maxreflevelfact/reflevelfact) == 0) { - // Poststep - CCTK_ScheduleTraverse ("CCTK_POSTSTEP", cgh, CallFunction); + // Restrict + Restrict (cgh); + + // Checking + CalculateChecksums (cgh, currenttime); // Checkpoint + Checkpoint ("%*sScheduling CHECKPOINT", 2*reflevel, ""); CCTK_ScheduleTraverse ("CCTK_CHECKPOINT", cgh, CallFunction); // Analysis + Checkpoint ("%*sScheduling ANALYSIS", 2*reflevel, ""); CCTK_ScheduleTraverse ("CCTK_ANALYSIS", cgh, CallFunction); // Output + Checkpoint ("%*sOutputGH", 2*reflevel, ""); CCTK_OutputGH (cgh); + // Checking + CheckChecksums (cgh, alltimes); + } } END_REVERSE_REFLEVEL_LOOP(cgh); @@ -522,11 +533,13 @@ namespace Carpet { // Terminate BEGIN_REFLEVEL_LOOP(cgh) { + Checkpoint ("%*sScheduling TERMINATE", 2*reflevel, ""); CCTK_ScheduleTraverse ("CCTK_TERMINATE", cgh, CallFunction); } END_REFLEVEL_LOOP(cgh); // Shutdown BEGIN_REFLEVEL_LOOP(cgh) { + Checkpoint ("%*sScheduling SHUTDOWN", 2*reflevel, ""); CCTK_ScheduleTraverse ("CCTK_SHUTDOWN", cgh, CallFunction); } END_REFLEVEL_LOOP(cgh); @@ -551,7 +564,7 @@ namespace Carpet { assert (mglevel>=0); assert (reflevel>=0); -// Checkpoint ("%*sstarting CallFunction...", 2*reflevel, ""); +// Checkpoint ("%*sStarting CallFunction...", 2*reflevel, ""); cGH* cgh = (cGH*)data; @@ -607,12 +620,15 @@ namespace Carpet { } const int n0 = CCTK_FirstVarIndexI(group); + assert (n0>=0); const int num_tl = CCTK_NumTimeLevelsFromVarI(n0); - const int tl = min(activetimelevel, num_tl-1); + assert (num_tl>0); + const int tl = 0; switch (CCTK_GroupTypeI(group)) { case CCTK_SCALAR: + // TODO: Check whether the local values are consistent break; case CCTK_ARRAY: @@ -671,38 +687,38 @@ namespace Carpet { const int group = CCTK_GroupIndex(groupname); assert (group>=0 && group<CCTK_NumGroups()); - // The return indicates whether storage was enabled previously. - const int retval = CCTK_QueryGroupStorageI (cgh, group); + if (CCTK_QueryGroupStorageI(cgh, group)) { + // storage was enabled previously + return 1; + } // There is a difference between the Cactus time levels and the // Carpet time levels. If there are n time levels, then the // Cactus time levels are numbered 0 ... n-1, with the current - // time level being max(0,n-2). In Carpet, the time levels are - // numbered 1-max(1,n-1) ... min(1,n-1), where the current time - // level is always 0. + // time level being n-1. In Carpet, the time levels are numbered + // -(n-1) ... 0, where the current time level is always 0. const int n0 = CCTK_FirstVarIndexI(group); + assert (n0>=0); const int num_tl = CCTK_NumTimeLevelsFromVarI(n0); - const int tmin = min(0, 2 - num_tl); - const int tmax = tmin + num_tl - 1; + assert (num_tl>0); + const int tmin = 1 - num_tl; + const int tmax = 0; switch (CCTK_GroupTypeI(group)) { case CCTK_SCALAR: - if (scdata[group].data.size()==0 - || scdata[group].data[0].size()==0 - || scdata[group].data[0][0].size()==0 - || scdata[group].data[0][0][0] != 0) { - // group already has storage - break; - } + assert (scdata[group].data.size()==0 + || scdata[group].data[0].size()==0 + || scdata[group].data[0][0].size()==0 + || scdata[group].data[0][0][0] == 0); for (int var=0; var<(int)scdata[group].data.size(); ++var) { for (int rl=0; rl<(int)scdata[group].data[var].size(); ++rl) { - for (int ti=0; ti<(int)scdata[group].data[var][rl].size(); ++ti) { + for (int tl=0; tl<(int)scdata[group].data[var][rl].size(); ++tl) { const int n = n0 + var; switch (CCTK_VarTypeI(n)) { #define TYPECASE(N,T) \ case N: \ - scdata[group].data[var][rl][ti] = new T; \ + scdata[group].data[var][rl][tl] = new T; \ break; #include "typecase" #undef TYPECASE @@ -715,11 +731,8 @@ namespace Carpet { break; case CCTK_ARRAY: - if (arrdata[group].data.size()==0 - || arrdata[group].data[0] != 0) { - // group already has storage - break; - } + assert (arrdata[group].data.size()==0 + || arrdata[group].data[0] == 0); for (int var=0; var<(int)arrdata[group].data.size(); ++var) { const int n = n0 + var; switch (CCTK_VarTypeI(n)) { @@ -738,11 +751,8 @@ namespace Carpet { break; case CCTK_GF: - if (gfdata[group].data.size()==0 - || gfdata[group].data[0] != 0) { - // group already has storage - break; - } + assert (gfdata[group].data.size()==0 + || gfdata[group].data[0] == 0); for (int var=0; var<(int)gfdata[group].data.size(); ++var) { const int n = n0 + var; switch (CCTK_VarTypeI(n)) { @@ -763,10 +773,12 @@ namespace Carpet { abort(); } + // Reinitialise Cactus variables set_component (cgh, component); - PoisonGroup (cgh, group, 2); + PoisonGroup (cgh, group, alltimes); - return retval; + // storage was not enabled previously + return 0; } @@ -778,11 +790,14 @@ namespace Carpet { const int group = CCTK_GroupIndex(groupname); assert (group>=0 && group<CCTK_NumGroups()); - // The return indicates whether storage was enabled previously. - const int retval = CCTK_QueryGroupStorageI (cgh, group); + if (! CCTK_QueryGroupStorageI(cgh, group)) { + // storage was disabled previously + return 0; + } // XXX - return retval; + CCTK_WARN (1, "Cannot disable storage -- storage management is not yet consistent for FMR"); + return 1; const int n0 = CCTK_FirstVarIndexI(group); @@ -799,18 +814,18 @@ namespace Carpet { for (int var=0; var<(int)scdata[group].data.size(); ++var) { const int n = n0 + var; for (int rl=0; rl<(int)scdata[group].data[var].size(); ++rl) { - for (int ti=0; ti<(int)scdata[group].data[var][rl].size(); ++ti) { + for (int tl=0; tl<(int)scdata[group].data[var][rl].size(); ++tl) { switch (CCTK_VarTypeI(n)) { #define TYPECASE(N,T) \ case N: \ - delete (T*)scdata[group].data[var][rl][ti]; \ + delete (T*)scdata[group].data[var][rl][tl]; \ break; #include "typecase" #undef TYPECASE default: UnsupportedVarType(n); } - scdata[group].data[var][rl][ti] = 0; + scdata[group].data[var][rl][tl] = 0; } } } @@ -863,9 +878,11 @@ namespace Carpet { abort(); } + // Reinitialise Cactus variables set_component (cgh, component); - return retval; + // storage was not disabled previously + return 1; } @@ -966,10 +983,11 @@ namespace Carpet { assert (group<(int)scdata.size()); assert (var<(int)scdata[group].data.size()); const int num_tl = CCTK_NumTimeLevelsFromVarI(n); + assert (num_tl>0); void* tmpdata = scdata[group].data[var][reflevel][0]; - for (int ti=0; ti<num_tl-1; ++ti) { - scdata[group].data[var][reflevel][ti] - = scdata[group].data[var][reflevel][ti+1]; + for (int tl=0; tl<num_tl-1; ++tl) { + scdata[group].data[var][reflevel][tl] + = scdata[group].data[var][reflevel][tl+1]; } scdata[group].data[var][reflevel][num_tl-1] = tmpdata; tmpdata = 0; @@ -1014,7 +1032,7 @@ namespace Carpet { // Restrict only groups with storage if (CCTK_QueryGroupStorageI(cgh, group)) { - const int tl = activetimelevel; + const int tl = 0; switch (CCTK_GroupTypeI(group)) { @@ -1162,9 +1180,9 @@ namespace Carpet { assert (group<(int)scdata.size()); assert (var<(int)scdata[group].data.size()); assert (reflevel<(int)scdata[group].data[var].size()); - const int ti=0; - assert (ti<(int)scdata[group].data[var][reflevel].size()); - return scdata[group].data[var][reflevel][ti] != 0; + const int tl=0; + assert (tl<(int)scdata[group].data[var][reflevel].size()); + return scdata[group].data[var][reflevel][tl] != 0; } case CCTK_ARRAY: { @@ -1186,16 +1204,12 @@ namespace Carpet { - void Poison (cGH* cgh, const int where) + void Poison (cGH* cgh, const checktimes where) { DECLARE_CCTK_PARAMETERS; - assert (where>=0 && where<=2); - if (! poison_new_timelevels) return; - Checkpoint ("%*sPoison", 2*reflevel, ""); - for (int group=0; group<CCTK_NumGroups(); ++group) { if (CCTK_QueryGroupStorageI(cgh, group)) { PoisonGroup (cgh, group, where); @@ -1205,12 +1219,11 @@ namespace Carpet { - void PoisonGroup (cGH* cgh, const int group, const int where) + void PoisonGroup (cGH* cgh, const int group, const checktimes where) { DECLARE_CCTK_PARAMETERS; assert (group>=0 && group<CCTK_NumGroups()); - assert (where>=0 && where<=2); if (! poison_new_timelevels) return; @@ -1230,23 +1243,9 @@ namespace Carpet { assert (sz>0); const int num_tl = CCTK_NumTimeLevelsFromVarI(n); - int min_tl, max_tl; - switch (where) { - case 0: - min_tl = 0; - max_tl = num_tl-2; - break; - case 1: - min_tl = max(num_tl-1,1); - max_tl = num_tl-1; - break; - case 2: - min_tl = 0; - max_tl = num_tl-1; - break; - default: - abort(); - } + 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) { @@ -1281,7 +1280,7 @@ namespace Carpet { - void PoisonCheck (cGH* cgh, const int where) + void PoisonCheck (cGH* cgh, const checktimes where) { DECLARE_CCTK_PARAMETERS; @@ -1296,8 +1295,10 @@ namespace Carpet { const int n = CCTK_FirstVarIndexI(group) + var; const int num_tl = CCTK_NumTimeLevelsFromVarI(n); - const int min_tl = where ? max(num_tl-1,1) : 0; - const int max_tl = where ? num_tl-1 : num_tl-2; + 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) { switch (CCTK_GroupTypeFromVarI(n)) { @@ -1320,8 +1321,8 @@ namespace Carpet { if (poisoned) { char* fullname = CCTK_FullName(n); CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING, - "The variable \"%s\" contains poison", - fullname); + "The variable \"%s\" contains poison in timelevel %d", + fullname, tl); free (fullname); } break; @@ -1361,8 +1362,8 @@ namespace Carpet { if (numpoison<=10) { char* fullname = CCTK_FullName(n); CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING, - "The variable \"%s\" contains poison at [%d,%d,%d]", - fullname, i,j,k); + "The variable \"%s\" contains poison at [%d,%d,%d] in timelevel %d", + fullname, i,j,k, tl); free (fullname); } } // if poisoned @@ -1372,8 +1373,8 @@ namespace Carpet { if (numpoison>10) { char* fullname = CCTK_FullName(n); CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING, - "The variable \"%s\" contains poison at %d locations; not all were printed.", - fullname, numpoison); + "The variable \"%s\" contains poison at %d locations in timelevel %d; not all locations were printed.", + fullname, numpoison, tl); free (fullname); } } // if is local @@ -1394,7 +1395,7 @@ namespace Carpet { - void CalculateChecksums (cGH* cgh, int where) + void CalculateChecksums (cGH* cgh, const checktimes where) { DECLARE_CCTK_PARAMETERS; @@ -1405,10 +1406,13 @@ 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); - const int min_tl = where ? max(num_tl-1,1) : 0; - const int max_tl = where ? num_tl-1 : num_tl-2; + 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) { @@ -1445,8 +1449,10 @@ namespace Carpet { const int sz = CCTK_VarTypeSize(CCTK_VarTypeI(n)); assert (sz>0); const int num_tl = CCTK_NumTimeLevelsFromVarI(n); - const int min_tl = where ? max(num_tl-1,1) : 0; - const int max_tl = where ? num_tl-1 : num_tl-2; + 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) { switch (CCTK_GroupTypeFromVarI(n)) { @@ -1494,7 +1500,7 @@ namespace Carpet { - void CheckChecksums (cGH* cgh, int where) + void CheckChecksums (cGH* cgh, const checktimes where) { DECLARE_CCTK_PARAMETERS; @@ -1511,15 +1517,17 @@ namespace Carpet { const int sz = CCTK_VarTypeSize(CCTK_VarTypeI(n)); assert (sz>0); const int num_tl = CCTK_NumTimeLevelsFromVarI(n); - const int min_tl = where ? max(num_tl-1,1) : 0; - const int max_tl = where ? num_tl-1 : num_tl-2; + 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); - bool unexpected_change = false; - for (int tl=min_tl; tl<=max_tl; ++tl) { + + bool unexpected_change = false; + switch (CCTK_GroupTypeFromVarI(n)) { case CCTK_SCALAR: { @@ -1541,7 +1549,7 @@ namespace Carpet { case CCTK_ARRAY: case CCTK_GF: { assert ((int)checksums[n][reflevel][tl].size() - ==hh->components(reflevel)); + == hh->components(reflevel)); BEGIN_COMPONENT_LOOP(cgh) { if (checksums[n][reflevel][tl][component].valid) { if (hh->is_local(reflevel,component)) { @@ -1567,16 +1575,16 @@ namespace Carpet { abort(); } + 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 - if (unexpected_change) { - char* fullname = CCTK_FullName(n); - CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING, - "Old timelevels of the variable \"%s\" have changed unexpectedly.", - fullname); - free (fullname); - } - } // for var } // if has storage } // for group @@ -1584,6 +1592,48 @@ namespace Carpet { + int mintl (const checktimes where, const int num_tl) + { + assert (num_tl>0); + switch (where) { + case currenttime: + return num_tl-1; + case currenttimebutnotifonly: + // don't include current time if there is only one time level + return max(1,num_tl-1); + case allbutlasttime: + // do include current time if there is only one time level + return min(1,num_tl-1); + case allbutcurrenttime: + return 0; + case alltimes: + return 0; + default: + abort(); + } + } + + int maxtl (const checktimes where, const int num_tl) + { + assert (num_tl>0); + switch (where) { + case currenttime: + return num_tl-1; + case currenttimebutnotifonly: + return num_tl-1; + case allbutlasttime: + return num_tl-1; + case allbutcurrenttime: + return num_tl-2; + case alltimes: + return num_tl-1; + default: + abort(); + } + } + + + void Checkpoint (const char* fmt, ...) { DECLARE_CCTK_PARAMETERS; @@ -1688,7 +1738,7 @@ namespace Carpet { // Set Cactus pointers to data for (int n=0; n<CCTK_NumVars(); ++n) { - for (int ti=0; ti<CCTK_NumTimeLevelsFromVarI(n); ++ti) { + for (int tl=0; tl<CCTK_NumTimeLevelsFromVarI(n); ++tl) { const int group = CCTK_GroupIndexFromVarI(n); assert (group>=0); @@ -1705,14 +1755,14 @@ namespace Carpet { assert (group<(int)scdata.size()); assert (var<(int)scdata[group].data.size()); assert (reflevel<(int)scdata[group].data[var].size()); - assert (ti<(int)scdata[group].data[var][reflevel].size()); - cgh->data[n][ti] = scdata[group].data[var][reflevel][ti]; + assert (tl<(int)scdata[group].data[var][reflevel].size()); + cgh->data[n][tl] = scdata[group].data[var][reflevel][tl]; break; case CCTK_ARRAY: case CCTK_GF: // Arrays and grid functions cannot be accessed - cgh->data[n][ti] = 0; + cgh->data[n][tl] = 0; break; default: @@ -1722,11 +1772,11 @@ namespace Carpet { } else { // Group has no storage - cgh->data[n][ti] = 0; + cgh->data[n][tl] = 0; } - } // for ti + } // for tl } // for n } else { @@ -1790,14 +1840,14 @@ namespace Carpet { // Set Cactus pointers to data for (int n=0; n<CCTK_NumVars(); ++n) { - for (int ti=0; ti<CCTK_NumTimeLevelsFromVarI(n); ++ti) { + for (int tl=0; tl<CCTK_NumTimeLevelsFromVarI(n); ++tl) { const int group = CCTK_GroupIndexFromVarI(n); assert (group>=0); const int var = n - CCTK_FirstVarIndexI(group); assert (var>=0); - const int tmin = min(0, 2 - CCTK_NumTimeLevelsFromVarI(n)); - const int tl = tmin + ti; + const int num_tl = CCTK_NumTimeLevelsFromVarI(n); + assert (num_tl>0); if (CCTK_QueryGroupStorageI(cgh, group)) { // Group has storage @@ -1808,24 +1858,24 @@ namespace Carpet { assert (group<(int)scdata.size()); assert (var<(int)scdata[group].data.size()); assert (reflevel<(int)scdata[group].data[var].size()); - assert (ti<(int)scdata[group].data[var][reflevel].size()); - cgh->data[n][ti] = scdata[group].data[var][reflevel][ti]; + assert (tl<(int)scdata[group].data[var][reflevel].size()); + cgh->data[n][tl] = scdata[group].data[var][reflevel][tl]; break; case CCTK_ARRAY: assert (group<(int)arrdata.size()); assert (var<(int)arrdata[group].data.size()); - cgh->data[n][ti] + cgh->data[n][tl] = ((*arrdata[group].data[var]) - (tl, reflevel, component, mglevel)->storage()); + (tl-num_tl+1, reflevel, component, mglevel)->storage()); break; case CCTK_GF: assert (group<(int)gfdata.size()); assert (var<(int)gfdata[group].data.size()); - cgh->data[n][ti] + cgh->data[n][tl] = ((*gfdata[group].data[var]) - (tl, reflevel, component, mglevel)->storage()); + (tl-num_tl+1, reflevel, component, mglevel)->storage()); break; default: @@ -1833,19 +1883,19 @@ namespace Carpet { } if (CCTK_GroupTypeFromVarI(n)==CCTK_SCALAR || hh->is_local(reflevel,component)) { - assert (cgh->data[n][ti]); + assert (cgh->data[n][tl]); } else { - assert (! cgh->data[n][ti]); + assert (! cgh->data[n][tl]); } } else { // Group has no storage - cgh->data[n][ti] = 0; + cgh->data[n][tl] = 0; } // if ! has storage - } // for ti + } // for tl } // for n } diff --git a/Carpet/Carpet/src/carpet.hh b/Carpet/Carpet/src/carpet.hh index 8b90ee00a..6b14c1589 100644 --- a/Carpet/Carpet/src/carpet.hh +++ b/Carpet/Carpet/src/carpet.hh @@ -1,4 +1,4 @@ -// $Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/carpet.hh,v 1.7 2001/04/06 10:37:36 schnetter Exp $ +// $Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/carpet.hh,v 1.8 2001/04/23 08:10:13 schnetter Exp $ #include <vector> @@ -27,9 +27,6 @@ namespace Carpet { // Refinement factor on finest grid extern int maxreflevelfact; - // Active time level - extern int activetimelevel; // 0 for current, 1 for next - // Current iteration per refinement level extern vector<int> iteration; diff --git a/Carpet/CarpetIOASCII/src/ioascii.cc b/Carpet/CarpetIOASCII/src/ioascii.cc index 99aa1491d..9957b7620 100644 --- a/Carpet/CarpetIOASCII/src/ioascii.cc +++ b/Carpet/CarpetIOASCII/src/ioascii.cc @@ -24,7 +24,7 @@ #include "ioascii.hh" -static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOASCII/src/ioascii.cc,v 1.11 2001/03/22 18:42:05 eschnett Exp $"; +static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOASCII/src/ioascii.cc,v 1.12 2001/04/23 08:10:13 schnetter Exp $"; @@ -134,7 +134,7 @@ int CarpetIOASCII<outdim> assert (n0>=0 && n0<CCTK_NumVars()); const int var = n - n0; assert (var>=0 && var<CCTK_NumVars()); - const int tl = activetimelevel; + const int tl = 0; switch (CCTK_GroupTypeI(group)) { diff --git a/Carpet/CarpetLib/src/dh.cc b/Carpet/CarpetLib/src/dh.cc index ec51bfd65..449ba1dc5 100644 --- a/Carpet/CarpetLib/src/dh.cc +++ b/Carpet/CarpetLib/src/dh.cc @@ -6,7 +6,7 @@ copyright : (C) 2000 by Erik Schnetter email : schnetter@astro.psu.edu - $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/dh.cc,v 1.12 2001/03/28 18:56:09 eschnett Exp $ + $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/dh.cc,v 1.13 2001/04/23 08:10:15 schnetter Exp $ ***************************************************************************/ @@ -57,6 +57,13 @@ dh<D>::~dh () { h.remove(this); } +// Helpers +template<int D> +int dh<D>::prolongation_stencil_size () const { + assert (prolongation_order>=0); + return prolongation_order/2; +} + // Modifiers template<int D> void dh<D>::recompose () { @@ -220,12 +227,14 @@ void dh<D>::recompose () { for (int c=0; c<h.components(rl); ++c) { for (int ml=0; ml<h.mglevels(rl,c); ++ml) { - // Boundaries that are neither synced nor prolonged from - // coarser grids (outer boundaries) + // Boundaries that are not synced, or are neither synced nor + // prolonged to from coarser grids (outer boundaries) ibset& sync_not = boxes[rl][c][ml].sync_not; + ibset& recv_not = boxes[rl][c][ml].recv_not; // The whole boundary sync_not = boxes[rl][c][ml].boundaries; + recv_not = boxes[rl][c][ml].boundaries; // Subtract boxes received during synchronisation const iblistvect& recv_sync = boxes[rl][c][ml].recv_sync; @@ -234,6 +243,18 @@ void dh<D>::recompose () { for (iblist::const_iterator li=lvi->begin(); li!=lvi->end(); ++li) { sync_not -= *li; + recv_not -= *li; + } + } + + // Subtract all boxes received + const iblistvect& recv_ref_bnd_coarse + = boxes[rl][c][ml].recv_ref_bnd_coarse; + for (iblistvect::const_iterator lvi=recv_ref_bnd_coarse.begin(); + lvi!=recv_ref_bnd_coarse.end(); ++lvi) { + for (iblist::const_iterator li=lvi->begin(); + li!=lvi->end(); ++li) { + recv_not -= *li; } } @@ -287,6 +308,7 @@ void dh<D>::recompose () { cout << "recv_sync=" << boxes[rl][c][ml].recv_sync << endl; cout << "recv_ref_bnd_coarse=" << boxes[rl][c][ml].recv_ref_bnd_coarse << endl; cout << "sync_not=" << boxes[rl][c][ml].sync_not << endl; + cout << "recv_not=" << boxes[rl][c][ml].recv_not << endl; } } } diff --git a/Carpet/CarpetLib/src/dh.hh b/Carpet/CarpetLib/src/dh.hh index 2267db505..70ffe3803 100644 --- a/Carpet/CarpetLib/src/dh.hh +++ b/Carpet/CarpetLib/src/dh.hh @@ -6,7 +6,7 @@ copyright : (C) 2000 by Erik Schnetter email : schnetter@astro.psu.edu - $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/dh.hh,v 1.6 2001/03/28 18:56:09 eschnett Exp $ + $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/dh.hh,v 1.7 2001/04/23 08:10:15 schnetter Exp $ ***************************************************************************/ @@ -79,7 +79,8 @@ public: ibset boundaries; // boundaries iblistvect recv_sync; // received while syncing iblistvect recv_ref_bnd_coarse; // received from coarser grids - ibset sync_not; // not received while syncing (outer boundary) + ibset sync_not; // not received while syncing (outer boundary of that level) + ibset recv_not; // not received while syncing or prolongating (globally outer boundary) }; private: @@ -118,10 +119,7 @@ public: ~dh (); // Helpers - int prolongation_stencil_size () const { - assert (prolongation_order>=0); - return prolongation_order/2; - } + int prolongation_stencil_size () const; // Modifiers void recompose (); diff --git a/Carpet/CarpetLib/src/ggf.cc b/Carpet/CarpetLib/src/ggf.cc index 42f4098ba..e4c890497 100644 --- a/Carpet/CarpetLib/src/ggf.cc +++ b/Carpet/CarpetLib/src/ggf.cc @@ -6,7 +6,7 @@ copyright : (C) 2000 by Erik Schnetter email : schnetter@astro.psu.edu - $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/ggf.cc,v 1.8 2001/03/27 22:26:31 eschnett Exp $ + $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/ggf.cc,v 1.9 2001/04/23 08:10:15 schnetter Exp $ ***************************************************************************/ @@ -276,9 +276,9 @@ void generic_gf<D>::intercat (int tl1, int rl1, int c1, int ml1, vector<int> tls(tl2s.size()); for (int i=0; i<(int)gsrcs.size(); ++i) { gsrcs[i] = storage[tl2s[i]-tmin][rl2][c2][ml2]; - tls[i] = tl2s[i] * t.get_delta(rl2,ml2); + tls[i] = t.time(tl2s[i],rl2,ml2); } - const int tl = tl1 * t.get_delta(rl1,ml1); + const int tl = t.time(tl1,rl1,ml1); const ibbox recv = d.boxes[rl1][c1][ml1].*recv_list; const ibbox send = d.boxes[rl2][c2][ml2].*send_list; @@ -312,9 +312,9 @@ void generic_gf<D>::intercat (int tl1, int rl1, int c1, int ml1, vector<int> tls(tl2s.size()); for (int i=0; i<(int)gsrcs.size(); ++i) { gsrcs[i] = storage[tl2s[i]-tmin][rl2][c2][ml2]; - tls[i] = tl2s[i] * t.get_delta(rl2,ml2); + tls[i] = t.time(tl2s[i],rl2,ml2); } - const int tl = tl1 * t.get_delta(rl1,ml1); + const int tl = t.time(tl1,rl1,ml1); const iblist recv = d.boxes[rl1][c1][ml1].*recv_list; const iblist send = d.boxes[rl2][c2][ml2].*send_list; @@ -353,9 +353,9 @@ void generic_gf<D>::intercat (int tl1, int rl1, int c1, int ml1, vector<int> tls(tl2s.size()); for (int i=0; i<(int)gsrcs.size(); ++i) { gsrcs[i] = storage[tl2s[i]-tmin][rl2][c2][ml2]; - tls[i] = tl2s[i] * t.get_delta(rl2,ml2); + tls[i] = t.time(tl2s[i],rl2,ml2); } - const int tl = tl1 * t.get_delta(rl1,ml1); + const int tl = t.time(tl1,rl1,ml1); const iblist recv = (d.boxes[rl1][c1][ml1].*recv_listvect)[c2]; const iblist send = (d.boxes[rl2][c2][ml2].*send_listvect)[c1]; diff --git a/Carpet/CarpetSlab/src/carpetslab.cc b/Carpet/CarpetSlab/src/carpetslab.cc index 4d8141e0d..3461003c2 100644 --- a/Carpet/CarpetSlab/src/carpetslab.cc +++ b/Carpet/CarpetSlab/src/carpetslab.cc @@ -1,4 +1,4 @@ -// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetSlab/src/Attic/carpetslab.cc,v 1.6 2001/03/22 18:42:06 eschnett Exp $ +// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetSlab/src/Attic/carpetslab.cc,v 1.7 2001/04/23 08:10:16 schnetter Exp $ #include <alloca.h> #include <assert.h> @@ -18,7 +18,7 @@ #include "carpetslab.hh" -static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetSlab/src/Attic/carpetslab.cc,v 1.6 2001/03/22 18:42:06 eschnett Exp $"; +static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetSlab/src/Attic/carpetslab.cc,v 1.7 2001/04/23 08:10:16 schnetter Exp $"; @@ -77,7 +77,7 @@ namespace CarpetSlab { // Check timelevel const int num_tl = gp.numtimelevels; assert (ti>=0 && ti<num_tl); - const int tmin = min(0, 2 - num_tl); + const int tmin = 1 - num_tl; const int tl = tmin + ti; // Check origin diff --git a/CarpetAttic/CarpetIOFlexIO/src/ioflexio.cc b/CarpetAttic/CarpetIOFlexIO/src/ioflexio.cc index e1a6282ca..c9dcc5150 100644 --- a/CarpetAttic/CarpetIOFlexIO/src/ioflexio.cc +++ b/CarpetAttic/CarpetIOFlexIO/src/ioflexio.cc @@ -33,7 +33,7 @@ #include "ioflexio.hh" -static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/CarpetAttic/CarpetIOFlexIO/src/ioflexio.cc,v 1.7 2001/03/22 18:42:05 eschnett Exp $"; +static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/CarpetAttic/CarpetIOFlexIO/src/ioflexio.cc,v 1.8 2001/04/23 08:10:14 schnetter Exp $"; @@ -124,7 +124,7 @@ namespace CarpetIOFlexIO { assert (n0>=0 && n0<CCTK_NumVars()); const int var = n - n0; assert (var>=0 && var<CCTK_NumVars()); - const int tl = activetimelevel; + const int tl = 0; switch (CCTK_GroupTypeI(group)) { @@ -408,7 +408,7 @@ namespace CarpetIOFlexIO { assert (n0>=0 && n0<CCTK_NumVars()); const int var = n - n0; assert (var>=0 && var<CCTK_NumVars()); - const int tl = activetimelevel; + const int tl = 0; switch (CCTK_GroupTypeI(group)) { diff --git a/CarpetAttic/Cart3dTest/utils/cmptest b/CarpetAttic/Cart3dTest/utils/cmptest index ce99c6034..2aa730762 100755 --- a/CarpetAttic/Cart3dTest/utils/cmptest +++ b/CarpetAttic/Cart3dTest/utils/cmptest @@ -1,5 +1,5 @@ #!/bin/bash -# $Header: /home/eschnett/C/carpet/Carpet/CarpetAttic/Cart3dTest/utils/cmptest,v 1.3 2001/03/17 16:27:02 eschnett Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetAttic/Cart3dTest/utils/cmptest,v 1.4 2001/04/23 08:10:17 schnetter Exp $ # Call this script from the Cactus directory. It compares a Carpet # ASCII testsuite output to PUGH ASCII testsuite output. @@ -11,17 +11,10 @@ for suite in $(ls TEST/carpet | grep -v log\$); do for file in $(ls arrangements/AlphaThorns/Cart3dTest/test/$suite | grep -v CVS | grep -v \.dl); do - mkfifo /tmp/out-old.$$ - mkfifo /tmp/out-new.$$ - - awk 'NF==2 { print $2; }' arrangements/AlphaThorns/Cart3dTest/test/$suite/$file > /tmp/out-old.$$ & - awk 'NF==9 { print $9; }' TEST/carpet/$suite/$file > /tmp/out-new.$$ & - - paste /tmp/out-old.$$ /tmp/out-new.$$ | - awk '{ diff=(($1-$2)/($1+$2+1e-6))**2; if (diff>1e-10) { ++cnt; print l+0,$1,$2,diff; ++l; } } END { if (cnt>0) print "File '$file'",cnt+0,"differing lines"; }' - - rm /tmp/out-old.$$ - rm /tmp/out-new.$$ + paste \ + <( awk 'NF==2 { print $2; }' arrangements/AlphaThorns/Cart3dTest/test/$suite/$file ) \ + <( awk 'NF==9 { print $9; }' TEST/carpet/$suite/$file ) \ + | awk '{ diff=(($1-$2)/($1+$2+1e-6))**2; if (diff>1e-10) { ++cnt; print l+0,$1,$2,diff; ++l; } } END { if (cnt>0) print "File '$file'",cnt+0,"differing lines"; }' done diff --git a/CarpetAttic/Cart3dTest/utils/mptest b/CarpetAttic/Cart3dTest/utils/mptest index c066f40a8..054992be9 100755 --- a/CarpetAttic/Cart3dTest/utils/mptest +++ b/CarpetAttic/Cart3dTest/utils/mptest @@ -1,5 +1,5 @@ #!/bin/bash -# $Header: /home/eschnett/C/carpet/Carpet/CarpetAttic/Cart3dTest/utils/mptest,v 1.3 2001/03/17 16:27:02 eschnett Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetAttic/Cart3dTest/utils/mptest,v 1.4 2001/04/23 08:10:17 schnetter Exp $ # Call this script from the Cactus directory. It compares a Carpet # ASCII testsuite outputs from runs with different numbers of @@ -12,24 +12,18 @@ for suite in $(ls TEST/carpet | grep -v log\$); do for file in $(ls arrangements/Carpet/Cart3dTest/test/$suite | grep -v CVS | grep -v \.dl); do - mkfifo /tmp/out-old.$$ - mkfifo /tmp/out-new.$$ - - awk 'NF==9 { print $1,$6,$7,$8,$9; }' arrangements/Carpet/Cart3dTest/test/$suite/$file | - sort -n -k 1,4 | - uniq | - awk '{ print $5; }' > /tmp/out-old.$$ & - - awk 'NF==9 { print $1,$6,$7,$8,$9; }' TEST/carpet/$suite/$file | - sort -n -k 1,4 | - uniq | - awk '{ print $5; }' > /tmp/out-new.$$ & - - paste /tmp/out-old.$$ /tmp/out-new.$$ | - awk '{ diff=(($1-$2)/($1+$2+1e-6))**2; if (diff>1e-10) { ++cnt; print l+0,$1,$2,diff; ++l; } } END { if (cnt>0) print "File '$file'",cnt+0,"differing lines"; }' - - rm /tmp/out-old.$$ - rm /tmp/out-new.$$ + paste \ + <( awk 'NF==9 { print $1,$6,$7,$8,$9; }' arrangements/Carpet/Cart3dTest/test/$suite/$file | + sort -n -k 1,4 | + uniq | + awk '{ print $5; }' + ) \ + <( awk 'NF==9 { print $1,$6,$7,$8,$9; }' TEST/carpet/$suite/$file | + sort -n -k 1,4 | + uniq | + awk '{ print $5; }' + ) \ + | awk '{ diff=(($1-$2)/($1+$2+1e-6))**2; if (diff>1e-10) { ++cnt; print l+0,$1,$2,diff; ++l; } } END { if (cnt>0) print "File '$file'",cnt+0,"differing lines"; }' done diff --git a/CarpetExtra/HydroToy/par/convtest.gnuplot b/CarpetExtra/HydroToy/par/convtest.gnuplot index 0cb0cc29c..15eb3716b 100644 --- a/CarpetExtra/HydroToy/par/convtest.gnuplot +++ b/CarpetExtra/HydroToy/par/convtest.gnuplot @@ -9,17 +9,17 @@ omega=sqrt(kx**2 + ky**2 + kz**2) # without refinement # solutions -p "hydrotoy_periodic/u.zl" u 8:($1==time&&$3==0?$9:0/0) w lp, "hydrotoy_periodic_coarse/u.zl" u (2*$8):(2*$1==time&&$3==0?$9:0/0) w lp, cos((kz*(0.3*x-9) + omega*(0.15*time))*pi) w l +p "hydrotoy_periodic/u.zl" u ($8-1):($1==time&&$3==0?$9:0/0) w lp, "hydrotoy_periodic_coarse/u.zl" u (2*($8-1)):(2*$1==time&&$3==0?$9:0/0) w lp, cos((kz*(0.3*x-9) + omega*(0.15*time))*pi) w l # errors -p "hydrotoy_periodic/u.zl" u 8:($1==time&&$3==0?$9-cos((kz*(0.3*$8-9) + omega*(0.15*time))*pi):0/0) w lp, "hydrotoy_periodic_coarse/u.zl" u (2*$8):(2*$1==time&&$3==0?$9-cos((kz*(0.3*(2*$8)-9) + omega*(0.15*time))*pi):0/0) w lp +p "hydrotoy_periodic/u.zl" u ($8-1):($1==time&&$3==0?$9-cos((kz*(0.3*($8-1)-9) + omega*(0.15*time))*pi):0/0) w lp, "hydrotoy_periodic_coarse/u.zl" u (2*($8-1)):(2*$1==time&&$3==0?$9-cos((kz*(0.3*(2*($8-1))-9) + omega*(0.15*time))*pi):0/0) w lp # with refinement # solutions -p "hydrotoy_periodic_rl2/u.zl" u 8:($1==time&&$3==0?$9:0/0) w lp, "hydrotoy_periodic_coarse_rl2/u.zl" u (2*$8):(2*$1==time&&$3==0?$9:0/0) w lp, cos((kz*(0.15*x-9) + omega*(0.075*time))*pi) w l +p "hydrotoy_periodic_rl2/u.zl" u ($8-2):($1==time&&$3==0?$9:0/0) w lp, "hydrotoy_periodic_coarse_rl2/u.zl" u (2*($8-2)):(2*$1==time&&$3==0?$9:0/0) w lp, cos((kz*(0.15*x-9) + omega*(0.075*time))*pi) w l # errors -p "hydrotoy_periodic_rl2/u.zl" u 8:($1==time&&$3==0?$9-cos((kz*(0.15*$8-9) + omega*(0.075*time))*pi):0/0) w lp, "hydrotoy_periodic_coarse_rl2/u.zl" u (2*$8):(2*$1==time&&$3==0?$9-cos((kz*(0.15*(2*$8)-9) + omega*(0.075*time))*pi):0/0) w lp +p "hydrotoy_periodic_rl2/u.zl" u ($8-2):($1==time&&$3==0?$9-cos((kz*(0.15*($8-2)-9) + omega*(0.075*time))*pi):0/0) w lp, "hydrotoy_periodic_coarse_rl2/u.zl" u (2*($8-2)):(2*$1==time&&$3==0?$9-cos((kz*(0.15*(2*($8-2))-9) + omega*(0.075*time))*pi):0/0) w lp diff --git a/CarpetExtra/HydroToy/par/hydrotoy_periodic.par b/CarpetExtra/HydroToy/par/hydrotoy_periodic.par index fb5b9010b..ac96d3e85 100644 --- a/CarpetExtra/HydroToy/par/hydrotoy_periodic.par +++ b/CarpetExtra/HydroToy/par/hydrotoy_periodic.par @@ -7,7 +7,7 @@ # @enddesc # @@*/ # -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/HydroToy/par/hydrotoy_periodic.par,v 1.3 2001/03/30 00:50:45 eschnett Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/HydroToy/par/hydrotoy_periodic.par,v 1.4 2001/04/23 08:10:18 schnetter Exp $ ActiveThorns = "Boundary IOBasic IOUtil Time Cart3d Carpet CarpetIOASCII CarpetIOFlexIO CarpetLib CarpetSlab IDHydroToy HydroToy" @@ -19,17 +19,19 @@ Cactus::cctk_itlast = 120 Time::dtfac = 0.5 -driver::global_nx = 32 -driver::global_ny = 46 -driver::global_nz = 62 +driver::global_nx = 34 +driver::global_ny = 48 +driver::global_nz = 64 + +driver::ghost_size = 2 grid::type = byrange -grid::xmin = -4.8 -grid::ymin = -6.6 -grid::zmin = -9.0 -grid::xmax = 4.5 -grid::ymax = 6.9 -grid::zmax = 9.3 +grid::xmin = -5.1 +grid::ymin = -6.9 +grid::zmin = -9.3 +grid::xmax = 4.8 +grid::ymax = 7.2 +grid::zmax = 9.6 grid::mode = periodic IO::outdir = "hydrotoy_periodic" diff --git a/CarpetExtra/HydroToy/par/hydrotoy_periodic_coarse.par b/CarpetExtra/HydroToy/par/hydrotoy_periodic_coarse.par index a80662039..a047c4908 100644 --- a/CarpetExtra/HydroToy/par/hydrotoy_periodic_coarse.par +++ b/CarpetExtra/HydroToy/par/hydrotoy_periodic_coarse.par @@ -7,7 +7,7 @@ # @enddesc # @@*/ # -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/HydroToy/par/hydrotoy_periodic_coarse.par,v 1.2 2001/03/30 00:50:45 eschnett Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/HydroToy/par/hydrotoy_periodic_coarse.par,v 1.3 2001/04/23 08:10:18 schnetter Exp $ ActiveThorns = "Boundary IOBasic IOUtil Time Cart3d Carpet CarpetIOASCII CarpetIOFlexIO CarpetLib CarpetSlab IDHydroToy HydroToy" @@ -19,17 +19,19 @@ Cactus::cctk_itlast = 60 Time::dtfac = 0.5 -driver::global_nx = 17 -driver::global_ny = 24 -driver::global_nz = 32 +driver::global_nx = 19 +driver::global_ny = 26 +driver::global_nz = 34 + +driver::ghost_size = 2 grid::type = byrange -grid::xmin = -4.8 -grid::ymin = -6.6 -grid::zmin = -9.0 -grid::xmax = 4.8 -grid::ymax = 7.2 -grid::zmax = 9.6 +grid::xmin = -5.4 +grid::ymin = -7.2 +grid::zmin = -9.6 +grid::xmax = 5.4 +grid::ymax = 7.8 +grid::zmax = 10.2 grid::mode = periodic IO::outdir = "hydrotoy_periodic_coarse" diff --git a/CarpetExtra/HydroToy/par/hydrotoy_periodic_coarse_rl2.par b/CarpetExtra/HydroToy/par/hydrotoy_periodic_coarse_rl2.par index 1588d1926..7f08bca65 100644 --- a/CarpetExtra/HydroToy/par/hydrotoy_periodic_coarse_rl2.par +++ b/CarpetExtra/HydroToy/par/hydrotoy_periodic_coarse_rl2.par @@ -7,7 +7,7 @@ # @enddesc # @@*/ # -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/HydroToy/par/hydrotoy_periodic_coarse_rl2.par,v 1.3 2001/03/30 00:50:45 eschnett Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/HydroToy/par/hydrotoy_periodic_coarse_rl2.par,v 1.4 2001/04/23 08:10:18 schnetter Exp $ ActiveThorns = "Boundary IOBasic IOUtil Time Cart3d Carpet CarpetIOASCII CarpetIOFlexIO CarpetLib CarpetSlab IDHydroToy HydroToy" @@ -19,21 +19,23 @@ Cactus::cctk_itlast = 120 Time::dtfac = 0.5 -driver::global_nx = 17 -driver::global_ny = 24 -driver::global_nz = 32 +driver::global_nx = 19 +driver::global_ny = 26 +driver::global_nz = 34 + +driver::ghost_size = 2 Carpet::max_refinement_levels = 2 Carpet::prolongation_order_space= 3 Carpet::prolongation_order_time = 2 grid::type = byrange -grid::xmin = -4.8 -grid::ymin = -6.6 -grid::zmin = -9.0 -grid::xmax = 4.8 -grid::ymax = 7.2 -grid::zmax = 9.6 +grid::xmin = -5.4 +grid::ymin = -7.2 +grid::zmin = -9.6 +grid::xmax = 5.4 +grid::ymax = 7.8 +grid::zmax = 10.2 grid::mode = periodic IO::outdir = "hydrotoy_periodic_coarse_rl2" diff --git a/CarpetExtra/HydroToy/par/hydrotoy_periodic_coarse_rl3.par b/CarpetExtra/HydroToy/par/hydrotoy_periodic_coarse_rl3.par index 182e537ec..5f9cf7790 100644 --- a/CarpetExtra/HydroToy/par/hydrotoy_periodic_coarse_rl3.par +++ b/CarpetExtra/HydroToy/par/hydrotoy_periodic_coarse_rl3.par @@ -7,7 +7,7 @@ # @enddesc # @@*/ # -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/HydroToy/par/hydrotoy_periodic_coarse_rl3.par,v 1.3 2001/03/30 00:50:45 eschnett Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/HydroToy/par/hydrotoy_periodic_coarse_rl3.par,v 1.4 2001/04/23 08:10:18 schnetter Exp $ ActiveThorns = "Boundary IOBasic IOUtil Time Cart3d Carpet CarpetIOASCII CarpetIOFlexIO CarpetLib CarpetSlab IDHydroToy HydroToy" @@ -19,21 +19,23 @@ Cactus::cctk_itlast = 240 Time::dtfac = 0.5 -driver::global_nx = 17 -driver::global_ny = 24 -driver::global_nz = 32 +driver::global_nx = 19 +driver::global_ny = 26 +driver::global_nz = 34 + +driver::ghost_size = 2 Carpet::max_refinement_levels = 3 Carpet::prolongation_order_space= 3 Carpet::prolongation_order_time = 2 grid::type = byrange -grid::xmin = -4.8 -grid::ymin = -6.6 -grid::zmin = -9.0 -grid::xmax = 4.8 -grid::ymax = 7.2 -grid::zmax = 9.6 +grid::xmin = -5.4 +grid::ymin = -7.2 +grid::zmin = -9.6 +grid::xmax = 5.4 +grid::ymax = 7.8 +grid::zmax = 10.2 grid::mode = periodic IO::outdir = "hydrotoy_periodic_coarse_rl3" diff --git a/CarpetExtra/HydroToy/par/hydrotoy_periodic_rl2.par b/CarpetExtra/HydroToy/par/hydrotoy_periodic_rl2.par index 7bb9ca230..5b1fe7f03 100644 --- a/CarpetExtra/HydroToy/par/hydrotoy_periodic_rl2.par +++ b/CarpetExtra/HydroToy/par/hydrotoy_periodic_rl2.par @@ -7,7 +7,7 @@ # @enddesc # @@*/ # -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/HydroToy/par/hydrotoy_periodic_rl2.par,v 1.3 2001/03/30 00:50:45 eschnett Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/HydroToy/par/hydrotoy_periodic_rl2.par,v 1.4 2001/04/23 08:10:18 schnetter Exp $ ActiveThorns = "Boundary IOBasic IOUtil Time Cart3d Carpet CarpetIOASCII CarpetIOFlexIO CarpetLib CarpetSlab IDHydroToy HydroToy" @@ -19,21 +19,23 @@ Cactus::cctk_itlast = 240 Time::dtfac = 0.5 -driver::global_nx = 32 -driver::global_ny = 46 -driver::global_nz = 62 +driver::global_nx = 34 +driver::global_ny = 48 +driver::global_nz = 64 + +driver::ghost_size = 2 Carpet::max_refinement_levels = 2 Carpet::prolongation_order_space= 3 Carpet::prolongation_order_time = 2 grid::type = byrange -grid::xmin = -4.8 -grid::ymin = -6.6 -grid::zmin = -9.0 -grid::xmax = 4.5 -grid::ymax = 6.9 -grid::zmax = 9.3 +grid::xmin = -5.1 +grid::ymin = -6.9 +grid::zmin = -9.3 +grid::xmax = 4.8 +grid::ymax = 7.2 +grid::zmax = 9.6 grid::mode = periodic IO::outdir = "hydrotoy_periodic_rl2" diff --git a/CarpetExtra/HydroToy/par/hydrotoy_periodic_rl3.par b/CarpetExtra/HydroToy/par/hydrotoy_periodic_rl3.par index dd82cc821..d1fd53bbb 100644 --- a/CarpetExtra/HydroToy/par/hydrotoy_periodic_rl3.par +++ b/CarpetExtra/HydroToy/par/hydrotoy_periodic_rl3.par @@ -7,7 +7,7 @@ # @enddesc # @@*/ # -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/HydroToy/par/hydrotoy_periodic_rl3.par,v 1.3 2001/03/30 00:50:45 eschnett Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/HydroToy/par/hydrotoy_periodic_rl3.par,v 1.4 2001/04/23 08:10:18 schnetter Exp $ ActiveThorns = "Boundary IOBasic IOUtil Time Cart3d Carpet CarpetIOASCII CarpetIOFlexIO CarpetLib CarpetSlab IDHydroToy HydroToy" @@ -19,21 +19,23 @@ Cactus::cctk_itlast = 480 Time::dtfac = 0.5 -driver::global_nx = 32 -driver::global_ny = 46 -driver::global_nz = 62 +driver::global_nx = 34 +driver::global_ny = 48 +driver::global_nz = 64 + +driver::ghost_size = 2 Carpet::max_refinement_levels = 3 Carpet::prolongation_order_space= 3 Carpet::prolongation_order_time = 2 grid::type = byrange -grid::xmin = -4.8 -grid::ymin = -6.6 -grid::zmin = -9.0 -grid::xmax = 4.5 -grid::ymax = 6.9 -grid::zmax = 9.3 +grid::xmin = -5.1 +grid::ymin = -6.9 +grid::zmin = -9.3 +grid::xmax = 4.8 +grid::ymax = 7.2 +grid::zmax = 9.6 grid::mode = periodic IO::outdir = "hydrotoy_periodic_rl3" diff --git a/CarpetExtra/HydroToy/src/HydroToy.F77 b/CarpetExtra/HydroToy/src/HydroToy.F77 index dcffc75f9..4797162c4 100644 --- a/CarpetExtra/HydroToy/src/HydroToy.F77 +++ b/CarpetExtra/HydroToy/src/HydroToy.F77 @@ -1,5 +1,5 @@ c -*-Fortran-*- -c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/HydroToy/src/HydroToy.F77,v 1.4 2001/03/26 02:28:36 eschnett Exp $ +c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/HydroToy/src/HydroToy.F77,v 1.5 2001/04/23 08:10:19 schnetter Exp $ #include "cctk.h" #include "cctk_Parameters.h" @@ -22,10 +22,10 @@ c Copy do j=1,cctk_lsh(2) do i=1,cctk_lsh(1) - u_i(i,j,k) = u(i,j,k) - vx_i(i,j,k) = vx(i,j,k) - vy_i(i,j,k) = vy(i,j,k) - vz_i(i,j,k) = vz(i,j,k) + u_i(i,j,k) = u_p(i,j,k) + vx_i(i,j,k) = vx_p(i,j,k) + vy_i(i,j,k) = vy_p(i,j,k) + vz_i(i,j,k) = vz_p(i,j,k) end do end do @@ -59,10 +59,10 @@ c Copy do j=1,cctk_lsh(2) do i=1,cctk_lsh(1) - u_i(i,j,k) = u_n(i,j,k) - vx_i(i,j,k) = vx_n(i,j,k) - vy_i(i,j,k) = vy_n(i,j,k) - vz_i(i,j,k) = vz_n(i,j,k) + u_i(i,j,k) = u(i,j,k) + vx_i(i,j,k) = vx(i,j,k) + vy_i(i,j,k) = vy(i,j,k) + vz_i(i,j,k) = vz(i,j,k) end do end do @@ -76,10 +76,10 @@ c Average do j=1,cctk_lsh(2) do i=1,cctk_lsh(1) - u_n(i,j,k) = half * (u(i,j,k) + u_n(i,j,k)) - vx_n(i,j,k) = half * (vx(i,j,k) + vx_n(i,j,k)) - vy_n(i,j,k) = half * (vy(i,j,k) + vy_n(i,j,k)) - vz_n(i,j,k) = half * (vz(i,j,k) + vz_n(i,j,k)) + u(i,j,k) = half * (u_p(i,j,k) + u(i,j,k)) + vx(i,j,k) = half * (vx_p(i,j,k) + vx(i,j,k)) + vy(i,j,k) = half * (vy_p(i,j,k) + vy(i,j,k)) + vz(i,j,k) = half * (vz_p(i,j,k) + vz(i,j,k)) end do end do @@ -109,20 +109,20 @@ c Apply boundaries dt = CCTK_DELTA_TIME c Evolve - do k=2,cctk_lsh(3)-1 - do j=2,cctk_lsh(2)-1 - do i=2,cctk_lsh(1)-1 + do k=1+cctk_nghostzones(3),cctk_lsh(3)-cctk_nghostzones(3) + do j=1+cctk_nghostzones(2),cctk_lsh(2)-cctk_nghostzones(2) + do i=1+cctk_nghostzones(1),cctk_lsh(1)-cctk_nghostzones(1) - u_n(i,j,k) = u_i(i,j,k) + u(i,j,k) = u_i(i,j,k) $ + dt * (vx_i(i+1,j,k) - vx_i(i-1,j,k)) / (2*dx) $ + dt * (vy_i(i,j+1,k) - vy_i(i,j-1,k)) / (2*dy) $ + dt * (vz_i(i,j,k+1) - vz_i(i,j,k-1)) / (2*dz) - vx_n(i,j,k) = vx_i(i,j,k) + vx(i,j,k) = vx_i(i,j,k) $ + dt * (u_i(i+1,j,k) - u_i(i-1,j,k)) / (2*dx) - vy_n(i,j,k) = vy_i(i,j,k) + vy(i,j,k) = vy_i(i,j,k) $ + dt * (u_i(i,j+1,k) - u_i(i,j-1,k)) / (2*dy) - vz_n(i,j,k) = vz_i(i,j,k) + vz(i,j,k) = vz_i(i,j,k) $ + dt * (u_i(i,j,k+1) - u_i(i,j,k-1)) / (2*dz) end do @@ -144,15 +144,17 @@ c Evolve CCTK_REAL zero, one parameter (zero=0, one=1) - CCTK_REAL finf, npow - parameter (finf=1, npow=1) + CCTK_REAL finf + parameter (finf=1) + integer npow + parameter (npow=1) integer sw(3) integer ierr - sw(1) = 1 - sw(2) = 1 - sw(3) = 1 + 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 diff --git a/CarpetExtra/SpaceTimeToy/par/convtest.gnuplot b/CarpetExtra/SpaceTimeToy/par/convtest.gnuplot index 17c3c4bf4..a1042c939 100644 --- a/CarpetExtra/SpaceTimeToy/par/convtest.gnuplot +++ b/CarpetExtra/SpaceTimeToy/par/convtest.gnuplot @@ -9,17 +9,17 @@ omega=sqrt(kx**2 + ky**2 + kz**2) # without refinement # solutions -p "spacetimetoy_periodic/phi.zl" u 8:($1==time&&$3==0?$9:0/0) w lp, "spacetimetoy_periodic_coarse/phi.zl" u (2*$8):(2*$1==time&&$3==0?$9:0/0) w lp, cos((kz*(0.3*x-9) + omega*(0.15*time))*pi) w l +p "spacetimetoy_periodic/phi.zl" u ($8-1):($1==time&&$3==0?$9:0/0) w lp, "spacetimetoy_periodic_coarse/phi.zl" u (2*($8-1)):(2*$1==time&&$3==0?$9:0/0) w lp, cos((kz*(0.3*x-9) + omega*(0.15*time))*pi) w l # errors -p "spacetimetoy_periodic/phi.zl" u 8:($1==time&&$3==0?$9-cos((kz*(0.3*$8-9) + omega*(0.15*time))*pi):0/0) w lp, "spacetimetoy_periodic_coarse/phi.zl" u (2*$8):(2*$1==time&&$3==0?$9-cos((kz*(0.3*(2*$8)-9) + omega*(0.15*time))*pi):0/0) w lp +p "spacetimetoy_periodic/phi.zl" u ($8-1):($1==time&&$3==0?$9-cos((kz*(0.3*($8-1)-9) + omega*(0.15*time))*pi):0/0) w lp, "spacetimetoy_periodic_coarse/phi.zl" u (2*$8):(2*$1==time&&$3==0?$9-cos((kz*(0.3*(2*($8-1))-9) + omega*(0.15*time))*pi):0/0) w lp # with refinement # solutions -p "spacetimetoy_periodic_rl2/phi.zl" u 8:($1==time&&$3==0?$9:0/0) w lp, "spacetimetoy_periodic_coarse_rl2/phi.zl" u (2*$8):(2*$1==time&&$3==0?$9:0/0) w lp, cos((kz*(0.15*x-9) + omega*(0.075*time))*pi) w l +p "spacetimetoy_periodic_rl2/phi.zl" u ($8-2):($1==time&&$3==0?$9:0/0) w lp, "spacetimetoy_periodic_coarse_rl2/phi.zl" u (2*($8-2)):(2*$1==time&&$3==0?$9:0/0) w lp, cos((kz*(0.15*x-9) + omega*(0.075*time))*pi) w l # errors -p "spacetimetoy_periodic_rl2/phi.zl" u 8:($1==time&&$3==0?$9-cos((kz*(0.15*$8-9) + omega*(0.075*time))*pi):0/0) w lp, "spacetimetoy_periodic_coarse_rl2/phi.zl" u (2*$8):(2*$1==time&&$3==0?$9-cos((kz*(0.15*(2*$8)-9) + omega*(0.075*time))*pi):0/0) w lp +p "spacetimetoy_periodic_rl2/phi.zl" u ($8-2):($1==time&&$3==0?$9-cos((kz*(0.15*($8-2)-9) + omega*(0.075*time))*pi):0/0) w lp, "spacetimetoy_periodic_coarse_rl2/phi.zl" u (2*($8-2)):(2*$1==time&&$3==0?$9-cos((kz*(0.15*(2*($8-2))-9) + omega*(0.075*time))*pi):0/0) w lp diff --git a/CarpetExtra/SpaceTimeToy/par/convtest_double.gnuplot b/CarpetExtra/SpaceTimeToy/par/convtest_double.gnuplot index bd9f2dee1..660430e24 100644 --- a/CarpetExtra/SpaceTimeToy/par/convtest_double.gnuplot +++ b/CarpetExtra/SpaceTimeToy/par/convtest_double.gnuplot @@ -9,27 +9,28 @@ omega=sqrt(kx**2 + ky**2 + kz**2) # compare to uncoupled systems # coarse solutions -p "spacetimetoy_periodic_coarse/phi.zl" u (2*$8):(2*$1==time&&$3==0?$9:0/0) w lp, "hydrotoy_periodic_coarse/u.zl" u (2*$8):(2*$1==time&&$3==0?$9:0/0) w lp, "doubletoy_periodic_coarse/phi.zl" u (2*$8):(2*$1==time&&$3==0?$9:0/0) w lp, "doubletoy_periodic_coarse/u.zl" u (2*$8):(2*$1==time&&$3==0?$9:0/0) w lp, cos((kz*(0.3*x-9) + omega*(0.15*time))*pi) w l +p "spacetimetoy_periodic_coarse/phi.zl" u (2*($8-1)):(2*$1==time&&$3==0?$9:0/0) w lp, "hydrotoy_periodic_coarse/u.zl" u (2*($8-1)):(2*$1==time&&$3==0?$9:0/0) w lp, "doubletoy_periodic_coarse/phi.zl" u (2*($8-1)):(2*$1==time&&$3==0?$9:0/0) w lp, "doubletoy_periodic_coarse/u.zl" u (2*($8-1)):(2*$1==time&&$3==0?$9:0/0) w lp, cos((kz*(0.3*x-9) + omega*(0.15*time))*pi) w l # fine solutions -p "spacetimetoy_periodic/phi.zl" u 8:($1==time&&$3==0?$9:0/0) w lp, "hydrotoy_periodic/u.zl" u 8:($1==time&&$3==0?$9:0/0) w lp, "doubletoy_periodic/phi.zl" u 8:($1==time&&$3==0?$9:0/0) w lp, "doubletoy_periodic/u.zl" u 8:($1==time&&$3==0?$9:0/0) w lp, cos((kz*(0.3*x-9) + omega*(0.15*time))*pi) w l +p "spacetimetoy_periodic/phi.zl" u ($8-2):($1==time&&$3==0?$9:0/0) w lp, "hydrotoy_periodic/u.zl" u ($8-2):($1==time&&$3==0?$9:0/0) w lp, "doubletoy_periodic/phi.zl" u ($8-2):($1==time&&$3==0?$9:0/0) w lp, "doubletoy_periodic/u.zl" u ($8-2):($1==time&&$3==0?$9:0/0) w lp, cos((kz*(0.3*x-9) + omega*(0.15*time))*pi) w l # without refinement # solutions -p "doubletoy_periodic/phi.zl" u 8:($1==time&&$3==0?$9:0/0) w lp, "doubletoy_periodic_coarse/phi.zl" u (2*$8):(2*$1==time&&$3==0?$9:0/0) w lp, cos((kz*(0.3*x-9) + omega*(0.15*time))*pi) w l + +p "doubletoy_periodic/phi.zl" u ($8-1):($1==time&&$3==0?$9:0/0) w lp, "doubletoy_periodic_coarse/phi.zl" u (2*($8-1)):(2*$1==time&&$3==0?$9:0/0) w lp, cos((kz*(0.3*x-9) + omega*(0.15*time))*pi) w l # errors -p "doubletoy_periodic/phi.zl" u 8:($1==time&&$3==0?$9-cos((kz*(0.3*($8)-9) + omega*(0.15*time))*pi):0/0) w lp, "doubletoy_periodic_coarse/phi.zl" u (2*$8):(2*$1==time&&$3==0?$9-cos((kz*(0.3*(2*$8)-9) + omega*(0.15*time))*pi):0/0) w lp +p "doubletoy_periodic/phi.zl" u ($8-1):($1==time&&$3==0?$9-cos((kz*(0.3*($8-1)-9) + omega*(0.15*time))*pi):0/0) w lp, "doubletoy_periodic_coarse/phi.zl" u (2*$8):(2*$1==time&&$3==0?$9-cos((kz*(0.3*(2*($8-1))-9) + omega*(0.15*time))*pi):0/0) w lp # with refinement # solutions -p "doubletoy_periodic_rl2/phi.zl" u 8:($1==time&&$3==0?$9:0/0) w lp, "doubletoy_periodic_coarse_rl2/phi.zl" u (2*$8):(2*$1==time&&$3==0?$9:0/0) w lp, cos((kz*(0.15*x-9) + omega*(0.075*time))*pi) w l +p "doubletoy_periodic_rl2/phi.zl" u ($8-2):($1==time&&$3==0?$9:0/0) w lp, "doubletoy_periodic_coarse_rl2/phi.zl" u (2*($8-2)):(2*$1==time&&$3==0?$9:0/0) w lp, cos((kz*(0.15*x-9) + omega*(0.075*time))*pi) w l # errors -p "doubletoy_periodic_rl2/phi.zl" u 8:($1==time&&$3==0?$9-cos((kz*(0.15*($8)-9) + omega*(0.075*time))*pi):0/0) w lp, "doubletoy_periodic_coarse_rl2/phi.zl" u (2*$8):(2*$1==time&&$3==0?$9-cos((kz*(0.15*(2*$8)-9) + omega*(0.075*time))*pi):0/0) w lp +p "doubletoy_periodic_rl2/phi.zl" u ($8-2):($1==time&&$3==0?$9-cos((kz*(0.15*($8-2)-9) + omega*(0.075*time))*pi):0/0) w lp, "doubletoy_periodic_coarse_rl2/phi.zl" u (2*($8-2)):(2*$1==time&&$3==0?$9-cos((kz*(0.15*(2*($8-2))-9) + omega*(0.075*time))*pi):0/0) w lp diff --git a/CarpetExtra/SpaceTimeToy/par/doubletoy_periodic.par b/CarpetExtra/SpaceTimeToy/par/doubletoy_periodic.par index d985792fb..2c22914c6 100644 --- a/CarpetExtra/SpaceTimeToy/par/doubletoy_periodic.par +++ b/CarpetExtra/SpaceTimeToy/par/doubletoy_periodic.par @@ -7,7 +7,7 @@ # @enddesc # @@*/ # -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/doubletoy_periodic.par,v 1.2 2001/03/30 00:50:48 eschnett Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/doubletoy_periodic.par,v 1.3 2001/04/23 08:10:20 schnetter Exp $ ActiveThorns = "Boundary IOBasic IOUtil Time Cart3d Carpet CarpetIOASCII CarpetIOFlexIO CarpetLib CarpetSlab IDSpaceTimeToy SpaceTimeToy IDHydroToy HydroToy" @@ -19,17 +19,19 @@ Cactus::cctk_itlast = 120 Time::dtfac = 0.5 -driver::global_nx = 32 -driver::global_ny = 46 -driver::global_nz = 62 +driver::global_nx = 34 +driver::global_ny = 48 +driver::global_nz = 64 + +driver::ghost_size = 2 grid::type = byrange -grid::xmin = -4.8 -grid::ymin = -6.6 -grid::zmin = -9.0 -grid::xmax = 4.5 -grid::ymax = 6.9 -grid::zmax = 9.3 +grid::xmin = -5.1 +grid::ymin = -6.9 +grid::zmin = -9.3 +grid::xmax = 4.8 +grid::ymax = 7.2 +grid::zmax = 9.6 grid::mode = periodic IO::outdir = "doubletoy_periodic" diff --git a/CarpetExtra/SpaceTimeToy/par/doubletoy_periodic_coarse.par b/CarpetExtra/SpaceTimeToy/par/doubletoy_periodic_coarse.par index 4f38d9ca5..b4a2b41a4 100644 --- a/CarpetExtra/SpaceTimeToy/par/doubletoy_periodic_coarse.par +++ b/CarpetExtra/SpaceTimeToy/par/doubletoy_periodic_coarse.par @@ -7,7 +7,7 @@ # @enddesc # @@*/ # -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/doubletoy_periodic_coarse.par,v 1.2 2001/03/30 00:50:48 eschnett Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/doubletoy_periodic_coarse.par,v 1.3 2001/04/23 08:10:20 schnetter Exp $ ActiveThorns = "Boundary IOBasic IOUtil Time Cart3d Carpet CarpetIOASCII CarpetIOFlexIO CarpetLib CarpetSlab IDSpaceTimeToy SpaceTimeToy IDHydroToy HydroToy" @@ -19,17 +19,19 @@ Cactus::cctk_itlast = 60 Time::dtfac = 0.5 -driver::global_nx = 17 -driver::global_ny = 24 -driver::global_nz = 32 +driver::global_nx = 19 +driver::global_ny = 26 +driver::global_nz = 34 + +driver::ghost_size = 2 grid::type = byrange -grid::xmin = -4.8 -grid::ymin = -6.6 -grid::zmin = -9.0 -grid::xmax = 4.8 -grid::ymax = 7.2 -grid::zmax = 9.6 +grid::xmin = -5.4 +grid::ymin = -7.2 +grid::zmin = -9.6 +grid::xmax = 5.4 +grid::ymax = 7.8 +grid::zmax = 10.2 grid::mode = periodic IO::outdir = "doubletoy_periodic_coarse" diff --git a/CarpetExtra/SpaceTimeToy/par/doubletoy_periodic_coarse_rl2.par b/CarpetExtra/SpaceTimeToy/par/doubletoy_periodic_coarse_rl2.par index f0b08d896..549747e1f 100644 --- a/CarpetExtra/SpaceTimeToy/par/doubletoy_periodic_coarse_rl2.par +++ b/CarpetExtra/SpaceTimeToy/par/doubletoy_periodic_coarse_rl2.par @@ -7,7 +7,7 @@ # @enddesc # @@*/ # -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/doubletoy_periodic_coarse_rl2.par,v 1.3 2001/03/30 00:50:48 eschnett Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/doubletoy_periodic_coarse_rl2.par,v 1.4 2001/04/23 08:10:20 schnetter Exp $ ActiveThorns = "Boundary IOBasic IOUtil Time Cart3d Carpet CarpetIOASCII CarpetIOFlexIO CarpetLib CarpetSlab IDSpaceTimeToy SpaceTimeToy IDHydroToy HydroToy" @@ -19,21 +19,23 @@ Cactus::cctk_itlast = 120 Time::dtfac = 0.5 -driver::global_nx = 17 -driver::global_ny = 24 -driver::global_nz = 32 +driver::global_nx = 19 +driver::global_ny = 26 +driver::global_nz = 34 + +driver::ghost_size = 2 Carpet::max_refinement_levels = 2 Carpet::prolongation_order_space= 3 Carpet::prolongation_order_time = 2 grid::type = byrange -grid::xmin = -4.8 -grid::ymin = -6.6 -grid::zmin = -9.0 -grid::xmax = 4.8 -grid::ymax = 7.2 -grid::zmax = 9.6 +grid::xmin = -5.4 +grid::ymin = -7.2 +grid::zmin = -9.6 +grid::xmax = 5.4 +grid::ymax = 7.8 +grid::zmax = 10.2 grid::mode = periodic IO::outdir = "doubletoy_periodic_coarse_rl2" diff --git a/CarpetExtra/SpaceTimeToy/par/doubletoy_periodic_coarse_rl3.par b/CarpetExtra/SpaceTimeToy/par/doubletoy_periodic_coarse_rl3.par index c313ecff1..5b529f7d2 100644 --- a/CarpetExtra/SpaceTimeToy/par/doubletoy_periodic_coarse_rl3.par +++ b/CarpetExtra/SpaceTimeToy/par/doubletoy_periodic_coarse_rl3.par @@ -7,7 +7,7 @@ # @enddesc # @@*/ # -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/doubletoy_periodic_coarse_rl3.par,v 1.3 2001/03/30 00:50:48 eschnett Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/doubletoy_periodic_coarse_rl3.par,v 1.4 2001/04/23 08:10:20 schnetter Exp $ ActiveThorns = "Boundary IOBasic IOUtil Time Cart3d Carpet CarpetIOASCII CarpetIOFlexIO CarpetLib CarpetSlab IDSpaceTimeToy SpaceTimeToy IDHydroToy HydroToy" @@ -19,21 +19,23 @@ Cactus::cctk_itlast = 240 Time::dtfac = 0.5 -driver::global_nx = 17 -driver::global_ny = 24 -driver::global_nz = 32 +driver::global_nx = 19 +driver::global_ny = 26 +driver::global_nz = 34 + +driver::ghost_size = 2 Carpet::max_refinement_levels = 3 Carpet::prolongation_order_space= 3 Carpet::prolongation_order_time = 2 grid::type = byrange -grid::xmin = -4.8 -grid::ymin = -6.6 -grid::zmin = -9.0 -grid::xmax = 4.8 -grid::ymax = 7.2 -grid::zmax = 9.6 +grid::xmin = -5.4 +grid::ymin = -7.2 +grid::zmin = -9.6 +grid::xmax = 5.4 +grid::ymax = 7.8 +grid::zmax = 10.2 grid::mode = periodic IO::outdir = "doubletoy_periodic_coarse_rl3" diff --git a/CarpetExtra/SpaceTimeToy/par/doubletoy_periodic_rl2.par b/CarpetExtra/SpaceTimeToy/par/doubletoy_periodic_rl2.par index 63f308484..cd0233846 100644 --- a/CarpetExtra/SpaceTimeToy/par/doubletoy_periodic_rl2.par +++ b/CarpetExtra/SpaceTimeToy/par/doubletoy_periodic_rl2.par @@ -7,7 +7,7 @@ # @enddesc # @@*/ # -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/doubletoy_periodic_rl2.par,v 1.3 2001/03/30 00:50:48 eschnett Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/doubletoy_periodic_rl2.par,v 1.4 2001/04/23 08:10:20 schnetter Exp $ ActiveThorns = "Boundary IOBasic IOUtil Time Cart3d Carpet CarpetIOASCII CarpetIOFlexIO CarpetLib CarpetSlab IDSpaceTimeToy SpaceTimeToy IDHydroToy HydroToy" @@ -19,21 +19,23 @@ Cactus::cctk_itlast = 240 Time::dtfac = 0.5 -driver::global_nx = 32 -driver::global_ny = 46 -driver::global_nz = 62 +driver::global_nx = 34 +driver::global_ny = 48 +driver::global_nz = 64 + +driver::ghost_size = 2 Carpet::max_refinement_levels = 2 Carpet::prolongation_order_space= 3 Carpet::prolongation_order_time = 2 grid::type = byrange -grid::xmin = -4.8 -grid::ymin = -6.6 -grid::zmin = -9.0 -grid::xmax = 4.5 -grid::ymax = 6.9 -grid::zmax = 9.3 +grid::xmin = -5.1 +grid::ymin = -6.9 +grid::zmin = -9.3 +grid::xmax = 4.8 +grid::ymax = 7.2 +grid::zmax = 9.6 grid::mode = periodic IO::outdir = "doubletoy_periodic_rl2" diff --git a/CarpetExtra/SpaceTimeToy/par/doubletoy_periodic_rl3.par b/CarpetExtra/SpaceTimeToy/par/doubletoy_periodic_rl3.par index be4eeead0..fcb06b511 100644 --- a/CarpetExtra/SpaceTimeToy/par/doubletoy_periodic_rl3.par +++ b/CarpetExtra/SpaceTimeToy/par/doubletoy_periodic_rl3.par @@ -7,7 +7,7 @@ # @enddesc # @@*/ # -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/doubletoy_periodic_rl3.par,v 1.3 2001/03/30 00:50:48 eschnett Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/doubletoy_periodic_rl3.par,v 1.4 2001/04/23 08:10:20 schnetter Exp $ ActiveThorns = "Boundary IOBasic IOUtil Time Cart3d Carpet CarpetIOASCII CarpetIOFlexIO CarpetLib CarpetSlab IDSpaceTimeToy SpaceTimeToy IDHydroToy HydroToy" @@ -19,21 +19,23 @@ Cactus::cctk_itlast = 480 Time::dtfac = 0.5 -driver::global_nx = 32 -driver::global_ny = 46 -driver::global_nz = 62 +driver::global_nx = 34 +driver::global_ny = 48 +driver::global_nz = 64 + +driver::ghost_size = 2 Carpet::max_refinement_levels = 3 Carpet::prolongation_order_space= 3 Carpet::prolongation_order_time = 2 grid::type = byrange -grid::xmin = -4.8 -grid::ymin = -6.6 -grid::zmin = -9.0 -grid::xmax = 4.5 -grid::ymax = 6.9 -grid::zmax = 9.3 +grid::xmin = -5.1 +grid::ymin = -6.9 +grid::zmin = -9.3 +grid::xmax = 4.8 +grid::ymax = 7.2 +grid::zmax = 9.6 grid::mode = periodic IO::outdir = "doubletoy_periodic_rl3" diff --git a/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic.par b/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic.par index 98496c2ea..481e1f24d 100644 --- a/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic.par +++ b/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic.par @@ -7,7 +7,7 @@ # @enddesc # @@*/ # -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic.par,v 1.2 2001/03/30 00:50:48 eschnett Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic.par,v 1.3 2001/04/23 08:10:20 schnetter Exp $ ActiveThorns = "Boundary IOBasic IOUtil Time Cart3d Carpet CarpetIOASCII CarpetIOFlexIO CarpetLib CarpetSlab IDSpaceTimeToy SpaceTimeToy" @@ -19,17 +19,19 @@ Cactus::cctk_itlast = 120 Time::dtfac = 0.5 -driver::global_nx = 32 -driver::global_ny = 46 -driver::global_nz = 62 +driver::global_nx = 34 +driver::global_ny = 48 +driver::global_nz = 64 + +driver::ghost_size = 2 grid::type = byrange -grid::xmin = -4.8 -grid::ymin = -6.6 -grid::zmin = -9.0 -grid::xmax = 4.5 -grid::ymax = 6.9 -grid::zmax = 9.3 +grid::xmin = -5.1 +grid::ymin = -6.9 +grid::zmin = -9.3 +grid::xmax = 4.8 +grid::ymax = 7.2 +grid::zmax = 9.6 grid::mode = periodic IO::outdir = "spacetimetoy_periodic" diff --git a/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_coarse.par b/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_coarse.par index ca7fc2964..95b1884e9 100644 --- a/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_coarse.par +++ b/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_coarse.par @@ -7,7 +7,7 @@ # @enddesc # @@*/ # -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_coarse.par,v 1.4 2001/03/30 00:50:48 eschnett Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_coarse.par,v 1.5 2001/04/23 08:10:21 schnetter Exp $ ActiveThorns = "Boundary IOBasic IOUtil Time Cart3d Carpet CarpetIOASCII CarpetIOFlexIO CarpetLib CarpetSlab IDSpaceTimeToy SpaceTimeToy" @@ -19,17 +19,19 @@ Cactus::cctk_itlast = 60 Time::dtfac = 0.5 -driver::global_nx = 17 -driver::global_ny = 24 -driver::global_nz = 32 +driver::global_nx = 19 +driver::global_ny = 26 +driver::global_nz = 34 + +driver::ghost_size = 2 grid::type = byrange -grid::xmin = -4.8 -grid::ymin = -6.6 -grid::zmin = -9.0 -grid::xmax = 4.8 -grid::ymax = 7.2 -grid::zmax = 9.6 +grid::xmin = -5.4 +grid::ymin = -7.2 +grid::zmin = -9.6 +grid::xmax = 5.4 +grid::ymax = 7.8 +grid::zmax = 10.2 grid::mode = periodic IO::outdir = "spacetimetoy_periodic_coarse" diff --git a/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_coarse_rl2.par b/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_coarse_rl2.par index ab01833e1..df1ab595d 100644 --- a/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_coarse_rl2.par +++ b/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_coarse_rl2.par @@ -7,7 +7,7 @@ # @enddesc # @@*/ # -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_coarse_rl2.par,v 1.4 2001/03/30 00:50:48 eschnett Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_coarse_rl2.par,v 1.5 2001/04/23 08:10:21 schnetter Exp $ ActiveThorns = "Boundary IOBasic IOUtil Time Cart3d Carpet CarpetIOASCII CarpetIOFlexIO CarpetLib CarpetSlab IDSpaceTimeToy SpaceTimeToy" @@ -19,21 +19,23 @@ Cactus::cctk_itlast = 120 Time::dtfac = 0.5 -driver::global_nx = 17 -driver::global_ny = 24 -driver::global_nz = 32 +driver::global_nx = 19 +driver::global_ny = 26 +driver::global_nz = 34 + +driver::ghost_size = 2 Carpet::max_refinement_levels = 2 Carpet::prolongation_order_space= 3 Carpet::prolongation_order_time = 2 grid::type = byrange -grid::xmin = -4.8 -grid::ymin = -6.6 -grid::zmin = -9.0 -grid::xmax = 4.8 -grid::ymax = 7.2 -grid::zmax = 9.6 +grid::xmin = -5.4 +grid::ymin = -7.2 +grid::zmin = -9.6 +grid::xmax = 5.4 +grid::ymax = 7.8 +grid::zmax = 10.2 grid::mode = periodic IO::outdir = "spacetimetoy_periodic_coarse_rl2" diff --git a/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_coarse_rl3.par b/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_coarse_rl3.par index dfceb4631..ec078235d 100644 --- a/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_coarse_rl3.par +++ b/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_coarse_rl3.par @@ -7,7 +7,7 @@ # @enddesc # @@*/ # -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_coarse_rl3.par,v 1.5 2001/03/30 00:50:48 eschnett Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_coarse_rl3.par,v 1.6 2001/04/23 08:10:21 schnetter Exp $ ActiveThorns = "Boundary IOBasic IOUtil Time Cart3d Carpet CarpetIOASCII CarpetIOFlexIO CarpetLib CarpetSlab IDSpaceTimeToy SpaceTimeToy" @@ -19,21 +19,23 @@ Cactus::cctk_itlast = 240 Time::dtfac = 0.5 -driver::global_nx = 17 -driver::global_ny = 24 -driver::global_nz = 32 +driver::global_nx = 19 +driver::global_ny = 26 +driver::global_nz = 34 + +driver::ghost_size = 2 Carpet::max_refinement_levels = 3 Carpet::prolongation_order_space= 3 Carpet::prolongation_order_time = 2 grid::type = byrange -grid::xmin = -4.8 -grid::ymin = -6.6 -grid::zmin = -9.0 -grid::xmax = 4.8 -grid::ymax = 7.2 -grid::zmax = 9.6 +grid::xmin = -5.4 +grid::ymin = -7.2 +grid::zmin = -9.6 +grid::xmax = 5.4 +grid::ymax = 7.8 +grid::zmax = 10.2 grid::mode = periodic IO::outdir = "spacetimetoy_periodic_coarse_rl3" diff --git a/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_rl2.par b/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_rl2.par index c31d64ada..14175ee15 100644 --- a/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_rl2.par +++ b/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_rl2.par @@ -7,7 +7,7 @@ # @enddesc # @@*/ # -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_rl2.par,v 1.4 2001/03/30 00:50:48 eschnett Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_rl2.par,v 1.5 2001/04/23 08:10:21 schnetter Exp $ ActiveThorns = "Boundary IOBasic IOUtil Time Cart3d Carpet CarpetIOASCII CarpetIOFlexIO CarpetLib CarpetSlab IDSpaceTimeToy SpaceTimeToy" @@ -19,21 +19,23 @@ Cactus::cctk_itlast = 240 Time::dtfac = 0.5 -driver::global_nx = 32 -driver::global_ny = 46 -driver::global_nz = 62 +driver::global_nx = 34 +driver::global_ny = 48 +driver::global_nz = 64 + +driver::ghost_size = 2 Carpet::max_refinement_levels = 2 Carpet::prolongation_order_space= 3 Carpet::prolongation_order_time = 2 grid::type = byrange -grid::xmin = -4.8 -grid::ymin = -6.6 -grid::zmin = -9.0 -grid::xmax = 4.5 -grid::ymax = 6.9 -grid::zmax = 9.3 +grid::xmin = -5.1 +grid::ymin = -6.9 +grid::zmin = -9.3 +grid::xmax = 4.8 +grid::ymax = 7.2 +grid::zmax = 9.6 grid::mode = periodic IO::outdir = "spacetimetoy_periodic_rl2" diff --git a/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_rl3.par b/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_rl3.par index dcdf804a8..6dfb5e485 100644 --- a/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_rl3.par +++ b/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_rl3.par @@ -7,7 +7,7 @@ # @enddesc # @@*/ # -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_rl3.par,v 1.3 2001/03/30 00:50:48 eschnett Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_rl3.par,v 1.4 2001/04/23 08:10:21 schnetter Exp $ ActiveThorns = "Boundary IOBasic IOUtil Time Cart3d Carpet CarpetIOASCII CarpetIOFlexIO CarpetLib CarpetSlab IDSpaceTimeToy SpaceTimeToy" @@ -19,21 +19,23 @@ Cactus::cctk_itlast = 480 Time::dtfac = 0.5 -driver::global_nx = 32 -driver::global_ny = 46 -driver::global_nz = 62 +driver::global_nx = 34 +driver::global_ny = 48 +driver::global_nz = 64 + +driver::ghost_size = 2 Carpet::max_refinement_levels = 3 Carpet::prolongation_order_space= 3 Carpet::prolongation_order_time = 2 grid::type = byrange -grid::xmin = -4.8 -grid::ymin = -6.6 -grid::zmin = -9.0 -grid::xmax = 4.5 -grid::ymax = 6.9 -grid::zmax = 9.3 +grid::xmin = -5.1 +grid::ymin = -6.9 +grid::zmin = -9.3 +grid::xmax = 4.8 +grid::ymax = 7.2 +grid::zmax = 9.6 grid::mode = periodic IO::outdir = "spacetimetoy_periodic_rl3" diff --git a/CarpetExtra/SpaceTimeToy/src/SpaceTimeToy.F77 b/CarpetExtra/SpaceTimeToy/src/SpaceTimeToy.F77 index ecb245028..a5d8eab8c 100644 --- a/CarpetExtra/SpaceTimeToy/src/SpaceTimeToy.F77 +++ b/CarpetExtra/SpaceTimeToy/src/SpaceTimeToy.F77 @@ -1,5 +1,5 @@ c -*-Fortran-*- -c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/src/SpaceTimeToy.F77,v 1.7 2001/03/26 02:29:24 eschnett Exp $ +c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/src/SpaceTimeToy.F77,v 1.8 2001/04/23 08:10:22 schnetter Exp $ #include "cctk.h" #include "cctk_Parameters.h" @@ -22,8 +22,8 @@ c Copy do j=1,cctk_lsh(2) do i=1,cctk_lsh(1) - phi_i(i,j,k) = phi(i,j,k) - psi_i(i,j,k) = psi(i,j,k) + phi_i(i,j,k) = phi_p(i,j,k) + psi_i(i,j,k) = psi_p(i,j,k) end do end do @@ -35,10 +35,10 @@ c Copy do j=1,cctk_lsh(2) do i=1,cctk_lsh(1) - u_i(i,j,k) = u(i,j,k) - vx_i(i,j,k) = vx(i,j,k) - vy_i(i,j,k) = vy(i,j,k) - vz_i(i,j,k) = vz(i,j,k) + u_i(i,j,k) = u_p(i,j,k) + vx_i(i,j,k) = vx_p(i,j,k) + vy_i(i,j,k) = vy_p(i,j,k) + vz_i(i,j,k) = vz_p(i,j,k) end do end do @@ -96,8 +96,8 @@ c Average do j=1,cctk_lsh(2) do i=1,cctk_lsh(1) - phi_i(i,j,k) = half * (phi(i,j,k) + phi_n(i,j,k)) - psi_i(i,j,k) = half * (psi(i,j,k) + psi_n(i,j,k)) + phi_i(i,j,k) = half * (phi_p(i,j,k) + phi(i,j,k)) + psi_i(i,j,k) = half * (psi_p(i,j,k) + psi(i,j,k)) end do end do @@ -109,10 +109,10 @@ c Average do j=1,cctk_lsh(2) do i=1,cctk_lsh(1) - u_i(i,j,k) = half * (u(i,j,k) + u_n(i,j,k)) - vx_i(i,j,k) = half * (vx(i,j,k) + vx_n(i,j,k)) - vy_i(i,j,k) = half * (vy(i,j,k) + vy_n(i,j,k)) - vz_i(i,j,k) = half * (vz(i,j,k) + vz_n(i,j,k)) + u_i(i,j,k) = half * (u_p(i,j,k) + u(i,j,k)) + vx_i(i,j,k) = half * (vx_p(i,j,k) + vx(i,j,k)) + vy_i(i,j,k) = half * (vy_p(i,j,k) + vy(i,j,k)) + vz_i(i,j,k) = half * (vz_p(i,j,k) + vz(i,j,k)) end do end do @@ -168,15 +168,15 @@ c Step ICN iterations dt = CCTK_DELTA_TIME c Evolve - do k=2,cctk_lsh(3)-1 - do j=2,cctk_lsh(2)-1 - do i=2,cctk_lsh(1)-1 + do k=1+cctk_nghostzones(3),cctk_lsh(3)-cctk_nghostzones(3) + do j=1+cctk_nghostzones(2),cctk_lsh(2)-cctk_nghostzones(2) + do i=1+cctk_nghostzones(1),cctk_lsh(1)-cctk_nghostzones(1) - phi_n(i,j,k) = phi(i,j,k) + phi(i,j,k) = phi_p(i,j,k) $ + dt * psi_i(i,j,k) $ + dt * u_i(i,j,k) - psi_n(i,j,k) = psi(i,j,k) + psi(i,j,k) = psi_p(i,j,k) $ + dt * (phi_i(i-1,j,k) - 2*phi_i(i,j,k) + phi_i(i+1,j,k)) / dx**2 $ + dt * (phi_i(i,j-1,k) - 2*phi_i(i,j,k) + phi_i(i,j+1,k)) / dy**2 $ + dt * (phi_i(i,j,k-1) - 2*phi_i(i,j,k) + phi_i(i,j,k+1)) / dz**2 @@ -203,15 +203,17 @@ c Evolve CCTK_REAL zero, one parameter (zero=0, one=1) - CCTK_REAL finf, npow - parameter (finf=1, npow=1) + CCTK_REAL finf + parameter (finf=1) + integer npow + parameter (npow=1) integer sw(3) integer ierr - sw(1) = 1 - sw(2) = 1 - sw(3) = 1 + 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 diff --git a/CarpetExtra/WaveToyF77/src/WaveToy.F77 b/CarpetExtra/WaveToyF77/src/WaveToy.F77 index adcdea62a..bbdf70457 100644 --- a/CarpetExtra/WaveToyF77/src/WaveToy.F77 +++ b/CarpetExtra/WaveToyF77/src/WaveToy.F77 @@ -65,13 +65,13 @@ c ----------------- dy2i = 1/dy2 dz2i = 1/dz2 - istart = 2 - jstart = 2 - kstart = 2 + istart = 1+cctk_nghostzones(1) + jstart = 1+cctk_nghostzones(2) + kstart = 1+cctk_nghostzones(3) - iend = cctk_lsh(1)-1 - jend = cctk_lsh(2)-1 - kend = cctk_lsh(3)-1 + iend = cctk_lsh(1)-cctk_nghostzones(1) + jend = cctk_lsh(2)-cctk_nghostzones(2) + kend = cctk_lsh(3)-cctk_nghostzones(3) factor = 2 * (1 - dt2 * (dx2i + dy2i + dz2i)) @@ -81,11 +81,11 @@ c ---------------- do j = jstart, jend do i = istart, iend - phi_n(i,j,k) = factor*phi(i,j,k) - - $ phi_p(i,j,k) + (dt2) * - $ ((phi(i+1,j,k)+phi(i-1,j,k))*dx2i - $ +(phi(i,j+1,k)+phi(i,j-1,k))*dy2i - $ +(phi(i,j,k+1)+phi(i,j,k-1))*dz2i) + phi(i,j,k) = factor*phi_p(i,j,k) - + $ phi_p_p(i,j,k) + (dt2) * + $ ((phi_p(i+1,j,k)+phi_p(i-1,j,k))*dx2i + $ +(phi_p(i,j+1,k)+phi_p(i,j-1,k))*dy2i + $ +(phi_p(i,j,k+1)+phi_p(i,j,k-1))*dz2i) end do end do @@ -132,9 +132,9 @@ c call CCTK_INFO ("WaveToyF77_Boundaries") c Set the stencil width c --------------------- - sw(1) = 1 - sw(2) = 1 - sw(3) = 1 + sw(1) = cctk_nghostzones(1) + sw(2) = cctk_nghostzones(2) + sw(3) = cctk_nghostzones(3) c Apply the outer boundary conditions c ----------------------------------- |