diff options
Diffstat (limited to 'ML_ADM/src/ML_ADM_constraints.cc')
-rw-r--r-- | ML_ADM/src/ML_ADM_constraints.cc | 1452 |
1 files changed, 1170 insertions, 282 deletions
diff --git a/ML_ADM/src/ML_ADM_constraints.cc b/ML_ADM/src/ML_ADM_constraints.cc index efca3d3..efd9a37 100644 --- a/ML_ADM/src/ML_ADM_constraints.cc +++ b/ML_ADM/src/ML_ADM_constraints.cc @@ -13,13 +13,14 @@ #include "GenericFD.h" #include "Differencing.h" #include "loopcontrol.h" +#include "vectors.h" /* Define macros used in calculations */ #define INITVALUE (42) #define QAD(x) (SQR(SQR(x))) -#define INV(x) ((1.0) / (x)) -#define SQR(x) ((x) * (x)) -#define CUB(x) ((x) * (x) * (x)) +#define INV(x) (kdiv(ToReal(1.0),x)) +#define SQR(x) (kmul(x,x)) +#define CUB(x) (kmul(x,SQR(x))) extern "C" void ML_ADM_constraints_SelectBCs(CCTK_ARGUMENTS) { @@ -57,7 +58,24 @@ static void ML_ADM_constraints_Body(cGH const * restrict const cctkGH, int const const char *groups[] = {"ML_ADM::ML_curv","ML_ADM::ML_Ham","ML_ADM::ML_metric","ML_ADM::ML_mom"}; GenericFD_AssertGroupStorage(cctkGH, "ML_ADM_constraints", 4, groups); - GenericFD_EnsureStencilFits(cctkGH, "ML_ADM_constraints", 2, 2, 2); + switch(fdOrder) + { + case 2: + GenericFD_EnsureStencilFits(cctkGH, "ML_ADM_constraints", 1, 1, 1); + break; + + case 4: + GenericFD_EnsureStencilFits(cctkGH, "ML_ADM_constraints", 2, 2, 2); + break; + + case 6: + GenericFD_EnsureStencilFits(cctkGH, "ML_ADM_constraints", 3, 3, 3); + break; + + case 8: + GenericFD_EnsureStencilFits(cctkGH, "ML_ADM_constraints", 4, 4, 4); + break; + } /* Include user-supplied include files */ @@ -68,328 +86,1198 @@ static void ML_ADM_constraints_Body(cGH const * restrict const cctkGH, int const ptrdiff_t const cdi = sizeof(CCTK_REAL) * di; ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj; ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk; - CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0)); - CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1)); - CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2)); - CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME); - CCTK_REAL const dxi = INV(dx); - CCTK_REAL const dyi = INV(dy); - CCTK_REAL const dzi = INV(dz); - CCTK_REAL const khalf = 0.5; - CCTK_REAL const kthird = 1/3.0; - CCTK_REAL const ktwothird = 2.0/3.0; - CCTK_REAL const kfourthird = 4.0/3.0; - CCTK_REAL const keightthird = 8.0/3.0; - CCTK_REAL const hdxi = 0.5 * dxi; - CCTK_REAL const hdyi = 0.5 * dyi; - CCTK_REAL const hdzi = 0.5 * dzi; + CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0)); + CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1)); + CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2)); + CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME); + CCTK_REAL_VEC const dxi = INV(dx); + CCTK_REAL_VEC const dyi = INV(dy); + CCTK_REAL_VEC const dzi = INV(dz); + CCTK_REAL_VEC const khalf = ToReal(0.5); + CCTK_REAL_VEC const kthird = ToReal(1.0/3.0); + CCTK_REAL_VEC const ktwothird = ToReal(2.0/3.0); + CCTK_REAL_VEC const kfourthird = ToReal(4.0/3.0); + CCTK_REAL_VEC const keightthird = ToReal(8.0/3.0); + CCTK_REAL_VEC const hdxi = kmul(ToReal(0.5), dxi); + CCTK_REAL_VEC const hdyi = kmul(ToReal(0.5), dyi); + CCTK_REAL_VEC const hdzi = kmul(ToReal(0.5), dzi); /* Initialize predefined quantities */ - CCTK_REAL const p1o12dx = 0.0833333333333333333333333333333*INV(dx); - CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy); - CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz); - CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy); - CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz); - CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz); - CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx)); - CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy)); - CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz)); + CCTK_REAL_VEC const p1o12dx = kmul(INV(dx),ToReal(0.0833333333333333333333333333333)); + CCTK_REAL_VEC const p1o12dy = kmul(INV(dy),ToReal(0.0833333333333333333333333333333)); + CCTK_REAL_VEC const p1o12dz = kmul(INV(dz),ToReal(0.0833333333333333333333333333333)); + CCTK_REAL_VEC const p1o144dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(0.00694444444444444444444444444444))); + CCTK_REAL_VEC const p1o144dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(0.00694444444444444444444444444444))); + CCTK_REAL_VEC const p1o144dydz = kmul(INV(dy),kmul(INV(dz),ToReal(0.00694444444444444444444444444444))); + CCTK_REAL_VEC const p1o180dx2 = kmul(INV(SQR(dx)),ToReal(0.00555555555555555555555555555556)); + CCTK_REAL_VEC const p1o180dy2 = kmul(INV(SQR(dy)),ToReal(0.00555555555555555555555555555556)); + CCTK_REAL_VEC const p1o180dz2 = kmul(INV(SQR(dz)),ToReal(0.00555555555555555555555555555556)); + CCTK_REAL_VEC const p1o2dx = kmul(INV(dx),ToReal(0.5)); + CCTK_REAL_VEC const p1o2dy = kmul(INV(dy),ToReal(0.5)); + CCTK_REAL_VEC const p1o2dz = kmul(INV(dz),ToReal(0.5)); + CCTK_REAL_VEC const p1o3600dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(0.000277777777777777777777777777778))); + CCTK_REAL_VEC const p1o3600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(0.000277777777777777777777777777778))); + CCTK_REAL_VEC const p1o3600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(0.000277777777777777777777777777778))); + CCTK_REAL_VEC const p1o4dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(0.25))); + CCTK_REAL_VEC const p1o4dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(0.25))); + CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(dz),ToReal(0.25))); + CCTK_REAL_VEC const p1o5040dx2 = kmul(INV(SQR(dx)),ToReal(0.000198412698412698412698412698413)); + CCTK_REAL_VEC const p1o5040dy2 = kmul(INV(SQR(dy)),ToReal(0.000198412698412698412698412698413)); + CCTK_REAL_VEC const p1o5040dz2 = kmul(INV(SQR(dz)),ToReal(0.000198412698412698412698412698413)); + CCTK_REAL_VEC const p1o60dx = kmul(INV(dx),ToReal(0.0166666666666666666666666666667)); + CCTK_REAL_VEC const p1o60dy = kmul(INV(dy),ToReal(0.0166666666666666666666666666667)); + CCTK_REAL_VEC const p1o60dz = kmul(INV(dz),ToReal(0.0166666666666666666666666666667)); + CCTK_REAL_VEC const p1o705600dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6))); + CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6))); + CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6))); + CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048)); + CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048)); + CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048)); + CCTK_REAL_VEC const p1odx2 = INV(SQR(dx)); + CCTK_REAL_VEC const p1ody2 = INV(SQR(dy)); + CCTK_REAL_VEC const p1odz2 = INV(SQR(dz)); + CCTK_REAL_VEC const pm1o12dx2 = kmul(INV(SQR(dx)),ToReal(-0.0833333333333333333333333333333)); + CCTK_REAL_VEC const pm1o12dy2 = kmul(INV(SQR(dy)),ToReal(-0.0833333333333333333333333333333)); + CCTK_REAL_VEC const pm1o12dz2 = kmul(INV(SQR(dz)),ToReal(-0.0833333333333333333333333333333)); + + /* Jacobian variable pointers */ + bool const use_jacobian = (!CCTK_IsFunctionAliased("MultiPatch_GetMap") || MultiPatch_GetMap(cctkGH) != jacobian_identity_map) + && strlen(jacobian_group) > 0; + if (use_jacobian && strlen(jacobian_derivative_group) == 0) + { + CCTK_WARN (1, "GenericFD::jacobian_group and GenericFD::jacobian_derivative_group must both be set to valid group names"); + } + + CCTK_REAL const *restrict jacobian_ptrs[9]; + if (use_jacobian) GenericFD_GroupDataPointers(cctkGH, jacobian_group, + 9, jacobian_ptrs); + + CCTK_REAL const *restrict const J11 = use_jacobian ? jacobian_ptrs[0] : 0; + CCTK_REAL const *restrict const J12 = use_jacobian ? jacobian_ptrs[1] : 0; + CCTK_REAL const *restrict const J13 = use_jacobian ? jacobian_ptrs[2] : 0; + CCTK_REAL const *restrict const J21 = use_jacobian ? jacobian_ptrs[3] : 0; + CCTK_REAL const *restrict const J22 = use_jacobian ? jacobian_ptrs[4] : 0; + CCTK_REAL const *restrict const J23 = use_jacobian ? jacobian_ptrs[5] : 0; + CCTK_REAL const *restrict const J31 = use_jacobian ? jacobian_ptrs[6] : 0; + CCTK_REAL const *restrict const J32 = use_jacobian ? jacobian_ptrs[7] : 0; + CCTK_REAL const *restrict const J33 = use_jacobian ? jacobian_ptrs[8] : 0; + + CCTK_REAL const *restrict jacobian_derivative_ptrs[18]; + if (use_jacobian) GenericFD_GroupDataPointers(cctkGH, jacobian_derivative_group, + 18, jacobian_derivative_ptrs); + + CCTK_REAL const *restrict const dJ111 = use_jacobian ? jacobian_derivative_ptrs[0] : 0; + CCTK_REAL const *restrict const dJ112 = use_jacobian ? jacobian_derivative_ptrs[1] : 0; + CCTK_REAL const *restrict const dJ113 = use_jacobian ? jacobian_derivative_ptrs[2] : 0; + CCTK_REAL const *restrict const dJ122 = use_jacobian ? jacobian_derivative_ptrs[3] : 0; + CCTK_REAL const *restrict const dJ123 = use_jacobian ? jacobian_derivative_ptrs[4] : 0; + CCTK_REAL const *restrict const dJ133 = use_jacobian ? jacobian_derivative_ptrs[5] : 0; + CCTK_REAL const *restrict const dJ211 = use_jacobian ? jacobian_derivative_ptrs[6] : 0; + CCTK_REAL const *restrict const dJ212 = use_jacobian ? jacobian_derivative_ptrs[7] : 0; + CCTK_REAL const *restrict const dJ213 = use_jacobian ? jacobian_derivative_ptrs[8] : 0; + CCTK_REAL const *restrict const dJ222 = use_jacobian ? jacobian_derivative_ptrs[9] : 0; + CCTK_REAL const *restrict const dJ223 = use_jacobian ? jacobian_derivative_ptrs[10] : 0; + CCTK_REAL const *restrict const dJ233 = use_jacobian ? jacobian_derivative_ptrs[11] : 0; + CCTK_REAL const *restrict const dJ311 = use_jacobian ? jacobian_derivative_ptrs[12] : 0; + CCTK_REAL const *restrict const dJ312 = use_jacobian ? jacobian_derivative_ptrs[13] : 0; + CCTK_REAL const *restrict const dJ313 = use_jacobian ? jacobian_derivative_ptrs[14] : 0; + CCTK_REAL const *restrict const dJ322 = use_jacobian ? jacobian_derivative_ptrs[15] : 0; + CCTK_REAL const *restrict const dJ323 = use_jacobian ? jacobian_derivative_ptrs[16] : 0; + CCTK_REAL const *restrict const dJ333 = use_jacobian ? jacobian_derivative_ptrs[17] : 0; /* Loop over the grid points */ #pragma omp parallel - LC_LOOP3 (ML_ADM_constraints, + LC_LOOP3VEC (ML_ADM_constraints, i,j,k, min[0],min[1],min[2], max[0],max[1],max[2], - cctk_lsh[0],cctk_lsh[1],cctk_lsh[2]) + cctk_lsh[0],cctk_lsh[1],cctk_lsh[2], + CCTK_REAL_VEC_SIZE) { ptrdiff_t const index = di*i + dj*j + dk*k; /* Assign local copies of grid functions */ - CCTK_REAL g11L = g11[index]; - CCTK_REAL g12L = g12[index]; - CCTK_REAL g13L = g13[index]; - CCTK_REAL g22L = g22[index]; - CCTK_REAL g23L = g23[index]; - CCTK_REAL g33L = g33[index]; - CCTK_REAL K11L = K11[index]; - CCTK_REAL K12L = K12[index]; - CCTK_REAL K13L = K13[index]; - CCTK_REAL K22L = K22[index]; - CCTK_REAL K23L = K23[index]; - CCTK_REAL K33L = K33[index]; + CCTK_REAL_VEC g11L = vec_load(g11[index]); + CCTK_REAL_VEC g12L = vec_load(g12[index]); + CCTK_REAL_VEC g13L = vec_load(g13[index]); + CCTK_REAL_VEC g22L = vec_load(g22[index]); + CCTK_REAL_VEC g23L = vec_load(g23[index]); + CCTK_REAL_VEC g33L = vec_load(g33[index]); + CCTK_REAL_VEC K11L = vec_load(K11[index]); + CCTK_REAL_VEC K12L = vec_load(K12[index]); + CCTK_REAL_VEC K13L = vec_load(K13[index]); + CCTK_REAL_VEC K22L = vec_load(K22[index]); + CCTK_REAL_VEC K23L = vec_load(K23[index]); + CCTK_REAL_VEC K33L = vec_load(K33[index]); + CCTK_REAL_VEC dJ111L, dJ112L, dJ113L, dJ122L, dJ123L, dJ133L, dJ211L, dJ212L, dJ213L, dJ222L, dJ223L, dJ233L, dJ311L, dJ312L, dJ313L, dJ322L, dJ323L, dJ333L, J11L, J12L, J13L, J21L, J22L, J23L, J31L, J32L, J33L; + + if (use_jacobian) + { + dJ111L = vec_load(dJ111[index]); + dJ112L = vec_load(dJ112[index]); + dJ113L = vec_load(dJ113[index]); + dJ122L = vec_load(dJ122[index]); + dJ123L = vec_load(dJ123[index]); + dJ133L = vec_load(dJ133[index]); + dJ211L = vec_load(dJ211[index]); + dJ212L = vec_load(dJ212[index]); + dJ213L = vec_load(dJ213[index]); + dJ222L = vec_load(dJ222[index]); + dJ223L = vec_load(dJ223[index]); + dJ233L = vec_load(dJ233[index]); + dJ311L = vec_load(dJ311[index]); + dJ312L = vec_load(dJ312[index]); + dJ313L = vec_load(dJ313[index]); + dJ322L = vec_load(dJ322[index]); + dJ323L = vec_load(dJ323[index]); + dJ333L = vec_load(dJ333[index]); + J11L = vec_load(J11[index]); + J12L = vec_load(J12[index]); + J13L = vec_load(J13[index]); + J21L = vec_load(J21[index]); + J22L = vec_load(J22[index]); + J23L = vec_load(J23[index]); + J31L = vec_load(J31[index]); + J32L = vec_load(J32[index]); + J33L = vec_load(J33[index]); + } + /* Include user supplied include files */ /* Precompute derivatives */ - CCTK_REAL const PDstandardNth1g11 = PDstandardNth1(&g11[index]); - CCTK_REAL const PDstandardNth2g11 = PDstandardNth2(&g11[index]); - CCTK_REAL const PDstandardNth3g11 = PDstandardNth3(&g11[index]); - CCTK_REAL const PDstandardNth22g11 = PDstandardNth22(&g11[index]); - CCTK_REAL const PDstandardNth33g11 = PDstandardNth33(&g11[index]); - CCTK_REAL const PDstandardNth23g11 = PDstandardNth23(&g11[index]); - CCTK_REAL const PDstandardNth1g12 = PDstandardNth1(&g12[index]); - CCTK_REAL const PDstandardNth2g12 = PDstandardNth2(&g12[index]); - CCTK_REAL const PDstandardNth3g12 = PDstandardNth3(&g12[index]); - CCTK_REAL const PDstandardNth33g12 = PDstandardNth33(&g12[index]); - CCTK_REAL const PDstandardNth12g12 = PDstandardNth12(&g12[index]); - CCTK_REAL const PDstandardNth13g12 = PDstandardNth13(&g12[index]); - CCTK_REAL const PDstandardNth23g12 = PDstandardNth23(&g12[index]); - CCTK_REAL const PDstandardNth1g13 = PDstandardNth1(&g13[index]); - CCTK_REAL const PDstandardNth2g13 = PDstandardNth2(&g13[index]); - CCTK_REAL const PDstandardNth3g13 = PDstandardNth3(&g13[index]); - CCTK_REAL const PDstandardNth22g13 = PDstandardNth22(&g13[index]); - CCTK_REAL const PDstandardNth12g13 = PDstandardNth12(&g13[index]); - CCTK_REAL const PDstandardNth13g13 = PDstandardNth13(&g13[index]); - CCTK_REAL const PDstandardNth23g13 = PDstandardNth23(&g13[index]); - CCTK_REAL const PDstandardNth1g22 = PDstandardNth1(&g22[index]); - CCTK_REAL const PDstandardNth2g22 = PDstandardNth2(&g22[index]); - CCTK_REAL const PDstandardNth3g22 = PDstandardNth3(&g22[index]); - CCTK_REAL const PDstandardNth11g22 = PDstandardNth11(&g22[index]); - CCTK_REAL const PDstandardNth33g22 = PDstandardNth33(&g22[index]); - CCTK_REAL const PDstandardNth13g22 = PDstandardNth13(&g22[index]); - CCTK_REAL const PDstandardNth1g23 = PDstandardNth1(&g23[index]); - CCTK_REAL const PDstandardNth2g23 = PDstandardNth2(&g23[index]); - CCTK_REAL const PDstandardNth3g23 = PDstandardNth3(&g23[index]); - CCTK_REAL const PDstandardNth11g23 = PDstandardNth11(&g23[index]); - CCTK_REAL const PDstandardNth12g23 = PDstandardNth12(&g23[index]); - CCTK_REAL const PDstandardNth13g23 = PDstandardNth13(&g23[index]); - CCTK_REAL const PDstandardNth23g23 = PDstandardNth23(&g23[index]); - CCTK_REAL const PDstandardNth1g33 = PDstandardNth1(&g33[index]); - CCTK_REAL const PDstandardNth2g33 = PDstandardNth2(&g33[index]); - CCTK_REAL const PDstandardNth3g33 = PDstandardNth3(&g33[index]); - CCTK_REAL const PDstandardNth11g33 = PDstandardNth11(&g33[index]); - CCTK_REAL const PDstandardNth22g33 = PDstandardNth22(&g33[index]); - CCTK_REAL const PDstandardNth12g33 = PDstandardNth12(&g33[index]); - CCTK_REAL const PDstandardNth2K11 = PDstandardNth2(&K11[index]); - CCTK_REAL const PDstandardNth3K11 = PDstandardNth3(&K11[index]); - CCTK_REAL const PDstandardNth1K12 = PDstandardNth1(&K12[index]); - CCTK_REAL const PDstandardNth2K12 = PDstandardNth2(&K12[index]); - CCTK_REAL const PDstandardNth3K12 = PDstandardNth3(&K12[index]); - CCTK_REAL const PDstandardNth1K13 = PDstandardNth1(&K13[index]); - CCTK_REAL const PDstandardNth2K13 = PDstandardNth2(&K13[index]); - CCTK_REAL const PDstandardNth3K13 = PDstandardNth3(&K13[index]); - CCTK_REAL const PDstandardNth1K22 = PDstandardNth1(&K22[index]); - CCTK_REAL const PDstandardNth3K22 = PDstandardNth3(&K22[index]); - CCTK_REAL const PDstandardNth1K23 = PDstandardNth1(&K23[index]); - CCTK_REAL const PDstandardNth2K23 = PDstandardNth2(&K23[index]); - CCTK_REAL const PDstandardNth3K23 = PDstandardNth3(&K23[index]); - CCTK_REAL const PDstandardNth1K33 = PDstandardNth1(&K33[index]); - CCTK_REAL const PDstandardNth2K33 = PDstandardNth2(&K33[index]); + CCTK_REAL_VEC PDstandardNth1g11; + CCTK_REAL_VEC PDstandardNth2g11; + CCTK_REAL_VEC PDstandardNth3g11; + CCTK_REAL_VEC PDstandardNth11g11; + CCTK_REAL_VEC PDstandardNth22g11; + CCTK_REAL_VEC PDstandardNth33g11; + CCTK_REAL_VEC PDstandardNth12g11; + CCTK_REAL_VEC PDstandardNth13g11; + CCTK_REAL_VEC PDstandardNth23g11; + CCTK_REAL_VEC PDstandardNth1g12; + CCTK_REAL_VEC PDstandardNth2g12; + CCTK_REAL_VEC PDstandardNth3g12; + CCTK_REAL_VEC PDstandardNth11g12; + CCTK_REAL_VEC PDstandardNth22g12; + CCTK_REAL_VEC PDstandardNth33g12; + CCTK_REAL_VEC PDstandardNth12g12; + CCTK_REAL_VEC PDstandardNth13g12; + CCTK_REAL_VEC PDstandardNth23g12; + CCTK_REAL_VEC PDstandardNth1g13; + CCTK_REAL_VEC PDstandardNth2g13; + CCTK_REAL_VEC PDstandardNth3g13; + CCTK_REAL_VEC PDstandardNth11g13; + CCTK_REAL_VEC PDstandardNth22g13; + CCTK_REAL_VEC PDstandardNth33g13; + CCTK_REAL_VEC PDstandardNth12g13; + CCTK_REAL_VEC PDstandardNth13g13; + CCTK_REAL_VEC PDstandardNth23g13; + CCTK_REAL_VEC PDstandardNth1g22; + CCTK_REAL_VEC PDstandardNth2g22; + CCTK_REAL_VEC PDstandardNth3g22; + CCTK_REAL_VEC PDstandardNth11g22; + CCTK_REAL_VEC PDstandardNth22g22; + CCTK_REAL_VEC PDstandardNth33g22; + CCTK_REAL_VEC PDstandardNth12g22; + CCTK_REAL_VEC PDstandardNth13g22; + CCTK_REAL_VEC PDstandardNth23g22; + CCTK_REAL_VEC PDstandardNth1g23; + CCTK_REAL_VEC PDstandardNth2g23; + CCTK_REAL_VEC PDstandardNth3g23; + CCTK_REAL_VEC PDstandardNth11g23; + CCTK_REAL_VEC PDstandardNth22g23; + CCTK_REAL_VEC PDstandardNth33g23; + CCTK_REAL_VEC PDstandardNth12g23; + CCTK_REAL_VEC PDstandardNth13g23; + CCTK_REAL_VEC PDstandardNth23g23; + CCTK_REAL_VEC PDstandardNth1g33; + CCTK_REAL_VEC PDstandardNth2g33; + CCTK_REAL_VEC PDstandardNth3g33; + CCTK_REAL_VEC PDstandardNth11g33; + CCTK_REAL_VEC PDstandardNth22g33; + CCTK_REAL_VEC PDstandardNth33g33; + CCTK_REAL_VEC PDstandardNth12g33; + CCTK_REAL_VEC PDstandardNth13g33; + CCTK_REAL_VEC PDstandardNth23g33; + CCTK_REAL_VEC PDstandardNth1K11; + CCTK_REAL_VEC PDstandardNth2K11; + CCTK_REAL_VEC PDstandardNth3K11; + CCTK_REAL_VEC PDstandardNth1K12; + CCTK_REAL_VEC PDstandardNth2K12; + CCTK_REAL_VEC PDstandardNth3K12; + CCTK_REAL_VEC PDstandardNth1K13; + CCTK_REAL_VEC PDstandardNth2K13; + CCTK_REAL_VEC PDstandardNth3K13; + CCTK_REAL_VEC PDstandardNth1K22; + CCTK_REAL_VEC PDstandardNth2K22; + CCTK_REAL_VEC PDstandardNth3K22; + CCTK_REAL_VEC PDstandardNth1K23; + CCTK_REAL_VEC PDstandardNth2K23; + CCTK_REAL_VEC PDstandardNth3K23; + CCTK_REAL_VEC PDstandardNth1K33; + CCTK_REAL_VEC PDstandardNth2K33; + CCTK_REAL_VEC PDstandardNth3K33; + + switch(fdOrder) + { + case 2: + PDstandardNth1g11 = PDstandardNthfdOrder21(&g11[index]); + PDstandardNth2g11 = PDstandardNthfdOrder22(&g11[index]); + PDstandardNth3g11 = PDstandardNthfdOrder23(&g11[index]); + PDstandardNth11g11 = PDstandardNthfdOrder211(&g11[index]); + PDstandardNth22g11 = PDstandardNthfdOrder222(&g11[index]); + PDstandardNth33g11 = PDstandardNthfdOrder233(&g11[index]); + PDstandardNth12g11 = PDstandardNthfdOrder212(&g11[index]); + PDstandardNth13g11 = PDstandardNthfdOrder213(&g11[index]); + PDstandardNth23g11 = PDstandardNthfdOrder223(&g11[index]); + PDstandardNth1g12 = PDstandardNthfdOrder21(&g12[index]); + PDstandardNth2g12 = PDstandardNthfdOrder22(&g12[index]); + PDstandardNth3g12 = PDstandardNthfdOrder23(&g12[index]); + PDstandardNth11g12 = PDstandardNthfdOrder211(&g12[index]); + PDstandardNth22g12 = PDstandardNthfdOrder222(&g12[index]); + PDstandardNth33g12 = PDstandardNthfdOrder233(&g12[index]); + PDstandardNth12g12 = PDstandardNthfdOrder212(&g12[index]); + PDstandardNth13g12 = PDstandardNthfdOrder213(&g12[index]); + PDstandardNth23g12 = PDstandardNthfdOrder223(&g12[index]); + PDstandardNth1g13 = PDstandardNthfdOrder21(&g13[index]); + PDstandardNth2g13 = PDstandardNthfdOrder22(&g13[index]); + PDstandardNth3g13 = PDstandardNthfdOrder23(&g13[index]); + PDstandardNth11g13 = PDstandardNthfdOrder211(&g13[index]); + PDstandardNth22g13 = PDstandardNthfdOrder222(&g13[index]); + PDstandardNth33g13 = PDstandardNthfdOrder233(&g13[index]); + PDstandardNth12g13 = PDstandardNthfdOrder212(&g13[index]); + PDstandardNth13g13 = PDstandardNthfdOrder213(&g13[index]); + PDstandardNth23g13 = PDstandardNthfdOrder223(&g13[index]); + PDstandardNth1g22 = PDstandardNthfdOrder21(&g22[index]); + PDstandardNth2g22 = PDstandardNthfdOrder22(&g22[index]); + PDstandardNth3g22 = PDstandardNthfdOrder23(&g22[index]); + PDstandardNth11g22 = PDstandardNthfdOrder211(&g22[index]); + PDstandardNth22g22 = PDstandardNthfdOrder222(&g22[index]); + PDstandardNth33g22 = PDstandardNthfdOrder233(&g22[index]); + PDstandardNth12g22 = PDstandardNthfdOrder212(&g22[index]); + PDstandardNth13g22 = PDstandardNthfdOrder213(&g22[index]); + PDstandardNth23g22 = PDstandardNthfdOrder223(&g22[index]); + PDstandardNth1g23 = PDstandardNthfdOrder21(&g23[index]); + PDstandardNth2g23 = PDstandardNthfdOrder22(&g23[index]); + PDstandardNth3g23 = PDstandardNthfdOrder23(&g23[index]); + PDstandardNth11g23 = PDstandardNthfdOrder211(&g23[index]); + PDstandardNth22g23 = PDstandardNthfdOrder222(&g23[index]); + PDstandardNth33g23 = PDstandardNthfdOrder233(&g23[index]); + PDstandardNth12g23 = PDstandardNthfdOrder212(&g23[index]); + PDstandardNth13g23 = PDstandardNthfdOrder213(&g23[index]); + PDstandardNth23g23 = PDstandardNthfdOrder223(&g23[index]); + PDstandardNth1g33 = PDstandardNthfdOrder21(&g33[index]); + PDstandardNth2g33 = PDstandardNthfdOrder22(&g33[index]); + PDstandardNth3g33 = PDstandardNthfdOrder23(&g33[index]); + PDstandardNth11g33 = PDstandardNthfdOrder211(&g33[index]); + PDstandardNth22g33 = PDstandardNthfdOrder222(&g33[index]); + PDstandardNth33g33 = PDstandardNthfdOrder233(&g33[index]); + PDstandardNth12g33 = PDstandardNthfdOrder212(&g33[index]); + PDstandardNth13g33 = PDstandardNthfdOrder213(&g33[index]); + PDstandardNth23g33 = PDstandardNthfdOrder223(&g33[index]); + PDstandardNth1K11 = PDstandardNthfdOrder21(&K11[index]); + PDstandardNth2K11 = PDstandardNthfdOrder22(&K11[index]); + PDstandardNth3K11 = PDstandardNthfdOrder23(&K11[index]); + PDstandardNth1K12 = PDstandardNthfdOrder21(&K12[index]); + PDstandardNth2K12 = PDstandardNthfdOrder22(&K12[index]); + PDstandardNth3K12 = PDstandardNthfdOrder23(&K12[index]); + PDstandardNth1K13 = PDstandardNthfdOrder21(&K13[index]); + PDstandardNth2K13 = PDstandardNthfdOrder22(&K13[index]); + PDstandardNth3K13 = PDstandardNthfdOrder23(&K13[index]); + PDstandardNth1K22 = PDstandardNthfdOrder21(&K22[index]); + PDstandardNth2K22 = PDstandardNthfdOrder22(&K22[index]); + PDstandardNth3K22 = PDstandardNthfdOrder23(&K22[index]); + PDstandardNth1K23 = PDstandardNthfdOrder21(&K23[index]); + PDstandardNth2K23 = PDstandardNthfdOrder22(&K23[index]); + PDstandardNth3K23 = PDstandardNthfdOrder23(&K23[index]); + PDstandardNth1K33 = PDstandardNthfdOrder21(&K33[index]); + PDstandardNth2K33 = PDstandardNthfdOrder22(&K33[index]); + PDstandardNth3K33 = PDstandardNthfdOrder23(&K33[index]); + break; + + case 4: + PDstandardNth1g11 = PDstandardNthfdOrder41(&g11[index]); + PDstandardNth2g11 = PDstandardNthfdOrder42(&g11[index]); + PDstandardNth3g11 = PDstandardNthfdOrder43(&g11[index]); + PDstandardNth11g11 = PDstandardNthfdOrder411(&g11[index]); + PDstandardNth22g11 = PDstandardNthfdOrder422(&g11[index]); + PDstandardNth33g11 = PDstandardNthfdOrder433(&g11[index]); + PDstandardNth12g11 = PDstandardNthfdOrder412(&g11[index]); + PDstandardNth13g11 = PDstandardNthfdOrder413(&g11[index]); + PDstandardNth23g11 = PDstandardNthfdOrder423(&g11[index]); + PDstandardNth1g12 = PDstandardNthfdOrder41(&g12[index]); + PDstandardNth2g12 = PDstandardNthfdOrder42(&g12[index]); + PDstandardNth3g12 = PDstandardNthfdOrder43(&g12[index]); + PDstandardNth11g12 = PDstandardNthfdOrder411(&g12[index]); + PDstandardNth22g12 = PDstandardNthfdOrder422(&g12[index]); + PDstandardNth33g12 = PDstandardNthfdOrder433(&g12[index]); + PDstandardNth12g12 = PDstandardNthfdOrder412(&g12[index]); + PDstandardNth13g12 = PDstandardNthfdOrder413(&g12[index]); + PDstandardNth23g12 = PDstandardNthfdOrder423(&g12[index]); + PDstandardNth1g13 = PDstandardNthfdOrder41(&g13[index]); + PDstandardNth2g13 = PDstandardNthfdOrder42(&g13[index]); + PDstandardNth3g13 = PDstandardNthfdOrder43(&g13[index]); + PDstandardNth11g13 = PDstandardNthfdOrder411(&g13[index]); + PDstandardNth22g13 = PDstandardNthfdOrder422(&g13[index]); + PDstandardNth33g13 = PDstandardNthfdOrder433(&g13[index]); + PDstandardNth12g13 = PDstandardNthfdOrder412(&g13[index]); + PDstandardNth13g13 = PDstandardNthfdOrder413(&g13[index]); + PDstandardNth23g13 = PDstandardNthfdOrder423(&g13[index]); + PDstandardNth1g22 = PDstandardNthfdOrder41(&g22[index]); + PDstandardNth2g22 = PDstandardNthfdOrder42(&g22[index]); + PDstandardNth3g22 = PDstandardNthfdOrder43(&g22[index]); + PDstandardNth11g22 = PDstandardNthfdOrder411(&g22[index]); + PDstandardNth22g22 = PDstandardNthfdOrder422(&g22[index]); + PDstandardNth33g22 = PDstandardNthfdOrder433(&g22[index]); + PDstandardNth12g22 = PDstandardNthfdOrder412(&g22[index]); + PDstandardNth13g22 = PDstandardNthfdOrder413(&g22[index]); + PDstandardNth23g22 = PDstandardNthfdOrder423(&g22[index]); + PDstandardNth1g23 = PDstandardNthfdOrder41(&g23[index]); + PDstandardNth2g23 = PDstandardNthfdOrder42(&g23[index]); + PDstandardNth3g23 = PDstandardNthfdOrder43(&g23[index]); + PDstandardNth11g23 = PDstandardNthfdOrder411(&g23[index]); + PDstandardNth22g23 = PDstandardNthfdOrder422(&g23[index]); + PDstandardNth33g23 = PDstandardNthfdOrder433(&g23[index]); + PDstandardNth12g23 = PDstandardNthfdOrder412(&g23[index]); + PDstandardNth13g23 = PDstandardNthfdOrder413(&g23[index]); + PDstandardNth23g23 = PDstandardNthfdOrder423(&g23[index]); + PDstandardNth1g33 = PDstandardNthfdOrder41(&g33[index]); + PDstandardNth2g33 = PDstandardNthfdOrder42(&g33[index]); + PDstandardNth3g33 = PDstandardNthfdOrder43(&g33[index]); + PDstandardNth11g33 = PDstandardNthfdOrder411(&g33[index]); + PDstandardNth22g33 = PDstandardNthfdOrder422(&g33[index]); + PDstandardNth33g33 = PDstandardNthfdOrder433(&g33[index]); + PDstandardNth12g33 = PDstandardNthfdOrder412(&g33[index]); + PDstandardNth13g33 = PDstandardNthfdOrder413(&g33[index]); + PDstandardNth23g33 = PDstandardNthfdOrder423(&g33[index]); + PDstandardNth1K11 = PDstandardNthfdOrder41(&K11[index]); + PDstandardNth2K11 = PDstandardNthfdOrder42(&K11[index]); + PDstandardNth3K11 = PDstandardNthfdOrder43(&K11[index]); + PDstandardNth1K12 = PDstandardNthfdOrder41(&K12[index]); + PDstandardNth2K12 = PDstandardNthfdOrder42(&K12[index]); + PDstandardNth3K12 = PDstandardNthfdOrder43(&K12[index]); + PDstandardNth1K13 = PDstandardNthfdOrder41(&K13[index]); + PDstandardNth2K13 = PDstandardNthfdOrder42(&K13[index]); + PDstandardNth3K13 = PDstandardNthfdOrder43(&K13[index]); + PDstandardNth1K22 = PDstandardNthfdOrder41(&K22[index]); + PDstandardNth2K22 = PDstandardNthfdOrder42(&K22[index]); + PDstandardNth3K22 = PDstandardNthfdOrder43(&K22[index]); + PDstandardNth1K23 = PDstandardNthfdOrder41(&K23[index]); + PDstandardNth2K23 = PDstandardNthfdOrder42(&K23[index]); + PDstandardNth3K23 = PDstandardNthfdOrder43(&K23[index]); + PDstandardNth1K33 = PDstandardNthfdOrder41(&K33[index]); + PDstandardNth2K33 = PDstandardNthfdOrder42(&K33[index]); + PDstandardNth3K33 = PDstandardNthfdOrder43(&K33[index]); + break; + + case 6: + PDstandardNth1g11 = PDstandardNthfdOrder61(&g11[index]); + PDstandardNth2g11 = PDstandardNthfdOrder62(&g11[index]); + PDstandardNth3g11 = PDstandardNthfdOrder63(&g11[index]); + PDstandardNth11g11 = PDstandardNthfdOrder611(&g11[index]); + PDstandardNth22g11 = PDstandardNthfdOrder622(&g11[index]); + PDstandardNth33g11 = PDstandardNthfdOrder633(&g11[index]); + PDstandardNth12g11 = PDstandardNthfdOrder612(&g11[index]); + PDstandardNth13g11 = PDstandardNthfdOrder613(&g11[index]); + PDstandardNth23g11 = PDstandardNthfdOrder623(&g11[index]); + PDstandardNth1g12 = PDstandardNthfdOrder61(&g12[index]); + PDstandardNth2g12 = PDstandardNthfdOrder62(&g12[index]); + PDstandardNth3g12 = PDstandardNthfdOrder63(&g12[index]); + PDstandardNth11g12 = PDstandardNthfdOrder611(&g12[index]); + PDstandardNth22g12 = PDstandardNthfdOrder622(&g12[index]); + PDstandardNth33g12 = PDstandardNthfdOrder633(&g12[index]); + PDstandardNth12g12 = PDstandardNthfdOrder612(&g12[index]); + PDstandardNth13g12 = PDstandardNthfdOrder613(&g12[index]); + PDstandardNth23g12 = PDstandardNthfdOrder623(&g12[index]); + PDstandardNth1g13 = PDstandardNthfdOrder61(&g13[index]); + PDstandardNth2g13 = PDstandardNthfdOrder62(&g13[index]); + PDstandardNth3g13 = PDstandardNthfdOrder63(&g13[index]); + PDstandardNth11g13 = PDstandardNthfdOrder611(&g13[index]); + PDstandardNth22g13 = PDstandardNthfdOrder622(&g13[index]); + PDstandardNth33g13 = PDstandardNthfdOrder633(&g13[index]); + PDstandardNth12g13 = PDstandardNthfdOrder612(&g13[index]); + PDstandardNth13g13 = PDstandardNthfdOrder613(&g13[index]); + PDstandardNth23g13 = PDstandardNthfdOrder623(&g13[index]); + PDstandardNth1g22 = PDstandardNthfdOrder61(&g22[index]); + PDstandardNth2g22 = PDstandardNthfdOrder62(&g22[index]); + PDstandardNth3g22 = PDstandardNthfdOrder63(&g22[index]); + PDstandardNth11g22 = PDstandardNthfdOrder611(&g22[index]); + PDstandardNth22g22 = PDstandardNthfdOrder622(&g22[index]); + PDstandardNth33g22 = PDstandardNthfdOrder633(&g22[index]); + PDstandardNth12g22 = PDstandardNthfdOrder612(&g22[index]); + PDstandardNth13g22 = PDstandardNthfdOrder613(&g22[index]); + PDstandardNth23g22 = PDstandardNthfdOrder623(&g22[index]); + PDstandardNth1g23 = PDstandardNthfdOrder61(&g23[index]); + PDstandardNth2g23 = PDstandardNthfdOrder62(&g23[index]); + PDstandardNth3g23 = PDstandardNthfdOrder63(&g23[index]); + PDstandardNth11g23 = PDstandardNthfdOrder611(&g23[index]); + PDstandardNth22g23 = PDstandardNthfdOrder622(&g23[index]); + PDstandardNth33g23 = PDstandardNthfdOrder633(&g23[index]); + PDstandardNth12g23 = PDstandardNthfdOrder612(&g23[index]); + PDstandardNth13g23 = PDstandardNthfdOrder613(&g23[index]); + PDstandardNth23g23 = PDstandardNthfdOrder623(&g23[index]); + PDstandardNth1g33 = PDstandardNthfdOrder61(&g33[index]); + PDstandardNth2g33 = PDstandardNthfdOrder62(&g33[index]); + PDstandardNth3g33 = PDstandardNthfdOrder63(&g33[index]); + PDstandardNth11g33 = PDstandardNthfdOrder611(&g33[index]); + PDstandardNth22g33 = PDstandardNthfdOrder622(&g33[index]); + PDstandardNth33g33 = PDstandardNthfdOrder633(&g33[index]); + PDstandardNth12g33 = PDstandardNthfdOrder612(&g33[index]); + PDstandardNth13g33 = PDstandardNthfdOrder613(&g33[index]); + PDstandardNth23g33 = PDstandardNthfdOrder623(&g33[index]); + PDstandardNth1K11 = PDstandardNthfdOrder61(&K11[index]); + PDstandardNth2K11 = PDstandardNthfdOrder62(&K11[index]); + PDstandardNth3K11 = PDstandardNthfdOrder63(&K11[index]); + PDstandardNth1K12 = PDstandardNthfdOrder61(&K12[index]); + PDstandardNth2K12 = PDstandardNthfdOrder62(&K12[index]); + PDstandardNth3K12 = PDstandardNthfdOrder63(&K12[index]); + PDstandardNth1K13 = PDstandardNthfdOrder61(&K13[index]); + PDstandardNth2K13 = PDstandardNthfdOrder62(&K13[index]); + PDstandardNth3K13 = PDstandardNthfdOrder63(&K13[index]); + PDstandardNth1K22 = PDstandardNthfdOrder61(&K22[index]); + PDstandardNth2K22 = PDstandardNthfdOrder62(&K22[index]); + PDstandardNth3K22 = PDstandardNthfdOrder63(&K22[index]); + PDstandardNth1K23 = PDstandardNthfdOrder61(&K23[index]); + PDstandardNth2K23 = PDstandardNthfdOrder62(&K23[index]); + PDstandardNth3K23 = PDstandardNthfdOrder63(&K23[index]); + PDstandardNth1K33 = PDstandardNthfdOrder61(&K33[index]); + PDstandardNth2K33 = PDstandardNthfdOrder62(&K33[index]); + PDstandardNth3K33 = PDstandardNthfdOrder63(&K33[index]); + break; + + case 8: + PDstandardNth1g11 = PDstandardNthfdOrder81(&g11[index]); + PDstandardNth2g11 = PDstandardNthfdOrder82(&g11[index]); + PDstandardNth3g11 = PDstandardNthfdOrder83(&g11[index]); + PDstandardNth11g11 = PDstandardNthfdOrder811(&g11[index]); + PDstandardNth22g11 = PDstandardNthfdOrder822(&g11[index]); + PDstandardNth33g11 = PDstandardNthfdOrder833(&g11[index]); + PDstandardNth12g11 = PDstandardNthfdOrder812(&g11[index]); + PDstandardNth13g11 = PDstandardNthfdOrder813(&g11[index]); + PDstandardNth23g11 = PDstandardNthfdOrder823(&g11[index]); + PDstandardNth1g12 = PDstandardNthfdOrder81(&g12[index]); + PDstandardNth2g12 = PDstandardNthfdOrder82(&g12[index]); + PDstandardNth3g12 = PDstandardNthfdOrder83(&g12[index]); + PDstandardNth11g12 = PDstandardNthfdOrder811(&g12[index]); + PDstandardNth22g12 = PDstandardNthfdOrder822(&g12[index]); + PDstandardNth33g12 = PDstandardNthfdOrder833(&g12[index]); + PDstandardNth12g12 = PDstandardNthfdOrder812(&g12[index]); + PDstandardNth13g12 = PDstandardNthfdOrder813(&g12[index]); + PDstandardNth23g12 = PDstandardNthfdOrder823(&g12[index]); + PDstandardNth1g13 = PDstandardNthfdOrder81(&g13[index]); + PDstandardNth2g13 = PDstandardNthfdOrder82(&g13[index]); + PDstandardNth3g13 = PDstandardNthfdOrder83(&g13[index]); + PDstandardNth11g13 = PDstandardNthfdOrder811(&g13[index]); + PDstandardNth22g13 = PDstandardNthfdOrder822(&g13[index]); + PDstandardNth33g13 = PDstandardNthfdOrder833(&g13[index]); + PDstandardNth12g13 = PDstandardNthfdOrder812(&g13[index]); + PDstandardNth13g13 = PDstandardNthfdOrder813(&g13[index]); + PDstandardNth23g13 = PDstandardNthfdOrder823(&g13[index]); + PDstandardNth1g22 = PDstandardNthfdOrder81(&g22[index]); + PDstandardNth2g22 = PDstandardNthfdOrder82(&g22[index]); + PDstandardNth3g22 = PDstandardNthfdOrder83(&g22[index]); + PDstandardNth11g22 = PDstandardNthfdOrder811(&g22[index]); + PDstandardNth22g22 = PDstandardNthfdOrder822(&g22[index]); + PDstandardNth33g22 = PDstandardNthfdOrder833(&g22[index]); + PDstandardNth12g22 = PDstandardNthfdOrder812(&g22[index]); + PDstandardNth13g22 = PDstandardNthfdOrder813(&g22[index]); + PDstandardNth23g22 = PDstandardNthfdOrder823(&g22[index]); + PDstandardNth1g23 = PDstandardNthfdOrder81(&g23[index]); + PDstandardNth2g23 = PDstandardNthfdOrder82(&g23[index]); + PDstandardNth3g23 = PDstandardNthfdOrder83(&g23[index]); + PDstandardNth11g23 = PDstandardNthfdOrder811(&g23[index]); + PDstandardNth22g23 = PDstandardNthfdOrder822(&g23[index]); + PDstandardNth33g23 = PDstandardNthfdOrder833(&g23[index]); + PDstandardNth12g23 = PDstandardNthfdOrder812(&g23[index]); + PDstandardNth13g23 = PDstandardNthfdOrder813(&g23[index]); + PDstandardNth23g23 = PDstandardNthfdOrder823(&g23[index]); + PDstandardNth1g33 = PDstandardNthfdOrder81(&g33[index]); + PDstandardNth2g33 = PDstandardNthfdOrder82(&g33[index]); + PDstandardNth3g33 = PDstandardNthfdOrder83(&g33[index]); + PDstandardNth11g33 = PDstandardNthfdOrder811(&g33[index]); + PDstandardNth22g33 = PDstandardNthfdOrder822(&g33[index]); + PDstandardNth33g33 = PDstandardNthfdOrder833(&g33[index]); + PDstandardNth12g33 = PDstandardNthfdOrder812(&g33[index]); + PDstandardNth13g33 = PDstandardNthfdOrder813(&g33[index]); + PDstandardNth23g33 = PDstandardNthfdOrder823(&g33[index]); + PDstandardNth1K11 = PDstandardNthfdOrder81(&K11[index]); + PDstandardNth2K11 = PDstandardNthfdOrder82(&K11[index]); + PDstandardNth3K11 = PDstandardNthfdOrder83(&K11[index]); + PDstandardNth1K12 = PDstandardNthfdOrder81(&K12[index]); + PDstandardNth2K12 = PDstandardNthfdOrder82(&K12[index]); + PDstandardNth3K12 = PDstandardNthfdOrder83(&K12[index]); + PDstandardNth1K13 = PDstandardNthfdOrder81(&K13[index]); + PDstandardNth2K13 = PDstandardNthfdOrder82(&K13[index]); + PDstandardNth3K13 = PDstandardNthfdOrder83(&K13[index]); + PDstandardNth1K22 = PDstandardNthfdOrder81(&K22[index]); + PDstandardNth2K22 = PDstandardNthfdOrder82(&K22[index]); + PDstandardNth3K22 = PDstandardNthfdOrder83(&K22[index]); + PDstandardNth1K23 = PDstandardNthfdOrder81(&K23[index]); + PDstandardNth2K23 = PDstandardNthfdOrder82(&K23[index]); + PDstandardNth3K23 = PDstandardNthfdOrder83(&K23[index]); + PDstandardNth1K33 = PDstandardNthfdOrder81(&K33[index]); + PDstandardNth2K33 = PDstandardNthfdOrder82(&K33[index]); + PDstandardNth3K33 = PDstandardNthfdOrder83(&K33[index]); + break; + } /* Calculate temporaries and grid functions */ - CCTK_REAL detg = 2*g12L*g13L*g23L + g33L*(g11L*g22L - SQR(g12L)) - - g22L*SQR(g13L) - g11L*SQR(g23L); + CCTK_REAL_VEC JacPDstandardNth11g22; + CCTK_REAL_VEC JacPDstandardNth11g23; + CCTK_REAL_VEC JacPDstandardNth11g33; + CCTK_REAL_VEC JacPDstandardNth12g11; + CCTK_REAL_VEC JacPDstandardNth12g12; + CCTK_REAL_VEC JacPDstandardNth12g13; + CCTK_REAL_VEC JacPDstandardNth12g22; + CCTK_REAL_VEC JacPDstandardNth12g23; + CCTK_REAL_VEC JacPDstandardNth12g33; + CCTK_REAL_VEC JacPDstandardNth13g11; + CCTK_REAL_VEC JacPDstandardNth13g12; + CCTK_REAL_VEC JacPDstandardNth13g13; + CCTK_REAL_VEC JacPDstandardNth13g22; + CCTK_REAL_VEC JacPDstandardNth13g23; + CCTK_REAL_VEC JacPDstandardNth13g33; + CCTK_REAL_VEC JacPDstandardNth1g11; + CCTK_REAL_VEC JacPDstandardNth1g12; + CCTK_REAL_VEC JacPDstandardNth1g13; + CCTK_REAL_VEC JacPDstandardNth1g22; + CCTK_REAL_VEC JacPDstandardNth1g23; + CCTK_REAL_VEC JacPDstandardNth1g33; + CCTK_REAL_VEC JacPDstandardNth1K12; + CCTK_REAL_VEC JacPDstandardNth1K13; + CCTK_REAL_VEC JacPDstandardNth1K22; + CCTK_REAL_VEC JacPDstandardNth1K23; + CCTK_REAL_VEC JacPDstandardNth1K33; + CCTK_REAL_VEC JacPDstandardNth21g11; + CCTK_REAL_VEC JacPDstandardNth21g12; + CCTK_REAL_VEC JacPDstandardNth21g13; + CCTK_REAL_VEC JacPDstandardNth21g22; + CCTK_REAL_VEC JacPDstandardNth21g23; + CCTK_REAL_VEC JacPDstandardNth21g33; + CCTK_REAL_VEC JacPDstandardNth22g11; + CCTK_REAL_VEC JacPDstandardNth22g13; + CCTK_REAL_VEC JacPDstandardNth22g33; + CCTK_REAL_VEC JacPDstandardNth23g11; + CCTK_REAL_VEC JacPDstandardNth23g12; + CCTK_REAL_VEC JacPDstandardNth23g13; + CCTK_REAL_VEC JacPDstandardNth23g22; + CCTK_REAL_VEC JacPDstandardNth23g23; + CCTK_REAL_VEC JacPDstandardNth23g33; + CCTK_REAL_VEC JacPDstandardNth2g11; + CCTK_REAL_VEC JacPDstandardNth2g12; + CCTK_REAL_VEC JacPDstandardNth2g13; + CCTK_REAL_VEC JacPDstandardNth2g22; + CCTK_REAL_VEC JacPDstandardNth2g23; + CCTK_REAL_VEC JacPDstandardNth2g33; + CCTK_REAL_VEC JacPDstandardNth2K11; + CCTK_REAL_VEC JacPDstandardNth2K12; + CCTK_REAL_VEC JacPDstandardNth2K13; + CCTK_REAL_VEC JacPDstandardNth2K23; + CCTK_REAL_VEC JacPDstandardNth2K33; + CCTK_REAL_VEC JacPDstandardNth31g11; + CCTK_REAL_VEC JacPDstandardNth31g12; + CCTK_REAL_VEC JacPDstandardNth31g13; + CCTK_REAL_VEC JacPDstandardNth31g22; + CCTK_REAL_VEC JacPDstandardNth31g23; + CCTK_REAL_VEC JacPDstandardNth31g33; + CCTK_REAL_VEC JacPDstandardNth32g11; + CCTK_REAL_VEC JacPDstandardNth32g12; + CCTK_REAL_VEC JacPDstandardNth32g13; + CCTK_REAL_VEC JacPDstandardNth32g22; + CCTK_REAL_VEC JacPDstandardNth32g23; + CCTK_REAL_VEC JacPDstandardNth32g33; + CCTK_REAL_VEC JacPDstandardNth33g11; + CCTK_REAL_VEC JacPDstandardNth33g12; + CCTK_REAL_VEC JacPDstandardNth33g22; + CCTK_REAL_VEC JacPDstandardNth3g11; + CCTK_REAL_VEC JacPDstandardNth3g12; + CCTK_REAL_VEC JacPDstandardNth3g13; + CCTK_REAL_VEC JacPDstandardNth3g22; + CCTK_REAL_VEC JacPDstandardNth3g23; + CCTK_REAL_VEC JacPDstandardNth3g33; + CCTK_REAL_VEC JacPDstandardNth3K11; + CCTK_REAL_VEC JacPDstandardNth3K12; + CCTK_REAL_VEC JacPDstandardNth3K13; + CCTK_REAL_VEC JacPDstandardNth3K22; + CCTK_REAL_VEC JacPDstandardNth3K23; + + if (use_jacobian) + { + JacPDstandardNth1g11 = + kmadd(J11L,PDstandardNth1g11,kmadd(J21L,PDstandardNth2g11,kmul(J31L,PDstandardNth3g11))); + + JacPDstandardNth1g12 = + kmadd(J11L,PDstandardNth1g12,kmadd(J21L,PDstandardNth2g12,kmul(J31L,PDstandardNth3g12))); + + JacPDstandardNth1g13 = + kmadd(J11L,PDstandardNth1g13,kmadd(J21L,PDstandardNth2g13,kmul(J31L,PDstandardNth3g13))); + + JacPDstandardNth1g22 = + kmadd(J11L,PDstandardNth1g22,kmadd(J21L,PDstandardNth2g22,kmul(J31L,PDstandardNth3g22))); + + JacPDstandardNth1g23 = + kmadd(J11L,PDstandardNth1g23,kmadd(J21L,PDstandardNth2g23,kmul(J31L,PDstandardNth3g23))); + + JacPDstandardNth1g33 = + kmadd(J11L,PDstandardNth1g33,kmadd(J21L,PDstandardNth2g33,kmul(J31L,PDstandardNth3g33))); + + JacPDstandardNth1K12 = + kmadd(J11L,PDstandardNth1K12,kmadd(J21L,PDstandardNth2K12,kmul(J31L,PDstandardNth3K12))); + + JacPDstandardNth1K13 = + kmadd(J11L,PDstandardNth1K13,kmadd(J21L,PDstandardNth2K13,kmul(J31L,PDstandardNth3K13))); + + JacPDstandardNth1K22 = + kmadd(J11L,PDstandardNth1K22,kmadd(J21L,PDstandardNth2K22,kmul(J31L,PDstandardNth3K22))); + + JacPDstandardNth1K23 = + kmadd(J11L,PDstandardNth1K23,kmadd(J21L,PDstandardNth2K23,kmul(J31L,PDstandardNth3K23))); + + JacPDstandardNth1K33 = + kmadd(J11L,PDstandardNth1K33,kmadd(J21L,PDstandardNth2K33,kmul(J31L,PDstandardNth3K33))); + + JacPDstandardNth2g11 = + kmadd(J12L,PDstandardNth1g11,kmadd(J22L,PDstandardNth2g11,kmul(J32L,PDstandardNth3g11))); + + JacPDstandardNth2g12 = + kmadd(J12L,PDstandardNth1g12,kmadd(J22L,PDstandardNth2g12,kmul(J32L,PDstandardNth3g12))); + + JacPDstandardNth2g13 = + kmadd(J12L,PDstandardNth1g13,kmadd(J22L,PDstandardNth2g13,kmul(J32L,PDstandardNth3g13))); + + JacPDstandardNth2g22 = + kmadd(J12L,PDstandardNth1g22,kmadd(J22L,PDstandardNth2g22,kmul(J32L,PDstandardNth3g22))); + + JacPDstandardNth2g23 = + kmadd(J12L,PDstandardNth1g23,kmadd(J22L,PDstandardNth2g23,kmul(J32L,PDstandardNth3g23))); + + JacPDstandardNth2g33 = + kmadd(J12L,PDstandardNth1g33,kmadd(J22L,PDstandardNth2g33,kmul(J32L,PDstandardNth3g33))); + + JacPDstandardNth2K11 = + kmadd(J12L,PDstandardNth1K11,kmadd(J22L,PDstandardNth2K11,kmul(J32L,PDstandardNth3K11))); + + JacPDstandardNth2K12 = + kmadd(J12L,PDstandardNth1K12,kmadd(J22L,PDstandardNth2K12,kmul(J32L,PDstandardNth3K12))); + + JacPDstandardNth2K13 = + kmadd(J12L,PDstandardNth1K13,kmadd(J22L,PDstandardNth2K13,kmul(J32L,PDstandardNth3K13))); + + JacPDstandardNth2K23 = + kmadd(J12L,PDstandardNth1K23,kmadd(J22L,PDstandardNth2K23,kmul(J32L,PDstandardNth3K23))); + + JacPDstandardNth2K33 = + kmadd(J12L,PDstandardNth1K33,kmadd(J22L,PDstandardNth2K33,kmul(J32L,PDstandardNth3K33))); + + JacPDstandardNth3g11 = + kmadd(J13L,PDstandardNth1g11,kmadd(J23L,PDstandardNth2g11,kmul(J33L,PDstandardNth3g11))); + + JacPDstandardNth3g12 = + kmadd(J13L,PDstandardNth1g12,kmadd(J23L,PDstandardNth2g12,kmul(J33L,PDstandardNth3g12))); + + JacPDstandardNth3g13 = + kmadd(J13L,PDstandardNth1g13,kmadd(J23L,PDstandardNth2g13,kmul(J33L,PDstandardNth3g13))); + + JacPDstandardNth3g22 = + kmadd(J13L,PDstandardNth1g22,kmadd(J23L,PDstandardNth2g22,kmul(J33L,PDstandardNth3g22))); + + JacPDstandardNth3g23 = + kmadd(J13L,PDstandardNth1g23,kmadd(J23L,PDstandardNth2g23,kmul(J33L,PDstandardNth3g23))); + + JacPDstandardNth3g33 = + kmadd(J13L,PDstandardNth1g33,kmadd(J23L,PDstandardNth2g33,kmul(J33L,PDstandardNth3g33))); + + JacPDstandardNth3K11 = + kmadd(J13L,PDstandardNth1K11,kmadd(J23L,PDstandardNth2K11,kmul(J33L,PDstandardNth3K11))); + + JacPDstandardNth3K12 = + kmadd(J13L,PDstandardNth1K12,kmadd(J23L,PDstandardNth2K12,kmul(J33L,PDstandardNth3K12))); + + JacPDstandardNth3K13 = + kmadd(J13L,PDstandardNth1K13,kmadd(J23L,PDstandardNth2K13,kmul(J33L,PDstandardNth3K13))); + + JacPDstandardNth3K22 = + kmadd(J13L,PDstandardNth1K22,kmadd(J23L,PDstandardNth2K22,kmul(J33L,PDstandardNth3K22))); + + JacPDstandardNth3K23 = + kmadd(J13L,PDstandardNth1K23,kmadd(J23L,PDstandardNth2K23,kmul(J33L,PDstandardNth3K23))); + + JacPDstandardNth11g22 = + kmadd(dJ111L,PDstandardNth1g22,kmadd(dJ211L,PDstandardNth2g22,kmadd(dJ311L,PDstandardNth3g22,kmadd(PDstandardNth11g22,SQR(J11L),kmadd(PDstandardNth22g22,SQR(J21L),kmadd(PDstandardNth33g22,SQR(J31L),kmul(kmadd(J11L,kmadd(J21L,PDstandardNth12g22,kmul(J31L,PDstandardNth13g22)),kmul(J21L,kmul(J31L,PDstandardNth23g22))),ToReal(2)))))))); + + JacPDstandardNth11g23 = + kmadd(dJ111L,PDstandardNth1g23,kmadd(dJ211L,PDstandardNth2g23,kmadd(dJ311L,PDstandardNth3g23,kmadd(PDstandardNth11g23,SQR(J11L),kmadd(PDstandardNth22g23,SQR(J21L),kmadd(PDstandardNth33g23,SQR(J31L),kmul(kmadd(J11L,kmadd(J21L,PDstandardNth12g23,kmul(J31L,PDstandardNth13g23)),kmul(J21L,kmul(J31L,PDstandardNth23g23))),ToReal(2)))))))); + + JacPDstandardNth11g33 = + kmadd(dJ111L,PDstandardNth1g33,kmadd(dJ211L,PDstandardNth2g33,kmadd(dJ311L,PDstandardNth3g33,kmadd(PDstandardNth11g33,SQR(J11L),kmadd(PDstandardNth22g33,SQR(J21L),kmadd(PDstandardNth33g33,SQR(J31L),kmul(kmadd(J11L,kmadd(J21L,PDstandardNth12g33,kmul(J31L,PDstandardNth13g33)),kmul(J21L,kmul(J31L,PDstandardNth23g33))),ToReal(2)))))))); + + JacPDstandardNth22g11 = + kmadd(dJ122L,PDstandardNth1g11,kmadd(dJ222L,PDstandardNth2g11,kmadd(dJ322L,PDstandardNth3g11,kmadd(PDstandardNth11g11,SQR(J12L),kmadd(PDstandardNth22g11,SQR(J22L),kmadd(PDstandardNth33g11,SQR(J32L),kmul(kmadd(J12L,kmadd(J22L,PDstandardNth12g11,kmul(J32L,PDstandardNth13g11)),kmul(J22L,kmul(J32L,PDstandardNth23g11))),ToReal(2)))))))); + + JacPDstandardNth22g13 = + kmadd(dJ122L,PDstandardNth1g13,kmadd(dJ222L,PDstandardNth2g13,kmadd(dJ322L,PDstandardNth3g13,kmadd(PDstandardNth11g13,SQR(J12L),kmadd(PDstandardNth22g13,SQR(J22L),kmadd(PDstandardNth33g13,SQR(J32L),kmul(kmadd(J12L,kmadd(J22L,PDstandardNth12g13,kmul(J32L,PDstandardNth13g13)),kmul(J22L,kmul(J32L,PDstandardNth23g13))),ToReal(2)))))))); + + JacPDstandardNth22g33 = + kmadd(dJ122L,PDstandardNth1g33,kmadd(dJ222L,PDstandardNth2g33,kmadd(dJ322L,PDstandardNth3g33,kmadd(PDstandardNth11g33,SQR(J12L),kmadd(PDstandardNth22g33,SQR(J22L),kmadd(PDstandardNth33g33,SQR(J32L),kmul(kmadd(J12L,kmadd(J22L,PDstandardNth12g33,kmul(J32L,PDstandardNth13g33)),kmul(J22L,kmul(J32L,PDstandardNth23g33))),ToReal(2)))))))); + + JacPDstandardNth33g11 = + kmadd(dJ133L,PDstandardNth1g11,kmadd(dJ233L,PDstandardNth2g11,kmadd(dJ333L,PDstandardNth3g11,kmadd(PDstandardNth11g11,SQR(J13L),kmadd(PDstandardNth22g11,SQR(J23L),kmadd(PDstandardNth33g11,SQR(J33L),kmul(kmadd(J13L,kmadd(J23L,PDstandardNth12g11,kmul(J33L,PDstandardNth13g11)),kmul(J23L,kmul(J33L,PDstandardNth23g11))),ToReal(2)))))))); + + JacPDstandardNth33g12 = + kmadd(dJ133L,PDstandardNth1g12,kmadd(dJ233L,PDstandardNth2g12,kmadd(dJ333L,PDstandardNth3g12,kmadd(PDstandardNth11g12,SQR(J13L),kmadd(PDstandardNth22g12,SQR(J23L),kmadd(PDstandardNth33g12,SQR(J33L),kmul(kmadd(J13L,kmadd(J23L,PDstandardNth12g12,kmul(J33L,PDstandardNth13g12)),kmul(J23L,kmul(J33L,PDstandardNth23g12))),ToReal(2)))))))); + + JacPDstandardNth33g22 = + kmadd(dJ133L,PDstandardNth1g22,kmadd(dJ233L,PDstandardNth2g22,kmadd(dJ333L,PDstandardNth3g22,kmadd(PDstandardNth11g22,SQR(J13L),kmadd(PDstandardNth22g22,SQR(J23L),kmadd(PDstandardNth33g22,SQR(J33L),kmul(kmadd(J13L,kmadd(J23L,PDstandardNth12g22,kmul(J33L,PDstandardNth13g22)),kmul(J23L,kmul(J33L,PDstandardNth23g22))),ToReal(2)))))))); + + JacPDstandardNth12g11 = + kmadd(J12L,kmadd(J11L,PDstandardNth11g11,kmadd(J21L,PDstandardNth12g11,kmul(J31L,PDstandardNth13g11))),kmadd(J11L,kmadd(J22L,PDstandardNth12g11,kmul(J32L,PDstandardNth13g11)),kmadd(dJ112L,PDstandardNth1g11,kmadd(J22L,kmadd(J21L,PDstandardNth22g11,kmul(J31L,PDstandardNth23g11)),kmadd(dJ212L,PDstandardNth2g11,kmadd(J32L,kmadd(J21L,PDstandardNth23g11,kmul(J31L,PDstandardNth33g11)),kmul(dJ312L,PDstandardNth3g11))))))); + + JacPDstandardNth12g12 = + kmadd(J12L,kmadd(J11L,PDstandardNth11g12,kmadd(J21L,PDstandardNth12g12,kmul(J31L,PDstandardNth13g12))),kmadd(J11L,kmadd(J22L,PDstandardNth12g12,kmul(J32L,PDstandardNth13g12)),kmadd(dJ112L,PDstandardNth1g12,kmadd(J22L,kmadd(J21L,PDstandardNth22g12,kmul(J31L,PDstandardNth23g12)),kmadd(dJ212L,PDstandardNth2g12,kmadd(J32L,kmadd(J21L,PDstandardNth23g12,kmul(J31L,PDstandardNth33g12)),kmul(dJ312L,PDstandardNth3g12))))))); + + JacPDstandardNth12g13 = + kmadd(J12L,kmadd(J11L,PDstandardNth11g13,kmadd(J21L,PDstandardNth12g13,kmul(J31L,PDstandardNth13g13))),kmadd(J11L,kmadd(J22L,PDstandardNth12g13,kmul(J32L,PDstandardNth13g13)),kmadd(dJ112L,PDstandardNth1g13,kmadd(J22L,kmadd(J21L,PDstandardNth22g13,kmul(J31L,PDstandardNth23g13)),kmadd(dJ212L,PDstandardNth2g13,kmadd(J32L,kmadd(J21L,PDstandardNth23g13,kmul(J31L,PDstandardNth33g13)),kmul(dJ312L,PDstandardNth3g13))))))); + + JacPDstandardNth12g22 = + kmadd(J12L,kmadd(J11L,PDstandardNth11g22,kmadd(J21L,PDstandardNth12g22,kmul(J31L,PDstandardNth13g22))),kmadd(J11L,kmadd(J22L,PDstandardNth12g22,kmul(J32L,PDstandardNth13g22)),kmadd(dJ112L,PDstandardNth1g22,kmadd(J22L,kmadd(J21L,PDstandardNth22g22,kmul(J31L,PDstandardNth23g22)),kmadd(dJ212L,PDstandardNth2g22,kmadd(J32L,kmadd(J21L,PDstandardNth23g22,kmul(J31L,PDstandardNth33g22)),kmul(dJ312L,PDstandardNth3g22))))))); + + JacPDstandardNth12g23 = + kmadd(J12L,kmadd(J11L,PDstandardNth11g23,kmadd(J21L,PDstandardNth12g23,kmul(J31L,PDstandardNth13g23))),kmadd(J11L,kmadd(J22L,PDstandardNth12g23,kmul(J32L,PDstandardNth13g23)),kmadd(dJ112L,PDstandardNth1g23,kmadd(J22L,kmadd(J21L,PDstandardNth22g23,kmul(J31L,PDstandardNth23g23)),kmadd(dJ212L,PDstandardNth2g23,kmadd(J32L,kmadd(J21L,PDstandardNth23g23,kmul(J31L,PDstandardNth33g23)),kmul(dJ312L,PDstandardNth3g23))))))); + + JacPDstandardNth12g33 = + kmadd(J12L,kmadd(J11L,PDstandardNth11g33,kmadd(J21L,PDstandardNth12g33,kmul(J31L,PDstandardNth13g33))),kmadd(J11L,kmadd(J22L,PDstandardNth12g33,kmul(J32L,PDstandardNth13g33)),kmadd(dJ112L,PDstandardNth1g33,kmadd(J22L,kmadd(J21L,PDstandardNth22g33,kmul(J31L,PDstandardNth23g33)),kmadd(dJ212L,PDstandardNth2g33,kmadd(J32L,kmadd(J21L,PDstandardNth23g33,kmul(J31L,PDstandardNth33g33)),kmul(dJ312L,PDstandardNth3g33))))))); + + JacPDstandardNth13g11 = + kmadd(J13L,kmadd(J11L,PDstandardNth11g11,kmadd(J21L,PDstandardNth12g11,kmul(J31L,PDstandardNth13g11))),kmadd(J11L,kmadd(J23L,PDstandardNth12g11,kmul(J33L,PDstandardNth13g11)),kmadd(dJ113L,PDstandardNth1g11,kmadd(J23L,kmadd(J21L,PDstandardNth22g11,kmul(J31L,PDstandardNth23g11)),kmadd(dJ213L,PDstandardNth2g11,kmadd(J33L,kmadd(J21L,PDstandardNth23g11,kmul(J31L,PDstandardNth33g11)),kmul(dJ313L,PDstandardNth3g11))))))); + + JacPDstandardNth13g12 = + kmadd(J13L,kmadd(J11L,PDstandardNth11g12,kmadd(J21L,PDstandardNth12g12,kmul(J31L,PDstandardNth13g12))),kmadd(J11L,kmadd(J23L,PDstandardNth12g12,kmul(J33L,PDstandardNth13g12)),kmadd(dJ113L,PDstandardNth1g12,kmadd(J23L,kmadd(J21L,PDstandardNth22g12,kmul(J31L,PDstandardNth23g12)),kmadd(dJ213L,PDstandardNth2g12,kmadd(J33L,kmadd(J21L,PDstandardNth23g12,kmul(J31L,PDstandardNth33g12)),kmul(dJ313L,PDstandardNth3g12))))))); + + JacPDstandardNth13g13 = + kmadd(J13L,kmadd(J11L,PDstandardNth11g13,kmadd(J21L,PDstandardNth12g13,kmul(J31L,PDstandardNth13g13))),kmadd(J11L,kmadd(J23L,PDstandardNth12g13,kmul(J33L,PDstandardNth13g13)),kmadd(dJ113L,PDstandardNth1g13,kmadd(J23L,kmadd(J21L,PDstandardNth22g13,kmul(J31L,PDstandardNth23g13)),kmadd(dJ213L,PDstandardNth2g13,kmadd(J33L,kmadd(J21L,PDstandardNth23g13,kmul(J31L,PDstandardNth33g13)),kmul(dJ313L,PDstandardNth3g13))))))); + + JacPDstandardNth13g22 = + kmadd(J13L,kmadd(J11L,PDstandardNth11g22,kmadd(J21L,PDstandardNth12g22,kmul(J31L,PDstandardNth13g22))),kmadd(J11L,kmadd(J23L,PDstandardNth12g22,kmul(J33L,PDstandardNth13g22)),kmadd(dJ113L,PDstandardNth1g22,kmadd(J23L,kmadd(J21L,PDstandardNth22g22,kmul(J31L,PDstandardNth23g22)),kmadd(dJ213L,PDstandardNth2g22,kmadd(J33L,kmadd(J21L,PDstandardNth23g22,kmul(J31L,PDstandardNth33g22)),kmul(dJ313L,PDstandardNth3g22))))))); + + JacPDstandardNth13g23 = + kmadd(J13L,kmadd(J11L,PDstandardNth11g23,kmadd(J21L,PDstandardNth12g23,kmul(J31L,PDstandardNth13g23))),kmadd(J11L,kmadd(J23L,PDstandardNth12g23,kmul(J33L,PDstandardNth13g23)),kmadd(dJ113L,PDstandardNth1g23,kmadd(J23L,kmadd(J21L,PDstandardNth22g23,kmul(J31L,PDstandardNth23g23)),kmadd(dJ213L,PDstandardNth2g23,kmadd(J33L,kmadd(J21L,PDstandardNth23g23,kmul(J31L,PDstandardNth33g23)),kmul(dJ313L,PDstandardNth3g23))))))); + + JacPDstandardNth13g33 = + kmadd(J13L,kmadd(J11L,PDstandardNth11g33,kmadd(J21L,PDstandardNth12g33,kmul(J31L,PDstandardNth13g33))),kmadd(J11L,kmadd(J23L,PDstandardNth12g33,kmul(J33L,PDstandardNth13g33)),kmadd(dJ113L,PDstandardNth1g33,kmadd(J23L,kmadd(J21L,PDstandardNth22g33,kmul(J31L,PDstandardNth23g33)),kmadd(dJ213L,PDstandardNth2g33,kmadd(J33L,kmadd(J21L,PDstandardNth23g33,kmul(J31L,PDstandardNth33g33)),kmul(dJ313L,PDstandardNth3g33))))))); + + JacPDstandardNth21g11 = + kmadd(J12L,kmadd(J11L,PDstandardNth11g11,kmadd(J21L,PDstandardNth12g11,kmul(J31L,PDstandardNth13g11))),kmadd(J11L,kmadd(J22L,PDstandardNth12g11,kmul(J32L,PDstandardNth13g11)),kmadd(dJ112L,PDstandardNth1g11,kmadd(J22L,kmadd(J21L,PDstandardNth22g11,kmul(J31L,PDstandardNth23g11)),kmadd(dJ212L,PDstandardNth2g11,kmadd(J32L,kmadd(J21L,PDstandardNth23g11,kmul(J31L,PDstandardNth33g11)),kmul(dJ312L,PDstandardNth3g11))))))); + + JacPDstandardNth21g12 = + kmadd(J12L,kmadd(J11L,PDstandardNth11g12,kmadd(J21L,PDstandardNth12g12,kmul(J31L,PDstandardNth13g12))),kmadd(J11L,kmadd(J22L,PDstandardNth12g12,kmul(J32L,PDstandardNth13g12)),kmadd(dJ112L,PDstandardNth1g12,kmadd(J22L,kmadd(J21L,PDstandardNth22g12,kmul(J31L,PDstandardNth23g12)),kmadd(dJ212L,PDstandardNth2g12,kmadd(J32L,kmadd(J21L,PDstandardNth23g12,kmul(J31L,PDstandardNth33g12)),kmul(dJ312L,PDstandardNth3g12))))))); + + JacPDstandardNth21g13 = + kmadd(J12L,kmadd(J11L,PDstandardNth11g13,kmadd(J21L,PDstandardNth12g13,kmul(J31L,PDstandardNth13g13))),kmadd(J11L,kmadd(J22L,PDstandardNth12g13,kmul(J32L,PDstandardNth13g13)),kmadd(dJ112L,PDstandardNth1g13,kmadd(J22L,kmadd(J21L,PDstandardNth22g13,kmul(J31L,PDstandardNth23g13)),kmadd(dJ212L,PDstandardNth2g13,kmadd(J32L,kmadd(J21L,PDstandardNth23g13,kmul(J31L,PDstandardNth33g13)),kmul(dJ312L,PDstandardNth3g13))))))); + + JacPDstandardNth21g22 = + kmadd(J12L,kmadd(J11L,PDstandardNth11g22,kmadd(J21L,PDstandardNth12g22,kmul(J31L,PDstandardNth13g22))),kmadd(J11L,kmadd(J22L,PDstandardNth12g22,kmul(J32L,PDstandardNth13g22)),kmadd(dJ112L,PDstandardNth1g22,kmadd(J22L,kmadd(J21L,PDstandardNth22g22,kmul(J31L,PDstandardNth23g22)),kmadd(dJ212L,PDstandardNth2g22,kmadd(J32L,kmadd(J21L,PDstandardNth23g22,kmul(J31L,PDstandardNth33g22)),kmul(dJ312L,PDstandardNth3g22))))))); + + JacPDstandardNth21g23 = + kmadd(J12L,kmadd(J11L,PDstandardNth11g23,kmadd(J21L,PDstandardNth12g23,kmul(J31L,PDstandardNth13g23))),kmadd(J11L,kmadd(J22L,PDstandardNth12g23,kmul(J32L,PDstandardNth13g23)),kmadd(dJ112L,PDstandardNth1g23,kmadd(J22L,kmadd(J21L,PDstandardNth22g23,kmul(J31L,PDstandardNth23g23)),kmadd(dJ212L,PDstandardNth2g23,kmadd(J32L,kmadd(J21L,PDstandardNth23g23,kmul(J31L,PDstandardNth33g23)),kmul(dJ312L,PDstandardNth3g23))))))); + + JacPDstandardNth21g33 = + kmadd(J12L,kmadd(J11L,PDstandardNth11g33,kmadd(J21L,PDstandardNth12g33,kmul(J31L,PDstandardNth13g33))),kmadd(J11L,kmadd(J22L,PDstandardNth12g33,kmul(J32L,PDstandardNth13g33)),kmadd(dJ112L,PDstandardNth1g33,kmadd(J22L,kmadd(J21L,PDstandardNth22g33,kmul(J31L,PDstandardNth23g33)),kmadd(dJ212L,PDstandardNth2g33,kmadd(J32L,kmadd(J21L,PDstandardNth23g33,kmul(J31L,PDstandardNth33g33)),kmul(dJ312L,PDstandardNth3g33))))))); + + JacPDstandardNth23g11 = + kmadd(J13L,kmadd(J12L,PDstandardNth11g11,kmadd(J22L,PDstandardNth12g11,kmul(J32L,PDstandardNth13g11))),kmadd(J12L,kmadd(J23L,PDstandardNth12g11,kmul(J33L,PDstandardNth13g11)),kmadd(dJ123L,PDstandardNth1g11,kmadd(J23L,kmadd(J22L,PDstandardNth22g11,kmul(J32L,PDstandardNth23g11)),kmadd(dJ223L,PDstandardNth2g11,kmadd(J33L,kmadd(J22L,PDstandardNth23g11,kmul(J32L,PDstandardNth33g11)),kmul(dJ323L,PDstandardNth3g11))))))); + + JacPDstandardNth23g12 = + kmadd(J13L,kmadd(J12L,PDstandardNth11g12,kmadd(J22L,PDstandardNth12g12,kmul(J32L,PDstandardNth13g12))),kmadd(J12L,kmadd(J23L,PDstandardNth12g12,kmul(J33L,PDstandardNth13g12)),kmadd(dJ123L,PDstandardNth1g12,kmadd(J23L,kmadd(J22L,PDstandardNth22g12,kmul(J32L,PDstandardNth23g12)),kmadd(dJ223L,PDstandardNth2g12,kmadd(J33L,kmadd(J22L,PDstandardNth23g12,kmul(J32L,PDstandardNth33g12)),kmul(dJ323L,PDstandardNth3g12))))))); + + JacPDstandardNth23g13 = + kmadd(J13L,kmadd(J12L,PDstandardNth11g13,kmadd(J22L,PDstandardNth12g13,kmul(J32L,PDstandardNth13g13))),kmadd(J12L,kmadd(J23L,PDstandardNth12g13,kmul(J33L,PDstandardNth13g13)),kmadd(dJ123L,PDstandardNth1g13,kmadd(J23L,kmadd(J22L,PDstandardNth22g13,kmul(J32L,PDstandardNth23g13)),kmadd(dJ223L,PDstandardNth2g13,kmadd(J33L,kmadd(J22L,PDstandardNth23g13,kmul(J32L,PDstandardNth33g13)),kmul(dJ323L,PDstandardNth3g13))))))); + + JacPDstandardNth23g22 = + kmadd(J13L,kmadd(J12L,PDstandardNth11g22,kmadd(J22L,PDstandardNth12g22,kmul(J32L,PDstandardNth13g22))),kmadd(J12L,kmadd(J23L,PDstandardNth12g22,kmul(J33L,PDstandardNth13g22)),kmadd(dJ123L,PDstandardNth1g22,kmadd(J23L,kmadd(J22L,PDstandardNth22g22,kmul(J32L,PDstandardNth23g22)),kmadd(dJ223L,PDstandardNth2g22,kmadd(J33L,kmadd(J22L,PDstandardNth23g22,kmul(J32L,PDstandardNth33g22)),kmul(dJ323L,PDstandardNth3g22))))))); + + JacPDstandardNth23g23 = + kmadd(J13L,kmadd(J12L,PDstandardNth11g23,kmadd(J22L,PDstandardNth12g23,kmul(J32L,PDstandardNth13g23))),kmadd(J12L,kmadd(J23L,PDstandardNth12g23,kmul(J33L,PDstandardNth13g23)),kmadd(dJ123L,PDstandardNth1g23,kmadd(J23L,kmadd(J22L,PDstandardNth22g23,kmul(J32L,PDstandardNth23g23)),kmadd(dJ223L,PDstandardNth2g23,kmadd(J33L,kmadd(J22L,PDstandardNth23g23,kmul(J32L,PDstandardNth33g23)),kmul(dJ323L,PDstandardNth3g23))))))); + + JacPDstandardNth23g33 = + kmadd(J13L,kmadd(J12L,PDstandardNth11g33,kmadd(J22L,PDstandardNth12g33,kmul(J32L,PDstandardNth13g33))),kmadd(J12L,kmadd(J23L,PDstandardNth12g33,kmul(J33L,PDstandardNth13g33)),kmadd(dJ123L,PDstandardNth1g33,kmadd(J23L,kmadd(J22L,PDstandardNth22g33,kmul(J32L,PDstandardNth23g33)),kmadd(dJ223L,PDstandardNth2g33,kmadd(J33L,kmadd(J22L,PDstandardNth23g33,kmul(J32L,PDstandardNth33g33)),kmul(dJ323L,PDstandardNth3g33))))))); + + JacPDstandardNth31g11 = + kmadd(J13L,kmadd(J11L,PDstandardNth11g11,kmadd(J21L,PDstandardNth12g11,kmul(J31L,PDstandardNth13g11))),kmadd(J11L,kmadd(J23L,PDstandardNth12g11,kmul(J33L,PDstandardNth13g11)),kmadd(dJ113L,PDstandardNth1g11,kmadd(J23L,kmadd(J21L,PDstandardNth22g11,kmul(J31L,PDstandardNth23g11)),kmadd(dJ213L,PDstandardNth2g11,kmadd(J33L,kmadd(J21L,PDstandardNth23g11,kmul(J31L,PDstandardNth33g11)),kmul(dJ313L,PDstandardNth3g11))))))); + + JacPDstandardNth31g12 = + kmadd(J13L,kmadd(J11L,PDstandardNth11g12,kmadd(J21L,PDstandardNth12g12,kmul(J31L,PDstandardNth13g12))),kmadd(J11L,kmadd(J23L,PDstandardNth12g12,kmul(J33L,PDstandardNth13g12)),kmadd(dJ113L,PDstandardNth1g12,kmadd(J23L,kmadd(J21L,PDstandardNth22g12,kmul(J31L,PDstandardNth23g12)),kmadd(dJ213L,PDstandardNth2g12,kmadd(J33L,kmadd(J21L,PDstandardNth23g12,kmul(J31L,PDstandardNth33g12)),kmul(dJ313L,PDstandardNth3g12))))))); + + JacPDstandardNth31g13 = + kmadd(J13L,kmadd(J11L,PDstandardNth11g13,kmadd(J21L,PDstandardNth12g13,kmul(J31L,PDstandardNth13g13))),kmadd(J11L,kmadd(J23L,PDstandardNth12g13,kmul(J33L,PDstandardNth13g13)),kmadd(dJ113L,PDstandardNth1g13,kmadd(J23L,kmadd(J21L,PDstandardNth22g13,kmul(J31L,PDstandardNth23g13)),kmadd(dJ213L,PDstandardNth2g13,kmadd(J33L,kmadd(J21L,PDstandardNth23g13,kmul(J31L,PDstandardNth33g13)),kmul(dJ313L,PDstandardNth3g13))))))); + + JacPDstandardNth31g22 = + kmadd(J13L,kmadd(J11L,PDstandardNth11g22,kmadd(J21L,PDstandardNth12g22,kmul(J31L,PDstandardNth13g22))),kmadd(J11L,kmadd(J23L,PDstandardNth12g22,kmul(J33L,PDstandardNth13g22)),kmadd(dJ113L,PDstandardNth1g22,kmadd(J23L,kmadd(J21L,PDstandardNth22g22,kmul(J31L,PDstandardNth23g22)),kmadd(dJ213L,PDstandardNth2g22,kmadd(J33L,kmadd(J21L,PDstandardNth23g22,kmul(J31L,PDstandardNth33g22)),kmul(dJ313L,PDstandardNth3g22))))))); + + JacPDstandardNth31g23 = + kmadd(J13L,kmadd(J11L,PDstandardNth11g23,kmadd(J21L,PDstandardNth12g23,kmul(J31L,PDstandardNth13g23))),kmadd(J11L,kmadd(J23L,PDstandardNth12g23,kmul(J33L,PDstandardNth13g23)),kmadd(dJ113L,PDstandardNth1g23,kmadd(J23L,kmadd(J21L,PDstandardNth22g23,kmul(J31L,PDstandardNth23g23)),kmadd(dJ213L,PDstandardNth2g23,kmadd(J33L,kmadd(J21L,PDstandardNth23g23,kmul(J31L,PDstandardNth33g23)),kmul(dJ313L,PDstandardNth3g23))))))); + + JacPDstandardNth31g33 = + kmadd(J13L,kmadd(J11L,PDstandardNth11g33,kmadd(J21L,PDstandardNth12g33,kmul(J31L,PDstandardNth13g33))),kmadd(J11L,kmadd(J23L,PDstandardNth12g33,kmul(J33L,PDstandardNth13g33)),kmadd(dJ113L,PDstandardNth1g33,kmadd(J23L,kmadd(J21L,PDstandardNth22g33,kmul(J31L,PDstandardNth23g33)),kmadd(dJ213L,PDstandardNth2g33,kmadd(J33L,kmadd(J21L,PDstandardNth23g33,kmul(J31L,PDstandardNth33g33)),kmul(dJ313L,PDstandardNth3g33))))))); + + JacPDstandardNth32g11 = + kmadd(J13L,kmadd(J12L,PDstandardNth11g11,kmadd(J22L,PDstandardNth12g11,kmul(J32L,PDstandardNth13g11))),kmadd(J12L,kmadd(J23L,PDstandardNth12g11,kmul(J33L,PDstandardNth13g11)),kmadd(dJ123L,PDstandardNth1g11,kmadd(J23L,kmadd(J22L,PDstandardNth22g11,kmul(J32L,PDstandardNth23g11)),kmadd(dJ223L,PDstandardNth2g11,kmadd(J33L,kmadd(J22L,PDstandardNth23g11,kmul(J32L,PDstandardNth33g11)),kmul(dJ323L,PDstandardNth3g11))))))); + + JacPDstandardNth32g12 = + kmadd(J13L,kmadd(J12L,PDstandardNth11g12,kmadd(J22L,PDstandardNth12g12,kmul(J32L,PDstandardNth13g12))),kmadd(J12L,kmadd(J23L,PDstandardNth12g12,kmul(J33L,PDstandardNth13g12)),kmadd(dJ123L,PDstandardNth1g12,kmadd(J23L,kmadd(J22L,PDstandardNth22g12,kmul(J32L,PDstandardNth23g12)),kmadd(dJ223L,PDstandardNth2g12,kmadd(J33L,kmadd(J22L,PDstandardNth23g12,kmul(J32L,PDstandardNth33g12)),kmul(dJ323L,PDstandardNth3g12))))))); + + JacPDstandardNth32g13 = + kmadd(J13L,kmadd(J12L,PDstandardNth11g13,kmadd(J22L,PDstandardNth12g13,kmul(J32L,PDstandardNth13g13))),kmadd(J12L,kmadd(J23L,PDstandardNth12g13,kmul(J33L,PDstandardNth13g13)),kmadd(dJ123L,PDstandardNth1g13,kmadd(J23L,kmadd(J22L,PDstandardNth22g13,kmul(J32L,PDstandardNth23g13)),kmadd(dJ223L,PDstandardNth2g13,kmadd(J33L,kmadd(J22L,PDstandardNth23g13,kmul(J32L,PDstandardNth33g13)),kmul(dJ323L,PDstandardNth3g13))))))); + + JacPDstandardNth32g22 = + kmadd(J13L,kmadd(J12L,PDstandardNth11g22,kmadd(J22L,PDstandardNth12g22,kmul(J32L,PDstandardNth13g22))),kmadd(J12L,kmadd(J23L,PDstandardNth12g22,kmul(J33L,PDstandardNth13g22)),kmadd(dJ123L,PDstandardNth1g22,kmadd(J23L,kmadd(J22L,PDstandardNth22g22,kmul(J32L,PDstandardNth23g22)),kmadd(dJ223L,PDstandardNth2g22,kmadd(J33L,kmadd(J22L,PDstandardNth23g22,kmul(J32L,PDstandardNth33g22)),kmul(dJ323L,PDstandardNth3g22))))))); + + JacPDstandardNth32g23 = + kmadd(J13L,kmadd(J12L,PDstandardNth11g23,kmadd(J22L,PDstandardNth12g23,kmul(J32L,PDstandardNth13g23))),kmadd(J12L,kmadd(J23L,PDstandardNth12g23,kmul(J33L,PDstandardNth13g23)),kmadd(dJ123L,PDstandardNth1g23,kmadd(J23L,kmadd(J22L,PDstandardNth22g23,kmul(J32L,PDstandardNth23g23)),kmadd(dJ223L,PDstandardNth2g23,kmadd(J33L,kmadd(J22L,PDstandardNth23g23,kmul(J32L,PDstandardNth33g23)),kmul(dJ323L,PDstandardNth3g23))))))); + + JacPDstandardNth32g33 = + kmadd(J13L,kmadd(J12L,PDstandardNth11g33,kmadd(J22L,PDstandardNth12g33,kmul(J32L,PDstandardNth13g33))),kmadd(J12L,kmadd(J23L,PDstandardNth12g33,kmul(J33L,PDstandardNth13g33)),kmadd(dJ123L,PDstandardNth1g33,kmadd(J23L,kmadd(J22L,PDstandardNth22g33,kmul(J32L,PDstandardNth23g33)),kmadd(dJ223L,PDstandardNth2g33,kmadd(J33L,kmadd(J22L,PDstandardNth23g33,kmul(J32L,PDstandardNth33g33)),kmul(dJ323L,PDstandardNth3g33))))))); + } + else + { + JacPDstandardNth1g11 = PDstandardNth1g11; + + JacPDstandardNth1g12 = PDstandardNth1g12; + + JacPDstandardNth1g13 = PDstandardNth1g13; + + JacPDstandardNth1g22 = PDstandardNth1g22; + + JacPDstandardNth1g23 = PDstandardNth1g23; + + JacPDstandardNth1g33 = PDstandardNth1g33; + + JacPDstandardNth1K12 = PDstandardNth1K12; + + JacPDstandardNth1K13 = PDstandardNth1K13; + + JacPDstandardNth1K22 = PDstandardNth1K22; + + JacPDstandardNth1K23 = PDstandardNth1K23; + + JacPDstandardNth1K33 = PDstandardNth1K33; + + JacPDstandardNth2g11 = PDstandardNth2g11; + + JacPDstandardNth2g12 = PDstandardNth2g12; + + JacPDstandardNth2g13 = PDstandardNth2g13; + + JacPDstandardNth2g22 = PDstandardNth2g22; + + JacPDstandardNth2g23 = PDstandardNth2g23; + + JacPDstandardNth2g33 = PDstandardNth2g33; + + JacPDstandardNth2K11 = PDstandardNth2K11; + + JacPDstandardNth2K12 = PDstandardNth2K12; + + JacPDstandardNth2K13 = PDstandardNth2K13; + + JacPDstandardNth2K23 = PDstandardNth2K23; + + JacPDstandardNth2K33 = PDstandardNth2K33; + + JacPDstandardNth3g11 = PDstandardNth3g11; + + JacPDstandardNth3g12 = PDstandardNth3g12; + + JacPDstandardNth3g13 = PDstandardNth3g13; + + JacPDstandardNth3g22 = PDstandardNth3g22; + + JacPDstandardNth3g23 = PDstandardNth3g23; + + JacPDstandardNth3g33 = PDstandardNth3g33; + + JacPDstandardNth3K11 = PDstandardNth3K11; + + JacPDstandardNth3K12 = PDstandardNth3K12; + + JacPDstandardNth3K13 = PDstandardNth3K13; + + JacPDstandardNth3K22 = PDstandardNth3K22; + + JacPDstandardNth3K23 = PDstandardNth3K23; + + JacPDstandardNth11g22 = PDstandardNth11g22; + + JacPDstandardNth11g23 = PDstandardNth11g23; + + JacPDstandardNth11g33 = PDstandardNth11g33; + + JacPDstandardNth22g11 = PDstandardNth22g11; + + JacPDstandardNth22g13 = PDstandardNth22g13; + + JacPDstandardNth22g33 = PDstandardNth22g33; + + JacPDstandardNth33g11 = PDstandardNth33g11; + + JacPDstandardNth33g12 = PDstandardNth33g12; + + JacPDstandardNth33g22 = PDstandardNth33g22; + + JacPDstandardNth12g11 = PDstandardNth12g11; + + JacPDstandardNth12g12 = PDstandardNth12g12; + + JacPDstandardNth12g13 = PDstandardNth12g13; + + JacPDstandardNth12g22 = PDstandardNth12g22; + + JacPDstandardNth12g23 = PDstandardNth12g23; + + JacPDstandardNth12g33 = PDstandardNth12g33; + + JacPDstandardNth13g11 = PDstandardNth13g11; + + JacPDstandardNth13g12 = PDstandardNth13g12; + + JacPDstandardNth13g13 = PDstandardNth13g13; + + JacPDstandardNth13g22 = PDstandardNth13g22; + + JacPDstandardNth13g23 = PDstandardNth13g23; + + JacPDstandardNth13g33 = PDstandardNth13g33; + + JacPDstandardNth21g11 = PDstandardNth12g11; + + JacPDstandardNth21g12 = PDstandardNth12g12; + + JacPDstandardNth21g13 = PDstandardNth12g13; + + JacPDstandardNth21g22 = PDstandardNth12g22; + + JacPDstandardNth21g23 = PDstandardNth12g23; + + JacPDstandardNth21g33 = PDstandardNth12g33; + + JacPDstandardNth23g11 = PDstandardNth23g11; + + JacPDstandardNth23g12 = PDstandardNth23g12; + + JacPDstandardNth23g13 = PDstandardNth23g13; + + JacPDstandardNth23g22 = PDstandardNth23g22; + + JacPDstandardNth23g23 = PDstandardNth23g23; + + JacPDstandardNth23g33 = PDstandardNth23g33; + + JacPDstandardNth31g11 = PDstandardNth13g11; + + JacPDstandardNth31g12 = PDstandardNth13g12; + + JacPDstandardNth31g13 = PDstandardNth13g13; + + JacPDstandardNth31g22 = PDstandardNth13g22; + + JacPDstandardNth31g23 = PDstandardNth13g23; + + JacPDstandardNth31g33 = PDstandardNth13g33; + + JacPDstandardNth32g11 = PDstandardNth23g11; + + JacPDstandardNth32g12 = PDstandardNth23g12; + + JacPDstandardNth32g13 = PDstandardNth23g13; + + JacPDstandardNth32g22 = PDstandardNth23g22; + + JacPDstandardNth32g23 = PDstandardNth23g23; + + JacPDstandardNth32g33 = PDstandardNth23g33; + } + + CCTK_REAL_VEC detg = + knmsub(g22L,SQR(g13L),knmsub(g11L,SQR(g23L),kmadd(g33L,kmsub(g11L,g22L,SQR(g12L)),kmul(g12L,kmul(g13L,kmul(g23L,ToReal(2))))))); + + CCTK_REAL_VEC gu11 = kmul(INV(detg),kmsub(g22L,g33L,SQR(g23L))); + + CCTK_REAL_VEC gu12 = kmul(INV(detg),kmsub(g13L,g23L,kmul(g12L,g33L))); + + CCTK_REAL_VEC gu13 = kmul(INV(detg),kmsub(g12L,g23L,kmul(g13L,g22L))); + + CCTK_REAL_VEC gu21 = kmul(INV(detg),kmsub(g13L,g23L,kmul(g12L,g33L))); + + CCTK_REAL_VEC gu22 = kmul(INV(detg),kmsub(g11L,g33L,SQR(g13L))); + + CCTK_REAL_VEC gu23 = kmul(INV(detg),kmsub(g12L,g13L,kmul(g11L,g23L))); + + CCTK_REAL_VEC gu31 = kmul(INV(detg),kmsub(g12L,g23L,kmul(g13L,g22L))); + + CCTK_REAL_VEC gu32 = kmul(INV(detg),kmsub(g12L,g13L,kmul(g11L,g23L))); + + CCTK_REAL_VEC gu33 = kmul(INV(detg),kmsub(g11L,g22L,SQR(g12L))); + + CCTK_REAL_VEC G111 = + kmul(ToReal(0.5),kmadd(gu11,JacPDstandardNth1g11,knmsub(gu12,JacPDstandardNth2g11,kmsub(kmadd(gu12,JacPDstandardNth1g12,kmul(gu13,JacPDstandardNth1g13)),ToReal(2),kmul(gu13,JacPDstandardNth3g11))))); + + CCTK_REAL_VEC G211 = + kmul(ToReal(0.5),kmadd(gu21,JacPDstandardNth1g11,knmsub(gu22,JacPDstandardNth2g11,kmsub(kmadd(gu22,JacPDstandardNth1g12,kmul(gu23,JacPDstandardNth1g13)),ToReal(2),kmul(gu23,JacPDstandardNth3g11))))); + + CCTK_REAL_VEC G311 = + kmul(ToReal(0.5),kmadd(gu31,JacPDstandardNth1g11,knmsub(gu32,JacPDstandardNth2g11,kmsub(kmadd(gu32,JacPDstandardNth1g12,kmul(gu33,JacPDstandardNth1g13)),ToReal(2),kmul(gu33,JacPDstandardNth3g11))))); + + CCTK_REAL_VEC G112 = + kmul(kmadd(gu12,JacPDstandardNth1g22,kmadd(gu11,JacPDstandardNth2g11,kmul(gu13,kadd(JacPDstandardNth1g23,ksub(JacPDstandardNth2g13,JacPDstandardNth3g12))))),ToReal(0.5)); + + CCTK_REAL_VEC G212 = + kmul(kmadd(gu22,JacPDstandardNth1g22,kmadd(gu21,JacPDstandardNth2g11,kmul(gu23,kadd(JacPDstandardNth1g23,ksub(JacPDstandardNth2g13,JacPDstandardNth3g12))))),ToReal(0.5)); + + CCTK_REAL_VEC G312 = + kmul(kmadd(gu32,JacPDstandardNth1g22,kmadd(gu31,JacPDstandardNth2g11,kmul(gu33,kadd(JacPDstandardNth1g23,ksub(JacPDstandardNth2g13,JacPDstandardNth3g12))))),ToReal(0.5)); + + CCTK_REAL_VEC G113 = + kmul(kmadd(gu13,JacPDstandardNth1g33,kmadd(gu11,JacPDstandardNth3g11,kmul(gu12,kadd(JacPDstandardNth1g23,ksub(JacPDstandardNth3g12,JacPDstandardNth2g13))))),ToReal(0.5)); + + CCTK_REAL_VEC G213 = + kmul(kmadd(gu23,JacPDstandardNth1g33,kmadd(gu21,JacPDstandardNth3g11,kmul(gu22,kadd(JacPDstandardNth1g23,ksub(JacPDstandardNth3g12,JacPDstandardNth2g13))))),ToReal(0.5)); + + CCTK_REAL_VEC G313 = + kmul(kmadd(gu33,JacPDstandardNth1g33,kmadd(gu31,JacPDstandardNth3g11,kmul(gu32,kadd(JacPDstandardNth1g23,ksub(JacPDstandardNth3g12,JacPDstandardNth2g13))))),ToReal(0.5)); + + CCTK_REAL_VEC G122 = + kmul(ToReal(0.5),kmadd(gu12,JacPDstandardNth2g22,kmadd(gu11,kmsub(JacPDstandardNth2g12,ToReal(2),JacPDstandardNth1g22),kmul(gu13,kmsub(JacPDstandardNth2g23,ToReal(2),JacPDstandardNth3g22))))); + + CCTK_REAL_VEC G222 = + kmul(ToReal(0.5),kmadd(gu22,JacPDstandardNth2g22,kmadd(gu21,kmsub(JacPDstandardNth2g12,ToReal(2),JacPDstandardNth1g22),kmul(gu23,kmsub(JacPDstandardNth2g23,ToReal(2),JacPDstandardNth3g22))))); + + CCTK_REAL_VEC G322 = + kmul(ToReal(0.5),kmadd(gu32,JacPDstandardNth2g22,kmadd(gu31,kmsub(JacPDstandardNth2g12,ToReal(2),JacPDstandardNth1g22),kmul(gu33,kmsub(JacPDstandardNth2g23,ToReal(2),JacPDstandardNth3g22))))); + + CCTK_REAL_VEC G123 = + kmul(kmadd(gu13,JacPDstandardNth2g33,kmadd(gu12,JacPDstandardNth3g22,kmul(gu11,kadd(JacPDstandardNth2g13,ksub(JacPDstandardNth3g12,JacPDstandardNth1g23))))),ToReal(0.5)); + + CCTK_REAL_VEC G223 = + kmul(kmadd(gu23,JacPDstandardNth2g33,kmadd(gu22,JacPDstandardNth3g22,kmul(gu21,kadd(JacPDstandardNth2g13,ksub(JacPDstandardNth3g12,JacPDstandardNth1g23))))),ToReal(0.5)); + + CCTK_REAL_VEC G323 = + kmul(kmadd(gu33,JacPDstandardNth2g33,kmadd(gu32,JacPDstandardNth3g22,kmul(gu31,kadd(JacPDstandardNth2g13,ksub(JacPDstandardNth3g12,JacPDstandardNth1g23))))),ToReal(0.5)); + + CCTK_REAL_VEC G133 = + kmul(ToReal(0.5),kmadd(gu13,JacPDstandardNth3g33,kmadd(gu11,kmsub(JacPDstandardNth3g13,ToReal(2),JacPDstandardNth1g33),kmul(gu12,kmsub(JacPDstandardNth3g23,ToReal(2),JacPDstandardNth2g33))))); + + CCTK_REAL_VEC G233 = + kmul(ToReal(0.5),kmadd(gu23,JacPDstandardNth3g33,kmadd(gu21,kmsub(JacPDstandardNth3g13,ToReal(2),JacPDstandardNth1g33),kmul(gu22,kmsub(JacPDstandardNth3g23,ToReal(2),JacPDstandardNth2g33))))); + + CCTK_REAL_VEC G333 = + kmul(ToReal(0.5),kmadd(gu33,JacPDstandardNth3g33,kmadd(gu31,kmsub(JacPDstandardNth3g13,ToReal(2),JacPDstandardNth1g33),kmul(gu32,kmsub(JacPDstandardNth3g23,ToReal(2),JacPDstandardNth2g33))))); + + CCTK_REAL_VEC R11 = + kadd(SQR(G111),kadd(SQR(G112),kadd(SQR(G113),kadd(SQR(G211),kadd(SQR(G212),kadd(SQR(G213),kadd(SQR(G311),kadd(SQR(G312),kadd(SQR(G313),knmsub(G111,kadd(G111,kadd(G122,G133)),knmsub(G211,kadd(G211,kadd(G222,G233)),knmsub(G311,kadd(G311,kadd(G322,G333)),kmadd(gu22,kmul(kadd(JacPDstandardNth11g22,kmadd(JacPDstandardNth21g12,ToReal(-2),JacPDstandardNth22g11)),ToReal(-0.5)),kmadd(gu33,kmul(kadd(JacPDstandardNth11g33,kmadd(JacPDstandardNth31g13,ToReal(-2),JacPDstandardNth33g11)),ToReal(-0.5)),kmadd(gu12,kmul(ksub(JacPDstandardNth21g11,JacPDstandardNth12g11),ToReal(0.5)),kmadd(gu13,kmul(ksub(JacPDstandardNth31g11,JacPDstandardNth13g11),ToReal(0.5)),kmadd(gu23,kmul(kadd(JacPDstandardNth21g13,ksub(JacPDstandardNth31g12,kadd(JacPDstandardNth23g11,JacPDstandardNth11g23))),ToReal(0.5)),kmul(gu32,kmul(kadd(JacPDstandardNth21g13,ksub(JacPDstandardNth31g12,kadd(JacPDstandardNth32g11,JacPDstandardNth11g23))),ToReal(0.5)))))))))))))))))))); + + CCTK_REAL_VEC R12 = + kmul(ToReal(0.5),kmadd(gu12,kadd(JacPDstandardNth11g22,JacPDstandardNth22g11),kmadd(gu32,JacPDstandardNth31g22,kmadd(gu13,JacPDstandardNth32g11,kmadd(gu23,JacPDstandardNth32g12,kmadd(gu33,JacPDstandardNth32g13,kmadd(kmadd(G112,G133,kmadd(G212,G233,kmadd(G312,G333,kmul(gu12,JacPDstandardNth12g12)))),ToReal(-2),knmsub(JacPDstandardNth12g23,kadd(gu32,gu23),kmadd(gu22,ksub(JacPDstandardNth21g22,JacPDstandardNth12g22),kmadd(gu13,ksub(JacPDstandardNth11g23,kadd(JacPDstandardNth13g12,JacPDstandardNth12g13)),kmadd(gu23,ksub(JacPDstandardNth21g23,JacPDstandardNth23g12),kmadd(gu32,ksub(JacPDstandardNth22g13,JacPDstandardNth32g12),kmadd(gu33,ksub(JacPDstandardNth31g23,kadd(JacPDstandardNth33g12,JacPDstandardNth12g33)),kmul(kmadd(G113,G123,kmadd(G213,G223,kmul(G313,G323))),ToReal(2))))))))))))))); + + CCTK_REAL_VEC R13 = + kmul(ToReal(0.5),kmadd(gu22,JacPDstandardNth23g12,kmadd(gu32,JacPDstandardNth31g23,kmadd(gu13,kadd(JacPDstandardNth11g33,JacPDstandardNth33g11),kmadd(gu23,JacPDstandardNth33g12,kmadd(kmadd(G113,G122,kmadd(G213,G222,kmadd(G313,G322,kmul(gu13,JacPDstandardNth13g13)))),ToReal(-2),knmsub(JacPDstandardNth13g23,kadd(gu32,gu23),kmadd(gu12,kadd(JacPDstandardNth11g23,ksub(JacPDstandardNth23g11,kadd(JacPDstandardNth13g12,JacPDstandardNth12g13))),kmadd(gu33,ksub(JacPDstandardNth31g33,JacPDstandardNth13g33),kmadd(gu22,ksub(JacPDstandardNth21g23,kadd(JacPDstandardNth22g13,JacPDstandardNth13g22)),kmadd(gu23,ksub(JacPDstandardNth21g33,JacPDstandardNth23g13),kmadd(gu32,ksub(JacPDstandardNth23g13,JacPDstandardNth32g13),kmul(kmadd(G112,G123,kmadd(G212,G223,kmul(G312,G323))),ToReal(2)))))))))))))); + + CCTK_REAL_VEC R22 = + kadd(SQR(G112),kadd(SQR(G122),kadd(SQR(G123),kadd(SQR(G212),kadd(SQR(G222),kadd(SQR(G223),kadd(SQR(G312),kadd(SQR(G322),kadd(SQR(G323),knmsub(G122,kadd(G111,kadd(G122,G133)),knmsub(G222,kadd(G211,kadd(G222,G233)),knmsub(G322,kadd(G311,kadd(G322,G333)),kmadd(gu11,kmul(kadd(JacPDstandardNth11g22,kmadd(JacPDstandardNth12g12,ToReal(-2),JacPDstandardNth22g11)),ToReal(-0.5)),kmadd(gu33,kmul(kadd(JacPDstandardNth22g33,kmadd(JacPDstandardNth32g23,ToReal(-2),JacPDstandardNth33g22)),ToReal(-0.5)),kmadd(gu21,kmul(ksub(JacPDstandardNth12g22,JacPDstandardNth21g22),ToReal(0.5)),kmadd(gu13,kmul(kadd(JacPDstandardNth12g23,ksub(JacPDstandardNth32g12,kadd(JacPDstandardNth22g13,JacPDstandardNth13g22))),ToReal(0.5)),kmadd(gu23,kmul(ksub(JacPDstandardNth32g22,JacPDstandardNth23g22),ToReal(0.5)),kmul(gu31,kmul(kadd(JacPDstandardNth12g23,ksub(JacPDstandardNth32g12,kadd(JacPDstandardNth31g22,JacPDstandardNth22g13))),ToReal(0.5)))))))))))))))))))); - CCTK_REAL gu11 = INV(detg)*(g22L*g33L - SQR(g23L)); + CCTK_REAL_VEC R23 = + kmul(ToReal(0.5),kmadd(gu23,kadd(JacPDstandardNth22g33,JacPDstandardNth33g22),kmadd(kmadd(G111,G123,kmadd(G211,G223,kmadd(G311,G323,kmul(gu23,JacPDstandardNth23g23)))),ToReal(-2),kmadd(gu11,kadd(JacPDstandardNth12g13,ksub(JacPDstandardNth13g12,kadd(JacPDstandardNth23g11,JacPDstandardNth11g23))),kmadd(gu21,kadd(JacPDstandardNth13g22,ksub(JacPDstandardNth22g13,kadd(JacPDstandardNth23g12,JacPDstandardNth21g23))),kmadd(gu13,kadd(JacPDstandardNth12g33,ksub(JacPDstandardNth33g12,kadd(JacPDstandardNth23g13,JacPDstandardNth13g23))),kmadd(gu33,ksub(JacPDstandardNth32g33,JacPDstandardNth23g33),kmadd(gu31,kadd(JacPDstandardNth13g23,ksub(JacPDstandardNth32g13,kadd(JacPDstandardNth31g23,JacPDstandardNth23g13))),kmul(kmadd(G112,G113,kmadd(G212,G213,kmul(G312,G313))),ToReal(2)))))))))); - CCTK_REAL gu12 = (g13L*g23L - g12L*g33L)*INV(detg); + CCTK_REAL_VEC R33 = + kadd(SQR(G113),kadd(SQR(G123),kadd(SQR(G133),kadd(SQR(G213),kadd(SQR(G223),kadd(SQR(G233),kadd(SQR(G313),kadd(SQR(G323),kadd(SQR(G333),knmsub(G133,kadd(G111,kadd(G122,G133)),knmsub(G233,kadd(G211,kadd(G222,G233)),knmsub(G333,kadd(G311,kadd(G322,G333)),kmadd(gu11,kmul(kadd(JacPDstandardNth11g33,kmadd(JacPDstandardNth13g13,ToReal(-2),JacPDstandardNth33g11)),ToReal(-0.5)),kmadd(gu22,kmul(kadd(JacPDstandardNth22g33,kmadd(JacPDstandardNth23g23,ToReal(-2),JacPDstandardNth33g22)),ToReal(-0.5)),kmadd(gu31,kmul(ksub(JacPDstandardNth13g33,JacPDstandardNth31g33),ToReal(0.5)),kmadd(gu32,kmul(ksub(JacPDstandardNth23g33,JacPDstandardNth32g33),ToReal(0.5)),kmadd(gu12,kmul(kadd(JacPDstandardNth13g23,ksub(JacPDstandardNth23g13,kadd(JacPDstandardNth33g12,JacPDstandardNth12g33))),ToReal(0.5)),kmul(gu21,kmul(kadd(JacPDstandardNth13g23,ksub(JacPDstandardNth23g13,kadd(JacPDstandardNth33g12,JacPDstandardNth21g33))),ToReal(0.5)))))))))))))))))))); - CCTK_REAL gu13 = (-(g13L*g22L) + g12L*g23L)*INV(detg); + CCTK_REAL_VEC trR = + kmadd(gu11,R11,kmadd(kadd(gu12,gu21),R12,kmadd(kadd(gu13,gu31),R13,kmadd(gu22,R22,kmadd(kadd(gu23,gu32),R23,kmul(gu33,R33)))))); - CCTK_REAL gu21 = (g13L*g23L - g12L*g33L)*INV(detg); + CCTK_REAL_VEC Km11 = + kmadd(gu11,K11L,kmadd(gu12,K12L,kmul(gu13,K13L))); - CCTK_REAL gu22 = INV(detg)*(g11L*g33L - SQR(g13L)); + CCTK_REAL_VEC Km21 = + kmadd(gu21,K11L,kmadd(gu22,K12L,kmul(gu23,K13L))); - CCTK_REAL gu23 = (g12L*g13L - g11L*g23L)*INV(detg); + CCTK_REAL_VEC Km31 = + kmadd(gu31,K11L,kmadd(gu32,K12L,kmul(gu33,K13L))); - CCTK_REAL gu31 = (-(g13L*g22L) + g12L*g23L)*INV(detg); + CCTK_REAL_VEC Km12 = + kmadd(gu11,K12L,kmadd(gu12,K22L,kmul(gu13,K23L))); - CCTK_REAL gu32 = (g12L*g13L - g11L*g23L)*INV(detg); + CCTK_REAL_VEC Km22 = + kmadd(gu21,K12L,kmadd(gu22,K22L,kmul(gu23,K23L))); - CCTK_REAL gu33 = INV(detg)*(g11L*g22L - SQR(g12L)); + CCTK_REAL_VEC Km32 = + kmadd(gu31,K12L,kmadd(gu32,K22L,kmul(gu33,K23L))); - CCTK_REAL G111 = 0.5*(gu11*PDstandardNth1g11 + - 2*(gu12*PDstandardNth1g12 + gu13*PDstandardNth1g13) - - gu12*PDstandardNth2g11 - gu13*PDstandardNth3g11); + CCTK_REAL_VEC Km13 = + kmadd(gu11,K13L,kmadd(gu12,K23L,kmul(gu13,K33L))); - CCTK_REAL G211 = 0.5*(gu21*PDstandardNth1g11 + - 2*(gu22*PDstandardNth1g12 + gu23*PDstandardNth1g13) - - gu22*PDstandardNth2g11 - gu23*PDstandardNth3g11); + CCTK_REAL_VEC Km23 = + kmadd(gu21,K13L,kmadd(gu22,K23L,kmul(gu23,K33L))); - CCTK_REAL G311 = 0.5*(gu31*PDstandardNth1g11 + - 2*(gu32*PDstandardNth1g12 + gu33*PDstandardNth1g13) - - gu32*PDstandardNth2g11 - gu33*PDstandardNth3g11); + CCTK_REAL_VEC Km33 = + kmadd(gu31,K13L,kmadd(gu32,K23L,kmul(gu33,K33L))); - CCTK_REAL G112 = 0.5*(gu12*PDstandardNth1g22 + gu11*PDstandardNth2g11 - + gu13*(PDstandardNth1g23 + PDstandardNth2g13 - PDstandardNth3g12)); - - CCTK_REAL G212 = 0.5*(gu22*PDstandardNth1g22 + gu21*PDstandardNth2g11 - + gu23*(PDstandardNth1g23 + PDstandardNth2g13 - PDstandardNth3g12)); - - CCTK_REAL G312 = 0.5*(gu32*PDstandardNth1g22 + gu31*PDstandardNth2g11 - + gu33*(PDstandardNth1g23 + PDstandardNth2g13 - PDstandardNth3g12)); - - CCTK_REAL G113 = 0.5*(gu13*PDstandardNth1g33 + gu11*PDstandardNth3g11 - + gu12*(PDstandardNth1g23 - PDstandardNth2g13 + PDstandardNth3g12)); - - CCTK_REAL G213 = 0.5*(gu23*PDstandardNth1g33 + gu21*PDstandardNth3g11 - + gu22*(PDstandardNth1g23 - PDstandardNth2g13 + PDstandardNth3g12)); - - CCTK_REAL G313 = 0.5*(gu33*PDstandardNth1g33 + gu31*PDstandardNth3g11 - + gu32*(PDstandardNth1g23 - PDstandardNth2g13 + PDstandardNth3g12)); + CCTK_REAL_VEC trK = kadd(Km11,kadd(Km22,Km33)); - CCTK_REAL G122 = 0.5*(gu11*(-PDstandardNth1g22 + 2*PDstandardNth2g12) - + gu12*PDstandardNth2g22 + gu13*(2*PDstandardNth2g23 - - PDstandardNth3g22)); + CCTK_REAL_VEC HL = + kadd(trR,kadd(SQR(trK),kmsub(kmadd(Km12,Km21,kmadd(Km13,Km31,kmul(Km23,Km32))),ToReal(-2),kadd(kadd(SQR(Km33),SQR(Km22)),SQR(Km11))))); - CCTK_REAL G222 = 0.5*(gu21*(-PDstandardNth1g22 + 2*PDstandardNth2g12) - + gu22*PDstandardNth2g22 + gu23*(2*PDstandardNth2g23 - - PDstandardNth3g22)); + CCTK_REAL_VEC M1L = + kmadd(gu21,kadd(JacPDstandardNth2K11,kmadd(G211,K22L,kmadd(G311,K23L,ksub(knmsub(G112,K11L,kmsub(K12L,ksub(G111,G212),kmul(G312,K13L))),JacPDstandardNth1K12)))),kmadd(gu22,kadd(JacPDstandardNth2K12,kmadd(G212,K22L,kmadd(G312,K23L,ksub(knmsub(G122,K11L,kmsub(K12L,ksub(G112,G222),kmul(G322,K13L))),JacPDstandardNth1K22)))),kmadd(gu23,kadd(JacPDstandardNth2K13,kmadd(G213,K22L,kmadd(G313,K23L,ksub(knmsub(G123,K11L,kmsub(K12L,ksub(G113,G223),kmul(G323,K13L))),JacPDstandardNth1K23)))),kmadd(gu31,kadd(JacPDstandardNth3K11,kmadd(G211,K23L,kmadd(G311,K33L,ksub(knmsub(G113,K11L,kmsub(K13L,ksub(G111,G313),kmul(G213,K12L))),JacPDstandardNth1K13)))),kmadd(gu32,kadd(JacPDstandardNth3K12,kmadd(G212,K23L,kmadd(G312,K33L,ksub(knmsub(G123,K11L,kmsub(K13L,ksub(G112,G323),kmul(G223,K12L))),JacPDstandardNth1K23)))),kmul(gu33,kadd(JacPDstandardNth3K13,kmadd(G213,K23L,kmadd(G313,K33L,ksub(knmsub(G133,K11L,kmsub(K13L,ksub(G113,G333),kmul(G233,K12L))),JacPDstandardNth1K33)))))))))); - CCTK_REAL G322 = 0.5*(gu31*(-PDstandardNth1g22 + 2*PDstandardNth2g12) - + gu32*PDstandardNth2g22 + gu33*(2*PDstandardNth2g23 - - PDstandardNth3g22)); + CCTK_REAL_VEC M2L = + kmadd(gu11,kadd(JacPDstandardNth1K12,kmadd(G112,K11L,kmadd(G312,K13L,ksub(knmsub(G211,K22L,kmsub(K12L,ksub(G212,G111),kmul(G311,K23L))),JacPDstandardNth2K11)))),kmadd(gu12,kadd(JacPDstandardNth1K22,kmadd(G122,K11L,kmadd(G322,K13L,ksub(knmsub(G212,K22L,kmsub(K12L,ksub(G222,G112),kmul(G312,K23L))),JacPDstandardNth2K12)))),kmadd(gu13,kadd(JacPDstandardNth1K23,kmadd(G123,K11L,kmadd(G323,K13L,ksub(knmsub(G213,K22L,kmsub(K12L,ksub(G223,G113),kmul(G313,K23L))),JacPDstandardNth2K13)))),kmadd(gu31,kadd(JacPDstandardNth3K12,kmadd(G112,K13L,kmadd(G312,K33L,ksub(knmsub(G113,K12L,kmsub(K23L,ksub(G212,G313),kmul(G213,K22L))),JacPDstandardNth2K13)))),kmadd(gu32,kadd(JacPDstandardNth3K22,kmadd(G122,K13L,kmadd(G322,K33L,ksub(knmsub(G123,K12L,kmsub(K23L,ksub(G222,G323),kmul(G223,K22L))),JacPDstandardNth2K23)))),kmul(gu33,kadd(JacPDstandardNth3K23,kmadd(G123,K13L,kmadd(G323,K33L,ksub(knmsub(G133,K12L,kmsub(K23L,ksub(G223,G333),kmul(G233,K22L))),JacPDstandardNth2K33)))))))))); - CCTK_REAL G123 = 0.5*(gu13*PDstandardNth2g33 + - gu11*(-PDstandardNth1g23 + PDstandardNth2g13 + PDstandardNth3g12) + - gu12*PDstandardNth3g22); + CCTK_REAL_VEC M3L = + kmadd(gu11,kadd(JacPDstandardNth1K13,kmadd(G113,K11L,kmadd(G213,K12L,ksub(knmsub(G211,K23L,kmsub(K13L,ksub(G313,G111),kmul(G311,K33L))),JacPDstandardNth3K11)))),kmadd(gu12,kadd(JacPDstandardNth1K23,kmadd(G123,K11L,kmadd(G223,K12L,ksub(knmsub(G212,K23L,kmsub(K13L,ksub(G323,G112),kmul(G312,K33L))),JacPDstandardNth3K12)))),kmadd(gu13,kadd(JacPDstandardNth1K33,kmadd(G133,K11L,kmadd(G233,K12L,ksub(knmsub(G213,K23L,kmsub(K13L,ksub(G333,G113),kmul(G313,K33L))),JacPDstandardNth3K13)))),kmadd(gu21,kadd(JacPDstandardNth2K13,kmadd(G113,K12L,kmadd(G213,K22L,ksub(knmsub(G112,K13L,kmsub(K23L,ksub(G313,G212),kmul(G312,K33L))),JacPDstandardNth3K12)))),kmadd(gu22,kadd(JacPDstandardNth2K23,kmadd(G123,K12L,kmadd(G223,K22L,ksub(knmsub(G122,K13L,kmsub(K23L,ksub(G323,G222),kmul(G322,K33L))),JacPDstandardNth3K22)))),kmul(gu23,kadd(JacPDstandardNth2K33,kmadd(G133,K12L,kmadd(G233,K22L,ksub(knmsub(G123,K13L,kmsub(K23L,ksub(G333,G223),kmul(G323,K33L))),JacPDstandardNth3K23)))))))))); - CCTK_REAL G223 = 0.5*(gu23*PDstandardNth2g33 + - gu21*(-PDstandardNth1g23 + PDstandardNth2g13 + PDstandardNth3g12) + - gu22*PDstandardNth3g22); + /* If necessary, store only partial vectors after the first iteration */ - CCTK_REAL G323 = 0.5*(gu33*PDstandardNth2g33 + - gu31*(-PDstandardNth1g23 + PDstandardNth2g13 + PDstandardNth3g12) + - gu32*PDstandardNth3g22); + if (CCTK_REAL_VEC_SIZE > 2 && CCTK_BUILTIN_EXPECT(i < lc_imin && i+CCTK_REAL_VEC_SIZE > lc_imax, 0)) + { + ptrdiff_t const elt_count_lo = lc_imin-i; + ptrdiff_t const elt_count_hi = lc_imax-i; + vec_store_nta_partial_mid(H[index],HL,elt_count_lo,elt_count_hi); + vec_store_nta_partial_mid(M1[index],M1L,elt_count_lo,elt_count_hi); + vec_store_nta_partial_mid(M2[index],M2L,elt_count_lo,elt_count_hi); + vec_store_nta_partial_mid(M3[index],M3L,elt_count_lo,elt_count_hi); + break; + } - CCTK_REAL G133 = 0.5*(gu11*(-PDstandardNth1g33 + 2*PDstandardNth3g13) - + gu12*(-PDstandardNth2g33 + 2*PDstandardNth3g23) + - gu13*PDstandardNth3g33); + /* If necessary, store only partial vectors after the first iteration */ - CCTK_REAL G233 = 0.5*(gu21*(-PDstandardNth1g33 + 2*PDstandardNth3g13) - + gu22*(-PDstandardNth2g33 + 2*PDstandardNth3g23) + - gu23*PDstandardNth3g33); + if (CCTK_REAL_VEC_SIZE > 1 && CCTK_BUILTIN_EXPECT(i < lc_imin, 0)) + { + ptrdiff_t const elt_count = lc_imin-i; + vec_store_nta_partial_hi(H[index],HL,elt_count); + vec_store_nta_partial_hi(M1[index],M1L,elt_count); + vec_store_nta_partial_hi(M2[index],M2L,elt_count); + vec_store_nta_partial_hi(M3[index],M3L,elt_count); + continue; + } - CCTK_REAL G333 = 0.5*(gu31*(-PDstandardNth1g33 + 2*PDstandardNth3g13) - + gu32*(-PDstandardNth2g33 + 2*PDstandardNth3g23) + - gu33*PDstandardNth3g33); + /* If necessary, store only partial vectors after the last iteration */ - CCTK_REAL R11 = -(G111*(G111 + G122 + G133)) - G211*(G211 + G222 + - G233) - G311*(G311 + G322 + G333) - 0.5*gu22*(PDstandardNth11g22 - - 2*PDstandardNth12g12 + PDstandardNth22g11) + - 0.5*gu23*(-PDstandardNth11g23 + PDstandardNth12g13 + PDstandardNth13g12 - - PDstandardNth23g11) + 0.5*gu32*(-PDstandardNth11g23 + - PDstandardNth12g13 + PDstandardNth13g12 - PDstandardNth23g11) - - 0.5*gu33*(PDstandardNth11g33 - 2*PDstandardNth13g13 + - PDstandardNth33g11) + SQR(G111) + SQR(G112) + SQR(G113) + SQR(G211) + - SQR(G212) + SQR(G213) + SQR(G311) + SQR(G312) + SQR(G313); - - CCTK_REAL R12 = 0.5*(2*(G113*G123 + G213*G223 + G313*G323) - - 2*(G112*G133 + G212*G233 + G312*G333 + gu12*PDstandardNth12g12) + - gu13*(PDstandardNth11g23 - PDstandardNth12g13 - PDstandardNth13g12) + - gu12*(PDstandardNth11g22 + PDstandardNth22g11) + - gu32*PDstandardNth22g13 + gu13*PDstandardNth23g11 + - gu32*(-PDstandardNth12g23 + PDstandardNth13g22 - PDstandardNth23g12) + - gu33*PDstandardNth23g13 + gu33*(-PDstandardNth12g33 + - PDstandardNth13g23 - PDstandardNth33g12)); - - CCTK_REAL R13 = 0.5*(2*(G112*G123 + G212*G223 + G312*G323) - - 2*(G113*G122 + G213*G222 + G313*G322 + gu13*PDstandardNth13g13) + - gu12*(PDstandardNth11g23 - PDstandardNth12g13 - PDstandardNth13g12 + - PDstandardNth23g11) + gu22*(PDstandardNth12g23 - PDstandardNth13g22 - - PDstandardNth22g13 + PDstandardNth23g12) + gu13*(PDstandardNth11g33 + - PDstandardNth33g11) + gu23*(PDstandardNth12g33 - PDstandardNth13g23 - - PDstandardNth23g13 + PDstandardNth33g12)); - - CCTK_REAL R22 = -(G122*(G111 + G122 + G133)) - G222*(G211 + G222 + - G233) - G322*(G311 + G322 + G333) - 0.5*gu11*(PDstandardNth11g22 - - 2*PDstandardNth12g12 + PDstandardNth22g11) + - 0.5*gu13*(PDstandardNth12g23 - PDstandardNth13g22 - PDstandardNth22g13 - + PDstandardNth23g12) + 0.5*gu31*(PDstandardNth12g23 - - PDstandardNth13g22 - PDstandardNth22g13 + PDstandardNth23g12) - - 0.5*gu33*(PDstandardNth22g33 - 2*PDstandardNth23g23 + - PDstandardNth33g22) + SQR(G112) + SQR(G122) + SQR(G123) + SQR(G212) + - SQR(G222) + SQR(G223) + SQR(G312) + SQR(G322) + SQR(G323); - - CCTK_REAL R23 = 0.5*(2*(G112*G113 + G212*G213 + G312*G313) + - gu11*(-PDstandardNth11g23 + PDstandardNth12g13 + PDstandardNth13g12 - - PDstandardNth23g11) + gu21*(-PDstandardNth12g23 + PDstandardNth13g22 + - PDstandardNth22g13 - PDstandardNth23g12) - 2*(G111*G123 + G211*G223 + - G311*G323 + gu23*PDstandardNth23g23) + gu13*(PDstandardNth12g33 - - PDstandardNth13g23 - PDstandardNth23g13 + PDstandardNth33g12) + - gu23*(PDstandardNth22g33 + PDstandardNth33g22)); - - CCTK_REAL R33 = -(G133*(G111 + G122 + G133)) - G233*(G211 + G222 + - G233) - G333*(G311 + G322 + G333) - 0.5*gu11*(PDstandardNth11g33 - - 2*PDstandardNth13g13 + PDstandardNth33g11) + - 0.5*gu12*(-PDstandardNth12g33 + PDstandardNth13g23 + PDstandardNth23g13 - - PDstandardNth33g12) + 0.5*gu21*(-PDstandardNth12g33 + - PDstandardNth13g23 + PDstandardNth23g13 - PDstandardNth33g12) - - 0.5*gu22*(PDstandardNth22g33 - 2*PDstandardNth23g23 + - PDstandardNth33g22) + SQR(G113) + SQR(G123) + SQR(G133) + SQR(G213) + - SQR(G223) + SQR(G233) + SQR(G313) + SQR(G323) + SQR(G333); - - CCTK_REAL trR = gu11*R11 + (gu12 + gu21)*R12 + (gu13 + gu31)*R13 + - gu22*R22 + (gu23 + gu32)*R23 + gu33*R33; - - CCTK_REAL Km11 = gu11*K11L + gu12*K12L + gu13*K13L; - - CCTK_REAL Km21 = gu21*K11L + gu22*K12L + gu23*K13L; - - CCTK_REAL Km31 = gu31*K11L + gu32*K12L + gu33*K13L; - - CCTK_REAL Km12 = gu11*K12L + gu12*K22L + gu13*K23L; - - CCTK_REAL Km22 = gu21*K12L + gu22*K22L + gu23*K23L; - - CCTK_REAL Km32 = gu31*K12L + gu32*K22L + gu33*K23L; - - CCTK_REAL Km13 = gu11*K13L + gu12*K23L + gu13*K33L; - - CCTK_REAL Km23 = gu21*K13L + gu22*K23L + gu23*K33L; - - CCTK_REAL Km33 = gu31*K13L + gu32*K23L + gu33*K33L; - - CCTK_REAL trK = Km11 + Km22 + Km33; - - CCTK_REAL HL = -2*(Km12*Km21 + Km13*Km31 + Km23*Km32) + trR - - SQR(Km11) - SQR(Km22) - SQR(Km33) + SQR(trK); - - CCTK_REAL M1L = gu21*(-(G112*K11L) + (G111 - G212)*K12L - G312*K13L + - G211*K22L + G311*K23L - PDstandardNth1K12 + PDstandardNth2K11) + - gu22*(-(G122*K11L) + (G112 - G222)*K12L - G322*K13L + G212*K22L + - G312*K23L - PDstandardNth1K22 + PDstandardNth2K12) + gu23*(-(G123*K11L) - + (G113 - G223)*K12L - G323*K13L + G213*K22L + G313*K23L - - PDstandardNth1K23 + PDstandardNth2K13) + gu31*(-(G113*K11L) - G213*K12L - + (G111 - G313)*K13L + G211*K23L + G311*K33L - PDstandardNth1K13 + - PDstandardNth3K11) + gu32*(-(G123*K11L) - G223*K12L + (G112 - - G323)*K13L + G212*K23L + G312*K33L - PDstandardNth1K23 + - PDstandardNth3K12) + gu33*(-(G133*K11L) - G233*K12L + (G113 - - G333)*K13L + G213*K23L + G313*K33L - PDstandardNth1K33 + - PDstandardNth3K13); - - CCTK_REAL M2L = gu11*(G112*K11L + (-G111 + G212)*K12L + G312*K13L - - G211*K22L - G311*K23L + PDstandardNth1K12 - PDstandardNth2K11) + - gu12*(G122*K11L + (-G112 + G222)*K12L + G322*K13L - G212*K22L - - G312*K23L + PDstandardNth1K22 - PDstandardNth2K12) + gu13*(G123*K11L + - (-G113 + G223)*K12L + G323*K13L - G213*K22L - G313*K23L + - PDstandardNth1K23 - PDstandardNth2K13) + gu31*(-(G113*K12L) + G112*K13L - - G213*K22L + (G212 - G313)*K23L + G312*K33L - PDstandardNth2K13 + - PDstandardNth3K12) + gu32*(-(G123*K12L) + G122*K13L - G223*K22L + (G222 - - G323)*K23L + G322*K33L - PDstandardNth2K23 + PDstandardNth3K22) + - gu33*(-(G133*K12L) + G123*K13L - G233*K22L + (G223 - G333)*K23L + - G323*K33L - PDstandardNth2K33 + PDstandardNth3K23); - - CCTK_REAL M3L = gu11*(G113*K11L + G213*K12L + (-G111 + G313)*K13L - - G211*K23L - G311*K33L + PDstandardNth1K13 - PDstandardNth3K11) + - gu12*(G123*K11L + G223*K12L + (-G112 + G323)*K13L - G212*K23L - - G312*K33L + PDstandardNth1K23 - PDstandardNth3K12) + gu21*(G113*K12L - - G112*K13L + G213*K22L + (-G212 + G313)*K23L - G312*K33L + - PDstandardNth2K13 - PDstandardNth3K12) + gu13*(G133*K11L + G233*K12L + - (-G113 + G333)*K13L - G213*K23L - G313*K33L + PDstandardNth1K33 - - PDstandardNth3K13) + gu22*(G123*K12L - G122*K13L + G223*K22L + (-G222 + - G323)*K23L - G322*K33L + PDstandardNth2K23 - PDstandardNth3K22) + - gu23*(G133*K12L - G123*K13L + G233*K22L + (-G223 + G333)*K23L - - G323*K33L + PDstandardNth2K33 - PDstandardNth3K23); + if (CCTK_REAL_VEC_SIZE > 1 && CCTK_BUILTIN_EXPECT(i+CCTK_REAL_VEC_SIZE > lc_imax, 0)) + { + ptrdiff_t const elt_count = lc_imax-i; + vec_store_nta_partial_lo(H[index],HL,elt_count); + vec_store_nta_partial_lo(M1[index],M1L,elt_count); + vec_store_nta_partial_lo(M2[index],M2L,elt_count); + vec_store_nta_partial_lo(M3[index],M3L,elt_count); + break; + } /* Copy local copies back to grid functions */ - H[index] = HL; - M1[index] = M1L; - M2[index] = M2L; - M3[index] = M3L; + vec_store_nta(H[index],HL); + vec_store_nta(M1[index],M1L); + vec_store_nta(M2[index],M2L); + vec_store_nta(M3[index],M3L); } - LC_ENDLOOP3 (ML_ADM_constraints); + LC_ENDLOOP3VEC (ML_ADM_constraints); } extern "C" void ML_ADM_constraints(CCTK_ARGUMENTS) |