summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/comm/CactusDefaultComm.c5
-rw-r--r--src/include/cGH.h7
-rw-r--r--src/include/cctk.h25
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))