diff options
author | schnetter <> | 2004-08-02 09:42:00 +0000 |
---|---|---|
committer | schnetter <> | 2004-08-02 09:42:00 +0000 |
commit | 6e4e317db036fe9f381728121e6ab16a8e86c9b8 (patch) | |
tree | f530d9de43ad4059464bf8328e53f21bfe6e67d7 /Carpet/CarpetRegrid/src/moving.cc | |
parent | 1fef49c6f744cc5a995b063f0bd2b1f7cd775a9f (diff) |
Do not return early.
Do not return early.
Take "symmetric_*" parameters into account.
darcs-hash:20040802094220-07bb3-c056a5903837e9d37d75ab68b9bfa03f35b1fcca.gz
Diffstat (limited to 'Carpet/CarpetRegrid/src/moving.cc')
-rw-r--r-- | Carpet/CarpetRegrid/src/moving.cc | 41 |
1 files changed, 12 insertions, 29 deletions
diff --git a/Carpet/CarpetRegrid/src/moving.cc b/Carpet/CarpetRegrid/src/moving.cc index 9c071288a..5e5287b86 100644 --- a/Carpet/CarpetRegrid/src/moving.cc +++ b/Carpet/CarpetRegrid/src/moving.cc @@ -1,4 +1,5 @@ -#include <assert.h> +#include <cassert> +#include <cmath> #include "cctk.h" #include "cctk_Parameters.h" @@ -9,7 +10,7 @@ #include "regrid.hh" extern "C" { - static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetRegrid/src/moving.cc,v 1.4 2004/04/28 15:45:25 schnetter Exp $"; + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetRegrid/src/moving.cc,v 1.5 2004/08/02 11:42:20 schnetter Exp $"; CCTK_FILEVERSION(Carpet_CarpetRegrid_moving_cc); } @@ -33,9 +34,6 @@ namespace CarpetRegrid { assert (refinement_levels >= 1); - // do nothing if the levels already exist - if (reflevel == refinement_levels) return 0; - assert (bbsss.size() >= 1); bbsss.resize (refinement_levels); @@ -43,43 +41,28 @@ namespace CarpetRegrid { pss.resize (refinement_levels); bvect const symmetric (symmetry_x, symmetry_y, symmetry_z); - ivect const zero(0); - - ivect rstr = hh.baseextent.stride(); - ivect rlb = hh.baseextent.lower(); - ivect rub = hh.baseextent.upper(); + bbvect const ob (false); assert (! smart_outer_boundaries); for (size_t rl=1; rl<bbsss.size(); ++rl) { - // save old values - ivect const oldrlb = rlb; - ivect const oldrub = rub; - - // refined boxes have smaller stride - assert (all(rstr%hh.reffact == 0)); - rstr /= hh.reffact; - // calculate new extent CCTK_REAL const argument = 2*M_PI * moving_circle_frequency * cctk_time; rvect const pos (moving_centre_x + moving_circle_radius * cos(argument), moving_centre_y + moving_circle_radius * sin(argument), moving_centre_z); - ivect const centre = floor(rvect(rub - rlb) * pos / rstr + 0.5) * rstr; - ivect const radius = floor(rvect(rub - rlb) * moving_region_radius / rstr + 0.5) * rstr; - rlb = oldrlb + symmetric.ifthen(zero , centre - radius); - rub = oldrlb + symmetric.ifthen(radius, centre + radius); - assert (all(rlb >= oldrlb && rub <= oldrub)); + CCTK_REAL const radius = moving_region_radius / ipow(reffact, rl-1); + + rvect const rlb (symmetric.ifthen (rvect(0), pos - rvect(radius))); + rvect const rub (symmetric.ifthen (rvect(radius), pos + rvect(radius))); - ibbox const bb (rlb, rub, rstr); - vector<ibbox> bbs (1); - bbs.at(0) = bb; + vector<ibbox> bbs; + gh<dim>::cbnds obs; - bbvect const ob (false); - gh<dim>::cbnds obs (1); - obs.at(0) = ob; + ManualCoordinates_OneLevel + (cctkGH, hh, rl, refinement_levels, rlb, rub, ob, bbs, obs); // make multiprocessor aware gh<dim>::cprocs ps; |