From f0aa5f0a532793df780e61e87f877de761d1eacc Mon Sep 17 00:00:00 2001 From: tradke Date: Wed, 12 Feb 2003 18:29:50 +0000 Subject: From Jonathan Thornburg: Changed #define symbol for local debugging code from CCTK_DEBUG to CARTGRID3D_DEBUG because CCTK_DEBUG is now used by the flesh to signal a DEBUG=yes configuration. From me: Untabified and removed excess spaces. git-svn-id: http://svn.cactuscode.org/arrangements/CactusBase/CartGrid3D/trunk@177 c78560ca-4b45-4335-b268-5f3340f3cb52 --- src/CartGrid3D.c | 363 +++++++++++++++++++++++++++---------------------------- 1 file changed, 180 insertions(+), 183 deletions(-) diff --git a/src/CartGrid3D.c b/src/CartGrid3D.c index af4f31d..1ff1047 100644 --- a/src/CartGrid3D.c +++ b/src/CartGrid3D.c @@ -2,13 +2,14 @@ @file CartGrid3D.c @date Thu Oct 7 13:20:06 1999 @author Tom Goodale - @desc - Set up coordinates for a 3D Cartesian grid. - C Conversion of Fortran routine written by Gab. - @enddesc + @desc + Set up coordinates for a 3D Cartesian grid. + C Conversion of Fortran routine written by Gab. + @version $Id$ + @enddesc @@*/ -/*#define CCTK_DEBUG*/ +/*#define CARTGRID3D_DEBUG*/ #include #include @@ -33,7 +34,7 @@ void CartGrid3D(CCTK_ARGUMENTS) DECLARE_CCTK_ARGUMENTS DECLARE_CCTK_PARAMETERS - + int iconv, i, j, k; double dconv; CCTK_REAL x_origin,y_origin,z_origin; @@ -50,11 +51,11 @@ void CartGrid3D(CCTK_ARGUMENTS) lowerx = upperx = lowery = uppery = lowerz = upperz = 0; lowerxi = upperxi = loweryi = upperyi = lowerzi = upperzi = 0; - if (cctk_levfac[0] == 1 && cctk_levfac[1] == 1 && cctk_levfac[2] == 1) + if (cctk_levfac[0] == 1 && cctk_levfac[1] == 1 && cctk_levfac[2] == 1) { /* Calculate the coordinate ranges only for the coarsest level */ - + /* Some compilers warn about variables which might be uninitialized because they are assigned in some if/else statements only */ x_origin = y_origin = z_origin = 0.0; @@ -71,28 +72,28 @@ void CartGrid3D(CCTK_ARGUMENTS) /* Determine symmetries of domain */ DecodeSymParameters3D(domainsym); - + /* Calculate physical indices, using symmetries and periodicity */ - if (domainsym[0]) + if (domainsym[0]) { lowerxi = cctk_nghostzones[0]; - } + } else { lowerxi = 0; } - if (domainsym[2]) + if (domainsym[2]) { loweryi = cctk_nghostzones[1]; - } + } else { loweryi = 0; } - if (domainsym[4]) + if (domainsym[4]) { lowerzi = cctk_nghostzones[2]; - } + } else { lowerzi = 0; @@ -102,18 +103,18 @@ void CartGrid3D(CCTK_ARGUMENTS) { if (periodic_x) { - lowerxi = cctk_nghostzones[0]; - upperxi = cctk_gsh[0]-1-cctk_nghostzones[0]; + lowerxi = cctk_nghostzones[0]; + upperxi = cctk_gsh[0]-1-cctk_nghostzones[0]; } if (periodic_y) { - loweryi = cctk_nghostzones[1]; - upperyi = cctk_gsh[1]-1-cctk_nghostzones[1]; + loweryi = cctk_nghostzones[1]; + upperyi = cctk_gsh[1]-1-cctk_nghostzones[1]; } if (periodic_z) { - lowerzi = cctk_nghostzones[2]; - upperzi = cctk_gsh[2]-1-cctk_nghostzones[2]; + lowerzi = cctk_nghostzones[2]; + upperzi = cctk_gsh[2]-1-cctk_nghostzones[2]; } } @@ -136,118 +137,118 @@ void CartGrid3D(CCTK_ARGUMENTS) * **************************************************************/ - if (CCTK_Equals(type,"byrange") || CCTK_Equals(type,"box")) - { - + if (CCTK_Equals(type,"byrange") || CCTK_Equals(type,"box")) + { + if (CCTK_Equals(type,"box")) { - - /* Coordinates are all -0.5 to 0.5 */ - xmax1 = 0.5; - ymax1 = 0.5; - zmax1 = 0.5; - - xmin1 = -0.5; - ymin1 = -0.5; - zmin1 = -0.5; - + + /* Coordinates are all -0.5 to 0.5 */ + xmax1 = 0.5; + ymax1 = 0.5; + zmax1 = 0.5; + + xmin1 = -0.5; + ymin1 = -0.5; + zmin1 = -0.5; + } else { - - if (xyzmax != -424242) - { - xmax1 = xyzmax; - ymax1 = xyzmax; - zmax1 = xyzmax; - } - else - { - xmax1 = xmax; - ymax1 = ymax; - zmax1 = zmax; - } - - if (xyzmin != -424242) - { - xmin1 = xyzmin; - ymin1 = xyzmin; - zmin1 = xyzmin; - } - else - { - xmin1 = xmin; - ymin1 = ymin; - zmin1 = zmin; - } + + if (xyzmax != -424242) + { + xmax1 = xyzmax; + ymax1 = xyzmax; + zmax1 = xyzmax; + } + else + { + xmax1 = xmax; + ymax1 = ymax; + zmax1 = zmax; + } + + if (xyzmin != -424242) + { + xmin1 = xyzmin; + ymin1 = xyzmin; + zmin1 = xyzmin; + } + else + { + xmin1 = xmin; + ymin1 = ymin; + zmin1 = zmin; + } } /* Grid spacing on coarsest grid */ /* TODO: Put the coordinates into arrays, and loop over the - dimensions. That gets ride of all the triplicated code. */ - if (domainsym[0]) + dimensions. That gets ride of all the triplicated code. */ + if (domainsym[0]) { - if (cntstag[0]) - { - *coarse_dx = xmax1 / (cctk_gsh[0] - cctk_nghostzones[0] - 0.5); - x_origin = - (cctk_nghostzones[0] - 0.5) * *coarse_dx * iconv; - } - else - { - *coarse_dx = xmax1 / (cctk_gsh[0] - cctk_nghostzones[0] - 1); - x_origin = - cctk_nghostzones[0] * *coarse_dx * iconv; - } - } - else + if (cntstag[0]) + { + *coarse_dx = xmax1 / (cctk_gsh[0] - cctk_nghostzones[0] - 0.5); + x_origin = - (cctk_nghostzones[0] - 0.5) * *coarse_dx * iconv; + } + else + { + *coarse_dx = xmax1 / (cctk_gsh[0] - cctk_nghostzones[0] - 1); + x_origin = - cctk_nghostzones[0] * *coarse_dx * iconv; + } + } + else { - *coarse_dx = (xmax1 - xmin1) / max(cctk_gsh[0] - 1, 1); - x_origin = xmin1; + *coarse_dx = (xmax1 - xmin1) / max(cctk_gsh[0] - 1, 1); + x_origin = xmin1; } - if (domainsym[2]) + if (domainsym[2]) { - if (cntstag[1]) - { - *coarse_dy = ymax1 / (cctk_gsh[1] - cctk_nghostzones[1] - 0.5); - y_origin = - (cctk_nghostzones[1] - 0.5) * *coarse_dy * iconv; - } - else - { - *coarse_dy = ymax1 / (cctk_gsh[1] - cctk_nghostzones[1] - 1); - y_origin = - cctk_nghostzones[1] * *coarse_dy * iconv; - } - } - else + if (cntstag[1]) + { + *coarse_dy = ymax1 / (cctk_gsh[1] - cctk_nghostzones[1] - 0.5); + y_origin = - (cctk_nghostzones[1] - 0.5) * *coarse_dy * iconv; + } + else + { + *coarse_dy = ymax1 / (cctk_gsh[1] - cctk_nghostzones[1] - 1); + y_origin = - cctk_nghostzones[1] * *coarse_dy * iconv; + } + } + else { - *coarse_dy = (ymax1 - ymin1) / max(cctk_gsh[1] - 1, 1); - y_origin = ymin1; + *coarse_dy = (ymax1 - ymin1) / max(cctk_gsh[1] - 1, 1); + y_origin = ymin1; } - - if (domainsym[4]) + + if (domainsym[4]) { - if (cntstag[2]) - { - *coarse_dz = zmax1 / (cctk_gsh[2] - cctk_nghostzones[2] - 0.5); - z_origin = - (cctk_nghostzones[2] - 0.5) * *coarse_dz * iconv; - } - else - { - *coarse_dz = zmax1 / (cctk_gsh[2] - cctk_nghostzones[2] - 1); - z_origin = - cctk_nghostzones[2] * *coarse_dz * iconv; - } - } - else + if (cntstag[2]) + { + *coarse_dz = zmax1 / (cctk_gsh[2] - cctk_nghostzones[2] - 0.5); + z_origin = - (cctk_nghostzones[2] - 0.5) * *coarse_dz * iconv; + } + else + { + *coarse_dz = zmax1 / (cctk_gsh[2] - cctk_nghostzones[2] - 1); + z_origin = - cctk_nghostzones[2] * *coarse_dz * iconv; + } + } + else { - *coarse_dz = (zmax1 - zmin1) / max(cctk_gsh[2] - 1, 1); - z_origin = zmin1; + *coarse_dz = (zmax1 - zmin1) / max(cctk_gsh[2] - 1, 1); + z_origin = zmin1; } - + /* dx,dy,dz on the grid we are on */ this_dx = *coarse_dx * iconv; this_dy = *coarse_dy * iconv; this_dz = *coarse_dz * iconv; - + } /************************************************************** @@ -258,76 +259,76 @@ void CartGrid3D(CCTK_ARGUMENTS) * **************************************************************/ - else if (CCTK_Equals(type,"byspacing")) + else if (CCTK_Equals(type,"byspacing")) { - + /* Dx, Dy, Dx on the coarsest grid */ - - if (dxyz > 0) + + if (dxyz > 0) { - *coarse_dx = dxyz; - *coarse_dy = dxyz; - *coarse_dz = dxyz; + *coarse_dx = dxyz; + *coarse_dy = dxyz; + *coarse_dz = dxyz; } else { - *coarse_dx = dx; - *coarse_dy = dy; - *coarse_dz = dz; + *coarse_dx = dx; + *coarse_dy = dy; + *coarse_dz = dz; } /* dx, dy, dz on the grid we are on */ this_dx = *coarse_dx * iconv; this_dy = *coarse_dy * iconv; this_dz = *coarse_dz * iconv; - + /* Set minimum values of coordinates */ - if (domainsym[0]) + if (domainsym[0]) { - x_origin = (- cctk_nghostzones[0] + cntstag[0] * 0.5) * this_dx; - } - else + x_origin = (- cctk_nghostzones[0] + cntstag[0] * 0.5) * this_dx; + } + else { - x_origin = - 0.5 * (cctk_gsh[0]-1 - cntstag[0] * (cctk_gsh[0])%2) - * this_dx; + x_origin = - 0.5 * (cctk_gsh[0]-1 - cntstag[0] * (cctk_gsh[0])%2) + * this_dx; } - - if (domainsym[2]) + + if (domainsym[2]) { - y_origin = (- cctk_nghostzones[1] + cntstag[1] * 0.5) * this_dy; - } - else + y_origin = (- cctk_nghostzones[1] + cntstag[1] * 0.5) * this_dy; + } + else { - y_origin = - 0.5 * (cctk_gsh[1]-1 - cntstag[1] * (cctk_gsh[1])%2) - * this_dy; + y_origin = - 0.5 * (cctk_gsh[1]-1 - cntstag[1] * (cctk_gsh[1])%2) + * this_dy; } - - if (domainsym[4]) + + if (domainsym[4]) { - z_origin = (- cctk_nghostzones[2] + cntstag[2] * 0.5) * this_dz; - } - else + z_origin = (- cctk_nghostzones[2] + cntstag[2] * 0.5) * this_dz; + } + else { - z_origin = - 0.5 * (cctk_gsh[2]-1 - cntstag[2] * (cctk_gsh[2])%2) - * this_dz; + z_origin = - 0.5 * (cctk_gsh[2]-1 - cntstag[2] * (cctk_gsh[2])%2) + * this_dz; } } - } - else - { + } + else + { /* if (not coarsest refinement level) */ - + /* Use the already calculated coordinate ranges for all but the coarsest levels */ - + this_dx = cctk_delta_space[0] / cctk_levfac[0]; this_dy = cctk_delta_space[1] / cctk_levfac[1]; this_dz = cctk_delta_space[2] / cctk_levfac[2]; - + x_origin = cctk_origin_space[0]; y_origin = cctk_origin_space[1]; z_origin = cctk_origin_space[2]; - + } /* if (not coarsest refinement level) */ @@ -349,22 +350,22 @@ void CartGrid3D(CCTK_ARGUMENTS) } } } - - if (cctk_levfac[0] == 1 && cctk_levfac[1] == 1 && cctk_levfac[2] == 1) + + if (cctk_levfac[0] == 1 && cctk_levfac[1] == 1 && cctk_levfac[2] == 1) { /* Register the coordinate ranges only for the coarsest level */ - + cctk_delta_space[0] = this_dx; cctk_delta_space[1] = this_dy; cctk_delta_space[2] = this_dz; - + cctk_origin_space[0] = x_origin; cctk_origin_space[1] = y_origin; cctk_origin_space[2] = z_origin; - + lowerx = x_origin; - upperx = x_origin+this_dx*(cctk_gsh[0]-1); + upperx = x_origin+this_dx*(cctk_gsh[0]-1); ierr = CCTK_CoordRegisterRange(cctkGH,lowerx,upperx,-1,"x","cart3d"); if (ierr < 0) { @@ -378,7 +379,7 @@ void CartGrid3D(CCTK_ARGUMENTS) } lowery = y_origin; - uppery = y_origin+this_dy*(cctk_gsh[1]-1); + uppery = y_origin+this_dy*(cctk_gsh[1]-1); ierr = CCTK_CoordRegisterRange(cctkGH,lowery,uppery,-1,"y","cart3d"); if (ierr < 0) { @@ -391,7 +392,7 @@ void CartGrid3D(CCTK_ARGUMENTS) } lowerz = z_origin; - upperz = z_origin+this_dz*(cctk_gsh[2]-1); + upperz = z_origin+this_dz*(cctk_gsh[2]-1); ierr = CCTK_CoordRegisterRange(cctkGH,lowerz,upperz,-1,"z","cart3d"); if (ierr < 0) { @@ -402,47 +403,47 @@ void CartGrid3D(CCTK_ARGUMENTS) { CCTK_WARN(0,"Failed to register z-coordinate physical range"); } - + CCTK_INFO("Grid Spacings:"); - sprintf(infoline," %s%12.7e %s%12.7e %s%12.7e ", - "dx=>",cctk_delta_space[0], - "dy=>",cctk_delta_space[1], - "dz=>",cctk_delta_space[2]); + sprintf(infoline," %s%12.7e %s%12.7e %s%12.7e ", + "dx=>",cctk_delta_space[0], + "dy=>",cctk_delta_space[1], + "dz=>",cctk_delta_space[2]); CCTK_INFO(infoline); - + CCTK_INFO("Computational Coordinates:"); - sprintf(infoline," %s[%6.3f,%6.3f] %s[%6.3f,%6.3f] %s[%6.3f,%6.3f] ", - "x=>",lowerx,upperx, - "y=>",lowery,uppery, - "z=>",lowerz,upperz); + sprintf(infoline," %s[%6.3f,%6.3f] %s[%6.3f,%6.3f] %s[%6.3f,%6.3f] ", + "x=>",lowerx,upperx, + "y=>",lowery,uppery, + "z=>",lowerz,upperz); CCTK_INFO(infoline); CCTK_INFO("Indices of Physical Coordinates:"); - sprintf(infoline," %s[%d,%d] %s[%d,%d] %s[%d,%d] ", - "x=>",lowerxi,upperxi, - "y=>",loweryi,upperyi, - "z=>",lowerzi,upperzi); + sprintf(infoline," %s[%d,%d] %s[%d,%d] %s[%d,%d] ", + "x=>",lowerxi,upperxi, + "y=>",loweryi,upperyi, + "z=>",lowerzi,upperzi); CCTK_INFO(infoline); - - - + + + if ((domainsym[0]==GFSYM_ROTATION_Y || domainsym[2]==GFSYM_ROTATION_X) - && (lowerz + upperz > 1e-12)) + && (lowerz + upperz > 1e-12)) CCTK_WARN(0, "minimum z must equal maximum z for rotation symmetry"); - if ((domainsym[0]==GFSYM_ROTATION_Z || domainsym[4]==GFSYM_ROTATION_X) - && (lowery + uppery > 1e-12)) + if ((domainsym[0]==GFSYM_ROTATION_Z || domainsym[4]==GFSYM_ROTATION_X) + && (lowery + uppery > 1e-12)) CCTK_WARN(0, "minimum y must equal maximum y for rotation symmetry"); if ((domainsym[2]==GFSYM_ROTATION_Z || domainsym[4]==GFSYM_ROTATION_Y) - && (lowerx - upperx > 1e-12)) + && (lowerx - upperx > 1e-12)) CCTK_WARN(0, "minimum x must equal maximum x for rotation symmetry"); - + } /* if (coarsest refinement level) */ -#ifdef CCTK_DEBUG +#ifdef CARTGRID3D_DEBUG printf("\n"); printf("CartGrid3D\n"); printf(" ----------\n"); @@ -452,7 +453,7 @@ void CartGrid3D(CCTK_ARGUMENTS) printf(" Minimum global coords %6.3f %6.3f %6.3f\n", x_origin,y_origin,z_origin); printf(" Maximum global coords %6.3f %6.3f %6.3f\n", x_origin+this_dx*(cctk_gsh[0]-1), y_origin+this_dy*(cctk_gsh[1]-1), - z_origin+this_dz*(cctk_gsh[2]-1)); + z_origin+this_dz*(cctk_gsh[2]-1)); printf(" Minimum local coords %6.3f %6.3f %6.3f\n", x[0],y[0],z[0]); printf(" Maximum local coords %6.3f %6.3f %6.3f\n", x[CCTK_GFINDEX3D(cctkGH, cctk_lsh[0]-1,cctk_lsh[1]-1,cctk_lsh[2]-1)], y[CCTK_GFINDEX3D(cctkGH, cctk_lsh[0]-1,cctk_lsh[1]-1,cctk_lsh[2]-1)], @@ -460,8 +461,4 @@ void CartGrid3D(CCTK_ARGUMENTS) #endif - return; - } - - -- cgit v1.2.3