diff options
author | Erik Schnetter <schnetter@gmail.com> | 2012-07-03 21:32:38 -0400 |
---|---|---|
committer | Erik Schnetter <schnetter@gmail.com> | 2012-07-03 21:32:38 -0400 |
commit | 9301a1b665598cafd094b7a653419de4cef77640 (patch) | |
tree | 59cd3810abd7afbc8071e50d002ce5be03c90ac8 /ML_WaveToy_CL | |
parent | 42a4051247ff477c8973f985d68a0ccecd4e0aa8 (diff) |
Introduce cctk_ash, retire cctk_lssh
Introduce cctk_ash, describing the process-local array shape that has
been allocated. This may be larger than cctk_lsh, the process-local
shape that should be used.
Retire cctk_lssh and related infrastructure to handle staggered grid
functions.
Diffstat (limited to 'ML_WaveToy_CL')
-rw-r--r-- | ML_WaveToy_CL/src/WT_CL_Dirichlet.cc | 26 | ||||
-rw-r--r-- | ML_WaveToy_CL/src/WT_CL_Energy.cc | 28 | ||||
-rw-r--r-- | ML_WaveToy_CL/src/WT_CL_EnergyBoundary.cc | 26 | ||||
-rw-r--r-- | ML_WaveToy_CL/src/WT_CL_Gaussian.cc | 28 | ||||
-rw-r--r-- | ML_WaveToy_CL/src/WT_CL_RHS.cc | 26 | ||||
-rw-r--r-- | ML_WaveToy_CL/src/WT_CL_Standing.cc | 30 |
6 files changed, 94 insertions, 70 deletions
diff --git a/ML_WaveToy_CL/src/WT_CL_Dirichlet.cc b/ML_WaveToy_CL/src/WT_CL_Dirichlet.cc index 91ff705..9697f7e 100644 --- a/ML_WaveToy_CL/src/WT_CL_Dirichlet.cc +++ b/ML_WaveToy_CL/src/WT_CL_Dirichlet.cc @@ -19,10 +19,14 @@ /* Define macros used in calculations */ #define INITVALUE (42) -#define QAD(x) (SQR(SQR(x))) +#define ScalarINV(x) ((CCTK_REAL)1.0 / (x)) +#define ScalarSQR(x) ((x) * (x)) +#define ScalarCUB(x) ((x) * ScalarSQR(x)) +#define ScalarQAD(x) (ScalarSQR(ScalarSQR(x))) #define INV(x) (kdiv(ToReal(1.0),x)) #define SQR(x) (kmul(x,x)) #define CUB(x) (kmul(x,SQR(x))) +#define QAD(x) (SQR(SQR(x))) extern "C" void WT_CL_Dirichlet_SelectBCs(CCTK_ARGUMENTS) { @@ -73,15 +77,15 @@ static void WT_CL_Dirichlet_Body(cGH const * restrict const cctkGH, int const di "CCTK_REAL_VEC const hdzi = kmul(ToReal(0.5), dzi);\n" "\n" "/* Initialize predefined quantities */\n" - "CCTK_REAL_VEC const p1o12dx = kmul(INV(dx),ToReal(0.0833333333333333333333333333333));\n" - "CCTK_REAL_VEC const p1o12dy = kmul(INV(dy),ToReal(0.0833333333333333333333333333333));\n" - "CCTK_REAL_VEC const p1o12dz = kmul(INV(dz),ToReal(0.0833333333333333333333333333333));\n" - "CCTK_REAL_VEC const p1o144dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.00694444444444444444444444444444));\n" - "CCTK_REAL_VEC const p1o144dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.00694444444444444444444444444444));\n" - "CCTK_REAL_VEC const p1o144dydz = kmul(INV(kmul(dy,dz)),ToReal(0.00694444444444444444444444444444));\n" - "CCTK_REAL_VEC const pm1o12dx2 = kmul(INV(SQR(dx)),ToReal(-0.0833333333333333333333333333333));\n" - "CCTK_REAL_VEC const pm1o12dy2 = kmul(INV(SQR(dy)),ToReal(-0.0833333333333333333333333333333));\n" - "CCTK_REAL_VEC const pm1o12dz2 = kmul(INV(SQR(dz)),ToReal(-0.0833333333333333333333333333333));\n" + "CCTK_REAL_VEC const p1o12dx = kdiv(ToReal(0.0833333333333333333333333333333),dx);\n" + "CCTK_REAL_VEC const p1o12dy = kdiv(ToReal(0.0833333333333333333333333333333),dy);\n" + "CCTK_REAL_VEC const p1o12dz = kdiv(ToReal(0.0833333333333333333333333333333),dz);\n" + "CCTK_REAL_VEC const p1o144dxdy = kdiv(ToReal(0.00694444444444444444444444444444),kmul(dy,dx));\n" + "CCTK_REAL_VEC const p1o144dxdz = kdiv(ToReal(0.00694444444444444444444444444444),kmul(dz,dx));\n" + "CCTK_REAL_VEC const p1o144dydz = kdiv(ToReal(0.00694444444444444444444444444444),kmul(dz,dy));\n" + "CCTK_REAL_VEC const pm1o12dx2 = kdiv(ToReal(-0.0833333333333333333333333333333),kmul(dx,dx));\n" + "CCTK_REAL_VEC const pm1o12dy2 = kdiv(ToReal(-0.0833333333333333333333333333333),kmul(dy,dy));\n" + "CCTK_REAL_VEC const pm1o12dz2 = kdiv(ToReal(-0.0833333333333333333333333333333),kmul(dz,dz));\n" "\n" "/* Assign local copies of arrays functions */\n" "\n" @@ -95,7 +99,7 @@ static void WT_CL_Dirichlet_Body(cGH const * restrict const cctkGH, int const di "#pragma omp parallel\n" "LC_LOOP3VEC(WT_CL_Dirichlet,\n" " i,j,k, imin[0],imin[1],imin[2], imax[0],imax[1],imax[2],\n" - " cctk_lsh[0],cctk_lsh[1],cctk_lsh[2],\n" + " cctk_ash[0],cctk_ash[1],cctk_ash[2],\n" " CCTK_REAL_VEC_SIZE)\n" "{\n" " ptrdiff_t const index = di*i + dj*j + dk*k;\n" diff --git a/ML_WaveToy_CL/src/WT_CL_Energy.cc b/ML_WaveToy_CL/src/WT_CL_Energy.cc index 56a07ea..d0b5667 100644 --- a/ML_WaveToy_CL/src/WT_CL_Energy.cc +++ b/ML_WaveToy_CL/src/WT_CL_Energy.cc @@ -19,10 +19,14 @@ /* Define macros used in calculations */ #define INITVALUE (42) -#define QAD(x) (SQR(SQR(x))) +#define ScalarINV(x) ((CCTK_REAL)1.0 / (x)) +#define ScalarSQR(x) ((x) * (x)) +#define ScalarCUB(x) ((x) * ScalarSQR(x)) +#define ScalarQAD(x) (ScalarSQR(ScalarSQR(x))) #define INV(x) (kdiv(ToReal(1.0),x)) #define SQR(x) (kmul(x,x)) #define CUB(x) (kmul(x,SQR(x))) +#define QAD(x) (SQR(SQR(x))) extern "C" void WT_CL_Energy_SelectBCs(CCTK_ARGUMENTS) { @@ -70,15 +74,15 @@ static void WT_CL_Energy_Body(cGH const * restrict const cctkGH, int const dir, "CCTK_REAL_VEC const hdzi = kmul(ToReal(0.5), dzi);\n" "\n" "/* Initialize predefined quantities */\n" - "CCTK_REAL_VEC const p1o12dx = kmul(INV(dx),ToReal(0.0833333333333333333333333333333));\n" - "CCTK_REAL_VEC const p1o12dy = kmul(INV(dy),ToReal(0.0833333333333333333333333333333));\n" - "CCTK_REAL_VEC const p1o12dz = kmul(INV(dz),ToReal(0.0833333333333333333333333333333));\n" - "CCTK_REAL_VEC const p1o144dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.00694444444444444444444444444444));\n" - "CCTK_REAL_VEC const p1o144dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.00694444444444444444444444444444));\n" - "CCTK_REAL_VEC const p1o144dydz = kmul(INV(kmul(dy,dz)),ToReal(0.00694444444444444444444444444444));\n" - "CCTK_REAL_VEC const pm1o12dx2 = kmul(INV(SQR(dx)),ToReal(-0.0833333333333333333333333333333));\n" - "CCTK_REAL_VEC const pm1o12dy2 = kmul(INV(SQR(dy)),ToReal(-0.0833333333333333333333333333333));\n" - "CCTK_REAL_VEC const pm1o12dz2 = kmul(INV(SQR(dz)),ToReal(-0.0833333333333333333333333333333));\n" + "CCTK_REAL_VEC const p1o12dx = kdiv(ToReal(0.0833333333333333333333333333333),dx);\n" + "CCTK_REAL_VEC const p1o12dy = kdiv(ToReal(0.0833333333333333333333333333333),dy);\n" + "CCTK_REAL_VEC const p1o12dz = kdiv(ToReal(0.0833333333333333333333333333333),dz);\n" + "CCTK_REAL_VEC const p1o144dxdy = kdiv(ToReal(0.00694444444444444444444444444444),kmul(dy,dx));\n" + "CCTK_REAL_VEC const p1o144dxdz = kdiv(ToReal(0.00694444444444444444444444444444),kmul(dz,dx));\n" + "CCTK_REAL_VEC const p1o144dydz = kdiv(ToReal(0.00694444444444444444444444444444),kmul(dz,dy));\n" + "CCTK_REAL_VEC const pm1o12dx2 = kdiv(ToReal(-0.0833333333333333333333333333333),kmul(dx,dx));\n" + "CCTK_REAL_VEC const pm1o12dy2 = kdiv(ToReal(-0.0833333333333333333333333333333),kmul(dy,dy));\n" + "CCTK_REAL_VEC const pm1o12dz2 = kdiv(ToReal(-0.0833333333333333333333333333333),kmul(dz,dz));\n" "\n" "/* Assign local copies of arrays functions */\n" "\n" @@ -92,7 +96,7 @@ static void WT_CL_Energy_Body(cGH const * restrict const cctkGH, int const dir, "#pragma omp parallel\n" "LC_LOOP3VEC(WT_CL_Energy,\n" " i,j,k, imin[0],imin[1],imin[2], imax[0],imax[1],imax[2],\n" - " cctk_lsh[0],cctk_lsh[1],cctk_lsh[2],\n" + " cctk_ash[0],cctk_ash[1],cctk_ash[2],\n" " CCTK_REAL_VEC_SIZE)\n" "{\n" " ptrdiff_t const index = di*i + dj*j + dk*k;\n" @@ -112,7 +116,7 @@ static void WT_CL_Energy_Body(cGH const * restrict const cctkGH, int const dir, " \n" " /* Calculate temporaries and grid functions */\n" " CCTK_REAL_VEC epsL = \n" - " kmul(kadd(SQR(rhoL),kadd(SQR(PDstandardNth1u),kadd(SQR(PDstandardNth2u),SQR(PDstandardNth3u)))),ToReal(0.5));\n" + " kmul(kmadd(rhoL,rhoL,kmadd(PDstandardNth1u,PDstandardNth1u,kmadd(PDstandardNth2u,PDstandardNth2u,kmul(PDstandardNth3u,PDstandardNth3u)))),ToReal(0.5));\n" " \n" " /* Copy local copies back to grid functions */\n" " vec_store_partial_prepare(i,lc_imin,lc_imax);\n" diff --git a/ML_WaveToy_CL/src/WT_CL_EnergyBoundary.cc b/ML_WaveToy_CL/src/WT_CL_EnergyBoundary.cc index 9425b0d..4633e90 100644 --- a/ML_WaveToy_CL/src/WT_CL_EnergyBoundary.cc +++ b/ML_WaveToy_CL/src/WT_CL_EnergyBoundary.cc @@ -19,10 +19,14 @@ /* Define macros used in calculations */ #define INITVALUE (42) -#define QAD(x) (SQR(SQR(x))) +#define ScalarINV(x) ((CCTK_REAL)1.0 / (x)) +#define ScalarSQR(x) ((x) * (x)) +#define ScalarCUB(x) ((x) * ScalarSQR(x)) +#define ScalarQAD(x) (ScalarSQR(ScalarSQR(x))) #define INV(x) (kdiv(ToReal(1.0),x)) #define SQR(x) (kmul(x,x)) #define CUB(x) (kmul(x,SQR(x))) +#define QAD(x) (SQR(SQR(x))) extern "C" void WT_CL_EnergyBoundary_SelectBCs(CCTK_ARGUMENTS) { @@ -70,15 +74,15 @@ static void WT_CL_EnergyBoundary_Body(cGH const * restrict const cctkGH, int con "CCTK_REAL_VEC const hdzi = kmul(ToReal(0.5), dzi);\n" "\n" "/* Initialize predefined quantities */\n" - "CCTK_REAL_VEC const p1o12dx = kmul(INV(dx),ToReal(0.0833333333333333333333333333333));\n" - "CCTK_REAL_VEC const p1o12dy = kmul(INV(dy),ToReal(0.0833333333333333333333333333333));\n" - "CCTK_REAL_VEC const p1o12dz = kmul(INV(dz),ToReal(0.0833333333333333333333333333333));\n" - "CCTK_REAL_VEC const p1o144dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.00694444444444444444444444444444));\n" - "CCTK_REAL_VEC const p1o144dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.00694444444444444444444444444444));\n" - "CCTK_REAL_VEC const p1o144dydz = kmul(INV(kmul(dy,dz)),ToReal(0.00694444444444444444444444444444));\n" - "CCTK_REAL_VEC const pm1o12dx2 = kmul(INV(SQR(dx)),ToReal(-0.0833333333333333333333333333333));\n" - "CCTK_REAL_VEC const pm1o12dy2 = kmul(INV(SQR(dy)),ToReal(-0.0833333333333333333333333333333));\n" - "CCTK_REAL_VEC const pm1o12dz2 = kmul(INV(SQR(dz)),ToReal(-0.0833333333333333333333333333333));\n" + "CCTK_REAL_VEC const p1o12dx = kdiv(ToReal(0.0833333333333333333333333333333),dx);\n" + "CCTK_REAL_VEC const p1o12dy = kdiv(ToReal(0.0833333333333333333333333333333),dy);\n" + "CCTK_REAL_VEC const p1o12dz = kdiv(ToReal(0.0833333333333333333333333333333),dz);\n" + "CCTK_REAL_VEC const p1o144dxdy = kdiv(ToReal(0.00694444444444444444444444444444),kmul(dy,dx));\n" + "CCTK_REAL_VEC const p1o144dxdz = kdiv(ToReal(0.00694444444444444444444444444444),kmul(dz,dx));\n" + "CCTK_REAL_VEC const p1o144dydz = kdiv(ToReal(0.00694444444444444444444444444444),kmul(dz,dy));\n" + "CCTK_REAL_VEC const pm1o12dx2 = kdiv(ToReal(-0.0833333333333333333333333333333),kmul(dx,dx));\n" + "CCTK_REAL_VEC const pm1o12dy2 = kdiv(ToReal(-0.0833333333333333333333333333333),kmul(dy,dy));\n" + "CCTK_REAL_VEC const pm1o12dz2 = kdiv(ToReal(-0.0833333333333333333333333333333),kmul(dz,dz));\n" "\n" "/* Assign local copies of arrays functions */\n" "\n" @@ -92,7 +96,7 @@ static void WT_CL_EnergyBoundary_Body(cGH const * restrict const cctkGH, int con "#pragma omp parallel\n" "LC_LOOP3VEC(WT_CL_EnergyBoundary,\n" " i,j,k, imin[0],imin[1],imin[2], imax[0],imax[1],imax[2],\n" - " cctk_lsh[0],cctk_lsh[1],cctk_lsh[2],\n" + " cctk_ash[0],cctk_ash[1],cctk_ash[2],\n" " CCTK_REAL_VEC_SIZE)\n" "{\n" " ptrdiff_t const index = di*i + dj*j + dk*k;\n" diff --git a/ML_WaveToy_CL/src/WT_CL_Gaussian.cc b/ML_WaveToy_CL/src/WT_CL_Gaussian.cc index e121995..5c95c8f 100644 --- a/ML_WaveToy_CL/src/WT_CL_Gaussian.cc +++ b/ML_WaveToy_CL/src/WT_CL_Gaussian.cc @@ -19,10 +19,14 @@ /* Define macros used in calculations */ #define INITVALUE (42) -#define QAD(x) (SQR(SQR(x))) +#define ScalarINV(x) ((CCTK_REAL)1.0 / (x)) +#define ScalarSQR(x) ((x) * (x)) +#define ScalarCUB(x) ((x) * ScalarSQR(x)) +#define ScalarQAD(x) (ScalarSQR(ScalarSQR(x))) #define INV(x) (kdiv(ToReal(1.0),x)) #define SQR(x) (kmul(x,x)) #define CUB(x) (kmul(x,SQR(x))) +#define QAD(x) (SQR(SQR(x))) static void WT_CL_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[]) { @@ -58,15 +62,15 @@ static void WT_CL_Gaussian_Body(cGH const * restrict const cctkGH, int const dir "CCTK_REAL_VEC const hdzi = kmul(ToReal(0.5), dzi);\n" "\n" "/* Initialize predefined quantities */\n" - "CCTK_REAL_VEC const p1o12dx = kmul(INV(dx),ToReal(0.0833333333333333333333333333333));\n" - "CCTK_REAL_VEC const p1o12dy = kmul(INV(dy),ToReal(0.0833333333333333333333333333333));\n" - "CCTK_REAL_VEC const p1o12dz = kmul(INV(dz),ToReal(0.0833333333333333333333333333333));\n" - "CCTK_REAL_VEC const p1o144dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.00694444444444444444444444444444));\n" - "CCTK_REAL_VEC const p1o144dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.00694444444444444444444444444444));\n" - "CCTK_REAL_VEC const p1o144dydz = kmul(INV(kmul(dy,dz)),ToReal(0.00694444444444444444444444444444));\n" - "CCTK_REAL_VEC const pm1o12dx2 = kmul(INV(SQR(dx)),ToReal(-0.0833333333333333333333333333333));\n" - "CCTK_REAL_VEC const pm1o12dy2 = kmul(INV(SQR(dy)),ToReal(-0.0833333333333333333333333333333));\n" - "CCTK_REAL_VEC const pm1o12dz2 = kmul(INV(SQR(dz)),ToReal(-0.0833333333333333333333333333333));\n" + "CCTK_REAL_VEC const p1o12dx = kdiv(ToReal(0.0833333333333333333333333333333),dx);\n" + "CCTK_REAL_VEC const p1o12dy = kdiv(ToReal(0.0833333333333333333333333333333),dy);\n" + "CCTK_REAL_VEC const p1o12dz = kdiv(ToReal(0.0833333333333333333333333333333),dz);\n" + "CCTK_REAL_VEC const p1o144dxdy = kdiv(ToReal(0.00694444444444444444444444444444),kmul(dy,dx));\n" + "CCTK_REAL_VEC const p1o144dxdz = kdiv(ToReal(0.00694444444444444444444444444444),kmul(dz,dx));\n" + "CCTK_REAL_VEC const p1o144dydz = kdiv(ToReal(0.00694444444444444444444444444444),kmul(dz,dy));\n" + "CCTK_REAL_VEC const pm1o12dx2 = kdiv(ToReal(-0.0833333333333333333333333333333),kmul(dx,dx));\n" + "CCTK_REAL_VEC const pm1o12dy2 = kdiv(ToReal(-0.0833333333333333333333333333333),kmul(dy,dy));\n" + "CCTK_REAL_VEC const pm1o12dz2 = kdiv(ToReal(-0.0833333333333333333333333333333),kmul(dz,dz));\n" "\n" "/* Assign local copies of arrays functions */\n" "\n" @@ -80,7 +84,7 @@ static void WT_CL_Gaussian_Body(cGH const * restrict const cctkGH, int const dir "#pragma omp parallel\n" "LC_LOOP3VEC(WT_CL_Gaussian,\n" " i,j,k, imin[0],imin[1],imin[2], imax[0],imax[1],imax[2],\n" - " cctk_lsh[0],cctk_lsh[1],cctk_lsh[2],\n" + " cctk_ash[0],cctk_ash[1],cctk_ash[2],\n" " CCTK_REAL_VEC_SIZE)\n" "{\n" " ptrdiff_t const index = di*i + dj*j + dk*k;\n" @@ -96,7 +100,7 @@ static void WT_CL_Gaussian_Body(cGH const * restrict const cctkGH, int const dir " \n" " /* Calculate temporaries and grid functions */\n" " CCTK_REAL_VEC uL = \n" - " kmul(kexp(kmul(INV(SQR(ToReal(width))),kmul(SQR(rL),ToReal(-0.5)))),ToReal(amplitude));\n" + " kmul(kexp(kmul(kmul(kmul(rL,rL),ToReal(-0.5)),ToReal(ScalarINV(ScalarSQR(width))))),ToReal(amplitude));\n" " \n" " CCTK_REAL_VEC rhoL = ToReal(0);\n" " \n" diff --git a/ML_WaveToy_CL/src/WT_CL_RHS.cc b/ML_WaveToy_CL/src/WT_CL_RHS.cc index 2314408..5e4c9a0 100644 --- a/ML_WaveToy_CL/src/WT_CL_RHS.cc +++ b/ML_WaveToy_CL/src/WT_CL_RHS.cc @@ -19,10 +19,14 @@ /* Define macros used in calculations */ #define INITVALUE (42) -#define QAD(x) (SQR(SQR(x))) +#define ScalarINV(x) ((CCTK_REAL)1.0 / (x)) +#define ScalarSQR(x) ((x) * (x)) +#define ScalarCUB(x) ((x) * ScalarSQR(x)) +#define ScalarQAD(x) (ScalarSQR(ScalarSQR(x))) #define INV(x) (kdiv(ToReal(1.0),x)) #define SQR(x) (kmul(x,x)) #define CUB(x) (kmul(x,SQR(x))) +#define QAD(x) (SQR(SQR(x))) extern "C" void WT_CL_RHS_SelectBCs(CCTK_ARGUMENTS) { @@ -73,15 +77,15 @@ static void WT_CL_RHS_Body(cGH const * restrict const cctkGH, int const dir, int "CCTK_REAL_VEC const hdzi = kmul(ToReal(0.5), dzi);\n" "\n" "/* Initialize predefined quantities */\n" - "CCTK_REAL_VEC const p1o12dx = kmul(INV(dx),ToReal(0.0833333333333333333333333333333));\n" - "CCTK_REAL_VEC const p1o12dy = kmul(INV(dy),ToReal(0.0833333333333333333333333333333));\n" - "CCTK_REAL_VEC const p1o12dz = kmul(INV(dz),ToReal(0.0833333333333333333333333333333));\n" - "CCTK_REAL_VEC const p1o144dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.00694444444444444444444444444444));\n" - "CCTK_REAL_VEC const p1o144dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.00694444444444444444444444444444));\n" - "CCTK_REAL_VEC const p1o144dydz = kmul(INV(kmul(dy,dz)),ToReal(0.00694444444444444444444444444444));\n" - "CCTK_REAL_VEC const pm1o12dx2 = kmul(INV(SQR(dx)),ToReal(-0.0833333333333333333333333333333));\n" - "CCTK_REAL_VEC const pm1o12dy2 = kmul(INV(SQR(dy)),ToReal(-0.0833333333333333333333333333333));\n" - "CCTK_REAL_VEC const pm1o12dz2 = kmul(INV(SQR(dz)),ToReal(-0.0833333333333333333333333333333));\n" + "CCTK_REAL_VEC const p1o12dx = kdiv(ToReal(0.0833333333333333333333333333333),dx);\n" + "CCTK_REAL_VEC const p1o12dy = kdiv(ToReal(0.0833333333333333333333333333333),dy);\n" + "CCTK_REAL_VEC const p1o12dz = kdiv(ToReal(0.0833333333333333333333333333333),dz);\n" + "CCTK_REAL_VEC const p1o144dxdy = kdiv(ToReal(0.00694444444444444444444444444444),kmul(dy,dx));\n" + "CCTK_REAL_VEC const p1o144dxdz = kdiv(ToReal(0.00694444444444444444444444444444),kmul(dz,dx));\n" + "CCTK_REAL_VEC const p1o144dydz = kdiv(ToReal(0.00694444444444444444444444444444),kmul(dz,dy));\n" + "CCTK_REAL_VEC const pm1o12dx2 = kdiv(ToReal(-0.0833333333333333333333333333333),kmul(dx,dx));\n" + "CCTK_REAL_VEC const pm1o12dy2 = kdiv(ToReal(-0.0833333333333333333333333333333),kmul(dy,dy));\n" + "CCTK_REAL_VEC const pm1o12dz2 = kdiv(ToReal(-0.0833333333333333333333333333333),kmul(dz,dz));\n" "\n" "/* Assign local copies of arrays functions */\n" "\n" @@ -95,7 +99,7 @@ static void WT_CL_RHS_Body(cGH const * restrict const cctkGH, int const dir, int "#pragma omp parallel\n" "LC_LOOP3VEC(WT_CL_RHS,\n" " i,j,k, imin[0],imin[1],imin[2], imax[0],imax[1],imax[2],\n" - " cctk_lsh[0],cctk_lsh[1],cctk_lsh[2],\n" + " cctk_ash[0],cctk_ash[1],cctk_ash[2],\n" " CCTK_REAL_VEC_SIZE)\n" "{\n" " ptrdiff_t const index = di*i + dj*j + dk*k;\n" diff --git a/ML_WaveToy_CL/src/WT_CL_Standing.cc b/ML_WaveToy_CL/src/WT_CL_Standing.cc index 5c477e1..dc487d9 100644 --- a/ML_WaveToy_CL/src/WT_CL_Standing.cc +++ b/ML_WaveToy_CL/src/WT_CL_Standing.cc @@ -19,10 +19,14 @@ /* Define macros used in calculations */ #define INITVALUE (42) -#define QAD(x) (SQR(SQR(x))) +#define ScalarINV(x) ((CCTK_REAL)1.0 / (x)) +#define ScalarSQR(x) ((x) * (x)) +#define ScalarCUB(x) ((x) * ScalarSQR(x)) +#define ScalarQAD(x) (ScalarSQR(ScalarSQR(x))) #define INV(x) (kdiv(ToReal(1.0),x)) #define SQR(x) (kmul(x,x)) #define CUB(x) (kmul(x,SQR(x))) +#define QAD(x) (SQR(SQR(x))) static void WT_CL_Standing_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[]) { @@ -58,15 +62,15 @@ static void WT_CL_Standing_Body(cGH const * restrict const cctkGH, int const dir "CCTK_REAL_VEC const hdzi = kmul(ToReal(0.5), dzi);\n" "\n" "/* Initialize predefined quantities */\n" - "CCTK_REAL_VEC const p1o12dx = kmul(INV(dx),ToReal(0.0833333333333333333333333333333));\n" - "CCTK_REAL_VEC const p1o12dy = kmul(INV(dy),ToReal(0.0833333333333333333333333333333));\n" - "CCTK_REAL_VEC const p1o12dz = kmul(INV(dz),ToReal(0.0833333333333333333333333333333));\n" - "CCTK_REAL_VEC const p1o144dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.00694444444444444444444444444444));\n" - "CCTK_REAL_VEC const p1o144dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.00694444444444444444444444444444));\n" - "CCTK_REAL_VEC const p1o144dydz = kmul(INV(kmul(dy,dz)),ToReal(0.00694444444444444444444444444444));\n" - "CCTK_REAL_VEC const pm1o12dx2 = kmul(INV(SQR(dx)),ToReal(-0.0833333333333333333333333333333));\n" - "CCTK_REAL_VEC const pm1o12dy2 = kmul(INV(SQR(dy)),ToReal(-0.0833333333333333333333333333333));\n" - "CCTK_REAL_VEC const pm1o12dz2 = kmul(INV(SQR(dz)),ToReal(-0.0833333333333333333333333333333));\n" + "CCTK_REAL_VEC const p1o12dx = kdiv(ToReal(0.0833333333333333333333333333333),dx);\n" + "CCTK_REAL_VEC const p1o12dy = kdiv(ToReal(0.0833333333333333333333333333333),dy);\n" + "CCTK_REAL_VEC const p1o12dz = kdiv(ToReal(0.0833333333333333333333333333333),dz);\n" + "CCTK_REAL_VEC const p1o144dxdy = kdiv(ToReal(0.00694444444444444444444444444444),kmul(dy,dx));\n" + "CCTK_REAL_VEC const p1o144dxdz = kdiv(ToReal(0.00694444444444444444444444444444),kmul(dz,dx));\n" + "CCTK_REAL_VEC const p1o144dydz = kdiv(ToReal(0.00694444444444444444444444444444),kmul(dz,dy));\n" + "CCTK_REAL_VEC const pm1o12dx2 = kdiv(ToReal(-0.0833333333333333333333333333333),kmul(dx,dx));\n" + "CCTK_REAL_VEC const pm1o12dy2 = kdiv(ToReal(-0.0833333333333333333333333333333),kmul(dy,dy));\n" + "CCTK_REAL_VEC const pm1o12dz2 = kdiv(ToReal(-0.0833333333333333333333333333333),kmul(dz,dz));\n" "\n" "/* Assign local copies of arrays functions */\n" "\n" @@ -80,7 +84,7 @@ static void WT_CL_Standing_Body(cGH const * restrict const cctkGH, int const dir "#pragma omp parallel\n" "LC_LOOP3VEC(WT_CL_Standing,\n" " i,j,k, imin[0],imin[1],imin[2], imax[0],imax[1],imax[2],\n" - " cctk_lsh[0],cctk_lsh[1],cctk_lsh[2],\n" + " cctk_ash[0],cctk_ash[1],cctk_ash[2],\n" " CCTK_REAL_VEC_SIZE)\n" "{\n" " ptrdiff_t const index = di*i + dj*j + dk*k;\n" @@ -97,9 +101,9 @@ static void WT_CL_Standing_Body(cGH const * restrict const cctkGH, int const dir " /* Precompute derivatives */\n" " \n" " /* Calculate temporaries and grid functions */\n" - " CCTK_REAL_VEC k = kmul(INV(ToReal(width)),ToReal(Pi));\n" + " CCTK_REAL_VEC k = ToReal(Pi*ScalarINV(width));\n" " \n" - " CCTK_REAL_VEC omega = ksqrt(kmul(SQR(k),ToReal(3)));\n" + " CCTK_REAL_VEC omega = ksqrt(kmul(kmul(k,k),ToReal(3)));\n" " \n" " CCTK_REAL_VEC uL = \n" " kmul(kcos(kmul(xL,k)),kmul(kcos(kmul(yL,k)),kmul(kcos(kmul(zL,k)),kmul(kcos(kmul(omega,t)),ToReal(amplitude)))));\n" |