aboutsummaryrefslogtreecommitdiff
path: root/src/CartGrid3D.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/CartGrid3D.c')
-rw-r--r--src/CartGrid3D.c41
1 files changed, 30 insertions, 11 deletions
diff --git a/src/CartGrid3D.c b/src/CartGrid3D.c
index 3592adf..87b76ee 100644
--- a/src/CartGrid3D.c
+++ b/src/CartGrid3D.c
@@ -104,13 +104,16 @@ void CartGrid3D(CCTK_ARGUMENTS)
/* Calculate physical indices, using symmetries and periodicity */
for (i = 0; i < 3; i++)
{
- loweri[i] = domainsym[2*i] ? cctk_nghostzones[i] : 0;
+ loweri[i] = 0;
upperi[i] = cctk_gsh[i] - 1;
- if (do_periodic[i])
+ if (domainsym[2*i+0] || do_periodic[i])
{
- loweri[i] = cctk_nghostzones[i];
- upperi[i] = cctk_gsh[i] - 1 - cctk_nghostzones[i];
+ loweri[i] += cctk_nghostzones[i];
+ }
+ if (domainsym[2*i+1] || do_periodic[i])
+ {
+ upperi[i] -= cctk_nghostzones[i];
}
}
@@ -162,19 +165,31 @@ void CartGrid3D(CCTK_ARGUMENTS)
/* Grid spacing on coarsest grid */
for (i = 0; i < 3; i++)
{
- if (domainsym[2*i])
+ if (domainsym[2*i+0])
{
if (cntstag[i])
{
- *coarse_delta[i] = max1[i] / (cctk_gsh[i] - cctk_nghostzones[i]-0.5);
+ *coarse_delta[i] = max1[i] / (cctk_gsh[i]-cctk_nghostzones[i]-0.5);
origin[i] = - (cctk_nghostzones[i]-0.5) * *coarse_delta[i];
}
else
{
- *coarse_delta[i] = max1[i] / (cctk_gsh[i] - cctk_nghostzones[i]-1);
+ *coarse_delta[i] = max1[i] / (cctk_gsh[i]-cctk_nghostzones[i]-1);
origin[i] = - cctk_nghostzones[i] * *coarse_delta[i];
}
}
+ else if (domainsym[2*i+1])
+ {
+ if (cntstag[i])
+ {
+ *coarse_delta[i] = fabs(min1[i]) / (cctk_gsh[i]-cctk_nghostzones[i]-0.5);
+ }
+ else
+ {
+ *coarse_delta[i] = fabs(min1[i]) / (cctk_gsh[i]-cctk_nghostzones[i]-1);
+ }
+ origin[i] = min1[i];
+ }
else
{
if (cntstag[i])
@@ -215,15 +230,19 @@ void CartGrid3D(CCTK_ARGUMENTS)
this_delta[i] = *coarse_delta[i];
/* Set minimum values of coordinates */
- if (domainsym[2*i])
+ if (domainsym[2*i+0])
+ {
+ origin[i] = -(cctk_nghostzones[i] - cntstag[i]*0.5);
+ }
+ else if (domainsym[2*i+1])
{
- origin[i] = (- cctk_nghostzones[i] + cntstag[i]*0.5) * this_delta[i];
+ origin[i] = -(cctk_gsh[i]-1 - cctk_nghostzones[i] + cntstag[i]*0.5);
}
else
{
- origin[i] = - 0.5 * (cctk_gsh[i]-1 - cntstag[i] * cctk_gsh[i]%2)
- * this_delta[i];
+ origin[i] = -0.5 * (cctk_gsh[i]-1 - cntstag[i] * cctk_gsh[i]%2);
}
+ origin[i] *= this_delta[i];
}
}