aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlanfer <lanfer@c78560ca-4b45-4335-b268-5f3340f3cb52>2000-04-19 10:13:19 +0000
committerlanfer <lanfer@c78560ca-4b45-4335-b268-5f3340f3cb52>2000-04-19 10:13:19 +0000
commit17bde9906ce66f96d00ac4d3e3f674576cbacd1a (patch)
tree3652927c5f728e03269a5b02b51d121ba0860596
parenta3e528c5fe5848aea8a65be7d8a14de733180ef9 (diff)
adding support for no_origin[xyz]
git-svn-id: http://svn.cactuscode.org/arrangements/CactusBase/CartGrid3D/trunk@104 c78560ca-4b45-4335-b268-5f3340f3cb52
-rw-r--r--src/CartGrid3D.c143
-rw-r--r--src/SymmetryWrappers.c14
2 files changed, 95 insertions, 62 deletions
diff --git a/src/CartGrid3D.c b/src/CartGrid3D.c
index 017a6d4..9c856b1 100644
--- a/src/CartGrid3D.c
+++ b/src/CartGrid3D.c
@@ -46,6 +46,27 @@ void CartGrid3D(CCTK_ARGUMENTS)
CCTK_REAL lowerx,upperx,lowery,uppery,lowerz,upperz;
char infoline[120];
+ int cntstag[3];
+
+ /* default: not staggered */
+ cntstag[0]=0;
+ cntstag[1]=0;
+ cntstag[2]=0;
+
+ /* stagger around origin, if... */
+ if (no_origin)
+ {
+ cntstag[0]=1;
+ cntstag[1]=1;
+ cntstag[2]=1;
+ }
+ else
+ {
+ if (no_originx) cntstag[0] = 1;
+ if (no_originy) cntstag[1] = 1;
+ if (no_originz) cntstag[2] = 1;
+ }
+
iconv = pow(2, cctk_convlevel);
/****************************************************************
@@ -92,19 +113,20 @@ void CartGrid3D(CCTK_ARGUMENTS)
{
/* Grid spacing on coarsest grid */
+ if (cntstag[0]==1)
+ *coarse_dx = xmax1/(cctk_gsh[0]-1.5);
+ else
+ *coarse_dx = xmax1/(cctk_gsh[0]-cctk_nghostzones[0]-1.0);
+
+ if (cntstag[1]==1)
+ *coarse_dy = ymax1/(cctk_gsh[1]-1.5);
+ else
+ *coarse_dy = ymax1/(cctk_gsh[1]-cctk_nghostzones[1]-1.0);
- if (no_origin)
- {
- *coarse_dx = xmax1/(cctk_gsh[0]-1.5);
- *coarse_dy = ymax1/(cctk_gsh[1]-1.5);
+ if (cntstag[2]==1)
*coarse_dz = zmax1/(cctk_gsh[2]-1.5);
- }
- else
- {
- *coarse_dx = xmax1/(cctk_gsh[0]-cctk_nghostzones[0]-1.0);
- *coarse_dy = ymax1/(cctk_gsh[1]-cctk_nghostzones[1]-1.0);
- *coarse_dz = zmax1/(cctk_gsh[2]-cctk_nghostzones[2]-1.0);
- }
+ else
+ *coarse_dz = zmax1/(cctk_gsh[2]-cctk_nghostzones[2]-1.0);
/* Grid spacing on this grid */
this_dx = *coarse_dx;
@@ -112,18 +134,19 @@ void CartGrid3D(CCTK_ARGUMENTS)
this_dz = *coarse_dz;
/* Minimum coordinate values on this grid */
- if (no_origin)
- {
- x_origin = (0.5-cctk_nghostzones[0])*this_dx;
- y_origin = (0.5-cctk_nghostzones[1])*this_dy;
- z_origin = (0.5-cctk_nghostzones[2])*this_dz;
- }
+ if (cntstag[0]==1)
+ x_origin = (0.5-cctk_nghostzones[0])*this_dx;
else
- {
- x_origin = (-cctk_nghostzones[0])*this_dx;
- y_origin = (-cctk_nghostzones[1])*this_dy;
- z_origin = (-cctk_nghostzones[2])*this_dz;
- }
+ x_origin = (-cctk_nghostzones[0])*this_dx;
+ if (cntstag[1]==1)
+ y_origin = (0.5-cctk_nghostzones[1])*this_dy;
+ else
+ y_origin = (-cctk_nghostzones[1])*this_dy;
+ if (cntstag[2]==1)
+ z_origin = (0.5-cctk_nghostzones[2])*this_dz;
+ else
+ z_origin = (-cctk_nghostzones[2])*this_dz;
+
}
else if (CCTK_Equals(domain,"quadrant"))
{
@@ -197,48 +220,52 @@ void CartGrid3D(CCTK_ARGUMENTS)
}
else if (CCTK_Equals(domain,"quadrant"))
{
- if (no_origin)
- {
- x_origin = (- cctk_nghostzones[0] + 0.5)*this_dx;
- y_origin = (- cctk_nghostzones[1] + 0.5)*this_dy;
- z_origin = (0.5 - cctk_gsh[2]/2)*this_dz;
- }
- else
- {
- x_origin = (- cctk_nghostzones[0])*this_dx;
- y_origin = (- cctk_nghostzones[1])*this_dy;
- z_origin = (- cctk_gsh[2]/2)*this_dz;
- }
+
+ if (cntstag[0]==1)
+ x_origin = (- cctk_nghostzones[0] + 0.5)*this_dx;
+ else
+ x_origin = (- cctk_nghostzones[0])*this_dx;
+ if (cntstag[1]==1)
+ y_origin = (- cctk_nghostzones[1] + 0.5)*this_dy;
+ else
+ y_origin = (- cctk_nghostzones[1])*this_dy;
+ if (cntstag[2]==1)
+ z_origin = (0.5 - cctk_gsh[2]/2)*this_dz;
+ else
+ z_origin = (- cctk_gsh[2]/2)*this_dz;
}
else if (CCTK_Equals(domain,"octant"))
{
- if (no_origin)
- {
- x_origin = (- cctk_nghostzones[0]+0.5)*this_dx;
- y_origin = (- cctk_nghostzones[1]+0.5)*this_dy;
- z_origin = (- cctk_nghostzones[2]+0.5)*this_dz;
- }
- else
- {
- x_origin = (- cctk_nghostzones[0])*this_dx;
- y_origin = (- cctk_nghostzones[1])*this_dy;
- z_origin = (- cctk_nghostzones[2])*this_dz;
- }
+ if (cntstag[0]==1)
+ x_origin = (- cctk_nghostzones[0]+0.5)*this_dx;
+ else
+ x_origin = (- cctk_nghostzones[0])*this_dx;
+ if (cntstag[1]==1)
+ y_origin = (- cctk_nghostzones[1]+0.5)*this_dy;
+ else
+ y_origin = (- cctk_nghostzones[1])*this_dy;
+ if (cntstag[2]==1)
+ z_origin = (- cctk_nghostzones[2]+0.5)*this_dz;
+ else
+ z_origin = (- cctk_nghostzones[2])*this_dz;
+
}
else if (CCTK_Equals(domain,"full"))
- {
- if (no_origin)
- {
- x_origin = (0.5 - cctk_gsh[0]/2)*this_dx;
- y_origin = (0.5 - cctk_gsh[1]/2)*this_dy;
- z_origin = (0.5 - cctk_gsh[2]/2)*this_dz;
- }
+ {
+ if (cntstag[0]==1)
+ x_origin = (0.5 - cctk_gsh[0]/2)*this_dx;
+ else
+ x_origin = (- cctk_gsh[0]/2)*this_dx;
+ if (cntstag[1]==1)
+ y_origin = (0.5 - cctk_gsh[1]/2)*this_dy;
else
- {
- x_origin = (- cctk_gsh[0]/2)*this_dx;
- y_origin = (- cctk_gsh[1]/2)*this_dy;
- z_origin = (- cctk_gsh[2]/2)*this_dz;
- }
+ y_origin = (- cctk_gsh[1]/2)*this_dy;
+ if (cntstag[2]==1)
+ z_origin = (0.5 - cctk_gsh[2]/2)*this_dz;
+ else
+ z_origin = (- cctk_gsh[2]/2)*this_dz;
+
+
}
}
diff --git a/src/SymmetryWrappers.c b/src/SymmetryWrappers.c
index 18e4ad0..5e3ae12 100644
--- a/src/SymmetryWrappers.c
+++ b/src/SymmetryWrappers.c
@@ -76,7 +76,13 @@ int CartSymGI(cGH *GH, int gi)
/* get the directional staggering of the group */
ierr = CCTK_GroupStaggerDirArrayGI(dstag, gdim, gi);
- /* Set value to one if grid is staggered around the center */
+ /* Set value to one if grid is staggered around the center */
+
+ /* default: not staggered */
+ cntstag[0]=0;
+ cntstag[1]=0;
+ cntstag[2]=0;
+
if (no_origin)
{
cntstag[0]=1;
@@ -85,9 +91,9 @@ int CartSymGI(cGH *GH, int gi)
}
else
{
- cntstag[0]=0;
- cntstag[1]=0;
- cntstag[2]=0;
+ if (no_originx) cntstag[0] = 1;
+ if (no_originy) cntstag[1] = 1;
+ if (no_originz) cntstag[2] = 1;
}
/* Use next time level, if present */