diff options
author | allen <allen@b61c5cb5-eaca-4651-9a7a-d64986f99364> | 2000-04-15 13:36:35 +0000 |
---|---|---|
committer | allen <allen@b61c5cb5-eaca-4651-9a7a-d64986f99364> | 2000-04-15 13:36:35 +0000 |
commit | c5e2d5918098f8f2e027b0d9793daad273d8c31d (patch) | |
tree | 9a4f29e7a3de94e3325effb2c2ebcd831a5b82cb /src | |
parent | 13e07fb82bf319483aa4cb2687a14069886d871d (diff) |
Fixing how the pointer to GFExtras is found.
git-svn-id: http://svn.cactuscode.org/arrangements/CactusPUGH/PUGH/trunk@200 b61c5cb5-eaca-4651-9a7a-d64986f99364
Diffstat (limited to 'src')
-rw-r--r-- | src/Reduction.c | 86 |
1 files changed, 42 insertions, 44 deletions
diff --git a/src/Reduction.c b/src/Reduction.c index a875673..440d365 100644 --- a/src/Reduction.c +++ b/src/Reduction.c @@ -1,11 +1,9 @@ /*@@ @file Reduction.c @date Thu Apr 3 11:54:53 1997 - @author Paul Walker + @author Thomas Radke, Paul Walker @desc - Various MPI reduction operators for maxima, minima, norms - and the like on grid functions. These are all pretty - straighforward thanks to the miracle of MPI_Allreduce. + Various MPI reduction operators. @enddesc @version $Header$ @@*/ @@ -734,7 +732,7 @@ void pugh_ReduceMinVal (cGH *GH, int proc, int nOutVals, pughGH = pugh_pGH (GH); - nPoints = pughGH->GFExtras[pughGH->dim-1]->npoints; + nPoints = pughGH->GFExtras[0]->npoints; if (nOutVals != 1) { if (nOutVals != nPoints) @@ -865,7 +863,7 @@ void pugh_ReduceMaxVal (cGH *GH, int proc, int nOutVals, pughGH = pugh_pGH (GH); - nPoints = pughGH->GFExtras[pughGH->dim-1]->npoints; + nPoints = pughGH->GFExtras[0]->npoints; if (nOutVals != 1) { if (nOutVals != nPoints) @@ -1901,7 +1899,7 @@ int pugh_Norm1_GF (cGH *GH, int index, int proc, CCTK_REAL *outVal) *outVal = 0.0; #ifndef CCTK_MPI - for (ii = 0; ii < pughGH->GFExtras[pughGH->dim-1]->npoints; ii++) + for (ii = 0; ii < pughGH->GFExtras[0]->npoints; ii++) { if (GA->vtype == CCTK_VARIABLE_CHAR) { @@ -1965,7 +1963,7 @@ int pugh_Norm1_GF (cGH *GH, int index, int proc, CCTK_REAL *outVal) } } - tnp = pughGH->GFExtras[pughGH->dim-1]->npoints; + tnp = pughGH->GFExtras[0]->npoints; #else @@ -1973,81 +1971,81 @@ int pugh_Norm1_GF (cGH *GH, int index, int proc, CCTK_REAL *outVal) np = 0; local_result = 0.0; - for (kk=pughGH->GFExtras[pughGH->dim-1]->ownership[GA->stagger][0][2]; - kk < pughGH->GFExtras[pughGH->dim-1]->ownership[GA->stagger][1][2]; + for (kk=pughGH->GFExtras[0]->ownership[GA->stagger][0][2]; + kk < pughGH->GFExtras[0]->ownership[GA->stagger][1][2]; kk ++) { - for (jj = pughGH->GFExtras[pughGH->dim-1]->ownership[GA->stagger][0][1]; - jj < pughGH->GFExtras[pughGH->dim-1]->ownership[GA->stagger][1][1]; + for (jj = pughGH->GFExtras[0]->ownership[GA->stagger][0][1]; + jj < pughGH->GFExtras[0]->ownership[GA->stagger][1][1]; jj ++) { - for (ii = pughGH->GFExtras[pughGH->dim-1]->ownership[GA->stagger][0][0]; - ii < pughGH->GFExtras[pughGH->dim-1]->ownership[GA->stagger][1][0]; + for (ii = pughGH->GFExtras[0]->ownership[GA->stagger][0][0]; + ii < pughGH->GFExtras[0]->ownership[GA->stagger][1][0]; ii++, np++) { if (GA->vtype == CCTK_VARIABLE_CHAR) { local_result += /* CCTK_CHAR is unsigned */ - ((CCTK_CHAR *) GA->data) [DATINDEX (pughGH->GFExtras[pughGH->dim-1], ii, jj, kk)]; + ((CCTK_CHAR *) GA->data) [DATINDEX (pughGH->GFExtras[0], ii, jj, kk)]; } else if (GA->vtype == CCTK_VARIABLE_INT) { local_result += - ABS (((CCTK_INT *) GA->data) [DATINDEX (pughGH->GFExtras[pughGH->dim-1], ii, jj, kk)]); + ABS (((CCTK_INT *) GA->data) [DATINDEX (pughGH->GFExtras[0], ii, jj, kk)]); } #ifdef CCTK_INT2 else if (GA->vtype == CCTK_VARIABLE_INT2) { local_result += - ABS (((CCTK_INT2 *) GA->data) [DATINDEX (pughGH->GFExtras[pughGH->dim-1], ii, jj, kk)]); + ABS (((CCTK_INT2 *) GA->data) [DATINDEX (pughGH->GFExtras[0], ii, jj, kk)]); } #endif #ifdef CCTK_INT4 else if (GA->vtype == CCTK_VARIABLE_INT4) { local_result += - ABS (((CCTK_INT4 *) GA->data) [DATINDEX (pughGH->GFExtras[pughGH->dim-1], ii, jj, kk)]); + ABS (((CCTK_INT4 *) GA->data) [DATINDEX (pughGH->GFExtras[0], ii, jj, kk)]); } #endif #ifdef CCTK_INT8 else if (GA->vtype == CCTK_VARIABLE_INT8) { local_result += - ABS (((CCTK_INT8 *) GA->data) [DATINDEX (pughGH->GFExtras[pughGH->dim-1], ii, jj, kk)]); + ABS (((CCTK_INT8 *) GA->data) [DATINDEX (pughGH->GFExtras[0], ii, jj, kk)]); } #endif else if (GA->vtype == CCTK_VARIABLE_REAL) { local_result += - ABS (((CCTK_REAL *) GA->data) [DATINDEX (pughGH->GFExtras[pughGH->dim-1], ii, jj, kk)]); + ABS (((CCTK_REAL *) GA->data) [DATINDEX (pughGH->GFExtras[0], ii, jj, kk)]); } #ifdef CCTK_REAL4 else if (GA->vtype == CCTK_VARIABLE_REAL4) { local_result += - ABS (((CCTK_REAL4 *) GA->data) [DATINDEX (pughGH->GFExtras[pughGH->dim-1], ii, jj, kk)]); + ABS (((CCTK_REAL4 *) GA->data) [DATINDEX (pughGH->GFExtras[0], ii, jj, kk)]); } #endif #ifdef CCTK_REAL8 else if (GA->vtype == CCTK_VARIABLE_REAL8) { local_result += - ABS (((CCTK_REAL8 *) GA->data) [DATINDEX (pughGH->GFExtras[pughGH->dim-1], ii, jj, kk)]); + ABS (((CCTK_REAL8 *) GA->data) [DATINDEX (pughGH->GFExtras[0], ii, jj, kk)]); } #endif #ifdef CCTK_REAL16 else if (GA->vtype == CCTK_VARIABLE_REAL16) { local_result += - ABS (((CCTK_REAL16 *) GA->data) [DATINDEX (pughGH->GFExtras[pughGH->dim-1], ii, jj, kk)]); + ABS (((CCTK_REAL16 *) GA->data) [DATINDEX (pughGH->GFExtras[0], ii, jj, kk)]); } #endif else if (GA->vtype == CCTK_VARIABLE_COMPLEX) { local_result += sqrt( - SQR((((CCTK_COMPLEX *)GA->data)[DATINDEX (pughGH->GFExtras[pughGH->dim-1],ii,jj,kk)]).Re)+ - SQR((((CCTK_COMPLEX *)GA->data)[DATINDEX (pughGH->GFExtras[pughGH->dim-1],ii,jj,kk)]).Im) + SQR((((CCTK_COMPLEX *)GA->data)[DATINDEX (pughGH->GFExtras[0],ii,jj,kk)]).Re)+ + SQR((((CCTK_COMPLEX *)GA->data)[DATINDEX (pughGH->GFExtras[0],ii,jj,kk)]).Im) ); } else @@ -2119,7 +2117,7 @@ int pugh_Norm2_GF (cGH *GH, int index, int proc, CCTK_REAL *outVal) *outVal = 0.0; #ifndef CCTK_MPI - for (ii = 0; ii < pughGH->GFExtras[pughGH->dim-1]->npoints; ii++) + for (ii = 0; ii < pughGH->GFExtras[0]->npoints; ii++) { if (GA->vtype == CCTK_VARIABLE_CHAR) { @@ -2181,87 +2179,87 @@ int pugh_Norm2_GF (cGH *GH, int index, int proc, CCTK_REAL *outVal) return (1); } } - tnp = pughGH->GFExtras[pughGH->dim-1]->npoints; + tnp = pughGH->GFExtras[0]->npoints; #else /* MPI version depends heavily on the GFExtras->ownership array */ np = 0; local_result = 0.0; - for (kk=pughGH->GFExtras[pughGH->dim-1]->ownership[GA->stagger][0][2]; - kk < pughGH->GFExtras[pughGH->dim-1]->ownership[GA->stagger][1][2]; + for (kk=pughGH->GFExtras[0]->ownership[GA->stagger][0][2]; + kk < pughGH->GFExtras[0]->ownership[GA->stagger][1][2]; kk ++) { - for (jj = pughGH->GFExtras[pughGH->dim-1]->ownership[GA->stagger][0][1]; - jj < pughGH->GFExtras[pughGH->dim-1]->ownership[GA->stagger][1][1]; + for (jj = pughGH->GFExtras[0]->ownership[GA->stagger][0][1]; + jj < pughGH->GFExtras[0]->ownership[GA->stagger][1][1]; jj ++) { - for (ii = pughGH->GFExtras[pughGH->dim-1]->ownership[GA->stagger][0][0]; - ii < pughGH->GFExtras[pughGH->dim-1]->ownership[GA->stagger][1][0]; + for (ii = pughGH->GFExtras[0]->ownership[GA->stagger][0][0]; + ii < pughGH->GFExtras[0]->ownership[GA->stagger][1][0]; ii++, np++) { if (GA->vtype == CCTK_VARIABLE_CHAR) { local_result += - SQR (((CCTK_CHAR *) GA->data) [DATINDEX (pughGH->GFExtras[pughGH->dim-1], ii, jj, kk)]); + SQR (((CCTK_CHAR *) GA->data) [DATINDEX (pughGH->GFExtras[0], ii, jj, kk)]); } else if (GA->vtype == CCTK_VARIABLE_INT) { local_result += - SQR (((CCTK_INT *) GA->data) [DATINDEX (pughGH->GFExtras[pughGH->dim-1], ii, jj, kk)]); + SQR (((CCTK_INT *) GA->data) [DATINDEX (pughGH->GFExtras[0], ii, jj, kk)]); } #ifdef CCTK_INT2 else if (GA->vtype == CCTK_VARIABLE_INT2) { local_result += - SQR (((CCTK_INT2 *) GA->data) [DATINDEX (pughGH->GFExtras[pughGH->dim-1], ii, jj, kk)]); + SQR (((CCTK_INT2 *) GA->data) [DATINDEX (pughGH->GFExtras[0], ii, jj, kk)]); } #endif #ifdef CCTK_INT4 else if (GA->vtype == CCTK_VARIABLE_INT4) { local_result += - SQR (((CCTK_INT4 *) GA->data) [DATINDEX (pughGH->GFExtras[pughGH->dim-1], ii, jj, kk)]); + SQR (((CCTK_INT4 *) GA->data) [DATINDEX (pughGH->GFExtras[0], ii, jj, kk)]); } #endif #ifdef CCTK_INT8 else if (GA->vtype == CCTK_VARIABLE_INT8) { local_result += - SQR (((CCTK_INT8 *) GA->data) [DATINDEX (pughGH->GFExtras[pughGH->dim-1], ii, jj, kk)]); + SQR (((CCTK_INT8 *) GA->data) [DATINDEX (pughGH->GFExtras[0], ii, jj, kk)]); } #endif else if (GA->vtype == CCTK_VARIABLE_REAL) { local_result += - SQR (((CCTK_REAL *) GA->data) [DATINDEX (pughGH->GFExtras[pughGH->dim-1], ii, jj, kk)]); + SQR (((CCTK_REAL *) GA->data) [DATINDEX (pughGH->GFExtras[0], ii, jj, kk)]); } #ifdef CCTK_REAL4 else if (GA->vtype == CCTK_VARIABLE_REAL4) { local_result += - SQR (((CCTK_REAL4 *) GA->data) [DATINDEX (pughGH->GFExtras[pughGH->dim-1], ii, jj, kk)]); + SQR (((CCTK_REAL4 *) GA->data) [DATINDEX (pughGH->GFExtras[0], ii, jj, kk)]); } #endif #ifdef CCTK_REAL8 else if (GA->vtype == CCTK_VARIABLE_REAL8) { local_result += - SQR (((CCTK_REAL8 *) GA->data) [DATINDEX (pughGH->GFExtras[pughGH->dim-1], ii, jj, kk)]); + SQR (((CCTK_REAL8 *) GA->data) [DATINDEX (pughGH->GFExtras[0], ii, jj, kk)]); } #endif #ifdef CCTK_REAL16 else if (GA->vtype == CCTK_VARIABLE_REAL16) { local_result += - SQR (((CCTK_REAL16 *) GA->data) [DATINDEX (pughGH->GFExtras[pughGH->dim-1], ii, jj, kk)]); + SQR (((CCTK_REAL16 *) GA->data) [DATINDEX (pughGH->GFExtras[0], ii, jj, kk)]); } #endif else if (GA->vtype == CCTK_VARIABLE_COMPLEX) { local_result += - SQR((((CCTK_COMPLEX *)GA->data)[DATINDEX(pughGH->GFExtras[pughGH->dim-1],ii,jj,kk)]).Re)+ - SQR((((CCTK_COMPLEX *)GA->data)[DATINDEX(pughGH->GFExtras[pughGH->dim-1],ii,jj,kk)]).Im); } else { + SQR((((CCTK_COMPLEX *)GA->data)[DATINDEX(pughGH->GFExtras[0],ii,jj,kk)]).Re)+ + SQR((((CCTK_COMPLEX *)GA->data)[DATINDEX(pughGH->GFExtras[0],ii,jj,kk)]).Im); } else { CCTK_WARN (1, "Unknown variable type in pugh_Norm2_GF"); return (1); } |