diff options
author | Ian Hinder <ian.hinder@aei.mpg.de> | 2011-06-13 10:37:01 +0200 |
---|---|---|
committer | Ian Hinder <ian.hinder@aei.mpg.de> | 2011-06-13 11:24:13 +0200 |
commit | 3b0b02cb782737878a3b462e23a55e7d895455ca (patch) | |
tree | 528cb1fc3f4af35cb6995b668cb07e2ee8e73f3e /ML_BSSN_MP | |
parent | 7394810db2087ecd54afcac7cb703b145a83e987 (diff) |
Undo "Revert recent commits"
It was only the tests which were wrong.
This reverts commit 05347a08d0c9bd2a87846ab4ad8990fe26274a4a.
Diffstat (limited to 'ML_BSSN_MP')
21 files changed, 7207 insertions, 2546 deletions
diff --git a/ML_BSSN_MP/interface.ccl b/ML_BSSN_MP/interface.ccl index 4308209..8d7a1ba 100644 --- a/ML_BSSN_MP/interface.ccl +++ b/ML_BSSN_MP/interface.ccl @@ -2,7 +2,7 @@ implements: ML_BSSN_MP -inherits: ADMBase TmunuBase Coordinates Grid GenericFD Boundary +inherits: ADMBase TmunuBase Grid GenericFD Boundary diff --git a/ML_BSSN_MP/param.ccl b/ML_BSSN_MP/param.ccl index dc84854..844250c 100644 --- a/ML_BSSN_MP/param.ccl +++ b/ML_BSSN_MP/param.ccl @@ -37,6 +37,9 @@ EXTENDS CCTK_KEYWORD dtshift_evolution_method "dtshift_evolution_method" shares: GenericFD +USES CCTK_STRING jacobian_group +USES CCTK_STRING jacobian_derivative_group +USES CCTK_INT jacobian_identity_map shares: MethodOfLines @@ -189,6 +192,13 @@ KEYWORD dt_lapse_shift_method "Treatment of ADMBase dtlapse and dtshift" "noLapseShiftAdvection" :: "noLapseShiftAdvection" } "correct" +private: +KEYWORD apply_dissipation "Whether to apply dissipation to the RHSs" +{ + "always" :: "always" + "never" :: "never" +} "always" + restricted: CCTK_INT ML_BSSN_MP_MaxNumEvolvedVars "Number of evolved variables used by this thorn" ACCUMULATOR-BASE=MethodofLines::MoL_Num_Evolved_Vars STEERABLE=RECOVER { @@ -220,6 +230,12 @@ CCTK_INT ML_BSSN_MP_convertFromADMBase_calc_every "ML_BSSN_MP_convertFromADMBase } 1 restricted: +CCTK_INT ML_BSSN_MP_InitGamma_calc_every "ML_BSSN_MP_InitGamma_calc_every" STEERABLE=ALWAYS +{ + *:* :: "" +} 1 + +restricted: CCTK_INT ML_BSSN_MP_convertFromADMBaseGamma_calc_every "ML_BSSN_MP_convertFromADMBaseGamma_calc_every" STEERABLE=ALWAYS { *:* :: "" @@ -238,6 +254,18 @@ CCTK_INT ML_BSSN_MP_RHS2_calc_every "ML_BSSN_MP_RHS2_calc_every" STEERABLE=ALWAY } 1 restricted: +CCTK_INT ML_BSSN_MP_Dissipation_calc_every "ML_BSSN_MP_Dissipation_calc_every" STEERABLE=ALWAYS +{ + *:* :: "" +} 1 + +restricted: +CCTK_INT ML_BSSN_MP_Advect_calc_every "ML_BSSN_MP_Advect_calc_every" STEERABLE=ALWAYS +{ + *:* :: "" +} 1 + +restricted: CCTK_INT ML_BSSN_MP_RHSStaticBoundary_calc_every "ML_BSSN_MP_RHSStaticBoundary_calc_every" STEERABLE=ALWAYS { *:* :: "" @@ -304,6 +332,12 @@ CCTK_INT ML_BSSN_MP_convertFromADMBase_calc_offset "ML_BSSN_MP_convertFromADMBas } 0 restricted: +CCTK_INT ML_BSSN_MP_InitGamma_calc_offset "ML_BSSN_MP_InitGamma_calc_offset" STEERABLE=ALWAYS +{ + *:* :: "" +} 0 + +restricted: CCTK_INT ML_BSSN_MP_convertFromADMBaseGamma_calc_offset "ML_BSSN_MP_convertFromADMBaseGamma_calc_offset" STEERABLE=ALWAYS { *:* :: "" @@ -322,6 +356,18 @@ CCTK_INT ML_BSSN_MP_RHS2_calc_offset "ML_BSSN_MP_RHS2_calc_offset" STEERABLE=ALW } 0 restricted: +CCTK_INT ML_BSSN_MP_Dissipation_calc_offset "ML_BSSN_MP_Dissipation_calc_offset" STEERABLE=ALWAYS +{ + *:* :: "" +} 0 + +restricted: +CCTK_INT ML_BSSN_MP_Advect_calc_offset "ML_BSSN_MP_Advect_calc_offset" STEERABLE=ALWAYS +{ + *:* :: "" +} 0 + +restricted: CCTK_INT ML_BSSN_MP_RHSStaticBoundary_calc_offset "ML_BSSN_MP_RHSStaticBoundary_calc_offset" STEERABLE=ALWAYS { *:* :: "" diff --git a/ML_BSSN_MP/schedule.ccl b/ML_BSSN_MP/schedule.ccl index ab96eec..a0c0fd6 100644 --- a/ML_BSSN_MP/schedule.ccl +++ b/ML_BSSN_MP/schedule.ccl @@ -284,6 +284,15 @@ if (CCTK_EQUALS(my_initial_data, "ADMBase")) if (CCTK_EQUALS(my_initial_data, "ADMBase")) { + schedule ML_BSSN_MP_InitGamma AT initial BEFORE ML_BSSN_MP_convertFromADMBaseGamma + { + LANG: C + } "ML_BSSN_MP_InitGamma" +} + + +if (CCTK_EQUALS(my_initial_data, "ADMBase")) +{ schedule ML_BSSN_MP_convertFromADMBaseGamma AT initial AFTER ML_BSSN_MP_convertFromADMBase { LANG: C @@ -304,6 +313,20 @@ schedule ML_BSSN_MP_RHS2 IN ML_BSSN_MP_evolCalcGroup } "ML_BSSN_MP_RHS2" +if (CCTK_EQUALS(apply_dissipation, "always")) +{ + schedule ML_BSSN_MP_Dissipation IN ML_BSSN_MP_evolCalcGroup after ML_BSSN_MP_RHS2 + { + LANG: C + } "ML_BSSN_MP_Dissipation" +} + +schedule ML_BSSN_MP_Advect IN ML_BSSN_MP_evolCalcGroup after ML_BSSN_MP_RHS2 +{ + LANG: C +} "ML_BSSN_MP_Advect" + + if (CCTK_EQUALS(my_rhs_boundary_condition, "static")) { schedule ML_BSSN_MP_RHSStaticBoundary IN MoL_CalcRHS diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_Advect.cc b/ML_BSSN_MP/src/ML_BSSN_MP_Advect.cc new file mode 100644 index 0000000..caae9af --- /dev/null +++ b/ML_BSSN_MP/src/ML_BSSN_MP_Advect.cc @@ -0,0 +1,1520 @@ +/* File produced by Kranc */ + +#define KRANC_C + +#include <assert.h> +#include <math.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include "cctk.h" +#include "cctk_Arguments.h" +#include "cctk_Parameters.h" +#include "GenericFD.h" +#include "Differencing.h" +#include "loopcontrol.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)) + +extern "C" void ML_BSSN_MP_Advect_SelectBCs(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT ierr = 0; + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_curvrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_curvrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_dtlapserhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_dtlapserhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_dtshiftrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_dtshiftrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_Gammarhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_Gammarhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_lapserhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_lapserhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_log_confacrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_log_confacrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_metricrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_metricrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_shiftrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_shiftrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_trace_curvrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_trace_curvrhs."); + return; +} + +static void ML_BSSN_MP_Advect_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[]) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + + /* Declare finite differencing variables */ + + if (verbose > 1) + { + CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_Advect_Body"); + } + + if (cctk_iteration % ML_BSSN_MP_Advect_calc_every != ML_BSSN_MP_Advect_calc_offset) + { + return; + } + + const char *groups[] = {"ML_BSSN_MP::ML_curv","ML_BSSN_MP::ML_curvrhs","ML_BSSN_MP::ML_dtlapse","ML_BSSN_MP::ML_dtlapserhs","ML_BSSN_MP::ML_dtshift","ML_BSSN_MP::ML_dtshiftrhs","ML_BSSN_MP::ML_Gamma","ML_BSSN_MP::ML_Gammarhs","ML_BSSN_MP::ML_lapse","ML_BSSN_MP::ML_lapserhs","ML_BSSN_MP::ML_log_confac","ML_BSSN_MP::ML_log_confacrhs","ML_BSSN_MP::ML_metric","ML_BSSN_MP::ML_metricrhs","ML_BSSN_MP::ML_shift","ML_BSSN_MP::ML_shiftrhs","ML_BSSN_MP::ML_trace_curv","ML_BSSN_MP::ML_trace_curvrhs"}; + GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_Advect", 18, groups); + + GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_Advect", 3, 3, 3); + + /* Include user-supplied include files */ + + /* Initialise finite differencing variables */ + ptrdiff_t const di = 1; + ptrdiff_t const dj = CCTK_GFINDEX3D(cctkGH,0,1,0) - CCTK_GFINDEX3D(cctkGH,0,0,0); + ptrdiff_t const dk = CCTK_GFINDEX3D(cctkGH,0,0,1) - CCTK_GFINDEX3D(cctkGH,0,0,0); + 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; + + /* 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 p1o24dx = 0.0416666666666666666666666666667*INV(dx); + CCTK_REAL const p1o24dy = 0.0416666666666666666666666666667*INV(dy); + CCTK_REAL const p1o24dz = 0.0416666666666666666666666666667*INV(dz); + CCTK_REAL const p1o64dx = 0.015625*INV(dx); + CCTK_REAL const p1o64dy = 0.015625*INV(dy); + CCTK_REAL const p1o64dz = 0.015625*INV(dz); + CCTK_REAL const p1odx = INV(dx); + CCTK_REAL const p1ody = INV(dy); + CCTK_REAL const p1odz = 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)); + + /* 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_BSSN_MP_Advect, + i,j,k, min[0],min[1],min[2], max[0],max[1],max[2], + cctk_lsh[0],cctk_lsh[1],cctk_lsh[2]) + { + ptrdiff_t const index = di*i + dj*j + dk*k; + + /* Assign local copies of grid functions */ + + CCTK_REAL AL = A[index]; + CCTK_REAL alphaL = alpha[index]; + CCTK_REAL alpharhsL = alpharhs[index]; + CCTK_REAL ArhsL = Arhs[index]; + CCTK_REAL At11L = At11[index]; + CCTK_REAL At11rhsL = At11rhs[index]; + CCTK_REAL At12L = At12[index]; + CCTK_REAL At12rhsL = At12rhs[index]; + CCTK_REAL At13L = At13[index]; + CCTK_REAL At13rhsL = At13rhs[index]; + CCTK_REAL At22L = At22[index]; + CCTK_REAL At22rhsL = At22rhs[index]; + CCTK_REAL At23L = At23[index]; + CCTK_REAL At23rhsL = At23rhs[index]; + CCTK_REAL At33L = At33[index]; + CCTK_REAL At33rhsL = At33rhs[index]; + CCTK_REAL B1L = B1[index]; + CCTK_REAL B1rhsL = B1rhs[index]; + CCTK_REAL B2L = B2[index]; + CCTK_REAL B2rhsL = B2rhs[index]; + CCTK_REAL B3L = B3[index]; + CCTK_REAL B3rhsL = B3rhs[index]; + CCTK_REAL beta1L = beta1[index]; + CCTK_REAL beta1rhsL = beta1rhs[index]; + CCTK_REAL beta2L = beta2[index]; + CCTK_REAL beta2rhsL = beta2rhs[index]; + CCTK_REAL beta3L = beta3[index]; + CCTK_REAL beta3rhsL = beta3rhs[index]; + CCTK_REAL gt11L = gt11[index]; + CCTK_REAL gt11rhsL = gt11rhs[index]; + CCTK_REAL gt12L = gt12[index]; + CCTK_REAL gt12rhsL = gt12rhs[index]; + CCTK_REAL gt13L = gt13[index]; + CCTK_REAL gt13rhsL = gt13rhs[index]; + CCTK_REAL gt22L = gt22[index]; + CCTK_REAL gt22rhsL = gt22rhs[index]; + CCTK_REAL gt23L = gt23[index]; + CCTK_REAL gt23rhsL = gt23rhs[index]; + CCTK_REAL gt33L = gt33[index]; + CCTK_REAL gt33rhsL = gt33rhs[index]; + CCTK_REAL phiL = phi[index]; + CCTK_REAL phirhsL = phirhs[index]; + CCTK_REAL trKL = trK[index]; + CCTK_REAL trKrhsL = trKrhs[index]; + CCTK_REAL Xt1L = Xt1[index]; + CCTK_REAL Xt1rhsL = Xt1rhs[index]; + CCTK_REAL Xt2L = Xt2[index]; + CCTK_REAL Xt2rhsL = Xt2rhs[index]; + CCTK_REAL Xt3L = Xt3[index]; + CCTK_REAL Xt3rhsL = Xt3rhs[index]; + + + CCTK_REAL J11L, J12L, J13L, J21L, J22L, J23L, J31L, J32L, J33L; + + if (use_jacobian) + { + J11L = J11[index]; + J12L = J12[index]; + J13L = J13[index]; + J21L = J21[index]; + J22L = J22[index]; + J23L = J23[index]; + J31L = J31[index]; + J32L = J32[index]; + J33L = J33[index]; + } + + /* Include user supplied include files */ + + /* Precompute derivatives */ + CCTK_REAL const PDupwindNthAnti1A = PDupwindNthAnti1(&A[index]); + CCTK_REAL const PDupwindNthSymm1A = PDupwindNthSymm1(&A[index]); + CCTK_REAL const PDupwindNthAnti2A = PDupwindNthAnti2(&A[index]); + CCTK_REAL const PDupwindNthSymm2A = PDupwindNthSymm2(&A[index]); + CCTK_REAL const PDupwindNthAnti3A = PDupwindNthAnti3(&A[index]); + CCTK_REAL const PDupwindNthSymm3A = PDupwindNthSymm3(&A[index]); + CCTK_REAL const PDupwindNthAnti1alpha = PDupwindNthAnti1(&alpha[index]); + CCTK_REAL const PDupwindNthSymm1alpha = PDupwindNthSymm1(&alpha[index]); + CCTK_REAL const PDupwindNthAnti2alpha = PDupwindNthAnti2(&alpha[index]); + CCTK_REAL const PDupwindNthSymm2alpha = PDupwindNthSymm2(&alpha[index]); + CCTK_REAL const PDupwindNthAnti3alpha = PDupwindNthAnti3(&alpha[index]); + CCTK_REAL const PDupwindNthSymm3alpha = PDupwindNthSymm3(&alpha[index]); + CCTK_REAL const PDupwindNthAnti1At11 = PDupwindNthAnti1(&At11[index]); + CCTK_REAL const PDupwindNthSymm1At11 = PDupwindNthSymm1(&At11[index]); + CCTK_REAL const PDupwindNthAnti2At11 = PDupwindNthAnti2(&At11[index]); + CCTK_REAL const PDupwindNthSymm2At11 = PDupwindNthSymm2(&At11[index]); + CCTK_REAL const PDupwindNthAnti3At11 = PDupwindNthAnti3(&At11[index]); + CCTK_REAL const PDupwindNthSymm3At11 = PDupwindNthSymm3(&At11[index]); + CCTK_REAL const PDupwindNthAnti1At12 = PDupwindNthAnti1(&At12[index]); + CCTK_REAL const PDupwindNthSymm1At12 = PDupwindNthSymm1(&At12[index]); + CCTK_REAL const PDupwindNthAnti2At12 = PDupwindNthAnti2(&At12[index]); + CCTK_REAL const PDupwindNthSymm2At12 = PDupwindNthSymm2(&At12[index]); + CCTK_REAL const PDupwindNthAnti3At12 = PDupwindNthAnti3(&At12[index]); + CCTK_REAL const PDupwindNthSymm3At12 = PDupwindNthSymm3(&At12[index]); + CCTK_REAL const PDupwindNthAnti1At13 = PDupwindNthAnti1(&At13[index]); + CCTK_REAL const PDupwindNthSymm1At13 = PDupwindNthSymm1(&At13[index]); + CCTK_REAL const PDupwindNthAnti2At13 = PDupwindNthAnti2(&At13[index]); + CCTK_REAL const PDupwindNthSymm2At13 = PDupwindNthSymm2(&At13[index]); + CCTK_REAL const PDupwindNthAnti3At13 = PDupwindNthAnti3(&At13[index]); + CCTK_REAL const PDupwindNthSymm3At13 = PDupwindNthSymm3(&At13[index]); + CCTK_REAL const PDupwindNthAnti1At22 = PDupwindNthAnti1(&At22[index]); + CCTK_REAL const PDupwindNthSymm1At22 = PDupwindNthSymm1(&At22[index]); + CCTK_REAL const PDupwindNthAnti2At22 = PDupwindNthAnti2(&At22[index]); + CCTK_REAL const PDupwindNthSymm2At22 = PDupwindNthSymm2(&At22[index]); + CCTK_REAL const PDupwindNthAnti3At22 = PDupwindNthAnti3(&At22[index]); + CCTK_REAL const PDupwindNthSymm3At22 = PDupwindNthSymm3(&At22[index]); + CCTK_REAL const PDupwindNthAnti1At23 = PDupwindNthAnti1(&At23[index]); + CCTK_REAL const PDupwindNthSymm1At23 = PDupwindNthSymm1(&At23[index]); + CCTK_REAL const PDupwindNthAnti2At23 = PDupwindNthAnti2(&At23[index]); + CCTK_REAL const PDupwindNthSymm2At23 = PDupwindNthSymm2(&At23[index]); + CCTK_REAL const PDupwindNthAnti3At23 = PDupwindNthAnti3(&At23[index]); + CCTK_REAL const PDupwindNthSymm3At23 = PDupwindNthSymm3(&At23[index]); + CCTK_REAL const PDupwindNthAnti1At33 = PDupwindNthAnti1(&At33[index]); + CCTK_REAL const PDupwindNthSymm1At33 = PDupwindNthSymm1(&At33[index]); + CCTK_REAL const PDupwindNthAnti2At33 = PDupwindNthAnti2(&At33[index]); + CCTK_REAL const PDupwindNthSymm2At33 = PDupwindNthSymm2(&At33[index]); + CCTK_REAL const PDupwindNthAnti3At33 = PDupwindNthAnti3(&At33[index]); + CCTK_REAL const PDupwindNthSymm3At33 = PDupwindNthSymm3(&At33[index]); + CCTK_REAL const PDupwindNthAnti1B1 = PDupwindNthAnti1(&B1[index]); + CCTK_REAL const PDupwindNthSymm1B1 = PDupwindNthSymm1(&B1[index]); + CCTK_REAL const PDupwindNthAnti2B1 = PDupwindNthAnti2(&B1[index]); + CCTK_REAL const PDupwindNthSymm2B1 = PDupwindNthSymm2(&B1[index]); + CCTK_REAL const PDupwindNthAnti3B1 = PDupwindNthAnti3(&B1[index]); + CCTK_REAL const PDupwindNthSymm3B1 = PDupwindNthSymm3(&B1[index]); + CCTK_REAL const PDupwindNthAnti1B2 = PDupwindNthAnti1(&B2[index]); + CCTK_REAL const PDupwindNthSymm1B2 = PDupwindNthSymm1(&B2[index]); + CCTK_REAL const PDupwindNthAnti2B2 = PDupwindNthAnti2(&B2[index]); + CCTK_REAL const PDupwindNthSymm2B2 = PDupwindNthSymm2(&B2[index]); + CCTK_REAL const PDupwindNthAnti3B2 = PDupwindNthAnti3(&B2[index]); + CCTK_REAL const PDupwindNthSymm3B2 = PDupwindNthSymm3(&B2[index]); + CCTK_REAL const PDupwindNthAnti1B3 = PDupwindNthAnti1(&B3[index]); + CCTK_REAL const PDupwindNthSymm1B3 = PDupwindNthSymm1(&B3[index]); + CCTK_REAL const PDupwindNthAnti2B3 = PDupwindNthAnti2(&B3[index]); + CCTK_REAL const PDupwindNthSymm2B3 = PDupwindNthSymm2(&B3[index]); + CCTK_REAL const PDupwindNthAnti3B3 = PDupwindNthAnti3(&B3[index]); + CCTK_REAL const PDupwindNthSymm3B3 = PDupwindNthSymm3(&B3[index]); + CCTK_REAL const PDupwindNthAnti1beta1 = PDupwindNthAnti1(&beta1[index]); + CCTK_REAL const PDupwindNthSymm1beta1 = PDupwindNthSymm1(&beta1[index]); + CCTK_REAL const PDupwindNthAnti2beta1 = PDupwindNthAnti2(&beta1[index]); + CCTK_REAL const PDupwindNthSymm2beta1 = PDupwindNthSymm2(&beta1[index]); + CCTK_REAL const PDupwindNthAnti3beta1 = PDupwindNthAnti3(&beta1[index]); + CCTK_REAL const PDupwindNthSymm3beta1 = PDupwindNthSymm3(&beta1[index]); + CCTK_REAL const PDupwindNthAnti1beta2 = PDupwindNthAnti1(&beta2[index]); + CCTK_REAL const PDupwindNthSymm1beta2 = PDupwindNthSymm1(&beta2[index]); + CCTK_REAL const PDupwindNthAnti2beta2 = PDupwindNthAnti2(&beta2[index]); + CCTK_REAL const PDupwindNthSymm2beta2 = PDupwindNthSymm2(&beta2[index]); + CCTK_REAL const PDupwindNthAnti3beta2 = PDupwindNthAnti3(&beta2[index]); + CCTK_REAL const PDupwindNthSymm3beta2 = PDupwindNthSymm3(&beta2[index]); + CCTK_REAL const PDupwindNthAnti1beta3 = PDupwindNthAnti1(&beta3[index]); + CCTK_REAL const PDupwindNthSymm1beta3 = PDupwindNthSymm1(&beta3[index]); + CCTK_REAL const PDupwindNthAnti2beta3 = PDupwindNthAnti2(&beta3[index]); + CCTK_REAL const PDupwindNthSymm2beta3 = PDupwindNthSymm2(&beta3[index]); + CCTK_REAL const PDupwindNthAnti3beta3 = PDupwindNthAnti3(&beta3[index]); + CCTK_REAL const PDupwindNthSymm3beta3 = PDupwindNthSymm3(&beta3[index]); + CCTK_REAL const PDupwindNthAnti1gt11 = PDupwindNthAnti1(>11[index]); + CCTK_REAL const PDupwindNthSymm1gt11 = PDupwindNthSymm1(>11[index]); + CCTK_REAL const PDupwindNthAnti2gt11 = PDupwindNthAnti2(>11[index]); + CCTK_REAL const PDupwindNthSymm2gt11 = PDupwindNthSymm2(>11[index]); + CCTK_REAL const PDupwindNthAnti3gt11 = PDupwindNthAnti3(>11[index]); + CCTK_REAL const PDupwindNthSymm3gt11 = PDupwindNthSymm3(>11[index]); + CCTK_REAL const PDupwindNthAnti1gt12 = PDupwindNthAnti1(>12[index]); + CCTK_REAL const PDupwindNthSymm1gt12 = PDupwindNthSymm1(>12[index]); + CCTK_REAL const PDupwindNthAnti2gt12 = PDupwindNthAnti2(>12[index]); + CCTK_REAL const PDupwindNthSymm2gt12 = PDupwindNthSymm2(>12[index]); + CCTK_REAL const PDupwindNthAnti3gt12 = PDupwindNthAnti3(>12[index]); + CCTK_REAL const PDupwindNthSymm3gt12 = PDupwindNthSymm3(>12[index]); + CCTK_REAL const PDupwindNthAnti1gt13 = PDupwindNthAnti1(>13[index]); + CCTK_REAL const PDupwindNthSymm1gt13 = PDupwindNthSymm1(>13[index]); + CCTK_REAL const PDupwindNthAnti2gt13 = PDupwindNthAnti2(>13[index]); + CCTK_REAL const PDupwindNthSymm2gt13 = PDupwindNthSymm2(>13[index]); + CCTK_REAL const PDupwindNthAnti3gt13 = PDupwindNthAnti3(>13[index]); + CCTK_REAL const PDupwindNthSymm3gt13 = PDupwindNthSymm3(>13[index]); + CCTK_REAL const PDupwindNthAnti1gt22 = PDupwindNthAnti1(>22[index]); + CCTK_REAL const PDupwindNthSymm1gt22 = PDupwindNthSymm1(>22[index]); + CCTK_REAL const PDupwindNthAnti2gt22 = PDupwindNthAnti2(>22[index]); + CCTK_REAL const PDupwindNthSymm2gt22 = PDupwindNthSymm2(>22[index]); + CCTK_REAL const PDupwindNthAnti3gt22 = PDupwindNthAnti3(>22[index]); + CCTK_REAL const PDupwindNthSymm3gt22 = PDupwindNthSymm3(>22[index]); + CCTK_REAL const PDupwindNthAnti1gt23 = PDupwindNthAnti1(>23[index]); + CCTK_REAL const PDupwindNthSymm1gt23 = PDupwindNthSymm1(>23[index]); + CCTK_REAL const PDupwindNthAnti2gt23 = PDupwindNthAnti2(>23[index]); + CCTK_REAL const PDupwindNthSymm2gt23 = PDupwindNthSymm2(>23[index]); + CCTK_REAL const PDupwindNthAnti3gt23 = PDupwindNthAnti3(>23[index]); + CCTK_REAL const PDupwindNthSymm3gt23 = PDupwindNthSymm3(>23[index]); + CCTK_REAL const PDupwindNthAnti1gt33 = PDupwindNthAnti1(>33[index]); + CCTK_REAL const PDupwindNthSymm1gt33 = PDupwindNthSymm1(>33[index]); + CCTK_REAL const PDupwindNthAnti2gt33 = PDupwindNthAnti2(>33[index]); + CCTK_REAL const PDupwindNthSymm2gt33 = PDupwindNthSymm2(>33[index]); + CCTK_REAL const PDupwindNthAnti3gt33 = PDupwindNthAnti3(>33[index]); + CCTK_REAL const PDupwindNthSymm3gt33 = PDupwindNthSymm3(>33[index]); + CCTK_REAL const PDupwindNthAnti1phi = PDupwindNthAnti1(&phi[index]); + CCTK_REAL const PDupwindNthSymm1phi = PDupwindNthSymm1(&phi[index]); + CCTK_REAL const PDupwindNthAnti2phi = PDupwindNthAnti2(&phi[index]); + CCTK_REAL const PDupwindNthSymm2phi = PDupwindNthSymm2(&phi[index]); + CCTK_REAL const PDupwindNthAnti3phi = PDupwindNthAnti3(&phi[index]); + CCTK_REAL const PDupwindNthSymm3phi = PDupwindNthSymm3(&phi[index]); + CCTK_REAL const PDupwindNthAnti1trK = PDupwindNthAnti1(&trK[index]); + CCTK_REAL const PDupwindNthSymm1trK = PDupwindNthSymm1(&trK[index]); + CCTK_REAL const PDupwindNthAnti2trK = PDupwindNthAnti2(&trK[index]); + CCTK_REAL const PDupwindNthSymm2trK = PDupwindNthSymm2(&trK[index]); + CCTK_REAL const PDupwindNthAnti3trK = PDupwindNthAnti3(&trK[index]); + CCTK_REAL const PDupwindNthSymm3trK = PDupwindNthSymm3(&trK[index]); + CCTK_REAL const PDupwindNthAnti1Xt1 = PDupwindNthAnti1(&Xt1[index]); + CCTK_REAL const PDupwindNthSymm1Xt1 = PDupwindNthSymm1(&Xt1[index]); + CCTK_REAL const PDupwindNthAnti2Xt1 = PDupwindNthAnti2(&Xt1[index]); + CCTK_REAL const PDupwindNthSymm2Xt1 = PDupwindNthSymm2(&Xt1[index]); + CCTK_REAL const PDupwindNthAnti3Xt1 = PDupwindNthAnti3(&Xt1[index]); + CCTK_REAL const PDupwindNthSymm3Xt1 = PDupwindNthSymm3(&Xt1[index]); + CCTK_REAL const PDupwindNthAnti1Xt2 = PDupwindNthAnti1(&Xt2[index]); + CCTK_REAL const PDupwindNthSymm1Xt2 = PDupwindNthSymm1(&Xt2[index]); + CCTK_REAL const PDupwindNthAnti2Xt2 = PDupwindNthAnti2(&Xt2[index]); + CCTK_REAL const PDupwindNthSymm2Xt2 = PDupwindNthSymm2(&Xt2[index]); + CCTK_REAL const PDupwindNthAnti3Xt2 = PDupwindNthAnti3(&Xt2[index]); + CCTK_REAL const PDupwindNthSymm3Xt2 = PDupwindNthSymm3(&Xt2[index]); + CCTK_REAL const PDupwindNthAnti1Xt3 = PDupwindNthAnti1(&Xt3[index]); + CCTK_REAL const PDupwindNthSymm1Xt3 = PDupwindNthSymm1(&Xt3[index]); + CCTK_REAL const PDupwindNthAnti2Xt3 = PDupwindNthAnti2(&Xt3[index]); + CCTK_REAL const PDupwindNthSymm2Xt3 = PDupwindNthSymm2(&Xt3[index]); + CCTK_REAL const PDupwindNthAnti3Xt3 = PDupwindNthAnti3(&Xt3[index]); + CCTK_REAL const PDupwindNthSymm3Xt3 = PDupwindNthSymm3(&Xt3[index]); + + /* Calculate temporaries and grid functions */ + CCTK_REAL JacPDupwindNthAnti1A; + CCTK_REAL JacPDupwindNthAnti1alpha; + CCTK_REAL JacPDupwindNthAnti1At11; + CCTK_REAL JacPDupwindNthAnti1At12; + CCTK_REAL JacPDupwindNthAnti1At13; + CCTK_REAL JacPDupwindNthAnti1At22; + CCTK_REAL JacPDupwindNthAnti1At23; + CCTK_REAL JacPDupwindNthAnti1At33; + CCTK_REAL JacPDupwindNthAnti1B1; + CCTK_REAL JacPDupwindNthAnti1B2; + CCTK_REAL JacPDupwindNthAnti1B3; + CCTK_REAL JacPDupwindNthAnti1beta1; + CCTK_REAL JacPDupwindNthAnti1beta2; + CCTK_REAL JacPDupwindNthAnti1beta3; + CCTK_REAL JacPDupwindNthAnti1gt11; + CCTK_REAL JacPDupwindNthAnti1gt12; + CCTK_REAL JacPDupwindNthAnti1gt13; + CCTK_REAL JacPDupwindNthAnti1gt22; + CCTK_REAL JacPDupwindNthAnti1gt23; + CCTK_REAL JacPDupwindNthAnti1gt33; + CCTK_REAL JacPDupwindNthAnti1phi; + CCTK_REAL JacPDupwindNthAnti1trK; + CCTK_REAL JacPDupwindNthAnti1Xt1; + CCTK_REAL JacPDupwindNthAnti1Xt2; + CCTK_REAL JacPDupwindNthAnti1Xt3; + CCTK_REAL JacPDupwindNthAnti2A; + CCTK_REAL JacPDupwindNthAnti2alpha; + CCTK_REAL JacPDupwindNthAnti2At11; + CCTK_REAL JacPDupwindNthAnti2At12; + CCTK_REAL JacPDupwindNthAnti2At13; + CCTK_REAL JacPDupwindNthAnti2At22; + CCTK_REAL JacPDupwindNthAnti2At23; + CCTK_REAL JacPDupwindNthAnti2At33; + CCTK_REAL JacPDupwindNthAnti2B1; + CCTK_REAL JacPDupwindNthAnti2B2; + CCTK_REAL JacPDupwindNthAnti2B3; + CCTK_REAL JacPDupwindNthAnti2beta1; + CCTK_REAL JacPDupwindNthAnti2beta2; + CCTK_REAL JacPDupwindNthAnti2beta3; + CCTK_REAL JacPDupwindNthAnti2gt11; + CCTK_REAL JacPDupwindNthAnti2gt12; + CCTK_REAL JacPDupwindNthAnti2gt13; + CCTK_REAL JacPDupwindNthAnti2gt22; + CCTK_REAL JacPDupwindNthAnti2gt23; + CCTK_REAL JacPDupwindNthAnti2gt33; + CCTK_REAL JacPDupwindNthAnti2phi; + CCTK_REAL JacPDupwindNthAnti2trK; + CCTK_REAL JacPDupwindNthAnti2Xt1; + CCTK_REAL JacPDupwindNthAnti2Xt2; + CCTK_REAL JacPDupwindNthAnti2Xt3; + CCTK_REAL JacPDupwindNthAnti3A; + CCTK_REAL JacPDupwindNthAnti3alpha; + CCTK_REAL JacPDupwindNthAnti3At11; + CCTK_REAL JacPDupwindNthAnti3At12; + CCTK_REAL JacPDupwindNthAnti3At13; + CCTK_REAL JacPDupwindNthAnti3At22; + CCTK_REAL JacPDupwindNthAnti3At23; + CCTK_REAL JacPDupwindNthAnti3At33; + CCTK_REAL JacPDupwindNthAnti3B1; + CCTK_REAL JacPDupwindNthAnti3B2; + CCTK_REAL JacPDupwindNthAnti3B3; + CCTK_REAL JacPDupwindNthAnti3beta1; + CCTK_REAL JacPDupwindNthAnti3beta2; + CCTK_REAL JacPDupwindNthAnti3beta3; + CCTK_REAL JacPDupwindNthAnti3gt11; + CCTK_REAL JacPDupwindNthAnti3gt12; + CCTK_REAL JacPDupwindNthAnti3gt13; + CCTK_REAL JacPDupwindNthAnti3gt22; + CCTK_REAL JacPDupwindNthAnti3gt23; + CCTK_REAL JacPDupwindNthAnti3gt33; + CCTK_REAL JacPDupwindNthAnti3phi; + CCTK_REAL JacPDupwindNthAnti3trK; + CCTK_REAL JacPDupwindNthAnti3Xt1; + CCTK_REAL JacPDupwindNthAnti3Xt2; + CCTK_REAL JacPDupwindNthAnti3Xt3; + CCTK_REAL JacPDupwindNthSymm1A; + CCTK_REAL JacPDupwindNthSymm1alpha; + CCTK_REAL JacPDupwindNthSymm1At11; + CCTK_REAL JacPDupwindNthSymm1At12; + CCTK_REAL JacPDupwindNthSymm1At13; + CCTK_REAL JacPDupwindNthSymm1At22; + CCTK_REAL JacPDupwindNthSymm1At23; + CCTK_REAL JacPDupwindNthSymm1At33; + CCTK_REAL JacPDupwindNthSymm1B1; + CCTK_REAL JacPDupwindNthSymm1B2; + CCTK_REAL JacPDupwindNthSymm1B3; + CCTK_REAL JacPDupwindNthSymm1beta1; + CCTK_REAL JacPDupwindNthSymm1beta2; + CCTK_REAL JacPDupwindNthSymm1beta3; + CCTK_REAL JacPDupwindNthSymm1gt11; + CCTK_REAL JacPDupwindNthSymm1gt12; + CCTK_REAL JacPDupwindNthSymm1gt13; + CCTK_REAL JacPDupwindNthSymm1gt22; + CCTK_REAL JacPDupwindNthSymm1gt23; + CCTK_REAL JacPDupwindNthSymm1gt33; + CCTK_REAL JacPDupwindNthSymm1phi; + CCTK_REAL JacPDupwindNthSymm1trK; + CCTK_REAL JacPDupwindNthSymm1Xt1; + CCTK_REAL JacPDupwindNthSymm1Xt2; + CCTK_REAL JacPDupwindNthSymm1Xt3; + CCTK_REAL JacPDupwindNthSymm2A; + CCTK_REAL JacPDupwindNthSymm2alpha; + CCTK_REAL JacPDupwindNthSymm2At11; + CCTK_REAL JacPDupwindNthSymm2At12; + CCTK_REAL JacPDupwindNthSymm2At13; + CCTK_REAL JacPDupwindNthSymm2At22; + CCTK_REAL JacPDupwindNthSymm2At23; + CCTK_REAL JacPDupwindNthSymm2At33; + CCTK_REAL JacPDupwindNthSymm2B1; + CCTK_REAL JacPDupwindNthSymm2B2; + CCTK_REAL JacPDupwindNthSymm2B3; + CCTK_REAL JacPDupwindNthSymm2beta1; + CCTK_REAL JacPDupwindNthSymm2beta2; + CCTK_REAL JacPDupwindNthSymm2beta3; + CCTK_REAL JacPDupwindNthSymm2gt11; + CCTK_REAL JacPDupwindNthSymm2gt12; + CCTK_REAL JacPDupwindNthSymm2gt13; + CCTK_REAL JacPDupwindNthSymm2gt22; + CCTK_REAL JacPDupwindNthSymm2gt23; + CCTK_REAL JacPDupwindNthSymm2gt33; + CCTK_REAL JacPDupwindNthSymm2phi; + CCTK_REAL JacPDupwindNthSymm2trK; + CCTK_REAL JacPDupwindNthSymm2Xt1; + CCTK_REAL JacPDupwindNthSymm2Xt2; + CCTK_REAL JacPDupwindNthSymm2Xt3; + CCTK_REAL JacPDupwindNthSymm3A; + CCTK_REAL JacPDupwindNthSymm3alpha; + CCTK_REAL JacPDupwindNthSymm3At11; + CCTK_REAL JacPDupwindNthSymm3At12; + CCTK_REAL JacPDupwindNthSymm3At13; + CCTK_REAL JacPDupwindNthSymm3At22; + CCTK_REAL JacPDupwindNthSymm3At23; + CCTK_REAL JacPDupwindNthSymm3At33; + CCTK_REAL JacPDupwindNthSymm3B1; + CCTK_REAL JacPDupwindNthSymm3B2; + CCTK_REAL JacPDupwindNthSymm3B3; + CCTK_REAL JacPDupwindNthSymm3beta1; + CCTK_REAL JacPDupwindNthSymm3beta2; + CCTK_REAL JacPDupwindNthSymm3beta3; + CCTK_REAL JacPDupwindNthSymm3gt11; + CCTK_REAL JacPDupwindNthSymm3gt12; + CCTK_REAL JacPDupwindNthSymm3gt13; + CCTK_REAL JacPDupwindNthSymm3gt22; + CCTK_REAL JacPDupwindNthSymm3gt23; + CCTK_REAL JacPDupwindNthSymm3gt33; + CCTK_REAL JacPDupwindNthSymm3phi; + CCTK_REAL JacPDupwindNthSymm3trK; + CCTK_REAL JacPDupwindNthSymm3Xt1; + CCTK_REAL JacPDupwindNthSymm3Xt2; + CCTK_REAL JacPDupwindNthSymm3Xt3; + + if (use_jacobian) + { + JacPDupwindNthAnti1A = J11L*PDupwindNthAnti1A + J21L*PDupwindNthAnti2A + + J31L*PDupwindNthAnti3A; + + JacPDupwindNthAnti1alpha = J11L*PDupwindNthAnti1alpha + + J21L*PDupwindNthAnti2alpha + J31L*PDupwindNthAnti3alpha; + + JacPDupwindNthAnti1At11 = J11L*PDupwindNthAnti1At11 + + J21L*PDupwindNthAnti2At11 + J31L*PDupwindNthAnti3At11; + + JacPDupwindNthAnti1At12 = J11L*PDupwindNthAnti1At12 + + J21L*PDupwindNthAnti2At12 + J31L*PDupwindNthAnti3At12; + + JacPDupwindNthAnti1At13 = J11L*PDupwindNthAnti1At13 + + J21L*PDupwindNthAnti2At13 + J31L*PDupwindNthAnti3At13; + + JacPDupwindNthAnti1At22 = J11L*PDupwindNthAnti1At22 + + J21L*PDupwindNthAnti2At22 + J31L*PDupwindNthAnti3At22; + + JacPDupwindNthAnti1At23 = J11L*PDupwindNthAnti1At23 + + J21L*PDupwindNthAnti2At23 + J31L*PDupwindNthAnti3At23; + + JacPDupwindNthAnti1At33 = J11L*PDupwindNthAnti1At33 + + J21L*PDupwindNthAnti2At33 + J31L*PDupwindNthAnti3At33; + + JacPDupwindNthAnti1B1 = J11L*PDupwindNthAnti1B1 + + J21L*PDupwindNthAnti2B1 + J31L*PDupwindNthAnti3B1; + + JacPDupwindNthAnti1B2 = J11L*PDupwindNthAnti1B2 + + J21L*PDupwindNthAnti2B2 + J31L*PDupwindNthAnti3B2; + + JacPDupwindNthAnti1B3 = J11L*PDupwindNthAnti1B3 + + J21L*PDupwindNthAnti2B3 + J31L*PDupwindNthAnti3B3; + + JacPDupwindNthAnti1beta1 = J11L*PDupwindNthAnti1beta1 + + J21L*PDupwindNthAnti2beta1 + J31L*PDupwindNthAnti3beta1; + + JacPDupwindNthAnti1beta2 = J11L*PDupwindNthAnti1beta2 + + J21L*PDupwindNthAnti2beta2 + J31L*PDupwindNthAnti3beta2; + + JacPDupwindNthAnti1beta3 = J11L*PDupwindNthAnti1beta3 + + J21L*PDupwindNthAnti2beta3 + J31L*PDupwindNthAnti3beta3; + + JacPDupwindNthAnti1gt11 = J11L*PDupwindNthAnti1gt11 + + J21L*PDupwindNthAnti2gt11 + J31L*PDupwindNthAnti3gt11; + + JacPDupwindNthAnti1gt12 = J11L*PDupwindNthAnti1gt12 + + J21L*PDupwindNthAnti2gt12 + J31L*PDupwindNthAnti3gt12; + + JacPDupwindNthAnti1gt13 = J11L*PDupwindNthAnti1gt13 + + J21L*PDupwindNthAnti2gt13 + J31L*PDupwindNthAnti3gt13; + + JacPDupwindNthAnti1gt22 = J11L*PDupwindNthAnti1gt22 + + J21L*PDupwindNthAnti2gt22 + J31L*PDupwindNthAnti3gt22; + + JacPDupwindNthAnti1gt23 = J11L*PDupwindNthAnti1gt23 + + J21L*PDupwindNthAnti2gt23 + J31L*PDupwindNthAnti3gt23; + + JacPDupwindNthAnti1gt33 = J11L*PDupwindNthAnti1gt33 + + J21L*PDupwindNthAnti2gt33 + J31L*PDupwindNthAnti3gt33; + + JacPDupwindNthAnti1phi = J11L*PDupwindNthAnti1phi + + J21L*PDupwindNthAnti2phi + J31L*PDupwindNthAnti3phi; + + JacPDupwindNthAnti1trK = J11L*PDupwindNthAnti1trK + + J21L*PDupwindNthAnti2trK + J31L*PDupwindNthAnti3trK; + + JacPDupwindNthAnti1Xt1 = J11L*PDupwindNthAnti1Xt1 + + J21L*PDupwindNthAnti2Xt1 + J31L*PDupwindNthAnti3Xt1; + + JacPDupwindNthAnti1Xt2 = J11L*PDupwindNthAnti1Xt2 + + J21L*PDupwindNthAnti2Xt2 + J31L*PDupwindNthAnti3Xt2; + + JacPDupwindNthAnti1Xt3 = J11L*PDupwindNthAnti1Xt3 + + J21L*PDupwindNthAnti2Xt3 + J31L*PDupwindNthAnti3Xt3; + + JacPDupwindNthSymm1A = J11L*PDupwindNthSymm1A + J21L*PDupwindNthSymm2A + + J31L*PDupwindNthSymm3A; + + JacPDupwindNthSymm1alpha = J11L*PDupwindNthSymm1alpha + + J21L*PDupwindNthSymm2alpha + J31L*PDupwindNthSymm3alpha; + + JacPDupwindNthSymm1At11 = J11L*PDupwindNthSymm1At11 + + J21L*PDupwindNthSymm2At11 + J31L*PDupwindNthSymm3At11; + + JacPDupwindNthSymm1At12 = J11L*PDupwindNthSymm1At12 + + J21L*PDupwindNthSymm2At12 + J31L*PDupwindNthSymm3At12; + + JacPDupwindNthSymm1At13 = J11L*PDupwindNthSymm1At13 + + J21L*PDupwindNthSymm2At13 + J31L*PDupwindNthSymm3At13; + + JacPDupwindNthSymm1At22 = J11L*PDupwindNthSymm1At22 + + J21L*PDupwindNthSymm2At22 + J31L*PDupwindNthSymm3At22; + + JacPDupwindNthSymm1At23 = J11L*PDupwindNthSymm1At23 + + J21L*PDupwindNthSymm2At23 + J31L*PDupwindNthSymm3At23; + + JacPDupwindNthSymm1At33 = J11L*PDupwindNthSymm1At33 + + J21L*PDupwindNthSymm2At33 + J31L*PDupwindNthSymm3At33; + + JacPDupwindNthSymm1B1 = J11L*PDupwindNthSymm1B1 + + J21L*PDupwindNthSymm2B1 + J31L*PDupwindNthSymm3B1; + + JacPDupwindNthSymm1B2 = J11L*PDupwindNthSymm1B2 + + J21L*PDupwindNthSymm2B2 + J31L*PDupwindNthSymm3B2; + + JacPDupwindNthSymm1B3 = J11L*PDupwindNthSymm1B3 + + J21L*PDupwindNthSymm2B3 + J31L*PDupwindNthSymm3B3; + + JacPDupwindNthSymm1beta1 = J11L*PDupwindNthSymm1beta1 + + J21L*PDupwindNthSymm2beta1 + J31L*PDupwindNthSymm3beta1; + + JacPDupwindNthSymm1beta2 = J11L*PDupwindNthSymm1beta2 + + J21L*PDupwindNthSymm2beta2 + J31L*PDupwindNthSymm3beta2; + + JacPDupwindNthSymm1beta3 = J11L*PDupwindNthSymm1beta3 + + J21L*PDupwindNthSymm2beta3 + J31L*PDupwindNthSymm3beta3; + + JacPDupwindNthSymm1gt11 = J11L*PDupwindNthSymm1gt11 + + J21L*PDupwindNthSymm2gt11 + J31L*PDupwindNthSymm3gt11; + + JacPDupwindNthSymm1gt12 = J11L*PDupwindNthSymm1gt12 + + J21L*PDupwindNthSymm2gt12 + J31L*PDupwindNthSymm3gt12; + + JacPDupwindNthSymm1gt13 = J11L*PDupwindNthSymm1gt13 + + J21L*PDupwindNthSymm2gt13 + J31L*PDupwindNthSymm3gt13; + + JacPDupwindNthSymm1gt22 = J11L*PDupwindNthSymm1gt22 + + J21L*PDupwindNthSymm2gt22 + J31L*PDupwindNthSymm3gt22; + + JacPDupwindNthSymm1gt23 = J11L*PDupwindNthSymm1gt23 + + J21L*PDupwindNthSymm2gt23 + J31L*PDupwindNthSymm3gt23; + + JacPDupwindNthSymm1gt33 = J11L*PDupwindNthSymm1gt33 + + J21L*PDupwindNthSymm2gt33 + J31L*PDupwindNthSymm3gt33; + + JacPDupwindNthSymm1phi = J11L*PDupwindNthSymm1phi + + J21L*PDupwindNthSymm2phi + J31L*PDupwindNthSymm3phi; + + JacPDupwindNthSymm1trK = J11L*PDupwindNthSymm1trK + + J21L*PDupwindNthSymm2trK + J31L*PDupwindNthSymm3trK; + + JacPDupwindNthSymm1Xt1 = J11L*PDupwindNthSymm1Xt1 + + J21L*PDupwindNthSymm2Xt1 + J31L*PDupwindNthSymm3Xt1; + + JacPDupwindNthSymm1Xt2 = J11L*PDupwindNthSymm1Xt2 + + J21L*PDupwindNthSymm2Xt2 + J31L*PDupwindNthSymm3Xt2; + + JacPDupwindNthSymm1Xt3 = J11L*PDupwindNthSymm1Xt3 + + J21L*PDupwindNthSymm2Xt3 + J31L*PDupwindNthSymm3Xt3; + + JacPDupwindNthAnti2A = J12L*PDupwindNthAnti1A + J22L*PDupwindNthAnti2A + + J32L*PDupwindNthAnti3A; + + JacPDupwindNthAnti2alpha = J12L*PDupwindNthAnti1alpha + + J22L*PDupwindNthAnti2alpha + J32L*PDupwindNthAnti3alpha; + + JacPDupwindNthAnti2At11 = J12L*PDupwindNthAnti1At11 + + J22L*PDupwindNthAnti2At11 + J32L*PDupwindNthAnti3At11; + + JacPDupwindNthAnti2At12 = J12L*PDupwindNthAnti1At12 + + J22L*PDupwindNthAnti2At12 + J32L*PDupwindNthAnti3At12; + + JacPDupwindNthAnti2At13 = J12L*PDupwindNthAnti1At13 + + J22L*PDupwindNthAnti2At13 + J32L*PDupwindNthAnti3At13; + + JacPDupwindNthAnti2At22 = J12L*PDupwindNthAnti1At22 + + J22L*PDupwindNthAnti2At22 + J32L*PDupwindNthAnti3At22; + + JacPDupwindNthAnti2At23 = J12L*PDupwindNthAnti1At23 + + J22L*PDupwindNthAnti2At23 + J32L*PDupwindNthAnti3At23; + + JacPDupwindNthAnti2At33 = J12L*PDupwindNthAnti1At33 + + J22L*PDupwindNthAnti2At33 + J32L*PDupwindNthAnti3At33; + + JacPDupwindNthAnti2B1 = J12L*PDupwindNthAnti1B1 + + J22L*PDupwindNthAnti2B1 + J32L*PDupwindNthAnti3B1; + + JacPDupwindNthAnti2B2 = J12L*PDupwindNthAnti1B2 + + J22L*PDupwindNthAnti2B2 + J32L*PDupwindNthAnti3B2; + + JacPDupwindNthAnti2B3 = J12L*PDupwindNthAnti1B3 + + J22L*PDupwindNthAnti2B3 + J32L*PDupwindNthAnti3B3; + + JacPDupwindNthAnti2beta1 = J12L*PDupwindNthAnti1beta1 + + J22L*PDupwindNthAnti2beta1 + J32L*PDupwindNthAnti3beta1; + + JacPDupwindNthAnti2beta2 = J12L*PDupwindNthAnti1beta2 + + J22L*PDupwindNthAnti2beta2 + J32L*PDupwindNthAnti3beta2; + + JacPDupwindNthAnti2beta3 = J12L*PDupwindNthAnti1beta3 + + J22L*PDupwindNthAnti2beta3 + J32L*PDupwindNthAnti3beta3; + + JacPDupwindNthAnti2gt11 = J12L*PDupwindNthAnti1gt11 + + J22L*PDupwindNthAnti2gt11 + J32L*PDupwindNthAnti3gt11; + + JacPDupwindNthAnti2gt12 = J12L*PDupwindNthAnti1gt12 + + J22L*PDupwindNthAnti2gt12 + J32L*PDupwindNthAnti3gt12; + + JacPDupwindNthAnti2gt13 = J12L*PDupwindNthAnti1gt13 + + J22L*PDupwindNthAnti2gt13 + J32L*PDupwindNthAnti3gt13; + + JacPDupwindNthAnti2gt22 = J12L*PDupwindNthAnti1gt22 + + J22L*PDupwindNthAnti2gt22 + J32L*PDupwindNthAnti3gt22; + + JacPDupwindNthAnti2gt23 = J12L*PDupwindNthAnti1gt23 + + J22L*PDupwindNthAnti2gt23 + J32L*PDupwindNthAnti3gt23; + + JacPDupwindNthAnti2gt33 = J12L*PDupwindNthAnti1gt33 + + J22L*PDupwindNthAnti2gt33 + J32L*PDupwindNthAnti3gt33; + + JacPDupwindNthAnti2phi = J12L*PDupwindNthAnti1phi + + J22L*PDupwindNthAnti2phi + J32L*PDupwindNthAnti3phi; + + JacPDupwindNthAnti2trK = J12L*PDupwindNthAnti1trK + + J22L*PDupwindNthAnti2trK + J32L*PDupwindNthAnti3trK; + + JacPDupwindNthAnti2Xt1 = J12L*PDupwindNthAnti1Xt1 + + J22L*PDupwindNthAnti2Xt1 + J32L*PDupwindNthAnti3Xt1; + + JacPDupwindNthAnti2Xt2 = J12L*PDupwindNthAnti1Xt2 + + J22L*PDupwindNthAnti2Xt2 + J32L*PDupwindNthAnti3Xt2; + + JacPDupwindNthAnti2Xt3 = J12L*PDupwindNthAnti1Xt3 + + J22L*PDupwindNthAnti2Xt3 + J32L*PDupwindNthAnti3Xt3; + + JacPDupwindNthSymm2A = J12L*PDupwindNthSymm1A + J22L*PDupwindNthSymm2A + + J32L*PDupwindNthSymm3A; + + JacPDupwindNthSymm2alpha = J12L*PDupwindNthSymm1alpha + + J22L*PDupwindNthSymm2alpha + J32L*PDupwindNthSymm3alpha; + + JacPDupwindNthSymm2At11 = J12L*PDupwindNthSymm1At11 + + J22L*PDupwindNthSymm2At11 + J32L*PDupwindNthSymm3At11; + + JacPDupwindNthSymm2At12 = J12L*PDupwindNthSymm1At12 + + J22L*PDupwindNthSymm2At12 + J32L*PDupwindNthSymm3At12; + + JacPDupwindNthSymm2At13 = J12L*PDupwindNthSymm1At13 + + J22L*PDupwindNthSymm2At13 + J32L*PDupwindNthSymm3At13; + + JacPDupwindNthSymm2At22 = J12L*PDupwindNthSymm1At22 + + J22L*PDupwindNthSymm2At22 + J32L*PDupwindNthSymm3At22; + + JacPDupwindNthSymm2At23 = J12L*PDupwindNthSymm1At23 + + J22L*PDupwindNthSymm2At23 + J32L*PDupwindNthSymm3At23; + + JacPDupwindNthSymm2At33 = J12L*PDupwindNthSymm1At33 + + J22L*PDupwindNthSymm2At33 + J32L*PDupwindNthSymm3At33; + + JacPDupwindNthSymm2B1 = J12L*PDupwindNthSymm1B1 + + J22L*PDupwindNthSymm2B1 + J32L*PDupwindNthSymm3B1; + + JacPDupwindNthSymm2B2 = J12L*PDupwindNthSymm1B2 + + J22L*PDupwindNthSymm2B2 + J32L*PDupwindNthSymm3B2; + + JacPDupwindNthSymm2B3 = J12L*PDupwindNthSymm1B3 + + J22L*PDupwindNthSymm2B3 + J32L*PDupwindNthSymm3B3; + + JacPDupwindNthSymm2beta1 = J12L*PDupwindNthSymm1beta1 + + J22L*PDupwindNthSymm2beta1 + J32L*PDupwindNthSymm3beta1; + + JacPDupwindNthSymm2beta2 = J12L*PDupwindNthSymm1beta2 + + J22L*PDupwindNthSymm2beta2 + J32L*PDupwindNthSymm3beta2; + + JacPDupwindNthSymm2beta3 = J12L*PDupwindNthSymm1beta3 + + J22L*PDupwindNthSymm2beta3 + J32L*PDupwindNthSymm3beta3; + + JacPDupwindNthSymm2gt11 = J12L*PDupwindNthSymm1gt11 + + J22L*PDupwindNthSymm2gt11 + J32L*PDupwindNthSymm3gt11; + + JacPDupwindNthSymm2gt12 = J12L*PDupwindNthSymm1gt12 + + J22L*PDupwindNthSymm2gt12 + J32L*PDupwindNthSymm3gt12; + + JacPDupwindNthSymm2gt13 = J12L*PDupwindNthSymm1gt13 + + J22L*PDupwindNthSymm2gt13 + J32L*PDupwindNthSymm3gt13; + + JacPDupwindNthSymm2gt22 = J12L*PDupwindNthSymm1gt22 + + J22L*PDupwindNthSymm2gt22 + J32L*PDupwindNthSymm3gt22; + + JacPDupwindNthSymm2gt23 = J12L*PDupwindNthSymm1gt23 + + J22L*PDupwindNthSymm2gt23 + J32L*PDupwindNthSymm3gt23; + + JacPDupwindNthSymm2gt33 = J12L*PDupwindNthSymm1gt33 + + J22L*PDupwindNthSymm2gt33 + J32L*PDupwindNthSymm3gt33; + + JacPDupwindNthSymm2phi = J12L*PDupwindNthSymm1phi + + J22L*PDupwindNthSymm2phi + J32L*PDupwindNthSymm3phi; + + JacPDupwindNthSymm2trK = J12L*PDupwindNthSymm1trK + + J22L*PDupwindNthSymm2trK + J32L*PDupwindNthSymm3trK; + + JacPDupwindNthSymm2Xt1 = J12L*PDupwindNthSymm1Xt1 + + J22L*PDupwindNthSymm2Xt1 + J32L*PDupwindNthSymm3Xt1; + + JacPDupwindNthSymm2Xt2 = J12L*PDupwindNthSymm1Xt2 + + J22L*PDupwindNthSymm2Xt2 + J32L*PDupwindNthSymm3Xt2; + + JacPDupwindNthSymm2Xt3 = J12L*PDupwindNthSymm1Xt3 + + J22L*PDupwindNthSymm2Xt3 + J32L*PDupwindNthSymm3Xt3; + + JacPDupwindNthAnti3A = J13L*PDupwindNthAnti1A + J23L*PDupwindNthAnti2A + + J33L*PDupwindNthAnti3A; + + JacPDupwindNthAnti3alpha = J13L*PDupwindNthAnti1alpha + + J23L*PDupwindNthAnti2alpha + J33L*PDupwindNthAnti3alpha; + + JacPDupwindNthAnti3At11 = J13L*PDupwindNthAnti1At11 + + J23L*PDupwindNthAnti2At11 + J33L*PDupwindNthAnti3At11; + + JacPDupwindNthAnti3At12 = J13L*PDupwindNthAnti1At12 + + J23L*PDupwindNthAnti2At12 + J33L*PDupwindNthAnti3At12; + + JacPDupwindNthAnti3At13 = J13L*PDupwindNthAnti1At13 + + J23L*PDupwindNthAnti2At13 + J33L*PDupwindNthAnti3At13; + + JacPDupwindNthAnti3At22 = J13L*PDupwindNthAnti1At22 + + J23L*PDupwindNthAnti2At22 + J33L*PDupwindNthAnti3At22; + + JacPDupwindNthAnti3At23 = J13L*PDupwindNthAnti1At23 + + J23L*PDupwindNthAnti2At23 + J33L*PDupwindNthAnti3At23; + + JacPDupwindNthAnti3At33 = J13L*PDupwindNthAnti1At33 + + J23L*PDupwindNthAnti2At33 + J33L*PDupwindNthAnti3At33; + + JacPDupwindNthAnti3B1 = J13L*PDupwindNthAnti1B1 + + J23L*PDupwindNthAnti2B1 + J33L*PDupwindNthAnti3B1; + + JacPDupwindNthAnti3B2 = J13L*PDupwindNthAnti1B2 + + J23L*PDupwindNthAnti2B2 + J33L*PDupwindNthAnti3B2; + + JacPDupwindNthAnti3B3 = J13L*PDupwindNthAnti1B3 + + J23L*PDupwindNthAnti2B3 + J33L*PDupwindNthAnti3B3; + + JacPDupwindNthAnti3beta1 = J13L*PDupwindNthAnti1beta1 + + J23L*PDupwindNthAnti2beta1 + J33L*PDupwindNthAnti3beta1; + + JacPDupwindNthAnti3beta2 = J13L*PDupwindNthAnti1beta2 + + J23L*PDupwindNthAnti2beta2 + J33L*PDupwindNthAnti3beta2; + + JacPDupwindNthAnti3beta3 = J13L*PDupwindNthAnti1beta3 + + J23L*PDupwindNthAnti2beta3 + J33L*PDupwindNthAnti3beta3; + + JacPDupwindNthAnti3gt11 = J13L*PDupwindNthAnti1gt11 + + J23L*PDupwindNthAnti2gt11 + J33L*PDupwindNthAnti3gt11; + + JacPDupwindNthAnti3gt12 = J13L*PDupwindNthAnti1gt12 + + J23L*PDupwindNthAnti2gt12 + J33L*PDupwindNthAnti3gt12; + + JacPDupwindNthAnti3gt13 = J13L*PDupwindNthAnti1gt13 + + J23L*PDupwindNthAnti2gt13 + J33L*PDupwindNthAnti3gt13; + + JacPDupwindNthAnti3gt22 = J13L*PDupwindNthAnti1gt22 + + J23L*PDupwindNthAnti2gt22 + J33L*PDupwindNthAnti3gt22; + + JacPDupwindNthAnti3gt23 = J13L*PDupwindNthAnti1gt23 + + J23L*PDupwindNthAnti2gt23 + J33L*PDupwindNthAnti3gt23; + + JacPDupwindNthAnti3gt33 = J13L*PDupwindNthAnti1gt33 + + J23L*PDupwindNthAnti2gt33 + J33L*PDupwindNthAnti3gt33; + + JacPDupwindNthAnti3phi = J13L*PDupwindNthAnti1phi + + J23L*PDupwindNthAnti2phi + J33L*PDupwindNthAnti3phi; + + JacPDupwindNthAnti3trK = J13L*PDupwindNthAnti1trK + + J23L*PDupwindNthAnti2trK + J33L*PDupwindNthAnti3trK; + + JacPDupwindNthAnti3Xt1 = J13L*PDupwindNthAnti1Xt1 + + J23L*PDupwindNthAnti2Xt1 + J33L*PDupwindNthAnti3Xt1; + + JacPDupwindNthAnti3Xt2 = J13L*PDupwindNthAnti1Xt2 + + J23L*PDupwindNthAnti2Xt2 + J33L*PDupwindNthAnti3Xt2; + + JacPDupwindNthAnti3Xt3 = J13L*PDupwindNthAnti1Xt3 + + J23L*PDupwindNthAnti2Xt3 + J33L*PDupwindNthAnti3Xt3; + + JacPDupwindNthSymm3A = J13L*PDupwindNthSymm1A + J23L*PDupwindNthSymm2A + + J33L*PDupwindNthSymm3A; + + JacPDupwindNthSymm3alpha = J13L*PDupwindNthSymm1alpha + + J23L*PDupwindNthSymm2alpha + J33L*PDupwindNthSymm3alpha; + + JacPDupwindNthSymm3At11 = J13L*PDupwindNthSymm1At11 + + J23L*PDupwindNthSymm2At11 + J33L*PDupwindNthSymm3At11; + + JacPDupwindNthSymm3At12 = J13L*PDupwindNthSymm1At12 + + J23L*PDupwindNthSymm2At12 + J33L*PDupwindNthSymm3At12; + + JacPDupwindNthSymm3At13 = J13L*PDupwindNthSymm1At13 + + J23L*PDupwindNthSymm2At13 + J33L*PDupwindNthSymm3At13; + + JacPDupwindNthSymm3At22 = J13L*PDupwindNthSymm1At22 + + J23L*PDupwindNthSymm2At22 + J33L*PDupwindNthSymm3At22; + + JacPDupwindNthSymm3At23 = J13L*PDupwindNthSymm1At23 + + J23L*PDupwindNthSymm2At23 + J33L*PDupwindNthSymm3At23; + + JacPDupwindNthSymm3At33 = J13L*PDupwindNthSymm1At33 + + J23L*PDupwindNthSymm2At33 + J33L*PDupwindNthSymm3At33; + + JacPDupwindNthSymm3B1 = J13L*PDupwindNthSymm1B1 + + J23L*PDupwindNthSymm2B1 + J33L*PDupwindNthSymm3B1; + + JacPDupwindNthSymm3B2 = J13L*PDupwindNthSymm1B2 + + J23L*PDupwindNthSymm2B2 + J33L*PDupwindNthSymm3B2; + + JacPDupwindNthSymm3B3 = J13L*PDupwindNthSymm1B3 + + J23L*PDupwindNthSymm2B3 + J33L*PDupwindNthSymm3B3; + + JacPDupwindNthSymm3beta1 = J13L*PDupwindNthSymm1beta1 + + J23L*PDupwindNthSymm2beta1 + J33L*PDupwindNthSymm3beta1; + + JacPDupwindNthSymm3beta2 = J13L*PDupwindNthSymm1beta2 + + J23L*PDupwindNthSymm2beta2 + J33L*PDupwindNthSymm3beta2; + + JacPDupwindNthSymm3beta3 = J13L*PDupwindNthSymm1beta3 + + J23L*PDupwindNthSymm2beta3 + J33L*PDupwindNthSymm3beta3; + + JacPDupwindNthSymm3gt11 = J13L*PDupwindNthSymm1gt11 + + J23L*PDupwindNthSymm2gt11 + J33L*PDupwindNthSymm3gt11; + + JacPDupwindNthSymm3gt12 = J13L*PDupwindNthSymm1gt12 + + J23L*PDupwindNthSymm2gt12 + J33L*PDupwindNthSymm3gt12; + + JacPDupwindNthSymm3gt13 = J13L*PDupwindNthSymm1gt13 + + J23L*PDupwindNthSymm2gt13 + J33L*PDupwindNthSymm3gt13; + + JacPDupwindNthSymm3gt22 = J13L*PDupwindNthSymm1gt22 + + J23L*PDupwindNthSymm2gt22 + J33L*PDupwindNthSymm3gt22; + + JacPDupwindNthSymm3gt23 = J13L*PDupwindNthSymm1gt23 + + J23L*PDupwindNthSymm2gt23 + J33L*PDupwindNthSymm3gt23; + + JacPDupwindNthSymm3gt33 = J13L*PDupwindNthSymm1gt33 + + J23L*PDupwindNthSymm2gt33 + J33L*PDupwindNthSymm3gt33; + + JacPDupwindNthSymm3phi = J13L*PDupwindNthSymm1phi + + J23L*PDupwindNthSymm2phi + J33L*PDupwindNthSymm3phi; + + JacPDupwindNthSymm3trK = J13L*PDupwindNthSymm1trK + + J23L*PDupwindNthSymm2trK + J33L*PDupwindNthSymm3trK; + + JacPDupwindNthSymm3Xt1 = J13L*PDupwindNthSymm1Xt1 + + J23L*PDupwindNthSymm2Xt1 + J33L*PDupwindNthSymm3Xt1; + + JacPDupwindNthSymm3Xt2 = J13L*PDupwindNthSymm1Xt2 + + J23L*PDupwindNthSymm2Xt2 + J33L*PDupwindNthSymm3Xt2; + + JacPDupwindNthSymm3Xt3 = J13L*PDupwindNthSymm1Xt3 + + J23L*PDupwindNthSymm2Xt3 + J33L*PDupwindNthSymm3Xt3; + } + else + { + JacPDupwindNthAnti1A = PDupwindNthAnti1A; + + JacPDupwindNthAnti1alpha = PDupwindNthAnti1alpha; + + JacPDupwindNthAnti1At11 = PDupwindNthAnti1At11; + + JacPDupwindNthAnti1At12 = PDupwindNthAnti1At12; + + JacPDupwindNthAnti1At13 = PDupwindNthAnti1At13; + + JacPDupwindNthAnti1At22 = PDupwindNthAnti1At22; + + JacPDupwindNthAnti1At23 = PDupwindNthAnti1At23; + + JacPDupwindNthAnti1At33 = PDupwindNthAnti1At33; + + JacPDupwindNthAnti1B1 = PDupwindNthAnti1B1; + + JacPDupwindNthAnti1B2 = PDupwindNthAnti1B2; + + JacPDupwindNthAnti1B3 = PDupwindNthAnti1B3; + + JacPDupwindNthAnti1beta1 = PDupwindNthAnti1beta1; + + JacPDupwindNthAnti1beta2 = PDupwindNthAnti1beta2; + + JacPDupwindNthAnti1beta3 = PDupwindNthAnti1beta3; + + JacPDupwindNthAnti1gt11 = PDupwindNthAnti1gt11; + + JacPDupwindNthAnti1gt12 = PDupwindNthAnti1gt12; + + JacPDupwindNthAnti1gt13 = PDupwindNthAnti1gt13; + + JacPDupwindNthAnti1gt22 = PDupwindNthAnti1gt22; + + JacPDupwindNthAnti1gt23 = PDupwindNthAnti1gt23; + + JacPDupwindNthAnti1gt33 = PDupwindNthAnti1gt33; + + JacPDupwindNthAnti1phi = PDupwindNthAnti1phi; + + JacPDupwindNthAnti1trK = PDupwindNthAnti1trK; + + JacPDupwindNthAnti1Xt1 = PDupwindNthAnti1Xt1; + + JacPDupwindNthAnti1Xt2 = PDupwindNthAnti1Xt2; + + JacPDupwindNthAnti1Xt3 = PDupwindNthAnti1Xt3; + + JacPDupwindNthSymm1A = PDupwindNthSymm1A; + + JacPDupwindNthSymm1alpha = PDupwindNthSymm1alpha; + + JacPDupwindNthSymm1At11 = PDupwindNthSymm1At11; + + JacPDupwindNthSymm1At12 = PDupwindNthSymm1At12; + + JacPDupwindNthSymm1At13 = PDupwindNthSymm1At13; + + JacPDupwindNthSymm1At22 = PDupwindNthSymm1At22; + + JacPDupwindNthSymm1At23 = PDupwindNthSymm1At23; + + JacPDupwindNthSymm1At33 = PDupwindNthSymm1At33; + + JacPDupwindNthSymm1B1 = PDupwindNthSymm1B1; + + JacPDupwindNthSymm1B2 = PDupwindNthSymm1B2; + + JacPDupwindNthSymm1B3 = PDupwindNthSymm1B3; + + JacPDupwindNthSymm1beta1 = PDupwindNthSymm1beta1; + + JacPDupwindNthSymm1beta2 = PDupwindNthSymm1beta2; + + JacPDupwindNthSymm1beta3 = PDupwindNthSymm1beta3; + + JacPDupwindNthSymm1gt11 = PDupwindNthSymm1gt11; + + JacPDupwindNthSymm1gt12 = PDupwindNthSymm1gt12; + + JacPDupwindNthSymm1gt13 = PDupwindNthSymm1gt13; + + JacPDupwindNthSymm1gt22 = PDupwindNthSymm1gt22; + + JacPDupwindNthSymm1gt23 = PDupwindNthSymm1gt23; + + JacPDupwindNthSymm1gt33 = PDupwindNthSymm1gt33; + + JacPDupwindNthSymm1phi = PDupwindNthSymm1phi; + + JacPDupwindNthSymm1trK = PDupwindNthSymm1trK; + + JacPDupwindNthSymm1Xt1 = PDupwindNthSymm1Xt1; + + JacPDupwindNthSymm1Xt2 = PDupwindNthSymm1Xt2; + + JacPDupwindNthSymm1Xt3 = PDupwindNthSymm1Xt3; + + JacPDupwindNthAnti2A = PDupwindNthAnti2A; + + JacPDupwindNthAnti2alpha = PDupwindNthAnti2alpha; + + JacPDupwindNthAnti2At11 = PDupwindNthAnti2At11; + + JacPDupwindNthAnti2At12 = PDupwindNthAnti2At12; + + JacPDupwindNthAnti2At13 = PDupwindNthAnti2At13; + + JacPDupwindNthAnti2At22 = PDupwindNthAnti2At22; + + JacPDupwindNthAnti2At23 = PDupwindNthAnti2At23; + + JacPDupwindNthAnti2At33 = PDupwindNthAnti2At33; + + JacPDupwindNthAnti2B1 = PDupwindNthAnti2B1; + + JacPDupwindNthAnti2B2 = PDupwindNthAnti2B2; + + JacPDupwindNthAnti2B3 = PDupwindNthAnti2B3; + + JacPDupwindNthAnti2beta1 = PDupwindNthAnti2beta1; + + JacPDupwindNthAnti2beta2 = PDupwindNthAnti2beta2; + + JacPDupwindNthAnti2beta3 = PDupwindNthAnti2beta3; + + JacPDupwindNthAnti2gt11 = PDupwindNthAnti2gt11; + + JacPDupwindNthAnti2gt12 = PDupwindNthAnti2gt12; + + JacPDupwindNthAnti2gt13 = PDupwindNthAnti2gt13; + + JacPDupwindNthAnti2gt22 = PDupwindNthAnti2gt22; + + JacPDupwindNthAnti2gt23 = PDupwindNthAnti2gt23; + + JacPDupwindNthAnti2gt33 = PDupwindNthAnti2gt33; + + JacPDupwindNthAnti2phi = PDupwindNthAnti2phi; + + JacPDupwindNthAnti2trK = PDupwindNthAnti2trK; + + JacPDupwindNthAnti2Xt1 = PDupwindNthAnti2Xt1; + + JacPDupwindNthAnti2Xt2 = PDupwindNthAnti2Xt2; + + JacPDupwindNthAnti2Xt3 = PDupwindNthAnti2Xt3; + + JacPDupwindNthSymm2A = PDupwindNthSymm2A; + + JacPDupwindNthSymm2alpha = PDupwindNthSymm2alpha; + + JacPDupwindNthSymm2At11 = PDupwindNthSymm2At11; + + JacPDupwindNthSymm2At12 = PDupwindNthSymm2At12; + + JacPDupwindNthSymm2At13 = PDupwindNthSymm2At13; + + JacPDupwindNthSymm2At22 = PDupwindNthSymm2At22; + + JacPDupwindNthSymm2At23 = PDupwindNthSymm2At23; + + JacPDupwindNthSymm2At33 = PDupwindNthSymm2At33; + + JacPDupwindNthSymm2B1 = PDupwindNthSymm2B1; + + JacPDupwindNthSymm2B2 = PDupwindNthSymm2B2; + + JacPDupwindNthSymm2B3 = PDupwindNthSymm2B3; + + JacPDupwindNthSymm2beta1 = PDupwindNthSymm2beta1; + + JacPDupwindNthSymm2beta2 = PDupwindNthSymm2beta2; + + JacPDupwindNthSymm2beta3 = PDupwindNthSymm2beta3; + + JacPDupwindNthSymm2gt11 = PDupwindNthSymm2gt11; + + JacPDupwindNthSymm2gt12 = PDupwindNthSymm2gt12; + + JacPDupwindNthSymm2gt13 = PDupwindNthSymm2gt13; + + JacPDupwindNthSymm2gt22 = PDupwindNthSymm2gt22; + + JacPDupwindNthSymm2gt23 = PDupwindNthSymm2gt23; + + JacPDupwindNthSymm2gt33 = PDupwindNthSymm2gt33; + + JacPDupwindNthSymm2phi = PDupwindNthSymm2phi; + + JacPDupwindNthSymm2trK = PDupwindNthSymm2trK; + + JacPDupwindNthSymm2Xt1 = PDupwindNthSymm2Xt1; + + JacPDupwindNthSymm2Xt2 = PDupwindNthSymm2Xt2; + + JacPDupwindNthSymm2Xt3 = PDupwindNthSymm2Xt3; + + JacPDupwindNthAnti3A = PDupwindNthAnti3A; + + JacPDupwindNthAnti3alpha = PDupwindNthAnti3alpha; + + JacPDupwindNthAnti3At11 = PDupwindNthAnti3At11; + + JacPDupwindNthAnti3At12 = PDupwindNthAnti3At12; + + JacPDupwindNthAnti3At13 = PDupwindNthAnti3At13; + + JacPDupwindNthAnti3At22 = PDupwindNthAnti3At22; + + JacPDupwindNthAnti3At23 = PDupwindNthAnti3At23; + + JacPDupwindNthAnti3At33 = PDupwindNthAnti3At33; + + JacPDupwindNthAnti3B1 = PDupwindNthAnti3B1; + + JacPDupwindNthAnti3B2 = PDupwindNthAnti3B2; + + JacPDupwindNthAnti3B3 = PDupwindNthAnti3B3; + + JacPDupwindNthAnti3beta1 = PDupwindNthAnti3beta1; + + JacPDupwindNthAnti3beta2 = PDupwindNthAnti3beta2; + + JacPDupwindNthAnti3beta3 = PDupwindNthAnti3beta3; + + JacPDupwindNthAnti3gt11 = PDupwindNthAnti3gt11; + + JacPDupwindNthAnti3gt12 = PDupwindNthAnti3gt12; + + JacPDupwindNthAnti3gt13 = PDupwindNthAnti3gt13; + + JacPDupwindNthAnti3gt22 = PDupwindNthAnti3gt22; + + JacPDupwindNthAnti3gt23 = PDupwindNthAnti3gt23; + + JacPDupwindNthAnti3gt33 = PDupwindNthAnti3gt33; + + JacPDupwindNthAnti3phi = PDupwindNthAnti3phi; + + JacPDupwindNthAnti3trK = PDupwindNthAnti3trK; + + JacPDupwindNthAnti3Xt1 = PDupwindNthAnti3Xt1; + + JacPDupwindNthAnti3Xt2 = PDupwindNthAnti3Xt2; + + JacPDupwindNthAnti3Xt3 = PDupwindNthAnti3Xt3; + + JacPDupwindNthSymm3A = PDupwindNthSymm3A; + + JacPDupwindNthSymm3alpha = PDupwindNthSymm3alpha; + + JacPDupwindNthSymm3At11 = PDupwindNthSymm3At11; + + JacPDupwindNthSymm3At12 = PDupwindNthSymm3At12; + + JacPDupwindNthSymm3At13 = PDupwindNthSymm3At13; + + JacPDupwindNthSymm3At22 = PDupwindNthSymm3At22; + + JacPDupwindNthSymm3At23 = PDupwindNthSymm3At23; + + JacPDupwindNthSymm3At33 = PDupwindNthSymm3At33; + + JacPDupwindNthSymm3B1 = PDupwindNthSymm3B1; + + JacPDupwindNthSymm3B2 = PDupwindNthSymm3B2; + + JacPDupwindNthSymm3B3 = PDupwindNthSymm3B3; + + JacPDupwindNthSymm3beta1 = PDupwindNthSymm3beta1; + + JacPDupwindNthSymm3beta2 = PDupwindNthSymm3beta2; + + JacPDupwindNthSymm3beta3 = PDupwindNthSymm3beta3; + + JacPDupwindNthSymm3gt11 = PDupwindNthSymm3gt11; + + JacPDupwindNthSymm3gt12 = PDupwindNthSymm3gt12; + + JacPDupwindNthSymm3gt13 = PDupwindNthSymm3gt13; + + JacPDupwindNthSymm3gt22 = PDupwindNthSymm3gt22; + + JacPDupwindNthSymm3gt23 = PDupwindNthSymm3gt23; + + JacPDupwindNthSymm3gt33 = PDupwindNthSymm3gt33; + + JacPDupwindNthSymm3phi = PDupwindNthSymm3phi; + + JacPDupwindNthSymm3trK = PDupwindNthSymm3trK; + + JacPDupwindNthSymm3Xt1 = PDupwindNthSymm3Xt1; + + JacPDupwindNthSymm3Xt2 = PDupwindNthSymm3Xt2; + + JacPDupwindNthSymm3Xt3 = PDupwindNthSymm3Xt3; + } + + ptrdiff_t dir1 = Sign(beta1L); + + ptrdiff_t dir2 = Sign(beta2L); + + ptrdiff_t dir3 = Sign(beta3L); + + phirhsL = beta1L*JacPDupwindNthAnti1phi + + beta2L*JacPDupwindNthAnti2phi + beta3L*JacPDupwindNthAnti3phi + phirhsL + + JacPDupwindNthSymm1phi*Abs(beta1L) + + JacPDupwindNthSymm2phi*Abs(beta2L) + + JacPDupwindNthSymm3phi*Abs(beta3L); + + gt11rhsL = gt11rhsL + beta1L*JacPDupwindNthAnti1gt11 + + beta2L*JacPDupwindNthAnti2gt11 + beta3L*JacPDupwindNthAnti3gt11 + + JacPDupwindNthSymm1gt11*Abs(beta1L) + + JacPDupwindNthSymm2gt11*Abs(beta2L) + + JacPDupwindNthSymm3gt11*Abs(beta3L); + + gt12rhsL = gt12rhsL + beta1L*JacPDupwindNthAnti1gt12 + + beta2L*JacPDupwindNthAnti2gt12 + beta3L*JacPDupwindNthAnti3gt12 + + JacPDupwindNthSymm1gt12*Abs(beta1L) + + JacPDupwindNthSymm2gt12*Abs(beta2L) + + JacPDupwindNthSymm3gt12*Abs(beta3L); + + gt13rhsL = gt13rhsL + beta1L*JacPDupwindNthAnti1gt13 + + beta2L*JacPDupwindNthAnti2gt13 + beta3L*JacPDupwindNthAnti3gt13 + + JacPDupwindNthSymm1gt13*Abs(beta1L) + + JacPDupwindNthSymm2gt13*Abs(beta2L) + + JacPDupwindNthSymm3gt13*Abs(beta3L); + + gt22rhsL = gt22rhsL + beta1L*JacPDupwindNthAnti1gt22 + + beta2L*JacPDupwindNthAnti2gt22 + beta3L*JacPDupwindNthAnti3gt22 + + JacPDupwindNthSymm1gt22*Abs(beta1L) + + JacPDupwindNthSymm2gt22*Abs(beta2L) + + JacPDupwindNthSymm3gt22*Abs(beta3L); + + gt23rhsL = gt23rhsL + beta1L*JacPDupwindNthAnti1gt23 + + beta2L*JacPDupwindNthAnti2gt23 + beta3L*JacPDupwindNthAnti3gt23 + + JacPDupwindNthSymm1gt23*Abs(beta1L) + + JacPDupwindNthSymm2gt23*Abs(beta2L) + + JacPDupwindNthSymm3gt23*Abs(beta3L); + + gt33rhsL = gt33rhsL + beta1L*JacPDupwindNthAnti1gt33 + + beta2L*JacPDupwindNthAnti2gt33 + beta3L*JacPDupwindNthAnti3gt33 + + JacPDupwindNthSymm1gt33*Abs(beta1L) + + JacPDupwindNthSymm2gt33*Abs(beta2L) + + JacPDupwindNthSymm3gt33*Abs(beta3L); + + Xt1rhsL = beta1L*JacPDupwindNthAnti1Xt1 + + beta2L*JacPDupwindNthAnti2Xt1 + beta3L*JacPDupwindNthAnti3Xt1 + Xt1rhsL + + JacPDupwindNthSymm1Xt1*Abs(beta1L) + + JacPDupwindNthSymm2Xt1*Abs(beta2L) + + JacPDupwindNthSymm3Xt1*Abs(beta3L); + + Xt2rhsL = beta1L*JacPDupwindNthAnti1Xt2 + + beta2L*JacPDupwindNthAnti2Xt2 + beta3L*JacPDupwindNthAnti3Xt2 + Xt2rhsL + + JacPDupwindNthSymm1Xt2*Abs(beta1L) + + JacPDupwindNthSymm2Xt2*Abs(beta2L) + + JacPDupwindNthSymm3Xt2*Abs(beta3L); + + Xt3rhsL = beta1L*JacPDupwindNthAnti1Xt3 + + beta2L*JacPDupwindNthAnti2Xt3 + beta3L*JacPDupwindNthAnti3Xt3 + Xt3rhsL + + JacPDupwindNthSymm1Xt3*Abs(beta1L) + + JacPDupwindNthSymm2Xt3*Abs(beta2L) + + JacPDupwindNthSymm3Xt3*Abs(beta3L); + + trKrhsL = beta1L*JacPDupwindNthAnti1trK + + beta2L*JacPDupwindNthAnti2trK + beta3L*JacPDupwindNthAnti3trK + trKrhsL + + JacPDupwindNthSymm1trK*Abs(beta1L) + + JacPDupwindNthSymm2trK*Abs(beta2L) + + JacPDupwindNthSymm3trK*Abs(beta3L); + + At11rhsL = At11rhsL + beta1L*JacPDupwindNthAnti1At11 + + beta2L*JacPDupwindNthAnti2At11 + beta3L*JacPDupwindNthAnti3At11 + + JacPDupwindNthSymm1At11*Abs(beta1L) + + JacPDupwindNthSymm2At11*Abs(beta2L) + + JacPDupwindNthSymm3At11*Abs(beta3L); + + At12rhsL = At12rhsL + beta1L*JacPDupwindNthAnti1At12 + + beta2L*JacPDupwindNthAnti2At12 + beta3L*JacPDupwindNthAnti3At12 + + JacPDupwindNthSymm1At12*Abs(beta1L) + + JacPDupwindNthSymm2At12*Abs(beta2L) + + JacPDupwindNthSymm3At12*Abs(beta3L); + + At13rhsL = At13rhsL + beta1L*JacPDupwindNthAnti1At13 + + beta2L*JacPDupwindNthAnti2At13 + beta3L*JacPDupwindNthAnti3At13 + + JacPDupwindNthSymm1At13*Abs(beta1L) + + JacPDupwindNthSymm2At13*Abs(beta2L) + + JacPDupwindNthSymm3At13*Abs(beta3L); + + At22rhsL = At22rhsL + beta1L*JacPDupwindNthAnti1At22 + + beta2L*JacPDupwindNthAnti2At22 + beta3L*JacPDupwindNthAnti3At22 + + JacPDupwindNthSymm1At22*Abs(beta1L) + + JacPDupwindNthSymm2At22*Abs(beta2L) + + JacPDupwindNthSymm3At22*Abs(beta3L); + + At23rhsL = At23rhsL + beta1L*JacPDupwindNthAnti1At23 + + beta2L*JacPDupwindNthAnti2At23 + beta3L*JacPDupwindNthAnti3At23 + + JacPDupwindNthSymm1At23*Abs(beta1L) + + JacPDupwindNthSymm2At23*Abs(beta2L) + + JacPDupwindNthSymm3At23*Abs(beta3L); + + At33rhsL = At33rhsL + beta1L*JacPDupwindNthAnti1At33 + + beta2L*JacPDupwindNthAnti2At33 + beta3L*JacPDupwindNthAnti3At33 + + JacPDupwindNthSymm1At33*Abs(beta1L) + + JacPDupwindNthSymm2At33*Abs(beta2L) + + JacPDupwindNthSymm3At33*Abs(beta3L); + + alpharhsL = alpharhsL + (beta1L*JacPDupwindNthAnti1alpha + + beta2L*JacPDupwindNthAnti2alpha + beta3L*JacPDupwindNthAnti3alpha + + JacPDupwindNthSymm1alpha*Abs(beta1L) + + JacPDupwindNthSymm2alpha*Abs(beta2L) + + JacPDupwindNthSymm3alpha*Abs(beta3L))*ToReal(LapseAdvectionCoeff); + + ArhsL = ArhsL + (beta1L*JacPDupwindNthAnti1A + + beta2L*JacPDupwindNthAnti2A + beta3L*JacPDupwindNthAnti3A + + JacPDupwindNthSymm1A*Abs(beta1L) + JacPDupwindNthSymm2A*Abs(beta2L) + + JacPDupwindNthSymm3A*Abs(beta3L))*ToReal(LapseAdvectionCoeff); + + beta1rhsL = beta1rhsL + (beta1L*JacPDupwindNthAnti1beta1 + + beta2L*JacPDupwindNthAnti2beta1 + beta3L*JacPDupwindNthAnti3beta1 + + JacPDupwindNthSymm1beta1*Abs(beta1L) + + JacPDupwindNthSymm2beta1*Abs(beta2L) + + JacPDupwindNthSymm3beta1*Abs(beta3L))*ToReal(ShiftAdvectionCoeff); + + beta2rhsL = beta2rhsL + (beta1L*JacPDupwindNthAnti1beta2 + + beta2L*JacPDupwindNthAnti2beta2 + beta3L*JacPDupwindNthAnti3beta2 + + JacPDupwindNthSymm1beta2*Abs(beta1L) + + JacPDupwindNthSymm2beta2*Abs(beta2L) + + JacPDupwindNthSymm3beta2*Abs(beta3L))*ToReal(ShiftAdvectionCoeff); + + beta3rhsL = beta3rhsL + (beta1L*JacPDupwindNthAnti1beta3 + + beta2L*JacPDupwindNthAnti2beta3 + beta3L*JacPDupwindNthAnti3beta3 + + JacPDupwindNthSymm1beta3*Abs(beta1L) + + JacPDupwindNthSymm2beta3*Abs(beta2L) + + JacPDupwindNthSymm3beta3*Abs(beta3L))*ToReal(ShiftAdvectionCoeff); + + B1rhsL = B1rhsL + (beta1L*(JacPDupwindNthAnti1B1 - + JacPDupwindNthAnti1Xt1) + beta2L*(JacPDupwindNthAnti2B1 - + JacPDupwindNthAnti2Xt1) + beta3L*(JacPDupwindNthAnti3B1 - + JacPDupwindNthAnti3Xt1) + (JacPDupwindNthSymm1B1 - + JacPDupwindNthSymm1Xt1)*Abs(beta1L) + (JacPDupwindNthSymm2B1 - + JacPDupwindNthSymm2Xt1)*Abs(beta2L) + (JacPDupwindNthSymm3B1 - + JacPDupwindNthSymm3Xt1)*Abs(beta3L))*ToReal(ShiftAdvectionCoeff) + + (beta1L*JacPDupwindNthAnti1Xt1 + beta2L*JacPDupwindNthAnti2Xt1 + + beta3L*JacPDupwindNthAnti3Xt1 + JacPDupwindNthSymm1Xt1*Abs(beta1L) + + JacPDupwindNthSymm2Xt1*Abs(beta2L) + + JacPDupwindNthSymm3Xt1*Abs(beta3L))*ToReal(ShiftBCoeff); + + B2rhsL = B2rhsL + (beta1L*(JacPDupwindNthAnti1B2 - + JacPDupwindNthAnti1Xt2) + beta2L*(JacPDupwindNthAnti2B2 - + JacPDupwindNthAnti2Xt2) + beta3L*(JacPDupwindNthAnti3B2 - + JacPDupwindNthAnti3Xt2) + (JacPDupwindNthSymm1B2 - + JacPDupwindNthSymm1Xt2)*Abs(beta1L) + (JacPDupwindNthSymm2B2 - + JacPDupwindNthSymm2Xt2)*Abs(beta2L) + (JacPDupwindNthSymm3B2 - + JacPDupwindNthSymm3Xt2)*Abs(beta3L))*ToReal(ShiftAdvectionCoeff) + + (beta1L*JacPDupwindNthAnti1Xt2 + beta2L*JacPDupwindNthAnti2Xt2 + + beta3L*JacPDupwindNthAnti3Xt2 + JacPDupwindNthSymm1Xt2*Abs(beta1L) + + JacPDupwindNthSymm2Xt2*Abs(beta2L) + + JacPDupwindNthSymm3Xt2*Abs(beta3L))*ToReal(ShiftBCoeff); + + B3rhsL = B3rhsL + (beta1L*(JacPDupwindNthAnti1B3 - + JacPDupwindNthAnti1Xt3) + beta2L*(JacPDupwindNthAnti2B3 - + JacPDupwindNthAnti2Xt3) + beta3L*(JacPDupwindNthAnti3B3 - + JacPDupwindNthAnti3Xt3) + (JacPDupwindNthSymm1B3 - + JacPDupwindNthSymm1Xt3)*Abs(beta1L) + (JacPDupwindNthSymm2B3 - + JacPDupwindNthSymm2Xt3)*Abs(beta2L) + (JacPDupwindNthSymm3B3 - + JacPDupwindNthSymm3Xt3)*Abs(beta3L))*ToReal(ShiftAdvectionCoeff) + + (beta1L*JacPDupwindNthAnti1Xt3 + beta2L*JacPDupwindNthAnti2Xt3 + + beta3L*JacPDupwindNthAnti3Xt3 + JacPDupwindNthSymm1Xt3*Abs(beta1L) + + JacPDupwindNthSymm2Xt3*Abs(beta2L) + + JacPDupwindNthSymm3Xt3*Abs(beta3L))*ToReal(ShiftBCoeff); + + /* Copy local copies back to grid functions */ + alpharhs[index] = alpharhsL; + Arhs[index] = ArhsL; + At11rhs[index] = At11rhsL; + At12rhs[index] = At12rhsL; + At13rhs[index] = At13rhsL; + At22rhs[index] = At22rhsL; + At23rhs[index] = At23rhsL; + At33rhs[index] = At33rhsL; + B1rhs[index] = B1rhsL; + B2rhs[index] = B2rhsL; + B3rhs[index] = B3rhsL; + beta1rhs[index] = beta1rhsL; + beta2rhs[index] = beta2rhsL; + beta3rhs[index] = beta3rhsL; + gt11rhs[index] = gt11rhsL; + gt12rhs[index] = gt12rhsL; + gt13rhs[index] = gt13rhsL; + gt22rhs[index] = gt22rhsL; + gt23rhs[index] = gt23rhsL; + gt33rhs[index] = gt33rhsL; + phirhs[index] = phirhsL; + trKrhs[index] = trKrhsL; + Xt1rhs[index] = Xt1rhsL; + Xt2rhs[index] = Xt2rhsL; + Xt3rhs[index] = Xt3rhsL; + } + LC_ENDLOOP3 (ML_BSSN_MP_Advect); +} + +extern "C" void ML_BSSN_MP_Advect(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + GenericFD_LoopOverInterior(cctkGH, &ML_BSSN_MP_Advect_Body); +} diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_Dissipation.cc b/ML_BSSN_MP/src/ML_BSSN_MP_Dissipation.cc new file mode 100644 index 0000000..f0e2180 --- /dev/null +++ b/ML_BSSN_MP/src/ML_BSSN_MP_Dissipation.cc @@ -0,0 +1,912 @@ +/* File produced by Kranc */ + +#define KRANC_C + +#include <assert.h> +#include <math.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include "cctk.h" +#include "cctk_Arguments.h" +#include "cctk_Parameters.h" +#include "GenericFD.h" +#include "Differencing.h" +#include "loopcontrol.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)) + +extern "C" void ML_BSSN_MP_Dissipation_SelectBCs(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT ierr = 0; + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_curvrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_curvrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_dtlapserhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_dtlapserhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_dtshiftrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_dtshiftrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_Gammarhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_Gammarhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_lapserhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_lapserhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_log_confacrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_log_confacrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_metricrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_metricrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_shiftrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_shiftrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_trace_curvrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_trace_curvrhs."); + return; +} + +static void ML_BSSN_MP_Dissipation_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[]) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + + /* Declare finite differencing variables */ + + if (verbose > 1) + { + CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_Dissipation_Body"); + } + + if (cctk_iteration % ML_BSSN_MP_Dissipation_calc_every != ML_BSSN_MP_Dissipation_calc_offset) + { + return; + } + + const char *groups[] = {"ML_BSSN_MP::ML_curv","ML_BSSN_MP::ML_curvrhs","ML_BSSN_MP::ML_dtlapse","ML_BSSN_MP::ML_dtlapserhs","ML_BSSN_MP::ML_dtshift","ML_BSSN_MP::ML_dtshiftrhs","ML_BSSN_MP::ML_Gamma","ML_BSSN_MP::ML_Gammarhs","ML_BSSN_MP::ML_lapse","ML_BSSN_MP::ML_lapserhs","ML_BSSN_MP::ML_log_confac","ML_BSSN_MP::ML_log_confacrhs","ML_BSSN_MP::ML_metric","ML_BSSN_MP::ML_metricrhs","ML_BSSN_MP::ML_shift","ML_BSSN_MP::ML_shiftrhs","ML_BSSN_MP::ML_trace_curv","ML_BSSN_MP::ML_trace_curvrhs"}; + GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_Dissipation", 18, groups); + + GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_Dissipation", 3, 3, 3); + + /* Include user-supplied include files */ + + /* Initialise finite differencing variables */ + ptrdiff_t const di = 1; + ptrdiff_t const dj = CCTK_GFINDEX3D(cctkGH,0,1,0) - CCTK_GFINDEX3D(cctkGH,0,0,0); + ptrdiff_t const dk = CCTK_GFINDEX3D(cctkGH,0,0,1) - CCTK_GFINDEX3D(cctkGH,0,0,0); + 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; + + /* 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 p1o24dx = 0.0416666666666666666666666666667*INV(dx); + CCTK_REAL const p1o24dy = 0.0416666666666666666666666666667*INV(dy); + CCTK_REAL const p1o24dz = 0.0416666666666666666666666666667*INV(dz); + CCTK_REAL const p1o64dx = 0.015625*INV(dx); + CCTK_REAL const p1o64dy = 0.015625*INV(dy); + CCTK_REAL const p1o64dz = 0.015625*INV(dz); + CCTK_REAL const p1odx = INV(dx); + CCTK_REAL const p1ody = INV(dy); + CCTK_REAL const p1odz = 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)); + + /* 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_BSSN_MP_Dissipation, + i,j,k, min[0],min[1],min[2], max[0],max[1],max[2], + cctk_lsh[0],cctk_lsh[1],cctk_lsh[2]) + { + ptrdiff_t const index = di*i + dj*j + dk*k; + + /* Assign local copies of grid functions */ + + CCTK_REAL AL = A[index]; + CCTK_REAL alphaL = alpha[index]; + CCTK_REAL alpharhsL = alpharhs[index]; + CCTK_REAL ArhsL = Arhs[index]; + CCTK_REAL At11L = At11[index]; + CCTK_REAL At11rhsL = At11rhs[index]; + CCTK_REAL At12L = At12[index]; + CCTK_REAL At12rhsL = At12rhs[index]; + CCTK_REAL At13L = At13[index]; + CCTK_REAL At13rhsL = At13rhs[index]; + CCTK_REAL At22L = At22[index]; + CCTK_REAL At22rhsL = At22rhs[index]; + CCTK_REAL At23L = At23[index]; + CCTK_REAL At23rhsL = At23rhs[index]; + CCTK_REAL At33L = At33[index]; + CCTK_REAL At33rhsL = At33rhs[index]; + CCTK_REAL B1L = B1[index]; + CCTK_REAL B1rhsL = B1rhs[index]; + CCTK_REAL B2L = B2[index]; + CCTK_REAL B2rhsL = B2rhs[index]; + CCTK_REAL B3L = B3[index]; + CCTK_REAL B3rhsL = B3rhs[index]; + CCTK_REAL beta1L = beta1[index]; + CCTK_REAL beta1rhsL = beta1rhs[index]; + CCTK_REAL beta2L = beta2[index]; + CCTK_REAL beta2rhsL = beta2rhs[index]; + CCTK_REAL beta3L = beta3[index]; + CCTK_REAL beta3rhsL = beta3rhs[index]; + CCTK_REAL gt11L = gt11[index]; + CCTK_REAL gt11rhsL = gt11rhs[index]; + CCTK_REAL gt12L = gt12[index]; + CCTK_REAL gt12rhsL = gt12rhs[index]; + CCTK_REAL gt13L = gt13[index]; + CCTK_REAL gt13rhsL = gt13rhs[index]; + CCTK_REAL gt22L = gt22[index]; + CCTK_REAL gt22rhsL = gt22rhs[index]; + CCTK_REAL gt23L = gt23[index]; + CCTK_REAL gt23rhsL = gt23rhs[index]; + CCTK_REAL gt33L = gt33[index]; + CCTK_REAL gt33rhsL = gt33rhs[index]; + CCTK_REAL phiL = phi[index]; + CCTK_REAL phirhsL = phirhs[index]; + CCTK_REAL trKL = trK[index]; + CCTK_REAL trKrhsL = trKrhs[index]; + CCTK_REAL Xt1L = Xt1[index]; + CCTK_REAL Xt1rhsL = Xt1rhs[index]; + CCTK_REAL Xt2L = Xt2[index]; + CCTK_REAL Xt2rhsL = Xt2rhs[index]; + CCTK_REAL Xt3L = Xt3[index]; + CCTK_REAL Xt3rhsL = Xt3rhs[index]; + + + CCTK_REAL J11L, J12L, J13L, J21L, J22L, J23L, J31L, J32L, J33L; + + if (use_jacobian) + { + J11L = J11[index]; + J12L = J12[index]; + J13L = J13[index]; + J21L = J21[index]; + J22L = J22[index]; + J23L = J23[index]; + J31L = J31[index]; + J32L = J32[index]; + J33L = J33[index]; + } + + /* Include user supplied include files */ + + /* Precompute derivatives */ + CCTK_REAL const PDdissipationNth1A = PDdissipationNth1(&A[index]); + CCTK_REAL const PDdissipationNth2A = PDdissipationNth2(&A[index]); + CCTK_REAL const PDdissipationNth3A = PDdissipationNth3(&A[index]); + CCTK_REAL const PDdissipationNth1alpha = PDdissipationNth1(&alpha[index]); + CCTK_REAL const PDdissipationNth2alpha = PDdissipationNth2(&alpha[index]); + CCTK_REAL const PDdissipationNth3alpha = PDdissipationNth3(&alpha[index]); + CCTK_REAL const PDdissipationNth1At11 = PDdissipationNth1(&At11[index]); + CCTK_REAL const PDdissipationNth2At11 = PDdissipationNth2(&At11[index]); + CCTK_REAL const PDdissipationNth3At11 = PDdissipationNth3(&At11[index]); + CCTK_REAL const PDdissipationNth1At12 = PDdissipationNth1(&At12[index]); + CCTK_REAL const PDdissipationNth2At12 = PDdissipationNth2(&At12[index]); + CCTK_REAL const PDdissipationNth3At12 = PDdissipationNth3(&At12[index]); + CCTK_REAL const PDdissipationNth1At13 = PDdissipationNth1(&At13[index]); + CCTK_REAL const PDdissipationNth2At13 = PDdissipationNth2(&At13[index]); + CCTK_REAL const PDdissipationNth3At13 = PDdissipationNth3(&At13[index]); + CCTK_REAL const PDdissipationNth1At22 = PDdissipationNth1(&At22[index]); + CCTK_REAL const PDdissipationNth2At22 = PDdissipationNth2(&At22[index]); + CCTK_REAL const PDdissipationNth3At22 = PDdissipationNth3(&At22[index]); + CCTK_REAL const PDdissipationNth1At23 = PDdissipationNth1(&At23[index]); + CCTK_REAL const PDdissipationNth2At23 = PDdissipationNth2(&At23[index]); + CCTK_REAL const PDdissipationNth3At23 = PDdissipationNth3(&At23[index]); + CCTK_REAL const PDdissipationNth1At33 = PDdissipationNth1(&At33[index]); + CCTK_REAL const PDdissipationNth2At33 = PDdissipationNth2(&At33[index]); + CCTK_REAL const PDdissipationNth3At33 = PDdissipationNth3(&At33[index]); + CCTK_REAL const PDdissipationNth1B1 = PDdissipationNth1(&B1[index]); + CCTK_REAL const PDdissipationNth2B1 = PDdissipationNth2(&B1[index]); + CCTK_REAL const PDdissipationNth3B1 = PDdissipationNth3(&B1[index]); + CCTK_REAL const PDdissipationNth1B2 = PDdissipationNth1(&B2[index]); + CCTK_REAL const PDdissipationNth2B2 = PDdissipationNth2(&B2[index]); + CCTK_REAL const PDdissipationNth3B2 = PDdissipationNth3(&B2[index]); + CCTK_REAL const PDdissipationNth1B3 = PDdissipationNth1(&B3[index]); + CCTK_REAL const PDdissipationNth2B3 = PDdissipationNth2(&B3[index]); + CCTK_REAL const PDdissipationNth3B3 = PDdissipationNth3(&B3[index]); + CCTK_REAL const PDdissipationNth1beta1 = PDdissipationNth1(&beta1[index]); + CCTK_REAL const PDdissipationNth2beta1 = PDdissipationNth2(&beta1[index]); + CCTK_REAL const PDdissipationNth3beta1 = PDdissipationNth3(&beta1[index]); + CCTK_REAL const PDdissipationNth1beta2 = PDdissipationNth1(&beta2[index]); + CCTK_REAL const PDdissipationNth2beta2 = PDdissipationNth2(&beta2[index]); + CCTK_REAL const PDdissipationNth3beta2 = PDdissipationNth3(&beta2[index]); + CCTK_REAL const PDdissipationNth1beta3 = PDdissipationNth1(&beta3[index]); + CCTK_REAL const PDdissipationNth2beta3 = PDdissipationNth2(&beta3[index]); + CCTK_REAL const PDdissipationNth3beta3 = PDdissipationNth3(&beta3[index]); + CCTK_REAL const PDdissipationNth1gt11 = PDdissipationNth1(>11[index]); + CCTK_REAL const PDdissipationNth2gt11 = PDdissipationNth2(>11[index]); + CCTK_REAL const PDdissipationNth3gt11 = PDdissipationNth3(>11[index]); + CCTK_REAL const PDdissipationNth1gt12 = PDdissipationNth1(>12[index]); + CCTK_REAL const PDdissipationNth2gt12 = PDdissipationNth2(>12[index]); + CCTK_REAL const PDdissipationNth3gt12 = PDdissipationNth3(>12[index]); + CCTK_REAL const PDdissipationNth1gt13 = PDdissipationNth1(>13[index]); + CCTK_REAL const PDdissipationNth2gt13 = PDdissipationNth2(>13[index]); + CCTK_REAL const PDdissipationNth3gt13 = PDdissipationNth3(>13[index]); + CCTK_REAL const PDdissipationNth1gt22 = PDdissipationNth1(>22[index]); + CCTK_REAL const PDdissipationNth2gt22 = PDdissipationNth2(>22[index]); + CCTK_REAL const PDdissipationNth3gt22 = PDdissipationNth3(>22[index]); + CCTK_REAL const PDdissipationNth1gt23 = PDdissipationNth1(>23[index]); + CCTK_REAL const PDdissipationNth2gt23 = PDdissipationNth2(>23[index]); + CCTK_REAL const PDdissipationNth3gt23 = PDdissipationNth3(>23[index]); + CCTK_REAL const PDdissipationNth1gt33 = PDdissipationNth1(>33[index]); + CCTK_REAL const PDdissipationNth2gt33 = PDdissipationNth2(>33[index]); + CCTK_REAL const PDdissipationNth3gt33 = PDdissipationNth3(>33[index]); + CCTK_REAL const PDdissipationNth1phi = PDdissipationNth1(&phi[index]); + CCTK_REAL const PDdissipationNth2phi = PDdissipationNth2(&phi[index]); + CCTK_REAL const PDdissipationNth3phi = PDdissipationNth3(&phi[index]); + CCTK_REAL const PDdissipationNth1trK = PDdissipationNth1(&trK[index]); + CCTK_REAL const PDdissipationNth2trK = PDdissipationNth2(&trK[index]); + CCTK_REAL const PDdissipationNth3trK = PDdissipationNth3(&trK[index]); + CCTK_REAL const PDdissipationNth1Xt1 = PDdissipationNth1(&Xt1[index]); + CCTK_REAL const PDdissipationNth2Xt1 = PDdissipationNth2(&Xt1[index]); + CCTK_REAL const PDdissipationNth3Xt1 = PDdissipationNth3(&Xt1[index]); + CCTK_REAL const PDdissipationNth1Xt2 = PDdissipationNth1(&Xt2[index]); + CCTK_REAL const PDdissipationNth2Xt2 = PDdissipationNth2(&Xt2[index]); + CCTK_REAL const PDdissipationNth3Xt2 = PDdissipationNth3(&Xt2[index]); + CCTK_REAL const PDdissipationNth1Xt3 = PDdissipationNth1(&Xt3[index]); + CCTK_REAL const PDdissipationNth2Xt3 = PDdissipationNth2(&Xt3[index]); + CCTK_REAL const PDdissipationNth3Xt3 = PDdissipationNth3(&Xt3[index]); + + /* Calculate temporaries and grid functions */ + CCTK_REAL JacPDdissipationNth1A; + CCTK_REAL JacPDdissipationNth1alpha; + CCTK_REAL JacPDdissipationNth1At11; + CCTK_REAL JacPDdissipationNth1At12; + CCTK_REAL JacPDdissipationNth1At13; + CCTK_REAL JacPDdissipationNth1At22; + CCTK_REAL JacPDdissipationNth1At23; + CCTK_REAL JacPDdissipationNth1At33; + CCTK_REAL JacPDdissipationNth1B1; + CCTK_REAL JacPDdissipationNth1B2; + CCTK_REAL JacPDdissipationNth1B3; + CCTK_REAL JacPDdissipationNth1beta1; + CCTK_REAL JacPDdissipationNth1beta2; + CCTK_REAL JacPDdissipationNth1beta3; + CCTK_REAL JacPDdissipationNth1gt11; + CCTK_REAL JacPDdissipationNth1gt12; + CCTK_REAL JacPDdissipationNth1gt13; + CCTK_REAL JacPDdissipationNth1gt22; + CCTK_REAL JacPDdissipationNth1gt23; + CCTK_REAL JacPDdissipationNth1gt33; + CCTK_REAL JacPDdissipationNth1phi; + CCTK_REAL JacPDdissipationNth1trK; + CCTK_REAL JacPDdissipationNth1Xt1; + CCTK_REAL JacPDdissipationNth1Xt2; + CCTK_REAL JacPDdissipationNth1Xt3; + CCTK_REAL JacPDdissipationNth2A; + CCTK_REAL JacPDdissipationNth2alpha; + CCTK_REAL JacPDdissipationNth2At11; + CCTK_REAL JacPDdissipationNth2At12; + CCTK_REAL JacPDdissipationNth2At13; + CCTK_REAL JacPDdissipationNth2At22; + CCTK_REAL JacPDdissipationNth2At23; + CCTK_REAL JacPDdissipationNth2At33; + CCTK_REAL JacPDdissipationNth2B1; + CCTK_REAL JacPDdissipationNth2B2; + CCTK_REAL JacPDdissipationNth2B3; + CCTK_REAL JacPDdissipationNth2beta1; + CCTK_REAL JacPDdissipationNth2beta2; + CCTK_REAL JacPDdissipationNth2beta3; + CCTK_REAL JacPDdissipationNth2gt11; + CCTK_REAL JacPDdissipationNth2gt12; + CCTK_REAL JacPDdissipationNth2gt13; + CCTK_REAL JacPDdissipationNth2gt22; + CCTK_REAL JacPDdissipationNth2gt23; + CCTK_REAL JacPDdissipationNth2gt33; + CCTK_REAL JacPDdissipationNth2phi; + CCTK_REAL JacPDdissipationNth2trK; + CCTK_REAL JacPDdissipationNth2Xt1; + CCTK_REAL JacPDdissipationNth2Xt2; + CCTK_REAL JacPDdissipationNth2Xt3; + CCTK_REAL JacPDdissipationNth3A; + CCTK_REAL JacPDdissipationNth3alpha; + CCTK_REAL JacPDdissipationNth3At11; + CCTK_REAL JacPDdissipationNth3At12; + CCTK_REAL JacPDdissipationNth3At13; + CCTK_REAL JacPDdissipationNth3At22; + CCTK_REAL JacPDdissipationNth3At23; + CCTK_REAL JacPDdissipationNth3At33; + CCTK_REAL JacPDdissipationNth3B1; + CCTK_REAL JacPDdissipationNth3B2; + CCTK_REAL JacPDdissipationNth3B3; + CCTK_REAL JacPDdissipationNth3beta1; + CCTK_REAL JacPDdissipationNth3beta2; + CCTK_REAL JacPDdissipationNth3beta3; + CCTK_REAL JacPDdissipationNth3gt11; + CCTK_REAL JacPDdissipationNth3gt12; + CCTK_REAL JacPDdissipationNth3gt13; + CCTK_REAL JacPDdissipationNth3gt22; + CCTK_REAL JacPDdissipationNth3gt23; + CCTK_REAL JacPDdissipationNth3gt33; + CCTK_REAL JacPDdissipationNth3phi; + CCTK_REAL JacPDdissipationNth3trK; + CCTK_REAL JacPDdissipationNth3Xt1; + CCTK_REAL JacPDdissipationNth3Xt2; + CCTK_REAL JacPDdissipationNth3Xt3; + + if (use_jacobian) + { + JacPDdissipationNth1A = J11L*PDdissipationNth1A + + J21L*PDdissipationNth2A + J31L*PDdissipationNth3A; + + JacPDdissipationNth1alpha = J11L*PDdissipationNth1alpha + + J21L*PDdissipationNth2alpha + J31L*PDdissipationNth3alpha; + + JacPDdissipationNth1At11 = J11L*PDdissipationNth1At11 + + J21L*PDdissipationNth2At11 + J31L*PDdissipationNth3At11; + + JacPDdissipationNth1At12 = J11L*PDdissipationNth1At12 + + J21L*PDdissipationNth2At12 + J31L*PDdissipationNth3At12; + + JacPDdissipationNth1At13 = J11L*PDdissipationNth1At13 + + J21L*PDdissipationNth2At13 + J31L*PDdissipationNth3At13; + + JacPDdissipationNth1At22 = J11L*PDdissipationNth1At22 + + J21L*PDdissipationNth2At22 + J31L*PDdissipationNth3At22; + + JacPDdissipationNth1At23 = J11L*PDdissipationNth1At23 + + J21L*PDdissipationNth2At23 + J31L*PDdissipationNth3At23; + + JacPDdissipationNth1At33 = J11L*PDdissipationNth1At33 + + J21L*PDdissipationNth2At33 + J31L*PDdissipationNth3At33; + + JacPDdissipationNth1B1 = J11L*PDdissipationNth1B1 + + J21L*PDdissipationNth2B1 + J31L*PDdissipationNth3B1; + + JacPDdissipationNth1B2 = J11L*PDdissipationNth1B2 + + J21L*PDdissipationNth2B2 + J31L*PDdissipationNth3B2; + + JacPDdissipationNth1B3 = J11L*PDdissipationNth1B3 + + J21L*PDdissipationNth2B3 + J31L*PDdissipationNth3B3; + + JacPDdissipationNth1beta1 = J11L*PDdissipationNth1beta1 + + J21L*PDdissipationNth2beta1 + J31L*PDdissipationNth3beta1; + + JacPDdissipationNth1beta2 = J11L*PDdissipationNth1beta2 + + J21L*PDdissipationNth2beta2 + J31L*PDdissipationNth3beta2; + + JacPDdissipationNth1beta3 = J11L*PDdissipationNth1beta3 + + J21L*PDdissipationNth2beta3 + J31L*PDdissipationNth3beta3; + + JacPDdissipationNth1gt11 = J11L*PDdissipationNth1gt11 + + J21L*PDdissipationNth2gt11 + J31L*PDdissipationNth3gt11; + + JacPDdissipationNth1gt12 = J11L*PDdissipationNth1gt12 + + J21L*PDdissipationNth2gt12 + J31L*PDdissipationNth3gt12; + + JacPDdissipationNth1gt13 = J11L*PDdissipationNth1gt13 + + J21L*PDdissipationNth2gt13 + J31L*PDdissipationNth3gt13; + + JacPDdissipationNth1gt22 = J11L*PDdissipationNth1gt22 + + J21L*PDdissipationNth2gt22 + J31L*PDdissipationNth3gt22; + + JacPDdissipationNth1gt23 = J11L*PDdissipationNth1gt23 + + J21L*PDdissipationNth2gt23 + J31L*PDdissipationNth3gt23; + + JacPDdissipationNth1gt33 = J11L*PDdissipationNth1gt33 + + J21L*PDdissipationNth2gt33 + J31L*PDdissipationNth3gt33; + + JacPDdissipationNth1phi = J11L*PDdissipationNth1phi + + J21L*PDdissipationNth2phi + J31L*PDdissipationNth3phi; + + JacPDdissipationNth1trK = J11L*PDdissipationNth1trK + + J21L*PDdissipationNth2trK + J31L*PDdissipationNth3trK; + + JacPDdissipationNth1Xt1 = J11L*PDdissipationNth1Xt1 + + J21L*PDdissipationNth2Xt1 + J31L*PDdissipationNth3Xt1; + + JacPDdissipationNth1Xt2 = J11L*PDdissipationNth1Xt2 + + J21L*PDdissipationNth2Xt2 + J31L*PDdissipationNth3Xt2; + + JacPDdissipationNth1Xt3 = J11L*PDdissipationNth1Xt3 + + J21L*PDdissipationNth2Xt3 + J31L*PDdissipationNth3Xt3; + + JacPDdissipationNth2A = J12L*PDdissipationNth1A + + J22L*PDdissipationNth2A + J32L*PDdissipationNth3A; + + JacPDdissipationNth2alpha = J12L*PDdissipationNth1alpha + + J22L*PDdissipationNth2alpha + J32L*PDdissipationNth3alpha; + + JacPDdissipationNth2At11 = J12L*PDdissipationNth1At11 + + J22L*PDdissipationNth2At11 + J32L*PDdissipationNth3At11; + + JacPDdissipationNth2At12 = J12L*PDdissipationNth1At12 + + J22L*PDdissipationNth2At12 + J32L*PDdissipationNth3At12; + + JacPDdissipationNth2At13 = J12L*PDdissipationNth1At13 + + J22L*PDdissipationNth2At13 + J32L*PDdissipationNth3At13; + + JacPDdissipationNth2At22 = J12L*PDdissipationNth1At22 + + J22L*PDdissipationNth2At22 + J32L*PDdissipationNth3At22; + + JacPDdissipationNth2At23 = J12L*PDdissipationNth1At23 + + J22L*PDdissipationNth2At23 + J32L*PDdissipationNth3At23; + + JacPDdissipationNth2At33 = J12L*PDdissipationNth1At33 + + J22L*PDdissipationNth2At33 + J32L*PDdissipationNth3At33; + + JacPDdissipationNth2B1 = J12L*PDdissipationNth1B1 + + J22L*PDdissipationNth2B1 + J32L*PDdissipationNth3B1; + + JacPDdissipationNth2B2 = J12L*PDdissipationNth1B2 + + J22L*PDdissipationNth2B2 + J32L*PDdissipationNth3B2; + + JacPDdissipationNth2B3 = J12L*PDdissipationNth1B3 + + J22L*PDdissipationNth2B3 + J32L*PDdissipationNth3B3; + + JacPDdissipationNth2beta1 = J12L*PDdissipationNth1beta1 + + J22L*PDdissipationNth2beta1 + J32L*PDdissipationNth3beta1; + + JacPDdissipationNth2beta2 = J12L*PDdissipationNth1beta2 + + J22L*PDdissipationNth2beta2 + J32L*PDdissipationNth3beta2; + + JacPDdissipationNth2beta3 = J12L*PDdissipationNth1beta3 + + J22L*PDdissipationNth2beta3 + J32L*PDdissipationNth3beta3; + + JacPDdissipationNth2gt11 = J12L*PDdissipationNth1gt11 + + J22L*PDdissipationNth2gt11 + J32L*PDdissipationNth3gt11; + + JacPDdissipationNth2gt12 = J12L*PDdissipationNth1gt12 + + J22L*PDdissipationNth2gt12 + J32L*PDdissipationNth3gt12; + + JacPDdissipationNth2gt13 = J12L*PDdissipationNth1gt13 + + J22L*PDdissipationNth2gt13 + J32L*PDdissipationNth3gt13; + + JacPDdissipationNth2gt22 = J12L*PDdissipationNth1gt22 + + J22L*PDdissipationNth2gt22 + J32L*PDdissipationNth3gt22; + + JacPDdissipationNth2gt23 = J12L*PDdissipationNth1gt23 + + J22L*PDdissipationNth2gt23 + J32L*PDdissipationNth3gt23; + + JacPDdissipationNth2gt33 = J12L*PDdissipationNth1gt33 + + J22L*PDdissipationNth2gt33 + J32L*PDdissipationNth3gt33; + + JacPDdissipationNth2phi = J12L*PDdissipationNth1phi + + J22L*PDdissipationNth2phi + J32L*PDdissipationNth3phi; + + JacPDdissipationNth2trK = J12L*PDdissipationNth1trK + + J22L*PDdissipationNth2trK + J32L*PDdissipationNth3trK; + + JacPDdissipationNth2Xt1 = J12L*PDdissipationNth1Xt1 + + J22L*PDdissipationNth2Xt1 + J32L*PDdissipationNth3Xt1; + + JacPDdissipationNth2Xt2 = J12L*PDdissipationNth1Xt2 + + J22L*PDdissipationNth2Xt2 + J32L*PDdissipationNth3Xt2; + + JacPDdissipationNth2Xt3 = J12L*PDdissipationNth1Xt3 + + J22L*PDdissipationNth2Xt3 + J32L*PDdissipationNth3Xt3; + + JacPDdissipationNth3A = J13L*PDdissipationNth1A + + J23L*PDdissipationNth2A + J33L*PDdissipationNth3A; + + JacPDdissipationNth3alpha = J13L*PDdissipationNth1alpha + + J23L*PDdissipationNth2alpha + J33L*PDdissipationNth3alpha; + + JacPDdissipationNth3At11 = J13L*PDdissipationNth1At11 + + J23L*PDdissipationNth2At11 + J33L*PDdissipationNth3At11; + + JacPDdissipationNth3At12 = J13L*PDdissipationNth1At12 + + J23L*PDdissipationNth2At12 + J33L*PDdissipationNth3At12; + + JacPDdissipationNth3At13 = J13L*PDdissipationNth1At13 + + J23L*PDdissipationNth2At13 + J33L*PDdissipationNth3At13; + + JacPDdissipationNth3At22 = J13L*PDdissipationNth1At22 + + J23L*PDdissipationNth2At22 + J33L*PDdissipationNth3At22; + + JacPDdissipationNth3At23 = J13L*PDdissipationNth1At23 + + J23L*PDdissipationNth2At23 + J33L*PDdissipationNth3At23; + + JacPDdissipationNth3At33 = J13L*PDdissipationNth1At33 + + J23L*PDdissipationNth2At33 + J33L*PDdissipationNth3At33; + + JacPDdissipationNth3B1 = J13L*PDdissipationNth1B1 + + J23L*PDdissipationNth2B1 + J33L*PDdissipationNth3B1; + + JacPDdissipationNth3B2 = J13L*PDdissipationNth1B2 + + J23L*PDdissipationNth2B2 + J33L*PDdissipationNth3B2; + + JacPDdissipationNth3B3 = J13L*PDdissipationNth1B3 + + J23L*PDdissipationNth2B3 + J33L*PDdissipationNth3B3; + + JacPDdissipationNth3beta1 = J13L*PDdissipationNth1beta1 + + J23L*PDdissipationNth2beta1 + J33L*PDdissipationNth3beta1; + + JacPDdissipationNth3beta2 = J13L*PDdissipationNth1beta2 + + J23L*PDdissipationNth2beta2 + J33L*PDdissipationNth3beta2; + + JacPDdissipationNth3beta3 = J13L*PDdissipationNth1beta3 + + J23L*PDdissipationNth2beta3 + J33L*PDdissipationNth3beta3; + + JacPDdissipationNth3gt11 = J13L*PDdissipationNth1gt11 + + J23L*PDdissipationNth2gt11 + J33L*PDdissipationNth3gt11; + + JacPDdissipationNth3gt12 = J13L*PDdissipationNth1gt12 + + J23L*PDdissipationNth2gt12 + J33L*PDdissipationNth3gt12; + + JacPDdissipationNth3gt13 = J13L*PDdissipationNth1gt13 + + J23L*PDdissipationNth2gt13 + J33L*PDdissipationNth3gt13; + + JacPDdissipationNth3gt22 = J13L*PDdissipationNth1gt22 + + J23L*PDdissipationNth2gt22 + J33L*PDdissipationNth3gt22; + + JacPDdissipationNth3gt23 = J13L*PDdissipationNth1gt23 + + J23L*PDdissipationNth2gt23 + J33L*PDdissipationNth3gt23; + + JacPDdissipationNth3gt33 = J13L*PDdissipationNth1gt33 + + J23L*PDdissipationNth2gt33 + J33L*PDdissipationNth3gt33; + + JacPDdissipationNth3phi = J13L*PDdissipationNth1phi + + J23L*PDdissipationNth2phi + J33L*PDdissipationNth3phi; + + JacPDdissipationNth3trK = J13L*PDdissipationNth1trK + + J23L*PDdissipationNth2trK + J33L*PDdissipationNth3trK; + + JacPDdissipationNth3Xt1 = J13L*PDdissipationNth1Xt1 + + J23L*PDdissipationNth2Xt1 + J33L*PDdissipationNth3Xt1; + + JacPDdissipationNth3Xt2 = J13L*PDdissipationNth1Xt2 + + J23L*PDdissipationNth2Xt2 + J33L*PDdissipationNth3Xt2; + + JacPDdissipationNth3Xt3 = J13L*PDdissipationNth1Xt3 + + J23L*PDdissipationNth2Xt3 + J33L*PDdissipationNth3Xt3; + } + else + { + JacPDdissipationNth1A = PDdissipationNth1A; + + JacPDdissipationNth1alpha = PDdissipationNth1alpha; + + JacPDdissipationNth1At11 = PDdissipationNth1At11; + + JacPDdissipationNth1At12 = PDdissipationNth1At12; + + JacPDdissipationNth1At13 = PDdissipationNth1At13; + + JacPDdissipationNth1At22 = PDdissipationNth1At22; + + JacPDdissipationNth1At23 = PDdissipationNth1At23; + + JacPDdissipationNth1At33 = PDdissipationNth1At33; + + JacPDdissipationNth1B1 = PDdissipationNth1B1; + + JacPDdissipationNth1B2 = PDdissipationNth1B2; + + JacPDdissipationNth1B3 = PDdissipationNth1B3; + + JacPDdissipationNth1beta1 = PDdissipationNth1beta1; + + JacPDdissipationNth1beta2 = PDdissipationNth1beta2; + + JacPDdissipationNth1beta3 = PDdissipationNth1beta3; + + JacPDdissipationNth1gt11 = PDdissipationNth1gt11; + + JacPDdissipationNth1gt12 = PDdissipationNth1gt12; + + JacPDdissipationNth1gt13 = PDdissipationNth1gt13; + + JacPDdissipationNth1gt22 = PDdissipationNth1gt22; + + JacPDdissipationNth1gt23 = PDdissipationNth1gt23; + + JacPDdissipationNth1gt33 = PDdissipationNth1gt33; + + JacPDdissipationNth1phi = PDdissipationNth1phi; + + JacPDdissipationNth1trK = PDdissipationNth1trK; + + JacPDdissipationNth1Xt1 = PDdissipationNth1Xt1; + + JacPDdissipationNth1Xt2 = PDdissipationNth1Xt2; + + JacPDdissipationNth1Xt3 = PDdissipationNth1Xt3; + + JacPDdissipationNth2A = PDdissipationNth2A; + + JacPDdissipationNth2alpha = PDdissipationNth2alpha; + + JacPDdissipationNth2At11 = PDdissipationNth2At11; + + JacPDdissipationNth2At12 = PDdissipationNth2At12; + + JacPDdissipationNth2At13 = PDdissipationNth2At13; + + JacPDdissipationNth2At22 = PDdissipationNth2At22; + + JacPDdissipationNth2At23 = PDdissipationNth2At23; + + JacPDdissipationNth2At33 = PDdissipationNth2At33; + + JacPDdissipationNth2B1 = PDdissipationNth2B1; + + JacPDdissipationNth2B2 = PDdissipationNth2B2; + + JacPDdissipationNth2B3 = PDdissipationNth2B3; + + JacPDdissipationNth2beta1 = PDdissipationNth2beta1; + + JacPDdissipationNth2beta2 = PDdissipationNth2beta2; + + JacPDdissipationNth2beta3 = PDdissipationNth2beta3; + + JacPDdissipationNth2gt11 = PDdissipationNth2gt11; + + JacPDdissipationNth2gt12 = PDdissipationNth2gt12; + + JacPDdissipationNth2gt13 = PDdissipationNth2gt13; + + JacPDdissipationNth2gt22 = PDdissipationNth2gt22; + + JacPDdissipationNth2gt23 = PDdissipationNth2gt23; + + JacPDdissipationNth2gt33 = PDdissipationNth2gt33; + + JacPDdissipationNth2phi = PDdissipationNth2phi; + + JacPDdissipationNth2trK = PDdissipationNth2trK; + + JacPDdissipationNth2Xt1 = PDdissipationNth2Xt1; + + JacPDdissipationNth2Xt2 = PDdissipationNth2Xt2; + + JacPDdissipationNth2Xt3 = PDdissipationNth2Xt3; + + JacPDdissipationNth3A = PDdissipationNth3A; + + JacPDdissipationNth3alpha = PDdissipationNth3alpha; + + JacPDdissipationNth3At11 = PDdissipationNth3At11; + + JacPDdissipationNth3At12 = PDdissipationNth3At12; + + JacPDdissipationNth3At13 = PDdissipationNth3At13; + + JacPDdissipationNth3At22 = PDdissipationNth3At22; + + JacPDdissipationNth3At23 = PDdissipationNth3At23; + + JacPDdissipationNth3At33 = PDdissipationNth3At33; + + JacPDdissipationNth3B1 = PDdissipationNth3B1; + + JacPDdissipationNth3B2 = PDdissipationNth3B2; + + JacPDdissipationNth3B3 = PDdissipationNth3B3; + + JacPDdissipationNth3beta1 = PDdissipationNth3beta1; + + JacPDdissipationNth3beta2 = PDdissipationNth3beta2; + + JacPDdissipationNth3beta3 = PDdissipationNth3beta3; + + JacPDdissipationNth3gt11 = PDdissipationNth3gt11; + + JacPDdissipationNth3gt12 = PDdissipationNth3gt12; + + JacPDdissipationNth3gt13 = PDdissipationNth3gt13; + + JacPDdissipationNth3gt22 = PDdissipationNth3gt22; + + JacPDdissipationNth3gt23 = PDdissipationNth3gt23; + + JacPDdissipationNth3gt33 = PDdissipationNth3gt33; + + JacPDdissipationNth3phi = PDdissipationNth3phi; + + JacPDdissipationNth3trK = PDdissipationNth3trK; + + JacPDdissipationNth3Xt1 = PDdissipationNth3Xt1; + + JacPDdissipationNth3Xt2 = PDdissipationNth3Xt2; + + JacPDdissipationNth3Xt3 = PDdissipationNth3Xt3; + } + + CCTK_REAL epsdiss1 = ToReal(EpsDiss); + + CCTK_REAL epsdiss2 = ToReal(EpsDiss); + + CCTK_REAL epsdiss3 = ToReal(EpsDiss); + + phirhsL = epsdiss1*JacPDdissipationNth1phi + + epsdiss2*JacPDdissipationNth2phi + epsdiss3*JacPDdissipationNth3phi + + phirhsL; + + gt11rhsL = gt11rhsL + epsdiss1*JacPDdissipationNth1gt11 + + epsdiss2*JacPDdissipationNth2gt11 + epsdiss3*JacPDdissipationNth3gt11; + + gt12rhsL = gt12rhsL + epsdiss1*JacPDdissipationNth1gt12 + + epsdiss2*JacPDdissipationNth2gt12 + epsdiss3*JacPDdissipationNth3gt12; + + gt13rhsL = gt13rhsL + epsdiss1*JacPDdissipationNth1gt13 + + epsdiss2*JacPDdissipationNth2gt13 + epsdiss3*JacPDdissipationNth3gt13; + + gt22rhsL = gt22rhsL + epsdiss1*JacPDdissipationNth1gt22 + + epsdiss2*JacPDdissipationNth2gt22 + epsdiss3*JacPDdissipationNth3gt22; + + gt23rhsL = gt23rhsL + epsdiss1*JacPDdissipationNth1gt23 + + epsdiss2*JacPDdissipationNth2gt23 + epsdiss3*JacPDdissipationNth3gt23; + + gt33rhsL = gt33rhsL + epsdiss1*JacPDdissipationNth1gt33 + + epsdiss2*JacPDdissipationNth2gt33 + epsdiss3*JacPDdissipationNth3gt33; + + Xt1rhsL = epsdiss1*JacPDdissipationNth1Xt1 + + epsdiss2*JacPDdissipationNth2Xt1 + epsdiss3*JacPDdissipationNth3Xt1 + + Xt1rhsL; + + Xt2rhsL = epsdiss1*JacPDdissipationNth1Xt2 + + epsdiss2*JacPDdissipationNth2Xt2 + epsdiss3*JacPDdissipationNth3Xt2 + + Xt2rhsL; + + Xt3rhsL = epsdiss1*JacPDdissipationNth1Xt3 + + epsdiss2*JacPDdissipationNth2Xt3 + epsdiss3*JacPDdissipationNth3Xt3 + + Xt3rhsL; + + trKrhsL = epsdiss1*JacPDdissipationNth1trK + + epsdiss2*JacPDdissipationNth2trK + epsdiss3*JacPDdissipationNth3trK + + trKrhsL; + + At11rhsL = At11rhsL + epsdiss1*JacPDdissipationNth1At11 + + epsdiss2*JacPDdissipationNth2At11 + epsdiss3*JacPDdissipationNth3At11; + + At12rhsL = At12rhsL + epsdiss1*JacPDdissipationNth1At12 + + epsdiss2*JacPDdissipationNth2At12 + epsdiss3*JacPDdissipationNth3At12; + + At13rhsL = At13rhsL + epsdiss1*JacPDdissipationNth1At13 + + epsdiss2*JacPDdissipationNth2At13 + epsdiss3*JacPDdissipationNth3At13; + + At22rhsL = At22rhsL + epsdiss1*JacPDdissipationNth1At22 + + epsdiss2*JacPDdissipationNth2At22 + epsdiss3*JacPDdissipationNth3At22; + + At23rhsL = At23rhsL + epsdiss1*JacPDdissipationNth1At23 + + epsdiss2*JacPDdissipationNth2At23 + epsdiss3*JacPDdissipationNth3At23; + + At33rhsL = At33rhsL + epsdiss1*JacPDdissipationNth1At33 + + epsdiss2*JacPDdissipationNth2At33 + epsdiss3*JacPDdissipationNth3At33; + + alpharhsL = alpharhsL + epsdiss1*JacPDdissipationNth1alpha + + epsdiss2*JacPDdissipationNth2alpha + + epsdiss3*JacPDdissipationNth3alpha; + + ArhsL = ArhsL + epsdiss1*JacPDdissipationNth1A + + epsdiss2*JacPDdissipationNth2A + epsdiss3*JacPDdissipationNth3A; + + beta1rhsL = beta1rhsL + epsdiss1*JacPDdissipationNth1beta1 + + epsdiss2*JacPDdissipationNth2beta1 + + epsdiss3*JacPDdissipationNth3beta1; + + beta2rhsL = beta2rhsL + epsdiss1*JacPDdissipationNth1beta2 + + epsdiss2*JacPDdissipationNth2beta2 + + epsdiss3*JacPDdissipationNth3beta2; + + beta3rhsL = beta3rhsL + epsdiss1*JacPDdissipationNth1beta3 + + epsdiss2*JacPDdissipationNth2beta3 + + epsdiss3*JacPDdissipationNth3beta3; + + B1rhsL = B1rhsL + epsdiss1*JacPDdissipationNth1B1 + + epsdiss2*JacPDdissipationNth2B1 + epsdiss3*JacPDdissipationNth3B1; + + B2rhsL = B2rhsL + epsdiss1*JacPDdissipationNth1B2 + + epsdiss2*JacPDdissipationNth2B2 + epsdiss3*JacPDdissipationNth3B2; + + B3rhsL = B3rhsL + epsdiss1*JacPDdissipationNth1B3 + + epsdiss2*JacPDdissipationNth2B3 + epsdiss3*JacPDdissipationNth3B3; + + /* Copy local copies back to grid functions */ + alpharhs[index] = alpharhsL; + Arhs[index] = ArhsL; + At11rhs[index] = At11rhsL; + At12rhs[index] = At12rhsL; + At13rhs[index] = At13rhsL; + At22rhs[index] = At22rhsL; + At23rhs[index] = At23rhsL; + At33rhs[index] = At33rhsL; + B1rhs[index] = B1rhsL; + B2rhs[index] = B2rhsL; + B3rhs[index] = B3rhsL; + beta1rhs[index] = beta1rhsL; + beta2rhs[index] = beta2rhsL; + beta3rhs[index] = beta3rhsL; + gt11rhs[index] = gt11rhsL; + gt12rhs[index] = gt12rhsL; + gt13rhs[index] = gt13rhsL; + gt22rhs[index] = gt22rhsL; + gt23rhs[index] = gt23rhsL; + gt33rhs[index] = gt33rhsL; + phirhs[index] = phirhsL; + trKrhs[index] = trKrhsL; + Xt1rhs[index] = Xt1rhsL; + Xt2rhs[index] = Xt2rhsL; + Xt3rhs[index] = Xt3rhsL; + } + LC_ENDLOOP3 (ML_BSSN_MP_Dissipation); +} + +extern "C" void ML_BSSN_MP_Dissipation(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + GenericFD_LoopOverInterior(cctkGH, &ML_BSSN_MP_Dissipation_Body); +} diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_InitGamma.cc b/ML_BSSN_MP/src/ML_BSSN_MP_InitGamma.cc new file mode 100644 index 0000000..555be09 --- /dev/null +++ b/ML_BSSN_MP/src/ML_BSSN_MP_InitGamma.cc @@ -0,0 +1,174 @@ +/* File produced by Kranc */ + +#define KRANC_C + +#include <assert.h> +#include <math.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include "cctk.h" +#include "cctk_Arguments.h" +#include "cctk_Parameters.h" +#include "GenericFD.h" +#include "Differencing.h" +#include "loopcontrol.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)) + +static void ML_BSSN_MP_InitGamma_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[]) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + + /* Declare finite differencing variables */ + + if (verbose > 1) + { + CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_InitGamma_Body"); + } + + if (cctk_iteration % ML_BSSN_MP_InitGamma_calc_every != ML_BSSN_MP_InitGamma_calc_offset) + { + return; + } + + const char *groups[] = {"ML_BSSN_MP::ML_Gamma"}; + GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_InitGamma", 1, groups); + + + /* Include user-supplied include files */ + + /* Initialise finite differencing variables */ + ptrdiff_t const di = 1; + ptrdiff_t const dj = CCTK_GFINDEX3D(cctkGH,0,1,0) - CCTK_GFINDEX3D(cctkGH,0,0,0); + ptrdiff_t const dk = CCTK_GFINDEX3D(cctkGH,0,0,1) - CCTK_GFINDEX3D(cctkGH,0,0,0); + 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; + + /* 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 p1o24dx = 0.0416666666666666666666666666667*INV(dx); + CCTK_REAL const p1o24dy = 0.0416666666666666666666666666667*INV(dy); + CCTK_REAL const p1o24dz = 0.0416666666666666666666666666667*INV(dz); + CCTK_REAL const p1o64dx = 0.015625*INV(dx); + CCTK_REAL const p1o64dy = 0.015625*INV(dy); + CCTK_REAL const p1o64dz = 0.015625*INV(dz); + CCTK_REAL const p1odx = INV(dx); + CCTK_REAL const p1ody = INV(dy); + CCTK_REAL const p1odz = 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)); + + /* 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_BSSN_MP_InitGamma, + i,j,k, min[0],min[1],min[2], max[0],max[1],max[2], + cctk_lsh[0],cctk_lsh[1],cctk_lsh[2]) + { + ptrdiff_t const index = di*i + dj*j + dk*k; + + /* Assign local copies of grid functions */ + + + + + /* Include user supplied include files */ + + /* Precompute derivatives */ + + /* Calculate temporaries and grid functions */ + CCTK_REAL Xt1L = 0; + + CCTK_REAL Xt2L = 0; + + CCTK_REAL Xt3L = 0; + + /* Copy local copies back to grid functions */ + Xt1[index] = Xt1L; + Xt2[index] = Xt2L; + Xt3[index] = Xt3L; + } + LC_ENDLOOP3 (ML_BSSN_MP_InitGamma); +} + +extern "C" void ML_BSSN_MP_InitGamma(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + GenericFD_LoopOverEverything(cctkGH, &ML_BSSN_MP_InitGamma_Body); +} diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_Minkowski.cc b/ML_BSSN_MP/src/ML_BSSN_MP_Minkowski.cc index 956e296..81e737b 100644 --- a/ML_BSSN_MP/src/ML_BSSN_MP_Minkowski.cc +++ b/ML_BSSN_MP/src/ML_BSSN_MP_Minkowski.cc @@ -88,6 +88,51 @@ static void ML_BSSN_MP_Minkowski_Body(cGH const * restrict const cctkGH, int con CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy)); CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz)); + /* 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_BSSN_MP_Minkowski, @@ -100,12 +145,13 @@ static void ML_BSSN_MP_Minkowski_Body(cGH const * restrict const cctkGH, int con + /* Include user supplied include files */ /* Precompute derivatives */ /* Calculate temporaries and grid functions */ - CCTK_REAL phiL = IfThen(ToReal(conformalMethod),1,0); + CCTK_REAL phiL = IfThen(conformalMethod,1,0); CCTK_REAL gt11L = 1; diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_RHS1.cc b/ML_BSSN_MP/src/ML_BSSN_MP_RHS1.cc index 6658def..5b779f3 100644 --- a/ML_BSSN_MP/src/ML_BSSN_MP_RHS1.cc +++ b/ML_BSSN_MP/src/ML_BSSN_MP_RHS1.cc @@ -72,10 +72,10 @@ static void ML_BSSN_MP_RHS1_Body(cGH const * restrict const cctkGH, int const di return; } - const char *groups[] = {"Coordinates::jacobian","Coordinates::jacobian2","grid::coordinates","Grid::coordinates","ML_BSSN_MP::ML_curv","ML_BSSN_MP::ML_dtlapse","ML_BSSN_MP::ML_dtlapserhs","ML_BSSN_MP::ML_dtshift","ML_BSSN_MP::ML_dtshiftrhs","ML_BSSN_MP::ML_Gamma","ML_BSSN_MP::ML_Gammarhs","ML_BSSN_MP::ML_lapse","ML_BSSN_MP::ML_lapserhs","ML_BSSN_MP::ML_log_confac","ML_BSSN_MP::ML_log_confacrhs","ML_BSSN_MP::ML_metric","ML_BSSN_MP::ML_metricrhs","ML_BSSN_MP::ML_shift","ML_BSSN_MP::ML_shiftrhs","ML_BSSN_MP::ML_trace_curv","ML_BSSN_MP::ML_trace_curvrhs"}; - GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_RHS1", 21, groups); + const char *groups[] = {"grid::coordinates","Grid::coordinates","ML_BSSN_MP::ML_curv","ML_BSSN_MP::ML_dtlapse","ML_BSSN_MP::ML_dtlapserhs","ML_BSSN_MP::ML_dtshift","ML_BSSN_MP::ML_dtshiftrhs","ML_BSSN_MP::ML_Gamma","ML_BSSN_MP::ML_Gammarhs","ML_BSSN_MP::ML_lapse","ML_BSSN_MP::ML_lapserhs","ML_BSSN_MP::ML_log_confac","ML_BSSN_MP::ML_log_confacrhs","ML_BSSN_MP::ML_metric","ML_BSSN_MP::ML_metricrhs","ML_BSSN_MP::ML_shift","ML_BSSN_MP::ML_shiftrhs","ML_BSSN_MP::ML_trace_curv","ML_BSSN_MP::ML_trace_curvrhs"}; + GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_RHS1", 19, groups); - GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_RHS1", 3, 3, 3); + GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_RHS1", 2, 2, 2); /* Include user-supplied include files */ @@ -122,6 +122,51 @@ static void ML_BSSN_MP_RHS1_Body(cGH const * restrict const cctkGH, int const di CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy)); CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz)); + /* 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_BSSN_MP_RHS1, @@ -146,39 +191,12 @@ static void ML_BSSN_MP_RHS1_Body(cGH const * restrict const cctkGH, int const di CCTK_REAL beta1L = beta1[index]; CCTK_REAL beta2L = beta2[index]; CCTK_REAL beta3L = beta3[index]; - CCTK_REAL dJ111L = dJ111[index]; - CCTK_REAL dJ112L = dJ112[index]; - CCTK_REAL dJ113L = dJ113[index]; - CCTK_REAL dJ122L = dJ122[index]; - CCTK_REAL dJ123L = dJ123[index]; - CCTK_REAL dJ133L = dJ133[index]; - CCTK_REAL dJ211L = dJ211[index]; - CCTK_REAL dJ212L = dJ212[index]; - CCTK_REAL dJ213L = dJ213[index]; - CCTK_REAL dJ222L = dJ222[index]; - CCTK_REAL dJ223L = dJ223[index]; - CCTK_REAL dJ233L = dJ233[index]; - CCTK_REAL dJ311L = dJ311[index]; - CCTK_REAL dJ312L = dJ312[index]; - CCTK_REAL dJ313L = dJ313[index]; - CCTK_REAL dJ322L = dJ322[index]; - CCTK_REAL dJ323L = dJ323[index]; - CCTK_REAL dJ333L = dJ333[index]; CCTK_REAL gt11L = gt11[index]; CCTK_REAL gt12L = gt12[index]; CCTK_REAL gt13L = gt13[index]; CCTK_REAL gt22L = gt22[index]; CCTK_REAL gt23L = gt23[index]; CCTK_REAL gt33L = gt33[index]; - CCTK_REAL J11L = J11[index]; - CCTK_REAL J12L = J12[index]; - CCTK_REAL J13L = J13[index]; - CCTK_REAL J21L = J21[index]; - CCTK_REAL J22L = J22[index]; - CCTK_REAL J23L = J23[index]; - CCTK_REAL J31L = J31[index]; - CCTK_REAL J32L = J32[index]; - CCTK_REAL J33L = J33[index]; CCTK_REAL phiL = phi[index]; CCTK_REAL rL = r[index]; CCTK_REAL trKL = trK[index]; @@ -215,18 +233,42 @@ static void ML_BSSN_MP_RHS1_Body(cGH const * restrict const cctkGH, int const di eTzzL = ToReal(0.0); } + CCTK_REAL 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 = dJ111[index]; + dJ112L = dJ112[index]; + dJ113L = dJ113[index]; + dJ122L = dJ122[index]; + dJ123L = dJ123[index]; + dJ133L = dJ133[index]; + dJ211L = dJ211[index]; + dJ212L = dJ212[index]; + dJ213L = dJ213[index]; + dJ222L = dJ222[index]; + dJ223L = dJ223[index]; + dJ233L = dJ233[index]; + dJ311L = dJ311[index]; + dJ312L = dJ312[index]; + dJ313L = dJ313[index]; + dJ322L = dJ322[index]; + dJ323L = dJ323[index]; + dJ333L = dJ333[index]; + J11L = J11[index]; + J12L = J12[index]; + J13L = J13[index]; + J21L = J21[index]; + J22L = J22[index]; + J23L = J23[index]; + J31L = J31[index]; + J32L = J32[index]; + J33L = J33[index]; + } + /* Include user supplied include files */ /* Precompute derivatives */ - CCTK_REAL const PDdissipationNth1A = PDdissipationNth1(&A[index]); - CCTK_REAL const PDdissipationNth2A = PDdissipationNth2(&A[index]); - CCTK_REAL const PDdissipationNth3A = PDdissipationNth3(&A[index]); - CCTK_REAL const PDupwindNthAnti1A = PDupwindNthAnti1(&A[index]); - CCTK_REAL const PDupwindNthSymm1A = PDupwindNthSymm1(&A[index]); - CCTK_REAL const PDupwindNthAnti2A = PDupwindNthAnti2(&A[index]); - CCTK_REAL const PDupwindNthSymm2A = PDupwindNthSymm2(&A[index]); - CCTK_REAL const PDupwindNthAnti3A = PDupwindNthAnti3(&A[index]); - CCTK_REAL const PDupwindNthSymm3A = PDupwindNthSymm3(&A[index]); CCTK_REAL const PDstandardNth1alpha = PDstandardNth1(&alpha[index]); CCTK_REAL const PDstandardNth2alpha = PDstandardNth2(&alpha[index]); CCTK_REAL const PDstandardNth3alpha = PDstandardNth3(&alpha[index]); @@ -236,42 +278,6 @@ static void ML_BSSN_MP_RHS1_Body(cGH const * restrict const cctkGH, int const di CCTK_REAL const PDstandardNth12alpha = PDstandardNth12(&alpha[index]); CCTK_REAL const PDstandardNth13alpha = PDstandardNth13(&alpha[index]); CCTK_REAL const PDstandardNth23alpha = PDstandardNth23(&alpha[index]); - CCTK_REAL const PDdissipationNth1alpha = PDdissipationNth1(&alpha[index]); - CCTK_REAL const PDdissipationNth2alpha = PDdissipationNth2(&alpha[index]); - CCTK_REAL const PDdissipationNth3alpha = PDdissipationNth3(&alpha[index]); - CCTK_REAL const PDupwindNthAnti1alpha = PDupwindNthAnti1(&alpha[index]); - CCTK_REAL const PDupwindNthSymm1alpha = PDupwindNthSymm1(&alpha[index]); - CCTK_REAL const PDupwindNthAnti2alpha = PDupwindNthAnti2(&alpha[index]); - CCTK_REAL const PDupwindNthSymm2alpha = PDupwindNthSymm2(&alpha[index]); - CCTK_REAL const PDupwindNthAnti3alpha = PDupwindNthAnti3(&alpha[index]); - CCTK_REAL const PDupwindNthSymm3alpha = PDupwindNthSymm3(&alpha[index]); - CCTK_REAL const PDdissipationNth1B1 = PDdissipationNth1(&B1[index]); - CCTK_REAL const PDdissipationNth2B1 = PDdissipationNth2(&B1[index]); - CCTK_REAL const PDdissipationNth3B1 = PDdissipationNth3(&B1[index]); - CCTK_REAL const PDupwindNthAnti1B1 = PDupwindNthAnti1(&B1[index]); - CCTK_REAL const PDupwindNthSymm1B1 = PDupwindNthSymm1(&B1[index]); - CCTK_REAL const PDupwindNthAnti2B1 = PDupwindNthAnti2(&B1[index]); - CCTK_REAL const PDupwindNthSymm2B1 = PDupwindNthSymm2(&B1[index]); - CCTK_REAL const PDupwindNthAnti3B1 = PDupwindNthAnti3(&B1[index]); - CCTK_REAL const PDupwindNthSymm3B1 = PDupwindNthSymm3(&B1[index]); - CCTK_REAL const PDdissipationNth1B2 = PDdissipationNth1(&B2[index]); - CCTK_REAL const PDdissipationNth2B2 = PDdissipationNth2(&B2[index]); - CCTK_REAL const PDdissipationNth3B2 = PDdissipationNth3(&B2[index]); - CCTK_REAL const PDupwindNthAnti1B2 = PDupwindNthAnti1(&B2[index]); - CCTK_REAL const PDupwindNthSymm1B2 = PDupwindNthSymm1(&B2[index]); - CCTK_REAL const PDupwindNthAnti2B2 = PDupwindNthAnti2(&B2[index]); - CCTK_REAL const PDupwindNthSymm2B2 = PDupwindNthSymm2(&B2[index]); - CCTK_REAL const PDupwindNthAnti3B2 = PDupwindNthAnti3(&B2[index]); - CCTK_REAL const PDupwindNthSymm3B2 = PDupwindNthSymm3(&B2[index]); - CCTK_REAL const PDdissipationNth1B3 = PDdissipationNth1(&B3[index]); - CCTK_REAL const PDdissipationNth2B3 = PDdissipationNth2(&B3[index]); - CCTK_REAL const PDdissipationNth3B3 = PDdissipationNth3(&B3[index]); - CCTK_REAL const PDupwindNthAnti1B3 = PDupwindNthAnti1(&B3[index]); - CCTK_REAL const PDupwindNthSymm1B3 = PDupwindNthSymm1(&B3[index]); - CCTK_REAL const PDupwindNthAnti2B3 = PDupwindNthAnti2(&B3[index]); - CCTK_REAL const PDupwindNthSymm2B3 = PDupwindNthSymm2(&B3[index]); - CCTK_REAL const PDupwindNthAnti3B3 = PDupwindNthAnti3(&B3[index]); - CCTK_REAL const PDupwindNthSymm3B3 = PDupwindNthSymm3(&B3[index]); CCTK_REAL const PDstandardNth1beta1 = PDstandardNth1(&beta1[index]); CCTK_REAL const PDstandardNth2beta1 = PDstandardNth2(&beta1[index]); CCTK_REAL const PDstandardNth3beta1 = PDstandardNth3(&beta1[index]); @@ -281,15 +287,6 @@ static void ML_BSSN_MP_RHS1_Body(cGH const * restrict const cctkGH, int const di CCTK_REAL const PDstandardNth12beta1 = PDstandardNth12(&beta1[index]); CCTK_REAL const PDstandardNth13beta1 = PDstandardNth13(&beta1[index]); CCTK_REAL const PDstandardNth23beta1 = PDstandardNth23(&beta1[index]); - CCTK_REAL const PDdissipationNth1beta1 = PDdissipationNth1(&beta1[index]); - CCTK_REAL const PDdissipationNth2beta1 = PDdissipationNth2(&beta1[index]); - CCTK_REAL const PDdissipationNth3beta1 = PDdissipationNth3(&beta1[index]); - CCTK_REAL const PDupwindNthAnti1beta1 = PDupwindNthAnti1(&beta1[index]); - CCTK_REAL const PDupwindNthSymm1beta1 = PDupwindNthSymm1(&beta1[index]); - CCTK_REAL const PDupwindNthAnti2beta1 = PDupwindNthAnti2(&beta1[index]); - CCTK_REAL const PDupwindNthSymm2beta1 = PDupwindNthSymm2(&beta1[index]); - CCTK_REAL const PDupwindNthAnti3beta1 = PDupwindNthAnti3(&beta1[index]); - CCTK_REAL const PDupwindNthSymm3beta1 = PDupwindNthSymm3(&beta1[index]); CCTK_REAL const PDstandardNth1beta2 = PDstandardNth1(&beta2[index]); CCTK_REAL const PDstandardNth2beta2 = PDstandardNth2(&beta2[index]); CCTK_REAL const PDstandardNth3beta2 = PDstandardNth3(&beta2[index]); @@ -299,15 +296,6 @@ static void ML_BSSN_MP_RHS1_Body(cGH const * restrict const cctkGH, int const di CCTK_REAL const PDstandardNth12beta2 = PDstandardNth12(&beta2[index]); CCTK_REAL const PDstandardNth13beta2 = PDstandardNth13(&beta2[index]); CCTK_REAL const PDstandardNth23beta2 = PDstandardNth23(&beta2[index]); - CCTK_REAL const PDdissipationNth1beta2 = PDdissipationNth1(&beta2[index]); - CCTK_REAL const PDdissipationNth2beta2 = PDdissipationNth2(&beta2[index]); - CCTK_REAL const PDdissipationNth3beta2 = PDdissipationNth3(&beta2[index]); - CCTK_REAL const PDupwindNthAnti1beta2 = PDupwindNthAnti1(&beta2[index]); - CCTK_REAL const PDupwindNthSymm1beta2 = PDupwindNthSymm1(&beta2[index]); - CCTK_REAL const PDupwindNthAnti2beta2 = PDupwindNthAnti2(&beta2[index]); - CCTK_REAL const PDupwindNthSymm2beta2 = PDupwindNthSymm2(&beta2[index]); - CCTK_REAL const PDupwindNthAnti3beta2 = PDupwindNthAnti3(&beta2[index]); - CCTK_REAL const PDupwindNthSymm3beta2 = PDupwindNthSymm3(&beta2[index]); CCTK_REAL const PDstandardNth1beta3 = PDstandardNth1(&beta3[index]); CCTK_REAL const PDstandardNth2beta3 = PDstandardNth2(&beta3[index]); CCTK_REAL const PDstandardNth3beta3 = PDstandardNth3(&beta3[index]); @@ -317,152 +305,632 @@ static void ML_BSSN_MP_RHS1_Body(cGH const * restrict const cctkGH, int const di CCTK_REAL const PDstandardNth12beta3 = PDstandardNth12(&beta3[index]); CCTK_REAL const PDstandardNth13beta3 = PDstandardNth13(&beta3[index]); CCTK_REAL const PDstandardNth23beta3 = PDstandardNth23(&beta3[index]); - CCTK_REAL const PDdissipationNth1beta3 = PDdissipationNth1(&beta3[index]); - CCTK_REAL const PDdissipationNth2beta3 = PDdissipationNth2(&beta3[index]); - CCTK_REAL const PDdissipationNth3beta3 = PDdissipationNth3(&beta3[index]); - CCTK_REAL const PDupwindNthAnti1beta3 = PDupwindNthAnti1(&beta3[index]); - CCTK_REAL const PDupwindNthSymm1beta3 = PDupwindNthSymm1(&beta3[index]); - CCTK_REAL const PDupwindNthAnti2beta3 = PDupwindNthAnti2(&beta3[index]); - CCTK_REAL const PDupwindNthSymm2beta3 = PDupwindNthSymm2(&beta3[index]); - CCTK_REAL const PDupwindNthAnti3beta3 = PDupwindNthAnti3(&beta3[index]); - CCTK_REAL const PDupwindNthSymm3beta3 = PDupwindNthSymm3(&beta3[index]); CCTK_REAL const PDstandardNth1gt11 = PDstandardNth1(>11[index]); CCTK_REAL const PDstandardNth2gt11 = PDstandardNth2(>11[index]); CCTK_REAL const PDstandardNth3gt11 = PDstandardNth3(>11[index]); - CCTK_REAL const PDdissipationNth1gt11 = PDdissipationNth1(>11[index]); - CCTK_REAL const PDdissipationNth2gt11 = PDdissipationNth2(>11[index]); - CCTK_REAL const PDdissipationNth3gt11 = PDdissipationNth3(>11[index]); - CCTK_REAL const PDupwindNthAnti1gt11 = PDupwindNthAnti1(>11[index]); - CCTK_REAL const PDupwindNthSymm1gt11 = PDupwindNthSymm1(>11[index]); - CCTK_REAL const PDupwindNthAnti2gt11 = PDupwindNthAnti2(>11[index]); - CCTK_REAL const PDupwindNthSymm2gt11 = PDupwindNthSymm2(>11[index]); - CCTK_REAL const PDupwindNthAnti3gt11 = PDupwindNthAnti3(>11[index]); - CCTK_REAL const PDupwindNthSymm3gt11 = PDupwindNthSymm3(>11[index]); CCTK_REAL const PDstandardNth1gt12 = PDstandardNth1(>12[index]); CCTK_REAL const PDstandardNth2gt12 = PDstandardNth2(>12[index]); CCTK_REAL const PDstandardNth3gt12 = PDstandardNth3(>12[index]); - CCTK_REAL const PDdissipationNth1gt12 = PDdissipationNth1(>12[index]); - CCTK_REAL const PDdissipationNth2gt12 = PDdissipationNth2(>12[index]); - CCTK_REAL const PDdissipationNth3gt12 = PDdissipationNth3(>12[index]); - CCTK_REAL const PDupwindNthAnti1gt12 = PDupwindNthAnti1(>12[index]); - CCTK_REAL const PDupwindNthSymm1gt12 = PDupwindNthSymm1(>12[index]); - CCTK_REAL const PDupwindNthAnti2gt12 = PDupwindNthAnti2(>12[index]); - CCTK_REAL const PDupwindNthSymm2gt12 = PDupwindNthSymm2(>12[index]); - CCTK_REAL const PDupwindNthAnti3gt12 = PDupwindNthAnti3(>12[index]); - CCTK_REAL const PDupwindNthSymm3gt12 = PDupwindNthSymm3(>12[index]); CCTK_REAL const PDstandardNth1gt13 = PDstandardNth1(>13[index]); CCTK_REAL const PDstandardNth2gt13 = PDstandardNth2(>13[index]); CCTK_REAL const PDstandardNth3gt13 = PDstandardNth3(>13[index]); - CCTK_REAL const PDdissipationNth1gt13 = PDdissipationNth1(>13[index]); - CCTK_REAL const PDdissipationNth2gt13 = PDdissipationNth2(>13[index]); - CCTK_REAL const PDdissipationNth3gt13 = PDdissipationNth3(>13[index]); - CCTK_REAL const PDupwindNthAnti1gt13 = PDupwindNthAnti1(>13[index]); - CCTK_REAL const PDupwindNthSymm1gt13 = PDupwindNthSymm1(>13[index]); - CCTK_REAL const PDupwindNthAnti2gt13 = PDupwindNthAnti2(>13[index]); - CCTK_REAL const PDupwindNthSymm2gt13 = PDupwindNthSymm2(>13[index]); - CCTK_REAL const PDupwindNthAnti3gt13 = PDupwindNthAnti3(>13[index]); - CCTK_REAL const PDupwindNthSymm3gt13 = PDupwindNthSymm3(>13[index]); CCTK_REAL const PDstandardNth1gt22 = PDstandardNth1(>22[index]); CCTK_REAL const PDstandardNth2gt22 = PDstandardNth2(>22[index]); CCTK_REAL const PDstandardNth3gt22 = PDstandardNth3(>22[index]); - CCTK_REAL const PDdissipationNth1gt22 = PDdissipationNth1(>22[index]); - CCTK_REAL const PDdissipationNth2gt22 = PDdissipationNth2(>22[index]); - CCTK_REAL const PDdissipationNth3gt22 = PDdissipationNth3(>22[index]); - CCTK_REAL const PDupwindNthAnti1gt22 = PDupwindNthAnti1(>22[index]); - CCTK_REAL const PDupwindNthSymm1gt22 = PDupwindNthSymm1(>22[index]); - CCTK_REAL const PDupwindNthAnti2gt22 = PDupwindNthAnti2(>22[index]); - CCTK_REAL const PDupwindNthSymm2gt22 = PDupwindNthSymm2(>22[index]); - CCTK_REAL const PDupwindNthAnti3gt22 = PDupwindNthAnti3(>22[index]); - CCTK_REAL const PDupwindNthSymm3gt22 = PDupwindNthSymm3(>22[index]); CCTK_REAL const PDstandardNth1gt23 = PDstandardNth1(>23[index]); CCTK_REAL const PDstandardNth2gt23 = PDstandardNth2(>23[index]); CCTK_REAL const PDstandardNth3gt23 = PDstandardNth3(>23[index]); - CCTK_REAL const PDdissipationNth1gt23 = PDdissipationNth1(>23[index]); - CCTK_REAL const PDdissipationNth2gt23 = PDdissipationNth2(>23[index]); - CCTK_REAL const PDdissipationNth3gt23 = PDdissipationNth3(>23[index]); - CCTK_REAL const PDupwindNthAnti1gt23 = PDupwindNthAnti1(>23[index]); - CCTK_REAL const PDupwindNthSymm1gt23 = PDupwindNthSymm1(>23[index]); - CCTK_REAL const PDupwindNthAnti2gt23 = PDupwindNthAnti2(>23[index]); - CCTK_REAL const PDupwindNthSymm2gt23 = PDupwindNthSymm2(>23[index]); - CCTK_REAL const PDupwindNthAnti3gt23 = PDupwindNthAnti3(>23[index]); - CCTK_REAL const PDupwindNthSymm3gt23 = PDupwindNthSymm3(>23[index]); CCTK_REAL const PDstandardNth1gt33 = PDstandardNth1(>33[index]); CCTK_REAL const PDstandardNth2gt33 = PDstandardNth2(>33[index]); CCTK_REAL const PDstandardNth3gt33 = PDstandardNth3(>33[index]); - CCTK_REAL const PDdissipationNth1gt33 = PDdissipationNth1(>33[index]); - CCTK_REAL const PDdissipationNth2gt33 = PDdissipationNth2(>33[index]); - CCTK_REAL const PDdissipationNth3gt33 = PDdissipationNth3(>33[index]); - CCTK_REAL const PDupwindNthAnti1gt33 = PDupwindNthAnti1(>33[index]); - CCTK_REAL const PDupwindNthSymm1gt33 = PDupwindNthSymm1(>33[index]); - CCTK_REAL const PDupwindNthAnti2gt33 = PDupwindNthAnti2(>33[index]); - CCTK_REAL const PDupwindNthSymm2gt33 = PDupwindNthSymm2(>33[index]); - CCTK_REAL const PDupwindNthAnti3gt33 = PDupwindNthAnti3(>33[index]); - CCTK_REAL const PDupwindNthSymm3gt33 = PDupwindNthSymm3(>33[index]); CCTK_REAL const PDstandardNth1phi = PDstandardNth1(&phi[index]); CCTK_REAL const PDstandardNth2phi = PDstandardNth2(&phi[index]); CCTK_REAL const PDstandardNth3phi = PDstandardNth3(&phi[index]); - CCTK_REAL const PDdissipationNth1phi = PDdissipationNth1(&phi[index]); - CCTK_REAL const PDdissipationNth2phi = PDdissipationNth2(&phi[index]); - CCTK_REAL const PDdissipationNth3phi = PDdissipationNth3(&phi[index]); - CCTK_REAL const PDupwindNthAnti1phi = PDupwindNthAnti1(&phi[index]); - CCTK_REAL const PDupwindNthSymm1phi = PDupwindNthSymm1(&phi[index]); - CCTK_REAL const PDupwindNthAnti2phi = PDupwindNthAnti2(&phi[index]); - CCTK_REAL const PDupwindNthSymm2phi = PDupwindNthSymm2(&phi[index]); - CCTK_REAL const PDupwindNthAnti3phi = PDupwindNthAnti3(&phi[index]); - CCTK_REAL const PDupwindNthSymm3phi = PDupwindNthSymm3(&phi[index]); CCTK_REAL const PDstandardNth1trK = PDstandardNth1(&trK[index]); CCTK_REAL const PDstandardNth2trK = PDstandardNth2(&trK[index]); CCTK_REAL const PDstandardNth3trK = PDstandardNth3(&trK[index]); - CCTK_REAL const PDdissipationNth1trK = PDdissipationNth1(&trK[index]); - CCTK_REAL const PDdissipationNth2trK = PDdissipationNth2(&trK[index]); - CCTK_REAL const PDdissipationNth3trK = PDdissipationNth3(&trK[index]); - CCTK_REAL const PDupwindNthAnti1trK = PDupwindNthAnti1(&trK[index]); - CCTK_REAL const PDupwindNthSymm1trK = PDupwindNthSymm1(&trK[index]); - CCTK_REAL const PDupwindNthAnti2trK = PDupwindNthAnti2(&trK[index]); - CCTK_REAL const PDupwindNthSymm2trK = PDupwindNthSymm2(&trK[index]); - CCTK_REAL const PDupwindNthAnti3trK = PDupwindNthAnti3(&trK[index]); - CCTK_REAL const PDupwindNthSymm3trK = PDupwindNthSymm3(&trK[index]); - CCTK_REAL const PDdissipationNth1Xt1 = PDdissipationNth1(&Xt1[index]); - CCTK_REAL const PDdissipationNth2Xt1 = PDdissipationNth2(&Xt1[index]); - CCTK_REAL const PDdissipationNth3Xt1 = PDdissipationNth3(&Xt1[index]); - CCTK_REAL const PDupwindNthAnti1Xt1 = PDupwindNthAnti1(&Xt1[index]); - CCTK_REAL const PDupwindNthSymm1Xt1 = PDupwindNthSymm1(&Xt1[index]); - CCTK_REAL const PDupwindNthAnti2Xt1 = PDupwindNthAnti2(&Xt1[index]); - CCTK_REAL const PDupwindNthSymm2Xt1 = PDupwindNthSymm2(&Xt1[index]); - CCTK_REAL const PDupwindNthAnti3Xt1 = PDupwindNthAnti3(&Xt1[index]); - CCTK_REAL const PDupwindNthSymm3Xt1 = PDupwindNthSymm3(&Xt1[index]); - CCTK_REAL const PDdissipationNth1Xt2 = PDdissipationNth1(&Xt2[index]); - CCTK_REAL const PDdissipationNth2Xt2 = PDdissipationNth2(&Xt2[index]); - CCTK_REAL const PDdissipationNth3Xt2 = PDdissipationNth3(&Xt2[index]); - CCTK_REAL const PDupwindNthAnti1Xt2 = PDupwindNthAnti1(&Xt2[index]); - CCTK_REAL const PDupwindNthSymm1Xt2 = PDupwindNthSymm1(&Xt2[index]); - CCTK_REAL const PDupwindNthAnti2Xt2 = PDupwindNthAnti2(&Xt2[index]); - CCTK_REAL const PDupwindNthSymm2Xt2 = PDupwindNthSymm2(&Xt2[index]); - CCTK_REAL const PDupwindNthAnti3Xt2 = PDupwindNthAnti3(&Xt2[index]); - CCTK_REAL const PDupwindNthSymm3Xt2 = PDupwindNthSymm3(&Xt2[index]); - CCTK_REAL const PDdissipationNth1Xt3 = PDdissipationNth1(&Xt3[index]); - CCTK_REAL const PDdissipationNth2Xt3 = PDdissipationNth2(&Xt3[index]); - CCTK_REAL const PDdissipationNth3Xt3 = PDdissipationNth3(&Xt3[index]); - CCTK_REAL const PDupwindNthAnti1Xt3 = PDupwindNthAnti1(&Xt3[index]); - CCTK_REAL const PDupwindNthSymm1Xt3 = PDupwindNthSymm1(&Xt3[index]); - CCTK_REAL const PDupwindNthAnti2Xt3 = PDupwindNthAnti2(&Xt3[index]); - CCTK_REAL const PDupwindNthSymm2Xt3 = PDupwindNthSymm2(&Xt3[index]); - CCTK_REAL const PDupwindNthAnti3Xt3 = PDupwindNthAnti3(&Xt3[index]); - CCTK_REAL const PDupwindNthSymm3Xt3 = PDupwindNthSymm3(&Xt3[index]); /* Calculate temporaries and grid functions */ + CCTK_REAL JacPDstandardNth11alpha; + CCTK_REAL JacPDstandardNth11beta1; + CCTK_REAL JacPDstandardNth11beta2; + CCTK_REAL JacPDstandardNth11beta3; + CCTK_REAL JacPDstandardNth12alpha; + CCTK_REAL JacPDstandardNth12beta1; + CCTK_REAL JacPDstandardNth12beta2; + CCTK_REAL JacPDstandardNth12beta3; + CCTK_REAL JacPDstandardNth13alpha; + CCTK_REAL JacPDstandardNth13beta1; + CCTK_REAL JacPDstandardNth13beta2; + CCTK_REAL JacPDstandardNth13beta3; + CCTK_REAL JacPDstandardNth1alpha; + CCTK_REAL JacPDstandardNth1beta1; + CCTK_REAL JacPDstandardNth1beta2; + CCTK_REAL JacPDstandardNth1beta3; + CCTK_REAL JacPDstandardNth1gt11; + CCTK_REAL JacPDstandardNth1gt12; + CCTK_REAL JacPDstandardNth1gt13; + CCTK_REAL JacPDstandardNth1gt22; + CCTK_REAL JacPDstandardNth1gt23; + CCTK_REAL JacPDstandardNth1gt33; + CCTK_REAL JacPDstandardNth1phi; + CCTK_REAL JacPDstandardNth1trK; + CCTK_REAL JacPDstandardNth21alpha; + CCTK_REAL JacPDstandardNth21beta1; + CCTK_REAL JacPDstandardNth21beta2; + CCTK_REAL JacPDstandardNth21beta3; + CCTK_REAL JacPDstandardNth22alpha; + CCTK_REAL JacPDstandardNth22beta1; + CCTK_REAL JacPDstandardNth22beta2; + CCTK_REAL JacPDstandardNth22beta3; + CCTK_REAL JacPDstandardNth23alpha; + CCTK_REAL JacPDstandardNth23beta1; + CCTK_REAL JacPDstandardNth23beta2; + CCTK_REAL JacPDstandardNth23beta3; + CCTK_REAL JacPDstandardNth2alpha; + CCTK_REAL JacPDstandardNth2beta1; + CCTK_REAL JacPDstandardNth2beta2; + CCTK_REAL JacPDstandardNth2beta3; + CCTK_REAL JacPDstandardNth2gt11; + CCTK_REAL JacPDstandardNth2gt12; + CCTK_REAL JacPDstandardNth2gt13; + CCTK_REAL JacPDstandardNth2gt22; + CCTK_REAL JacPDstandardNth2gt23; + CCTK_REAL JacPDstandardNth2gt33; + CCTK_REAL JacPDstandardNth2phi; + CCTK_REAL JacPDstandardNth2trK; + CCTK_REAL JacPDstandardNth31alpha; + CCTK_REAL JacPDstandardNth31beta1; + CCTK_REAL JacPDstandardNth31beta2; + CCTK_REAL JacPDstandardNth31beta3; + CCTK_REAL JacPDstandardNth32alpha; + CCTK_REAL JacPDstandardNth32beta1; + CCTK_REAL JacPDstandardNth32beta2; + CCTK_REAL JacPDstandardNth32beta3; + CCTK_REAL JacPDstandardNth33alpha; + CCTK_REAL JacPDstandardNth33beta1; + CCTK_REAL JacPDstandardNth33beta2; + CCTK_REAL JacPDstandardNth33beta3; + CCTK_REAL JacPDstandardNth3alpha; + CCTK_REAL JacPDstandardNth3beta1; + CCTK_REAL JacPDstandardNth3beta2; + CCTK_REAL JacPDstandardNth3beta3; + CCTK_REAL JacPDstandardNth3gt11; + CCTK_REAL JacPDstandardNth3gt12; + CCTK_REAL JacPDstandardNth3gt13; + CCTK_REAL JacPDstandardNth3gt22; + CCTK_REAL JacPDstandardNth3gt23; + CCTK_REAL JacPDstandardNth3gt33; + CCTK_REAL JacPDstandardNth3phi; + CCTK_REAL JacPDstandardNth3trK; + + if (use_jacobian) + { + JacPDstandardNth1alpha = J11L*PDstandardNth1alpha + + J21L*PDstandardNth2alpha + J31L*PDstandardNth3alpha; + + JacPDstandardNth1beta1 = J11L*PDstandardNth1beta1 + + J21L*PDstandardNth2beta1 + J31L*PDstandardNth3beta1; + + JacPDstandardNth1beta2 = J11L*PDstandardNth1beta2 + + J21L*PDstandardNth2beta2 + J31L*PDstandardNth3beta2; + + JacPDstandardNth1beta3 = J11L*PDstandardNth1beta3 + + J21L*PDstandardNth2beta3 + J31L*PDstandardNth3beta3; + + JacPDstandardNth1gt11 = J11L*PDstandardNth1gt11 + + J21L*PDstandardNth2gt11 + J31L*PDstandardNth3gt11; + + JacPDstandardNth1gt12 = J11L*PDstandardNth1gt12 + + J21L*PDstandardNth2gt12 + J31L*PDstandardNth3gt12; + + JacPDstandardNth1gt13 = J11L*PDstandardNth1gt13 + + J21L*PDstandardNth2gt13 + J31L*PDstandardNth3gt13; + + JacPDstandardNth1gt22 = J11L*PDstandardNth1gt22 + + J21L*PDstandardNth2gt22 + J31L*PDstandardNth3gt22; + + JacPDstandardNth1gt23 = J11L*PDstandardNth1gt23 + + J21L*PDstandardNth2gt23 + J31L*PDstandardNth3gt23; + + JacPDstandardNth1gt33 = J11L*PDstandardNth1gt33 + + J21L*PDstandardNth2gt33 + J31L*PDstandardNth3gt33; + + JacPDstandardNth1phi = J11L*PDstandardNth1phi + J21L*PDstandardNth2phi + + J31L*PDstandardNth3phi; + + JacPDstandardNth1trK = J11L*PDstandardNth1trK + J21L*PDstandardNth2trK + + J31L*PDstandardNth3trK; + + JacPDstandardNth2alpha = J12L*PDstandardNth1alpha + + J22L*PDstandardNth2alpha + J32L*PDstandardNth3alpha; + + JacPDstandardNth2beta1 = J12L*PDstandardNth1beta1 + + J22L*PDstandardNth2beta1 + J32L*PDstandardNth3beta1; + + JacPDstandardNth2beta2 = J12L*PDstandardNth1beta2 + + J22L*PDstandardNth2beta2 + J32L*PDstandardNth3beta2; + + JacPDstandardNth2beta3 = J12L*PDstandardNth1beta3 + + J22L*PDstandardNth2beta3 + J32L*PDstandardNth3beta3; + + JacPDstandardNth2gt11 = J12L*PDstandardNth1gt11 + + J22L*PDstandardNth2gt11 + J32L*PDstandardNth3gt11; + + JacPDstandardNth2gt12 = J12L*PDstandardNth1gt12 + + J22L*PDstandardNth2gt12 + J32L*PDstandardNth3gt12; + + JacPDstandardNth2gt13 = J12L*PDstandardNth1gt13 + + J22L*PDstandardNth2gt13 + J32L*PDstandardNth3gt13; + + JacPDstandardNth2gt22 = J12L*PDstandardNth1gt22 + + J22L*PDstandardNth2gt22 + J32L*PDstandardNth3gt22; + + JacPDstandardNth2gt23 = J12L*PDstandardNth1gt23 + + J22L*PDstandardNth2gt23 + J32L*PDstandardNth3gt23; + + JacPDstandardNth2gt33 = J12L*PDstandardNth1gt33 + + J22L*PDstandardNth2gt33 + J32L*PDstandardNth3gt33; + + JacPDstandardNth2phi = J12L*PDstandardNth1phi + J22L*PDstandardNth2phi + + J32L*PDstandardNth3phi; + + JacPDstandardNth2trK = J12L*PDstandardNth1trK + J22L*PDstandardNth2trK + + J32L*PDstandardNth3trK; + + JacPDstandardNth3alpha = J13L*PDstandardNth1alpha + + J23L*PDstandardNth2alpha + J33L*PDstandardNth3alpha; + + JacPDstandardNth3beta1 = J13L*PDstandardNth1beta1 + + J23L*PDstandardNth2beta1 + J33L*PDstandardNth3beta1; + + JacPDstandardNth3beta2 = J13L*PDstandardNth1beta2 + + J23L*PDstandardNth2beta2 + J33L*PDstandardNth3beta2; + + JacPDstandardNth3beta3 = J13L*PDstandardNth1beta3 + + J23L*PDstandardNth2beta3 + J33L*PDstandardNth3beta3; + + JacPDstandardNth3gt11 = J13L*PDstandardNth1gt11 + + J23L*PDstandardNth2gt11 + J33L*PDstandardNth3gt11; + + JacPDstandardNth3gt12 = J13L*PDstandardNth1gt12 + + J23L*PDstandardNth2gt12 + J33L*PDstandardNth3gt12; + + JacPDstandardNth3gt13 = J13L*PDstandardNth1gt13 + + J23L*PDstandardNth2gt13 + J33L*PDstandardNth3gt13; + + JacPDstandardNth3gt22 = J13L*PDstandardNth1gt22 + + J23L*PDstandardNth2gt22 + J33L*PDstandardNth3gt22; + + JacPDstandardNth3gt23 = J13L*PDstandardNth1gt23 + + J23L*PDstandardNth2gt23 + J33L*PDstandardNth3gt23; + + JacPDstandardNth3gt33 = J13L*PDstandardNth1gt33 + + J23L*PDstandardNth2gt33 + J33L*PDstandardNth3gt33; + + JacPDstandardNth3phi = J13L*PDstandardNth1phi + J23L*PDstandardNth2phi + + J33L*PDstandardNth3phi; + + JacPDstandardNth3trK = J13L*PDstandardNth1trK + J23L*PDstandardNth2trK + + J33L*PDstandardNth3trK; + + JacPDstandardNth11alpha = dJ111L*PDstandardNth1alpha + + 2*(J11L*(J21L*PDstandardNth12alpha + J31L*PDstandardNth13alpha) + + J21L*J31L*PDstandardNth23alpha) + dJ211L*PDstandardNth2alpha + + dJ311L*PDstandardNth3alpha + PDstandardNth11alpha*SQR(J11L) + + PDstandardNth22alpha*SQR(J21L) + PDstandardNth33alpha*SQR(J31L); + + JacPDstandardNth11beta1 = dJ111L*PDstandardNth1beta1 + + 2*(J11L*(J21L*PDstandardNth12beta1 + J31L*PDstandardNth13beta1) + + J21L*J31L*PDstandardNth23beta1) + dJ211L*PDstandardNth2beta1 + + dJ311L*PDstandardNth3beta1 + PDstandardNth11beta1*SQR(J11L) + + PDstandardNth22beta1*SQR(J21L) + PDstandardNth33beta1*SQR(J31L); + + JacPDstandardNth11beta2 = dJ111L*PDstandardNth1beta2 + + 2*(J11L*(J21L*PDstandardNth12beta2 + J31L*PDstandardNth13beta2) + + J21L*J31L*PDstandardNth23beta2) + dJ211L*PDstandardNth2beta2 + + dJ311L*PDstandardNth3beta2 + PDstandardNth11beta2*SQR(J11L) + + PDstandardNth22beta2*SQR(J21L) + PDstandardNth33beta2*SQR(J31L); + + JacPDstandardNth11beta3 = dJ111L*PDstandardNth1beta3 + + 2*(J11L*(J21L*PDstandardNth12beta3 + J31L*PDstandardNth13beta3) + + J21L*J31L*PDstandardNth23beta3) + dJ211L*PDstandardNth2beta3 + + dJ311L*PDstandardNth3beta3 + PDstandardNth11beta3*SQR(J11L) + + PDstandardNth22beta3*SQR(J21L) + PDstandardNth33beta3*SQR(J31L); + + JacPDstandardNth22alpha = dJ122L*PDstandardNth1alpha + + 2*(J12L*(J22L*PDstandardNth12alpha + J32L*PDstandardNth13alpha) + + J22L*J32L*PDstandardNth23alpha) + dJ222L*PDstandardNth2alpha + + dJ322L*PDstandardNth3alpha + PDstandardNth11alpha*SQR(J12L) + + PDstandardNth22alpha*SQR(J22L) + PDstandardNth33alpha*SQR(J32L); + + JacPDstandardNth22beta1 = dJ122L*PDstandardNth1beta1 + + 2*(J12L*(J22L*PDstandardNth12beta1 + J32L*PDstandardNth13beta1) + + J22L*J32L*PDstandardNth23beta1) + dJ222L*PDstandardNth2beta1 + + dJ322L*PDstandardNth3beta1 + PDstandardNth11beta1*SQR(J12L) + + PDstandardNth22beta1*SQR(J22L) + PDstandardNth33beta1*SQR(J32L); + + JacPDstandardNth22beta2 = dJ122L*PDstandardNth1beta2 + + 2*(J12L*(J22L*PDstandardNth12beta2 + J32L*PDstandardNth13beta2) + + J22L*J32L*PDstandardNth23beta2) + dJ222L*PDstandardNth2beta2 + + dJ322L*PDstandardNth3beta2 + PDstandardNth11beta2*SQR(J12L) + + PDstandardNth22beta2*SQR(J22L) + PDstandardNth33beta2*SQR(J32L); + + JacPDstandardNth22beta3 = dJ122L*PDstandardNth1beta3 + + 2*(J12L*(J22L*PDstandardNth12beta3 + J32L*PDstandardNth13beta3) + + J22L*J32L*PDstandardNth23beta3) + dJ222L*PDstandardNth2beta3 + + dJ322L*PDstandardNth3beta3 + PDstandardNth11beta3*SQR(J12L) + + PDstandardNth22beta3*SQR(J22L) + PDstandardNth33beta3*SQR(J32L); + + JacPDstandardNth33alpha = dJ133L*PDstandardNth1alpha + + 2*(J13L*(J23L*PDstandardNth12alpha + J33L*PDstandardNth13alpha) + + J23L*J33L*PDstandardNth23alpha) + dJ233L*PDstandardNth2alpha + + dJ333L*PDstandardNth3alpha + PDstandardNth11alpha*SQR(J13L) + + PDstandardNth22alpha*SQR(J23L) + PDstandardNth33alpha*SQR(J33L); + + JacPDstandardNth33beta1 = dJ133L*PDstandardNth1beta1 + + 2*(J13L*(J23L*PDstandardNth12beta1 + J33L*PDstandardNth13beta1) + + J23L*J33L*PDstandardNth23beta1) + dJ233L*PDstandardNth2beta1 + + dJ333L*PDstandardNth3beta1 + PDstandardNth11beta1*SQR(J13L) + + PDstandardNth22beta1*SQR(J23L) + PDstandardNth33beta1*SQR(J33L); + + JacPDstandardNth33beta2 = dJ133L*PDstandardNth1beta2 + + 2*(J13L*(J23L*PDstandardNth12beta2 + J33L*PDstandardNth13beta2) + + J23L*J33L*PDstandardNth23beta2) + dJ233L*PDstandardNth2beta2 + + dJ333L*PDstandardNth3beta2 + PDstandardNth11beta2*SQR(J13L) + + PDstandardNth22beta2*SQR(J23L) + PDstandardNth33beta2*SQR(J33L); + + JacPDstandardNth33beta3 = dJ133L*PDstandardNth1beta3 + + 2*(J13L*(J23L*PDstandardNth12beta3 + J33L*PDstandardNth13beta3) + + J23L*J33L*PDstandardNth23beta3) + dJ233L*PDstandardNth2beta3 + + dJ333L*PDstandardNth3beta3 + PDstandardNth11beta3*SQR(J13L) + + PDstandardNth22beta3*SQR(J23L) + PDstandardNth33beta3*SQR(J33L); + + JacPDstandardNth12alpha = J12L*(J11L*PDstandardNth11alpha + + J21L*PDstandardNth12alpha + J31L*PDstandardNth13alpha) + + J11L*(J22L*PDstandardNth12alpha + J32L*PDstandardNth13alpha) + + dJ112L*PDstandardNth1alpha + J22L*(J21L*PDstandardNth22alpha + + J31L*PDstandardNth23alpha) + dJ212L*PDstandardNth2alpha + + J32L*(J21L*PDstandardNth23alpha + J31L*PDstandardNth33alpha) + + dJ312L*PDstandardNth3alpha; + + JacPDstandardNth12beta1 = J12L*(J11L*PDstandardNth11beta1 + + J21L*PDstandardNth12beta1 + J31L*PDstandardNth13beta1) + + J11L*(J22L*PDstandardNth12beta1 + J32L*PDstandardNth13beta1) + + dJ112L*PDstandardNth1beta1 + J22L*(J21L*PDstandardNth22beta1 + + J31L*PDstandardNth23beta1) + dJ212L*PDstandardNth2beta1 + + J32L*(J21L*PDstandardNth23beta1 + J31L*PDstandardNth33beta1) + + dJ312L*PDstandardNth3beta1; + + JacPDstandardNth12beta2 = J12L*(J11L*PDstandardNth11beta2 + + J21L*PDstandardNth12beta2 + J31L*PDstandardNth13beta2) + + J11L*(J22L*PDstandardNth12beta2 + J32L*PDstandardNth13beta2) + + dJ112L*PDstandardNth1beta2 + J22L*(J21L*PDstandardNth22beta2 + + J31L*PDstandardNth23beta2) + dJ212L*PDstandardNth2beta2 + + J32L*(J21L*PDstandardNth23beta2 + J31L*PDstandardNth33beta2) + + dJ312L*PDstandardNth3beta2; + + JacPDstandardNth12beta3 = J12L*(J11L*PDstandardNth11beta3 + + J21L*PDstandardNth12beta3 + J31L*PDstandardNth13beta3) + + J11L*(J22L*PDstandardNth12beta3 + J32L*PDstandardNth13beta3) + + dJ112L*PDstandardNth1beta3 + J22L*(J21L*PDstandardNth22beta3 + + J31L*PDstandardNth23beta3) + dJ212L*PDstandardNth2beta3 + + J32L*(J21L*PDstandardNth23beta3 + J31L*PDstandardNth33beta3) + + dJ312L*PDstandardNth3beta3; + + JacPDstandardNth13alpha = J13L*(J11L*PDstandardNth11alpha + + J21L*PDstandardNth12alpha + J31L*PDstandardNth13alpha) + + J11L*(J23L*PDstandardNth12alpha + J33L*PDstandardNth13alpha) + + dJ113L*PDstandardNth1alpha + J23L*(J21L*PDstandardNth22alpha + + J31L*PDstandardNth23alpha) + dJ213L*PDstandardNth2alpha + + J33L*(J21L*PDstandardNth23alpha + J31L*PDstandardNth33alpha) + + dJ313L*PDstandardNth3alpha; + + JacPDstandardNth13beta1 = J13L*(J11L*PDstandardNth11beta1 + + J21L*PDstandardNth12beta1 + J31L*PDstandardNth13beta1) + + J11L*(J23L*PDstandardNth12beta1 + J33L*PDstandardNth13beta1) + + dJ113L*PDstandardNth1beta1 + J23L*(J21L*PDstandardNth22beta1 + + J31L*PDstandardNth23beta1) + dJ213L*PDstandardNth2beta1 + + J33L*(J21L*PDstandardNth23beta1 + J31L*PDstandardNth33beta1) + + dJ313L*PDstandardNth3beta1; + + JacPDstandardNth13beta2 = J13L*(J11L*PDstandardNth11beta2 + + J21L*PDstandardNth12beta2 + J31L*PDstandardNth13beta2) + + J11L*(J23L*PDstandardNth12beta2 + J33L*PDstandardNth13beta2) + + dJ113L*PDstandardNth1beta2 + J23L*(J21L*PDstandardNth22beta2 + + J31L*PDstandardNth23beta2) + dJ213L*PDstandardNth2beta2 + + J33L*(J21L*PDstandardNth23beta2 + J31L*PDstandardNth33beta2) + + dJ313L*PDstandardNth3beta2; + + JacPDstandardNth13beta3 = J13L*(J11L*PDstandardNth11beta3 + + J21L*PDstandardNth12beta3 + J31L*PDstandardNth13beta3) + + J11L*(J23L*PDstandardNth12beta3 + J33L*PDstandardNth13beta3) + + dJ113L*PDstandardNth1beta3 + J23L*(J21L*PDstandardNth22beta3 + + J31L*PDstandardNth23beta3) + dJ213L*PDstandardNth2beta3 + + J33L*(J21L*PDstandardNth23beta3 + J31L*PDstandardNth33beta3) + + dJ313L*PDstandardNth3beta3; + + JacPDstandardNth21alpha = J12L*(J11L*PDstandardNth11alpha + + J21L*PDstandardNth12alpha + J31L*PDstandardNth13alpha) + + J11L*(J22L*PDstandardNth12alpha + J32L*PDstandardNth13alpha) + + dJ112L*PDstandardNth1alpha + J22L*(J21L*PDstandardNth22alpha + + J31L*PDstandardNth23alpha) + dJ212L*PDstandardNth2alpha + + J32L*(J21L*PDstandardNth23alpha + J31L*PDstandardNth33alpha) + + dJ312L*PDstandardNth3alpha; + + JacPDstandardNth21beta1 = J12L*(J11L*PDstandardNth11beta1 + + J21L*PDstandardNth12beta1 + J31L*PDstandardNth13beta1) + + J11L*(J22L*PDstandardNth12beta1 + J32L*PDstandardNth13beta1) + + dJ112L*PDstandardNth1beta1 + J22L*(J21L*PDstandardNth22beta1 + + J31L*PDstandardNth23beta1) + dJ212L*PDstandardNth2beta1 + + J32L*(J21L*PDstandardNth23beta1 + J31L*PDstandardNth33beta1) + + dJ312L*PDstandardNth3beta1; + + JacPDstandardNth21beta2 = J12L*(J11L*PDstandardNth11beta2 + + J21L*PDstandardNth12beta2 + J31L*PDstandardNth13beta2) + + J11L*(J22L*PDstandardNth12beta2 + J32L*PDstandardNth13beta2) + + dJ112L*PDstandardNth1beta2 + J22L*(J21L*PDstandardNth22beta2 + + J31L*PDstandardNth23beta2) + dJ212L*PDstandardNth2beta2 + + J32L*(J21L*PDstandardNth23beta2 + J31L*PDstandardNth33beta2) + + dJ312L*PDstandardNth3beta2; + + JacPDstandardNth21beta3 = J12L*(J11L*PDstandardNth11beta3 + + J21L*PDstandardNth12beta3 + J31L*PDstandardNth13beta3) + + J11L*(J22L*PDstandardNth12beta3 + J32L*PDstandardNth13beta3) + + dJ112L*PDstandardNth1beta3 + J22L*(J21L*PDstandardNth22beta3 + + J31L*PDstandardNth23beta3) + dJ212L*PDstandardNth2beta3 + + J32L*(J21L*PDstandardNth23beta3 + J31L*PDstandardNth33beta3) + + dJ312L*PDstandardNth3beta3; + + JacPDstandardNth23alpha = J13L*(J12L*PDstandardNth11alpha + + J22L*PDstandardNth12alpha + J32L*PDstandardNth13alpha) + + J12L*(J23L*PDstandardNth12alpha + J33L*PDstandardNth13alpha) + + dJ123L*PDstandardNth1alpha + J23L*(J22L*PDstandardNth22alpha + + J32L*PDstandardNth23alpha) + dJ223L*PDstandardNth2alpha + + J33L*(J22L*PDstandardNth23alpha + J32L*PDstandardNth33alpha) + + dJ323L*PDstandardNth3alpha; + + JacPDstandardNth23beta1 = J13L*(J12L*PDstandardNth11beta1 + + J22L*PDstandardNth12beta1 + J32L*PDstandardNth13beta1) + + J12L*(J23L*PDstandardNth12beta1 + J33L*PDstandardNth13beta1) + + dJ123L*PDstandardNth1beta1 + J23L*(J22L*PDstandardNth22beta1 + + J32L*PDstandardNth23beta1) + dJ223L*PDstandardNth2beta1 + + J33L*(J22L*PDstandardNth23beta1 + J32L*PDstandardNth33beta1) + + dJ323L*PDstandardNth3beta1; + + JacPDstandardNth23beta2 = J13L*(J12L*PDstandardNth11beta2 + + J22L*PDstandardNth12beta2 + J32L*PDstandardNth13beta2) + + J12L*(J23L*PDstandardNth12beta2 + J33L*PDstandardNth13beta2) + + dJ123L*PDstandardNth1beta2 + J23L*(J22L*PDstandardNth22beta2 + + J32L*PDstandardNth23beta2) + dJ223L*PDstandardNth2beta2 + + J33L*(J22L*PDstandardNth23beta2 + J32L*PDstandardNth33beta2) + + dJ323L*PDstandardNth3beta2; + + JacPDstandardNth23beta3 = J13L*(J12L*PDstandardNth11beta3 + + J22L*PDstandardNth12beta3 + J32L*PDstandardNth13beta3) + + J12L*(J23L*PDstandardNth12beta3 + J33L*PDstandardNth13beta3) + + dJ123L*PDstandardNth1beta3 + J23L*(J22L*PDstandardNth22beta3 + + J32L*PDstandardNth23beta3) + dJ223L*PDstandardNth2beta3 + + J33L*(J22L*PDstandardNth23beta3 + J32L*PDstandardNth33beta3) + + dJ323L*PDstandardNth3beta3; + + JacPDstandardNth31alpha = J13L*(J11L*PDstandardNth11alpha + + J21L*PDstandardNth12alpha + J31L*PDstandardNth13alpha) + + J11L*(J23L*PDstandardNth12alpha + J33L*PDstandardNth13alpha) + + dJ113L*PDstandardNth1alpha + J23L*(J21L*PDstandardNth22alpha + + J31L*PDstandardNth23alpha) + dJ213L*PDstandardNth2alpha + + J33L*(J21L*PDstandardNth23alpha + J31L*PDstandardNth33alpha) + + dJ313L*PDstandardNth3alpha; + + JacPDstandardNth31beta1 = J13L*(J11L*PDstandardNth11beta1 + + J21L*PDstandardNth12beta1 + J31L*PDstandardNth13beta1) + + J11L*(J23L*PDstandardNth12beta1 + J33L*PDstandardNth13beta1) + + dJ113L*PDstandardNth1beta1 + J23L*(J21L*PDstandardNth22beta1 + + J31L*PDstandardNth23beta1) + dJ213L*PDstandardNth2beta1 + + J33L*(J21L*PDstandardNth23beta1 + J31L*PDstandardNth33beta1) + + dJ313L*PDstandardNth3beta1; + + JacPDstandardNth31beta2 = J13L*(J11L*PDstandardNth11beta2 + + J21L*PDstandardNth12beta2 + J31L*PDstandardNth13beta2) + + J11L*(J23L*PDstandardNth12beta2 + J33L*PDstandardNth13beta2) + + dJ113L*PDstandardNth1beta2 + J23L*(J21L*PDstandardNth22beta2 + + J31L*PDstandardNth23beta2) + dJ213L*PDstandardNth2beta2 + + J33L*(J21L*PDstandardNth23beta2 + J31L*PDstandardNth33beta2) + + dJ313L*PDstandardNth3beta2; + + JacPDstandardNth31beta3 = J13L*(J11L*PDstandardNth11beta3 + + J21L*PDstandardNth12beta3 + J31L*PDstandardNth13beta3) + + J11L*(J23L*PDstandardNth12beta3 + J33L*PDstandardNth13beta3) + + dJ113L*PDstandardNth1beta3 + J23L*(J21L*PDstandardNth22beta3 + + J31L*PDstandardNth23beta3) + dJ213L*PDstandardNth2beta3 + + J33L*(J21L*PDstandardNth23beta3 + J31L*PDstandardNth33beta3) + + dJ313L*PDstandardNth3beta3; + + JacPDstandardNth32alpha = J13L*(J12L*PDstandardNth11alpha + + J22L*PDstandardNth12alpha + J32L*PDstandardNth13alpha) + + J12L*(J23L*PDstandardNth12alpha + J33L*PDstandardNth13alpha) + + dJ123L*PDstandardNth1alpha + J23L*(J22L*PDstandardNth22alpha + + J32L*PDstandardNth23alpha) + dJ223L*PDstandardNth2alpha + + J33L*(J22L*PDstandardNth23alpha + J32L*PDstandardNth33alpha) + + dJ323L*PDstandardNth3alpha; + + JacPDstandardNth32beta1 = J13L*(J12L*PDstandardNth11beta1 + + J22L*PDstandardNth12beta1 + J32L*PDstandardNth13beta1) + + J12L*(J23L*PDstandardNth12beta1 + J33L*PDstandardNth13beta1) + + dJ123L*PDstandardNth1beta1 + J23L*(J22L*PDstandardNth22beta1 + + J32L*PDstandardNth23beta1) + dJ223L*PDstandardNth2beta1 + + J33L*(J22L*PDstandardNth23beta1 + J32L*PDstandardNth33beta1) + + dJ323L*PDstandardNth3beta1; + + JacPDstandardNth32beta2 = J13L*(J12L*PDstandardNth11beta2 + + J22L*PDstandardNth12beta2 + J32L*PDstandardNth13beta2) + + J12L*(J23L*PDstandardNth12beta2 + J33L*PDstandardNth13beta2) + + dJ123L*PDstandardNth1beta2 + J23L*(J22L*PDstandardNth22beta2 + + J32L*PDstandardNth23beta2) + dJ223L*PDstandardNth2beta2 + + J33L*(J22L*PDstandardNth23beta2 + J32L*PDstandardNth33beta2) + + dJ323L*PDstandardNth3beta2; + + JacPDstandardNth32beta3 = J13L*(J12L*PDstandardNth11beta3 + + J22L*PDstandardNth12beta3 + J32L*PDstandardNth13beta3) + + J12L*(J23L*PDstandardNth12beta3 + J33L*PDstandardNth13beta3) + + dJ123L*PDstandardNth1beta3 + J23L*(J22L*PDstandardNth22beta3 + + J32L*PDstandardNth23beta3) + dJ223L*PDstandardNth2beta3 + + J33L*(J22L*PDstandardNth23beta3 + J32L*PDstandardNth33beta3) + + dJ323L*PDstandardNth3beta3; + } + else + { + JacPDstandardNth1alpha = PDstandardNth1alpha; + + JacPDstandardNth1beta1 = PDstandardNth1beta1; + + JacPDstandardNth1beta2 = PDstandardNth1beta2; + + JacPDstandardNth1beta3 = PDstandardNth1beta3; + + JacPDstandardNth1gt11 = PDstandardNth1gt11; + + JacPDstandardNth1gt12 = PDstandardNth1gt12; + + JacPDstandardNth1gt13 = PDstandardNth1gt13; + + JacPDstandardNth1gt22 = PDstandardNth1gt22; + + JacPDstandardNth1gt23 = PDstandardNth1gt23; + + JacPDstandardNth1gt33 = PDstandardNth1gt33; + + JacPDstandardNth1phi = PDstandardNth1phi; + + JacPDstandardNth1trK = PDstandardNth1trK; + + JacPDstandardNth2alpha = PDstandardNth2alpha; + + JacPDstandardNth2beta1 = PDstandardNth2beta1; + + JacPDstandardNth2beta2 = PDstandardNth2beta2; + + JacPDstandardNth2beta3 = PDstandardNth2beta3; + + JacPDstandardNth2gt11 = PDstandardNth2gt11; + + JacPDstandardNth2gt12 = PDstandardNth2gt12; + + JacPDstandardNth2gt13 = PDstandardNth2gt13; + + JacPDstandardNth2gt22 = PDstandardNth2gt22; + + JacPDstandardNth2gt23 = PDstandardNth2gt23; + + JacPDstandardNth2gt33 = PDstandardNth2gt33; + + JacPDstandardNth2phi = PDstandardNth2phi; + + JacPDstandardNth2trK = PDstandardNth2trK; + + JacPDstandardNth3alpha = PDstandardNth3alpha; + + JacPDstandardNth3beta1 = PDstandardNth3beta1; + + JacPDstandardNth3beta2 = PDstandardNth3beta2; + + JacPDstandardNth3beta3 = PDstandardNth3beta3; + + JacPDstandardNth3gt11 = PDstandardNth3gt11; + + JacPDstandardNth3gt12 = PDstandardNth3gt12; + + JacPDstandardNth3gt13 = PDstandardNth3gt13; + + JacPDstandardNth3gt22 = PDstandardNth3gt22; + + JacPDstandardNth3gt23 = PDstandardNth3gt23; + + JacPDstandardNth3gt33 = PDstandardNth3gt33; + + JacPDstandardNth3phi = PDstandardNth3phi; + + JacPDstandardNth3trK = PDstandardNth3trK; + + JacPDstandardNth11alpha = PDstandardNth11alpha; + + JacPDstandardNth11beta1 = PDstandardNth11beta1; + + JacPDstandardNth11beta2 = PDstandardNth11beta2; + + JacPDstandardNth11beta3 = PDstandardNth11beta3; + + JacPDstandardNth22alpha = PDstandardNth22alpha; + + JacPDstandardNth22beta1 = PDstandardNth22beta1; + + JacPDstandardNth22beta2 = PDstandardNth22beta2; + + JacPDstandardNth22beta3 = PDstandardNth22beta3; + + JacPDstandardNth33alpha = PDstandardNth33alpha; + + JacPDstandardNth33beta1 = PDstandardNth33beta1; + + JacPDstandardNth33beta2 = PDstandardNth33beta2; + + JacPDstandardNth33beta3 = PDstandardNth33beta3; + + JacPDstandardNth12alpha = PDstandardNth12alpha; + + JacPDstandardNth12beta1 = PDstandardNth12beta1; + + JacPDstandardNth12beta2 = PDstandardNth12beta2; + + JacPDstandardNth12beta3 = PDstandardNth12beta3; + + JacPDstandardNth13alpha = PDstandardNth13alpha; + + JacPDstandardNth13beta1 = PDstandardNth13beta1; + + JacPDstandardNth13beta2 = PDstandardNth13beta2; + + JacPDstandardNth13beta3 = PDstandardNth13beta3; + + JacPDstandardNth21alpha = PDstandardNth12alpha; + + JacPDstandardNth21beta1 = PDstandardNth12beta1; + + JacPDstandardNth21beta2 = PDstandardNth12beta2; + + JacPDstandardNth21beta3 = PDstandardNth12beta3; + + JacPDstandardNth23alpha = PDstandardNth23alpha; + + JacPDstandardNth23beta1 = PDstandardNth23beta1; + + JacPDstandardNth23beta2 = PDstandardNth23beta2; + + JacPDstandardNth23beta3 = PDstandardNth23beta3; + + JacPDstandardNth31alpha = PDstandardNth13alpha; + + JacPDstandardNth31beta1 = PDstandardNth13beta1; + + JacPDstandardNth31beta2 = PDstandardNth13beta2; + + JacPDstandardNth31beta3 = PDstandardNth13beta3; + + JacPDstandardNth32alpha = PDstandardNth23alpha; + + JacPDstandardNth32beta1 = PDstandardNth23beta1; + + JacPDstandardNth32beta2 = PDstandardNth23beta2; + + JacPDstandardNth32beta3 = PDstandardNth23beta3; + } + ptrdiff_t dir1 = Sign(beta1L); ptrdiff_t dir2 = Sign(beta2L); ptrdiff_t dir3 = Sign(beta3L); - CCTK_REAL epsdiss1 = ToReal(EpsDiss); - - CCTK_REAL epsdiss2 = ToReal(EpsDiss); - - CCTK_REAL epsdiss3 = ToReal(EpsDiss); - CCTK_REAL detgt = 1; CCTK_REAL gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L)); @@ -477,74 +945,44 @@ static void ML_BSSN_MP_RHS1_Body(cGH const * restrict const cctkGH, int const di CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L)); - CCTK_REAL Gtl111 = 0.5*(J11L*PDstandardNth1gt11 + - J21L*PDstandardNth2gt11 + J31L*PDstandardNth3gt11); + CCTK_REAL Gtl111 = 0.5*JacPDstandardNth1gt11; - CCTK_REAL Gtl112 = 0.5*(J12L*PDstandardNth1gt11 + - J22L*PDstandardNth2gt11 + J32L*PDstandardNth3gt11); + CCTK_REAL Gtl112 = 0.5*JacPDstandardNth2gt11; - CCTK_REAL Gtl113 = 0.5*(J13L*PDstandardNth1gt11 + - J23L*PDstandardNth2gt11 + J33L*PDstandardNth3gt11); + CCTK_REAL Gtl113 = 0.5*JacPDstandardNth3gt11; - CCTK_REAL Gtl122 = J12L*PDstandardNth1gt12 + J22L*PDstandardNth2gt12 + - J32L*PDstandardNth3gt12 - 0.5*(J11L*PDstandardNth1gt22 + - J21L*PDstandardNth2gt22 + J31L*PDstandardNth3gt22); + CCTK_REAL Gtl122 = -0.5*JacPDstandardNth1gt22 + JacPDstandardNth2gt12; - CCTK_REAL Gtl123 = 0.5*(J13L*PDstandardNth1gt12 + - J12L*PDstandardNth1gt13 - J11L*PDstandardNth1gt23 + - J23L*PDstandardNth2gt12 + J22L*PDstandardNth2gt13 - - J21L*PDstandardNth2gt23 + J33L*PDstandardNth3gt12 + - J32L*PDstandardNth3gt13 - J31L*PDstandardNth3gt23); + CCTK_REAL Gtl123 = 0.5*(-JacPDstandardNth1gt23 + JacPDstandardNth2gt13 + + JacPDstandardNth3gt12); - CCTK_REAL Gtl133 = J13L*PDstandardNth1gt13 + J23L*PDstandardNth2gt13 + - J33L*PDstandardNth3gt13 - 0.5*(J11L*PDstandardNth1gt33 + - J21L*PDstandardNth2gt33 + J31L*PDstandardNth3gt33); + CCTK_REAL Gtl133 = -0.5*JacPDstandardNth1gt33 + JacPDstandardNth3gt13; - CCTK_REAL Gtl211 = J11L*PDstandardNth1gt12 + J21L*PDstandardNth2gt12 - - 0.5*(J12L*PDstandardNth1gt11 + J22L*PDstandardNth2gt11 + - J32L*PDstandardNth3gt11) + J31L*PDstandardNth3gt12; + CCTK_REAL Gtl211 = JacPDstandardNth1gt12 - 0.5*JacPDstandardNth2gt11; - CCTK_REAL Gtl212 = 0.5*(J11L*PDstandardNth1gt22 + - J21L*PDstandardNth2gt22 + J31L*PDstandardNth3gt22); + CCTK_REAL Gtl212 = 0.5*JacPDstandardNth1gt22; - CCTK_REAL Gtl213 = 0.5*(J13L*PDstandardNth1gt12 - - J12L*PDstandardNth1gt13 + J11L*PDstandardNth1gt23 + - J23L*PDstandardNth2gt12 - J22L*PDstandardNth2gt13 + - J21L*PDstandardNth2gt23 + J33L*PDstandardNth3gt12 - - J32L*PDstandardNth3gt13 + J31L*PDstandardNth3gt23); + CCTK_REAL Gtl213 = 0.5*(JacPDstandardNth1gt23 - JacPDstandardNth2gt13 + + JacPDstandardNth3gt12); - CCTK_REAL Gtl222 = 0.5*(J12L*PDstandardNth1gt22 + - J22L*PDstandardNth2gt22 + J32L*PDstandardNth3gt22); + CCTK_REAL Gtl222 = 0.5*JacPDstandardNth2gt22; - CCTK_REAL Gtl223 = 0.5*(J13L*PDstandardNth1gt22 + - J23L*PDstandardNth2gt22 + J33L*PDstandardNth3gt22); + CCTK_REAL Gtl223 = 0.5*JacPDstandardNth3gt22; - CCTK_REAL Gtl233 = J13L*PDstandardNth1gt23 + J23L*PDstandardNth2gt23 + - J33L*PDstandardNth3gt23 - 0.5*(J12L*PDstandardNth1gt33 + - J22L*PDstandardNth2gt33 + J32L*PDstandardNth3gt33); + CCTK_REAL Gtl233 = -0.5*JacPDstandardNth2gt33 + JacPDstandardNth3gt23; - CCTK_REAL Gtl311 = J11L*PDstandardNth1gt13 + J21L*PDstandardNth2gt13 - - 0.5*(J13L*PDstandardNth1gt11 + J23L*PDstandardNth2gt11 + - J33L*PDstandardNth3gt11) + J31L*PDstandardNth3gt13; + CCTK_REAL Gtl311 = JacPDstandardNth1gt13 - 0.5*JacPDstandardNth3gt11; - CCTK_REAL Gtl312 = 0.5*(-(J13L*PDstandardNth1gt12) + - J12L*PDstandardNth1gt13 + J11L*PDstandardNth1gt23 - - J23L*PDstandardNth2gt12 + J22L*PDstandardNth2gt13 + - J21L*PDstandardNth2gt23 - J33L*PDstandardNth3gt12 + - J32L*PDstandardNth3gt13 + J31L*PDstandardNth3gt23); + CCTK_REAL Gtl312 = 0.5*(JacPDstandardNth1gt23 + JacPDstandardNth2gt13 + - JacPDstandardNth3gt12); - CCTK_REAL Gtl313 = 0.5*(J11L*PDstandardNth1gt33 + - J21L*PDstandardNth2gt33 + J31L*PDstandardNth3gt33); + CCTK_REAL Gtl313 = 0.5*JacPDstandardNth1gt33; - CCTK_REAL Gtl322 = J12L*PDstandardNth1gt23 + J22L*PDstandardNth2gt23 - - 0.5*(J13L*PDstandardNth1gt22 + J23L*PDstandardNth2gt22 + - J33L*PDstandardNth3gt22) + J32L*PDstandardNth3gt23; + CCTK_REAL Gtl322 = JacPDstandardNth2gt23 - 0.5*JacPDstandardNth3gt22; - CCTK_REAL Gtl323 = 0.5*(J12L*PDstandardNth1gt33 + - J22L*PDstandardNth2gt33 + J32L*PDstandardNth3gt33); + CCTK_REAL Gtl323 = 0.5*JacPDstandardNth2gt33; - CCTK_REAL Gtl333 = 0.5*(J13L*PDstandardNth1gt33 + - J23L*PDstandardNth2gt33 + J33L*PDstandardNth3gt33); + CCTK_REAL Gtl333 = 0.5*JacPDstandardNth3gt33; CCTK_REAL Gt111 = Gtl111*gtu11 + Gtl211*gtu12 + Gtl311*gtu13; @@ -591,16 +1029,13 @@ static void ML_BSSN_MP_RHS1_Body(cGH const * restrict const cctkGH, int const di CCTK_REAL Xtn3 = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu12 + Gt313*gtu13 + Gt323*gtu23) + Gt333*gtu33; - CCTK_REAL fac1 = IfThen(ToReal(conformalMethod),-0.5*INV(phiL),1); + CCTK_REAL fac1 = IfThen(conformalMethod,-0.5*INV(phiL),1); - CCTK_REAL cdphi1 = fac1*(J11L*PDstandardNth1phi + - J21L*PDstandardNth2phi + J31L*PDstandardNth3phi); + CCTK_REAL cdphi1 = fac1*JacPDstandardNth1phi; - CCTK_REAL cdphi2 = fac1*(J12L*PDstandardNth1phi + - J22L*PDstandardNth2phi + J32L*PDstandardNth3phi); + CCTK_REAL cdphi2 = fac1*JacPDstandardNth2phi; - CCTK_REAL cdphi3 = fac1*(J13L*PDstandardNth1phi + - J23L*PDstandardNth2phi + J33L*PDstandardNth3phi); + CCTK_REAL cdphi3 = fac1*JacPDstandardNth3phi; CCTK_REAL Atm11 = At11L*gtu11 + At12L*gtu12 + At13L*gtu13; @@ -632,8 +1067,7 @@ static void ML_BSSN_MP_RHS1_Body(cGH const * restrict const cctkGH, int const di CCTK_REAL Atu33 = Atm31*gtu13 + Atm32*gtu23 + Atm33*gtu33; - CCTK_REAL e4phi = - IfThen(ToReal(conformalMethod),INV(SQR(phiL)),exp(4*phiL)); + CCTK_REAL e4phi = IfThen(conformalMethod,INV(SQR(phiL)),exp(4*phiL)); CCTK_REAL em4phi = INV(e4phi); @@ -654,520 +1088,102 @@ static void ML_BSSN_MP_RHS1_Body(cGH const * restrict const cctkGH, int const di CCTK_REAL trS = em4phi*(eTxxL*gtu11 + eTyyL*gtu22 + 2*(eTxyL*gtu12 + eTxzL*gtu13 + eTyzL*gtu23) + eTzzL*gtu33); - CCTK_REAL phirhsL = (epsdiss1*J11L + epsdiss2*J12L + - epsdiss3*J13L)*PDdissipationNth1phi + (epsdiss1*J21L + epsdiss2*J22L + - epsdiss3*J23L)*PDdissipationNth2phi + (epsdiss1*J31L + epsdiss2*J32L + - epsdiss3*J33L)*PDdissipationNth3phi + (beta1L*J11L + beta2L*J12L + - beta3L*J13L)*PDupwindNthAnti1phi + (beta1L*J21L + beta2L*J22L + - beta3L*J23L)*PDupwindNthAnti2phi + (beta1L*J31L + beta2L*J32L + - beta3L*J33L)*PDupwindNthAnti3phi + (J11L*PDupwindNthSymm1phi + - J21L*PDupwindNthSymm2phi + J31L*PDupwindNthSymm3phi)*Abs(beta1L) + - (J12L*PDupwindNthSymm1phi + J22L*PDupwindNthSymm2phi + - J32L*PDupwindNthSymm3phi)*Abs(beta2L) + (J13L*PDupwindNthSymm1phi + - J23L*PDupwindNthSymm2phi + J33L*PDupwindNthSymm3phi)*Abs(beta3L) + - IfThen(ToReal(conformalMethod),phiL*(-0.333333333333333333333333333333*(J11L*PDstandardNth1beta1 - + J12L*PDstandardNth1beta2 + J13L*PDstandardNth1beta3 + - J21L*PDstandardNth2beta1 + J22L*PDstandardNth2beta2 + - J23L*PDstandardNth2beta3 + J31L*PDstandardNth3beta1 + - J32L*PDstandardNth3beta2 + J33L*PDstandardNth3beta3) + - 0.333333333333333333333333333333*alphaL*trKL),0.166666666666666666666666666667*(J11L*PDstandardNth1beta1 - + J12L*PDstandardNth1beta2 + J13L*PDstandardNth1beta3 + - J21L*PDstandardNth2beta1 + J22L*PDstandardNth2beta2 + - J23L*PDstandardNth2beta3 + J31L*PDstandardNth3beta1 + - J32L*PDstandardNth3beta2 + J33L*PDstandardNth3beta3) - + CCTK_REAL phirhsL = + IfThen(conformalMethod,phiL*(-0.333333333333333333333333333333*(JacPDstandardNth1beta1 + + JacPDstandardNth2beta2 + JacPDstandardNth3beta3) + + 0.333333333333333333333333333333*alphaL*trKL),0.166666666666666666666666666667*(JacPDstandardNth1beta1 + + JacPDstandardNth2beta2 + JacPDstandardNth3beta3) - 0.166666666666666666666666666667*alphaL*trKL); - CCTK_REAL gt11rhsL = -2*alphaL*At11L + (epsdiss1*J11L + epsdiss2*J12L - + epsdiss3*J13L)*PDdissipationNth1gt11 + (epsdiss1*J21L + epsdiss2*J22L - + epsdiss3*J23L)*PDdissipationNth2gt11 + (epsdiss1*J31L + epsdiss2*J32L - + epsdiss3*J33L)*PDdissipationNth3gt11 - - 0.666666666666666666666666666667*gt11L*(J11L*PDstandardNth1beta1 + - J12L*PDstandardNth1beta2 + J13L*PDstandardNth1beta3 + - J21L*PDstandardNth2beta1 + J22L*PDstandardNth2beta2 + - J23L*PDstandardNth2beta3 + J31L*PDstandardNth3beta1 + - J32L*PDstandardNth3beta2 + J33L*PDstandardNth3beta3) + - 2*(J11L*(gt11L*PDstandardNth1beta1 + gt12L*PDstandardNth1beta2 + - gt13L*PDstandardNth1beta3) + J21L*(gt11L*PDstandardNth2beta1 + - gt12L*PDstandardNth2beta2 + gt13L*PDstandardNth2beta3) + - J31L*(gt11L*PDstandardNth3beta1 + gt12L*PDstandardNth3beta2 + - gt13L*PDstandardNth3beta3)) + (beta1L*J11L + beta2L*J12L + - beta3L*J13L)*PDupwindNthAnti1gt11 + (beta1L*J21L + beta2L*J22L + - beta3L*J23L)*PDupwindNthAnti2gt11 + (beta1L*J31L + beta2L*J32L + - beta3L*J33L)*PDupwindNthAnti3gt11 + (J11L*PDupwindNthSymm1gt11 + - J21L*PDupwindNthSymm2gt11 + J31L*PDupwindNthSymm3gt11)*Abs(beta1L) + - (J12L*PDupwindNthSymm1gt11 + J22L*PDupwindNthSymm2gt11 + - J32L*PDupwindNthSymm3gt11)*Abs(beta2L) + (J13L*PDupwindNthSymm1gt11 + - J23L*PDupwindNthSymm2gt11 + J33L*PDupwindNthSymm3gt11)*Abs(beta3L); - - CCTK_REAL gt12rhsL = -2*alphaL*At12L + (epsdiss1*J11L + epsdiss2*J12L - + epsdiss3*J13L)*PDdissipationNth1gt12 + (epsdiss1*J21L + epsdiss2*J22L - + epsdiss3*J23L)*PDdissipationNth2gt12 + (epsdiss1*J31L + epsdiss2*J32L - + epsdiss3*J33L)*PDdissipationNth3gt12 + (gt12L*J11L + - gt11L*J12L)*PDstandardNth1beta1 + (gt22L*J11L + - gt12L*J12L)*PDstandardNth1beta2 + (gt23L*J11L + - gt13L*J12L)*PDstandardNth1beta3 + (gt12L*J21L + - gt11L*J22L)*PDstandardNth2beta1 + (gt22L*J21L + - gt12L*J22L)*PDstandardNth2beta2 + (gt23L*J21L + - gt13L*J22L)*PDstandardNth2beta3 + (gt12L*J31L + - gt11L*J32L)*PDstandardNth3beta1 + (gt22L*J31L + - gt12L*J32L)*PDstandardNth3beta2 + (gt23L*J31L + - gt13L*J32L)*PDstandardNth3beta3 - - 0.666666666666666666666666666667*gt12L*(J11L*PDstandardNth1beta1 + - J12L*PDstandardNth1beta2 + J13L*PDstandardNth1beta3 + - J21L*PDstandardNth2beta1 + J22L*PDstandardNth2beta2 + - J23L*PDstandardNth2beta3 + J31L*PDstandardNth3beta1 + - J32L*PDstandardNth3beta2 + J33L*PDstandardNth3beta3) + (beta1L*J11L + - beta2L*J12L + beta3L*J13L)*PDupwindNthAnti1gt12 + (beta1L*J21L + - beta2L*J22L + beta3L*J23L)*PDupwindNthAnti2gt12 + (beta1L*J31L + - beta2L*J32L + beta3L*J33L)*PDupwindNthAnti3gt12 + - (J11L*PDupwindNthSymm1gt12 + J21L*PDupwindNthSymm2gt12 + - J31L*PDupwindNthSymm3gt12)*Abs(beta1L) + (J12L*PDupwindNthSymm1gt12 + - J22L*PDupwindNthSymm2gt12 + J32L*PDupwindNthSymm3gt12)*Abs(beta2L) + - (J13L*PDupwindNthSymm1gt12 + J23L*PDupwindNthSymm2gt12 + - J33L*PDupwindNthSymm3gt12)*Abs(beta3L); - - CCTK_REAL gt13rhsL = -2*alphaL*At13L + (epsdiss1*J11L + epsdiss2*J12L - + epsdiss3*J13L)*PDdissipationNth1gt13 + (epsdiss1*J21L + epsdiss2*J22L - + epsdiss3*J23L)*PDdissipationNth2gt13 + (epsdiss1*J31L + epsdiss2*J32L - + epsdiss3*J33L)*PDdissipationNth3gt13 + (gt13L*J11L + - gt11L*J13L)*PDstandardNth1beta1 + (gt23L*J11L + - gt12L*J13L)*PDstandardNth1beta2 + (gt33L*J11L + - gt13L*J13L)*PDstandardNth1beta3 + (gt13L*J21L + - gt11L*J23L)*PDstandardNth2beta1 + (gt23L*J21L + - gt12L*J23L)*PDstandardNth2beta2 + (gt33L*J21L + - gt13L*J23L)*PDstandardNth2beta3 + (gt13L*J31L + - gt11L*J33L)*PDstandardNth3beta1 + (gt23L*J31L + - gt12L*J33L)*PDstandardNth3beta2 + (gt33L*J31L + - gt13L*J33L)*PDstandardNth3beta3 - - 0.666666666666666666666666666667*gt13L*(J11L*PDstandardNth1beta1 + - J12L*PDstandardNth1beta2 + J13L*PDstandardNth1beta3 + - J21L*PDstandardNth2beta1 + J22L*PDstandardNth2beta2 + - J23L*PDstandardNth2beta3 + J31L*PDstandardNth3beta1 + - J32L*PDstandardNth3beta2 + J33L*PDstandardNth3beta3) + (beta1L*J11L + - beta2L*J12L + beta3L*J13L)*PDupwindNthAnti1gt13 + (beta1L*J21L + - beta2L*J22L + beta3L*J23L)*PDupwindNthAnti2gt13 + (beta1L*J31L + - beta2L*J32L + beta3L*J33L)*PDupwindNthAnti3gt13 + - (J11L*PDupwindNthSymm1gt13 + J21L*PDupwindNthSymm2gt13 + - J31L*PDupwindNthSymm3gt13)*Abs(beta1L) + (J12L*PDupwindNthSymm1gt13 + - J22L*PDupwindNthSymm2gt13 + J32L*PDupwindNthSymm3gt13)*Abs(beta2L) + - (J13L*PDupwindNthSymm1gt13 + J23L*PDupwindNthSymm2gt13 + - J33L*PDupwindNthSymm3gt13)*Abs(beta3L); - - CCTK_REAL gt22rhsL = -2*alphaL*At22L + (epsdiss1*J11L + epsdiss2*J12L - + epsdiss3*J13L)*PDdissipationNth1gt22 + (epsdiss1*J21L + epsdiss2*J22L - + epsdiss3*J23L)*PDdissipationNth2gt22 + (epsdiss1*J31L + epsdiss2*J32L - + epsdiss3*J33L)*PDdissipationNth3gt22 - - 0.666666666666666666666666666667*gt22L*(J11L*PDstandardNth1beta1 + - J12L*PDstandardNth1beta2 + J13L*PDstandardNth1beta3 + - J21L*PDstandardNth2beta1 + J22L*PDstandardNth2beta2 + - J23L*PDstandardNth2beta3 + J31L*PDstandardNth3beta1 + - J32L*PDstandardNth3beta2 + J33L*PDstandardNth3beta3) + - 2*(J12L*(gt12L*PDstandardNth1beta1 + gt22L*PDstandardNth1beta2 + - gt23L*PDstandardNth1beta3) + J22L*(gt12L*PDstandardNth2beta1 + - gt22L*PDstandardNth2beta2 + gt23L*PDstandardNth2beta3) + - J32L*(gt12L*PDstandardNth3beta1 + gt22L*PDstandardNth3beta2 + - gt23L*PDstandardNth3beta3)) + (beta1L*J11L + beta2L*J12L + - beta3L*J13L)*PDupwindNthAnti1gt22 + (beta1L*J21L + beta2L*J22L + - beta3L*J23L)*PDupwindNthAnti2gt22 + (beta1L*J31L + beta2L*J32L + - beta3L*J33L)*PDupwindNthAnti3gt22 + (J11L*PDupwindNthSymm1gt22 + - J21L*PDupwindNthSymm2gt22 + J31L*PDupwindNthSymm3gt22)*Abs(beta1L) + - (J12L*PDupwindNthSymm1gt22 + J22L*PDupwindNthSymm2gt22 + - J32L*PDupwindNthSymm3gt22)*Abs(beta2L) + (J13L*PDupwindNthSymm1gt22 + - J23L*PDupwindNthSymm2gt22 + J33L*PDupwindNthSymm3gt22)*Abs(beta3L); - - CCTK_REAL gt23rhsL = -2*alphaL*At23L + (epsdiss1*J11L + epsdiss2*J12L - + epsdiss3*J13L)*PDdissipationNth1gt23 + (epsdiss1*J21L + epsdiss2*J22L - + epsdiss3*J23L)*PDdissipationNth2gt23 + (epsdiss1*J31L + epsdiss2*J32L - + epsdiss3*J33L)*PDdissipationNth3gt23 + (gt13L*J12L + - gt12L*J13L)*PDstandardNth1beta1 + (gt23L*J12L + - gt22L*J13L)*PDstandardNth1beta2 + (gt33L*J12L + - gt23L*J13L)*PDstandardNth1beta3 + (gt13L*J22L + - gt12L*J23L)*PDstandardNth2beta1 + (gt23L*J22L + - gt22L*J23L)*PDstandardNth2beta2 + (gt33L*J22L + - gt23L*J23L)*PDstandardNth2beta3 + (gt13L*J32L + - gt12L*J33L)*PDstandardNth3beta1 + (gt23L*J32L + - gt22L*J33L)*PDstandardNth3beta2 + (gt33L*J32L + - gt23L*J33L)*PDstandardNth3beta3 - - 0.666666666666666666666666666667*gt23L*(J11L*PDstandardNth1beta1 + - J12L*PDstandardNth1beta2 + J13L*PDstandardNth1beta3 + - J21L*PDstandardNth2beta1 + J22L*PDstandardNth2beta2 + - J23L*PDstandardNth2beta3 + J31L*PDstandardNth3beta1 + - J32L*PDstandardNth3beta2 + J33L*PDstandardNth3beta3) + (beta1L*J11L + - beta2L*J12L + beta3L*J13L)*PDupwindNthAnti1gt23 + (beta1L*J21L + - beta2L*J22L + beta3L*J23L)*PDupwindNthAnti2gt23 + (beta1L*J31L + - beta2L*J32L + beta3L*J33L)*PDupwindNthAnti3gt23 + - (J11L*PDupwindNthSymm1gt23 + J21L*PDupwindNthSymm2gt23 + - J31L*PDupwindNthSymm3gt23)*Abs(beta1L) + (J12L*PDupwindNthSymm1gt23 + - J22L*PDupwindNthSymm2gt23 + J32L*PDupwindNthSymm3gt23)*Abs(beta2L) + - (J13L*PDupwindNthSymm1gt23 + J23L*PDupwindNthSymm2gt23 + - J33L*PDupwindNthSymm3gt23)*Abs(beta3L); - - CCTK_REAL gt33rhsL = -2*alphaL*At33L + (epsdiss1*J11L + epsdiss2*J12L - + epsdiss3*J13L)*PDdissipationNth1gt33 + (epsdiss1*J21L + epsdiss2*J22L - + epsdiss3*J23L)*PDdissipationNth2gt33 + (epsdiss1*J31L + epsdiss2*J32L - + epsdiss3*J33L)*PDdissipationNth3gt33 - - 0.666666666666666666666666666667*gt33L*(J11L*PDstandardNth1beta1 + - J12L*PDstandardNth1beta2 + J13L*PDstandardNth1beta3 + - J21L*PDstandardNth2beta1 + J22L*PDstandardNth2beta2 + - J23L*PDstandardNth2beta3 + J31L*PDstandardNth3beta1 + - J32L*PDstandardNth3beta2 + J33L*PDstandardNth3beta3) + - 2*(J13L*(gt13L*PDstandardNth1beta1 + gt23L*PDstandardNth1beta2 + - gt33L*PDstandardNth1beta3) + J23L*(gt13L*PDstandardNth2beta1 + - gt23L*PDstandardNth2beta2 + gt33L*PDstandardNth2beta3) + - J33L*(gt13L*PDstandardNth3beta1 + gt23L*PDstandardNth3beta2 + - gt33L*PDstandardNth3beta3)) + (beta1L*J11L + beta2L*J12L + - beta3L*J13L)*PDupwindNthAnti1gt33 + (beta1L*J21L + beta2L*J22L + - beta3L*J23L)*PDupwindNthAnti2gt33 + (beta1L*J31L + beta2L*J32L + - beta3L*J33L)*PDupwindNthAnti3gt33 + (J11L*PDupwindNthSymm1gt33 + - J21L*PDupwindNthSymm2gt33 + J31L*PDupwindNthSymm3gt33)*Abs(beta1L) + - (J12L*PDupwindNthSymm1gt33 + J22L*PDupwindNthSymm2gt33 + - J32L*PDupwindNthSymm3gt33)*Abs(beta2L) + (J13L*PDupwindNthSymm1gt33 + - J23L*PDupwindNthSymm2gt33 + J33L*PDupwindNthSymm3gt33)*Abs(beta3L); - - CCTK_REAL dotXt1 = (epsdiss1*J11L + epsdiss2*J12L + - epsdiss3*J13L)*PDdissipationNth1Xt1 + (epsdiss1*J21L + epsdiss2*J22L + - epsdiss3*J23L)*PDdissipationNth2Xt1 + (epsdiss1*J31L + epsdiss2*J32L + - epsdiss3*J33L)*PDdissipationNth3Xt1 - 2*((Atu11*J11L + Atu12*J12L + - Atu13*J13L)*PDstandardNth1alpha + (Atu11*J21L + Atu12*J22L + - Atu13*J23L)*PDstandardNth2alpha + (Atu11*J31L + Atu12*J32L + - Atu13*J33L)*PDstandardNth3alpha) + - 2*(gtu12*(J11L*J12L*PDstandardNth11beta1 + - J12L*J21L*PDstandardNth12beta1 + J11L*J22L*PDstandardNth12beta1 + - J12L*J31L*PDstandardNth13beta1 + J11L*J32L*PDstandardNth13beta1 + - dJ112L*PDstandardNth1beta1 + J21L*J22L*PDstandardNth22beta1 + - J22L*J31L*PDstandardNth23beta1 + J21L*J32L*PDstandardNth23beta1 + - dJ212L*PDstandardNth2beta1 + J31L*J32L*PDstandardNth33beta1 + - dJ312L*PDstandardNth3beta1) + gtu13*(J11L*J13L*PDstandardNth11beta1 + - J13L*J21L*PDstandardNth12beta1 + J11L*J23L*PDstandardNth12beta1 + - J13L*J31L*PDstandardNth13beta1 + J11L*J33L*PDstandardNth13beta1 + - dJ113L*PDstandardNth1beta1 + J21L*J23L*PDstandardNth22beta1 + - J23L*J31L*PDstandardNth23beta1 + J21L*J33L*PDstandardNth23beta1 + - dJ213L*PDstandardNth2beta1 + J31L*J33L*PDstandardNth33beta1 + - dJ313L*PDstandardNth3beta1) + gtu23*(J12L*J13L*PDstandardNth11beta1 + - J13L*J22L*PDstandardNth12beta1 + J12L*J23L*PDstandardNth12beta1 + - J13L*J32L*PDstandardNth13beta1 + J12L*J33L*PDstandardNth13beta1 + - dJ123L*PDstandardNth1beta1 + J22L*J23L*PDstandardNth22beta1 + - J23L*J32L*PDstandardNth23beta1 + J22L*J33L*PDstandardNth23beta1 + - dJ223L*PDstandardNth2beta1 + J32L*J33L*PDstandardNth33beta1 + - dJ323L*PDstandardNth3beta1) + alphaL*(6*(Atu11*cdphi1 + Atu12*cdphi2 + - Atu13*cdphi3) + Atu11*Gt111 + 2*Atu12*Gt112 + 2*Atu13*Gt113 + - Atu22*Gt122 + 2*Atu23*Gt123 + Atu33*Gt133 - - 0.666666666666666666666666666667*((gtu11*J11L + gtu12*J12L + - gtu13*J13L)*PDstandardNth1trK + (gtu11*J21L + gtu12*J22L + - gtu13*J23L)*PDstandardNth2trK + (gtu11*J31L + gtu12*J32L + - gtu13*J33L)*PDstandardNth3trK))) + (beta1L*J11L + beta2L*J12L + - beta3L*J13L)*PDupwindNthAnti1Xt1 + (beta1L*J21L + beta2L*J22L + - beta3L*J23L)*PDupwindNthAnti2Xt1 + (beta1L*J31L + beta2L*J32L + - beta3L*J33L)*PDupwindNthAnti3Xt1 - - 50.26548245743669181540229413247204614715*alphaL*(gtu11*S1 + gtu12*S2 + - gtu13*S3) + 0.666666666666666666666666666667*(J11L*PDstandardNth1beta1 - + J12L*PDstandardNth1beta2 + J13L*PDstandardNth1beta3 + - J21L*PDstandardNth2beta1 + J22L*PDstandardNth2beta2 + - J23L*PDstandardNth2beta3 + J31L*PDstandardNth3beta1 + - J32L*PDstandardNth3beta2 + J33L*PDstandardNth3beta3)*Xtn1 - - PDstandardNth1beta1*(J11L*Xtn1 + J12L*Xtn2 + J13L*Xtn3) - - PDstandardNth2beta1*(J21L*Xtn1 + J22L*Xtn2 + J23L*Xtn3) - - PDstandardNth3beta1*(J31L*Xtn1 + J32L*Xtn2 + J33L*Xtn3) + - (J11L*PDupwindNthSymm1Xt1 + J21L*PDupwindNthSymm2Xt1 + - J31L*PDupwindNthSymm3Xt1)*Abs(beta1L) + (J12L*PDupwindNthSymm1Xt1 + - J22L*PDupwindNthSymm2Xt1 + J32L*PDupwindNthSymm3Xt1)*Abs(beta2L) + - (J13L*PDupwindNthSymm1Xt1 + J23L*PDupwindNthSymm2Xt1 + - J33L*PDupwindNthSymm3Xt1)*Abs(beta3L) + - gtu11*(2*J11L*J21L*PDstandardNth12beta1 + - 2*J11L*J31L*PDstandardNth13beta1 + dJ111L*PDstandardNth1beta1 + - 2*J21L*J31L*PDstandardNth23beta1 + dJ211L*PDstandardNth2beta1 + - dJ311L*PDstandardNth3beta1 + PDstandardNth11beta1*SQR(J11L) + - PDstandardNth22beta1*SQR(J21L) + PDstandardNth33beta1*SQR(J31L)) + - gtu22*(2*J12L*J22L*PDstandardNth12beta1 + - 2*J12L*J32L*PDstandardNth13beta1 + dJ122L*PDstandardNth1beta1 + - 2*J22L*J32L*PDstandardNth23beta1 + dJ222L*PDstandardNth2beta1 + - dJ322L*PDstandardNth3beta1 + PDstandardNth11beta1*SQR(J12L) + - PDstandardNth22beta1*SQR(J22L) + PDstandardNth33beta1*SQR(J32L)) + - gtu33*(2*J13L*J23L*PDstandardNth12beta1 + - 2*J13L*J33L*PDstandardNth13beta1 + dJ133L*PDstandardNth1beta1 + - 2*J23L*J33L*PDstandardNth23beta1 + dJ233L*PDstandardNth2beta1 + - dJ333L*PDstandardNth3beta1 + PDstandardNth11beta1*SQR(J13L) + - PDstandardNth22beta1*SQR(J23L) + PDstandardNth33beta1*SQR(J33L)) + - 0.333333333333333333333333333333*(gtu11*(J11L*J12L*PDstandardNth11beta2 - + J11L*J13L*PDstandardNth11beta3 + 2*J11L*J21L*PDstandardNth12beta1 + - J12L*J21L*PDstandardNth12beta2 + J11L*J22L*PDstandardNth12beta2 + - J13L*J21L*PDstandardNth12beta3 + J11L*J23L*PDstandardNth12beta3 + - 2*J11L*J31L*PDstandardNth13beta1 + J12L*J31L*PDstandardNth13beta2 + - J11L*J32L*PDstandardNth13beta2 + J13L*J31L*PDstandardNth13beta3 + - J11L*J33L*PDstandardNth13beta3 + dJ111L*PDstandardNth1beta1 + - dJ112L*PDstandardNth1beta2 + dJ113L*PDstandardNth1beta3 + - J21L*J22L*PDstandardNth22beta2 + J21L*J23L*PDstandardNth22beta3 + - 2*J21L*J31L*PDstandardNth23beta1 + J22L*J31L*PDstandardNth23beta2 + - J21L*J32L*PDstandardNth23beta2 + J23L*J31L*PDstandardNth23beta3 + - J21L*J33L*PDstandardNth23beta3 + dJ211L*PDstandardNth2beta1 + - dJ212L*PDstandardNth2beta2 + dJ213L*PDstandardNth2beta3 + - J31L*J32L*PDstandardNth33beta2 + J31L*J33L*PDstandardNth33beta3 + - dJ311L*PDstandardNth3beta1 + dJ312L*PDstandardNth3beta2 + - dJ313L*PDstandardNth3beta3 + PDstandardNth11beta1*SQR(J11L) + - PDstandardNth22beta1*SQR(J21L) + PDstandardNth33beta1*SQR(J31L)) + - gtu12*(J11L*J12L*PDstandardNth11beta1 + J12L*J13L*PDstandardNth11beta3 - + J12L*J21L*PDstandardNth12beta1 + J11L*J22L*PDstandardNth12beta1 + - 2*J12L*J22L*PDstandardNth12beta2 + J13L*J22L*PDstandardNth12beta3 + - J12L*J23L*PDstandardNth12beta3 + J12L*J31L*PDstandardNth13beta1 + - J11L*J32L*PDstandardNth13beta1 + 2*J12L*J32L*PDstandardNth13beta2 + - J13L*J32L*PDstandardNth13beta3 + J12L*J33L*PDstandardNth13beta3 + - dJ112L*PDstandardNth1beta1 + dJ122L*PDstandardNth1beta2 + - dJ123L*PDstandardNth1beta3 + J21L*J22L*PDstandardNth22beta1 + - J22L*J23L*PDstandardNth22beta3 + J22L*J31L*PDstandardNth23beta1 + - J21L*J32L*PDstandardNth23beta1 + 2*J22L*J32L*PDstandardNth23beta2 + - J23L*J32L*PDstandardNth23beta3 + J22L*J33L*PDstandardNth23beta3 + - dJ212L*PDstandardNth2beta1 + dJ222L*PDstandardNth2beta2 + - dJ223L*PDstandardNth2beta3 + J31L*J32L*PDstandardNth33beta1 + - J32L*J33L*PDstandardNth33beta3 + dJ312L*PDstandardNth3beta1 + - dJ322L*PDstandardNth3beta2 + dJ323L*PDstandardNth3beta3 + - PDstandardNth11beta2*SQR(J12L) + PDstandardNth22beta2*SQR(J22L) + - PDstandardNth33beta2*SQR(J32L)) + gtu13*(J11L*J13L*PDstandardNth11beta1 - + J12L*J13L*PDstandardNth11beta2 + J13L*J21L*PDstandardNth12beta1 + - J11L*J23L*PDstandardNth12beta1 + J13L*J22L*PDstandardNth12beta2 + - J12L*J23L*PDstandardNth12beta2 + 2*J13L*J23L*PDstandardNth12beta3 + - J13L*J31L*PDstandardNth13beta1 + J11L*J33L*PDstandardNth13beta1 + - J13L*J32L*PDstandardNth13beta2 + J12L*J33L*PDstandardNth13beta2 + - 2*J13L*J33L*PDstandardNth13beta3 + dJ113L*PDstandardNth1beta1 + - dJ123L*PDstandardNth1beta2 + dJ133L*PDstandardNth1beta3 + - J21L*J23L*PDstandardNth22beta1 + J22L*J23L*PDstandardNth22beta2 + - J23L*J31L*PDstandardNth23beta1 + J21L*J33L*PDstandardNth23beta1 + - J23L*J32L*PDstandardNth23beta2 + J22L*J33L*PDstandardNth23beta2 + - 2*J23L*J33L*PDstandardNth23beta3 + dJ213L*PDstandardNth2beta1 + - dJ223L*PDstandardNth2beta2 + dJ233L*PDstandardNth2beta3 + - J31L*J33L*PDstandardNth33beta1 + J32L*J33L*PDstandardNth33beta2 + - dJ313L*PDstandardNth3beta1 + dJ323L*PDstandardNth3beta2 + - dJ333L*PDstandardNth3beta3 + PDstandardNth11beta3*SQR(J13L) + - PDstandardNth22beta3*SQR(J23L) + PDstandardNth33beta3*SQR(J33L))); - - CCTK_REAL dotXt2 = (epsdiss1*J11L + epsdiss2*J12L + - epsdiss3*J13L)*PDdissipationNth1Xt2 + (epsdiss1*J21L + epsdiss2*J22L + - epsdiss3*J23L)*PDdissipationNth2Xt2 + (epsdiss1*J31L + epsdiss2*J32L + - epsdiss3*J33L)*PDdissipationNth3Xt2 - 2*((Atu12*J11L + Atu22*J12L + - Atu23*J13L)*PDstandardNth1alpha + (Atu12*J21L + Atu22*J22L + - Atu23*J23L)*PDstandardNth2alpha + (Atu12*J31L + Atu22*J32L + - Atu23*J33L)*PDstandardNth3alpha) + - 2*(gtu12*(J11L*J12L*PDstandardNth11beta2 + - J12L*J21L*PDstandardNth12beta2 + J11L*J22L*PDstandardNth12beta2 + - J12L*J31L*PDstandardNth13beta2 + J11L*J32L*PDstandardNth13beta2 + - dJ112L*PDstandardNth1beta2 + J21L*J22L*PDstandardNth22beta2 + - J22L*J31L*PDstandardNth23beta2 + J21L*J32L*PDstandardNth23beta2 + - dJ212L*PDstandardNth2beta2 + J31L*J32L*PDstandardNth33beta2 + - dJ312L*PDstandardNth3beta2) + gtu13*(J11L*J13L*PDstandardNth11beta2 + - J13L*J21L*PDstandardNth12beta2 + J11L*J23L*PDstandardNth12beta2 + - J13L*J31L*PDstandardNth13beta2 + J11L*J33L*PDstandardNth13beta2 + - dJ113L*PDstandardNth1beta2 + J21L*J23L*PDstandardNth22beta2 + - J23L*J31L*PDstandardNth23beta2 + J21L*J33L*PDstandardNth23beta2 + - dJ213L*PDstandardNth2beta2 + J31L*J33L*PDstandardNth33beta2 + - dJ313L*PDstandardNth3beta2) + gtu23*(J12L*J13L*PDstandardNth11beta2 + - J13L*J22L*PDstandardNth12beta2 + J12L*J23L*PDstandardNth12beta2 + - J13L*J32L*PDstandardNth13beta2 + J12L*J33L*PDstandardNth13beta2 + - dJ123L*PDstandardNth1beta2 + J22L*J23L*PDstandardNth22beta2 + - J23L*J32L*PDstandardNth23beta2 + J22L*J33L*PDstandardNth23beta2 + - dJ223L*PDstandardNth2beta2 + J32L*J33L*PDstandardNth33beta2 + - dJ323L*PDstandardNth3beta2) + alphaL*(6*(Atu12*cdphi1 + Atu22*cdphi2 + - Atu23*cdphi3) + Atu11*Gt211 + 2*Atu12*Gt212 + 2*Atu13*Gt213 + - Atu22*Gt222 + 2*Atu23*Gt223 + Atu33*Gt233 - - 0.666666666666666666666666666667*((gtu12*J11L + gtu22*J12L + - gtu23*J13L)*PDstandardNth1trK + (gtu12*J21L + gtu22*J22L + - gtu23*J23L)*PDstandardNth2trK + (gtu12*J31L + gtu22*J32L + - gtu23*J33L)*PDstandardNth3trK))) + (beta1L*J11L + beta2L*J12L + - beta3L*J13L)*PDupwindNthAnti1Xt2 + (beta1L*J21L + beta2L*J22L + - beta3L*J23L)*PDupwindNthAnti2Xt2 + (beta1L*J31L + beta2L*J32L + - beta3L*J33L)*PDupwindNthAnti3Xt2 - - 50.26548245743669181540229413247204614715*alphaL*(gtu12*S1 + gtu22*S2 + - gtu23*S3) + 0.666666666666666666666666666667*(J11L*PDstandardNth1beta1 - + J12L*PDstandardNth1beta2 + J13L*PDstandardNth1beta3 + - J21L*PDstandardNth2beta1 + J22L*PDstandardNth2beta2 + - J23L*PDstandardNth2beta3 + J31L*PDstandardNth3beta1 + - J32L*PDstandardNth3beta2 + J33L*PDstandardNth3beta3)*Xtn2 - - PDstandardNth1beta2*(J11L*Xtn1 + J12L*Xtn2 + J13L*Xtn3) - - PDstandardNth2beta2*(J21L*Xtn1 + J22L*Xtn2 + J23L*Xtn3) - - PDstandardNth3beta2*(J31L*Xtn1 + J32L*Xtn2 + J33L*Xtn3) + - (J11L*PDupwindNthSymm1Xt2 + J21L*PDupwindNthSymm2Xt2 + - J31L*PDupwindNthSymm3Xt2)*Abs(beta1L) + (J12L*PDupwindNthSymm1Xt2 + - J22L*PDupwindNthSymm2Xt2 + J32L*PDupwindNthSymm3Xt2)*Abs(beta2L) + - (J13L*PDupwindNthSymm1Xt2 + J23L*PDupwindNthSymm2Xt2 + - J33L*PDupwindNthSymm3Xt2)*Abs(beta3L) + - gtu11*(2*J11L*J21L*PDstandardNth12beta2 + - 2*J11L*J31L*PDstandardNth13beta2 + dJ111L*PDstandardNth1beta2 + - 2*J21L*J31L*PDstandardNth23beta2 + dJ211L*PDstandardNth2beta2 + - dJ311L*PDstandardNth3beta2 + PDstandardNth11beta2*SQR(J11L) + - PDstandardNth22beta2*SQR(J21L) + PDstandardNth33beta2*SQR(J31L)) + - gtu22*(2*J12L*J22L*PDstandardNth12beta2 + - 2*J12L*J32L*PDstandardNth13beta2 + dJ122L*PDstandardNth1beta2 + - 2*J22L*J32L*PDstandardNth23beta2 + dJ222L*PDstandardNth2beta2 + - dJ322L*PDstandardNth3beta2 + PDstandardNth11beta2*SQR(J12L) + - PDstandardNth22beta2*SQR(J22L) + PDstandardNth33beta2*SQR(J32L)) + - gtu33*(2*J13L*J23L*PDstandardNth12beta2 + - 2*J13L*J33L*PDstandardNth13beta2 + dJ133L*PDstandardNth1beta2 + - 2*J23L*J33L*PDstandardNth23beta2 + dJ233L*PDstandardNth2beta2 + - dJ333L*PDstandardNth3beta2 + PDstandardNth11beta2*SQR(J13L) + - PDstandardNth22beta2*SQR(J23L) + PDstandardNth33beta2*SQR(J33L)) + - 0.333333333333333333333333333333*(gtu12*(J11L*J12L*PDstandardNth11beta2 - + J11L*J13L*PDstandardNth11beta3 + 2*J11L*J21L*PDstandardNth12beta1 + - J12L*J21L*PDstandardNth12beta2 + J11L*J22L*PDstandardNth12beta2 + - J13L*J21L*PDstandardNth12beta3 + J11L*J23L*PDstandardNth12beta3 + - 2*J11L*J31L*PDstandardNth13beta1 + J12L*J31L*PDstandardNth13beta2 + - J11L*J32L*PDstandardNth13beta2 + J13L*J31L*PDstandardNth13beta3 + - J11L*J33L*PDstandardNth13beta3 + dJ111L*PDstandardNth1beta1 + - dJ112L*PDstandardNth1beta2 + dJ113L*PDstandardNth1beta3 + - J21L*J22L*PDstandardNth22beta2 + J21L*J23L*PDstandardNth22beta3 + - 2*J21L*J31L*PDstandardNth23beta1 + J22L*J31L*PDstandardNth23beta2 + - J21L*J32L*PDstandardNth23beta2 + J23L*J31L*PDstandardNth23beta3 + - J21L*J33L*PDstandardNth23beta3 + dJ211L*PDstandardNth2beta1 + - dJ212L*PDstandardNth2beta2 + dJ213L*PDstandardNth2beta3 + - J31L*J32L*PDstandardNth33beta2 + J31L*J33L*PDstandardNth33beta3 + - dJ311L*PDstandardNth3beta1 + dJ312L*PDstandardNth3beta2 + - dJ313L*PDstandardNth3beta3 + PDstandardNth11beta1*SQR(J11L) + - PDstandardNth22beta1*SQR(J21L) + PDstandardNth33beta1*SQR(J31L)) + - gtu22*(J11L*J12L*PDstandardNth11beta1 + J12L*J13L*PDstandardNth11beta3 - + J12L*J21L*PDstandardNth12beta1 + J11L*J22L*PDstandardNth12beta1 + - 2*J12L*J22L*PDstandardNth12beta2 + J13L*J22L*PDstandardNth12beta3 + - J12L*J23L*PDstandardNth12beta3 + J12L*J31L*PDstandardNth13beta1 + - J11L*J32L*PDstandardNth13beta1 + 2*J12L*J32L*PDstandardNth13beta2 + - J13L*J32L*PDstandardNth13beta3 + J12L*J33L*PDstandardNth13beta3 + - dJ112L*PDstandardNth1beta1 + dJ122L*PDstandardNth1beta2 + - dJ123L*PDstandardNth1beta3 + J21L*J22L*PDstandardNth22beta1 + - J22L*J23L*PDstandardNth22beta3 + J22L*J31L*PDstandardNth23beta1 + - J21L*J32L*PDstandardNth23beta1 + 2*J22L*J32L*PDstandardNth23beta2 + - J23L*J32L*PDstandardNth23beta3 + J22L*J33L*PDstandardNth23beta3 + - dJ212L*PDstandardNth2beta1 + dJ222L*PDstandardNth2beta2 + - dJ223L*PDstandardNth2beta3 + J31L*J32L*PDstandardNth33beta1 + - J32L*J33L*PDstandardNth33beta3 + dJ312L*PDstandardNth3beta1 + - dJ322L*PDstandardNth3beta2 + dJ323L*PDstandardNth3beta3 + - PDstandardNth11beta2*SQR(J12L) + PDstandardNth22beta2*SQR(J22L) + - PDstandardNth33beta2*SQR(J32L)) + gtu23*(J11L*J13L*PDstandardNth11beta1 - + J12L*J13L*PDstandardNth11beta2 + J13L*J21L*PDstandardNth12beta1 + - J11L*J23L*PDstandardNth12beta1 + J13L*J22L*PDstandardNth12beta2 + - J12L*J23L*PDstandardNth12beta2 + 2*J13L*J23L*PDstandardNth12beta3 + - J13L*J31L*PDstandardNth13beta1 + J11L*J33L*PDstandardNth13beta1 + - J13L*J32L*PDstandardNth13beta2 + J12L*J33L*PDstandardNth13beta2 + - 2*J13L*J33L*PDstandardNth13beta3 + dJ113L*PDstandardNth1beta1 + - dJ123L*PDstandardNth1beta2 + dJ133L*PDstandardNth1beta3 + - J21L*J23L*PDstandardNth22beta1 + J22L*J23L*PDstandardNth22beta2 + - J23L*J31L*PDstandardNth23beta1 + J21L*J33L*PDstandardNth23beta1 + - J23L*J32L*PDstandardNth23beta2 + J22L*J33L*PDstandardNth23beta2 + - 2*J23L*J33L*PDstandardNth23beta3 + dJ213L*PDstandardNth2beta1 + - dJ223L*PDstandardNth2beta2 + dJ233L*PDstandardNth2beta3 + - J31L*J33L*PDstandardNth33beta1 + J32L*J33L*PDstandardNth33beta2 + - dJ313L*PDstandardNth3beta1 + dJ323L*PDstandardNth3beta2 + - dJ333L*PDstandardNth3beta3 + PDstandardNth11beta3*SQR(J13L) + - PDstandardNth22beta3*SQR(J23L) + PDstandardNth33beta3*SQR(J33L))); - - CCTK_REAL dotXt3 = (epsdiss1*J11L + epsdiss2*J12L + - epsdiss3*J13L)*PDdissipationNth1Xt3 + (epsdiss1*J21L + epsdiss2*J22L + - epsdiss3*J23L)*PDdissipationNth2Xt3 + (epsdiss1*J31L + epsdiss2*J32L + - epsdiss3*J33L)*PDdissipationNth3Xt3 - 2*((Atu13*J11L + Atu23*J12L + - Atu33*J13L)*PDstandardNth1alpha + (Atu13*J21L + Atu23*J22L + - Atu33*J23L)*PDstandardNth2alpha + (Atu13*J31L + Atu23*J32L + - Atu33*J33L)*PDstandardNth3alpha) + - 2*(gtu12*(J11L*J12L*PDstandardNth11beta3 + - J12L*J21L*PDstandardNth12beta3 + J11L*J22L*PDstandardNth12beta3 + - J12L*J31L*PDstandardNth13beta3 + J11L*J32L*PDstandardNth13beta3 + - dJ112L*PDstandardNth1beta3 + J21L*J22L*PDstandardNth22beta3 + - J22L*J31L*PDstandardNth23beta3 + J21L*J32L*PDstandardNth23beta3 + - dJ212L*PDstandardNth2beta3 + J31L*J32L*PDstandardNth33beta3 + - dJ312L*PDstandardNth3beta3) + gtu13*(J11L*J13L*PDstandardNth11beta3 + - J13L*J21L*PDstandardNth12beta3 + J11L*J23L*PDstandardNth12beta3 + - J13L*J31L*PDstandardNth13beta3 + J11L*J33L*PDstandardNth13beta3 + - dJ113L*PDstandardNth1beta3 + J21L*J23L*PDstandardNth22beta3 + - J23L*J31L*PDstandardNth23beta3 + J21L*J33L*PDstandardNth23beta3 + - dJ213L*PDstandardNth2beta3 + J31L*J33L*PDstandardNth33beta3 + - dJ313L*PDstandardNth3beta3) + gtu23*(J12L*J13L*PDstandardNth11beta3 + - J13L*J22L*PDstandardNth12beta3 + J12L*J23L*PDstandardNth12beta3 + - J13L*J32L*PDstandardNth13beta3 + J12L*J33L*PDstandardNth13beta3 + - dJ123L*PDstandardNth1beta3 + J22L*J23L*PDstandardNth22beta3 + - J23L*J32L*PDstandardNth23beta3 + J22L*J33L*PDstandardNth23beta3 + - dJ223L*PDstandardNth2beta3 + J32L*J33L*PDstandardNth33beta3 + - dJ323L*PDstandardNth3beta3) + alphaL*(6*(Atu13*cdphi1 + Atu23*cdphi2 + - Atu33*cdphi3) + Atu11*Gt311 + 2*Atu12*Gt312 + 2*Atu13*Gt313 + - Atu22*Gt322 + 2*Atu23*Gt323 + Atu33*Gt333 - - 0.666666666666666666666666666667*((gtu13*J11L + gtu23*J12L + - gtu33*J13L)*PDstandardNth1trK + (gtu13*J21L + gtu23*J22L + - gtu33*J23L)*PDstandardNth2trK + (gtu13*J31L + gtu23*J32L + - gtu33*J33L)*PDstandardNth3trK))) + (beta1L*J11L + beta2L*J12L + - beta3L*J13L)*PDupwindNthAnti1Xt3 + (beta1L*J21L + beta2L*J22L + - beta3L*J23L)*PDupwindNthAnti2Xt3 + (beta1L*J31L + beta2L*J32L + - beta3L*J33L)*PDupwindNthAnti3Xt3 - - 50.26548245743669181540229413247204614715*alphaL*(gtu13*S1 + gtu23*S2 + - gtu33*S3) + 0.666666666666666666666666666667*(J11L*PDstandardNth1beta1 - + J12L*PDstandardNth1beta2 + J13L*PDstandardNth1beta3 + - J21L*PDstandardNth2beta1 + J22L*PDstandardNth2beta2 + - J23L*PDstandardNth2beta3 + J31L*PDstandardNth3beta1 + - J32L*PDstandardNth3beta2 + J33L*PDstandardNth3beta3)*Xtn3 - - PDstandardNth1beta3*(J11L*Xtn1 + J12L*Xtn2 + J13L*Xtn3) - - PDstandardNth2beta3*(J21L*Xtn1 + J22L*Xtn2 + J23L*Xtn3) - - PDstandardNth3beta3*(J31L*Xtn1 + J32L*Xtn2 + J33L*Xtn3) + - (J11L*PDupwindNthSymm1Xt3 + J21L*PDupwindNthSymm2Xt3 + - J31L*PDupwindNthSymm3Xt3)*Abs(beta1L) + (J12L*PDupwindNthSymm1Xt3 + - J22L*PDupwindNthSymm2Xt3 + J32L*PDupwindNthSymm3Xt3)*Abs(beta2L) + - (J13L*PDupwindNthSymm1Xt3 + J23L*PDupwindNthSymm2Xt3 + - J33L*PDupwindNthSymm3Xt3)*Abs(beta3L) + - gtu11*(2*J11L*J21L*PDstandardNth12beta3 + - 2*J11L*J31L*PDstandardNth13beta3 + dJ111L*PDstandardNth1beta3 + - 2*J21L*J31L*PDstandardNth23beta3 + dJ211L*PDstandardNth2beta3 + - dJ311L*PDstandardNth3beta3 + PDstandardNth11beta3*SQR(J11L) + - PDstandardNth22beta3*SQR(J21L) + PDstandardNth33beta3*SQR(J31L)) + - gtu22*(2*J12L*J22L*PDstandardNth12beta3 + - 2*J12L*J32L*PDstandardNth13beta3 + dJ122L*PDstandardNth1beta3 + - 2*J22L*J32L*PDstandardNth23beta3 + dJ222L*PDstandardNth2beta3 + - dJ322L*PDstandardNth3beta3 + PDstandardNth11beta3*SQR(J12L) + - PDstandardNth22beta3*SQR(J22L) + PDstandardNth33beta3*SQR(J32L)) + - gtu33*(2*J13L*J23L*PDstandardNth12beta3 + - 2*J13L*J33L*PDstandardNth13beta3 + dJ133L*PDstandardNth1beta3 + - 2*J23L*J33L*PDstandardNth23beta3 + dJ233L*PDstandardNth2beta3 + - dJ333L*PDstandardNth3beta3 + PDstandardNth11beta3*SQR(J13L) + - PDstandardNth22beta3*SQR(J23L) + PDstandardNth33beta3*SQR(J33L)) + - 0.333333333333333333333333333333*(gtu13*(J11L*J12L*PDstandardNth11beta2 - + J11L*J13L*PDstandardNth11beta3 + 2*J11L*J21L*PDstandardNth12beta1 + - J12L*J21L*PDstandardNth12beta2 + J11L*J22L*PDstandardNth12beta2 + - J13L*J21L*PDstandardNth12beta3 + J11L*J23L*PDstandardNth12beta3 + - 2*J11L*J31L*PDstandardNth13beta1 + J12L*J31L*PDstandardNth13beta2 + - J11L*J32L*PDstandardNth13beta2 + J13L*J31L*PDstandardNth13beta3 + - J11L*J33L*PDstandardNth13beta3 + dJ111L*PDstandardNth1beta1 + - dJ112L*PDstandardNth1beta2 + dJ113L*PDstandardNth1beta3 + - J21L*J22L*PDstandardNth22beta2 + J21L*J23L*PDstandardNth22beta3 + - 2*J21L*J31L*PDstandardNth23beta1 + J22L*J31L*PDstandardNth23beta2 + - J21L*J32L*PDstandardNth23beta2 + J23L*J31L*PDstandardNth23beta3 + - J21L*J33L*PDstandardNth23beta3 + dJ211L*PDstandardNth2beta1 + - dJ212L*PDstandardNth2beta2 + dJ213L*PDstandardNth2beta3 + - J31L*J32L*PDstandardNth33beta2 + J31L*J33L*PDstandardNth33beta3 + - dJ311L*PDstandardNth3beta1 + dJ312L*PDstandardNth3beta2 + - dJ313L*PDstandardNth3beta3 + PDstandardNth11beta1*SQR(J11L) + - PDstandardNth22beta1*SQR(J21L) + PDstandardNth33beta1*SQR(J31L)) + - gtu23*(J11L*J12L*PDstandardNth11beta1 + J12L*J13L*PDstandardNth11beta3 - + J12L*J21L*PDstandardNth12beta1 + J11L*J22L*PDstandardNth12beta1 + - 2*J12L*J22L*PDstandardNth12beta2 + J13L*J22L*PDstandardNth12beta3 + - J12L*J23L*PDstandardNth12beta3 + J12L*J31L*PDstandardNth13beta1 + - J11L*J32L*PDstandardNth13beta1 + 2*J12L*J32L*PDstandardNth13beta2 + - J13L*J32L*PDstandardNth13beta3 + J12L*J33L*PDstandardNth13beta3 + - dJ112L*PDstandardNth1beta1 + dJ122L*PDstandardNth1beta2 + - dJ123L*PDstandardNth1beta3 + J21L*J22L*PDstandardNth22beta1 + - J22L*J23L*PDstandardNth22beta3 + J22L*J31L*PDstandardNth23beta1 + - J21L*J32L*PDstandardNth23beta1 + 2*J22L*J32L*PDstandardNth23beta2 + - J23L*J32L*PDstandardNth23beta3 + J22L*J33L*PDstandardNth23beta3 + - dJ212L*PDstandardNth2beta1 + dJ222L*PDstandardNth2beta2 + - dJ223L*PDstandardNth2beta3 + J31L*J32L*PDstandardNth33beta1 + - J32L*J33L*PDstandardNth33beta3 + dJ312L*PDstandardNth3beta1 + - dJ322L*PDstandardNth3beta2 + dJ323L*PDstandardNth3beta3 + - PDstandardNth11beta2*SQR(J12L) + PDstandardNth22beta2*SQR(J22L) + - PDstandardNth33beta2*SQR(J32L)) + gtu33*(J11L*J13L*PDstandardNth11beta1 - + J12L*J13L*PDstandardNth11beta2 + J13L*J21L*PDstandardNth12beta1 + - J11L*J23L*PDstandardNth12beta1 + J13L*J22L*PDstandardNth12beta2 + - J12L*J23L*PDstandardNth12beta2 + 2*J13L*J23L*PDstandardNth12beta3 + - J13L*J31L*PDstandardNth13beta1 + J11L*J33L*PDstandardNth13beta1 + - J13L*J32L*PDstandardNth13beta2 + J12L*J33L*PDstandardNth13beta2 + - 2*J13L*J33L*PDstandardNth13beta3 + dJ113L*PDstandardNth1beta1 + - dJ123L*PDstandardNth1beta2 + dJ133L*PDstandardNth1beta3 + - J21L*J23L*PDstandardNth22beta1 + J22L*J23L*PDstandardNth22beta2 + - J23L*J31L*PDstandardNth23beta1 + J21L*J33L*PDstandardNth23beta1 + - J23L*J32L*PDstandardNth23beta2 + J22L*J33L*PDstandardNth23beta2 + - 2*J23L*J33L*PDstandardNth23beta3 + dJ213L*PDstandardNth2beta1 + - dJ223L*PDstandardNth2beta2 + dJ233L*PDstandardNth2beta3 + - J31L*J33L*PDstandardNth33beta1 + J32L*J33L*PDstandardNth33beta2 + - dJ313L*PDstandardNth3beta1 + dJ323L*PDstandardNth3beta2 + - dJ333L*PDstandardNth3beta3 + PDstandardNth11beta3*SQR(J13L) + - PDstandardNth22beta3*SQR(J23L) + PDstandardNth33beta3*SQR(J33L))); + CCTK_REAL gt11rhsL = -0.666666666666666666666666666667*(3*alphaL*At11L + - 3*(gt12L*JacPDstandardNth1beta2 + gt13L*JacPDstandardNth1beta3) + + gt11L*(-2*JacPDstandardNth1beta1 + JacPDstandardNth2beta2 + + JacPDstandardNth3beta3)); + + CCTK_REAL gt12rhsL = 0.333333333333333333333333333333*(-6*alphaL*At12L + + 3*(gt22L*JacPDstandardNth1beta2 + gt23L*JacPDstandardNth1beta3 + + gt11L*JacPDstandardNth2beta1 + gt13L*JacPDstandardNth2beta3) + + gt12L*(JacPDstandardNth1beta1 + JacPDstandardNth2beta2 - + 2*JacPDstandardNth3beta3)); + + CCTK_REAL gt13rhsL = 0.333333333333333333333333333333*(-6*alphaL*At13L + + 3*(gt23L*JacPDstandardNth1beta2 + gt33L*JacPDstandardNth1beta3 + + gt11L*JacPDstandardNth3beta1 + gt12L*JacPDstandardNth3beta2) + + gt13L*(JacPDstandardNth1beta1 - 2*JacPDstandardNth2beta2 + + JacPDstandardNth3beta3)); + + CCTK_REAL gt22rhsL = -0.666666666666666666666666666667*(3*alphaL*At22L + - 3*(gt12L*JacPDstandardNth2beta1 + gt23L*JacPDstandardNth2beta3) + + gt22L*(JacPDstandardNth1beta1 - 2*JacPDstandardNth2beta2 + + JacPDstandardNth3beta3)); + + CCTK_REAL gt23rhsL = 0.333333333333333333333333333333*(-6*alphaL*At23L + + 3*(gt13L*JacPDstandardNth2beta1 + gt33L*JacPDstandardNth2beta3 + + gt12L*JacPDstandardNth3beta1 + gt22L*JacPDstandardNth3beta2) + + gt23L*(-2*JacPDstandardNth1beta1 + JacPDstandardNth2beta2 + + JacPDstandardNth3beta3)); + + CCTK_REAL gt33rhsL = -0.666666666666666666666666666667*(3*alphaL*At33L + - 3*(gt13L*JacPDstandardNth3beta1 + gt23L*JacPDstandardNth3beta2) + + gt33L*(JacPDstandardNth1beta1 + JacPDstandardNth2beta2 - + 2*JacPDstandardNth3beta3)); + + CCTK_REAL dotXt1 = + 0.333333333333333333333333333333*(gtu11*(4*JacPDstandardNth11beta1 + + JacPDstandardNth12beta2 + JacPDstandardNth13beta3) + + gtu12*(4*JacPDstandardNth21beta1 + JacPDstandardNth22beta2 + + JacPDstandardNth23beta3) + 3*(gtu12*JacPDstandardNth12beta1 + + gtu13*JacPDstandardNth13beta1 + gtu22*JacPDstandardNth22beta1 + + gtu23*(JacPDstandardNth23beta1 + JacPDstandardNth32beta1) + + gtu33*JacPDstandardNth33beta1) + gtu13*(4*JacPDstandardNth31beta1 + + JacPDstandardNth32beta2 + JacPDstandardNth33beta3) - + 6*(Atu11*JacPDstandardNth1alpha + Atu12*JacPDstandardNth2alpha + + Atu13*JacPDstandardNth3alpha) + alphaL*(Atu13*(36*cdphi3 + 12*Gt113) + + 12*(Atu12*(3*cdphi2 + Gt112) + Atu23*Gt123) + 6*(Atu11*(6*cdphi1 + + Gt111) + Atu22*Gt122 + Atu33*Gt133) - 4*(gtu11*JacPDstandardNth1trK + + gtu12*JacPDstandardNth2trK + gtu13*JacPDstandardNth3trK) - + 150.7964473723100754462068823974161384415*(gtu11*S1 + gtu12*S2 + + gtu13*S3)) + (-JacPDstandardNth1beta1 + 2*(JacPDstandardNth2beta2 + + JacPDstandardNth3beta3))*Xtn1 - 3*(JacPDstandardNth2beta1*Xtn2 + + JacPDstandardNth3beta1*Xtn3)); + + CCTK_REAL dotXt2 = + 0.333333333333333333333333333333*(gtu12*(JacPDstandardNth11beta1 + + 4*JacPDstandardNth12beta2 + JacPDstandardNth13beta3 + + 3*JacPDstandardNth21beta2) + gtu22*(JacPDstandardNth21beta1 + + 4*JacPDstandardNth22beta2 + JacPDstandardNth23beta3) + + 3*(gtu11*JacPDstandardNth11beta2 + gtu23*JacPDstandardNth23beta2 + + gtu13*(JacPDstandardNth13beta2 + JacPDstandardNth31beta2) + + gtu33*JacPDstandardNth33beta2) + gtu23*(JacPDstandardNth31beta1 + + 4*JacPDstandardNth32beta2 + JacPDstandardNth33beta3) - + 6*(Atu12*JacPDstandardNth1alpha + Atu22*JacPDstandardNth2alpha + + Atu23*JacPDstandardNth3alpha) + alphaL*(12*(Atu12*(3*cdphi1 + Gt212) + + Atu13*Gt213) + Atu23*(36*cdphi3 + 12*Gt223) + 6*(Atu11*Gt211 + + Atu22*(6*cdphi2 + Gt222) + Atu33*Gt233) - 4*(gtu12*JacPDstandardNth1trK + + gtu22*JacPDstandardNth2trK + gtu23*JacPDstandardNth3trK) - + 150.7964473723100754462068823974161384415*(gtu12*S1 + gtu22*S2 + + gtu23*S3)) + (-JacPDstandardNth2beta2 + 2*(JacPDstandardNth1beta1 + + JacPDstandardNth3beta3))*Xtn2 - 3*(JacPDstandardNth1beta2*Xtn1 + + JacPDstandardNth3beta2*Xtn3)); + + CCTK_REAL dotXt3 = + 0.333333333333333333333333333333*(gtu23*(JacPDstandardNth21beta1 + + JacPDstandardNth22beta2 + 4*JacPDstandardNth23beta3) + + gtu13*(JacPDstandardNth11beta1 + JacPDstandardNth12beta2 + + 4*JacPDstandardNth13beta3 + 3*JacPDstandardNth31beta3) + + 3*(gtu11*JacPDstandardNth11beta3 + gtu12*(JacPDstandardNth12beta3 + + JacPDstandardNth21beta3) + gtu22*JacPDstandardNth22beta3 + + gtu23*JacPDstandardNth32beta3) + gtu33*(JacPDstandardNth31beta1 + + JacPDstandardNth32beta2 + 4*JacPDstandardNth33beta3) - + 6*(Atu13*JacPDstandardNth1alpha + Atu23*JacPDstandardNth2alpha + + Atu33*JacPDstandardNth3alpha) + alphaL*(6*(Atu11*Gt311 + Atu22*Gt322) + + 12*(Atu12*Gt312 + Atu13*(3*cdphi1 + Gt313) + Atu23*(3*cdphi2 + Gt323)) + + Atu33*(36*cdphi3 + 6*Gt333) - 4*(gtu13*JacPDstandardNth1trK + + gtu23*JacPDstandardNth2trK + gtu33*JacPDstandardNth3trK) - + 150.7964473723100754462068823974161384415*(gtu13*S1 + gtu23*S2 + + gtu33*S3)) - 3*(JacPDstandardNth1beta3*Xtn1 + + JacPDstandardNth2beta3*Xtn2) + (2*(JacPDstandardNth1beta1 + + JacPDstandardNth2beta2) - JacPDstandardNth3beta3)*Xtn3); CCTK_REAL Xt1rhsL = dotXt1; @@ -1175,195 +1191,55 @@ static void ML_BSSN_MP_RHS1_Body(cGH const * restrict const cctkGH, int const di CCTK_REAL Xt3rhsL = dotXt3; - CCTK_REAL dottrK = (epsdiss1*J11L + epsdiss2*J12L + - epsdiss3*J13L)*PDdissipationNth1trK + (epsdiss1*J21L + epsdiss2*J22L + - epsdiss3*J23L)*PDdissipationNth2trK + (epsdiss1*J31L + epsdiss2*J32L + - epsdiss3*J33L)*PDdissipationNth3trK + (beta1L*J11L + beta2L*J12L + - beta3L*J13L)*PDupwindNthAnti1trK + (beta1L*J21L + beta2L*J22L + - beta3L*J23L)*PDupwindNthAnti2trK + (beta1L*J31L + beta2L*J32L + - beta3L*J33L)*PDupwindNthAnti3trK + (J11L*PDupwindNthSymm1trK + - J21L*PDupwindNthSymm2trK + J31L*PDupwindNthSymm3trK)*Abs(beta1L) + - (J12L*PDupwindNthSymm1trK + J22L*PDupwindNthSymm2trK + - J32L*PDupwindNthSymm3trK)*Abs(beta2L) + (J13L*PDupwindNthSymm1trK + - J23L*PDupwindNthSymm2trK + J33L*PDupwindNthSymm3trK)*Abs(beta3L) - - em4phi*(2*((gtu12*J11L*J22L + gtu13*(J13L*J21L + - J11L*J23L))*PDstandardNth12alpha + (gtu12*J11L*J32L + gtu13*(J13L*J31L - + J11L*J33L))*PDstandardNth13alpha + J11L*((gtu12*J12L + - gtu13*J13L)*PDstandardNth11alpha + gtu11*(J21L*PDstandardNth12alpha + - J31L*PDstandardNth13alpha)) + J12L*(gtu23*J13L*PDstandardNth11alpha + - gtu12*(J21L*PDstandardNth12alpha + J31L*PDstandardNth13alpha)) + - (gtu11*J21L*J31L + (gtu22*J22L + gtu23*J23L)*J32L + (gtu23*J22L + - gtu33*J23L)*J33L)*PDstandardNth23alpha + J22L*((gtu22*J12L + - gtu23*J13L)*PDstandardNth12alpha + (gtu12*J21L + - gtu23*J23L)*PDstandardNth22alpha + gtu12*J31L*PDstandardNth23alpha) + - J23L*((gtu23*J12L + gtu33*J13L)*PDstandardNth12alpha + - gtu13*(J21L*PDstandardNth22alpha + J31L*PDstandardNth23alpha)) + - (gtu12*(dJ312L + cdphi2*J31L) + cdphi3*(gtu13*J31L + - gtu23*J32L))*PDstandardNth3alpha + J32L*((gtu22*J12L + - gtu23*J13L)*PDstandardNth13alpha + gtu23*J33L*PDstandardNth33alpha + - gtu12*(J21L*PDstandardNth23alpha + J31L*PDstandardNth33alpha) + - cdphi2*gtu22*PDstandardNth3alpha) + J33L*((gtu23*J12L + - gtu33*J13L)*PDstandardNth13alpha + gtu13*(J21L*PDstandardNth23alpha + - J31L*PDstandardNth33alpha) + (cdphi2*gtu23 + - cdphi3*gtu33)*PDstandardNth3alpha)) + - PDstandardNth1alpha*(gtu11*(dJ111L + 2*cdphi1*J11L) + gtu22*(dJ122L + - 2*cdphi2*J12L) + gtu33*(dJ133L + 2*cdphi3*J13L) + 2*(dJ112L*gtu12 + - dJ113L*gtu13 + dJ123L*gtu23 + cdphi2*gtu12*J11L + cdphi3*gtu13*J11L + - cdphi1*gtu12*J12L + cdphi3*gtu23*J12L + cdphi1*gtu13*J13L + - cdphi2*gtu23*J13L) - J11L*Xtn1 - J12L*Xtn2 - J13L*Xtn3) + - PDstandardNth2alpha*(gtu11*(dJ211L + 2*cdphi1*J21L) + gtu22*(dJ222L + - 2*cdphi2*J22L) + gtu33*(dJ233L + 2*cdphi3*J23L) + 2*(dJ212L*gtu12 + - dJ213L*gtu13 + dJ223L*gtu23 + cdphi2*gtu12*J21L + cdphi3*gtu13*J21L + - cdphi1*gtu12*J22L + cdphi3*gtu23*J22L + cdphi1*gtu13*J23L + - cdphi2*gtu23*J23L) - J21L*Xtn1 - J22L*Xtn2 - J23L*Xtn3) + - PDstandardNth3alpha*(dJ322L*gtu22 + dJ333L*gtu33 + gtu11*(dJ311L + - 2*cdphi1*J31L) + 2*(dJ313L*gtu13 + dJ323L*gtu23 + cdphi1*gtu12*J32L + - cdphi1*gtu13*J33L) - J31L*Xtn1 - J32L*Xtn2 - J33L*Xtn3) + - PDstandardNth11alpha*(gtu11*SQR(J11L) + gtu22*SQR(J12L) + - gtu33*SQR(J13L)) + PDstandardNth22alpha*(gtu11*SQR(J21L) + - gtu22*SQR(J22L) + gtu33*SQR(J23L)) + - PDstandardNth33alpha*(gtu11*SQR(J31L) + gtu22*SQR(J32L) + - gtu33*SQR(J33L))) + alphaL*(2*(Atm12*Atm21 + Atm13*Atm31 + Atm23*Atm32) - + 12.56637061435917295385057353311801153679*(rho + trS) + SQR(Atm11) + + CCTK_REAL dottrK = -(em4phi*(gtu11*(JacPDstandardNth11alpha + + 2*cdphi1*JacPDstandardNth1alpha) + gtu12*(JacPDstandardNth12alpha + + 2*cdphi2*JacPDstandardNth1alpha + JacPDstandardNth21alpha + + 2*cdphi1*JacPDstandardNth2alpha) + gtu22*(JacPDstandardNth22alpha + + 2*cdphi2*JacPDstandardNth2alpha) + gtu13*(JacPDstandardNth13alpha + + 2*cdphi3*JacPDstandardNth1alpha + JacPDstandardNth31alpha + + 2*cdphi1*JacPDstandardNth3alpha) + gtu23*(JacPDstandardNth23alpha + + 2*cdphi3*JacPDstandardNth2alpha + JacPDstandardNth32alpha + + 2*cdphi2*JacPDstandardNth3alpha) + gtu33*(JacPDstandardNth33alpha + + 2*cdphi3*JacPDstandardNth3alpha) - JacPDstandardNth1alpha*Xtn1 - + JacPDstandardNth2alpha*Xtn2 - JacPDstandardNth3alpha*Xtn3)) + + alphaL*(2*(Atm12*Atm21 + Atm13*Atm31 + Atm23*Atm32) + + 12.56637061435917295385057353311801153679*(rho + trS) + SQR(Atm11) + SQR(Atm22) + SQR(Atm33) + 0.333333333333333333333333333333*SQR(trKL)); CCTK_REAL trKrhsL = dottrK; - CCTK_REAL alpharhsL = (epsdiss1*J11L + epsdiss2*J12L + - epsdiss3*J13L)*PDdissipationNth1alpha + (epsdiss1*J21L + epsdiss2*J22L - + epsdiss3*J23L)*PDdissipationNth2alpha + (epsdiss1*J31L + - epsdiss2*J32L + epsdiss3*J33L)*PDdissipationNth3alpha - - pow(alphaL,ToReal(harmonicN))*ToReal(harmonicF)*(trKL + (AL - - trKL)*ToReal(LapseACoeff)) + ((beta1L*J11L + beta2L*J12L + - beta3L*J13L)*PDupwindNthAnti1alpha + (beta1L*J21L + beta2L*J22L + - beta3L*J23L)*PDupwindNthAnti2alpha + (beta1L*J31L + beta2L*J32L + - beta3L*J33L)*PDupwindNthAnti3alpha + (J11L*PDupwindNthSymm1alpha + - J21L*PDupwindNthSymm2alpha + J31L*PDupwindNthSymm3alpha)*Abs(beta1L) + - (J12L*PDupwindNthSymm1alpha + J22L*PDupwindNthSymm2alpha + - J32L*PDupwindNthSymm3alpha)*Abs(beta2L) + (J13L*PDupwindNthSymm1alpha + - J23L*PDupwindNthSymm2alpha + - J33L*PDupwindNthSymm3alpha)*Abs(beta3L))*ToReal(LapseAdvectionCoeff); - - CCTK_REAL ArhsL = (epsdiss1*J11L + epsdiss2*J12L + - epsdiss3*J13L)*PDdissipationNth1A + (epsdiss1*J21L + epsdiss2*J22L + - epsdiss3*J23L)*PDdissipationNth2A + (epsdiss1*J31L + epsdiss2*J32L + - epsdiss3*J33L)*PDdissipationNth3A + (dottrK - - AL*ToReal(AlphaDriver))*ToReal(LapseACoeff) + ((beta1L*J11L + - beta2L*J12L + beta3L*J13L)*PDupwindNthAnti1A + (beta1L*J21L + - beta2L*J22L + beta3L*J23L)*PDupwindNthAnti2A + (beta1L*J31L + - beta2L*J32L + beta3L*J33L)*PDupwindNthAnti3A + (J11L*PDupwindNthSymm1A - + J21L*PDupwindNthSymm2A + J31L*PDupwindNthSymm3A)*Abs(beta1L) + - (J12L*PDupwindNthSymm1A + J22L*PDupwindNthSymm2A + - J32L*PDupwindNthSymm3A)*Abs(beta2L) + (J13L*PDupwindNthSymm1A + - J23L*PDupwindNthSymm2A + - J33L*PDupwindNthSymm3A)*Abs(beta3L))*ToReal(LapseAdvectionCoeff); + CCTK_REAL alpharhsL = + -(pow(alphaL,ToReal(harmonicN))*ToReal(harmonicF)*(trKL + (AL - + trKL)*ToReal(LapseACoeff))); + + CCTK_REAL ArhsL = (dottrK - + AL*ToReal(AlphaDriver))*ToReal(LapseACoeff); CCTK_REAL eta = fmin(1,INV(rL)*ToReal(SpatialBetaDriverRadius)); CCTK_REAL theta = fmin(1,exp(1 - rL*INV(ToReal(SpatialShiftGammaCoeffRadius)))); - CCTK_REAL beta1rhsL = (epsdiss1*J11L + epsdiss2*J12L + - epsdiss3*J13L)*PDdissipationNth1beta1 + (epsdiss1*J21L + epsdiss2*J22L - + epsdiss3*J23L)*PDdissipationNth2beta1 + (epsdiss1*J31L + - epsdiss2*J32L + epsdiss3*J33L)*PDdissipationNth3beta1 + ((beta1L*J11L + - beta2L*J12L + beta3L*J13L)*PDupwindNthAnti1beta1 + (beta1L*J21L + - beta2L*J22L + beta3L*J23L)*PDupwindNthAnti2beta1 + (beta1L*J31L + - beta2L*J32L + beta3L*J33L)*PDupwindNthAnti3beta1 + - (J11L*PDupwindNthSymm1beta1 + J21L*PDupwindNthSymm2beta1 + - J31L*PDupwindNthSymm3beta1)*Abs(beta1L) + (J12L*PDupwindNthSymm1beta1 + - J22L*PDupwindNthSymm2beta1 + J32L*PDupwindNthSymm3beta1)*Abs(beta2L) + - (J13L*PDupwindNthSymm1beta1 + J23L*PDupwindNthSymm2beta1 + - J33L*PDupwindNthSymm3beta1)*Abs(beta3L))*ToReal(ShiftAdvectionCoeff) + - theta*(Xt1L + beta1L*eta*ToReal(BetaDriver)*(-1 + ToReal(ShiftBCoeff)) - + (B1L - Xt1L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff); - - CCTK_REAL beta2rhsL = (epsdiss1*J11L + epsdiss2*J12L + - epsdiss3*J13L)*PDdissipationNth1beta2 + (epsdiss1*J21L + epsdiss2*J22L - + epsdiss3*J23L)*PDdissipationNth2beta2 + (epsdiss1*J31L + - epsdiss2*J32L + epsdiss3*J33L)*PDdissipationNth3beta2 + ((beta1L*J11L + - beta2L*J12L + beta3L*J13L)*PDupwindNthAnti1beta2 + (beta1L*J21L + - beta2L*J22L + beta3L*J23L)*PDupwindNthAnti2beta2 + (beta1L*J31L + - beta2L*J32L + beta3L*J33L)*PDupwindNthAnti3beta2 + - (J11L*PDupwindNthSymm1beta2 + J21L*PDupwindNthSymm2beta2 + - J31L*PDupwindNthSymm3beta2)*Abs(beta1L) + (J12L*PDupwindNthSymm1beta2 + - J22L*PDupwindNthSymm2beta2 + J32L*PDupwindNthSymm3beta2)*Abs(beta2L) + - (J13L*PDupwindNthSymm1beta2 + J23L*PDupwindNthSymm2beta2 + - J33L*PDupwindNthSymm3beta2)*Abs(beta3L))*ToReal(ShiftAdvectionCoeff) + - theta*(Xt2L + beta2L*eta*ToReal(BetaDriver)*(-1 + ToReal(ShiftBCoeff)) - + (B2L - Xt2L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff); - - CCTK_REAL beta3rhsL = (epsdiss1*J11L + epsdiss2*J12L + - epsdiss3*J13L)*PDdissipationNth1beta3 + (epsdiss1*J21L + epsdiss2*J22L - + epsdiss3*J23L)*PDdissipationNth2beta3 + (epsdiss1*J31L + - epsdiss2*J32L + epsdiss3*J33L)*PDdissipationNth3beta3 + ((beta1L*J11L + - beta2L*J12L + beta3L*J13L)*PDupwindNthAnti1beta3 + (beta1L*J21L + - beta2L*J22L + beta3L*J23L)*PDupwindNthAnti2beta3 + (beta1L*J31L + - beta2L*J32L + beta3L*J33L)*PDupwindNthAnti3beta3 + - (J11L*PDupwindNthSymm1beta3 + J21L*PDupwindNthSymm2beta3 + - J31L*PDupwindNthSymm3beta3)*Abs(beta1L) + (J12L*PDupwindNthSymm1beta3 + - J22L*PDupwindNthSymm2beta3 + J32L*PDupwindNthSymm3beta3)*Abs(beta2L) + - (J13L*PDupwindNthSymm1beta3 + J23L*PDupwindNthSymm2beta3 + - J33L*PDupwindNthSymm3beta3)*Abs(beta3L))*ToReal(ShiftAdvectionCoeff) + - theta*(Xt3L + beta3L*eta*ToReal(BetaDriver)*(-1 + ToReal(ShiftBCoeff)) - + (B3L - Xt3L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff); - - CCTK_REAL B1rhsL = (epsdiss1*J11L + epsdiss2*J12L + - epsdiss3*J13L)*PDdissipationNth1B1 + (epsdiss1*J21L + epsdiss2*J22L + - epsdiss3*J23L)*PDdissipationNth2B1 + (epsdiss1*J31L + epsdiss2*J32L + - epsdiss3*J33L)*PDdissipationNth3B1 + ((beta1L*J11L + beta2L*J12L + - beta3L*J13L)*(PDupwindNthAnti1B1 - PDupwindNthAnti1Xt1) + (beta1L*J21L - + beta2L*J22L + beta3L*J23L)*(PDupwindNthAnti2B1 - PDupwindNthAnti2Xt1) - + (beta1L*J31L + beta2L*J32L + beta3L*J33L)*(PDupwindNthAnti3B1 - - PDupwindNthAnti3Xt1) + (J11L*(PDupwindNthSymm1B1 - PDupwindNthSymm1Xt1) - + J21L*(PDupwindNthSymm2B1 - PDupwindNthSymm2Xt1) + - J31L*(PDupwindNthSymm3B1 - PDupwindNthSymm3Xt1))*Abs(beta1L) + - (J12L*(PDupwindNthSymm1B1 - PDupwindNthSymm1Xt1) + - J22L*(PDupwindNthSymm2B1 - PDupwindNthSymm2Xt1) + - J32L*(PDupwindNthSymm3B1 - PDupwindNthSymm3Xt1))*Abs(beta2L) + - (J13L*(PDupwindNthSymm1B1 - PDupwindNthSymm1Xt1) + - J23L*(PDupwindNthSymm2B1 - PDupwindNthSymm2Xt1) + - J33L*(PDupwindNthSymm3B1 - - PDupwindNthSymm3Xt1))*Abs(beta3L))*ToReal(ShiftAdvectionCoeff) + - (dotXt1 - B1L*eta*ToReal(BetaDriver))*ToReal(ShiftBCoeff); - - CCTK_REAL B2rhsL = (epsdiss1*J11L + epsdiss2*J12L + - epsdiss3*J13L)*PDdissipationNth1B2 + (epsdiss1*J21L + epsdiss2*J22L + - epsdiss3*J23L)*PDdissipationNth2B2 + (epsdiss1*J31L + epsdiss2*J32L + - epsdiss3*J33L)*PDdissipationNth3B2 + ((beta1L*J11L + beta2L*J12L + - beta3L*J13L)*(PDupwindNthAnti1B2 - PDupwindNthAnti1Xt2) + (beta1L*J21L - + beta2L*J22L + beta3L*J23L)*(PDupwindNthAnti2B2 - PDupwindNthAnti2Xt2) - + (beta1L*J31L + beta2L*J32L + beta3L*J33L)*(PDupwindNthAnti3B2 - - PDupwindNthAnti3Xt2) + (J11L*(PDupwindNthSymm1B2 - PDupwindNthSymm1Xt2) - + J21L*(PDupwindNthSymm2B2 - PDupwindNthSymm2Xt2) + - J31L*(PDupwindNthSymm3B2 - PDupwindNthSymm3Xt2))*Abs(beta1L) + - (J12L*(PDupwindNthSymm1B2 - PDupwindNthSymm1Xt2) + - J22L*(PDupwindNthSymm2B2 - PDupwindNthSymm2Xt2) + - J32L*(PDupwindNthSymm3B2 - PDupwindNthSymm3Xt2))*Abs(beta2L) + - (J13L*(PDupwindNthSymm1B2 - PDupwindNthSymm1Xt2) + - J23L*(PDupwindNthSymm2B2 - PDupwindNthSymm2Xt2) + - J33L*(PDupwindNthSymm3B2 - - PDupwindNthSymm3Xt2))*Abs(beta3L))*ToReal(ShiftAdvectionCoeff) + - (dotXt2 - B2L*eta*ToReal(BetaDriver))*ToReal(ShiftBCoeff); - - CCTK_REAL B3rhsL = (epsdiss1*J11L + epsdiss2*J12L + - epsdiss3*J13L)*PDdissipationNth1B3 + (epsdiss1*J21L + epsdiss2*J22L + - epsdiss3*J23L)*PDdissipationNth2B3 + (epsdiss1*J31L + epsdiss2*J32L + - epsdiss3*J33L)*PDdissipationNth3B3 + ((beta1L*J11L + beta2L*J12L + - beta3L*J13L)*(PDupwindNthAnti1B3 - PDupwindNthAnti1Xt3) + (beta1L*J21L - + beta2L*J22L + beta3L*J23L)*(PDupwindNthAnti2B3 - PDupwindNthAnti2Xt3) - + (beta1L*J31L + beta2L*J32L + beta3L*J33L)*(PDupwindNthAnti3B3 - - PDupwindNthAnti3Xt3) + (J11L*(PDupwindNthSymm1B3 - PDupwindNthSymm1Xt3) - + J21L*(PDupwindNthSymm2B3 - PDupwindNthSymm2Xt3) + - J31L*(PDupwindNthSymm3B3 - PDupwindNthSymm3Xt3))*Abs(beta1L) + - (J12L*(PDupwindNthSymm1B3 - PDupwindNthSymm1Xt3) + - J22L*(PDupwindNthSymm2B3 - PDupwindNthSymm2Xt3) + - J32L*(PDupwindNthSymm3B3 - PDupwindNthSymm3Xt3))*Abs(beta2L) + - (J13L*(PDupwindNthSymm1B3 - PDupwindNthSymm1Xt3) + - J23L*(PDupwindNthSymm2B3 - PDupwindNthSymm2Xt3) + - J33L*(PDupwindNthSymm3B3 - - PDupwindNthSymm3Xt3))*Abs(beta3L))*ToReal(ShiftAdvectionCoeff) + - (dotXt3 - B3L*eta*ToReal(BetaDriver))*ToReal(ShiftBCoeff); + CCTK_REAL beta1rhsL = theta*(Xt1L + beta1L*eta*ToReal(BetaDriver)*(-1 + + ToReal(ShiftBCoeff)) + (B1L - + Xt1L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff); + + CCTK_REAL beta2rhsL = theta*(Xt2L + beta2L*eta*ToReal(BetaDriver)*(-1 + + ToReal(ShiftBCoeff)) + (B2L - + Xt2L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff); + + CCTK_REAL beta3rhsL = theta*(Xt3L + beta3L*eta*ToReal(BetaDriver)*(-1 + + ToReal(ShiftBCoeff)) + (B3L - + Xt3L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff); + + CCTK_REAL B1rhsL = (dotXt1 - + B1L*eta*ToReal(BetaDriver))*ToReal(ShiftBCoeff); + + CCTK_REAL B2rhsL = (dotXt2 - + B2L*eta*ToReal(BetaDriver))*ToReal(ShiftBCoeff); + + CCTK_REAL B3rhsL = (dotXt3 - + B3L*eta*ToReal(BetaDriver))*ToReal(ShiftBCoeff); /* Copy local copies back to grid functions */ alpharhs[index] = alpharhsL; diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_RHS2.cc b/ML_BSSN_MP/src/ML_BSSN_MP_RHS2.cc index 8c0f2df..ba1086e 100644 --- a/ML_BSSN_MP/src/ML_BSSN_MP_RHS2.cc +++ b/ML_BSSN_MP/src/ML_BSSN_MP_RHS2.cc @@ -51,10 +51,10 @@ static void ML_BSSN_MP_RHS2_Body(cGH const * restrict const cctkGH, int const di return; } - const char *groups[] = {"Coordinates::jacobian","Coordinates::jacobian2","ML_BSSN_MP::ML_curv","ML_BSSN_MP::ML_curvrhs","ML_BSSN_MP::ML_Gamma","ML_BSSN_MP::ML_lapse","ML_BSSN_MP::ML_log_confac","ML_BSSN_MP::ML_metric","ML_BSSN_MP::ML_shift","ML_BSSN_MP::ML_trace_curv"}; - GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_RHS2", 10, groups); + const char *groups[] = {"ML_BSSN_MP::ML_curv","ML_BSSN_MP::ML_curvrhs","ML_BSSN_MP::ML_Gamma","ML_BSSN_MP::ML_lapse","ML_BSSN_MP::ML_log_confac","ML_BSSN_MP::ML_metric","ML_BSSN_MP::ML_shift","ML_BSSN_MP::ML_trace_curv"}; + GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_RHS2", 8, groups); - GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_RHS2", 3, 3, 3); + GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_RHS2", 2, 2, 2); /* Include user-supplied include files */ @@ -101,6 +101,51 @@ static void ML_BSSN_MP_RHS2_Body(cGH const * restrict const cctkGH, int const di CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy)); CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz)); + /* 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_BSSN_MP_RHS2, @@ -121,39 +166,12 @@ static void ML_BSSN_MP_RHS2_Body(cGH const * restrict const cctkGH, int const di CCTK_REAL beta1L = beta1[index]; CCTK_REAL beta2L = beta2[index]; CCTK_REAL beta3L = beta3[index]; - CCTK_REAL dJ111L = dJ111[index]; - CCTK_REAL dJ112L = dJ112[index]; - CCTK_REAL dJ113L = dJ113[index]; - CCTK_REAL dJ122L = dJ122[index]; - CCTK_REAL dJ123L = dJ123[index]; - CCTK_REAL dJ133L = dJ133[index]; - CCTK_REAL dJ211L = dJ211[index]; - CCTK_REAL dJ212L = dJ212[index]; - CCTK_REAL dJ213L = dJ213[index]; - CCTK_REAL dJ222L = dJ222[index]; - CCTK_REAL dJ223L = dJ223[index]; - CCTK_REAL dJ233L = dJ233[index]; - CCTK_REAL dJ311L = dJ311[index]; - CCTK_REAL dJ312L = dJ312[index]; - CCTK_REAL dJ313L = dJ313[index]; - CCTK_REAL dJ322L = dJ322[index]; - CCTK_REAL dJ323L = dJ323[index]; - CCTK_REAL dJ333L = dJ333[index]; CCTK_REAL gt11L = gt11[index]; CCTK_REAL gt12L = gt12[index]; CCTK_REAL gt13L = gt13[index]; CCTK_REAL gt22L = gt22[index]; CCTK_REAL gt23L = gt23[index]; CCTK_REAL gt33L = gt33[index]; - CCTK_REAL J11L = J11[index]; - CCTK_REAL J12L = J12[index]; - CCTK_REAL J13L = J13[index]; - CCTK_REAL J21L = J21[index]; - CCTK_REAL J22L = J22[index]; - CCTK_REAL J23L = J23[index]; - CCTK_REAL J31L = J31[index]; - CCTK_REAL J32L = J32[index]; - CCTK_REAL J33L = J33[index]; CCTK_REAL phiL = phi[index]; CCTK_REAL trKL = trK[index]; CCTK_REAL Xt1L = Xt1[index]; @@ -181,6 +199,39 @@ static void ML_BSSN_MP_RHS2_Body(cGH const * restrict const cctkGH, int const di eTzzL = ToReal(0.0); } + CCTK_REAL 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 = dJ111[index]; + dJ112L = dJ112[index]; + dJ113L = dJ113[index]; + dJ122L = dJ122[index]; + dJ123L = dJ123[index]; + dJ133L = dJ133[index]; + dJ211L = dJ211[index]; + dJ212L = dJ212[index]; + dJ213L = dJ213[index]; + dJ222L = dJ222[index]; + dJ223L = dJ223[index]; + dJ233L = dJ233[index]; + dJ311L = dJ311[index]; + dJ312L = dJ312[index]; + dJ313L = dJ313[index]; + dJ322L = dJ322[index]; + dJ323L = dJ323[index]; + dJ333L = dJ333[index]; + J11L = J11[index]; + J12L = J12[index]; + J13L = J13[index]; + J21L = J21[index]; + J22L = J22[index]; + J23L = J23[index]; + J31L = J31[index]; + J32L = J32[index]; + J33L = J33[index]; + } + /* Include user supplied include files */ /* Precompute derivatives */ @@ -193,60 +244,6 @@ static void ML_BSSN_MP_RHS2_Body(cGH const * restrict const cctkGH, int const di CCTK_REAL const PDstandardNth12alpha = PDstandardNth12(&alpha[index]); CCTK_REAL const PDstandardNth13alpha = PDstandardNth13(&alpha[index]); CCTK_REAL const PDstandardNth23alpha = PDstandardNth23(&alpha[index]); - CCTK_REAL const PDdissipationNth1At11 = PDdissipationNth1(&At11[index]); - CCTK_REAL const PDdissipationNth2At11 = PDdissipationNth2(&At11[index]); - CCTK_REAL const PDdissipationNth3At11 = PDdissipationNth3(&At11[index]); - CCTK_REAL const PDupwindNthAnti1At11 = PDupwindNthAnti1(&At11[index]); - CCTK_REAL const PDupwindNthSymm1At11 = PDupwindNthSymm1(&At11[index]); - CCTK_REAL const PDupwindNthAnti2At11 = PDupwindNthAnti2(&At11[index]); - CCTK_REAL const PDupwindNthSymm2At11 = PDupwindNthSymm2(&At11[index]); - CCTK_REAL const PDupwindNthAnti3At11 = PDupwindNthAnti3(&At11[index]); - CCTK_REAL const PDupwindNthSymm3At11 = PDupwindNthSymm3(&At11[index]); - CCTK_REAL const PDdissipationNth1At12 = PDdissipationNth1(&At12[index]); - CCTK_REAL const PDdissipationNth2At12 = PDdissipationNth2(&At12[index]); - CCTK_REAL const PDdissipationNth3At12 = PDdissipationNth3(&At12[index]); - CCTK_REAL const PDupwindNthAnti1At12 = PDupwindNthAnti1(&At12[index]); - CCTK_REAL const PDupwindNthSymm1At12 = PDupwindNthSymm1(&At12[index]); - CCTK_REAL const PDupwindNthAnti2At12 = PDupwindNthAnti2(&At12[index]); - CCTK_REAL const PDupwindNthSymm2At12 = PDupwindNthSymm2(&At12[index]); - CCTK_REAL const PDupwindNthAnti3At12 = PDupwindNthAnti3(&At12[index]); - CCTK_REAL const PDupwindNthSymm3At12 = PDupwindNthSymm3(&At12[index]); - CCTK_REAL const PDdissipationNth1At13 = PDdissipationNth1(&At13[index]); - CCTK_REAL const PDdissipationNth2At13 = PDdissipationNth2(&At13[index]); - CCTK_REAL const PDdissipationNth3At13 = PDdissipationNth3(&At13[index]); - CCTK_REAL const PDupwindNthAnti1At13 = PDupwindNthAnti1(&At13[index]); - CCTK_REAL const PDupwindNthSymm1At13 = PDupwindNthSymm1(&At13[index]); - CCTK_REAL const PDupwindNthAnti2At13 = PDupwindNthAnti2(&At13[index]); - CCTK_REAL const PDupwindNthSymm2At13 = PDupwindNthSymm2(&At13[index]); - CCTK_REAL const PDupwindNthAnti3At13 = PDupwindNthAnti3(&At13[index]); - CCTK_REAL const PDupwindNthSymm3At13 = PDupwindNthSymm3(&At13[index]); - CCTK_REAL const PDdissipationNth1At22 = PDdissipationNth1(&At22[index]); - CCTK_REAL const PDdissipationNth2At22 = PDdissipationNth2(&At22[index]); - CCTK_REAL const PDdissipationNth3At22 = PDdissipationNth3(&At22[index]); - CCTK_REAL const PDupwindNthAnti1At22 = PDupwindNthAnti1(&At22[index]); - CCTK_REAL const PDupwindNthSymm1At22 = PDupwindNthSymm1(&At22[index]); - CCTK_REAL const PDupwindNthAnti2At22 = PDupwindNthAnti2(&At22[index]); - CCTK_REAL const PDupwindNthSymm2At22 = PDupwindNthSymm2(&At22[index]); - CCTK_REAL const PDupwindNthAnti3At22 = PDupwindNthAnti3(&At22[index]); - CCTK_REAL const PDupwindNthSymm3At22 = PDupwindNthSymm3(&At22[index]); - CCTK_REAL const PDdissipationNth1At23 = PDdissipationNth1(&At23[index]); - CCTK_REAL const PDdissipationNth2At23 = PDdissipationNth2(&At23[index]); - CCTK_REAL const PDdissipationNth3At23 = PDdissipationNth3(&At23[index]); - CCTK_REAL const PDupwindNthAnti1At23 = PDupwindNthAnti1(&At23[index]); - CCTK_REAL const PDupwindNthSymm1At23 = PDupwindNthSymm1(&At23[index]); - CCTK_REAL const PDupwindNthAnti2At23 = PDupwindNthAnti2(&At23[index]); - CCTK_REAL const PDupwindNthSymm2At23 = PDupwindNthSymm2(&At23[index]); - CCTK_REAL const PDupwindNthAnti3At23 = PDupwindNthAnti3(&At23[index]); - CCTK_REAL const PDupwindNthSymm3At23 = PDupwindNthSymm3(&At23[index]); - CCTK_REAL const PDdissipationNth1At33 = PDdissipationNth1(&At33[index]); - CCTK_REAL const PDdissipationNth2At33 = PDdissipationNth2(&At33[index]); - CCTK_REAL const PDdissipationNth3At33 = PDdissipationNth3(&At33[index]); - CCTK_REAL const PDupwindNthAnti1At33 = PDupwindNthAnti1(&At33[index]); - CCTK_REAL const PDupwindNthSymm1At33 = PDupwindNthSymm1(&At33[index]); - CCTK_REAL const PDupwindNthAnti2At33 = PDupwindNthAnti2(&At33[index]); - CCTK_REAL const PDupwindNthSymm2At33 = PDupwindNthSymm2(&At33[index]); - CCTK_REAL const PDupwindNthAnti3At33 = PDupwindNthAnti3(&At33[index]); - CCTK_REAL const PDupwindNthSymm3At33 = PDupwindNthSymm3(&At33[index]); CCTK_REAL const PDstandardNth1beta1 = PDstandardNth1(&beta1[index]); CCTK_REAL const PDstandardNth2beta1 = PDstandardNth2(&beta1[index]); CCTK_REAL const PDstandardNth3beta1 = PDstandardNth3(&beta1[index]); @@ -330,18 +327,948 @@ static void ML_BSSN_MP_RHS2_Body(cGH const * restrict const cctkGH, int const di CCTK_REAL const PDstandardNth3Xt3 = PDstandardNth3(&Xt3[index]); /* Calculate temporaries and grid functions */ + CCTK_REAL JacPDstandardNth11alpha; + CCTK_REAL JacPDstandardNth11gt11; + CCTK_REAL JacPDstandardNth11gt12; + CCTK_REAL JacPDstandardNth11gt13; + CCTK_REAL JacPDstandardNth11gt22; + CCTK_REAL JacPDstandardNth11gt23; + CCTK_REAL JacPDstandardNth11gt33; + CCTK_REAL JacPDstandardNth11phi; + CCTK_REAL JacPDstandardNth12alpha; + CCTK_REAL JacPDstandardNth12gt11; + CCTK_REAL JacPDstandardNth12gt12; + CCTK_REAL JacPDstandardNth12gt13; + CCTK_REAL JacPDstandardNth12gt22; + CCTK_REAL JacPDstandardNth12gt23; + CCTK_REAL JacPDstandardNth12gt33; + CCTK_REAL JacPDstandardNth12phi; + CCTK_REAL JacPDstandardNth13alpha; + CCTK_REAL JacPDstandardNth13gt11; + CCTK_REAL JacPDstandardNth13gt12; + CCTK_REAL JacPDstandardNth13gt13; + CCTK_REAL JacPDstandardNth13gt22; + CCTK_REAL JacPDstandardNth13gt23; + CCTK_REAL JacPDstandardNth13gt33; + CCTK_REAL JacPDstandardNth13phi; + CCTK_REAL JacPDstandardNth1alpha; + CCTK_REAL JacPDstandardNth1beta1; + CCTK_REAL JacPDstandardNth1beta2; + CCTK_REAL JacPDstandardNth1beta3; + CCTK_REAL JacPDstandardNth1gt11; + CCTK_REAL JacPDstandardNth1gt12; + CCTK_REAL JacPDstandardNth1gt13; + CCTK_REAL JacPDstandardNth1gt22; + CCTK_REAL JacPDstandardNth1gt23; + CCTK_REAL JacPDstandardNth1gt33; + CCTK_REAL JacPDstandardNth1phi; + CCTK_REAL JacPDstandardNth1Xt1; + CCTK_REAL JacPDstandardNth1Xt2; + CCTK_REAL JacPDstandardNth1Xt3; + CCTK_REAL JacPDstandardNth21gt11; + CCTK_REAL JacPDstandardNth21gt12; + CCTK_REAL JacPDstandardNth21gt13; + CCTK_REAL JacPDstandardNth21gt22; + CCTK_REAL JacPDstandardNth21gt23; + CCTK_REAL JacPDstandardNth21gt33; + CCTK_REAL JacPDstandardNth22alpha; + CCTK_REAL JacPDstandardNth22gt11; + CCTK_REAL JacPDstandardNth22gt12; + CCTK_REAL JacPDstandardNth22gt13; + CCTK_REAL JacPDstandardNth22gt22; + CCTK_REAL JacPDstandardNth22gt23; + CCTK_REAL JacPDstandardNth22gt33; + CCTK_REAL JacPDstandardNth22phi; + CCTK_REAL JacPDstandardNth23alpha; + CCTK_REAL JacPDstandardNth23gt11; + CCTK_REAL JacPDstandardNth23gt12; + CCTK_REAL JacPDstandardNth23gt13; + CCTK_REAL JacPDstandardNth23gt22; + CCTK_REAL JacPDstandardNth23gt23; + CCTK_REAL JacPDstandardNth23gt33; + CCTK_REAL JacPDstandardNth23phi; + CCTK_REAL JacPDstandardNth2alpha; + CCTK_REAL JacPDstandardNth2beta1; + CCTK_REAL JacPDstandardNth2beta2; + CCTK_REAL JacPDstandardNth2beta3; + CCTK_REAL JacPDstandardNth2gt11; + CCTK_REAL JacPDstandardNth2gt12; + CCTK_REAL JacPDstandardNth2gt13; + CCTK_REAL JacPDstandardNth2gt22; + CCTK_REAL JacPDstandardNth2gt23; + CCTK_REAL JacPDstandardNth2gt33; + CCTK_REAL JacPDstandardNth2phi; + CCTK_REAL JacPDstandardNth2Xt1; + CCTK_REAL JacPDstandardNth2Xt2; + CCTK_REAL JacPDstandardNth2Xt3; + CCTK_REAL JacPDstandardNth31gt11; + CCTK_REAL JacPDstandardNth31gt12; + CCTK_REAL JacPDstandardNth31gt13; + CCTK_REAL JacPDstandardNth31gt22; + CCTK_REAL JacPDstandardNth31gt23; + CCTK_REAL JacPDstandardNth31gt33; + CCTK_REAL JacPDstandardNth32gt11; + CCTK_REAL JacPDstandardNth32gt12; + CCTK_REAL JacPDstandardNth32gt13; + CCTK_REAL JacPDstandardNth32gt22; + CCTK_REAL JacPDstandardNth32gt23; + CCTK_REAL JacPDstandardNth32gt33; + CCTK_REAL JacPDstandardNth33alpha; + CCTK_REAL JacPDstandardNth33gt11; + CCTK_REAL JacPDstandardNth33gt12; + CCTK_REAL JacPDstandardNth33gt13; + CCTK_REAL JacPDstandardNth33gt22; + CCTK_REAL JacPDstandardNth33gt23; + CCTK_REAL JacPDstandardNth33gt33; + CCTK_REAL JacPDstandardNth33phi; + CCTK_REAL JacPDstandardNth3alpha; + CCTK_REAL JacPDstandardNth3beta1; + CCTK_REAL JacPDstandardNth3beta2; + CCTK_REAL JacPDstandardNth3beta3; + CCTK_REAL JacPDstandardNth3gt11; + CCTK_REAL JacPDstandardNth3gt12; + CCTK_REAL JacPDstandardNth3gt13; + CCTK_REAL JacPDstandardNth3gt22; + CCTK_REAL JacPDstandardNth3gt23; + CCTK_REAL JacPDstandardNth3gt33; + CCTK_REAL JacPDstandardNth3phi; + CCTK_REAL JacPDstandardNth3Xt1; + CCTK_REAL JacPDstandardNth3Xt2; + CCTK_REAL JacPDstandardNth3Xt3; + + if (use_jacobian) + { + JacPDstandardNth1alpha = J11L*PDstandardNth1alpha + + J21L*PDstandardNth2alpha + J31L*PDstandardNth3alpha; + + JacPDstandardNth1beta1 = J11L*PDstandardNth1beta1 + + J21L*PDstandardNth2beta1 + J31L*PDstandardNth3beta1; + + JacPDstandardNth1beta2 = J11L*PDstandardNth1beta2 + + J21L*PDstandardNth2beta2 + J31L*PDstandardNth3beta2; + + JacPDstandardNth1beta3 = J11L*PDstandardNth1beta3 + + J21L*PDstandardNth2beta3 + J31L*PDstandardNth3beta3; + + JacPDstandardNth1gt11 = J11L*PDstandardNth1gt11 + + J21L*PDstandardNth2gt11 + J31L*PDstandardNth3gt11; + + JacPDstandardNth1gt12 = J11L*PDstandardNth1gt12 + + J21L*PDstandardNth2gt12 + J31L*PDstandardNth3gt12; + + JacPDstandardNth1gt13 = J11L*PDstandardNth1gt13 + + J21L*PDstandardNth2gt13 + J31L*PDstandardNth3gt13; + + JacPDstandardNth1gt22 = J11L*PDstandardNth1gt22 + + J21L*PDstandardNth2gt22 + J31L*PDstandardNth3gt22; + + JacPDstandardNth1gt23 = J11L*PDstandardNth1gt23 + + J21L*PDstandardNth2gt23 + J31L*PDstandardNth3gt23; + + JacPDstandardNth1gt33 = J11L*PDstandardNth1gt33 + + J21L*PDstandardNth2gt33 + J31L*PDstandardNth3gt33; + + JacPDstandardNth1phi = J11L*PDstandardNth1phi + J21L*PDstandardNth2phi + + J31L*PDstandardNth3phi; + + JacPDstandardNth1Xt1 = J11L*PDstandardNth1Xt1 + J21L*PDstandardNth2Xt1 + + J31L*PDstandardNth3Xt1; + + JacPDstandardNth1Xt2 = J11L*PDstandardNth1Xt2 + J21L*PDstandardNth2Xt2 + + J31L*PDstandardNth3Xt2; + + JacPDstandardNth1Xt3 = J11L*PDstandardNth1Xt3 + J21L*PDstandardNth2Xt3 + + J31L*PDstandardNth3Xt3; + + JacPDstandardNth2alpha = J12L*PDstandardNth1alpha + + J22L*PDstandardNth2alpha + J32L*PDstandardNth3alpha; + + JacPDstandardNth2beta1 = J12L*PDstandardNth1beta1 + + J22L*PDstandardNth2beta1 + J32L*PDstandardNth3beta1; + + JacPDstandardNth2beta2 = J12L*PDstandardNth1beta2 + + J22L*PDstandardNth2beta2 + J32L*PDstandardNth3beta2; + + JacPDstandardNth2beta3 = J12L*PDstandardNth1beta3 + + J22L*PDstandardNth2beta3 + J32L*PDstandardNth3beta3; + + JacPDstandardNth2gt11 = J12L*PDstandardNth1gt11 + + J22L*PDstandardNth2gt11 + J32L*PDstandardNth3gt11; + + JacPDstandardNth2gt12 = J12L*PDstandardNth1gt12 + + J22L*PDstandardNth2gt12 + J32L*PDstandardNth3gt12; + + JacPDstandardNth2gt13 = J12L*PDstandardNth1gt13 + + J22L*PDstandardNth2gt13 + J32L*PDstandardNth3gt13; + + JacPDstandardNth2gt22 = J12L*PDstandardNth1gt22 + + J22L*PDstandardNth2gt22 + J32L*PDstandardNth3gt22; + + JacPDstandardNth2gt23 = J12L*PDstandardNth1gt23 + + J22L*PDstandardNth2gt23 + J32L*PDstandardNth3gt23; + + JacPDstandardNth2gt33 = J12L*PDstandardNth1gt33 + + J22L*PDstandardNth2gt33 + J32L*PDstandardNth3gt33; + + JacPDstandardNth2phi = J12L*PDstandardNth1phi + J22L*PDstandardNth2phi + + J32L*PDstandardNth3phi; + + JacPDstandardNth2Xt1 = J12L*PDstandardNth1Xt1 + J22L*PDstandardNth2Xt1 + + J32L*PDstandardNth3Xt1; + + JacPDstandardNth2Xt2 = J12L*PDstandardNth1Xt2 + J22L*PDstandardNth2Xt2 + + J32L*PDstandardNth3Xt2; + + JacPDstandardNth2Xt3 = J12L*PDstandardNth1Xt3 + J22L*PDstandardNth2Xt3 + + J32L*PDstandardNth3Xt3; + + JacPDstandardNth3alpha = J13L*PDstandardNth1alpha + + J23L*PDstandardNth2alpha + J33L*PDstandardNth3alpha; + + JacPDstandardNth3beta1 = J13L*PDstandardNth1beta1 + + J23L*PDstandardNth2beta1 + J33L*PDstandardNth3beta1; + + JacPDstandardNth3beta2 = J13L*PDstandardNth1beta2 + + J23L*PDstandardNth2beta2 + J33L*PDstandardNth3beta2; + + JacPDstandardNth3beta3 = J13L*PDstandardNth1beta3 + + J23L*PDstandardNth2beta3 + J33L*PDstandardNth3beta3; + + JacPDstandardNth3gt11 = J13L*PDstandardNth1gt11 + + J23L*PDstandardNth2gt11 + J33L*PDstandardNth3gt11; + + JacPDstandardNth3gt12 = J13L*PDstandardNth1gt12 + + J23L*PDstandardNth2gt12 + J33L*PDstandardNth3gt12; + + JacPDstandardNth3gt13 = J13L*PDstandardNth1gt13 + + J23L*PDstandardNth2gt13 + J33L*PDstandardNth3gt13; + + JacPDstandardNth3gt22 = J13L*PDstandardNth1gt22 + + J23L*PDstandardNth2gt22 + J33L*PDstandardNth3gt22; + + JacPDstandardNth3gt23 = J13L*PDstandardNth1gt23 + + J23L*PDstandardNth2gt23 + J33L*PDstandardNth3gt23; + + JacPDstandardNth3gt33 = J13L*PDstandardNth1gt33 + + J23L*PDstandardNth2gt33 + J33L*PDstandardNth3gt33; + + JacPDstandardNth3phi = J13L*PDstandardNth1phi + J23L*PDstandardNth2phi + + J33L*PDstandardNth3phi; + + JacPDstandardNth3Xt1 = J13L*PDstandardNth1Xt1 + J23L*PDstandardNth2Xt1 + + J33L*PDstandardNth3Xt1; + + JacPDstandardNth3Xt2 = J13L*PDstandardNth1Xt2 + J23L*PDstandardNth2Xt2 + + J33L*PDstandardNth3Xt2; + + JacPDstandardNth3Xt3 = J13L*PDstandardNth1Xt3 + J23L*PDstandardNth2Xt3 + + J33L*PDstandardNth3Xt3; + + JacPDstandardNth11alpha = dJ111L*PDstandardNth1alpha + + 2*(J11L*(J21L*PDstandardNth12alpha + J31L*PDstandardNth13alpha) + + J21L*J31L*PDstandardNth23alpha) + dJ211L*PDstandardNth2alpha + + dJ311L*PDstandardNth3alpha + PDstandardNth11alpha*SQR(J11L) + + PDstandardNth22alpha*SQR(J21L) + PDstandardNth33alpha*SQR(J31L); + + JacPDstandardNth11gt11 = dJ111L*PDstandardNth1gt11 + + 2*(J11L*(J21L*PDstandardNth12gt11 + J31L*PDstandardNth13gt11) + + J21L*J31L*PDstandardNth23gt11) + dJ211L*PDstandardNth2gt11 + + dJ311L*PDstandardNth3gt11 + PDstandardNth11gt11*SQR(J11L) + + PDstandardNth22gt11*SQR(J21L) + PDstandardNth33gt11*SQR(J31L); + + JacPDstandardNth11gt12 = dJ111L*PDstandardNth1gt12 + + 2*(J11L*(J21L*PDstandardNth12gt12 + J31L*PDstandardNth13gt12) + + J21L*J31L*PDstandardNth23gt12) + dJ211L*PDstandardNth2gt12 + + dJ311L*PDstandardNth3gt12 + PDstandardNth11gt12*SQR(J11L) + + PDstandardNth22gt12*SQR(J21L) + PDstandardNth33gt12*SQR(J31L); + + JacPDstandardNth11gt13 = dJ111L*PDstandardNth1gt13 + + 2*(J11L*(J21L*PDstandardNth12gt13 + J31L*PDstandardNth13gt13) + + J21L*J31L*PDstandardNth23gt13) + dJ211L*PDstandardNth2gt13 + + dJ311L*PDstandardNth3gt13 + PDstandardNth11gt13*SQR(J11L) + + PDstandardNth22gt13*SQR(J21L) + PDstandardNth33gt13*SQR(J31L); + + JacPDstandardNth11gt22 = dJ111L*PDstandardNth1gt22 + + 2*(J11L*(J21L*PDstandardNth12gt22 + J31L*PDstandardNth13gt22) + + J21L*J31L*PDstandardNth23gt22) + dJ211L*PDstandardNth2gt22 + + dJ311L*PDstandardNth3gt22 + PDstandardNth11gt22*SQR(J11L) + + PDstandardNth22gt22*SQR(J21L) + PDstandardNth33gt22*SQR(J31L); + + JacPDstandardNth11gt23 = dJ111L*PDstandardNth1gt23 + + 2*(J11L*(J21L*PDstandardNth12gt23 + J31L*PDstandardNth13gt23) + + J21L*J31L*PDstandardNth23gt23) + dJ211L*PDstandardNth2gt23 + + dJ311L*PDstandardNth3gt23 + PDstandardNth11gt23*SQR(J11L) + + PDstandardNth22gt23*SQR(J21L) + PDstandardNth33gt23*SQR(J31L); + + JacPDstandardNth11gt33 = dJ111L*PDstandardNth1gt33 + + 2*(J11L*(J21L*PDstandardNth12gt33 + J31L*PDstandardNth13gt33) + + J21L*J31L*PDstandardNth23gt33) + dJ211L*PDstandardNth2gt33 + + dJ311L*PDstandardNth3gt33 + PDstandardNth11gt33*SQR(J11L) + + PDstandardNth22gt33*SQR(J21L) + PDstandardNth33gt33*SQR(J31L); + + JacPDstandardNth11phi = dJ111L*PDstandardNth1phi + + 2*(J11L*(J21L*PDstandardNth12phi + J31L*PDstandardNth13phi) + + J21L*J31L*PDstandardNth23phi) + dJ211L*PDstandardNth2phi + + dJ311L*PDstandardNth3phi + PDstandardNth11phi*SQR(J11L) + + PDstandardNth22phi*SQR(J21L) + PDstandardNth33phi*SQR(J31L); + + JacPDstandardNth22alpha = dJ122L*PDstandardNth1alpha + + 2*(J12L*(J22L*PDstandardNth12alpha + J32L*PDstandardNth13alpha) + + J22L*J32L*PDstandardNth23alpha) + dJ222L*PDstandardNth2alpha + + dJ322L*PDstandardNth3alpha + PDstandardNth11alpha*SQR(J12L) + + PDstandardNth22alpha*SQR(J22L) + PDstandardNth33alpha*SQR(J32L); + + JacPDstandardNth22gt11 = dJ122L*PDstandardNth1gt11 + + 2*(J12L*(J22L*PDstandardNth12gt11 + J32L*PDstandardNth13gt11) + + J22L*J32L*PDstandardNth23gt11) + dJ222L*PDstandardNth2gt11 + + dJ322L*PDstandardNth3gt11 + PDstandardNth11gt11*SQR(J12L) + + PDstandardNth22gt11*SQR(J22L) + PDstandardNth33gt11*SQR(J32L); + + JacPDstandardNth22gt12 = dJ122L*PDstandardNth1gt12 + + 2*(J12L*(J22L*PDstandardNth12gt12 + J32L*PDstandardNth13gt12) + + J22L*J32L*PDstandardNth23gt12) + dJ222L*PDstandardNth2gt12 + + dJ322L*PDstandardNth3gt12 + PDstandardNth11gt12*SQR(J12L) + + PDstandardNth22gt12*SQR(J22L) + PDstandardNth33gt12*SQR(J32L); + + JacPDstandardNth22gt13 = dJ122L*PDstandardNth1gt13 + + 2*(J12L*(J22L*PDstandardNth12gt13 + J32L*PDstandardNth13gt13) + + J22L*J32L*PDstandardNth23gt13) + dJ222L*PDstandardNth2gt13 + + dJ322L*PDstandardNth3gt13 + PDstandardNth11gt13*SQR(J12L) + + PDstandardNth22gt13*SQR(J22L) + PDstandardNth33gt13*SQR(J32L); + + JacPDstandardNth22gt22 = dJ122L*PDstandardNth1gt22 + + 2*(J12L*(J22L*PDstandardNth12gt22 + J32L*PDstandardNth13gt22) + + J22L*J32L*PDstandardNth23gt22) + dJ222L*PDstandardNth2gt22 + + dJ322L*PDstandardNth3gt22 + PDstandardNth11gt22*SQR(J12L) + + PDstandardNth22gt22*SQR(J22L) + PDstandardNth33gt22*SQR(J32L); + + JacPDstandardNth22gt23 = dJ122L*PDstandardNth1gt23 + + 2*(J12L*(J22L*PDstandardNth12gt23 + J32L*PDstandardNth13gt23) + + J22L*J32L*PDstandardNth23gt23) + dJ222L*PDstandardNth2gt23 + + dJ322L*PDstandardNth3gt23 + PDstandardNth11gt23*SQR(J12L) + + PDstandardNth22gt23*SQR(J22L) + PDstandardNth33gt23*SQR(J32L); + + JacPDstandardNth22gt33 = dJ122L*PDstandardNth1gt33 + + 2*(J12L*(J22L*PDstandardNth12gt33 + J32L*PDstandardNth13gt33) + + J22L*J32L*PDstandardNth23gt33) + dJ222L*PDstandardNth2gt33 + + dJ322L*PDstandardNth3gt33 + PDstandardNth11gt33*SQR(J12L) + + PDstandardNth22gt33*SQR(J22L) + PDstandardNth33gt33*SQR(J32L); + + JacPDstandardNth22phi = dJ122L*PDstandardNth1phi + + 2*(J12L*(J22L*PDstandardNth12phi + J32L*PDstandardNth13phi) + + J22L*J32L*PDstandardNth23phi) + dJ222L*PDstandardNth2phi + + dJ322L*PDstandardNth3phi + PDstandardNth11phi*SQR(J12L) + + PDstandardNth22phi*SQR(J22L) + PDstandardNth33phi*SQR(J32L); + + JacPDstandardNth33alpha = dJ133L*PDstandardNth1alpha + + 2*(J13L*(J23L*PDstandardNth12alpha + J33L*PDstandardNth13alpha) + + J23L*J33L*PDstandardNth23alpha) + dJ233L*PDstandardNth2alpha + + dJ333L*PDstandardNth3alpha + PDstandardNth11alpha*SQR(J13L) + + PDstandardNth22alpha*SQR(J23L) + PDstandardNth33alpha*SQR(J33L); + + JacPDstandardNth33gt11 = dJ133L*PDstandardNth1gt11 + + 2*(J13L*(J23L*PDstandardNth12gt11 + J33L*PDstandardNth13gt11) + + J23L*J33L*PDstandardNth23gt11) + dJ233L*PDstandardNth2gt11 + + dJ333L*PDstandardNth3gt11 + PDstandardNth11gt11*SQR(J13L) + + PDstandardNth22gt11*SQR(J23L) + PDstandardNth33gt11*SQR(J33L); + + JacPDstandardNth33gt12 = dJ133L*PDstandardNth1gt12 + + 2*(J13L*(J23L*PDstandardNth12gt12 + J33L*PDstandardNth13gt12) + + J23L*J33L*PDstandardNth23gt12) + dJ233L*PDstandardNth2gt12 + + dJ333L*PDstandardNth3gt12 + PDstandardNth11gt12*SQR(J13L) + + PDstandardNth22gt12*SQR(J23L) + PDstandardNth33gt12*SQR(J33L); + + JacPDstandardNth33gt13 = dJ133L*PDstandardNth1gt13 + + 2*(J13L*(J23L*PDstandardNth12gt13 + J33L*PDstandardNth13gt13) + + J23L*J33L*PDstandardNth23gt13) + dJ233L*PDstandardNth2gt13 + + dJ333L*PDstandardNth3gt13 + PDstandardNth11gt13*SQR(J13L) + + PDstandardNth22gt13*SQR(J23L) + PDstandardNth33gt13*SQR(J33L); + + JacPDstandardNth33gt22 = dJ133L*PDstandardNth1gt22 + + 2*(J13L*(J23L*PDstandardNth12gt22 + J33L*PDstandardNth13gt22) + + J23L*J33L*PDstandardNth23gt22) + dJ233L*PDstandardNth2gt22 + + dJ333L*PDstandardNth3gt22 + PDstandardNth11gt22*SQR(J13L) + + PDstandardNth22gt22*SQR(J23L) + PDstandardNth33gt22*SQR(J33L); + + JacPDstandardNth33gt23 = dJ133L*PDstandardNth1gt23 + + 2*(J13L*(J23L*PDstandardNth12gt23 + J33L*PDstandardNth13gt23) + + J23L*J33L*PDstandardNth23gt23) + dJ233L*PDstandardNth2gt23 + + dJ333L*PDstandardNth3gt23 + PDstandardNth11gt23*SQR(J13L) + + PDstandardNth22gt23*SQR(J23L) + PDstandardNth33gt23*SQR(J33L); + + JacPDstandardNth33gt33 = dJ133L*PDstandardNth1gt33 + + 2*(J13L*(J23L*PDstandardNth12gt33 + J33L*PDstandardNth13gt33) + + J23L*J33L*PDstandardNth23gt33) + dJ233L*PDstandardNth2gt33 + + dJ333L*PDstandardNth3gt33 + PDstandardNth11gt33*SQR(J13L) + + PDstandardNth22gt33*SQR(J23L) + PDstandardNth33gt33*SQR(J33L); + + JacPDstandardNth33phi = dJ133L*PDstandardNth1phi + + 2*(J13L*(J23L*PDstandardNth12phi + J33L*PDstandardNth13phi) + + J23L*J33L*PDstandardNth23phi) + dJ233L*PDstandardNth2phi + + dJ333L*PDstandardNth3phi + PDstandardNth11phi*SQR(J13L) + + PDstandardNth22phi*SQR(J23L) + PDstandardNth33phi*SQR(J33L); + + JacPDstandardNth12alpha = J12L*(J11L*PDstandardNth11alpha + + J21L*PDstandardNth12alpha + J31L*PDstandardNth13alpha) + + J11L*(J22L*PDstandardNth12alpha + J32L*PDstandardNth13alpha) + + dJ112L*PDstandardNth1alpha + J22L*(J21L*PDstandardNth22alpha + + J31L*PDstandardNth23alpha) + dJ212L*PDstandardNth2alpha + + J32L*(J21L*PDstandardNth23alpha + J31L*PDstandardNth33alpha) + + dJ312L*PDstandardNth3alpha; + + JacPDstandardNth12gt11 = J12L*(J11L*PDstandardNth11gt11 + + J21L*PDstandardNth12gt11 + J31L*PDstandardNth13gt11) + + J11L*(J22L*PDstandardNth12gt11 + J32L*PDstandardNth13gt11) + + dJ112L*PDstandardNth1gt11 + J22L*(J21L*PDstandardNth22gt11 + + J31L*PDstandardNth23gt11) + dJ212L*PDstandardNth2gt11 + + J32L*(J21L*PDstandardNth23gt11 + J31L*PDstandardNth33gt11) + + dJ312L*PDstandardNth3gt11; + + JacPDstandardNth12gt12 = J12L*(J11L*PDstandardNth11gt12 + + J21L*PDstandardNth12gt12 + J31L*PDstandardNth13gt12) + + J11L*(J22L*PDstandardNth12gt12 + J32L*PDstandardNth13gt12) + + dJ112L*PDstandardNth1gt12 + J22L*(J21L*PDstandardNth22gt12 + + J31L*PDstandardNth23gt12) + dJ212L*PDstandardNth2gt12 + + J32L*(J21L*PDstandardNth23gt12 + J31L*PDstandardNth33gt12) + + dJ312L*PDstandardNth3gt12; + + JacPDstandardNth12gt13 = J12L*(J11L*PDstandardNth11gt13 + + J21L*PDstandardNth12gt13 + J31L*PDstandardNth13gt13) + + J11L*(J22L*PDstandardNth12gt13 + J32L*PDstandardNth13gt13) + + dJ112L*PDstandardNth1gt13 + J22L*(J21L*PDstandardNth22gt13 + + J31L*PDstandardNth23gt13) + dJ212L*PDstandardNth2gt13 + + J32L*(J21L*PDstandardNth23gt13 + J31L*PDstandardNth33gt13) + + dJ312L*PDstandardNth3gt13; + + JacPDstandardNth12gt22 = J12L*(J11L*PDstandardNth11gt22 + + J21L*PDstandardNth12gt22 + J31L*PDstandardNth13gt22) + + J11L*(J22L*PDstandardNth12gt22 + J32L*PDstandardNth13gt22) + + dJ112L*PDstandardNth1gt22 + J22L*(J21L*PDstandardNth22gt22 + + J31L*PDstandardNth23gt22) + dJ212L*PDstandardNth2gt22 + + J32L*(J21L*PDstandardNth23gt22 + J31L*PDstandardNth33gt22) + + dJ312L*PDstandardNth3gt22; + + JacPDstandardNth12gt23 = J12L*(J11L*PDstandardNth11gt23 + + J21L*PDstandardNth12gt23 + J31L*PDstandardNth13gt23) + + J11L*(J22L*PDstandardNth12gt23 + J32L*PDstandardNth13gt23) + + dJ112L*PDstandardNth1gt23 + J22L*(J21L*PDstandardNth22gt23 + + J31L*PDstandardNth23gt23) + dJ212L*PDstandardNth2gt23 + + J32L*(J21L*PDstandardNth23gt23 + J31L*PDstandardNth33gt23) + + dJ312L*PDstandardNth3gt23; + + JacPDstandardNth12gt33 = J12L*(J11L*PDstandardNth11gt33 + + J21L*PDstandardNth12gt33 + J31L*PDstandardNth13gt33) + + J11L*(J22L*PDstandardNth12gt33 + J32L*PDstandardNth13gt33) + + dJ112L*PDstandardNth1gt33 + J22L*(J21L*PDstandardNth22gt33 + + J31L*PDstandardNth23gt33) + dJ212L*PDstandardNth2gt33 + + J32L*(J21L*PDstandardNth23gt33 + J31L*PDstandardNth33gt33) + + dJ312L*PDstandardNth3gt33; + + JacPDstandardNth12phi = J12L*(J11L*PDstandardNth11phi + + J21L*PDstandardNth12phi + J31L*PDstandardNth13phi) + + J11L*(J22L*PDstandardNth12phi + J32L*PDstandardNth13phi) + + dJ112L*PDstandardNth1phi + J22L*(J21L*PDstandardNth22phi + + J31L*PDstandardNth23phi) + dJ212L*PDstandardNth2phi + + J32L*(J21L*PDstandardNth23phi + J31L*PDstandardNth33phi) + + dJ312L*PDstandardNth3phi; + + JacPDstandardNth13alpha = J13L*(J11L*PDstandardNth11alpha + + J21L*PDstandardNth12alpha + J31L*PDstandardNth13alpha) + + J11L*(J23L*PDstandardNth12alpha + J33L*PDstandardNth13alpha) + + dJ113L*PDstandardNth1alpha + J23L*(J21L*PDstandardNth22alpha + + J31L*PDstandardNth23alpha) + dJ213L*PDstandardNth2alpha + + J33L*(J21L*PDstandardNth23alpha + J31L*PDstandardNth33alpha) + + dJ313L*PDstandardNth3alpha; + + JacPDstandardNth13gt11 = J13L*(J11L*PDstandardNth11gt11 + + J21L*PDstandardNth12gt11 + J31L*PDstandardNth13gt11) + + J11L*(J23L*PDstandardNth12gt11 + J33L*PDstandardNth13gt11) + + dJ113L*PDstandardNth1gt11 + J23L*(J21L*PDstandardNth22gt11 + + J31L*PDstandardNth23gt11) + dJ213L*PDstandardNth2gt11 + + J33L*(J21L*PDstandardNth23gt11 + J31L*PDstandardNth33gt11) + + dJ313L*PDstandardNth3gt11; + + JacPDstandardNth13gt12 = J13L*(J11L*PDstandardNth11gt12 + + J21L*PDstandardNth12gt12 + J31L*PDstandardNth13gt12) + + J11L*(J23L*PDstandardNth12gt12 + J33L*PDstandardNth13gt12) + + dJ113L*PDstandardNth1gt12 + J23L*(J21L*PDstandardNth22gt12 + + J31L*PDstandardNth23gt12) + dJ213L*PDstandardNth2gt12 + + J33L*(J21L*PDstandardNth23gt12 + J31L*PDstandardNth33gt12) + + dJ313L*PDstandardNth3gt12; + + JacPDstandardNth13gt13 = J13L*(J11L*PDstandardNth11gt13 + + J21L*PDstandardNth12gt13 + J31L*PDstandardNth13gt13) + + J11L*(J23L*PDstandardNth12gt13 + J33L*PDstandardNth13gt13) + + dJ113L*PDstandardNth1gt13 + J23L*(J21L*PDstandardNth22gt13 + + J31L*PDstandardNth23gt13) + dJ213L*PDstandardNth2gt13 + + J33L*(J21L*PDstandardNth23gt13 + J31L*PDstandardNth33gt13) + + dJ313L*PDstandardNth3gt13; + + JacPDstandardNth13gt22 = J13L*(J11L*PDstandardNth11gt22 + + J21L*PDstandardNth12gt22 + J31L*PDstandardNth13gt22) + + J11L*(J23L*PDstandardNth12gt22 + J33L*PDstandardNth13gt22) + + dJ113L*PDstandardNth1gt22 + J23L*(J21L*PDstandardNth22gt22 + + J31L*PDstandardNth23gt22) + dJ213L*PDstandardNth2gt22 + + J33L*(J21L*PDstandardNth23gt22 + J31L*PDstandardNth33gt22) + + dJ313L*PDstandardNth3gt22; + + JacPDstandardNth13gt23 = J13L*(J11L*PDstandardNth11gt23 + + J21L*PDstandardNth12gt23 + J31L*PDstandardNth13gt23) + + J11L*(J23L*PDstandardNth12gt23 + J33L*PDstandardNth13gt23) + + dJ113L*PDstandardNth1gt23 + J23L*(J21L*PDstandardNth22gt23 + + J31L*PDstandardNth23gt23) + dJ213L*PDstandardNth2gt23 + + J33L*(J21L*PDstandardNth23gt23 + J31L*PDstandardNth33gt23) + + dJ313L*PDstandardNth3gt23; + + JacPDstandardNth13gt33 = J13L*(J11L*PDstandardNth11gt33 + + J21L*PDstandardNth12gt33 + J31L*PDstandardNth13gt33) + + J11L*(J23L*PDstandardNth12gt33 + J33L*PDstandardNth13gt33) + + dJ113L*PDstandardNth1gt33 + J23L*(J21L*PDstandardNth22gt33 + + J31L*PDstandardNth23gt33) + dJ213L*PDstandardNth2gt33 + + J33L*(J21L*PDstandardNth23gt33 + J31L*PDstandardNth33gt33) + + dJ313L*PDstandardNth3gt33; + + JacPDstandardNth13phi = J13L*(J11L*PDstandardNth11phi + + J21L*PDstandardNth12phi + J31L*PDstandardNth13phi) + + J11L*(J23L*PDstandardNth12phi + J33L*PDstandardNth13phi) + + dJ113L*PDstandardNth1phi + J23L*(J21L*PDstandardNth22phi + + J31L*PDstandardNth23phi) + dJ213L*PDstandardNth2phi + + J33L*(J21L*PDstandardNth23phi + J31L*PDstandardNth33phi) + + dJ313L*PDstandardNth3phi; + + JacPDstandardNth21gt11 = J12L*(J11L*PDstandardNth11gt11 + + J21L*PDstandardNth12gt11 + J31L*PDstandardNth13gt11) + + J11L*(J22L*PDstandardNth12gt11 + J32L*PDstandardNth13gt11) + + dJ112L*PDstandardNth1gt11 + J22L*(J21L*PDstandardNth22gt11 + + J31L*PDstandardNth23gt11) + dJ212L*PDstandardNth2gt11 + + J32L*(J21L*PDstandardNth23gt11 + J31L*PDstandardNth33gt11) + + dJ312L*PDstandardNth3gt11; + + JacPDstandardNth21gt12 = J12L*(J11L*PDstandardNth11gt12 + + J21L*PDstandardNth12gt12 + J31L*PDstandardNth13gt12) + + J11L*(J22L*PDstandardNth12gt12 + J32L*PDstandardNth13gt12) + + dJ112L*PDstandardNth1gt12 + J22L*(J21L*PDstandardNth22gt12 + + J31L*PDstandardNth23gt12) + dJ212L*PDstandardNth2gt12 + + J32L*(J21L*PDstandardNth23gt12 + J31L*PDstandardNth33gt12) + + dJ312L*PDstandardNth3gt12; + + JacPDstandardNth21gt13 = J12L*(J11L*PDstandardNth11gt13 + + J21L*PDstandardNth12gt13 + J31L*PDstandardNth13gt13) + + J11L*(J22L*PDstandardNth12gt13 + J32L*PDstandardNth13gt13) + + dJ112L*PDstandardNth1gt13 + J22L*(J21L*PDstandardNth22gt13 + + J31L*PDstandardNth23gt13) + dJ212L*PDstandardNth2gt13 + + J32L*(J21L*PDstandardNth23gt13 + J31L*PDstandardNth33gt13) + + dJ312L*PDstandardNth3gt13; + + JacPDstandardNth21gt22 = J12L*(J11L*PDstandardNth11gt22 + + J21L*PDstandardNth12gt22 + J31L*PDstandardNth13gt22) + + J11L*(J22L*PDstandardNth12gt22 + J32L*PDstandardNth13gt22) + + dJ112L*PDstandardNth1gt22 + J22L*(J21L*PDstandardNth22gt22 + + J31L*PDstandardNth23gt22) + dJ212L*PDstandardNth2gt22 + + J32L*(J21L*PDstandardNth23gt22 + J31L*PDstandardNth33gt22) + + dJ312L*PDstandardNth3gt22; + + JacPDstandardNth21gt23 = J12L*(J11L*PDstandardNth11gt23 + + J21L*PDstandardNth12gt23 + J31L*PDstandardNth13gt23) + + J11L*(J22L*PDstandardNth12gt23 + J32L*PDstandardNth13gt23) + + dJ112L*PDstandardNth1gt23 + J22L*(J21L*PDstandardNth22gt23 + + J31L*PDstandardNth23gt23) + dJ212L*PDstandardNth2gt23 + + J32L*(J21L*PDstandardNth23gt23 + J31L*PDstandardNth33gt23) + + dJ312L*PDstandardNth3gt23; + + JacPDstandardNth21gt33 = J12L*(J11L*PDstandardNth11gt33 + + J21L*PDstandardNth12gt33 + J31L*PDstandardNth13gt33) + + J11L*(J22L*PDstandardNth12gt33 + J32L*PDstandardNth13gt33) + + dJ112L*PDstandardNth1gt33 + J22L*(J21L*PDstandardNth22gt33 + + J31L*PDstandardNth23gt33) + dJ212L*PDstandardNth2gt33 + + J32L*(J21L*PDstandardNth23gt33 + J31L*PDstandardNth33gt33) + + dJ312L*PDstandardNth3gt33; + + JacPDstandardNth23alpha = J13L*(J12L*PDstandardNth11alpha + + J22L*PDstandardNth12alpha + J32L*PDstandardNth13alpha) + + J12L*(J23L*PDstandardNth12alpha + J33L*PDstandardNth13alpha) + + dJ123L*PDstandardNth1alpha + J23L*(J22L*PDstandardNth22alpha + + J32L*PDstandardNth23alpha) + dJ223L*PDstandardNth2alpha + + J33L*(J22L*PDstandardNth23alpha + J32L*PDstandardNth33alpha) + + dJ323L*PDstandardNth3alpha; + + JacPDstandardNth23gt11 = J13L*(J12L*PDstandardNth11gt11 + + J22L*PDstandardNth12gt11 + J32L*PDstandardNth13gt11) + + J12L*(J23L*PDstandardNth12gt11 + J33L*PDstandardNth13gt11) + + dJ123L*PDstandardNth1gt11 + J23L*(J22L*PDstandardNth22gt11 + + J32L*PDstandardNth23gt11) + dJ223L*PDstandardNth2gt11 + + J33L*(J22L*PDstandardNth23gt11 + J32L*PDstandardNth33gt11) + + dJ323L*PDstandardNth3gt11; + + JacPDstandardNth23gt12 = J13L*(J12L*PDstandardNth11gt12 + + J22L*PDstandardNth12gt12 + J32L*PDstandardNth13gt12) + + J12L*(J23L*PDstandardNth12gt12 + J33L*PDstandardNth13gt12) + + dJ123L*PDstandardNth1gt12 + J23L*(J22L*PDstandardNth22gt12 + + J32L*PDstandardNth23gt12) + dJ223L*PDstandardNth2gt12 + + J33L*(J22L*PDstandardNth23gt12 + J32L*PDstandardNth33gt12) + + dJ323L*PDstandardNth3gt12; + + JacPDstandardNth23gt13 = J13L*(J12L*PDstandardNth11gt13 + + J22L*PDstandardNth12gt13 + J32L*PDstandardNth13gt13) + + J12L*(J23L*PDstandardNth12gt13 + J33L*PDstandardNth13gt13) + + dJ123L*PDstandardNth1gt13 + J23L*(J22L*PDstandardNth22gt13 + + J32L*PDstandardNth23gt13) + dJ223L*PDstandardNth2gt13 + + J33L*(J22L*PDstandardNth23gt13 + J32L*PDstandardNth33gt13) + + dJ323L*PDstandardNth3gt13; + + JacPDstandardNth23gt22 = J13L*(J12L*PDstandardNth11gt22 + + J22L*PDstandardNth12gt22 + J32L*PDstandardNth13gt22) + + J12L*(J23L*PDstandardNth12gt22 + J33L*PDstandardNth13gt22) + + dJ123L*PDstandardNth1gt22 + J23L*(J22L*PDstandardNth22gt22 + + J32L*PDstandardNth23gt22) + dJ223L*PDstandardNth2gt22 + + J33L*(J22L*PDstandardNth23gt22 + J32L*PDstandardNth33gt22) + + dJ323L*PDstandardNth3gt22; + + JacPDstandardNth23gt23 = J13L*(J12L*PDstandardNth11gt23 + + J22L*PDstandardNth12gt23 + J32L*PDstandardNth13gt23) + + J12L*(J23L*PDstandardNth12gt23 + J33L*PDstandardNth13gt23) + + dJ123L*PDstandardNth1gt23 + J23L*(J22L*PDstandardNth22gt23 + + J32L*PDstandardNth23gt23) + dJ223L*PDstandardNth2gt23 + + J33L*(J22L*PDstandardNth23gt23 + J32L*PDstandardNth33gt23) + + dJ323L*PDstandardNth3gt23; + + JacPDstandardNth23gt33 = J13L*(J12L*PDstandardNth11gt33 + + J22L*PDstandardNth12gt33 + J32L*PDstandardNth13gt33) + + J12L*(J23L*PDstandardNth12gt33 + J33L*PDstandardNth13gt33) + + dJ123L*PDstandardNth1gt33 + J23L*(J22L*PDstandardNth22gt33 + + J32L*PDstandardNth23gt33) + dJ223L*PDstandardNth2gt33 + + J33L*(J22L*PDstandardNth23gt33 + J32L*PDstandardNth33gt33) + + dJ323L*PDstandardNth3gt33; + + JacPDstandardNth23phi = J13L*(J12L*PDstandardNth11phi + + J22L*PDstandardNth12phi + J32L*PDstandardNth13phi) + + J12L*(J23L*PDstandardNth12phi + J33L*PDstandardNth13phi) + + dJ123L*PDstandardNth1phi + J23L*(J22L*PDstandardNth22phi + + J32L*PDstandardNth23phi) + dJ223L*PDstandardNth2phi + + J33L*(J22L*PDstandardNth23phi + J32L*PDstandardNth33phi) + + dJ323L*PDstandardNth3phi; + + JacPDstandardNth31gt11 = J13L*(J11L*PDstandardNth11gt11 + + J21L*PDstandardNth12gt11 + J31L*PDstandardNth13gt11) + + J11L*(J23L*PDstandardNth12gt11 + J33L*PDstandardNth13gt11) + + dJ113L*PDstandardNth1gt11 + J23L*(J21L*PDstandardNth22gt11 + + J31L*PDstandardNth23gt11) + dJ213L*PDstandardNth2gt11 + + J33L*(J21L*PDstandardNth23gt11 + J31L*PDstandardNth33gt11) + + dJ313L*PDstandardNth3gt11; + + JacPDstandardNth31gt12 = J13L*(J11L*PDstandardNth11gt12 + + J21L*PDstandardNth12gt12 + J31L*PDstandardNth13gt12) + + J11L*(J23L*PDstandardNth12gt12 + J33L*PDstandardNth13gt12) + + dJ113L*PDstandardNth1gt12 + J23L*(J21L*PDstandardNth22gt12 + + J31L*PDstandardNth23gt12) + dJ213L*PDstandardNth2gt12 + + J33L*(J21L*PDstandardNth23gt12 + J31L*PDstandardNth33gt12) + + dJ313L*PDstandardNth3gt12; + + JacPDstandardNth31gt13 = J13L*(J11L*PDstandardNth11gt13 + + J21L*PDstandardNth12gt13 + J31L*PDstandardNth13gt13) + + J11L*(J23L*PDstandardNth12gt13 + J33L*PDstandardNth13gt13) + + dJ113L*PDstandardNth1gt13 + J23L*(J21L*PDstandardNth22gt13 + + J31L*PDstandardNth23gt13) + dJ213L*PDstandardNth2gt13 + + J33L*(J21L*PDstandardNth23gt13 + J31L*PDstandardNth33gt13) + + dJ313L*PDstandardNth3gt13; + + JacPDstandardNth31gt22 = J13L*(J11L*PDstandardNth11gt22 + + J21L*PDstandardNth12gt22 + J31L*PDstandardNth13gt22) + + J11L*(J23L*PDstandardNth12gt22 + J33L*PDstandardNth13gt22) + + dJ113L*PDstandardNth1gt22 + J23L*(J21L*PDstandardNth22gt22 + + J31L*PDstandardNth23gt22) + dJ213L*PDstandardNth2gt22 + + J33L*(J21L*PDstandardNth23gt22 + J31L*PDstandardNth33gt22) + + dJ313L*PDstandardNth3gt22; + + JacPDstandardNth31gt23 = J13L*(J11L*PDstandardNth11gt23 + + J21L*PDstandardNth12gt23 + J31L*PDstandardNth13gt23) + + J11L*(J23L*PDstandardNth12gt23 + J33L*PDstandardNth13gt23) + + dJ113L*PDstandardNth1gt23 + J23L*(J21L*PDstandardNth22gt23 + + J31L*PDstandardNth23gt23) + dJ213L*PDstandardNth2gt23 + + J33L*(J21L*PDstandardNth23gt23 + J31L*PDstandardNth33gt23) + + dJ313L*PDstandardNth3gt23; + + JacPDstandardNth31gt33 = J13L*(J11L*PDstandardNth11gt33 + + J21L*PDstandardNth12gt33 + J31L*PDstandardNth13gt33) + + J11L*(J23L*PDstandardNth12gt33 + J33L*PDstandardNth13gt33) + + dJ113L*PDstandardNth1gt33 + J23L*(J21L*PDstandardNth22gt33 + + J31L*PDstandardNth23gt33) + dJ213L*PDstandardNth2gt33 + + J33L*(J21L*PDstandardNth23gt33 + J31L*PDstandardNth33gt33) + + dJ313L*PDstandardNth3gt33; + + JacPDstandardNth32gt11 = J13L*(J12L*PDstandardNth11gt11 + + J22L*PDstandardNth12gt11 + J32L*PDstandardNth13gt11) + + J12L*(J23L*PDstandardNth12gt11 + J33L*PDstandardNth13gt11) + + dJ123L*PDstandardNth1gt11 + J23L*(J22L*PDstandardNth22gt11 + + J32L*PDstandardNth23gt11) + dJ223L*PDstandardNth2gt11 + + J33L*(J22L*PDstandardNth23gt11 + J32L*PDstandardNth33gt11) + + dJ323L*PDstandardNth3gt11; + + JacPDstandardNth32gt12 = J13L*(J12L*PDstandardNth11gt12 + + J22L*PDstandardNth12gt12 + J32L*PDstandardNth13gt12) + + J12L*(J23L*PDstandardNth12gt12 + J33L*PDstandardNth13gt12) + + dJ123L*PDstandardNth1gt12 + J23L*(J22L*PDstandardNth22gt12 + + J32L*PDstandardNth23gt12) + dJ223L*PDstandardNth2gt12 + + J33L*(J22L*PDstandardNth23gt12 + J32L*PDstandardNth33gt12) + + dJ323L*PDstandardNth3gt12; + + JacPDstandardNth32gt13 = J13L*(J12L*PDstandardNth11gt13 + + J22L*PDstandardNth12gt13 + J32L*PDstandardNth13gt13) + + J12L*(J23L*PDstandardNth12gt13 + J33L*PDstandardNth13gt13) + + dJ123L*PDstandardNth1gt13 + J23L*(J22L*PDstandardNth22gt13 + + J32L*PDstandardNth23gt13) + dJ223L*PDstandardNth2gt13 + + J33L*(J22L*PDstandardNth23gt13 + J32L*PDstandardNth33gt13) + + dJ323L*PDstandardNth3gt13; + + JacPDstandardNth32gt22 = J13L*(J12L*PDstandardNth11gt22 + + J22L*PDstandardNth12gt22 + J32L*PDstandardNth13gt22) + + J12L*(J23L*PDstandardNth12gt22 + J33L*PDstandardNth13gt22) + + dJ123L*PDstandardNth1gt22 + J23L*(J22L*PDstandardNth22gt22 + + J32L*PDstandardNth23gt22) + dJ223L*PDstandardNth2gt22 + + J33L*(J22L*PDstandardNth23gt22 + J32L*PDstandardNth33gt22) + + dJ323L*PDstandardNth3gt22; + + JacPDstandardNth32gt23 = J13L*(J12L*PDstandardNth11gt23 + + J22L*PDstandardNth12gt23 + J32L*PDstandardNth13gt23) + + J12L*(J23L*PDstandardNth12gt23 + J33L*PDstandardNth13gt23) + + dJ123L*PDstandardNth1gt23 + J23L*(J22L*PDstandardNth22gt23 + + J32L*PDstandardNth23gt23) + dJ223L*PDstandardNth2gt23 + + J33L*(J22L*PDstandardNth23gt23 + J32L*PDstandardNth33gt23) + + dJ323L*PDstandardNth3gt23; + + JacPDstandardNth32gt33 = J13L*(J12L*PDstandardNth11gt33 + + J22L*PDstandardNth12gt33 + J32L*PDstandardNth13gt33) + + J12L*(J23L*PDstandardNth12gt33 + J33L*PDstandardNth13gt33) + + dJ123L*PDstandardNth1gt33 + J23L*(J22L*PDstandardNth22gt33 + + J32L*PDstandardNth23gt33) + dJ223L*PDstandardNth2gt33 + + J33L*(J22L*PDstandardNth23gt33 + J32L*PDstandardNth33gt33) + + dJ323L*PDstandardNth3gt33; + } + else + { + JacPDstandardNth1alpha = PDstandardNth1alpha; + + JacPDstandardNth1beta1 = PDstandardNth1beta1; + + JacPDstandardNth1beta2 = PDstandardNth1beta2; + + JacPDstandardNth1beta3 = PDstandardNth1beta3; + + JacPDstandardNth1gt11 = PDstandardNth1gt11; + + JacPDstandardNth1gt12 = PDstandardNth1gt12; + + JacPDstandardNth1gt13 = PDstandardNth1gt13; + + JacPDstandardNth1gt22 = PDstandardNth1gt22; + + JacPDstandardNth1gt23 = PDstandardNth1gt23; + + JacPDstandardNth1gt33 = PDstandardNth1gt33; + + JacPDstandardNth1phi = PDstandardNth1phi; + + JacPDstandardNth1Xt1 = PDstandardNth1Xt1; + + JacPDstandardNth1Xt2 = PDstandardNth1Xt2; + + JacPDstandardNth1Xt3 = PDstandardNth1Xt3; + + JacPDstandardNth2alpha = PDstandardNth2alpha; + + JacPDstandardNth2beta1 = PDstandardNth2beta1; + + JacPDstandardNth2beta2 = PDstandardNth2beta2; + + JacPDstandardNth2beta3 = PDstandardNth2beta3; + + JacPDstandardNth2gt11 = PDstandardNth2gt11; + + JacPDstandardNth2gt12 = PDstandardNth2gt12; + + JacPDstandardNth2gt13 = PDstandardNth2gt13; + + JacPDstandardNth2gt22 = PDstandardNth2gt22; + + JacPDstandardNth2gt23 = PDstandardNth2gt23; + + JacPDstandardNth2gt33 = PDstandardNth2gt33; + + JacPDstandardNth2phi = PDstandardNth2phi; + + JacPDstandardNth2Xt1 = PDstandardNth2Xt1; + + JacPDstandardNth2Xt2 = PDstandardNth2Xt2; + + JacPDstandardNth2Xt3 = PDstandardNth2Xt3; + + JacPDstandardNth3alpha = PDstandardNth3alpha; + + JacPDstandardNth3beta1 = PDstandardNth3beta1; + + JacPDstandardNth3beta2 = PDstandardNth3beta2; + + JacPDstandardNth3beta3 = PDstandardNth3beta3; + + JacPDstandardNth3gt11 = PDstandardNth3gt11; + + JacPDstandardNth3gt12 = PDstandardNth3gt12; + + JacPDstandardNth3gt13 = PDstandardNth3gt13; + + JacPDstandardNth3gt22 = PDstandardNth3gt22; + + JacPDstandardNth3gt23 = PDstandardNth3gt23; + + JacPDstandardNth3gt33 = PDstandardNth3gt33; + + JacPDstandardNth3phi = PDstandardNth3phi; + + JacPDstandardNth3Xt1 = PDstandardNth3Xt1; + + JacPDstandardNth3Xt2 = PDstandardNth3Xt2; + + JacPDstandardNth3Xt3 = PDstandardNth3Xt3; + + JacPDstandardNth11alpha = PDstandardNth11alpha; + + JacPDstandardNth11gt11 = PDstandardNth11gt11; + + JacPDstandardNth11gt12 = PDstandardNth11gt12; + + JacPDstandardNth11gt13 = PDstandardNth11gt13; + + JacPDstandardNth11gt22 = PDstandardNth11gt22; + + JacPDstandardNth11gt23 = PDstandardNth11gt23; + + JacPDstandardNth11gt33 = PDstandardNth11gt33; + + JacPDstandardNth11phi = PDstandardNth11phi; + + JacPDstandardNth22alpha = PDstandardNth22alpha; + + JacPDstandardNth22gt11 = PDstandardNth22gt11; + + JacPDstandardNth22gt12 = PDstandardNth22gt12; + + JacPDstandardNth22gt13 = PDstandardNth22gt13; + + JacPDstandardNth22gt22 = PDstandardNth22gt22; + + JacPDstandardNth22gt23 = PDstandardNth22gt23; + + JacPDstandardNth22gt33 = PDstandardNth22gt33; + + JacPDstandardNth22phi = PDstandardNth22phi; + + JacPDstandardNth33alpha = PDstandardNth33alpha; + + JacPDstandardNth33gt11 = PDstandardNth33gt11; + + JacPDstandardNth33gt12 = PDstandardNth33gt12; + + JacPDstandardNth33gt13 = PDstandardNth33gt13; + + JacPDstandardNth33gt22 = PDstandardNth33gt22; + + JacPDstandardNth33gt23 = PDstandardNth33gt23; + + JacPDstandardNth33gt33 = PDstandardNth33gt33; + + JacPDstandardNth33phi = PDstandardNth33phi; + + JacPDstandardNth12alpha = PDstandardNth12alpha; + + JacPDstandardNth12gt11 = PDstandardNth12gt11; + + JacPDstandardNth12gt12 = PDstandardNth12gt12; + + JacPDstandardNth12gt13 = PDstandardNth12gt13; + + JacPDstandardNth12gt22 = PDstandardNth12gt22; + + JacPDstandardNth12gt23 = PDstandardNth12gt23; + + JacPDstandardNth12gt33 = PDstandardNth12gt33; + + JacPDstandardNth12phi = PDstandardNth12phi; + + JacPDstandardNth13alpha = PDstandardNth13alpha; + + JacPDstandardNth13gt11 = PDstandardNth13gt11; + + JacPDstandardNth13gt12 = PDstandardNth13gt12; + + JacPDstandardNth13gt13 = PDstandardNth13gt13; + + JacPDstandardNth13gt22 = PDstandardNth13gt22; + + JacPDstandardNth13gt23 = PDstandardNth13gt23; + + JacPDstandardNth13gt33 = PDstandardNth13gt33; + + JacPDstandardNth13phi = PDstandardNth13phi; + + JacPDstandardNth21gt11 = PDstandardNth12gt11; + + JacPDstandardNth21gt12 = PDstandardNth12gt12; + + JacPDstandardNth21gt13 = PDstandardNth12gt13; + + JacPDstandardNth21gt22 = PDstandardNth12gt22; + + JacPDstandardNth21gt23 = PDstandardNth12gt23; + + JacPDstandardNth21gt33 = PDstandardNth12gt33; + + JacPDstandardNth23alpha = PDstandardNth23alpha; + + JacPDstandardNth23gt11 = PDstandardNth23gt11; + + JacPDstandardNth23gt12 = PDstandardNth23gt12; + + JacPDstandardNth23gt13 = PDstandardNth23gt13; + + JacPDstandardNth23gt22 = PDstandardNth23gt22; + + JacPDstandardNth23gt23 = PDstandardNth23gt23; + + JacPDstandardNth23gt33 = PDstandardNth23gt33; + + JacPDstandardNth23phi = PDstandardNth23phi; + + JacPDstandardNth31gt11 = PDstandardNth13gt11; + + JacPDstandardNth31gt12 = PDstandardNth13gt12; + + JacPDstandardNth31gt13 = PDstandardNth13gt13; + + JacPDstandardNth31gt22 = PDstandardNth13gt22; + + JacPDstandardNth31gt23 = PDstandardNth13gt23; + + JacPDstandardNth31gt33 = PDstandardNth13gt33; + + JacPDstandardNth32gt11 = PDstandardNth23gt11; + + JacPDstandardNth32gt12 = PDstandardNth23gt12; + + JacPDstandardNth32gt13 = PDstandardNth23gt13; + + JacPDstandardNth32gt22 = PDstandardNth23gt22; + + JacPDstandardNth32gt23 = PDstandardNth23gt23; + + JacPDstandardNth32gt33 = PDstandardNth23gt33; + } + ptrdiff_t dir1 = Sign(beta1L); ptrdiff_t dir2 = Sign(beta2L); ptrdiff_t dir3 = Sign(beta3L); - CCTK_REAL epsdiss1 = ToReal(EpsDiss); - - CCTK_REAL epsdiss2 = ToReal(EpsDiss); - - CCTK_REAL epsdiss3 = ToReal(EpsDiss); - CCTK_REAL detgt = 1; CCTK_REAL gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L)); @@ -356,74 +1283,44 @@ static void ML_BSSN_MP_RHS2_Body(cGH const * restrict const cctkGH, int const di CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L)); - CCTK_REAL Gtl111 = 0.5*(J11L*PDstandardNth1gt11 + - J21L*PDstandardNth2gt11 + J31L*PDstandardNth3gt11); + CCTK_REAL Gtl111 = 0.5*JacPDstandardNth1gt11; - CCTK_REAL Gtl112 = 0.5*(J12L*PDstandardNth1gt11 + - J22L*PDstandardNth2gt11 + J32L*PDstandardNth3gt11); + CCTK_REAL Gtl112 = 0.5*JacPDstandardNth2gt11; - CCTK_REAL Gtl113 = 0.5*(J13L*PDstandardNth1gt11 + - J23L*PDstandardNth2gt11 + J33L*PDstandardNth3gt11); + CCTK_REAL Gtl113 = 0.5*JacPDstandardNth3gt11; - CCTK_REAL Gtl122 = J12L*PDstandardNth1gt12 + J22L*PDstandardNth2gt12 + - J32L*PDstandardNth3gt12 - 0.5*(J11L*PDstandardNth1gt22 + - J21L*PDstandardNth2gt22 + J31L*PDstandardNth3gt22); + CCTK_REAL Gtl122 = -0.5*JacPDstandardNth1gt22 + JacPDstandardNth2gt12; - CCTK_REAL Gtl123 = 0.5*(J13L*PDstandardNth1gt12 + - J12L*PDstandardNth1gt13 - J11L*PDstandardNth1gt23 + - J23L*PDstandardNth2gt12 + J22L*PDstandardNth2gt13 - - J21L*PDstandardNth2gt23 + J33L*PDstandardNth3gt12 + - J32L*PDstandardNth3gt13 - J31L*PDstandardNth3gt23); + CCTK_REAL Gtl123 = 0.5*(-JacPDstandardNth1gt23 + JacPDstandardNth2gt13 + + JacPDstandardNth3gt12); - CCTK_REAL Gtl133 = J13L*PDstandardNth1gt13 + J23L*PDstandardNth2gt13 + - J33L*PDstandardNth3gt13 - 0.5*(J11L*PDstandardNth1gt33 + - J21L*PDstandardNth2gt33 + J31L*PDstandardNth3gt33); + CCTK_REAL Gtl133 = -0.5*JacPDstandardNth1gt33 + JacPDstandardNth3gt13; - CCTK_REAL Gtl211 = J11L*PDstandardNth1gt12 + J21L*PDstandardNth2gt12 - - 0.5*(J12L*PDstandardNth1gt11 + J22L*PDstandardNth2gt11 + - J32L*PDstandardNth3gt11) + J31L*PDstandardNth3gt12; + CCTK_REAL Gtl211 = JacPDstandardNth1gt12 - 0.5*JacPDstandardNth2gt11; - CCTK_REAL Gtl212 = 0.5*(J11L*PDstandardNth1gt22 + - J21L*PDstandardNth2gt22 + J31L*PDstandardNth3gt22); + CCTK_REAL Gtl212 = 0.5*JacPDstandardNth1gt22; - CCTK_REAL Gtl213 = 0.5*(J13L*PDstandardNth1gt12 - - J12L*PDstandardNth1gt13 + J11L*PDstandardNth1gt23 + - J23L*PDstandardNth2gt12 - J22L*PDstandardNth2gt13 + - J21L*PDstandardNth2gt23 + J33L*PDstandardNth3gt12 - - J32L*PDstandardNth3gt13 + J31L*PDstandardNth3gt23); + CCTK_REAL Gtl213 = 0.5*(JacPDstandardNth1gt23 - JacPDstandardNth2gt13 + + JacPDstandardNth3gt12); - CCTK_REAL Gtl222 = 0.5*(J12L*PDstandardNth1gt22 + - J22L*PDstandardNth2gt22 + J32L*PDstandardNth3gt22); + CCTK_REAL Gtl222 = 0.5*JacPDstandardNth2gt22; - CCTK_REAL Gtl223 = 0.5*(J13L*PDstandardNth1gt22 + - J23L*PDstandardNth2gt22 + J33L*PDstandardNth3gt22); + CCTK_REAL Gtl223 = 0.5*JacPDstandardNth3gt22; - CCTK_REAL Gtl233 = J13L*PDstandardNth1gt23 + J23L*PDstandardNth2gt23 + - J33L*PDstandardNth3gt23 - 0.5*(J12L*PDstandardNth1gt33 + - J22L*PDstandardNth2gt33 + J32L*PDstandardNth3gt33); + CCTK_REAL Gtl233 = -0.5*JacPDstandardNth2gt33 + JacPDstandardNth3gt23; - CCTK_REAL Gtl311 = J11L*PDstandardNth1gt13 + J21L*PDstandardNth2gt13 - - 0.5*(J13L*PDstandardNth1gt11 + J23L*PDstandardNth2gt11 + - J33L*PDstandardNth3gt11) + J31L*PDstandardNth3gt13; + CCTK_REAL Gtl311 = JacPDstandardNth1gt13 - 0.5*JacPDstandardNth3gt11; - CCTK_REAL Gtl312 = 0.5*(-(J13L*PDstandardNth1gt12) + - J12L*PDstandardNth1gt13 + J11L*PDstandardNth1gt23 - - J23L*PDstandardNth2gt12 + J22L*PDstandardNth2gt13 + - J21L*PDstandardNth2gt23 - J33L*PDstandardNth3gt12 + - J32L*PDstandardNth3gt13 + J31L*PDstandardNth3gt23); + CCTK_REAL Gtl312 = 0.5*(JacPDstandardNth1gt23 + JacPDstandardNth2gt13 + - JacPDstandardNth3gt12); - CCTK_REAL Gtl313 = 0.5*(J11L*PDstandardNth1gt33 + - J21L*PDstandardNth2gt33 + J31L*PDstandardNth3gt33); + CCTK_REAL Gtl313 = 0.5*JacPDstandardNth1gt33; - CCTK_REAL Gtl322 = J12L*PDstandardNth1gt23 + J22L*PDstandardNth2gt23 - - 0.5*(J13L*PDstandardNth1gt22 + J23L*PDstandardNth2gt22 + - J33L*PDstandardNth3gt22) + J32L*PDstandardNth3gt23; + CCTK_REAL Gtl322 = JacPDstandardNth2gt23 - 0.5*JacPDstandardNth3gt22; - CCTK_REAL Gtl323 = 0.5*(J12L*PDstandardNth1gt33 + - J22L*PDstandardNth2gt33 + J32L*PDstandardNth3gt33); + CCTK_REAL Gtl323 = 0.5*JacPDstandardNth2gt33; - CCTK_REAL Gtl333 = 0.5*(J13L*PDstandardNth1gt33 + - J23L*PDstandardNth2gt33 + J33L*PDstandardNth3gt33); + CCTK_REAL Gtl333 = 0.5*JacPDstandardNth3gt33; CCTK_REAL Gtlu111 = Gtl111*gtu11 + Gtl112*gtu12 + Gtl113*gtu13; @@ -524,362 +1421,125 @@ static void ML_BSSN_MP_RHS2_Body(cGH const * restrict const cctkGH, int const di CCTK_REAL Xtn3 = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu12 + Gt313*gtu13 + Gt323*gtu23) + Gt333*gtu33; - CCTK_REAL Rt11 = 3*(Gt111*Gtlu111 + Gt112*Gtlu112 + Gt113*Gtlu113) + - 2*(Gt211*Gtlu121 + Gt212*Gtlu122 + Gt213*Gtlu123 + Gt311*Gtlu131 + - Gt312*Gtlu132 + Gt313*Gtlu133) + Gt211*Gtlu211 + Gt212*Gtlu212 + + CCTK_REAL Rt11 = 0.5*(6*(Gt111*Gtlu111 + Gt112*Gtlu112 + + Gt113*Gtlu113) + 4*(Gt211*Gtlu121 + Gt212*Gtlu122 + Gt213*Gtlu123 + + Gt311*Gtlu131 + Gt312*Gtlu132 + Gt313*Gtlu133) - + gtu11*JacPDstandardNth11gt11 + 2*(Gt211*Gtlu211 + Gt212*Gtlu212 + Gt213*Gtlu213 + Gt311*Gtlu311 + Gt312*Gtlu312 + Gt313*Gtlu313 + - J11L*(gt11L*PDstandardNth1Xt1 + gt12L*PDstandardNth1Xt2 + - gt13L*PDstandardNth1Xt3) + J21L*(gt11L*PDstandardNth2Xt1 + - gt12L*PDstandardNth2Xt2 + gt13L*PDstandardNth2Xt3) + - J31L*(gt11L*PDstandardNth3Xt1 + gt12L*PDstandardNth3Xt2 + - gt13L*PDstandardNth3Xt3) + Gtl111*Xtn1 + Gtl112*Xtn2 + Gtl113*Xtn3 + - 0.5*(-2*(gtu12*(J11L*J12L*PDstandardNth11gt11 + - J12L*J21L*PDstandardNth12gt11 + J11L*J22L*PDstandardNth12gt11 + - J12L*J31L*PDstandardNth13gt11 + J11L*J32L*PDstandardNth13gt11 + - dJ112L*PDstandardNth1gt11 + J21L*J22L*PDstandardNth22gt11 + - J22L*J31L*PDstandardNth23gt11 + J21L*J32L*PDstandardNth23gt11 + - dJ212L*PDstandardNth2gt11 + J31L*J32L*PDstandardNth33gt11 + - dJ312L*PDstandardNth3gt11) + gtu13*(J11L*J13L*PDstandardNth11gt11 + - J13L*J21L*PDstandardNth12gt11 + J11L*J23L*PDstandardNth12gt11 + - J13L*J31L*PDstandardNth13gt11 + J11L*J33L*PDstandardNth13gt11 + - dJ113L*PDstandardNth1gt11 + J21L*J23L*PDstandardNth22gt11 + - J23L*J31L*PDstandardNth23gt11 + J21L*J33L*PDstandardNth23gt11 + - dJ213L*PDstandardNth2gt11 + J31L*J33L*PDstandardNth33gt11 + - dJ313L*PDstandardNth3gt11) + gtu23*(J12L*J13L*PDstandardNth11gt11 + - J13L*J22L*PDstandardNth12gt11 + J12L*J23L*PDstandardNth12gt11 + - J13L*J32L*PDstandardNth13gt11 + J12L*J33L*PDstandardNth13gt11 + - dJ123L*PDstandardNth1gt11 + J22L*J23L*PDstandardNth22gt11 + - J23L*J32L*PDstandardNth23gt11 + J22L*J33L*PDstandardNth23gt11 + - dJ223L*PDstandardNth2gt11 + J32L*J33L*PDstandardNth33gt11 + - dJ323L*PDstandardNth3gt11)) - gtu11*(2*J11L*J21L*PDstandardNth12gt11 + - 2*J11L*J31L*PDstandardNth13gt11 + dJ111L*PDstandardNth1gt11 + - 2*J21L*J31L*PDstandardNth23gt11 + dJ211L*PDstandardNth2gt11 + - dJ311L*PDstandardNth3gt11 + PDstandardNth11gt11*SQR(J11L) + - PDstandardNth22gt11*SQR(J21L) + PDstandardNth33gt11*SQR(J31L)) - - gtu22*(2*J12L*J22L*PDstandardNth12gt11 + - 2*J12L*J32L*PDstandardNth13gt11 + dJ122L*PDstandardNth1gt11 + - 2*J22L*J32L*PDstandardNth23gt11 + dJ222L*PDstandardNth2gt11 + - dJ322L*PDstandardNth3gt11 + PDstandardNth11gt11*SQR(J12L) + - PDstandardNth22gt11*SQR(J22L) + PDstandardNth33gt11*SQR(J32L)) - - gtu33*(2*J13L*J23L*PDstandardNth12gt11 + - 2*J13L*J33L*PDstandardNth13gt11 + dJ133L*PDstandardNth1gt11 + - 2*J23L*J33L*PDstandardNth23gt11 + dJ233L*PDstandardNth2gt11 + - dJ333L*PDstandardNth3gt11 + PDstandardNth11gt11*SQR(J13L) + - PDstandardNth22gt11*SQR(J23L) + PDstandardNth33gt11*SQR(J33L))); - - CCTK_REAL Rt12 = Gt122*Gtlu112 + Gt123*Gtlu113 + (Gt111 + - Gt212)*Gtlu121 + Gt222*Gtlu122 + (Gt113 + Gt223)*Gtlu123 + - Gt322*Gtlu132 + Gt323*Gtlu133 + Gt111*Gtlu211 + Gt112*(Gtlu111 + - Gtlu122 + Gtlu212) + Gt113*Gtlu213 + 2*(Gt211*Gtlu221 + Gt212*Gtlu222 + - Gt213*Gtlu223) + Gt311*(Gtlu231 + Gtlu321) + Gt312*(Gtlu131 + Gtlu232 + - Gtlu322) + Gt313*(Gtlu233 + Gtlu323) + 0.5*((gt12L*J11L + - gt11L*J12L)*PDstandardNth1Xt1 + (gt22L*J11L + - gt12L*J12L)*PDstandardNth1Xt2 + (gt23L*J11L + - gt13L*J12L)*PDstandardNth1Xt3 + (gt12L*J21L + - gt11L*J22L)*PDstandardNth2Xt1 + (gt22L*J21L + - gt12L*J22L)*PDstandardNth2Xt2 + (gt23L*J21L + - gt13L*J22L)*PDstandardNth2Xt3 - 2*(gtu12*(J11L*J12L*PDstandardNth11gt12 - + J12L*J21L*PDstandardNth12gt12 + J11L*J22L*PDstandardNth12gt12 + - J12L*J31L*PDstandardNth13gt12 + J11L*J32L*PDstandardNth13gt12 + - dJ112L*PDstandardNth1gt12 + J21L*J22L*PDstandardNth22gt12 + - J22L*J31L*PDstandardNth23gt12 + J21L*J32L*PDstandardNth23gt12 + - dJ212L*PDstandardNth2gt12 + J31L*J32L*PDstandardNth33gt12 + - dJ312L*PDstandardNth3gt12) + gtu13*(J11L*J13L*PDstandardNth11gt12 + - J13L*J21L*PDstandardNth12gt12 + J11L*J23L*PDstandardNth12gt12 + - J13L*J31L*PDstandardNth13gt12 + J11L*J33L*PDstandardNth13gt12 + - dJ113L*PDstandardNth1gt12 + J21L*J23L*PDstandardNth22gt12 + - J23L*J31L*PDstandardNth23gt12 + J21L*J33L*PDstandardNth23gt12 + - dJ213L*PDstandardNth2gt12 + J31L*J33L*PDstandardNth33gt12 + - dJ313L*PDstandardNth3gt12) + gtu23*(J12L*J13L*PDstandardNth11gt12 + - J13L*J22L*PDstandardNth12gt12 + J12L*J23L*PDstandardNth12gt12 + - J13L*J32L*PDstandardNth13gt12 + J12L*J33L*PDstandardNth13gt12 + - dJ123L*PDstandardNth1gt12 + J22L*J23L*PDstandardNth22gt12 + - J23L*J32L*PDstandardNth23gt12 + J22L*J33L*PDstandardNth23gt12 + - dJ223L*PDstandardNth2gt12 + J32L*J33L*PDstandardNth33gt12 + - dJ323L*PDstandardNth3gt12)) + (gt12L*J31L + - gt11L*J32L)*PDstandardNth3Xt1 + (gt22L*J31L + - gt12L*J32L)*PDstandardNth3Xt2 + (gt23L*J31L + - gt13L*J32L)*PDstandardNth3Xt3 + (Gtl112 + Gtl211)*Xtn1 + (Gtl122 + - Gtl212)*Xtn2 + (Gtl123 + Gtl213)*Xtn3 - - gtu11*(2*J11L*J21L*PDstandardNth12gt12 + - 2*J11L*J31L*PDstandardNth13gt12 + dJ111L*PDstandardNth1gt12 + - 2*J21L*J31L*PDstandardNth23gt12 + dJ211L*PDstandardNth2gt12 + - dJ311L*PDstandardNth3gt12 + PDstandardNth11gt12*SQR(J11L) + - PDstandardNth22gt12*SQR(J21L) + PDstandardNth33gt12*SQR(J31L)) - - gtu22*(2*J12L*J22L*PDstandardNth12gt12 + - 2*J12L*J32L*PDstandardNth13gt12 + dJ122L*PDstandardNth1gt12 + - 2*J22L*J32L*PDstandardNth23gt12 + dJ222L*PDstandardNth2gt12 + - dJ322L*PDstandardNth3gt12 + PDstandardNth11gt12*SQR(J12L) + - PDstandardNth22gt12*SQR(J22L) + PDstandardNth33gt12*SQR(J32L)) - - gtu33*(2*J13L*J23L*PDstandardNth12gt12 + - 2*J13L*J33L*PDstandardNth13gt12 + dJ133L*PDstandardNth1gt12 + - 2*J23L*J33L*PDstandardNth23gt12 + dJ233L*PDstandardNth2gt12 + - dJ333L*PDstandardNth3gt12 + PDstandardNth11gt12*SQR(J13L) + - PDstandardNth22gt12*SQR(J23L) + PDstandardNth33gt12*SQR(J33L))); - - CCTK_REAL Rt13 = Gt123*Gtlu112 + Gt133*Gtlu113 + Gt223*Gtlu122 + - Gt233*Gtlu123 + (Gt111 + Gt313)*Gtlu131 + (Gt112 + Gt323)*Gtlu132 + - Gt333*Gtlu133 + Gt111*Gtlu311 + Gt112*Gtlu312 + Gt113*(Gtlu111 + - Gtlu133 + Gtlu313) + Gt211*(Gtlu231 + Gtlu321) + Gt212*(Gtlu232 + - Gtlu322) + Gt213*(Gtlu121 + Gtlu233 + Gtlu323) + 2*(Gt311*Gtlu331 + - Gt312*Gtlu332 + Gt313*Gtlu333) + 0.5*((gt13L*J11L + - gt11L*J13L)*PDstandardNth1Xt1 + (gt23L*J11L + - gt12L*J13L)*PDstandardNth1Xt2 + (gt33L*J11L + - gt13L*J13L)*PDstandardNth1Xt3 + (gt13L*J21L + - gt11L*J23L)*PDstandardNth2Xt1 + (gt23L*J21L + - gt12L*J23L)*PDstandardNth2Xt2 + (gt33L*J21L + - gt13L*J23L)*PDstandardNth2Xt3 - 2*(gtu12*(J11L*J12L*PDstandardNth11gt13 - + J12L*J21L*PDstandardNth12gt13 + J11L*J22L*PDstandardNth12gt13 + - J12L*J31L*PDstandardNth13gt13 + J11L*J32L*PDstandardNth13gt13 + - dJ112L*PDstandardNth1gt13 + J21L*J22L*PDstandardNth22gt13 + - J22L*J31L*PDstandardNth23gt13 + J21L*J32L*PDstandardNth23gt13 + - dJ212L*PDstandardNth2gt13 + J31L*J32L*PDstandardNth33gt13 + - dJ312L*PDstandardNth3gt13) + gtu13*(J11L*J13L*PDstandardNth11gt13 + - J13L*J21L*PDstandardNth12gt13 + J11L*J23L*PDstandardNth12gt13 + - J13L*J31L*PDstandardNth13gt13 + J11L*J33L*PDstandardNth13gt13 + - dJ113L*PDstandardNth1gt13 + J21L*J23L*PDstandardNth22gt13 + - J23L*J31L*PDstandardNth23gt13 + J21L*J33L*PDstandardNth23gt13 + - dJ213L*PDstandardNth2gt13 + J31L*J33L*PDstandardNth33gt13 + - dJ313L*PDstandardNth3gt13) + gtu23*(J12L*J13L*PDstandardNth11gt13 + - J13L*J22L*PDstandardNth12gt13 + J12L*J23L*PDstandardNth12gt13 + - J13L*J32L*PDstandardNth13gt13 + J12L*J33L*PDstandardNth13gt13 + - dJ123L*PDstandardNth1gt13 + J22L*J23L*PDstandardNth22gt13 + - J23L*J32L*PDstandardNth23gt13 + J22L*J33L*PDstandardNth23gt13 + - dJ223L*PDstandardNth2gt13 + J32L*J33L*PDstandardNth33gt13 + - dJ323L*PDstandardNth3gt13)) + (gt13L*J31L + - gt11L*J33L)*PDstandardNth3Xt1 + (gt23L*J31L + - gt12L*J33L)*PDstandardNth3Xt2 + (gt33L*J31L + - gt13L*J33L)*PDstandardNth3Xt3 + (Gtl113 + Gtl311)*Xtn1 + (Gtl123 + - Gtl312)*Xtn2 + (Gtl133 + Gtl313)*Xtn3 - - gtu11*(2*J11L*J21L*PDstandardNth12gt13 + - 2*J11L*J31L*PDstandardNth13gt13 + dJ111L*PDstandardNth1gt13 + - 2*J21L*J31L*PDstandardNth23gt13 + dJ211L*PDstandardNth2gt13 + - dJ311L*PDstandardNth3gt13 + PDstandardNth11gt13*SQR(J11L) + - PDstandardNth22gt13*SQR(J21L) + PDstandardNth33gt13*SQR(J31L)) - - gtu22*(2*J12L*J22L*PDstandardNth12gt13 + - 2*J12L*J32L*PDstandardNth13gt13 + dJ122L*PDstandardNth1gt13 + - 2*J22L*J32L*PDstandardNth23gt13 + dJ222L*PDstandardNth2gt13 + - dJ322L*PDstandardNth3gt13 + PDstandardNth11gt13*SQR(J12L) + - PDstandardNth22gt13*SQR(J22L) + PDstandardNth33gt13*SQR(J32L)) - - gtu33*(2*J13L*J23L*PDstandardNth12gt13 + - 2*J13L*J33L*PDstandardNth13gt13 + dJ133L*PDstandardNth1gt13 + - 2*J23L*J33L*PDstandardNth23gt13 + dJ233L*PDstandardNth2gt13 + - dJ333L*PDstandardNth3gt13 + PDstandardNth11gt13*SQR(J13L) + - PDstandardNth22gt13*SQR(J23L) + PDstandardNth33gt13*SQR(J33L))); - - CCTK_REAL Rt22 = Gt112*(Gtlu121 + 2*Gtlu211) + Gt122*(Gtlu122 + - 2*Gtlu212) + Gt123*(Gtlu123 + 2*Gtlu213) + 3*(Gt212*Gtlu221 + - Gt222*Gtlu222 + Gt223*Gtlu223) + 2*(Gt312*Gtlu231 + Gt322*Gtlu232 + - Gt323*Gtlu233) + Gt312*Gtlu321 + Gt322*Gtlu322 + Gt323*Gtlu323 + - J12L*(gt12L*PDstandardNth1Xt1 + gt22L*PDstandardNth1Xt2 + - gt23L*PDstandardNth1Xt3) + J22L*(gt12L*PDstandardNth2Xt1 + - gt22L*PDstandardNth2Xt2 + gt23L*PDstandardNth2Xt3) + - J32L*(gt12L*PDstandardNth3Xt1 + gt22L*PDstandardNth3Xt2 + - gt23L*PDstandardNth3Xt3) + Gtl212*Xtn1 + Gtl222*Xtn2 + Gtl223*Xtn3 + - 0.5*(-2*(gtu12*(J11L*J12L*PDstandardNth11gt22 + - J12L*J21L*PDstandardNth12gt22 + J11L*J22L*PDstandardNth12gt22 + - J12L*J31L*PDstandardNth13gt22 + J11L*J32L*PDstandardNth13gt22 + - dJ112L*PDstandardNth1gt22 + J21L*J22L*PDstandardNth22gt22 + - J22L*J31L*PDstandardNth23gt22 + J21L*J32L*PDstandardNth23gt22 + - dJ212L*PDstandardNth2gt22 + J31L*J32L*PDstandardNth33gt22 + - dJ312L*PDstandardNth3gt22) + gtu13*(J11L*J13L*PDstandardNth11gt22 + - J13L*J21L*PDstandardNth12gt22 + J11L*J23L*PDstandardNth12gt22 + - J13L*J31L*PDstandardNth13gt22 + J11L*J33L*PDstandardNth13gt22 + - dJ113L*PDstandardNth1gt22 + J21L*J23L*PDstandardNth22gt22 + - J23L*J31L*PDstandardNth23gt22 + J21L*J33L*PDstandardNth23gt22 + - dJ213L*PDstandardNth2gt22 + J31L*J33L*PDstandardNth33gt22 + - dJ313L*PDstandardNth3gt22) + gtu23*(J12L*J13L*PDstandardNth11gt22 + - J13L*J22L*PDstandardNth12gt22 + J12L*J23L*PDstandardNth12gt22 + - J13L*J32L*PDstandardNth13gt22 + J12L*J33L*PDstandardNth13gt22 + - dJ123L*PDstandardNth1gt22 + J22L*J23L*PDstandardNth22gt22 + - J23L*J32L*PDstandardNth23gt22 + J22L*J33L*PDstandardNth23gt22 + - dJ223L*PDstandardNth2gt22 + J32L*J33L*PDstandardNth33gt22 + - dJ323L*PDstandardNth3gt22)) - gtu11*(2*J11L*J21L*PDstandardNth12gt22 + - 2*J11L*J31L*PDstandardNth13gt22 + dJ111L*PDstandardNth1gt22 + - 2*J21L*J31L*PDstandardNth23gt22 + dJ211L*PDstandardNth2gt22 + - dJ311L*PDstandardNth3gt22 + PDstandardNth11gt22*SQR(J11L) + - PDstandardNth22gt22*SQR(J21L) + PDstandardNth33gt22*SQR(J31L)) - - gtu22*(2*J12L*J22L*PDstandardNth12gt22 + - 2*J12L*J32L*PDstandardNth13gt22 + dJ122L*PDstandardNth1gt22 + - 2*J22L*J32L*PDstandardNth23gt22 + dJ222L*PDstandardNth2gt22 + - dJ322L*PDstandardNth3gt22 + PDstandardNth11gt22*SQR(J12L) + - PDstandardNth22gt22*SQR(J22L) + PDstandardNth33gt22*SQR(J32L)) - - gtu33*(2*J13L*J23L*PDstandardNth12gt22 + - 2*J13L*J33L*PDstandardNth13gt22 + dJ133L*PDstandardNth1gt22 + - 2*J23L*J33L*PDstandardNth23gt22 + dJ233L*PDstandardNth2gt22 + - dJ333L*PDstandardNth3gt22 + PDstandardNth11gt22*SQR(J13L) + - PDstandardNth22gt22*SQR(J23L) + PDstandardNth33gt22*SQR(J33L))); - - CCTK_REAL Rt23 = Gt113*Gtlu211 + Gt133*Gtlu213 + Gt213*Gtlu221 + - Gt233*Gtlu223 + (Gt212 + Gt313)*Gtlu231 + (Gt222 + Gt323)*Gtlu232 + - Gt333*Gtlu233 + Gt112*(Gtlu131 + Gtlu311) + Gt122*(Gtlu132 + Gtlu312) + - Gt123*(Gtlu133 + Gtlu212 + Gtlu313) + Gt212*Gtlu321 + Gt222*Gtlu322 + - Gt223*(Gtlu222 + Gtlu233 + Gtlu323) + 2*(Gt312*Gtlu331 + Gt322*Gtlu332 - + Gt323*Gtlu333) + 0.5*((gt13L*J12L + gt12L*J13L)*PDstandardNth1Xt1 + - (gt23L*J12L + gt22L*J13L)*PDstandardNth1Xt2 + (gt33L*J12L + - gt23L*J13L)*PDstandardNth1Xt3 + (gt13L*J22L + - gt12L*J23L)*PDstandardNth2Xt1 + (gt23L*J22L + - gt22L*J23L)*PDstandardNth2Xt2 + (gt33L*J22L + - gt23L*J23L)*PDstandardNth2Xt3 - 2*(gtu12*(J11L*J12L*PDstandardNth11gt23 - + J12L*J21L*PDstandardNth12gt23 + J11L*J22L*PDstandardNth12gt23 + - J12L*J31L*PDstandardNth13gt23 + J11L*J32L*PDstandardNth13gt23 + - dJ112L*PDstandardNth1gt23 + J21L*J22L*PDstandardNth22gt23 + - J22L*J31L*PDstandardNth23gt23 + J21L*J32L*PDstandardNth23gt23 + - dJ212L*PDstandardNth2gt23 + J31L*J32L*PDstandardNth33gt23 + - dJ312L*PDstandardNth3gt23) + gtu13*(J11L*J13L*PDstandardNth11gt23 + - J13L*J21L*PDstandardNth12gt23 + J11L*J23L*PDstandardNth12gt23 + - J13L*J31L*PDstandardNth13gt23 + J11L*J33L*PDstandardNth13gt23 + - dJ113L*PDstandardNth1gt23 + J21L*J23L*PDstandardNth22gt23 + - J23L*J31L*PDstandardNth23gt23 + J21L*J33L*PDstandardNth23gt23 + - dJ213L*PDstandardNth2gt23 + J31L*J33L*PDstandardNth33gt23 + - dJ313L*PDstandardNth3gt23) + gtu23*(J12L*J13L*PDstandardNth11gt23 + - J13L*J22L*PDstandardNth12gt23 + J12L*J23L*PDstandardNth12gt23 + - J13L*J32L*PDstandardNth13gt23 + J12L*J33L*PDstandardNth13gt23 + - dJ123L*PDstandardNth1gt23 + J22L*J23L*PDstandardNth22gt23 + - J23L*J32L*PDstandardNth23gt23 + J22L*J33L*PDstandardNth23gt23 + - dJ223L*PDstandardNth2gt23 + J32L*J33L*PDstandardNth33gt23 + - dJ323L*PDstandardNth3gt23)) + (gt13L*J32L + - gt12L*J33L)*PDstandardNth3Xt1 + (gt23L*J32L + - gt22L*J33L)*PDstandardNth3Xt2 + (gt33L*J32L + - gt23L*J33L)*PDstandardNth3Xt3 + (Gtl213 + Gtl312)*Xtn1 + (Gtl223 + - Gtl322)*Xtn2 + (Gtl233 + Gtl323)*Xtn3 - - gtu11*(2*J11L*J21L*PDstandardNth12gt23 + - 2*J11L*J31L*PDstandardNth13gt23 + dJ111L*PDstandardNth1gt23 + - 2*J21L*J31L*PDstandardNth23gt23 + dJ211L*PDstandardNth2gt23 + - dJ311L*PDstandardNth3gt23 + PDstandardNth11gt23*SQR(J11L) + - PDstandardNth22gt23*SQR(J21L) + PDstandardNth33gt23*SQR(J31L)) - - gtu22*(2*J12L*J22L*PDstandardNth12gt23 + - 2*J12L*J32L*PDstandardNth13gt23 + dJ122L*PDstandardNth1gt23 + - 2*J22L*J32L*PDstandardNth23gt23 + dJ222L*PDstandardNth2gt23 + - dJ322L*PDstandardNth3gt23 + PDstandardNth11gt23*SQR(J12L) + - PDstandardNth22gt23*SQR(J22L) + PDstandardNth33gt23*SQR(J32L)) - - gtu33*(2*J13L*J23L*PDstandardNth12gt23 + - 2*J13L*J33L*PDstandardNth13gt23 + dJ133L*PDstandardNth1gt23 + - 2*J23L*J33L*PDstandardNth23gt23 + dJ233L*PDstandardNth2gt23 + - dJ333L*PDstandardNth3gt23 + PDstandardNth11gt23*SQR(J13L) + - PDstandardNth22gt23*SQR(J23L) + PDstandardNth33gt23*SQR(J33L))); - - CCTK_REAL Rt33 = Gt113*(Gtlu131 + 2*Gtlu311) + Gt123*(Gtlu132 + - 2*Gtlu312) + Gt133*(Gtlu133 + 2*Gtlu313) + Gt213*(Gtlu231 + 2*Gtlu321) - + Gt223*(Gtlu232 + 2*Gtlu322) + Gt233*(Gtlu233 + 2*Gtlu323) + - 3*(Gt313*Gtlu331 + Gt323*Gtlu332 + Gt333*Gtlu333) + - J13L*(gt13L*PDstandardNth1Xt1 + gt23L*PDstandardNth1Xt2 + - gt33L*PDstandardNth1Xt3) + J23L*(gt13L*PDstandardNth2Xt1 + - gt23L*PDstandardNth2Xt2 + gt33L*PDstandardNth2Xt3) + - J33L*(gt13L*PDstandardNth3Xt1 + gt23L*PDstandardNth3Xt2 + - gt33L*PDstandardNth3Xt3) + Gtl313*Xtn1 + Gtl323*Xtn2 + Gtl333*Xtn3 + - 0.5*(-2*(gtu12*(J11L*J12L*PDstandardNth11gt33 + - J12L*J21L*PDstandardNth12gt33 + J11L*J22L*PDstandardNth12gt33 + - J12L*J31L*PDstandardNth13gt33 + J11L*J32L*PDstandardNth13gt33 + - dJ112L*PDstandardNth1gt33 + J21L*J22L*PDstandardNth22gt33 + - J22L*J31L*PDstandardNth23gt33 + J21L*J32L*PDstandardNth23gt33 + - dJ212L*PDstandardNth2gt33 + J31L*J32L*PDstandardNth33gt33 + - dJ312L*PDstandardNth3gt33) + gtu13*(J11L*J13L*PDstandardNth11gt33 + - J13L*J21L*PDstandardNth12gt33 + J11L*J23L*PDstandardNth12gt33 + - J13L*J31L*PDstandardNth13gt33 + J11L*J33L*PDstandardNth13gt33 + - dJ113L*PDstandardNth1gt33 + J21L*J23L*PDstandardNth22gt33 + - J23L*J31L*PDstandardNth23gt33 + J21L*J33L*PDstandardNth23gt33 + - dJ213L*PDstandardNth2gt33 + J31L*J33L*PDstandardNth33gt33 + - dJ313L*PDstandardNth3gt33) + gtu23*(J12L*J13L*PDstandardNth11gt33 + - J13L*J22L*PDstandardNth12gt33 + J12L*J23L*PDstandardNth12gt33 + - J13L*J32L*PDstandardNth13gt33 + J12L*J33L*PDstandardNth13gt33 + - dJ123L*PDstandardNth1gt33 + J22L*J23L*PDstandardNth22gt33 + - J23L*J32L*PDstandardNth23gt33 + J22L*J33L*PDstandardNth23gt33 + - dJ223L*PDstandardNth2gt33 + J32L*J33L*PDstandardNth33gt33 + - dJ323L*PDstandardNth3gt33)) - gtu11*(2*J11L*J21L*PDstandardNth12gt33 + - 2*J11L*J31L*PDstandardNth13gt33 + dJ111L*PDstandardNth1gt33 + - 2*J21L*J31L*PDstandardNth23gt33 + dJ211L*PDstandardNth2gt33 + - dJ311L*PDstandardNth3gt33 + PDstandardNth11gt33*SQR(J11L) + - PDstandardNth22gt33*SQR(J21L) + PDstandardNth33gt33*SQR(J31L)) - - gtu22*(2*J12L*J22L*PDstandardNth12gt33 + - 2*J12L*J32L*PDstandardNth13gt33 + dJ122L*PDstandardNth1gt33 + - 2*J22L*J32L*PDstandardNth23gt33 + dJ222L*PDstandardNth2gt33 + - dJ322L*PDstandardNth3gt33 + PDstandardNth11gt33*SQR(J12L) + - PDstandardNth22gt33*SQR(J22L) + PDstandardNth33gt33*SQR(J32L)) - - gtu33*(2*J13L*J23L*PDstandardNth12gt33 + - 2*J13L*J33L*PDstandardNth13gt33 + dJ133L*PDstandardNth1gt33 + - 2*J23L*J33L*PDstandardNth23gt33 + dJ233L*PDstandardNth2gt33 + - dJ333L*PDstandardNth3gt33 + PDstandardNth11gt33*SQR(J13L) + - PDstandardNth22gt33*SQR(J23L) + PDstandardNth33gt33*SQR(J33L))); - - CCTK_REAL fac1 = IfThen(ToReal(conformalMethod),-0.5*INV(phiL),1); - - CCTK_REAL cdphi1 = fac1*(J11L*PDstandardNth1phi + - J21L*PDstandardNth2phi + J31L*PDstandardNth3phi); - - CCTK_REAL cdphi2 = fac1*(J12L*PDstandardNth1phi + - J22L*PDstandardNth2phi + J32L*PDstandardNth3phi); - - CCTK_REAL cdphi3 = fac1*(J13L*PDstandardNth1phi + - J23L*PDstandardNth2phi + J33L*PDstandardNth3phi); - - CCTK_REAL fac2 = IfThen(ToReal(conformalMethod),0.5*INV(SQR(phiL)),0); - - CCTK_REAL cdphi211 = fac1*((dJ111L - Gt111*J11L - Gt211*J12L - - Gt311*J13L)*PDstandardNth1phi + 2*(J11L*(J21L*PDstandardNth12phi + - J31L*PDstandardNth13phi) + J21L*J31L*PDstandardNth23phi) + (dJ211L - - Gt111*J21L - Gt211*J22L - Gt311*J23L)*PDstandardNth2phi + (dJ311L - - Gt111*J31L - Gt211*J32L - Gt311*J33L)*PDstandardNth3phi + - PDstandardNth11phi*SQR(J11L) + PDstandardNth22phi*SQR(J21L) + - PDstandardNth33phi*SQR(J31L)) + fac2*SQR(J11L*PDstandardNth1phi + - J21L*PDstandardNth2phi + J31L*PDstandardNth3phi); - - CCTK_REAL cdphi212 = fac2*(J11L*PDstandardNth1phi + - J21L*PDstandardNth2phi + - J31L*PDstandardNth3phi)*(J12L*PDstandardNth1phi + - J22L*PDstandardNth2phi + J32L*PDstandardNth3phi) + - fac1*(J12L*(J11L*PDstandardNth11phi + J21L*PDstandardNth12phi + - J31L*PDstandardNth13phi) + J11L*(J22L*PDstandardNth12phi + - J32L*PDstandardNth13phi) + (dJ112L - Gt112*J11L - Gt212*J12L - - Gt312*J13L)*PDstandardNth1phi + J22L*(J21L*PDstandardNth22phi + - J31L*PDstandardNth23phi) + (dJ212L - Gt112*J21L - Gt212*J22L - - Gt312*J23L)*PDstandardNth2phi + J32L*(J21L*PDstandardNth23phi + - J31L*PDstandardNth33phi) + (dJ312L - Gt112*J31L - Gt212*J32L - - Gt312*J33L)*PDstandardNth3phi); - - CCTK_REAL cdphi213 = fac2*(J11L*PDstandardNth1phi + - J21L*PDstandardNth2phi + - J31L*PDstandardNth3phi)*(J13L*PDstandardNth1phi + - J23L*PDstandardNth2phi + J33L*PDstandardNth3phi) + - fac1*(J13L*(J11L*PDstandardNth11phi + J21L*PDstandardNth12phi + - J31L*PDstandardNth13phi) + J11L*(J23L*PDstandardNth12phi + - J33L*PDstandardNth13phi) + (dJ113L - Gt113*J11L - Gt213*J12L - - Gt313*J13L)*PDstandardNth1phi + J23L*(J21L*PDstandardNth22phi + - J31L*PDstandardNth23phi) + (dJ213L - Gt113*J21L - Gt213*J22L - - Gt313*J23L)*PDstandardNth2phi + J33L*(J21L*PDstandardNth23phi + - J31L*PDstandardNth33phi) + (dJ313L - Gt113*J31L - Gt213*J32L - - Gt313*J33L)*PDstandardNth3phi); - - CCTK_REAL cdphi222 = fac1*((dJ122L - Gt122*J11L - Gt222*J12L - - Gt322*J13L)*PDstandardNth1phi + 2*(J12L*(J22L*PDstandardNth12phi + - J32L*PDstandardNth13phi) + J22L*J32L*PDstandardNth23phi) + (dJ222L - - Gt122*J21L - Gt222*J22L - Gt322*J23L)*PDstandardNth2phi + (dJ322L - - Gt122*J31L - Gt222*J32L - Gt322*J33L)*PDstandardNth3phi + - PDstandardNth11phi*SQR(J12L) + PDstandardNth22phi*SQR(J22L) + - PDstandardNth33phi*SQR(J32L)) + fac2*SQR(J12L*PDstandardNth1phi + - J22L*PDstandardNth2phi + J32L*PDstandardNth3phi); - - CCTK_REAL cdphi223 = fac2*(J12L*PDstandardNth1phi + - J22L*PDstandardNth2phi + - J32L*PDstandardNth3phi)*(J13L*PDstandardNth1phi + - J23L*PDstandardNth2phi + J33L*PDstandardNth3phi) + - fac1*(J13L*(J12L*PDstandardNth11phi + J22L*PDstandardNth12phi + - J32L*PDstandardNth13phi) + J12L*(J23L*PDstandardNth12phi + - J33L*PDstandardNth13phi) + (dJ123L - Gt123*J11L - Gt223*J12L - - Gt323*J13L)*PDstandardNth1phi + J23L*(J22L*PDstandardNth22phi + - J32L*PDstandardNth23phi) + (dJ223L - Gt123*J21L - Gt223*J22L - - Gt323*J23L)*PDstandardNth2phi + J33L*(J22L*PDstandardNth23phi + - J32L*PDstandardNth33phi) + (dJ323L - Gt123*J31L - Gt223*J32L - - Gt323*J33L)*PDstandardNth3phi); - - CCTK_REAL cdphi233 = fac1*((dJ133L - Gt133*J11L - Gt233*J12L - - Gt333*J13L)*PDstandardNth1phi + 2*(J13L*(J23L*PDstandardNth12phi + - J33L*PDstandardNth13phi) + J23L*J33L*PDstandardNth23phi) + (dJ233L - - Gt133*J21L - Gt233*J22L - Gt333*J23L)*PDstandardNth2phi + (dJ333L - - Gt133*J31L - Gt233*J32L - Gt333*J33L)*PDstandardNth3phi + - PDstandardNth11phi*SQR(J13L) + PDstandardNth22phi*SQR(J23L) + - PDstandardNth33phi*SQR(J33L)) + fac2*SQR(J13L*PDstandardNth1phi + - J23L*PDstandardNth2phi + J33L*PDstandardNth3phi); + gt11L*JacPDstandardNth1Xt1) + 2*gt12L*JacPDstandardNth1Xt2 + + 2*gt13L*JacPDstandardNth1Xt3 + gtu12*(-JacPDstandardNth12gt11 - + JacPDstandardNth21gt11) - gtu22*JacPDstandardNth22gt11 + + gtu13*(-JacPDstandardNth13gt11 - JacPDstandardNth31gt11) + + gtu23*(-JacPDstandardNth23gt11 - JacPDstandardNth32gt11) - + gtu33*JacPDstandardNth33gt11 + 2*Gtl111*Xtn1 + 2*Gtl112*Xtn2 + + 2*Gtl113*Xtn3); + + CCTK_REAL Rt12 = 0.5*(4*(Gt211*Gtlu221 + Gt212*Gtlu222 + + Gt213*Gtlu223) + 2*(Gt122*Gtlu112 + Gt123*Gtlu113 + Gt111*Gtlu121 + + Gt212*Gtlu121 + Gt222*Gtlu122 + Gt113*Gtlu123 + Gt223*Gtlu123 + + Gt312*Gtlu131 + Gt322*Gtlu132 + Gt323*Gtlu133 + Gt111*Gtlu211 + + Gt112*(Gtlu111 + Gtlu122 + Gtlu212) + Gt113*Gtlu213 + Gt311*Gtlu231 + + Gt312*Gtlu232 + Gt313*Gtlu233 + Gt311*Gtlu321 + Gt312*Gtlu322 + + Gt313*Gtlu323) - gtu11*JacPDstandardNth11gt12 + + gt12L*JacPDstandardNth1Xt1 + gt22L*JacPDstandardNth1Xt2 + + gt23L*JacPDstandardNth1Xt3 + gtu12*(-JacPDstandardNth12gt12 - + JacPDstandardNth21gt12) - gtu22*JacPDstandardNth22gt12 + + gt11L*JacPDstandardNth2Xt1 + gt12L*JacPDstandardNth2Xt2 + + gt13L*JacPDstandardNth2Xt3 + gtu13*(-JacPDstandardNth13gt12 - + JacPDstandardNth31gt12) + gtu23*(-JacPDstandardNth23gt12 - + JacPDstandardNth32gt12) - gtu33*JacPDstandardNth33gt12 + Gtl112*Xtn1 + + Gtl211*Xtn1 + Gtl122*Xtn2 + Gtl212*Xtn2 + Gtl123*Xtn3 + Gtl213*Xtn3); + + CCTK_REAL Rt13 = 0.5*(2*(Gt123*Gtlu112 + Gt133*Gtlu113 + Gt213*Gtlu121 + + Gt223*Gtlu122 + Gt233*Gtlu123 + Gt111*Gtlu131 + Gt313*Gtlu131 + + Gt112*Gtlu132 + Gt323*Gtlu132 + Gt333*Gtlu133 + Gt211*Gtlu231 + + Gt212*Gtlu232 + Gt213*Gtlu233 + Gt111*Gtlu311 + Gt112*Gtlu312 + + Gt113*(Gtlu111 + Gtlu133 + Gtlu313) + Gt211*Gtlu321 + Gt212*Gtlu322 + + Gt213*Gtlu323) + 4*(Gt311*Gtlu331 + Gt312*Gtlu332 + Gt313*Gtlu333) - + gtu11*JacPDstandardNth11gt13 + gt13L*JacPDstandardNth1Xt1 + + gt23L*JacPDstandardNth1Xt2 + gt33L*JacPDstandardNth1Xt3 + + gtu12*(-JacPDstandardNth12gt13 - JacPDstandardNth21gt13) - + gtu22*JacPDstandardNth22gt13 + gtu13*(-JacPDstandardNth13gt13 - + JacPDstandardNth31gt13) + gtu23*(-JacPDstandardNth23gt13 - + JacPDstandardNth32gt13) - gtu33*JacPDstandardNth33gt13 + + gt11L*JacPDstandardNth3Xt1 + gt12L*JacPDstandardNth3Xt2 + + gt13L*JacPDstandardNth3Xt3 + Gtl113*Xtn1 + Gtl311*Xtn1 + Gtl123*Xtn2 + + Gtl312*Xtn2 + Gtl133*Xtn3 + Gtl313*Xtn3); + + CCTK_REAL Rt22 = 0.5*(6*(Gt212*Gtlu221 + Gt222*Gtlu222 + + Gt223*Gtlu223) + 4*(Gt123*Gtlu213 + Gt312*Gtlu231 + Gt322*Gtlu232 + + Gt323*Gtlu233) - gtu11*JacPDstandardNth11gt22 + + gtu12*(-JacPDstandardNth12gt22 - JacPDstandardNth21gt22) - + gtu22*JacPDstandardNth22gt22 + 2*(Gt123*Gtlu123 + Gt112*(Gtlu121 + + 2*Gtlu211) + Gt122*(Gtlu122 + 2*Gtlu212) + Gt312*Gtlu321 + + Gt322*Gtlu322 + Gt323*Gtlu323 + gt12L*JacPDstandardNth2Xt1) + + 2*gt22L*JacPDstandardNth2Xt2 + 2*gt23L*JacPDstandardNth2Xt3 + + gtu13*(-JacPDstandardNth13gt22 - JacPDstandardNth31gt22) + + gtu23*(-JacPDstandardNth23gt22 - JacPDstandardNth32gt22) - + gtu33*JacPDstandardNth33gt22 + 2*Gtl212*Xtn1 + 2*Gtl222*Xtn2 + + 2*Gtl223*Xtn3); + + CCTK_REAL Rt23 = 0.5*(2*(Gt123*Gtlu133 + Gt113*Gtlu211 + Gt123*Gtlu212 + + Gt133*Gtlu213 + Gt213*Gtlu221 + Gt223*Gtlu222 + Gt233*Gtlu223 + + Gt212*Gtlu231 + Gt313*Gtlu231 + Gt222*Gtlu232 + Gt323*Gtlu232 + + Gt223*Gtlu233 + Gt333*Gtlu233 + Gt112*(Gtlu131 + Gtlu311) + + Gt122*(Gtlu132 + Gtlu312) + Gt123*Gtlu313 + Gt212*Gtlu321 + + Gt222*Gtlu322 + Gt223*Gtlu323) + 4*(Gt312*Gtlu331 + Gt322*Gtlu332 + + Gt323*Gtlu333) - gtu11*JacPDstandardNth11gt23 + + gtu12*(-JacPDstandardNth12gt23 - JacPDstandardNth21gt23) - + gtu22*JacPDstandardNth22gt23 + gt13L*JacPDstandardNth2Xt1 + + gt23L*JacPDstandardNth2Xt2 + gt33L*JacPDstandardNth2Xt3 + + gtu13*(-JacPDstandardNth13gt23 - JacPDstandardNth31gt23) + + gtu23*(-JacPDstandardNth23gt23 - JacPDstandardNth32gt23) - + gtu33*JacPDstandardNth33gt23 + gt12L*JacPDstandardNth3Xt1 + + gt22L*JacPDstandardNth3Xt2 + gt23L*JacPDstandardNth3Xt3 + Gtl213*Xtn1 + + Gtl312*Xtn1 + Gtl223*Xtn2 + Gtl322*Xtn2 + Gtl233*Xtn3 + Gtl323*Xtn3); + + CCTK_REAL Rt33 = 0.5*(4*(Gt133*Gtlu313 + Gt213*Gtlu321 + Gt223*Gtlu322 + + Gt233*Gtlu323) + 6*(Gt313*Gtlu331 + Gt323*Gtlu332 + Gt333*Gtlu333) - + gtu11*JacPDstandardNth11gt33 + gtu12*(-JacPDstandardNth12gt33 - + JacPDstandardNth21gt33) - gtu22*JacPDstandardNth22gt33 + + gtu13*(-JacPDstandardNth13gt33 - JacPDstandardNth31gt33) + + gtu23*(-JacPDstandardNth23gt33 - JacPDstandardNth32gt33) - + gtu33*JacPDstandardNth33gt33 + 2*(Gt133*Gtlu133 + Gt213*Gtlu231 + + Gt223*Gtlu232 + Gt233*Gtlu233 + Gt113*(Gtlu131 + 2*Gtlu311) + + Gt123*(Gtlu132 + 2*Gtlu312) + gt13L*JacPDstandardNth3Xt1) + + 2*gt23L*JacPDstandardNth3Xt2 + 2*gt33L*JacPDstandardNth3Xt3 + + 2*Gtl313*Xtn1 + 2*Gtl323*Xtn2 + 2*Gtl333*Xtn3); + + CCTK_REAL fac1 = IfThen(conformalMethod,-0.5*INV(phiL),1); + + CCTK_REAL cdphi1 = fac1*JacPDstandardNth1phi; + + CCTK_REAL cdphi2 = fac1*JacPDstandardNth2phi; + + CCTK_REAL cdphi3 = fac1*JacPDstandardNth3phi; + + CCTK_REAL fac2 = IfThen(conformalMethod,0.5*INV(SQR(phiL)),0); + + CCTK_REAL cdphi211 = fac1*(JacPDstandardNth11phi - + Gt111*JacPDstandardNth1phi - Gt211*JacPDstandardNth2phi - + Gt311*JacPDstandardNth3phi) + fac2*SQR(JacPDstandardNth1phi); + + CCTK_REAL cdphi212 = fac2*JacPDstandardNth1phi*JacPDstandardNth2phi + + fac1*(JacPDstandardNth12phi - Gt112*JacPDstandardNth1phi - + Gt212*JacPDstandardNth2phi - Gt312*JacPDstandardNth3phi); + + CCTK_REAL cdphi213 = fac2*JacPDstandardNth1phi*JacPDstandardNth3phi + + fac1*(JacPDstandardNth13phi - Gt113*JacPDstandardNth1phi - + Gt213*JacPDstandardNth2phi - Gt313*JacPDstandardNth3phi); + + CCTK_REAL cdphi222 = -(fac1*(Gt122*JacPDstandardNth1phi - + JacPDstandardNth22phi + Gt222*JacPDstandardNth2phi + + Gt322*JacPDstandardNth3phi)) + fac2*SQR(JacPDstandardNth2phi); + + CCTK_REAL cdphi223 = fac2*JacPDstandardNth2phi*JacPDstandardNth3phi - + fac1*(Gt123*JacPDstandardNth1phi - JacPDstandardNth23phi + + Gt223*JacPDstandardNth2phi + Gt323*JacPDstandardNth3phi); + + CCTK_REAL cdphi233 = -(fac1*(Gt133*JacPDstandardNth1phi + + Gt233*JacPDstandardNth2phi - JacPDstandardNth33phi + + Gt333*JacPDstandardNth3phi)) + fac2*SQR(JacPDstandardNth3phi); CCTK_REAL Rphi11 = -2*(cdphi211 + 2*(-1 + gt11L*gtu11)*SQR(cdphi1) + gt11L*(cdphi211*gtu11 + 4*(cdphi1*(cdphi2*gtu12 + cdphi3*gtu13) + @@ -935,8 +1595,7 @@ static void ML_BSSN_MP_RHS2_Body(cGH const * restrict const cctkGH, int const di CCTK_REAL Atm33 = At13L*gtu13 + At23L*gtu23 + At33L*gtu33; - CCTK_REAL e4phi = - IfThen(ToReal(conformalMethod),INV(SQR(phiL)),exp(4*phiL)); + CCTK_REAL e4phi = IfThen(conformalMethod,INV(SQR(phiL)),exp(4*phiL)); CCTK_REAL em4phi = INV(e4phi); @@ -979,242 +1638,96 @@ static void ML_BSSN_MP_RHS2_Body(cGH const * restrict const cctkGH, int const di CCTK_REAL trS = em4phi*(eTxxL*gtu11 + eTyyL*gtu22 + 2*(eTxyL*gtu12 + eTxzL*gtu13 + eTyzL*gtu23) + eTzzL*gtu33); - CCTK_REAL Ats11 = (-dJ111L + 4*cdphi1*J11L + Gt111*J11L + Gt211*J12L + - Gt311*J13L)*PDstandardNth1alpha - 2*(J11L*J21L*PDstandardNth12alpha + - J11L*J31L*PDstandardNth13alpha + J21L*J31L*PDstandardNth23alpha) + - (-dJ211L + 4*cdphi1*J21L + Gt111*J21L + Gt211*J22L + - Gt311*J23L)*PDstandardNth2alpha + (-dJ311L + 4*cdphi1*J31L + Gt111*J31L - + Gt211*J32L + Gt311*J33L)*PDstandardNth3alpha + alphaL*R11 - - PDstandardNth11alpha*SQR(J11L) - PDstandardNth22alpha*SQR(J21L) - - PDstandardNth33alpha*SQR(J31L); - - CCTK_REAL Ats12 = J12L*(-(J11L*PDstandardNth11alpha) - - J21L*PDstandardNth12alpha - J31L*PDstandardNth13alpha) + - J11L*(-(J22L*PDstandardNth12alpha) - J32L*PDstandardNth13alpha) + - (-dJ112L + 2*cdphi2*J11L + Gt112*J11L + 2*cdphi1*J12L + Gt212*J12L + - Gt312*J13L)*PDstandardNth1alpha + J22L*(-(J21L*PDstandardNth22alpha) - - J31L*PDstandardNth23alpha) + (-dJ212L + 2*cdphi2*J21L + Gt112*J21L + - 2*cdphi1*J22L + Gt212*J22L + Gt312*J23L)*PDstandardNth2alpha + - J32L*(-(J21L*PDstandardNth23alpha) - J31L*PDstandardNth33alpha) + - Gt112*J31L*PDstandardNth3alpha + (-dJ312L + - 2*cdphi2*J31L)*PDstandardNth3alpha + 2*cdphi1*J32L*PDstandardNth3alpha - + Gt212*J32L*PDstandardNth3alpha + Gt312*J33L*PDstandardNth3alpha + + CCTK_REAL Ats11 = -JacPDstandardNth11alpha + (4*cdphi1 + + Gt111)*JacPDstandardNth1alpha + Gt211*JacPDstandardNth2alpha + + Gt311*JacPDstandardNth3alpha + alphaL*R11; + + CCTK_REAL Ats12 = -JacPDstandardNth12alpha + (2*cdphi2 + + Gt112)*JacPDstandardNth1alpha + (2*cdphi1 + + Gt212)*JacPDstandardNth2alpha + Gt312*JacPDstandardNth3alpha + alphaL*R12; - CCTK_REAL Ats13 = J13L*(-(J11L*PDstandardNth11alpha) - - J21L*PDstandardNth12alpha - J31L*PDstandardNth13alpha) + - J11L*(-(J23L*PDstandardNth12alpha) - J33L*PDstandardNth13alpha) + - (-dJ113L + 2*cdphi3*J11L + Gt113*J11L + Gt213*J12L + 2*cdphi1*J13L + - Gt313*J13L)*PDstandardNth1alpha + J23L*(-(J21L*PDstandardNth22alpha) - - J31L*PDstandardNth23alpha) + (-dJ213L + 2*cdphi3*J21L + Gt113*J21L + - Gt213*J22L + 2*cdphi1*J23L + Gt313*J23L)*PDstandardNth2alpha + - J33L*(-(J21L*PDstandardNth23alpha) - J31L*PDstandardNth33alpha) + - Gt113*J31L*PDstandardNth3alpha + (-dJ313L + - 2*cdphi3*J31L)*PDstandardNth3alpha + Gt213*J32L*PDstandardNth3alpha + - 2*cdphi1*J33L*PDstandardNth3alpha + Gt313*J33L*PDstandardNth3alpha + - alphaL*R13; - - CCTK_REAL Ats22 = (-dJ122L + Gt122*J11L + 4*cdphi2*J12L + Gt222*J12L + - Gt322*J13L)*PDstandardNth1alpha - 2*(J12L*J22L*PDstandardNth12alpha + - J12L*J32L*PDstandardNth13alpha + J22L*J32L*PDstandardNth23alpha) + - (-dJ222L + Gt122*J21L + 4*cdphi2*J22L + Gt222*J22L + - Gt322*J23L)*PDstandardNth2alpha + (-dJ322L + Gt122*J31L + 4*cdphi2*J32L - + Gt222*J32L + Gt322*J33L)*PDstandardNth3alpha + alphaL*R22 - - PDstandardNth11alpha*SQR(J12L) - PDstandardNth22alpha*SQR(J22L) - - PDstandardNth33alpha*SQR(J32L); - - CCTK_REAL Ats23 = J13L*(-(J12L*PDstandardNth11alpha) - - J22L*PDstandardNth12alpha - J32L*PDstandardNth13alpha) + - J12L*(-(J23L*PDstandardNth12alpha) - J33L*PDstandardNth13alpha) + - (-dJ123L + Gt123*J11L + 2*cdphi3*J12L + Gt223*J12L + 2*cdphi2*J13L + - Gt323*J13L)*PDstandardNth1alpha + J23L*(-(J22L*PDstandardNth22alpha) - - J32L*PDstandardNth23alpha) + (-dJ223L + Gt123*J21L + 2*cdphi3*J22L + - Gt223*J22L + 2*cdphi2*J23L + Gt323*J23L)*PDstandardNth2alpha + - J33L*(-(J22L*PDstandardNth23alpha) - J32L*PDstandardNth33alpha) + - (-dJ323L + Gt123*J31L)*PDstandardNth3alpha + - 2*cdphi3*J32L*PDstandardNth3alpha + Gt223*J32L*PDstandardNth3alpha + - 2*cdphi2*J33L*PDstandardNth3alpha + Gt323*J33L*PDstandardNth3alpha + - alphaL*R23; - - CCTK_REAL Ats33 = (-dJ133L + Gt133*J11L + Gt233*J12L + 4*cdphi3*J13L + - Gt333*J13L)*PDstandardNth1alpha - 2*(J13L*J23L*PDstandardNth12alpha + - J13L*J33L*PDstandardNth13alpha + J23L*J33L*PDstandardNth23alpha) + - (-dJ233L + Gt133*J21L + Gt233*J22L + 4*cdphi3*J23L + - Gt333*J23L)*PDstandardNth2alpha + (-dJ333L + Gt133*J31L + Gt233*J32L + - 4*cdphi3*J33L + Gt333*J33L)*PDstandardNth3alpha + alphaL*R33 - - PDstandardNth11alpha*SQR(J13L) - PDstandardNth22alpha*SQR(J23L) - - PDstandardNth33alpha*SQR(J33L); + CCTK_REAL Ats13 = -JacPDstandardNth13alpha + (2*cdphi3 + + Gt113)*JacPDstandardNth1alpha + Gt213*JacPDstandardNth2alpha + + (2*cdphi1 + Gt313)*JacPDstandardNth3alpha + alphaL*R13; + + CCTK_REAL Ats22 = Gt122*JacPDstandardNth1alpha - + JacPDstandardNth22alpha + (4*cdphi2 + Gt222)*JacPDstandardNth2alpha + + Gt322*JacPDstandardNth3alpha + alphaL*R22; + + CCTK_REAL Ats23 = Gt123*JacPDstandardNth1alpha - + JacPDstandardNth23alpha + (2*cdphi3 + Gt223)*JacPDstandardNth2alpha + + (2*cdphi2 + Gt323)*JacPDstandardNth3alpha + alphaL*R23; + + CCTK_REAL Ats33 = Gt133*JacPDstandardNth1alpha + + Gt233*JacPDstandardNth2alpha - JacPDstandardNth33alpha + (4*cdphi3 + + Gt333)*JacPDstandardNth3alpha + alphaL*R33; CCTK_REAL trAts = Ats11*gu11 + Ats22*gu22 + 2*(Ats12*gu12 + Ats13*gu13 + Ats23*gu23) + Ats33*gu33; - CCTK_REAL At11rhsL = (epsdiss1*J11L + epsdiss2*J12L + - epsdiss3*J13L)*PDdissipationNth1At11 + (epsdiss1*J21L + epsdiss2*J22L + - epsdiss3*J23L)*PDdissipationNth2At11 + (epsdiss1*J31L + epsdiss2*J32L + - epsdiss3*J33L)*PDdissipationNth3At11 - - 0.666666666666666666666666666667*At11L*(J11L*PDstandardNth1beta1 + - J12L*PDstandardNth1beta2 + J13L*PDstandardNth1beta3 + - J21L*PDstandardNth2beta1 + J22L*PDstandardNth2beta2 + - J23L*PDstandardNth2beta3 + J31L*PDstandardNth3beta1 + - J32L*PDstandardNth3beta2 + J33L*PDstandardNth3beta3) + - 2*(J11L*(At11L*PDstandardNth1beta1 + At12L*PDstandardNth1beta2 + - At13L*PDstandardNth1beta3) + J21L*(At11L*PDstandardNth2beta1 + - At12L*PDstandardNth2beta2 + At13L*PDstandardNth2beta3) + - J31L*(At11L*PDstandardNth3beta1 + At12L*PDstandardNth3beta2 + - At13L*PDstandardNth3beta3)) + (beta1L*J11L + beta2L*J12L + - beta3L*J13L)*PDupwindNthAnti1At11 + (beta1L*J21L + beta2L*J22L + - beta3L*J23L)*PDupwindNthAnti2At11 + (beta1L*J31L + beta2L*J32L + - beta3L*J33L)*PDupwindNthAnti3At11 + alphaL*(-2*(At11L*Atm11 + - At12L*Atm21 + At13L*Atm31) + At11L*trKL) + em4phi*(Ats11 - - 0.333333333333333333333333333333*g11*trAts - - 25.13274122871834590770114706623602307358*alphaL*(eTxxL - - 0.333333333333333333333333333333*g11*trS)) + (J11L*PDupwindNthSymm1At11 - + J21L*PDupwindNthSymm2At11 + J31L*PDupwindNthSymm3At11)*Abs(beta1L) + - (J12L*PDupwindNthSymm1At11 + J22L*PDupwindNthSymm2At11 + - J32L*PDupwindNthSymm3At11)*Abs(beta2L) + (J13L*PDupwindNthSymm1At11 + - J23L*PDupwindNthSymm2At11 + J33L*PDupwindNthSymm3At11)*Abs(beta3L); - - CCTK_REAL At12rhsL = (epsdiss1*J11L + epsdiss2*J12L + - epsdiss3*J13L)*PDdissipationNth1At12 + (epsdiss1*J21L + epsdiss2*J22L + - epsdiss3*J23L)*PDdissipationNth2At12 + (epsdiss1*J31L + epsdiss2*J32L + - epsdiss3*J33L)*PDdissipationNth3At12 + (At12L*J11L + - At11L*J12L)*PDstandardNth1beta1 + (At22L*J11L + - At12L*J12L)*PDstandardNth1beta2 + (At23L*J11L + - At13L*J12L)*PDstandardNth1beta3 + (At12L*J21L + - At11L*J22L)*PDstandardNth2beta1 + (At22L*J21L + - At12L*J22L)*PDstandardNth2beta2 + (At23L*J21L + - At13L*J22L)*PDstandardNth2beta3 + (At12L*J31L + - At11L*J32L)*PDstandardNth3beta1 + (At22L*J31L + - At12L*J32L)*PDstandardNth3beta2 + (At23L*J31L + - At13L*J32L)*PDstandardNth3beta3 - - 0.666666666666666666666666666667*At12L*(J11L*PDstandardNth1beta1 + - J12L*PDstandardNth1beta2 + J13L*PDstandardNth1beta3 + - J21L*PDstandardNth2beta1 + J22L*PDstandardNth2beta2 + - J23L*PDstandardNth2beta3 + J31L*PDstandardNth3beta1 + - J32L*PDstandardNth3beta2 + J33L*PDstandardNth3beta3) + (beta1L*J11L + - beta2L*J12L + beta3L*J13L)*PDupwindNthAnti1At12 + (beta1L*J21L + - beta2L*J22L + beta3L*J23L)*PDupwindNthAnti2At12 + (beta1L*J31L + - beta2L*J32L + beta3L*J33L)*PDupwindNthAnti3At12 + - alphaL*(-2*(At11L*Atm12 + At12L*Atm22 + At13L*Atm32) + At12L*trKL) + - em4phi*(Ats12 - 0.333333333333333333333333333333*g12*trAts - - 25.13274122871834590770114706623602307358*alphaL*(eTxyL - - 0.333333333333333333333333333333*g12*trS)) + (J11L*PDupwindNthSymm1At12 - + J21L*PDupwindNthSymm2At12 + J31L*PDupwindNthSymm3At12)*Abs(beta1L) + - (J12L*PDupwindNthSymm1At12 + J22L*PDupwindNthSymm2At12 + - J32L*PDupwindNthSymm3At12)*Abs(beta2L) + (J13L*PDupwindNthSymm1At12 + - J23L*PDupwindNthSymm2At12 + J33L*PDupwindNthSymm3At12)*Abs(beta3L); - - CCTK_REAL At13rhsL = (epsdiss1*J11L + epsdiss2*J12L + - epsdiss3*J13L)*PDdissipationNth1At13 + (epsdiss1*J21L + epsdiss2*J22L + - epsdiss3*J23L)*PDdissipationNth2At13 + (epsdiss1*J31L + epsdiss2*J32L + - epsdiss3*J33L)*PDdissipationNth3At13 + (At13L*J11L + - At11L*J13L)*PDstandardNth1beta1 + (At23L*J11L + - At12L*J13L)*PDstandardNth1beta2 + (At33L*J11L + - At13L*J13L)*PDstandardNth1beta3 + (At13L*J21L + - At11L*J23L)*PDstandardNth2beta1 + (At23L*J21L + - At12L*J23L)*PDstandardNth2beta2 + (At33L*J21L + - At13L*J23L)*PDstandardNth2beta3 + (At13L*J31L + - At11L*J33L)*PDstandardNth3beta1 + (At23L*J31L + - At12L*J33L)*PDstandardNth3beta2 + (At33L*J31L + - At13L*J33L)*PDstandardNth3beta3 - - 0.666666666666666666666666666667*At13L*(J11L*PDstandardNth1beta1 + - J12L*PDstandardNth1beta2 + J13L*PDstandardNth1beta3 + - J21L*PDstandardNth2beta1 + J22L*PDstandardNth2beta2 + - J23L*PDstandardNth2beta3 + J31L*PDstandardNth3beta1 + - J32L*PDstandardNth3beta2 + J33L*PDstandardNth3beta3) + (beta1L*J11L + - beta2L*J12L + beta3L*J13L)*PDupwindNthAnti1At13 + (beta1L*J21L + - beta2L*J22L + beta3L*J23L)*PDupwindNthAnti2At13 + (beta1L*J31L + - beta2L*J32L + beta3L*J33L)*PDupwindNthAnti3At13 + - alphaL*(-2*(At11L*Atm13 + At12L*Atm23 + At13L*Atm33) + At13L*trKL) + - em4phi*(Ats13 - 0.333333333333333333333333333333*g13*trAts - - 25.13274122871834590770114706623602307358*alphaL*(eTxzL - - 0.333333333333333333333333333333*g13*trS)) + (J11L*PDupwindNthSymm1At13 - + J21L*PDupwindNthSymm2At13 + J31L*PDupwindNthSymm3At13)*Abs(beta1L) + - (J12L*PDupwindNthSymm1At13 + J22L*PDupwindNthSymm2At13 + - J32L*PDupwindNthSymm3At13)*Abs(beta2L) + (J13L*PDupwindNthSymm1At13 + - J23L*PDupwindNthSymm2At13 + J33L*PDupwindNthSymm3At13)*Abs(beta3L); - - CCTK_REAL At22rhsL = (epsdiss1*J11L + epsdiss2*J12L + - epsdiss3*J13L)*PDdissipationNth1At22 + (epsdiss1*J21L + epsdiss2*J22L + - epsdiss3*J23L)*PDdissipationNth2At22 + (epsdiss1*J31L + epsdiss2*J32L + - epsdiss3*J33L)*PDdissipationNth3At22 - - 0.666666666666666666666666666667*At22L*(J11L*PDstandardNth1beta1 + - J12L*PDstandardNth1beta2 + J13L*PDstandardNth1beta3 + - J21L*PDstandardNth2beta1 + J22L*PDstandardNth2beta2 + - J23L*PDstandardNth2beta3 + J31L*PDstandardNth3beta1 + - J32L*PDstandardNth3beta2 + J33L*PDstandardNth3beta3) + - 2*(J12L*(At12L*PDstandardNth1beta1 + At22L*PDstandardNth1beta2 + - At23L*PDstandardNth1beta3) + J22L*(At12L*PDstandardNth2beta1 + - At22L*PDstandardNth2beta2 + At23L*PDstandardNth2beta3) + - J32L*(At12L*PDstandardNth3beta1 + At22L*PDstandardNth3beta2 + - At23L*PDstandardNth3beta3)) + (beta1L*J11L + beta2L*J12L + - beta3L*J13L)*PDupwindNthAnti1At22 + (beta1L*J21L + beta2L*J22L + - beta3L*J23L)*PDupwindNthAnti2At22 + (beta1L*J31L + beta2L*J32L + - beta3L*J33L)*PDupwindNthAnti3At22 + alphaL*(-2*(At12L*Atm12 + - At22L*Atm22 + At23L*Atm32) + At22L*trKL) + em4phi*(Ats22 - - 0.333333333333333333333333333333*g22*trAts - - 25.13274122871834590770114706623602307358*alphaL*(eTyyL - - 0.333333333333333333333333333333*g22*trS)) + (J11L*PDupwindNthSymm1At22 - + J21L*PDupwindNthSymm2At22 + J31L*PDupwindNthSymm3At22)*Abs(beta1L) + - (J12L*PDupwindNthSymm1At22 + J22L*PDupwindNthSymm2At22 + - J32L*PDupwindNthSymm3At22)*Abs(beta2L) + (J13L*PDupwindNthSymm1At22 + - J23L*PDupwindNthSymm2At22 + J33L*PDupwindNthSymm3At22)*Abs(beta3L); - - CCTK_REAL At23rhsL = (epsdiss1*J11L + epsdiss2*J12L + - epsdiss3*J13L)*PDdissipationNth1At23 + (epsdiss1*J21L + epsdiss2*J22L + - epsdiss3*J23L)*PDdissipationNth2At23 + (epsdiss1*J31L + epsdiss2*J32L + - epsdiss3*J33L)*PDdissipationNth3At23 + (At13L*J12L + - At12L*J13L)*PDstandardNth1beta1 + (At23L*J12L + - At22L*J13L)*PDstandardNth1beta2 + (At33L*J12L + - At23L*J13L)*PDstandardNth1beta3 + (At13L*J22L + - At12L*J23L)*PDstandardNth2beta1 + (At23L*J22L + - At22L*J23L)*PDstandardNth2beta2 + (At33L*J22L + - At23L*J23L)*PDstandardNth2beta3 + (At13L*J32L + - At12L*J33L)*PDstandardNth3beta1 + (At23L*J32L + - At22L*J33L)*PDstandardNth3beta2 + (At33L*J32L + - At23L*J33L)*PDstandardNth3beta3 - - 0.666666666666666666666666666667*At23L*(J11L*PDstandardNth1beta1 + - J12L*PDstandardNth1beta2 + J13L*PDstandardNth1beta3 + - J21L*PDstandardNth2beta1 + J22L*PDstandardNth2beta2 + - J23L*PDstandardNth2beta3 + J31L*PDstandardNth3beta1 + - J32L*PDstandardNth3beta2 + J33L*PDstandardNth3beta3) + (beta1L*J11L + - beta2L*J12L + beta3L*J13L)*PDupwindNthAnti1At23 + (beta1L*J21L + - beta2L*J22L + beta3L*J23L)*PDupwindNthAnti2At23 + (beta1L*J31L + - beta2L*J32L + beta3L*J33L)*PDupwindNthAnti3At23 + - alphaL*(-2*(At12L*Atm13 + At22L*Atm23 + At23L*Atm33) + At23L*trKL) + - em4phi*(Ats23 - 0.333333333333333333333333333333*g23*trAts - - 25.13274122871834590770114706623602307358*alphaL*(eTyzL - - 0.333333333333333333333333333333*g23*trS)) + (J11L*PDupwindNthSymm1At23 - + J21L*PDupwindNthSymm2At23 + J31L*PDupwindNthSymm3At23)*Abs(beta1L) + - (J12L*PDupwindNthSymm1At23 + J22L*PDupwindNthSymm2At23 + - J32L*PDupwindNthSymm3At23)*Abs(beta2L) + (J13L*PDupwindNthSymm1At23 + - J23L*PDupwindNthSymm2At23 + J33L*PDupwindNthSymm3At23)*Abs(beta3L); - - CCTK_REAL At33rhsL = (epsdiss1*J11L + epsdiss2*J12L + - epsdiss3*J13L)*PDdissipationNth1At33 + (epsdiss1*J21L + epsdiss2*J22L + - epsdiss3*J23L)*PDdissipationNth2At33 + (epsdiss1*J31L + epsdiss2*J32L + - epsdiss3*J33L)*PDdissipationNth3At33 - - 0.666666666666666666666666666667*At33L*(J11L*PDstandardNth1beta1 + - J12L*PDstandardNth1beta2 + J13L*PDstandardNth1beta3 + - J21L*PDstandardNth2beta1 + J22L*PDstandardNth2beta2 + - J23L*PDstandardNth2beta3 + J31L*PDstandardNth3beta1 + - J32L*PDstandardNth3beta2 + J33L*PDstandardNth3beta3) + - 2*(J13L*(At13L*PDstandardNth1beta1 + At23L*PDstandardNth1beta2 + - At33L*PDstandardNth1beta3) + J23L*(At13L*PDstandardNth2beta1 + - At23L*PDstandardNth2beta2 + At33L*PDstandardNth2beta3) + - J33L*(At13L*PDstandardNth3beta1 + At23L*PDstandardNth3beta2 + - At33L*PDstandardNth3beta3)) + (beta1L*J11L + beta2L*J12L + - beta3L*J13L)*PDupwindNthAnti1At33 + (beta1L*J21L + beta2L*J22L + - beta3L*J23L)*PDupwindNthAnti2At33 + (beta1L*J31L + beta2L*J32L + - beta3L*J33L)*PDupwindNthAnti3At33 + alphaL*(-2*(At13L*Atm13 + - At23L*Atm23 + At33L*Atm33) + At33L*trKL) + em4phi*(Ats33 - - 0.333333333333333333333333333333*g33*trAts - - 25.13274122871834590770114706623602307358*alphaL*(eTzzL - - 0.333333333333333333333333333333*g33*trS)) + (J11L*PDupwindNthSymm1At33 - + J21L*PDupwindNthSymm2At33 + J31L*PDupwindNthSymm3At33)*Abs(beta1L) + - (J12L*PDupwindNthSymm1At33 + J22L*PDupwindNthSymm2At33 + - J32L*PDupwindNthSymm3At33)*Abs(beta2L) + (J13L*PDupwindNthSymm1At33 + - J23L*PDupwindNthSymm2At33 + J33L*PDupwindNthSymm3At33)*Abs(beta3L); + CCTK_REAL At11rhsL = 2.*(At12L*JacPDstandardNth1beta2 + + At13L*JacPDstandardNth1beta3) + + At11L*(1.333333333333333333333333333333333333333*JacPDstandardNth1beta1 + - 0.6666666666666666666666666666666666666667*(JacPDstandardNth2beta2 + + JacPDstandardNth3beta3)) + em4phi*(Ats11 - + 0.3333333333333333333333333333333333333333*g11*trAts) + + alphaL*(-2.*(At12L*Atm21 + At13L*Atm31) + At11L*(-2.*Atm11 + trKL) + + em4phi*(-25.13274122871834590770114706623602307358*eTxxL + + 8.377580409572781969233715688745341024526*g11*trS)); + + CCTK_REAL At12rhsL = At22L*JacPDstandardNth1beta2 + + At23L*JacPDstandardNth1beta3 + At11L*JacPDstandardNth2beta1 + + At13L*JacPDstandardNth2beta3 + + At12L*(0.3333333333333333333333333333333333333333*(JacPDstandardNth1beta1 + + JacPDstandardNth2beta2) - + 0.6666666666666666666666666666666666666667*JacPDstandardNth3beta3) + + em4phi*(Ats12 - 0.3333333333333333333333333333333333333333*g12*trAts) + + alphaL*(-2.*(At11L*Atm12 + At12L*Atm22 + At13L*Atm32) + At12L*trKL + + em4phi*(-25.13274122871834590770114706623602307358*eTxyL + + 8.377580409572781969233715688745341024526*g12*trS)); + + CCTK_REAL At13rhsL = At23L*JacPDstandardNth1beta2 + + At33L*JacPDstandardNth1beta3 + At11L*JacPDstandardNth3beta1 + + At12L*JacPDstandardNth3beta2 + + At13L*(-0.6666666666666666666666666666666666666667*JacPDstandardNth2beta2 + + 0.3333333333333333333333333333333333333333*(JacPDstandardNth1beta1 + + JacPDstandardNth3beta3)) + em4phi*(Ats13 - + 0.3333333333333333333333333333333333333333*g13*trAts) + + alphaL*(-2.*(At11L*Atm13 + At12L*Atm23 + At13L*Atm33) + At13L*trKL + + em4phi*(-25.13274122871834590770114706623602307358*eTxzL + + 8.377580409572781969233715688745341024526*g13*trS)); + + CCTK_REAL At22rhsL = 2.*(At12L*JacPDstandardNth2beta1 + + At23L*JacPDstandardNth2beta3) + + At22L*(1.333333333333333333333333333333333333333*JacPDstandardNth2beta2 + - 0.6666666666666666666666666666666666666667*(JacPDstandardNth1beta1 + + JacPDstandardNth3beta3)) + em4phi*(Ats22 - + 0.3333333333333333333333333333333333333333*g22*trAts) + + alphaL*(-2.*(At12L*Atm12 + At22L*Atm22 + At23L*Atm32) + At22L*trKL + + em4phi*(-25.13274122871834590770114706623602307358*eTyyL + + 8.377580409572781969233715688745341024526*g22*trS)); + + CCTK_REAL At23rhsL = At13L*JacPDstandardNth2beta1 + + At33L*JacPDstandardNth2beta3 + At12L*JacPDstandardNth3beta1 + + At22L*JacPDstandardNth3beta2 + + At23L*(-0.6666666666666666666666666666666666666667*JacPDstandardNth1beta1 + + 0.3333333333333333333333333333333333333333*(JacPDstandardNth2beta2 + + JacPDstandardNth3beta3)) + em4phi*(Ats23 - + 0.3333333333333333333333333333333333333333*g23*trAts) + + alphaL*(-2.*(At12L*Atm13 + At22L*Atm23 + At23L*Atm33) + At23L*trKL + + em4phi*(-25.13274122871834590770114706623602307358*eTyzL + + 8.377580409572781969233715688745341024526*g23*trS)); + + CCTK_REAL At33rhsL = 2.*(At13L*JacPDstandardNth3beta1 + + At23L*JacPDstandardNth3beta2) + + At33L*(-0.6666666666666666666666666666666666666667*(JacPDstandardNth1beta1 + + JacPDstandardNth2beta2) + + 1.333333333333333333333333333333333333333*JacPDstandardNth3beta3) + + em4phi*(Ats33 - 0.3333333333333333333333333333333333333333*g33*trAts) + + alphaL*(-2.*(At13L*Atm13 + At23L*Atm23 + At33L*Atm33) + At33L*trKL + + em4phi*(-25.13274122871834590770114706623602307358*eTzzL + + 8.377580409572781969233715688745341024526*g33*trS)); /* Copy local copies back to grid functions */ At11rhs[index] = At11rhsL; diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_RHSStaticBoundary.cc b/ML_BSSN_MP/src/ML_BSSN_MP_RHSStaticBoundary.cc index 677e2a5..c5d97c1 100644 --- a/ML_BSSN_MP/src/ML_BSSN_MP_RHSStaticBoundary.cc +++ b/ML_BSSN_MP/src/ML_BSSN_MP_RHSStaticBoundary.cc @@ -124,6 +124,51 @@ static void ML_BSSN_MP_RHSStaticBoundary_Body(cGH const * restrict const cctkGH, CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy)); CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz)); + /* 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_BSSN_MP_RHSStaticBoundary, @@ -136,6 +181,7 @@ static void ML_BSSN_MP_RHSStaticBoundary_Body(cGH const * restrict const cctkGH, + /* Include user supplied include files */ /* Precompute derivatives */ diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_boundary.cc b/ML_BSSN_MP/src/ML_BSSN_MP_boundary.cc index d61c413..13d5e5e 100644 --- a/ML_BSSN_MP/src/ML_BSSN_MP_boundary.cc +++ b/ML_BSSN_MP/src/ML_BSSN_MP_boundary.cc @@ -124,6 +124,51 @@ static void ML_BSSN_MP_boundary_Body(cGH const * restrict const cctkGH, int cons CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy)); CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz)); + /* 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_BSSN_MP_boundary, @@ -136,12 +181,13 @@ static void ML_BSSN_MP_boundary_Body(cGH const * restrict const cctkGH, int cons + /* Include user supplied include files */ /* Precompute derivatives */ /* Calculate temporaries and grid functions */ - CCTK_REAL phiL = IfThen(ToReal(conformalMethod),1,0); + CCTK_REAL phiL = IfThen(conformalMethod,1,0); CCTK_REAL gt11L = 1; diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_constraints1.cc b/ML_BSSN_MP/src/ML_BSSN_MP_constraints1.cc index 90336aa..12e18bb 100644 --- a/ML_BSSN_MP/src/ML_BSSN_MP_constraints1.cc +++ b/ML_BSSN_MP/src/ML_BSSN_MP_constraints1.cc @@ -51,8 +51,8 @@ static void ML_BSSN_MP_constraints1_Body(cGH const * restrict const cctkGH, int return; } - const char *groups[] = {"Coordinates::jacobian","Coordinates::jacobian2","ML_BSSN_MP::ML_curv","ML_BSSN_MP::ML_Gamma","ML_BSSN_MP::ML_Ham","ML_BSSN_MP::ML_lapse","ML_BSSN_MP::ML_log_confac","ML_BSSN_MP::ML_metric","ML_BSSN_MP::ML_shift","ML_BSSN_MP::ML_trace_curv"}; - GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_constraints1", 10, groups); + const char *groups[] = {"ML_BSSN_MP::ML_curv","ML_BSSN_MP::ML_Gamma","ML_BSSN_MP::ML_Ham","ML_BSSN_MP::ML_lapse","ML_BSSN_MP::ML_log_confac","ML_BSSN_MP::ML_metric","ML_BSSN_MP::ML_shift","ML_BSSN_MP::ML_trace_curv"}; + GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_constraints1", 8, groups); GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_constraints1", 2, 2, 2); @@ -101,6 +101,51 @@ static void ML_BSSN_MP_constraints1_Body(cGH const * restrict const cctkGH, int CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy)); CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz)); + /* 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_BSSN_MP_constraints1, @@ -121,39 +166,12 @@ static void ML_BSSN_MP_constraints1_Body(cGH const * restrict const cctkGH, int CCTK_REAL beta1L = beta1[index]; CCTK_REAL beta2L = beta2[index]; CCTK_REAL beta3L = beta3[index]; - CCTK_REAL dJ111L = dJ111[index]; - CCTK_REAL dJ112L = dJ112[index]; - CCTK_REAL dJ113L = dJ113[index]; - CCTK_REAL dJ122L = dJ122[index]; - CCTK_REAL dJ123L = dJ123[index]; - CCTK_REAL dJ133L = dJ133[index]; - CCTK_REAL dJ211L = dJ211[index]; - CCTK_REAL dJ212L = dJ212[index]; - CCTK_REAL dJ213L = dJ213[index]; - CCTK_REAL dJ222L = dJ222[index]; - CCTK_REAL dJ223L = dJ223[index]; - CCTK_REAL dJ233L = dJ233[index]; - CCTK_REAL dJ311L = dJ311[index]; - CCTK_REAL dJ312L = dJ312[index]; - CCTK_REAL dJ313L = dJ313[index]; - CCTK_REAL dJ322L = dJ322[index]; - CCTK_REAL dJ323L = dJ323[index]; - CCTK_REAL dJ333L = dJ333[index]; CCTK_REAL gt11L = gt11[index]; CCTK_REAL gt12L = gt12[index]; CCTK_REAL gt13L = gt13[index]; CCTK_REAL gt22L = gt22[index]; CCTK_REAL gt23L = gt23[index]; CCTK_REAL gt33L = gt33[index]; - CCTK_REAL J11L = J11[index]; - CCTK_REAL J12L = J12[index]; - CCTK_REAL J13L = J13[index]; - CCTK_REAL J21L = J21[index]; - CCTK_REAL J22L = J22[index]; - CCTK_REAL J23L = J23[index]; - CCTK_REAL J31L = J31[index]; - CCTK_REAL J32L = J32[index]; - CCTK_REAL J33L = J33[index]; CCTK_REAL phiL = phi[index]; CCTK_REAL trKL = trK[index]; CCTK_REAL Xt1L = Xt1[index]; @@ -189,6 +207,39 @@ static void ML_BSSN_MP_constraints1_Body(cGH const * restrict const cctkGH, int eTzzL = ToReal(0.0); } + CCTK_REAL 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 = dJ111[index]; + dJ112L = dJ112[index]; + dJ113L = dJ113[index]; + dJ122L = dJ122[index]; + dJ123L = dJ123[index]; + dJ133L = dJ133[index]; + dJ211L = dJ211[index]; + dJ212L = dJ212[index]; + dJ213L = dJ213[index]; + dJ222L = dJ222[index]; + dJ223L = dJ223[index]; + dJ233L = dJ233[index]; + dJ311L = dJ311[index]; + dJ312L = dJ312[index]; + dJ313L = dJ313[index]; + dJ322L = dJ322[index]; + dJ323L = dJ323[index]; + dJ333L = dJ333[index]; + J11L = J11[index]; + J12L = J12[index]; + J13L = J13[index]; + J21L = J21[index]; + J22L = J22[index]; + J23L = J23[index]; + J31L = J31[index]; + J32L = J32[index]; + J33L = J33[index]; + } + /* Include user supplied include files */ /* Precompute derivatives */ @@ -266,6 +317,810 @@ static void ML_BSSN_MP_constraints1_Body(cGH const * restrict const cctkGH, int CCTK_REAL const PDstandardNth3Xt3 = PDstandardNth3(&Xt3[index]); /* Calculate temporaries and grid functions */ + CCTK_REAL JacPDstandardNth11gt11; + CCTK_REAL JacPDstandardNth11gt12; + CCTK_REAL JacPDstandardNth11gt13; + CCTK_REAL JacPDstandardNth11gt22; + CCTK_REAL JacPDstandardNth11gt23; + CCTK_REAL JacPDstandardNth11gt33; + CCTK_REAL JacPDstandardNth11phi; + CCTK_REAL JacPDstandardNth12gt11; + CCTK_REAL JacPDstandardNth12gt12; + CCTK_REAL JacPDstandardNth12gt13; + CCTK_REAL JacPDstandardNth12gt22; + CCTK_REAL JacPDstandardNth12gt23; + CCTK_REAL JacPDstandardNth12gt33; + CCTK_REAL JacPDstandardNth12phi; + CCTK_REAL JacPDstandardNth13gt11; + CCTK_REAL JacPDstandardNth13gt12; + CCTK_REAL JacPDstandardNth13gt13; + CCTK_REAL JacPDstandardNth13gt22; + CCTK_REAL JacPDstandardNth13gt23; + CCTK_REAL JacPDstandardNth13gt33; + CCTK_REAL JacPDstandardNth13phi; + CCTK_REAL JacPDstandardNth1gt11; + CCTK_REAL JacPDstandardNth1gt12; + CCTK_REAL JacPDstandardNth1gt13; + CCTK_REAL JacPDstandardNth1gt22; + CCTK_REAL JacPDstandardNth1gt23; + CCTK_REAL JacPDstandardNth1gt33; + CCTK_REAL JacPDstandardNth1phi; + CCTK_REAL JacPDstandardNth1Xt1; + CCTK_REAL JacPDstandardNth1Xt2; + CCTK_REAL JacPDstandardNth1Xt3; + CCTK_REAL JacPDstandardNth21gt11; + CCTK_REAL JacPDstandardNth21gt12; + CCTK_REAL JacPDstandardNth21gt13; + CCTK_REAL JacPDstandardNth21gt22; + CCTK_REAL JacPDstandardNth21gt23; + CCTK_REAL JacPDstandardNth21gt33; + CCTK_REAL JacPDstandardNth22gt11; + CCTK_REAL JacPDstandardNth22gt12; + CCTK_REAL JacPDstandardNth22gt13; + CCTK_REAL JacPDstandardNth22gt22; + CCTK_REAL JacPDstandardNth22gt23; + CCTK_REAL JacPDstandardNth22gt33; + CCTK_REAL JacPDstandardNth22phi; + CCTK_REAL JacPDstandardNth23gt11; + CCTK_REAL JacPDstandardNth23gt12; + CCTK_REAL JacPDstandardNth23gt13; + CCTK_REAL JacPDstandardNth23gt22; + CCTK_REAL JacPDstandardNth23gt23; + CCTK_REAL JacPDstandardNth23gt33; + CCTK_REAL JacPDstandardNth23phi; + CCTK_REAL JacPDstandardNth2gt11; + CCTK_REAL JacPDstandardNth2gt12; + CCTK_REAL JacPDstandardNth2gt13; + CCTK_REAL JacPDstandardNth2gt22; + CCTK_REAL JacPDstandardNth2gt23; + CCTK_REAL JacPDstandardNth2gt33; + CCTK_REAL JacPDstandardNth2phi; + CCTK_REAL JacPDstandardNth2Xt1; + CCTK_REAL JacPDstandardNth2Xt2; + CCTK_REAL JacPDstandardNth2Xt3; + CCTK_REAL JacPDstandardNth31gt11; + CCTK_REAL JacPDstandardNth31gt12; + CCTK_REAL JacPDstandardNth31gt13; + CCTK_REAL JacPDstandardNth31gt22; + CCTK_REAL JacPDstandardNth31gt23; + CCTK_REAL JacPDstandardNth31gt33; + CCTK_REAL JacPDstandardNth32gt11; + CCTK_REAL JacPDstandardNth32gt12; + CCTK_REAL JacPDstandardNth32gt13; + CCTK_REAL JacPDstandardNth32gt22; + CCTK_REAL JacPDstandardNth32gt23; + CCTK_REAL JacPDstandardNth32gt33; + CCTK_REAL JacPDstandardNth33gt11; + CCTK_REAL JacPDstandardNth33gt12; + CCTK_REAL JacPDstandardNth33gt13; + CCTK_REAL JacPDstandardNth33gt22; + CCTK_REAL JacPDstandardNth33gt23; + CCTK_REAL JacPDstandardNth33gt33; + CCTK_REAL JacPDstandardNth33phi; + CCTK_REAL JacPDstandardNth3gt11; + CCTK_REAL JacPDstandardNth3gt12; + CCTK_REAL JacPDstandardNth3gt13; + CCTK_REAL JacPDstandardNth3gt22; + CCTK_REAL JacPDstandardNth3gt23; + CCTK_REAL JacPDstandardNth3gt33; + CCTK_REAL JacPDstandardNth3phi; + CCTK_REAL JacPDstandardNth3Xt1; + CCTK_REAL JacPDstandardNth3Xt2; + CCTK_REAL JacPDstandardNth3Xt3; + + if (use_jacobian) + { + JacPDstandardNth1gt11 = J11L*PDstandardNth1gt11 + + J21L*PDstandardNth2gt11 + J31L*PDstandardNth3gt11; + + JacPDstandardNth1gt12 = J11L*PDstandardNth1gt12 + + J21L*PDstandardNth2gt12 + J31L*PDstandardNth3gt12; + + JacPDstandardNth1gt13 = J11L*PDstandardNth1gt13 + + J21L*PDstandardNth2gt13 + J31L*PDstandardNth3gt13; + + JacPDstandardNth1gt22 = J11L*PDstandardNth1gt22 + + J21L*PDstandardNth2gt22 + J31L*PDstandardNth3gt22; + + JacPDstandardNth1gt23 = J11L*PDstandardNth1gt23 + + J21L*PDstandardNth2gt23 + J31L*PDstandardNth3gt23; + + JacPDstandardNth1gt33 = J11L*PDstandardNth1gt33 + + J21L*PDstandardNth2gt33 + J31L*PDstandardNth3gt33; + + JacPDstandardNth1phi = J11L*PDstandardNth1phi + J21L*PDstandardNth2phi + + J31L*PDstandardNth3phi; + + JacPDstandardNth1Xt1 = J11L*PDstandardNth1Xt1 + J21L*PDstandardNth2Xt1 + + J31L*PDstandardNth3Xt1; + + JacPDstandardNth1Xt2 = J11L*PDstandardNth1Xt2 + J21L*PDstandardNth2Xt2 + + J31L*PDstandardNth3Xt2; + + JacPDstandardNth1Xt3 = J11L*PDstandardNth1Xt3 + J21L*PDstandardNth2Xt3 + + J31L*PDstandardNth3Xt3; + + JacPDstandardNth2gt11 = J12L*PDstandardNth1gt11 + + J22L*PDstandardNth2gt11 + J32L*PDstandardNth3gt11; + + JacPDstandardNth2gt12 = J12L*PDstandardNth1gt12 + + J22L*PDstandardNth2gt12 + J32L*PDstandardNth3gt12; + + JacPDstandardNth2gt13 = J12L*PDstandardNth1gt13 + + J22L*PDstandardNth2gt13 + J32L*PDstandardNth3gt13; + + JacPDstandardNth2gt22 = J12L*PDstandardNth1gt22 + + J22L*PDstandardNth2gt22 + J32L*PDstandardNth3gt22; + + JacPDstandardNth2gt23 = J12L*PDstandardNth1gt23 + + J22L*PDstandardNth2gt23 + J32L*PDstandardNth3gt23; + + JacPDstandardNth2gt33 = J12L*PDstandardNth1gt33 + + J22L*PDstandardNth2gt33 + J32L*PDstandardNth3gt33; + + JacPDstandardNth2phi = J12L*PDstandardNth1phi + J22L*PDstandardNth2phi + + J32L*PDstandardNth3phi; + + JacPDstandardNth2Xt1 = J12L*PDstandardNth1Xt1 + J22L*PDstandardNth2Xt1 + + J32L*PDstandardNth3Xt1; + + JacPDstandardNth2Xt2 = J12L*PDstandardNth1Xt2 + J22L*PDstandardNth2Xt2 + + J32L*PDstandardNth3Xt2; + + JacPDstandardNth2Xt3 = J12L*PDstandardNth1Xt3 + J22L*PDstandardNth2Xt3 + + J32L*PDstandardNth3Xt3; + + JacPDstandardNth3gt11 = J13L*PDstandardNth1gt11 + + J23L*PDstandardNth2gt11 + J33L*PDstandardNth3gt11; + + JacPDstandardNth3gt12 = J13L*PDstandardNth1gt12 + + J23L*PDstandardNth2gt12 + J33L*PDstandardNth3gt12; + + JacPDstandardNth3gt13 = J13L*PDstandardNth1gt13 + + J23L*PDstandardNth2gt13 + J33L*PDstandardNth3gt13; + + JacPDstandardNth3gt22 = J13L*PDstandardNth1gt22 + + J23L*PDstandardNth2gt22 + J33L*PDstandardNth3gt22; + + JacPDstandardNth3gt23 = J13L*PDstandardNth1gt23 + + J23L*PDstandardNth2gt23 + J33L*PDstandardNth3gt23; + + JacPDstandardNth3gt33 = J13L*PDstandardNth1gt33 + + J23L*PDstandardNth2gt33 + J33L*PDstandardNth3gt33; + + JacPDstandardNth3phi = J13L*PDstandardNth1phi + J23L*PDstandardNth2phi + + J33L*PDstandardNth3phi; + + JacPDstandardNth3Xt1 = J13L*PDstandardNth1Xt1 + J23L*PDstandardNth2Xt1 + + J33L*PDstandardNth3Xt1; + + JacPDstandardNth3Xt2 = J13L*PDstandardNth1Xt2 + J23L*PDstandardNth2Xt2 + + J33L*PDstandardNth3Xt2; + + JacPDstandardNth3Xt3 = J13L*PDstandardNth1Xt3 + J23L*PDstandardNth2Xt3 + + J33L*PDstandardNth3Xt3; + + JacPDstandardNth11gt11 = dJ111L*PDstandardNth1gt11 + + 2*(J11L*(J21L*PDstandardNth12gt11 + J31L*PDstandardNth13gt11) + + J21L*J31L*PDstandardNth23gt11) + dJ211L*PDstandardNth2gt11 + + dJ311L*PDstandardNth3gt11 + PDstandardNth11gt11*SQR(J11L) + + PDstandardNth22gt11*SQR(J21L) + PDstandardNth33gt11*SQR(J31L); + + JacPDstandardNth11gt12 = dJ111L*PDstandardNth1gt12 + + 2*(J11L*(J21L*PDstandardNth12gt12 + J31L*PDstandardNth13gt12) + + J21L*J31L*PDstandardNth23gt12) + dJ211L*PDstandardNth2gt12 + + dJ311L*PDstandardNth3gt12 + PDstandardNth11gt12*SQR(J11L) + + PDstandardNth22gt12*SQR(J21L) + PDstandardNth33gt12*SQR(J31L); + + JacPDstandardNth11gt13 = dJ111L*PDstandardNth1gt13 + + 2*(J11L*(J21L*PDstandardNth12gt13 + J31L*PDstandardNth13gt13) + + J21L*J31L*PDstandardNth23gt13) + dJ211L*PDstandardNth2gt13 + + dJ311L*PDstandardNth3gt13 + PDstandardNth11gt13*SQR(J11L) + + PDstandardNth22gt13*SQR(J21L) + PDstandardNth33gt13*SQR(J31L); + + JacPDstandardNth11gt22 = dJ111L*PDstandardNth1gt22 + + 2*(J11L*(J21L*PDstandardNth12gt22 + J31L*PDstandardNth13gt22) + + J21L*J31L*PDstandardNth23gt22) + dJ211L*PDstandardNth2gt22 + + dJ311L*PDstandardNth3gt22 + PDstandardNth11gt22*SQR(J11L) + + PDstandardNth22gt22*SQR(J21L) + PDstandardNth33gt22*SQR(J31L); + + JacPDstandardNth11gt23 = dJ111L*PDstandardNth1gt23 + + 2*(J11L*(J21L*PDstandardNth12gt23 + J31L*PDstandardNth13gt23) + + J21L*J31L*PDstandardNth23gt23) + dJ211L*PDstandardNth2gt23 + + dJ311L*PDstandardNth3gt23 + PDstandardNth11gt23*SQR(J11L) + + PDstandardNth22gt23*SQR(J21L) + PDstandardNth33gt23*SQR(J31L); + + JacPDstandardNth11gt33 = dJ111L*PDstandardNth1gt33 + + 2*(J11L*(J21L*PDstandardNth12gt33 + J31L*PDstandardNth13gt33) + + J21L*J31L*PDstandardNth23gt33) + dJ211L*PDstandardNth2gt33 + + dJ311L*PDstandardNth3gt33 + PDstandardNth11gt33*SQR(J11L) + + PDstandardNth22gt33*SQR(J21L) + PDstandardNth33gt33*SQR(J31L); + + JacPDstandardNth11phi = dJ111L*PDstandardNth1phi + + 2*(J11L*(J21L*PDstandardNth12phi + J31L*PDstandardNth13phi) + + J21L*J31L*PDstandardNth23phi) + dJ211L*PDstandardNth2phi + + dJ311L*PDstandardNth3phi + PDstandardNth11phi*SQR(J11L) + + PDstandardNth22phi*SQR(J21L) + PDstandardNth33phi*SQR(J31L); + + JacPDstandardNth22gt11 = dJ122L*PDstandardNth1gt11 + + 2*(J12L*(J22L*PDstandardNth12gt11 + J32L*PDstandardNth13gt11) + + J22L*J32L*PDstandardNth23gt11) + dJ222L*PDstandardNth2gt11 + + dJ322L*PDstandardNth3gt11 + PDstandardNth11gt11*SQR(J12L) + + PDstandardNth22gt11*SQR(J22L) + PDstandardNth33gt11*SQR(J32L); + + JacPDstandardNth22gt12 = dJ122L*PDstandardNth1gt12 + + 2*(J12L*(J22L*PDstandardNth12gt12 + J32L*PDstandardNth13gt12) + + J22L*J32L*PDstandardNth23gt12) + dJ222L*PDstandardNth2gt12 + + dJ322L*PDstandardNth3gt12 + PDstandardNth11gt12*SQR(J12L) + + PDstandardNth22gt12*SQR(J22L) + PDstandardNth33gt12*SQR(J32L); + + JacPDstandardNth22gt13 = dJ122L*PDstandardNth1gt13 + + 2*(J12L*(J22L*PDstandardNth12gt13 + J32L*PDstandardNth13gt13) + + J22L*J32L*PDstandardNth23gt13) + dJ222L*PDstandardNth2gt13 + + dJ322L*PDstandardNth3gt13 + PDstandardNth11gt13*SQR(J12L) + + PDstandardNth22gt13*SQR(J22L) + PDstandardNth33gt13*SQR(J32L); + + JacPDstandardNth22gt22 = dJ122L*PDstandardNth1gt22 + + 2*(J12L*(J22L*PDstandardNth12gt22 + J32L*PDstandardNth13gt22) + + J22L*J32L*PDstandardNth23gt22) + dJ222L*PDstandardNth2gt22 + + dJ322L*PDstandardNth3gt22 + PDstandardNth11gt22*SQR(J12L) + + PDstandardNth22gt22*SQR(J22L) + PDstandardNth33gt22*SQR(J32L); + + JacPDstandardNth22gt23 = dJ122L*PDstandardNth1gt23 + + 2*(J12L*(J22L*PDstandardNth12gt23 + J32L*PDstandardNth13gt23) + + J22L*J32L*PDstandardNth23gt23) + dJ222L*PDstandardNth2gt23 + + dJ322L*PDstandardNth3gt23 + PDstandardNth11gt23*SQR(J12L) + + PDstandardNth22gt23*SQR(J22L) + PDstandardNth33gt23*SQR(J32L); + + JacPDstandardNth22gt33 = dJ122L*PDstandardNth1gt33 + + 2*(J12L*(J22L*PDstandardNth12gt33 + J32L*PDstandardNth13gt33) + + J22L*J32L*PDstandardNth23gt33) + dJ222L*PDstandardNth2gt33 + + dJ322L*PDstandardNth3gt33 + PDstandardNth11gt33*SQR(J12L) + + PDstandardNth22gt33*SQR(J22L) + PDstandardNth33gt33*SQR(J32L); + + JacPDstandardNth22phi = dJ122L*PDstandardNth1phi + + 2*(J12L*(J22L*PDstandardNth12phi + J32L*PDstandardNth13phi) + + J22L*J32L*PDstandardNth23phi) + dJ222L*PDstandardNth2phi + + dJ322L*PDstandardNth3phi + PDstandardNth11phi*SQR(J12L) + + PDstandardNth22phi*SQR(J22L) + PDstandardNth33phi*SQR(J32L); + + JacPDstandardNth33gt11 = dJ133L*PDstandardNth1gt11 + + 2*(J13L*(J23L*PDstandardNth12gt11 + J33L*PDstandardNth13gt11) + + J23L*J33L*PDstandardNth23gt11) + dJ233L*PDstandardNth2gt11 + + dJ333L*PDstandardNth3gt11 + PDstandardNth11gt11*SQR(J13L) + + PDstandardNth22gt11*SQR(J23L) + PDstandardNth33gt11*SQR(J33L); + + JacPDstandardNth33gt12 = dJ133L*PDstandardNth1gt12 + + 2*(J13L*(J23L*PDstandardNth12gt12 + J33L*PDstandardNth13gt12) + + J23L*J33L*PDstandardNth23gt12) + dJ233L*PDstandardNth2gt12 + + dJ333L*PDstandardNth3gt12 + PDstandardNth11gt12*SQR(J13L) + + PDstandardNth22gt12*SQR(J23L) + PDstandardNth33gt12*SQR(J33L); + + JacPDstandardNth33gt13 = dJ133L*PDstandardNth1gt13 + + 2*(J13L*(J23L*PDstandardNth12gt13 + J33L*PDstandardNth13gt13) + + J23L*J33L*PDstandardNth23gt13) + dJ233L*PDstandardNth2gt13 + + dJ333L*PDstandardNth3gt13 + PDstandardNth11gt13*SQR(J13L) + + PDstandardNth22gt13*SQR(J23L) + PDstandardNth33gt13*SQR(J33L); + + JacPDstandardNth33gt22 = dJ133L*PDstandardNth1gt22 + + 2*(J13L*(J23L*PDstandardNth12gt22 + J33L*PDstandardNth13gt22) + + J23L*J33L*PDstandardNth23gt22) + dJ233L*PDstandardNth2gt22 + + dJ333L*PDstandardNth3gt22 + PDstandardNth11gt22*SQR(J13L) + + PDstandardNth22gt22*SQR(J23L) + PDstandardNth33gt22*SQR(J33L); + + JacPDstandardNth33gt23 = dJ133L*PDstandardNth1gt23 + + 2*(J13L*(J23L*PDstandardNth12gt23 + J33L*PDstandardNth13gt23) + + J23L*J33L*PDstandardNth23gt23) + dJ233L*PDstandardNth2gt23 + + dJ333L*PDstandardNth3gt23 + PDstandardNth11gt23*SQR(J13L) + + PDstandardNth22gt23*SQR(J23L) + PDstandardNth33gt23*SQR(J33L); + + JacPDstandardNth33gt33 = dJ133L*PDstandardNth1gt33 + + 2*(J13L*(J23L*PDstandardNth12gt33 + J33L*PDstandardNth13gt33) + + J23L*J33L*PDstandardNth23gt33) + dJ233L*PDstandardNth2gt33 + + dJ333L*PDstandardNth3gt33 + PDstandardNth11gt33*SQR(J13L) + + PDstandardNth22gt33*SQR(J23L) + PDstandardNth33gt33*SQR(J33L); + + JacPDstandardNth33phi = dJ133L*PDstandardNth1phi + + 2*(J13L*(J23L*PDstandardNth12phi + J33L*PDstandardNth13phi) + + J23L*J33L*PDstandardNth23phi) + dJ233L*PDstandardNth2phi + + dJ333L*PDstandardNth3phi + PDstandardNth11phi*SQR(J13L) + + PDstandardNth22phi*SQR(J23L) + PDstandardNth33phi*SQR(J33L); + + JacPDstandardNth12gt11 = J12L*(J11L*PDstandardNth11gt11 + + J21L*PDstandardNth12gt11 + J31L*PDstandardNth13gt11) + + J11L*(J22L*PDstandardNth12gt11 + J32L*PDstandardNth13gt11) + + dJ112L*PDstandardNth1gt11 + J22L*(J21L*PDstandardNth22gt11 + + J31L*PDstandardNth23gt11) + dJ212L*PDstandardNth2gt11 + + J32L*(J21L*PDstandardNth23gt11 + J31L*PDstandardNth33gt11) + + dJ312L*PDstandardNth3gt11; + + JacPDstandardNth12gt12 = J12L*(J11L*PDstandardNth11gt12 + + J21L*PDstandardNth12gt12 + J31L*PDstandardNth13gt12) + + J11L*(J22L*PDstandardNth12gt12 + J32L*PDstandardNth13gt12) + + dJ112L*PDstandardNth1gt12 + J22L*(J21L*PDstandardNth22gt12 + + J31L*PDstandardNth23gt12) + dJ212L*PDstandardNth2gt12 + + J32L*(J21L*PDstandardNth23gt12 + J31L*PDstandardNth33gt12) + + dJ312L*PDstandardNth3gt12; + + JacPDstandardNth12gt13 = J12L*(J11L*PDstandardNth11gt13 + + J21L*PDstandardNth12gt13 + J31L*PDstandardNth13gt13) + + J11L*(J22L*PDstandardNth12gt13 + J32L*PDstandardNth13gt13) + + dJ112L*PDstandardNth1gt13 + J22L*(J21L*PDstandardNth22gt13 + + J31L*PDstandardNth23gt13) + dJ212L*PDstandardNth2gt13 + + J32L*(J21L*PDstandardNth23gt13 + J31L*PDstandardNth33gt13) + + dJ312L*PDstandardNth3gt13; + + JacPDstandardNth12gt22 = J12L*(J11L*PDstandardNth11gt22 + + J21L*PDstandardNth12gt22 + J31L*PDstandardNth13gt22) + + J11L*(J22L*PDstandardNth12gt22 + J32L*PDstandardNth13gt22) + + dJ112L*PDstandardNth1gt22 + J22L*(J21L*PDstandardNth22gt22 + + J31L*PDstandardNth23gt22) + dJ212L*PDstandardNth2gt22 + + J32L*(J21L*PDstandardNth23gt22 + J31L*PDstandardNth33gt22) + + dJ312L*PDstandardNth3gt22; + + JacPDstandardNth12gt23 = J12L*(J11L*PDstandardNth11gt23 + + J21L*PDstandardNth12gt23 + J31L*PDstandardNth13gt23) + + J11L*(J22L*PDstandardNth12gt23 + J32L*PDstandardNth13gt23) + + dJ112L*PDstandardNth1gt23 + J22L*(J21L*PDstandardNth22gt23 + + J31L*PDstandardNth23gt23) + dJ212L*PDstandardNth2gt23 + + J32L*(J21L*PDstandardNth23gt23 + J31L*PDstandardNth33gt23) + + dJ312L*PDstandardNth3gt23; + + JacPDstandardNth12gt33 = J12L*(J11L*PDstandardNth11gt33 + + J21L*PDstandardNth12gt33 + J31L*PDstandardNth13gt33) + + J11L*(J22L*PDstandardNth12gt33 + J32L*PDstandardNth13gt33) + + dJ112L*PDstandardNth1gt33 + J22L*(J21L*PDstandardNth22gt33 + + J31L*PDstandardNth23gt33) + dJ212L*PDstandardNth2gt33 + + J32L*(J21L*PDstandardNth23gt33 + J31L*PDstandardNth33gt33) + + dJ312L*PDstandardNth3gt33; + + JacPDstandardNth12phi = J12L*(J11L*PDstandardNth11phi + + J21L*PDstandardNth12phi + J31L*PDstandardNth13phi) + + J11L*(J22L*PDstandardNth12phi + J32L*PDstandardNth13phi) + + dJ112L*PDstandardNth1phi + J22L*(J21L*PDstandardNth22phi + + J31L*PDstandardNth23phi) + dJ212L*PDstandardNth2phi + + J32L*(J21L*PDstandardNth23phi + J31L*PDstandardNth33phi) + + dJ312L*PDstandardNth3phi; + + JacPDstandardNth13gt11 = J13L*(J11L*PDstandardNth11gt11 + + J21L*PDstandardNth12gt11 + J31L*PDstandardNth13gt11) + + J11L*(J23L*PDstandardNth12gt11 + J33L*PDstandardNth13gt11) + + dJ113L*PDstandardNth1gt11 + J23L*(J21L*PDstandardNth22gt11 + + J31L*PDstandardNth23gt11) + dJ213L*PDstandardNth2gt11 + + J33L*(J21L*PDstandardNth23gt11 + J31L*PDstandardNth33gt11) + + dJ313L*PDstandardNth3gt11; + + JacPDstandardNth13gt12 = J13L*(J11L*PDstandardNth11gt12 + + J21L*PDstandardNth12gt12 + J31L*PDstandardNth13gt12) + + J11L*(J23L*PDstandardNth12gt12 + J33L*PDstandardNth13gt12) + + dJ113L*PDstandardNth1gt12 + J23L*(J21L*PDstandardNth22gt12 + + J31L*PDstandardNth23gt12) + dJ213L*PDstandardNth2gt12 + + J33L*(J21L*PDstandardNth23gt12 + J31L*PDstandardNth33gt12) + + dJ313L*PDstandardNth3gt12; + + JacPDstandardNth13gt13 = J13L*(J11L*PDstandardNth11gt13 + + J21L*PDstandardNth12gt13 + J31L*PDstandardNth13gt13) + + J11L*(J23L*PDstandardNth12gt13 + J33L*PDstandardNth13gt13) + + dJ113L*PDstandardNth1gt13 + J23L*(J21L*PDstandardNth22gt13 + + J31L*PDstandardNth23gt13) + dJ213L*PDstandardNth2gt13 + + J33L*(J21L*PDstandardNth23gt13 + J31L*PDstandardNth33gt13) + + dJ313L*PDstandardNth3gt13; + + JacPDstandardNth13gt22 = J13L*(J11L*PDstandardNth11gt22 + + J21L*PDstandardNth12gt22 + J31L*PDstandardNth13gt22) + + J11L*(J23L*PDstandardNth12gt22 + J33L*PDstandardNth13gt22) + + dJ113L*PDstandardNth1gt22 + J23L*(J21L*PDstandardNth22gt22 + + J31L*PDstandardNth23gt22) + dJ213L*PDstandardNth2gt22 + + J33L*(J21L*PDstandardNth23gt22 + J31L*PDstandardNth33gt22) + + dJ313L*PDstandardNth3gt22; + + JacPDstandardNth13gt23 = J13L*(J11L*PDstandardNth11gt23 + + J21L*PDstandardNth12gt23 + J31L*PDstandardNth13gt23) + + J11L*(J23L*PDstandardNth12gt23 + J33L*PDstandardNth13gt23) + + dJ113L*PDstandardNth1gt23 + J23L*(J21L*PDstandardNth22gt23 + + J31L*PDstandardNth23gt23) + dJ213L*PDstandardNth2gt23 + + J33L*(J21L*PDstandardNth23gt23 + J31L*PDstandardNth33gt23) + + dJ313L*PDstandardNth3gt23; + + JacPDstandardNth13gt33 = J13L*(J11L*PDstandardNth11gt33 + + J21L*PDstandardNth12gt33 + J31L*PDstandardNth13gt33) + + J11L*(J23L*PDstandardNth12gt33 + J33L*PDstandardNth13gt33) + + dJ113L*PDstandardNth1gt33 + J23L*(J21L*PDstandardNth22gt33 + + J31L*PDstandardNth23gt33) + dJ213L*PDstandardNth2gt33 + + J33L*(J21L*PDstandardNth23gt33 + J31L*PDstandardNth33gt33) + + dJ313L*PDstandardNth3gt33; + + JacPDstandardNth13phi = J13L*(J11L*PDstandardNth11phi + + J21L*PDstandardNth12phi + J31L*PDstandardNth13phi) + + J11L*(J23L*PDstandardNth12phi + J33L*PDstandardNth13phi) + + dJ113L*PDstandardNth1phi + J23L*(J21L*PDstandardNth22phi + + J31L*PDstandardNth23phi) + dJ213L*PDstandardNth2phi + + J33L*(J21L*PDstandardNth23phi + J31L*PDstandardNth33phi) + + dJ313L*PDstandardNth3phi; + + JacPDstandardNth21gt11 = J12L*(J11L*PDstandardNth11gt11 + + J21L*PDstandardNth12gt11 + J31L*PDstandardNth13gt11) + + J11L*(J22L*PDstandardNth12gt11 + J32L*PDstandardNth13gt11) + + dJ112L*PDstandardNth1gt11 + J22L*(J21L*PDstandardNth22gt11 + + J31L*PDstandardNth23gt11) + dJ212L*PDstandardNth2gt11 + + J32L*(J21L*PDstandardNth23gt11 + J31L*PDstandardNth33gt11) + + dJ312L*PDstandardNth3gt11; + + JacPDstandardNth21gt12 = J12L*(J11L*PDstandardNth11gt12 + + J21L*PDstandardNth12gt12 + J31L*PDstandardNth13gt12) + + J11L*(J22L*PDstandardNth12gt12 + J32L*PDstandardNth13gt12) + + dJ112L*PDstandardNth1gt12 + J22L*(J21L*PDstandardNth22gt12 + + J31L*PDstandardNth23gt12) + dJ212L*PDstandardNth2gt12 + + J32L*(J21L*PDstandardNth23gt12 + J31L*PDstandardNth33gt12) + + dJ312L*PDstandardNth3gt12; + + JacPDstandardNth21gt13 = J12L*(J11L*PDstandardNth11gt13 + + J21L*PDstandardNth12gt13 + J31L*PDstandardNth13gt13) + + J11L*(J22L*PDstandardNth12gt13 + J32L*PDstandardNth13gt13) + + dJ112L*PDstandardNth1gt13 + J22L*(J21L*PDstandardNth22gt13 + + J31L*PDstandardNth23gt13) + dJ212L*PDstandardNth2gt13 + + J32L*(J21L*PDstandardNth23gt13 + J31L*PDstandardNth33gt13) + + dJ312L*PDstandardNth3gt13; + + JacPDstandardNth21gt22 = J12L*(J11L*PDstandardNth11gt22 + + J21L*PDstandardNth12gt22 + J31L*PDstandardNth13gt22) + + J11L*(J22L*PDstandardNth12gt22 + J32L*PDstandardNth13gt22) + + dJ112L*PDstandardNth1gt22 + J22L*(J21L*PDstandardNth22gt22 + + J31L*PDstandardNth23gt22) + dJ212L*PDstandardNth2gt22 + + J32L*(J21L*PDstandardNth23gt22 + J31L*PDstandardNth33gt22) + + dJ312L*PDstandardNth3gt22; + + JacPDstandardNth21gt23 = J12L*(J11L*PDstandardNth11gt23 + + J21L*PDstandardNth12gt23 + J31L*PDstandardNth13gt23) + + J11L*(J22L*PDstandardNth12gt23 + J32L*PDstandardNth13gt23) + + dJ112L*PDstandardNth1gt23 + J22L*(J21L*PDstandardNth22gt23 + + J31L*PDstandardNth23gt23) + dJ212L*PDstandardNth2gt23 + + J32L*(J21L*PDstandardNth23gt23 + J31L*PDstandardNth33gt23) + + dJ312L*PDstandardNth3gt23; + + JacPDstandardNth21gt33 = J12L*(J11L*PDstandardNth11gt33 + + J21L*PDstandardNth12gt33 + J31L*PDstandardNth13gt33) + + J11L*(J22L*PDstandardNth12gt33 + J32L*PDstandardNth13gt33) + + dJ112L*PDstandardNth1gt33 + J22L*(J21L*PDstandardNth22gt33 + + J31L*PDstandardNth23gt33) + dJ212L*PDstandardNth2gt33 + + J32L*(J21L*PDstandardNth23gt33 + J31L*PDstandardNth33gt33) + + dJ312L*PDstandardNth3gt33; + + JacPDstandardNth23gt11 = J13L*(J12L*PDstandardNth11gt11 + + J22L*PDstandardNth12gt11 + J32L*PDstandardNth13gt11) + + J12L*(J23L*PDstandardNth12gt11 + J33L*PDstandardNth13gt11) + + dJ123L*PDstandardNth1gt11 + J23L*(J22L*PDstandardNth22gt11 + + J32L*PDstandardNth23gt11) + dJ223L*PDstandardNth2gt11 + + J33L*(J22L*PDstandardNth23gt11 + J32L*PDstandardNth33gt11) + + dJ323L*PDstandardNth3gt11; + + JacPDstandardNth23gt12 = J13L*(J12L*PDstandardNth11gt12 + + J22L*PDstandardNth12gt12 + J32L*PDstandardNth13gt12) + + J12L*(J23L*PDstandardNth12gt12 + J33L*PDstandardNth13gt12) + + dJ123L*PDstandardNth1gt12 + J23L*(J22L*PDstandardNth22gt12 + + J32L*PDstandardNth23gt12) + dJ223L*PDstandardNth2gt12 + + J33L*(J22L*PDstandardNth23gt12 + J32L*PDstandardNth33gt12) + + dJ323L*PDstandardNth3gt12; + + JacPDstandardNth23gt13 = J13L*(J12L*PDstandardNth11gt13 + + J22L*PDstandardNth12gt13 + J32L*PDstandardNth13gt13) + + J12L*(J23L*PDstandardNth12gt13 + J33L*PDstandardNth13gt13) + + dJ123L*PDstandardNth1gt13 + J23L*(J22L*PDstandardNth22gt13 + + J32L*PDstandardNth23gt13) + dJ223L*PDstandardNth2gt13 + + J33L*(J22L*PDstandardNth23gt13 + J32L*PDstandardNth33gt13) + + dJ323L*PDstandardNth3gt13; + + JacPDstandardNth23gt22 = J13L*(J12L*PDstandardNth11gt22 + + J22L*PDstandardNth12gt22 + J32L*PDstandardNth13gt22) + + J12L*(J23L*PDstandardNth12gt22 + J33L*PDstandardNth13gt22) + + dJ123L*PDstandardNth1gt22 + J23L*(J22L*PDstandardNth22gt22 + + J32L*PDstandardNth23gt22) + dJ223L*PDstandardNth2gt22 + + J33L*(J22L*PDstandardNth23gt22 + J32L*PDstandardNth33gt22) + + dJ323L*PDstandardNth3gt22; + + JacPDstandardNth23gt23 = J13L*(J12L*PDstandardNth11gt23 + + J22L*PDstandardNth12gt23 + J32L*PDstandardNth13gt23) + + J12L*(J23L*PDstandardNth12gt23 + J33L*PDstandardNth13gt23) + + dJ123L*PDstandardNth1gt23 + J23L*(J22L*PDstandardNth22gt23 + + J32L*PDstandardNth23gt23) + dJ223L*PDstandardNth2gt23 + + J33L*(J22L*PDstandardNth23gt23 + J32L*PDstandardNth33gt23) + + dJ323L*PDstandardNth3gt23; + + JacPDstandardNth23gt33 = J13L*(J12L*PDstandardNth11gt33 + + J22L*PDstandardNth12gt33 + J32L*PDstandardNth13gt33) + + J12L*(J23L*PDstandardNth12gt33 + J33L*PDstandardNth13gt33) + + dJ123L*PDstandardNth1gt33 + J23L*(J22L*PDstandardNth22gt33 + + J32L*PDstandardNth23gt33) + dJ223L*PDstandardNth2gt33 + + J33L*(J22L*PDstandardNth23gt33 + J32L*PDstandardNth33gt33) + + dJ323L*PDstandardNth3gt33; + + JacPDstandardNth23phi = J13L*(J12L*PDstandardNth11phi + + J22L*PDstandardNth12phi + J32L*PDstandardNth13phi) + + J12L*(J23L*PDstandardNth12phi + J33L*PDstandardNth13phi) + + dJ123L*PDstandardNth1phi + J23L*(J22L*PDstandardNth22phi + + J32L*PDstandardNth23phi) + dJ223L*PDstandardNth2phi + + J33L*(J22L*PDstandardNth23phi + J32L*PDstandardNth33phi) + + dJ323L*PDstandardNth3phi; + + JacPDstandardNth31gt11 = J13L*(J11L*PDstandardNth11gt11 + + J21L*PDstandardNth12gt11 + J31L*PDstandardNth13gt11) + + J11L*(J23L*PDstandardNth12gt11 + J33L*PDstandardNth13gt11) + + dJ113L*PDstandardNth1gt11 + J23L*(J21L*PDstandardNth22gt11 + + J31L*PDstandardNth23gt11) + dJ213L*PDstandardNth2gt11 + + J33L*(J21L*PDstandardNth23gt11 + J31L*PDstandardNth33gt11) + + dJ313L*PDstandardNth3gt11; + + JacPDstandardNth31gt12 = J13L*(J11L*PDstandardNth11gt12 + + J21L*PDstandardNth12gt12 + J31L*PDstandardNth13gt12) + + J11L*(J23L*PDstandardNth12gt12 + J33L*PDstandardNth13gt12) + + dJ113L*PDstandardNth1gt12 + J23L*(J21L*PDstandardNth22gt12 + + J31L*PDstandardNth23gt12) + dJ213L*PDstandardNth2gt12 + + J33L*(J21L*PDstandardNth23gt12 + J31L*PDstandardNth33gt12) + + dJ313L*PDstandardNth3gt12; + + JacPDstandardNth31gt13 = J13L*(J11L*PDstandardNth11gt13 + + J21L*PDstandardNth12gt13 + J31L*PDstandardNth13gt13) + + J11L*(J23L*PDstandardNth12gt13 + J33L*PDstandardNth13gt13) + + dJ113L*PDstandardNth1gt13 + J23L*(J21L*PDstandardNth22gt13 + + J31L*PDstandardNth23gt13) + dJ213L*PDstandardNth2gt13 + + J33L*(J21L*PDstandardNth23gt13 + J31L*PDstandardNth33gt13) + + dJ313L*PDstandardNth3gt13; + + JacPDstandardNth31gt22 = J13L*(J11L*PDstandardNth11gt22 + + J21L*PDstandardNth12gt22 + J31L*PDstandardNth13gt22) + + J11L*(J23L*PDstandardNth12gt22 + J33L*PDstandardNth13gt22) + + dJ113L*PDstandardNth1gt22 + J23L*(J21L*PDstandardNth22gt22 + + J31L*PDstandardNth23gt22) + dJ213L*PDstandardNth2gt22 + + J33L*(J21L*PDstandardNth23gt22 + J31L*PDstandardNth33gt22) + + dJ313L*PDstandardNth3gt22; + + JacPDstandardNth31gt23 = J13L*(J11L*PDstandardNth11gt23 + + J21L*PDstandardNth12gt23 + J31L*PDstandardNth13gt23) + + J11L*(J23L*PDstandardNth12gt23 + J33L*PDstandardNth13gt23) + + dJ113L*PDstandardNth1gt23 + J23L*(J21L*PDstandardNth22gt23 + + J31L*PDstandardNth23gt23) + dJ213L*PDstandardNth2gt23 + + J33L*(J21L*PDstandardNth23gt23 + J31L*PDstandardNth33gt23) + + dJ313L*PDstandardNth3gt23; + + JacPDstandardNth31gt33 = J13L*(J11L*PDstandardNth11gt33 + + J21L*PDstandardNth12gt33 + J31L*PDstandardNth13gt33) + + J11L*(J23L*PDstandardNth12gt33 + J33L*PDstandardNth13gt33) + + dJ113L*PDstandardNth1gt33 + J23L*(J21L*PDstandardNth22gt33 + + J31L*PDstandardNth23gt33) + dJ213L*PDstandardNth2gt33 + + J33L*(J21L*PDstandardNth23gt33 + J31L*PDstandardNth33gt33) + + dJ313L*PDstandardNth3gt33; + + JacPDstandardNth32gt11 = J13L*(J12L*PDstandardNth11gt11 + + J22L*PDstandardNth12gt11 + J32L*PDstandardNth13gt11) + + J12L*(J23L*PDstandardNth12gt11 + J33L*PDstandardNth13gt11) + + dJ123L*PDstandardNth1gt11 + J23L*(J22L*PDstandardNth22gt11 + + J32L*PDstandardNth23gt11) + dJ223L*PDstandardNth2gt11 + + J33L*(J22L*PDstandardNth23gt11 + J32L*PDstandardNth33gt11) + + dJ323L*PDstandardNth3gt11; + + JacPDstandardNth32gt12 = J13L*(J12L*PDstandardNth11gt12 + + J22L*PDstandardNth12gt12 + J32L*PDstandardNth13gt12) + + J12L*(J23L*PDstandardNth12gt12 + J33L*PDstandardNth13gt12) + + dJ123L*PDstandardNth1gt12 + J23L*(J22L*PDstandardNth22gt12 + + J32L*PDstandardNth23gt12) + dJ223L*PDstandardNth2gt12 + + J33L*(J22L*PDstandardNth23gt12 + J32L*PDstandardNth33gt12) + + dJ323L*PDstandardNth3gt12; + + JacPDstandardNth32gt13 = J13L*(J12L*PDstandardNth11gt13 + + J22L*PDstandardNth12gt13 + J32L*PDstandardNth13gt13) + + J12L*(J23L*PDstandardNth12gt13 + J33L*PDstandardNth13gt13) + + dJ123L*PDstandardNth1gt13 + J23L*(J22L*PDstandardNth22gt13 + + J32L*PDstandardNth23gt13) + dJ223L*PDstandardNth2gt13 + + J33L*(J22L*PDstandardNth23gt13 + J32L*PDstandardNth33gt13) + + dJ323L*PDstandardNth3gt13; + + JacPDstandardNth32gt22 = J13L*(J12L*PDstandardNth11gt22 + + J22L*PDstandardNth12gt22 + J32L*PDstandardNth13gt22) + + J12L*(J23L*PDstandardNth12gt22 + J33L*PDstandardNth13gt22) + + dJ123L*PDstandardNth1gt22 + J23L*(J22L*PDstandardNth22gt22 + + J32L*PDstandardNth23gt22) + dJ223L*PDstandardNth2gt22 + + J33L*(J22L*PDstandardNth23gt22 + J32L*PDstandardNth33gt22) + + dJ323L*PDstandardNth3gt22; + + JacPDstandardNth32gt23 = J13L*(J12L*PDstandardNth11gt23 + + J22L*PDstandardNth12gt23 + J32L*PDstandardNth13gt23) + + J12L*(J23L*PDstandardNth12gt23 + J33L*PDstandardNth13gt23) + + dJ123L*PDstandardNth1gt23 + J23L*(J22L*PDstandardNth22gt23 + + J32L*PDstandardNth23gt23) + dJ223L*PDstandardNth2gt23 + + J33L*(J22L*PDstandardNth23gt23 + J32L*PDstandardNth33gt23) + + dJ323L*PDstandardNth3gt23; + + JacPDstandardNth32gt33 = J13L*(J12L*PDstandardNth11gt33 + + J22L*PDstandardNth12gt33 + J32L*PDstandardNth13gt33) + + J12L*(J23L*PDstandardNth12gt33 + J33L*PDstandardNth13gt33) + + dJ123L*PDstandardNth1gt33 + J23L*(J22L*PDstandardNth22gt33 + + J32L*PDstandardNth23gt33) + dJ223L*PDstandardNth2gt33 + + J33L*(J22L*PDstandardNth23gt33 + J32L*PDstandardNth33gt33) + + dJ323L*PDstandardNth3gt33; + } + else + { + JacPDstandardNth1gt11 = PDstandardNth1gt11; + + JacPDstandardNth1gt12 = PDstandardNth1gt12; + + JacPDstandardNth1gt13 = PDstandardNth1gt13; + + JacPDstandardNth1gt22 = PDstandardNth1gt22; + + JacPDstandardNth1gt23 = PDstandardNth1gt23; + + JacPDstandardNth1gt33 = PDstandardNth1gt33; + + JacPDstandardNth1phi = PDstandardNth1phi; + + JacPDstandardNth1Xt1 = PDstandardNth1Xt1; + + JacPDstandardNth1Xt2 = PDstandardNth1Xt2; + + JacPDstandardNth1Xt3 = PDstandardNth1Xt3; + + JacPDstandardNth2gt11 = PDstandardNth2gt11; + + JacPDstandardNth2gt12 = PDstandardNth2gt12; + + JacPDstandardNth2gt13 = PDstandardNth2gt13; + + JacPDstandardNth2gt22 = PDstandardNth2gt22; + + JacPDstandardNth2gt23 = PDstandardNth2gt23; + + JacPDstandardNth2gt33 = PDstandardNth2gt33; + + JacPDstandardNth2phi = PDstandardNth2phi; + + JacPDstandardNth2Xt1 = PDstandardNth2Xt1; + + JacPDstandardNth2Xt2 = PDstandardNth2Xt2; + + JacPDstandardNth2Xt3 = PDstandardNth2Xt3; + + JacPDstandardNth3gt11 = PDstandardNth3gt11; + + JacPDstandardNth3gt12 = PDstandardNth3gt12; + + JacPDstandardNth3gt13 = PDstandardNth3gt13; + + JacPDstandardNth3gt22 = PDstandardNth3gt22; + + JacPDstandardNth3gt23 = PDstandardNth3gt23; + + JacPDstandardNth3gt33 = PDstandardNth3gt33; + + JacPDstandardNth3phi = PDstandardNth3phi; + + JacPDstandardNth3Xt1 = PDstandardNth3Xt1; + + JacPDstandardNth3Xt2 = PDstandardNth3Xt2; + + JacPDstandardNth3Xt3 = PDstandardNth3Xt3; + + JacPDstandardNth11gt11 = PDstandardNth11gt11; + + JacPDstandardNth11gt12 = PDstandardNth11gt12; + + JacPDstandardNth11gt13 = PDstandardNth11gt13; + + JacPDstandardNth11gt22 = PDstandardNth11gt22; + + JacPDstandardNth11gt23 = PDstandardNth11gt23; + + JacPDstandardNth11gt33 = PDstandardNth11gt33; + + JacPDstandardNth11phi = PDstandardNth11phi; + + JacPDstandardNth22gt11 = PDstandardNth22gt11; + + JacPDstandardNth22gt12 = PDstandardNth22gt12; + + JacPDstandardNth22gt13 = PDstandardNth22gt13; + + JacPDstandardNth22gt22 = PDstandardNth22gt22; + + JacPDstandardNth22gt23 = PDstandardNth22gt23; + + JacPDstandardNth22gt33 = PDstandardNth22gt33; + + JacPDstandardNth22phi = PDstandardNth22phi; + + JacPDstandardNth33gt11 = PDstandardNth33gt11; + + JacPDstandardNth33gt12 = PDstandardNth33gt12; + + JacPDstandardNth33gt13 = PDstandardNth33gt13; + + JacPDstandardNth33gt22 = PDstandardNth33gt22; + + JacPDstandardNth33gt23 = PDstandardNth33gt23; + + JacPDstandardNth33gt33 = PDstandardNth33gt33; + + JacPDstandardNth33phi = PDstandardNth33phi; + + JacPDstandardNth12gt11 = PDstandardNth12gt11; + + JacPDstandardNth12gt12 = PDstandardNth12gt12; + + JacPDstandardNth12gt13 = PDstandardNth12gt13; + + JacPDstandardNth12gt22 = PDstandardNth12gt22; + + JacPDstandardNth12gt23 = PDstandardNth12gt23; + + JacPDstandardNth12gt33 = PDstandardNth12gt33; + + JacPDstandardNth12phi = PDstandardNth12phi; + + JacPDstandardNth13gt11 = PDstandardNth13gt11; + + JacPDstandardNth13gt12 = PDstandardNth13gt12; + + JacPDstandardNth13gt13 = PDstandardNth13gt13; + + JacPDstandardNth13gt22 = PDstandardNth13gt22; + + JacPDstandardNth13gt23 = PDstandardNth13gt23; + + JacPDstandardNth13gt33 = PDstandardNth13gt33; + + JacPDstandardNth13phi = PDstandardNth13phi; + + JacPDstandardNth21gt11 = PDstandardNth12gt11; + + JacPDstandardNth21gt12 = PDstandardNth12gt12; + + JacPDstandardNth21gt13 = PDstandardNth12gt13; + + JacPDstandardNth21gt22 = PDstandardNth12gt22; + + JacPDstandardNth21gt23 = PDstandardNth12gt23; + + JacPDstandardNth21gt33 = PDstandardNth12gt33; + + JacPDstandardNth23gt11 = PDstandardNth23gt11; + + JacPDstandardNth23gt12 = PDstandardNth23gt12; + + JacPDstandardNth23gt13 = PDstandardNth23gt13; + + JacPDstandardNth23gt22 = PDstandardNth23gt22; + + JacPDstandardNth23gt23 = PDstandardNth23gt23; + + JacPDstandardNth23gt33 = PDstandardNth23gt33; + + JacPDstandardNth23phi = PDstandardNth23phi; + + JacPDstandardNth31gt11 = PDstandardNth13gt11; + + JacPDstandardNth31gt12 = PDstandardNth13gt12; + + JacPDstandardNth31gt13 = PDstandardNth13gt13; + + JacPDstandardNth31gt22 = PDstandardNth13gt22; + + JacPDstandardNth31gt23 = PDstandardNth13gt23; + + JacPDstandardNth31gt33 = PDstandardNth13gt33; + + JacPDstandardNth32gt11 = PDstandardNth23gt11; + + JacPDstandardNth32gt12 = PDstandardNth23gt12; + + JacPDstandardNth32gt13 = PDstandardNth23gt13; + + JacPDstandardNth32gt22 = PDstandardNth23gt22; + + JacPDstandardNth32gt23 = PDstandardNth23gt23; + + JacPDstandardNth32gt33 = PDstandardNth23gt33; + } + CCTK_REAL detgt = 1; CCTK_REAL gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L)); @@ -280,74 +1135,44 @@ static void ML_BSSN_MP_constraints1_Body(cGH const * restrict const cctkGH, int CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L)); - CCTK_REAL Gtl111 = 0.5*(J11L*PDstandardNth1gt11 + - J21L*PDstandardNth2gt11 + J31L*PDstandardNth3gt11); + CCTK_REAL Gtl111 = 0.5*JacPDstandardNth1gt11; - CCTK_REAL Gtl112 = 0.5*(J12L*PDstandardNth1gt11 + - J22L*PDstandardNth2gt11 + J32L*PDstandardNth3gt11); + CCTK_REAL Gtl112 = 0.5*JacPDstandardNth2gt11; - CCTK_REAL Gtl113 = 0.5*(J13L*PDstandardNth1gt11 + - J23L*PDstandardNth2gt11 + J33L*PDstandardNth3gt11); + CCTK_REAL Gtl113 = 0.5*JacPDstandardNth3gt11; - CCTK_REAL Gtl122 = J12L*PDstandardNth1gt12 + J22L*PDstandardNth2gt12 + - J32L*PDstandardNth3gt12 - 0.5*(J11L*PDstandardNth1gt22 + - J21L*PDstandardNth2gt22 + J31L*PDstandardNth3gt22); + CCTK_REAL Gtl122 = -0.5*JacPDstandardNth1gt22 + JacPDstandardNth2gt12; - CCTK_REAL Gtl123 = 0.5*(J13L*PDstandardNth1gt12 + - J12L*PDstandardNth1gt13 - J11L*PDstandardNth1gt23 + - J23L*PDstandardNth2gt12 + J22L*PDstandardNth2gt13 - - J21L*PDstandardNth2gt23 + J33L*PDstandardNth3gt12 + - J32L*PDstandardNth3gt13 - J31L*PDstandardNth3gt23); + CCTK_REAL Gtl123 = 0.5*(-JacPDstandardNth1gt23 + JacPDstandardNth2gt13 + + JacPDstandardNth3gt12); - CCTK_REAL Gtl133 = J13L*PDstandardNth1gt13 + J23L*PDstandardNth2gt13 + - J33L*PDstandardNth3gt13 - 0.5*(J11L*PDstandardNth1gt33 + - J21L*PDstandardNth2gt33 + J31L*PDstandardNth3gt33); + CCTK_REAL Gtl133 = -0.5*JacPDstandardNth1gt33 + JacPDstandardNth3gt13; - CCTK_REAL Gtl211 = J11L*PDstandardNth1gt12 + J21L*PDstandardNth2gt12 - - 0.5*(J12L*PDstandardNth1gt11 + J22L*PDstandardNth2gt11 + - J32L*PDstandardNth3gt11) + J31L*PDstandardNth3gt12; + CCTK_REAL Gtl211 = JacPDstandardNth1gt12 - 0.5*JacPDstandardNth2gt11; - CCTK_REAL Gtl212 = 0.5*(J11L*PDstandardNth1gt22 + - J21L*PDstandardNth2gt22 + J31L*PDstandardNth3gt22); + CCTK_REAL Gtl212 = 0.5*JacPDstandardNth1gt22; - CCTK_REAL Gtl213 = 0.5*(J13L*PDstandardNth1gt12 - - J12L*PDstandardNth1gt13 + J11L*PDstandardNth1gt23 + - J23L*PDstandardNth2gt12 - J22L*PDstandardNth2gt13 + - J21L*PDstandardNth2gt23 + J33L*PDstandardNth3gt12 - - J32L*PDstandardNth3gt13 + J31L*PDstandardNth3gt23); + CCTK_REAL Gtl213 = 0.5*(JacPDstandardNth1gt23 - JacPDstandardNth2gt13 + + JacPDstandardNth3gt12); - CCTK_REAL Gtl222 = 0.5*(J12L*PDstandardNth1gt22 + - J22L*PDstandardNth2gt22 + J32L*PDstandardNth3gt22); + CCTK_REAL Gtl222 = 0.5*JacPDstandardNth2gt22; - CCTK_REAL Gtl223 = 0.5*(J13L*PDstandardNth1gt22 + - J23L*PDstandardNth2gt22 + J33L*PDstandardNth3gt22); + CCTK_REAL Gtl223 = 0.5*JacPDstandardNth3gt22; - CCTK_REAL Gtl233 = J13L*PDstandardNth1gt23 + J23L*PDstandardNth2gt23 + - J33L*PDstandardNth3gt23 - 0.5*(J12L*PDstandardNth1gt33 + - J22L*PDstandardNth2gt33 + J32L*PDstandardNth3gt33); + CCTK_REAL Gtl233 = -0.5*JacPDstandardNth2gt33 + JacPDstandardNth3gt23; - CCTK_REAL Gtl311 = J11L*PDstandardNth1gt13 + J21L*PDstandardNth2gt13 - - 0.5*(J13L*PDstandardNth1gt11 + J23L*PDstandardNth2gt11 + - J33L*PDstandardNth3gt11) + J31L*PDstandardNth3gt13; + CCTK_REAL Gtl311 = JacPDstandardNth1gt13 - 0.5*JacPDstandardNth3gt11; - CCTK_REAL Gtl312 = 0.5*(-(J13L*PDstandardNth1gt12) + - J12L*PDstandardNth1gt13 + J11L*PDstandardNth1gt23 - - J23L*PDstandardNth2gt12 + J22L*PDstandardNth2gt13 + - J21L*PDstandardNth2gt23 - J33L*PDstandardNth3gt12 + - J32L*PDstandardNth3gt13 + J31L*PDstandardNth3gt23); + CCTK_REAL Gtl312 = 0.5*(JacPDstandardNth1gt23 + JacPDstandardNth2gt13 + - JacPDstandardNth3gt12); - CCTK_REAL Gtl313 = 0.5*(J11L*PDstandardNth1gt33 + - J21L*PDstandardNth2gt33 + J31L*PDstandardNth3gt33); + CCTK_REAL Gtl313 = 0.5*JacPDstandardNth1gt33; - CCTK_REAL Gtl322 = J12L*PDstandardNth1gt23 + J22L*PDstandardNth2gt23 - - 0.5*(J13L*PDstandardNth1gt22 + J23L*PDstandardNth2gt22 + - J33L*PDstandardNth3gt22) + J32L*PDstandardNth3gt23; + CCTK_REAL Gtl322 = JacPDstandardNth2gt23 - 0.5*JacPDstandardNth3gt22; - CCTK_REAL Gtl323 = 0.5*(J12L*PDstandardNth1gt33 + - J22L*PDstandardNth2gt33 + J32L*PDstandardNth3gt33); + CCTK_REAL Gtl323 = 0.5*JacPDstandardNth2gt33; - CCTK_REAL Gtl333 = 0.5*(J13L*PDstandardNth1gt33 + - J23L*PDstandardNth2gt33 + J33L*PDstandardNth3gt33); + CCTK_REAL Gtl333 = 0.5*JacPDstandardNth3gt33; CCTK_REAL Gtlu111 = Gtl111*gtu11 + Gtl112*gtu12 + Gtl113*gtu13; @@ -448,362 +1273,125 @@ static void ML_BSSN_MP_constraints1_Body(cGH const * restrict const cctkGH, int CCTK_REAL Xtn3 = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu12 + Gt313*gtu13 + Gt323*gtu23) + Gt333*gtu33; - CCTK_REAL Rt11 = 3*(Gt111*Gtlu111 + Gt112*Gtlu112 + Gt113*Gtlu113) + - 2*(Gt211*Gtlu121 + Gt212*Gtlu122 + Gt213*Gtlu123 + Gt311*Gtlu131 + - Gt312*Gtlu132 + Gt313*Gtlu133) + Gt211*Gtlu211 + Gt212*Gtlu212 + + CCTK_REAL Rt11 = 0.5*(6*(Gt111*Gtlu111 + Gt112*Gtlu112 + + Gt113*Gtlu113) + 4*(Gt211*Gtlu121 + Gt212*Gtlu122 + Gt213*Gtlu123 + + Gt311*Gtlu131 + Gt312*Gtlu132 + Gt313*Gtlu133) - + gtu11*JacPDstandardNth11gt11 + 2*(Gt211*Gtlu211 + Gt212*Gtlu212 + Gt213*Gtlu213 + Gt311*Gtlu311 + Gt312*Gtlu312 + Gt313*Gtlu313 + - J11L*(gt11L*PDstandardNth1Xt1 + gt12L*PDstandardNth1Xt2 + - gt13L*PDstandardNth1Xt3) + J21L*(gt11L*PDstandardNth2Xt1 + - gt12L*PDstandardNth2Xt2 + gt13L*PDstandardNth2Xt3) + - J31L*(gt11L*PDstandardNth3Xt1 + gt12L*PDstandardNth3Xt2 + - gt13L*PDstandardNth3Xt3) + Gtl111*Xtn1 + Gtl112*Xtn2 + Gtl113*Xtn3 + - 0.5*(-2*(gtu12*(J11L*J12L*PDstandardNth11gt11 + - J12L*J21L*PDstandardNth12gt11 + J11L*J22L*PDstandardNth12gt11 + - J12L*J31L*PDstandardNth13gt11 + J11L*J32L*PDstandardNth13gt11 + - dJ112L*PDstandardNth1gt11 + J21L*J22L*PDstandardNth22gt11 + - J22L*J31L*PDstandardNth23gt11 + J21L*J32L*PDstandardNth23gt11 + - dJ212L*PDstandardNth2gt11 + J31L*J32L*PDstandardNth33gt11 + - dJ312L*PDstandardNth3gt11) + gtu13*(J11L*J13L*PDstandardNth11gt11 + - J13L*J21L*PDstandardNth12gt11 + J11L*J23L*PDstandardNth12gt11 + - J13L*J31L*PDstandardNth13gt11 + J11L*J33L*PDstandardNth13gt11 + - dJ113L*PDstandardNth1gt11 + J21L*J23L*PDstandardNth22gt11 + - J23L*J31L*PDstandardNth23gt11 + J21L*J33L*PDstandardNth23gt11 + - dJ213L*PDstandardNth2gt11 + J31L*J33L*PDstandardNth33gt11 + - dJ313L*PDstandardNth3gt11) + gtu23*(J12L*J13L*PDstandardNth11gt11 + - J13L*J22L*PDstandardNth12gt11 + J12L*J23L*PDstandardNth12gt11 + - J13L*J32L*PDstandardNth13gt11 + J12L*J33L*PDstandardNth13gt11 + - dJ123L*PDstandardNth1gt11 + J22L*J23L*PDstandardNth22gt11 + - J23L*J32L*PDstandardNth23gt11 + J22L*J33L*PDstandardNth23gt11 + - dJ223L*PDstandardNth2gt11 + J32L*J33L*PDstandardNth33gt11 + - dJ323L*PDstandardNth3gt11)) - gtu11*(2*J11L*J21L*PDstandardNth12gt11 + - 2*J11L*J31L*PDstandardNth13gt11 + dJ111L*PDstandardNth1gt11 + - 2*J21L*J31L*PDstandardNth23gt11 + dJ211L*PDstandardNth2gt11 + - dJ311L*PDstandardNth3gt11 + PDstandardNth11gt11*SQR(J11L) + - PDstandardNth22gt11*SQR(J21L) + PDstandardNth33gt11*SQR(J31L)) - - gtu22*(2*J12L*J22L*PDstandardNth12gt11 + - 2*J12L*J32L*PDstandardNth13gt11 + dJ122L*PDstandardNth1gt11 + - 2*J22L*J32L*PDstandardNth23gt11 + dJ222L*PDstandardNth2gt11 + - dJ322L*PDstandardNth3gt11 + PDstandardNth11gt11*SQR(J12L) + - PDstandardNth22gt11*SQR(J22L) + PDstandardNth33gt11*SQR(J32L)) - - gtu33*(2*J13L*J23L*PDstandardNth12gt11 + - 2*J13L*J33L*PDstandardNth13gt11 + dJ133L*PDstandardNth1gt11 + - 2*J23L*J33L*PDstandardNth23gt11 + dJ233L*PDstandardNth2gt11 + - dJ333L*PDstandardNth3gt11 + PDstandardNth11gt11*SQR(J13L) + - PDstandardNth22gt11*SQR(J23L) + PDstandardNth33gt11*SQR(J33L))); - - CCTK_REAL Rt12 = Gt122*Gtlu112 + Gt123*Gtlu113 + (Gt111 + - Gt212)*Gtlu121 + Gt222*Gtlu122 + (Gt113 + Gt223)*Gtlu123 + - Gt322*Gtlu132 + Gt323*Gtlu133 + Gt111*Gtlu211 + Gt112*(Gtlu111 + - Gtlu122 + Gtlu212) + Gt113*Gtlu213 + 2*(Gt211*Gtlu221 + Gt212*Gtlu222 + - Gt213*Gtlu223) + Gt311*(Gtlu231 + Gtlu321) + Gt312*(Gtlu131 + Gtlu232 + - Gtlu322) + Gt313*(Gtlu233 + Gtlu323) + 0.5*((gt12L*J11L + - gt11L*J12L)*PDstandardNth1Xt1 + (gt22L*J11L + - gt12L*J12L)*PDstandardNth1Xt2 + (gt23L*J11L + - gt13L*J12L)*PDstandardNth1Xt3 + (gt12L*J21L + - gt11L*J22L)*PDstandardNth2Xt1 + (gt22L*J21L + - gt12L*J22L)*PDstandardNth2Xt2 + (gt23L*J21L + - gt13L*J22L)*PDstandardNth2Xt3 - 2*(gtu12*(J11L*J12L*PDstandardNth11gt12 - + J12L*J21L*PDstandardNth12gt12 + J11L*J22L*PDstandardNth12gt12 + - J12L*J31L*PDstandardNth13gt12 + J11L*J32L*PDstandardNth13gt12 + - dJ112L*PDstandardNth1gt12 + J21L*J22L*PDstandardNth22gt12 + - J22L*J31L*PDstandardNth23gt12 + J21L*J32L*PDstandardNth23gt12 + - dJ212L*PDstandardNth2gt12 + J31L*J32L*PDstandardNth33gt12 + - dJ312L*PDstandardNth3gt12) + gtu13*(J11L*J13L*PDstandardNth11gt12 + - J13L*J21L*PDstandardNth12gt12 + J11L*J23L*PDstandardNth12gt12 + - J13L*J31L*PDstandardNth13gt12 + J11L*J33L*PDstandardNth13gt12 + - dJ113L*PDstandardNth1gt12 + J21L*J23L*PDstandardNth22gt12 + - J23L*J31L*PDstandardNth23gt12 + J21L*J33L*PDstandardNth23gt12 + - dJ213L*PDstandardNth2gt12 + J31L*J33L*PDstandardNth33gt12 + - dJ313L*PDstandardNth3gt12) + gtu23*(J12L*J13L*PDstandardNth11gt12 + - J13L*J22L*PDstandardNth12gt12 + J12L*J23L*PDstandardNth12gt12 + - J13L*J32L*PDstandardNth13gt12 + J12L*J33L*PDstandardNth13gt12 + - dJ123L*PDstandardNth1gt12 + J22L*J23L*PDstandardNth22gt12 + - J23L*J32L*PDstandardNth23gt12 + J22L*J33L*PDstandardNth23gt12 + - dJ223L*PDstandardNth2gt12 + J32L*J33L*PDstandardNth33gt12 + - dJ323L*PDstandardNth3gt12)) + (gt12L*J31L + - gt11L*J32L)*PDstandardNth3Xt1 + (gt22L*J31L + - gt12L*J32L)*PDstandardNth3Xt2 + (gt23L*J31L + - gt13L*J32L)*PDstandardNth3Xt3 + (Gtl112 + Gtl211)*Xtn1 + (Gtl122 + - Gtl212)*Xtn2 + (Gtl123 + Gtl213)*Xtn3 - - gtu11*(2*J11L*J21L*PDstandardNth12gt12 + - 2*J11L*J31L*PDstandardNth13gt12 + dJ111L*PDstandardNth1gt12 + - 2*J21L*J31L*PDstandardNth23gt12 + dJ211L*PDstandardNth2gt12 + - dJ311L*PDstandardNth3gt12 + PDstandardNth11gt12*SQR(J11L) + - PDstandardNth22gt12*SQR(J21L) + PDstandardNth33gt12*SQR(J31L)) - - gtu22*(2*J12L*J22L*PDstandardNth12gt12 + - 2*J12L*J32L*PDstandardNth13gt12 + dJ122L*PDstandardNth1gt12 + - 2*J22L*J32L*PDstandardNth23gt12 + dJ222L*PDstandardNth2gt12 + - dJ322L*PDstandardNth3gt12 + PDstandardNth11gt12*SQR(J12L) + - PDstandardNth22gt12*SQR(J22L) + PDstandardNth33gt12*SQR(J32L)) - - gtu33*(2*J13L*J23L*PDstandardNth12gt12 + - 2*J13L*J33L*PDstandardNth13gt12 + dJ133L*PDstandardNth1gt12 + - 2*J23L*J33L*PDstandardNth23gt12 + dJ233L*PDstandardNth2gt12 + - dJ333L*PDstandardNth3gt12 + PDstandardNth11gt12*SQR(J13L) + - PDstandardNth22gt12*SQR(J23L) + PDstandardNth33gt12*SQR(J33L))); - - CCTK_REAL Rt13 = Gt123*Gtlu112 + Gt133*Gtlu113 + Gt223*Gtlu122 + - Gt233*Gtlu123 + (Gt111 + Gt313)*Gtlu131 + (Gt112 + Gt323)*Gtlu132 + - Gt333*Gtlu133 + Gt111*Gtlu311 + Gt112*Gtlu312 + Gt113*(Gtlu111 + - Gtlu133 + Gtlu313) + Gt211*(Gtlu231 + Gtlu321) + Gt212*(Gtlu232 + - Gtlu322) + Gt213*(Gtlu121 + Gtlu233 + Gtlu323) + 2*(Gt311*Gtlu331 + - Gt312*Gtlu332 + Gt313*Gtlu333) + 0.5*((gt13L*J11L + - gt11L*J13L)*PDstandardNth1Xt1 + (gt23L*J11L + - gt12L*J13L)*PDstandardNth1Xt2 + (gt33L*J11L + - gt13L*J13L)*PDstandardNth1Xt3 + (gt13L*J21L + - gt11L*J23L)*PDstandardNth2Xt1 + (gt23L*J21L + - gt12L*J23L)*PDstandardNth2Xt2 + (gt33L*J21L + - gt13L*J23L)*PDstandardNth2Xt3 - 2*(gtu12*(J11L*J12L*PDstandardNth11gt13 - + J12L*J21L*PDstandardNth12gt13 + J11L*J22L*PDstandardNth12gt13 + - J12L*J31L*PDstandardNth13gt13 + J11L*J32L*PDstandardNth13gt13 + - dJ112L*PDstandardNth1gt13 + J21L*J22L*PDstandardNth22gt13 + - J22L*J31L*PDstandardNth23gt13 + J21L*J32L*PDstandardNth23gt13 + - dJ212L*PDstandardNth2gt13 + J31L*J32L*PDstandardNth33gt13 + - dJ312L*PDstandardNth3gt13) + gtu13*(J11L*J13L*PDstandardNth11gt13 + - J13L*J21L*PDstandardNth12gt13 + J11L*J23L*PDstandardNth12gt13 + - J13L*J31L*PDstandardNth13gt13 + J11L*J33L*PDstandardNth13gt13 + - dJ113L*PDstandardNth1gt13 + J21L*J23L*PDstandardNth22gt13 + - J23L*J31L*PDstandardNth23gt13 + J21L*J33L*PDstandardNth23gt13 + - dJ213L*PDstandardNth2gt13 + J31L*J33L*PDstandardNth33gt13 + - dJ313L*PDstandardNth3gt13) + gtu23*(J12L*J13L*PDstandardNth11gt13 + - J13L*J22L*PDstandardNth12gt13 + J12L*J23L*PDstandardNth12gt13 + - J13L*J32L*PDstandardNth13gt13 + J12L*J33L*PDstandardNth13gt13 + - dJ123L*PDstandardNth1gt13 + J22L*J23L*PDstandardNth22gt13 + - J23L*J32L*PDstandardNth23gt13 + J22L*J33L*PDstandardNth23gt13 + - dJ223L*PDstandardNth2gt13 + J32L*J33L*PDstandardNth33gt13 + - dJ323L*PDstandardNth3gt13)) + (gt13L*J31L + - gt11L*J33L)*PDstandardNth3Xt1 + (gt23L*J31L + - gt12L*J33L)*PDstandardNth3Xt2 + (gt33L*J31L + - gt13L*J33L)*PDstandardNth3Xt3 + (Gtl113 + Gtl311)*Xtn1 + (Gtl123 + - Gtl312)*Xtn2 + (Gtl133 + Gtl313)*Xtn3 - - gtu11*(2*J11L*J21L*PDstandardNth12gt13 + - 2*J11L*J31L*PDstandardNth13gt13 + dJ111L*PDstandardNth1gt13 + - 2*J21L*J31L*PDstandardNth23gt13 + dJ211L*PDstandardNth2gt13 + - dJ311L*PDstandardNth3gt13 + PDstandardNth11gt13*SQR(J11L) + - PDstandardNth22gt13*SQR(J21L) + PDstandardNth33gt13*SQR(J31L)) - - gtu22*(2*J12L*J22L*PDstandardNth12gt13 + - 2*J12L*J32L*PDstandardNth13gt13 + dJ122L*PDstandardNth1gt13 + - 2*J22L*J32L*PDstandardNth23gt13 + dJ222L*PDstandardNth2gt13 + - dJ322L*PDstandardNth3gt13 + PDstandardNth11gt13*SQR(J12L) + - PDstandardNth22gt13*SQR(J22L) + PDstandardNth33gt13*SQR(J32L)) - - gtu33*(2*J13L*J23L*PDstandardNth12gt13 + - 2*J13L*J33L*PDstandardNth13gt13 + dJ133L*PDstandardNth1gt13 + - 2*J23L*J33L*PDstandardNth23gt13 + dJ233L*PDstandardNth2gt13 + - dJ333L*PDstandardNth3gt13 + PDstandardNth11gt13*SQR(J13L) + - PDstandardNth22gt13*SQR(J23L) + PDstandardNth33gt13*SQR(J33L))); - - CCTK_REAL Rt22 = Gt112*(Gtlu121 + 2*Gtlu211) + Gt122*(Gtlu122 + - 2*Gtlu212) + Gt123*(Gtlu123 + 2*Gtlu213) + 3*(Gt212*Gtlu221 + - Gt222*Gtlu222 + Gt223*Gtlu223) + 2*(Gt312*Gtlu231 + Gt322*Gtlu232 + - Gt323*Gtlu233) + Gt312*Gtlu321 + Gt322*Gtlu322 + Gt323*Gtlu323 + - J12L*(gt12L*PDstandardNth1Xt1 + gt22L*PDstandardNth1Xt2 + - gt23L*PDstandardNth1Xt3) + J22L*(gt12L*PDstandardNth2Xt1 + - gt22L*PDstandardNth2Xt2 + gt23L*PDstandardNth2Xt3) + - J32L*(gt12L*PDstandardNth3Xt1 + gt22L*PDstandardNth3Xt2 + - gt23L*PDstandardNth3Xt3) + Gtl212*Xtn1 + Gtl222*Xtn2 + Gtl223*Xtn3 + - 0.5*(-2*(gtu12*(J11L*J12L*PDstandardNth11gt22 + - J12L*J21L*PDstandardNth12gt22 + J11L*J22L*PDstandardNth12gt22 + - J12L*J31L*PDstandardNth13gt22 + J11L*J32L*PDstandardNth13gt22 + - dJ112L*PDstandardNth1gt22 + J21L*J22L*PDstandardNth22gt22 + - J22L*J31L*PDstandardNth23gt22 + J21L*J32L*PDstandardNth23gt22 + - dJ212L*PDstandardNth2gt22 + J31L*J32L*PDstandardNth33gt22 + - dJ312L*PDstandardNth3gt22) + gtu13*(J11L*J13L*PDstandardNth11gt22 + - J13L*J21L*PDstandardNth12gt22 + J11L*J23L*PDstandardNth12gt22 + - J13L*J31L*PDstandardNth13gt22 + J11L*J33L*PDstandardNth13gt22 + - dJ113L*PDstandardNth1gt22 + J21L*J23L*PDstandardNth22gt22 + - J23L*J31L*PDstandardNth23gt22 + J21L*J33L*PDstandardNth23gt22 + - dJ213L*PDstandardNth2gt22 + J31L*J33L*PDstandardNth33gt22 + - dJ313L*PDstandardNth3gt22) + gtu23*(J12L*J13L*PDstandardNth11gt22 + - J13L*J22L*PDstandardNth12gt22 + J12L*J23L*PDstandardNth12gt22 + - J13L*J32L*PDstandardNth13gt22 + J12L*J33L*PDstandardNth13gt22 + - dJ123L*PDstandardNth1gt22 + J22L*J23L*PDstandardNth22gt22 + - J23L*J32L*PDstandardNth23gt22 + J22L*J33L*PDstandardNth23gt22 + - dJ223L*PDstandardNth2gt22 + J32L*J33L*PDstandardNth33gt22 + - dJ323L*PDstandardNth3gt22)) - gtu11*(2*J11L*J21L*PDstandardNth12gt22 + - 2*J11L*J31L*PDstandardNth13gt22 + dJ111L*PDstandardNth1gt22 + - 2*J21L*J31L*PDstandardNth23gt22 + dJ211L*PDstandardNth2gt22 + - dJ311L*PDstandardNth3gt22 + PDstandardNth11gt22*SQR(J11L) + - PDstandardNth22gt22*SQR(J21L) + PDstandardNth33gt22*SQR(J31L)) - - gtu22*(2*J12L*J22L*PDstandardNth12gt22 + - 2*J12L*J32L*PDstandardNth13gt22 + dJ122L*PDstandardNth1gt22 + - 2*J22L*J32L*PDstandardNth23gt22 + dJ222L*PDstandardNth2gt22 + - dJ322L*PDstandardNth3gt22 + PDstandardNth11gt22*SQR(J12L) + - PDstandardNth22gt22*SQR(J22L) + PDstandardNth33gt22*SQR(J32L)) - - gtu33*(2*J13L*J23L*PDstandardNth12gt22 + - 2*J13L*J33L*PDstandardNth13gt22 + dJ133L*PDstandardNth1gt22 + - 2*J23L*J33L*PDstandardNth23gt22 + dJ233L*PDstandardNth2gt22 + - dJ333L*PDstandardNth3gt22 + PDstandardNth11gt22*SQR(J13L) + - PDstandardNth22gt22*SQR(J23L) + PDstandardNth33gt22*SQR(J33L))); - - CCTK_REAL Rt23 = Gt113*Gtlu211 + Gt133*Gtlu213 + Gt213*Gtlu221 + - Gt233*Gtlu223 + (Gt212 + Gt313)*Gtlu231 + (Gt222 + Gt323)*Gtlu232 + - Gt333*Gtlu233 + Gt112*(Gtlu131 + Gtlu311) + Gt122*(Gtlu132 + Gtlu312) + - Gt123*(Gtlu133 + Gtlu212 + Gtlu313) + Gt212*Gtlu321 + Gt222*Gtlu322 + - Gt223*(Gtlu222 + Gtlu233 + Gtlu323) + 2*(Gt312*Gtlu331 + Gt322*Gtlu332 - + Gt323*Gtlu333) + 0.5*((gt13L*J12L + gt12L*J13L)*PDstandardNth1Xt1 + - (gt23L*J12L + gt22L*J13L)*PDstandardNth1Xt2 + (gt33L*J12L + - gt23L*J13L)*PDstandardNth1Xt3 + (gt13L*J22L + - gt12L*J23L)*PDstandardNth2Xt1 + (gt23L*J22L + - gt22L*J23L)*PDstandardNth2Xt2 + (gt33L*J22L + - gt23L*J23L)*PDstandardNth2Xt3 - 2*(gtu12*(J11L*J12L*PDstandardNth11gt23 - + J12L*J21L*PDstandardNth12gt23 + J11L*J22L*PDstandardNth12gt23 + - J12L*J31L*PDstandardNth13gt23 + J11L*J32L*PDstandardNth13gt23 + - dJ112L*PDstandardNth1gt23 + J21L*J22L*PDstandardNth22gt23 + - J22L*J31L*PDstandardNth23gt23 + J21L*J32L*PDstandardNth23gt23 + - dJ212L*PDstandardNth2gt23 + J31L*J32L*PDstandardNth33gt23 + - dJ312L*PDstandardNth3gt23) + gtu13*(J11L*J13L*PDstandardNth11gt23 + - J13L*J21L*PDstandardNth12gt23 + J11L*J23L*PDstandardNth12gt23 + - J13L*J31L*PDstandardNth13gt23 + J11L*J33L*PDstandardNth13gt23 + - dJ113L*PDstandardNth1gt23 + J21L*J23L*PDstandardNth22gt23 + - J23L*J31L*PDstandardNth23gt23 + J21L*J33L*PDstandardNth23gt23 + - dJ213L*PDstandardNth2gt23 + J31L*J33L*PDstandardNth33gt23 + - dJ313L*PDstandardNth3gt23) + gtu23*(J12L*J13L*PDstandardNth11gt23 + - J13L*J22L*PDstandardNth12gt23 + J12L*J23L*PDstandardNth12gt23 + - J13L*J32L*PDstandardNth13gt23 + J12L*J33L*PDstandardNth13gt23 + - dJ123L*PDstandardNth1gt23 + J22L*J23L*PDstandardNth22gt23 + - J23L*J32L*PDstandardNth23gt23 + J22L*J33L*PDstandardNth23gt23 + - dJ223L*PDstandardNth2gt23 + J32L*J33L*PDstandardNth33gt23 + - dJ323L*PDstandardNth3gt23)) + (gt13L*J32L + - gt12L*J33L)*PDstandardNth3Xt1 + (gt23L*J32L + - gt22L*J33L)*PDstandardNth3Xt2 + (gt33L*J32L + - gt23L*J33L)*PDstandardNth3Xt3 + (Gtl213 + Gtl312)*Xtn1 + (Gtl223 + - Gtl322)*Xtn2 + (Gtl233 + Gtl323)*Xtn3 - - gtu11*(2*J11L*J21L*PDstandardNth12gt23 + - 2*J11L*J31L*PDstandardNth13gt23 + dJ111L*PDstandardNth1gt23 + - 2*J21L*J31L*PDstandardNth23gt23 + dJ211L*PDstandardNth2gt23 + - dJ311L*PDstandardNth3gt23 + PDstandardNth11gt23*SQR(J11L) + - PDstandardNth22gt23*SQR(J21L) + PDstandardNth33gt23*SQR(J31L)) - - gtu22*(2*J12L*J22L*PDstandardNth12gt23 + - 2*J12L*J32L*PDstandardNth13gt23 + dJ122L*PDstandardNth1gt23 + - 2*J22L*J32L*PDstandardNth23gt23 + dJ222L*PDstandardNth2gt23 + - dJ322L*PDstandardNth3gt23 + PDstandardNth11gt23*SQR(J12L) + - PDstandardNth22gt23*SQR(J22L) + PDstandardNth33gt23*SQR(J32L)) - - gtu33*(2*J13L*J23L*PDstandardNth12gt23 + - 2*J13L*J33L*PDstandardNth13gt23 + dJ133L*PDstandardNth1gt23 + - 2*J23L*J33L*PDstandardNth23gt23 + dJ233L*PDstandardNth2gt23 + - dJ333L*PDstandardNth3gt23 + PDstandardNth11gt23*SQR(J13L) + - PDstandardNth22gt23*SQR(J23L) + PDstandardNth33gt23*SQR(J33L))); - - CCTK_REAL Rt33 = Gt113*(Gtlu131 + 2*Gtlu311) + Gt123*(Gtlu132 + - 2*Gtlu312) + Gt133*(Gtlu133 + 2*Gtlu313) + Gt213*(Gtlu231 + 2*Gtlu321) - + Gt223*(Gtlu232 + 2*Gtlu322) + Gt233*(Gtlu233 + 2*Gtlu323) + - 3*(Gt313*Gtlu331 + Gt323*Gtlu332 + Gt333*Gtlu333) + - J13L*(gt13L*PDstandardNth1Xt1 + gt23L*PDstandardNth1Xt2 + - gt33L*PDstandardNth1Xt3) + J23L*(gt13L*PDstandardNth2Xt1 + - gt23L*PDstandardNth2Xt2 + gt33L*PDstandardNth2Xt3) + - J33L*(gt13L*PDstandardNth3Xt1 + gt23L*PDstandardNth3Xt2 + - gt33L*PDstandardNth3Xt3) + Gtl313*Xtn1 + Gtl323*Xtn2 + Gtl333*Xtn3 + - 0.5*(-2*(gtu12*(J11L*J12L*PDstandardNth11gt33 + - J12L*J21L*PDstandardNth12gt33 + J11L*J22L*PDstandardNth12gt33 + - J12L*J31L*PDstandardNth13gt33 + J11L*J32L*PDstandardNth13gt33 + - dJ112L*PDstandardNth1gt33 + J21L*J22L*PDstandardNth22gt33 + - J22L*J31L*PDstandardNth23gt33 + J21L*J32L*PDstandardNth23gt33 + - dJ212L*PDstandardNth2gt33 + J31L*J32L*PDstandardNth33gt33 + - dJ312L*PDstandardNth3gt33) + gtu13*(J11L*J13L*PDstandardNth11gt33 + - J13L*J21L*PDstandardNth12gt33 + J11L*J23L*PDstandardNth12gt33 + - J13L*J31L*PDstandardNth13gt33 + J11L*J33L*PDstandardNth13gt33 + - dJ113L*PDstandardNth1gt33 + J21L*J23L*PDstandardNth22gt33 + - J23L*J31L*PDstandardNth23gt33 + J21L*J33L*PDstandardNth23gt33 + - dJ213L*PDstandardNth2gt33 + J31L*J33L*PDstandardNth33gt33 + - dJ313L*PDstandardNth3gt33) + gtu23*(J12L*J13L*PDstandardNth11gt33 + - J13L*J22L*PDstandardNth12gt33 + J12L*J23L*PDstandardNth12gt33 + - J13L*J32L*PDstandardNth13gt33 + J12L*J33L*PDstandardNth13gt33 + - dJ123L*PDstandardNth1gt33 + J22L*J23L*PDstandardNth22gt33 + - J23L*J32L*PDstandardNth23gt33 + J22L*J33L*PDstandardNth23gt33 + - dJ223L*PDstandardNth2gt33 + J32L*J33L*PDstandardNth33gt33 + - dJ323L*PDstandardNth3gt33)) - gtu11*(2*J11L*J21L*PDstandardNth12gt33 + - 2*J11L*J31L*PDstandardNth13gt33 + dJ111L*PDstandardNth1gt33 + - 2*J21L*J31L*PDstandardNth23gt33 + dJ211L*PDstandardNth2gt33 + - dJ311L*PDstandardNth3gt33 + PDstandardNth11gt33*SQR(J11L) + - PDstandardNth22gt33*SQR(J21L) + PDstandardNth33gt33*SQR(J31L)) - - gtu22*(2*J12L*J22L*PDstandardNth12gt33 + - 2*J12L*J32L*PDstandardNth13gt33 + dJ122L*PDstandardNth1gt33 + - 2*J22L*J32L*PDstandardNth23gt33 + dJ222L*PDstandardNth2gt33 + - dJ322L*PDstandardNth3gt33 + PDstandardNth11gt33*SQR(J12L) + - PDstandardNth22gt33*SQR(J22L) + PDstandardNth33gt33*SQR(J32L)) - - gtu33*(2*J13L*J23L*PDstandardNth12gt33 + - 2*J13L*J33L*PDstandardNth13gt33 + dJ133L*PDstandardNth1gt33 + - 2*J23L*J33L*PDstandardNth23gt33 + dJ233L*PDstandardNth2gt33 + - dJ333L*PDstandardNth3gt33 + PDstandardNth11gt33*SQR(J13L) + - PDstandardNth22gt33*SQR(J23L) + PDstandardNth33gt33*SQR(J33L))); - - CCTK_REAL fac1 = IfThen(ToReal(conformalMethod),-0.5*INV(phiL),1); - - CCTK_REAL cdphi1 = fac1*(J11L*PDstandardNth1phi + - J21L*PDstandardNth2phi + J31L*PDstandardNth3phi); - - CCTK_REAL cdphi2 = fac1*(J12L*PDstandardNth1phi + - J22L*PDstandardNth2phi + J32L*PDstandardNth3phi); - - CCTK_REAL cdphi3 = fac1*(J13L*PDstandardNth1phi + - J23L*PDstandardNth2phi + J33L*PDstandardNth3phi); - - CCTK_REAL fac2 = IfThen(ToReal(conformalMethod),0.5*INV(SQR(phiL)),0); - - CCTK_REAL cdphi211 = fac1*((dJ111L - Gt111*J11L - Gt211*J12L - - Gt311*J13L)*PDstandardNth1phi + 2*(J11L*(J21L*PDstandardNth12phi + - J31L*PDstandardNth13phi) + J21L*J31L*PDstandardNth23phi) + (dJ211L - - Gt111*J21L - Gt211*J22L - Gt311*J23L)*PDstandardNth2phi + (dJ311L - - Gt111*J31L - Gt211*J32L - Gt311*J33L)*PDstandardNth3phi + - PDstandardNth11phi*SQR(J11L) + PDstandardNth22phi*SQR(J21L) + - PDstandardNth33phi*SQR(J31L)) + fac2*SQR(J11L*PDstandardNth1phi + - J21L*PDstandardNth2phi + J31L*PDstandardNth3phi); - - CCTK_REAL cdphi212 = fac2*(J11L*PDstandardNth1phi + - J21L*PDstandardNth2phi + - J31L*PDstandardNth3phi)*(J12L*PDstandardNth1phi + - J22L*PDstandardNth2phi + J32L*PDstandardNth3phi) + - fac1*(J12L*(J11L*PDstandardNth11phi + J21L*PDstandardNth12phi + - J31L*PDstandardNth13phi) + J11L*(J22L*PDstandardNth12phi + - J32L*PDstandardNth13phi) + (dJ112L - Gt112*J11L - Gt212*J12L - - Gt312*J13L)*PDstandardNth1phi + J22L*(J21L*PDstandardNth22phi + - J31L*PDstandardNth23phi) + (dJ212L - Gt112*J21L - Gt212*J22L - - Gt312*J23L)*PDstandardNth2phi + J32L*(J21L*PDstandardNth23phi + - J31L*PDstandardNth33phi) + (dJ312L - Gt112*J31L - Gt212*J32L - - Gt312*J33L)*PDstandardNth3phi); - - CCTK_REAL cdphi213 = fac2*(J11L*PDstandardNth1phi + - J21L*PDstandardNth2phi + - J31L*PDstandardNth3phi)*(J13L*PDstandardNth1phi + - J23L*PDstandardNth2phi + J33L*PDstandardNth3phi) + - fac1*(J13L*(J11L*PDstandardNth11phi + J21L*PDstandardNth12phi + - J31L*PDstandardNth13phi) + J11L*(J23L*PDstandardNth12phi + - J33L*PDstandardNth13phi) + (dJ113L - Gt113*J11L - Gt213*J12L - - Gt313*J13L)*PDstandardNth1phi + J23L*(J21L*PDstandardNth22phi + - J31L*PDstandardNth23phi) + (dJ213L - Gt113*J21L - Gt213*J22L - - Gt313*J23L)*PDstandardNth2phi + J33L*(J21L*PDstandardNth23phi + - J31L*PDstandardNth33phi) + (dJ313L - Gt113*J31L - Gt213*J32L - - Gt313*J33L)*PDstandardNth3phi); - - CCTK_REAL cdphi222 = fac1*((dJ122L - Gt122*J11L - Gt222*J12L - - Gt322*J13L)*PDstandardNth1phi + 2*(J12L*(J22L*PDstandardNth12phi + - J32L*PDstandardNth13phi) + J22L*J32L*PDstandardNth23phi) + (dJ222L - - Gt122*J21L - Gt222*J22L - Gt322*J23L)*PDstandardNth2phi + (dJ322L - - Gt122*J31L - Gt222*J32L - Gt322*J33L)*PDstandardNth3phi + - PDstandardNth11phi*SQR(J12L) + PDstandardNth22phi*SQR(J22L) + - PDstandardNth33phi*SQR(J32L)) + fac2*SQR(J12L*PDstandardNth1phi + - J22L*PDstandardNth2phi + J32L*PDstandardNth3phi); - - CCTK_REAL cdphi223 = fac2*(J12L*PDstandardNth1phi + - J22L*PDstandardNth2phi + - J32L*PDstandardNth3phi)*(J13L*PDstandardNth1phi + - J23L*PDstandardNth2phi + J33L*PDstandardNth3phi) + - fac1*(J13L*(J12L*PDstandardNth11phi + J22L*PDstandardNth12phi + - J32L*PDstandardNth13phi) + J12L*(J23L*PDstandardNth12phi + - J33L*PDstandardNth13phi) + (dJ123L - Gt123*J11L - Gt223*J12L - - Gt323*J13L)*PDstandardNth1phi + J23L*(J22L*PDstandardNth22phi + - J32L*PDstandardNth23phi) + (dJ223L - Gt123*J21L - Gt223*J22L - - Gt323*J23L)*PDstandardNth2phi + J33L*(J22L*PDstandardNth23phi + - J32L*PDstandardNth33phi) + (dJ323L - Gt123*J31L - Gt223*J32L - - Gt323*J33L)*PDstandardNth3phi); - - CCTK_REAL cdphi233 = fac1*((dJ133L - Gt133*J11L - Gt233*J12L - - Gt333*J13L)*PDstandardNth1phi + 2*(J13L*(J23L*PDstandardNth12phi + - J33L*PDstandardNth13phi) + J23L*J33L*PDstandardNth23phi) + (dJ233L - - Gt133*J21L - Gt233*J22L - Gt333*J23L)*PDstandardNth2phi + (dJ333L - - Gt133*J31L - Gt233*J32L - Gt333*J33L)*PDstandardNth3phi + - PDstandardNth11phi*SQR(J13L) + PDstandardNth22phi*SQR(J23L) + - PDstandardNth33phi*SQR(J33L)) + fac2*SQR(J13L*PDstandardNth1phi + - J23L*PDstandardNth2phi + J33L*PDstandardNth3phi); + gt11L*JacPDstandardNth1Xt1) + 2*gt12L*JacPDstandardNth1Xt2 + + 2*gt13L*JacPDstandardNth1Xt3 + gtu12*(-JacPDstandardNth12gt11 - + JacPDstandardNth21gt11) - gtu22*JacPDstandardNth22gt11 + + gtu13*(-JacPDstandardNth13gt11 - JacPDstandardNth31gt11) + + gtu23*(-JacPDstandardNth23gt11 - JacPDstandardNth32gt11) - + gtu33*JacPDstandardNth33gt11 + 2*Gtl111*Xtn1 + 2*Gtl112*Xtn2 + + 2*Gtl113*Xtn3); + + CCTK_REAL Rt12 = 0.5*(4*(Gt211*Gtlu221 + Gt212*Gtlu222 + + Gt213*Gtlu223) + 2*(Gt122*Gtlu112 + Gt123*Gtlu113 + Gt111*Gtlu121 + + Gt212*Gtlu121 + Gt222*Gtlu122 + Gt113*Gtlu123 + Gt223*Gtlu123 + + Gt312*Gtlu131 + Gt322*Gtlu132 + Gt323*Gtlu133 + Gt111*Gtlu211 + + Gt112*(Gtlu111 + Gtlu122 + Gtlu212) + Gt113*Gtlu213 + Gt311*Gtlu231 + + Gt312*Gtlu232 + Gt313*Gtlu233 + Gt311*Gtlu321 + Gt312*Gtlu322 + + Gt313*Gtlu323) - gtu11*JacPDstandardNth11gt12 + + gt12L*JacPDstandardNth1Xt1 + gt22L*JacPDstandardNth1Xt2 + + gt23L*JacPDstandardNth1Xt3 + gtu12*(-JacPDstandardNth12gt12 - + JacPDstandardNth21gt12) - gtu22*JacPDstandardNth22gt12 + + gt11L*JacPDstandardNth2Xt1 + gt12L*JacPDstandardNth2Xt2 + + gt13L*JacPDstandardNth2Xt3 + gtu13*(-JacPDstandardNth13gt12 - + JacPDstandardNth31gt12) + gtu23*(-JacPDstandardNth23gt12 - + JacPDstandardNth32gt12) - gtu33*JacPDstandardNth33gt12 + Gtl112*Xtn1 + + Gtl211*Xtn1 + Gtl122*Xtn2 + Gtl212*Xtn2 + Gtl123*Xtn3 + Gtl213*Xtn3); + + CCTK_REAL Rt13 = 0.5*(2*(Gt123*Gtlu112 + Gt133*Gtlu113 + Gt213*Gtlu121 + + Gt223*Gtlu122 + Gt233*Gtlu123 + Gt111*Gtlu131 + Gt313*Gtlu131 + + Gt112*Gtlu132 + Gt323*Gtlu132 + Gt333*Gtlu133 + Gt211*Gtlu231 + + Gt212*Gtlu232 + Gt213*Gtlu233 + Gt111*Gtlu311 + Gt112*Gtlu312 + + Gt113*(Gtlu111 + Gtlu133 + Gtlu313) + Gt211*Gtlu321 + Gt212*Gtlu322 + + Gt213*Gtlu323) + 4*(Gt311*Gtlu331 + Gt312*Gtlu332 + Gt313*Gtlu333) - + gtu11*JacPDstandardNth11gt13 + gt13L*JacPDstandardNth1Xt1 + + gt23L*JacPDstandardNth1Xt2 + gt33L*JacPDstandardNth1Xt3 + + gtu12*(-JacPDstandardNth12gt13 - JacPDstandardNth21gt13) - + gtu22*JacPDstandardNth22gt13 + gtu13*(-JacPDstandardNth13gt13 - + JacPDstandardNth31gt13) + gtu23*(-JacPDstandardNth23gt13 - + JacPDstandardNth32gt13) - gtu33*JacPDstandardNth33gt13 + + gt11L*JacPDstandardNth3Xt1 + gt12L*JacPDstandardNth3Xt2 + + gt13L*JacPDstandardNth3Xt3 + Gtl113*Xtn1 + Gtl311*Xtn1 + Gtl123*Xtn2 + + Gtl312*Xtn2 + Gtl133*Xtn3 + Gtl313*Xtn3); + + CCTK_REAL Rt22 = 0.5*(6*(Gt212*Gtlu221 + Gt222*Gtlu222 + + Gt223*Gtlu223) + 4*(Gt123*Gtlu213 + Gt312*Gtlu231 + Gt322*Gtlu232 + + Gt323*Gtlu233) - gtu11*JacPDstandardNth11gt22 + + gtu12*(-JacPDstandardNth12gt22 - JacPDstandardNth21gt22) - + gtu22*JacPDstandardNth22gt22 + 2*(Gt123*Gtlu123 + Gt112*(Gtlu121 + + 2*Gtlu211) + Gt122*(Gtlu122 + 2*Gtlu212) + Gt312*Gtlu321 + + Gt322*Gtlu322 + Gt323*Gtlu323 + gt12L*JacPDstandardNth2Xt1) + + 2*gt22L*JacPDstandardNth2Xt2 + 2*gt23L*JacPDstandardNth2Xt3 + + gtu13*(-JacPDstandardNth13gt22 - JacPDstandardNth31gt22) + + gtu23*(-JacPDstandardNth23gt22 - JacPDstandardNth32gt22) - + gtu33*JacPDstandardNth33gt22 + 2*Gtl212*Xtn1 + 2*Gtl222*Xtn2 + + 2*Gtl223*Xtn3); + + CCTK_REAL Rt23 = 0.5*(2*(Gt123*Gtlu133 + Gt113*Gtlu211 + Gt123*Gtlu212 + + Gt133*Gtlu213 + Gt213*Gtlu221 + Gt223*Gtlu222 + Gt233*Gtlu223 + + Gt212*Gtlu231 + Gt313*Gtlu231 + Gt222*Gtlu232 + Gt323*Gtlu232 + + Gt223*Gtlu233 + Gt333*Gtlu233 + Gt112*(Gtlu131 + Gtlu311) + + Gt122*(Gtlu132 + Gtlu312) + Gt123*Gtlu313 + Gt212*Gtlu321 + + Gt222*Gtlu322 + Gt223*Gtlu323) + 4*(Gt312*Gtlu331 + Gt322*Gtlu332 + + Gt323*Gtlu333) - gtu11*JacPDstandardNth11gt23 + + gtu12*(-JacPDstandardNth12gt23 - JacPDstandardNth21gt23) - + gtu22*JacPDstandardNth22gt23 + gt13L*JacPDstandardNth2Xt1 + + gt23L*JacPDstandardNth2Xt2 + gt33L*JacPDstandardNth2Xt3 + + gtu13*(-JacPDstandardNth13gt23 - JacPDstandardNth31gt23) + + gtu23*(-JacPDstandardNth23gt23 - JacPDstandardNth32gt23) - + gtu33*JacPDstandardNth33gt23 + gt12L*JacPDstandardNth3Xt1 + + gt22L*JacPDstandardNth3Xt2 + gt23L*JacPDstandardNth3Xt3 + Gtl213*Xtn1 + + Gtl312*Xtn1 + Gtl223*Xtn2 + Gtl322*Xtn2 + Gtl233*Xtn3 + Gtl323*Xtn3); + + CCTK_REAL Rt33 = 0.5*(4*(Gt133*Gtlu313 + Gt213*Gtlu321 + Gt223*Gtlu322 + + Gt233*Gtlu323) + 6*(Gt313*Gtlu331 + Gt323*Gtlu332 + Gt333*Gtlu333) - + gtu11*JacPDstandardNth11gt33 + gtu12*(-JacPDstandardNth12gt33 - + JacPDstandardNth21gt33) - gtu22*JacPDstandardNth22gt33 + + gtu13*(-JacPDstandardNth13gt33 - JacPDstandardNth31gt33) + + gtu23*(-JacPDstandardNth23gt33 - JacPDstandardNth32gt33) - + gtu33*JacPDstandardNth33gt33 + 2*(Gt133*Gtlu133 + Gt213*Gtlu231 + + Gt223*Gtlu232 + Gt233*Gtlu233 + Gt113*(Gtlu131 + 2*Gtlu311) + + Gt123*(Gtlu132 + 2*Gtlu312) + gt13L*JacPDstandardNth3Xt1) + + 2*gt23L*JacPDstandardNth3Xt2 + 2*gt33L*JacPDstandardNth3Xt3 + + 2*Gtl313*Xtn1 + 2*Gtl323*Xtn2 + 2*Gtl333*Xtn3); + + CCTK_REAL fac1 = IfThen(conformalMethod,-0.5*INV(phiL),1); + + CCTK_REAL cdphi1 = fac1*JacPDstandardNth1phi; + + CCTK_REAL cdphi2 = fac1*JacPDstandardNth2phi; + + CCTK_REAL cdphi3 = fac1*JacPDstandardNth3phi; + + CCTK_REAL fac2 = IfThen(conformalMethod,0.5*INV(SQR(phiL)),0); + + CCTK_REAL cdphi211 = fac1*(JacPDstandardNth11phi - + Gt111*JacPDstandardNth1phi - Gt211*JacPDstandardNth2phi - + Gt311*JacPDstandardNth3phi) + fac2*SQR(JacPDstandardNth1phi); + + CCTK_REAL cdphi212 = fac2*JacPDstandardNth1phi*JacPDstandardNth2phi + + fac1*(JacPDstandardNth12phi - Gt112*JacPDstandardNth1phi - + Gt212*JacPDstandardNth2phi - Gt312*JacPDstandardNth3phi); + + CCTK_REAL cdphi213 = fac2*JacPDstandardNth1phi*JacPDstandardNth3phi + + fac1*(JacPDstandardNth13phi - Gt113*JacPDstandardNth1phi - + Gt213*JacPDstandardNth2phi - Gt313*JacPDstandardNth3phi); + + CCTK_REAL cdphi222 = -(fac1*(Gt122*JacPDstandardNth1phi - + JacPDstandardNth22phi + Gt222*JacPDstandardNth2phi + + Gt322*JacPDstandardNth3phi)) + fac2*SQR(JacPDstandardNth2phi); + + CCTK_REAL cdphi223 = fac2*JacPDstandardNth2phi*JacPDstandardNth3phi - + fac1*(Gt123*JacPDstandardNth1phi - JacPDstandardNth23phi + + Gt223*JacPDstandardNth2phi + Gt323*JacPDstandardNth3phi); + + CCTK_REAL cdphi233 = -(fac1*(Gt133*JacPDstandardNth1phi + + Gt233*JacPDstandardNth2phi - JacPDstandardNth33phi + + Gt333*JacPDstandardNth3phi)) + fac2*SQR(JacPDstandardNth3phi); CCTK_REAL Rphi11 = -2*(cdphi211 + 2*(-1 + gt11L*gtu11)*SQR(cdphi1) + gt11L*(cdphi211*gtu11 + 4*(cdphi1*(cdphi2*gtu12 + cdphi3*gtu13) + @@ -841,8 +1429,7 @@ static void ML_BSSN_MP_constraints1_Body(cGH const * restrict const cctkGH, int + 2*SQR(cdphi1)) + gtu22*(cdphi222 + 2*SQR(cdphi2))) + 2*(-1 + gt33L*gtu33)*SQR(cdphi3)); - CCTK_REAL e4phi = - IfThen(ToReal(conformalMethod),INV(SQR(phiL)),exp(4*phiL)); + CCTK_REAL e4phi = IfThen(conformalMethod,INV(SQR(phiL)),exp(4*phiL)); CCTK_REAL em4phi = INV(e4phi); diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_constraints2.cc b/ML_BSSN_MP/src/ML_BSSN_MP_constraints2.cc index ec9596a..073944c 100644 --- a/ML_BSSN_MP/src/ML_BSSN_MP_constraints2.cc +++ b/ML_BSSN_MP/src/ML_BSSN_MP_constraints2.cc @@ -60,8 +60,8 @@ static void ML_BSSN_MP_constraints2_Body(cGH const * restrict const cctkGH, int return; } - const char *groups[] = {"Coordinates::jacobian","ML_BSSN_MP::ML_cons_detg","ML_BSSN_MP::ML_cons_Gamma","ML_BSSN_MP::ML_cons_traceA","ML_BSSN_MP::ML_curv","ML_BSSN_MP::ML_Gamma","ML_BSSN_MP::ML_lapse","ML_BSSN_MP::ML_log_confac","ML_BSSN_MP::ML_metric","ML_BSSN_MP::ML_mom","ML_BSSN_MP::ML_shift","ML_BSSN_MP::ML_trace_curv"}; - GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_constraints2", 12, groups); + const char *groups[] = {"ML_BSSN_MP::ML_cons_detg","ML_BSSN_MP::ML_cons_Gamma","ML_BSSN_MP::ML_cons_traceA","ML_BSSN_MP::ML_curv","ML_BSSN_MP::ML_Gamma","ML_BSSN_MP::ML_lapse","ML_BSSN_MP::ML_log_confac","ML_BSSN_MP::ML_metric","ML_BSSN_MP::ML_mom","ML_BSSN_MP::ML_shift","ML_BSSN_MP::ML_trace_curv"}; + GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_constraints2", 11, groups); GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_constraints2", 2, 2, 2); @@ -110,6 +110,51 @@ static void ML_BSSN_MP_constraints2_Body(cGH const * restrict const cctkGH, int CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy)); CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz)); + /* 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_BSSN_MP_constraints2, @@ -136,15 +181,6 @@ static void ML_BSSN_MP_constraints2_Body(cGH const * restrict const cctkGH, int CCTK_REAL gt22L = gt22[index]; CCTK_REAL gt23L = gt23[index]; CCTK_REAL gt33L = gt33[index]; - CCTK_REAL J11L = J11[index]; - CCTK_REAL J12L = J12[index]; - CCTK_REAL J13L = J13[index]; - CCTK_REAL J21L = J21[index]; - CCTK_REAL J22L = J22[index]; - CCTK_REAL J23L = J23[index]; - CCTK_REAL J31L = J31[index]; - CCTK_REAL J32L = J32[index]; - CCTK_REAL J33L = J33[index]; CCTK_REAL phiL = phi[index]; CCTK_REAL trKL = trK[index]; CCTK_REAL Xt1L = Xt1[index]; @@ -178,6 +214,21 @@ static void ML_BSSN_MP_constraints2_Body(cGH const * restrict const cctkGH, int eTzzL = ToReal(0.0); } + CCTK_REAL J11L, J12L, J13L, J21L, J22L, J23L, J31L, J32L, J33L; + + if (use_jacobian) + { + J11L = J11[index]; + J12L = J12[index]; + J13L = J13[index]; + J21L = J21[index]; + J22L = J22[index]; + J23L = J23[index]; + J31L = J31[index]; + J32L = J32[index]; + J33L = J33[index]; + } + /* Include user supplied include files */ /* Precompute derivatives */ @@ -225,6 +276,264 @@ static void ML_BSSN_MP_constraints2_Body(cGH const * restrict const cctkGH, int CCTK_REAL const PDstandardNth3trK = PDstandardNth3(&trK[index]); /* Calculate temporaries and grid functions */ + CCTK_REAL JacPDstandardNth1At11; + CCTK_REAL JacPDstandardNth1At12; + CCTK_REAL JacPDstandardNth1At13; + CCTK_REAL JacPDstandardNth1At22; + CCTK_REAL JacPDstandardNth1At23; + CCTK_REAL JacPDstandardNth1At33; + CCTK_REAL JacPDstandardNth1gt11; + CCTK_REAL JacPDstandardNth1gt12; + CCTK_REAL JacPDstandardNth1gt13; + CCTK_REAL JacPDstandardNth1gt22; + CCTK_REAL JacPDstandardNth1gt23; + CCTK_REAL JacPDstandardNth1gt33; + CCTK_REAL JacPDstandardNth1phi; + CCTK_REAL JacPDstandardNth1trK; + CCTK_REAL JacPDstandardNth2At11; + CCTK_REAL JacPDstandardNth2At12; + CCTK_REAL JacPDstandardNth2At13; + CCTK_REAL JacPDstandardNth2At22; + CCTK_REAL JacPDstandardNth2At23; + CCTK_REAL JacPDstandardNth2At33; + CCTK_REAL JacPDstandardNth2gt11; + CCTK_REAL JacPDstandardNth2gt12; + CCTK_REAL JacPDstandardNth2gt13; + CCTK_REAL JacPDstandardNth2gt22; + CCTK_REAL JacPDstandardNth2gt23; + CCTK_REAL JacPDstandardNth2gt33; + CCTK_REAL JacPDstandardNth2phi; + CCTK_REAL JacPDstandardNth2trK; + CCTK_REAL JacPDstandardNth3At11; + CCTK_REAL JacPDstandardNth3At12; + CCTK_REAL JacPDstandardNth3At13; + CCTK_REAL JacPDstandardNth3At22; + CCTK_REAL JacPDstandardNth3At23; + CCTK_REAL JacPDstandardNth3At33; + CCTK_REAL JacPDstandardNth3gt11; + CCTK_REAL JacPDstandardNth3gt12; + CCTK_REAL JacPDstandardNth3gt13; + CCTK_REAL JacPDstandardNth3gt22; + CCTK_REAL JacPDstandardNth3gt23; + CCTK_REAL JacPDstandardNth3gt33; + CCTK_REAL JacPDstandardNth3phi; + CCTK_REAL JacPDstandardNth3trK; + + if (use_jacobian) + { + JacPDstandardNth1At11 = J11L*PDstandardNth1At11 + + J21L*PDstandardNth2At11 + J31L*PDstandardNth3At11; + + JacPDstandardNth1At12 = J11L*PDstandardNth1At12 + + J21L*PDstandardNth2At12 + J31L*PDstandardNth3At12; + + JacPDstandardNth1At13 = J11L*PDstandardNth1At13 + + J21L*PDstandardNth2At13 + J31L*PDstandardNth3At13; + + JacPDstandardNth1At22 = J11L*PDstandardNth1At22 + + J21L*PDstandardNth2At22 + J31L*PDstandardNth3At22; + + JacPDstandardNth1At23 = J11L*PDstandardNth1At23 + + J21L*PDstandardNth2At23 + J31L*PDstandardNth3At23; + + JacPDstandardNth1At33 = J11L*PDstandardNth1At33 + + J21L*PDstandardNth2At33 + J31L*PDstandardNth3At33; + + JacPDstandardNth1gt11 = J11L*PDstandardNth1gt11 + + J21L*PDstandardNth2gt11 + J31L*PDstandardNth3gt11; + + JacPDstandardNth1gt12 = J11L*PDstandardNth1gt12 + + J21L*PDstandardNth2gt12 + J31L*PDstandardNth3gt12; + + JacPDstandardNth1gt13 = J11L*PDstandardNth1gt13 + + J21L*PDstandardNth2gt13 + J31L*PDstandardNth3gt13; + + JacPDstandardNth1gt22 = J11L*PDstandardNth1gt22 + + J21L*PDstandardNth2gt22 + J31L*PDstandardNth3gt22; + + JacPDstandardNth1gt23 = J11L*PDstandardNth1gt23 + + J21L*PDstandardNth2gt23 + J31L*PDstandardNth3gt23; + + JacPDstandardNth1gt33 = J11L*PDstandardNth1gt33 + + J21L*PDstandardNth2gt33 + J31L*PDstandardNth3gt33; + + JacPDstandardNth1phi = J11L*PDstandardNth1phi + J21L*PDstandardNth2phi + + J31L*PDstandardNth3phi; + + JacPDstandardNth1trK = J11L*PDstandardNth1trK + J21L*PDstandardNth2trK + + J31L*PDstandardNth3trK; + + JacPDstandardNth2At11 = J12L*PDstandardNth1At11 + + J22L*PDstandardNth2At11 + J32L*PDstandardNth3At11; + + JacPDstandardNth2At12 = J12L*PDstandardNth1At12 + + J22L*PDstandardNth2At12 + J32L*PDstandardNth3At12; + + JacPDstandardNth2At13 = J12L*PDstandardNth1At13 + + J22L*PDstandardNth2At13 + J32L*PDstandardNth3At13; + + JacPDstandardNth2At22 = J12L*PDstandardNth1At22 + + J22L*PDstandardNth2At22 + J32L*PDstandardNth3At22; + + JacPDstandardNth2At23 = J12L*PDstandardNth1At23 + + J22L*PDstandardNth2At23 + J32L*PDstandardNth3At23; + + JacPDstandardNth2At33 = J12L*PDstandardNth1At33 + + J22L*PDstandardNth2At33 + J32L*PDstandardNth3At33; + + JacPDstandardNth2gt11 = J12L*PDstandardNth1gt11 + + J22L*PDstandardNth2gt11 + J32L*PDstandardNth3gt11; + + JacPDstandardNth2gt12 = J12L*PDstandardNth1gt12 + + J22L*PDstandardNth2gt12 + J32L*PDstandardNth3gt12; + + JacPDstandardNth2gt13 = J12L*PDstandardNth1gt13 + + J22L*PDstandardNth2gt13 + J32L*PDstandardNth3gt13; + + JacPDstandardNth2gt22 = J12L*PDstandardNth1gt22 + + J22L*PDstandardNth2gt22 + J32L*PDstandardNth3gt22; + + JacPDstandardNth2gt23 = J12L*PDstandardNth1gt23 + + J22L*PDstandardNth2gt23 + J32L*PDstandardNth3gt23; + + JacPDstandardNth2gt33 = J12L*PDstandardNth1gt33 + + J22L*PDstandardNth2gt33 + J32L*PDstandardNth3gt33; + + JacPDstandardNth2phi = J12L*PDstandardNth1phi + J22L*PDstandardNth2phi + + J32L*PDstandardNth3phi; + + JacPDstandardNth2trK = J12L*PDstandardNth1trK + J22L*PDstandardNth2trK + + J32L*PDstandardNth3trK; + + JacPDstandardNth3At11 = J13L*PDstandardNth1At11 + + J23L*PDstandardNth2At11 + J33L*PDstandardNth3At11; + + JacPDstandardNth3At12 = J13L*PDstandardNth1At12 + + J23L*PDstandardNth2At12 + J33L*PDstandardNth3At12; + + JacPDstandardNth3At13 = J13L*PDstandardNth1At13 + + J23L*PDstandardNth2At13 + J33L*PDstandardNth3At13; + + JacPDstandardNth3At22 = J13L*PDstandardNth1At22 + + J23L*PDstandardNth2At22 + J33L*PDstandardNth3At22; + + JacPDstandardNth3At23 = J13L*PDstandardNth1At23 + + J23L*PDstandardNth2At23 + J33L*PDstandardNth3At23; + + JacPDstandardNth3At33 = J13L*PDstandardNth1At33 + + J23L*PDstandardNth2At33 + J33L*PDstandardNth3At33; + + JacPDstandardNth3gt11 = J13L*PDstandardNth1gt11 + + J23L*PDstandardNth2gt11 + J33L*PDstandardNth3gt11; + + JacPDstandardNth3gt12 = J13L*PDstandardNth1gt12 + + J23L*PDstandardNth2gt12 + J33L*PDstandardNth3gt12; + + JacPDstandardNth3gt13 = J13L*PDstandardNth1gt13 + + J23L*PDstandardNth2gt13 + J33L*PDstandardNth3gt13; + + JacPDstandardNth3gt22 = J13L*PDstandardNth1gt22 + + J23L*PDstandardNth2gt22 + J33L*PDstandardNth3gt22; + + JacPDstandardNth3gt23 = J13L*PDstandardNth1gt23 + + J23L*PDstandardNth2gt23 + J33L*PDstandardNth3gt23; + + JacPDstandardNth3gt33 = J13L*PDstandardNth1gt33 + + J23L*PDstandardNth2gt33 + J33L*PDstandardNth3gt33; + + JacPDstandardNth3phi = J13L*PDstandardNth1phi + J23L*PDstandardNth2phi + + J33L*PDstandardNth3phi; + + JacPDstandardNth3trK = J13L*PDstandardNth1trK + J23L*PDstandardNth2trK + + J33L*PDstandardNth3trK; + } + else + { + JacPDstandardNth1At11 = PDstandardNth1At11; + + JacPDstandardNth1At12 = PDstandardNth1At12; + + JacPDstandardNth1At13 = PDstandardNth1At13; + + JacPDstandardNth1At22 = PDstandardNth1At22; + + JacPDstandardNth1At23 = PDstandardNth1At23; + + JacPDstandardNth1At33 = PDstandardNth1At33; + + JacPDstandardNth1gt11 = PDstandardNth1gt11; + + JacPDstandardNth1gt12 = PDstandardNth1gt12; + + JacPDstandardNth1gt13 = PDstandardNth1gt13; + + JacPDstandardNth1gt22 = PDstandardNth1gt22; + + JacPDstandardNth1gt23 = PDstandardNth1gt23; + + JacPDstandardNth1gt33 = PDstandardNth1gt33; + + JacPDstandardNth1phi = PDstandardNth1phi; + + JacPDstandardNth1trK = PDstandardNth1trK; + + JacPDstandardNth2At11 = PDstandardNth2At11; + + JacPDstandardNth2At12 = PDstandardNth2At12; + + JacPDstandardNth2At13 = PDstandardNth2At13; + + JacPDstandardNth2At22 = PDstandardNth2At22; + + JacPDstandardNth2At23 = PDstandardNth2At23; + + JacPDstandardNth2At33 = PDstandardNth2At33; + + JacPDstandardNth2gt11 = PDstandardNth2gt11; + + JacPDstandardNth2gt12 = PDstandardNth2gt12; + + JacPDstandardNth2gt13 = PDstandardNth2gt13; + + JacPDstandardNth2gt22 = PDstandardNth2gt22; + + JacPDstandardNth2gt23 = PDstandardNth2gt23; + + JacPDstandardNth2gt33 = PDstandardNth2gt33; + + JacPDstandardNth2phi = PDstandardNth2phi; + + JacPDstandardNth2trK = PDstandardNth2trK; + + JacPDstandardNth3At11 = PDstandardNth3At11; + + JacPDstandardNth3At12 = PDstandardNth3At12; + + JacPDstandardNth3At13 = PDstandardNth3At13; + + JacPDstandardNth3At22 = PDstandardNth3At22; + + JacPDstandardNth3At23 = PDstandardNth3At23; + + JacPDstandardNth3At33 = PDstandardNth3At33; + + JacPDstandardNth3gt11 = PDstandardNth3gt11; + + JacPDstandardNth3gt12 = PDstandardNth3gt12; + + JacPDstandardNth3gt13 = PDstandardNth3gt13; + + JacPDstandardNth3gt22 = PDstandardNth3gt22; + + JacPDstandardNth3gt23 = PDstandardNth3gt23; + + JacPDstandardNth3gt33 = PDstandardNth3gt33; + + JacPDstandardNth3phi = PDstandardNth3phi; + + JacPDstandardNth3trK = PDstandardNth3trK; + } + CCTK_REAL detgt = 1; CCTK_REAL gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L)); @@ -239,74 +548,44 @@ static void ML_BSSN_MP_constraints2_Body(cGH const * restrict const cctkGH, int CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L)); - CCTK_REAL Gtl111 = 0.5*(J11L*PDstandardNth1gt11 + - J21L*PDstandardNth2gt11 + J31L*PDstandardNth3gt11); + CCTK_REAL Gtl111 = 0.5*JacPDstandardNth1gt11; - CCTK_REAL Gtl112 = 0.5*(J12L*PDstandardNth1gt11 + - J22L*PDstandardNth2gt11 + J32L*PDstandardNth3gt11); + CCTK_REAL Gtl112 = 0.5*JacPDstandardNth2gt11; - CCTK_REAL Gtl113 = 0.5*(J13L*PDstandardNth1gt11 + - J23L*PDstandardNth2gt11 + J33L*PDstandardNth3gt11); + CCTK_REAL Gtl113 = 0.5*JacPDstandardNth3gt11; - CCTK_REAL Gtl122 = J12L*PDstandardNth1gt12 + J22L*PDstandardNth2gt12 + - J32L*PDstandardNth3gt12 - 0.5*(J11L*PDstandardNth1gt22 + - J21L*PDstandardNth2gt22 + J31L*PDstandardNth3gt22); + CCTK_REAL Gtl122 = -0.5*JacPDstandardNth1gt22 + JacPDstandardNth2gt12; - CCTK_REAL Gtl123 = 0.5*(J13L*PDstandardNth1gt12 + - J12L*PDstandardNth1gt13 - J11L*PDstandardNth1gt23 + - J23L*PDstandardNth2gt12 + J22L*PDstandardNth2gt13 - - J21L*PDstandardNth2gt23 + J33L*PDstandardNth3gt12 + - J32L*PDstandardNth3gt13 - J31L*PDstandardNth3gt23); + CCTK_REAL Gtl123 = 0.5*(-JacPDstandardNth1gt23 + JacPDstandardNth2gt13 + + JacPDstandardNth3gt12); - CCTK_REAL Gtl133 = J13L*PDstandardNth1gt13 + J23L*PDstandardNth2gt13 + - J33L*PDstandardNth3gt13 - 0.5*(J11L*PDstandardNth1gt33 + - J21L*PDstandardNth2gt33 + J31L*PDstandardNth3gt33); + CCTK_REAL Gtl133 = -0.5*JacPDstandardNth1gt33 + JacPDstandardNth3gt13; - CCTK_REAL Gtl211 = J11L*PDstandardNth1gt12 + J21L*PDstandardNth2gt12 - - 0.5*(J12L*PDstandardNth1gt11 + J22L*PDstandardNth2gt11 + - J32L*PDstandardNth3gt11) + J31L*PDstandardNth3gt12; + CCTK_REAL Gtl211 = JacPDstandardNth1gt12 - 0.5*JacPDstandardNth2gt11; - CCTK_REAL Gtl212 = 0.5*(J11L*PDstandardNth1gt22 + - J21L*PDstandardNth2gt22 + J31L*PDstandardNth3gt22); + CCTK_REAL Gtl212 = 0.5*JacPDstandardNth1gt22; - CCTK_REAL Gtl213 = 0.5*(J13L*PDstandardNth1gt12 - - J12L*PDstandardNth1gt13 + J11L*PDstandardNth1gt23 + - J23L*PDstandardNth2gt12 - J22L*PDstandardNth2gt13 + - J21L*PDstandardNth2gt23 + J33L*PDstandardNth3gt12 - - J32L*PDstandardNth3gt13 + J31L*PDstandardNth3gt23); + CCTK_REAL Gtl213 = 0.5*(JacPDstandardNth1gt23 - JacPDstandardNth2gt13 + + JacPDstandardNth3gt12); - CCTK_REAL Gtl222 = 0.5*(J12L*PDstandardNth1gt22 + - J22L*PDstandardNth2gt22 + J32L*PDstandardNth3gt22); + CCTK_REAL Gtl222 = 0.5*JacPDstandardNth2gt22; - CCTK_REAL Gtl223 = 0.5*(J13L*PDstandardNth1gt22 + - J23L*PDstandardNth2gt22 + J33L*PDstandardNth3gt22); + CCTK_REAL Gtl223 = 0.5*JacPDstandardNth3gt22; - CCTK_REAL Gtl233 = J13L*PDstandardNth1gt23 + J23L*PDstandardNth2gt23 + - J33L*PDstandardNth3gt23 - 0.5*(J12L*PDstandardNth1gt33 + - J22L*PDstandardNth2gt33 + J32L*PDstandardNth3gt33); + CCTK_REAL Gtl233 = -0.5*JacPDstandardNth2gt33 + JacPDstandardNth3gt23; - CCTK_REAL Gtl311 = J11L*PDstandardNth1gt13 + J21L*PDstandardNth2gt13 - - 0.5*(J13L*PDstandardNth1gt11 + J23L*PDstandardNth2gt11 + - J33L*PDstandardNth3gt11) + J31L*PDstandardNth3gt13; + CCTK_REAL Gtl311 = JacPDstandardNth1gt13 - 0.5*JacPDstandardNth3gt11; - CCTK_REAL Gtl312 = 0.5*(-(J13L*PDstandardNth1gt12) + - J12L*PDstandardNth1gt13 + J11L*PDstandardNth1gt23 - - J23L*PDstandardNth2gt12 + J22L*PDstandardNth2gt13 + - J21L*PDstandardNth2gt23 - J33L*PDstandardNth3gt12 + - J32L*PDstandardNth3gt13 + J31L*PDstandardNth3gt23); + CCTK_REAL Gtl312 = 0.5*(JacPDstandardNth1gt23 + JacPDstandardNth2gt13 + - JacPDstandardNth3gt12); - CCTK_REAL Gtl313 = 0.5*(J11L*PDstandardNth1gt33 + - J21L*PDstandardNth2gt33 + J31L*PDstandardNth3gt33); + CCTK_REAL Gtl313 = 0.5*JacPDstandardNth1gt33; - CCTK_REAL Gtl322 = J12L*PDstandardNth1gt23 + J22L*PDstandardNth2gt23 - - 0.5*(J13L*PDstandardNth1gt22 + J23L*PDstandardNth2gt22 + - J33L*PDstandardNth3gt22) + J32L*PDstandardNth3gt23; + CCTK_REAL Gtl322 = JacPDstandardNth2gt23 - 0.5*JacPDstandardNth3gt22; - CCTK_REAL Gtl323 = 0.5*(J12L*PDstandardNth1gt33 + - J22L*PDstandardNth2gt33 + J32L*PDstandardNth3gt33); + CCTK_REAL Gtl323 = 0.5*JacPDstandardNth2gt33; - CCTK_REAL Gtl333 = 0.5*(J13L*PDstandardNth1gt33 + - J23L*PDstandardNth2gt33 + J33L*PDstandardNth3gt33); + CCTK_REAL Gtl333 = 0.5*JacPDstandardNth3gt33; CCTK_REAL Gt111 = Gtl111*gtu11 + Gtl211*gtu12 + Gtl311*gtu13; @@ -344,16 +623,13 @@ static void ML_BSSN_MP_constraints2_Body(cGH const * restrict const cctkGH, int CCTK_REAL Gt333 = Gtl133*gtu13 + Gtl233*gtu23 + Gtl333*gtu33; - CCTK_REAL fac1 = IfThen(ToReal(conformalMethod),-0.5*INV(phiL),1); + CCTK_REAL fac1 = IfThen(conformalMethod,-0.5*INV(phiL),1); - CCTK_REAL cdphi1 = fac1*(J11L*PDstandardNth1phi + - J21L*PDstandardNth2phi + J31L*PDstandardNth3phi); + CCTK_REAL cdphi1 = fac1*JacPDstandardNth1phi; - CCTK_REAL cdphi2 = fac1*(J12L*PDstandardNth1phi + - J22L*PDstandardNth2phi + J32L*PDstandardNth3phi); + CCTK_REAL cdphi2 = fac1*JacPDstandardNth2phi; - CCTK_REAL cdphi3 = fac1*(J13L*PDstandardNth1phi + - J23L*PDstandardNth2phi + J33L*PDstandardNth3phi); + CCTK_REAL cdphi3 = fac1*JacPDstandardNth3phi; CCTK_REAL S1 = (-eTtxL + beta1L*eTxxL + beta2L*eTxyL + beta3L*eTxzL)*INV(alphaL); @@ -364,99 +640,62 @@ static void ML_BSSN_MP_constraints2_Body(cGH const * restrict const cctkGH, int CCTK_REAL S3 = (-eTtzL + beta1L*eTxzL + beta2L*eTyzL + beta3L*eTzzL)*INV(alphaL); - CCTK_REAL M1L = (-(At22L*Gt212) + At12L*(-Gt112 - Gt222) - - At23L*Gt312)*gtu22 + (6*At13L*cdphi2 - At23L*Gt212 - At33L*Gt312)*gtu23 - + (6*At12L*cdphi3 - At22L*Gt213 - At23L*Gt313)*gtu23 + At12L*((6*cdphi1 - - Gt111)*gtu12 - 3*Gt213*gtu13 + 6*cdphi2*gtu22 - Gt113*gtu23) - - 2*(At12L*Gt211*gtu11 + At13L*Gt311*gtu11 + At11L*Gt123*gtu23) + - (6*At13L*cdphi3 - At23L*Gt213 - At33L*Gt313)*gtu33 + - At13L*(-2*Gt323*gtu23 - Gt113*gtu33) + At11L*(6*cdphi1*gtu11 - - 2*Gt111*gtu11 + 6*cdphi2*gtu12 + 6*cdphi3*gtu13 - Gt122*gtu22 - - Gt133*gtu33) + At12L*(-2*Gt223*gtu23 - Gt233*gtu33) + At13L*((6*cdphi1 - - Gt111)*gtu13 - Gt322*gtu22 - Gt112*gtu23 - Gt333*gtu33) + (gtu11*J11L - + gtu12*J12L + gtu13*J13L)*PDstandardNth1At11 + - gtu22*J12L*PDstandardNth1At12 + gtu23*J13L*PDstandardNth1At12 + - gtu12*(-3*At11L*Gt112 - At22L*Gt211 - 3*At12L*Gt212 - At23L*Gt311 - - 3*At13L*Gt312 + J11L*PDstandardNth1At12) + - gtu23*J12L*PDstandardNth1At13 + gtu33*J13L*PDstandardNth1At13 + - gtu13*(-3*At11L*Gt113 - At23L*Gt211 - At33L*Gt311 - 3*At13L*Gt313 + - J11L*PDstandardNth1At13) - - 0.666666666666666666666666666667*J11L*PDstandardNth1trK + (gtu11*J21L + - gtu12*J22L + gtu13*J23L)*PDstandardNth2At11 + - gtu12*J21L*PDstandardNth2At12 + gtu22*J22L*PDstandardNth2At12 + - gtu23*J23L*PDstandardNth2At12 + gtu13*J21L*PDstandardNth2At13 + - gtu23*J22L*PDstandardNth2At13 + gtu33*J23L*PDstandardNth2At13 - - 0.666666666666666666666666666667*J21L*PDstandardNth2trK + - gtu11*J31L*PDstandardNth3At11 + gtu12*J32L*PDstandardNth3At11 + - gtu13*J33L*PDstandardNth3At11 + gtu12*J31L*PDstandardNth3At12 + - gtu22*J32L*PDstandardNth3At12 + gtu23*J33L*PDstandardNth3At12 + - gtu13*J31L*PDstandardNth3At13 + gtu23*J32L*PDstandardNth3At13 + - gtu33*J33L*PDstandardNth3At13 - - 0.666666666666666666666666666667*J31L*PDstandardNth3trK - + CCTK_REAL M1L = Gt311*(-2.*At13L*gtu11 - 1.*(At23L*gtu12 + + At33L*gtu13)) + At12L*((6.*cdphi1 - 1.*Gt111 - 3.*Gt212)*gtu12 - + 3.*Gt213*gtu13 + (6.*cdphi2 - 1.*(Gt112 + Gt222))*gtu22 + (6.*cdphi3 - + 1.*Gt113)*gtu23 - 2.*(Gt211*gtu11 + Gt223*gtu23) - 1.*Gt233*gtu33) - + 1.*((At22L*Gt212 + At23L*Gt312)*gtu22 + (At13L*Gt112 + At22L*Gt213 + + At33L*Gt312 + At23L*(Gt212 + Gt313))*gtu23 + (At13L*Gt113 + At23L*Gt213 + + At33L*Gt313)*gtu33) + At11L*((6.*cdphi1 - 2.*Gt111)*gtu11 + + (6.*cdphi2 - 3.*Gt112)*gtu12 + (6.*cdphi3 - 3.*Gt113)*gtu13 - + 2.*Gt123*gtu23 - 1.*(Gt122*gtu22 + Gt133*gtu33)) + At13L*((6.*cdphi1 - + 1.*Gt111)*gtu13 + (6.*cdphi2 - 2.*Gt323)*gtu23 + 6.*cdphi3*gtu33 - + 1.*(Gt322*gtu22 + Gt333*gtu33)) + gtu11*JacPDstandardNth1At11 - + 0.6666666666666666666666666666666666666667*JacPDstandardNth1trK + + gtu12*(-1.*At22L*Gt211 - 3.*At13L*Gt312 + JacPDstandardNth1At12 + + JacPDstandardNth2At11) + gtu22*JacPDstandardNth2At12 + + gtu13*(-1.*At23L*Gt211 - 3.*At13L*Gt313 + JacPDstandardNth1At13 + + JacPDstandardNth3At11) + gtu23*(JacPDstandardNth2At13 + + JacPDstandardNth3At12) + gtu33*JacPDstandardNth3At13 - 25.13274122871834590770114706623602307358*S1; - CCTK_REAL M2L = (-(At11L*Gt112) - At22L*Gt211 - At12L*Gt212 - - At23L*Gt311 - At13L*Gt312)*gtu11 + (6*At22L*cdphi1 - At11L*Gt122)*gtu12 - + (6*At12L*cdphi2 - At13L*Gt322)*gtu12 + (6*At23L*cdphi1 - - At11L*Gt123)*gtu13 + (6*At12L*cdphi3 - At13L*Gt323)*gtu13 + - Gt112*(-3*At12L*gtu12 - At13L*gtu13) + Gt212*(-3*At22L*gtu12 - - At23L*gtu13) + Gt312*(-3*At23L*gtu12 - At33L*gtu13) + At12L*((6*cdphi1 - - Gt111)*gtu11 - Gt222*gtu12 - Gt223*gtu13) + 6*At22L*cdphi2*gtu22 - - 2*At22L*Gt222*gtu22 + 6*At22L*cdphi3*gtu23 - 3*At22L*Gt223*gtu23 + - Gt122*(-2*At12L*gtu22 - At13L*gtu23) + Gt322*(-2*At23L*gtu22 - - At33L*gtu23) + 6*At23L*cdphi3*gtu33 + Gt123*(-3*At12L*gtu23 - - At13L*gtu33) + Gt323*(-3*At23L*gtu23 - At33L*gtu33) + - At12L*(-2*Gt113*gtu13 - Gt133*gtu33) + At23L*(6*cdphi2*gtu23 - - Gt223*gtu33) + At22L*(-2*Gt213*gtu13 - Gt233*gtu33) + - At23L*(-2*Gt313*gtu13 - Gt222*gtu23 - Gt333*gtu33) + (gtu11*J11L + - gtu12*J12L + gtu13*J13L)*PDstandardNth1At12 + - gtu12*J11L*PDstandardNth1At22 + gtu22*J12L*PDstandardNth1At22 + - gtu23*J13L*PDstandardNth1At22 + gtu13*J11L*PDstandardNth1At23 + - gtu23*J12L*PDstandardNth1At23 + gtu33*J13L*PDstandardNth1At23 - - 0.666666666666666666666666666667*J12L*PDstandardNth1trK + (gtu11*J21L + - gtu12*J22L + gtu13*J23L)*PDstandardNth2At12 + - gtu12*J21L*PDstandardNth2At22 + gtu22*J22L*PDstandardNth2At22 + - gtu23*J23L*PDstandardNth2At22 + gtu13*J21L*PDstandardNth2At23 + - gtu23*J22L*PDstandardNth2At23 + gtu33*J23L*PDstandardNth2At23 - - 0.666666666666666666666666666667*J22L*PDstandardNth2trK + - gtu11*J31L*PDstandardNth3At12 + gtu12*J32L*PDstandardNth3At12 + - gtu13*J33L*PDstandardNth3At12 + gtu12*J31L*PDstandardNth3At22 + - gtu22*J32L*PDstandardNth3At22 + gtu23*J33L*PDstandardNth3At22 + - gtu13*J31L*PDstandardNth3At23 + gtu23*J32L*PDstandardNth3At23 + - gtu33*J33L*PDstandardNth3At23 - - 0.666666666666666666666666666667*J32L*PDstandardNth3trK - + CCTK_REAL M2L = At12L*((6.*cdphi1 - 1.*(Gt111 + Gt212))*gtu11 + + (6.*cdphi2 - 3.*Gt112 - 1.*Gt222)*gtu12 + (6.*cdphi3 - 2.*Gt113 - + 1.*Gt223)*gtu13 - 2.*Gt122*gtu22 - 3.*Gt123*gtu23 - 1.*Gt133*gtu33) + + At22L*((6.*cdphi1 - 3.*Gt212)*gtu12 - 2.*(Gt213*gtu13 + Gt222*gtu22) + + 6.*(cdphi2*gtu22 + cdphi3*gtu23) - 1.*Gt233*gtu33) + + At23L*(-3.*Gt312*gtu12 - 2.*Gt322*gtu22 - 1.*Gt333*gtu33 + + 6.*(cdphi1*gtu13 + cdphi2*gtu23 + cdphi3*gtu33)) - 1.*((At22L*Gt211 + + At23L*Gt311 + At13L*Gt312)*gtu11 + (At23L*Gt212 + At33L*Gt312)*gtu13 + + At11L*(Gt112*gtu11 + Gt122*gtu12 + Gt123*gtu13) + (At23L*Gt223 + + At33L*Gt323)*gtu33 + At13L*(Gt322*gtu12 + Gt112*gtu13 + Gt122*gtu23 + + Gt123*gtu33)) + gtu11*JacPDstandardNth1At12 + + gtu12*(JacPDstandardNth1At22 + JacPDstandardNth2At12) + + gtu22*JacPDstandardNth2At22 - + 0.6666666666666666666666666666666666666667*JacPDstandardNth2trK + + gtu13*(-2.*At23L*Gt313 - 1.*At13L*Gt323 + JacPDstandardNth1At23 + + JacPDstandardNth3At12) + gtu23*(-1.*(At23L*Gt222 + At33L*Gt322) - + 3.*(At22L*Gt223 + At23L*Gt323) + JacPDstandardNth2At23 + + JacPDstandardNth3At22) + gtu33*JacPDstandardNth3At23 - 25.13274122871834590770114706623602307358*S2; - CCTK_REAL M3L = (-(At11L*Gt113) - At23L*Gt211 - At12L*Gt213 - - At33L*Gt311 - At13L*Gt313)*gtu11 + (-2*At13L*Gt112 - At22L*Gt213)*gtu12 - + (6*At23L*cdphi1 + At12L*(-Gt113 - Gt223))*gtu12 + (6*At13L*cdphi2 - - At11L*Gt123 - At23L*Gt313)*gtu12 + (6*At33L*cdphi1 - At11L*Gt133)*gtu13 - + (6*At13L*cdphi3 - At12L*Gt233)*gtu13 - 3*At33L*Gt313*gtu13 + - At13L*((6*cdphi1 - Gt111)*gtu11 - Gt323*gtu12 - Gt333*gtu13) + - (6*At23L*cdphi2 - At12L*Gt123 - At22L*Gt223)*gtu22 + - At13L*(-3*Gt113*gtu13 - Gt122*gtu22) + At33L*(-2*Gt312*gtu12 - - Gt322*gtu22) + At23L*(-3*Gt213*gtu13 - Gt323*gtu22) - - 3*At13L*Gt123*gtu23 + (6*At33L*cdphi2 - At12L*Gt133)*gtu23 - - 3*At23L*Gt223*gtu23 + (6*At23L*cdphi3 - At22L*Gt233)*gtu23 - - 3*At33L*Gt323*gtu23 + At23L*(-2*Gt212*gtu12 - Gt222*gtu22 - - Gt333*gtu23) + 6*At33L*cdphi3*gtu33 - 2*At13L*Gt133*gtu33 - - 2*At23L*Gt233*gtu33 - 2*At33L*Gt333*gtu33 + (gtu11*J11L + gtu12*J12L + - gtu13*J13L)*PDstandardNth1At13 + gtu12*J11L*PDstandardNth1At23 + - gtu22*J12L*PDstandardNth1At23 + gtu23*J13L*PDstandardNth1At23 + - gtu13*J11L*PDstandardNth1At33 + gtu23*J12L*PDstandardNth1At33 + - gtu33*J13L*PDstandardNth1At33 - - 0.666666666666666666666666666667*J13L*PDstandardNth1trK + (gtu11*J21L + - gtu12*J22L + gtu13*J23L)*PDstandardNth2At13 + - gtu12*J21L*PDstandardNth2At23 + gtu22*J22L*PDstandardNth2At23 + - gtu23*J23L*PDstandardNth2At23 + gtu13*J21L*PDstandardNth2At33 + - gtu23*J22L*PDstandardNth2At33 + gtu33*J23L*PDstandardNth2At33 - - 0.666666666666666666666666666667*J23L*PDstandardNth2trK + - gtu11*J31L*PDstandardNth3At13 + gtu12*J32L*PDstandardNth3At13 + - gtu13*J33L*PDstandardNth3At13 + gtu12*J31L*PDstandardNth3At23 + - gtu22*J32L*PDstandardNth3At23 + gtu23*J33L*PDstandardNth3At23 + - gtu13*J31L*PDstandardNth3At33 + gtu23*J32L*PDstandardNth3At33 + - gtu33*J33L*PDstandardNth3At33 - - 0.666666666666666666666666666667*J33L*PDstandardNth3trK - + CCTK_REAL M3L = -1.*((At23L*Gt211 + At12L*Gt213 + At33L*Gt311)*gtu11 + + (At22L*Gt213 + At12L*(Gt113 + Gt223))*gtu12 + At11L*(Gt113*gtu11 + + Gt123*gtu12 + Gt133*gtu13) + (At23L*Gt222 + At22L*Gt223)*gtu22 + + At12L*(Gt233*gtu13 + Gt123*gtu22 + Gt133*gtu23)) + At13L*((6.*cdphi1 - + 1.*(Gt111 + Gt313))*gtu11 + (6.*cdphi2 - 2.*Gt112 - 1.*Gt323)*gtu12 + + (6.*cdphi3 - 3.*Gt113 - 1.*Gt333)*gtu13 - 1.*Gt122*gtu22 - + 3.*Gt123*gtu23 - 2.*Gt133*gtu33) + At23L*((6.*cdphi1 - 2.*Gt212)*gtu12 + - 3.*Gt213*gtu13 + (6.*cdphi2 - 1.*Gt323)*gtu22 + 6.*cdphi3*gtu23 - + 2.*Gt233*gtu33) + At33L*((6.*cdphi1 - 3.*Gt313)*gtu13 - 1.*Gt322*gtu22 + - 2.*Gt333*gtu33 + 6.*(cdphi2*gtu23 + cdphi3*gtu33)) + + gtu11*JacPDstandardNth1At13 + gtu12*(-2.*At33L*Gt312 - 1.*At23L*Gt313 + + JacPDstandardNth1At23 + JacPDstandardNth2At13) + + gtu22*JacPDstandardNth2At23 + gtu13*(JacPDstandardNth1At33 + + JacPDstandardNth3At13) + gtu23*(-3.*(At23L*Gt223 + At33L*Gt323) - + 1.*(At22L*Gt233 + At23L*Gt333) + JacPDstandardNth2At33 + + JacPDstandardNth3At23) + gtu33*JacPDstandardNth3At33 - + 0.6666666666666666666666666666666666666667*JacPDstandardNth3trK - 25.13274122871834590770114706623602307358*S3; CCTK_REAL cSL = Log(detgt); diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_convertFromADMBase.cc b/ML_BSSN_MP/src/ML_BSSN_MP_convertFromADMBase.cc index 0006976..ff4fd8e 100644 --- a/ML_BSSN_MP/src/ML_BSSN_MP_convertFromADMBase.cc +++ b/ML_BSSN_MP/src/ML_BSSN_MP_convertFromADMBase.cc @@ -88,6 +88,51 @@ static void ML_BSSN_MP_convertFromADMBase_Body(cGH const * restrict const cctkGH CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy)); CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz)); + /* 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_BSSN_MP_convertFromADMBase, @@ -118,6 +163,7 @@ static void ML_BSSN_MP_convertFromADMBase_Body(cGH const * restrict const cctkGH CCTK_REAL trKL = trK[index]; + /* Include user supplied include files */ /* Precompute derivatives */ diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_convertFromADMBaseGamma.cc b/ML_BSSN_MP/src/ML_BSSN_MP_convertFromADMBaseGamma.cc index 6ece0ef..700b9be 100644 --- a/ML_BSSN_MP/src/ML_BSSN_MP_convertFromADMBaseGamma.cc +++ b/ML_BSSN_MP/src/ML_BSSN_MP_convertFromADMBaseGamma.cc @@ -57,8 +57,8 @@ static void ML_BSSN_MP_convertFromADMBaseGamma_Body(cGH const * restrict const c return; } - const char *groups[] = {"ADMBase::dtlapse","ADMBase::dtshift","Coordinates::jacobian","grid::coordinates","Grid::coordinates","ML_BSSN_MP::ML_dtlapse","ML_BSSN_MP::ML_dtshift","ML_BSSN_MP::ML_Gamma","ML_BSSN_MP::ML_lapse","ML_BSSN_MP::ML_metric","ML_BSSN_MP::ML_shift"}; - GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_convertFromADMBaseGamma", 11, groups); + const char *groups[] = {"ADMBase::dtlapse","ADMBase::dtshift","grid::coordinates","Grid::coordinates","ML_BSSN_MP::ML_dtlapse","ML_BSSN_MP::ML_dtshift","ML_BSSN_MP::ML_Gamma","ML_BSSN_MP::ML_lapse","ML_BSSN_MP::ML_metric","ML_BSSN_MP::ML_shift"}; + GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_convertFromADMBaseGamma", 10, groups); GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_convertFromADMBaseGamma", 3, 3, 3); @@ -107,6 +107,51 @@ static void ML_BSSN_MP_convertFromADMBaseGamma_Body(cGH const * restrict const c CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy)); CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz)); + /* 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_BSSN_MP_convertFromADMBaseGamma, @@ -131,18 +176,24 @@ static void ML_BSSN_MP_convertFromADMBaseGamma_Body(cGH const * restrict const c CCTK_REAL gt22L = gt22[index]; CCTK_REAL gt23L = gt23[index]; CCTK_REAL gt33L = gt33[index]; - CCTK_REAL J11L = J11[index]; - CCTK_REAL J12L = J12[index]; - CCTK_REAL J13L = J13[index]; - CCTK_REAL J21L = J21[index]; - CCTK_REAL J22L = J22[index]; - CCTK_REAL J23L = J23[index]; - CCTK_REAL J31L = J31[index]; - CCTK_REAL J32L = J32[index]; - CCTK_REAL J33L = J33[index]; CCTK_REAL rL = r[index]; + CCTK_REAL J11L, J12L, J13L, J21L, J22L, J23L, J31L, J32L, J33L; + + if (use_jacobian) + { + J11L = J11[index]; + J12L = J12[index]; + J13L = J13[index]; + J21L = J21[index]; + J22L = J22[index]; + J23L = J23[index]; + J31L = J31[index]; + J32L = J32[index]; + J33L = J33[index]; + } + /* Include user supplied include files */ /* Precompute derivatives */ @@ -190,6 +241,264 @@ static void ML_BSSN_MP_convertFromADMBaseGamma_Body(cGH const * restrict const c CCTK_REAL const PDstandardNth3gt33 = PDstandardNth3(>33[index]); /* Calculate temporaries and grid functions */ + CCTK_REAL JacPDstandardNth1gt11; + CCTK_REAL JacPDstandardNth1gt12; + CCTK_REAL JacPDstandardNth1gt13; + CCTK_REAL JacPDstandardNth1gt22; + CCTK_REAL JacPDstandardNth1gt23; + CCTK_REAL JacPDstandardNth1gt33; + CCTK_REAL JacPDstandardNth2gt11; + CCTK_REAL JacPDstandardNth2gt12; + CCTK_REAL JacPDstandardNth2gt13; + CCTK_REAL JacPDstandardNth2gt22; + CCTK_REAL JacPDstandardNth2gt23; + CCTK_REAL JacPDstandardNth2gt33; + CCTK_REAL JacPDstandardNth3gt11; + CCTK_REAL JacPDstandardNth3gt12; + CCTK_REAL JacPDstandardNth3gt13; + CCTK_REAL JacPDstandardNth3gt22; + CCTK_REAL JacPDstandardNth3gt23; + CCTK_REAL JacPDstandardNth3gt33; + CCTK_REAL JacPDupwindNthAnti1alpha; + CCTK_REAL JacPDupwindNthAnti1beta1; + CCTK_REAL JacPDupwindNthAnti1beta2; + CCTK_REAL JacPDupwindNthAnti1beta3; + CCTK_REAL JacPDupwindNthAnti2alpha; + CCTK_REAL JacPDupwindNthAnti2beta1; + CCTK_REAL JacPDupwindNthAnti2beta2; + CCTK_REAL JacPDupwindNthAnti2beta3; + CCTK_REAL JacPDupwindNthAnti3alpha; + CCTK_REAL JacPDupwindNthAnti3beta1; + CCTK_REAL JacPDupwindNthAnti3beta2; + CCTK_REAL JacPDupwindNthAnti3beta3; + CCTK_REAL JacPDupwindNthSymm1alpha; + CCTK_REAL JacPDupwindNthSymm1beta1; + CCTK_REAL JacPDupwindNthSymm1beta2; + CCTK_REAL JacPDupwindNthSymm1beta3; + CCTK_REAL JacPDupwindNthSymm2alpha; + CCTK_REAL JacPDupwindNthSymm2beta1; + CCTK_REAL JacPDupwindNthSymm2beta2; + CCTK_REAL JacPDupwindNthSymm2beta3; + CCTK_REAL JacPDupwindNthSymm3alpha; + CCTK_REAL JacPDupwindNthSymm3beta1; + CCTK_REAL JacPDupwindNthSymm3beta2; + CCTK_REAL JacPDupwindNthSymm3beta3; + + if (use_jacobian) + { + JacPDstandardNth1gt11 = J11L*PDstandardNth1gt11 + + J21L*PDstandardNth2gt11 + J31L*PDstandardNth3gt11; + + JacPDstandardNth1gt12 = J11L*PDstandardNth1gt12 + + J21L*PDstandardNth2gt12 + J31L*PDstandardNth3gt12; + + JacPDstandardNth1gt13 = J11L*PDstandardNth1gt13 + + J21L*PDstandardNth2gt13 + J31L*PDstandardNth3gt13; + + JacPDstandardNth1gt22 = J11L*PDstandardNth1gt22 + + J21L*PDstandardNth2gt22 + J31L*PDstandardNth3gt22; + + JacPDstandardNth1gt23 = J11L*PDstandardNth1gt23 + + J21L*PDstandardNth2gt23 + J31L*PDstandardNth3gt23; + + JacPDstandardNth1gt33 = J11L*PDstandardNth1gt33 + + J21L*PDstandardNth2gt33 + J31L*PDstandardNth3gt33; + + JacPDstandardNth2gt11 = J12L*PDstandardNth1gt11 + + J22L*PDstandardNth2gt11 + J32L*PDstandardNth3gt11; + + JacPDstandardNth2gt12 = J12L*PDstandardNth1gt12 + + J22L*PDstandardNth2gt12 + J32L*PDstandardNth3gt12; + + JacPDstandardNth2gt13 = J12L*PDstandardNth1gt13 + + J22L*PDstandardNth2gt13 + J32L*PDstandardNth3gt13; + + JacPDstandardNth2gt22 = J12L*PDstandardNth1gt22 + + J22L*PDstandardNth2gt22 + J32L*PDstandardNth3gt22; + + JacPDstandardNth2gt23 = J12L*PDstandardNth1gt23 + + J22L*PDstandardNth2gt23 + J32L*PDstandardNth3gt23; + + JacPDstandardNth2gt33 = J12L*PDstandardNth1gt33 + + J22L*PDstandardNth2gt33 + J32L*PDstandardNth3gt33; + + JacPDstandardNth3gt11 = J13L*PDstandardNth1gt11 + + J23L*PDstandardNth2gt11 + J33L*PDstandardNth3gt11; + + JacPDstandardNth3gt12 = J13L*PDstandardNth1gt12 + + J23L*PDstandardNth2gt12 + J33L*PDstandardNth3gt12; + + JacPDstandardNth3gt13 = J13L*PDstandardNth1gt13 + + J23L*PDstandardNth2gt13 + J33L*PDstandardNth3gt13; + + JacPDstandardNth3gt22 = J13L*PDstandardNth1gt22 + + J23L*PDstandardNth2gt22 + J33L*PDstandardNth3gt22; + + JacPDstandardNth3gt23 = J13L*PDstandardNth1gt23 + + J23L*PDstandardNth2gt23 + J33L*PDstandardNth3gt23; + + JacPDstandardNth3gt33 = J13L*PDstandardNth1gt33 + + J23L*PDstandardNth2gt33 + J33L*PDstandardNth3gt33; + + JacPDupwindNthAnti1alpha = J11L*PDupwindNthAnti1alpha + + J21L*PDupwindNthAnti2alpha + J31L*PDupwindNthAnti3alpha; + + JacPDupwindNthAnti1beta1 = J11L*PDupwindNthAnti1beta1 + + J21L*PDupwindNthAnti2beta1 + J31L*PDupwindNthAnti3beta1; + + JacPDupwindNthAnti1beta2 = J11L*PDupwindNthAnti1beta2 + + J21L*PDupwindNthAnti2beta2 + J31L*PDupwindNthAnti3beta2; + + JacPDupwindNthAnti1beta3 = J11L*PDupwindNthAnti1beta3 + + J21L*PDupwindNthAnti2beta3 + J31L*PDupwindNthAnti3beta3; + + JacPDupwindNthSymm1alpha = J11L*PDupwindNthSymm1alpha + + J21L*PDupwindNthSymm2alpha + J31L*PDupwindNthSymm3alpha; + + JacPDupwindNthSymm1beta1 = J11L*PDupwindNthSymm1beta1 + + J21L*PDupwindNthSymm2beta1 + J31L*PDupwindNthSymm3beta1; + + JacPDupwindNthSymm1beta2 = J11L*PDupwindNthSymm1beta2 + + J21L*PDupwindNthSymm2beta2 + J31L*PDupwindNthSymm3beta2; + + JacPDupwindNthSymm1beta3 = J11L*PDupwindNthSymm1beta3 + + J21L*PDupwindNthSymm2beta3 + J31L*PDupwindNthSymm3beta3; + + JacPDupwindNthAnti2alpha = J12L*PDupwindNthAnti1alpha + + J22L*PDupwindNthAnti2alpha + J32L*PDupwindNthAnti3alpha; + + JacPDupwindNthAnti2beta1 = J12L*PDupwindNthAnti1beta1 + + J22L*PDupwindNthAnti2beta1 + J32L*PDupwindNthAnti3beta1; + + JacPDupwindNthAnti2beta2 = J12L*PDupwindNthAnti1beta2 + + J22L*PDupwindNthAnti2beta2 + J32L*PDupwindNthAnti3beta2; + + JacPDupwindNthAnti2beta3 = J12L*PDupwindNthAnti1beta3 + + J22L*PDupwindNthAnti2beta3 + J32L*PDupwindNthAnti3beta3; + + JacPDupwindNthSymm2alpha = J12L*PDupwindNthSymm1alpha + + J22L*PDupwindNthSymm2alpha + J32L*PDupwindNthSymm3alpha; + + JacPDupwindNthSymm2beta1 = J12L*PDupwindNthSymm1beta1 + + J22L*PDupwindNthSymm2beta1 + J32L*PDupwindNthSymm3beta1; + + JacPDupwindNthSymm2beta2 = J12L*PDupwindNthSymm1beta2 + + J22L*PDupwindNthSymm2beta2 + J32L*PDupwindNthSymm3beta2; + + JacPDupwindNthSymm2beta3 = J12L*PDupwindNthSymm1beta3 + + J22L*PDupwindNthSymm2beta3 + J32L*PDupwindNthSymm3beta3; + + JacPDupwindNthAnti3alpha = J13L*PDupwindNthAnti1alpha + + J23L*PDupwindNthAnti2alpha + J33L*PDupwindNthAnti3alpha; + + JacPDupwindNthAnti3beta1 = J13L*PDupwindNthAnti1beta1 + + J23L*PDupwindNthAnti2beta1 + J33L*PDupwindNthAnti3beta1; + + JacPDupwindNthAnti3beta2 = J13L*PDupwindNthAnti1beta2 + + J23L*PDupwindNthAnti2beta2 + J33L*PDupwindNthAnti3beta2; + + JacPDupwindNthAnti3beta3 = J13L*PDupwindNthAnti1beta3 + + J23L*PDupwindNthAnti2beta3 + J33L*PDupwindNthAnti3beta3; + + JacPDupwindNthSymm3alpha = J13L*PDupwindNthSymm1alpha + + J23L*PDupwindNthSymm2alpha + J33L*PDupwindNthSymm3alpha; + + JacPDupwindNthSymm3beta1 = J13L*PDupwindNthSymm1beta1 + + J23L*PDupwindNthSymm2beta1 + J33L*PDupwindNthSymm3beta1; + + JacPDupwindNthSymm3beta2 = J13L*PDupwindNthSymm1beta2 + + J23L*PDupwindNthSymm2beta2 + J33L*PDupwindNthSymm3beta2; + + JacPDupwindNthSymm3beta3 = J13L*PDupwindNthSymm1beta3 + + J23L*PDupwindNthSymm2beta3 + J33L*PDupwindNthSymm3beta3; + } + else + { + JacPDstandardNth1gt11 = PDstandardNth1gt11; + + JacPDstandardNth1gt12 = PDstandardNth1gt12; + + JacPDstandardNth1gt13 = PDstandardNth1gt13; + + JacPDstandardNth1gt22 = PDstandardNth1gt22; + + JacPDstandardNth1gt23 = PDstandardNth1gt23; + + JacPDstandardNth1gt33 = PDstandardNth1gt33; + + JacPDstandardNth2gt11 = PDstandardNth2gt11; + + JacPDstandardNth2gt12 = PDstandardNth2gt12; + + JacPDstandardNth2gt13 = PDstandardNth2gt13; + + JacPDstandardNth2gt22 = PDstandardNth2gt22; + + JacPDstandardNth2gt23 = PDstandardNth2gt23; + + JacPDstandardNth2gt33 = PDstandardNth2gt33; + + JacPDstandardNth3gt11 = PDstandardNth3gt11; + + JacPDstandardNth3gt12 = PDstandardNth3gt12; + + JacPDstandardNth3gt13 = PDstandardNth3gt13; + + JacPDstandardNth3gt22 = PDstandardNth3gt22; + + JacPDstandardNth3gt23 = PDstandardNth3gt23; + + JacPDstandardNth3gt33 = PDstandardNth3gt33; + + JacPDupwindNthAnti1alpha = PDupwindNthAnti1alpha; + + JacPDupwindNthAnti1beta1 = PDupwindNthAnti1beta1; + + JacPDupwindNthAnti1beta2 = PDupwindNthAnti1beta2; + + JacPDupwindNthAnti1beta3 = PDupwindNthAnti1beta3; + + JacPDupwindNthSymm1alpha = PDupwindNthSymm1alpha; + + JacPDupwindNthSymm1beta1 = PDupwindNthSymm1beta1; + + JacPDupwindNthSymm1beta2 = PDupwindNthSymm1beta2; + + JacPDupwindNthSymm1beta3 = PDupwindNthSymm1beta3; + + JacPDupwindNthAnti2alpha = PDupwindNthAnti2alpha; + + JacPDupwindNthAnti2beta1 = PDupwindNthAnti2beta1; + + JacPDupwindNthAnti2beta2 = PDupwindNthAnti2beta2; + + JacPDupwindNthAnti2beta3 = PDupwindNthAnti2beta3; + + JacPDupwindNthSymm2alpha = PDupwindNthSymm2alpha; + + JacPDupwindNthSymm2beta1 = PDupwindNthSymm2beta1; + + JacPDupwindNthSymm2beta2 = PDupwindNthSymm2beta2; + + JacPDupwindNthSymm2beta3 = PDupwindNthSymm2beta3; + + JacPDupwindNthAnti3alpha = PDupwindNthAnti3alpha; + + JacPDupwindNthAnti3beta1 = PDupwindNthAnti3beta1; + + JacPDupwindNthAnti3beta2 = PDupwindNthAnti3beta2; + + JacPDupwindNthAnti3beta3 = PDupwindNthAnti3beta3; + + JacPDupwindNthSymm3alpha = PDupwindNthSymm3alpha; + + JacPDupwindNthSymm3beta1 = PDupwindNthSymm3beta1; + + JacPDupwindNthSymm3beta2 = PDupwindNthSymm3beta2; + + JacPDupwindNthSymm3beta3 = PDupwindNthSymm3beta3; + } + ptrdiff_t dir1 = Sign(beta1L); ptrdiff_t dir2 = Sign(beta2L); @@ -210,164 +519,77 @@ static void ML_BSSN_MP_convertFromADMBaseGamma_Body(cGH const * restrict const c CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L)); - CCTK_REAL Gt111 = 0.5*((gtu11*J11L - gtu12*J12L - - gtu13*J13L)*PDstandardNth1gt11 + (gtu11*J21L - gtu12*J22L - - gtu13*J23L)*PDstandardNth2gt11 + (gtu11*J31L - gtu12*J32L - - gtu13*J33L)*PDstandardNth3gt11 + 2*(J11L*(gtu12*PDstandardNth1gt12 + - gtu13*PDstandardNth1gt13) + J21L*(gtu12*PDstandardNth2gt12 + - gtu13*PDstandardNth2gt13) + J31L*(gtu12*PDstandardNth3gt12 + - gtu13*PDstandardNth3gt13))); - - CCTK_REAL Gt211 = 0.5*((gtu12*J11L - gtu22*J12L - - gtu23*J13L)*PDstandardNth1gt11 + (gtu12*J21L - gtu22*J22L - - gtu23*J23L)*PDstandardNth2gt11 + (gtu12*J31L - gtu22*J32L - - gtu23*J33L)*PDstandardNth3gt11 + 2*(J11L*(gtu22*PDstandardNth1gt12 + - gtu23*PDstandardNth1gt13) + J21L*(gtu22*PDstandardNth2gt12 + - gtu23*PDstandardNth2gt13) + J31L*(gtu22*PDstandardNth3gt12 + - gtu23*PDstandardNth3gt13))); - - CCTK_REAL Gt311 = 0.5*((gtu13*J11L - gtu23*J12L - - gtu33*J13L)*PDstandardNth1gt11 + (gtu13*J21L - gtu23*J22L - - gtu33*J23L)*PDstandardNth2gt11 + (gtu13*J31L - gtu23*J32L - - gtu33*J33L)*PDstandardNth3gt11 + 2*(J11L*(gtu23*PDstandardNth1gt12 + - gtu33*PDstandardNth1gt13) + J21L*(gtu23*PDstandardNth2gt12 + - gtu33*PDstandardNth2gt13) + J31L*(gtu23*PDstandardNth3gt12 + - gtu33*PDstandardNth3gt13))); - - CCTK_REAL Gt112 = 0.5*(gtu11*(J12L*PDstandardNth1gt11 + - J22L*PDstandardNth2gt11 + J32L*PDstandardNth3gt11) + - gtu12*(J11L*PDstandardNth1gt22 + J21L*PDstandardNth2gt22 + - J31L*PDstandardNth3gt22) + gtu13*(-(J13L*PDstandardNth1gt12) + - J12L*PDstandardNth1gt13 + J11L*PDstandardNth1gt23 - - J23L*PDstandardNth2gt12 + J22L*PDstandardNth2gt13 + - J21L*PDstandardNth2gt23 - J33L*PDstandardNth3gt12 + - J32L*PDstandardNth3gt13 + J31L*PDstandardNth3gt23)); - - CCTK_REAL Gt212 = 0.5*(gtu12*(J12L*PDstandardNth1gt11 + - J22L*PDstandardNth2gt11 + J32L*PDstandardNth3gt11) + - gtu22*(J11L*PDstandardNth1gt22 + J21L*PDstandardNth2gt22 + - J31L*PDstandardNth3gt22) + gtu23*(-(J13L*PDstandardNth1gt12) + - J12L*PDstandardNth1gt13 + J11L*PDstandardNth1gt23 - - J23L*PDstandardNth2gt12 + J22L*PDstandardNth2gt13 + - J21L*PDstandardNth2gt23 - J33L*PDstandardNth3gt12 + - J32L*PDstandardNth3gt13 + J31L*PDstandardNth3gt23)); - - CCTK_REAL Gt312 = 0.5*(gtu13*(J12L*PDstandardNth1gt11 + - J22L*PDstandardNth2gt11 + J32L*PDstandardNth3gt11) + - gtu23*(J11L*PDstandardNth1gt22 + J21L*PDstandardNth2gt22 + - J31L*PDstandardNth3gt22) + gtu33*(-(J13L*PDstandardNth1gt12) + - J12L*PDstandardNth1gt13 + J11L*PDstandardNth1gt23 - - J23L*PDstandardNth2gt12 + J22L*PDstandardNth2gt13 + - J21L*PDstandardNth2gt23 - J33L*PDstandardNth3gt12 + - J32L*PDstandardNth3gt13 + J31L*PDstandardNth3gt23)); - - CCTK_REAL Gt113 = 0.5*(gtu11*(J13L*PDstandardNth1gt11 + - J23L*PDstandardNth2gt11 + J33L*PDstandardNth3gt11) + - gtu12*(J13L*PDstandardNth1gt12 - J12L*PDstandardNth1gt13 + - J11L*PDstandardNth1gt23 + J23L*PDstandardNth2gt12 - - J22L*PDstandardNth2gt13 + J21L*PDstandardNth2gt23 + - J33L*PDstandardNth3gt12 - J32L*PDstandardNth3gt13 + - J31L*PDstandardNth3gt23) + gtu13*(J11L*PDstandardNth1gt33 + - J21L*PDstandardNth2gt33 + J31L*PDstandardNth3gt33)); - - CCTK_REAL Gt213 = 0.5*(gtu12*(J13L*PDstandardNth1gt11 + - J23L*PDstandardNth2gt11 + J33L*PDstandardNth3gt11) + - gtu22*(J13L*PDstandardNth1gt12 - J12L*PDstandardNth1gt13 + - J11L*PDstandardNth1gt23 + J23L*PDstandardNth2gt12 - - J22L*PDstandardNth2gt13 + J21L*PDstandardNth2gt23 + - J33L*PDstandardNth3gt12 - J32L*PDstandardNth3gt13 + - J31L*PDstandardNth3gt23) + gtu23*(J11L*PDstandardNth1gt33 + - J21L*PDstandardNth2gt33 + J31L*PDstandardNth3gt33)); - - CCTK_REAL Gt313 = 0.5*(gtu13*(J13L*PDstandardNth1gt11 + - J23L*PDstandardNth2gt11 + J33L*PDstandardNth3gt11) + - gtu23*(J13L*PDstandardNth1gt12 - J12L*PDstandardNth1gt13 + - J11L*PDstandardNth1gt23 + J23L*PDstandardNth2gt12 - - J22L*PDstandardNth2gt13 + J21L*PDstandardNth2gt23 + - J33L*PDstandardNth3gt12 - J32L*PDstandardNth3gt13 + - J31L*PDstandardNth3gt23) + gtu33*(J11L*PDstandardNth1gt33 + - J21L*PDstandardNth2gt33 + J31L*PDstandardNth3gt33)); - - CCTK_REAL Gt122 = 0.5*(gtu11*(-(J11L*PDstandardNth1gt22) + - 2*(J12L*PDstandardNth1gt12 + J22L*PDstandardNth2gt12) - - J21L*PDstandardNth2gt22 + 2*J32L*PDstandardNth3gt12 - - J31L*PDstandardNth3gt22) + gtu12*(J12L*PDstandardNth1gt22 + - J22L*PDstandardNth2gt22 + J32L*PDstandardNth3gt22) - - gtu13*(J13L*PDstandardNth1gt22 + J23L*PDstandardNth2gt22 + - J33L*PDstandardNth3gt22 - 2*(J12L*PDstandardNth1gt23 + - J22L*PDstandardNth2gt23 + J32L*PDstandardNth3gt23))); - - CCTK_REAL Gt222 = 0.5*(gtu12*(-(J11L*PDstandardNth1gt22) + - 2*(J12L*PDstandardNth1gt12 + J22L*PDstandardNth2gt12) - - J21L*PDstandardNth2gt22 + 2*J32L*PDstandardNth3gt12 - - J31L*PDstandardNth3gt22) + gtu22*(J12L*PDstandardNth1gt22 + - J22L*PDstandardNth2gt22 + J32L*PDstandardNth3gt22) - - gtu23*(J13L*PDstandardNth1gt22 + J23L*PDstandardNth2gt22 + - J33L*PDstandardNth3gt22 - 2*(J12L*PDstandardNth1gt23 + - J22L*PDstandardNth2gt23 + J32L*PDstandardNth3gt23))); - - CCTK_REAL Gt322 = 0.5*(gtu13*(-(J11L*PDstandardNth1gt22) + - 2*(J12L*PDstandardNth1gt12 + J22L*PDstandardNth2gt12) - - J21L*PDstandardNth2gt22 + 2*J32L*PDstandardNth3gt12 - - J31L*PDstandardNth3gt22) + gtu23*(J12L*PDstandardNth1gt22 + - J22L*PDstandardNth2gt22 + J32L*PDstandardNth3gt22) - - gtu33*(J13L*PDstandardNth1gt22 + J23L*PDstandardNth2gt22 + - J33L*PDstandardNth3gt22 - 2*(J12L*PDstandardNth1gt23 + - J22L*PDstandardNth2gt23 + J32L*PDstandardNth3gt23))); - - CCTK_REAL Gt123 = 0.5*(gtu12*(J13L*PDstandardNth1gt22 + - J23L*PDstandardNth2gt22 + J33L*PDstandardNth3gt22) + - gtu11*(J13L*PDstandardNth1gt12 + J12L*PDstandardNth1gt13 - - J11L*PDstandardNth1gt23 + J23L*PDstandardNth2gt12 + - J22L*PDstandardNth2gt13 - J21L*PDstandardNth2gt23 + - J33L*PDstandardNth3gt12 + J32L*PDstandardNth3gt13 - - J31L*PDstandardNth3gt23) + gtu13*(J12L*PDstandardNth1gt33 + - J22L*PDstandardNth2gt33 + J32L*PDstandardNth3gt33)); - - CCTK_REAL Gt223 = 0.5*(gtu22*(J13L*PDstandardNth1gt22 + - J23L*PDstandardNth2gt22 + J33L*PDstandardNth3gt22) + - gtu12*(J13L*PDstandardNth1gt12 + J12L*PDstandardNth1gt13 - - J11L*PDstandardNth1gt23 + J23L*PDstandardNth2gt12 + - J22L*PDstandardNth2gt13 - J21L*PDstandardNth2gt23 + - J33L*PDstandardNth3gt12 + J32L*PDstandardNth3gt13 - - J31L*PDstandardNth3gt23) + gtu23*(J12L*PDstandardNth1gt33 + - J22L*PDstandardNth2gt33 + J32L*PDstandardNth3gt33)); - - CCTK_REAL Gt323 = 0.5*(gtu23*(J13L*PDstandardNth1gt22 + - J23L*PDstandardNth2gt22 + J33L*PDstandardNth3gt22) + - gtu13*(J13L*PDstandardNth1gt12 + J12L*PDstandardNth1gt13 - - J11L*PDstandardNth1gt23 + J23L*PDstandardNth2gt12 + - J22L*PDstandardNth2gt13 - J21L*PDstandardNth2gt23 + - J33L*PDstandardNth3gt12 + J32L*PDstandardNth3gt13 - - J31L*PDstandardNth3gt23) + gtu33*(J12L*PDstandardNth1gt33 + - J22L*PDstandardNth2gt33 + J32L*PDstandardNth3gt33)); - - CCTK_REAL Gt133 = 0.5*(gtu11*(-(J11L*PDstandardNth1gt33) + - 2*(J13L*PDstandardNth1gt13 + J23L*PDstandardNth2gt13) - - J21L*PDstandardNth2gt33 + 2*J33L*PDstandardNth3gt13 - - J31L*PDstandardNth3gt33) + gtu12*(-(J12L*PDstandardNth1gt33) + - 2*(J13L*PDstandardNth1gt23 + J23L*PDstandardNth2gt23) - - J22L*PDstandardNth2gt33 + 2*J33L*PDstandardNth3gt23 - - J32L*PDstandardNth3gt33) + gtu13*(J13L*PDstandardNth1gt33 + - J23L*PDstandardNth2gt33 + J33L*PDstandardNth3gt33)); - - CCTK_REAL Gt233 = 0.5*(gtu12*(-(J11L*PDstandardNth1gt33) + - 2*(J13L*PDstandardNth1gt13 + J23L*PDstandardNth2gt13) - - J21L*PDstandardNth2gt33 + 2*J33L*PDstandardNth3gt13 - - J31L*PDstandardNth3gt33) + gtu22*(-(J12L*PDstandardNth1gt33) + - 2*(J13L*PDstandardNth1gt23 + J23L*PDstandardNth2gt23) - - J22L*PDstandardNth2gt33 + 2*J33L*PDstandardNth3gt23 - - J32L*PDstandardNth3gt33) + gtu23*(J13L*PDstandardNth1gt33 + - J23L*PDstandardNth2gt33 + J33L*PDstandardNth3gt33)); - - CCTK_REAL Gt333 = 0.5*(gtu13*(-(J11L*PDstandardNth1gt33) + - 2*(J13L*PDstandardNth1gt13 + J23L*PDstandardNth2gt13) - - J21L*PDstandardNth2gt33 + 2*J33L*PDstandardNth3gt13 - - J31L*PDstandardNth3gt33) + gtu23*(-(J12L*PDstandardNth1gt33) + - 2*(J13L*PDstandardNth1gt23 + J23L*PDstandardNth2gt23) - - J22L*PDstandardNth2gt33 + 2*J33L*PDstandardNth3gt23 - - J32L*PDstandardNth3gt33) + gtu33*(J13L*PDstandardNth1gt33 + - J23L*PDstandardNth2gt33 + J33L*PDstandardNth3gt33)); + CCTK_REAL Gt111 = 0.5*(gtu11*JacPDstandardNth1gt11 + + 2*(gtu12*JacPDstandardNth1gt12 + gtu13*JacPDstandardNth1gt13) - + gtu12*JacPDstandardNth2gt11 - gtu13*JacPDstandardNth3gt11); + + CCTK_REAL Gt211 = 0.5*(gtu12*JacPDstandardNth1gt11 + + 2*(gtu22*JacPDstandardNth1gt12 + gtu23*JacPDstandardNth1gt13) - + gtu22*JacPDstandardNth2gt11 - gtu23*JacPDstandardNth3gt11); + + CCTK_REAL Gt311 = 0.5*(gtu13*JacPDstandardNth1gt11 + + 2*(gtu23*JacPDstandardNth1gt12 + gtu33*JacPDstandardNth1gt13) - + gtu23*JacPDstandardNth2gt11 - gtu33*JacPDstandardNth3gt11); + + CCTK_REAL Gt112 = 0.5*(gtu12*JacPDstandardNth1gt22 + + gtu11*JacPDstandardNth2gt11 + gtu13*(JacPDstandardNth1gt23 + + JacPDstandardNth2gt13 - JacPDstandardNth3gt12)); + + CCTK_REAL Gt212 = 0.5*(gtu22*JacPDstandardNth1gt22 + + gtu12*JacPDstandardNth2gt11 + gtu23*(JacPDstandardNth1gt23 + + JacPDstandardNth2gt13 - JacPDstandardNth3gt12)); + + CCTK_REAL Gt312 = 0.5*(gtu23*JacPDstandardNth1gt22 + + gtu13*JacPDstandardNth2gt11 + gtu33*(JacPDstandardNth1gt23 + + JacPDstandardNth2gt13 - JacPDstandardNth3gt12)); + + CCTK_REAL Gt113 = 0.5*(gtu13*JacPDstandardNth1gt33 + + gtu11*JacPDstandardNth3gt11 + gtu12*(JacPDstandardNth1gt23 - + JacPDstandardNth2gt13 + JacPDstandardNth3gt12)); + + CCTK_REAL Gt213 = 0.5*(gtu23*JacPDstandardNth1gt33 + + gtu12*JacPDstandardNth3gt11 + gtu22*(JacPDstandardNth1gt23 - + JacPDstandardNth2gt13 + JacPDstandardNth3gt12)); + + CCTK_REAL Gt313 = 0.5*(gtu33*JacPDstandardNth1gt33 + + gtu13*JacPDstandardNth3gt11 + gtu23*(JacPDstandardNth1gt23 - + JacPDstandardNth2gt13 + JacPDstandardNth3gt12)); + + CCTK_REAL Gt122 = 0.5*(gtu11*(-JacPDstandardNth1gt22 + + 2*JacPDstandardNth2gt12) + gtu12*JacPDstandardNth2gt22 + + gtu13*(2*JacPDstandardNth2gt23 - JacPDstandardNth3gt22)); + + CCTK_REAL Gt222 = 0.5*(gtu12*(-JacPDstandardNth1gt22 + + 2*JacPDstandardNth2gt12) + gtu22*JacPDstandardNth2gt22 + + gtu23*(2*JacPDstandardNth2gt23 - JacPDstandardNth3gt22)); + + CCTK_REAL Gt322 = 0.5*(gtu13*(-JacPDstandardNth1gt22 + + 2*JacPDstandardNth2gt12) + gtu23*JacPDstandardNth2gt22 + + gtu33*(2*JacPDstandardNth2gt23 - JacPDstandardNth3gt22)); + + CCTK_REAL Gt123 = 0.5*(gtu13*JacPDstandardNth2gt33 + + gtu11*(-JacPDstandardNth1gt23 + JacPDstandardNth2gt13 + + JacPDstandardNth3gt12) + gtu12*JacPDstandardNth3gt22); + + CCTK_REAL Gt223 = 0.5*(gtu23*JacPDstandardNth2gt33 + + gtu12*(-JacPDstandardNth1gt23 + JacPDstandardNth2gt13 + + JacPDstandardNth3gt12) + gtu22*JacPDstandardNth3gt22); + + CCTK_REAL Gt323 = 0.5*(gtu33*JacPDstandardNth2gt33 + + gtu13*(-JacPDstandardNth1gt23 + JacPDstandardNth2gt13 + + JacPDstandardNth3gt12) + gtu23*JacPDstandardNth3gt22); + + CCTK_REAL Gt133 = 0.5*(gtu11*(-JacPDstandardNth1gt33 + + 2*JacPDstandardNth3gt13) + gtu12*(-JacPDstandardNth2gt33 + + 2*JacPDstandardNth3gt23) + gtu13*JacPDstandardNth3gt33); + + CCTK_REAL Gt233 = 0.5*(gtu12*(-JacPDstandardNth1gt33 + + 2*JacPDstandardNth3gt13) + gtu22*(-JacPDstandardNth2gt33 + + 2*JacPDstandardNth3gt23) + gtu23*JacPDstandardNth3gt33); + + CCTK_REAL Gt333 = 0.5*(gtu13*(-JacPDstandardNth1gt33 + + 2*JacPDstandardNth3gt13) + gtu23*(-JacPDstandardNth2gt33 + + 2*JacPDstandardNth3gt23) + gtu33*JacPDstandardNth3gt33); CCTK_REAL Xt1L = Gt111*gtu11 + Gt122*gtu22 + 2*(Gt112*gtu12 + Gt113*gtu13 + Gt123*gtu23) + Gt133*gtu33; @@ -378,52 +600,49 @@ static void ML_BSSN_MP_convertFromADMBaseGamma_Body(cGH const * restrict const c CCTK_REAL Xt3L = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu12 + Gt313*gtu13 + Gt323*gtu23) + Gt333*gtu33; - CCTK_REAL AL = IfThen(ToReal(LapseACoeff) != - 0,3*INV(ToReal(harmonicF))*pow(alphaL,-ToReal(harmonicN))*(-9*dtalpL + - ((beta1L*J11L + beta2L*J12L + beta3L*J13L)*PDupwindNthAnti1alpha + - (beta1L*J21L + beta2L*J22L + beta3L*J23L)*PDupwindNthAnti2alpha + - (beta1L*J31L + beta2L*J32L + beta3L*J33L)*PDupwindNthAnti3alpha + - (J11L*PDupwindNthSymm1alpha + J21L*PDupwindNthSymm2alpha + - J31L*PDupwindNthSymm3alpha)*Abs(beta1L) + (J12L*PDupwindNthSymm1alpha + - J22L*PDupwindNthSymm2alpha + J32L*PDupwindNthSymm3alpha)*Abs(beta2L) + - (J13L*PDupwindNthSymm1alpha + J23L*PDupwindNthSymm2alpha + - J33L*PDupwindNthSymm3alpha)*Abs(beta3L))*ToReal(LapseAdvectionCoeff)),0); + CCTK_REAL AL = IfThen(LapseACoeff != + 0,-(INV(ToReal(harmonicF))*pow(alphaL,-ToReal(harmonicN))*(dtalpL - + (beta1L*JacPDupwindNthAnti1alpha + beta2L*JacPDupwindNthAnti2alpha + + beta3L*JacPDupwindNthAnti3alpha + JacPDupwindNthSymm1alpha*Abs(beta1L) + + JacPDupwindNthSymm2alpha*Abs(beta2L) + + JacPDupwindNthSymm3alpha*Abs(beta3L))*ToReal(LapseAdvectionCoeff))),0); CCTK_REAL theta = fmin(1,exp(1 - rL*INV(ToReal(SpatialShiftGammaCoeffRadius)))); - CCTK_REAL B1L = IfThen(ToReal(ShiftBCoeff)*ToReal(ShiftGammaCoeff) != - 0,INV(theta)*INV(ToReal(ShiftGammaCoeff))*(27*dtbetaxL - - 3*((beta1L*J11L + beta2L*J12L + beta3L*J13L)*PDupwindNthAnti1beta1 + - (beta1L*J21L + beta2L*J22L + beta3L*J23L)*PDupwindNthAnti2beta1 + - (beta1L*J31L + beta2L*J32L + beta3L*J33L)*PDupwindNthAnti3beta1 + - (J11L*PDupwindNthSymm1beta1 + J21L*PDupwindNthSymm2beta1 + - J31L*PDupwindNthSymm3beta1)*Abs(beta1L) + (J12L*PDupwindNthSymm1beta1 + - J22L*PDupwindNthSymm2beta1 + J32L*PDupwindNthSymm3beta1)*Abs(beta2L) + - (J13L*PDupwindNthSymm1beta1 + J23L*PDupwindNthSymm2beta1 + - J33L*PDupwindNthSymm3beta1)*Abs(beta3L))*ToReal(ShiftAdvectionCoeff)),0); - - CCTK_REAL B2L = IfThen(ToReal(ShiftBCoeff)*ToReal(ShiftGammaCoeff) != - 0,INV(theta)*INV(ToReal(ShiftGammaCoeff))*(27*dtbetayL - - 3*((beta1L*J11L + beta2L*J12L + beta3L*J13L)*PDupwindNthAnti1beta2 + - (beta1L*J21L + beta2L*J22L + beta3L*J23L)*PDupwindNthAnti2beta2 + - (beta1L*J31L + beta2L*J32L + beta3L*J33L)*PDupwindNthAnti3beta2 + - (J11L*PDupwindNthSymm1beta2 + J21L*PDupwindNthSymm2beta2 + - J31L*PDupwindNthSymm3beta2)*Abs(beta1L) + (J12L*PDupwindNthSymm1beta2 + - J22L*PDupwindNthSymm2beta2 + J32L*PDupwindNthSymm3beta2)*Abs(beta2L) + - (J13L*PDupwindNthSymm1beta2 + J23L*PDupwindNthSymm2beta2 + - J33L*PDupwindNthSymm3beta2)*Abs(beta3L))*ToReal(ShiftAdvectionCoeff)),0); - - CCTK_REAL B3L = IfThen(ToReal(ShiftBCoeff)*ToReal(ShiftGammaCoeff) != - 0,INV(theta)*INV(ToReal(ShiftGammaCoeff))*(27*dtbetazL - - 3*((beta1L*J11L + beta2L*J12L + beta3L*J13L)*PDupwindNthAnti1beta3 + - (beta1L*J21L + beta2L*J22L + beta3L*J23L)*PDupwindNthAnti2beta3 + - (beta1L*J31L + beta2L*J32L + beta3L*J33L)*PDupwindNthAnti3beta3 + - (J11L*PDupwindNthSymm1beta3 + J21L*PDupwindNthSymm2beta3 + - J31L*PDupwindNthSymm3beta3)*Abs(beta1L) + (J12L*PDupwindNthSymm1beta3 + - J22L*PDupwindNthSymm2beta3 + J32L*PDupwindNthSymm3beta3)*Abs(beta2L) + - (J13L*PDupwindNthSymm1beta3 + J23L*PDupwindNthSymm2beta3 + - J33L*PDupwindNthSymm3beta3)*Abs(beta3L))*ToReal(ShiftAdvectionCoeff)),0); + CCTK_REAL B1L; + CCTK_REAL B2L; + CCTK_REAL B3L; + + if (ShiftBCoeff*ShiftGammaCoeff != 0) + { + B1L = INV(theta)*INV(ToReal(ShiftGammaCoeff))*(dtbetaxL - + (beta1L*JacPDupwindNthAnti1beta1 + beta2L*JacPDupwindNthAnti2beta1 + + beta3L*JacPDupwindNthAnti3beta1 + JacPDupwindNthSymm1beta1*Abs(beta1L) + + JacPDupwindNthSymm2beta1*Abs(beta2L) + + JacPDupwindNthSymm3beta1*Abs(beta3L))*ToReal(ShiftAdvectionCoeff)); + + B2L = INV(theta)*INV(ToReal(ShiftGammaCoeff))*(dtbetayL - + (beta1L*JacPDupwindNthAnti1beta2 + beta2L*JacPDupwindNthAnti2beta2 + + beta3L*JacPDupwindNthAnti3beta2 + JacPDupwindNthSymm1beta2*Abs(beta1L) + + JacPDupwindNthSymm2beta2*Abs(beta2L) + + JacPDupwindNthSymm3beta2*Abs(beta3L))*ToReal(ShiftAdvectionCoeff)); + + B3L = INV(theta)*INV(ToReal(ShiftGammaCoeff))*(dtbetazL - + (beta1L*JacPDupwindNthAnti1beta3 + beta2L*JacPDupwindNthAnti2beta3 + + beta3L*JacPDupwindNthAnti3beta3 + JacPDupwindNthSymm1beta3*Abs(beta1L) + + JacPDupwindNthSymm2beta3*Abs(beta2L) + + JacPDupwindNthSymm3beta3*Abs(beta3L))*ToReal(ShiftAdvectionCoeff)); + } + else + { + B1L = 0; + + B2L = 0; + + B3L = 0; + } + /* Copy local copies back to grid functions */ A[index] = AL; diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBase.cc b/ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBase.cc index 7684bbf..9ba1a36 100644 --- a/ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBase.cc +++ b/ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBase.cc @@ -88,6 +88,51 @@ static void ML_BSSN_MP_convertToADMBase_Body(cGH const * restrict const cctkGH, CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy)); CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz)); + /* 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_BSSN_MP_convertToADMBase, @@ -124,13 +169,13 @@ static void ML_BSSN_MP_convertToADMBase_Body(cGH const * restrict const cctkGH, CCTK_REAL trKL = trK[index]; + /* Include user supplied include files */ /* Precompute derivatives */ /* Calculate temporaries and grid functions */ - CCTK_REAL e4phi = - IfThen(ToReal(conformalMethod),INV(SQR(phiL)),exp(4*phiL)); + CCTK_REAL e4phi = IfThen(conformalMethod,INV(SQR(phiL)),exp(4*phiL)); gxxL = e4phi*gt11L; diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBaseDtLapseShift.cc b/ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBaseDtLapseShift.cc index dc50aca..55261bc 100644 --- a/ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBaseDtLapseShift.cc +++ b/ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBaseDtLapseShift.cc @@ -54,8 +54,8 @@ static void ML_BSSN_MP_convertToADMBaseDtLapseShift_Body(cGH const * restrict co return; } - const char *groups[] = {"ADMBase::dtlapse","ADMBase::dtshift","Coordinates::jacobian","grid::coordinates","Grid::coordinates","ML_BSSN_MP::ML_dtlapse","ML_BSSN_MP::ML_dtshift","ML_BSSN_MP::ML_Gamma","ML_BSSN_MP::ML_lapse","ML_BSSN_MP::ML_shift","ML_BSSN_MP::ML_trace_curv"}; - GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_convertToADMBaseDtLapseShift", 11, groups); + const char *groups[] = {"ADMBase::dtlapse","ADMBase::dtshift","grid::coordinates","Grid::coordinates","ML_BSSN_MP::ML_dtlapse","ML_BSSN_MP::ML_dtshift","ML_BSSN_MP::ML_Gamma","ML_BSSN_MP::ML_lapse","ML_BSSN_MP::ML_shift","ML_BSSN_MP::ML_trace_curv"}; + GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_convertToADMBaseDtLapseShift", 10, groups); GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_convertToADMBaseDtLapseShift", 3, 3, 3); @@ -104,6 +104,51 @@ static void ML_BSSN_MP_convertToADMBaseDtLapseShift_Body(cGH const * restrict co CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy)); CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz)); + /* 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_BSSN_MP_convertToADMBaseDtLapseShift, @@ -122,15 +167,6 @@ static void ML_BSSN_MP_convertToADMBaseDtLapseShift_Body(cGH const * restrict co CCTK_REAL beta1L = beta1[index]; CCTK_REAL beta2L = beta2[index]; CCTK_REAL beta3L = beta3[index]; - CCTK_REAL J11L = J11[index]; - CCTK_REAL J12L = J12[index]; - CCTK_REAL J13L = J13[index]; - CCTK_REAL J21L = J21[index]; - CCTK_REAL J22L = J22[index]; - CCTK_REAL J23L = J23[index]; - CCTK_REAL J31L = J31[index]; - CCTK_REAL J32L = J32[index]; - CCTK_REAL J33L = J33[index]; CCTK_REAL rL = r[index]; CCTK_REAL trKL = trK[index]; CCTK_REAL Xt1L = Xt1[index]; @@ -138,6 +174,21 @@ static void ML_BSSN_MP_convertToADMBaseDtLapseShift_Body(cGH const * restrict co CCTK_REAL Xt3L = Xt3[index]; + CCTK_REAL J11L, J12L, J13L, J21L, J22L, J23L, J31L, J32L, J33L; + + if (use_jacobian) + { + J11L = J11[index]; + J12L = J12[index]; + J13L = J13[index]; + J21L = J21[index]; + J22L = J22[index]; + J23L = J23[index]; + J31L = J31[index]; + J32L = J32[index]; + J33L = J33[index]; + } + /* Include user supplied include files */ /* Precompute derivatives */ @@ -167,6 +218,156 @@ static void ML_BSSN_MP_convertToADMBaseDtLapseShift_Body(cGH const * restrict co CCTK_REAL const PDupwindNthSymm3beta3 = PDupwindNthSymm3(&beta3[index]); /* Calculate temporaries and grid functions */ + CCTK_REAL JacPDupwindNthAnti1alpha; + CCTK_REAL JacPDupwindNthAnti1beta1; + CCTK_REAL JacPDupwindNthAnti1beta2; + CCTK_REAL JacPDupwindNthAnti1beta3; + CCTK_REAL JacPDupwindNthAnti2alpha; + CCTK_REAL JacPDupwindNthAnti2beta1; + CCTK_REAL JacPDupwindNthAnti2beta2; + CCTK_REAL JacPDupwindNthAnti2beta3; + CCTK_REAL JacPDupwindNthAnti3alpha; + CCTK_REAL JacPDupwindNthAnti3beta1; + CCTK_REAL JacPDupwindNthAnti3beta2; + CCTK_REAL JacPDupwindNthAnti3beta3; + CCTK_REAL JacPDupwindNthSymm1alpha; + CCTK_REAL JacPDupwindNthSymm1beta1; + CCTK_REAL JacPDupwindNthSymm1beta2; + CCTK_REAL JacPDupwindNthSymm1beta3; + CCTK_REAL JacPDupwindNthSymm2alpha; + CCTK_REAL JacPDupwindNthSymm2beta1; + CCTK_REAL JacPDupwindNthSymm2beta2; + CCTK_REAL JacPDupwindNthSymm2beta3; + CCTK_REAL JacPDupwindNthSymm3alpha; + CCTK_REAL JacPDupwindNthSymm3beta1; + CCTK_REAL JacPDupwindNthSymm3beta2; + CCTK_REAL JacPDupwindNthSymm3beta3; + + if (use_jacobian) + { + JacPDupwindNthAnti1alpha = J11L*PDupwindNthAnti1alpha + + J21L*PDupwindNthAnti2alpha + J31L*PDupwindNthAnti3alpha; + + JacPDupwindNthAnti1beta1 = J11L*PDupwindNthAnti1beta1 + + J21L*PDupwindNthAnti2beta1 + J31L*PDupwindNthAnti3beta1; + + JacPDupwindNthAnti1beta2 = J11L*PDupwindNthAnti1beta2 + + J21L*PDupwindNthAnti2beta2 + J31L*PDupwindNthAnti3beta2; + + JacPDupwindNthAnti1beta3 = J11L*PDupwindNthAnti1beta3 + + J21L*PDupwindNthAnti2beta3 + J31L*PDupwindNthAnti3beta3; + + JacPDupwindNthSymm1alpha = J11L*PDupwindNthSymm1alpha + + J21L*PDupwindNthSymm2alpha + J31L*PDupwindNthSymm3alpha; + + JacPDupwindNthSymm1beta1 = J11L*PDupwindNthSymm1beta1 + + J21L*PDupwindNthSymm2beta1 + J31L*PDupwindNthSymm3beta1; + + JacPDupwindNthSymm1beta2 = J11L*PDupwindNthSymm1beta2 + + J21L*PDupwindNthSymm2beta2 + J31L*PDupwindNthSymm3beta2; + + JacPDupwindNthSymm1beta3 = J11L*PDupwindNthSymm1beta3 + + J21L*PDupwindNthSymm2beta3 + J31L*PDupwindNthSymm3beta3; + + JacPDupwindNthAnti2alpha = J12L*PDupwindNthAnti1alpha + + J22L*PDupwindNthAnti2alpha + J32L*PDupwindNthAnti3alpha; + + JacPDupwindNthAnti2beta1 = J12L*PDupwindNthAnti1beta1 + + J22L*PDupwindNthAnti2beta1 + J32L*PDupwindNthAnti3beta1; + + JacPDupwindNthAnti2beta2 = J12L*PDupwindNthAnti1beta2 + + J22L*PDupwindNthAnti2beta2 + J32L*PDupwindNthAnti3beta2; + + JacPDupwindNthAnti2beta3 = J12L*PDupwindNthAnti1beta3 + + J22L*PDupwindNthAnti2beta3 + J32L*PDupwindNthAnti3beta3; + + JacPDupwindNthSymm2alpha = J12L*PDupwindNthSymm1alpha + + J22L*PDupwindNthSymm2alpha + J32L*PDupwindNthSymm3alpha; + + JacPDupwindNthSymm2beta1 = J12L*PDupwindNthSymm1beta1 + + J22L*PDupwindNthSymm2beta1 + J32L*PDupwindNthSymm3beta1; + + JacPDupwindNthSymm2beta2 = J12L*PDupwindNthSymm1beta2 + + J22L*PDupwindNthSymm2beta2 + J32L*PDupwindNthSymm3beta2; + + JacPDupwindNthSymm2beta3 = J12L*PDupwindNthSymm1beta3 + + J22L*PDupwindNthSymm2beta3 + J32L*PDupwindNthSymm3beta3; + + JacPDupwindNthAnti3alpha = J13L*PDupwindNthAnti1alpha + + J23L*PDupwindNthAnti2alpha + J33L*PDupwindNthAnti3alpha; + + JacPDupwindNthAnti3beta1 = J13L*PDupwindNthAnti1beta1 + + J23L*PDupwindNthAnti2beta1 + J33L*PDupwindNthAnti3beta1; + + JacPDupwindNthAnti3beta2 = J13L*PDupwindNthAnti1beta2 + + J23L*PDupwindNthAnti2beta2 + J33L*PDupwindNthAnti3beta2; + + JacPDupwindNthAnti3beta3 = J13L*PDupwindNthAnti1beta3 + + J23L*PDupwindNthAnti2beta3 + J33L*PDupwindNthAnti3beta3; + + JacPDupwindNthSymm3alpha = J13L*PDupwindNthSymm1alpha + + J23L*PDupwindNthSymm2alpha + J33L*PDupwindNthSymm3alpha; + + JacPDupwindNthSymm3beta1 = J13L*PDupwindNthSymm1beta1 + + J23L*PDupwindNthSymm2beta1 + J33L*PDupwindNthSymm3beta1; + + JacPDupwindNthSymm3beta2 = J13L*PDupwindNthSymm1beta2 + + J23L*PDupwindNthSymm2beta2 + J33L*PDupwindNthSymm3beta2; + + JacPDupwindNthSymm3beta3 = J13L*PDupwindNthSymm1beta3 + + J23L*PDupwindNthSymm2beta3 + J33L*PDupwindNthSymm3beta3; + } + else + { + JacPDupwindNthAnti1alpha = PDupwindNthAnti1alpha; + + JacPDupwindNthAnti1beta1 = PDupwindNthAnti1beta1; + + JacPDupwindNthAnti1beta2 = PDupwindNthAnti1beta2; + + JacPDupwindNthAnti1beta3 = PDupwindNthAnti1beta3; + + JacPDupwindNthSymm1alpha = PDupwindNthSymm1alpha; + + JacPDupwindNthSymm1beta1 = PDupwindNthSymm1beta1; + + JacPDupwindNthSymm1beta2 = PDupwindNthSymm1beta2; + + JacPDupwindNthSymm1beta3 = PDupwindNthSymm1beta3; + + JacPDupwindNthAnti2alpha = PDupwindNthAnti2alpha; + + JacPDupwindNthAnti2beta1 = PDupwindNthAnti2beta1; + + JacPDupwindNthAnti2beta2 = PDupwindNthAnti2beta2; + + JacPDupwindNthAnti2beta3 = PDupwindNthAnti2beta3; + + JacPDupwindNthSymm2alpha = PDupwindNthSymm2alpha; + + JacPDupwindNthSymm2beta1 = PDupwindNthSymm2beta1; + + JacPDupwindNthSymm2beta2 = PDupwindNthSymm2beta2; + + JacPDupwindNthSymm2beta3 = PDupwindNthSymm2beta3; + + JacPDupwindNthAnti3alpha = PDupwindNthAnti3alpha; + + JacPDupwindNthAnti3beta1 = PDupwindNthAnti3beta1; + + JacPDupwindNthAnti3beta2 = PDupwindNthAnti3beta2; + + JacPDupwindNthAnti3beta3 = PDupwindNthAnti3beta3; + + JacPDupwindNthSymm3alpha = PDupwindNthSymm3alpha; + + JacPDupwindNthSymm3beta1 = PDupwindNthSymm3beta1; + + JacPDupwindNthSymm3beta2 = PDupwindNthSymm3beta2; + + JacPDupwindNthSymm3beta3 = PDupwindNthSymm3beta3; + } + ptrdiff_t dir1 = Sign(beta1L); ptrdiff_t dir2 = Sign(beta2L); @@ -180,49 +381,33 @@ static void ML_BSSN_MP_convertToADMBaseDtLapseShift_Body(cGH const * restrict co CCTK_REAL dtalpL = -(pow(alphaL,ToReal(harmonicN))*ToReal(harmonicF)*(trKL + (AL - - trKL)*ToReal(LapseACoeff))) + ((beta1L*J11L + beta2L*J12L + - beta3L*J13L)*PDupwindNthAnti1alpha + (beta1L*J21L + beta2L*J22L + - beta3L*J23L)*PDupwindNthAnti2alpha + (beta1L*J31L + beta2L*J32L + - beta3L*J33L)*PDupwindNthAnti3alpha + (J11L*PDupwindNthSymm1alpha + - J21L*PDupwindNthSymm2alpha + J31L*PDupwindNthSymm3alpha)*Abs(beta1L) + - (J12L*PDupwindNthSymm1alpha + J22L*PDupwindNthSymm2alpha + - J32L*PDupwindNthSymm3alpha)*Abs(beta2L) + (J13L*PDupwindNthSymm1alpha + - J23L*PDupwindNthSymm2alpha + - J33L*PDupwindNthSymm3alpha)*Abs(beta3L))*ToReal(LapseAdvectionCoeff); - - CCTK_REAL dtbetaxL = ((beta1L*J11L + beta2L*J12L + - beta3L*J13L)*PDupwindNthAnti1beta1 + (beta1L*J21L + beta2L*J22L + - beta3L*J23L)*PDupwindNthAnti2beta1 + (beta1L*J31L + beta2L*J32L + - beta3L*J33L)*PDupwindNthAnti3beta1 + (J11L*PDupwindNthSymm1beta1 + - J21L*PDupwindNthSymm2beta1 + J31L*PDupwindNthSymm3beta1)*Abs(beta1L) + - (J12L*PDupwindNthSymm1beta1 + J22L*PDupwindNthSymm2beta1 + - J32L*PDupwindNthSymm3beta1)*Abs(beta2L) + (J13L*PDupwindNthSymm1beta1 + - J23L*PDupwindNthSymm2beta1 + - J33L*PDupwindNthSymm3beta1)*Abs(beta3L))*ToReal(ShiftAdvectionCoeff) + + trKL)*ToReal(LapseACoeff))) + (beta1L*JacPDupwindNthAnti1alpha + + beta2L*JacPDupwindNthAnti2alpha + beta3L*JacPDupwindNthAnti3alpha + + JacPDupwindNthSymm1alpha*Abs(beta1L) + + JacPDupwindNthSymm2alpha*Abs(beta2L) + + JacPDupwindNthSymm3alpha*Abs(beta3L))*ToReal(LapseAdvectionCoeff); + + CCTK_REAL dtbetaxL = (beta1L*JacPDupwindNthAnti1beta1 + + beta2L*JacPDupwindNthAnti2beta1 + beta3L*JacPDupwindNthAnti3beta1 + + JacPDupwindNthSymm1beta1*Abs(beta1L) + + JacPDupwindNthSymm2beta1*Abs(beta2L) + + JacPDupwindNthSymm3beta1*Abs(beta3L))*ToReal(ShiftAdvectionCoeff) + theta*(Xt1L + beta1L*eta*ToReal(BetaDriver)*(-1 + ToReal(ShiftBCoeff)) + (B1L - Xt1L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff); - CCTK_REAL dtbetayL = ((beta1L*J11L + beta2L*J12L + - beta3L*J13L)*PDupwindNthAnti1beta2 + (beta1L*J21L + beta2L*J22L + - beta3L*J23L)*PDupwindNthAnti2beta2 + (beta1L*J31L + beta2L*J32L + - beta3L*J33L)*PDupwindNthAnti3beta2 + (J11L*PDupwindNthSymm1beta2 + - J21L*PDupwindNthSymm2beta2 + J31L*PDupwindNthSymm3beta2)*Abs(beta1L) + - (J12L*PDupwindNthSymm1beta2 + J22L*PDupwindNthSymm2beta2 + - J32L*PDupwindNthSymm3beta2)*Abs(beta2L) + (J13L*PDupwindNthSymm1beta2 + - J23L*PDupwindNthSymm2beta2 + - J33L*PDupwindNthSymm3beta2)*Abs(beta3L))*ToReal(ShiftAdvectionCoeff) + + CCTK_REAL dtbetayL = (beta1L*JacPDupwindNthAnti1beta2 + + beta2L*JacPDupwindNthAnti2beta2 + beta3L*JacPDupwindNthAnti3beta2 + + JacPDupwindNthSymm1beta2*Abs(beta1L) + + JacPDupwindNthSymm2beta2*Abs(beta2L) + + JacPDupwindNthSymm3beta2*Abs(beta3L))*ToReal(ShiftAdvectionCoeff) + theta*(Xt2L + beta2L*eta*ToReal(BetaDriver)*(-1 + ToReal(ShiftBCoeff)) + (B2L - Xt2L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff); - CCTK_REAL dtbetazL = ((beta1L*J11L + beta2L*J12L + - beta3L*J13L)*PDupwindNthAnti1beta3 + (beta1L*J21L + beta2L*J22L + - beta3L*J23L)*PDupwindNthAnti2beta3 + (beta1L*J31L + beta2L*J32L + - beta3L*J33L)*PDupwindNthAnti3beta3 + (J11L*PDupwindNthSymm1beta3 + - J21L*PDupwindNthSymm2beta3 + J31L*PDupwindNthSymm3beta3)*Abs(beta1L) + - (J12L*PDupwindNthSymm1beta3 + J22L*PDupwindNthSymm2beta3 + - J32L*PDupwindNthSymm3beta3)*Abs(beta2L) + (J13L*PDupwindNthSymm1beta3 + - J23L*PDupwindNthSymm2beta3 + - J33L*PDupwindNthSymm3beta3)*Abs(beta3L))*ToReal(ShiftAdvectionCoeff) + + CCTK_REAL dtbetazL = (beta1L*JacPDupwindNthAnti1beta3 + + beta2L*JacPDupwindNthAnti2beta3 + beta3L*JacPDupwindNthAnti3beta3 + + JacPDupwindNthSymm1beta3*Abs(beta1L) + + JacPDupwindNthSymm2beta3*Abs(beta2L) + + JacPDupwindNthSymm3beta3*Abs(beta3L))*ToReal(ShiftAdvectionCoeff) + theta*(Xt3L + beta3L*eta*ToReal(BetaDriver)*(-1 + ToReal(ShiftBCoeff)) + (B3L - Xt3L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff); diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBaseDtLapseShiftBoundary.cc b/ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBaseDtLapseShiftBoundary.cc index 7a95249..0e398ee 100644 --- a/ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBaseDtLapseShiftBoundary.cc +++ b/ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBaseDtLapseShiftBoundary.cc @@ -103,6 +103,51 @@ static void ML_BSSN_MP_convertToADMBaseDtLapseShiftBoundary_Body(cGH const * res CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy)); CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz)); + /* 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_BSSN_MP_convertToADMBaseDtLapseShiftBoundary, @@ -128,6 +173,7 @@ static void ML_BSSN_MP_convertToADMBaseDtLapseShiftBoundary_Body(cGH const * res CCTK_REAL Xt3L = Xt3[index]; + /* Include user supplied include files */ /* Precompute derivatives */ diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBaseFakeDtLapseShift.cc b/ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBaseFakeDtLapseShift.cc index d5f79bf..39e0324 100644 --- a/ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBaseFakeDtLapseShift.cc +++ b/ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBaseFakeDtLapseShift.cc @@ -88,6 +88,51 @@ static void ML_BSSN_MP_convertToADMBaseFakeDtLapseShift_Body(cGH const * restric CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy)); CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz)); + /* 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_BSSN_MP_convertToADMBaseFakeDtLapseShift, @@ -113,6 +158,7 @@ static void ML_BSSN_MP_convertToADMBaseFakeDtLapseShift_Body(cGH const * restric CCTK_REAL Xt3L = Xt3[index]; + /* Include user supplied include files */ /* Precompute derivatives */ diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_enforce.cc b/ML_BSSN_MP/src/ML_BSSN_MP_enforce.cc index a81e33a..1551028 100644 --- a/ML_BSSN_MP/src/ML_BSSN_MP_enforce.cc +++ b/ML_BSSN_MP/src/ML_BSSN_MP_enforce.cc @@ -88,6 +88,51 @@ static void ML_BSSN_MP_enforce_Body(cGH const * restrict const cctkGH, int const CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy)); CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz)); + /* 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_BSSN_MP_enforce, @@ -113,6 +158,7 @@ static void ML_BSSN_MP_enforce_Body(cGH const * restrict const cctkGH, int const CCTK_REAL gt33L = gt33[index]; + /* Include user supplied include files */ /* Precompute derivatives */ diff --git a/ML_BSSN_MP/src/make.code.defn b/ML_BSSN_MP/src/make.code.defn index 14c9d07..8db0cbb 100644 --- a/ML_BSSN_MP/src/make.code.defn +++ b/ML_BSSN_MP/src/make.code.defn @@ -1,3 +1,3 @@ # File produced by Kranc -SRCS = Startup.cc RegisterMoL.cc RegisterSymmetries.cc ML_BSSN_MP_Minkowski.cc ML_BSSN_MP_convertFromADMBase.cc ML_BSSN_MP_convertFromADMBaseGamma.cc ML_BSSN_MP_RHS1.cc ML_BSSN_MP_RHS2.cc ML_BSSN_MP_RHSStaticBoundary.cc ML_BSSN_MP_enforce.cc ML_BSSN_MP_boundary.cc ML_BSSN_MP_convertToADMBase.cc ML_BSSN_MP_convertToADMBaseDtLapseShift.cc ML_BSSN_MP_convertToADMBaseDtLapseShiftBoundary.cc ML_BSSN_MP_convertToADMBaseFakeDtLapseShift.cc ML_BSSN_MP_constraints1.cc ML_BSSN_MP_constraints2.cc Boundaries.cc +SRCS = Startup.cc RegisterMoL.cc RegisterSymmetries.cc ML_BSSN_MP_Minkowski.cc ML_BSSN_MP_convertFromADMBase.cc ML_BSSN_MP_InitGamma.cc ML_BSSN_MP_convertFromADMBaseGamma.cc ML_BSSN_MP_RHS1.cc ML_BSSN_MP_RHS2.cc ML_BSSN_MP_Dissipation.cc ML_BSSN_MP_Advect.cc ML_BSSN_MP_RHSStaticBoundary.cc ML_BSSN_MP_enforce.cc ML_BSSN_MP_boundary.cc ML_BSSN_MP_convertToADMBase.cc ML_BSSN_MP_convertToADMBaseDtLapseShift.cc ML_BSSN_MP_convertToADMBaseDtLapseShiftBoundary.cc ML_BSSN_MP_convertToADMBaseFakeDtLapseShift.cc ML_BSSN_MP_constraints1.cc ML_BSSN_MP_constraints2.cc Boundaries.cc |