aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorschnetter <>2001-04-23 06:10:00 +0000
committerschnetter <>2001-04-23 06:10:00 +0000
commit3c8cafa058889929160d7019304b99fab0656df8 (patch)
tree46dd47a05e490ed976623074c18bcdac45787c81
parentbcf0f1685d561b33bb1b0c1e033adb4a145767d3 (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
-rw-r--r--Carpet/Carpet/doc/TODO7
-rw-r--r--Carpet/Carpet/param.ccl8
-rw-r--r--Carpet/Carpet/src/carpet.cc410
-rw-r--r--Carpet/Carpet/src/carpet.hh5
-rw-r--r--Carpet/CarpetIOASCII/src/ioascii.cc4
-rw-r--r--Carpet/CarpetLib/src/dh.cc28
-rw-r--r--Carpet/CarpetLib/src/dh.hh10
-rw-r--r--Carpet/CarpetLib/src/ggf.cc14
-rw-r--r--Carpet/CarpetSlab/src/carpetslab.cc6
-rw-r--r--CarpetAttic/CarpetIOFlexIO/src/ioflexio.cc6
-rwxr-xr-xCarpetAttic/Cart3dTest/utils/cmptest17
-rwxr-xr-xCarpetAttic/Cart3dTest/utils/mptest32
-rw-r--r--CarpetExtra/HydroToy/par/convtest.gnuplot8
-rw-r--r--CarpetExtra/HydroToy/par/hydrotoy_periodic.par22
-rw-r--r--CarpetExtra/HydroToy/par/hydrotoy_periodic_coarse.par22
-rw-r--r--CarpetExtra/HydroToy/par/hydrotoy_periodic_coarse_rl2.par22
-rw-r--r--CarpetExtra/HydroToy/par/hydrotoy_periodic_coarse_rl3.par22
-rw-r--r--CarpetExtra/HydroToy/par/hydrotoy_periodic_rl2.par22
-rw-r--r--CarpetExtra/HydroToy/par/hydrotoy_periodic_rl3.par22
-rw-r--r--CarpetExtra/HydroToy/src/HydroToy.F7752
-rw-r--r--CarpetExtra/SpaceTimeToy/par/convtest.gnuplot8
-rw-r--r--CarpetExtra/SpaceTimeToy/par/convtest_double.gnuplot13
-rw-r--r--CarpetExtra/SpaceTimeToy/par/doubletoy_periodic.par22
-rw-r--r--CarpetExtra/SpaceTimeToy/par/doubletoy_periodic_coarse.par22
-rw-r--r--CarpetExtra/SpaceTimeToy/par/doubletoy_periodic_coarse_rl2.par22
-rw-r--r--CarpetExtra/SpaceTimeToy/par/doubletoy_periodic_coarse_rl3.par22
-rw-r--r--CarpetExtra/SpaceTimeToy/par/doubletoy_periodic_rl2.par22
-rw-r--r--CarpetExtra/SpaceTimeToy/par/doubletoy_periodic_rl3.par22
-rw-r--r--CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic.par22
-rw-r--r--CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_coarse.par22
-rw-r--r--CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_coarse_rl2.par22
-rw-r--r--CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_coarse_rl3.par22
-rw-r--r--CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_rl2.par22
-rw-r--r--CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_rl3.par22
-rw-r--r--CarpetExtra/SpaceTimeToy/src/SpaceTimeToy.F7748
-rw-r--r--CarpetExtra/WaveToyF77/src/WaveToy.F7728
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 -----------------------------------