aboutsummaryrefslogtreecommitdiff
path: root/Carpet/CarpetRegrid
diff options
context:
space:
mode:
authorErik Schnetter <schnetter@aei.mpg.de>2004-10-08 21:43:00 +0000
committerErik Schnetter <schnetter@aei.mpg.de>2004-10-08 21:43:00 +0000
commitfaa8daafc46832a22b642bc63cbc68ee31355432 (patch)
tree69e19e8dfb320a7aa4f56eb92d58d71d905de6a4 /Carpet/CarpetRegrid
parent36c82405616852cba4e5418d3bd402ab7f6c591e (diff)
CarpetRegrid: allow refined regions to move
darcs-hash:20041008214349-891bb-c7bfec9052c47d14c70ed7c9c620e97be1b959f6.gz
Diffstat (limited to 'Carpet/CarpetRegrid')
-rw-r--r--Carpet/CarpetRegrid/param.ccl31
-rw-r--r--Carpet/CarpetRegrid/src/manualcoordinatelist.cc11
2 files changed, 41 insertions, 1 deletions
diff --git a/Carpet/CarpetRegrid/param.ccl b/Carpet/CarpetRegrid/param.ccl
index 9a9aa5207..a5c36b824 100644
--- a/Carpet/CarpetRegrid/param.ccl
+++ b/Carpet/CarpetRegrid/param.ccl
@@ -314,6 +314,37 @@ CCTK_STRING coordinates "List of bounding box coordinates" STEERABLE=always
+# Offsets for manual-coordinate-list
+
+RESTRICTED:
+
+CCTK_INT num_offsets "Number of given offsets" STEERABLE=always
+{
+ 0:10 :: ""
+} 0
+
+CCTK_INT offset_firstlevel "First (lowest) refinement level that should have an offset applied" STEERABLE=always
+{
+ 1:* :: ""
+} 1
+
+CCTK_REAL offsetx[10] "x-coordinate of offset" STEERABLE=always
+{
+ (*:*) :: ""
+} 0.0
+CCTK_REAL offsety[10] "y-coordinate of offset" STEERABLE=always
+{
+ (*:*) :: ""
+} 0.0
+CCTK_REAL offsetz[10] "z-coordinate of offset" STEERABLE=always
+{
+ (*:*) :: ""
+} 0.0
+
+PRIVATE:
+
+
+
# Outer boundaries for manual-gridpoint-list and manual-coordinate-list
CCTK_STRING outerbounds "Outer boundaries" STEERABLE=always
diff --git a/Carpet/CarpetRegrid/src/manualcoordinatelist.cc b/Carpet/CarpetRegrid/src/manualcoordinatelist.cc
index 361c979a3..1a2a4b871 100644
--- a/Carpet/CarpetRegrid/src/manualcoordinatelist.cc
+++ b/Carpet/CarpetRegrid/src/manualcoordinatelist.cc
@@ -162,9 +162,18 @@ namespace CarpetRegrid {
// rvect const spacing = base_spacing * pow(CCTK_REAL(mgfact), basemglevel) / ipow(reffact, rl);
rvect const spacing = base_spacing / ipow(reffact, rl);
assert (all(abs(ext.stride() - spacing) < spacing * 1.0e-10));
+
+ rvect offset = rvect(0);
+ if (c < num_offsets) {
+ if (rl >= offset_firstlevel) {
+ assert (dim==3);
+ offset = rvect(offsetx[c], offsety[c], offsetz[c]);
+ }
+ }
+
ManualCoordinates_OneLevel
(cctkGH, hh, rl, refinement_levels,
- ext.lower(), ext.upper(), ob, bbs, obs);
+ ext.lower() + offset, ext.upper() + offset, ob, bbs, obs);
}
// make multiprocessor aware