diff options
author | lanfer <lanfer@c78560ca-4b45-4335-b268-5f3340f3cb52> | 2000-04-19 10:13:19 +0000 |
---|---|---|
committer | lanfer <lanfer@c78560ca-4b45-4335-b268-5f3340f3cb52> | 2000-04-19 10:13:19 +0000 |
commit | 17bde9906ce66f96d00ac4d3e3f674576cbacd1a (patch) | |
tree | 3652927c5f728e03269a5b02b51d121ba0860596 | |
parent | a3e528c5fe5848aea8a65be7d8a14de733180ef9 (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.c | 143 | ||||
-rw-r--r-- | src/SymmetryWrappers.c | 14 |
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 */ |