diff options
author | Erik Schnetter <schnetter@aei.mpg.de> | 2004-10-08 21:43:00 +0000 |
---|---|---|
committer | Erik Schnetter <schnetter@aei.mpg.de> | 2004-10-08 21:43:00 +0000 |
commit | faa8daafc46832a22b642bc63cbc68ee31355432 (patch) | |
tree | 69e19e8dfb320a7aa4f56eb92d58d71d905de6a4 | |
parent | 36c82405616852cba4e5418d3bd402ab7f6c591e (diff) |
CarpetRegrid: allow refined regions to move
darcs-hash:20041008214349-891bb-c7bfec9052c47d14c70ed7c9c620e97be1b959f6.gz
-rw-r--r-- | Carpet/CarpetRegrid/param.ccl | 31 | ||||
-rw-r--r-- | Carpet/CarpetRegrid/src/manualcoordinatelist.cc | 11 |
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 |