diff options
Diffstat (limited to 'ML_WaveToy/src/WT_Gaussian.cc')
-rw-r--r-- | ML_WaveToy/src/WT_Gaussian.cc | 85 |
1 files changed, 46 insertions, 39 deletions
diff --git a/ML_WaveToy/src/WT_Gaussian.cc b/ML_WaveToy/src/WT_Gaussian.cc index 6d6b9b1..d1a38cf 100644 --- a/ML_WaveToy/src/WT_Gaussian.cc +++ b/ML_WaveToy/src/WT_Gaussian.cc @@ -27,7 +27,7 @@ #define CUB(x) (kmul(x,SQR(x))) #define QAD(x) (SQR(SQR(x))) -static void WT_Gaussian_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const imin[3], int const imax[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[]) +static void WT_Gaussian_Body(const cGH* restrict const cctkGH, const int dir, const int face, const CCTK_REAL normal[3], const CCTK_REAL tangentA[3], const CCTK_REAL tangentB[3], const int imin[3], const int imax[3], const int n_subblock_gfs, CCTK_REAL* restrict const subblock_gfs[]) { DECLARE_CCTK_ARGUMENTS; DECLARE_CCTK_PARAMETERS; @@ -36,39 +36,39 @@ static void WT_Gaussian_Body(cGH const * restrict const cctkGH, int const dir, i /* Include user-supplied include files */ /* Initialise finite differencing variables */ - ptrdiff_t /*const*/ di CCTK_ATTRIBUTE_UNUSED = 1; - ptrdiff_t /*const*/ dj CCTK_ATTRIBUTE_UNUSED = CCTK_GFINDEX3D(cctkGH,0,1,0) - CCTK_GFINDEX3D(cctkGH,0,0,0); - ptrdiff_t /*const*/ dk CCTK_ATTRIBUTE_UNUSED = CCTK_GFINDEX3D(cctkGH,0,0,1) - CCTK_GFINDEX3D(cctkGH,0,0,0); - ptrdiff_t /*const*/ cdi CCTK_ATTRIBUTE_UNUSED = sizeof(CCTK_REAL) * di; - ptrdiff_t /*const*/ cdj CCTK_ATTRIBUTE_UNUSED = sizeof(CCTK_REAL) * dj; - ptrdiff_t /*const*/ cdk CCTK_ATTRIBUTE_UNUSED = sizeof(CCTK_REAL) * dk; - CCTK_REAL_VEC /*const*/ dx CCTK_ATTRIBUTE_UNUSED = ToReal(CCTK_DELTA_SPACE(0)); - CCTK_REAL_VEC /*const*/ dy CCTK_ATTRIBUTE_UNUSED = ToReal(CCTK_DELTA_SPACE(1)); - CCTK_REAL_VEC /*const*/ dz CCTK_ATTRIBUTE_UNUSED = ToReal(CCTK_DELTA_SPACE(2)); - CCTK_REAL_VEC /*const*/ dt CCTK_ATTRIBUTE_UNUSED = ToReal(CCTK_DELTA_TIME); - CCTK_REAL_VEC /*const*/ t CCTK_ATTRIBUTE_UNUSED = ToReal(cctk_time); - CCTK_REAL_VEC /*const*/ dxi CCTK_ATTRIBUTE_UNUSED = INV(dx); - CCTK_REAL_VEC /*const*/ dyi CCTK_ATTRIBUTE_UNUSED = INV(dy); - CCTK_REAL_VEC /*const*/ dzi CCTK_ATTRIBUTE_UNUSED = INV(dz); - CCTK_REAL_VEC /*const*/ khalf CCTK_ATTRIBUTE_UNUSED = ToReal(0.5); - CCTK_REAL_VEC /*const*/ kthird CCTK_ATTRIBUTE_UNUSED = ToReal(1.0/3.0); - CCTK_REAL_VEC /*const*/ ktwothird CCTK_ATTRIBUTE_UNUSED = ToReal(2.0/3.0); - CCTK_REAL_VEC /*const*/ kfourthird CCTK_ATTRIBUTE_UNUSED = ToReal(4.0/3.0); - CCTK_REAL_VEC /*const*/ keightthird CCTK_ATTRIBUTE_UNUSED = ToReal(8.0/3.0); - CCTK_REAL_VEC /*const*/ hdxi CCTK_ATTRIBUTE_UNUSED = kmul(ToReal(0.5), dxi); - CCTK_REAL_VEC /*const*/ hdyi CCTK_ATTRIBUTE_UNUSED = kmul(ToReal(0.5), dyi); - CCTK_REAL_VEC /*const*/ hdzi CCTK_ATTRIBUTE_UNUSED = kmul(ToReal(0.5), dzi); + const ptrdiff_t di CCTK_ATTRIBUTE_UNUSED = 1; + const ptrdiff_t dj CCTK_ATTRIBUTE_UNUSED = CCTK_GFINDEX3D(cctkGH,0,1,0) - CCTK_GFINDEX3D(cctkGH,0,0,0); + const ptrdiff_t dk CCTK_ATTRIBUTE_UNUSED = CCTK_GFINDEX3D(cctkGH,0,0,1) - CCTK_GFINDEX3D(cctkGH,0,0,0); + const ptrdiff_t cdi CCTK_ATTRIBUTE_UNUSED = sizeof(CCTK_REAL) * di; + const ptrdiff_t cdj CCTK_ATTRIBUTE_UNUSED = sizeof(CCTK_REAL) * dj; + const ptrdiff_t cdk CCTK_ATTRIBUTE_UNUSED = sizeof(CCTK_REAL) * dk; + const CCTK_REAL_VEC dx CCTK_ATTRIBUTE_UNUSED = ToReal(CCTK_DELTA_SPACE(0)); + const CCTK_REAL_VEC dy CCTK_ATTRIBUTE_UNUSED = ToReal(CCTK_DELTA_SPACE(1)); + const CCTK_REAL_VEC dz CCTK_ATTRIBUTE_UNUSED = ToReal(CCTK_DELTA_SPACE(2)); + const CCTK_REAL_VEC dt CCTK_ATTRIBUTE_UNUSED = ToReal(CCTK_DELTA_TIME); + const CCTK_REAL_VEC t CCTK_ATTRIBUTE_UNUSED = ToReal(cctk_time); + const CCTK_REAL_VEC dxi CCTK_ATTRIBUTE_UNUSED = INV(dx); + const CCTK_REAL_VEC dyi CCTK_ATTRIBUTE_UNUSED = INV(dy); + const CCTK_REAL_VEC dzi CCTK_ATTRIBUTE_UNUSED = INV(dz); + const CCTK_REAL_VEC khalf CCTK_ATTRIBUTE_UNUSED = ToReal(0.5); + const CCTK_REAL_VEC kthird CCTK_ATTRIBUTE_UNUSED = ToReal(1.0/3.0); + const CCTK_REAL_VEC ktwothird CCTK_ATTRIBUTE_UNUSED = ToReal(2.0/3.0); + const CCTK_REAL_VEC kfourthird CCTK_ATTRIBUTE_UNUSED = ToReal(4.0/3.0); + const CCTK_REAL_VEC keightthird CCTK_ATTRIBUTE_UNUSED = ToReal(8.0/3.0); + const CCTK_REAL_VEC hdxi CCTK_ATTRIBUTE_UNUSED = kmul(ToReal(0.5), dxi); + const CCTK_REAL_VEC hdyi CCTK_ATTRIBUTE_UNUSED = kmul(ToReal(0.5), dyi); + const CCTK_REAL_VEC hdzi CCTK_ATTRIBUTE_UNUSED = kmul(ToReal(0.5), dzi); /* Initialize predefined quantities */ - CCTK_REAL_VEC /*const*/ p1o12dx CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.0833333333333333333333333333333),dx); - CCTK_REAL_VEC /*const*/ p1o12dy CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.0833333333333333333333333333333),dy); - CCTK_REAL_VEC /*const*/ p1o12dz CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.0833333333333333333333333333333),dz); - CCTK_REAL_VEC /*const*/ p1o144dxdy CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.00694444444444444444444444444444),kmul(dy,dx)); - CCTK_REAL_VEC /*const*/ p1o144dxdz CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.00694444444444444444444444444444),kmul(dz,dx)); - CCTK_REAL_VEC /*const*/ p1o144dydz CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.00694444444444444444444444444444),kmul(dz,dy)); - CCTK_REAL_VEC /*const*/ pm1o12dx2 CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(-0.0833333333333333333333333333333),kmul(dx,dx)); - CCTK_REAL_VEC /*const*/ pm1o12dy2 CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(-0.0833333333333333333333333333333),kmul(dy,dy)); - CCTK_REAL_VEC /*const*/ pm1o12dz2 CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(-0.0833333333333333333333333333333),kmul(dz,dz)); + const CCTK_REAL_VEC p1o12dx CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.0833333333333333333333333333333),dx); + const CCTK_REAL_VEC p1o12dy CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.0833333333333333333333333333333),dy); + const CCTK_REAL_VEC p1o12dz CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.0833333333333333333333333333333),dz); + const CCTK_REAL_VEC p1o144dxdy CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.00694444444444444444444444444444),kmul(dy,dx)); + const CCTK_REAL_VEC p1o144dxdz CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.00694444444444444444444444444444),kmul(dz,dx)); + const CCTK_REAL_VEC p1o144dydz CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(0.00694444444444444444444444444444),kmul(dz,dy)); + const CCTK_REAL_VEC pm1o12dx2 CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(-0.0833333333333333333333333333333),kmul(dx,dx)); + const CCTK_REAL_VEC pm1o12dy2 CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(-0.0833333333333333333333333333333),kmul(dy,dy)); + const CCTK_REAL_VEC pm1o12dz2 CCTK_ATTRIBUTE_UNUSED = kdiv(ToReal(-0.0833333333333333333333333333333),kmul(dz,dz)); /* Assign local copies of arrays functions */ @@ -79,13 +79,20 @@ static void WT_Gaussian_Body(cGH const * restrict const cctkGH, int const dir, i /* Copy local copies back to grid functions */ /* Loop over the grid points */ - #pragma omp parallel + const int imin0=imin[0]; + const int imin1=imin[1]; + const int imin2=imin[2]; + const int imax0=imax[0]; + const int imax1=imax[1]; + const int imax2=imax[2]; + #pragma omp parallel // reduction(+: vec_iter_counter, vec_op_counter, vec_mem_counter) CCTK_LOOP3STR(WT_Gaussian, - i,j,k, imin[0],imin[1],imin[2], imax[0],imax[1],imax[2], + i,j,k, imin0,imin1,imin2, imax0,imax1,imax2, cctk_ash[0],cctk_ash[1],cctk_ash[2], - kimin,kimax, CCTK_REAL_VEC_SIZE) + vecimin,vecimax, CCTK_REAL_VEC_SIZE) { - ptrdiff_t /*const*/ index CCTK_ATTRIBUTE_UNUSED = di*i + dj*j + dk*k; + const ptrdiff_t index CCTK_ATTRIBUTE_UNUSED = di*i + dj*j + dk*k; + // vec_iter_counter+=CCTK_REAL_VEC_SIZE; /* Assign local copies of grid functions */ @@ -100,10 +107,10 @@ static void WT_Gaussian_Body(cGH const * restrict const cctkGH, int const dir, i CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED uL = kmul(kexp(kmul(kmul(kmul(rL,rL),ToReal(-0.5)),ToReal(ScalarINV(ScalarSQR(width))))),ToReal(amplitude)); - CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED rhoL = ToReal(0.); + CCTK_REAL_VEC CCTK_ATTRIBUTE_UNUSED rhoL = ToReal(0); /* Copy local copies back to grid functions */ - vec_store_partial_prepare(i,kimin,kimax); + vec_store_partial_prepare(i,vecimin,vecimax); vec_store_nta_partial(rho[index],rhoL); vec_store_nta_partial(u[index],uL); } @@ -126,7 +133,7 @@ extern "C" void WT_Gaussian(CCTK_ARGUMENTS) return; } - const char *const groups[] = { + const char* const groups[] = { "grid::coordinates", "ML_WaveToy::WT_rho", "ML_WaveToy::WT_u"}; |