From faa8daafc46832a22b642bc63cbc68ee31355432 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Fri, 8 Oct 2004 21:43:00 +0000 Subject: CarpetRegrid: allow refined regions to move darcs-hash:20041008214349-891bb-c7bfec9052c47d14c70ed7c9c620e97be1b959f6.gz --- Carpet/CarpetRegrid/param.ccl | 31 +++++++++++++++++++++++++ Carpet/CarpetRegrid/src/manualcoordinatelist.cc | 11 ++++++++- 2 files changed, 41 insertions(+), 1 deletion(-) (limited to 'Carpet/CarpetRegrid') 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 -- cgit v1.2.3