aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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 -----------------------------------