aboutsummaryrefslogtreecommitdiff
path: root/Carpet
diff options
context:
space:
mode:
Diffstat (limited to 'Carpet')
-rw-r--r--Carpet/Carpet/param.ccl6
-rw-r--r--Carpet/Carpet/src/SetupGH.cc33
-rw-r--r--Carpet/Carpet/src/carpet_public.h8
-rw-r--r--Carpet/Carpet/src/helpers.cc2
4 files changed, 42 insertions, 7 deletions
diff --git a/Carpet/Carpet/param.ccl b/Carpet/Carpet/param.ccl
index 73b472729..fc292ce48 100644
--- a/Carpet/Carpet/param.ccl
+++ b/Carpet/Carpet/param.ccl
@@ -95,6 +95,12 @@ BOOLEAN periodic_z "do not use this parameter"
private:
+KEYWORD refinement_centering "Centering"
+{
+ "vertex" :: "use a vertex centred grid structure"
+ "cell" :: "use a cell centred grid structure"
+} "vertex"
+
CCTK_INT max_refinement_levels "Maximum number of refinement levels (including the base level)"
{
1:* :: "must be positive"
diff --git a/Carpet/Carpet/src/SetupGH.cc b/Carpet/Carpet/src/SetupGH.cc
index 14b42c6db..929b35faf 100644
--- a/Carpet/Carpet/src/SetupGH.cc
+++ b/Carpet/Carpet/src/SetupGH.cc
@@ -377,15 +377,28 @@ namespace Carpet {
{
DECLARE_CCTK_PARAMETERS;
+ // Centering
+ centering refcentering;
+ int reffactdenom;
+ if (CCTK_EQUALS(refinement_centering, "vertex")) {
+ refcentering = vertex_centered;
+ reffactdenom = 1;
+ } else if (CCTK_EQUALS(refinement_centering, "cell")) {
+ refcentering = cell_centered;
+ reffactdenom = 2;
+ } else {
+ assert (0);
+ }
+
// Base grid extent
- ivect const str (maxspacereflevelfact);
+ ivect const str (maxspacereflevelfact * reffactdenom);
ivect const lb (0);
ivect const ub ((npoints - 1) * str);
ibbox const baseext (lb, ub, str);
// Allocate grid hierarchy
vhh.resize(maps);
- vhh.at(m) = new gh (spacereffacts, vertex_centered,
+ vhh.at(m) = new gh (spacereffacts, refcentering,
convergence_factor, vertex_centered,
baseext);
}
@@ -425,7 +438,7 @@ namespace Carpet {
{
DECLARE_CCTK_PARAMETERS;
return (use_outer_buffer_zones
- ? ghosts * (int)num_integrator_substeps + (int)buffer_width
+ ? ghosts * int(num_integrator_substeps) + int(buffer_width)
: ghosts);
}
@@ -982,8 +995,16 @@ namespace Carpet {
// Ensure that the boundary is not staggered
for (int d=0; d<dim; ++d) {
for (int f=0; f<2; ++f) {
- if (is_staggered[d][f]) {
- CCTK_WARN (0, "The parameters CoordBase::boundary_staggered specify a staggered boundary. Carpet does not support staggered boundaries when Carpet::max_refinement_levels > 1");
+ if (CCTK_EQUALS (refinement_centering, "vertex")) {
+ if (is_staggered[d][f]) {
+ CCTK_WARN (0, "The parameters CoordBase::boundary_staggered specify a staggered boundary. Carpet does not support staggered boundaries when Carpet::max_refinement_levels > 1 with Carpet::centering = \"vertex\"");
+ }
+ } else if (CCTK_EQUALS (refinement_centering, "cell")) {
+ if (not is_staggered[d][f]) {
+ CCTK_WARN (0, "The parameters CoordBase::boundary_staggered specify a non-staggered boundary. Carpet does not support non-staggered boundaries when Carpet::max_refinement_levels > 1 with Carpet::centering = \"cell\"");
+ }
+ } else {
+ assert (0);
}
}
}
@@ -1597,8 +1618,6 @@ namespace Carpet {
return op_copy;
} else if (CCTK_Equals(prolong_string, "Lagrange")) {
return op_Lagrange;
- } else if (CCTK_Equals(prolong_string, "TVD")) {
- return op_TVD;
} else if (CCTK_Equals(prolong_string, "ENO")) {
return op_ENO;
} else if (CCTK_Equals(prolong_string, "WENO")) {
diff --git a/Carpet/Carpet/src/carpet_public.h b/Carpet/Carpet/src/carpet_public.h
index c7fd66289..85090e4e8 100644
--- a/Carpet/Carpet/src/carpet_public.h
+++ b/Carpet/Carpet/src/carpet_public.h
@@ -67,6 +67,14 @@ namespace Carpet {
int mglevelfact;
#endif
+
+
+
+#if 0
+ /* Number of buffer zones */
+ int const * nbufferzones;
+#endif
+
};
struct CarpetGH const * GetCarpetGH (const cGH * const cgh);
diff --git a/Carpet/Carpet/src/helpers.cc b/Carpet/Carpet/src/helpers.cc
index 2edfc6c54..9cad987bb 100644
--- a/Carpet/Carpet/src/helpers.cc
+++ b/Carpet/Carpet/src/helpers.cc
@@ -96,6 +96,8 @@ namespace Carpet {
void *dummy = &dummy;
dummy = &cgh;
+ assert (0);
+
MPI_Abort (MPI_COMM_WORLD, retval);
exit (retval);
return -1;