aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Carpet/Carpet/interface.ccl9
-rw-r--r--Carpet/Carpet/param.ccl7
-rw-r--r--Carpet/Carpet/src/Evolve.cc23
-rw-r--r--Carpet/Carpet/src/Initialise.cc33
-rw-r--r--Carpet/Carpet/src/Recompose.cc97
-rw-r--r--Carpet/Carpet/src/SetupGH.cc7
-rw-r--r--Carpet/Carpet/src/carpet.hh5
-rw-r--r--Carpet/Carpet/src/functions.hh7
-rw-r--r--Carpet/CarpetLib/src/dh.cc8
-rw-r--r--Carpet/CarpetLib/src/dh.hh4
-rw-r--r--Carpet/CarpetLib/src/gf.cc4
-rw-r--r--Carpet/CarpetLib/src/ggf.cc122
-rw-r--r--Carpet/CarpetLib/src/ggf.hh4
-rw-r--r--Carpet/CarpetLib/src/gh.cc12
-rw-r--r--Carpet/CarpetLib/src/gh.hh6
-rw-r--r--Carpet/CarpetRegrid/interface.ccl32
-rw-r--r--Carpet/CarpetRegrid/param.ccl8
-rw-r--r--Carpet/CarpetRegrid/src/automatic.cc40
-rw-r--r--Carpet/CarpetRegrid/src/baselevel.cc12
-rw-r--r--Carpet/CarpetRegrid/src/centre.cc17
-rw-r--r--Carpet/CarpetRegrid/src/manualcoordinatelist.cc110
-rw-r--r--Carpet/CarpetRegrid/src/manualcoordinates.cc37
-rw-r--r--Carpet/CarpetRegrid/src/manualgridpointlist.cc17
-rw-r--r--Carpet/CarpetRegrid/src/manualgridpoints.cc33
-rw-r--r--Carpet/CarpetRegrid/src/moving.cc17
-rw-r--r--Carpet/CarpetRegrid/src/paramcheck.cc20
-rw-r--r--Carpet/CarpetRegrid/src/regrid.cc66
-rw-r--r--Carpet/CarpetRegrid/src/regrid.hh92
28 files changed, 368 insertions, 481 deletions
diff --git a/Carpet/Carpet/interface.ccl b/Carpet/Carpet/interface.ccl
index 9ed5c4cc3..79bf01f29 100644
--- a/Carpet/Carpet/interface.ccl
+++ b/Carpet/Carpet/interface.ccl
@@ -1,5 +1,5 @@
# Interface definition for thorn Carpet
-# $Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/interface.ccl,v 1.10 2004/03/29 16:14:14 hawke Exp $
+# $Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/interface.ccl,v 1.11 2004/04/18 13:29:43 schnetter Exp $
implements: Driver
@@ -79,13 +79,6 @@ USES FUNCTION ConvertFromExteriorBoundary
# gh<dim>::rbnds * obss,
# gh<dim>::rprocs * pss);
CCTK_INT FUNCTION Carpet_Regrid (CCTK_POINTER_TO_CONST IN cctkGH, \
- CCTK_INT IN reflevel, \
- CCTK_INT IN map, \
- CCTK_INT IN size, \
- CCTK_INT IN ARRAY nboundaryzones, \
- CCTK_INT IN ARRAY is_internal, \
- CCTK_INT IN ARRAY is_staggered, \
- CCTK_INT IN ARRAY shiftout, \
CCTK_POINTER IN bsss, \
CCTK_POINTER IN obss, \
CCTK_POINTER IN pss)
diff --git a/Carpet/Carpet/param.ccl b/Carpet/Carpet/param.ccl
index 5b8d32043..500137b7b 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.37 2004/03/24 08:38:07 schnetter Exp $
+# $Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/param.ccl,v 1.38 2004/04/18 13:29:43 schnetter Exp $
shares: Cactus
@@ -283,7 +283,10 @@ BOOLEAN init_each_timelevel "Call initial data routines once for each timelevel"
{
} "no"
-BOOLEAN prolongate_initial_data "Prolongate the refined regions during initial data generation" STEERABLE=always
+#BOOLEAN prolongate_initial_data "Prolongate the refined regions during initial data generation" STEERABLE=always
+#{
+#} "no"
+BOOLEAN prolongate_initial_data "unused" STEERABLE=always
{
} "no"
diff --git a/Carpet/Carpet/src/Evolve.cc b/Carpet/Carpet/src/Evolve.cc
index 24cf051a7..de7e35cbe 100644
--- a/Carpet/Carpet/src/Evolve.cc
+++ b/Carpet/Carpet/src/Evolve.cc
@@ -31,7 +31,7 @@
#include "carpet.hh"
extern "C" {
- static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/Evolve.cc,v 1.42 2004/03/23 19:41:11 schnetter Exp $";
+ static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/Evolve.cc,v 1.44 2004/04/18 13:29:43 schnetter Exp $";
CCTK_FILEVERSION(Carpet_Carpet_Evolve_cc);
}
@@ -134,11 +134,18 @@ namespace Carpet {
for (int rl=0; rl<reflevels; ++rl) {
const int do_every = maxreflevelfact / ipow(reffact, rl);
if (cgh->cctk_iteration % do_every == 0) {
-
- Checkpoint ("Regrid");
- Regrid (cgh, rl, rl+1, true);
-
- }
+ {
+ const int ml=0;
+ enter_global_mode (cgh, ml);
+ enter_level_mode (cgh, rl);
+
+ Checkpoint ("Regrid");
+ Regrid (cgh);
+
+ leave_level_mode (cgh);
+ leave_global_mode (cgh);
+ } // ml
+ } // if do_every
} // for rl
@@ -286,11 +293,11 @@ namespace Carpet {
// Analysis
Checkpoint ("Scheduling ANALYSIS");
CCTK_ScheduleTraverse ("CCTK_ANALYSIS", cgh, CallFunction);
-
+
// Output
Checkpoint ("OutputGH");
CCTK_OutputGH (cgh);
-
+
// Checking
CheckChecksums (cgh, alltimes);
diff --git a/Carpet/Carpet/src/Initialise.cc b/Carpet/Carpet/src/Initialise.cc
index afeefa764..bf4a8c06b 100644
--- a/Carpet/Carpet/src/Initialise.cc
+++ b/Carpet/Carpet/src/Initialise.cc
@@ -12,7 +12,7 @@
#include "carpet.hh"
extern "C" {
- static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/Initialise.cc,v 1.43 2004/03/23 19:43:59 schnetter Exp $";
+ static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/Initialise.cc,v 1.44 2004/04/18 13:29:43 schnetter Exp $";
CCTK_FILEVERSION(Carpet_Carpet_Initialise_cc);
}
@@ -98,10 +98,19 @@ namespace Carpet {
leave_level_mode (cgh);
} END_MGLEVEL_LOOP;
-
- // Regrid
- Checkpoint ("Regrid");
- Regrid (cgh, rl, rl+1, false);
+
+ {
+ const int ml=0;
+ enter_global_mode (cgh, ml);
+ enter_level_mode (cgh, rl);
+
+ // Regrid
+ Checkpoint ("Regrid");
+ Regrid (cgh);
+
+ leave_level_mode (cgh);
+ leave_global_mode (cgh);
+ } // ml
} // for rl
@@ -200,8 +209,18 @@ namespace Carpet {
} END_MGLEVEL_LOOP;
// Regrid
- Checkpoint ("Regrid");
- Regrid (cgh, rl, rl+1, prolongate_initial_data);
+ {
+ const int ml=0;
+ enter_global_mode (cgh, ml);
+ enter_level_mode (cgh, rl);
+
+ // Regrid
+ Checkpoint ("Regrid");
+ Regrid (cgh);
+
+ leave_level_mode (cgh);
+ leave_global_mode (cgh);
+ } // ml
} // for rl
diff --git a/Carpet/Carpet/src/Recompose.cc b/Carpet/Carpet/src/Recompose.cc
index 50d0eb3cf..402857f03 100644
--- a/Carpet/Carpet/src/Recompose.cc
+++ b/Carpet/Carpet/src/Recompose.cc
@@ -27,7 +27,7 @@
#include "modes.hh"
extern "C" {
- static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/Recompose.cc,v 1.63 2004/03/23 19:50:26 schnetter Exp $";
+ static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/Recompose.cc,v 1.64 2004/04/18 13:29:43 schnetter Exp $";
CCTK_FILEVERSION(Carpet_Carpet_Recompose_cc);
}
@@ -119,10 +119,9 @@ namespace Carpet {
- void Regrid (const cGH* cgh, const int rl,
- const int initialise_from, const bool do_prolongate)
+ void Regrid (const cGH* cgh)
{
- assert (is_meta_mode());
+ assert (is_level_mode());
if (! CCTK_IsFunctionAliased ("Carpet_Regrid")) {
static bool didtell = false;
@@ -133,45 +132,36 @@ namespace Carpet {
return;
}
- for (int m=0; m<maps; ++m) {
-
- jjvect nboundaryzones, is_internal, is_staggered, shiftout;
- CCTK_INT const ierr = GetBoundarySpecification
- (2*dim, &nboundaryzones[0][0], &is_internal[0][0],
- &is_staggered[0][0], &shiftout[0][0]);
- assert (!ierr);
+ BEGIN_MAP_LOOP(cgh, CCTK_GF) {
- gh<dim>::rexts bbsss = vhh.at(m)->extents;
- gh<dim>::rbnds obss = vhh.at(m)->outer_boundaries;
- gh<dim>::rprocs pss = vhh.at(m)->processors;
+ gh<dim>::rexts bbsss = vhh.at(map)->extents;
+ gh<dim>::rbnds obss = vhh.at(map)->outer_boundaries;
+ gh<dim>::rprocs pss = vhh.at(map)->processors;
// Check whether to recompose
- CCTK_INT const do_recompose = Carpet_Regrid
- (cgh, rl, m,
- 2*dim, &nboundaryzones[0][0], &is_internal[0][0],
- &is_staggered[0][0], &shiftout[0][0],
- &bbsss, &obss, &pss);
+ CCTK_INT const do_recompose = Carpet_Regrid (cgh, &bbsss, &obss, &pss);
assert (do_recompose >= 0);
if (do_recompose) {
+ CCTK_INFO ("Recomposing the grid hierarchy");
+
// Check the regions
CheckRegions (bbsss, obss, pss);
// TODO: check also that the current and all coarser levels
// did not change
// Write grid structure to file
- OutputGridStructure (cgh, m, bbsss, obss, pss);
+ OutputGridStructure (cgh, map, bbsss, obss, pss);
// Recompose
- vhh.at(m)->recompose (bbsss, obss, pss,
- initialise_from, do_prolongate);
+ vhh.at(map)->recompose (bbsss, obss, pss);
- OutputGrids (cgh, m, *vhh.at(m));
+ OutputGrids (cgh, map, *vhh.at(map));
}
-
- } // for m
+
+ } END_MAP_LOOP;
// Calculate new number of levels
reflevels = vhh.at(0)->reflevels();
@@ -180,37 +170,13 @@ namespace Carpet {
}
// One cannot switch off the current level
- assert (reflevels>rl);
+ assert (reflevels > reflevel);
}
void OutputGrids (const cGH* cgh, const int m, const gh<dim>& hh)
{
- DECLARE_CCTK_PARAMETERS;
-
- if (verbose) {
- CCTK_INFO ("New bounding boxes:");
- for (int rl=0; rl<hh.reflevels(); ++rl) {
- for (int c=0; c<hh.components(rl); ++c) {
- for (int ml=0; ml<hh.mglevels(rl,c); ++ml) {
- cout << " m " << m << " rl " << rl << " c " << c
- << " ml " << ml
- << " bbox " << hh.extents.at(rl).at(c).at(ml)
- << endl;
- }
- }
- }
- CCTK_INFO ("New processor distribution:");
- for (int rl=0; rl<hh.reflevels(); ++rl) {
- for (int c=0; c<hh.components(rl); ++c) {
- cout << " m " << m << " rl " << rl << " c " << c
- << " processor " << hh.processors.at(rl).at(c) << endl;
- }
- }
- cout << endl;
- }
-
CCTK_INFO ("New grid structure (grid points):");
for (int rl=0; rl<hh.reflevels(); ++rl) {
for (int c=0; c<hh.components(rl); ++c) {
@@ -224,13 +190,17 @@ namespace Carpet {
assert (all(((upper - lower) * levfact / maxreflevelfact)
% convfact == 0));
cout << " [" << ml << "][" << rl << "][" << m << "][" << c << "]"
- << " exterior extent: "
+ << " exterior: "
+ << "proc "
+ << hh.processors.at(rl).at(c)
+ << " "
<< lower * levfact / maxreflevelfact
<< " : "
<< upper * levfact / maxreflevelfact
<< " ("
<< (upper - lower) * levfact / maxreflevelfact / convfact + 1
- << ")" << endl;
+ << ")"
+ << endl;
}
}
}
@@ -246,7 +216,7 @@ namespace Carpet {
const int convfact = ipow(mgfact, ml);
const int levfact = ipow(reffact, rl);
cout << " [" << ml << "][" << rl << "][" << m << "][" << c << "]"
- << " exterior extent: "
+ << " exterior: "
<< origin + delta * lower / maxreflevelfact
<< " : "
<< origin + delta * upper / maxreflevelfact
@@ -816,11 +786,6 @@ namespace Carpet {
static void MakeMultigridBoxes (const cGH* cgh,
- int const size,
- jjvect const & nboundaryzones,
- jjvect const & is_internal,
- jjvect const & is_staggered,
- jjvect const & shiftout,
ibbox const & base,
ibbox const & bb,
bbvect const & ob,
@@ -829,7 +794,11 @@ namespace Carpet {
bbs.resize (mglevels);
bbs.at(0) = bb;
// boundary offsets
- assert (size==2*dim);
+ jjvect nboundaryzones, is_internal, is_staggered, shiftout;
+ const int ierr = GetBoundarySpecification
+ (2*dim, &nboundaryzones[0][0], &is_internal[0][0],
+ &is_staggered[0][0], &shiftout[0][0]);
+ assert (!ierr);
// (distance in grid points between the exterior and the physical boundary)
iivect offset;
for (int d=0; d<dim; ++d) {
@@ -868,11 +837,6 @@ namespace Carpet {
}
void MakeMultigridBoxes (const cGH* cgh,
- int const size,
- jjvect const & nboundaryzones,
- jjvect const & is_internal,
- jjvect const & is_staggered,
- jjvect const & shiftout,
vector<ibbox> const & bbs,
vector<bbvect> const & obs,
vector<vector<ibbox> >& bbss)
@@ -884,10 +848,7 @@ namespace Carpet {
}
bbss.resize(bbs.size());
for (size_t c=0; c<bbs.size(); ++c) {
- MakeMultigridBoxes
- (cgh,
- size, nboundaryzones, is_internal, is_staggered, shiftout,
- base, bbs.at(c), obs.at(c), bbss.at(c));
+ MakeMultigridBoxes (cgh, base, bbs.at(c), obs.at(c), bbss.at(c));
}
}
diff --git a/Carpet/Carpet/src/SetupGH.cc b/Carpet/Carpet/src/SetupGH.cc
index d9916492d..e82d305b2 100644
--- a/Carpet/Carpet/src/SetupGH.cc
+++ b/Carpet/Carpet/src/SetupGH.cc
@@ -24,7 +24,7 @@
#include "carpet.hh"
extern "C" {
- static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/SetupGH.cc,v 1.75 2004/04/07 16:53:39 schnetter Exp $";
+ static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/SetupGH.cc,v 1.76 2004/04/18 13:29:43 schnetter Exp $";
CCTK_FILEVERSION(Carpet_Carpet_SetupGH_cc);
}
@@ -467,10 +467,7 @@ namespace Carpet {
// Create all multigrid levels
vector<vector<ibbox> > bbss;
- MakeMultigridBoxes
- (cgh,
- 2*dim, nboundaryzones, is_internal, is_staggered, shiftout,
- bbs, obs, bbss);
+ MakeMultigridBoxes (cgh, bbs, obs, bbss);
// Only one refinement level
vector<vector<vector<ibbox> > > bbsss(1);
diff --git a/Carpet/Carpet/src/carpet.hh b/Carpet/Carpet/src/carpet.hh
index 034d02616..02924095c 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.27 2004/01/25 14:57:27 schnetter Exp $
+// $Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/carpet.hh,v 1.28 2004/04/18 13:29:43 schnetter Exp $
#ifndef CARPET_HH
#define CARPET_HH
@@ -34,8 +34,7 @@ namespace Carpet {
int CallFunction (void* function, cFunctionData* attribute, void* data);
// Other functions
- void Regrid (const cGH* cgh, const int rl,
- const int initialise_from, const bool do_prolongate);
+ void Regrid (const cGH* cgh);
void CycleTimeLevels (const cGH* cgh);
void FlipTimeLevels (const cGH* cgh);
void Restrict (const cGH* cgh);
diff --git a/Carpet/Carpet/src/functions.hh b/Carpet/Carpet/src/functions.hh
index 99a201ff1..56170dbed 100644
--- a/Carpet/Carpet/src/functions.hh
+++ b/Carpet/Carpet/src/functions.hh
@@ -1,4 +1,4 @@
-// $Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/functions.hh,v 1.3 2004/03/23 17:58:40 schnetter Exp $
+// $Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/functions.hh,v 1.4 2004/04/18 13:29:43 schnetter Exp $
#ifndef FUNCTIONS_HH
#define FUNCTIONS_HH
@@ -64,11 +64,6 @@ namespace Carpet {
vector<bbvect>& obs, vector<int>& ps);
void MakeMultigridBoxes (const cGH* cgh,
- int const size,
- jjvect const & nboundaryzones,
- jjvect const & is_internal,
- jjvect const & is_staggered,
- jjvect const & shiftout,
vector<ibbox> const & bbs,
vector<bbvect> const & obs,
vector<vector<ibbox> > & bbss);
diff --git a/Carpet/CarpetLib/src/dh.cc b/Carpet/CarpetLib/src/dh.cc
index 1cd9772e7..f7b7b88e5 100644
--- a/Carpet/CarpetLib/src/dh.cc
+++ b/Carpet/CarpetLib/src/dh.cc
@@ -1,4 +1,4 @@
-// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/dh.cc,v 1.50 2004/04/07 16:56:42 schnetter Exp $
+// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/dh.cc,v 1.51 2004/04/18 13:29:43 schnetter Exp $
#include <assert.h>
@@ -31,7 +31,7 @@ dh<D>::dh (gh<D>& h,
assert (buffer_width>=0);
h.add(this);
CHECKPOINT;
- recompose (0, true);
+ recompose ();
}
// Destructors
@@ -51,7 +51,7 @@ int dh<D>::prolongation_stencil_size () const {
// Modifiers
template<int D>
-void dh<D>::recompose (const int initialise_from, const bool do_prolongate) {
+void dh<D>::recompose () {
DECLARE_CCTK_PARAMETERS;
CHECKPOINT;
@@ -574,7 +574,7 @@ void dh<D>::recompose (const int initialise_from, const bool do_prolongate) {
for (typename list<ggf<D>*>::iterator f=gfs.begin();
f!=gfs.end(); ++f) {
- (*f)->recompose (initialise_from, do_prolongate);
+ (*f)->recompose ();
}
}
diff --git a/Carpet/CarpetLib/src/dh.hh b/Carpet/CarpetLib/src/dh.hh
index d525a0be4..c78d31291 100644
--- a/Carpet/CarpetLib/src/dh.hh
+++ b/Carpet/CarpetLib/src/dh.hh
@@ -1,4 +1,4 @@
-// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/dh.hh,v 1.17 2004/03/03 16:20:19 schnetter Exp $
+// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/dh.hh,v 1.18 2004/04/18 13:29:43 schnetter Exp $
#ifndef DH_HH
#define DH_HH
@@ -115,7 +115,7 @@ public:
int prolongation_stencil_size () const;
// Modifiers
- void recompose (const int initialise_from, const bool do_prolongate);
+ void recompose ();
// Grid function management
void add (ggf<D>* f);
diff --git a/Carpet/CarpetLib/src/gf.cc b/Carpet/CarpetLib/src/gf.cc
index 462c179b8..36b601850 100644
--- a/Carpet/CarpetLib/src/gf.cc
+++ b/Carpet/CarpetLib/src/gf.cc
@@ -1,4 +1,4 @@
-// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/gf.cc,v 1.17 2004/03/23 19:30:14 schnetter Exp $
+// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/gf.cc,v 1.18 2004/04/18 13:29:43 schnetter Exp $
#include <assert.h>
@@ -23,7 +23,7 @@ gf<T,D>::gf (const int varindex, const operator_type transport_operator,
t, d, tmin, tmax, prolongation_order_time,
vectorlength, vectorindex, vectorleader)
{
- this->recompose (0, true);
+ this->recompose ();
}
// Destructors
diff --git a/Carpet/CarpetLib/src/ggf.cc b/Carpet/CarpetLib/src/ggf.cc
index 38657d367..6b78c43dd 100644
--- a/Carpet/CarpetLib/src/ggf.cc
+++ b/Carpet/CarpetLib/src/ggf.cc
@@ -1,4 +1,4 @@
-// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/ggf.cc,v 1.36 2004/03/23 19:30:14 schnetter Exp $
+// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/ggf.cc,v 1.37 2004/04/18 13:28:25 schnetter Exp $
#include <assert.h>
#include <stdlib.h>
@@ -55,7 +55,7 @@ bool ggf<D>::operator== (const ggf<D>& f) const {
// Modifiers
template<int D>
-void ggf<D>::recompose (const int initialise_from, const bool do_prolongate) {
+void ggf<D>::recompose () {
// TODO: restructure storage only when needed
@@ -66,7 +66,7 @@ void ggf<D>::recompose (const int initialise_from, const bool do_prolongate) {
storage.resize(tmax-tmin+1);
for (int tl=tmin; tl<=tmax; ++tl) {
storage.at(tl-tmin).resize(h.reflevels());
- for (int rl=initialise_from; rl<h.reflevels(); ++rl) {
+ for (int rl=0; rl<h.reflevels(); ++rl) {
storage.at(tl-tmin).at(rl).resize(h.components(rl));
for (int c=0; c<h.components(rl); ++c) {
storage.at(tl-tmin).at(rl).at(c).resize(h.mglevels(rl,c));
@@ -78,53 +78,73 @@ void ggf<D>::recompose (const int initialise_from, const bool do_prolongate) {
} // for tl
// Initialise the new storage
- for (int rl=initialise_from; rl<h.reflevels(); ++rl) {
- for (int tl=tmin; tl<=tmax; ++tl) {
- for (int c=0; c<h.components(rl); ++c) {
- for (int ml=0; ml<h.mglevels(rl,c); ++ml) {
-
- storage.at(tl-tmin).at(rl).at(c).at(ml) = typed_data(tl,rl,c,ml);
-
- // Allocate storage
- storage.at(tl-tmin).at(rl).at(c).at(ml)->allocate
- (d.boxes.at(rl).at(c).at(ml).exterior, h.proc(rl,c));
-
- if (do_prolongate) {
- // Initialise from coarser level, if possible
- // TODO: init only un-copied regions
- if (rl>0) {
- for (comm_state<D> state; !state.done(); state.step()) {
- const CCTK_REAL time = t.time(tl,rl,ml);
- ref_prolongate (state,tl,rl,c,ml,time);
- }
- } // if rl
- } // if do_prolongate
-
- // Copy from old storage, if possible
- // todo: copy only from interior regions?
- if (rl<(int)oldstorage.at(tl-tmin).size()) {
- for (comm_state<D> state; !state.done(); state.step()) {
+ // TODO: overlap this initialisation for all variables
+ for (int rl=0; rl<h.reflevels(); ++rl) {
+ bool firsttime=true;
+ for (comm_state<D> state; !state.done(); state.step(), firsttime=false) {
+ for (int tl=tmin; tl<=tmax; ++tl) {
+ for (int c=0; c<h.components(rl); ++c) {
+ for (int ml=0; ml<h.mglevels(rl,c); ++ml) {
+
+ if (firsttime) {
+ storage.at(tl-tmin).at(rl).at(c).at(ml) = typed_data(tl,rl,c,ml);
+
+ // Allocate storage
+ storage.at(tl-tmin).at(rl).at(c).at(ml)->allocate
+ (d.boxes.at(rl).at(c).at(ml).exterior, h.proc(rl,c));
+ }
+
+ // Find out which regions need to be prolongated
+ // TODO: do this once in the dh instead of for each variable here
+ ibset work (d.boxes.at(rl).at(c).at(ml).exterior);
+
+ // Copy from old storage, if possible
+ // TODO: copy only from interior regions?
+ if (rl<(int)oldstorage.at(tl-tmin).size()) {
for (int cc=0; cc<(int)oldstorage.at(tl-tmin).at(rl).size(); ++cc) {
if (ml<(int)oldstorage.at(tl-tmin).at(rl).at(cc).size()) {
- const ibbox ovlp =
- (d.boxes.at(rl).at(c).at(ml).exterior
- & oldstorage.at(tl-tmin).at(rl).at(cc).at(ml)->extent());
- storage.at(tl-tmin).at(rl).at(c).at(ml)->copy_from
- (state, oldstorage.at(tl-tmin).at(rl).at(cc).at(ml), ovlp);
+ // TODO: prefer same processor, etc., see dh.cc
+ ibset ovlp = work & oldstorage.at(tl-tmin).at(rl).at(cc).at(ml)->extent();
+ ovlp.normalize();
+ work -= ovlp;
+ for (typename ibset::const_iterator r=ovlp.begin(); r!=ovlp.end(); ++r) {
+ storage.at(tl-tmin).at(rl).at(c).at(ml)->copy_from (state, oldstorage.at(tl-tmin).at(rl).at(cc).at(ml), *r);
+ }
} // if ml
} // for cc
- } // for step
- } // if rl
-
- } // for ml
- } // for c
-
- } // for tl
+ } // if rl
+ work.normalize();
+
+ // Initialise from coarser level, if possible
+ if (rl>0) {
+ if (transport_operator != op_none) {
+ assert (tmax-tmin+1 >= prolongation_order_time+1);
+ vector<int> tls(prolongation_order_time+1);
+ for (int i=0; i<=prolongation_order_time; ++i) {
+ tls.at(i) = tmax - i;
+ }
+ vector<const gdata<D>*> gsrcs(tls.size());
+ vector<CCTK_REAL> times(tls.size());
+ for (int i=0; i<(int)gsrcs.size(); ++i) {
+ gsrcs.at(i) = storage.at(tls.at(i)-tmin).at(rl-1).at(c).at(ml);
+ times.at(i) = t.time(tls.at(i),rl-1,ml);
+ }
+ const CCTK_REAL time = t.time(tl,rl,ml);
+ for (typename ibset::const_iterator r=work.begin(); r!=work.end(); ++r) {
+ storage.at(tl-tmin).at(rl).at(c).at(ml)->interpolate_from (state, gsrcs, times, *r, time, d.prolongation_order_space, prolongation_order_time);
+ }
+ } // if transport_operator
+ } // if rl
+
+ } // for ml
+ } // for c
+ } // for tl
+ } // for step
} // for rl
// Delete old storage
for (int tl=tmin; tl<=tmax; ++tl) {
- for (int rl=initialise_from; rl<(int)oldstorage.at(tl-tmin).size(); ++rl) {
+ for (int rl=0; rl<(int)oldstorage.at(tl-tmin).size(); ++rl) {
for (int c=0; c<(int)oldstorage.at(tl-tmin).at(rl).size(); ++c) {
for (int ml=0; ml<(int)oldstorage.at(tl-tmin).at(rl).at(c).size(); ++ml) {
delete oldstorage.at(tl-tmin).at(rl).at(c).at(ml);
@@ -134,21 +154,19 @@ void ggf<D>::recompose (const int initialise_from, const bool do_prolongate) {
} // for tl
for (int tl=tmin; tl<=tmax; ++tl) {
- for (int rl=initialise_from; rl<h.reflevels(); ++rl) {
+ for (int rl=0; rl<h.reflevels(); ++rl) {
// Set boundaries
for (int c=0; c<h.components(rl); ++c) {
for (int ml=0; ml<h.mglevels(rl,c); ++ml) {
- if (do_prolongate) {
- // TODO: assert that reflevel 0 boundaries are copied
- if (rl>0) {
- for (comm_state<D> state; !state.done(); state.step()) {
- const CCTK_REAL time = t.time(tl,rl,ml);
- ref_bnd_prolongate (state,tl,rl,c,ml,time);
- }
- } // if rl
- }
+ // TODO: assert that reflevel 0 boundaries are copied
+ if (rl>0) {
+ for (comm_state<D> state; !state.done(); state.step()) {
+ const CCTK_REAL time = t.time(tl,rl,ml);
+ ref_bnd_prolongate (state,tl,rl,c,ml,time);
+ }
+ } // if rl
for (comm_state<D> state; !state.done(); state.step()) {
sync (state,tl,rl,c,ml);
diff --git a/Carpet/CarpetLib/src/ggf.hh b/Carpet/CarpetLib/src/ggf.hh
index 64998c8a2..d228a863e 100644
--- a/Carpet/CarpetLib/src/ggf.hh
+++ b/Carpet/CarpetLib/src/ggf.hh
@@ -1,4 +1,4 @@
-// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/ggf.hh,v 1.20 2004/03/23 12:40:27 schnetter Exp $
+// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/ggf.hh,v 1.21 2004/04/18 13:29:43 schnetter Exp $
#ifndef GGF_HH
#define GGF_HH
@@ -87,7 +87,7 @@ public:
// Modifiers
- void recompose (const int initialise_from, const bool do_prolongate);
+ void recompose ();
// Cycle the time levels by rotating the data sets
void cycle (int rl, int c, int ml);
diff --git a/Carpet/CarpetLib/src/gh.cc b/Carpet/CarpetLib/src/gh.cc
index 172da013d..b68be34d8 100644
--- a/Carpet/CarpetLib/src/gh.cc
+++ b/Carpet/CarpetLib/src/gh.cc
@@ -1,4 +1,4 @@
-// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/gh.cc,v 1.26 2004/04/07 16:59:47 schnetter Exp $
+// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/gh.cc,v 1.28 2004/04/18 13:29:43 schnetter Exp $
#include <assert.h>
#include <stdlib.h>
@@ -36,9 +36,7 @@ gh<D>::~gh () { }
template<int D>
void gh<D>::recompose (const rexts& exts,
const rbnds& outer_bounds,
- const rprocs& procs,
- const int initialise_from,
- const bool do_prolongate)
+ const rprocs& procs)
{
DECLARE_CCTK_PARAMETERS;
@@ -96,7 +94,11 @@ void gh<D>::recompose (const rexts& exts,
// Check base grid extent
if (reflevels()>0) {
for (int c=0; c<components(0); ++c) {
+ // TODO: put the check back in, taking outer boundaries into
+ // account
+#if 0
assert (extents.at(0).at(c).at(0).is_contained_in(baseextent));
+#endif
}
}
@@ -169,7 +171,7 @@ void gh<D>::recompose (const rexts& exts,
}
for (typename list<dh<D>*>::iterator d=dhs.begin(); d!=dhs.end(); ++d) {
- (*d)->recompose (initialise_from, do_prolongate);
+ (*d)->recompose ();
}
}
diff --git a/Carpet/CarpetLib/src/gh.hh b/Carpet/CarpetLib/src/gh.hh
index babc85cfb..69f9f31c0 100644
--- a/Carpet/CarpetLib/src/gh.hh
+++ b/Carpet/CarpetLib/src/gh.hh
@@ -1,4 +1,4 @@
-// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/gh.hh,v 1.16 2004/03/23 19:30:14 schnetter Exp $
+// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/gh.hh,v 1.17 2004/04/18 13:29:43 schnetter Exp $
#ifndef GH_HH
#define GH_HH
@@ -85,9 +85,7 @@ public:
// Modifiers
void recompose (const rexts& exts, const rbnds& outer_bounds,
- const rprocs& procs,
- const int initialise_from,
- const bool do_prolongate);
+ const rprocs& procs);
// Accessors
int reflevels () const {
diff --git a/Carpet/CarpetRegrid/interface.ccl b/Carpet/CarpetRegrid/interface.ccl
index efc701a73..483ded51b 100644
--- a/Carpet/CarpetRegrid/interface.ccl
+++ b/Carpet/CarpetRegrid/interface.ccl
@@ -1,5 +1,5 @@
# Interface definition for thorn CarpetRegrid
-# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetRegrid/interface.ccl,v 1.6 2004/01/25 14:57:30 schnetter Exp $
+# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetRegrid/interface.ccl,v 1.7 2004/04/18 13:29:43 schnetter Exp $
implements: CarpetRegrid
@@ -16,19 +16,35 @@ uses include header: gh.hh
+# The location of the boundary points
+CCTK_INT FUNCTION GetBoundarySpecification \
+ (CCTK_INT IN size, \
+ CCTK_INT OUT ARRAY nboundaryzones, \
+ CCTK_INT OUT ARRAY is_internal, \
+ CCTK_INT OUT ARRAY is_staggered, \
+ CCTK_INT OUT ARRAY shiftout)
+USES FUNCTION GetBoundarySpecification
+
+# The overall size of the domain
+CCTK_INT FUNCTION GetDomainSpecification \
+ (CCTK_INT IN size, \
+ CCTK_REAL OUT ARRAY physical_min, \
+ CCTK_REAL OUT ARRAY physical_max, \
+ CCTK_REAL OUT ARRAY interior_min, \
+ CCTK_REAL OUT ARRAY interior_max, \
+ CCTK_REAL OUT ARRAY exterior_min, \
+ CCTK_REAL OUT ARRAY exterior_max, \
+ CCTK_REAL OUT ARRAY spacing)
+USES FUNCTION GetDomainSpecification
+
+
+
# The true prototype of the routine below:
# int Carpet_Regrid (const cGH * cctkGH,
# gh<dim>::rexts * bbsss,
# gh<dim>::rbnds * obss,
# gh<dim>::rprocs * pss);
CCTK_INT FUNCTION Carpet_Regrid (CCTK_POINTER_TO_CONST IN cctkGH, \
- CCTK_INT IN reflevel, \
- CCTK_INT IN map, \
- CCTK_INT IN size, \
- CCTK_INT IN ARRAY nboundaryzones, \
- CCTK_INT IN ARRAY is_internal, \
- CCTK_INT IN ARRAY is_staggered, \
- CCTK_INT IN ARRAY shiftout, \
CCTK_POINTER IN bsss, \
CCTK_POINTER IN obss, \
CCTK_POINTER IN pss)
diff --git a/Carpet/CarpetRegrid/param.ccl b/Carpet/CarpetRegrid/param.ccl
index ca830a75f..733b3c8e3 100644
--- a/Carpet/CarpetRegrid/param.ccl
+++ b/Carpet/CarpetRegrid/param.ccl
@@ -1,5 +1,5 @@
# Parameter definitions for thorn CarpetRegrid
-# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetRegrid/param.ccl,v 1.17 2004/04/14 22:19:44 schnetter Exp $
+# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetRegrid/param.ccl,v 1.18 2004/04/18 13:29:43 schnetter Exp $
@@ -52,6 +52,12 @@ KEYWORD refined_regions "Regions where the grid is refined" STEERABLE=always
+BOOLEAN smart_outer_boundaries "Use the CoordBase interface for outer boundaries"
+{
+} no
+
+
+
# Region specifications for centre refinement
BOOLEAN symmetry_x "Refine the lower half in x-direction"
diff --git a/Carpet/CarpetRegrid/src/automatic.cc b/Carpet/CarpetRegrid/src/automatic.cc
index 6add8c770..2f5651b2e 100644
--- a/Carpet/CarpetRegrid/src/automatic.cc
+++ b/Carpet/CarpetRegrid/src/automatic.cc
@@ -16,7 +16,7 @@
#include "regrid.hh"
extern "C" {
- static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetRegrid/src/automatic.cc,v 1.1 2004/01/25 14:57:30 schnetter Exp $";
+ static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetRegrid/src/automatic.cc,v 1.2 2004/04/18 13:29:43 schnetter Exp $";
CCTK_FILEVERSION(Carpet_CarpetRegrid_automatic_cc);
}
@@ -31,22 +31,12 @@ namespace CarpetRegrid {
int Automatic (cGH const * const cctkGH,
gh<dim> const & hh,
- int const reflevel,
- int const map,
- int const size,
- jjvect const & nboundaryzones,
- jjvect const & is_internal,
- jjvect const & is_staggered,
- jjvect const & shiftout,
gh<dim>::rexts & bbsss,
gh<dim>::rbnds & obss,
gh<dim>::rprocs & pss)
{
DECLARE_CCTK_PARAMETERS;
- assert (reflevel>=0 && reflevel<maxreflevels);
- assert (map>=0 && map<maps);
-
assert (refinement_levels >= 1);
assert (bbsss.size() >= 1);
@@ -64,15 +54,17 @@ namespace CarpetRegrid {
assert (CCTK_VarTypeI(vi) == CCTK_VARIABLE_REAL);
assert (CCTK_GroupDimI(gi) == dim);
- assert (arrdata.at(gi).at(map).data.at(vi-v1));
+ assert (arrdata.at(gi).at(Carpet::map).data.at(vi-v1));
const gf<CCTK_REAL,dim>& errorvar
= (*dynamic_cast<const gf<CCTK_REAL,dim>*>
- (arrdata.at(gi).at(map).data.at(vi-v1)));
-
+ (arrdata.at(gi).at(Carpet::map).data.at(vi-v1)));
+
vector<ibbox> bbs;
gh<dim>::cbnds obs;
Automatic_OneLevel
- (cctkGH, hh, reflevel, minwidth, minfraction, maxerror, errorvar,
+ (cctkGH, hh,
+ reflevel, min(reflevels+1, maxreflevels),
+ minwidth, minfraction, maxerror, errorvar,
bbs, obs);
// make multiprocessor aware
@@ -81,10 +73,7 @@ namespace CarpetRegrid {
// make multigrid aware
vector<vector<ibbox> > bbss;
- MakeMultigridBoxes
- (cctkGH,
- size, nboundaryzones, is_internal, is_staggered, shiftout,
- bbs, obs, bbss);
+ MakeMultigridBoxes (cctkGH, bbs, obs, bbss);
@@ -115,7 +104,8 @@ namespace CarpetRegrid {
void Automatic_OneLevel (const cGH * const cctkGH,
const gh<dim> & hh,
- const int reflevel,
+ const int rl,
+ const int numrl,
const int minwidth,
const CCTK_REAL minfraction,
const CCTK_REAL maxerror,
@@ -123,20 +113,20 @@ namespace CarpetRegrid {
vector<ibbox> & bbs,
vector<bbvect> & obs)
{
- if (reflevel+1 >= maxreflevels) return;
+ if (rl+1 >= numrl) return;
// Arbitrary
const int tl = 0;
const int ml = 0;
-// cout << endl << "MRA: Choosing regions to refine in " << hh.components(reflevel) << " components" << endl;
+// cout << endl << "MRA: Choosing regions to refine in " << hh.components(rl) << " components" << endl;
list<ibbox> bbl;
- for (int c=0; c<hh.components(reflevel); ++c) {
- const ibbox region = hh.extents.at(reflevel).at(c).at(ml);
+ for (int c=0; c<hh.components(rl); ++c) {
+ const ibbox region = hh.extents.at(rl).at(c).at(ml);
assert (! region.empty());
- const data<CCTK_REAL,dim>& errdata = *errorvar(tl,reflevel,c,ml);
+ const data<CCTK_REAL,dim>& errdata = *errorvar(tl,rl,c,ml);
Automatic_Recursive (cctkGH, hh, minwidth, minfraction, maxerror,
errdata, bbl, region);
diff --git a/Carpet/CarpetRegrid/src/baselevel.cc b/Carpet/CarpetRegrid/src/baselevel.cc
index 18cc8a95c..c380c6844 100644
--- a/Carpet/CarpetRegrid/src/baselevel.cc
+++ b/Carpet/CarpetRegrid/src/baselevel.cc
@@ -9,7 +9,7 @@
#include "regrid.hh"
extern "C" {
- static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetRegrid/src/baselevel.cc,v 1.1 2004/01/25 14:57:30 schnetter Exp $";
+ static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetRegrid/src/baselevel.cc,v 1.2 2004/04/18 13:29:43 schnetter Exp $";
CCTK_FILEVERSION(Carpet_CarpetRegrid_baselevel_cc);
}
@@ -24,22 +24,12 @@ namespace CarpetRegrid {
int BaseLevel (cGH const * const cctkGH,
gh<dim> const & hh,
- int const reflevel,
- int const map,
- int const size,
- jjvect const & nboundaryzones,
- jjvect const & is_internal,
- jjvect const & is_staggered,
- jjvect const & shiftout,
gh<dim>::rexts & bbsss,
gh<dim>::rbnds & obss,
gh<dim>::rprocs & pss)
{
DECLARE_CCTK_PARAMETERS;
- assert (reflevel>=0 && reflevel<maxreflevels);
- assert (map>=0 && map<maps);
-
assert (refinement_levels == 1);
assert (bbsss.size() == 1);
diff --git a/Carpet/CarpetRegrid/src/centre.cc b/Carpet/CarpetRegrid/src/centre.cc
index 46a23f794..ef347b099 100644
--- a/Carpet/CarpetRegrid/src/centre.cc
+++ b/Carpet/CarpetRegrid/src/centre.cc
@@ -9,7 +9,7 @@
#include "regrid.hh"
extern "C" {
- static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetRegrid/src/centre.cc,v 1.1 2004/01/25 14:57:30 schnetter Exp $";
+ static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetRegrid/src/centre.cc,v 1.2 2004/04/18 13:29:43 schnetter Exp $";
CCTK_FILEVERSION(Carpet_CarpetRegrid_centre_cc);
}
@@ -24,22 +24,12 @@ namespace CarpetRegrid {
int Centre (cGH const * const cctkGH,
gh<dim> const & hh,
- int const reflevel,
- int const map,
- int const size,
- jjvect const & nboundaryzones,
- jjvect const & is_internal,
- jjvect const & is_staggered,
- jjvect const & shiftout,
gh<dim>::rexts & bbsss,
gh<dim>::rbnds & obss,
gh<dim>::rprocs & pss)
{
DECLARE_CCTK_PARAMETERS;
- assert (reflevel>=0 && reflevel<maxreflevels);
- assert (map>=0 && map<maps);
-
assert (refinement_levels >= 1);
// do nothing if the levels already exist
@@ -89,10 +79,7 @@ namespace CarpetRegrid {
// make multigrid aware
vector<vector<ibbox> > bbss;
- MakeMultigridBoxes
- (cctkGH,
- size, nboundaryzones, is_internal, is_staggered, shiftout,
- bbs, obs, bbss);
+ MakeMultigridBoxes (cctkGH, bbs, obs, bbss);
bbsss.at(rl) = bbss;
obss.at(rl) = obs;
diff --git a/Carpet/CarpetRegrid/src/manualcoordinatelist.cc b/Carpet/CarpetRegrid/src/manualcoordinatelist.cc
index 92ab6900a..6cc8d719c 100644
--- a/Carpet/CarpetRegrid/src/manualcoordinatelist.cc
+++ b/Carpet/CarpetRegrid/src/manualcoordinatelist.cc
@@ -12,7 +12,7 @@
#include "regrid.hh"
extern "C" {
- static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetRegrid/src/manualcoordinatelist.cc,v 1.1 2004/01/25 14:57:30 schnetter Exp $";
+ static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetRegrid/src/manualcoordinatelist.cc,v 1.2 2004/04/18 13:29:43 schnetter Exp $";
CCTK_FILEVERSION(Carpet_CarpetRegrid_manualcoordinatelist_cc);
}
@@ -27,21 +27,12 @@ namespace CarpetRegrid {
int ManualCoordinateList (cGH const * const cctkGH,
gh<dim> const & hh,
- int const reflevel,
- int const map,
- int const size,
- jjvect const & nboundaryzones,
- jjvect const & is_internal,
- jjvect const & is_staggered,
- jjvect const & shiftout,
gh<dim>::rexts & bbsss,
gh<dim>::rbnds & obss,
gh<dim>::rprocs & pss)
{
DECLARE_CCTK_PARAMETERS;
-
- assert (reflevel>=0 && reflevel<maxreflevels);
- assert (map>=0 && map<maps);
+ int ierr;
assert (refinement_levels >= 1);
@@ -50,6 +41,21 @@ namespace CarpetRegrid {
assert (bbsss.size() >= 1);
+ jjvect nboundaryzones, is_internal, is_staggered, shiftout;
+ ierr = GetBoundarySpecification
+ (2*dim, &nboundaryzones[0][0], &is_internal[0][0],
+ &is_staggered[0][0], &shiftout[0][0]);
+ assert (!ierr);
+ rvect physical_min, physical_max;
+ rvect interior_min, interior_max;
+ rvect exterior_min, exterior_max;
+ rvect base_spacing;
+ ierr = GetDomainSpecification
+ (dim, &physical_min[0], &physical_max[0],
+ &interior_min[0], &interior_max[0],
+ &exterior_min[0], &exterior_max[0], &base_spacing[0]);
+ assert (!ierr);
+
bbsss.resize (refinement_levels);
obss.resize (refinement_levels);
pss.resize (refinement_levels);
@@ -63,35 +69,68 @@ namespace CarpetRegrid {
CCTK_WARN (0, "Could not parse parameter \"coordinates\"");
}
}
-
+
vector<vector<bbvect> > newobss;
- if (strcmp(outerbounds, "") !=0 ) {
- istringstream ob_str (outerbounds);
- try {
- ob_str >> newobss;
- } catch (input_error) {
- CCTK_WARN (0, "Could not parse parameter \"outerbounds\"");
- }
- bool good = newobss.size() == newbbss.size();
- if (good) {
- for (size_t rl=0; rl<newobss.size(); ++rl) {
- good = good && newobss.at(rl).size() == newbbss.at(rl).size();
- }
- }
- if (! good) {
- cout << "coordinates: " << newbbss << endl;
- cout << "outerbounds: " << newobss << endl;
- CCTK_WARN (0, "The parameters \"outerbounds\" and \"coordinates\" must have the same structure");
- }
- } else {
+ if (smart_outer_boundaries) {
+#warning "TODO"
+ // assert (domain_from_coordbase);
+
newobss.resize(newbbss.size());
for (size_t rl=0; rl<newobss.size(); ++rl) {
newobss.at(rl).resize(newbbss.at(rl).size());
for (size_t c=0; c<newobss.at(rl).size(); ++c) {
- newobss.at(rl).at(c) = bbvect(false);
+ for (int d=0; d<dim; ++d) {
+ newobss.at(rl).at(c)[d][0] = abs(newbbss.at(rl).at(c).lower()[d] - physical_min[d]) < 1.0e-6 * base_spacing[d] / ipow(reffact, rl);
+ if (newobss.at(rl).at(c)[d][0]) {
+ rvect lo = newbbss.at(rl).at(c).lower();
+ rvect up = newbbss.at(rl).at(c).upper();
+ rvect str = newbbss.at(rl).at(c).stride();
+ lo[d] = exterior_min[d];
+ newbbss.at(rl).at(c) = rbbox(lo, up, str);
+ }
+ newobss.at(rl).at(c)[d][1] = abs(newbbss.at(rl).at(c).upper()[d] - physical_max[d]) < 1.0e-6 * base_spacing[d] / ipow(reffact, rl);
+ if (newobss.at(rl).at(c)[d][1]) {
+ rvect lo = newbbss.at(rl).at(c).lower();
+ rvect up = newbbss.at(rl).at(c).upper();
+ rvect str = newbbss.at(rl).at(c).stride();
+ up[d] = exterior_max[d];
+ newbbss.at(rl).at(c) = rbbox(lo, up, str);
+ }
+ }
}
}
- }
+
+ } else { // if ! smart_outer_boundaries
+
+ if (strcmp(outerbounds, "") !=0 ) {
+ istringstream ob_str (outerbounds);
+ try {
+ ob_str >> newobss;
+ } catch (input_error) {
+ CCTK_WARN (0, "Could not parse parameter \"outerbounds\"");
+ }
+ bool good = newobss.size() == newbbss.size();
+ if (good) {
+ for (size_t rl=0; rl<newobss.size(); ++rl) {
+ good = good && newobss.at(rl).size() == newbbss.at(rl).size();
+ }
+ }
+ if (! good) {
+ cout << "coordinates: " << newbbss << endl;
+ cout << "outerbounds: " << newobss << endl;
+ CCTK_WARN (0, "The parameters \"outerbounds\" and \"coordinates\" must have the same structure");
+ }
+ } else {
+ newobss.resize(newbbss.size());
+ for (size_t rl=0; rl<newobss.size(); ++rl) {
+ newobss.at(rl).resize(newbbss.at(rl).size());
+ for (size_t c=0; c<newobss.at(rl).size(); ++c) {
+ newobss.at(rl).at(c) = bbvect(false);
+ }
+ }
+ }
+
+ } // if ! smart_outer_boundaries
if (newbbss.size() < refinement_levels-1) {
CCTK_VWarn (0, __LINE__, __FILE__, CCTK_THORNSTRING,
@@ -120,10 +159,7 @@ namespace CarpetRegrid {
// make multigrid aware
vector<vector<ibbox> > bbss;
- MakeMultigridBoxes
- (cctkGH,
- size, nboundaryzones, is_internal, is_staggered, shiftout,
- bbs, obs, bbss);
+ MakeMultigridBoxes (cctkGH, bbs, obs, bbss);
bbsss.at(rl) = bbss;
obss.at(rl) = obs;
diff --git a/Carpet/CarpetRegrid/src/manualcoordinates.cc b/Carpet/CarpetRegrid/src/manualcoordinates.cc
index 54474d863..cf6ce3f94 100644
--- a/Carpet/CarpetRegrid/src/manualcoordinates.cc
+++ b/Carpet/CarpetRegrid/src/manualcoordinates.cc
@@ -11,7 +11,7 @@
#include "regrid.hh"
extern "C" {
- static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetRegrid/src/manualcoordinates.cc,v 1.2 2004/02/27 16:24:06 schnetter Exp $";
+ static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetRegrid/src/manualcoordinates.cc,v 1.3 2004/04/18 13:29:43 schnetter Exp $";
CCTK_FILEVERSION(Carpet_CarpetRegrid_manualcoordinates_cc);
}
@@ -26,22 +26,12 @@ namespace CarpetRegrid {
int ManualCoordinates (cGH const * const cctkGH,
gh<dim> const & hh,
- int const reflevel,
- int const map,
- int const size,
- jjvect const & nboundaryzones,
- jjvect const & is_internal,
- jjvect const & is_staggered,
- jjvect const & shiftout,
gh<dim>::rexts & bbsss,
gh<dim>::rbnds & obss,
gh<dim>::rprocs & pss)
{
DECLARE_CCTK_PARAMETERS;
- assert (reflevel>=0 && reflevel<maxreflevels);
- assert (map>=0 && map<maps);
-
if (refinement_levels > 4) {
CCTK_WARN (0, "Cannot currently specify manual refinement regions for more than 4 refinement levels");
}
@@ -81,10 +71,7 @@ namespace CarpetRegrid {
// make multigrid aware
vector<vector<ibbox> > bbss;
- MakeMultigridBoxes
- (cctkGH,
- size, nboundaryzones, is_internal, is_staggered, shiftout,
- bbs, obs, bbss);
+ MakeMultigridBoxes (cctkGH, bbs, obs, bbss);
bbsss.at(rl) = bbss;
obss.at(rl) = obs;
@@ -99,27 +86,27 @@ namespace CarpetRegrid {
void ManualCoordinates_OneLevel (const cGH * const cctkGH,
const gh<dim> & hh,
- const int reflevel,
- const int reflevels,
+ const int rl,
+ const int numrl,
const rvect lower,
const rvect upper,
const bbvect obound,
vector<ibbox> & bbs,
vector<bbvect> & obs)
{
- if (reflevel >= reflevels) return;
+ if (rl >= numrl) return;
- jvect const ilower = pos2int (cctkGH, hh, lower, reflevel);
- jvect const iupper = pos2int (cctkGH, hh, upper, reflevel);
+ jvect const ilower = pos2int (cctkGH, hh, lower, rl);
+ jvect const iupper = pos2int (cctkGH, hh, upper, rl);
ManualGridpoints_OneLevel
- (cctkGH, hh, reflevel, reflevels, ilower, iupper, obound, bbs, obs);
+ (cctkGH, hh, rl, numrl, ilower, iupper, obound, bbs, obs);
}
ivect delta2int (const cGH * const cctkGH, const gh<dim>& hh,
- const rvect & rpos, const int reflevel)
+ const rvect & rpos, const int rl)
{
rvect global_lower, global_upper;
for (int d=0; d<dim; ++d) {
@@ -133,7 +120,7 @@ namespace CarpetRegrid {
const ivect global_extent (hh.baseextent.upper() - hh.baseextent.lower());
const rvect scale = rvect(global_extent) / (global_upper - global_lower);
- const int levfac = ipow(hh.reffact, reflevel);
+ const int levfac = ipow(hh.reffact, rl);
assert (all (hh.baseextent.stride() % levfac == 0));
const ivect istride = hh.baseextent.stride() / levfac;
@@ -149,7 +136,7 @@ namespace CarpetRegrid {
ivect pos2int (const cGH* const cctkGH, const gh<dim>& hh,
- const rvect & rpos, const int reflevel)
+ const rvect & rpos, const int rl)
{
rvect global_lower, global_upper;
for (int d=0; d<dim; ++d) {
@@ -163,7 +150,7 @@ namespace CarpetRegrid {
const ivect global_extent (hh.baseextent.upper() - hh.baseextent.lower());
const rvect scale = rvect(global_extent) / (global_upper - global_lower);
- const int levfac = ipow(hh.reffact, reflevel);
+ const int levfac = ipow(hh.reffact, rl);
assert (all (hh.baseextent.stride() % levfac == 0));
const ivect istride = hh.baseextent.stride() / levfac;
diff --git a/Carpet/CarpetRegrid/src/manualgridpointlist.cc b/Carpet/CarpetRegrid/src/manualgridpointlist.cc
index 6976b982b..6d5c4cd78 100644
--- a/Carpet/CarpetRegrid/src/manualgridpointlist.cc
+++ b/Carpet/CarpetRegrid/src/manualgridpointlist.cc
@@ -12,7 +12,7 @@
#include "regrid.hh"
extern "C" {
- static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetRegrid/src/manualgridpointlist.cc,v 1.1 2004/01/25 14:57:30 schnetter Exp $";
+ static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetRegrid/src/manualgridpointlist.cc,v 1.2 2004/04/18 13:29:43 schnetter Exp $";
CCTK_FILEVERSION(Carpet_CarpetRegrid_manualgridpointlist_cc);
}
@@ -27,22 +27,12 @@ namespace CarpetRegrid {
int ManualGridpointList (cGH const * const cctkGH,
gh<dim> const & hh,
- int const reflevel,
- int const map,
- int const size,
- jjvect const & nboundaryzones,
- jjvect const & is_internal,
- jjvect const & is_staggered,
- jjvect const & shiftout,
gh<dim>::rexts & bbsss,
gh<dim>::rbnds & obss,
gh<dim>::rprocs & pss)
{
DECLARE_CCTK_PARAMETERS;
- assert (reflevel>=0 && reflevel<maxreflevels);
- assert (map>=0 && map<maps);
-
assert (refinement_levels >= 1);
// do nothing if the levels already exist
@@ -120,10 +110,7 @@ namespace CarpetRegrid {
// make multigrid aware
vector<vector<ibbox> > bbss;
- MakeMultigridBoxes
- (cctkGH,
- size, nboundaryzones, is_internal, is_staggered, shiftout,
- bbs, obs, bbss);
+ MakeMultigridBoxes (cctkGH, bbs, obs, bbss);
bbsss.at(rl) = bbss;
obss.at(rl) = obs;
diff --git a/Carpet/CarpetRegrid/src/manualgridpoints.cc b/Carpet/CarpetRegrid/src/manualgridpoints.cc
index e8cd6c17a..f8be5eb57 100644
--- a/Carpet/CarpetRegrid/src/manualgridpoints.cc
+++ b/Carpet/CarpetRegrid/src/manualgridpoints.cc
@@ -11,7 +11,7 @@
#include "regrid.hh"
extern "C" {
- static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetRegrid/src/manualgridpoints.cc,v 1.1 2004/01/25 14:57:30 schnetter Exp $";
+ static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetRegrid/src/manualgridpoints.cc,v 1.2 2004/04/18 13:29:43 schnetter Exp $";
CCTK_FILEVERSION(Carpet_CarpetRegrid_manualgridpoints_cc);
}
@@ -26,22 +26,12 @@ namespace CarpetRegrid {
int ManualGridpoints (cGH const * const cctkGH,
gh<dim> const & hh,
- int const reflevel,
- int const map,
- int const size,
- jjvect const & nboundaryzones,
- jjvect const & is_internal,
- jjvect const & is_staggered,
- jjvect const & shiftout,
gh<dim>::rexts & bbsss,
gh<dim>::rbnds & obss,
gh<dim>::rprocs & pss)
{
DECLARE_CCTK_PARAMETERS;
- assert (reflevel>=0 && reflevel<maxreflevels);
- assert (map>=0 && map<maps);
-
if (refinement_levels > 4) {
CCTK_WARN (0, "Cannot currently specify manual refinement regions for more than 4 refinement levels");
}
@@ -72,7 +62,7 @@ namespace CarpetRegrid {
gh<dim>::cbnds obs;
ManualGridpoints_OneLevel
- (cctkGH, hh, rl, refinement_levels,
+ (cctkGH, hh, rl,refinement_levels,
ilower.at(rl-1), iupper.at(rl-1), ob, bbs, obs);
// make multiprocessor aware
@@ -81,10 +71,7 @@ namespace CarpetRegrid {
// make multigrid aware
vector<vector<ibbox> > bbss;
- MakeMultigridBoxes
- (cctkGH,
- size, nboundaryzones, is_internal, is_staggered, shiftout,
- bbs, obs, bbss);
+ MakeMultigridBoxes (cctkGH, bbs, obs, bbss);
bbsss.at(rl) = bbss;
obss.at(rl) = obs;
@@ -99,38 +86,36 @@ namespace CarpetRegrid {
void ManualGridpoints_OneLevel (const cGH * const cctkGH,
const gh<dim> & hh,
- const int reflevel,
- const int reflevels,
+ const int rl,
+ const int numrl,
const ivect ilower,
const ivect iupper,
const bbvect obound,
vector<ibbox> & bbs,
vector<bbvect> & obs)
{
- if (reflevel >= reflevels) return;
-
const ivect rstr = hh.baseextent.stride();
const ivect rlb = hh.baseextent.lower();
const ivect rub = hh.baseextent.upper();
- const int levfac = ipow(hh.reffact, reflevel);
+ const int levfac = ipow(hh.reffact, rl);
assert (all (rstr % levfac == 0));
const ivect str (rstr / levfac);
const ivect lb (ilower);
const ivect ub (iupper);
if (! all(lb>=rlb && ub<=rub)) {
ostringstream buf;
- buf << "The refinement region boundaries for refinement level #" << reflevel << " are not within the main grid. Allowed are the grid point boundaries " << rlb << " - " << rub << "; specified were " << lb << " - " << ub << ends;
+ buf << "The refinement region boundaries for refinement level #" << rl << " are not within the main grid. Allowed are the grid point boundaries " << rlb << " - " << rub << "; specified were " << lb << " - " << ub << ends;
CCTK_WARN (0, buf.str().c_str());
}
if (! all(lb<=ub)) {
ostringstream buf;
- buf << "The refinement region boundaries for refinement level #" << reflevel << " have the upper boundary (" << ub << ") less than the lower boundary (" << lb << ")" << ends;
+ buf << "The refinement region boundaries for refinement level #" << rl << " have the upper boundary (" << ub << ") less than the lower boundary (" << lb << ")" << ends;
CCTK_WARN (0, buf.str().c_str());
}
if (! all(lb%str==0 && ub%str==0)) {
CCTK_VWarn (0, __LINE__, __FILE__, CCTK_THORNSTRING,
- "The refinement region boundaries for refinement level #%d are not a multiple of the stride for that level", reflevel);
+ "The refinement region boundaries for refinement level #%d are not a multiple of the stride for that level", rl);
}
assert (all(lb>=rlb && ub<=rub));
assert (all(lb<=ub));
diff --git a/Carpet/CarpetRegrid/src/moving.cc b/Carpet/CarpetRegrid/src/moving.cc
index 411286940..cfcb6496c 100644
--- a/Carpet/CarpetRegrid/src/moving.cc
+++ b/Carpet/CarpetRegrid/src/moving.cc
@@ -9,7 +9,7 @@
#include "regrid.hh"
extern "C" {
- static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetRegrid/src/moving.cc,v 1.2 2004/04/16 18:41:33 schnetter Exp $";
+ static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetRegrid/src/moving.cc,v 1.3 2004/04/18 13:29:43 schnetter Exp $";
CCTK_FILEVERSION(Carpet_CarpetRegrid_moving_cc);
}
@@ -24,13 +24,6 @@ namespace CarpetRegrid {
int Moving (cGH const * const cctkGH,
gh<dim> const & hh,
- int const reflevel,
- int const map,
- int const size,
- jjvect const & nboundaryzones,
- jjvect const & is_internal,
- jjvect const & is_staggered,
- jjvect const & shiftout,
gh<dim>::rexts & bbsss,
gh<dim>::rbnds & obss,
gh<dim>::rprocs & pss)
@@ -38,9 +31,6 @@ namespace CarpetRegrid {
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
- assert (reflevel>=0 && reflevel<maxreflevels);
- assert (map>=0 && map<maps);
-
assert (refinement_levels >= 1);
// do nothing if the levels already exist
@@ -95,10 +85,7 @@ namespace CarpetRegrid {
// make multigrid aware
vector<vector<ibbox> > bbss;
- MakeMultigridBoxes
- (cctkGH,
- size, nboundaryzones, is_internal, is_staggered, shiftout,
- bbs, obs, bbss);
+ MakeMultigridBoxes (cctkGH, bbs, obs, bbss);
bbsss.at(rl) = bbss;
obss.at(rl) = obs;
diff --git a/Carpet/CarpetRegrid/src/paramcheck.cc b/Carpet/CarpetRegrid/src/paramcheck.cc
index ad2c4819e..d0a463647 100644
--- a/Carpet/CarpetRegrid/src/paramcheck.cc
+++ b/Carpet/CarpetRegrid/src/paramcheck.cc
@@ -1,3 +1,5 @@
+#include <assert.h>
+
#include "cctk.h"
#include "cctk_Arguments.h"
#include "cctk_Parameters.h"
@@ -5,7 +7,7 @@
#include "carpet.hh"
#include "regrid.hh"
-static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetRegrid/src/paramcheck.cc,v 1.1 2002/05/16 23:25:54 schnetter Exp $";
+static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetRegrid/src/paramcheck.cc,v 1.2 2004/04/18 13:29:43 schnetter Exp $";
CCTK_FILEVERSION(CarpetRegrid_paramcheck_cc)
@@ -22,6 +24,22 @@ namespace CarpetRegrid {
if (refinement_levels > maxreflevels) {
CCTK_PARAMWARN ("The parameter CarpetRegrid::refinement_levels is larger than Carpet::max_refinement_levels");
}
+
+ if (smart_outer_boundaries) {
+ int type;
+ const CCTK_INT * const domain_from_coordbase
+ = (const CCTK_INT *) CCTK_ParameterGet ("domain_from_coordbase", "Carpet", &type);
+ assert (domain_from_coordbase);
+ assert (type == PARAMETER_BOOLEAN);
+ if (! *domain_from_coordbase) {
+ CCTK_PARAMWARN ("The parameter CarpetRegrid::smart_outer_boundaries can only be used when Carpet::domain_from_coordbase=yes");
+ }
+ if (CCTK_Equals(refined_regions, "manual-coordinate-list")) {
+ // do nothing
+ } else {
+ CCTK_PARAMWARN ("The parameter CarpetRegrid::smart_outer_boundaries can currently only be used when CarpetRegrid::refined_regions=manual-coordinate-list");
+ }
+ }
return 0;
}
diff --git a/Carpet/CarpetRegrid/src/regrid.cc b/Carpet/CarpetRegrid/src/regrid.cc
index 279044927..317c84381 100644
--- a/Carpet/CarpetRegrid/src/regrid.cc
+++ b/Carpet/CarpetRegrid/src/regrid.cc
@@ -13,7 +13,7 @@
#include "regrid.hh"
extern "C" {
- static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetRegrid/src/regrid.cc,v 1.38 2004/04/14 22:19:44 schnetter Exp $";
+ static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetRegrid/src/regrid.cc,v 1.39 2004/04/18 13:29:43 schnetter Exp $";
CCTK_FILEVERSION(Carpet_CarpetRegrid_regrid_cc);
}
@@ -25,13 +25,6 @@ namespace CarpetRegrid {
using namespace Carpet;
CCTK_INT CarpetRegrid_Regrid (CCTK_POINTER_TO_CONST const cctkGH_,
- CCTK_INT const reflevel,
- CCTK_INT const map,
- CCTK_INT const size,
- CCTK_INT const * const nboundaryzones_,
- CCTK_INT const * const is_internal_,
- CCTK_INT const * const is_staggered_,
- CCTK_INT const * const shiftout_,
CCTK_POINTER const bbsss_,
CCTK_POINTER const obss_,
CCTK_POINTER const pss_)
@@ -40,22 +33,13 @@ namespace CarpetRegrid {
const cGH * const cctkGH = (const cGH *) cctkGH_;
- assert (reflevel>=0 && reflevel<maxreflevels);
- assert (map>=0 && map<maps);
-
- assert (size == 2*dim);
- jjvect const nboundaryzones (* (jjvect const *) nboundaryzones_);
- jjvect const is_internal (* (jjvect const *) is_internal_);
- jjvect const is_staggered (* (jjvect const *) is_staggered_);
- jjvect const shiftout (* (jjvect const *) shiftout_);
-
gh<dim>::rexts & bbsss = * (gh<dim>::rexts *) bbsss_;
gh<dim>::rbnds & obss = * (gh<dim>::rbnds *) obss_;
gh<dim>::rprocs & pss = * (gh<dim>::rprocs *) pss_;
- gh<dim> const & hh = *vhh.at(map);
+ gh<dim> const & hh = *vhh.at(Carpet::map);
- assert (is_meta_mode());
+ assert (is_singlemap_mode());
@@ -135,59 +119,39 @@ namespace CarpetRegrid {
if (CCTK_EQUALS(refined_regions, "none")) {
- do_recompose = BaseLevel
- (cctkGH, hh, reflevel, map,
- size, nboundaryzones, is_internal, is_staggered, shiftout,
- bbsss, obss, pss);
+ do_recompose = BaseLevel (cctkGH, hh, bbsss, obss, pss);
} else if (CCTK_EQUALS(refined_regions, "centre")) {
- do_recompose = Centre
- (cctkGH, hh, reflevel, map,
- size, nboundaryzones, is_internal, is_staggered, shiftout,
- bbsss, obss, pss);
+ do_recompose = Centre (cctkGH, hh, bbsss, obss, pss);
} else if (CCTK_EQUALS(refined_regions, "manual-gridpoints")) {
- do_recompose = ManualGridpoints
- (cctkGH, hh, reflevel, map,
- size, nboundaryzones, is_internal, is_staggered, shiftout,
- bbsss, obss, pss);
+ do_recompose
+ = ManualGridpoints (cctkGH, hh, bbsss, obss, pss);
} else if (CCTK_EQUALS(refined_regions, "manual-coordinates")) {
- do_recompose = ManualCoordinates
- (cctkGH, hh, reflevel, map,
- size, nboundaryzones, is_internal, is_staggered, shiftout,
- bbsss, obss, pss);
+ do_recompose
+ = ManualCoordinates (cctkGH, hh, bbsss, obss, pss);
} else if (CCTK_EQUALS(refined_regions, "manual-gridpoint-list")) {
- do_recompose = ManualGridpointList
- (cctkGH, hh, reflevel, map,
- size, nboundaryzones, is_internal, is_staggered, shiftout,
- bbsss, obss, pss);
+ do_recompose
+ = ManualGridpointList (cctkGH, hh, bbsss, obss, pss);
} else if (CCTK_EQUALS(refined_regions, "manual-coordinate-list")) {
- do_recompose = ManualCoordinateList
- (cctkGH, hh, reflevel, map,
- size, nboundaryzones, is_internal, is_staggered, shiftout,
- bbsss, obss, pss);
+ do_recompose
+ = ManualCoordinateList (cctkGH, hh, bbsss, obss, pss);
} else if (CCTK_EQUALS(refined_regions, "moving")) {
- do_recompose = Moving
- (cctkGH, hh, reflevel, map,
- size, nboundaryzones, is_internal, is_staggered, shiftout,
- bbsss, obss, pss);
+ do_recompose = Moving (cctkGH, hh, bbsss, obss, pss);
} else if (CCTK_EQUALS(refined_regions, "automatic")) {
- do_recompose = Automatic
- (cctkGH, hh, reflevel, map,
- size, nboundaryzones, is_internal, is_staggered, shiftout,
- bbsss, obss, pss);
+ do_recompose = Automatic (cctkGH, hh, bbsss, obss, pss);
} else {
assert (0);
diff --git a/Carpet/CarpetRegrid/src/regrid.hh b/Carpet/CarpetRegrid/src/regrid.hh
index 2de83f094..9228e23c3 100644
--- a/Carpet/CarpetRegrid/src/regrid.hh
+++ b/Carpet/CarpetRegrid/src/regrid.hh
@@ -1,4 +1,4 @@
-// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetRegrid/src/regrid.hh,v 1.12 2004/04/14 22:19:44 schnetter Exp $
+// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetRegrid/src/regrid.hh,v 1.13 2004/04/18 13:29:43 schnetter Exp $
#ifndef CARPETREGRID_HH
#define CARPETREGRID_HH
@@ -35,13 +35,6 @@ namespace CarpetRegrid {
// gh<dim>::rbnds * obss,
// gh<dim>::rprocs * pss);
CCTK_INT CarpetRegrid_Regrid (CCTK_POINTER_TO_CONST const cctkGH_,
- CCTK_INT const reflevel,
- CCTK_INT const map,
- CCTK_INT const size,
- CCTK_INT const * const nboundaryzones,
- CCTK_INT const * const is_internal,
- CCTK_INT const * const is_staggered,
- CCTK_INT const * const shiftout,
CCTK_POINTER const bbsss_,
CCTK_POINTER const obss_,
CCTK_POINTER const pss_);
@@ -51,47 +44,26 @@ namespace CarpetRegrid {
int BaseLevel (cGH const * const cctkGH,
gh<dim> const & hh,
- int const reflevel,
- int const map,
- int const size,
- jjvect const & nboundaryzones,
- jjvect const & is_internal,
- jjvect const & is_staggered,
- jjvect const & shiftout,
gh<dim>::rexts & bbsss,
gh<dim>::rbnds & obss,
gh<dim>::rprocs & pss);
int Centre (cGH const * const cctkGH,
gh<dim> const & hh,
- int const reflevel,
- int const map,
- int const size,
- jjvect const & nboundaryzones,
- jjvect const & is_internal,
- jjvect const & is_staggered,
- jjvect const & shiftout,
gh<dim>::rexts & bbsss,
gh<dim>::rbnds & obss,
gh<dim>::rprocs & pss);
int ManualGridpoints (cGH const * const cctkGH,
gh<dim> const & hh,
- int const reflevel,
- int const map,
- int const size,
- jjvect const & nboundaryzones,
- jjvect const & is_internal,
- jjvect const & is_staggered,
- jjvect const & shiftout,
gh<dim>::rexts & bbsss,
gh<dim>::rbnds & obss,
gh<dim>::rprocs & pss);
void ManualGridpoints_OneLevel (const cGH * const cctkGH,
const gh<dim> & hh,
- const int reflevel,
- const int reflevels,
+ const int rl,
+ const int numrl,
const ivect ilower,
const ivect iupper,
const bbvect obound,
@@ -100,87 +72,57 @@ namespace CarpetRegrid {
int ManualCoordinates (cGH const * const cctkGH,
gh<dim> const & hh,
- int const reflevel,
- int const map,
- int const size,
- jjvect const & nboundaryzones,
- jjvect const & is_internal,
- jjvect const & is_staggered,
- jjvect const & shiftout,
gh<dim>::rexts & bbsss,
gh<dim>::rbnds & obss,
gh<dim>::rprocs & pss);
void ManualCoordinates_OneLevel (const cGH * const cctkGH,
const gh<dim> & hh,
- const int reflevel,
- const int reflevels,
- const rvect ilower,
- const rvect iupper,
+ const int rl,
+ const int numrl,
+ const rvect lower,
+ const rvect upper,
const bbvect obound,
vector<ibbox> & bbs,
vector<bbvect> & obs);
- ivect delta2int (const cGH * const cctkGH, const gh<dim>& hh,
- const rvect & rpos, const int reflevel);
- ivect pos2int (const cGH* const cctkGH, const gh<dim>& hh,
- const rvect & rpos, const int reflevel);
+ ivect delta2int (const cGH * const cctkGH,
+ const gh<dim>& hh,
+ const rvect & rpos,
+ const int rl);
+ ivect pos2int (const cGH* const cctkGH,
+ const gh<dim>& hh,
+ const rvect & rpos,
+ const int rl);
int ManualGridpointList (cGH const * const cctkGH,
gh<dim> const & hh,
- int const reflevel,
- int const map,
- int const size,
- jjvect const & nboundaryzones,
- jjvect const & is_internal,
- jjvect const & is_staggered,
- jjvect const & shiftout,
gh<dim>::rexts & bbsss,
gh<dim>::rbnds & obss,
gh<dim>::rprocs & pss);
int ManualCoordinateList (cGH const * const cctkGH,
gh<dim> const & hh,
- int const reflevel,
- int const map,
- int const size,
- jjvect const & nboundaryzones,
- jjvect const & is_internal,
- jjvect const & is_staggered,
- jjvect const & shiftout,
gh<dim>::rexts & bbsss,
gh<dim>::rbnds & obss,
gh<dim>::rprocs & pss);
int Moving (cGH const * const cctkGH,
gh<dim> const & hh,
- int const reflevel,
- int const map,
- int const size,
- jjvect const & nboundaryzones,
- jjvect const & is_internal,
- jjvect const & is_staggered,
- jjvect const & shiftout,
gh<dim>::rexts & bbsss,
gh<dim>::rbnds & obss,
gh<dim>::rprocs & pss);
int Automatic (cGH const * const cctkGH,
gh<dim> const & hh,
- int const reflevel,
- int const map,
- int const size,
- jjvect const & nboundaryzones,
- jjvect const & is_internal,
- jjvect const & is_staggered,
- jjvect const & shiftout,
gh<dim>::rexts & bbsss,
gh<dim>::rbnds & obss,
gh<dim>::rprocs & pss);
void Automatic_OneLevel (const cGH * const cctkGH,
const gh<dim> & hh,
- const int reflevel,
+ const int rl,
+ const int numrl,
const int minwidth,
const CCTK_REAL minfraction,
const CCTK_REAL maxerror,