diff options
-rw-r--r-- | src/comm/CactusDefaultComm.c | 5 | ||||
-rw-r--r-- | src/include/cGH.h | 7 | ||||
-rw-r--r-- | src/include/cctk.h | 25 |
3 files changed, 34 insertions, 3 deletions
diff --git a/src/comm/CactusDefaultComm.c b/src/comm/CactusDefaultComm.c index cb11197c..128eb248 100644 --- a/src/comm/CactusDefaultComm.c +++ b/src/comm/CactusDefaultComm.c @@ -167,11 +167,14 @@ cGH *CactusDefaultSetupGH(tFleshConfig *config, int convergence_level) thisGH->cctk_bbox = malloc(2*cctk_dim*sizeof(int)); thisGH->cctk_nghostzones = malloc(2*cctk_dim*sizeof(int)); thisGH->cctk_levfac = malloc(cctk_dim*sizeof(int)); + thisGH->cctk_levoff = malloc(cctk_dim*sizeof(int)); + thisGH->cctk_levoffdenom = malloc(cctk_dim*sizeof(int)); thisGH->cctk_delta_space = malloc(cctk_dim*sizeof(CCTK_REAL)); /* FIXME : Next line goes when coords are done properly */ thisGH->cctk_origin_space = malloc(cctk_dim*sizeof(CCTK_REAL)); thisGH->cctk_delta_time = 1; + thisGH->cctk_timefac = 1; thisGH->cctk_convlevel = 0; n_variables = CCTK_NumVars(); @@ -214,6 +217,8 @@ cGH *CactusDefaultSetupGH(tFleshConfig *config, int convergence_level) thisGH->cctk_bbox && thisGH->cctk_nghostzones && thisGH->cctk_levfac && + thisGH->cctk_levoff && + thisGH->cctk_levoffdenom && thisGH->cctk_delta_space && thisGH->cctk_origin_space && thisGH->data && diff --git a/src/include/cGH.h b/src/include/cGH.h index f8a4a68c..0fa98a9c 100644 --- a/src/include/cGH.h +++ b/src/include/cGH.h @@ -53,6 +53,13 @@ typedef struct /* The refinement factor over the top level (coarsest) grid. */ int *cctk_levfac; + /* Offset between this level's and the coarsest level's origin */ + int *cctk_levoff; + int *cctk_levoffdenom; + + /* The refinement factor in time over the top level (coarsest) grid. */ + int cctk_timefac; + /* The convergence level (numbered from zero upwards) */ int cctk_convlevel; diff --git a/src/include/cctk.h b/src/include/cctk.h index 053edebb..e00d249a 100644 --- a/src/include/cctk.h +++ b/src/include/cctk.h @@ -32,7 +32,9 @@ #define _CCTK_FARGUMENTS cctk_dim, cctk_gsh, cctk_lsh, cctk_lbnd,\ cctk_ubnd, cctk_lssh, cctk_from, cctk_to, cctk_bbox,\ cctk_delta_time, cctk_time, cctk_delta_space,\ - cctk_origin_space, cctk_levfac, cctk_convlevel,\ + cctk_origin_space, cctk_levfac, \ + cctk_levoff, cctk_levoffdenom, cctk_timefac, \ + cctk_convlevel,\ cctk_nghostzones, cctk_iteration, cctkGH #define _DECLARE_CCTK_ARGUMENTS _DECLARE_CCTK_FARGUMENTS @@ -46,6 +48,9 @@ CCTK_REAL cctk_delta_space(cctk_dim)&&\ CCTK_REAL cctk_origin_space(cctk_dim)&&\ INTEGER cctk_levfac(cctk_dim)&&\ + INTEGER cctk_levoff(cctk_dim)&&\ + INTEGER cctk_levoffdenom(cctk_dim)&&\ + INTEGER cctk_timefac&&\ INTEGER cctk_convlevel&&\ INTEGER cctk_nghostzones(cctk_dim)&&\ INTEGER cctk_iteration&&\ @@ -63,8 +68,9 @@ #define CCTK_PASS_FTOF CCTK_FARGUMENTS +#define CCTK_ORIGIN_SPACE(x) (cctk_origin_space(x)+cctk_delta_space(x)/cctk_levfac(x)*cctk_levoff(x)/cctk_levoffdenom(x)) #define CCTK_DELTA_SPACE(x) (cctk_delta_space(x)/cctk_levfac(x)) -#define CCTK_DELTA_TIME cctk_delta_time +#define CCTK_DELTA_TIME (cctk_delta_time/cctk_timefac) #define CCTK_LSSH(stag,dim) cctk_lssh((stag)+CCTK_NSTAGGER+(dim)) #define CCTK_LSSH_IDX(stag,dim) ((stag)+CCTK_NSTAGGER*(dim)) @@ -191,6 +197,9 @@ inline int CCTK_GFINDEX4D (const cGH *GH, int i, int j, int k, int l) CCTK_REAL *cctk_delta_space = cctkGH->cctk_delta_space;\ CCTK_REAL *cctk_origin_space = cctkGH->cctk_origin_space;\ int *cctk_levfac = cctkGH->cctk_levfac;\ + int *cctk_levoff = cctkGH->cctk_levoff;\ + int *cctk_levoffdenom = cctkGH->cctk_levoffdenom;\ + int cctk_timefac = cctkGH->cctk_timefac;\ int cctk_convlevel = cctkGH->cctk_convlevel;\ int *cctk_nghostzones = cctkGH->cctk_nghostzones;\ int cctk_iteration = cctkGH->cctk_iteration; @@ -211,6 +220,9 @@ inline int CCTK_GFINDEX4D (const cGH *GH, int i, int j, int k, int l) (void) (cctk_delta_space + 0);\ (void) (cctk_origin_space + 0);\ (void) (cctk_levfac + 0);\ + (void) (cctk_levoff + 0);\ + (void) (cctk_levoffdenom + 0);\ + (void) (cctk_timefac + 0);\ (void) (cctk_convlevel + 0);\ (void) (cctk_nghostzones + 0);\ (void) (cctk_iteration + 0); @@ -227,6 +239,9 @@ inline int CCTK_GFINDEX4D (const cGH *GH, int i, int j, int k, int l) &((xGH)->cctk_time), (xGH)->cctk_delta_space,\ (xGH)->cctk_origin_space,\ (xGH)->cctk_levfac,\ + (xGH)->cctk_levoff,\ + (xGH)->cctk_levoffdenom,\ + &((xGH)->cctk_timefac),\ &((xGH)->cctk_convlevel),\ (xGH)->cctk_nghostzones,\ &((xGH)->cctk_iteration),\ @@ -240,14 +255,18 @@ inline int CCTK_GFINDEX4D (const cGH *GH, int i, int j, int k, int l) int *,\ int *,\ int *,\ + int *,\ + int *,\ + int *,\ cGH * #define CCTK_EQUALS(a,b) (CCTK_Equals((a),(b))==1) #define CCTK_PASS_CTOC cctkGH +#define CCTK_ORIGIN_SPACE(x) (cctk_origin_space[x]+cctk_delta_space[x]/cctk_levfac[x]*cctk_levoff[x]/cctk_levoffdenom[x]) #define CCTK_DELTA_SPACE(x) (cctk_delta_space[x]/cctk_levfac[x]) -#define CCTK_DELTA_TIME cctk_delta_time +#define CCTK_DELTA_TIME (cctk_delta_time/cctk_timefac) #define CCTK_LSSH(stag,dim) cctk_lssh[(stag)+CCTK_NSTAGGER*(dim)] #define CCTK_LSSH_IDX(stag,dim) ((stag)+CCTK_NSTAGGER*(dim)) |