aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBarry Wardell <barry.wardell@gmail.com>2012-05-02 11:05:27 +0100
committerBarry Wardell <barry.wardell@gmail.com>2012-05-02 11:05:27 +0100
commite962e21cc53e2f24e1dfffef2454f5136ae4ee08 (patch)
treee32f44d7f5971ec73fcda195107e1dfddd9150fc
parentaf04ce2e3d96d19b94dd4b416a6617b649c6da34 (diff)
parent4d9a82e9f305be8c823535e2b4f1be03cf86fbb3 (diff)
Merge branch 'CCZ4'
-rw-r--r--ML_ADM/schedule.ccl60
-rw-r--r--ML_ADM/src/ML_ADM_Minkowski.cc144
-rw-r--r--ML_ADM/src/ML_ADM_RHS.cc148
-rw-r--r--ML_ADM/src/ML_ADM_boundary.cc144
-rw-r--r--ML_ADM/src/ML_ADM_constraints.cc84
-rw-r--r--ML_ADM/src/ML_ADM_constraints_boundary.cc82
-rw-r--r--ML_ADM/src/ML_ADM_convertFromADMBase.cc148
-rw-r--r--ML_ADM/src/ML_ADM_convertToADMBase.cc170
-rw-r--r--ML_ADM/src/make.code.defn2
-rw-r--r--ML_BSSN/src/ML_BSSN_Minkowski.cc2
-rw-r--r--ML_BSSN/src/ML_BSSN_RHS1.cc18
-rw-r--r--ML_BSSN/src/ML_BSSN_RHS2.cc66
-rw-r--r--ML_BSSN/src/ML_BSSN_boundary.cc2
-rw-r--r--ML_BSSN/src/ML_BSSN_constraints1.cc42
-rw-r--r--ML_BSSN/src/ML_BSSN_constraints2.cc4
-rw-r--r--ML_BSSN/src/ML_BSSN_convertFromADMBase.cc2
-rw-r--r--ML_BSSN/src/ML_BSSN_convertToADMBase.cc4
-rw-r--r--ML_BSSN_MP/src/ML_BSSN_MP_Minkowski.cc2
-rw-r--r--ML_BSSN_MP/src/ML_BSSN_MP_RHS1.cc18
-rw-r--r--ML_BSSN_MP/src/ML_BSSN_MP_RHS2.cc66
-rw-r--r--ML_BSSN_MP/src/ML_BSSN_MP_boundary.cc2
-rw-r--r--ML_BSSN_MP/src/ML_BSSN_MP_constraints1.cc42
-rw-r--r--ML_BSSN_MP/src/ML_BSSN_MP_constraints2.cc4
-rw-r--r--ML_BSSN_MP/src/ML_BSSN_MP_convertFromADMBase.cc2
-rw-r--r--ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBase.cc4
-rw-r--r--ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_Minkowski.cc2
-rw-r--r--ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_RHS1.cc18
-rw-r--r--ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_RHS2.cc66
-rw-r--r--ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_boundary.cc2
-rw-r--r--ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_constraints1.cc42
-rw-r--r--ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_constraints2.cc4
-rw-r--r--ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_convertFromADMBase.cc2
-rw-r--r--ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_convertToADMBase.cc4
-rw-r--r--ML_BSSN_O2/src/ML_BSSN_O2_Minkowski.cc2
-rw-r--r--ML_BSSN_O2/src/ML_BSSN_O2_RHS1.cc18
-rw-r--r--ML_BSSN_O2/src/ML_BSSN_O2_RHS2.cc66
-rw-r--r--ML_BSSN_O2/src/ML_BSSN_O2_boundary.cc2
-rw-r--r--ML_BSSN_O2/src/ML_BSSN_O2_constraints1.cc42
-rw-r--r--ML_BSSN_O2/src/ML_BSSN_O2_constraints2.cc4
-rw-r--r--ML_BSSN_O2/src/ML_BSSN_O2_convertFromADMBase.cc2
-rw-r--r--ML_BSSN_O2/src/ML_BSSN_O2_convertToADMBase.cc4
-rw-r--r--ML_BSSN_O8/src/ML_BSSN_O8_Minkowski.cc2
-rw-r--r--ML_BSSN_O8/src/ML_BSSN_O8_RHS1.cc18
-rw-r--r--ML_BSSN_O8/src/ML_BSSN_O8_RHS2.cc66
-rw-r--r--ML_BSSN_O8/src/ML_BSSN_O8_boundary.cc2
-rw-r--r--ML_BSSN_O8/src/ML_BSSN_O8_constraints1.cc42
-rw-r--r--ML_BSSN_O8/src/ML_BSSN_O8_constraints2.cc4
-rw-r--r--ML_BSSN_O8/src/ML_BSSN_O8_convertFromADMBase.cc2
-rw-r--r--ML_BSSN_O8/src/ML_BSSN_O8_convertToADMBase.cc4
-rw-r--r--ML_BSSN_UPW/src/ML_BSSN_UPW_Minkowski.cc2
-rw-r--r--ML_BSSN_UPW/src/ML_BSSN_UPW_RHS1.cc18
-rw-r--r--ML_BSSN_UPW/src/ML_BSSN_UPW_RHS2.cc66
-rw-r--r--ML_BSSN_UPW/src/ML_BSSN_UPW_boundary.cc2
-rw-r--r--ML_BSSN_UPW/src/ML_BSSN_UPW_constraints1.cc42
-rw-r--r--ML_BSSN_UPW/src/ML_BSSN_UPW_constraints2.cc4
-rw-r--r--ML_BSSN_UPW/src/ML_BSSN_UPW_convertFromADMBase.cc2
-rw-r--r--ML_BSSN_UPW/src/ML_BSSN_UPW_convertToADMBase.cc4
-rw-r--r--ML_CCZ4/configuration.ccl5
-rw-r--r--ML_CCZ4/interface.ccl215
-rw-r--r--ML_CCZ4/param.ccl1558
-rw-r--r--ML_CCZ4/schedule.ccl766
-rw-r--r--ML_CCZ4/src/Boundaries.cc1913
-rw-r--r--ML_CCZ4/src/Differencing.h1146
-rw-r--r--ML_CCZ4/src/ML_CCZ4_Advect.cc2232
-rw-r--r--ML_CCZ4/src/ML_CCZ4_Dissipation.cc1374
-rw-r--r--ML_CCZ4/src/ML_CCZ4_InitGamma.cc295
-rw-r--r--ML_CCZ4/src/ML_CCZ4_InitRHS.cc359
-rw-r--r--ML_CCZ4/src/ML_CCZ4_Minkowski.cc359
-rw-r--r--ML_CCZ4/src/ML_CCZ4_RHS1.cc2382
-rw-r--r--ML_CCZ4/src/ML_CCZ4_RHS2.cc1898
-rw-r--r--ML_CCZ4/src/ML_CCZ4_RHSStaticBoundary.cc398
-rw-r--r--ML_CCZ4/src/ML_CCZ4_boundary.cc398
-rw-r--r--ML_CCZ4/src/ML_CCZ4_constraints1.cc1662
-rw-r--r--ML_CCZ4/src/ML_CCZ4_constraints2.cc1004
-rw-r--r--ML_CCZ4/src/ML_CCZ4_convertFromADMBase.cc404
-rw-r--r--ML_CCZ4/src/ML_CCZ4_convertFromADMBaseGamma.cc926
-rw-r--r--ML_CCZ4/src/ML_CCZ4_convertToADMBase.cc362
-rw-r--r--ML_CCZ4/src/ML_CCZ4_convertToADMBaseDtLapseShift.cc920
-rw-r--r--ML_CCZ4/src/ML_CCZ4_convertToADMBaseDtLapseShiftBoundary.cc348
-rw-r--r--ML_CCZ4/src/ML_CCZ4_convertToADMBaseFakeDtLapseShift.cc333
-rw-r--r--ML_CCZ4/src/ML_CCZ4_enforce.cc337
-rw-r--r--ML_CCZ4/src/RegisterMoL.cc44
-rw-r--r--ML_CCZ4/src/RegisterSymmetries.cc194
-rw-r--r--ML_CCZ4/src/Startup.cc10
-rw-r--r--ML_CCZ4/src/make.code.defn3
-rw-r--r--ML_CCZ4_Helper/configuration.ccl1
-rw-r--r--ML_CCZ4_Helper/interface.ccl38
-rw-r--r--ML_CCZ4_Helper/param.ccl39
-rw-r--r--ML_CCZ4_Helper/schedule.ccl161
-rw-r--r--ML_CCZ4_Helper/src/ExtrapolateGammas.c29
-rw-r--r--ML_CCZ4_Helper/src/NewRad.c69
-rw-r--r--ML_CCZ4_Helper/src/RegisterConstrained.c32
-rw-r--r--ML_CCZ4_Helper/src/RegisterSlicing.c9
-rw-r--r--ML_CCZ4_Helper/src/SelectBCsADMBase.c31
-rw-r--r--ML_CCZ4_Helper/src/SetGroupTags.c77
-rw-r--r--ML_CCZ4_Helper/src/make.code.defn2
-rw-r--r--ML_CCZ4_Test/interface.ccl1
-rw-r--r--ML_CCZ4_Test/param.ccl0
-rw-r--r--ML_CCZ4_Test/schedule.ccl0
-rw-r--r--ML_CCZ4_Test/src/make.code.defn0
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d.par145
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d/A.x.asc40
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d/At11.x.asc40
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d/At12.x.asc40
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d/At13.x.asc40
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d/At22.x.asc40
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d/At23.x.asc40
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d/At33.x.asc40
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d/B1.x.asc40
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d/B2.x.asc40
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d/B3.x.asc40
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d/Theta.x.asc40
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d/Xt1.x.asc40
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d/Xt2.x.asc40
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d/Xt3.x.asc40
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d/alpha.x.asc40
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d/beta1.x.asc40
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d/beta2.x.asc40
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d/beta3.x.asc40
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d/cA.x.asc40
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d/cS.x.asc40
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d/cXt1.x.asc40
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d/cXt2.x.asc40
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d/cXt3.x.asc40
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d/gt11.x.asc40
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d/gt12.x.asc40
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d/gt13.x.asc40
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d/gt22.x.asc40
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d/gt23.x.asc40
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d/gt33.x.asc40
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d/gxx.x.asc40
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d/kxx.x.asc40
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d/phi.x.asc40
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d/trK.x.asc40
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs.par147
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/A.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/A.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/A.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Arhs.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Arhs.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Arhs.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At11.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At11.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At11.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At11rhs.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At11rhs.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At11rhs.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At12.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At12.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At12.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At12rhs.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At12rhs.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At12rhs.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At13.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At13.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At13.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At13rhs.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At13rhs.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At13rhs.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At22.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At22.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At22.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At22rhs.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At22rhs.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At22rhs.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At23.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At23.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At23.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At23rhs.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At23rhs.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At23rhs.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At33.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At33.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At33.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At33rhs.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At33rhs.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At33rhs.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B1.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B1.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B1.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B1rhs.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B1rhs.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B1rhs.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B2.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B2.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B2.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B2rhs.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B2rhs.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B2rhs.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B3.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B3.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B3.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B3rhs.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B3rhs.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B3rhs.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Theta.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Theta.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Theta.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Thetarhs.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Thetarhs.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Thetarhs.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt1.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt1.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt1.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt1rhs.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt1rhs.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt1rhs.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt2.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt2.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt2.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt2rhs.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt2rhs.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt2rhs.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt3.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt3.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt3.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt3rhs.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt3rhs.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt3rhs.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/alpha.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/alpha.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/alpha.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/alpharhs.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/alpharhs.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/alpharhs.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta1.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta1.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta1.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta1rhs.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta1rhs.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta1rhs.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta2.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta2.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta2.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta2rhs.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta2rhs.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta2rhs.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta3.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta3.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta3.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta3rhs.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta3rhs.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta3rhs.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cA.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cA.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cA.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cS.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cS.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cS.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cXt1.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cXt1.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cXt1.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cXt2.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cXt2.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cXt2.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cXt3.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cXt3.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cXt3.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt11.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt11.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt11.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt11rhs.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt11rhs.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt11rhs.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt12.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt12.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt12.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt12rhs.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt12rhs.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt12rhs.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt13.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt13.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt13.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt13rhs.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt13rhs.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt13rhs.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt22.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt22.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt22.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt22rhs.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt22rhs.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt22rhs.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt23.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt23.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt23.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt23rhs.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt23rhs.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt23rhs.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt33.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt33.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt33.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt33rhs.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt33rhs.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt33rhs.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gxx.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gxx.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gxx.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/kxx.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/kxx.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/kxx.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/phi.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/phi.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/phi.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/phirhs.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/phirhs.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/phirhs.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/trK.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/trK.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/trK.z.asc27
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/trKrhs.x.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/trKrhs.y.asc21
-rw-r--r--ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/trKrhs.z.asc27
-rw-r--r--ML_CCZ4_Test/test/test.ccl1
-rw-r--r--ML_WaveToyFO/configuration.ccl4
-rw-r--r--ML_WaveToyFO/param.ccl6
-rw-r--r--ML_WaveToyFO/schedule.ccl32
-rw-r--r--ML_WaveToyFO/src/WTFO_Gaussian.cc20
-rw-r--r--ML_WaveToyFO/src/WTFO_RHS.cc22
-rw-r--r--ML_WaveToyFO/src/WTFO_constraints.cc19
-rw-r--r--ML_WaveToyFO/src/make.code.defn2
-rw-r--r--m/Makefile3
-rw-r--r--m/McLachlan_BSSN.m300
-rw-r--r--par/CCZ4/bbh_ccz4.par493
-rw-r--r--par/CCZ4/gw1d_ccz4.par283
-rw-r--r--par/CCZ4/rbst_ccz4.par230
325 files changed, 30032 insertions, 1222 deletions
diff --git a/ML_ADM/schedule.ccl b/ML_ADM/schedule.ccl
index 1745ad3..c5c8a2b 100644
--- a/ML_ADM/schedule.ccl
+++ b/ML_ADM/schedule.ccl
@@ -121,12 +121,6 @@ schedule ML_ADM_Startup at STARTUP
OPTIONS: meta
} "create banner"
-schedule ML_ADM_RegisterVars in MoL_Register
-{
- LANG: C
- OPTIONS: meta
-} "Register Variables for MoL"
-
schedule ML_ADM_RegisterSymmetries in SymmetryRegister
{
LANG: C
@@ -139,6 +133,10 @@ if (CCTK_EQUALS(my_initial_data, "Minkowski"))
schedule ML_ADM_Minkowski IN ADMBase_InitialData
{
LANG: C
+ WRITES: ML_ADM::ML_curv
+ WRITES: ML_ADM::ML_lapse
+ WRITES: ML_ADM::ML_metric
+ WRITES: ML_ADM::ML_shift
} "ML_ADM_Minkowski"
}
@@ -148,12 +146,28 @@ if (CCTK_EQUALS(my_initial_data, "ADMBase"))
schedule ML_ADM_convertFromADMBase AT initial AFTER ADMBase_PostInitial
{
LANG: C
+ READS: ADMBase::curv
+ READS: ADMBase::lapse
+ READS: ADMBase::metric
+ READS: ADMBase::shift
+ WRITES: ML_ADM::ML_curv
+ WRITES: ML_ADM::ML_lapse
+ WRITES: ML_ADM::ML_metric
+ WRITES: ML_ADM::ML_shift
} "ML_ADM_convertFromADMBase"
}
schedule ML_ADM_RHS IN MoL_CalcRHS
{
LANG: C
+ READS: ML_ADM::ML_curv
+ READS: ML_ADM::ML_lapse
+ READS: ML_ADM::ML_metric
+ READS: ML_ADM::ML_shift
+ WRITES: ML_ADM::ML_curvrhs
+ WRITES: ML_ADM::ML_lapserhs
+ WRITES: ML_ADM::ML_metricrhs
+ WRITES: ML_ADM::ML_shiftrhs
} "ML_ADM_RHS"
schedule ML_ADM_RHS AT analysis
@@ -163,6 +177,14 @@ schedule ML_ADM_RHS AT analysis
SYNC: ML_lapserhs
SYNC: ML_metricrhs
SYNC: ML_shiftrhs
+ READS: ML_ADM::ML_curv
+ READS: ML_ADM::ML_lapse
+ READS: ML_ADM::ML_metric
+ READS: ML_ADM::ML_shift
+ WRITES: ML_ADM::ML_curvrhs
+ WRITES: ML_ADM::ML_lapserhs
+ WRITES: ML_ADM::ML_metricrhs
+ WRITES: ML_ADM::ML_shiftrhs
} "ML_ADM_RHS"
@@ -171,12 +193,26 @@ if (CCTK_EQUALS(my_boundary_condition, "Minkowski"))
schedule ML_ADM_boundary IN MoL_PostStep
{
LANG: C
+ WRITES: ML_ADM::ML_curv
+ WRITES: ML_ADM::ML_lapse
+ WRITES: ML_ADM::ML_metric
+ WRITES: ML_ADM::ML_shift
} "ML_ADM_boundary"
}
schedule ML_ADM_convertToADMBase IN MoL_PostStep AFTER ML_ADM_ApplyBCs
{
LANG: C
+ READS: ML_ADM::ML_curv
+ READS: ML_ADM::ML_lapse
+ READS: ML_ADM::ML_metric
+ READS: ML_ADM::ML_shift
+ WRITES: ADMBase::curv
+ WRITES: ADMBase::dtlapse
+ WRITES: ADMBase::dtshift
+ WRITES: ADMBase::lapse
+ WRITES: ADMBase::metric
+ WRITES: ADMBase::shift
} "ML_ADM_convertToADMBase"
schedule ML_ADM_constraints AT analysis
@@ -186,11 +222,17 @@ schedule ML_ADM_constraints AT analysis
SYNC: ML_mom
TRIGGERS: ML_Ham
TRIGGERS: ML_mom
+ READS: ML_ADM::ML_curv
+ READS: ML_ADM::ML_metric
+ WRITES: ML_ADM::ML_Ham
+ WRITES: ML_ADM::ML_mom
} "ML_ADM_constraints"
schedule ML_ADM_constraints_boundary AT analysis AFTER ML_ADM_constraints
{
LANG: C
+ WRITES: ML_ADM::ML_Ham
+ WRITES: ML_ADM::ML_mom
} "ML_ADM_constraints_boundary"
schedule ML_ADM_SelectBoundConds in MoL_PostStep
@@ -209,6 +251,12 @@ schedule ML_ADM_CheckBoundaries at BASEGRID
OPTIONS: meta
} "check boundaries treatment"
+schedule ML_ADM_RegisterVars in MoL_Register
+{
+ LANG: C
+ OPTIONS: meta
+} "Register Variables for MoL"
+
schedule group ApplyBCs as ML_ADM_ApplyBCs in MoL_PostStep after ML_ADM_SelectBoundConds
{
# no language specified
diff --git a/ML_ADM/src/ML_ADM_Minkowski.cc b/ML_ADM/src/ML_ADM_Minkowski.cc
index f220dd2..b201596 100644
--- a/ML_ADM/src/ML_ADM_Minkowski.cc
+++ b/ML_ADM/src/ML_ADM_Minkowski.cc
@@ -29,8 +29,6 @@ static void ML_ADM_Minkowski_Body(cGH const * restrict const cctkGH, int const d
DECLARE_CCTK_PARAMETERS;
- /* Declare finite differencing variables */
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -61,30 +59,30 @@ static void ML_ADM_Minkowski_Body(cGH const * restrict const cctkGH, int const d
CCTK_REAL_VEC const p1o12dx = kmul(INV(dx),ToReal(0.0833333333333333333333333333333));
CCTK_REAL_VEC const p1o12dy = kmul(INV(dy),ToReal(0.0833333333333333333333333333333));
CCTK_REAL_VEC const p1o12dz = kmul(INV(dz),ToReal(0.0833333333333333333333333333333));
- CCTK_REAL_VEC const p1o144dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(0.00694444444444444444444444444444)));
- CCTK_REAL_VEC const p1o144dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(0.00694444444444444444444444444444)));
- CCTK_REAL_VEC const p1o144dydz = kmul(INV(dy),kmul(INV(dz),ToReal(0.00694444444444444444444444444444)));
+ CCTK_REAL_VEC const p1o144dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o144dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o144dydz = kmul(INV(kmul(dy,dz)),ToReal(0.00694444444444444444444444444444));
CCTK_REAL_VEC const p1o180dx2 = kmul(INV(SQR(dx)),ToReal(0.00555555555555555555555555555556));
CCTK_REAL_VEC const p1o180dy2 = kmul(INV(SQR(dy)),ToReal(0.00555555555555555555555555555556));
CCTK_REAL_VEC const p1o180dz2 = kmul(INV(SQR(dz)),ToReal(0.00555555555555555555555555555556));
CCTK_REAL_VEC const p1o2dx = kmul(INV(dx),ToReal(0.5));
CCTK_REAL_VEC const p1o2dy = kmul(INV(dy),ToReal(0.5));
CCTK_REAL_VEC const p1o2dz = kmul(INV(dz),ToReal(0.5));
- CCTK_REAL_VEC const p1o3600dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(0.000277777777777777777777777777778)));
- CCTK_REAL_VEC const p1o3600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(0.000277777777777777777777777777778)));
- CCTK_REAL_VEC const p1o3600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(0.000277777777777777777777777777778)));
- CCTK_REAL_VEC const p1o4dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(0.25)));
- CCTK_REAL_VEC const p1o4dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(0.25)));
- CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(dz),ToReal(0.25)));
+ CCTK_REAL_VEC const p1o3600dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o3600dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o3600dydz = kmul(INV(kmul(dy,dz)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o4dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(kmul(dy,dz)),ToReal(0.25));
CCTK_REAL_VEC const p1o5040dx2 = kmul(INV(SQR(dx)),ToReal(0.000198412698412698412698412698413));
CCTK_REAL_VEC const p1o5040dy2 = kmul(INV(SQR(dy)),ToReal(0.000198412698412698412698412698413));
CCTK_REAL_VEC const p1o5040dz2 = kmul(INV(SQR(dz)),ToReal(0.000198412698412698412698412698413));
CCTK_REAL_VEC const p1o60dx = kmul(INV(dx),ToReal(0.0166666666666666666666666666667));
CCTK_REAL_VEC const p1o60dy = kmul(INV(dy),ToReal(0.0166666666666666666666666666667));
CCTK_REAL_VEC const p1o60dz = kmul(INV(dz),ToReal(0.0166666666666666666666666666667));
- CCTK_REAL_VEC const p1o705600dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
- CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
- CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdy = kmul(INV(kmul(dx,dy)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(kmul(dx,dz)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(kmul(dy,dz)),ToReal(1.41723356009070294784580498866e-6));
CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
@@ -150,7 +148,7 @@ static void ML_ADM_Minkowski_Body(cGH const * restrict const cctkGH, int const d
/* Loop over the grid points */
#pragma omp parallel
- LC_LOOP3VEC (ML_ADM_Minkowski,
+ LC_LOOP3VEC(ML_ADM_Minkowski,
i,j,k, imin[0],imin[1],imin[2], imax[0],imax[1],imax[2],
cctk_lsh[0],cctk_lsh[1],cctk_lsh[2],
CCTK_REAL_VEC_SIZE)
@@ -214,96 +212,26 @@ static void ML_ADM_Minkowski_Body(cGH const * restrict const cctkGH, int const d
CCTK_REAL_VEC beta3L = ToReal(0);
- /* If necessary, store only partial vectors after the first iteration */
-
- if (CCTK_REAL_VEC_SIZE > 2 && CCTK_BUILTIN_EXPECT(i < lc_imin && i+CCTK_REAL_VEC_SIZE > lc_imax, 0))
- {
- ptrdiff_t const elt_count_lo = lc_imin-i;
- ptrdiff_t const elt_count_hi = lc_imax-i;
- vec_store_nta_partial_mid(alpha[index],alphaL,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(beta1[index],beta1L,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(beta2[index],beta2L,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(beta3[index],beta3L,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(g11[index],g11L,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(g12[index],g12L,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(g13[index],g13L,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(g22[index],g22L,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(g23[index],g23L,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(g33[index],g33L,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(K11[index],K11L,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(K12[index],K12L,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(K13[index],K13L,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(K22[index],K22L,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(K23[index],K23L,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(K33[index],K33L,elt_count_lo,elt_count_hi);
- break;
- }
-
- /* If necessary, store only partial vectors after the first iteration */
-
- if (CCTK_REAL_VEC_SIZE > 1 && CCTK_BUILTIN_EXPECT(i < lc_imin, 0))
- {
- ptrdiff_t const elt_count = lc_imin-i;
- vec_store_nta_partial_hi(alpha[index],alphaL,elt_count);
- vec_store_nta_partial_hi(beta1[index],beta1L,elt_count);
- vec_store_nta_partial_hi(beta2[index],beta2L,elt_count);
- vec_store_nta_partial_hi(beta3[index],beta3L,elt_count);
- vec_store_nta_partial_hi(g11[index],g11L,elt_count);
- vec_store_nta_partial_hi(g12[index],g12L,elt_count);
- vec_store_nta_partial_hi(g13[index],g13L,elt_count);
- vec_store_nta_partial_hi(g22[index],g22L,elt_count);
- vec_store_nta_partial_hi(g23[index],g23L,elt_count);
- vec_store_nta_partial_hi(g33[index],g33L,elt_count);
- vec_store_nta_partial_hi(K11[index],K11L,elt_count);
- vec_store_nta_partial_hi(K12[index],K12L,elt_count);
- vec_store_nta_partial_hi(K13[index],K13L,elt_count);
- vec_store_nta_partial_hi(K22[index],K22L,elt_count);
- vec_store_nta_partial_hi(K23[index],K23L,elt_count);
- vec_store_nta_partial_hi(K33[index],K33L,elt_count);
- continue;
- }
-
- /* If necessary, store only partial vectors after the last iteration */
-
- if (CCTK_REAL_VEC_SIZE > 1 && CCTK_BUILTIN_EXPECT(i+CCTK_REAL_VEC_SIZE > lc_imax, 0))
- {
- ptrdiff_t const elt_count = lc_imax-i;
- vec_store_nta_partial_lo(alpha[index],alphaL,elt_count);
- vec_store_nta_partial_lo(beta1[index],beta1L,elt_count);
- vec_store_nta_partial_lo(beta2[index],beta2L,elt_count);
- vec_store_nta_partial_lo(beta3[index],beta3L,elt_count);
- vec_store_nta_partial_lo(g11[index],g11L,elt_count);
- vec_store_nta_partial_lo(g12[index],g12L,elt_count);
- vec_store_nta_partial_lo(g13[index],g13L,elt_count);
- vec_store_nta_partial_lo(g22[index],g22L,elt_count);
- vec_store_nta_partial_lo(g23[index],g23L,elt_count);
- vec_store_nta_partial_lo(g33[index],g33L,elt_count);
- vec_store_nta_partial_lo(K11[index],K11L,elt_count);
- vec_store_nta_partial_lo(K12[index],K12L,elt_count);
- vec_store_nta_partial_lo(K13[index],K13L,elt_count);
- vec_store_nta_partial_lo(K22[index],K22L,elt_count);
- vec_store_nta_partial_lo(K23[index],K23L,elt_count);
- vec_store_nta_partial_lo(K33[index],K33L,elt_count);
- break;
- }
- vec_store_nta(alpha[index],alphaL);
- vec_store_nta(beta1[index],beta1L);
- vec_store_nta(beta2[index],beta2L);
- vec_store_nta(beta3[index],beta3L);
- vec_store_nta(g11[index],g11L);
- vec_store_nta(g12[index],g12L);
- vec_store_nta(g13[index],g13L);
- vec_store_nta(g22[index],g22L);
- vec_store_nta(g23[index],g23L);
- vec_store_nta(g33[index],g33L);
- vec_store_nta(K11[index],K11L);
- vec_store_nta(K12[index],K12L);
- vec_store_nta(K13[index],K13L);
- vec_store_nta(K22[index],K22L);
- vec_store_nta(K23[index],K23L);
- vec_store_nta(K33[index],K33L);
+ /* Copy local copies back to grid functions */
+ vec_store_partial_prepare(i,lc_imin,lc_imax);
+ vec_store_nta_partial(alpha[index],alphaL);
+ vec_store_nta_partial(beta1[index],beta1L);
+ vec_store_nta_partial(beta2[index],beta2L);
+ vec_store_nta_partial(beta3[index],beta3L);
+ vec_store_nta_partial(g11[index],g11L);
+ vec_store_nta_partial(g12[index],g12L);
+ vec_store_nta_partial(g13[index],g13L);
+ vec_store_nta_partial(g22[index],g22L);
+ vec_store_nta_partial(g23[index],g23L);
+ vec_store_nta_partial(g33[index],g33L);
+ vec_store_nta_partial(K11[index],K11L);
+ vec_store_nta_partial(K12[index],K12L);
+ vec_store_nta_partial(K13[index],K13L);
+ vec_store_nta_partial(K22[index],K22L);
+ vec_store_nta_partial(K23[index],K23L);
+ vec_store_nta_partial(K33[index],K33L);
}
- LC_ENDLOOP3VEC (ML_ADM_Minkowski);
+ LC_ENDLOOP3VEC(ML_ADM_Minkowski);
}
extern "C" void ML_ADM_Minkowski(CCTK_ARGUMENTS)
@@ -322,7 +250,11 @@ extern "C" void ML_ADM_Minkowski(CCTK_ARGUMENTS)
return;
}
- const char *groups[] = {"ML_ADM::ML_curv","ML_ADM::ML_lapse","ML_ADM::ML_metric","ML_ADM::ML_shift"};
+ const char *const groups[] = {
+ "ML_ADM::ML_curv",
+ "ML_ADM::ML_lapse",
+ "ML_ADM::ML_metric",
+ "ML_ADM::ML_shift"};
GenericFD_AssertGroupStorage(cctkGH, "ML_ADM_Minkowski", 4, groups);
switch(fdOrder)
@@ -340,7 +272,7 @@ extern "C" void ML_ADM_Minkowski(CCTK_ARGUMENTS)
break;
}
- GenericFD_LoopOverEverything(cctkGH, &ML_ADM_Minkowski_Body);
+ GenericFD_LoopOverEverything(cctkGH, ML_ADM_Minkowski_Body);
if (verbose > 1)
{
diff --git a/ML_ADM/src/ML_ADM_RHS.cc b/ML_ADM/src/ML_ADM_RHS.cc
index 4aa5793..b24ebe3 100644
--- a/ML_ADM/src/ML_ADM_RHS.cc
+++ b/ML_ADM/src/ML_ADM_RHS.cc
@@ -50,8 +50,6 @@ static void ML_ADM_RHS_Body(cGH const * restrict const cctkGH, int const dir, in
DECLARE_CCTK_PARAMETERS;
- /* Declare finite differencing variables */
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -82,30 +80,30 @@ static void ML_ADM_RHS_Body(cGH const * restrict const cctkGH, int const dir, in
CCTK_REAL_VEC const p1o12dx = kmul(INV(dx),ToReal(0.0833333333333333333333333333333));
CCTK_REAL_VEC const p1o12dy = kmul(INV(dy),ToReal(0.0833333333333333333333333333333));
CCTK_REAL_VEC const p1o12dz = kmul(INV(dz),ToReal(0.0833333333333333333333333333333));
- CCTK_REAL_VEC const p1o144dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(0.00694444444444444444444444444444)));
- CCTK_REAL_VEC const p1o144dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(0.00694444444444444444444444444444)));
- CCTK_REAL_VEC const p1o144dydz = kmul(INV(dy),kmul(INV(dz),ToReal(0.00694444444444444444444444444444)));
+ CCTK_REAL_VEC const p1o144dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o144dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o144dydz = kmul(INV(kmul(dy,dz)),ToReal(0.00694444444444444444444444444444));
CCTK_REAL_VEC const p1o180dx2 = kmul(INV(SQR(dx)),ToReal(0.00555555555555555555555555555556));
CCTK_REAL_VEC const p1o180dy2 = kmul(INV(SQR(dy)),ToReal(0.00555555555555555555555555555556));
CCTK_REAL_VEC const p1o180dz2 = kmul(INV(SQR(dz)),ToReal(0.00555555555555555555555555555556));
CCTK_REAL_VEC const p1o2dx = kmul(INV(dx),ToReal(0.5));
CCTK_REAL_VEC const p1o2dy = kmul(INV(dy),ToReal(0.5));
CCTK_REAL_VEC const p1o2dz = kmul(INV(dz),ToReal(0.5));
- CCTK_REAL_VEC const p1o3600dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(0.000277777777777777777777777777778)));
- CCTK_REAL_VEC const p1o3600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(0.000277777777777777777777777777778)));
- CCTK_REAL_VEC const p1o3600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(0.000277777777777777777777777777778)));
- CCTK_REAL_VEC const p1o4dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(0.25)));
- CCTK_REAL_VEC const p1o4dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(0.25)));
- CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(dz),ToReal(0.25)));
+ CCTK_REAL_VEC const p1o3600dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o3600dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o3600dydz = kmul(INV(kmul(dy,dz)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o4dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(kmul(dy,dz)),ToReal(0.25));
CCTK_REAL_VEC const p1o5040dx2 = kmul(INV(SQR(dx)),ToReal(0.000198412698412698412698412698413));
CCTK_REAL_VEC const p1o5040dy2 = kmul(INV(SQR(dy)),ToReal(0.000198412698412698412698412698413));
CCTK_REAL_VEC const p1o5040dz2 = kmul(INV(SQR(dz)),ToReal(0.000198412698412698412698412698413));
CCTK_REAL_VEC const p1o60dx = kmul(INV(dx),ToReal(0.0166666666666666666666666666667));
CCTK_REAL_VEC const p1o60dy = kmul(INV(dy),ToReal(0.0166666666666666666666666666667));
CCTK_REAL_VEC const p1o60dz = kmul(INV(dz),ToReal(0.0166666666666666666666666666667));
- CCTK_REAL_VEC const p1o705600dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
- CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
- CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdy = kmul(INV(kmul(dx,dy)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(kmul(dx,dz)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(kmul(dy,dz)),ToReal(1.41723356009070294784580498866e-6));
CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
@@ -171,7 +169,7 @@ static void ML_ADM_RHS_Body(cGH const * restrict const cctkGH, int const dir, in
/* Loop over the grid points */
#pragma omp parallel
- LC_LOOP3VEC (ML_ADM_RHS,
+ LC_LOOP3VEC(ML_ADM_RHS,
i,j,k, imin[0],imin[1],imin[2], imax[0],imax[1],imax[2],
cctk_lsh[0],cctk_lsh[1],cctk_lsh[2],
CCTK_REAL_VEC_SIZE)
@@ -1473,96 +1471,26 @@ static void ML_ADM_RHS_Body(cGH const * restrict const cctkGH, int const dir, in
CCTK_REAL_VEC beta3rhsL = ToReal(0);
- /* If necessary, store only partial vectors after the first iteration */
-
- if (CCTK_REAL_VEC_SIZE > 2 && CCTK_BUILTIN_EXPECT(i < lc_imin && i+CCTK_REAL_VEC_SIZE > lc_imax, 0))
- {
- ptrdiff_t const elt_count_lo = lc_imin-i;
- ptrdiff_t const elt_count_hi = lc_imax-i;
- vec_store_nta_partial_mid(alpharhs[index],alpharhsL,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(beta1rhs[index],beta1rhsL,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(beta2rhs[index],beta2rhsL,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(beta3rhs[index],beta3rhsL,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(g11rhs[index],g11rhsL,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(g12rhs[index],g12rhsL,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(g13rhs[index],g13rhsL,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(g22rhs[index],g22rhsL,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(g23rhs[index],g23rhsL,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(g33rhs[index],g33rhsL,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(K11rhs[index],K11rhsL,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(K12rhs[index],K12rhsL,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(K13rhs[index],K13rhsL,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(K22rhs[index],K22rhsL,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(K23rhs[index],K23rhsL,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(K33rhs[index],K33rhsL,elt_count_lo,elt_count_hi);
- break;
- }
-
- /* If necessary, store only partial vectors after the first iteration */
-
- if (CCTK_REAL_VEC_SIZE > 1 && CCTK_BUILTIN_EXPECT(i < lc_imin, 0))
- {
- ptrdiff_t const elt_count = lc_imin-i;
- vec_store_nta_partial_hi(alpharhs[index],alpharhsL,elt_count);
- vec_store_nta_partial_hi(beta1rhs[index],beta1rhsL,elt_count);
- vec_store_nta_partial_hi(beta2rhs[index],beta2rhsL,elt_count);
- vec_store_nta_partial_hi(beta3rhs[index],beta3rhsL,elt_count);
- vec_store_nta_partial_hi(g11rhs[index],g11rhsL,elt_count);
- vec_store_nta_partial_hi(g12rhs[index],g12rhsL,elt_count);
- vec_store_nta_partial_hi(g13rhs[index],g13rhsL,elt_count);
- vec_store_nta_partial_hi(g22rhs[index],g22rhsL,elt_count);
- vec_store_nta_partial_hi(g23rhs[index],g23rhsL,elt_count);
- vec_store_nta_partial_hi(g33rhs[index],g33rhsL,elt_count);
- vec_store_nta_partial_hi(K11rhs[index],K11rhsL,elt_count);
- vec_store_nta_partial_hi(K12rhs[index],K12rhsL,elt_count);
- vec_store_nta_partial_hi(K13rhs[index],K13rhsL,elt_count);
- vec_store_nta_partial_hi(K22rhs[index],K22rhsL,elt_count);
- vec_store_nta_partial_hi(K23rhs[index],K23rhsL,elt_count);
- vec_store_nta_partial_hi(K33rhs[index],K33rhsL,elt_count);
- continue;
- }
-
- /* If necessary, store only partial vectors after the last iteration */
-
- if (CCTK_REAL_VEC_SIZE > 1 && CCTK_BUILTIN_EXPECT(i+CCTK_REAL_VEC_SIZE > lc_imax, 0))
- {
- ptrdiff_t const elt_count = lc_imax-i;
- vec_store_nta_partial_lo(alpharhs[index],alpharhsL,elt_count);
- vec_store_nta_partial_lo(beta1rhs[index],beta1rhsL,elt_count);
- vec_store_nta_partial_lo(beta2rhs[index],beta2rhsL,elt_count);
- vec_store_nta_partial_lo(beta3rhs[index],beta3rhsL,elt_count);
- vec_store_nta_partial_lo(g11rhs[index],g11rhsL,elt_count);
- vec_store_nta_partial_lo(g12rhs[index],g12rhsL,elt_count);
- vec_store_nta_partial_lo(g13rhs[index],g13rhsL,elt_count);
- vec_store_nta_partial_lo(g22rhs[index],g22rhsL,elt_count);
- vec_store_nta_partial_lo(g23rhs[index],g23rhsL,elt_count);
- vec_store_nta_partial_lo(g33rhs[index],g33rhsL,elt_count);
- vec_store_nta_partial_lo(K11rhs[index],K11rhsL,elt_count);
- vec_store_nta_partial_lo(K12rhs[index],K12rhsL,elt_count);
- vec_store_nta_partial_lo(K13rhs[index],K13rhsL,elt_count);
- vec_store_nta_partial_lo(K22rhs[index],K22rhsL,elt_count);
- vec_store_nta_partial_lo(K23rhs[index],K23rhsL,elt_count);
- vec_store_nta_partial_lo(K33rhs[index],K33rhsL,elt_count);
- break;
- }
- vec_store_nta(alpharhs[index],alpharhsL);
- vec_store_nta(beta1rhs[index],beta1rhsL);
- vec_store_nta(beta2rhs[index],beta2rhsL);
- vec_store_nta(beta3rhs[index],beta3rhsL);
- vec_store_nta(g11rhs[index],g11rhsL);
- vec_store_nta(g12rhs[index],g12rhsL);
- vec_store_nta(g13rhs[index],g13rhsL);
- vec_store_nta(g22rhs[index],g22rhsL);
- vec_store_nta(g23rhs[index],g23rhsL);
- vec_store_nta(g33rhs[index],g33rhsL);
- vec_store_nta(K11rhs[index],K11rhsL);
- vec_store_nta(K12rhs[index],K12rhsL);
- vec_store_nta(K13rhs[index],K13rhsL);
- vec_store_nta(K22rhs[index],K22rhsL);
- vec_store_nta(K23rhs[index],K23rhsL);
- vec_store_nta(K33rhs[index],K33rhsL);
+ /* Copy local copies back to grid functions */
+ vec_store_partial_prepare(i,lc_imin,lc_imax);
+ vec_store_nta_partial(alpharhs[index],alpharhsL);
+ vec_store_nta_partial(beta1rhs[index],beta1rhsL);
+ vec_store_nta_partial(beta2rhs[index],beta2rhsL);
+ vec_store_nta_partial(beta3rhs[index],beta3rhsL);
+ vec_store_nta_partial(g11rhs[index],g11rhsL);
+ vec_store_nta_partial(g12rhs[index],g12rhsL);
+ vec_store_nta_partial(g13rhs[index],g13rhsL);
+ vec_store_nta_partial(g22rhs[index],g22rhsL);
+ vec_store_nta_partial(g23rhs[index],g23rhsL);
+ vec_store_nta_partial(g33rhs[index],g33rhsL);
+ vec_store_nta_partial(K11rhs[index],K11rhsL);
+ vec_store_nta_partial(K12rhs[index],K12rhsL);
+ vec_store_nta_partial(K13rhs[index],K13rhsL);
+ vec_store_nta_partial(K22rhs[index],K22rhsL);
+ vec_store_nta_partial(K23rhs[index],K23rhsL);
+ vec_store_nta_partial(K33rhs[index],K33rhsL);
}
- LC_ENDLOOP3VEC (ML_ADM_RHS);
+ LC_ENDLOOP3VEC(ML_ADM_RHS);
}
extern "C" void ML_ADM_RHS(CCTK_ARGUMENTS)
@@ -1581,7 +1509,15 @@ extern "C" void ML_ADM_RHS(CCTK_ARGUMENTS)
return;
}
- const char *groups[] = {"ML_ADM::ML_curv","ML_ADM::ML_curvrhs","ML_ADM::ML_lapse","ML_ADM::ML_lapserhs","ML_ADM::ML_metric","ML_ADM::ML_metricrhs","ML_ADM::ML_shift","ML_ADM::ML_shiftrhs"};
+ const char *const groups[] = {
+ "ML_ADM::ML_curv",
+ "ML_ADM::ML_curvrhs",
+ "ML_ADM::ML_lapse",
+ "ML_ADM::ML_lapserhs",
+ "ML_ADM::ML_metric",
+ "ML_ADM::ML_metricrhs",
+ "ML_ADM::ML_shift",
+ "ML_ADM::ML_shiftrhs"};
GenericFD_AssertGroupStorage(cctkGH, "ML_ADM_RHS", 8, groups);
switch(fdOrder)
@@ -1603,7 +1539,7 @@ extern "C" void ML_ADM_RHS(CCTK_ARGUMENTS)
break;
}
- GenericFD_LoopOverInterior(cctkGH, &ML_ADM_RHS_Body);
+ GenericFD_LoopOverInterior(cctkGH, ML_ADM_RHS_Body);
if (verbose > 1)
{
diff --git a/ML_ADM/src/ML_ADM_boundary.cc b/ML_ADM/src/ML_ADM_boundary.cc
index d4d81cf..6f0ef79 100644
--- a/ML_ADM/src/ML_ADM_boundary.cc
+++ b/ML_ADM/src/ML_ADM_boundary.cc
@@ -50,8 +50,6 @@ static void ML_ADM_boundary_Body(cGH const * restrict const cctkGH, int const di
DECLARE_CCTK_PARAMETERS;
- /* Declare finite differencing variables */
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -82,30 +80,30 @@ static void ML_ADM_boundary_Body(cGH const * restrict const cctkGH, int const di
CCTK_REAL_VEC const p1o12dx = kmul(INV(dx),ToReal(0.0833333333333333333333333333333));
CCTK_REAL_VEC const p1o12dy = kmul(INV(dy),ToReal(0.0833333333333333333333333333333));
CCTK_REAL_VEC const p1o12dz = kmul(INV(dz),ToReal(0.0833333333333333333333333333333));
- CCTK_REAL_VEC const p1o144dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(0.00694444444444444444444444444444)));
- CCTK_REAL_VEC const p1o144dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(0.00694444444444444444444444444444)));
- CCTK_REAL_VEC const p1o144dydz = kmul(INV(dy),kmul(INV(dz),ToReal(0.00694444444444444444444444444444)));
+ CCTK_REAL_VEC const p1o144dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o144dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o144dydz = kmul(INV(kmul(dy,dz)),ToReal(0.00694444444444444444444444444444));
CCTK_REAL_VEC const p1o180dx2 = kmul(INV(SQR(dx)),ToReal(0.00555555555555555555555555555556));
CCTK_REAL_VEC const p1o180dy2 = kmul(INV(SQR(dy)),ToReal(0.00555555555555555555555555555556));
CCTK_REAL_VEC const p1o180dz2 = kmul(INV(SQR(dz)),ToReal(0.00555555555555555555555555555556));
CCTK_REAL_VEC const p1o2dx = kmul(INV(dx),ToReal(0.5));
CCTK_REAL_VEC const p1o2dy = kmul(INV(dy),ToReal(0.5));
CCTK_REAL_VEC const p1o2dz = kmul(INV(dz),ToReal(0.5));
- CCTK_REAL_VEC const p1o3600dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(0.000277777777777777777777777777778)));
- CCTK_REAL_VEC const p1o3600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(0.000277777777777777777777777777778)));
- CCTK_REAL_VEC const p1o3600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(0.000277777777777777777777777777778)));
- CCTK_REAL_VEC const p1o4dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(0.25)));
- CCTK_REAL_VEC const p1o4dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(0.25)));
- CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(dz),ToReal(0.25)));
+ CCTK_REAL_VEC const p1o3600dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o3600dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o3600dydz = kmul(INV(kmul(dy,dz)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o4dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(kmul(dy,dz)),ToReal(0.25));
CCTK_REAL_VEC const p1o5040dx2 = kmul(INV(SQR(dx)),ToReal(0.000198412698412698412698412698413));
CCTK_REAL_VEC const p1o5040dy2 = kmul(INV(SQR(dy)),ToReal(0.000198412698412698412698412698413));
CCTK_REAL_VEC const p1o5040dz2 = kmul(INV(SQR(dz)),ToReal(0.000198412698412698412698412698413));
CCTK_REAL_VEC const p1o60dx = kmul(INV(dx),ToReal(0.0166666666666666666666666666667));
CCTK_REAL_VEC const p1o60dy = kmul(INV(dy),ToReal(0.0166666666666666666666666666667));
CCTK_REAL_VEC const p1o60dz = kmul(INV(dz),ToReal(0.0166666666666666666666666666667));
- CCTK_REAL_VEC const p1o705600dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
- CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
- CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdy = kmul(INV(kmul(dx,dy)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(kmul(dx,dz)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(kmul(dy,dz)),ToReal(1.41723356009070294784580498866e-6));
CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
@@ -171,7 +169,7 @@ static void ML_ADM_boundary_Body(cGH const * restrict const cctkGH, int const di
/* Loop over the grid points */
#pragma omp parallel
- LC_LOOP3VEC (ML_ADM_boundary,
+ LC_LOOP3VEC(ML_ADM_boundary,
i,j,k, imin[0],imin[1],imin[2], imax[0],imax[1],imax[2],
cctk_lsh[0],cctk_lsh[1],cctk_lsh[2],
CCTK_REAL_VEC_SIZE)
@@ -235,96 +233,26 @@ static void ML_ADM_boundary_Body(cGH const * restrict const cctkGH, int const di
CCTK_REAL_VEC beta3L = ToReal(0);
- /* If necessary, store only partial vectors after the first iteration */
-
- if (CCTK_REAL_VEC_SIZE > 2 && CCTK_BUILTIN_EXPECT(i < lc_imin && i+CCTK_REAL_VEC_SIZE > lc_imax, 0))
- {
- ptrdiff_t const elt_count_lo = lc_imin-i;
- ptrdiff_t const elt_count_hi = lc_imax-i;
- vec_store_nta_partial_mid(alpha[index],alphaL,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(beta1[index],beta1L,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(beta2[index],beta2L,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(beta3[index],beta3L,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(g11[index],g11L,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(g12[index],g12L,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(g13[index],g13L,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(g22[index],g22L,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(g23[index],g23L,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(g33[index],g33L,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(K11[index],K11L,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(K12[index],K12L,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(K13[index],K13L,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(K22[index],K22L,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(K23[index],K23L,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(K33[index],K33L,elt_count_lo,elt_count_hi);
- break;
- }
-
- /* If necessary, store only partial vectors after the first iteration */
-
- if (CCTK_REAL_VEC_SIZE > 1 && CCTK_BUILTIN_EXPECT(i < lc_imin, 0))
- {
- ptrdiff_t const elt_count = lc_imin-i;
- vec_store_nta_partial_hi(alpha[index],alphaL,elt_count);
- vec_store_nta_partial_hi(beta1[index],beta1L,elt_count);
- vec_store_nta_partial_hi(beta2[index],beta2L,elt_count);
- vec_store_nta_partial_hi(beta3[index],beta3L,elt_count);
- vec_store_nta_partial_hi(g11[index],g11L,elt_count);
- vec_store_nta_partial_hi(g12[index],g12L,elt_count);
- vec_store_nta_partial_hi(g13[index],g13L,elt_count);
- vec_store_nta_partial_hi(g22[index],g22L,elt_count);
- vec_store_nta_partial_hi(g23[index],g23L,elt_count);
- vec_store_nta_partial_hi(g33[index],g33L,elt_count);
- vec_store_nta_partial_hi(K11[index],K11L,elt_count);
- vec_store_nta_partial_hi(K12[index],K12L,elt_count);
- vec_store_nta_partial_hi(K13[index],K13L,elt_count);
- vec_store_nta_partial_hi(K22[index],K22L,elt_count);
- vec_store_nta_partial_hi(K23[index],K23L,elt_count);
- vec_store_nta_partial_hi(K33[index],K33L,elt_count);
- continue;
- }
-
- /* If necessary, store only partial vectors after the last iteration */
-
- if (CCTK_REAL_VEC_SIZE > 1 && CCTK_BUILTIN_EXPECT(i+CCTK_REAL_VEC_SIZE > lc_imax, 0))
- {
- ptrdiff_t const elt_count = lc_imax-i;
- vec_store_nta_partial_lo(alpha[index],alphaL,elt_count);
- vec_store_nta_partial_lo(beta1[index],beta1L,elt_count);
- vec_store_nta_partial_lo(beta2[index],beta2L,elt_count);
- vec_store_nta_partial_lo(beta3[index],beta3L,elt_count);
- vec_store_nta_partial_lo(g11[index],g11L,elt_count);
- vec_store_nta_partial_lo(g12[index],g12L,elt_count);
- vec_store_nta_partial_lo(g13[index],g13L,elt_count);
- vec_store_nta_partial_lo(g22[index],g22L,elt_count);
- vec_store_nta_partial_lo(g23[index],g23L,elt_count);
- vec_store_nta_partial_lo(g33[index],g33L,elt_count);
- vec_store_nta_partial_lo(K11[index],K11L,elt_count);
- vec_store_nta_partial_lo(K12[index],K12L,elt_count);
- vec_store_nta_partial_lo(K13[index],K13L,elt_count);
- vec_store_nta_partial_lo(K22[index],K22L,elt_count);
- vec_store_nta_partial_lo(K23[index],K23L,elt_count);
- vec_store_nta_partial_lo(K33[index],K33L,elt_count);
- break;
- }
- vec_store_nta(alpha[index],alphaL);
- vec_store_nta(beta1[index],beta1L);
- vec_store_nta(beta2[index],beta2L);
- vec_store_nta(beta3[index],beta3L);
- vec_store_nta(g11[index],g11L);
- vec_store_nta(g12[index],g12L);
- vec_store_nta(g13[index],g13L);
- vec_store_nta(g22[index],g22L);
- vec_store_nta(g23[index],g23L);
- vec_store_nta(g33[index],g33L);
- vec_store_nta(K11[index],K11L);
- vec_store_nta(K12[index],K12L);
- vec_store_nta(K13[index],K13L);
- vec_store_nta(K22[index],K22L);
- vec_store_nta(K23[index],K23L);
- vec_store_nta(K33[index],K33L);
+ /* Copy local copies back to grid functions */
+ vec_store_partial_prepare(i,lc_imin,lc_imax);
+ vec_store_nta_partial(alpha[index],alphaL);
+ vec_store_nta_partial(beta1[index],beta1L);
+ vec_store_nta_partial(beta2[index],beta2L);
+ vec_store_nta_partial(beta3[index],beta3L);
+ vec_store_nta_partial(g11[index],g11L);
+ vec_store_nta_partial(g12[index],g12L);
+ vec_store_nta_partial(g13[index],g13L);
+ vec_store_nta_partial(g22[index],g22L);
+ vec_store_nta_partial(g23[index],g23L);
+ vec_store_nta_partial(g33[index],g33L);
+ vec_store_nta_partial(K11[index],K11L);
+ vec_store_nta_partial(K12[index],K12L);
+ vec_store_nta_partial(K13[index],K13L);
+ vec_store_nta_partial(K22[index],K22L);
+ vec_store_nta_partial(K23[index],K23L);
+ vec_store_nta_partial(K33[index],K33L);
}
- LC_ENDLOOP3VEC (ML_ADM_boundary);
+ LC_ENDLOOP3VEC(ML_ADM_boundary);
}
extern "C" void ML_ADM_boundary(CCTK_ARGUMENTS)
@@ -343,7 +271,11 @@ extern "C" void ML_ADM_boundary(CCTK_ARGUMENTS)
return;
}
- const char *groups[] = {"ML_ADM::ML_curv","ML_ADM::ML_lapse","ML_ADM::ML_metric","ML_ADM::ML_shift"};
+ const char *const groups[] = {
+ "ML_ADM::ML_curv",
+ "ML_ADM::ML_lapse",
+ "ML_ADM::ML_metric",
+ "ML_ADM::ML_shift"};
GenericFD_AssertGroupStorage(cctkGH, "ML_ADM_boundary", 4, groups);
switch(fdOrder)
@@ -361,7 +293,7 @@ extern "C" void ML_ADM_boundary(CCTK_ARGUMENTS)
break;
}
- GenericFD_LoopOverBoundaryWithGhosts(cctkGH, &ML_ADM_boundary_Body);
+ GenericFD_LoopOverBoundaryWithGhosts(cctkGH, ML_ADM_boundary_Body);
if (verbose > 1)
{
diff --git a/ML_ADM/src/ML_ADM_constraints.cc b/ML_ADM/src/ML_ADM_constraints.cc
index 3175e41..ca349a9 100644
--- a/ML_ADM/src/ML_ADM_constraints.cc
+++ b/ML_ADM/src/ML_ADM_constraints.cc
@@ -44,8 +44,6 @@ static void ML_ADM_constraints_Body(cGH const * restrict const cctkGH, int const
DECLARE_CCTK_PARAMETERS;
- /* Declare finite differencing variables */
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -76,30 +74,30 @@ static void ML_ADM_constraints_Body(cGH const * restrict const cctkGH, int const
CCTK_REAL_VEC const p1o12dx = kmul(INV(dx),ToReal(0.0833333333333333333333333333333));
CCTK_REAL_VEC const p1o12dy = kmul(INV(dy),ToReal(0.0833333333333333333333333333333));
CCTK_REAL_VEC const p1o12dz = kmul(INV(dz),ToReal(0.0833333333333333333333333333333));
- CCTK_REAL_VEC const p1o144dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(0.00694444444444444444444444444444)));
- CCTK_REAL_VEC const p1o144dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(0.00694444444444444444444444444444)));
- CCTK_REAL_VEC const p1o144dydz = kmul(INV(dy),kmul(INV(dz),ToReal(0.00694444444444444444444444444444)));
+ CCTK_REAL_VEC const p1o144dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o144dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o144dydz = kmul(INV(kmul(dy,dz)),ToReal(0.00694444444444444444444444444444));
CCTK_REAL_VEC const p1o180dx2 = kmul(INV(SQR(dx)),ToReal(0.00555555555555555555555555555556));
CCTK_REAL_VEC const p1o180dy2 = kmul(INV(SQR(dy)),ToReal(0.00555555555555555555555555555556));
CCTK_REAL_VEC const p1o180dz2 = kmul(INV(SQR(dz)),ToReal(0.00555555555555555555555555555556));
CCTK_REAL_VEC const p1o2dx = kmul(INV(dx),ToReal(0.5));
CCTK_REAL_VEC const p1o2dy = kmul(INV(dy),ToReal(0.5));
CCTK_REAL_VEC const p1o2dz = kmul(INV(dz),ToReal(0.5));
- CCTK_REAL_VEC const p1o3600dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(0.000277777777777777777777777777778)));
- CCTK_REAL_VEC const p1o3600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(0.000277777777777777777777777777778)));
- CCTK_REAL_VEC const p1o3600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(0.000277777777777777777777777777778)));
- CCTK_REAL_VEC const p1o4dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(0.25)));
- CCTK_REAL_VEC const p1o4dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(0.25)));
- CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(dz),ToReal(0.25)));
+ CCTK_REAL_VEC const p1o3600dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o3600dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o3600dydz = kmul(INV(kmul(dy,dz)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o4dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(kmul(dy,dz)),ToReal(0.25));
CCTK_REAL_VEC const p1o5040dx2 = kmul(INV(SQR(dx)),ToReal(0.000198412698412698412698412698413));
CCTK_REAL_VEC const p1o5040dy2 = kmul(INV(SQR(dy)),ToReal(0.000198412698412698412698412698413));
CCTK_REAL_VEC const p1o5040dz2 = kmul(INV(SQR(dz)),ToReal(0.000198412698412698412698412698413));
CCTK_REAL_VEC const p1o60dx = kmul(INV(dx),ToReal(0.0166666666666666666666666666667));
CCTK_REAL_VEC const p1o60dy = kmul(INV(dy),ToReal(0.0166666666666666666666666666667));
CCTK_REAL_VEC const p1o60dz = kmul(INV(dz),ToReal(0.0166666666666666666666666666667));
- CCTK_REAL_VEC const p1o705600dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
- CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
- CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdy = kmul(INV(kmul(dx,dy)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(kmul(dx,dz)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(kmul(dy,dz)),ToReal(1.41723356009070294784580498866e-6));
CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
@@ -165,7 +163,7 @@ static void ML_ADM_constraints_Body(cGH const * restrict const cctkGH, int const
/* Loop over the grid points */
#pragma omp parallel
- LC_LOOP3VEC (ML_ADM_constraints,
+ LC_LOOP3VEC(ML_ADM_constraints,
i,j,k, imin[0],imin[1],imin[2], imax[0],imax[1],imax[2],
cctk_lsh[0],cctk_lsh[1],cctk_lsh[2],
CCTK_REAL_VEC_SIZE)
@@ -1218,48 +1216,14 @@ static void ML_ADM_constraints_Body(cGH const * restrict const cctkGH, int const
CCTK_REAL_VEC M3L =
kmadd(gu11,kmadd(K11L,G113,kmadd(K12L,G213,kadd(JacPDstandardNth1K13,knmsub(K23L,G211,knmsub(K33L,G311,kmsub(K13L,ksub(G313,G111),JacPDstandardNth3K11)))))),kmadd(gu12,kmadd(K11L,G123,kmadd(K12L,G223,kadd(JacPDstandardNth1K23,knmsub(K23L,G212,knmsub(K33L,G312,kmsub(K13L,ksub(G323,G112),JacPDstandardNth3K12)))))),kmadd(gu13,kmadd(K11L,G133,kmadd(K12L,G233,kadd(JacPDstandardNth1K33,knmsub(K23L,G213,knmsub(K33L,G313,kmsub(K13L,ksub(G333,G113),JacPDstandardNth3K13)))))),kmadd(gu21,kmadd(K12L,G113,kmadd(K22L,G213,kadd(JacPDstandardNth2K13,knmsub(K13L,G112,knmsub(K33L,G312,kmsub(K23L,ksub(G313,G212),JacPDstandardNth3K12)))))),kmadd(gu22,kmadd(K12L,G123,kmadd(K22L,G223,kadd(JacPDstandardNth2K23,knmsub(K13L,G122,knmsub(K33L,G322,kmsub(K23L,ksub(G323,G222),JacPDstandardNth3K22)))))),kmul(gu23,kmadd(K12L,G133,kmadd(K22L,G233,kadd(JacPDstandardNth2K33,knmsub(K13L,G123,knmsub(K33L,G323,kmsub(K23L,ksub(G333,G223),JacPDstandardNth3K23))))))))))));
- /* If necessary, store only partial vectors after the first iteration */
-
- if (CCTK_REAL_VEC_SIZE > 2 && CCTK_BUILTIN_EXPECT(i < lc_imin && i+CCTK_REAL_VEC_SIZE > lc_imax, 0))
- {
- ptrdiff_t const elt_count_lo = lc_imin-i;
- ptrdiff_t const elt_count_hi = lc_imax-i;
- vec_store_nta_partial_mid(H[index],HL,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(M1[index],M1L,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(M2[index],M2L,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(M3[index],M3L,elt_count_lo,elt_count_hi);
- break;
- }
-
- /* If necessary, store only partial vectors after the first iteration */
-
- if (CCTK_REAL_VEC_SIZE > 1 && CCTK_BUILTIN_EXPECT(i < lc_imin, 0))
- {
- ptrdiff_t const elt_count = lc_imin-i;
- vec_store_nta_partial_hi(H[index],HL,elt_count);
- vec_store_nta_partial_hi(M1[index],M1L,elt_count);
- vec_store_nta_partial_hi(M2[index],M2L,elt_count);
- vec_store_nta_partial_hi(M3[index],M3L,elt_count);
- continue;
- }
-
- /* If necessary, store only partial vectors after the last iteration */
-
- if (CCTK_REAL_VEC_SIZE > 1 && CCTK_BUILTIN_EXPECT(i+CCTK_REAL_VEC_SIZE > lc_imax, 0))
- {
- ptrdiff_t const elt_count = lc_imax-i;
- vec_store_nta_partial_lo(H[index],HL,elt_count);
- vec_store_nta_partial_lo(M1[index],M1L,elt_count);
- vec_store_nta_partial_lo(M2[index],M2L,elt_count);
- vec_store_nta_partial_lo(M3[index],M3L,elt_count);
- break;
- }
- vec_store_nta(H[index],HL);
- vec_store_nta(M1[index],M1L);
- vec_store_nta(M2[index],M2L);
- vec_store_nta(M3[index],M3L);
+ /* Copy local copies back to grid functions */
+ vec_store_partial_prepare(i,lc_imin,lc_imax);
+ vec_store_nta_partial(H[index],HL);
+ vec_store_nta_partial(M1[index],M1L);
+ vec_store_nta_partial(M2[index],M2L);
+ vec_store_nta_partial(M3[index],M3L);
}
- LC_ENDLOOP3VEC (ML_ADM_constraints);
+ LC_ENDLOOP3VEC(ML_ADM_constraints);
}
extern "C" void ML_ADM_constraints(CCTK_ARGUMENTS)
@@ -1278,7 +1242,11 @@ extern "C" void ML_ADM_constraints(CCTK_ARGUMENTS)
return;
}
- const char *groups[] = {"ML_ADM::ML_curv","ML_ADM::ML_Ham","ML_ADM::ML_metric","ML_ADM::ML_mom"};
+ const char *const groups[] = {
+ "ML_ADM::ML_curv",
+ "ML_ADM::ML_Ham",
+ "ML_ADM::ML_metric",
+ "ML_ADM::ML_mom"};
GenericFD_AssertGroupStorage(cctkGH, "ML_ADM_constraints", 4, groups);
switch(fdOrder)
@@ -1300,7 +1268,7 @@ extern "C" void ML_ADM_constraints(CCTK_ARGUMENTS)
break;
}
- GenericFD_LoopOverInterior(cctkGH, &ML_ADM_constraints_Body);
+ GenericFD_LoopOverInterior(cctkGH, ML_ADM_constraints_Body);
if (verbose > 1)
{
diff --git a/ML_ADM/src/ML_ADM_constraints_boundary.cc b/ML_ADM/src/ML_ADM_constraints_boundary.cc
index 7211b66..0749b4e 100644
--- a/ML_ADM/src/ML_ADM_constraints_boundary.cc
+++ b/ML_ADM/src/ML_ADM_constraints_boundary.cc
@@ -44,8 +44,6 @@ static void ML_ADM_constraints_boundary_Body(cGH const * restrict const cctkGH,
DECLARE_CCTK_PARAMETERS;
- /* Declare finite differencing variables */
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -76,30 +74,30 @@ static void ML_ADM_constraints_boundary_Body(cGH const * restrict const cctkGH,
CCTK_REAL_VEC const p1o12dx = kmul(INV(dx),ToReal(0.0833333333333333333333333333333));
CCTK_REAL_VEC const p1o12dy = kmul(INV(dy),ToReal(0.0833333333333333333333333333333));
CCTK_REAL_VEC const p1o12dz = kmul(INV(dz),ToReal(0.0833333333333333333333333333333));
- CCTK_REAL_VEC const p1o144dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(0.00694444444444444444444444444444)));
- CCTK_REAL_VEC const p1o144dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(0.00694444444444444444444444444444)));
- CCTK_REAL_VEC const p1o144dydz = kmul(INV(dy),kmul(INV(dz),ToReal(0.00694444444444444444444444444444)));
+ CCTK_REAL_VEC const p1o144dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o144dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o144dydz = kmul(INV(kmul(dy,dz)),ToReal(0.00694444444444444444444444444444));
CCTK_REAL_VEC const p1o180dx2 = kmul(INV(SQR(dx)),ToReal(0.00555555555555555555555555555556));
CCTK_REAL_VEC const p1o180dy2 = kmul(INV(SQR(dy)),ToReal(0.00555555555555555555555555555556));
CCTK_REAL_VEC const p1o180dz2 = kmul(INV(SQR(dz)),ToReal(0.00555555555555555555555555555556));
CCTK_REAL_VEC const p1o2dx = kmul(INV(dx),ToReal(0.5));
CCTK_REAL_VEC const p1o2dy = kmul(INV(dy),ToReal(0.5));
CCTK_REAL_VEC const p1o2dz = kmul(INV(dz),ToReal(0.5));
- CCTK_REAL_VEC const p1o3600dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(0.000277777777777777777777777777778)));
- CCTK_REAL_VEC const p1o3600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(0.000277777777777777777777777777778)));
- CCTK_REAL_VEC const p1o3600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(0.000277777777777777777777777777778)));
- CCTK_REAL_VEC const p1o4dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(0.25)));
- CCTK_REAL_VEC const p1o4dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(0.25)));
- CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(dz),ToReal(0.25)));
+ CCTK_REAL_VEC const p1o3600dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o3600dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o3600dydz = kmul(INV(kmul(dy,dz)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o4dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(kmul(dy,dz)),ToReal(0.25));
CCTK_REAL_VEC const p1o5040dx2 = kmul(INV(SQR(dx)),ToReal(0.000198412698412698412698412698413));
CCTK_REAL_VEC const p1o5040dy2 = kmul(INV(SQR(dy)),ToReal(0.000198412698412698412698412698413));
CCTK_REAL_VEC const p1o5040dz2 = kmul(INV(SQR(dz)),ToReal(0.000198412698412698412698412698413));
CCTK_REAL_VEC const p1o60dx = kmul(INV(dx),ToReal(0.0166666666666666666666666666667));
CCTK_REAL_VEC const p1o60dy = kmul(INV(dy),ToReal(0.0166666666666666666666666666667));
CCTK_REAL_VEC const p1o60dz = kmul(INV(dz),ToReal(0.0166666666666666666666666666667));
- CCTK_REAL_VEC const p1o705600dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
- CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
- CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdy = kmul(INV(kmul(dx,dy)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(kmul(dx,dz)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(kmul(dy,dz)),ToReal(1.41723356009070294784580498866e-6));
CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
@@ -165,7 +163,7 @@ static void ML_ADM_constraints_boundary_Body(cGH const * restrict const cctkGH,
/* Loop over the grid points */
#pragma omp parallel
- LC_LOOP3VEC (ML_ADM_constraints_boundary,
+ LC_LOOP3VEC(ML_ADM_constraints_boundary,
i,j,k, imin[0],imin[1],imin[2], imax[0],imax[1],imax[2],
cctk_lsh[0],cctk_lsh[1],cctk_lsh[2],
CCTK_REAL_VEC_SIZE)
@@ -205,48 +203,14 @@ static void ML_ADM_constraints_boundary_Body(cGH const * restrict const cctkGH,
CCTK_REAL_VEC M3L = ToReal(0);
- /* If necessary, store only partial vectors after the first iteration */
-
- if (CCTK_REAL_VEC_SIZE > 2 && CCTK_BUILTIN_EXPECT(i < lc_imin && i+CCTK_REAL_VEC_SIZE > lc_imax, 0))
- {
- ptrdiff_t const elt_count_lo = lc_imin-i;
- ptrdiff_t const elt_count_hi = lc_imax-i;
- vec_store_nta_partial_mid(H[index],HL,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(M1[index],M1L,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(M2[index],M2L,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(M3[index],M3L,elt_count_lo,elt_count_hi);
- break;
- }
-
- /* If necessary, store only partial vectors after the first iteration */
-
- if (CCTK_REAL_VEC_SIZE > 1 && CCTK_BUILTIN_EXPECT(i < lc_imin, 0))
- {
- ptrdiff_t const elt_count = lc_imin-i;
- vec_store_nta_partial_hi(H[index],HL,elt_count);
- vec_store_nta_partial_hi(M1[index],M1L,elt_count);
- vec_store_nta_partial_hi(M2[index],M2L,elt_count);
- vec_store_nta_partial_hi(M3[index],M3L,elt_count);
- continue;
- }
-
- /* If necessary, store only partial vectors after the last iteration */
-
- if (CCTK_REAL_VEC_SIZE > 1 && CCTK_BUILTIN_EXPECT(i+CCTK_REAL_VEC_SIZE > lc_imax, 0))
- {
- ptrdiff_t const elt_count = lc_imax-i;
- vec_store_nta_partial_lo(H[index],HL,elt_count);
- vec_store_nta_partial_lo(M1[index],M1L,elt_count);
- vec_store_nta_partial_lo(M2[index],M2L,elt_count);
- vec_store_nta_partial_lo(M3[index],M3L,elt_count);
- break;
- }
- vec_store_nta(H[index],HL);
- vec_store_nta(M1[index],M1L);
- vec_store_nta(M2[index],M2L);
- vec_store_nta(M3[index],M3L);
+ /* Copy local copies back to grid functions */
+ vec_store_partial_prepare(i,lc_imin,lc_imax);
+ vec_store_nta_partial(H[index],HL);
+ vec_store_nta_partial(M1[index],M1L);
+ vec_store_nta_partial(M2[index],M2L);
+ vec_store_nta_partial(M3[index],M3L);
}
- LC_ENDLOOP3VEC (ML_ADM_constraints_boundary);
+ LC_ENDLOOP3VEC(ML_ADM_constraints_boundary);
}
extern "C" void ML_ADM_constraints_boundary(CCTK_ARGUMENTS)
@@ -265,7 +229,9 @@ extern "C" void ML_ADM_constraints_boundary(CCTK_ARGUMENTS)
return;
}
- const char *groups[] = {"ML_ADM::ML_Ham","ML_ADM::ML_mom"};
+ const char *const groups[] = {
+ "ML_ADM::ML_Ham",
+ "ML_ADM::ML_mom"};
GenericFD_AssertGroupStorage(cctkGH, "ML_ADM_constraints_boundary", 2, groups);
switch(fdOrder)
@@ -283,7 +249,7 @@ extern "C" void ML_ADM_constraints_boundary(CCTK_ARGUMENTS)
break;
}
- GenericFD_LoopOverBoundaryWithGhosts(cctkGH, &ML_ADM_constraints_boundary_Body);
+ GenericFD_LoopOverBoundaryWithGhosts(cctkGH, ML_ADM_constraints_boundary_Body);
if (verbose > 1)
{
diff --git a/ML_ADM/src/ML_ADM_convertFromADMBase.cc b/ML_ADM/src/ML_ADM_convertFromADMBase.cc
index ccf06b3..7ba54c9 100644
--- a/ML_ADM/src/ML_ADM_convertFromADMBase.cc
+++ b/ML_ADM/src/ML_ADM_convertFromADMBase.cc
@@ -29,8 +29,6 @@ static void ML_ADM_convertFromADMBase_Body(cGH const * restrict const cctkGH, in
DECLARE_CCTK_PARAMETERS;
- /* Declare finite differencing variables */
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -61,30 +59,30 @@ static void ML_ADM_convertFromADMBase_Body(cGH const * restrict const cctkGH, in
CCTK_REAL_VEC const p1o12dx = kmul(INV(dx),ToReal(0.0833333333333333333333333333333));
CCTK_REAL_VEC const p1o12dy = kmul(INV(dy),ToReal(0.0833333333333333333333333333333));
CCTK_REAL_VEC const p1o12dz = kmul(INV(dz),ToReal(0.0833333333333333333333333333333));
- CCTK_REAL_VEC const p1o144dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(0.00694444444444444444444444444444)));
- CCTK_REAL_VEC const p1o144dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(0.00694444444444444444444444444444)));
- CCTK_REAL_VEC const p1o144dydz = kmul(INV(dy),kmul(INV(dz),ToReal(0.00694444444444444444444444444444)));
+ CCTK_REAL_VEC const p1o144dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o144dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o144dydz = kmul(INV(kmul(dy,dz)),ToReal(0.00694444444444444444444444444444));
CCTK_REAL_VEC const p1o180dx2 = kmul(INV(SQR(dx)),ToReal(0.00555555555555555555555555555556));
CCTK_REAL_VEC const p1o180dy2 = kmul(INV(SQR(dy)),ToReal(0.00555555555555555555555555555556));
CCTK_REAL_VEC const p1o180dz2 = kmul(INV(SQR(dz)),ToReal(0.00555555555555555555555555555556));
CCTK_REAL_VEC const p1o2dx = kmul(INV(dx),ToReal(0.5));
CCTK_REAL_VEC const p1o2dy = kmul(INV(dy),ToReal(0.5));
CCTK_REAL_VEC const p1o2dz = kmul(INV(dz),ToReal(0.5));
- CCTK_REAL_VEC const p1o3600dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(0.000277777777777777777777777777778)));
- CCTK_REAL_VEC const p1o3600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(0.000277777777777777777777777777778)));
- CCTK_REAL_VEC const p1o3600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(0.000277777777777777777777777777778)));
- CCTK_REAL_VEC const p1o4dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(0.25)));
- CCTK_REAL_VEC const p1o4dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(0.25)));
- CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(dz),ToReal(0.25)));
+ CCTK_REAL_VEC const p1o3600dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o3600dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o3600dydz = kmul(INV(kmul(dy,dz)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o4dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(kmul(dy,dz)),ToReal(0.25));
CCTK_REAL_VEC const p1o5040dx2 = kmul(INV(SQR(dx)),ToReal(0.000198412698412698412698412698413));
CCTK_REAL_VEC const p1o5040dy2 = kmul(INV(SQR(dy)),ToReal(0.000198412698412698412698412698413));
CCTK_REAL_VEC const p1o5040dz2 = kmul(INV(SQR(dz)),ToReal(0.000198412698412698412698412698413));
CCTK_REAL_VEC const p1o60dx = kmul(INV(dx),ToReal(0.0166666666666666666666666666667));
CCTK_REAL_VEC const p1o60dy = kmul(INV(dy),ToReal(0.0166666666666666666666666666667));
CCTK_REAL_VEC const p1o60dz = kmul(INV(dz),ToReal(0.0166666666666666666666666666667));
- CCTK_REAL_VEC const p1o705600dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
- CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
- CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdy = kmul(INV(kmul(dx,dy)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(kmul(dx,dz)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(kmul(dy,dz)),ToReal(1.41723356009070294784580498866e-6));
CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
@@ -150,7 +148,7 @@ static void ML_ADM_convertFromADMBase_Body(cGH const * restrict const cctkGH, in
/* Loop over the grid points */
#pragma omp parallel
- LC_LOOP3VEC (ML_ADM_convertFromADMBase,
+ LC_LOOP3VEC(ML_ADM_convertFromADMBase,
i,j,k, imin[0],imin[1],imin[2], imax[0],imax[1],imax[2],
cctk_lsh[0],cctk_lsh[1],cctk_lsh[2],
CCTK_REAL_VEC_SIZE)
@@ -230,96 +228,26 @@ static void ML_ADM_convertFromADMBase_Body(cGH const * restrict const cctkGH, in
CCTK_REAL_VEC beta3L = betazL;
- /* If necessary, store only partial vectors after the first iteration */
-
- if (CCTK_REAL_VEC_SIZE > 2 && CCTK_BUILTIN_EXPECT(i < lc_imin && i+CCTK_REAL_VEC_SIZE > lc_imax, 0))
- {
- ptrdiff_t const elt_count_lo = lc_imin-i;
- ptrdiff_t const elt_count_hi = lc_imax-i;
- vec_store_nta_partial_mid(alpha[index],alphaL,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(beta1[index],beta1L,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(beta2[index],beta2L,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(beta3[index],beta3L,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(g11[index],g11L,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(g12[index],g12L,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(g13[index],g13L,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(g22[index],g22L,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(g23[index],g23L,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(g33[index],g33L,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(K11[index],K11L,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(K12[index],K12L,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(K13[index],K13L,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(K22[index],K22L,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(K23[index],K23L,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(K33[index],K33L,elt_count_lo,elt_count_hi);
- break;
- }
-
- /* If necessary, store only partial vectors after the first iteration */
-
- if (CCTK_REAL_VEC_SIZE > 1 && CCTK_BUILTIN_EXPECT(i < lc_imin, 0))
- {
- ptrdiff_t const elt_count = lc_imin-i;
- vec_store_nta_partial_hi(alpha[index],alphaL,elt_count);
- vec_store_nta_partial_hi(beta1[index],beta1L,elt_count);
- vec_store_nta_partial_hi(beta2[index],beta2L,elt_count);
- vec_store_nta_partial_hi(beta3[index],beta3L,elt_count);
- vec_store_nta_partial_hi(g11[index],g11L,elt_count);
- vec_store_nta_partial_hi(g12[index],g12L,elt_count);
- vec_store_nta_partial_hi(g13[index],g13L,elt_count);
- vec_store_nta_partial_hi(g22[index],g22L,elt_count);
- vec_store_nta_partial_hi(g23[index],g23L,elt_count);
- vec_store_nta_partial_hi(g33[index],g33L,elt_count);
- vec_store_nta_partial_hi(K11[index],K11L,elt_count);
- vec_store_nta_partial_hi(K12[index],K12L,elt_count);
- vec_store_nta_partial_hi(K13[index],K13L,elt_count);
- vec_store_nta_partial_hi(K22[index],K22L,elt_count);
- vec_store_nta_partial_hi(K23[index],K23L,elt_count);
- vec_store_nta_partial_hi(K33[index],K33L,elt_count);
- continue;
- }
-
- /* If necessary, store only partial vectors after the last iteration */
-
- if (CCTK_REAL_VEC_SIZE > 1 && CCTK_BUILTIN_EXPECT(i+CCTK_REAL_VEC_SIZE > lc_imax, 0))
- {
- ptrdiff_t const elt_count = lc_imax-i;
- vec_store_nta_partial_lo(alpha[index],alphaL,elt_count);
- vec_store_nta_partial_lo(beta1[index],beta1L,elt_count);
- vec_store_nta_partial_lo(beta2[index],beta2L,elt_count);
- vec_store_nta_partial_lo(beta3[index],beta3L,elt_count);
- vec_store_nta_partial_lo(g11[index],g11L,elt_count);
- vec_store_nta_partial_lo(g12[index],g12L,elt_count);
- vec_store_nta_partial_lo(g13[index],g13L,elt_count);
- vec_store_nta_partial_lo(g22[index],g22L,elt_count);
- vec_store_nta_partial_lo(g23[index],g23L,elt_count);
- vec_store_nta_partial_lo(g33[index],g33L,elt_count);
- vec_store_nta_partial_lo(K11[index],K11L,elt_count);
- vec_store_nta_partial_lo(K12[index],K12L,elt_count);
- vec_store_nta_partial_lo(K13[index],K13L,elt_count);
- vec_store_nta_partial_lo(K22[index],K22L,elt_count);
- vec_store_nta_partial_lo(K23[index],K23L,elt_count);
- vec_store_nta_partial_lo(K33[index],K33L,elt_count);
- break;
- }
- vec_store_nta(alpha[index],alphaL);
- vec_store_nta(beta1[index],beta1L);
- vec_store_nta(beta2[index],beta2L);
- vec_store_nta(beta3[index],beta3L);
- vec_store_nta(g11[index],g11L);
- vec_store_nta(g12[index],g12L);
- vec_store_nta(g13[index],g13L);
- vec_store_nta(g22[index],g22L);
- vec_store_nta(g23[index],g23L);
- vec_store_nta(g33[index],g33L);
- vec_store_nta(K11[index],K11L);
- vec_store_nta(K12[index],K12L);
- vec_store_nta(K13[index],K13L);
- vec_store_nta(K22[index],K22L);
- vec_store_nta(K23[index],K23L);
- vec_store_nta(K33[index],K33L);
+ /* Copy local copies back to grid functions */
+ vec_store_partial_prepare(i,lc_imin,lc_imax);
+ vec_store_nta_partial(alpha[index],alphaL);
+ vec_store_nta_partial(beta1[index],beta1L);
+ vec_store_nta_partial(beta2[index],beta2L);
+ vec_store_nta_partial(beta3[index],beta3L);
+ vec_store_nta_partial(g11[index],g11L);
+ vec_store_nta_partial(g12[index],g12L);
+ vec_store_nta_partial(g13[index],g13L);
+ vec_store_nta_partial(g22[index],g22L);
+ vec_store_nta_partial(g23[index],g23L);
+ vec_store_nta_partial(g33[index],g33L);
+ vec_store_nta_partial(K11[index],K11L);
+ vec_store_nta_partial(K12[index],K12L);
+ vec_store_nta_partial(K13[index],K13L);
+ vec_store_nta_partial(K22[index],K22L);
+ vec_store_nta_partial(K23[index],K23L);
+ vec_store_nta_partial(K33[index],K33L);
}
- LC_ENDLOOP3VEC (ML_ADM_convertFromADMBase);
+ LC_ENDLOOP3VEC(ML_ADM_convertFromADMBase);
}
extern "C" void ML_ADM_convertFromADMBase(CCTK_ARGUMENTS)
@@ -338,7 +266,15 @@ extern "C" void ML_ADM_convertFromADMBase(CCTK_ARGUMENTS)
return;
}
- const char *groups[] = {"ADMBase::curv","ADMBase::lapse","ADMBase::metric","ADMBase::shift","ML_ADM::ML_curv","ML_ADM::ML_lapse","ML_ADM::ML_metric","ML_ADM::ML_shift"};
+ const char *const groups[] = {
+ "ADMBase::curv",
+ "ADMBase::lapse",
+ "ADMBase::metric",
+ "ADMBase::shift",
+ "ML_ADM::ML_curv",
+ "ML_ADM::ML_lapse",
+ "ML_ADM::ML_metric",
+ "ML_ADM::ML_shift"};
GenericFD_AssertGroupStorage(cctkGH, "ML_ADM_convertFromADMBase", 8, groups);
switch(fdOrder)
@@ -356,7 +292,7 @@ extern "C" void ML_ADM_convertFromADMBase(CCTK_ARGUMENTS)
break;
}
- GenericFD_LoopOverEverything(cctkGH, &ML_ADM_convertFromADMBase_Body);
+ GenericFD_LoopOverEverything(cctkGH, ML_ADM_convertFromADMBase_Body);
if (verbose > 1)
{
diff --git a/ML_ADM/src/ML_ADM_convertToADMBase.cc b/ML_ADM/src/ML_ADM_convertToADMBase.cc
index 83608cf..1a75640 100644
--- a/ML_ADM/src/ML_ADM_convertToADMBase.cc
+++ b/ML_ADM/src/ML_ADM_convertToADMBase.cc
@@ -29,8 +29,6 @@ static void ML_ADM_convertToADMBase_Body(cGH const * restrict const cctkGH, int
DECLARE_CCTK_PARAMETERS;
- /* Declare finite differencing variables */
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -61,30 +59,30 @@ static void ML_ADM_convertToADMBase_Body(cGH const * restrict const cctkGH, int
CCTK_REAL_VEC const p1o12dx = kmul(INV(dx),ToReal(0.0833333333333333333333333333333));
CCTK_REAL_VEC const p1o12dy = kmul(INV(dy),ToReal(0.0833333333333333333333333333333));
CCTK_REAL_VEC const p1o12dz = kmul(INV(dz),ToReal(0.0833333333333333333333333333333));
- CCTK_REAL_VEC const p1o144dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(0.00694444444444444444444444444444)));
- CCTK_REAL_VEC const p1o144dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(0.00694444444444444444444444444444)));
- CCTK_REAL_VEC const p1o144dydz = kmul(INV(dy),kmul(INV(dz),ToReal(0.00694444444444444444444444444444)));
+ CCTK_REAL_VEC const p1o144dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o144dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o144dydz = kmul(INV(kmul(dy,dz)),ToReal(0.00694444444444444444444444444444));
CCTK_REAL_VEC const p1o180dx2 = kmul(INV(SQR(dx)),ToReal(0.00555555555555555555555555555556));
CCTK_REAL_VEC const p1o180dy2 = kmul(INV(SQR(dy)),ToReal(0.00555555555555555555555555555556));
CCTK_REAL_VEC const p1o180dz2 = kmul(INV(SQR(dz)),ToReal(0.00555555555555555555555555555556));
CCTK_REAL_VEC const p1o2dx = kmul(INV(dx),ToReal(0.5));
CCTK_REAL_VEC const p1o2dy = kmul(INV(dy),ToReal(0.5));
CCTK_REAL_VEC const p1o2dz = kmul(INV(dz),ToReal(0.5));
- CCTK_REAL_VEC const p1o3600dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(0.000277777777777777777777777777778)));
- CCTK_REAL_VEC const p1o3600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(0.000277777777777777777777777777778)));
- CCTK_REAL_VEC const p1o3600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(0.000277777777777777777777777777778)));
- CCTK_REAL_VEC const p1o4dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(0.25)));
- CCTK_REAL_VEC const p1o4dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(0.25)));
- CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(dz),ToReal(0.25)));
+ CCTK_REAL_VEC const p1o3600dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o3600dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o3600dydz = kmul(INV(kmul(dy,dz)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o4dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(kmul(dy,dz)),ToReal(0.25));
CCTK_REAL_VEC const p1o5040dx2 = kmul(INV(SQR(dx)),ToReal(0.000198412698412698412698412698413));
CCTK_REAL_VEC const p1o5040dy2 = kmul(INV(SQR(dy)),ToReal(0.000198412698412698412698412698413));
CCTK_REAL_VEC const p1o5040dz2 = kmul(INV(SQR(dz)),ToReal(0.000198412698412698412698412698413));
CCTK_REAL_VEC const p1o60dx = kmul(INV(dx),ToReal(0.0166666666666666666666666666667));
CCTK_REAL_VEC const p1o60dy = kmul(INV(dy),ToReal(0.0166666666666666666666666666667));
CCTK_REAL_VEC const p1o60dz = kmul(INV(dz),ToReal(0.0166666666666666666666666666667));
- CCTK_REAL_VEC const p1o705600dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
- CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
- CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdy = kmul(INV(kmul(dx,dy)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(kmul(dx,dz)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(kmul(dy,dz)),ToReal(1.41723356009070294784580498866e-6));
CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
@@ -150,7 +148,7 @@ static void ML_ADM_convertToADMBase_Body(cGH const * restrict const cctkGH, int
/* Loop over the grid points */
#pragma omp parallel
- LC_LOOP3VEC (ML_ADM_convertToADMBase,
+ LC_LOOP3VEC(ML_ADM_convertToADMBase,
i,j,k, imin[0],imin[1],imin[2], imax[0],imax[1],imax[2],
cctk_lsh[0],cctk_lsh[1],cctk_lsh[2],
CCTK_REAL_VEC_SIZE)
@@ -238,112 +236,30 @@ static void ML_ADM_convertToADMBase_Body(cGH const * restrict const cctkGH, int
CCTK_REAL_VEC dtbetazL = ToReal(0);
- /* If necessary, store only partial vectors after the first iteration */
-
- if (CCTK_REAL_VEC_SIZE > 2 && CCTK_BUILTIN_EXPECT(i < lc_imin && i+CCTK_REAL_VEC_SIZE > lc_imax, 0))
- {
- ptrdiff_t const elt_count_lo = lc_imin-i;
- ptrdiff_t const elt_count_hi = lc_imax-i;
- vec_store_nta_partial_mid(alp[index],alpL,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(betax[index],betaxL,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(betay[index],betayL,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(betaz[index],betazL,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(dtalp[index],dtalpL,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(dtbetax[index],dtbetaxL,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(dtbetay[index],dtbetayL,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(dtbetaz[index],dtbetazL,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(gxx[index],gxxL,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(gxy[index],gxyL,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(gxz[index],gxzL,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(gyy[index],gyyL,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(gyz[index],gyzL,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(gzz[index],gzzL,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(kxx[index],kxxL,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(kxy[index],kxyL,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(kxz[index],kxzL,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(kyy[index],kyyL,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(kyz[index],kyzL,elt_count_lo,elt_count_hi);
- vec_store_nta_partial_mid(kzz[index],kzzL,elt_count_lo,elt_count_hi);
- break;
- }
-
- /* If necessary, store only partial vectors after the first iteration */
-
- if (CCTK_REAL_VEC_SIZE > 1 && CCTK_BUILTIN_EXPECT(i < lc_imin, 0))
- {
- ptrdiff_t const elt_count = lc_imin-i;
- vec_store_nta_partial_hi(alp[index],alpL,elt_count);
- vec_store_nta_partial_hi(betax[index],betaxL,elt_count);
- vec_store_nta_partial_hi(betay[index],betayL,elt_count);
- vec_store_nta_partial_hi(betaz[index],betazL,elt_count);
- vec_store_nta_partial_hi(dtalp[index],dtalpL,elt_count);
- vec_store_nta_partial_hi(dtbetax[index],dtbetaxL,elt_count);
- vec_store_nta_partial_hi(dtbetay[index],dtbetayL,elt_count);
- vec_store_nta_partial_hi(dtbetaz[index],dtbetazL,elt_count);
- vec_store_nta_partial_hi(gxx[index],gxxL,elt_count);
- vec_store_nta_partial_hi(gxy[index],gxyL,elt_count);
- vec_store_nta_partial_hi(gxz[index],gxzL,elt_count);
- vec_store_nta_partial_hi(gyy[index],gyyL,elt_count);
- vec_store_nta_partial_hi(gyz[index],gyzL,elt_count);
- vec_store_nta_partial_hi(gzz[index],gzzL,elt_count);
- vec_store_nta_partial_hi(kxx[index],kxxL,elt_count);
- vec_store_nta_partial_hi(kxy[index],kxyL,elt_count);
- vec_store_nta_partial_hi(kxz[index],kxzL,elt_count);
- vec_store_nta_partial_hi(kyy[index],kyyL,elt_count);
- vec_store_nta_partial_hi(kyz[index],kyzL,elt_count);
- vec_store_nta_partial_hi(kzz[index],kzzL,elt_count);
- continue;
- }
-
- /* If necessary, store only partial vectors after the last iteration */
-
- if (CCTK_REAL_VEC_SIZE > 1 && CCTK_BUILTIN_EXPECT(i+CCTK_REAL_VEC_SIZE > lc_imax, 0))
- {
- ptrdiff_t const elt_count = lc_imax-i;
- vec_store_nta_partial_lo(alp[index],alpL,elt_count);
- vec_store_nta_partial_lo(betax[index],betaxL,elt_count);
- vec_store_nta_partial_lo(betay[index],betayL,elt_count);
- vec_store_nta_partial_lo(betaz[index],betazL,elt_count);
- vec_store_nta_partial_lo(dtalp[index],dtalpL,elt_count);
- vec_store_nta_partial_lo(dtbetax[index],dtbetaxL,elt_count);
- vec_store_nta_partial_lo(dtbetay[index],dtbetayL,elt_count);
- vec_store_nta_partial_lo(dtbetaz[index],dtbetazL,elt_count);
- vec_store_nta_partial_lo(gxx[index],gxxL,elt_count);
- vec_store_nta_partial_lo(gxy[index],gxyL,elt_count);
- vec_store_nta_partial_lo(gxz[index],gxzL,elt_count);
- vec_store_nta_partial_lo(gyy[index],gyyL,elt_count);
- vec_store_nta_partial_lo(gyz[index],gyzL,elt_count);
- vec_store_nta_partial_lo(gzz[index],gzzL,elt_count);
- vec_store_nta_partial_lo(kxx[index],kxxL,elt_count);
- vec_store_nta_partial_lo(kxy[index],kxyL,elt_count);
- vec_store_nta_partial_lo(kxz[index],kxzL,elt_count);
- vec_store_nta_partial_lo(kyy[index],kyyL,elt_count);
- vec_store_nta_partial_lo(kyz[index],kyzL,elt_count);
- vec_store_nta_partial_lo(kzz[index],kzzL,elt_count);
- break;
- }
- vec_store_nta(alp[index],alpL);
- vec_store_nta(betax[index],betaxL);
- vec_store_nta(betay[index],betayL);
- vec_store_nta(betaz[index],betazL);
- vec_store_nta(dtalp[index],dtalpL);
- vec_store_nta(dtbetax[index],dtbetaxL);
- vec_store_nta(dtbetay[index],dtbetayL);
- vec_store_nta(dtbetaz[index],dtbetazL);
- vec_store_nta(gxx[index],gxxL);
- vec_store_nta(gxy[index],gxyL);
- vec_store_nta(gxz[index],gxzL);
- vec_store_nta(gyy[index],gyyL);
- vec_store_nta(gyz[index],gyzL);
- vec_store_nta(gzz[index],gzzL);
- vec_store_nta(kxx[index],kxxL);
- vec_store_nta(kxy[index],kxyL);
- vec_store_nta(kxz[index],kxzL);
- vec_store_nta(kyy[index],kyyL);
- vec_store_nta(kyz[index],kyzL);
- vec_store_nta(kzz[index],kzzL);
+ /* Copy local copies back to grid functions */
+ vec_store_partial_prepare(i,lc_imin,lc_imax);
+ vec_store_nta_partial(alp[index],alpL);
+ vec_store_nta_partial(betax[index],betaxL);
+ vec_store_nta_partial(betay[index],betayL);
+ vec_store_nta_partial(betaz[index],betazL);
+ vec_store_nta_partial(dtalp[index],dtalpL);
+ vec_store_nta_partial(dtbetax[index],dtbetaxL);
+ vec_store_nta_partial(dtbetay[index],dtbetayL);
+ vec_store_nta_partial(dtbetaz[index],dtbetazL);
+ vec_store_nta_partial(gxx[index],gxxL);
+ vec_store_nta_partial(gxy[index],gxyL);
+ vec_store_nta_partial(gxz[index],gxzL);
+ vec_store_nta_partial(gyy[index],gyyL);
+ vec_store_nta_partial(gyz[index],gyzL);
+ vec_store_nta_partial(gzz[index],gzzL);
+ vec_store_nta_partial(kxx[index],kxxL);
+ vec_store_nta_partial(kxy[index],kxyL);
+ vec_store_nta_partial(kxz[index],kxzL);
+ vec_store_nta_partial(kyy[index],kyyL);
+ vec_store_nta_partial(kyz[index],kyzL);
+ vec_store_nta_partial(kzz[index],kzzL);
}
- LC_ENDLOOP3VEC (ML_ADM_convertToADMBase);
+ LC_ENDLOOP3VEC(ML_ADM_convertToADMBase);
}
extern "C" void ML_ADM_convertToADMBase(CCTK_ARGUMENTS)
@@ -362,7 +278,17 @@ extern "C" void ML_ADM_convertToADMBase(CCTK_ARGUMENTS)
return;
}
- const char *groups[] = {"ADMBase::curv","ADMBase::dtlapse","ADMBase::dtshift","ADMBase::lapse","ADMBase::metric","ADMBase::shift","ML_ADM::ML_curv","ML_ADM::ML_lapse","ML_ADM::ML_metric","ML_ADM::ML_shift"};
+ const char *const groups[] = {
+ "ADMBase::curv",
+ "ADMBase::dtlapse",
+ "ADMBase::dtshift",
+ "ADMBase::lapse",
+ "ADMBase::metric",
+ "ADMBase::shift",
+ "ML_ADM::ML_curv",
+ "ML_ADM::ML_lapse",
+ "ML_ADM::ML_metric",
+ "ML_ADM::ML_shift"};
GenericFD_AssertGroupStorage(cctkGH, "ML_ADM_convertToADMBase", 10, groups);
switch(fdOrder)
@@ -380,7 +306,7 @@ extern "C" void ML_ADM_convertToADMBase(CCTK_ARGUMENTS)
break;
}
- GenericFD_LoopOverEverything(cctkGH, &ML_ADM_convertToADMBase_Body);
+ GenericFD_LoopOverEverything(cctkGH, ML_ADM_convertToADMBase_Body);
if (verbose > 1)
{
diff --git a/ML_ADM/src/make.code.defn b/ML_ADM/src/make.code.defn
index 06aad41..3a79c47 100644
--- a/ML_ADM/src/make.code.defn
+++ b/ML_ADM/src/make.code.defn
@@ -1,3 +1,3 @@
# File produced by Kranc
-SRCS = Startup.cc RegisterMoL.cc RegisterSymmetries.cc ML_ADM_Minkowski.cc ML_ADM_convertFromADMBase.cc ML_ADM_RHS.cc ML_ADM_boundary.cc ML_ADM_convertToADMBase.cc ML_ADM_constraints.cc ML_ADM_constraints_boundary.cc Boundaries.cc
+SRCS = Startup.cc RegisterSymmetries.cc RegisterMoL.cc ML_ADM_Minkowski.cc ML_ADM_convertFromADMBase.cc ML_ADM_RHS.cc ML_ADM_boundary.cc ML_ADM_convertToADMBase.cc ML_ADM_constraints.cc ML_ADM_constraints_boundary.cc Boundaries.cc
diff --git a/ML_BSSN/src/ML_BSSN_Minkowski.cc b/ML_BSSN/src/ML_BSSN_Minkowski.cc
index f1033d0..1d7a336 100644
--- a/ML_BSSN/src/ML_BSSN_Minkowski.cc
+++ b/ML_BSSN/src/ML_BSSN_Minkowski.cc
@@ -222,7 +222,7 @@ static void ML_BSSN_Minkowski_Body(cGH const * restrict const cctkGH, int const
}
/* Calculate temporaries and grid functions */
- CCTK_REAL_VEC phiL = IfThen(conformalMethod,ToReal(1),ToReal(0));
+ CCTK_REAL_VEC phiL = IfThen(conformalMethod == 1,ToReal(1),ToReal(0));
CCTK_REAL_VEC gt11L = ToReal(1);
diff --git a/ML_BSSN/src/ML_BSSN_RHS1.cc b/ML_BSSN/src/ML_BSSN_RHS1.cc
index 3775bb7..44023b8 100644
--- a/ML_BSSN/src/ML_BSSN_RHS1.cc
+++ b/ML_BSSN/src/ML_BSSN_RHS1.cc
@@ -1213,8 +1213,13 @@ static void ML_BSSN_RHS1_Body(cGH const * restrict const cctkGH, int const dir,
CCTK_REAL_VEC Xtn3 =
kmadd(Gt311,gtu11,kmadd(Gt322,gtu22,kmadd(Gt333,gtu33,kmul(kmadd(Gt312,gtu12,kmadd(Gt313,gtu13,kmul(Gt323,gtu23))),ToReal(2)))));
- CCTK_REAL_VEC fac1 =
- IfThen(conformalMethod,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
+ CCTK_REAL_VEC e4phi = IfThen(conformalMethod ==
+ 1,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
+
+ CCTK_REAL_VEC em4phi = INV(e4phi);
+
+ CCTK_REAL_VEC fac1 = IfThen(conformalMethod ==
+ 1,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
CCTK_REAL_VEC cdphi1 = kmul(fac1,JacPDstandardNth1phi);
@@ -1267,11 +1272,6 @@ static void ML_BSSN_RHS1_Body(cGH const * restrict const cctkGH, int const dir,
CCTK_REAL_VEC Atu33 =
kmadd(Atm31,gtu13,kmadd(Atm32,gtu23,kmul(Atm33,gtu33)));
- CCTK_REAL_VEC e4phi =
- IfThen(conformalMethod,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
-
- CCTK_REAL_VEC em4phi = INV(e4phi);
-
CCTK_REAL_VEC rho =
kmul(INV(SQR(alphaL)),kadd(eTttL,kmadd(eTxxL,SQR(beta1L),kmadd(eTyyL,SQR(beta2L),kmadd(eTzzL,SQR(beta3L),kmadd(kmadd(beta2L,eTtyL,kmul(beta3L,eTtzL)),ToReal(-2),kmul(kmadd(beta2L,kmul(beta3L,eTyzL),kmul(beta1L,kmadd(beta2L,eTxyL,kmsub(beta3L,eTxzL,eTtxL)))),ToReal(2))))))));
@@ -1287,8 +1287,8 @@ static void ML_BSSN_RHS1_Body(cGH const * restrict const cctkGH, int const dir,
CCTK_REAL_VEC trS =
kmul(em4phi,kmadd(eTxxL,gtu11,kmadd(eTyyL,gtu22,kmadd(eTzzL,gtu33,kmul(kmadd(eTxyL,gtu12,kmadd(eTxzL,gtu13,kmul(eTyzL,gtu23))),ToReal(2))))));
- CCTK_REAL_VEC phirhsL =
- IfThen(conformalMethod,kmul(phiL,kmadd(kadd(JacPDstandardNth1beta1,kadd(JacPDstandardNth2beta2,JacPDstandardNth3beta3)),ToReal(-0.333333333333333333333333333333),kmul(alphaL,kmul(trKL,ToReal(0.333333333333333333333333333333))))),kmadd(alphaL,kmul(trKL,ToReal(-0.166666666666666666666666666667)),kmul(kadd(JacPDstandardNth1beta1,kadd(JacPDstandardNth2beta2,JacPDstandardNth3beta3)),ToReal(0.166666666666666666666666666667))));
+ CCTK_REAL_VEC phirhsL = kneg(kmul(IfThen(conformalMethod ==
+ 1,kmul(phiL,ToReal(0.333333333333333333333333333333)),ToReal(-0.166666666666666666666666666667)),kadd(JacPDstandardNth1beta1,kadd(JacPDstandardNth2beta2,knmsub(alphaL,trKL,JacPDstandardNth3beta3)))));
CCTK_REAL_VEC gt11rhsL =
kmul(ToReal(-0.666666666666666666666666666667),kmadd(kmadd(gt12L,JacPDstandardNth1beta2,kmul(gt13L,JacPDstandardNth1beta3)),ToReal(-3),kmadd(gt11L,kadd(JacPDstandardNth2beta2,kmadd(JacPDstandardNth1beta1,ToReal(-2),JacPDstandardNth3beta3)),kmul(alphaL,kmul(At11L,ToReal(3))))));
diff --git a/ML_BSSN/src/ML_BSSN_RHS2.cc b/ML_BSSN/src/ML_BSSN_RHS2.cc
index fa76e9b..4bbfc36 100644
--- a/ML_BSSN/src/ML_BSSN_RHS2.cc
+++ b/ML_BSSN/src/ML_BSSN_RHS2.cc
@@ -1626,6 +1626,35 @@ static void ML_BSSN_RHS2_Body(cGH const * restrict const cctkGH, int const dir,
CCTK_REAL_VEC Xtn3 =
kmadd(Gt311,gtu11,kmadd(Gt322,gtu22,kmadd(Gt333,gtu33,kmul(kmadd(Gt312,gtu12,kmadd(Gt313,gtu13,kmul(Gt323,gtu23))),ToReal(2)))));
+ CCTK_REAL_VEC e4phi = IfThen(conformalMethod ==
+ 1,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
+
+ CCTK_REAL_VEC em4phi = INV(e4phi);
+
+ CCTK_REAL_VEC g11 = kmul(gt11L,e4phi);
+
+ CCTK_REAL_VEC g12 = kmul(gt12L,e4phi);
+
+ CCTK_REAL_VEC g13 = kmul(gt13L,e4phi);
+
+ CCTK_REAL_VEC g22 = kmul(gt22L,e4phi);
+
+ CCTK_REAL_VEC g23 = kmul(gt23L,e4phi);
+
+ CCTK_REAL_VEC g33 = kmul(gt33L,e4phi);
+
+ CCTK_REAL_VEC gu11 = kmul(em4phi,gtu11);
+
+ CCTK_REAL_VEC gu12 = kmul(em4phi,gtu12);
+
+ CCTK_REAL_VEC gu13 = kmul(em4phi,gtu13);
+
+ CCTK_REAL_VEC gu22 = kmul(em4phi,gtu22);
+
+ CCTK_REAL_VEC gu23 = kmul(em4phi,gtu23);
+
+ CCTK_REAL_VEC gu33 = kmul(em4phi,gtu33);
+
CCTK_REAL_VEC Rt11 =
kmul(ToReal(0.5),knmsub(gtu11,JacPDstandardNth11gt11,knmsub(gtu22,JacPDstandardNth22gt11,knmsub(gtu33,JacPDstandardNth33gt11,knmsub(gtu12,kadd(JacPDstandardNth21gt11,JacPDstandardNth12gt11),knmsub(gtu13,kadd(JacPDstandardNth31gt11,JacPDstandardNth13gt11),knmsub(gtu23,kadd(JacPDstandardNth32gt11,JacPDstandardNth23gt11),kmadd(kmadd(Gt211,Gtlu211,kmadd(Gt212,Gtlu212,kmadd(Gt213,Gtlu213,kmadd(Gt311,Gtlu311,kmadd(Gt312,Gtlu312,kmadd(Gt313,Gtlu313,kmul(gt11L,JacPDstandardNth1Xt1))))))),ToReal(2),kmadd(gt12L,kmul(JacPDstandardNth1Xt2,ToReal(2)),kmadd(gt13L,kmul(JacPDstandardNth1Xt3,ToReal(2)),kmadd(Gtl111,kmul(Xtn1,ToReal(2)),kmadd(Gtl112,kmul(Xtn2,ToReal(2)),kmadd(Gtl113,kmul(Xtn3,ToReal(2)),kmadd(kmadd(Gt211,Gtlu121,kmadd(Gt212,Gtlu122,kmadd(Gt213,Gtlu123,kmadd(Gt311,Gtlu131,kmadd(Gt312,Gtlu132,kmul(Gt313,Gtlu133)))))),ToReal(4),kmul(kmadd(Gt111,Gtlu111,kmadd(Gt112,Gtlu112,kmul(Gt113,Gtlu113))),ToReal(6))))))))))))))));
@@ -1644,8 +1673,8 @@ static void ML_BSSN_RHS2_Body(cGH const * restrict const cctkGH, int const dir,
CCTK_REAL_VEC Rt33 =
kmul(ToReal(0.5),knmsub(gtu11,JacPDstandardNth11gt33,knmsub(gtu22,JacPDstandardNth22gt33,knmsub(gtu33,JacPDstandardNth33gt33,knmsub(gtu12,kadd(JacPDstandardNth21gt33,JacPDstandardNth12gt33),knmsub(gtu13,kadd(JacPDstandardNth31gt33,JacPDstandardNth13gt33),knmsub(gtu23,kadd(JacPDstandardNth32gt33,JacPDstandardNth23gt33),kmadd(gt23L,kmul(JacPDstandardNth3Xt2,ToReal(2)),kmadd(gt33L,kmul(JacPDstandardNth3Xt3,ToReal(2)),kmadd(Gtl313,kmul(Xtn1,ToReal(2)),kmadd(Gtl323,kmul(Xtn2,ToReal(2)),kmadd(Gtl333,kmul(Xtn3,ToReal(2)),kmadd(ToReal(2),kmadd(Gt133,Gtlu133,kmadd(Gt213,Gtlu231,kmadd(Gt223,Gtlu232,kmadd(Gt233,Gtlu233,kmadd(gt13L,JacPDstandardNth3Xt1,kmadd(Gt113,kmadd(Gtlu311,ToReal(2),Gtlu131),kmul(Gt123,kmadd(Gtlu312,ToReal(2),Gtlu132)))))))),kmadd(kmadd(Gt133,Gtlu313,kmadd(Gt213,Gtlu321,kmadd(Gt223,Gtlu322,kmul(Gt233,Gtlu323)))),ToReal(4),kmul(kmadd(Gt313,Gtlu331,kmadd(Gt323,Gtlu332,kmul(Gt333,Gtlu333))),ToReal(6))))))))))))))));
- CCTK_REAL_VEC fac1 =
- IfThen(conformalMethod,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
+ CCTK_REAL_VEC fac1 = IfThen(conformalMethod ==
+ 1,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
CCTK_REAL_VEC cdphi1 = kmul(fac1,JacPDstandardNth1phi);
@@ -1653,8 +1682,8 @@ static void ML_BSSN_RHS2_Body(cGH const * restrict const cctkGH, int const dir,
CCTK_REAL_VEC cdphi3 = kmul(fac1,JacPDstandardNth3phi);
- CCTK_REAL_VEC fac2 =
- IfThen(conformalMethod,kmul(INV(SQR(phiL)),ToReal(0.5)),ToReal(0));
+ CCTK_REAL_VEC fac2 = IfThen(conformalMethod ==
+ 1,kmul(INV(SQR(phiL)),ToReal(0.5)),ToReal(0));
CCTK_REAL_VEC cdphi211 =
kmadd(fac2,SQR(JacPDstandardNth1phi),kmul(fac1,ksub(JacPDstandardNth11phi,kmadd(Gt111,JacPDstandardNth1phi,kmadd(Gt311,JacPDstandardNth3phi,kmul(Gt211,JacPDstandardNth2phi))))));
@@ -1719,35 +1748,6 @@ static void ML_BSSN_RHS2_Body(cGH const * restrict const cctkGH, int const dir,
CCTK_REAL_VEC Atm33 =
kmadd(At13L,gtu13,kmadd(At23L,gtu23,kmul(At33L,gtu33)));
- CCTK_REAL_VEC e4phi =
- IfThen(conformalMethod,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
-
- CCTK_REAL_VEC em4phi = INV(e4phi);
-
- CCTK_REAL_VEC g11 = kmul(gt11L,e4phi);
-
- CCTK_REAL_VEC g12 = kmul(gt12L,e4phi);
-
- CCTK_REAL_VEC g13 = kmul(gt13L,e4phi);
-
- CCTK_REAL_VEC g22 = kmul(gt22L,e4phi);
-
- CCTK_REAL_VEC g23 = kmul(gt23L,e4phi);
-
- CCTK_REAL_VEC g33 = kmul(gt33L,e4phi);
-
- CCTK_REAL_VEC gu11 = kmul(em4phi,gtu11);
-
- CCTK_REAL_VEC gu12 = kmul(em4phi,gtu12);
-
- CCTK_REAL_VEC gu13 = kmul(em4phi,gtu13);
-
- CCTK_REAL_VEC gu22 = kmul(em4phi,gtu22);
-
- CCTK_REAL_VEC gu23 = kmul(em4phi,gtu23);
-
- CCTK_REAL_VEC gu33 = kmul(em4phi,gtu33);
-
CCTK_REAL_VEC R11 = kadd(Rphi11,Rt11);
CCTK_REAL_VEC R12 = kadd(Rphi12,Rt12);
diff --git a/ML_BSSN/src/ML_BSSN_boundary.cc b/ML_BSSN/src/ML_BSSN_boundary.cc
index 140da41..3777a51 100644
--- a/ML_BSSN/src/ML_BSSN_boundary.cc
+++ b/ML_BSSN/src/ML_BSSN_boundary.cc
@@ -258,7 +258,7 @@ static void ML_BSSN_boundary_Body(cGH const * restrict const cctkGH, int const d
}
/* Calculate temporaries and grid functions */
- CCTK_REAL_VEC phiL = IfThen(conformalMethod,ToReal(1),ToReal(0));
+ CCTK_REAL_VEC phiL = IfThen(conformalMethod == 1,ToReal(1),ToReal(0));
CCTK_REAL_VEC gt11L = ToReal(1);
diff --git a/ML_BSSN/src/ML_BSSN_constraints1.cc b/ML_BSSN/src/ML_BSSN_constraints1.cc
index 8f89811..ee512c8 100644
--- a/ML_BSSN/src/ML_BSSN_constraints1.cc
+++ b/ML_BSSN/src/ML_BSSN_constraints1.cc
@@ -1430,6 +1430,23 @@ static void ML_BSSN_constraints1_Body(cGH const * restrict const cctkGH, int con
CCTK_REAL_VEC Xtn3 =
kmadd(Gt311,gtu11,kmadd(Gt322,gtu22,kmadd(Gt333,gtu33,kmul(kmadd(Gt312,gtu12,kmadd(Gt313,gtu13,kmul(Gt323,gtu23))),ToReal(2)))));
+ CCTK_REAL_VEC e4phi = IfThen(conformalMethod ==
+ 1,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
+
+ CCTK_REAL_VEC em4phi = INV(e4phi);
+
+ CCTK_REAL_VEC gu11 = kmul(em4phi,gtu11);
+
+ CCTK_REAL_VEC gu12 = kmul(em4phi,gtu12);
+
+ CCTK_REAL_VEC gu13 = kmul(em4phi,gtu13);
+
+ CCTK_REAL_VEC gu22 = kmul(em4phi,gtu22);
+
+ CCTK_REAL_VEC gu23 = kmul(em4phi,gtu23);
+
+ CCTK_REAL_VEC gu33 = kmul(em4phi,gtu33);
+
CCTK_REAL_VEC Rt11 =
kmul(ToReal(0.5),knmsub(gtu11,JacPDstandardNth11gt11,knmsub(gtu22,JacPDstandardNth22gt11,knmsub(gtu33,JacPDstandardNth33gt11,knmsub(gtu12,kadd(JacPDstandardNth21gt11,JacPDstandardNth12gt11),knmsub(gtu13,kadd(JacPDstandardNth31gt11,JacPDstandardNth13gt11),knmsub(gtu23,kadd(JacPDstandardNth32gt11,JacPDstandardNth23gt11),kmadd(kmadd(Gt211,Gtlu211,kmadd(Gt212,Gtlu212,kmadd(Gt213,Gtlu213,kmadd(Gt311,Gtlu311,kmadd(Gt312,Gtlu312,kmadd(Gt313,Gtlu313,kmul(gt11L,JacPDstandardNth1Xt1))))))),ToReal(2),kmadd(gt12L,kmul(JacPDstandardNth1Xt2,ToReal(2)),kmadd(gt13L,kmul(JacPDstandardNth1Xt3,ToReal(2)),kmadd(Gtl111,kmul(Xtn1,ToReal(2)),kmadd(Gtl112,kmul(Xtn2,ToReal(2)),kmadd(Gtl113,kmul(Xtn3,ToReal(2)),kmadd(kmadd(Gt211,Gtlu121,kmadd(Gt212,Gtlu122,kmadd(Gt213,Gtlu123,kmadd(Gt311,Gtlu131,kmadd(Gt312,Gtlu132,kmul(Gt313,Gtlu133)))))),ToReal(4),kmul(kmadd(Gt111,Gtlu111,kmadd(Gt112,Gtlu112,kmul(Gt113,Gtlu113))),ToReal(6))))))))))))))));
@@ -1448,8 +1465,8 @@ static void ML_BSSN_constraints1_Body(cGH const * restrict const cctkGH, int con
CCTK_REAL_VEC Rt33 =
kmul(ToReal(0.5),knmsub(gtu11,JacPDstandardNth11gt33,knmsub(gtu22,JacPDstandardNth22gt33,knmsub(gtu33,JacPDstandardNth33gt33,knmsub(gtu12,kadd(JacPDstandardNth21gt33,JacPDstandardNth12gt33),knmsub(gtu13,kadd(JacPDstandardNth31gt33,JacPDstandardNth13gt33),knmsub(gtu23,kadd(JacPDstandardNth32gt33,JacPDstandardNth23gt33),kmadd(gt23L,kmul(JacPDstandardNth3Xt2,ToReal(2)),kmadd(gt33L,kmul(JacPDstandardNth3Xt3,ToReal(2)),kmadd(Gtl313,kmul(Xtn1,ToReal(2)),kmadd(Gtl323,kmul(Xtn2,ToReal(2)),kmadd(Gtl333,kmul(Xtn3,ToReal(2)),kmadd(ToReal(2),kmadd(Gt133,Gtlu133,kmadd(Gt213,Gtlu231,kmadd(Gt223,Gtlu232,kmadd(Gt233,Gtlu233,kmadd(gt13L,JacPDstandardNth3Xt1,kmadd(Gt113,kmadd(Gtlu311,ToReal(2),Gtlu131),kmul(Gt123,kmadd(Gtlu312,ToReal(2),Gtlu132)))))))),kmadd(kmadd(Gt133,Gtlu313,kmadd(Gt213,Gtlu321,kmadd(Gt223,Gtlu322,kmul(Gt233,Gtlu323)))),ToReal(4),kmul(kmadd(Gt313,Gtlu331,kmadd(Gt323,Gtlu332,kmul(Gt333,Gtlu333))),ToReal(6))))))))))))))));
- CCTK_REAL_VEC fac1 =
- IfThen(conformalMethod,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
+ CCTK_REAL_VEC fac1 = IfThen(conformalMethod ==
+ 1,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
CCTK_REAL_VEC cdphi1 = kmul(fac1,JacPDstandardNth1phi);
@@ -1457,8 +1474,8 @@ static void ML_BSSN_constraints1_Body(cGH const * restrict const cctkGH, int con
CCTK_REAL_VEC cdphi3 = kmul(fac1,JacPDstandardNth3phi);
- CCTK_REAL_VEC fac2 =
- IfThen(conformalMethod,kmul(INV(SQR(phiL)),ToReal(0.5)),ToReal(0));
+ CCTK_REAL_VEC fac2 = IfThen(conformalMethod ==
+ 1,kmul(INV(SQR(phiL)),ToReal(0.5)),ToReal(0));
CCTK_REAL_VEC cdphi211 =
kmadd(fac2,SQR(JacPDstandardNth1phi),kmul(fac1,ksub(JacPDstandardNth11phi,kmadd(Gt111,JacPDstandardNth1phi,kmadd(Gt311,JacPDstandardNth3phi,kmul(Gt211,JacPDstandardNth2phi))))));
@@ -1496,23 +1513,6 @@ static void ML_BSSN_constraints1_Body(cGH const * restrict const cctkGH, int con
CCTK_REAL_VEC Rphi33 =
kmul(ToReal(-2),kadd(cdphi233,kmadd(SQR(cdphi3),kmul(kmadd(gt33L,gtu33,ToReal(-1)),ToReal(2)),kmul(gt33L,kmadd(cdphi233,gtu33,kmadd(kmadd(cdphi213,gtu13,kmul(cdphi223,gtu23)),ToReal(2),kmadd(gtu11,kmadd(SQR(cdphi1),ToReal(2),cdphi211),kmadd(gtu22,kmadd(SQR(cdphi2),ToReal(2),cdphi222),kmadd(cdphi3,kmul(kmadd(cdphi1,gtu13,kmul(cdphi2,gtu23)),ToReal(4)),kmul(gtu12,kmadd(cdphi212,ToReal(2),kmul(cdphi1,kmul(cdphi2,ToReal(4))))))))))))));
- CCTK_REAL_VEC e4phi =
- IfThen(conformalMethod,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
-
- CCTK_REAL_VEC em4phi = INV(e4phi);
-
- CCTK_REAL_VEC gu11 = kmul(em4phi,gtu11);
-
- CCTK_REAL_VEC gu12 = kmul(em4phi,gtu12);
-
- CCTK_REAL_VEC gu13 = kmul(em4phi,gtu13);
-
- CCTK_REAL_VEC gu22 = kmul(em4phi,gtu22);
-
- CCTK_REAL_VEC gu23 = kmul(em4phi,gtu23);
-
- CCTK_REAL_VEC gu33 = kmul(em4phi,gtu33);
-
CCTK_REAL_VEC R11 = kadd(Rphi11,Rt11);
CCTK_REAL_VEC R12 = kadd(Rphi12,Rt12);
diff --git a/ML_BSSN/src/ML_BSSN_constraints2.cc b/ML_BSSN/src/ML_BSSN_constraints2.cc
index ecc059b..9925a78 100644
--- a/ML_BSSN/src/ML_BSSN_constraints2.cc
+++ b/ML_BSSN/src/ML_BSSN_constraints2.cc
@@ -891,8 +891,8 @@ static void ML_BSSN_constraints2_Body(cGH const * restrict const cctkGH, int con
CCTK_REAL_VEC Gt333 =
kmadd(Gtl133,gtu13,kmadd(Gtl233,gtu23,kmul(Gtl333,gtu33)));
- CCTK_REAL_VEC fac1 =
- IfThen(conformalMethod,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
+ CCTK_REAL_VEC fac1 = IfThen(conformalMethod ==
+ 1,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
CCTK_REAL_VEC cdphi1 = kmul(fac1,JacPDstandardNth1phi);
diff --git a/ML_BSSN/src/ML_BSSN_convertFromADMBase.cc b/ML_BSSN/src/ML_BSSN_convertFromADMBase.cc
index 96db9f9..c169cec 100644
--- a/ML_BSSN/src/ML_BSSN_convertFromADMBase.cc
+++ b/ML_BSSN/src/ML_BSSN_convertFromADMBase.cc
@@ -269,7 +269,7 @@ static void ML_BSSN_convertFromADMBase_Body(cGH const * restrict const cctkGH, i
CCTK_REAL_VEC em4phi;
- if (conformalMethod)
+ if (conformalMethod == 1)
{
phiL = kpow(detg,-0.166666666666666666666666666667);
diff --git a/ML_BSSN/src/ML_BSSN_convertToADMBase.cc b/ML_BSSN/src/ML_BSSN_convertToADMBase.cc
index de1d9df..c302c6f 100644
--- a/ML_BSSN/src/ML_BSSN_convertToADMBase.cc
+++ b/ML_BSSN/src/ML_BSSN_convertToADMBase.cc
@@ -246,8 +246,8 @@ static void ML_BSSN_convertToADMBase_Body(cGH const * restrict const cctkGH, int
}
/* Calculate temporaries and grid functions */
- CCTK_REAL_VEC e4phi =
- IfThen(conformalMethod,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
+ CCTK_REAL_VEC e4phi = IfThen(conformalMethod ==
+ 1,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
gxxL = kmul(gt11L,e4phi);
diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_Minkowski.cc b/ML_BSSN_MP/src/ML_BSSN_MP_Minkowski.cc
index ad586eb..07d77e6 100644
--- a/ML_BSSN_MP/src/ML_BSSN_MP_Minkowski.cc
+++ b/ML_BSSN_MP/src/ML_BSSN_MP_Minkowski.cc
@@ -222,7 +222,7 @@ static void ML_BSSN_MP_Minkowski_Body(cGH const * restrict const cctkGH, int con
}
/* Calculate temporaries and grid functions */
- CCTK_REAL_VEC phiL = IfThen(conformalMethod,ToReal(1),ToReal(0));
+ CCTK_REAL_VEC phiL = IfThen(conformalMethod == 1,ToReal(1),ToReal(0));
CCTK_REAL_VEC gt11L = ToReal(1);
diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_RHS1.cc b/ML_BSSN_MP/src/ML_BSSN_MP_RHS1.cc
index 36e1728..c162fc2 100644
--- a/ML_BSSN_MP/src/ML_BSSN_MP_RHS1.cc
+++ b/ML_BSSN_MP/src/ML_BSSN_MP_RHS1.cc
@@ -1213,8 +1213,13 @@ static void ML_BSSN_MP_RHS1_Body(cGH const * restrict const cctkGH, int const di
CCTK_REAL_VEC Xtn3 =
kmadd(Gt311,gtu11,kmadd(Gt322,gtu22,kmadd(Gt333,gtu33,kmul(kmadd(Gt312,gtu12,kmadd(Gt313,gtu13,kmul(Gt323,gtu23))),ToReal(2)))));
- CCTK_REAL_VEC fac1 =
- IfThen(conformalMethod,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
+ CCTK_REAL_VEC e4phi = IfThen(conformalMethod ==
+ 1,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
+
+ CCTK_REAL_VEC em4phi = INV(e4phi);
+
+ CCTK_REAL_VEC fac1 = IfThen(conformalMethod ==
+ 1,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
CCTK_REAL_VEC cdphi1 = kmul(fac1,JacPDstandardNth1phi);
@@ -1267,11 +1272,6 @@ static void ML_BSSN_MP_RHS1_Body(cGH const * restrict const cctkGH, int const di
CCTK_REAL_VEC Atu33 =
kmadd(Atm31,gtu13,kmadd(Atm32,gtu23,kmul(Atm33,gtu33)));
- CCTK_REAL_VEC e4phi =
- IfThen(conformalMethod,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
-
- CCTK_REAL_VEC em4phi = INV(e4phi);
-
CCTK_REAL_VEC rho =
kmul(INV(SQR(alphaL)),kadd(eTttL,kmadd(eTxxL,SQR(beta1L),kmadd(eTyyL,SQR(beta2L),kmadd(eTzzL,SQR(beta3L),kmadd(kmadd(beta2L,eTtyL,kmul(beta3L,eTtzL)),ToReal(-2),kmul(kmadd(beta2L,kmul(beta3L,eTyzL),kmul(beta1L,kmadd(beta2L,eTxyL,kmsub(beta3L,eTxzL,eTtxL)))),ToReal(2))))))));
@@ -1287,8 +1287,8 @@ static void ML_BSSN_MP_RHS1_Body(cGH const * restrict const cctkGH, int const di
CCTK_REAL_VEC trS =
kmul(em4phi,kmadd(eTxxL,gtu11,kmadd(eTyyL,gtu22,kmadd(eTzzL,gtu33,kmul(kmadd(eTxyL,gtu12,kmadd(eTxzL,gtu13,kmul(eTyzL,gtu23))),ToReal(2))))));
- CCTK_REAL_VEC phirhsL =
- IfThen(conformalMethod,kmul(phiL,kmadd(kadd(JacPDstandardNth1beta1,kadd(JacPDstandardNth2beta2,JacPDstandardNth3beta3)),ToReal(-0.333333333333333333333333333333),kmul(alphaL,kmul(trKL,ToReal(0.333333333333333333333333333333))))),kmadd(alphaL,kmul(trKL,ToReal(-0.166666666666666666666666666667)),kmul(kadd(JacPDstandardNth1beta1,kadd(JacPDstandardNth2beta2,JacPDstandardNth3beta3)),ToReal(0.166666666666666666666666666667))));
+ CCTK_REAL_VEC phirhsL = kneg(kmul(IfThen(conformalMethod ==
+ 1,kmul(phiL,ToReal(0.333333333333333333333333333333)),ToReal(-0.166666666666666666666666666667)),kadd(JacPDstandardNth1beta1,kadd(JacPDstandardNth2beta2,knmsub(alphaL,trKL,JacPDstandardNth3beta3)))));
CCTK_REAL_VEC gt11rhsL =
kmul(ToReal(-0.666666666666666666666666666667),kmadd(kmadd(gt12L,JacPDstandardNth1beta2,kmul(gt13L,JacPDstandardNth1beta3)),ToReal(-3),kmadd(gt11L,kadd(JacPDstandardNth2beta2,kmadd(JacPDstandardNth1beta1,ToReal(-2),JacPDstandardNth3beta3)),kmul(alphaL,kmul(At11L,ToReal(3))))));
diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_RHS2.cc b/ML_BSSN_MP/src/ML_BSSN_MP_RHS2.cc
index ab1f104..a7b4d27 100644
--- a/ML_BSSN_MP/src/ML_BSSN_MP_RHS2.cc
+++ b/ML_BSSN_MP/src/ML_BSSN_MP_RHS2.cc
@@ -1626,6 +1626,35 @@ static void ML_BSSN_MP_RHS2_Body(cGH const * restrict const cctkGH, int const di
CCTK_REAL_VEC Xtn3 =
kmadd(Gt311,gtu11,kmadd(Gt322,gtu22,kmadd(Gt333,gtu33,kmul(kmadd(Gt312,gtu12,kmadd(Gt313,gtu13,kmul(Gt323,gtu23))),ToReal(2)))));
+ CCTK_REAL_VEC e4phi = IfThen(conformalMethod ==
+ 1,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
+
+ CCTK_REAL_VEC em4phi = INV(e4phi);
+
+ CCTK_REAL_VEC g11 = kmul(gt11L,e4phi);
+
+ CCTK_REAL_VEC g12 = kmul(gt12L,e4phi);
+
+ CCTK_REAL_VEC g13 = kmul(gt13L,e4phi);
+
+ CCTK_REAL_VEC g22 = kmul(gt22L,e4phi);
+
+ CCTK_REAL_VEC g23 = kmul(gt23L,e4phi);
+
+ CCTK_REAL_VEC g33 = kmul(gt33L,e4phi);
+
+ CCTK_REAL_VEC gu11 = kmul(em4phi,gtu11);
+
+ CCTK_REAL_VEC gu12 = kmul(em4phi,gtu12);
+
+ CCTK_REAL_VEC gu13 = kmul(em4phi,gtu13);
+
+ CCTK_REAL_VEC gu22 = kmul(em4phi,gtu22);
+
+ CCTK_REAL_VEC gu23 = kmul(em4phi,gtu23);
+
+ CCTK_REAL_VEC gu33 = kmul(em4phi,gtu33);
+
CCTK_REAL_VEC Rt11 =
kmul(ToReal(0.5),knmsub(gtu11,JacPDstandardNth11gt11,knmsub(gtu22,JacPDstandardNth22gt11,knmsub(gtu33,JacPDstandardNth33gt11,knmsub(gtu12,kadd(JacPDstandardNth21gt11,JacPDstandardNth12gt11),knmsub(gtu13,kadd(JacPDstandardNth31gt11,JacPDstandardNth13gt11),knmsub(gtu23,kadd(JacPDstandardNth32gt11,JacPDstandardNth23gt11),kmadd(kmadd(Gt211,Gtlu211,kmadd(Gt212,Gtlu212,kmadd(Gt213,Gtlu213,kmadd(Gt311,Gtlu311,kmadd(Gt312,Gtlu312,kmadd(Gt313,Gtlu313,kmul(gt11L,JacPDstandardNth1Xt1))))))),ToReal(2),kmadd(gt12L,kmul(JacPDstandardNth1Xt2,ToReal(2)),kmadd(gt13L,kmul(JacPDstandardNth1Xt3,ToReal(2)),kmadd(Gtl111,kmul(Xtn1,ToReal(2)),kmadd(Gtl112,kmul(Xtn2,ToReal(2)),kmadd(Gtl113,kmul(Xtn3,ToReal(2)),kmadd(kmadd(Gt211,Gtlu121,kmadd(Gt212,Gtlu122,kmadd(Gt213,Gtlu123,kmadd(Gt311,Gtlu131,kmadd(Gt312,Gtlu132,kmul(Gt313,Gtlu133)))))),ToReal(4),kmul(kmadd(Gt111,Gtlu111,kmadd(Gt112,Gtlu112,kmul(Gt113,Gtlu113))),ToReal(6))))))))))))))));
@@ -1644,8 +1673,8 @@ static void ML_BSSN_MP_RHS2_Body(cGH const * restrict const cctkGH, int const di
CCTK_REAL_VEC Rt33 =
kmul(ToReal(0.5),knmsub(gtu11,JacPDstandardNth11gt33,knmsub(gtu22,JacPDstandardNth22gt33,knmsub(gtu33,JacPDstandardNth33gt33,knmsub(gtu12,kadd(JacPDstandardNth21gt33,JacPDstandardNth12gt33),knmsub(gtu13,kadd(JacPDstandardNth31gt33,JacPDstandardNth13gt33),knmsub(gtu23,kadd(JacPDstandardNth32gt33,JacPDstandardNth23gt33),kmadd(gt23L,kmul(JacPDstandardNth3Xt2,ToReal(2)),kmadd(gt33L,kmul(JacPDstandardNth3Xt3,ToReal(2)),kmadd(Gtl313,kmul(Xtn1,ToReal(2)),kmadd(Gtl323,kmul(Xtn2,ToReal(2)),kmadd(Gtl333,kmul(Xtn3,ToReal(2)),kmadd(ToReal(2),kmadd(Gt133,Gtlu133,kmadd(Gt213,Gtlu231,kmadd(Gt223,Gtlu232,kmadd(Gt233,Gtlu233,kmadd(gt13L,JacPDstandardNth3Xt1,kmadd(Gt113,kmadd(Gtlu311,ToReal(2),Gtlu131),kmul(Gt123,kmadd(Gtlu312,ToReal(2),Gtlu132)))))))),kmadd(kmadd(Gt133,Gtlu313,kmadd(Gt213,Gtlu321,kmadd(Gt223,Gtlu322,kmul(Gt233,Gtlu323)))),ToReal(4),kmul(kmadd(Gt313,Gtlu331,kmadd(Gt323,Gtlu332,kmul(Gt333,Gtlu333))),ToReal(6))))))))))))))));
- CCTK_REAL_VEC fac1 =
- IfThen(conformalMethod,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
+ CCTK_REAL_VEC fac1 = IfThen(conformalMethod ==
+ 1,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
CCTK_REAL_VEC cdphi1 = kmul(fac1,JacPDstandardNth1phi);
@@ -1653,8 +1682,8 @@ static void ML_BSSN_MP_RHS2_Body(cGH const * restrict const cctkGH, int const di
CCTK_REAL_VEC cdphi3 = kmul(fac1,JacPDstandardNth3phi);
- CCTK_REAL_VEC fac2 =
- IfThen(conformalMethod,kmul(INV(SQR(phiL)),ToReal(0.5)),ToReal(0));
+ CCTK_REAL_VEC fac2 = IfThen(conformalMethod ==
+ 1,kmul(INV(SQR(phiL)),ToReal(0.5)),ToReal(0));
CCTK_REAL_VEC cdphi211 =
kmadd(fac2,SQR(JacPDstandardNth1phi),kmul(fac1,ksub(JacPDstandardNth11phi,kmadd(Gt111,JacPDstandardNth1phi,kmadd(Gt311,JacPDstandardNth3phi,kmul(Gt211,JacPDstandardNth2phi))))));
@@ -1719,35 +1748,6 @@ static void ML_BSSN_MP_RHS2_Body(cGH const * restrict const cctkGH, int const di
CCTK_REAL_VEC Atm33 =
kmadd(At13L,gtu13,kmadd(At23L,gtu23,kmul(At33L,gtu33)));
- CCTK_REAL_VEC e4phi =
- IfThen(conformalMethod,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
-
- CCTK_REAL_VEC em4phi = INV(e4phi);
-
- CCTK_REAL_VEC g11 = kmul(gt11L,e4phi);
-
- CCTK_REAL_VEC g12 = kmul(gt12L,e4phi);
-
- CCTK_REAL_VEC g13 = kmul(gt13L,e4phi);
-
- CCTK_REAL_VEC g22 = kmul(gt22L,e4phi);
-
- CCTK_REAL_VEC g23 = kmul(gt23L,e4phi);
-
- CCTK_REAL_VEC g33 = kmul(gt33L,e4phi);
-
- CCTK_REAL_VEC gu11 = kmul(em4phi,gtu11);
-
- CCTK_REAL_VEC gu12 = kmul(em4phi,gtu12);
-
- CCTK_REAL_VEC gu13 = kmul(em4phi,gtu13);
-
- CCTK_REAL_VEC gu22 = kmul(em4phi,gtu22);
-
- CCTK_REAL_VEC gu23 = kmul(em4phi,gtu23);
-
- CCTK_REAL_VEC gu33 = kmul(em4phi,gtu33);
-
CCTK_REAL_VEC R11 = kadd(Rphi11,Rt11);
CCTK_REAL_VEC R12 = kadd(Rphi12,Rt12);
diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_boundary.cc b/ML_BSSN_MP/src/ML_BSSN_MP_boundary.cc
index f7985cc..4083b54 100644
--- a/ML_BSSN_MP/src/ML_BSSN_MP_boundary.cc
+++ b/ML_BSSN_MP/src/ML_BSSN_MP_boundary.cc
@@ -258,7 +258,7 @@ static void ML_BSSN_MP_boundary_Body(cGH const * restrict const cctkGH, int cons
}
/* Calculate temporaries and grid functions */
- CCTK_REAL_VEC phiL = IfThen(conformalMethod,ToReal(1),ToReal(0));
+ CCTK_REAL_VEC phiL = IfThen(conformalMethod == 1,ToReal(1),ToReal(0));
CCTK_REAL_VEC gt11L = ToReal(1);
diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_constraints1.cc b/ML_BSSN_MP/src/ML_BSSN_MP_constraints1.cc
index a01cac9..af52b0d 100644
--- a/ML_BSSN_MP/src/ML_BSSN_MP_constraints1.cc
+++ b/ML_BSSN_MP/src/ML_BSSN_MP_constraints1.cc
@@ -1430,6 +1430,23 @@ static void ML_BSSN_MP_constraints1_Body(cGH const * restrict const cctkGH, int
CCTK_REAL_VEC Xtn3 =
kmadd(Gt311,gtu11,kmadd(Gt322,gtu22,kmadd(Gt333,gtu33,kmul(kmadd(Gt312,gtu12,kmadd(Gt313,gtu13,kmul(Gt323,gtu23))),ToReal(2)))));
+ CCTK_REAL_VEC e4phi = IfThen(conformalMethod ==
+ 1,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
+
+ CCTK_REAL_VEC em4phi = INV(e4phi);
+
+ CCTK_REAL_VEC gu11 = kmul(em4phi,gtu11);
+
+ CCTK_REAL_VEC gu12 = kmul(em4phi,gtu12);
+
+ CCTK_REAL_VEC gu13 = kmul(em4phi,gtu13);
+
+ CCTK_REAL_VEC gu22 = kmul(em4phi,gtu22);
+
+ CCTK_REAL_VEC gu23 = kmul(em4phi,gtu23);
+
+ CCTK_REAL_VEC gu33 = kmul(em4phi,gtu33);
+
CCTK_REAL_VEC Rt11 =
kmul(ToReal(0.5),knmsub(gtu11,JacPDstandardNth11gt11,knmsub(gtu22,JacPDstandardNth22gt11,knmsub(gtu33,JacPDstandardNth33gt11,knmsub(gtu12,kadd(JacPDstandardNth21gt11,JacPDstandardNth12gt11),knmsub(gtu13,kadd(JacPDstandardNth31gt11,JacPDstandardNth13gt11),knmsub(gtu23,kadd(JacPDstandardNth32gt11,JacPDstandardNth23gt11),kmadd(kmadd(Gt211,Gtlu211,kmadd(Gt212,Gtlu212,kmadd(Gt213,Gtlu213,kmadd(Gt311,Gtlu311,kmadd(Gt312,Gtlu312,kmadd(Gt313,Gtlu313,kmul(gt11L,JacPDstandardNth1Xt1))))))),ToReal(2),kmadd(gt12L,kmul(JacPDstandardNth1Xt2,ToReal(2)),kmadd(gt13L,kmul(JacPDstandardNth1Xt3,ToReal(2)),kmadd(Gtl111,kmul(Xtn1,ToReal(2)),kmadd(Gtl112,kmul(Xtn2,ToReal(2)),kmadd(Gtl113,kmul(Xtn3,ToReal(2)),kmadd(kmadd(Gt211,Gtlu121,kmadd(Gt212,Gtlu122,kmadd(Gt213,Gtlu123,kmadd(Gt311,Gtlu131,kmadd(Gt312,Gtlu132,kmul(Gt313,Gtlu133)))))),ToReal(4),kmul(kmadd(Gt111,Gtlu111,kmadd(Gt112,Gtlu112,kmul(Gt113,Gtlu113))),ToReal(6))))))))))))))));
@@ -1448,8 +1465,8 @@ static void ML_BSSN_MP_constraints1_Body(cGH const * restrict const cctkGH, int
CCTK_REAL_VEC Rt33 =
kmul(ToReal(0.5),knmsub(gtu11,JacPDstandardNth11gt33,knmsub(gtu22,JacPDstandardNth22gt33,knmsub(gtu33,JacPDstandardNth33gt33,knmsub(gtu12,kadd(JacPDstandardNth21gt33,JacPDstandardNth12gt33),knmsub(gtu13,kadd(JacPDstandardNth31gt33,JacPDstandardNth13gt33),knmsub(gtu23,kadd(JacPDstandardNth32gt33,JacPDstandardNth23gt33),kmadd(gt23L,kmul(JacPDstandardNth3Xt2,ToReal(2)),kmadd(gt33L,kmul(JacPDstandardNth3Xt3,ToReal(2)),kmadd(Gtl313,kmul(Xtn1,ToReal(2)),kmadd(Gtl323,kmul(Xtn2,ToReal(2)),kmadd(Gtl333,kmul(Xtn3,ToReal(2)),kmadd(ToReal(2),kmadd(Gt133,Gtlu133,kmadd(Gt213,Gtlu231,kmadd(Gt223,Gtlu232,kmadd(Gt233,Gtlu233,kmadd(gt13L,JacPDstandardNth3Xt1,kmadd(Gt113,kmadd(Gtlu311,ToReal(2),Gtlu131),kmul(Gt123,kmadd(Gtlu312,ToReal(2),Gtlu132)))))))),kmadd(kmadd(Gt133,Gtlu313,kmadd(Gt213,Gtlu321,kmadd(Gt223,Gtlu322,kmul(Gt233,Gtlu323)))),ToReal(4),kmul(kmadd(Gt313,Gtlu331,kmadd(Gt323,Gtlu332,kmul(Gt333,Gtlu333))),ToReal(6))))))))))))))));
- CCTK_REAL_VEC fac1 =
- IfThen(conformalMethod,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
+ CCTK_REAL_VEC fac1 = IfThen(conformalMethod ==
+ 1,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
CCTK_REAL_VEC cdphi1 = kmul(fac1,JacPDstandardNth1phi);
@@ -1457,8 +1474,8 @@ static void ML_BSSN_MP_constraints1_Body(cGH const * restrict const cctkGH, int
CCTK_REAL_VEC cdphi3 = kmul(fac1,JacPDstandardNth3phi);
- CCTK_REAL_VEC fac2 =
- IfThen(conformalMethod,kmul(INV(SQR(phiL)),ToReal(0.5)),ToReal(0));
+ CCTK_REAL_VEC fac2 = IfThen(conformalMethod ==
+ 1,kmul(INV(SQR(phiL)),ToReal(0.5)),ToReal(0));
CCTK_REAL_VEC cdphi211 =
kmadd(fac2,SQR(JacPDstandardNth1phi),kmul(fac1,ksub(JacPDstandardNth11phi,kmadd(Gt111,JacPDstandardNth1phi,kmadd(Gt311,JacPDstandardNth3phi,kmul(Gt211,JacPDstandardNth2phi))))));
@@ -1496,23 +1513,6 @@ static void ML_BSSN_MP_constraints1_Body(cGH const * restrict const cctkGH, int
CCTK_REAL_VEC Rphi33 =
kmul(ToReal(-2),kadd(cdphi233,kmadd(SQR(cdphi3),kmul(kmadd(gt33L,gtu33,ToReal(-1)),ToReal(2)),kmul(gt33L,kmadd(cdphi233,gtu33,kmadd(kmadd(cdphi213,gtu13,kmul(cdphi223,gtu23)),ToReal(2),kmadd(gtu11,kmadd(SQR(cdphi1),ToReal(2),cdphi211),kmadd(gtu22,kmadd(SQR(cdphi2),ToReal(2),cdphi222),kmadd(cdphi3,kmul(kmadd(cdphi1,gtu13,kmul(cdphi2,gtu23)),ToReal(4)),kmul(gtu12,kmadd(cdphi212,ToReal(2),kmul(cdphi1,kmul(cdphi2,ToReal(4))))))))))))));
- CCTK_REAL_VEC e4phi =
- IfThen(conformalMethod,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
-
- CCTK_REAL_VEC em4phi = INV(e4phi);
-
- CCTK_REAL_VEC gu11 = kmul(em4phi,gtu11);
-
- CCTK_REAL_VEC gu12 = kmul(em4phi,gtu12);
-
- CCTK_REAL_VEC gu13 = kmul(em4phi,gtu13);
-
- CCTK_REAL_VEC gu22 = kmul(em4phi,gtu22);
-
- CCTK_REAL_VEC gu23 = kmul(em4phi,gtu23);
-
- CCTK_REAL_VEC gu33 = kmul(em4phi,gtu33);
-
CCTK_REAL_VEC R11 = kadd(Rphi11,Rt11);
CCTK_REAL_VEC R12 = kadd(Rphi12,Rt12);
diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_constraints2.cc b/ML_BSSN_MP/src/ML_BSSN_MP_constraints2.cc
index 8288b08..0b6239b 100644
--- a/ML_BSSN_MP/src/ML_BSSN_MP_constraints2.cc
+++ b/ML_BSSN_MP/src/ML_BSSN_MP_constraints2.cc
@@ -891,8 +891,8 @@ static void ML_BSSN_MP_constraints2_Body(cGH const * restrict const cctkGH, int
CCTK_REAL_VEC Gt333 =
kmadd(Gtl133,gtu13,kmadd(Gtl233,gtu23,kmul(Gtl333,gtu33)));
- CCTK_REAL_VEC fac1 =
- IfThen(conformalMethod,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
+ CCTK_REAL_VEC fac1 = IfThen(conformalMethod ==
+ 1,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
CCTK_REAL_VEC cdphi1 = kmul(fac1,JacPDstandardNth1phi);
diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_convertFromADMBase.cc b/ML_BSSN_MP/src/ML_BSSN_MP_convertFromADMBase.cc
index c158da7..2e4ac13 100644
--- a/ML_BSSN_MP/src/ML_BSSN_MP_convertFromADMBase.cc
+++ b/ML_BSSN_MP/src/ML_BSSN_MP_convertFromADMBase.cc
@@ -269,7 +269,7 @@ static void ML_BSSN_MP_convertFromADMBase_Body(cGH const * restrict const cctkGH
CCTK_REAL_VEC em4phi;
- if (conformalMethod)
+ if (conformalMethod == 1)
{
phiL = kpow(detg,-0.166666666666666666666666666667);
diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBase.cc b/ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBase.cc
index a229cd8..1d4b546 100644
--- a/ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBase.cc
+++ b/ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBase.cc
@@ -246,8 +246,8 @@ static void ML_BSSN_MP_convertToADMBase_Body(cGH const * restrict const cctkGH,
}
/* Calculate temporaries and grid functions */
- CCTK_REAL_VEC e4phi =
- IfThen(conformalMethod,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
+ CCTK_REAL_VEC e4phi = IfThen(conformalMethod ==
+ 1,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
gxxL = kmul(gt11L,e4phi);
diff --git a/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_Minkowski.cc b/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_Minkowski.cc
index 5d55170..e69b6de 100644
--- a/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_Minkowski.cc
+++ b/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_Minkowski.cc
@@ -222,7 +222,7 @@ static void ML_BSSN_MP_O8_Minkowski_Body(cGH const * restrict const cctkGH, int
}
/* Calculate temporaries and grid functions */
- CCTK_REAL_VEC phiL = IfThen(conformalMethod,ToReal(1),ToReal(0));
+ CCTK_REAL_VEC phiL = IfThen(conformalMethod == 1,ToReal(1),ToReal(0));
CCTK_REAL_VEC gt11L = ToReal(1);
diff --git a/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_RHS1.cc b/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_RHS1.cc
index f235204..531eaeb 100644
--- a/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_RHS1.cc
+++ b/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_RHS1.cc
@@ -1213,8 +1213,13 @@ static void ML_BSSN_MP_O8_RHS1_Body(cGH const * restrict const cctkGH, int const
CCTK_REAL_VEC Xtn3 =
kmadd(Gt311,gtu11,kmadd(Gt322,gtu22,kmadd(Gt333,gtu33,kmul(kmadd(Gt312,gtu12,kmadd(Gt313,gtu13,kmul(Gt323,gtu23))),ToReal(2)))));
- CCTK_REAL_VEC fac1 =
- IfThen(conformalMethod,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
+ CCTK_REAL_VEC e4phi = IfThen(conformalMethod ==
+ 1,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
+
+ CCTK_REAL_VEC em4phi = INV(e4phi);
+
+ CCTK_REAL_VEC fac1 = IfThen(conformalMethod ==
+ 1,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
CCTK_REAL_VEC cdphi1 = kmul(fac1,JacPDstandardNth1phi);
@@ -1267,11 +1272,6 @@ static void ML_BSSN_MP_O8_RHS1_Body(cGH const * restrict const cctkGH, int const
CCTK_REAL_VEC Atu33 =
kmadd(Atm31,gtu13,kmadd(Atm32,gtu23,kmul(Atm33,gtu33)));
- CCTK_REAL_VEC e4phi =
- IfThen(conformalMethod,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
-
- CCTK_REAL_VEC em4phi = INV(e4phi);
-
CCTK_REAL_VEC rho =
kmul(INV(SQR(alphaL)),kadd(eTttL,kmadd(eTxxL,SQR(beta1L),kmadd(eTyyL,SQR(beta2L),kmadd(eTzzL,SQR(beta3L),kmadd(kmadd(beta2L,eTtyL,kmul(beta3L,eTtzL)),ToReal(-2),kmul(kmadd(beta2L,kmul(beta3L,eTyzL),kmul(beta1L,kmadd(beta2L,eTxyL,kmsub(beta3L,eTxzL,eTtxL)))),ToReal(2))))))));
@@ -1287,8 +1287,8 @@ static void ML_BSSN_MP_O8_RHS1_Body(cGH const * restrict const cctkGH, int const
CCTK_REAL_VEC trS =
kmul(em4phi,kmadd(eTxxL,gtu11,kmadd(eTyyL,gtu22,kmadd(eTzzL,gtu33,kmul(kmadd(eTxyL,gtu12,kmadd(eTxzL,gtu13,kmul(eTyzL,gtu23))),ToReal(2))))));
- CCTK_REAL_VEC phirhsL =
- IfThen(conformalMethod,kmul(phiL,kmadd(kadd(JacPDstandardNth1beta1,kadd(JacPDstandardNth2beta2,JacPDstandardNth3beta3)),ToReal(-0.333333333333333333333333333333),kmul(alphaL,kmul(trKL,ToReal(0.333333333333333333333333333333))))),kmadd(alphaL,kmul(trKL,ToReal(-0.166666666666666666666666666667)),kmul(kadd(JacPDstandardNth1beta1,kadd(JacPDstandardNth2beta2,JacPDstandardNth3beta3)),ToReal(0.166666666666666666666666666667))));
+ CCTK_REAL_VEC phirhsL = kneg(kmul(IfThen(conformalMethod ==
+ 1,kmul(phiL,ToReal(0.333333333333333333333333333333)),ToReal(-0.166666666666666666666666666667)),kadd(JacPDstandardNth1beta1,kadd(JacPDstandardNth2beta2,knmsub(alphaL,trKL,JacPDstandardNth3beta3)))));
CCTK_REAL_VEC gt11rhsL =
kmul(ToReal(-0.666666666666666666666666666667),kmadd(kmadd(gt12L,JacPDstandardNth1beta2,kmul(gt13L,JacPDstandardNth1beta3)),ToReal(-3),kmadd(gt11L,kadd(JacPDstandardNth2beta2,kmadd(JacPDstandardNth1beta1,ToReal(-2),JacPDstandardNth3beta3)),kmul(alphaL,kmul(At11L,ToReal(3))))));
diff --git a/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_RHS2.cc b/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_RHS2.cc
index cdc4bad..869e111 100644
--- a/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_RHS2.cc
+++ b/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_RHS2.cc
@@ -1626,6 +1626,35 @@ static void ML_BSSN_MP_O8_RHS2_Body(cGH const * restrict const cctkGH, int const
CCTK_REAL_VEC Xtn3 =
kmadd(Gt311,gtu11,kmadd(Gt322,gtu22,kmadd(Gt333,gtu33,kmul(kmadd(Gt312,gtu12,kmadd(Gt313,gtu13,kmul(Gt323,gtu23))),ToReal(2)))));
+ CCTK_REAL_VEC e4phi = IfThen(conformalMethod ==
+ 1,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
+
+ CCTK_REAL_VEC em4phi = INV(e4phi);
+
+ CCTK_REAL_VEC g11 = kmul(gt11L,e4phi);
+
+ CCTK_REAL_VEC g12 = kmul(gt12L,e4phi);
+
+ CCTK_REAL_VEC g13 = kmul(gt13L,e4phi);
+
+ CCTK_REAL_VEC g22 = kmul(gt22L,e4phi);
+
+ CCTK_REAL_VEC g23 = kmul(gt23L,e4phi);
+
+ CCTK_REAL_VEC g33 = kmul(gt33L,e4phi);
+
+ CCTK_REAL_VEC gu11 = kmul(em4phi,gtu11);
+
+ CCTK_REAL_VEC gu12 = kmul(em4phi,gtu12);
+
+ CCTK_REAL_VEC gu13 = kmul(em4phi,gtu13);
+
+ CCTK_REAL_VEC gu22 = kmul(em4phi,gtu22);
+
+ CCTK_REAL_VEC gu23 = kmul(em4phi,gtu23);
+
+ CCTK_REAL_VEC gu33 = kmul(em4phi,gtu33);
+
CCTK_REAL_VEC Rt11 =
kmul(ToReal(0.5),knmsub(gtu11,JacPDstandardNth11gt11,knmsub(gtu22,JacPDstandardNth22gt11,knmsub(gtu33,JacPDstandardNth33gt11,knmsub(gtu12,kadd(JacPDstandardNth21gt11,JacPDstandardNth12gt11),knmsub(gtu13,kadd(JacPDstandardNth31gt11,JacPDstandardNth13gt11),knmsub(gtu23,kadd(JacPDstandardNth32gt11,JacPDstandardNth23gt11),kmadd(kmadd(Gt211,Gtlu211,kmadd(Gt212,Gtlu212,kmadd(Gt213,Gtlu213,kmadd(Gt311,Gtlu311,kmadd(Gt312,Gtlu312,kmadd(Gt313,Gtlu313,kmul(gt11L,JacPDstandardNth1Xt1))))))),ToReal(2),kmadd(gt12L,kmul(JacPDstandardNth1Xt2,ToReal(2)),kmadd(gt13L,kmul(JacPDstandardNth1Xt3,ToReal(2)),kmadd(Gtl111,kmul(Xtn1,ToReal(2)),kmadd(Gtl112,kmul(Xtn2,ToReal(2)),kmadd(Gtl113,kmul(Xtn3,ToReal(2)),kmadd(kmadd(Gt211,Gtlu121,kmadd(Gt212,Gtlu122,kmadd(Gt213,Gtlu123,kmadd(Gt311,Gtlu131,kmadd(Gt312,Gtlu132,kmul(Gt313,Gtlu133)))))),ToReal(4),kmul(kmadd(Gt111,Gtlu111,kmadd(Gt112,Gtlu112,kmul(Gt113,Gtlu113))),ToReal(6))))))))))))))));
@@ -1644,8 +1673,8 @@ static void ML_BSSN_MP_O8_RHS2_Body(cGH const * restrict const cctkGH, int const
CCTK_REAL_VEC Rt33 =
kmul(ToReal(0.5),knmsub(gtu11,JacPDstandardNth11gt33,knmsub(gtu22,JacPDstandardNth22gt33,knmsub(gtu33,JacPDstandardNth33gt33,knmsub(gtu12,kadd(JacPDstandardNth21gt33,JacPDstandardNth12gt33),knmsub(gtu13,kadd(JacPDstandardNth31gt33,JacPDstandardNth13gt33),knmsub(gtu23,kadd(JacPDstandardNth32gt33,JacPDstandardNth23gt33),kmadd(gt23L,kmul(JacPDstandardNth3Xt2,ToReal(2)),kmadd(gt33L,kmul(JacPDstandardNth3Xt3,ToReal(2)),kmadd(Gtl313,kmul(Xtn1,ToReal(2)),kmadd(Gtl323,kmul(Xtn2,ToReal(2)),kmadd(Gtl333,kmul(Xtn3,ToReal(2)),kmadd(ToReal(2),kmadd(Gt133,Gtlu133,kmadd(Gt213,Gtlu231,kmadd(Gt223,Gtlu232,kmadd(Gt233,Gtlu233,kmadd(gt13L,JacPDstandardNth3Xt1,kmadd(Gt113,kmadd(Gtlu311,ToReal(2),Gtlu131),kmul(Gt123,kmadd(Gtlu312,ToReal(2),Gtlu132)))))))),kmadd(kmadd(Gt133,Gtlu313,kmadd(Gt213,Gtlu321,kmadd(Gt223,Gtlu322,kmul(Gt233,Gtlu323)))),ToReal(4),kmul(kmadd(Gt313,Gtlu331,kmadd(Gt323,Gtlu332,kmul(Gt333,Gtlu333))),ToReal(6))))))))))))))));
- CCTK_REAL_VEC fac1 =
- IfThen(conformalMethod,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
+ CCTK_REAL_VEC fac1 = IfThen(conformalMethod ==
+ 1,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
CCTK_REAL_VEC cdphi1 = kmul(fac1,JacPDstandardNth1phi);
@@ -1653,8 +1682,8 @@ static void ML_BSSN_MP_O8_RHS2_Body(cGH const * restrict const cctkGH, int const
CCTK_REAL_VEC cdphi3 = kmul(fac1,JacPDstandardNth3phi);
- CCTK_REAL_VEC fac2 =
- IfThen(conformalMethod,kmul(INV(SQR(phiL)),ToReal(0.5)),ToReal(0));
+ CCTK_REAL_VEC fac2 = IfThen(conformalMethod ==
+ 1,kmul(INV(SQR(phiL)),ToReal(0.5)),ToReal(0));
CCTK_REAL_VEC cdphi211 =
kmadd(fac2,SQR(JacPDstandardNth1phi),kmul(fac1,ksub(JacPDstandardNth11phi,kmadd(Gt111,JacPDstandardNth1phi,kmadd(Gt311,JacPDstandardNth3phi,kmul(Gt211,JacPDstandardNth2phi))))));
@@ -1719,35 +1748,6 @@ static void ML_BSSN_MP_O8_RHS2_Body(cGH const * restrict const cctkGH, int const
CCTK_REAL_VEC Atm33 =
kmadd(At13L,gtu13,kmadd(At23L,gtu23,kmul(At33L,gtu33)));
- CCTK_REAL_VEC e4phi =
- IfThen(conformalMethod,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
-
- CCTK_REAL_VEC em4phi = INV(e4phi);
-
- CCTK_REAL_VEC g11 = kmul(gt11L,e4phi);
-
- CCTK_REAL_VEC g12 = kmul(gt12L,e4phi);
-
- CCTK_REAL_VEC g13 = kmul(gt13L,e4phi);
-
- CCTK_REAL_VEC g22 = kmul(gt22L,e4phi);
-
- CCTK_REAL_VEC g23 = kmul(gt23L,e4phi);
-
- CCTK_REAL_VEC g33 = kmul(gt33L,e4phi);
-
- CCTK_REAL_VEC gu11 = kmul(em4phi,gtu11);
-
- CCTK_REAL_VEC gu12 = kmul(em4phi,gtu12);
-
- CCTK_REAL_VEC gu13 = kmul(em4phi,gtu13);
-
- CCTK_REAL_VEC gu22 = kmul(em4phi,gtu22);
-
- CCTK_REAL_VEC gu23 = kmul(em4phi,gtu23);
-
- CCTK_REAL_VEC gu33 = kmul(em4phi,gtu33);
-
CCTK_REAL_VEC R11 = kadd(Rphi11,Rt11);
CCTK_REAL_VEC R12 = kadd(Rphi12,Rt12);
diff --git a/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_boundary.cc b/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_boundary.cc
index f0f3b15..d0122f9 100644
--- a/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_boundary.cc
+++ b/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_boundary.cc
@@ -258,7 +258,7 @@ static void ML_BSSN_MP_O8_boundary_Body(cGH const * restrict const cctkGH, int c
}
/* Calculate temporaries and grid functions */
- CCTK_REAL_VEC phiL = IfThen(conformalMethod,ToReal(1),ToReal(0));
+ CCTK_REAL_VEC phiL = IfThen(conformalMethod == 1,ToReal(1),ToReal(0));
CCTK_REAL_VEC gt11L = ToReal(1);
diff --git a/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_constraints1.cc b/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_constraints1.cc
index 6130f29..6d42c2a 100644
--- a/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_constraints1.cc
+++ b/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_constraints1.cc
@@ -1430,6 +1430,23 @@ static void ML_BSSN_MP_O8_constraints1_Body(cGH const * restrict const cctkGH, i
CCTK_REAL_VEC Xtn3 =
kmadd(Gt311,gtu11,kmadd(Gt322,gtu22,kmadd(Gt333,gtu33,kmul(kmadd(Gt312,gtu12,kmadd(Gt313,gtu13,kmul(Gt323,gtu23))),ToReal(2)))));
+ CCTK_REAL_VEC e4phi = IfThen(conformalMethod ==
+ 1,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
+
+ CCTK_REAL_VEC em4phi = INV(e4phi);
+
+ CCTK_REAL_VEC gu11 = kmul(em4phi,gtu11);
+
+ CCTK_REAL_VEC gu12 = kmul(em4phi,gtu12);
+
+ CCTK_REAL_VEC gu13 = kmul(em4phi,gtu13);
+
+ CCTK_REAL_VEC gu22 = kmul(em4phi,gtu22);
+
+ CCTK_REAL_VEC gu23 = kmul(em4phi,gtu23);
+
+ CCTK_REAL_VEC gu33 = kmul(em4phi,gtu33);
+
CCTK_REAL_VEC Rt11 =
kmul(ToReal(0.5),knmsub(gtu11,JacPDstandardNth11gt11,knmsub(gtu22,JacPDstandardNth22gt11,knmsub(gtu33,JacPDstandardNth33gt11,knmsub(gtu12,kadd(JacPDstandardNth21gt11,JacPDstandardNth12gt11),knmsub(gtu13,kadd(JacPDstandardNth31gt11,JacPDstandardNth13gt11),knmsub(gtu23,kadd(JacPDstandardNth32gt11,JacPDstandardNth23gt11),kmadd(kmadd(Gt211,Gtlu211,kmadd(Gt212,Gtlu212,kmadd(Gt213,Gtlu213,kmadd(Gt311,Gtlu311,kmadd(Gt312,Gtlu312,kmadd(Gt313,Gtlu313,kmul(gt11L,JacPDstandardNth1Xt1))))))),ToReal(2),kmadd(gt12L,kmul(JacPDstandardNth1Xt2,ToReal(2)),kmadd(gt13L,kmul(JacPDstandardNth1Xt3,ToReal(2)),kmadd(Gtl111,kmul(Xtn1,ToReal(2)),kmadd(Gtl112,kmul(Xtn2,ToReal(2)),kmadd(Gtl113,kmul(Xtn3,ToReal(2)),kmadd(kmadd(Gt211,Gtlu121,kmadd(Gt212,Gtlu122,kmadd(Gt213,Gtlu123,kmadd(Gt311,Gtlu131,kmadd(Gt312,Gtlu132,kmul(Gt313,Gtlu133)))))),ToReal(4),kmul(kmadd(Gt111,Gtlu111,kmadd(Gt112,Gtlu112,kmul(Gt113,Gtlu113))),ToReal(6))))))))))))))));
@@ -1448,8 +1465,8 @@ static void ML_BSSN_MP_O8_constraints1_Body(cGH const * restrict const cctkGH, i
CCTK_REAL_VEC Rt33 =
kmul(ToReal(0.5),knmsub(gtu11,JacPDstandardNth11gt33,knmsub(gtu22,JacPDstandardNth22gt33,knmsub(gtu33,JacPDstandardNth33gt33,knmsub(gtu12,kadd(JacPDstandardNth21gt33,JacPDstandardNth12gt33),knmsub(gtu13,kadd(JacPDstandardNth31gt33,JacPDstandardNth13gt33),knmsub(gtu23,kadd(JacPDstandardNth32gt33,JacPDstandardNth23gt33),kmadd(gt23L,kmul(JacPDstandardNth3Xt2,ToReal(2)),kmadd(gt33L,kmul(JacPDstandardNth3Xt3,ToReal(2)),kmadd(Gtl313,kmul(Xtn1,ToReal(2)),kmadd(Gtl323,kmul(Xtn2,ToReal(2)),kmadd(Gtl333,kmul(Xtn3,ToReal(2)),kmadd(ToReal(2),kmadd(Gt133,Gtlu133,kmadd(Gt213,Gtlu231,kmadd(Gt223,Gtlu232,kmadd(Gt233,Gtlu233,kmadd(gt13L,JacPDstandardNth3Xt1,kmadd(Gt113,kmadd(Gtlu311,ToReal(2),Gtlu131),kmul(Gt123,kmadd(Gtlu312,ToReal(2),Gtlu132)))))))),kmadd(kmadd(Gt133,Gtlu313,kmadd(Gt213,Gtlu321,kmadd(Gt223,Gtlu322,kmul(Gt233,Gtlu323)))),ToReal(4),kmul(kmadd(Gt313,Gtlu331,kmadd(Gt323,Gtlu332,kmul(Gt333,Gtlu333))),ToReal(6))))))))))))))));
- CCTK_REAL_VEC fac1 =
- IfThen(conformalMethod,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
+ CCTK_REAL_VEC fac1 = IfThen(conformalMethod ==
+ 1,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
CCTK_REAL_VEC cdphi1 = kmul(fac1,JacPDstandardNth1phi);
@@ -1457,8 +1474,8 @@ static void ML_BSSN_MP_O8_constraints1_Body(cGH const * restrict const cctkGH, i
CCTK_REAL_VEC cdphi3 = kmul(fac1,JacPDstandardNth3phi);
- CCTK_REAL_VEC fac2 =
- IfThen(conformalMethod,kmul(INV(SQR(phiL)),ToReal(0.5)),ToReal(0));
+ CCTK_REAL_VEC fac2 = IfThen(conformalMethod ==
+ 1,kmul(INV(SQR(phiL)),ToReal(0.5)),ToReal(0));
CCTK_REAL_VEC cdphi211 =
kmadd(fac2,SQR(JacPDstandardNth1phi),kmul(fac1,ksub(JacPDstandardNth11phi,kmadd(Gt111,JacPDstandardNth1phi,kmadd(Gt311,JacPDstandardNth3phi,kmul(Gt211,JacPDstandardNth2phi))))));
@@ -1496,23 +1513,6 @@ static void ML_BSSN_MP_O8_constraints1_Body(cGH const * restrict const cctkGH, i
CCTK_REAL_VEC Rphi33 =
kmul(ToReal(-2),kadd(cdphi233,kmadd(SQR(cdphi3),kmul(kmadd(gt33L,gtu33,ToReal(-1)),ToReal(2)),kmul(gt33L,kmadd(cdphi233,gtu33,kmadd(kmadd(cdphi213,gtu13,kmul(cdphi223,gtu23)),ToReal(2),kmadd(gtu11,kmadd(SQR(cdphi1),ToReal(2),cdphi211),kmadd(gtu22,kmadd(SQR(cdphi2),ToReal(2),cdphi222),kmadd(cdphi3,kmul(kmadd(cdphi1,gtu13,kmul(cdphi2,gtu23)),ToReal(4)),kmul(gtu12,kmadd(cdphi212,ToReal(2),kmul(cdphi1,kmul(cdphi2,ToReal(4))))))))))))));
- CCTK_REAL_VEC e4phi =
- IfThen(conformalMethod,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
-
- CCTK_REAL_VEC em4phi = INV(e4phi);
-
- CCTK_REAL_VEC gu11 = kmul(em4phi,gtu11);
-
- CCTK_REAL_VEC gu12 = kmul(em4phi,gtu12);
-
- CCTK_REAL_VEC gu13 = kmul(em4phi,gtu13);
-
- CCTK_REAL_VEC gu22 = kmul(em4phi,gtu22);
-
- CCTK_REAL_VEC gu23 = kmul(em4phi,gtu23);
-
- CCTK_REAL_VEC gu33 = kmul(em4phi,gtu33);
-
CCTK_REAL_VEC R11 = kadd(Rphi11,Rt11);
CCTK_REAL_VEC R12 = kadd(Rphi12,Rt12);
diff --git a/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_constraints2.cc b/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_constraints2.cc
index 216a96a..516aebf 100644
--- a/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_constraints2.cc
+++ b/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_constraints2.cc
@@ -891,8 +891,8 @@ static void ML_BSSN_MP_O8_constraints2_Body(cGH const * restrict const cctkGH, i
CCTK_REAL_VEC Gt333 =
kmadd(Gtl133,gtu13,kmadd(Gtl233,gtu23,kmul(Gtl333,gtu33)));
- CCTK_REAL_VEC fac1 =
- IfThen(conformalMethod,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
+ CCTK_REAL_VEC fac1 = IfThen(conformalMethod ==
+ 1,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
CCTK_REAL_VEC cdphi1 = kmul(fac1,JacPDstandardNth1phi);
diff --git a/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_convertFromADMBase.cc b/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_convertFromADMBase.cc
index 2cf4397..cfa713a 100644
--- a/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_convertFromADMBase.cc
+++ b/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_convertFromADMBase.cc
@@ -269,7 +269,7 @@ static void ML_BSSN_MP_O8_convertFromADMBase_Body(cGH const * restrict const cct
CCTK_REAL_VEC em4phi;
- if (conformalMethod)
+ if (conformalMethod == 1)
{
phiL = kpow(detg,-0.166666666666666666666666666667);
diff --git a/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_convertToADMBase.cc b/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_convertToADMBase.cc
index f5b2043..7475347 100644
--- a/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_convertToADMBase.cc
+++ b/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_convertToADMBase.cc
@@ -246,8 +246,8 @@ static void ML_BSSN_MP_O8_convertToADMBase_Body(cGH const * restrict const cctkG
}
/* Calculate temporaries and grid functions */
- CCTK_REAL_VEC e4phi =
- IfThen(conformalMethod,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
+ CCTK_REAL_VEC e4phi = IfThen(conformalMethod ==
+ 1,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
gxxL = kmul(gt11L,e4phi);
diff --git a/ML_BSSN_O2/src/ML_BSSN_O2_Minkowski.cc b/ML_BSSN_O2/src/ML_BSSN_O2_Minkowski.cc
index 3a9e014..695446f 100644
--- a/ML_BSSN_O2/src/ML_BSSN_O2_Minkowski.cc
+++ b/ML_BSSN_O2/src/ML_BSSN_O2_Minkowski.cc
@@ -222,7 +222,7 @@ static void ML_BSSN_O2_Minkowski_Body(cGH const * restrict const cctkGH, int con
}
/* Calculate temporaries and grid functions */
- CCTK_REAL_VEC phiL = IfThen(conformalMethod,ToReal(1),ToReal(0));
+ CCTK_REAL_VEC phiL = IfThen(conformalMethod == 1,ToReal(1),ToReal(0));
CCTK_REAL_VEC gt11L = ToReal(1);
diff --git a/ML_BSSN_O2/src/ML_BSSN_O2_RHS1.cc b/ML_BSSN_O2/src/ML_BSSN_O2_RHS1.cc
index 89602bb..f36a81d 100644
--- a/ML_BSSN_O2/src/ML_BSSN_O2_RHS1.cc
+++ b/ML_BSSN_O2/src/ML_BSSN_O2_RHS1.cc
@@ -1213,8 +1213,13 @@ static void ML_BSSN_O2_RHS1_Body(cGH const * restrict const cctkGH, int const di
CCTK_REAL_VEC Xtn3 =
kmadd(Gt311,gtu11,kmadd(Gt322,gtu22,kmadd(Gt333,gtu33,kmul(kmadd(Gt312,gtu12,kmadd(Gt313,gtu13,kmul(Gt323,gtu23))),ToReal(2)))));
- CCTK_REAL_VEC fac1 =
- IfThen(conformalMethod,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
+ CCTK_REAL_VEC e4phi = IfThen(conformalMethod ==
+ 1,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
+
+ CCTK_REAL_VEC em4phi = INV(e4phi);
+
+ CCTK_REAL_VEC fac1 = IfThen(conformalMethod ==
+ 1,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
CCTK_REAL_VEC cdphi1 = kmul(fac1,JacPDstandardNth1phi);
@@ -1267,11 +1272,6 @@ static void ML_BSSN_O2_RHS1_Body(cGH const * restrict const cctkGH, int const di
CCTK_REAL_VEC Atu33 =
kmadd(Atm31,gtu13,kmadd(Atm32,gtu23,kmul(Atm33,gtu33)));
- CCTK_REAL_VEC e4phi =
- IfThen(conformalMethod,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
-
- CCTK_REAL_VEC em4phi = INV(e4phi);
-
CCTK_REAL_VEC rho =
kmul(INV(SQR(alphaL)),kadd(eTttL,kmadd(eTxxL,SQR(beta1L),kmadd(eTyyL,SQR(beta2L),kmadd(eTzzL,SQR(beta3L),kmadd(kmadd(beta2L,eTtyL,kmul(beta3L,eTtzL)),ToReal(-2),kmul(kmadd(beta2L,kmul(beta3L,eTyzL),kmul(beta1L,kmadd(beta2L,eTxyL,kmsub(beta3L,eTxzL,eTtxL)))),ToReal(2))))))));
@@ -1287,8 +1287,8 @@ static void ML_BSSN_O2_RHS1_Body(cGH const * restrict const cctkGH, int const di
CCTK_REAL_VEC trS =
kmul(em4phi,kmadd(eTxxL,gtu11,kmadd(eTyyL,gtu22,kmadd(eTzzL,gtu33,kmul(kmadd(eTxyL,gtu12,kmadd(eTxzL,gtu13,kmul(eTyzL,gtu23))),ToReal(2))))));
- CCTK_REAL_VEC phirhsL =
- IfThen(conformalMethod,kmul(phiL,kmadd(kadd(JacPDstandardNth1beta1,kadd(JacPDstandardNth2beta2,JacPDstandardNth3beta3)),ToReal(-0.333333333333333333333333333333),kmul(alphaL,kmul(trKL,ToReal(0.333333333333333333333333333333))))),kmadd(alphaL,kmul(trKL,ToReal(-0.166666666666666666666666666667)),kmul(kadd(JacPDstandardNth1beta1,kadd(JacPDstandardNth2beta2,JacPDstandardNth3beta3)),ToReal(0.166666666666666666666666666667))));
+ CCTK_REAL_VEC phirhsL = kneg(kmul(IfThen(conformalMethod ==
+ 1,kmul(phiL,ToReal(0.333333333333333333333333333333)),ToReal(-0.166666666666666666666666666667)),kadd(JacPDstandardNth1beta1,kadd(JacPDstandardNth2beta2,knmsub(alphaL,trKL,JacPDstandardNth3beta3)))));
CCTK_REAL_VEC gt11rhsL =
kmul(ToReal(-0.666666666666666666666666666667),kmadd(kmadd(gt12L,JacPDstandardNth1beta2,kmul(gt13L,JacPDstandardNth1beta3)),ToReal(-3),kmadd(gt11L,kadd(JacPDstandardNth2beta2,kmadd(JacPDstandardNth1beta1,ToReal(-2),JacPDstandardNth3beta3)),kmul(alphaL,kmul(At11L,ToReal(3))))));
diff --git a/ML_BSSN_O2/src/ML_BSSN_O2_RHS2.cc b/ML_BSSN_O2/src/ML_BSSN_O2_RHS2.cc
index d92ff3d..47c3722 100644
--- a/ML_BSSN_O2/src/ML_BSSN_O2_RHS2.cc
+++ b/ML_BSSN_O2/src/ML_BSSN_O2_RHS2.cc
@@ -1626,6 +1626,35 @@ static void ML_BSSN_O2_RHS2_Body(cGH const * restrict const cctkGH, int const di
CCTK_REAL_VEC Xtn3 =
kmadd(Gt311,gtu11,kmadd(Gt322,gtu22,kmadd(Gt333,gtu33,kmul(kmadd(Gt312,gtu12,kmadd(Gt313,gtu13,kmul(Gt323,gtu23))),ToReal(2)))));
+ CCTK_REAL_VEC e4phi = IfThen(conformalMethod ==
+ 1,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
+
+ CCTK_REAL_VEC em4phi = INV(e4phi);
+
+ CCTK_REAL_VEC g11 = kmul(gt11L,e4phi);
+
+ CCTK_REAL_VEC g12 = kmul(gt12L,e4phi);
+
+ CCTK_REAL_VEC g13 = kmul(gt13L,e4phi);
+
+ CCTK_REAL_VEC g22 = kmul(gt22L,e4phi);
+
+ CCTK_REAL_VEC g23 = kmul(gt23L,e4phi);
+
+ CCTK_REAL_VEC g33 = kmul(gt33L,e4phi);
+
+ CCTK_REAL_VEC gu11 = kmul(em4phi,gtu11);
+
+ CCTK_REAL_VEC gu12 = kmul(em4phi,gtu12);
+
+ CCTK_REAL_VEC gu13 = kmul(em4phi,gtu13);
+
+ CCTK_REAL_VEC gu22 = kmul(em4phi,gtu22);
+
+ CCTK_REAL_VEC gu23 = kmul(em4phi,gtu23);
+
+ CCTK_REAL_VEC gu33 = kmul(em4phi,gtu33);
+
CCTK_REAL_VEC Rt11 =
kmul(ToReal(0.5),knmsub(gtu11,JacPDstandardNth11gt11,knmsub(gtu22,JacPDstandardNth22gt11,knmsub(gtu33,JacPDstandardNth33gt11,knmsub(gtu12,kadd(JacPDstandardNth21gt11,JacPDstandardNth12gt11),knmsub(gtu13,kadd(JacPDstandardNth31gt11,JacPDstandardNth13gt11),knmsub(gtu23,kadd(JacPDstandardNth32gt11,JacPDstandardNth23gt11),kmadd(kmadd(Gt211,Gtlu211,kmadd(Gt212,Gtlu212,kmadd(Gt213,Gtlu213,kmadd(Gt311,Gtlu311,kmadd(Gt312,Gtlu312,kmadd(Gt313,Gtlu313,kmul(gt11L,JacPDstandardNth1Xt1))))))),ToReal(2),kmadd(gt12L,kmul(JacPDstandardNth1Xt2,ToReal(2)),kmadd(gt13L,kmul(JacPDstandardNth1Xt3,ToReal(2)),kmadd(Gtl111,kmul(Xtn1,ToReal(2)),kmadd(Gtl112,kmul(Xtn2,ToReal(2)),kmadd(Gtl113,kmul(Xtn3,ToReal(2)),kmadd(kmadd(Gt211,Gtlu121,kmadd(Gt212,Gtlu122,kmadd(Gt213,Gtlu123,kmadd(Gt311,Gtlu131,kmadd(Gt312,Gtlu132,kmul(Gt313,Gtlu133)))))),ToReal(4),kmul(kmadd(Gt111,Gtlu111,kmadd(Gt112,Gtlu112,kmul(Gt113,Gtlu113))),ToReal(6))))))))))))))));
@@ -1644,8 +1673,8 @@ static void ML_BSSN_O2_RHS2_Body(cGH const * restrict const cctkGH, int const di
CCTK_REAL_VEC Rt33 =
kmul(ToReal(0.5),knmsub(gtu11,JacPDstandardNth11gt33,knmsub(gtu22,JacPDstandardNth22gt33,knmsub(gtu33,JacPDstandardNth33gt33,knmsub(gtu12,kadd(JacPDstandardNth21gt33,JacPDstandardNth12gt33),knmsub(gtu13,kadd(JacPDstandardNth31gt33,JacPDstandardNth13gt33),knmsub(gtu23,kadd(JacPDstandardNth32gt33,JacPDstandardNth23gt33),kmadd(gt23L,kmul(JacPDstandardNth3Xt2,ToReal(2)),kmadd(gt33L,kmul(JacPDstandardNth3Xt3,ToReal(2)),kmadd(Gtl313,kmul(Xtn1,ToReal(2)),kmadd(Gtl323,kmul(Xtn2,ToReal(2)),kmadd(Gtl333,kmul(Xtn3,ToReal(2)),kmadd(ToReal(2),kmadd(Gt133,Gtlu133,kmadd(Gt213,Gtlu231,kmadd(Gt223,Gtlu232,kmadd(Gt233,Gtlu233,kmadd(gt13L,JacPDstandardNth3Xt1,kmadd(Gt113,kmadd(Gtlu311,ToReal(2),Gtlu131),kmul(Gt123,kmadd(Gtlu312,ToReal(2),Gtlu132)))))))),kmadd(kmadd(Gt133,Gtlu313,kmadd(Gt213,Gtlu321,kmadd(Gt223,Gtlu322,kmul(Gt233,Gtlu323)))),ToReal(4),kmul(kmadd(Gt313,Gtlu331,kmadd(Gt323,Gtlu332,kmul(Gt333,Gtlu333))),ToReal(6))))))))))))))));
- CCTK_REAL_VEC fac1 =
- IfThen(conformalMethod,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
+ CCTK_REAL_VEC fac1 = IfThen(conformalMethod ==
+ 1,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
CCTK_REAL_VEC cdphi1 = kmul(fac1,JacPDstandardNth1phi);
@@ -1653,8 +1682,8 @@ static void ML_BSSN_O2_RHS2_Body(cGH const * restrict const cctkGH, int const di
CCTK_REAL_VEC cdphi3 = kmul(fac1,JacPDstandardNth3phi);
- CCTK_REAL_VEC fac2 =
- IfThen(conformalMethod,kmul(INV(SQR(phiL)),ToReal(0.5)),ToReal(0));
+ CCTK_REAL_VEC fac2 = IfThen(conformalMethod ==
+ 1,kmul(INV(SQR(phiL)),ToReal(0.5)),ToReal(0));
CCTK_REAL_VEC cdphi211 =
kmadd(fac2,SQR(JacPDstandardNth1phi),kmul(fac1,ksub(JacPDstandardNth11phi,kmadd(Gt111,JacPDstandardNth1phi,kmadd(Gt311,JacPDstandardNth3phi,kmul(Gt211,JacPDstandardNth2phi))))));
@@ -1719,35 +1748,6 @@ static void ML_BSSN_O2_RHS2_Body(cGH const * restrict const cctkGH, int const di
CCTK_REAL_VEC Atm33 =
kmadd(At13L,gtu13,kmadd(At23L,gtu23,kmul(At33L,gtu33)));
- CCTK_REAL_VEC e4phi =
- IfThen(conformalMethod,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
-
- CCTK_REAL_VEC em4phi = INV(e4phi);
-
- CCTK_REAL_VEC g11 = kmul(gt11L,e4phi);
-
- CCTK_REAL_VEC g12 = kmul(gt12L,e4phi);
-
- CCTK_REAL_VEC g13 = kmul(gt13L,e4phi);
-
- CCTK_REAL_VEC g22 = kmul(gt22L,e4phi);
-
- CCTK_REAL_VEC g23 = kmul(gt23L,e4phi);
-
- CCTK_REAL_VEC g33 = kmul(gt33L,e4phi);
-
- CCTK_REAL_VEC gu11 = kmul(em4phi,gtu11);
-
- CCTK_REAL_VEC gu12 = kmul(em4phi,gtu12);
-
- CCTK_REAL_VEC gu13 = kmul(em4phi,gtu13);
-
- CCTK_REAL_VEC gu22 = kmul(em4phi,gtu22);
-
- CCTK_REAL_VEC gu23 = kmul(em4phi,gtu23);
-
- CCTK_REAL_VEC gu33 = kmul(em4phi,gtu33);
-
CCTK_REAL_VEC R11 = kadd(Rphi11,Rt11);
CCTK_REAL_VEC R12 = kadd(Rphi12,Rt12);
diff --git a/ML_BSSN_O2/src/ML_BSSN_O2_boundary.cc b/ML_BSSN_O2/src/ML_BSSN_O2_boundary.cc
index a985413..091b3a7 100644
--- a/ML_BSSN_O2/src/ML_BSSN_O2_boundary.cc
+++ b/ML_BSSN_O2/src/ML_BSSN_O2_boundary.cc
@@ -258,7 +258,7 @@ static void ML_BSSN_O2_boundary_Body(cGH const * restrict const cctkGH, int cons
}
/* Calculate temporaries and grid functions */
- CCTK_REAL_VEC phiL = IfThen(conformalMethod,ToReal(1),ToReal(0));
+ CCTK_REAL_VEC phiL = IfThen(conformalMethod == 1,ToReal(1),ToReal(0));
CCTK_REAL_VEC gt11L = ToReal(1);
diff --git a/ML_BSSN_O2/src/ML_BSSN_O2_constraints1.cc b/ML_BSSN_O2/src/ML_BSSN_O2_constraints1.cc
index 20233ae..2cb6c49 100644
--- a/ML_BSSN_O2/src/ML_BSSN_O2_constraints1.cc
+++ b/ML_BSSN_O2/src/ML_BSSN_O2_constraints1.cc
@@ -1430,6 +1430,23 @@ static void ML_BSSN_O2_constraints1_Body(cGH const * restrict const cctkGH, int
CCTK_REAL_VEC Xtn3 =
kmadd(Gt311,gtu11,kmadd(Gt322,gtu22,kmadd(Gt333,gtu33,kmul(kmadd(Gt312,gtu12,kmadd(Gt313,gtu13,kmul(Gt323,gtu23))),ToReal(2)))));
+ CCTK_REAL_VEC e4phi = IfThen(conformalMethod ==
+ 1,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
+
+ CCTK_REAL_VEC em4phi = INV(e4phi);
+
+ CCTK_REAL_VEC gu11 = kmul(em4phi,gtu11);
+
+ CCTK_REAL_VEC gu12 = kmul(em4phi,gtu12);
+
+ CCTK_REAL_VEC gu13 = kmul(em4phi,gtu13);
+
+ CCTK_REAL_VEC gu22 = kmul(em4phi,gtu22);
+
+ CCTK_REAL_VEC gu23 = kmul(em4phi,gtu23);
+
+ CCTK_REAL_VEC gu33 = kmul(em4phi,gtu33);
+
CCTK_REAL_VEC Rt11 =
kmul(ToReal(0.5),knmsub(gtu11,JacPDstandardNth11gt11,knmsub(gtu22,JacPDstandardNth22gt11,knmsub(gtu33,JacPDstandardNth33gt11,knmsub(gtu12,kadd(JacPDstandardNth21gt11,JacPDstandardNth12gt11),knmsub(gtu13,kadd(JacPDstandardNth31gt11,JacPDstandardNth13gt11),knmsub(gtu23,kadd(JacPDstandardNth32gt11,JacPDstandardNth23gt11),kmadd(kmadd(Gt211,Gtlu211,kmadd(Gt212,Gtlu212,kmadd(Gt213,Gtlu213,kmadd(Gt311,Gtlu311,kmadd(Gt312,Gtlu312,kmadd(Gt313,Gtlu313,kmul(gt11L,JacPDstandardNth1Xt1))))))),ToReal(2),kmadd(gt12L,kmul(JacPDstandardNth1Xt2,ToReal(2)),kmadd(gt13L,kmul(JacPDstandardNth1Xt3,ToReal(2)),kmadd(Gtl111,kmul(Xtn1,ToReal(2)),kmadd(Gtl112,kmul(Xtn2,ToReal(2)),kmadd(Gtl113,kmul(Xtn3,ToReal(2)),kmadd(kmadd(Gt211,Gtlu121,kmadd(Gt212,Gtlu122,kmadd(Gt213,Gtlu123,kmadd(Gt311,Gtlu131,kmadd(Gt312,Gtlu132,kmul(Gt313,Gtlu133)))))),ToReal(4),kmul(kmadd(Gt111,Gtlu111,kmadd(Gt112,Gtlu112,kmul(Gt113,Gtlu113))),ToReal(6))))))))))))))));
@@ -1448,8 +1465,8 @@ static void ML_BSSN_O2_constraints1_Body(cGH const * restrict const cctkGH, int
CCTK_REAL_VEC Rt33 =
kmul(ToReal(0.5),knmsub(gtu11,JacPDstandardNth11gt33,knmsub(gtu22,JacPDstandardNth22gt33,knmsub(gtu33,JacPDstandardNth33gt33,knmsub(gtu12,kadd(JacPDstandardNth21gt33,JacPDstandardNth12gt33),knmsub(gtu13,kadd(JacPDstandardNth31gt33,JacPDstandardNth13gt33),knmsub(gtu23,kadd(JacPDstandardNth32gt33,JacPDstandardNth23gt33),kmadd(gt23L,kmul(JacPDstandardNth3Xt2,ToReal(2)),kmadd(gt33L,kmul(JacPDstandardNth3Xt3,ToReal(2)),kmadd(Gtl313,kmul(Xtn1,ToReal(2)),kmadd(Gtl323,kmul(Xtn2,ToReal(2)),kmadd(Gtl333,kmul(Xtn3,ToReal(2)),kmadd(ToReal(2),kmadd(Gt133,Gtlu133,kmadd(Gt213,Gtlu231,kmadd(Gt223,Gtlu232,kmadd(Gt233,Gtlu233,kmadd(gt13L,JacPDstandardNth3Xt1,kmadd(Gt113,kmadd(Gtlu311,ToReal(2),Gtlu131),kmul(Gt123,kmadd(Gtlu312,ToReal(2),Gtlu132)))))))),kmadd(kmadd(Gt133,Gtlu313,kmadd(Gt213,Gtlu321,kmadd(Gt223,Gtlu322,kmul(Gt233,Gtlu323)))),ToReal(4),kmul(kmadd(Gt313,Gtlu331,kmadd(Gt323,Gtlu332,kmul(Gt333,Gtlu333))),ToReal(6))))))))))))))));
- CCTK_REAL_VEC fac1 =
- IfThen(conformalMethod,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
+ CCTK_REAL_VEC fac1 = IfThen(conformalMethod ==
+ 1,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
CCTK_REAL_VEC cdphi1 = kmul(fac1,JacPDstandardNth1phi);
@@ -1457,8 +1474,8 @@ static void ML_BSSN_O2_constraints1_Body(cGH const * restrict const cctkGH, int
CCTK_REAL_VEC cdphi3 = kmul(fac1,JacPDstandardNth3phi);
- CCTK_REAL_VEC fac2 =
- IfThen(conformalMethod,kmul(INV(SQR(phiL)),ToReal(0.5)),ToReal(0));
+ CCTK_REAL_VEC fac2 = IfThen(conformalMethod ==
+ 1,kmul(INV(SQR(phiL)),ToReal(0.5)),ToReal(0));
CCTK_REAL_VEC cdphi211 =
kmadd(fac2,SQR(JacPDstandardNth1phi),kmul(fac1,ksub(JacPDstandardNth11phi,kmadd(Gt111,JacPDstandardNth1phi,kmadd(Gt311,JacPDstandardNth3phi,kmul(Gt211,JacPDstandardNth2phi))))));
@@ -1496,23 +1513,6 @@ static void ML_BSSN_O2_constraints1_Body(cGH const * restrict const cctkGH, int
CCTK_REAL_VEC Rphi33 =
kmul(ToReal(-2),kadd(cdphi233,kmadd(SQR(cdphi3),kmul(kmadd(gt33L,gtu33,ToReal(-1)),ToReal(2)),kmul(gt33L,kmadd(cdphi233,gtu33,kmadd(kmadd(cdphi213,gtu13,kmul(cdphi223,gtu23)),ToReal(2),kmadd(gtu11,kmadd(SQR(cdphi1),ToReal(2),cdphi211),kmadd(gtu22,kmadd(SQR(cdphi2),ToReal(2),cdphi222),kmadd(cdphi3,kmul(kmadd(cdphi1,gtu13,kmul(cdphi2,gtu23)),ToReal(4)),kmul(gtu12,kmadd(cdphi212,ToReal(2),kmul(cdphi1,kmul(cdphi2,ToReal(4))))))))))))));
- CCTK_REAL_VEC e4phi =
- IfThen(conformalMethod,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
-
- CCTK_REAL_VEC em4phi = INV(e4phi);
-
- CCTK_REAL_VEC gu11 = kmul(em4phi,gtu11);
-
- CCTK_REAL_VEC gu12 = kmul(em4phi,gtu12);
-
- CCTK_REAL_VEC gu13 = kmul(em4phi,gtu13);
-
- CCTK_REAL_VEC gu22 = kmul(em4phi,gtu22);
-
- CCTK_REAL_VEC gu23 = kmul(em4phi,gtu23);
-
- CCTK_REAL_VEC gu33 = kmul(em4phi,gtu33);
-
CCTK_REAL_VEC R11 = kadd(Rphi11,Rt11);
CCTK_REAL_VEC R12 = kadd(Rphi12,Rt12);
diff --git a/ML_BSSN_O2/src/ML_BSSN_O2_constraints2.cc b/ML_BSSN_O2/src/ML_BSSN_O2_constraints2.cc
index e180c4c..8c1baec 100644
--- a/ML_BSSN_O2/src/ML_BSSN_O2_constraints2.cc
+++ b/ML_BSSN_O2/src/ML_BSSN_O2_constraints2.cc
@@ -891,8 +891,8 @@ static void ML_BSSN_O2_constraints2_Body(cGH const * restrict const cctkGH, int
CCTK_REAL_VEC Gt333 =
kmadd(Gtl133,gtu13,kmadd(Gtl233,gtu23,kmul(Gtl333,gtu33)));
- CCTK_REAL_VEC fac1 =
- IfThen(conformalMethod,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
+ CCTK_REAL_VEC fac1 = IfThen(conformalMethod ==
+ 1,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
CCTK_REAL_VEC cdphi1 = kmul(fac1,JacPDstandardNth1phi);
diff --git a/ML_BSSN_O2/src/ML_BSSN_O2_convertFromADMBase.cc b/ML_BSSN_O2/src/ML_BSSN_O2_convertFromADMBase.cc
index a2b3d26..dc43551 100644
--- a/ML_BSSN_O2/src/ML_BSSN_O2_convertFromADMBase.cc
+++ b/ML_BSSN_O2/src/ML_BSSN_O2_convertFromADMBase.cc
@@ -269,7 +269,7 @@ static void ML_BSSN_O2_convertFromADMBase_Body(cGH const * restrict const cctkGH
CCTK_REAL_VEC em4phi;
- if (conformalMethod)
+ if (conformalMethod == 1)
{
phiL = kpow(detg,-0.166666666666666666666666666667);
diff --git a/ML_BSSN_O2/src/ML_BSSN_O2_convertToADMBase.cc b/ML_BSSN_O2/src/ML_BSSN_O2_convertToADMBase.cc
index 7b47457..bbe8fc7 100644
--- a/ML_BSSN_O2/src/ML_BSSN_O2_convertToADMBase.cc
+++ b/ML_BSSN_O2/src/ML_BSSN_O2_convertToADMBase.cc
@@ -246,8 +246,8 @@ static void ML_BSSN_O2_convertToADMBase_Body(cGH const * restrict const cctkGH,
}
/* Calculate temporaries and grid functions */
- CCTK_REAL_VEC e4phi =
- IfThen(conformalMethod,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
+ CCTK_REAL_VEC e4phi = IfThen(conformalMethod ==
+ 1,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
gxxL = kmul(gt11L,e4phi);
diff --git a/ML_BSSN_O8/src/ML_BSSN_O8_Minkowski.cc b/ML_BSSN_O8/src/ML_BSSN_O8_Minkowski.cc
index e96858a..d86dee6 100644
--- a/ML_BSSN_O8/src/ML_BSSN_O8_Minkowski.cc
+++ b/ML_BSSN_O8/src/ML_BSSN_O8_Minkowski.cc
@@ -222,7 +222,7 @@ static void ML_BSSN_O8_Minkowski_Body(cGH const * restrict const cctkGH, int con
}
/* Calculate temporaries and grid functions */
- CCTK_REAL_VEC phiL = IfThen(conformalMethod,ToReal(1),ToReal(0));
+ CCTK_REAL_VEC phiL = IfThen(conformalMethod == 1,ToReal(1),ToReal(0));
CCTK_REAL_VEC gt11L = ToReal(1);
diff --git a/ML_BSSN_O8/src/ML_BSSN_O8_RHS1.cc b/ML_BSSN_O8/src/ML_BSSN_O8_RHS1.cc
index 968fd06..0e99354 100644
--- a/ML_BSSN_O8/src/ML_BSSN_O8_RHS1.cc
+++ b/ML_BSSN_O8/src/ML_BSSN_O8_RHS1.cc
@@ -1213,8 +1213,13 @@ static void ML_BSSN_O8_RHS1_Body(cGH const * restrict const cctkGH, int const di
CCTK_REAL_VEC Xtn3 =
kmadd(Gt311,gtu11,kmadd(Gt322,gtu22,kmadd(Gt333,gtu33,kmul(kmadd(Gt312,gtu12,kmadd(Gt313,gtu13,kmul(Gt323,gtu23))),ToReal(2)))));
- CCTK_REAL_VEC fac1 =
- IfThen(conformalMethod,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
+ CCTK_REAL_VEC e4phi = IfThen(conformalMethod ==
+ 1,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
+
+ CCTK_REAL_VEC em4phi = INV(e4phi);
+
+ CCTK_REAL_VEC fac1 = IfThen(conformalMethod ==
+ 1,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
CCTK_REAL_VEC cdphi1 = kmul(fac1,JacPDstandardNth1phi);
@@ -1267,11 +1272,6 @@ static void ML_BSSN_O8_RHS1_Body(cGH const * restrict const cctkGH, int const di
CCTK_REAL_VEC Atu33 =
kmadd(Atm31,gtu13,kmadd(Atm32,gtu23,kmul(Atm33,gtu33)));
- CCTK_REAL_VEC e4phi =
- IfThen(conformalMethod,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
-
- CCTK_REAL_VEC em4phi = INV(e4phi);
-
CCTK_REAL_VEC rho =
kmul(INV(SQR(alphaL)),kadd(eTttL,kmadd(eTxxL,SQR(beta1L),kmadd(eTyyL,SQR(beta2L),kmadd(eTzzL,SQR(beta3L),kmadd(kmadd(beta2L,eTtyL,kmul(beta3L,eTtzL)),ToReal(-2),kmul(kmadd(beta2L,kmul(beta3L,eTyzL),kmul(beta1L,kmadd(beta2L,eTxyL,kmsub(beta3L,eTxzL,eTtxL)))),ToReal(2))))))));
@@ -1287,8 +1287,8 @@ static void ML_BSSN_O8_RHS1_Body(cGH const * restrict const cctkGH, int const di
CCTK_REAL_VEC trS =
kmul(em4phi,kmadd(eTxxL,gtu11,kmadd(eTyyL,gtu22,kmadd(eTzzL,gtu33,kmul(kmadd(eTxyL,gtu12,kmadd(eTxzL,gtu13,kmul(eTyzL,gtu23))),ToReal(2))))));
- CCTK_REAL_VEC phirhsL =
- IfThen(conformalMethod,kmul(phiL,kmadd(kadd(JacPDstandardNth1beta1,kadd(JacPDstandardNth2beta2,JacPDstandardNth3beta3)),ToReal(-0.333333333333333333333333333333),kmul(alphaL,kmul(trKL,ToReal(0.333333333333333333333333333333))))),kmadd(alphaL,kmul(trKL,ToReal(-0.166666666666666666666666666667)),kmul(kadd(JacPDstandardNth1beta1,kadd(JacPDstandardNth2beta2,JacPDstandardNth3beta3)),ToReal(0.166666666666666666666666666667))));
+ CCTK_REAL_VEC phirhsL = kneg(kmul(IfThen(conformalMethod ==
+ 1,kmul(phiL,ToReal(0.333333333333333333333333333333)),ToReal(-0.166666666666666666666666666667)),kadd(JacPDstandardNth1beta1,kadd(JacPDstandardNth2beta2,knmsub(alphaL,trKL,JacPDstandardNth3beta3)))));
CCTK_REAL_VEC gt11rhsL =
kmul(ToReal(-0.666666666666666666666666666667),kmadd(kmadd(gt12L,JacPDstandardNth1beta2,kmul(gt13L,JacPDstandardNth1beta3)),ToReal(-3),kmadd(gt11L,kadd(JacPDstandardNth2beta2,kmadd(JacPDstandardNth1beta1,ToReal(-2),JacPDstandardNth3beta3)),kmul(alphaL,kmul(At11L,ToReal(3))))));
diff --git a/ML_BSSN_O8/src/ML_BSSN_O8_RHS2.cc b/ML_BSSN_O8/src/ML_BSSN_O8_RHS2.cc
index b57d3e9..679510f 100644
--- a/ML_BSSN_O8/src/ML_BSSN_O8_RHS2.cc
+++ b/ML_BSSN_O8/src/ML_BSSN_O8_RHS2.cc
@@ -1626,6 +1626,35 @@ static void ML_BSSN_O8_RHS2_Body(cGH const * restrict const cctkGH, int const di
CCTK_REAL_VEC Xtn3 =
kmadd(Gt311,gtu11,kmadd(Gt322,gtu22,kmadd(Gt333,gtu33,kmul(kmadd(Gt312,gtu12,kmadd(Gt313,gtu13,kmul(Gt323,gtu23))),ToReal(2)))));
+ CCTK_REAL_VEC e4phi = IfThen(conformalMethod ==
+ 1,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
+
+ CCTK_REAL_VEC em4phi = INV(e4phi);
+
+ CCTK_REAL_VEC g11 = kmul(gt11L,e4phi);
+
+ CCTK_REAL_VEC g12 = kmul(gt12L,e4phi);
+
+ CCTK_REAL_VEC g13 = kmul(gt13L,e4phi);
+
+ CCTK_REAL_VEC g22 = kmul(gt22L,e4phi);
+
+ CCTK_REAL_VEC g23 = kmul(gt23L,e4phi);
+
+ CCTK_REAL_VEC g33 = kmul(gt33L,e4phi);
+
+ CCTK_REAL_VEC gu11 = kmul(em4phi,gtu11);
+
+ CCTK_REAL_VEC gu12 = kmul(em4phi,gtu12);
+
+ CCTK_REAL_VEC gu13 = kmul(em4phi,gtu13);
+
+ CCTK_REAL_VEC gu22 = kmul(em4phi,gtu22);
+
+ CCTK_REAL_VEC gu23 = kmul(em4phi,gtu23);
+
+ CCTK_REAL_VEC gu33 = kmul(em4phi,gtu33);
+
CCTK_REAL_VEC Rt11 =
kmul(ToReal(0.5),knmsub(gtu11,JacPDstandardNth11gt11,knmsub(gtu22,JacPDstandardNth22gt11,knmsub(gtu33,JacPDstandardNth33gt11,knmsub(gtu12,kadd(JacPDstandardNth21gt11,JacPDstandardNth12gt11),knmsub(gtu13,kadd(JacPDstandardNth31gt11,JacPDstandardNth13gt11),knmsub(gtu23,kadd(JacPDstandardNth32gt11,JacPDstandardNth23gt11),kmadd(kmadd(Gt211,Gtlu211,kmadd(Gt212,Gtlu212,kmadd(Gt213,Gtlu213,kmadd(Gt311,Gtlu311,kmadd(Gt312,Gtlu312,kmadd(Gt313,Gtlu313,kmul(gt11L,JacPDstandardNth1Xt1))))))),ToReal(2),kmadd(gt12L,kmul(JacPDstandardNth1Xt2,ToReal(2)),kmadd(gt13L,kmul(JacPDstandardNth1Xt3,ToReal(2)),kmadd(Gtl111,kmul(Xtn1,ToReal(2)),kmadd(Gtl112,kmul(Xtn2,ToReal(2)),kmadd(Gtl113,kmul(Xtn3,ToReal(2)),kmadd(kmadd(Gt211,Gtlu121,kmadd(Gt212,Gtlu122,kmadd(Gt213,Gtlu123,kmadd(Gt311,Gtlu131,kmadd(Gt312,Gtlu132,kmul(Gt313,Gtlu133)))))),ToReal(4),kmul(kmadd(Gt111,Gtlu111,kmadd(Gt112,Gtlu112,kmul(Gt113,Gtlu113))),ToReal(6))))))))))))))));
@@ -1644,8 +1673,8 @@ static void ML_BSSN_O8_RHS2_Body(cGH const * restrict const cctkGH, int const di
CCTK_REAL_VEC Rt33 =
kmul(ToReal(0.5),knmsub(gtu11,JacPDstandardNth11gt33,knmsub(gtu22,JacPDstandardNth22gt33,knmsub(gtu33,JacPDstandardNth33gt33,knmsub(gtu12,kadd(JacPDstandardNth21gt33,JacPDstandardNth12gt33),knmsub(gtu13,kadd(JacPDstandardNth31gt33,JacPDstandardNth13gt33),knmsub(gtu23,kadd(JacPDstandardNth32gt33,JacPDstandardNth23gt33),kmadd(gt23L,kmul(JacPDstandardNth3Xt2,ToReal(2)),kmadd(gt33L,kmul(JacPDstandardNth3Xt3,ToReal(2)),kmadd(Gtl313,kmul(Xtn1,ToReal(2)),kmadd(Gtl323,kmul(Xtn2,ToReal(2)),kmadd(Gtl333,kmul(Xtn3,ToReal(2)),kmadd(ToReal(2),kmadd(Gt133,Gtlu133,kmadd(Gt213,Gtlu231,kmadd(Gt223,Gtlu232,kmadd(Gt233,Gtlu233,kmadd(gt13L,JacPDstandardNth3Xt1,kmadd(Gt113,kmadd(Gtlu311,ToReal(2),Gtlu131),kmul(Gt123,kmadd(Gtlu312,ToReal(2),Gtlu132)))))))),kmadd(kmadd(Gt133,Gtlu313,kmadd(Gt213,Gtlu321,kmadd(Gt223,Gtlu322,kmul(Gt233,Gtlu323)))),ToReal(4),kmul(kmadd(Gt313,Gtlu331,kmadd(Gt323,Gtlu332,kmul(Gt333,Gtlu333))),ToReal(6))))))))))))))));
- CCTK_REAL_VEC fac1 =
- IfThen(conformalMethod,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
+ CCTK_REAL_VEC fac1 = IfThen(conformalMethod ==
+ 1,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
CCTK_REAL_VEC cdphi1 = kmul(fac1,JacPDstandardNth1phi);
@@ -1653,8 +1682,8 @@ static void ML_BSSN_O8_RHS2_Body(cGH const * restrict const cctkGH, int const di
CCTK_REAL_VEC cdphi3 = kmul(fac1,JacPDstandardNth3phi);
- CCTK_REAL_VEC fac2 =
- IfThen(conformalMethod,kmul(INV(SQR(phiL)),ToReal(0.5)),ToReal(0));
+ CCTK_REAL_VEC fac2 = IfThen(conformalMethod ==
+ 1,kmul(INV(SQR(phiL)),ToReal(0.5)),ToReal(0));
CCTK_REAL_VEC cdphi211 =
kmadd(fac2,SQR(JacPDstandardNth1phi),kmul(fac1,ksub(JacPDstandardNth11phi,kmadd(Gt111,JacPDstandardNth1phi,kmadd(Gt311,JacPDstandardNth3phi,kmul(Gt211,JacPDstandardNth2phi))))));
@@ -1719,35 +1748,6 @@ static void ML_BSSN_O8_RHS2_Body(cGH const * restrict const cctkGH, int const di
CCTK_REAL_VEC Atm33 =
kmadd(At13L,gtu13,kmadd(At23L,gtu23,kmul(At33L,gtu33)));
- CCTK_REAL_VEC e4phi =
- IfThen(conformalMethod,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
-
- CCTK_REAL_VEC em4phi = INV(e4phi);
-
- CCTK_REAL_VEC g11 = kmul(gt11L,e4phi);
-
- CCTK_REAL_VEC g12 = kmul(gt12L,e4phi);
-
- CCTK_REAL_VEC g13 = kmul(gt13L,e4phi);
-
- CCTK_REAL_VEC g22 = kmul(gt22L,e4phi);
-
- CCTK_REAL_VEC g23 = kmul(gt23L,e4phi);
-
- CCTK_REAL_VEC g33 = kmul(gt33L,e4phi);
-
- CCTK_REAL_VEC gu11 = kmul(em4phi,gtu11);
-
- CCTK_REAL_VEC gu12 = kmul(em4phi,gtu12);
-
- CCTK_REAL_VEC gu13 = kmul(em4phi,gtu13);
-
- CCTK_REAL_VEC gu22 = kmul(em4phi,gtu22);
-
- CCTK_REAL_VEC gu23 = kmul(em4phi,gtu23);
-
- CCTK_REAL_VEC gu33 = kmul(em4phi,gtu33);
-
CCTK_REAL_VEC R11 = kadd(Rphi11,Rt11);
CCTK_REAL_VEC R12 = kadd(Rphi12,Rt12);
diff --git a/ML_BSSN_O8/src/ML_BSSN_O8_boundary.cc b/ML_BSSN_O8/src/ML_BSSN_O8_boundary.cc
index ea2dfd5..c4cd116 100644
--- a/ML_BSSN_O8/src/ML_BSSN_O8_boundary.cc
+++ b/ML_BSSN_O8/src/ML_BSSN_O8_boundary.cc
@@ -258,7 +258,7 @@ static void ML_BSSN_O8_boundary_Body(cGH const * restrict const cctkGH, int cons
}
/* Calculate temporaries and grid functions */
- CCTK_REAL_VEC phiL = IfThen(conformalMethod,ToReal(1),ToReal(0));
+ CCTK_REAL_VEC phiL = IfThen(conformalMethod == 1,ToReal(1),ToReal(0));
CCTK_REAL_VEC gt11L = ToReal(1);
diff --git a/ML_BSSN_O8/src/ML_BSSN_O8_constraints1.cc b/ML_BSSN_O8/src/ML_BSSN_O8_constraints1.cc
index a4d0133..0096166 100644
--- a/ML_BSSN_O8/src/ML_BSSN_O8_constraints1.cc
+++ b/ML_BSSN_O8/src/ML_BSSN_O8_constraints1.cc
@@ -1430,6 +1430,23 @@ static void ML_BSSN_O8_constraints1_Body(cGH const * restrict const cctkGH, int
CCTK_REAL_VEC Xtn3 =
kmadd(Gt311,gtu11,kmadd(Gt322,gtu22,kmadd(Gt333,gtu33,kmul(kmadd(Gt312,gtu12,kmadd(Gt313,gtu13,kmul(Gt323,gtu23))),ToReal(2)))));
+ CCTK_REAL_VEC e4phi = IfThen(conformalMethod ==
+ 1,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
+
+ CCTK_REAL_VEC em4phi = INV(e4phi);
+
+ CCTK_REAL_VEC gu11 = kmul(em4phi,gtu11);
+
+ CCTK_REAL_VEC gu12 = kmul(em4phi,gtu12);
+
+ CCTK_REAL_VEC gu13 = kmul(em4phi,gtu13);
+
+ CCTK_REAL_VEC gu22 = kmul(em4phi,gtu22);
+
+ CCTK_REAL_VEC gu23 = kmul(em4phi,gtu23);
+
+ CCTK_REAL_VEC gu33 = kmul(em4phi,gtu33);
+
CCTK_REAL_VEC Rt11 =
kmul(ToReal(0.5),knmsub(gtu11,JacPDstandardNth11gt11,knmsub(gtu22,JacPDstandardNth22gt11,knmsub(gtu33,JacPDstandardNth33gt11,knmsub(gtu12,kadd(JacPDstandardNth21gt11,JacPDstandardNth12gt11),knmsub(gtu13,kadd(JacPDstandardNth31gt11,JacPDstandardNth13gt11),knmsub(gtu23,kadd(JacPDstandardNth32gt11,JacPDstandardNth23gt11),kmadd(kmadd(Gt211,Gtlu211,kmadd(Gt212,Gtlu212,kmadd(Gt213,Gtlu213,kmadd(Gt311,Gtlu311,kmadd(Gt312,Gtlu312,kmadd(Gt313,Gtlu313,kmul(gt11L,JacPDstandardNth1Xt1))))))),ToReal(2),kmadd(gt12L,kmul(JacPDstandardNth1Xt2,ToReal(2)),kmadd(gt13L,kmul(JacPDstandardNth1Xt3,ToReal(2)),kmadd(Gtl111,kmul(Xtn1,ToReal(2)),kmadd(Gtl112,kmul(Xtn2,ToReal(2)),kmadd(Gtl113,kmul(Xtn3,ToReal(2)),kmadd(kmadd(Gt211,Gtlu121,kmadd(Gt212,Gtlu122,kmadd(Gt213,Gtlu123,kmadd(Gt311,Gtlu131,kmadd(Gt312,Gtlu132,kmul(Gt313,Gtlu133)))))),ToReal(4),kmul(kmadd(Gt111,Gtlu111,kmadd(Gt112,Gtlu112,kmul(Gt113,Gtlu113))),ToReal(6))))))))))))))));
@@ -1448,8 +1465,8 @@ static void ML_BSSN_O8_constraints1_Body(cGH const * restrict const cctkGH, int
CCTK_REAL_VEC Rt33 =
kmul(ToReal(0.5),knmsub(gtu11,JacPDstandardNth11gt33,knmsub(gtu22,JacPDstandardNth22gt33,knmsub(gtu33,JacPDstandardNth33gt33,knmsub(gtu12,kadd(JacPDstandardNth21gt33,JacPDstandardNth12gt33),knmsub(gtu13,kadd(JacPDstandardNth31gt33,JacPDstandardNth13gt33),knmsub(gtu23,kadd(JacPDstandardNth32gt33,JacPDstandardNth23gt33),kmadd(gt23L,kmul(JacPDstandardNth3Xt2,ToReal(2)),kmadd(gt33L,kmul(JacPDstandardNth3Xt3,ToReal(2)),kmadd(Gtl313,kmul(Xtn1,ToReal(2)),kmadd(Gtl323,kmul(Xtn2,ToReal(2)),kmadd(Gtl333,kmul(Xtn3,ToReal(2)),kmadd(ToReal(2),kmadd(Gt133,Gtlu133,kmadd(Gt213,Gtlu231,kmadd(Gt223,Gtlu232,kmadd(Gt233,Gtlu233,kmadd(gt13L,JacPDstandardNth3Xt1,kmadd(Gt113,kmadd(Gtlu311,ToReal(2),Gtlu131),kmul(Gt123,kmadd(Gtlu312,ToReal(2),Gtlu132)))))))),kmadd(kmadd(Gt133,Gtlu313,kmadd(Gt213,Gtlu321,kmadd(Gt223,Gtlu322,kmul(Gt233,Gtlu323)))),ToReal(4),kmul(kmadd(Gt313,Gtlu331,kmadd(Gt323,Gtlu332,kmul(Gt333,Gtlu333))),ToReal(6))))))))))))))));
- CCTK_REAL_VEC fac1 =
- IfThen(conformalMethod,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
+ CCTK_REAL_VEC fac1 = IfThen(conformalMethod ==
+ 1,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
CCTK_REAL_VEC cdphi1 = kmul(fac1,JacPDstandardNth1phi);
@@ -1457,8 +1474,8 @@ static void ML_BSSN_O8_constraints1_Body(cGH const * restrict const cctkGH, int
CCTK_REAL_VEC cdphi3 = kmul(fac1,JacPDstandardNth3phi);
- CCTK_REAL_VEC fac2 =
- IfThen(conformalMethod,kmul(INV(SQR(phiL)),ToReal(0.5)),ToReal(0));
+ CCTK_REAL_VEC fac2 = IfThen(conformalMethod ==
+ 1,kmul(INV(SQR(phiL)),ToReal(0.5)),ToReal(0));
CCTK_REAL_VEC cdphi211 =
kmadd(fac2,SQR(JacPDstandardNth1phi),kmul(fac1,ksub(JacPDstandardNth11phi,kmadd(Gt111,JacPDstandardNth1phi,kmadd(Gt311,JacPDstandardNth3phi,kmul(Gt211,JacPDstandardNth2phi))))));
@@ -1496,23 +1513,6 @@ static void ML_BSSN_O8_constraints1_Body(cGH const * restrict const cctkGH, int
CCTK_REAL_VEC Rphi33 =
kmul(ToReal(-2),kadd(cdphi233,kmadd(SQR(cdphi3),kmul(kmadd(gt33L,gtu33,ToReal(-1)),ToReal(2)),kmul(gt33L,kmadd(cdphi233,gtu33,kmadd(kmadd(cdphi213,gtu13,kmul(cdphi223,gtu23)),ToReal(2),kmadd(gtu11,kmadd(SQR(cdphi1),ToReal(2),cdphi211),kmadd(gtu22,kmadd(SQR(cdphi2),ToReal(2),cdphi222),kmadd(cdphi3,kmul(kmadd(cdphi1,gtu13,kmul(cdphi2,gtu23)),ToReal(4)),kmul(gtu12,kmadd(cdphi212,ToReal(2),kmul(cdphi1,kmul(cdphi2,ToReal(4))))))))))))));
- CCTK_REAL_VEC e4phi =
- IfThen(conformalMethod,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
-
- CCTK_REAL_VEC em4phi = INV(e4phi);
-
- CCTK_REAL_VEC gu11 = kmul(em4phi,gtu11);
-
- CCTK_REAL_VEC gu12 = kmul(em4phi,gtu12);
-
- CCTK_REAL_VEC gu13 = kmul(em4phi,gtu13);
-
- CCTK_REAL_VEC gu22 = kmul(em4phi,gtu22);
-
- CCTK_REAL_VEC gu23 = kmul(em4phi,gtu23);
-
- CCTK_REAL_VEC gu33 = kmul(em4phi,gtu33);
-
CCTK_REAL_VEC R11 = kadd(Rphi11,Rt11);
CCTK_REAL_VEC R12 = kadd(Rphi12,Rt12);
diff --git a/ML_BSSN_O8/src/ML_BSSN_O8_constraints2.cc b/ML_BSSN_O8/src/ML_BSSN_O8_constraints2.cc
index 3e84842..aa753c6 100644
--- a/ML_BSSN_O8/src/ML_BSSN_O8_constraints2.cc
+++ b/ML_BSSN_O8/src/ML_BSSN_O8_constraints2.cc
@@ -891,8 +891,8 @@ static void ML_BSSN_O8_constraints2_Body(cGH const * restrict const cctkGH, int
CCTK_REAL_VEC Gt333 =
kmadd(Gtl133,gtu13,kmadd(Gtl233,gtu23,kmul(Gtl333,gtu33)));
- CCTK_REAL_VEC fac1 =
- IfThen(conformalMethod,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
+ CCTK_REAL_VEC fac1 = IfThen(conformalMethod ==
+ 1,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
CCTK_REAL_VEC cdphi1 = kmul(fac1,JacPDstandardNth1phi);
diff --git a/ML_BSSN_O8/src/ML_BSSN_O8_convertFromADMBase.cc b/ML_BSSN_O8/src/ML_BSSN_O8_convertFromADMBase.cc
index 5203f5b..ae5d33f 100644
--- a/ML_BSSN_O8/src/ML_BSSN_O8_convertFromADMBase.cc
+++ b/ML_BSSN_O8/src/ML_BSSN_O8_convertFromADMBase.cc
@@ -269,7 +269,7 @@ static void ML_BSSN_O8_convertFromADMBase_Body(cGH const * restrict const cctkGH
CCTK_REAL_VEC em4phi;
- if (conformalMethod)
+ if (conformalMethod == 1)
{
phiL = kpow(detg,-0.166666666666666666666666666667);
diff --git a/ML_BSSN_O8/src/ML_BSSN_O8_convertToADMBase.cc b/ML_BSSN_O8/src/ML_BSSN_O8_convertToADMBase.cc
index 98afb4e..031c91c 100644
--- a/ML_BSSN_O8/src/ML_BSSN_O8_convertToADMBase.cc
+++ b/ML_BSSN_O8/src/ML_BSSN_O8_convertToADMBase.cc
@@ -246,8 +246,8 @@ static void ML_BSSN_O8_convertToADMBase_Body(cGH const * restrict const cctkGH,
}
/* Calculate temporaries and grid functions */
- CCTK_REAL_VEC e4phi =
- IfThen(conformalMethod,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
+ CCTK_REAL_VEC e4phi = IfThen(conformalMethod ==
+ 1,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
gxxL = kmul(gt11L,e4phi);
diff --git a/ML_BSSN_UPW/src/ML_BSSN_UPW_Minkowski.cc b/ML_BSSN_UPW/src/ML_BSSN_UPW_Minkowski.cc
index a77438e..2d8ef13 100644
--- a/ML_BSSN_UPW/src/ML_BSSN_UPW_Minkowski.cc
+++ b/ML_BSSN_UPW/src/ML_BSSN_UPW_Minkowski.cc
@@ -222,7 +222,7 @@ static void ML_BSSN_UPW_Minkowski_Body(cGH const * restrict const cctkGH, int co
}
/* Calculate temporaries and grid functions */
- CCTK_REAL_VEC phiL = IfThen(conformalMethod,ToReal(1),ToReal(0));
+ CCTK_REAL_VEC phiL = IfThen(conformalMethod == 1,ToReal(1),ToReal(0));
CCTK_REAL_VEC gt11L = ToReal(1);
diff --git a/ML_BSSN_UPW/src/ML_BSSN_UPW_RHS1.cc b/ML_BSSN_UPW/src/ML_BSSN_UPW_RHS1.cc
index be7f83d..dd8b70e 100644
--- a/ML_BSSN_UPW/src/ML_BSSN_UPW_RHS1.cc
+++ b/ML_BSSN_UPW/src/ML_BSSN_UPW_RHS1.cc
@@ -1213,8 +1213,13 @@ static void ML_BSSN_UPW_RHS1_Body(cGH const * restrict const cctkGH, int const d
CCTK_REAL_VEC Xtn3 =
kmadd(Gt311,gtu11,kmadd(Gt322,gtu22,kmadd(Gt333,gtu33,kmul(kmadd(Gt312,gtu12,kmadd(Gt313,gtu13,kmul(Gt323,gtu23))),ToReal(2)))));
- CCTK_REAL_VEC fac1 =
- IfThen(conformalMethod,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
+ CCTK_REAL_VEC e4phi = IfThen(conformalMethod ==
+ 1,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
+
+ CCTK_REAL_VEC em4phi = INV(e4phi);
+
+ CCTK_REAL_VEC fac1 = IfThen(conformalMethod ==
+ 1,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
CCTK_REAL_VEC cdphi1 = kmul(fac1,JacPDstandardNth1phi);
@@ -1267,11 +1272,6 @@ static void ML_BSSN_UPW_RHS1_Body(cGH const * restrict const cctkGH, int const d
CCTK_REAL_VEC Atu33 =
kmadd(Atm31,gtu13,kmadd(Atm32,gtu23,kmul(Atm33,gtu33)));
- CCTK_REAL_VEC e4phi =
- IfThen(conformalMethod,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
-
- CCTK_REAL_VEC em4phi = INV(e4phi);
-
CCTK_REAL_VEC rho =
kmul(INV(SQR(alphaL)),kadd(eTttL,kmadd(eTxxL,SQR(beta1L),kmadd(eTyyL,SQR(beta2L),kmadd(eTzzL,SQR(beta3L),kmadd(kmadd(beta2L,eTtyL,kmul(beta3L,eTtzL)),ToReal(-2),kmul(kmadd(beta2L,kmul(beta3L,eTyzL),kmul(beta1L,kmadd(beta2L,eTxyL,kmsub(beta3L,eTxzL,eTtxL)))),ToReal(2))))))));
@@ -1287,8 +1287,8 @@ static void ML_BSSN_UPW_RHS1_Body(cGH const * restrict const cctkGH, int const d
CCTK_REAL_VEC trS =
kmul(em4phi,kmadd(eTxxL,gtu11,kmadd(eTyyL,gtu22,kmadd(eTzzL,gtu33,kmul(kmadd(eTxyL,gtu12,kmadd(eTxzL,gtu13,kmul(eTyzL,gtu23))),ToReal(2))))));
- CCTK_REAL_VEC phirhsL =
- IfThen(conformalMethod,kmul(phiL,kmadd(kadd(JacPDstandardNth1beta1,kadd(JacPDstandardNth2beta2,JacPDstandardNth3beta3)),ToReal(-0.333333333333333333333333333333),kmul(alphaL,kmul(trKL,ToReal(0.333333333333333333333333333333))))),kmadd(alphaL,kmul(trKL,ToReal(-0.166666666666666666666666666667)),kmul(kadd(JacPDstandardNth1beta1,kadd(JacPDstandardNth2beta2,JacPDstandardNth3beta3)),ToReal(0.166666666666666666666666666667))));
+ CCTK_REAL_VEC phirhsL = kneg(kmul(IfThen(conformalMethod ==
+ 1,kmul(phiL,ToReal(0.333333333333333333333333333333)),ToReal(-0.166666666666666666666666666667)),kadd(JacPDstandardNth1beta1,kadd(JacPDstandardNth2beta2,knmsub(alphaL,trKL,JacPDstandardNth3beta3)))));
CCTK_REAL_VEC gt11rhsL =
kmul(ToReal(-0.666666666666666666666666666667),kmadd(kmadd(gt12L,JacPDstandardNth1beta2,kmul(gt13L,JacPDstandardNth1beta3)),ToReal(-3),kmadd(gt11L,kadd(JacPDstandardNth2beta2,kmadd(JacPDstandardNth1beta1,ToReal(-2),JacPDstandardNth3beta3)),kmul(alphaL,kmul(At11L,ToReal(3))))));
diff --git a/ML_BSSN_UPW/src/ML_BSSN_UPW_RHS2.cc b/ML_BSSN_UPW/src/ML_BSSN_UPW_RHS2.cc
index 4178637..50107ad 100644
--- a/ML_BSSN_UPW/src/ML_BSSN_UPW_RHS2.cc
+++ b/ML_BSSN_UPW/src/ML_BSSN_UPW_RHS2.cc
@@ -1626,6 +1626,35 @@ static void ML_BSSN_UPW_RHS2_Body(cGH const * restrict const cctkGH, int const d
CCTK_REAL_VEC Xtn3 =
kmadd(Gt311,gtu11,kmadd(Gt322,gtu22,kmadd(Gt333,gtu33,kmul(kmadd(Gt312,gtu12,kmadd(Gt313,gtu13,kmul(Gt323,gtu23))),ToReal(2)))));
+ CCTK_REAL_VEC e4phi = IfThen(conformalMethod ==
+ 1,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
+
+ CCTK_REAL_VEC em4phi = INV(e4phi);
+
+ CCTK_REAL_VEC g11 = kmul(gt11L,e4phi);
+
+ CCTK_REAL_VEC g12 = kmul(gt12L,e4phi);
+
+ CCTK_REAL_VEC g13 = kmul(gt13L,e4phi);
+
+ CCTK_REAL_VEC g22 = kmul(gt22L,e4phi);
+
+ CCTK_REAL_VEC g23 = kmul(gt23L,e4phi);
+
+ CCTK_REAL_VEC g33 = kmul(gt33L,e4phi);
+
+ CCTK_REAL_VEC gu11 = kmul(em4phi,gtu11);
+
+ CCTK_REAL_VEC gu12 = kmul(em4phi,gtu12);
+
+ CCTK_REAL_VEC gu13 = kmul(em4phi,gtu13);
+
+ CCTK_REAL_VEC gu22 = kmul(em4phi,gtu22);
+
+ CCTK_REAL_VEC gu23 = kmul(em4phi,gtu23);
+
+ CCTK_REAL_VEC gu33 = kmul(em4phi,gtu33);
+
CCTK_REAL_VEC Rt11 =
kmul(ToReal(0.5),knmsub(gtu11,JacPDstandardNth11gt11,knmsub(gtu22,JacPDstandardNth22gt11,knmsub(gtu33,JacPDstandardNth33gt11,knmsub(gtu12,kadd(JacPDstandardNth21gt11,JacPDstandardNth12gt11),knmsub(gtu13,kadd(JacPDstandardNth31gt11,JacPDstandardNth13gt11),knmsub(gtu23,kadd(JacPDstandardNth32gt11,JacPDstandardNth23gt11),kmadd(kmadd(Gt211,Gtlu211,kmadd(Gt212,Gtlu212,kmadd(Gt213,Gtlu213,kmadd(Gt311,Gtlu311,kmadd(Gt312,Gtlu312,kmadd(Gt313,Gtlu313,kmul(gt11L,JacPDstandardNth1Xt1))))))),ToReal(2),kmadd(gt12L,kmul(JacPDstandardNth1Xt2,ToReal(2)),kmadd(gt13L,kmul(JacPDstandardNth1Xt3,ToReal(2)),kmadd(Gtl111,kmul(Xtn1,ToReal(2)),kmadd(Gtl112,kmul(Xtn2,ToReal(2)),kmadd(Gtl113,kmul(Xtn3,ToReal(2)),kmadd(kmadd(Gt211,Gtlu121,kmadd(Gt212,Gtlu122,kmadd(Gt213,Gtlu123,kmadd(Gt311,Gtlu131,kmadd(Gt312,Gtlu132,kmul(Gt313,Gtlu133)))))),ToReal(4),kmul(kmadd(Gt111,Gtlu111,kmadd(Gt112,Gtlu112,kmul(Gt113,Gtlu113))),ToReal(6))))))))))))))));
@@ -1644,8 +1673,8 @@ static void ML_BSSN_UPW_RHS2_Body(cGH const * restrict const cctkGH, int const d
CCTK_REAL_VEC Rt33 =
kmul(ToReal(0.5),knmsub(gtu11,JacPDstandardNth11gt33,knmsub(gtu22,JacPDstandardNth22gt33,knmsub(gtu33,JacPDstandardNth33gt33,knmsub(gtu12,kadd(JacPDstandardNth21gt33,JacPDstandardNth12gt33),knmsub(gtu13,kadd(JacPDstandardNth31gt33,JacPDstandardNth13gt33),knmsub(gtu23,kadd(JacPDstandardNth32gt33,JacPDstandardNth23gt33),kmadd(gt23L,kmul(JacPDstandardNth3Xt2,ToReal(2)),kmadd(gt33L,kmul(JacPDstandardNth3Xt3,ToReal(2)),kmadd(Gtl313,kmul(Xtn1,ToReal(2)),kmadd(Gtl323,kmul(Xtn2,ToReal(2)),kmadd(Gtl333,kmul(Xtn3,ToReal(2)),kmadd(ToReal(2),kmadd(Gt133,Gtlu133,kmadd(Gt213,Gtlu231,kmadd(Gt223,Gtlu232,kmadd(Gt233,Gtlu233,kmadd(gt13L,JacPDstandardNth3Xt1,kmadd(Gt113,kmadd(Gtlu311,ToReal(2),Gtlu131),kmul(Gt123,kmadd(Gtlu312,ToReal(2),Gtlu132)))))))),kmadd(kmadd(Gt133,Gtlu313,kmadd(Gt213,Gtlu321,kmadd(Gt223,Gtlu322,kmul(Gt233,Gtlu323)))),ToReal(4),kmul(kmadd(Gt313,Gtlu331,kmadd(Gt323,Gtlu332,kmul(Gt333,Gtlu333))),ToReal(6))))))))))))))));
- CCTK_REAL_VEC fac1 =
- IfThen(conformalMethod,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
+ CCTK_REAL_VEC fac1 = IfThen(conformalMethod ==
+ 1,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
CCTK_REAL_VEC cdphi1 = kmul(fac1,JacPDstandardNth1phi);
@@ -1653,8 +1682,8 @@ static void ML_BSSN_UPW_RHS2_Body(cGH const * restrict const cctkGH, int const d
CCTK_REAL_VEC cdphi3 = kmul(fac1,JacPDstandardNth3phi);
- CCTK_REAL_VEC fac2 =
- IfThen(conformalMethod,kmul(INV(SQR(phiL)),ToReal(0.5)),ToReal(0));
+ CCTK_REAL_VEC fac2 = IfThen(conformalMethod ==
+ 1,kmul(INV(SQR(phiL)),ToReal(0.5)),ToReal(0));
CCTK_REAL_VEC cdphi211 =
kmadd(fac2,SQR(JacPDstandardNth1phi),kmul(fac1,ksub(JacPDstandardNth11phi,kmadd(Gt111,JacPDstandardNth1phi,kmadd(Gt311,JacPDstandardNth3phi,kmul(Gt211,JacPDstandardNth2phi))))));
@@ -1719,35 +1748,6 @@ static void ML_BSSN_UPW_RHS2_Body(cGH const * restrict const cctkGH, int const d
CCTK_REAL_VEC Atm33 =
kmadd(At13L,gtu13,kmadd(At23L,gtu23,kmul(At33L,gtu33)));
- CCTK_REAL_VEC e4phi =
- IfThen(conformalMethod,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
-
- CCTK_REAL_VEC em4phi = INV(e4phi);
-
- CCTK_REAL_VEC g11 = kmul(gt11L,e4phi);
-
- CCTK_REAL_VEC g12 = kmul(gt12L,e4phi);
-
- CCTK_REAL_VEC g13 = kmul(gt13L,e4phi);
-
- CCTK_REAL_VEC g22 = kmul(gt22L,e4phi);
-
- CCTK_REAL_VEC g23 = kmul(gt23L,e4phi);
-
- CCTK_REAL_VEC g33 = kmul(gt33L,e4phi);
-
- CCTK_REAL_VEC gu11 = kmul(em4phi,gtu11);
-
- CCTK_REAL_VEC gu12 = kmul(em4phi,gtu12);
-
- CCTK_REAL_VEC gu13 = kmul(em4phi,gtu13);
-
- CCTK_REAL_VEC gu22 = kmul(em4phi,gtu22);
-
- CCTK_REAL_VEC gu23 = kmul(em4phi,gtu23);
-
- CCTK_REAL_VEC gu33 = kmul(em4phi,gtu33);
-
CCTK_REAL_VEC R11 = kadd(Rphi11,Rt11);
CCTK_REAL_VEC R12 = kadd(Rphi12,Rt12);
diff --git a/ML_BSSN_UPW/src/ML_BSSN_UPW_boundary.cc b/ML_BSSN_UPW/src/ML_BSSN_UPW_boundary.cc
index 4d6f0de..a1a7a68 100644
--- a/ML_BSSN_UPW/src/ML_BSSN_UPW_boundary.cc
+++ b/ML_BSSN_UPW/src/ML_BSSN_UPW_boundary.cc
@@ -258,7 +258,7 @@ static void ML_BSSN_UPW_boundary_Body(cGH const * restrict const cctkGH, int con
}
/* Calculate temporaries and grid functions */
- CCTK_REAL_VEC phiL = IfThen(conformalMethod,ToReal(1),ToReal(0));
+ CCTK_REAL_VEC phiL = IfThen(conformalMethod == 1,ToReal(1),ToReal(0));
CCTK_REAL_VEC gt11L = ToReal(1);
diff --git a/ML_BSSN_UPW/src/ML_BSSN_UPW_constraints1.cc b/ML_BSSN_UPW/src/ML_BSSN_UPW_constraints1.cc
index 929992f..e757d1f 100644
--- a/ML_BSSN_UPW/src/ML_BSSN_UPW_constraints1.cc
+++ b/ML_BSSN_UPW/src/ML_BSSN_UPW_constraints1.cc
@@ -1430,6 +1430,23 @@ static void ML_BSSN_UPW_constraints1_Body(cGH const * restrict const cctkGH, int
CCTK_REAL_VEC Xtn3 =
kmadd(Gt311,gtu11,kmadd(Gt322,gtu22,kmadd(Gt333,gtu33,kmul(kmadd(Gt312,gtu12,kmadd(Gt313,gtu13,kmul(Gt323,gtu23))),ToReal(2)))));
+ CCTK_REAL_VEC e4phi = IfThen(conformalMethod ==
+ 1,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
+
+ CCTK_REAL_VEC em4phi = INV(e4phi);
+
+ CCTK_REAL_VEC gu11 = kmul(em4phi,gtu11);
+
+ CCTK_REAL_VEC gu12 = kmul(em4phi,gtu12);
+
+ CCTK_REAL_VEC gu13 = kmul(em4phi,gtu13);
+
+ CCTK_REAL_VEC gu22 = kmul(em4phi,gtu22);
+
+ CCTK_REAL_VEC gu23 = kmul(em4phi,gtu23);
+
+ CCTK_REAL_VEC gu33 = kmul(em4phi,gtu33);
+
CCTK_REAL_VEC Rt11 =
kmul(ToReal(0.5),knmsub(gtu11,JacPDstandardNth11gt11,knmsub(gtu22,JacPDstandardNth22gt11,knmsub(gtu33,JacPDstandardNth33gt11,knmsub(gtu12,kadd(JacPDstandardNth21gt11,JacPDstandardNth12gt11),knmsub(gtu13,kadd(JacPDstandardNth31gt11,JacPDstandardNth13gt11),knmsub(gtu23,kadd(JacPDstandardNth32gt11,JacPDstandardNth23gt11),kmadd(kmadd(Gt211,Gtlu211,kmadd(Gt212,Gtlu212,kmadd(Gt213,Gtlu213,kmadd(Gt311,Gtlu311,kmadd(Gt312,Gtlu312,kmadd(Gt313,Gtlu313,kmul(gt11L,JacPDstandardNth1Xt1))))))),ToReal(2),kmadd(gt12L,kmul(JacPDstandardNth1Xt2,ToReal(2)),kmadd(gt13L,kmul(JacPDstandardNth1Xt3,ToReal(2)),kmadd(Gtl111,kmul(Xtn1,ToReal(2)),kmadd(Gtl112,kmul(Xtn2,ToReal(2)),kmadd(Gtl113,kmul(Xtn3,ToReal(2)),kmadd(kmadd(Gt211,Gtlu121,kmadd(Gt212,Gtlu122,kmadd(Gt213,Gtlu123,kmadd(Gt311,Gtlu131,kmadd(Gt312,Gtlu132,kmul(Gt313,Gtlu133)))))),ToReal(4),kmul(kmadd(Gt111,Gtlu111,kmadd(Gt112,Gtlu112,kmul(Gt113,Gtlu113))),ToReal(6))))))))))))))));
@@ -1448,8 +1465,8 @@ static void ML_BSSN_UPW_constraints1_Body(cGH const * restrict const cctkGH, int
CCTK_REAL_VEC Rt33 =
kmul(ToReal(0.5),knmsub(gtu11,JacPDstandardNth11gt33,knmsub(gtu22,JacPDstandardNth22gt33,knmsub(gtu33,JacPDstandardNth33gt33,knmsub(gtu12,kadd(JacPDstandardNth21gt33,JacPDstandardNth12gt33),knmsub(gtu13,kadd(JacPDstandardNth31gt33,JacPDstandardNth13gt33),knmsub(gtu23,kadd(JacPDstandardNth32gt33,JacPDstandardNth23gt33),kmadd(gt23L,kmul(JacPDstandardNth3Xt2,ToReal(2)),kmadd(gt33L,kmul(JacPDstandardNth3Xt3,ToReal(2)),kmadd(Gtl313,kmul(Xtn1,ToReal(2)),kmadd(Gtl323,kmul(Xtn2,ToReal(2)),kmadd(Gtl333,kmul(Xtn3,ToReal(2)),kmadd(ToReal(2),kmadd(Gt133,Gtlu133,kmadd(Gt213,Gtlu231,kmadd(Gt223,Gtlu232,kmadd(Gt233,Gtlu233,kmadd(gt13L,JacPDstandardNth3Xt1,kmadd(Gt113,kmadd(Gtlu311,ToReal(2),Gtlu131),kmul(Gt123,kmadd(Gtlu312,ToReal(2),Gtlu132)))))))),kmadd(kmadd(Gt133,Gtlu313,kmadd(Gt213,Gtlu321,kmadd(Gt223,Gtlu322,kmul(Gt233,Gtlu323)))),ToReal(4),kmul(kmadd(Gt313,Gtlu331,kmadd(Gt323,Gtlu332,kmul(Gt333,Gtlu333))),ToReal(6))))))))))))))));
- CCTK_REAL_VEC fac1 =
- IfThen(conformalMethod,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
+ CCTK_REAL_VEC fac1 = IfThen(conformalMethod ==
+ 1,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
CCTK_REAL_VEC cdphi1 = kmul(fac1,JacPDstandardNth1phi);
@@ -1457,8 +1474,8 @@ static void ML_BSSN_UPW_constraints1_Body(cGH const * restrict const cctkGH, int
CCTK_REAL_VEC cdphi3 = kmul(fac1,JacPDstandardNth3phi);
- CCTK_REAL_VEC fac2 =
- IfThen(conformalMethod,kmul(INV(SQR(phiL)),ToReal(0.5)),ToReal(0));
+ CCTK_REAL_VEC fac2 = IfThen(conformalMethod ==
+ 1,kmul(INV(SQR(phiL)),ToReal(0.5)),ToReal(0));
CCTK_REAL_VEC cdphi211 =
kmadd(fac2,SQR(JacPDstandardNth1phi),kmul(fac1,ksub(JacPDstandardNth11phi,kmadd(Gt111,JacPDstandardNth1phi,kmadd(Gt311,JacPDstandardNth3phi,kmul(Gt211,JacPDstandardNth2phi))))));
@@ -1496,23 +1513,6 @@ static void ML_BSSN_UPW_constraints1_Body(cGH const * restrict const cctkGH, int
CCTK_REAL_VEC Rphi33 =
kmul(ToReal(-2),kadd(cdphi233,kmadd(SQR(cdphi3),kmul(kmadd(gt33L,gtu33,ToReal(-1)),ToReal(2)),kmul(gt33L,kmadd(cdphi233,gtu33,kmadd(kmadd(cdphi213,gtu13,kmul(cdphi223,gtu23)),ToReal(2),kmadd(gtu11,kmadd(SQR(cdphi1),ToReal(2),cdphi211),kmadd(gtu22,kmadd(SQR(cdphi2),ToReal(2),cdphi222),kmadd(cdphi3,kmul(kmadd(cdphi1,gtu13,kmul(cdphi2,gtu23)),ToReal(4)),kmul(gtu12,kmadd(cdphi212,ToReal(2),kmul(cdphi1,kmul(cdphi2,ToReal(4))))))))))))));
- CCTK_REAL_VEC e4phi =
- IfThen(conformalMethod,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
-
- CCTK_REAL_VEC em4phi = INV(e4phi);
-
- CCTK_REAL_VEC gu11 = kmul(em4phi,gtu11);
-
- CCTK_REAL_VEC gu12 = kmul(em4phi,gtu12);
-
- CCTK_REAL_VEC gu13 = kmul(em4phi,gtu13);
-
- CCTK_REAL_VEC gu22 = kmul(em4phi,gtu22);
-
- CCTK_REAL_VEC gu23 = kmul(em4phi,gtu23);
-
- CCTK_REAL_VEC gu33 = kmul(em4phi,gtu33);
-
CCTK_REAL_VEC R11 = kadd(Rphi11,Rt11);
CCTK_REAL_VEC R12 = kadd(Rphi12,Rt12);
diff --git a/ML_BSSN_UPW/src/ML_BSSN_UPW_constraints2.cc b/ML_BSSN_UPW/src/ML_BSSN_UPW_constraints2.cc
index e15db36..755f8b8 100644
--- a/ML_BSSN_UPW/src/ML_BSSN_UPW_constraints2.cc
+++ b/ML_BSSN_UPW/src/ML_BSSN_UPW_constraints2.cc
@@ -891,8 +891,8 @@ static void ML_BSSN_UPW_constraints2_Body(cGH const * restrict const cctkGH, int
CCTK_REAL_VEC Gt333 =
kmadd(Gtl133,gtu13,kmadd(Gtl233,gtu23,kmul(Gtl333,gtu33)));
- CCTK_REAL_VEC fac1 =
- IfThen(conformalMethod,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
+ CCTK_REAL_VEC fac1 = IfThen(conformalMethod ==
+ 1,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
CCTK_REAL_VEC cdphi1 = kmul(fac1,JacPDstandardNth1phi);
diff --git a/ML_BSSN_UPW/src/ML_BSSN_UPW_convertFromADMBase.cc b/ML_BSSN_UPW/src/ML_BSSN_UPW_convertFromADMBase.cc
index acfc692..92610ec 100644
--- a/ML_BSSN_UPW/src/ML_BSSN_UPW_convertFromADMBase.cc
+++ b/ML_BSSN_UPW/src/ML_BSSN_UPW_convertFromADMBase.cc
@@ -269,7 +269,7 @@ static void ML_BSSN_UPW_convertFromADMBase_Body(cGH const * restrict const cctkG
CCTK_REAL_VEC em4phi;
- if (conformalMethod)
+ if (conformalMethod == 1)
{
phiL = kpow(detg,-0.166666666666666666666666666667);
diff --git a/ML_BSSN_UPW/src/ML_BSSN_UPW_convertToADMBase.cc b/ML_BSSN_UPW/src/ML_BSSN_UPW_convertToADMBase.cc
index af49a26..865d18a 100644
--- a/ML_BSSN_UPW/src/ML_BSSN_UPW_convertToADMBase.cc
+++ b/ML_BSSN_UPW/src/ML_BSSN_UPW_convertToADMBase.cc
@@ -246,8 +246,8 @@ static void ML_BSSN_UPW_convertToADMBase_Body(cGH const * restrict const cctkGH,
}
/* Calculate temporaries and grid functions */
- CCTK_REAL_VEC e4phi =
- IfThen(conformalMethod,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
+ CCTK_REAL_VEC e4phi = IfThen(conformalMethod ==
+ 1,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
gxxL = kmul(gt11L,e4phi);
diff --git a/ML_CCZ4/configuration.ccl b/ML_CCZ4/configuration.ccl
new file mode 100644
index 0000000..bdbc1bd
--- /dev/null
+++ b/ML_CCZ4/configuration.ccl
@@ -0,0 +1,5 @@
+# File produced by Kranc
+
+REQUIRES GenericFD
+REQUIRES LoopControl
+REQUIRES Vectors
diff --git a/ML_CCZ4/interface.ccl b/ML_CCZ4/interface.ccl
new file mode 100644
index 0000000..d0a09f2
--- /dev/null
+++ b/ML_CCZ4/interface.ccl
@@ -0,0 +1,215 @@
+# File produced by Kranc
+
+implements: ML_CCZ4
+
+inherits: ADMBase TmunuBase Grid GenericFD Boundary
+
+
+
+USES INCLUDE: GenericFD.h
+USES INCLUDE: Symmetry.h
+USES INCLUDE: sbp_calc_coeffs.h
+USES INCLUDE: Boundary.h
+USES INCLUDE: loopcontrol.h
+USES INCLUDE: vectors.h
+
+CCTK_INT FUNCTION MoLRegisterEvolved(CCTK_INT IN EvolvedIndex, CCTK_INT IN RHSIndex)
+USES FUNCTION MoLRegisterEvolved
+
+SUBROUTINE Diff_coeff(CCTK_POINTER_TO_CONST IN cctkGH, CCTK_INT IN dir, CCTK_INT IN nsize, CCTK_INT OUT ARRAY imin, CCTK_INT OUT ARRAY imax, CCTK_REAL OUT ARRAY q, CCTK_INT IN table_handle)
+USES FUNCTION Diff_coeff
+
+CCTK_INT FUNCTION MultiPatch_GetMap(CCTK_POINTER_TO_CONST IN cctkGH)
+USES FUNCTION MultiPatch_GetMap
+
+CCTK_INT FUNCTION Boundary_SelectGroupForBC(CCTK_POINTER_TO_CONST IN GH, CCTK_INT IN faces, CCTK_INT IN boundary_width, CCTK_INT IN table_handle, CCTK_STRING IN group_name, CCTK_STRING IN bc_name)
+USES FUNCTION Boundary_SelectGroupForBC
+
+CCTK_INT FUNCTION Boundary_SelectVarForBC(CCTK_POINTER_TO_CONST IN GH, CCTK_INT IN faces, CCTK_INT IN boundary_width, CCTK_INT IN table_handle, CCTK_STRING IN var_name, CCTK_STRING IN bc_name)
+USES FUNCTION Boundary_SelectVarForBC
+
+public:
+CCTK_REAL ML_cons_detg type=GF timelevels=1 tags='tensortypealias="Scalar" tensorweight=2'
+{
+ cS
+} "ML_cons_detg"
+
+public:
+CCTK_REAL ML_cons_Gamma type=GF timelevels=1 tags='tensortypealias="U" tensorweight=0.66666666666666666667'
+{
+ cXt1,
+ cXt2,
+ cXt3
+} "ML_cons_Gamma"
+
+public:
+CCTK_REAL ML_cons_traceA type=GF timelevels=1 tags='tensortypealias="Scalar" tensorweight=0'
+{
+ cA
+} "ML_cons_traceA"
+
+public:
+CCTK_REAL ML_Ham type=GF timelevels=1 tags='tensortypealias="Scalar" tensorweight=0'
+{
+ H
+} "ML_Ham"
+
+public:
+CCTK_REAL ML_mom type=GF timelevels=1 tags='tensortypealias="D" tensorweight=0'
+{
+ M1,
+ M2,
+ M3
+} "ML_mom"
+
+public:
+CCTK_REAL ML_curv type=GF timelevels=3 tags='tensortypealias="DD_sym" tensorweight=-0.66666666666666666667'
+{
+ At11,
+ At12,
+ At13,
+ At22,
+ At23,
+ At33
+} "ML_curv"
+
+public:
+CCTK_REAL ML_dtlapse type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=0'
+{
+ A
+} "ML_dtlapse"
+
+public:
+CCTK_REAL ML_dtshift type=GF timelevels=3 tags='tensortypealias="U" tensorweight=0'
+{
+ B1,
+ B2,
+ B3
+} "ML_dtshift"
+
+public:
+CCTK_REAL ML_Gamma type=GF timelevels=3 tags='tensortypealias="U" tensorweight=0.66666666666666666667'
+{
+ Xt1,
+ Xt2,
+ Xt3
+} "ML_Gamma"
+
+public:
+CCTK_REAL ML_lapse type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=0'
+{
+ alpha
+} "ML_lapse"
+
+public:
+CCTK_REAL ML_log_confac type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=0.16666666666666666667'
+{
+ phi
+} "ML_log_confac"
+
+public:
+CCTK_REAL ML_metric type=GF timelevels=3 tags='tensortypealias="DD_sym" tensorweight=-0.66666666666666666667'
+{
+ gt11,
+ gt12,
+ gt13,
+ gt22,
+ gt23,
+ gt33
+} "ML_metric"
+
+public:
+CCTK_REAL ML_shift type=GF timelevels=3 tags='tensortypealias="U" tensorweight=0'
+{
+ beta1,
+ beta2,
+ beta3
+} "ML_shift"
+
+public:
+CCTK_REAL ML_Theta type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=0'
+{
+ Theta
+} "ML_Theta"
+
+public:
+CCTK_REAL ML_trace_curv type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=0'
+{
+ trK
+} "ML_trace_curv"
+
+public:
+CCTK_REAL ML_curvrhs type=GF timelevels=3 tags='tensortypealias="DD_sym" tensorweight=-0.66666666666666666667'
+{
+ At11rhs,
+ At12rhs,
+ At13rhs,
+ At22rhs,
+ At23rhs,
+ At33rhs
+} "ML_curvrhs"
+
+public:
+CCTK_REAL ML_dtlapserhs type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=0'
+{
+ Arhs
+} "ML_dtlapserhs"
+
+public:
+CCTK_REAL ML_dtshiftrhs type=GF timelevels=3 tags='tensortypealias="U" tensorweight=0'
+{
+ B1rhs,
+ B2rhs,
+ B3rhs
+} "ML_dtshiftrhs"
+
+public:
+CCTK_REAL ML_Gammarhs type=GF timelevels=3 tags='tensortypealias="U" tensorweight=0.66666666666666666667'
+{
+ Xt1rhs,
+ Xt2rhs,
+ Xt3rhs
+} "ML_Gammarhs"
+
+public:
+CCTK_REAL ML_lapserhs type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=0'
+{
+ alpharhs
+} "ML_lapserhs"
+
+public:
+CCTK_REAL ML_log_confacrhs type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=0.16666666666666666667'
+{
+ phirhs
+} "ML_log_confacrhs"
+
+public:
+CCTK_REAL ML_metricrhs type=GF timelevels=3 tags='tensortypealias="DD_sym" tensorweight=-0.66666666666666666667'
+{
+ gt11rhs,
+ gt12rhs,
+ gt13rhs,
+ gt22rhs,
+ gt23rhs,
+ gt33rhs
+} "ML_metricrhs"
+
+public:
+CCTK_REAL ML_shiftrhs type=GF timelevels=3 tags='tensortypealias="U" tensorweight=0'
+{
+ beta1rhs,
+ beta2rhs,
+ beta3rhs
+} "ML_shiftrhs"
+
+public:
+CCTK_REAL ML_Thetarhs type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=0'
+{
+ Thetarhs
+} "ML_Thetarhs"
+
+public:
+CCTK_REAL ML_trace_curvrhs type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=0'
+{
+ trKrhs
+} "ML_trace_curvrhs"
diff --git a/ML_CCZ4/param.ccl b/ML_CCZ4/param.ccl
new file mode 100644
index 0000000..f3cd91b
--- /dev/null
+++ b/ML_CCZ4/param.ccl
@@ -0,0 +1,1558 @@
+# File produced by Kranc
+
+
+shares: ADMBase
+
+
+EXTENDS CCTK_KEYWORD evolution_method "evolution_method"
+{
+ ML_CCZ4 :: ""
+}
+
+
+EXTENDS CCTK_KEYWORD lapse_evolution_method "lapse_evolution_method"
+{
+ ML_CCZ4 :: ""
+}
+
+
+EXTENDS CCTK_KEYWORD shift_evolution_method "shift_evolution_method"
+{
+ ML_CCZ4 :: ""
+}
+
+
+EXTENDS CCTK_KEYWORD dtlapse_evolution_method "dtlapse_evolution_method"
+{
+ ML_CCZ4 :: ""
+}
+
+
+EXTENDS CCTK_KEYWORD dtshift_evolution_method "dtshift_evolution_method"
+{
+ ML_CCZ4 :: ""
+}
+
+
+
+shares: GenericFD
+
+USES CCTK_STRING jacobian_group
+USES CCTK_STRING jacobian_derivative_group
+USES CCTK_INT jacobian_identity_map
+
+
+shares: MethodOfLines
+
+USES CCTK_INT MoL_Num_Evolved_Vars
+USES CCTK_INT MoL_Num_ArrayEvolved_Vars
+
+restricted:
+CCTK_INT verbose "verbose" STEERABLE=ALWAYS
+{
+ *:* :: ""
+} 0
+
+restricted:
+CCTK_REAL dampk1 "CCZ4 damping term 1 for Theta and Z"
+{
+ "*:*" :: ""
+} 0
+
+restricted:
+CCTK_REAL dampk2 "CCZ4 damping term 2 for Theta and Z"
+{
+ "*:*" :: ""
+} 0
+
+restricted:
+CCTK_REAL LapseACoeff "Whether to evolve A in time"
+{
+ "*:*" :: ""
+} 0
+
+restricted:
+CCTK_REAL harmonicF "d/dt alpha = - f alpha^n K (harmonic=1, 1+log=2)"
+{
+ "*:*" :: ""
+} 1
+
+restricted:
+CCTK_REAL AlphaDriver "AlphaDriver"
+{
+ "*:*" :: ""
+} 0
+
+restricted:
+CCTK_REAL ShiftBCoeff "Whether to evolve B^i in time"
+{
+ "*:*" :: ""
+} 1
+
+restricted:
+CCTK_REAL ShiftGammaCoeff "ShiftGammaCoeff"
+{
+ "*:*" :: ""
+} 0
+
+restricted:
+CCTK_REAL BetaDriver "BetaDriver"
+{
+ "*:*" :: ""
+} 0
+
+restricted:
+CCTK_REAL LapseAdvectionCoeff "Factor in front of the lapse advection terms in 1+log"
+{
+ "*:*" :: ""
+} 1
+
+restricted:
+CCTK_REAL ShiftAdvectionCoeff "Factor in front of the shift advection terms in gamma driver"
+{
+ "*:*" :: ""
+} 1
+
+restricted:
+CCTK_REAL MinimumLapse "Minimum value of the lapse function"
+{
+ "*:*" :: ""
+} -1
+
+restricted:
+CCTK_REAL SpatialBetaDriverRadius "Radius at which the BetaDriver starts to be reduced"
+{
+ "*:*" :: ""
+} 1000000000000
+
+restricted:
+CCTK_REAL SpatialShiftGammaCoeffRadius "Radius at which the ShiftGammaCoefficient starts to be reduced"
+{
+ "*:*" :: ""
+} 1000000000000
+
+restricted:
+CCTK_REAL EpsDiss "Dissipation strength"
+{
+ "*:*" :: ""
+} 0
+
+restricted:
+CCTK_INT GammaShift "Covariant shift term in Gamma"
+{
+ *:* :: ""
+} 0
+
+restricted:
+CCTK_INT harmonicN "d/dt alpha = - f alpha^n K (harmonic=2, 1+log=1)"
+{
+ *:* :: ""
+} 2
+
+restricted:
+CCTK_INT ShiftAlphaPower "ShiftAlphaPower"
+{
+ *:* :: ""
+} 0
+
+restricted:
+CCTK_INT conformalMethod "Treatment of conformal factor"
+{
+ *:* :: ""
+} 0
+
+restricted:
+CCTK_INT fdOrder "fdOrder"
+{
+ *:* :: ""
+} 4
+
+restricted:
+CCTK_INT harmonicShift "Whether to use the harmonic shift"
+{
+ *:* :: ""
+} 0
+
+private:
+KEYWORD my_initial_data "my_initial_data"
+{
+ "ADMBase" :: "ADMBase"
+ "Minkowski" :: "Minkowski"
+} "ADMBase"
+
+restricted:
+KEYWORD my_initial_boundary_condition "my_initial_boundary_condition"
+{
+ "none" :: "none"
+} "none"
+
+restricted:
+KEYWORD my_rhs_boundary_condition "my_rhs_boundary_condition"
+{
+ "none" :: "none"
+ "static" :: "static"
+ "radiative" :: "radiative"
+} "none"
+
+private:
+KEYWORD my_boundary_condition "my_boundary_condition"
+{
+ "none" :: "none"
+ "Minkowski" :: "Minkowski"
+} "none"
+
+restricted:
+KEYWORD calculate_ADMBase_variables_at "calculate_ADMBase_variables_at"
+{
+ "MoL_PostStep" :: "MoL_PostStep"
+ "CCTK_EVOL" :: "CCTK_EVOL"
+ "CCTK_ANALYSIS" :: "CCTK_ANALYSIS"
+} "MoL_PostStep"
+
+restricted:
+KEYWORD UseSpatialBetaDriver "UseSpatialBetaDriver"
+{
+ "no" :: "no"
+ "yes" :: "yes"
+} "no"
+
+private:
+KEYWORD dt_lapse_shift_method "Treatment of ADMBase dtlapse and dtshift"
+{
+ "correct" :: "correct"
+ "noLapseShiftAdvection" :: "noLapseShiftAdvection"
+} "correct"
+
+private:
+KEYWORD apply_dissipation "Whether to apply dissipation to the RHSs"
+{
+ "always" :: "always"
+ "never" :: "never"
+} "always"
+
+restricted:
+CCTK_INT ML_CCZ4_MaxNumEvolvedVars "Number of evolved variables used by this thorn" ACCUMULATOR-BASE=MethodofLines::MoL_Num_Evolved_Vars STEERABLE=RECOVER
+{
+ 26:26 :: "Number of evolved variables used by this thorn"
+} 26
+
+restricted:
+CCTK_INT ML_CCZ4_MaxNumArrayEvolvedVars "Number of Array evolved variables used by this thorn" ACCUMULATOR-BASE=MethodofLines::MoL_Num_ArrayEvolved_Vars STEERABLE=RECOVER
+{
+ 0:0 :: "Number of Array evolved variables used by this thorn"
+} 0
+
+restricted:
+CCTK_INT timelevels "Number of active timelevels" STEERABLE=RECOVER
+{
+ 0:3 :: ""
+} 3
+
+restricted:
+CCTK_INT rhs_timelevels "Number of active RHS timelevels" STEERABLE=RECOVER
+{
+ 0:3 :: ""
+} 1
+
+restricted:
+CCTK_INT other_timelevels "Number of active timelevels for non-evolved grid functions" STEERABLE=RECOVER
+{
+ 0:3 :: ""
+} 1
+
+restricted:
+CCTK_INT ML_CCZ4_Minkowski_calc_every "ML_CCZ4_Minkowski_calc_every" STEERABLE=ALWAYS
+{
+ *:* :: ""
+} 1
+
+restricted:
+CCTK_INT ML_CCZ4_convertFromADMBase_calc_every "ML_CCZ4_convertFromADMBase_calc_every" STEERABLE=ALWAYS
+{
+ *:* :: ""
+} 1
+
+restricted:
+CCTK_INT ML_CCZ4_InitGamma_calc_every "ML_CCZ4_InitGamma_calc_every" STEERABLE=ALWAYS
+{
+ *:* :: ""
+} 1
+
+restricted:
+CCTK_INT ML_CCZ4_convertFromADMBaseGamma_calc_every "ML_CCZ4_convertFromADMBaseGamma_calc_every" STEERABLE=ALWAYS
+{
+ *:* :: ""
+} 1
+
+restricted:
+CCTK_INT ML_CCZ4_RHS1_calc_every "ML_CCZ4_RHS1_calc_every" STEERABLE=ALWAYS
+{
+ *:* :: ""
+} 1
+
+restricted:
+CCTK_INT ML_CCZ4_RHS2_calc_every "ML_CCZ4_RHS2_calc_every" STEERABLE=ALWAYS
+{
+ *:* :: ""
+} 1
+
+restricted:
+CCTK_INT ML_CCZ4_Dissipation_calc_every "ML_CCZ4_Dissipation_calc_every" STEERABLE=ALWAYS
+{
+ *:* :: ""
+} 1
+
+restricted:
+CCTK_INT ML_CCZ4_Advect_calc_every "ML_CCZ4_Advect_calc_every" STEERABLE=ALWAYS
+{
+ *:* :: ""
+} 1
+
+restricted:
+CCTK_INT ML_CCZ4_InitRHS_calc_every "ML_CCZ4_InitRHS_calc_every" STEERABLE=ALWAYS
+{
+ *:* :: ""
+} 1
+
+restricted:
+CCTK_INT ML_CCZ4_RHSStaticBoundary_calc_every "ML_CCZ4_RHSStaticBoundary_calc_every" STEERABLE=ALWAYS
+{
+ *:* :: ""
+} 1
+
+restricted:
+CCTK_INT ML_CCZ4_enforce_calc_every "ML_CCZ4_enforce_calc_every" STEERABLE=ALWAYS
+{
+ *:* :: ""
+} 1
+
+restricted:
+CCTK_INT ML_CCZ4_boundary_calc_every "ML_CCZ4_boundary_calc_every" STEERABLE=ALWAYS
+{
+ *:* :: ""
+} 1
+
+restricted:
+CCTK_INT ML_CCZ4_convertToADMBase_calc_every "ML_CCZ4_convertToADMBase_calc_every" STEERABLE=ALWAYS
+{
+ *:* :: ""
+} 1
+
+restricted:
+CCTK_INT ML_CCZ4_convertToADMBaseDtLapseShift_calc_every "ML_CCZ4_convertToADMBaseDtLapseShift_calc_every" STEERABLE=ALWAYS
+{
+ *:* :: ""
+} 1
+
+restricted:
+CCTK_INT ML_CCZ4_convertToADMBaseDtLapseShiftBoundary_calc_every "ML_CCZ4_convertToADMBaseDtLapseShiftBoundary_calc_every" STEERABLE=ALWAYS
+{
+ *:* :: ""
+} 1
+
+restricted:
+CCTK_INT ML_CCZ4_convertToADMBaseFakeDtLapseShift_calc_every "ML_CCZ4_convertToADMBaseFakeDtLapseShift_calc_every" STEERABLE=ALWAYS
+{
+ *:* :: ""
+} 1
+
+restricted:
+CCTK_INT ML_CCZ4_constraints1_calc_every "ML_CCZ4_constraints1_calc_every" STEERABLE=ALWAYS
+{
+ *:* :: ""
+} 1
+
+restricted:
+CCTK_INT ML_CCZ4_constraints2_calc_every "ML_CCZ4_constraints2_calc_every" STEERABLE=ALWAYS
+{
+ *:* :: ""
+} 1
+
+restricted:
+CCTK_INT ML_CCZ4_Minkowski_calc_offset "ML_CCZ4_Minkowski_calc_offset" STEERABLE=ALWAYS
+{
+ *:* :: ""
+} 0
+
+restricted:
+CCTK_INT ML_CCZ4_convertFromADMBase_calc_offset "ML_CCZ4_convertFromADMBase_calc_offset" STEERABLE=ALWAYS
+{
+ *:* :: ""
+} 0
+
+restricted:
+CCTK_INT ML_CCZ4_InitGamma_calc_offset "ML_CCZ4_InitGamma_calc_offset" STEERABLE=ALWAYS
+{
+ *:* :: ""
+} 0
+
+restricted:
+CCTK_INT ML_CCZ4_convertFromADMBaseGamma_calc_offset "ML_CCZ4_convertFromADMBaseGamma_calc_offset" STEERABLE=ALWAYS
+{
+ *:* :: ""
+} 0
+
+restricted:
+CCTK_INT ML_CCZ4_RHS1_calc_offset "ML_CCZ4_RHS1_calc_offset" STEERABLE=ALWAYS
+{
+ *:* :: ""
+} 0
+
+restricted:
+CCTK_INT ML_CCZ4_RHS2_calc_offset "ML_CCZ4_RHS2_calc_offset" STEERABLE=ALWAYS
+{
+ *:* :: ""
+} 0
+
+restricted:
+CCTK_INT ML_CCZ4_Dissipation_calc_offset "ML_CCZ4_Dissipation_calc_offset" STEERABLE=ALWAYS
+{
+ *:* :: ""
+} 0
+
+restricted:
+CCTK_INT ML_CCZ4_Advect_calc_offset "ML_CCZ4_Advect_calc_offset" STEERABLE=ALWAYS
+{
+ *:* :: ""
+} 0
+
+restricted:
+CCTK_INT ML_CCZ4_InitRHS_calc_offset "ML_CCZ4_InitRHS_calc_offset" STEERABLE=ALWAYS
+{
+ *:* :: ""
+} 0
+
+restricted:
+CCTK_INT ML_CCZ4_RHSStaticBoundary_calc_offset "ML_CCZ4_RHSStaticBoundary_calc_offset" STEERABLE=ALWAYS
+{
+ *:* :: ""
+} 0
+
+restricted:
+CCTK_INT ML_CCZ4_enforce_calc_offset "ML_CCZ4_enforce_calc_offset" STEERABLE=ALWAYS
+{
+ *:* :: ""
+} 0
+
+restricted:
+CCTK_INT ML_CCZ4_boundary_calc_offset "ML_CCZ4_boundary_calc_offset" STEERABLE=ALWAYS
+{
+ *:* :: ""
+} 0
+
+restricted:
+CCTK_INT ML_CCZ4_convertToADMBase_calc_offset "ML_CCZ4_convertToADMBase_calc_offset" STEERABLE=ALWAYS
+{
+ *:* :: ""
+} 0
+
+restricted:
+CCTK_INT ML_CCZ4_convertToADMBaseDtLapseShift_calc_offset "ML_CCZ4_convertToADMBaseDtLapseShift_calc_offset" STEERABLE=ALWAYS
+{
+ *:* :: ""
+} 0
+
+restricted:
+CCTK_INT ML_CCZ4_convertToADMBaseDtLapseShiftBoundary_calc_offset "ML_CCZ4_convertToADMBaseDtLapseShiftBoundary_calc_offset" STEERABLE=ALWAYS
+{
+ *:* :: ""
+} 0
+
+restricted:
+CCTK_INT ML_CCZ4_convertToADMBaseFakeDtLapseShift_calc_offset "ML_CCZ4_convertToADMBaseFakeDtLapseShift_calc_offset" STEERABLE=ALWAYS
+{
+ *:* :: ""
+} 0
+
+restricted:
+CCTK_INT ML_CCZ4_constraints1_calc_offset "ML_CCZ4_constraints1_calc_offset" STEERABLE=ALWAYS
+{
+ *:* :: ""
+} 0
+
+restricted:
+CCTK_INT ML_CCZ4_constraints2_calc_offset "ML_CCZ4_constraints2_calc_offset" STEERABLE=ALWAYS
+{
+ *:* :: ""
+} 0
+
+private:
+KEYWORD At11_bound "Boundary condition to implement" STEERABLE=ALWAYS
+{
+ "flat" :: "Flat boundary condition"
+ "none" :: "No boundary condition"
+ "static" :: "Boundaries held fixed"
+ "radiative" :: "Radiation boundary condition"
+ "scalar" :: "Dirichlet boundary condition"
+ "newrad" :: "Improved radiative boundary condition"
+ "skip" :: "skip boundary condition code"
+} "skip"
+
+private:
+KEYWORD At12_bound "Boundary condition to implement" STEERABLE=ALWAYS
+{
+ "flat" :: "Flat boundary condition"
+ "none" :: "No boundary condition"
+ "static" :: "Boundaries held fixed"
+ "radiative" :: "Radiation boundary condition"
+ "scalar" :: "Dirichlet boundary condition"
+ "newrad" :: "Improved radiative boundary condition"
+ "skip" :: "skip boundary condition code"
+} "skip"
+
+private:
+KEYWORD At13_bound "Boundary condition to implement" STEERABLE=ALWAYS
+{
+ "flat" :: "Flat boundary condition"
+ "none" :: "No boundary condition"
+ "static" :: "Boundaries held fixed"
+ "radiative" :: "Radiation boundary condition"
+ "scalar" :: "Dirichlet boundary condition"
+ "newrad" :: "Improved radiative boundary condition"
+ "skip" :: "skip boundary condition code"
+} "skip"
+
+private:
+KEYWORD At22_bound "Boundary condition to implement" STEERABLE=ALWAYS
+{
+ "flat" :: "Flat boundary condition"
+ "none" :: "No boundary condition"
+ "static" :: "Boundaries held fixed"
+ "radiative" :: "Radiation boundary condition"
+ "scalar" :: "Dirichlet boundary condition"
+ "newrad" :: "Improved radiative boundary condition"
+ "skip" :: "skip boundary condition code"
+} "skip"
+
+private:
+KEYWORD At23_bound "Boundary condition to implement" STEERABLE=ALWAYS
+{
+ "flat" :: "Flat boundary condition"
+ "none" :: "No boundary condition"
+ "static" :: "Boundaries held fixed"
+ "radiative" :: "Radiation boundary condition"
+ "scalar" :: "Dirichlet boundary condition"
+ "newrad" :: "Improved radiative boundary condition"
+ "skip" :: "skip boundary condition code"
+} "skip"
+
+private:
+KEYWORD At33_bound "Boundary condition to implement" STEERABLE=ALWAYS
+{
+ "flat" :: "Flat boundary condition"
+ "none" :: "No boundary condition"
+ "static" :: "Boundaries held fixed"
+ "radiative" :: "Radiation boundary condition"
+ "scalar" :: "Dirichlet boundary condition"
+ "newrad" :: "Improved radiative boundary condition"
+ "skip" :: "skip boundary condition code"
+} "skip"
+
+private:
+KEYWORD A_bound "Boundary condition to implement" STEERABLE=ALWAYS
+{
+ "flat" :: "Flat boundary condition"
+ "none" :: "No boundary condition"
+ "static" :: "Boundaries held fixed"
+ "radiative" :: "Radiation boundary condition"
+ "scalar" :: "Dirichlet boundary condition"
+ "newrad" :: "Improved radiative boundary condition"
+ "skip" :: "skip boundary condition code"
+} "skip"
+
+private:
+KEYWORD B1_bound "Boundary condition to implement" STEERABLE=ALWAYS
+{
+ "flat" :: "Flat boundary condition"
+ "none" :: "No boundary condition"
+ "static" :: "Boundaries held fixed"
+ "radiative" :: "Radiation boundary condition"
+ "scalar" :: "Dirichlet boundary condition"
+ "newrad" :: "Improved radiative boundary condition"
+ "skip" :: "skip boundary condition code"
+} "skip"
+
+private:
+KEYWORD B2_bound "Boundary condition to implement" STEERABLE=ALWAYS
+{
+ "flat" :: "Flat boundary condition"
+ "none" :: "No boundary condition"
+ "static" :: "Boundaries held fixed"
+ "radiative" :: "Radiation boundary condition"
+ "scalar" :: "Dirichlet boundary condition"
+ "newrad" :: "Improved radiative boundary condition"
+ "skip" :: "skip boundary condition code"
+} "skip"
+
+private:
+KEYWORD B3_bound "Boundary condition to implement" STEERABLE=ALWAYS
+{
+ "flat" :: "Flat boundary condition"
+ "none" :: "No boundary condition"
+ "static" :: "Boundaries held fixed"
+ "radiative" :: "Radiation boundary condition"
+ "scalar" :: "Dirichlet boundary condition"
+ "newrad" :: "Improved radiative boundary condition"
+ "skip" :: "skip boundary condition code"
+} "skip"
+
+private:
+KEYWORD Xt1_bound "Boundary condition to implement" STEERABLE=ALWAYS
+{
+ "flat" :: "Flat boundary condition"
+ "none" :: "No boundary condition"
+ "static" :: "Boundaries held fixed"
+ "radiative" :: "Radiation boundary condition"
+ "scalar" :: "Dirichlet boundary condition"
+ "newrad" :: "Improved radiative boundary condition"
+ "skip" :: "skip boundary condition code"
+} "skip"
+
+private:
+KEYWORD Xt2_bound "Boundary condition to implement" STEERABLE=ALWAYS
+{
+ "flat" :: "Flat boundary condition"
+ "none" :: "No boundary condition"
+ "static" :: "Boundaries held fixed"
+ "radiative" :: "Radiation boundary condition"
+ "scalar" :: "Dirichlet boundary condition"
+ "newrad" :: "Improved radiative boundary condition"
+ "skip" :: "skip boundary condition code"
+} "skip"
+
+private:
+KEYWORD Xt3_bound "Boundary condition to implement" STEERABLE=ALWAYS
+{
+ "flat" :: "Flat boundary condition"
+ "none" :: "No boundary condition"
+ "static" :: "Boundaries held fixed"
+ "radiative" :: "Radiation boundary condition"
+ "scalar" :: "Dirichlet boundary condition"
+ "newrad" :: "Improved radiative boundary condition"
+ "skip" :: "skip boundary condition code"
+} "skip"
+
+private:
+KEYWORD alpha_bound "Boundary condition to implement" STEERABLE=ALWAYS
+{
+ "flat" :: "Flat boundary condition"
+ "none" :: "No boundary condition"
+ "static" :: "Boundaries held fixed"
+ "radiative" :: "Radiation boundary condition"
+ "scalar" :: "Dirichlet boundary condition"
+ "newrad" :: "Improved radiative boundary condition"
+ "skip" :: "skip boundary condition code"
+} "skip"
+
+private:
+KEYWORD phi_bound "Boundary condition to implement" STEERABLE=ALWAYS
+{
+ "flat" :: "Flat boundary condition"
+ "none" :: "No boundary condition"
+ "static" :: "Boundaries held fixed"
+ "radiative" :: "Radiation boundary condition"
+ "scalar" :: "Dirichlet boundary condition"
+ "newrad" :: "Improved radiative boundary condition"
+ "skip" :: "skip boundary condition code"
+} "skip"
+
+private:
+KEYWORD gt11_bound "Boundary condition to implement" STEERABLE=ALWAYS
+{
+ "flat" :: "Flat boundary condition"
+ "none" :: "No boundary condition"
+ "static" :: "Boundaries held fixed"
+ "radiative" :: "Radiation boundary condition"
+ "scalar" :: "Dirichlet boundary condition"
+ "newrad" :: "Improved radiative boundary condition"
+ "skip" :: "skip boundary condition code"
+} "skip"
+
+private:
+KEYWORD gt12_bound "Boundary condition to implement" STEERABLE=ALWAYS
+{
+ "flat" :: "Flat boundary condition"
+ "none" :: "No boundary condition"
+ "static" :: "Boundaries held fixed"
+ "radiative" :: "Radiation boundary condition"
+ "scalar" :: "Dirichlet boundary condition"
+ "newrad" :: "Improved radiative boundary condition"
+ "skip" :: "skip boundary condition code"
+} "skip"
+
+private:
+KEYWORD gt13_bound "Boundary condition to implement" STEERABLE=ALWAYS
+{
+ "flat" :: "Flat boundary condition"
+ "none" :: "No boundary condition"
+ "static" :: "Boundaries held fixed"
+ "radiative" :: "Radiation boundary condition"
+ "scalar" :: "Dirichlet boundary condition"
+ "newrad" :: "Improved radiative boundary condition"
+ "skip" :: "skip boundary condition code"
+} "skip"
+
+private:
+KEYWORD gt22_bound "Boundary condition to implement" STEERABLE=ALWAYS
+{
+ "flat" :: "Flat boundary condition"
+ "none" :: "No boundary condition"
+ "static" :: "Boundaries held fixed"
+ "radiative" :: "Radiation boundary condition"
+ "scalar" :: "Dirichlet boundary condition"
+ "newrad" :: "Improved radiative boundary condition"
+ "skip" :: "skip boundary condition code"
+} "skip"
+
+private:
+KEYWORD gt23_bound "Boundary condition to implement" STEERABLE=ALWAYS
+{
+ "flat" :: "Flat boundary condition"
+ "none" :: "No boundary condition"
+ "static" :: "Boundaries held fixed"
+ "radiative" :: "Radiation boundary condition"
+ "scalar" :: "Dirichlet boundary condition"
+ "newrad" :: "Improved radiative boundary condition"
+ "skip" :: "skip boundary condition code"
+} "skip"
+
+private:
+KEYWORD gt33_bound "Boundary condition to implement" STEERABLE=ALWAYS
+{
+ "flat" :: "Flat boundary condition"
+ "none" :: "No boundary condition"
+ "static" :: "Boundaries held fixed"
+ "radiative" :: "Radiation boundary condition"
+ "scalar" :: "Dirichlet boundary condition"
+ "newrad" :: "Improved radiative boundary condition"
+ "skip" :: "skip boundary condition code"
+} "skip"
+
+private:
+KEYWORD beta1_bound "Boundary condition to implement" STEERABLE=ALWAYS
+{
+ "flat" :: "Flat boundary condition"
+ "none" :: "No boundary condition"
+ "static" :: "Boundaries held fixed"
+ "radiative" :: "Radiation boundary condition"
+ "scalar" :: "Dirichlet boundary condition"
+ "newrad" :: "Improved radiative boundary condition"
+ "skip" :: "skip boundary condition code"
+} "skip"
+
+private:
+KEYWORD beta2_bound "Boundary condition to implement" STEERABLE=ALWAYS
+{
+ "flat" :: "Flat boundary condition"
+ "none" :: "No boundary condition"
+ "static" :: "Boundaries held fixed"
+ "radiative" :: "Radiation boundary condition"
+ "scalar" :: "Dirichlet boundary condition"
+ "newrad" :: "Improved radiative boundary condition"
+ "skip" :: "skip boundary condition code"
+} "skip"
+
+private:
+KEYWORD beta3_bound "Boundary condition to implement" STEERABLE=ALWAYS
+{
+ "flat" :: "Flat boundary condition"
+ "none" :: "No boundary condition"
+ "static" :: "Boundaries held fixed"
+ "radiative" :: "Radiation boundary condition"
+ "scalar" :: "Dirichlet boundary condition"
+ "newrad" :: "Improved radiative boundary condition"
+ "skip" :: "skip boundary condition code"
+} "skip"
+
+private:
+KEYWORD Theta_bound "Boundary condition to implement" STEERABLE=ALWAYS
+{
+ "flat" :: "Flat boundary condition"
+ "none" :: "No boundary condition"
+ "static" :: "Boundaries held fixed"
+ "radiative" :: "Radiation boundary condition"
+ "scalar" :: "Dirichlet boundary condition"
+ "newrad" :: "Improved radiative boundary condition"
+ "skip" :: "skip boundary condition code"
+} "skip"
+
+private:
+KEYWORD trK_bound "Boundary condition to implement" STEERABLE=ALWAYS
+{
+ "flat" :: "Flat boundary condition"
+ "none" :: "No boundary condition"
+ "static" :: "Boundaries held fixed"
+ "radiative" :: "Radiation boundary condition"
+ "scalar" :: "Dirichlet boundary condition"
+ "newrad" :: "Improved radiative boundary condition"
+ "skip" :: "skip boundary condition code"
+} "skip"
+
+private:
+KEYWORD ML_curv_bound "Boundary condition to implement" STEERABLE=ALWAYS
+{
+ "flat" :: "Flat boundary condition"
+ "none" :: "No boundary condition"
+ "static" :: "Boundaries held fixed"
+ "radiative" :: "Radiation boundary condition"
+ "scalar" :: "Dirichlet boundary condition"
+ "newrad" :: "Improved radiative boundary condition"
+ "skip" :: "skip boundary condition code"
+} "none"
+
+private:
+KEYWORD ML_dtlapse_bound "Boundary condition to implement" STEERABLE=ALWAYS
+{
+ "flat" :: "Flat boundary condition"
+ "none" :: "No boundary condition"
+ "static" :: "Boundaries held fixed"
+ "radiative" :: "Radiation boundary condition"
+ "scalar" :: "Dirichlet boundary condition"
+ "newrad" :: "Improved radiative boundary condition"
+ "skip" :: "skip boundary condition code"
+} "none"
+
+private:
+KEYWORD ML_dtshift_bound "Boundary condition to implement" STEERABLE=ALWAYS
+{
+ "flat" :: "Flat boundary condition"
+ "none" :: "No boundary condition"
+ "static" :: "Boundaries held fixed"
+ "radiative" :: "Radiation boundary condition"
+ "scalar" :: "Dirichlet boundary condition"
+ "newrad" :: "Improved radiative boundary condition"
+ "skip" :: "skip boundary condition code"
+} "none"
+
+private:
+KEYWORD ML_Gamma_bound "Boundary condition to implement" STEERABLE=ALWAYS
+{
+ "flat" :: "Flat boundary condition"
+ "none" :: "No boundary condition"
+ "static" :: "Boundaries held fixed"
+ "radiative" :: "Radiation boundary condition"
+ "scalar" :: "Dirichlet boundary condition"
+ "newrad" :: "Improved radiative boundary condition"
+ "skip" :: "skip boundary condition code"
+} "none"
+
+private:
+KEYWORD ML_lapse_bound "Boundary condition to implement" STEERABLE=ALWAYS
+{
+ "flat" :: "Flat boundary condition"
+ "none" :: "No boundary condition"
+ "static" :: "Boundaries held fixed"
+ "radiative" :: "Radiation boundary condition"
+ "scalar" :: "Dirichlet boundary condition"
+ "newrad" :: "Improved radiative boundary condition"
+ "skip" :: "skip boundary condition code"
+} "none"
+
+private:
+KEYWORD ML_log_confac_bound "Boundary condition to implement" STEERABLE=ALWAYS
+{
+ "flat" :: "Flat boundary condition"
+ "none" :: "No boundary condition"
+ "static" :: "Boundaries held fixed"
+ "radiative" :: "Radiation boundary condition"
+ "scalar" :: "Dirichlet boundary condition"
+ "newrad" :: "Improved radiative boundary condition"
+ "skip" :: "skip boundary condition code"
+} "none"
+
+private:
+KEYWORD ML_metric_bound "Boundary condition to implement" STEERABLE=ALWAYS
+{
+ "flat" :: "Flat boundary condition"
+ "none" :: "No boundary condition"
+ "static" :: "Boundaries held fixed"
+ "radiative" :: "Radiation boundary condition"
+ "scalar" :: "Dirichlet boundary condition"
+ "newrad" :: "Improved radiative boundary condition"
+ "skip" :: "skip boundary condition code"
+} "none"
+
+private:
+KEYWORD ML_shift_bound "Boundary condition to implement" STEERABLE=ALWAYS
+{
+ "flat" :: "Flat boundary condition"
+ "none" :: "No boundary condition"
+ "static" :: "Boundaries held fixed"
+ "radiative" :: "Radiation boundary condition"
+ "scalar" :: "Dirichlet boundary condition"
+ "newrad" :: "Improved radiative boundary condition"
+ "skip" :: "skip boundary condition code"
+} "none"
+
+private:
+KEYWORD ML_Theta_bound "Boundary condition to implement" STEERABLE=ALWAYS
+{
+ "flat" :: "Flat boundary condition"
+ "none" :: "No boundary condition"
+ "static" :: "Boundaries held fixed"
+ "radiative" :: "Radiation boundary condition"
+ "scalar" :: "Dirichlet boundary condition"
+ "newrad" :: "Improved radiative boundary condition"
+ "skip" :: "skip boundary condition code"
+} "none"
+
+private:
+KEYWORD ML_trace_curv_bound "Boundary condition to implement" STEERABLE=ALWAYS
+{
+ "flat" :: "Flat boundary condition"
+ "none" :: "No boundary condition"
+ "static" :: "Boundaries held fixed"
+ "radiative" :: "Radiation boundary condition"
+ "scalar" :: "Dirichlet boundary condition"
+ "newrad" :: "Improved radiative boundary condition"
+ "skip" :: "skip boundary condition code"
+} "none"
+
+private:
+CCTK_REAL At11_bound_speed "characteristic speed at boundary" STEERABLE=ALWAYS
+{
+ "0:*" :: "outgoing characteristic speed > 0"
+} 1.
+
+private:
+CCTK_REAL At12_bound_speed "characteristic speed at boundary" STEERABLE=ALWAYS
+{
+ "0:*" :: "outgoing characteristic speed > 0"
+} 1.
+
+private:
+CCTK_REAL At13_bound_speed "characteristic speed at boundary" STEERABLE=ALWAYS
+{
+ "0:*" :: "outgoing characteristic speed > 0"
+} 1.
+
+private:
+CCTK_REAL At22_bound_speed "characteristic speed at boundary" STEERABLE=ALWAYS
+{
+ "0:*" :: "outgoing characteristic speed > 0"
+} 1.
+
+private:
+CCTK_REAL At23_bound_speed "characteristic speed at boundary" STEERABLE=ALWAYS
+{
+ "0:*" :: "outgoing characteristic speed > 0"
+} 1.
+
+private:
+CCTK_REAL At33_bound_speed "characteristic speed at boundary" STEERABLE=ALWAYS
+{
+ "0:*" :: "outgoing characteristic speed > 0"
+} 1.
+
+private:
+CCTK_REAL A_bound_speed "characteristic speed at boundary" STEERABLE=ALWAYS
+{
+ "0:*" :: "outgoing characteristic speed > 0"
+} 1.
+
+private:
+CCTK_REAL B1_bound_speed "characteristic speed at boundary" STEERABLE=ALWAYS
+{
+ "0:*" :: "outgoing characteristic speed > 0"
+} 1.
+
+private:
+CCTK_REAL B2_bound_speed "characteristic speed at boundary" STEERABLE=ALWAYS
+{
+ "0:*" :: "outgoing characteristic speed > 0"
+} 1.
+
+private:
+CCTK_REAL B3_bound_speed "characteristic speed at boundary" STEERABLE=ALWAYS
+{
+ "0:*" :: "outgoing characteristic speed > 0"
+} 1.
+
+private:
+CCTK_REAL Xt1_bound_speed "characteristic speed at boundary" STEERABLE=ALWAYS
+{
+ "0:*" :: "outgoing characteristic speed > 0"
+} 1.
+
+private:
+CCTK_REAL Xt2_bound_speed "characteristic speed at boundary" STEERABLE=ALWAYS
+{
+ "0:*" :: "outgoing characteristic speed > 0"
+} 1.
+
+private:
+CCTK_REAL Xt3_bound_speed "characteristic speed at boundary" STEERABLE=ALWAYS
+{
+ "0:*" :: "outgoing characteristic speed > 0"
+} 1.
+
+private:
+CCTK_REAL alpha_bound_speed "characteristic speed at boundary" STEERABLE=ALWAYS
+{
+ "0:*" :: "outgoing characteristic speed > 0"
+} 1.
+
+private:
+CCTK_REAL phi_bound_speed "characteristic speed at boundary" STEERABLE=ALWAYS
+{
+ "0:*" :: "outgoing characteristic speed > 0"
+} 1.
+
+private:
+CCTK_REAL gt11_bound_speed "characteristic speed at boundary" STEERABLE=ALWAYS
+{
+ "0:*" :: "outgoing characteristic speed > 0"
+} 1.
+
+private:
+CCTK_REAL gt12_bound_speed "characteristic speed at boundary" STEERABLE=ALWAYS
+{
+ "0:*" :: "outgoing characteristic speed > 0"
+} 1.
+
+private:
+CCTK_REAL gt13_bound_speed "characteristic speed at boundary" STEERABLE=ALWAYS
+{
+ "0:*" :: "outgoing characteristic speed > 0"
+} 1.
+
+private:
+CCTK_REAL gt22_bound_speed "characteristic speed at boundary" STEERABLE=ALWAYS
+{
+ "0:*" :: "outgoing characteristic speed > 0"
+} 1.
+
+private:
+CCTK_REAL gt23_bound_speed "characteristic speed at boundary" STEERABLE=ALWAYS
+{
+ "0:*" :: "outgoing characteristic speed > 0"
+} 1.
+
+private:
+CCTK_REAL gt33_bound_speed "characteristic speed at boundary" STEERABLE=ALWAYS
+{
+ "0:*" :: "outgoing characteristic speed > 0"
+} 1.
+
+private:
+CCTK_REAL beta1_bound_speed "characteristic speed at boundary" STEERABLE=ALWAYS
+{
+ "0:*" :: "outgoing characteristic speed > 0"
+} 1.
+
+private:
+CCTK_REAL beta2_bound_speed "characteristic speed at boundary" STEERABLE=ALWAYS
+{
+ "0:*" :: "outgoing characteristic speed > 0"
+} 1.
+
+private:
+CCTK_REAL beta3_bound_speed "characteristic speed at boundary" STEERABLE=ALWAYS
+{
+ "0:*" :: "outgoing characteristic speed > 0"
+} 1.
+
+private:
+CCTK_REAL Theta_bound_speed "characteristic speed at boundary" STEERABLE=ALWAYS
+{
+ "0:*" :: "outgoing characteristic speed > 0"
+} 1.
+
+private:
+CCTK_REAL trK_bound_speed "characteristic speed at boundary" STEERABLE=ALWAYS
+{
+ "0:*" :: "outgoing characteristic speed > 0"
+} 1.
+
+private:
+CCTK_REAL ML_curv_bound_speed "characteristic speed at boundary" STEERABLE=ALWAYS
+{
+ "0:*" :: "outgoing characteristic speed > 0"
+} 1.
+
+private:
+CCTK_REAL ML_dtlapse_bound_speed "characteristic speed at boundary" STEERABLE=ALWAYS
+{
+ "0:*" :: "outgoing characteristic speed > 0"
+} 1.
+
+private:
+CCTK_REAL ML_dtshift_bound_speed "characteristic speed at boundary" STEERABLE=ALWAYS
+{
+ "0:*" :: "outgoing characteristic speed > 0"
+} 1.
+
+private:
+CCTK_REAL ML_Gamma_bound_speed "characteristic speed at boundary" STEERABLE=ALWAYS
+{
+ "0:*" :: "outgoing characteristic speed > 0"
+} 1.
+
+private:
+CCTK_REAL ML_lapse_bound_speed "characteristic speed at boundary" STEERABLE=ALWAYS
+{
+ "0:*" :: "outgoing characteristic speed > 0"
+} 1.
+
+private:
+CCTK_REAL ML_log_confac_bound_speed "characteristic speed at boundary" STEERABLE=ALWAYS
+{
+ "0:*" :: "outgoing characteristic speed > 0"
+} 1.
+
+private:
+CCTK_REAL ML_metric_bound_speed "characteristic speed at boundary" STEERABLE=ALWAYS
+{
+ "0:*" :: "outgoing characteristic speed > 0"
+} 1.
+
+private:
+CCTK_REAL ML_shift_bound_speed "characteristic speed at boundary" STEERABLE=ALWAYS
+{
+ "0:*" :: "outgoing characteristic speed > 0"
+} 1.
+
+private:
+CCTK_REAL ML_Theta_bound_speed "characteristic speed at boundary" STEERABLE=ALWAYS
+{
+ "0:*" :: "outgoing characteristic speed > 0"
+} 1.
+
+private:
+CCTK_REAL ML_trace_curv_bound_speed "characteristic speed at boundary" STEERABLE=ALWAYS
+{
+ "0:*" :: "outgoing characteristic speed > 0"
+} 1.
+
+private:
+CCTK_REAL At11_bound_limit "limit value for r -> infinity" STEERABLE=ALWAYS
+{
+ "*:*" :: "value of limit value is unrestricted"
+} 0.
+
+private:
+CCTK_REAL At12_bound_limit "limit value for r -> infinity" STEERABLE=ALWAYS
+{
+ "*:*" :: "value of limit value is unrestricted"
+} 0.
+
+private:
+CCTK_REAL At13_bound_limit "limit value for r -> infinity" STEERABLE=ALWAYS
+{
+ "*:*" :: "value of limit value is unrestricted"
+} 0.
+
+private:
+CCTK_REAL At22_bound_limit "limit value for r -> infinity" STEERABLE=ALWAYS
+{
+ "*:*" :: "value of limit value is unrestricted"
+} 0.
+
+private:
+CCTK_REAL At23_bound_limit "limit value for r -> infinity" STEERABLE=ALWAYS
+{
+ "*:*" :: "value of limit value is unrestricted"
+} 0.
+
+private:
+CCTK_REAL At33_bound_limit "limit value for r -> infinity" STEERABLE=ALWAYS
+{
+ "*:*" :: "value of limit value is unrestricted"
+} 0.
+
+private:
+CCTK_REAL A_bound_limit "limit value for r -> infinity" STEERABLE=ALWAYS
+{
+ "*:*" :: "value of limit value is unrestricted"
+} 0.
+
+private:
+CCTK_REAL B1_bound_limit "limit value for r -> infinity" STEERABLE=ALWAYS
+{
+ "*:*" :: "value of limit value is unrestricted"
+} 0.
+
+private:
+CCTK_REAL B2_bound_limit "limit value for r -> infinity" STEERABLE=ALWAYS
+{
+ "*:*" :: "value of limit value is unrestricted"
+} 0.
+
+private:
+CCTK_REAL B3_bound_limit "limit value for r -> infinity" STEERABLE=ALWAYS
+{
+ "*:*" :: "value of limit value is unrestricted"
+} 0.
+
+private:
+CCTK_REAL Xt1_bound_limit "limit value for r -> infinity" STEERABLE=ALWAYS
+{
+ "*:*" :: "value of limit value is unrestricted"
+} 0.
+
+private:
+CCTK_REAL Xt2_bound_limit "limit value for r -> infinity" STEERABLE=ALWAYS
+{
+ "*:*" :: "value of limit value is unrestricted"
+} 0.
+
+private:
+CCTK_REAL Xt3_bound_limit "limit value for r -> infinity" STEERABLE=ALWAYS
+{
+ "*:*" :: "value of limit value is unrestricted"
+} 0.
+
+private:
+CCTK_REAL alpha_bound_limit "limit value for r -> infinity" STEERABLE=ALWAYS
+{
+ "*:*" :: "value of limit value is unrestricted"
+} 0.
+
+private:
+CCTK_REAL phi_bound_limit "limit value for r -> infinity" STEERABLE=ALWAYS
+{
+ "*:*" :: "value of limit value is unrestricted"
+} 0.
+
+private:
+CCTK_REAL gt11_bound_limit "limit value for r -> infinity" STEERABLE=ALWAYS
+{
+ "*:*" :: "value of limit value is unrestricted"
+} 0.
+
+private:
+CCTK_REAL gt12_bound_limit "limit value for r -> infinity" STEERABLE=ALWAYS
+{
+ "*:*" :: "value of limit value is unrestricted"
+} 0.
+
+private:
+CCTK_REAL gt13_bound_limit "limit value for r -> infinity" STEERABLE=ALWAYS
+{
+ "*:*" :: "value of limit value is unrestricted"
+} 0.
+
+private:
+CCTK_REAL gt22_bound_limit "limit value for r -> infinity" STEERABLE=ALWAYS
+{
+ "*:*" :: "value of limit value is unrestricted"
+} 0.
+
+private:
+CCTK_REAL gt23_bound_limit "limit value for r -> infinity" STEERABLE=ALWAYS
+{
+ "*:*" :: "value of limit value is unrestricted"
+} 0.
+
+private:
+CCTK_REAL gt33_bound_limit "limit value for r -> infinity" STEERABLE=ALWAYS
+{
+ "*:*" :: "value of limit value is unrestricted"
+} 0.
+
+private:
+CCTK_REAL beta1_bound_limit "limit value for r -> infinity" STEERABLE=ALWAYS
+{
+ "*:*" :: "value of limit value is unrestricted"
+} 0.
+
+private:
+CCTK_REAL beta2_bound_limit "limit value for r -> infinity" STEERABLE=ALWAYS
+{
+ "*:*" :: "value of limit value is unrestricted"
+} 0.
+
+private:
+CCTK_REAL beta3_bound_limit "limit value for r -> infinity" STEERABLE=ALWAYS
+{
+ "*:*" :: "value of limit value is unrestricted"
+} 0.
+
+private:
+CCTK_REAL Theta_bound_limit "limit value for r -> infinity" STEERABLE=ALWAYS
+{
+ "*:*" :: "value of limit value is unrestricted"
+} 0.
+
+private:
+CCTK_REAL trK_bound_limit "limit value for r -> infinity" STEERABLE=ALWAYS
+{
+ "*:*" :: "value of limit value is unrestricted"
+} 0.
+
+private:
+CCTK_REAL ML_curv_bound_limit "limit value for r -> infinity" STEERABLE=ALWAYS
+{
+ "*:*" :: "value of limit value is unrestricted"
+} 0.
+
+private:
+CCTK_REAL ML_dtlapse_bound_limit "limit value for r -> infinity" STEERABLE=ALWAYS
+{
+ "*:*" :: "value of limit value is unrestricted"
+} 0.
+
+private:
+CCTK_REAL ML_dtshift_bound_limit "limit value for r -> infinity" STEERABLE=ALWAYS
+{
+ "*:*" :: "value of limit value is unrestricted"
+} 0.
+
+private:
+CCTK_REAL ML_Gamma_bound_limit "limit value for r -> infinity" STEERABLE=ALWAYS
+{
+ "*:*" :: "value of limit value is unrestricted"
+} 0.
+
+private:
+CCTK_REAL ML_lapse_bound_limit "limit value for r -> infinity" STEERABLE=ALWAYS
+{
+ "*:*" :: "value of limit value is unrestricted"
+} 0.
+
+private:
+CCTK_REAL ML_log_confac_bound_limit "limit value for r -> infinity" STEERABLE=ALWAYS
+{
+ "*:*" :: "value of limit value is unrestricted"
+} 0.
+
+private:
+CCTK_REAL ML_metric_bound_limit "limit value for r -> infinity" STEERABLE=ALWAYS
+{
+ "*:*" :: "value of limit value is unrestricted"
+} 0.
+
+private:
+CCTK_REAL ML_shift_bound_limit "limit value for r -> infinity" STEERABLE=ALWAYS
+{
+ "*:*" :: "value of limit value is unrestricted"
+} 0.
+
+private:
+CCTK_REAL ML_Theta_bound_limit "limit value for r -> infinity" STEERABLE=ALWAYS
+{
+ "*:*" :: "value of limit value is unrestricted"
+} 0.
+
+private:
+CCTK_REAL ML_trace_curv_bound_limit "limit value for r -> infinity" STEERABLE=ALWAYS
+{
+ "*:*" :: "value of limit value is unrestricted"
+} 0.
+
+private:
+CCTK_REAL At11_bound_scalar "Dirichlet boundary value" STEERABLE=ALWAYS
+{
+ "*:*" :: "unrestricted"
+} 0.
+
+private:
+CCTK_REAL At12_bound_scalar "Dirichlet boundary value" STEERABLE=ALWAYS
+{
+ "*:*" :: "unrestricted"
+} 0.
+
+private:
+CCTK_REAL At13_bound_scalar "Dirichlet boundary value" STEERABLE=ALWAYS
+{
+ "*:*" :: "unrestricted"
+} 0.
+
+private:
+CCTK_REAL At22_bound_scalar "Dirichlet boundary value" STEERABLE=ALWAYS
+{
+ "*:*" :: "unrestricted"
+} 0.
+
+private:
+CCTK_REAL At23_bound_scalar "Dirichlet boundary value" STEERABLE=ALWAYS
+{
+ "*:*" :: "unrestricted"
+} 0.
+
+private:
+CCTK_REAL At33_bound_scalar "Dirichlet boundary value" STEERABLE=ALWAYS
+{
+ "*:*" :: "unrestricted"
+} 0.
+
+private:
+CCTK_REAL A_bound_scalar "Dirichlet boundary value" STEERABLE=ALWAYS
+{
+ "*:*" :: "unrestricted"
+} 0.
+
+private:
+CCTK_REAL B1_bound_scalar "Dirichlet boundary value" STEERABLE=ALWAYS
+{
+ "*:*" :: "unrestricted"
+} 0.
+
+private:
+CCTK_REAL B2_bound_scalar "Dirichlet boundary value" STEERABLE=ALWAYS
+{
+ "*:*" :: "unrestricted"
+} 0.
+
+private:
+CCTK_REAL B3_bound_scalar "Dirichlet boundary value" STEERABLE=ALWAYS
+{
+ "*:*" :: "unrestricted"
+} 0.
+
+private:
+CCTK_REAL Xt1_bound_scalar "Dirichlet boundary value" STEERABLE=ALWAYS
+{
+ "*:*" :: "unrestricted"
+} 0.
+
+private:
+CCTK_REAL Xt2_bound_scalar "Dirichlet boundary value" STEERABLE=ALWAYS
+{
+ "*:*" :: "unrestricted"
+} 0.
+
+private:
+CCTK_REAL Xt3_bound_scalar "Dirichlet boundary value" STEERABLE=ALWAYS
+{
+ "*:*" :: "unrestricted"
+} 0.
+
+private:
+CCTK_REAL alpha_bound_scalar "Dirichlet boundary value" STEERABLE=ALWAYS
+{
+ "*:*" :: "unrestricted"
+} 0.
+
+private:
+CCTK_REAL phi_bound_scalar "Dirichlet boundary value" STEERABLE=ALWAYS
+{
+ "*:*" :: "unrestricted"
+} 0.
+
+private:
+CCTK_REAL gt11_bound_scalar "Dirichlet boundary value" STEERABLE=ALWAYS
+{
+ "*:*" :: "unrestricted"
+} 0.
+
+private:
+CCTK_REAL gt12_bound_scalar "Dirichlet boundary value" STEERABLE=ALWAYS
+{
+ "*:*" :: "unrestricted"
+} 0.
+
+private:
+CCTK_REAL gt13_bound_scalar "Dirichlet boundary value" STEERABLE=ALWAYS
+{
+ "*:*" :: "unrestricted"
+} 0.
+
+private:
+CCTK_REAL gt22_bound_scalar "Dirichlet boundary value" STEERABLE=ALWAYS
+{
+ "*:*" :: "unrestricted"
+} 0.
+
+private:
+CCTK_REAL gt23_bound_scalar "Dirichlet boundary value" STEERABLE=ALWAYS
+{
+ "*:*" :: "unrestricted"
+} 0.
+
+private:
+CCTK_REAL gt33_bound_scalar "Dirichlet boundary value" STEERABLE=ALWAYS
+{
+ "*:*" :: "unrestricted"
+} 0.
+
+private:
+CCTK_REAL beta1_bound_scalar "Dirichlet boundary value" STEERABLE=ALWAYS
+{
+ "*:*" :: "unrestricted"
+} 0.
+
+private:
+CCTK_REAL beta2_bound_scalar "Dirichlet boundary value" STEERABLE=ALWAYS
+{
+ "*:*" :: "unrestricted"
+} 0.
+
+private:
+CCTK_REAL beta3_bound_scalar "Dirichlet boundary value" STEERABLE=ALWAYS
+{
+ "*:*" :: "unrestricted"
+} 0.
+
+private:
+CCTK_REAL Theta_bound_scalar "Dirichlet boundary value" STEERABLE=ALWAYS
+{
+ "*:*" :: "unrestricted"
+} 0.
+
+private:
+CCTK_REAL trK_bound_scalar "Dirichlet boundary value" STEERABLE=ALWAYS
+{
+ "*:*" :: "unrestricted"
+} 0.
+
+private:
+CCTK_REAL ML_curv_bound_scalar "Dirichlet boundary value" STEERABLE=ALWAYS
+{
+ "*:*" :: "unrestricted"
+} 0.
+
+private:
+CCTK_REAL ML_dtlapse_bound_scalar "Dirichlet boundary value" STEERABLE=ALWAYS
+{
+ "*:*" :: "unrestricted"
+} 0.
+
+private:
+CCTK_REAL ML_dtshift_bound_scalar "Dirichlet boundary value" STEERABLE=ALWAYS
+{
+ "*:*" :: "unrestricted"
+} 0.
+
+private:
+CCTK_REAL ML_Gamma_bound_scalar "Dirichlet boundary value" STEERABLE=ALWAYS
+{
+ "*:*" :: "unrestricted"
+} 0.
+
+private:
+CCTK_REAL ML_lapse_bound_scalar "Dirichlet boundary value" STEERABLE=ALWAYS
+{
+ "*:*" :: "unrestricted"
+} 0.
+
+private:
+CCTK_REAL ML_log_confac_bound_scalar "Dirichlet boundary value" STEERABLE=ALWAYS
+{
+ "*:*" :: "unrestricted"
+} 0.
+
+private:
+CCTK_REAL ML_metric_bound_scalar "Dirichlet boundary value" STEERABLE=ALWAYS
+{
+ "*:*" :: "unrestricted"
+} 0.
+
+private:
+CCTK_REAL ML_shift_bound_scalar "Dirichlet boundary value" STEERABLE=ALWAYS
+{
+ "*:*" :: "unrestricted"
+} 0.
+
+private:
+CCTK_REAL ML_Theta_bound_scalar "Dirichlet boundary value" STEERABLE=ALWAYS
+{
+ "*:*" :: "unrestricted"
+} 0.
+
+private:
+CCTK_REAL ML_trace_curv_bound_scalar "Dirichlet boundary value" STEERABLE=ALWAYS
+{
+ "*:*" :: "unrestricted"
+} 0.
+
diff --git a/ML_CCZ4/schedule.ccl b/ML_CCZ4/schedule.ccl
new file mode 100644
index 0000000..ae25c0e
--- /dev/null
+++ b/ML_CCZ4/schedule.ccl
@@ -0,0 +1,766 @@
+# File produced by Kranc
+
+
+if (other_timelevels == 1)
+{
+ STORAGE: ML_cons_detg[1]
+}
+
+if (other_timelevels == 1)
+{
+ STORAGE: ML_cons_Gamma[1]
+}
+
+if (other_timelevels == 1)
+{
+ STORAGE: ML_cons_traceA[1]
+}
+
+if (other_timelevels == 1)
+{
+ STORAGE: ML_Ham[1]
+}
+
+if (other_timelevels == 1)
+{
+ STORAGE: ML_mom[1]
+}
+
+if (timelevels == 1)
+{
+ STORAGE: ML_curv[1]
+}
+if (timelevels == 2)
+{
+ STORAGE: ML_curv[2]
+}
+if (timelevels == 3)
+{
+ STORAGE: ML_curv[3]
+}
+
+if (timelevels == 1)
+{
+ STORAGE: ML_dtlapse[1]
+}
+if (timelevels == 2)
+{
+ STORAGE: ML_dtlapse[2]
+}
+if (timelevels == 3)
+{
+ STORAGE: ML_dtlapse[3]
+}
+
+if (timelevels == 1)
+{
+ STORAGE: ML_dtshift[1]
+}
+if (timelevels == 2)
+{
+ STORAGE: ML_dtshift[2]
+}
+if (timelevels == 3)
+{
+ STORAGE: ML_dtshift[3]
+}
+
+if (timelevels == 1)
+{
+ STORAGE: ML_Gamma[1]
+}
+if (timelevels == 2)
+{
+ STORAGE: ML_Gamma[2]
+}
+if (timelevels == 3)
+{
+ STORAGE: ML_Gamma[3]
+}
+
+if (timelevels == 1)
+{
+ STORAGE: ML_lapse[1]
+}
+if (timelevels == 2)
+{
+ STORAGE: ML_lapse[2]
+}
+if (timelevels == 3)
+{
+ STORAGE: ML_lapse[3]
+}
+
+if (timelevels == 1)
+{
+ STORAGE: ML_log_confac[1]
+}
+if (timelevels == 2)
+{
+ STORAGE: ML_log_confac[2]
+}
+if (timelevels == 3)
+{
+ STORAGE: ML_log_confac[3]
+}
+
+if (timelevels == 1)
+{
+ STORAGE: ML_metric[1]
+}
+if (timelevels == 2)
+{
+ STORAGE: ML_metric[2]
+}
+if (timelevels == 3)
+{
+ STORAGE: ML_metric[3]
+}
+
+if (timelevels == 1)
+{
+ STORAGE: ML_shift[1]
+}
+if (timelevels == 2)
+{
+ STORAGE: ML_shift[2]
+}
+if (timelevels == 3)
+{
+ STORAGE: ML_shift[3]
+}
+
+if (timelevels == 1)
+{
+ STORAGE: ML_Theta[1]
+}
+if (timelevels == 2)
+{
+ STORAGE: ML_Theta[2]
+}
+if (timelevels == 3)
+{
+ STORAGE: ML_Theta[3]
+}
+
+if (timelevels == 1)
+{
+ STORAGE: ML_trace_curv[1]
+}
+if (timelevels == 2)
+{
+ STORAGE: ML_trace_curv[2]
+}
+if (timelevels == 3)
+{
+ STORAGE: ML_trace_curv[3]
+}
+
+if (rhs_timelevels == 1)
+{
+ STORAGE: ML_curvrhs[1]
+}
+if (rhs_timelevels == 2)
+{
+ STORAGE: ML_curvrhs[2]
+}
+if (rhs_timelevels == 3)
+{
+ STORAGE: ML_curvrhs[3]
+}
+
+if (rhs_timelevels == 1)
+{
+ STORAGE: ML_dtlapserhs[1]
+}
+if (rhs_timelevels == 2)
+{
+ STORAGE: ML_dtlapserhs[2]
+}
+if (rhs_timelevels == 3)
+{
+ STORAGE: ML_dtlapserhs[3]
+}
+
+if (rhs_timelevels == 1)
+{
+ STORAGE: ML_dtshiftrhs[1]
+}
+if (rhs_timelevels == 2)
+{
+ STORAGE: ML_dtshiftrhs[2]
+}
+if (rhs_timelevels == 3)
+{
+ STORAGE: ML_dtshiftrhs[3]
+}
+
+if (rhs_timelevels == 1)
+{
+ STORAGE: ML_Gammarhs[1]
+}
+if (rhs_timelevels == 2)
+{
+ STORAGE: ML_Gammarhs[2]
+}
+if (rhs_timelevels == 3)
+{
+ STORAGE: ML_Gammarhs[3]
+}
+
+if (rhs_timelevels == 1)
+{
+ STORAGE: ML_lapserhs[1]
+}
+if (rhs_timelevels == 2)
+{
+ STORAGE: ML_lapserhs[2]
+}
+if (rhs_timelevels == 3)
+{
+ STORAGE: ML_lapserhs[3]
+}
+
+if (rhs_timelevels == 1)
+{
+ STORAGE: ML_log_confacrhs[1]
+}
+if (rhs_timelevels == 2)
+{
+ STORAGE: ML_log_confacrhs[2]
+}
+if (rhs_timelevels == 3)
+{
+ STORAGE: ML_log_confacrhs[3]
+}
+
+if (rhs_timelevels == 1)
+{
+ STORAGE: ML_metricrhs[1]
+}
+if (rhs_timelevels == 2)
+{
+ STORAGE: ML_metricrhs[2]
+}
+if (rhs_timelevels == 3)
+{
+ STORAGE: ML_metricrhs[3]
+}
+
+if (rhs_timelevels == 1)
+{
+ STORAGE: ML_shiftrhs[1]
+}
+if (rhs_timelevels == 2)
+{
+ STORAGE: ML_shiftrhs[2]
+}
+if (rhs_timelevels == 3)
+{
+ STORAGE: ML_shiftrhs[3]
+}
+
+if (rhs_timelevels == 1)
+{
+ STORAGE: ML_Thetarhs[1]
+}
+if (rhs_timelevels == 2)
+{
+ STORAGE: ML_Thetarhs[2]
+}
+if (rhs_timelevels == 3)
+{
+ STORAGE: ML_Thetarhs[3]
+}
+
+if (rhs_timelevels == 1)
+{
+ STORAGE: ML_trace_curvrhs[1]
+}
+if (rhs_timelevels == 2)
+{
+ STORAGE: ML_trace_curvrhs[2]
+}
+if (rhs_timelevels == 3)
+{
+ STORAGE: ML_trace_curvrhs[3]
+}
+
+schedule ML_CCZ4_Startup at STARTUP
+{
+ LANG: C
+ OPTIONS: meta
+} "create banner"
+
+schedule ML_CCZ4_RegisterSymmetries in SymmetryRegister
+{
+ LANG: C
+ OPTIONS: meta
+} "register symmetries"
+
+
+if (CCTK_EQUALS(my_initial_data, "Minkowski"))
+{
+ schedule ML_CCZ4_Minkowski IN ADMBase_InitialData
+ {
+ LANG: C
+ WRITES: ML_CCZ4::ML_curv
+ WRITES: ML_CCZ4::ML_dtlapse
+ WRITES: ML_CCZ4::ML_dtshift
+ WRITES: ML_CCZ4::ML_Gamma
+ WRITES: ML_CCZ4::ML_lapse
+ WRITES: ML_CCZ4::ML_log_confac
+ WRITES: ML_CCZ4::ML_metric
+ WRITES: ML_CCZ4::ML_shift
+ WRITES: ML_CCZ4::ML_Theta
+ WRITES: ML_CCZ4::ML_trace_curv
+ } "ML_CCZ4_Minkowski"
+}
+
+
+if (CCTK_EQUALS(my_initial_data, "ADMBase"))
+{
+ schedule ML_CCZ4_convertFromADMBase AT initial AFTER ADMBase_PostInitial
+ {
+ LANG: C
+ READS: ADMBase::curv
+ READS: ADMBase::lapse
+ READS: ADMBase::metric
+ READS: ADMBase::shift
+ READS: ML_CCZ4::ML_log_confac
+ READS: ML_CCZ4::ML_trace_curv
+ WRITES: ML_CCZ4::ML_curv
+ WRITES: ML_CCZ4::ML_lapse
+ WRITES: ML_CCZ4::ML_log_confac
+ WRITES: ML_CCZ4::ML_metric
+ WRITES: ML_CCZ4::ML_shift
+ WRITES: ML_CCZ4::ML_Theta
+ WRITES: ML_CCZ4::ML_trace_curv
+ } "ML_CCZ4_convertFromADMBase"
+}
+
+
+if (CCTK_EQUALS(my_initial_data, "ADMBase"))
+{
+ schedule ML_CCZ4_InitGamma AT initial BEFORE ML_CCZ4_convertFromADMBaseGamma
+ {
+ LANG: C
+ WRITES: ML_CCZ4::ML_dtlapse
+ WRITES: ML_CCZ4::ML_dtshift
+ WRITES: ML_CCZ4::ML_Gamma
+ } "ML_CCZ4_InitGamma"
+}
+
+
+if (CCTK_EQUALS(my_initial_data, "ADMBase"))
+{
+ schedule ML_CCZ4_convertFromADMBaseGamma AT initial AFTER ML_CCZ4_convertFromADMBase
+ {
+ LANG: C
+ SYNC: ML_dtlapse
+ SYNC: ML_dtshift
+ SYNC: ML_Gamma
+ READS: ADMBase::dtlapse
+ READS: ADMBase::dtshift
+ READS: grid::coordinates
+ READS: Grid::coordinates
+ READS: ML_CCZ4::ML_lapse
+ READS: ML_CCZ4::ML_metric
+ READS: ML_CCZ4::ML_shift
+ WRITES: ML_CCZ4::ML_dtlapse
+ WRITES: ML_CCZ4::ML_dtshift
+ WRITES: ML_CCZ4::ML_Gamma
+ } "ML_CCZ4_convertFromADMBaseGamma"
+}
+
+schedule ML_CCZ4_RHS1 IN ML_CCZ4_evolCalcGroup
+{
+ LANG: C
+ READS: grid::coordinates
+ READS: Grid::coordinates
+ READS: ML_CCZ4::ML_curv
+ READS: ML_CCZ4::ML_dtlapse
+ READS: ML_CCZ4::ML_dtshift
+ READS: ML_CCZ4::ML_Gamma
+ READS: ML_CCZ4::ML_lapse
+ READS: ML_CCZ4::ML_log_confac
+ READS: ML_CCZ4::ML_metric
+ READS: ML_CCZ4::ML_shift
+ READS: ML_CCZ4::ML_Theta
+ READS: ML_CCZ4::ML_trace_curv
+ READS: TmunuBase::stress_energy_scalar
+ READS: TmunuBase::stress_energy_tensor
+ READS: TmunuBase::stress_energy_vector
+ WRITES: ML_CCZ4::ML_dtlapserhs
+ WRITES: ML_CCZ4::ML_dtshiftrhs
+ WRITES: ML_CCZ4::ML_Gammarhs
+ WRITES: ML_CCZ4::ML_lapserhs
+ WRITES: ML_CCZ4::ML_log_confacrhs
+ WRITES: ML_CCZ4::ML_metricrhs
+ WRITES: ML_CCZ4::ML_shiftrhs
+ WRITES: ML_CCZ4::ML_Thetarhs
+ WRITES: ML_CCZ4::ML_trace_curvrhs
+} "ML_CCZ4_RHS1"
+
+schedule ML_CCZ4_RHS2 IN ML_CCZ4_evolCalcGroup
+{
+ LANG: C
+ READS: grid::coordinates
+ READS: Grid::coordinates
+ READS: ML_CCZ4::ML_curv
+ READS: ML_CCZ4::ML_Gamma
+ READS: ML_CCZ4::ML_lapse
+ READS: ML_CCZ4::ML_log_confac
+ READS: ML_CCZ4::ML_metric
+ READS: ML_CCZ4::ML_shift
+ READS: ML_CCZ4::ML_Theta
+ READS: ML_CCZ4::ML_trace_curv
+ READS: TmunuBase::stress_energy_scalar
+ READS: TmunuBase::stress_energy_tensor
+ READS: TmunuBase::stress_energy_vector
+ WRITES: ML_CCZ4::ML_curvrhs
+} "ML_CCZ4_RHS2"
+
+
+if (CCTK_EQUALS(apply_dissipation, "always"))
+{
+ schedule ML_CCZ4_Dissipation IN ML_CCZ4_evolCalcGroup AFTER (ML_CCZ4_RHS1 ML_CCZ4_RHS2)
+ {
+ LANG: C
+ READS: ML_CCZ4::ML_curv
+ READS: ML_CCZ4::ML_curvrhs
+ READS: ML_CCZ4::ML_dtlapse
+ READS: ML_CCZ4::ML_dtlapserhs
+ READS: ML_CCZ4::ML_dtshift
+ READS: ML_CCZ4::ML_dtshiftrhs
+ READS: ML_CCZ4::ML_Gamma
+ READS: ML_CCZ4::ML_Gammarhs
+ READS: ML_CCZ4::ML_lapse
+ READS: ML_CCZ4::ML_lapserhs
+ READS: ML_CCZ4::ML_log_confac
+ READS: ML_CCZ4::ML_log_confacrhs
+ READS: ML_CCZ4::ML_metric
+ READS: ML_CCZ4::ML_metricrhs
+ READS: ML_CCZ4::ML_shift
+ READS: ML_CCZ4::ML_shiftrhs
+ READS: ML_CCZ4::ML_Theta
+ READS: ML_CCZ4::ML_Thetarhs
+ READS: ML_CCZ4::ML_trace_curv
+ READS: ML_CCZ4::ML_trace_curvrhs
+ WRITES: ML_CCZ4::ML_curvrhs
+ WRITES: ML_CCZ4::ML_dtlapserhs
+ WRITES: ML_CCZ4::ML_dtshiftrhs
+ WRITES: ML_CCZ4::ML_Gammarhs
+ WRITES: ML_CCZ4::ML_lapserhs
+ WRITES: ML_CCZ4::ML_log_confacrhs
+ WRITES: ML_CCZ4::ML_metricrhs
+ WRITES: ML_CCZ4::ML_shiftrhs
+ WRITES: ML_CCZ4::ML_Thetarhs
+ WRITES: ML_CCZ4::ML_trace_curvrhs
+ } "ML_CCZ4_Dissipation"
+}
+
+schedule ML_CCZ4_Advect IN ML_CCZ4_evolCalcGroup AFTER (ML_CCZ4_RHS1 ML_CCZ4_RHS2)
+{
+ LANG: C
+ READS: ML_CCZ4::ML_curv
+ READS: ML_CCZ4::ML_curvrhs
+ READS: ML_CCZ4::ML_dtlapse
+ READS: ML_CCZ4::ML_dtlapserhs
+ READS: ML_CCZ4::ML_dtshift
+ READS: ML_CCZ4::ML_dtshiftrhs
+ READS: ML_CCZ4::ML_Gamma
+ READS: ML_CCZ4::ML_Gammarhs
+ READS: ML_CCZ4::ML_lapse
+ READS: ML_CCZ4::ML_lapserhs
+ READS: ML_CCZ4::ML_log_confac
+ READS: ML_CCZ4::ML_log_confacrhs
+ READS: ML_CCZ4::ML_metric
+ READS: ML_CCZ4::ML_metricrhs
+ READS: ML_CCZ4::ML_shift
+ READS: ML_CCZ4::ML_shiftrhs
+ READS: ML_CCZ4::ML_Theta
+ READS: ML_CCZ4::ML_Thetarhs
+ READS: ML_CCZ4::ML_trace_curv
+ READS: ML_CCZ4::ML_trace_curvrhs
+ WRITES: ML_CCZ4::ML_curvrhs
+ WRITES: ML_CCZ4::ML_dtlapserhs
+ WRITES: ML_CCZ4::ML_dtshiftrhs
+ WRITES: ML_CCZ4::ML_Gammarhs
+ WRITES: ML_CCZ4::ML_lapserhs
+ WRITES: ML_CCZ4::ML_log_confacrhs
+ WRITES: ML_CCZ4::ML_metricrhs
+ WRITES: ML_CCZ4::ML_shiftrhs
+ WRITES: ML_CCZ4::ML_Thetarhs
+ WRITES: ML_CCZ4::ML_trace_curvrhs
+} "ML_CCZ4_Advect"
+
+schedule ML_CCZ4_InitRHS AT analysis BEFORE ML_CCZ4_evolCalcGroup
+{
+ LANG: C
+ WRITES: ML_CCZ4::ML_curvrhs
+ WRITES: ML_CCZ4::ML_dtlapserhs
+ WRITES: ML_CCZ4::ML_dtshiftrhs
+ WRITES: ML_CCZ4::ML_Gammarhs
+ WRITES: ML_CCZ4::ML_lapserhs
+ WRITES: ML_CCZ4::ML_log_confacrhs
+ WRITES: ML_CCZ4::ML_metricrhs
+ WRITES: ML_CCZ4::ML_shiftrhs
+ WRITES: ML_CCZ4::ML_Thetarhs
+ WRITES: ML_CCZ4::ML_trace_curvrhs
+} "ML_CCZ4_InitRHS"
+
+
+if (CCTK_EQUALS(my_rhs_boundary_condition, "static"))
+{
+ schedule ML_CCZ4_RHSStaticBoundary IN MoL_CalcRHS
+ {
+ LANG: C
+ WRITES: ML_CCZ4::ML_curvrhs
+ WRITES: ML_CCZ4::ML_dtlapserhs
+ WRITES: ML_CCZ4::ML_dtshiftrhs
+ WRITES: ML_CCZ4::ML_Gammarhs
+ WRITES: ML_CCZ4::ML_lapserhs
+ WRITES: ML_CCZ4::ML_log_confacrhs
+ WRITES: ML_CCZ4::ML_metricrhs
+ WRITES: ML_CCZ4::ML_shiftrhs
+ WRITES: ML_CCZ4::ML_Thetarhs
+ WRITES: ML_CCZ4::ML_trace_curvrhs
+ } "ML_CCZ4_RHSStaticBoundary"
+}
+
+schedule ML_CCZ4_enforce IN MoL_PostStepModify
+{
+ LANG: C
+ READS: ML_CCZ4::ML_curv
+ READS: ML_CCZ4::ML_lapse
+ READS: ML_CCZ4::ML_metric
+ WRITES: ML_CCZ4::ML_curv
+ WRITES: ML_CCZ4::ML_lapse
+} "ML_CCZ4_enforce"
+
+
+if (CCTK_EQUALS(my_boundary_condition, "Minkowski"))
+{
+ schedule ML_CCZ4_boundary IN MoL_PostStep
+ {
+ LANG: C
+ WRITES: ML_CCZ4::ML_curv
+ WRITES: ML_CCZ4::ML_dtlapse
+ WRITES: ML_CCZ4::ML_dtshift
+ WRITES: ML_CCZ4::ML_Gamma
+ WRITES: ML_CCZ4::ML_lapse
+ WRITES: ML_CCZ4::ML_log_confac
+ WRITES: ML_CCZ4::ML_metric
+ WRITES: ML_CCZ4::ML_shift
+ WRITES: ML_CCZ4::ML_Theta
+ WRITES: ML_CCZ4::ML_trace_curv
+ } "ML_CCZ4_boundary"
+}
+
+schedule ML_CCZ4_convertToADMBase IN ML_CCZ4_convertToADMBaseGroup
+{
+ LANG: C
+ READS: ADMBase::metric
+ READS: ML_CCZ4::ML_curv
+ READS: ML_CCZ4::ML_lapse
+ READS: ML_CCZ4::ML_log_confac
+ READS: ML_CCZ4::ML_metric
+ READS: ML_CCZ4::ML_shift
+ READS: ML_CCZ4::ML_trace_curv
+ WRITES: ADMBase::curv
+ WRITES: ADMBase::lapse
+ WRITES: ADMBase::metric
+ WRITES: ADMBase::shift
+} "ML_CCZ4_convertToADMBase"
+
+
+if (CCTK_EQUALS(dt_lapse_shift_method, "correct"))
+{
+ schedule ML_CCZ4_convertToADMBaseDtLapseShift IN ML_CCZ4_convertToADMBaseGroup
+ {
+ LANG: C
+ SYNC: ADMBase::dtlapse
+ SYNC: ADMBase::dtshift
+ READS: grid::coordinates
+ READS: Grid::coordinates
+ READS: ML_CCZ4::ML_dtlapse
+ READS: ML_CCZ4::ML_dtshift
+ READS: ML_CCZ4::ML_Gamma
+ READS: ML_CCZ4::ML_lapse
+ READS: ML_CCZ4::ML_log_confac
+ READS: ML_CCZ4::ML_metric
+ READS: ML_CCZ4::ML_shift
+ READS: ML_CCZ4::ML_Theta
+ READS: ML_CCZ4::ML_trace_curv
+ WRITES: ADMBase::dtlapse
+ WRITES: ADMBase::dtshift
+ } "ML_CCZ4_convertToADMBaseDtLapseShift"
+}
+
+
+if (CCTK_EQUALS(dt_lapse_shift_method, "correct"))
+{
+ schedule ML_CCZ4_convertToADMBaseDtLapseShiftBoundary IN ML_CCZ4_convertToADMBaseGroup
+ {
+ LANG: C
+ READS: grid::coordinates
+ READS: Grid::coordinates
+ READS: ML_CCZ4::ML_dtlapse
+ READS: ML_CCZ4::ML_dtshift
+ READS: ML_CCZ4::ML_Gamma
+ READS: ML_CCZ4::ML_lapse
+ READS: ML_CCZ4::ML_metric
+ READS: ML_CCZ4::ML_shift
+ READS: ML_CCZ4::ML_Theta
+ READS: ML_CCZ4::ML_trace_curv
+ WRITES: ADMBase::dtlapse
+ WRITES: ADMBase::dtshift
+ } "ML_CCZ4_convertToADMBaseDtLapseShiftBoundary"
+}
+
+
+if (CCTK_EQUALS(dt_lapse_shift_method, "noLapseShiftAdvection"))
+{
+ schedule ML_CCZ4_convertToADMBaseFakeDtLapseShift IN ML_CCZ4_convertToADMBaseGroup
+ {
+ LANG: C
+ READS: grid::coordinates
+ READS: Grid::coordinates
+ READS: ML_CCZ4::ML_dtlapse
+ READS: ML_CCZ4::ML_dtshift
+ READS: ML_CCZ4::ML_Gamma
+ READS: ML_CCZ4::ML_lapse
+ READS: ML_CCZ4::ML_metric
+ READS: ML_CCZ4::ML_shift
+ READS: ML_CCZ4::ML_Theta
+ READS: ML_CCZ4::ML_trace_curv
+ WRITES: ADMBase::dtlapse
+ WRITES: ADMBase::dtshift
+ } "ML_CCZ4_convertToADMBaseFakeDtLapseShift"
+}
+
+schedule group ML_CCZ4_constraints1_group in MoL_PseudoEvolution after MoL_PostStep
+{
+ # no language specified
+} "ML_CCZ4_constraints1"
+
+schedule ML_CCZ4_constraints1 in ML_CCZ4_constraints1_group
+{
+ LANG: C
+ READS: ML_CCZ4::ML_curv
+ READS: ML_CCZ4::ML_Gamma
+ READS: ML_CCZ4::ML_lapse
+ READS: ML_CCZ4::ML_log_confac
+ READS: ML_CCZ4::ML_metric
+ READS: ML_CCZ4::ML_shift
+ READS: ML_CCZ4::ML_trace_curv
+ READS: TmunuBase::stress_energy_scalar
+ READS: TmunuBase::stress_energy_tensor
+ READS: TmunuBase::stress_energy_vector
+ WRITES: ML_CCZ4::ML_Ham
+} "ML_CCZ4_constraints1"
+
+schedule ML_CCZ4_constraints1_SelectBCs in ML_CCZ4_constraints1_bc_group
+{
+ LANG: C
+ OPTIONS: level
+ SYNC: ML_Ham
+} "ML_CCZ4_constraints1_SelectBCs"
+
+schedule group ApplyBCs as ML_CCZ4_constraints1_ApplyBCs in ML_CCZ4_constraints1_bc_group after ML_CCZ4_constraints1_SelectBCs
+{
+ # no language specified
+} "Apply BCs for groups set in ML_CCZ4_constraints1"
+
+schedule group ML_CCZ4_constraints1_bc_group in ML_CCZ4_constraints1_group after ML_CCZ4_constraints1
+{
+ # no language specified
+} "ML_CCZ4_constraints1"
+
+schedule group ML_CCZ4_constraints1_bc_group in MoL_PseudoEvolutionBoundaries after MoL_PostStep
+{
+ # no language specified
+} "ML_CCZ4_constraints1"
+
+schedule group ML_CCZ4_constraints2_group in MoL_PseudoEvolution after MoL_PostStep
+{
+ # no language specified
+} "ML_CCZ4_constraints2"
+
+schedule ML_CCZ4_constraints2 in ML_CCZ4_constraints2_group
+{
+ LANG: C
+ READS: ML_CCZ4::ML_curv
+ READS: ML_CCZ4::ML_Gamma
+ READS: ML_CCZ4::ML_lapse
+ READS: ML_CCZ4::ML_log_confac
+ READS: ML_CCZ4::ML_metric
+ READS: ML_CCZ4::ML_shift
+ READS: ML_CCZ4::ML_trace_curv
+ READS: TmunuBase::stress_energy_scalar
+ READS: TmunuBase::stress_energy_tensor
+ READS: TmunuBase::stress_energy_vector
+ WRITES: ML_CCZ4::ML_cons_detg
+ WRITES: ML_CCZ4::ML_cons_Gamma
+ WRITES: ML_CCZ4::ML_cons_traceA
+ WRITES: ML_CCZ4::ML_mom
+} "ML_CCZ4_constraints2"
+
+schedule ML_CCZ4_constraints2_SelectBCs in ML_CCZ4_constraints2_bc_group
+{
+ LANG: C
+ OPTIONS: level
+ SYNC: ML_cons_detg
+ SYNC: ML_cons_Gamma
+ SYNC: ML_cons_traceA
+ SYNC: ML_mom
+} "ML_CCZ4_constraints2_SelectBCs"
+
+schedule group ApplyBCs as ML_CCZ4_constraints2_ApplyBCs in ML_CCZ4_constraints2_bc_group after ML_CCZ4_constraints2_SelectBCs
+{
+ # no language specified
+} "Apply BCs for groups set in ML_CCZ4_constraints2"
+
+schedule group ML_CCZ4_constraints2_bc_group in ML_CCZ4_constraints2_group after ML_CCZ4_constraints2
+{
+ # no language specified
+} "ML_CCZ4_constraints2"
+
+schedule group ML_CCZ4_constraints2_bc_group in MoL_PseudoEvolutionBoundaries after MoL_PostStep
+{
+ # no language specified
+} "ML_CCZ4_constraints2"
+
+schedule ML_CCZ4_SelectBoundConds in MoL_PostStep
+{
+ LANG: C
+ OPTIONS: level
+ SYNC: ML_curv
+ SYNC: ML_dtlapse
+ SYNC: ML_dtshift
+ SYNC: ML_Gamma
+ SYNC: ML_lapse
+ SYNC: ML_log_confac
+ SYNC: ML_metric
+ SYNC: ML_shift
+ SYNC: ML_Theta
+ SYNC: ML_trace_curv
+} "select boundary conditions"
+
+schedule ML_CCZ4_CheckBoundaries at BASEGRID
+{
+ LANG: C
+ OPTIONS: meta
+} "check boundaries treatment"
+
+schedule ML_CCZ4_RegisterVars in MoL_Register
+{
+ LANG: C
+ OPTIONS: meta
+} "Register Variables for MoL"
+
+schedule group ApplyBCs as ML_CCZ4_ApplyBCs in MoL_PostStep after ML_CCZ4_SelectBoundConds
+{
+ # no language specified
+} "Apply boundary conditions controlled by thorn Boundary"
diff --git a/ML_CCZ4/src/Boundaries.cc b/ML_CCZ4/src/Boundaries.cc
new file mode 100644
index 0000000..09657a1
--- /dev/null
+++ b/ML_CCZ4/src/Boundaries.cc
@@ -0,0 +1,1913 @@
+/* File produced by Kranc */
+
+#include "cctk.h"
+#include "cctk_Arguments.h"
+#include "cctk_Parameters.h"
+#include "cctk_Faces.h"
+#include "util_Table.h"
+#include "Symmetry.h"
+
+
+/* the boundary treatment is split into 3 steps: */
+/* 1. excision */
+/* 2. symmetries */
+/* 3. "other" boundary conditions, e.g. radiative */
+
+/* to simplify scheduling and testing, the 3 steps */
+/* are currently applied in separate functions */
+
+
+extern "C" void ML_CCZ4_CheckBoundaries(CCTK_ARGUMENTS)
+{
+ DECLARE_CCTK_ARGUMENTS;
+ DECLARE_CCTK_PARAMETERS;
+
+ return;
+}
+
+extern "C" void ML_CCZ4_SelectBoundConds(CCTK_ARGUMENTS)
+{
+ DECLARE_CCTK_ARGUMENTS;
+ DECLARE_CCTK_PARAMETERS;
+
+ CCTK_INT ierr = 0;
+
+ if (CCTK_EQUALS(ML_curv_bound, "none" ) ||
+ CCTK_EQUALS(ML_curv_bound, "static") ||
+ CCTK_EQUALS(ML_curv_bound, "flat" ) ||
+ CCTK_EQUALS(ML_curv_bound, "zero" ) )
+ {
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, 1, -1,
+ "ML_CCZ4::ML_curv", ML_curv_bound);
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register ML_curv_bound BC for ML_CCZ4::ML_curv!");
+ }
+
+ if (CCTK_EQUALS(ML_dtlapse_bound, "none" ) ||
+ CCTK_EQUALS(ML_dtlapse_bound, "static") ||
+ CCTK_EQUALS(ML_dtlapse_bound, "flat" ) ||
+ CCTK_EQUALS(ML_dtlapse_bound, "zero" ) )
+ {
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, 1, -1,
+ "ML_CCZ4::ML_dtlapse", ML_dtlapse_bound);
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register ML_dtlapse_bound BC for ML_CCZ4::ML_dtlapse!");
+ }
+
+ if (CCTK_EQUALS(ML_dtshift_bound, "none" ) ||
+ CCTK_EQUALS(ML_dtshift_bound, "static") ||
+ CCTK_EQUALS(ML_dtshift_bound, "flat" ) ||
+ CCTK_EQUALS(ML_dtshift_bound, "zero" ) )
+ {
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, 1, -1,
+ "ML_CCZ4::ML_dtshift", ML_dtshift_bound);
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register ML_dtshift_bound BC for ML_CCZ4::ML_dtshift!");
+ }
+
+ if (CCTK_EQUALS(ML_Gamma_bound, "none" ) ||
+ CCTK_EQUALS(ML_Gamma_bound, "static") ||
+ CCTK_EQUALS(ML_Gamma_bound, "flat" ) ||
+ CCTK_EQUALS(ML_Gamma_bound, "zero" ) )
+ {
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, 1, -1,
+ "ML_CCZ4::ML_Gamma", ML_Gamma_bound);
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register ML_Gamma_bound BC for ML_CCZ4::ML_Gamma!");
+ }
+
+ if (CCTK_EQUALS(ML_lapse_bound, "none" ) ||
+ CCTK_EQUALS(ML_lapse_bound, "static") ||
+ CCTK_EQUALS(ML_lapse_bound, "flat" ) ||
+ CCTK_EQUALS(ML_lapse_bound, "zero" ) )
+ {
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, 1, -1,
+ "ML_CCZ4::ML_lapse", ML_lapse_bound);
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register ML_lapse_bound BC for ML_CCZ4::ML_lapse!");
+ }
+
+ if (CCTK_EQUALS(ML_log_confac_bound, "none" ) ||
+ CCTK_EQUALS(ML_log_confac_bound, "static") ||
+ CCTK_EQUALS(ML_log_confac_bound, "flat" ) ||
+ CCTK_EQUALS(ML_log_confac_bound, "zero" ) )
+ {
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, 1, -1,
+ "ML_CCZ4::ML_log_confac", ML_log_confac_bound);
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register ML_log_confac_bound BC for ML_CCZ4::ML_log_confac!");
+ }
+
+ if (CCTK_EQUALS(ML_metric_bound, "none" ) ||
+ CCTK_EQUALS(ML_metric_bound, "static") ||
+ CCTK_EQUALS(ML_metric_bound, "flat" ) ||
+ CCTK_EQUALS(ML_metric_bound, "zero" ) )
+ {
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, 1, -1,
+ "ML_CCZ4::ML_metric", ML_metric_bound);
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register ML_metric_bound BC for ML_CCZ4::ML_metric!");
+ }
+
+ if (CCTK_EQUALS(ML_shift_bound, "none" ) ||
+ CCTK_EQUALS(ML_shift_bound, "static") ||
+ CCTK_EQUALS(ML_shift_bound, "flat" ) ||
+ CCTK_EQUALS(ML_shift_bound, "zero" ) )
+ {
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, 1, -1,
+ "ML_CCZ4::ML_shift", ML_shift_bound);
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register ML_shift_bound BC for ML_CCZ4::ML_shift!");
+ }
+
+ if (CCTK_EQUALS(ML_Theta_bound, "none" ) ||
+ CCTK_EQUALS(ML_Theta_bound, "static") ||
+ CCTK_EQUALS(ML_Theta_bound, "flat" ) ||
+ CCTK_EQUALS(ML_Theta_bound, "zero" ) )
+ {
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, 1, -1,
+ "ML_CCZ4::ML_Theta", ML_Theta_bound);
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register ML_Theta_bound BC for ML_CCZ4::ML_Theta!");
+ }
+
+ if (CCTK_EQUALS(ML_trace_curv_bound, "none" ) ||
+ CCTK_EQUALS(ML_trace_curv_bound, "static") ||
+ CCTK_EQUALS(ML_trace_curv_bound, "flat" ) ||
+ CCTK_EQUALS(ML_trace_curv_bound, "zero" ) )
+ {
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, 1, -1,
+ "ML_CCZ4::ML_trace_curv", ML_trace_curv_bound);
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register ML_trace_curv_bound BC for ML_CCZ4::ML_trace_curv!");
+ }
+
+ if (CCTK_EQUALS(At11_bound, "none" ) ||
+ CCTK_EQUALS(At11_bound, "static") ||
+ CCTK_EQUALS(At11_bound, "flat" ) ||
+ CCTK_EQUALS(At11_bound, "zero" ) )
+ {
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, -1,
+ "ML_CCZ4::At11", At11_bound);
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register At11_bound BC for ML_CCZ4::At11!");
+ }
+
+ if (CCTK_EQUALS(At12_bound, "none" ) ||
+ CCTK_EQUALS(At12_bound, "static") ||
+ CCTK_EQUALS(At12_bound, "flat" ) ||
+ CCTK_EQUALS(At12_bound, "zero" ) )
+ {
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, -1,
+ "ML_CCZ4::At12", At12_bound);
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register At12_bound BC for ML_CCZ4::At12!");
+ }
+
+ if (CCTK_EQUALS(At13_bound, "none" ) ||
+ CCTK_EQUALS(At13_bound, "static") ||
+ CCTK_EQUALS(At13_bound, "flat" ) ||
+ CCTK_EQUALS(At13_bound, "zero" ) )
+ {
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, -1,
+ "ML_CCZ4::At13", At13_bound);
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register At13_bound BC for ML_CCZ4::At13!");
+ }
+
+ if (CCTK_EQUALS(At22_bound, "none" ) ||
+ CCTK_EQUALS(At22_bound, "static") ||
+ CCTK_EQUALS(At22_bound, "flat" ) ||
+ CCTK_EQUALS(At22_bound, "zero" ) )
+ {
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, -1,
+ "ML_CCZ4::At22", At22_bound);
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register At22_bound BC for ML_CCZ4::At22!");
+ }
+
+ if (CCTK_EQUALS(At23_bound, "none" ) ||
+ CCTK_EQUALS(At23_bound, "static") ||
+ CCTK_EQUALS(At23_bound, "flat" ) ||
+ CCTK_EQUALS(At23_bound, "zero" ) )
+ {
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, -1,
+ "ML_CCZ4::At23", At23_bound);
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register At23_bound BC for ML_CCZ4::At23!");
+ }
+
+ if (CCTK_EQUALS(At33_bound, "none" ) ||
+ CCTK_EQUALS(At33_bound, "static") ||
+ CCTK_EQUALS(At33_bound, "flat" ) ||
+ CCTK_EQUALS(At33_bound, "zero" ) )
+ {
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, -1,
+ "ML_CCZ4::At33", At33_bound);
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register At33_bound BC for ML_CCZ4::At33!");
+ }
+
+ if (CCTK_EQUALS(A_bound, "none" ) ||
+ CCTK_EQUALS(A_bound, "static") ||
+ CCTK_EQUALS(A_bound, "flat" ) ||
+ CCTK_EQUALS(A_bound, "zero" ) )
+ {
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, -1,
+ "ML_CCZ4::A", A_bound);
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register A_bound BC for ML_CCZ4::A!");
+ }
+
+ if (CCTK_EQUALS(B1_bound, "none" ) ||
+ CCTK_EQUALS(B1_bound, "static") ||
+ CCTK_EQUALS(B1_bound, "flat" ) ||
+ CCTK_EQUALS(B1_bound, "zero" ) )
+ {
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, -1,
+ "ML_CCZ4::B1", B1_bound);
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register B1_bound BC for ML_CCZ4::B1!");
+ }
+
+ if (CCTK_EQUALS(B2_bound, "none" ) ||
+ CCTK_EQUALS(B2_bound, "static") ||
+ CCTK_EQUALS(B2_bound, "flat" ) ||
+ CCTK_EQUALS(B2_bound, "zero" ) )
+ {
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, -1,
+ "ML_CCZ4::B2", B2_bound);
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register B2_bound BC for ML_CCZ4::B2!");
+ }
+
+ if (CCTK_EQUALS(B3_bound, "none" ) ||
+ CCTK_EQUALS(B3_bound, "static") ||
+ CCTK_EQUALS(B3_bound, "flat" ) ||
+ CCTK_EQUALS(B3_bound, "zero" ) )
+ {
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, -1,
+ "ML_CCZ4::B3", B3_bound);
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register B3_bound BC for ML_CCZ4::B3!");
+ }
+
+ if (CCTK_EQUALS(Xt1_bound, "none" ) ||
+ CCTK_EQUALS(Xt1_bound, "static") ||
+ CCTK_EQUALS(Xt1_bound, "flat" ) ||
+ CCTK_EQUALS(Xt1_bound, "zero" ) )
+ {
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, -1,
+ "ML_CCZ4::Xt1", Xt1_bound);
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register Xt1_bound BC for ML_CCZ4::Xt1!");
+ }
+
+ if (CCTK_EQUALS(Xt2_bound, "none" ) ||
+ CCTK_EQUALS(Xt2_bound, "static") ||
+ CCTK_EQUALS(Xt2_bound, "flat" ) ||
+ CCTK_EQUALS(Xt2_bound, "zero" ) )
+ {
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, -1,
+ "ML_CCZ4::Xt2", Xt2_bound);
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register Xt2_bound BC for ML_CCZ4::Xt2!");
+ }
+
+ if (CCTK_EQUALS(Xt3_bound, "none" ) ||
+ CCTK_EQUALS(Xt3_bound, "static") ||
+ CCTK_EQUALS(Xt3_bound, "flat" ) ||
+ CCTK_EQUALS(Xt3_bound, "zero" ) )
+ {
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, -1,
+ "ML_CCZ4::Xt3", Xt3_bound);
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register Xt3_bound BC for ML_CCZ4::Xt3!");
+ }
+
+ if (CCTK_EQUALS(alpha_bound, "none" ) ||
+ CCTK_EQUALS(alpha_bound, "static") ||
+ CCTK_EQUALS(alpha_bound, "flat" ) ||
+ CCTK_EQUALS(alpha_bound, "zero" ) )
+ {
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, -1,
+ "ML_CCZ4::alpha", alpha_bound);
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register alpha_bound BC for ML_CCZ4::alpha!");
+ }
+
+ if (CCTK_EQUALS(phi_bound, "none" ) ||
+ CCTK_EQUALS(phi_bound, "static") ||
+ CCTK_EQUALS(phi_bound, "flat" ) ||
+ CCTK_EQUALS(phi_bound, "zero" ) )
+ {
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, -1,
+ "ML_CCZ4::phi", phi_bound);
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register phi_bound BC for ML_CCZ4::phi!");
+ }
+
+ if (CCTK_EQUALS(gt11_bound, "none" ) ||
+ CCTK_EQUALS(gt11_bound, "static") ||
+ CCTK_EQUALS(gt11_bound, "flat" ) ||
+ CCTK_EQUALS(gt11_bound, "zero" ) )
+ {
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, -1,
+ "ML_CCZ4::gt11", gt11_bound);
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register gt11_bound BC for ML_CCZ4::gt11!");
+ }
+
+ if (CCTK_EQUALS(gt12_bound, "none" ) ||
+ CCTK_EQUALS(gt12_bound, "static") ||
+ CCTK_EQUALS(gt12_bound, "flat" ) ||
+ CCTK_EQUALS(gt12_bound, "zero" ) )
+ {
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, -1,
+ "ML_CCZ4::gt12", gt12_bound);
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register gt12_bound BC for ML_CCZ4::gt12!");
+ }
+
+ if (CCTK_EQUALS(gt13_bound, "none" ) ||
+ CCTK_EQUALS(gt13_bound, "static") ||
+ CCTK_EQUALS(gt13_bound, "flat" ) ||
+ CCTK_EQUALS(gt13_bound, "zero" ) )
+ {
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, -1,
+ "ML_CCZ4::gt13", gt13_bound);
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register gt13_bound BC for ML_CCZ4::gt13!");
+ }
+
+ if (CCTK_EQUALS(gt22_bound, "none" ) ||
+ CCTK_EQUALS(gt22_bound, "static") ||
+ CCTK_EQUALS(gt22_bound, "flat" ) ||
+ CCTK_EQUALS(gt22_bound, "zero" ) )
+ {
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, -1,
+ "ML_CCZ4::gt22", gt22_bound);
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register gt22_bound BC for ML_CCZ4::gt22!");
+ }
+
+ if (CCTK_EQUALS(gt23_bound, "none" ) ||
+ CCTK_EQUALS(gt23_bound, "static") ||
+ CCTK_EQUALS(gt23_bound, "flat" ) ||
+ CCTK_EQUALS(gt23_bound, "zero" ) )
+ {
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, -1,
+ "ML_CCZ4::gt23", gt23_bound);
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register gt23_bound BC for ML_CCZ4::gt23!");
+ }
+
+ if (CCTK_EQUALS(gt33_bound, "none" ) ||
+ CCTK_EQUALS(gt33_bound, "static") ||
+ CCTK_EQUALS(gt33_bound, "flat" ) ||
+ CCTK_EQUALS(gt33_bound, "zero" ) )
+ {
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, -1,
+ "ML_CCZ4::gt33", gt33_bound);
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register gt33_bound BC for ML_CCZ4::gt33!");
+ }
+
+ if (CCTK_EQUALS(beta1_bound, "none" ) ||
+ CCTK_EQUALS(beta1_bound, "static") ||
+ CCTK_EQUALS(beta1_bound, "flat" ) ||
+ CCTK_EQUALS(beta1_bound, "zero" ) )
+ {
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, -1,
+ "ML_CCZ4::beta1", beta1_bound);
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register beta1_bound BC for ML_CCZ4::beta1!");
+ }
+
+ if (CCTK_EQUALS(beta2_bound, "none" ) ||
+ CCTK_EQUALS(beta2_bound, "static") ||
+ CCTK_EQUALS(beta2_bound, "flat" ) ||
+ CCTK_EQUALS(beta2_bound, "zero" ) )
+ {
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, -1,
+ "ML_CCZ4::beta2", beta2_bound);
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register beta2_bound BC for ML_CCZ4::beta2!");
+ }
+
+ if (CCTK_EQUALS(beta3_bound, "none" ) ||
+ CCTK_EQUALS(beta3_bound, "static") ||
+ CCTK_EQUALS(beta3_bound, "flat" ) ||
+ CCTK_EQUALS(beta3_bound, "zero" ) )
+ {
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, -1,
+ "ML_CCZ4::beta3", beta3_bound);
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register beta3_bound BC for ML_CCZ4::beta3!");
+ }
+
+ if (CCTK_EQUALS(Theta_bound, "none" ) ||
+ CCTK_EQUALS(Theta_bound, "static") ||
+ CCTK_EQUALS(Theta_bound, "flat" ) ||
+ CCTK_EQUALS(Theta_bound, "zero" ) )
+ {
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, -1,
+ "ML_CCZ4::Theta", Theta_bound);
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register Theta_bound BC for ML_CCZ4::Theta!");
+ }
+
+ if (CCTK_EQUALS(trK_bound, "none" ) ||
+ CCTK_EQUALS(trK_bound, "static") ||
+ CCTK_EQUALS(trK_bound, "flat" ) ||
+ CCTK_EQUALS(trK_bound, "zero" ) )
+ {
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, -1,
+ "ML_CCZ4::trK", trK_bound);
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register trK_bound BC for ML_CCZ4::trK!");
+ }
+
+ if (CCTK_EQUALS(ML_curv_bound, "radiative"))
+ {
+ /* select radiation boundary condition */
+ static CCTK_INT handle_ML_curv_bound = -1;
+ if (handle_ML_curv_bound < 0) handle_ML_curv_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_ML_curv_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_ML_curv_bound , ML_curv_bound_limit, "LIMIT") < 0)
+ CCTK_WARN(0, "could not set LIMIT value in table!");
+ if (Util_TableSetReal(handle_ML_curv_bound ,ML_curv_bound_speed, "SPEED") < 0)
+ CCTK_WARN(0, "could not set SPEED value in table!");
+
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, 1, handle_ML_curv_bound,
+ "ML_CCZ4::ML_curv", "Radiation");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register Radiation BC for ML_CCZ4::ML_curv!");
+
+ }
+
+ if (CCTK_EQUALS(ML_dtlapse_bound, "radiative"))
+ {
+ /* select radiation boundary condition */
+ static CCTK_INT handle_ML_dtlapse_bound = -1;
+ if (handle_ML_dtlapse_bound < 0) handle_ML_dtlapse_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_ML_dtlapse_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_ML_dtlapse_bound , ML_dtlapse_bound_limit, "LIMIT") < 0)
+ CCTK_WARN(0, "could not set LIMIT value in table!");
+ if (Util_TableSetReal(handle_ML_dtlapse_bound ,ML_dtlapse_bound_speed, "SPEED") < 0)
+ CCTK_WARN(0, "could not set SPEED value in table!");
+
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, 1, handle_ML_dtlapse_bound,
+ "ML_CCZ4::ML_dtlapse", "Radiation");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register Radiation BC for ML_CCZ4::ML_dtlapse!");
+
+ }
+
+ if (CCTK_EQUALS(ML_dtshift_bound, "radiative"))
+ {
+ /* select radiation boundary condition */
+ static CCTK_INT handle_ML_dtshift_bound = -1;
+ if (handle_ML_dtshift_bound < 0) handle_ML_dtshift_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_ML_dtshift_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_ML_dtshift_bound , ML_dtshift_bound_limit, "LIMIT") < 0)
+ CCTK_WARN(0, "could not set LIMIT value in table!");
+ if (Util_TableSetReal(handle_ML_dtshift_bound ,ML_dtshift_bound_speed, "SPEED") < 0)
+ CCTK_WARN(0, "could not set SPEED value in table!");
+
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, 1, handle_ML_dtshift_bound,
+ "ML_CCZ4::ML_dtshift", "Radiation");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register Radiation BC for ML_CCZ4::ML_dtshift!");
+
+ }
+
+ if (CCTK_EQUALS(ML_Gamma_bound, "radiative"))
+ {
+ /* select radiation boundary condition */
+ static CCTK_INT handle_ML_Gamma_bound = -1;
+ if (handle_ML_Gamma_bound < 0) handle_ML_Gamma_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_ML_Gamma_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_ML_Gamma_bound , ML_Gamma_bound_limit, "LIMIT") < 0)
+ CCTK_WARN(0, "could not set LIMIT value in table!");
+ if (Util_TableSetReal(handle_ML_Gamma_bound ,ML_Gamma_bound_speed, "SPEED") < 0)
+ CCTK_WARN(0, "could not set SPEED value in table!");
+
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, 1, handle_ML_Gamma_bound,
+ "ML_CCZ4::ML_Gamma", "Radiation");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register Radiation BC for ML_CCZ4::ML_Gamma!");
+
+ }
+
+ if (CCTK_EQUALS(ML_lapse_bound, "radiative"))
+ {
+ /* select radiation boundary condition */
+ static CCTK_INT handle_ML_lapse_bound = -1;
+ if (handle_ML_lapse_bound < 0) handle_ML_lapse_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_ML_lapse_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_ML_lapse_bound , ML_lapse_bound_limit, "LIMIT") < 0)
+ CCTK_WARN(0, "could not set LIMIT value in table!");
+ if (Util_TableSetReal(handle_ML_lapse_bound ,ML_lapse_bound_speed, "SPEED") < 0)
+ CCTK_WARN(0, "could not set SPEED value in table!");
+
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, 1, handle_ML_lapse_bound,
+ "ML_CCZ4::ML_lapse", "Radiation");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register Radiation BC for ML_CCZ4::ML_lapse!");
+
+ }
+
+ if (CCTK_EQUALS(ML_log_confac_bound, "radiative"))
+ {
+ /* select radiation boundary condition */
+ static CCTK_INT handle_ML_log_confac_bound = -1;
+ if (handle_ML_log_confac_bound < 0) handle_ML_log_confac_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_ML_log_confac_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_ML_log_confac_bound , ML_log_confac_bound_limit, "LIMIT") < 0)
+ CCTK_WARN(0, "could not set LIMIT value in table!");
+ if (Util_TableSetReal(handle_ML_log_confac_bound ,ML_log_confac_bound_speed, "SPEED") < 0)
+ CCTK_WARN(0, "could not set SPEED value in table!");
+
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, 1, handle_ML_log_confac_bound,
+ "ML_CCZ4::ML_log_confac", "Radiation");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register Radiation BC for ML_CCZ4::ML_log_confac!");
+
+ }
+
+ if (CCTK_EQUALS(ML_metric_bound, "radiative"))
+ {
+ /* select radiation boundary condition */
+ static CCTK_INT handle_ML_metric_bound = -1;
+ if (handle_ML_metric_bound < 0) handle_ML_metric_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_ML_metric_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_ML_metric_bound , ML_metric_bound_limit, "LIMIT") < 0)
+ CCTK_WARN(0, "could not set LIMIT value in table!");
+ if (Util_TableSetReal(handle_ML_metric_bound ,ML_metric_bound_speed, "SPEED") < 0)
+ CCTK_WARN(0, "could not set SPEED value in table!");
+
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, 1, handle_ML_metric_bound,
+ "ML_CCZ4::ML_metric", "Radiation");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register Radiation BC for ML_CCZ4::ML_metric!");
+
+ }
+
+ if (CCTK_EQUALS(ML_shift_bound, "radiative"))
+ {
+ /* select radiation boundary condition */
+ static CCTK_INT handle_ML_shift_bound = -1;
+ if (handle_ML_shift_bound < 0) handle_ML_shift_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_ML_shift_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_ML_shift_bound , ML_shift_bound_limit, "LIMIT") < 0)
+ CCTK_WARN(0, "could not set LIMIT value in table!");
+ if (Util_TableSetReal(handle_ML_shift_bound ,ML_shift_bound_speed, "SPEED") < 0)
+ CCTK_WARN(0, "could not set SPEED value in table!");
+
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, 1, handle_ML_shift_bound,
+ "ML_CCZ4::ML_shift", "Radiation");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register Radiation BC for ML_CCZ4::ML_shift!");
+
+ }
+
+ if (CCTK_EQUALS(ML_Theta_bound, "radiative"))
+ {
+ /* select radiation boundary condition */
+ static CCTK_INT handle_ML_Theta_bound = -1;
+ if (handle_ML_Theta_bound < 0) handle_ML_Theta_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_ML_Theta_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_ML_Theta_bound , ML_Theta_bound_limit, "LIMIT") < 0)
+ CCTK_WARN(0, "could not set LIMIT value in table!");
+ if (Util_TableSetReal(handle_ML_Theta_bound ,ML_Theta_bound_speed, "SPEED") < 0)
+ CCTK_WARN(0, "could not set SPEED value in table!");
+
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, 1, handle_ML_Theta_bound,
+ "ML_CCZ4::ML_Theta", "Radiation");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register Radiation BC for ML_CCZ4::ML_Theta!");
+
+ }
+
+ if (CCTK_EQUALS(ML_trace_curv_bound, "radiative"))
+ {
+ /* select radiation boundary condition */
+ static CCTK_INT handle_ML_trace_curv_bound = -1;
+ if (handle_ML_trace_curv_bound < 0) handle_ML_trace_curv_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_ML_trace_curv_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_ML_trace_curv_bound , ML_trace_curv_bound_limit, "LIMIT") < 0)
+ CCTK_WARN(0, "could not set LIMIT value in table!");
+ if (Util_TableSetReal(handle_ML_trace_curv_bound ,ML_trace_curv_bound_speed, "SPEED") < 0)
+ CCTK_WARN(0, "could not set SPEED value in table!");
+
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, 1, handle_ML_trace_curv_bound,
+ "ML_CCZ4::ML_trace_curv", "Radiation");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register Radiation BC for ML_CCZ4::ML_trace_curv!");
+
+ }
+
+ if (CCTK_EQUALS(At11_bound, "radiative"))
+ {
+ /* select radiation boundary condition */
+ static CCTK_INT handle_At11_bound = -1;
+ if (handle_At11_bound < 0) handle_At11_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_At11_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_At11_bound , At11_bound_limit, "LIMIT") < 0)
+ CCTK_WARN(0, "could not set LIMIT value in table!");
+ if (Util_TableSetReal(handle_At11_bound ,At11_bound_speed, "SPEED") < 0)
+ CCTK_WARN(0, "could not set SPEED value in table!");
+
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, handle_At11_bound,
+ "ML_CCZ4::At11", "Radiation");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register Radiation BC for ML_CCZ4::At11!");
+
+ }
+
+ if (CCTK_EQUALS(At12_bound, "radiative"))
+ {
+ /* select radiation boundary condition */
+ static CCTK_INT handle_At12_bound = -1;
+ if (handle_At12_bound < 0) handle_At12_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_At12_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_At12_bound , At12_bound_limit, "LIMIT") < 0)
+ CCTK_WARN(0, "could not set LIMIT value in table!");
+ if (Util_TableSetReal(handle_At12_bound ,At12_bound_speed, "SPEED") < 0)
+ CCTK_WARN(0, "could not set SPEED value in table!");
+
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, handle_At12_bound,
+ "ML_CCZ4::At12", "Radiation");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register Radiation BC for ML_CCZ4::At12!");
+
+ }
+
+ if (CCTK_EQUALS(At13_bound, "radiative"))
+ {
+ /* select radiation boundary condition */
+ static CCTK_INT handle_At13_bound = -1;
+ if (handle_At13_bound < 0) handle_At13_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_At13_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_At13_bound , At13_bound_limit, "LIMIT") < 0)
+ CCTK_WARN(0, "could not set LIMIT value in table!");
+ if (Util_TableSetReal(handle_At13_bound ,At13_bound_speed, "SPEED") < 0)
+ CCTK_WARN(0, "could not set SPEED value in table!");
+
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, handle_At13_bound,
+ "ML_CCZ4::At13", "Radiation");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register Radiation BC for ML_CCZ4::At13!");
+
+ }
+
+ if (CCTK_EQUALS(At22_bound, "radiative"))
+ {
+ /* select radiation boundary condition */
+ static CCTK_INT handle_At22_bound = -1;
+ if (handle_At22_bound < 0) handle_At22_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_At22_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_At22_bound , At22_bound_limit, "LIMIT") < 0)
+ CCTK_WARN(0, "could not set LIMIT value in table!");
+ if (Util_TableSetReal(handle_At22_bound ,At22_bound_speed, "SPEED") < 0)
+ CCTK_WARN(0, "could not set SPEED value in table!");
+
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, handle_At22_bound,
+ "ML_CCZ4::At22", "Radiation");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register Radiation BC for ML_CCZ4::At22!");
+
+ }
+
+ if (CCTK_EQUALS(At23_bound, "radiative"))
+ {
+ /* select radiation boundary condition */
+ static CCTK_INT handle_At23_bound = -1;
+ if (handle_At23_bound < 0) handle_At23_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_At23_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_At23_bound , At23_bound_limit, "LIMIT") < 0)
+ CCTK_WARN(0, "could not set LIMIT value in table!");
+ if (Util_TableSetReal(handle_At23_bound ,At23_bound_speed, "SPEED") < 0)
+ CCTK_WARN(0, "could not set SPEED value in table!");
+
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, handle_At23_bound,
+ "ML_CCZ4::At23", "Radiation");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register Radiation BC for ML_CCZ4::At23!");
+
+ }
+
+ if (CCTK_EQUALS(At33_bound, "radiative"))
+ {
+ /* select radiation boundary condition */
+ static CCTK_INT handle_At33_bound = -1;
+ if (handle_At33_bound < 0) handle_At33_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_At33_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_At33_bound , At33_bound_limit, "LIMIT") < 0)
+ CCTK_WARN(0, "could not set LIMIT value in table!");
+ if (Util_TableSetReal(handle_At33_bound ,At33_bound_speed, "SPEED") < 0)
+ CCTK_WARN(0, "could not set SPEED value in table!");
+
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, handle_At33_bound,
+ "ML_CCZ4::At33", "Radiation");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register Radiation BC for ML_CCZ4::At33!");
+
+ }
+
+ if (CCTK_EQUALS(A_bound, "radiative"))
+ {
+ /* select radiation boundary condition */
+ static CCTK_INT handle_A_bound = -1;
+ if (handle_A_bound < 0) handle_A_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_A_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_A_bound , A_bound_limit, "LIMIT") < 0)
+ CCTK_WARN(0, "could not set LIMIT value in table!");
+ if (Util_TableSetReal(handle_A_bound ,A_bound_speed, "SPEED") < 0)
+ CCTK_WARN(0, "could not set SPEED value in table!");
+
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, handle_A_bound,
+ "ML_CCZ4::A", "Radiation");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register Radiation BC for ML_CCZ4::A!");
+
+ }
+
+ if (CCTK_EQUALS(B1_bound, "radiative"))
+ {
+ /* select radiation boundary condition */
+ static CCTK_INT handle_B1_bound = -1;
+ if (handle_B1_bound < 0) handle_B1_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_B1_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_B1_bound , B1_bound_limit, "LIMIT") < 0)
+ CCTK_WARN(0, "could not set LIMIT value in table!");
+ if (Util_TableSetReal(handle_B1_bound ,B1_bound_speed, "SPEED") < 0)
+ CCTK_WARN(0, "could not set SPEED value in table!");
+
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, handle_B1_bound,
+ "ML_CCZ4::B1", "Radiation");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register Radiation BC for ML_CCZ4::B1!");
+
+ }
+
+ if (CCTK_EQUALS(B2_bound, "radiative"))
+ {
+ /* select radiation boundary condition */
+ static CCTK_INT handle_B2_bound = -1;
+ if (handle_B2_bound < 0) handle_B2_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_B2_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_B2_bound , B2_bound_limit, "LIMIT") < 0)
+ CCTK_WARN(0, "could not set LIMIT value in table!");
+ if (Util_TableSetReal(handle_B2_bound ,B2_bound_speed, "SPEED") < 0)
+ CCTK_WARN(0, "could not set SPEED value in table!");
+
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, handle_B2_bound,
+ "ML_CCZ4::B2", "Radiation");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register Radiation BC for ML_CCZ4::B2!");
+
+ }
+
+ if (CCTK_EQUALS(B3_bound, "radiative"))
+ {
+ /* select radiation boundary condition */
+ static CCTK_INT handle_B3_bound = -1;
+ if (handle_B3_bound < 0) handle_B3_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_B3_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_B3_bound , B3_bound_limit, "LIMIT") < 0)
+ CCTK_WARN(0, "could not set LIMIT value in table!");
+ if (Util_TableSetReal(handle_B3_bound ,B3_bound_speed, "SPEED") < 0)
+ CCTK_WARN(0, "could not set SPEED value in table!");
+
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, handle_B3_bound,
+ "ML_CCZ4::B3", "Radiation");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register Radiation BC for ML_CCZ4::B3!");
+
+ }
+
+ if (CCTK_EQUALS(Xt1_bound, "radiative"))
+ {
+ /* select radiation boundary condition */
+ static CCTK_INT handle_Xt1_bound = -1;
+ if (handle_Xt1_bound < 0) handle_Xt1_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_Xt1_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_Xt1_bound , Xt1_bound_limit, "LIMIT") < 0)
+ CCTK_WARN(0, "could not set LIMIT value in table!");
+ if (Util_TableSetReal(handle_Xt1_bound ,Xt1_bound_speed, "SPEED") < 0)
+ CCTK_WARN(0, "could not set SPEED value in table!");
+
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, handle_Xt1_bound,
+ "ML_CCZ4::Xt1", "Radiation");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register Radiation BC for ML_CCZ4::Xt1!");
+
+ }
+
+ if (CCTK_EQUALS(Xt2_bound, "radiative"))
+ {
+ /* select radiation boundary condition */
+ static CCTK_INT handle_Xt2_bound = -1;
+ if (handle_Xt2_bound < 0) handle_Xt2_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_Xt2_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_Xt2_bound , Xt2_bound_limit, "LIMIT") < 0)
+ CCTK_WARN(0, "could not set LIMIT value in table!");
+ if (Util_TableSetReal(handle_Xt2_bound ,Xt2_bound_speed, "SPEED") < 0)
+ CCTK_WARN(0, "could not set SPEED value in table!");
+
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, handle_Xt2_bound,
+ "ML_CCZ4::Xt2", "Radiation");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register Radiation BC for ML_CCZ4::Xt2!");
+
+ }
+
+ if (CCTK_EQUALS(Xt3_bound, "radiative"))
+ {
+ /* select radiation boundary condition */
+ static CCTK_INT handle_Xt3_bound = -1;
+ if (handle_Xt3_bound < 0) handle_Xt3_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_Xt3_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_Xt3_bound , Xt3_bound_limit, "LIMIT") < 0)
+ CCTK_WARN(0, "could not set LIMIT value in table!");
+ if (Util_TableSetReal(handle_Xt3_bound ,Xt3_bound_speed, "SPEED") < 0)
+ CCTK_WARN(0, "could not set SPEED value in table!");
+
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, handle_Xt3_bound,
+ "ML_CCZ4::Xt3", "Radiation");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register Radiation BC for ML_CCZ4::Xt3!");
+
+ }
+
+ if (CCTK_EQUALS(alpha_bound, "radiative"))
+ {
+ /* select radiation boundary condition */
+ static CCTK_INT handle_alpha_bound = -1;
+ if (handle_alpha_bound < 0) handle_alpha_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_alpha_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_alpha_bound , alpha_bound_limit, "LIMIT") < 0)
+ CCTK_WARN(0, "could not set LIMIT value in table!");
+ if (Util_TableSetReal(handle_alpha_bound ,alpha_bound_speed, "SPEED") < 0)
+ CCTK_WARN(0, "could not set SPEED value in table!");
+
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, handle_alpha_bound,
+ "ML_CCZ4::alpha", "Radiation");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register Radiation BC for ML_CCZ4::alpha!");
+
+ }
+
+ if (CCTK_EQUALS(phi_bound, "radiative"))
+ {
+ /* select radiation boundary condition */
+ static CCTK_INT handle_phi_bound = -1;
+ if (handle_phi_bound < 0) handle_phi_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_phi_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_phi_bound , phi_bound_limit, "LIMIT") < 0)
+ CCTK_WARN(0, "could not set LIMIT value in table!");
+ if (Util_TableSetReal(handle_phi_bound ,phi_bound_speed, "SPEED") < 0)
+ CCTK_WARN(0, "could not set SPEED value in table!");
+
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, handle_phi_bound,
+ "ML_CCZ4::phi", "Radiation");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register Radiation BC for ML_CCZ4::phi!");
+
+ }
+
+ if (CCTK_EQUALS(gt11_bound, "radiative"))
+ {
+ /* select radiation boundary condition */
+ static CCTK_INT handle_gt11_bound = -1;
+ if (handle_gt11_bound < 0) handle_gt11_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_gt11_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_gt11_bound , gt11_bound_limit, "LIMIT") < 0)
+ CCTK_WARN(0, "could not set LIMIT value in table!");
+ if (Util_TableSetReal(handle_gt11_bound ,gt11_bound_speed, "SPEED") < 0)
+ CCTK_WARN(0, "could not set SPEED value in table!");
+
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, handle_gt11_bound,
+ "ML_CCZ4::gt11", "Radiation");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register Radiation BC for ML_CCZ4::gt11!");
+
+ }
+
+ if (CCTK_EQUALS(gt12_bound, "radiative"))
+ {
+ /* select radiation boundary condition */
+ static CCTK_INT handle_gt12_bound = -1;
+ if (handle_gt12_bound < 0) handle_gt12_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_gt12_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_gt12_bound , gt12_bound_limit, "LIMIT") < 0)
+ CCTK_WARN(0, "could not set LIMIT value in table!");
+ if (Util_TableSetReal(handle_gt12_bound ,gt12_bound_speed, "SPEED") < 0)
+ CCTK_WARN(0, "could not set SPEED value in table!");
+
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, handle_gt12_bound,
+ "ML_CCZ4::gt12", "Radiation");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register Radiation BC for ML_CCZ4::gt12!");
+
+ }
+
+ if (CCTK_EQUALS(gt13_bound, "radiative"))
+ {
+ /* select radiation boundary condition */
+ static CCTK_INT handle_gt13_bound = -1;
+ if (handle_gt13_bound < 0) handle_gt13_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_gt13_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_gt13_bound , gt13_bound_limit, "LIMIT") < 0)
+ CCTK_WARN(0, "could not set LIMIT value in table!");
+ if (Util_TableSetReal(handle_gt13_bound ,gt13_bound_speed, "SPEED") < 0)
+ CCTK_WARN(0, "could not set SPEED value in table!");
+
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, handle_gt13_bound,
+ "ML_CCZ4::gt13", "Radiation");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register Radiation BC for ML_CCZ4::gt13!");
+
+ }
+
+ if (CCTK_EQUALS(gt22_bound, "radiative"))
+ {
+ /* select radiation boundary condition */
+ static CCTK_INT handle_gt22_bound = -1;
+ if (handle_gt22_bound < 0) handle_gt22_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_gt22_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_gt22_bound , gt22_bound_limit, "LIMIT") < 0)
+ CCTK_WARN(0, "could not set LIMIT value in table!");
+ if (Util_TableSetReal(handle_gt22_bound ,gt22_bound_speed, "SPEED") < 0)
+ CCTK_WARN(0, "could not set SPEED value in table!");
+
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, handle_gt22_bound,
+ "ML_CCZ4::gt22", "Radiation");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register Radiation BC for ML_CCZ4::gt22!");
+
+ }
+
+ if (CCTK_EQUALS(gt23_bound, "radiative"))
+ {
+ /* select radiation boundary condition */
+ static CCTK_INT handle_gt23_bound = -1;
+ if (handle_gt23_bound < 0) handle_gt23_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_gt23_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_gt23_bound , gt23_bound_limit, "LIMIT") < 0)
+ CCTK_WARN(0, "could not set LIMIT value in table!");
+ if (Util_TableSetReal(handle_gt23_bound ,gt23_bound_speed, "SPEED") < 0)
+ CCTK_WARN(0, "could not set SPEED value in table!");
+
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, handle_gt23_bound,
+ "ML_CCZ4::gt23", "Radiation");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register Radiation BC for ML_CCZ4::gt23!");
+
+ }
+
+ if (CCTK_EQUALS(gt33_bound, "radiative"))
+ {
+ /* select radiation boundary condition */
+ static CCTK_INT handle_gt33_bound = -1;
+ if (handle_gt33_bound < 0) handle_gt33_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_gt33_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_gt33_bound , gt33_bound_limit, "LIMIT") < 0)
+ CCTK_WARN(0, "could not set LIMIT value in table!");
+ if (Util_TableSetReal(handle_gt33_bound ,gt33_bound_speed, "SPEED") < 0)
+ CCTK_WARN(0, "could not set SPEED value in table!");
+
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, handle_gt33_bound,
+ "ML_CCZ4::gt33", "Radiation");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register Radiation BC for ML_CCZ4::gt33!");
+
+ }
+
+ if (CCTK_EQUALS(beta1_bound, "radiative"))
+ {
+ /* select radiation boundary condition */
+ static CCTK_INT handle_beta1_bound = -1;
+ if (handle_beta1_bound < 0) handle_beta1_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_beta1_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_beta1_bound , beta1_bound_limit, "LIMIT") < 0)
+ CCTK_WARN(0, "could not set LIMIT value in table!");
+ if (Util_TableSetReal(handle_beta1_bound ,beta1_bound_speed, "SPEED") < 0)
+ CCTK_WARN(0, "could not set SPEED value in table!");
+
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, handle_beta1_bound,
+ "ML_CCZ4::beta1", "Radiation");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register Radiation BC for ML_CCZ4::beta1!");
+
+ }
+
+ if (CCTK_EQUALS(beta2_bound, "radiative"))
+ {
+ /* select radiation boundary condition */
+ static CCTK_INT handle_beta2_bound = -1;
+ if (handle_beta2_bound < 0) handle_beta2_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_beta2_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_beta2_bound , beta2_bound_limit, "LIMIT") < 0)
+ CCTK_WARN(0, "could not set LIMIT value in table!");
+ if (Util_TableSetReal(handle_beta2_bound ,beta2_bound_speed, "SPEED") < 0)
+ CCTK_WARN(0, "could not set SPEED value in table!");
+
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, handle_beta2_bound,
+ "ML_CCZ4::beta2", "Radiation");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register Radiation BC for ML_CCZ4::beta2!");
+
+ }
+
+ if (CCTK_EQUALS(beta3_bound, "radiative"))
+ {
+ /* select radiation boundary condition */
+ static CCTK_INT handle_beta3_bound = -1;
+ if (handle_beta3_bound < 0) handle_beta3_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_beta3_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_beta3_bound , beta3_bound_limit, "LIMIT") < 0)
+ CCTK_WARN(0, "could not set LIMIT value in table!");
+ if (Util_TableSetReal(handle_beta3_bound ,beta3_bound_speed, "SPEED") < 0)
+ CCTK_WARN(0, "could not set SPEED value in table!");
+
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, handle_beta3_bound,
+ "ML_CCZ4::beta3", "Radiation");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register Radiation BC for ML_CCZ4::beta3!");
+
+ }
+
+ if (CCTK_EQUALS(Theta_bound, "radiative"))
+ {
+ /* select radiation boundary condition */
+ static CCTK_INT handle_Theta_bound = -1;
+ if (handle_Theta_bound < 0) handle_Theta_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_Theta_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_Theta_bound , Theta_bound_limit, "LIMIT") < 0)
+ CCTK_WARN(0, "could not set LIMIT value in table!");
+ if (Util_TableSetReal(handle_Theta_bound ,Theta_bound_speed, "SPEED") < 0)
+ CCTK_WARN(0, "could not set SPEED value in table!");
+
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, handle_Theta_bound,
+ "ML_CCZ4::Theta", "Radiation");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register Radiation BC for ML_CCZ4::Theta!");
+
+ }
+
+ if (CCTK_EQUALS(trK_bound, "radiative"))
+ {
+ /* select radiation boundary condition */
+ static CCTK_INT handle_trK_bound = -1;
+ if (handle_trK_bound < 0) handle_trK_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_trK_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_trK_bound , trK_bound_limit, "LIMIT") < 0)
+ CCTK_WARN(0, "could not set LIMIT value in table!");
+ if (Util_TableSetReal(handle_trK_bound ,trK_bound_speed, "SPEED") < 0)
+ CCTK_WARN(0, "could not set SPEED value in table!");
+
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, handle_trK_bound,
+ "ML_CCZ4::trK", "Radiation");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register Radiation BC for ML_CCZ4::trK!");
+
+ }
+
+ if (CCTK_EQUALS(ML_curv_bound, "scalar"))
+ {
+ /* select scalar boundary condition */
+ static CCTK_INT handle_ML_curv_bound = -1;
+ if (handle_ML_curv_bound < 0) handle_ML_curv_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_ML_curv_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_ML_curv_bound ,ML_curv_bound_scalar, "SCALAR") < 0)
+ CCTK_WARN(0, "could not set SCALAR value in table!");
+
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, 1, handle_ML_curv_bound,
+ "ML_CCZ4::ML_curv", "scalar");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register Scalar BC for ML_CCZ4::ML_curv!");
+
+ }
+
+ if (CCTK_EQUALS(ML_dtlapse_bound, "scalar"))
+ {
+ /* select scalar boundary condition */
+ static CCTK_INT handle_ML_dtlapse_bound = -1;
+ if (handle_ML_dtlapse_bound < 0) handle_ML_dtlapse_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_ML_dtlapse_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_ML_dtlapse_bound ,ML_dtlapse_bound_scalar, "SCALAR") < 0)
+ CCTK_WARN(0, "could not set SCALAR value in table!");
+
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, 1, handle_ML_dtlapse_bound,
+ "ML_CCZ4::ML_dtlapse", "scalar");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register Scalar BC for ML_CCZ4::ML_dtlapse!");
+
+ }
+
+ if (CCTK_EQUALS(ML_dtshift_bound, "scalar"))
+ {
+ /* select scalar boundary condition */
+ static CCTK_INT handle_ML_dtshift_bound = -1;
+ if (handle_ML_dtshift_bound < 0) handle_ML_dtshift_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_ML_dtshift_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_ML_dtshift_bound ,ML_dtshift_bound_scalar, "SCALAR") < 0)
+ CCTK_WARN(0, "could not set SCALAR value in table!");
+
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, 1, handle_ML_dtshift_bound,
+ "ML_CCZ4::ML_dtshift", "scalar");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register Scalar BC for ML_CCZ4::ML_dtshift!");
+
+ }
+
+ if (CCTK_EQUALS(ML_Gamma_bound, "scalar"))
+ {
+ /* select scalar boundary condition */
+ static CCTK_INT handle_ML_Gamma_bound = -1;
+ if (handle_ML_Gamma_bound < 0) handle_ML_Gamma_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_ML_Gamma_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_ML_Gamma_bound ,ML_Gamma_bound_scalar, "SCALAR") < 0)
+ CCTK_WARN(0, "could not set SCALAR value in table!");
+
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, 1, handle_ML_Gamma_bound,
+ "ML_CCZ4::ML_Gamma", "scalar");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register Scalar BC for ML_CCZ4::ML_Gamma!");
+
+ }
+
+ if (CCTK_EQUALS(ML_lapse_bound, "scalar"))
+ {
+ /* select scalar boundary condition */
+ static CCTK_INT handle_ML_lapse_bound = -1;
+ if (handle_ML_lapse_bound < 0) handle_ML_lapse_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_ML_lapse_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_ML_lapse_bound ,ML_lapse_bound_scalar, "SCALAR") < 0)
+ CCTK_WARN(0, "could not set SCALAR value in table!");
+
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, 1, handle_ML_lapse_bound,
+ "ML_CCZ4::ML_lapse", "scalar");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register Scalar BC for ML_CCZ4::ML_lapse!");
+
+ }
+
+ if (CCTK_EQUALS(ML_log_confac_bound, "scalar"))
+ {
+ /* select scalar boundary condition */
+ static CCTK_INT handle_ML_log_confac_bound = -1;
+ if (handle_ML_log_confac_bound < 0) handle_ML_log_confac_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_ML_log_confac_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_ML_log_confac_bound ,ML_log_confac_bound_scalar, "SCALAR") < 0)
+ CCTK_WARN(0, "could not set SCALAR value in table!");
+
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, 1, handle_ML_log_confac_bound,
+ "ML_CCZ4::ML_log_confac", "scalar");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register Scalar BC for ML_CCZ4::ML_log_confac!");
+
+ }
+
+ if (CCTK_EQUALS(ML_metric_bound, "scalar"))
+ {
+ /* select scalar boundary condition */
+ static CCTK_INT handle_ML_metric_bound = -1;
+ if (handle_ML_metric_bound < 0) handle_ML_metric_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_ML_metric_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_ML_metric_bound ,ML_metric_bound_scalar, "SCALAR") < 0)
+ CCTK_WARN(0, "could not set SCALAR value in table!");
+
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, 1, handle_ML_metric_bound,
+ "ML_CCZ4::ML_metric", "scalar");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register Scalar BC for ML_CCZ4::ML_metric!");
+
+ }
+
+ if (CCTK_EQUALS(ML_shift_bound, "scalar"))
+ {
+ /* select scalar boundary condition */
+ static CCTK_INT handle_ML_shift_bound = -1;
+ if (handle_ML_shift_bound < 0) handle_ML_shift_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_ML_shift_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_ML_shift_bound ,ML_shift_bound_scalar, "SCALAR") < 0)
+ CCTK_WARN(0, "could not set SCALAR value in table!");
+
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, 1, handle_ML_shift_bound,
+ "ML_CCZ4::ML_shift", "scalar");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register Scalar BC for ML_CCZ4::ML_shift!");
+
+ }
+
+ if (CCTK_EQUALS(ML_Theta_bound, "scalar"))
+ {
+ /* select scalar boundary condition */
+ static CCTK_INT handle_ML_Theta_bound = -1;
+ if (handle_ML_Theta_bound < 0) handle_ML_Theta_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_ML_Theta_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_ML_Theta_bound ,ML_Theta_bound_scalar, "SCALAR") < 0)
+ CCTK_WARN(0, "could not set SCALAR value in table!");
+
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, 1, handle_ML_Theta_bound,
+ "ML_CCZ4::ML_Theta", "scalar");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register Scalar BC for ML_CCZ4::ML_Theta!");
+
+ }
+
+ if (CCTK_EQUALS(ML_trace_curv_bound, "scalar"))
+ {
+ /* select scalar boundary condition */
+ static CCTK_INT handle_ML_trace_curv_bound = -1;
+ if (handle_ML_trace_curv_bound < 0) handle_ML_trace_curv_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_ML_trace_curv_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_ML_trace_curv_bound ,ML_trace_curv_bound_scalar, "SCALAR") < 0)
+ CCTK_WARN(0, "could not set SCALAR value in table!");
+
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, 1, handle_ML_trace_curv_bound,
+ "ML_CCZ4::ML_trace_curv", "scalar");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Failed to register Scalar BC for ML_CCZ4::ML_trace_curv!");
+
+ }
+
+ if (CCTK_EQUALS(At11_bound, "scalar"))
+ {
+ /* select scalar boundary condition */
+ static CCTK_INT handle_At11_bound = -1;
+ if (handle_At11_bound < 0) handle_At11_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_At11_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_At11_bound ,At11_bound_scalar, "SCALAR") < 0)
+ CCTK_WARN(0, "could not set SCALAR value in table!");
+
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, handle_At11_bound,
+ "ML_CCZ4::At11", "scalar");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Error in registering Scalar BC for ML_CCZ4::At11!");
+
+ }
+
+ if (CCTK_EQUALS(At12_bound, "scalar"))
+ {
+ /* select scalar boundary condition */
+ static CCTK_INT handle_At12_bound = -1;
+ if (handle_At12_bound < 0) handle_At12_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_At12_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_At12_bound ,At12_bound_scalar, "SCALAR") < 0)
+ CCTK_WARN(0, "could not set SCALAR value in table!");
+
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, handle_At12_bound,
+ "ML_CCZ4::At12", "scalar");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Error in registering Scalar BC for ML_CCZ4::At12!");
+
+ }
+
+ if (CCTK_EQUALS(At13_bound, "scalar"))
+ {
+ /* select scalar boundary condition */
+ static CCTK_INT handle_At13_bound = -1;
+ if (handle_At13_bound < 0) handle_At13_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_At13_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_At13_bound ,At13_bound_scalar, "SCALAR") < 0)
+ CCTK_WARN(0, "could not set SCALAR value in table!");
+
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, handle_At13_bound,
+ "ML_CCZ4::At13", "scalar");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Error in registering Scalar BC for ML_CCZ4::At13!");
+
+ }
+
+ if (CCTK_EQUALS(At22_bound, "scalar"))
+ {
+ /* select scalar boundary condition */
+ static CCTK_INT handle_At22_bound = -1;
+ if (handle_At22_bound < 0) handle_At22_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_At22_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_At22_bound ,At22_bound_scalar, "SCALAR") < 0)
+ CCTK_WARN(0, "could not set SCALAR value in table!");
+
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, handle_At22_bound,
+ "ML_CCZ4::At22", "scalar");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Error in registering Scalar BC for ML_CCZ4::At22!");
+
+ }
+
+ if (CCTK_EQUALS(At23_bound, "scalar"))
+ {
+ /* select scalar boundary condition */
+ static CCTK_INT handle_At23_bound = -1;
+ if (handle_At23_bound < 0) handle_At23_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_At23_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_At23_bound ,At23_bound_scalar, "SCALAR") < 0)
+ CCTK_WARN(0, "could not set SCALAR value in table!");
+
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, handle_At23_bound,
+ "ML_CCZ4::At23", "scalar");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Error in registering Scalar BC for ML_CCZ4::At23!");
+
+ }
+
+ if (CCTK_EQUALS(At33_bound, "scalar"))
+ {
+ /* select scalar boundary condition */
+ static CCTK_INT handle_At33_bound = -1;
+ if (handle_At33_bound < 0) handle_At33_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_At33_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_At33_bound ,At33_bound_scalar, "SCALAR") < 0)
+ CCTK_WARN(0, "could not set SCALAR value in table!");
+
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, handle_At33_bound,
+ "ML_CCZ4::At33", "scalar");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Error in registering Scalar BC for ML_CCZ4::At33!");
+
+ }
+
+ if (CCTK_EQUALS(A_bound, "scalar"))
+ {
+ /* select scalar boundary condition */
+ static CCTK_INT handle_A_bound = -1;
+ if (handle_A_bound < 0) handle_A_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_A_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_A_bound ,A_bound_scalar, "SCALAR") < 0)
+ CCTK_WARN(0, "could not set SCALAR value in table!");
+
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, handle_A_bound,
+ "ML_CCZ4::A", "scalar");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Error in registering Scalar BC for ML_CCZ4::A!");
+
+ }
+
+ if (CCTK_EQUALS(B1_bound, "scalar"))
+ {
+ /* select scalar boundary condition */
+ static CCTK_INT handle_B1_bound = -1;
+ if (handle_B1_bound < 0) handle_B1_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_B1_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_B1_bound ,B1_bound_scalar, "SCALAR") < 0)
+ CCTK_WARN(0, "could not set SCALAR value in table!");
+
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, handle_B1_bound,
+ "ML_CCZ4::B1", "scalar");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Error in registering Scalar BC for ML_CCZ4::B1!");
+
+ }
+
+ if (CCTK_EQUALS(B2_bound, "scalar"))
+ {
+ /* select scalar boundary condition */
+ static CCTK_INT handle_B2_bound = -1;
+ if (handle_B2_bound < 0) handle_B2_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_B2_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_B2_bound ,B2_bound_scalar, "SCALAR") < 0)
+ CCTK_WARN(0, "could not set SCALAR value in table!");
+
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, handle_B2_bound,
+ "ML_CCZ4::B2", "scalar");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Error in registering Scalar BC for ML_CCZ4::B2!");
+
+ }
+
+ if (CCTK_EQUALS(B3_bound, "scalar"))
+ {
+ /* select scalar boundary condition */
+ static CCTK_INT handle_B3_bound = -1;
+ if (handle_B3_bound < 0) handle_B3_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_B3_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_B3_bound ,B3_bound_scalar, "SCALAR") < 0)
+ CCTK_WARN(0, "could not set SCALAR value in table!");
+
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, handle_B3_bound,
+ "ML_CCZ4::B3", "scalar");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Error in registering Scalar BC for ML_CCZ4::B3!");
+
+ }
+
+ if (CCTK_EQUALS(Xt1_bound, "scalar"))
+ {
+ /* select scalar boundary condition */
+ static CCTK_INT handle_Xt1_bound = -1;
+ if (handle_Xt1_bound < 0) handle_Xt1_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_Xt1_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_Xt1_bound ,Xt1_bound_scalar, "SCALAR") < 0)
+ CCTK_WARN(0, "could not set SCALAR value in table!");
+
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, handle_Xt1_bound,
+ "ML_CCZ4::Xt1", "scalar");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Error in registering Scalar BC for ML_CCZ4::Xt1!");
+
+ }
+
+ if (CCTK_EQUALS(Xt2_bound, "scalar"))
+ {
+ /* select scalar boundary condition */
+ static CCTK_INT handle_Xt2_bound = -1;
+ if (handle_Xt2_bound < 0) handle_Xt2_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_Xt2_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_Xt2_bound ,Xt2_bound_scalar, "SCALAR") < 0)
+ CCTK_WARN(0, "could not set SCALAR value in table!");
+
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, handle_Xt2_bound,
+ "ML_CCZ4::Xt2", "scalar");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Error in registering Scalar BC for ML_CCZ4::Xt2!");
+
+ }
+
+ if (CCTK_EQUALS(Xt3_bound, "scalar"))
+ {
+ /* select scalar boundary condition */
+ static CCTK_INT handle_Xt3_bound = -1;
+ if (handle_Xt3_bound < 0) handle_Xt3_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_Xt3_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_Xt3_bound ,Xt3_bound_scalar, "SCALAR") < 0)
+ CCTK_WARN(0, "could not set SCALAR value in table!");
+
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, handle_Xt3_bound,
+ "ML_CCZ4::Xt3", "scalar");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Error in registering Scalar BC for ML_CCZ4::Xt3!");
+
+ }
+
+ if (CCTK_EQUALS(alpha_bound, "scalar"))
+ {
+ /* select scalar boundary condition */
+ static CCTK_INT handle_alpha_bound = -1;
+ if (handle_alpha_bound < 0) handle_alpha_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_alpha_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_alpha_bound ,alpha_bound_scalar, "SCALAR") < 0)
+ CCTK_WARN(0, "could not set SCALAR value in table!");
+
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, handle_alpha_bound,
+ "ML_CCZ4::alpha", "scalar");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Error in registering Scalar BC for ML_CCZ4::alpha!");
+
+ }
+
+ if (CCTK_EQUALS(phi_bound, "scalar"))
+ {
+ /* select scalar boundary condition */
+ static CCTK_INT handle_phi_bound = -1;
+ if (handle_phi_bound < 0) handle_phi_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_phi_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_phi_bound ,phi_bound_scalar, "SCALAR") < 0)
+ CCTK_WARN(0, "could not set SCALAR value in table!");
+
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, handle_phi_bound,
+ "ML_CCZ4::phi", "scalar");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Error in registering Scalar BC for ML_CCZ4::phi!");
+
+ }
+
+ if (CCTK_EQUALS(gt11_bound, "scalar"))
+ {
+ /* select scalar boundary condition */
+ static CCTK_INT handle_gt11_bound = -1;
+ if (handle_gt11_bound < 0) handle_gt11_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_gt11_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_gt11_bound ,gt11_bound_scalar, "SCALAR") < 0)
+ CCTK_WARN(0, "could not set SCALAR value in table!");
+
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, handle_gt11_bound,
+ "ML_CCZ4::gt11", "scalar");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Error in registering Scalar BC for ML_CCZ4::gt11!");
+
+ }
+
+ if (CCTK_EQUALS(gt12_bound, "scalar"))
+ {
+ /* select scalar boundary condition */
+ static CCTK_INT handle_gt12_bound = -1;
+ if (handle_gt12_bound < 0) handle_gt12_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_gt12_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_gt12_bound ,gt12_bound_scalar, "SCALAR") < 0)
+ CCTK_WARN(0, "could not set SCALAR value in table!");
+
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, handle_gt12_bound,
+ "ML_CCZ4::gt12", "scalar");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Error in registering Scalar BC for ML_CCZ4::gt12!");
+
+ }
+
+ if (CCTK_EQUALS(gt13_bound, "scalar"))
+ {
+ /* select scalar boundary condition */
+ static CCTK_INT handle_gt13_bound = -1;
+ if (handle_gt13_bound < 0) handle_gt13_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_gt13_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_gt13_bound ,gt13_bound_scalar, "SCALAR") < 0)
+ CCTK_WARN(0, "could not set SCALAR value in table!");
+
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, handle_gt13_bound,
+ "ML_CCZ4::gt13", "scalar");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Error in registering Scalar BC for ML_CCZ4::gt13!");
+
+ }
+
+ if (CCTK_EQUALS(gt22_bound, "scalar"))
+ {
+ /* select scalar boundary condition */
+ static CCTK_INT handle_gt22_bound = -1;
+ if (handle_gt22_bound < 0) handle_gt22_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_gt22_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_gt22_bound ,gt22_bound_scalar, "SCALAR") < 0)
+ CCTK_WARN(0, "could not set SCALAR value in table!");
+
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, handle_gt22_bound,
+ "ML_CCZ4::gt22", "scalar");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Error in registering Scalar BC for ML_CCZ4::gt22!");
+
+ }
+
+ if (CCTK_EQUALS(gt23_bound, "scalar"))
+ {
+ /* select scalar boundary condition */
+ static CCTK_INT handle_gt23_bound = -1;
+ if (handle_gt23_bound < 0) handle_gt23_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_gt23_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_gt23_bound ,gt23_bound_scalar, "SCALAR") < 0)
+ CCTK_WARN(0, "could not set SCALAR value in table!");
+
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, handle_gt23_bound,
+ "ML_CCZ4::gt23", "scalar");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Error in registering Scalar BC for ML_CCZ4::gt23!");
+
+ }
+
+ if (CCTK_EQUALS(gt33_bound, "scalar"))
+ {
+ /* select scalar boundary condition */
+ static CCTK_INT handle_gt33_bound = -1;
+ if (handle_gt33_bound < 0) handle_gt33_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_gt33_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_gt33_bound ,gt33_bound_scalar, "SCALAR") < 0)
+ CCTK_WARN(0, "could not set SCALAR value in table!");
+
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, handle_gt33_bound,
+ "ML_CCZ4::gt33", "scalar");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Error in registering Scalar BC for ML_CCZ4::gt33!");
+
+ }
+
+ if (CCTK_EQUALS(beta1_bound, "scalar"))
+ {
+ /* select scalar boundary condition */
+ static CCTK_INT handle_beta1_bound = -1;
+ if (handle_beta1_bound < 0) handle_beta1_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_beta1_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_beta1_bound ,beta1_bound_scalar, "SCALAR") < 0)
+ CCTK_WARN(0, "could not set SCALAR value in table!");
+
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, handle_beta1_bound,
+ "ML_CCZ4::beta1", "scalar");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Error in registering Scalar BC for ML_CCZ4::beta1!");
+
+ }
+
+ if (CCTK_EQUALS(beta2_bound, "scalar"))
+ {
+ /* select scalar boundary condition */
+ static CCTK_INT handle_beta2_bound = -1;
+ if (handle_beta2_bound < 0) handle_beta2_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_beta2_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_beta2_bound ,beta2_bound_scalar, "SCALAR") < 0)
+ CCTK_WARN(0, "could not set SCALAR value in table!");
+
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, handle_beta2_bound,
+ "ML_CCZ4::beta2", "scalar");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Error in registering Scalar BC for ML_CCZ4::beta2!");
+
+ }
+
+ if (CCTK_EQUALS(beta3_bound, "scalar"))
+ {
+ /* select scalar boundary condition */
+ static CCTK_INT handle_beta3_bound = -1;
+ if (handle_beta3_bound < 0) handle_beta3_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_beta3_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_beta3_bound ,beta3_bound_scalar, "SCALAR") < 0)
+ CCTK_WARN(0, "could not set SCALAR value in table!");
+
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, handle_beta3_bound,
+ "ML_CCZ4::beta3", "scalar");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Error in registering Scalar BC for ML_CCZ4::beta3!");
+
+ }
+
+ if (CCTK_EQUALS(Theta_bound, "scalar"))
+ {
+ /* select scalar boundary condition */
+ static CCTK_INT handle_Theta_bound = -1;
+ if (handle_Theta_bound < 0) handle_Theta_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_Theta_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_Theta_bound ,Theta_bound_scalar, "SCALAR") < 0)
+ CCTK_WARN(0, "could not set SCALAR value in table!");
+
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, handle_Theta_bound,
+ "ML_CCZ4::Theta", "scalar");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Error in registering Scalar BC for ML_CCZ4::Theta!");
+
+ }
+
+ if (CCTK_EQUALS(trK_bound, "scalar"))
+ {
+ /* select scalar boundary condition */
+ static CCTK_INT handle_trK_bound = -1;
+ if (handle_trK_bound < 0) handle_trK_bound = Util_TableCreate(UTIL_TABLE_FLAGS_CASE_INSENSITIVE);
+ if (handle_trK_bound < 0) CCTK_WARN(0, "could not create table!");
+ if (Util_TableSetReal(handle_trK_bound ,trK_bound_scalar, "SCALAR") < 0)
+ CCTK_WARN(0, "could not set SCALAR value in table!");
+
+ ierr = Boundary_SelectVarForBC(cctkGH, CCTK_ALL_FACES, 1, handle_trK_bound,
+ "ML_CCZ4::trK", "scalar");
+
+ if (ierr < 0)
+ CCTK_WARN(0, "Error in registering Scalar BC for ML_CCZ4::trK!");
+
+ }
+ return;
+}
+
+
+
+/* template for entries in parameter file:
+#$bound$#ML_CCZ4::ML_curv_bound = "skip"
+#$bound$#ML_CCZ4::ML_curv_bound_speed = 1.0
+#$bound$#ML_CCZ4::ML_curv_bound_limit = 0.0
+#$bound$#ML_CCZ4::ML_curv_bound_scalar = 0.0
+
+#$bound$#ML_CCZ4::ML_dtlapse_bound = "skip"
+#$bound$#ML_CCZ4::ML_dtlapse_bound_speed = 1.0
+#$bound$#ML_CCZ4::ML_dtlapse_bound_limit = 0.0
+#$bound$#ML_CCZ4::ML_dtlapse_bound_scalar = 0.0
+
+#$bound$#ML_CCZ4::ML_dtshift_bound = "skip"
+#$bound$#ML_CCZ4::ML_dtshift_bound_speed = 1.0
+#$bound$#ML_CCZ4::ML_dtshift_bound_limit = 0.0
+#$bound$#ML_CCZ4::ML_dtshift_bound_scalar = 0.0
+
+#$bound$#ML_CCZ4::ML_Gamma_bound = "skip"
+#$bound$#ML_CCZ4::ML_Gamma_bound_speed = 1.0
+#$bound$#ML_CCZ4::ML_Gamma_bound_limit = 0.0
+#$bound$#ML_CCZ4::ML_Gamma_bound_scalar = 0.0
+
+#$bound$#ML_CCZ4::ML_lapse_bound = "skip"
+#$bound$#ML_CCZ4::ML_lapse_bound_speed = 1.0
+#$bound$#ML_CCZ4::ML_lapse_bound_limit = 0.0
+#$bound$#ML_CCZ4::ML_lapse_bound_scalar = 0.0
+
+#$bound$#ML_CCZ4::ML_log_confac_bound = "skip"
+#$bound$#ML_CCZ4::ML_log_confac_bound_speed = 1.0
+#$bound$#ML_CCZ4::ML_log_confac_bound_limit = 0.0
+#$bound$#ML_CCZ4::ML_log_confac_bound_scalar = 0.0
+
+#$bound$#ML_CCZ4::ML_metric_bound = "skip"
+#$bound$#ML_CCZ4::ML_metric_bound_speed = 1.0
+#$bound$#ML_CCZ4::ML_metric_bound_limit = 0.0
+#$bound$#ML_CCZ4::ML_metric_bound_scalar = 0.0
+
+#$bound$#ML_CCZ4::ML_shift_bound = "skip"
+#$bound$#ML_CCZ4::ML_shift_bound_speed = 1.0
+#$bound$#ML_CCZ4::ML_shift_bound_limit = 0.0
+#$bound$#ML_CCZ4::ML_shift_bound_scalar = 0.0
+
+#$bound$#ML_CCZ4::ML_Theta_bound = "skip"
+#$bound$#ML_CCZ4::ML_Theta_bound_speed = 1.0
+#$bound$#ML_CCZ4::ML_Theta_bound_limit = 0.0
+#$bound$#ML_CCZ4::ML_Theta_bound_scalar = 0.0
+
+#$bound$#ML_CCZ4::ML_trace_curv_bound = "skip"
+#$bound$#ML_CCZ4::ML_trace_curv_bound_speed = 1.0
+#$bound$#ML_CCZ4::ML_trace_curv_bound_limit = 0.0
+#$bound$#ML_CCZ4::ML_trace_curv_bound_scalar = 0.0
+
+#$bound$#ML_CCZ4::At11_bound = "skip"
+#$bound$#ML_CCZ4::At11_bound_speed = 1.0
+#$bound$#ML_CCZ4::At11_bound_limit = 0.0
+#$bound$#ML_CCZ4::At11_bound_scalar = 0.0
+
+#$bound$#ML_CCZ4::At12_bound = "skip"
+#$bound$#ML_CCZ4::At12_bound_speed = 1.0
+#$bound$#ML_CCZ4::At12_bound_limit = 0.0
+#$bound$#ML_CCZ4::At12_bound_scalar = 0.0
+
+#$bound$#ML_CCZ4::At13_bound = "skip"
+#$bound$#ML_CCZ4::At13_bound_speed = 1.0
+#$bound$#ML_CCZ4::At13_bound_limit = 0.0
+#$bound$#ML_CCZ4::At13_bound_scalar = 0.0
+
+#$bound$#ML_CCZ4::At22_bound = "skip"
+#$bound$#ML_CCZ4::At22_bound_speed = 1.0
+#$bound$#ML_CCZ4::At22_bound_limit = 0.0
+#$bound$#ML_CCZ4::At22_bound_scalar = 0.0
+
+#$bound$#ML_CCZ4::At23_bound = "skip"
+#$bound$#ML_CCZ4::At23_bound_speed = 1.0
+#$bound$#ML_CCZ4::At23_bound_limit = 0.0
+#$bound$#ML_CCZ4::At23_bound_scalar = 0.0
+
+#$bound$#ML_CCZ4::At33_bound = "skip"
+#$bound$#ML_CCZ4::At33_bound_speed = 1.0
+#$bound$#ML_CCZ4::At33_bound_limit = 0.0
+#$bound$#ML_CCZ4::At33_bound_scalar = 0.0
+
+#$bound$#ML_CCZ4::A_bound = "skip"
+#$bound$#ML_CCZ4::A_bound_speed = 1.0
+#$bound$#ML_CCZ4::A_bound_limit = 0.0
+#$bound$#ML_CCZ4::A_bound_scalar = 0.0
+
+#$bound$#ML_CCZ4::B1_bound = "skip"
+#$bound$#ML_CCZ4::B1_bound_speed = 1.0
+#$bound$#ML_CCZ4::B1_bound_limit = 0.0
+#$bound$#ML_CCZ4::B1_bound_scalar = 0.0
+
+#$bound$#ML_CCZ4::B2_bound = "skip"
+#$bound$#ML_CCZ4::B2_bound_speed = 1.0
+#$bound$#ML_CCZ4::B2_bound_limit = 0.0
+#$bound$#ML_CCZ4::B2_bound_scalar = 0.0
+
+#$bound$#ML_CCZ4::B3_bound = "skip"
+#$bound$#ML_CCZ4::B3_bound_speed = 1.0
+#$bound$#ML_CCZ4::B3_bound_limit = 0.0
+#$bound$#ML_CCZ4::B3_bound_scalar = 0.0
+
+#$bound$#ML_CCZ4::Xt1_bound = "skip"
+#$bound$#ML_CCZ4::Xt1_bound_speed = 1.0
+#$bound$#ML_CCZ4::Xt1_bound_limit = 0.0
+#$bound$#ML_CCZ4::Xt1_bound_scalar = 0.0
+
+#$bound$#ML_CCZ4::Xt2_bound = "skip"
+#$bound$#ML_CCZ4::Xt2_bound_speed = 1.0
+#$bound$#ML_CCZ4::Xt2_bound_limit = 0.0
+#$bound$#ML_CCZ4::Xt2_bound_scalar = 0.0
+
+#$bound$#ML_CCZ4::Xt3_bound = "skip"
+#$bound$#ML_CCZ4::Xt3_bound_speed = 1.0
+#$bound$#ML_CCZ4::Xt3_bound_limit = 0.0
+#$bound$#ML_CCZ4::Xt3_bound_scalar = 0.0
+
+#$bound$#ML_CCZ4::alpha_bound = "skip"
+#$bound$#ML_CCZ4::alpha_bound_speed = 1.0
+#$bound$#ML_CCZ4::alpha_bound_limit = 0.0
+#$bound$#ML_CCZ4::alpha_bound_scalar = 0.0
+
+#$bound$#ML_CCZ4::phi_bound = "skip"
+#$bound$#ML_CCZ4::phi_bound_speed = 1.0
+#$bound$#ML_CCZ4::phi_bound_limit = 0.0
+#$bound$#ML_CCZ4::phi_bound_scalar = 0.0
+
+#$bound$#ML_CCZ4::gt11_bound = "skip"
+#$bound$#ML_CCZ4::gt11_bound_speed = 1.0
+#$bound$#ML_CCZ4::gt11_bound_limit = 0.0
+#$bound$#ML_CCZ4::gt11_bound_scalar = 0.0
+
+#$bound$#ML_CCZ4::gt12_bound = "skip"
+#$bound$#ML_CCZ4::gt12_bound_speed = 1.0
+#$bound$#ML_CCZ4::gt12_bound_limit = 0.0
+#$bound$#ML_CCZ4::gt12_bound_scalar = 0.0
+
+#$bound$#ML_CCZ4::gt13_bound = "skip"
+#$bound$#ML_CCZ4::gt13_bound_speed = 1.0
+#$bound$#ML_CCZ4::gt13_bound_limit = 0.0
+#$bound$#ML_CCZ4::gt13_bound_scalar = 0.0
+
+#$bound$#ML_CCZ4::gt22_bound = "skip"
+#$bound$#ML_CCZ4::gt22_bound_speed = 1.0
+#$bound$#ML_CCZ4::gt22_bound_limit = 0.0
+#$bound$#ML_CCZ4::gt22_bound_scalar = 0.0
+
+#$bound$#ML_CCZ4::gt23_bound = "skip"
+#$bound$#ML_CCZ4::gt23_bound_speed = 1.0
+#$bound$#ML_CCZ4::gt23_bound_limit = 0.0
+#$bound$#ML_CCZ4::gt23_bound_scalar = 0.0
+
+#$bound$#ML_CCZ4::gt33_bound = "skip"
+#$bound$#ML_CCZ4::gt33_bound_speed = 1.0
+#$bound$#ML_CCZ4::gt33_bound_limit = 0.0
+#$bound$#ML_CCZ4::gt33_bound_scalar = 0.0
+
+#$bound$#ML_CCZ4::beta1_bound = "skip"
+#$bound$#ML_CCZ4::beta1_bound_speed = 1.0
+#$bound$#ML_CCZ4::beta1_bound_limit = 0.0
+#$bound$#ML_CCZ4::beta1_bound_scalar = 0.0
+
+#$bound$#ML_CCZ4::beta2_bound = "skip"
+#$bound$#ML_CCZ4::beta2_bound_speed = 1.0
+#$bound$#ML_CCZ4::beta2_bound_limit = 0.0
+#$bound$#ML_CCZ4::beta2_bound_scalar = 0.0
+
+#$bound$#ML_CCZ4::beta3_bound = "skip"
+#$bound$#ML_CCZ4::beta3_bound_speed = 1.0
+#$bound$#ML_CCZ4::beta3_bound_limit = 0.0
+#$bound$#ML_CCZ4::beta3_bound_scalar = 0.0
+
+#$bound$#ML_CCZ4::Theta_bound = "skip"
+#$bound$#ML_CCZ4::Theta_bound_speed = 1.0
+#$bound$#ML_CCZ4::Theta_bound_limit = 0.0
+#$bound$#ML_CCZ4::Theta_bound_scalar = 0.0
+
+#$bound$#ML_CCZ4::trK_bound = "skip"
+#$bound$#ML_CCZ4::trK_bound_speed = 1.0
+#$bound$#ML_CCZ4::trK_bound_limit = 0.0
+#$bound$#ML_CCZ4::trK_bound_scalar = 0.0
+
+*/
+
diff --git a/ML_CCZ4/src/Differencing.h b/ML_CCZ4/src/Differencing.h
new file mode 100644
index 0000000..96a0554
--- /dev/null
+++ b/ML_CCZ4/src/Differencing.h
@@ -0,0 +1,1146 @@
+#include <assert.h>
+#include "vectors.h"
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDstandardNthfdOrder21(u) (kmul(p1o2dx,ksub(KRANC_GFOFFSET3D(u,1,0,0),KRANC_GFOFFSET3D(u,-1,0,0))))
+#else
+# define PDstandardNthfdOrder21(u) (PDstandardNthfdOrder21_impl(u,p1o2dx,cdj,cdk))
+static CCTK_REAL_VEC PDstandardNthfdOrder21_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o2dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDstandardNthfdOrder21_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o2dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o2dx,ksub(KRANC_GFOFFSET3D(u,1,0,0),KRANC_GFOFFSET3D(u,-1,0,0)));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDstandardNthfdOrder22(u) (kmul(p1o2dy,ksub(KRANC_GFOFFSET3D(u,0,1,0),KRANC_GFOFFSET3D(u,0,-1,0))))
+#else
+# define PDstandardNthfdOrder22(u) (PDstandardNthfdOrder22_impl(u,p1o2dy,cdj,cdk))
+static CCTK_REAL_VEC PDstandardNthfdOrder22_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o2dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDstandardNthfdOrder22_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o2dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o2dy,ksub(KRANC_GFOFFSET3D(u,0,1,0),KRANC_GFOFFSET3D(u,0,-1,0)));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDstandardNthfdOrder23(u) (kmul(p1o2dz,ksub(KRANC_GFOFFSET3D(u,0,0,1),KRANC_GFOFFSET3D(u,0,0,-1))))
+#else
+# define PDstandardNthfdOrder23(u) (PDstandardNthfdOrder23_impl(u,p1o2dz,cdj,cdk))
+static CCTK_REAL_VEC PDstandardNthfdOrder23_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o2dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDstandardNthfdOrder23_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o2dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o2dz,ksub(KRANC_GFOFFSET3D(u,0,0,1),KRANC_GFOFFSET3D(u,0,0,-1)));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDstandardNthfdOrder41(u) (kmul(p1o12dx,kadd(KRANC_GFOFFSET3D(u,-2,0,0),kmadd(KRANC_GFOFFSET3D(u,-1,0,0),ToReal(-8),kmsub(KRANC_GFOFFSET3D(u,1,0,0),ToReal(8),KRANC_GFOFFSET3D(u,2,0,0))))))
+#else
+# define PDstandardNthfdOrder41(u) (PDstandardNthfdOrder41_impl(u,p1o12dx,cdj,cdk))
+static CCTK_REAL_VEC PDstandardNthfdOrder41_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o12dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDstandardNthfdOrder41_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o12dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o12dx,kadd(KRANC_GFOFFSET3D(u,-2,0,0),kmadd(KRANC_GFOFFSET3D(u,-1,0,0),ToReal(-8),kmsub(KRANC_GFOFFSET3D(u,1,0,0),ToReal(8),KRANC_GFOFFSET3D(u,2,0,0)))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDstandardNthfdOrder42(u) (kmul(p1o12dy,kadd(KRANC_GFOFFSET3D(u,0,-2,0),kmadd(KRANC_GFOFFSET3D(u,0,-1,0),ToReal(-8),kmsub(KRANC_GFOFFSET3D(u,0,1,0),ToReal(8),KRANC_GFOFFSET3D(u,0,2,0))))))
+#else
+# define PDstandardNthfdOrder42(u) (PDstandardNthfdOrder42_impl(u,p1o12dy,cdj,cdk))
+static CCTK_REAL_VEC PDstandardNthfdOrder42_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o12dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDstandardNthfdOrder42_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o12dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o12dy,kadd(KRANC_GFOFFSET3D(u,0,-2,0),kmadd(KRANC_GFOFFSET3D(u,0,-1,0),ToReal(-8),kmsub(KRANC_GFOFFSET3D(u,0,1,0),ToReal(8),KRANC_GFOFFSET3D(u,0,2,0)))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDstandardNthfdOrder43(u) (kmul(p1o12dz,kadd(KRANC_GFOFFSET3D(u,0,0,-2),kmadd(KRANC_GFOFFSET3D(u,0,0,-1),ToReal(-8),kmsub(KRANC_GFOFFSET3D(u,0,0,1),ToReal(8),KRANC_GFOFFSET3D(u,0,0,2))))))
+#else
+# define PDstandardNthfdOrder43(u) (PDstandardNthfdOrder43_impl(u,p1o12dz,cdj,cdk))
+static CCTK_REAL_VEC PDstandardNthfdOrder43_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o12dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDstandardNthfdOrder43_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o12dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o12dz,kadd(KRANC_GFOFFSET3D(u,0,0,-2),kmadd(KRANC_GFOFFSET3D(u,0,0,-1),ToReal(-8),kmsub(KRANC_GFOFFSET3D(u,0,0,1),ToReal(8),KRANC_GFOFFSET3D(u,0,0,2)))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDstandardNthfdOrder61(u) (kmul(p1o60dx,kadd(KRANC_GFOFFSET3D(u,3,0,0),kmadd(KRANC_GFOFFSET3D(u,-1,0,0),ToReal(-45),kmadd(KRANC_GFOFFSET3D(u,2,0,0),ToReal(-9),ksub(kmadd(KRANC_GFOFFSET3D(u,-2,0,0),ToReal(9),kmul(KRANC_GFOFFSET3D(u,1,0,0),ToReal(45))),KRANC_GFOFFSET3D(u,-3,0,0)))))))
+#else
+# define PDstandardNthfdOrder61(u) (PDstandardNthfdOrder61_impl(u,p1o60dx,cdj,cdk))
+static CCTK_REAL_VEC PDstandardNthfdOrder61_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o60dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDstandardNthfdOrder61_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o60dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o60dx,kadd(KRANC_GFOFFSET3D(u,3,0,0),kmadd(KRANC_GFOFFSET3D(u,-1,0,0),ToReal(-45),kmadd(KRANC_GFOFFSET3D(u,2,0,0),ToReal(-9),ksub(kmadd(KRANC_GFOFFSET3D(u,-2,0,0),ToReal(9),kmul(KRANC_GFOFFSET3D(u,1,0,0),ToReal(45))),KRANC_GFOFFSET3D(u,-3,0,0))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDstandardNthfdOrder62(u) (kmul(p1o60dy,kadd(KRANC_GFOFFSET3D(u,0,3,0),kmadd(KRANC_GFOFFSET3D(u,0,-1,0),ToReal(-45),kmadd(KRANC_GFOFFSET3D(u,0,2,0),ToReal(-9),ksub(kmadd(KRANC_GFOFFSET3D(u,0,-2,0),ToReal(9),kmul(KRANC_GFOFFSET3D(u,0,1,0),ToReal(45))),KRANC_GFOFFSET3D(u,0,-3,0)))))))
+#else
+# define PDstandardNthfdOrder62(u) (PDstandardNthfdOrder62_impl(u,p1o60dy,cdj,cdk))
+static CCTK_REAL_VEC PDstandardNthfdOrder62_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o60dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDstandardNthfdOrder62_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o60dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o60dy,kadd(KRANC_GFOFFSET3D(u,0,3,0),kmadd(KRANC_GFOFFSET3D(u,0,-1,0),ToReal(-45),kmadd(KRANC_GFOFFSET3D(u,0,2,0),ToReal(-9),ksub(kmadd(KRANC_GFOFFSET3D(u,0,-2,0),ToReal(9),kmul(KRANC_GFOFFSET3D(u,0,1,0),ToReal(45))),KRANC_GFOFFSET3D(u,0,-3,0))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDstandardNthfdOrder63(u) (kmul(p1o60dz,kadd(KRANC_GFOFFSET3D(u,0,0,3),kmadd(KRANC_GFOFFSET3D(u,0,0,-1),ToReal(-45),kmadd(KRANC_GFOFFSET3D(u,0,0,2),ToReal(-9),ksub(kmadd(KRANC_GFOFFSET3D(u,0,0,-2),ToReal(9),kmul(KRANC_GFOFFSET3D(u,0,0,1),ToReal(45))),KRANC_GFOFFSET3D(u,0,0,-3)))))))
+#else
+# define PDstandardNthfdOrder63(u) (PDstandardNthfdOrder63_impl(u,p1o60dz,cdj,cdk))
+static CCTK_REAL_VEC PDstandardNthfdOrder63_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o60dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDstandardNthfdOrder63_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o60dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o60dz,kadd(KRANC_GFOFFSET3D(u,0,0,3),kmadd(KRANC_GFOFFSET3D(u,0,0,-1),ToReal(-45),kmadd(KRANC_GFOFFSET3D(u,0,0,2),ToReal(-9),ksub(kmadd(KRANC_GFOFFSET3D(u,0,0,-2),ToReal(9),kmul(KRANC_GFOFFSET3D(u,0,0,1),ToReal(45))),KRANC_GFOFFSET3D(u,0,0,-3))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDstandardNthfdOrder81(u) (kmul(p1o840dx,kmadd(KRANC_GFOFFSET3D(u,-1,0,0),ToReal(-672),kmadd(KRANC_GFOFFSET3D(u,2,0,0),ToReal(-168),kmadd(KRANC_GFOFFSET3D(u,-3,0,0),ToReal(-32),kmadd(KRANC_GFOFFSET3D(u,4,0,0),ToReal(-3),kmadd(KRANC_GFOFFSET3D(u,-4,0,0),ToReal(3),kmadd(KRANC_GFOFFSET3D(u,3,0,0),ToReal(32),kmadd(KRANC_GFOFFSET3D(u,-2,0,0),ToReal(168),kmul(KRANC_GFOFFSET3D(u,1,0,0),ToReal(672)))))))))))
+#else
+# define PDstandardNthfdOrder81(u) (PDstandardNthfdOrder81_impl(u,p1o840dx,cdj,cdk))
+static CCTK_REAL_VEC PDstandardNthfdOrder81_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o840dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDstandardNthfdOrder81_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o840dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o840dx,kmadd(KRANC_GFOFFSET3D(u,-1,0,0),ToReal(-672),kmadd(KRANC_GFOFFSET3D(u,2,0,0),ToReal(-168),kmadd(KRANC_GFOFFSET3D(u,-3,0,0),ToReal(-32),kmadd(KRANC_GFOFFSET3D(u,4,0,0),ToReal(-3),kmadd(KRANC_GFOFFSET3D(u,-4,0,0),ToReal(3),kmadd(KRANC_GFOFFSET3D(u,3,0,0),ToReal(32),kmadd(KRANC_GFOFFSET3D(u,-2,0,0),ToReal(168),kmul(KRANC_GFOFFSET3D(u,1,0,0),ToReal(672))))))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDstandardNthfdOrder82(u) (kmul(p1o840dy,kmadd(KRANC_GFOFFSET3D(u,0,-1,0),ToReal(-672),kmadd(KRANC_GFOFFSET3D(u,0,2,0),ToReal(-168),kmadd(KRANC_GFOFFSET3D(u,0,-3,0),ToReal(-32),kmadd(KRANC_GFOFFSET3D(u,0,4,0),ToReal(-3),kmadd(KRANC_GFOFFSET3D(u,0,-4,0),ToReal(3),kmadd(KRANC_GFOFFSET3D(u,0,3,0),ToReal(32),kmadd(KRANC_GFOFFSET3D(u,0,-2,0),ToReal(168),kmul(KRANC_GFOFFSET3D(u,0,1,0),ToReal(672)))))))))))
+#else
+# define PDstandardNthfdOrder82(u) (PDstandardNthfdOrder82_impl(u,p1o840dy,cdj,cdk))
+static CCTK_REAL_VEC PDstandardNthfdOrder82_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o840dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDstandardNthfdOrder82_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o840dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o840dy,kmadd(KRANC_GFOFFSET3D(u,0,-1,0),ToReal(-672),kmadd(KRANC_GFOFFSET3D(u,0,2,0),ToReal(-168),kmadd(KRANC_GFOFFSET3D(u,0,-3,0),ToReal(-32),kmadd(KRANC_GFOFFSET3D(u,0,4,0),ToReal(-3),kmadd(KRANC_GFOFFSET3D(u,0,-4,0),ToReal(3),kmadd(KRANC_GFOFFSET3D(u,0,3,0),ToReal(32),kmadd(KRANC_GFOFFSET3D(u,0,-2,0),ToReal(168),kmul(KRANC_GFOFFSET3D(u,0,1,0),ToReal(672))))))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDstandardNthfdOrder83(u) (kmul(p1o840dz,kmadd(KRANC_GFOFFSET3D(u,0,0,-1),ToReal(-672),kmadd(KRANC_GFOFFSET3D(u,0,0,2),ToReal(-168),kmadd(KRANC_GFOFFSET3D(u,0,0,-3),ToReal(-32),kmadd(KRANC_GFOFFSET3D(u,0,0,4),ToReal(-3),kmadd(KRANC_GFOFFSET3D(u,0,0,-4),ToReal(3),kmadd(KRANC_GFOFFSET3D(u,0,0,3),ToReal(32),kmadd(KRANC_GFOFFSET3D(u,0,0,-2),ToReal(168),kmul(KRANC_GFOFFSET3D(u,0,0,1),ToReal(672)))))))))))
+#else
+# define PDstandardNthfdOrder83(u) (PDstandardNthfdOrder83_impl(u,p1o840dz,cdj,cdk))
+static CCTK_REAL_VEC PDstandardNthfdOrder83_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o840dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDstandardNthfdOrder83_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o840dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o840dz,kmadd(KRANC_GFOFFSET3D(u,0,0,-1),ToReal(-672),kmadd(KRANC_GFOFFSET3D(u,0,0,2),ToReal(-168),kmadd(KRANC_GFOFFSET3D(u,0,0,-3),ToReal(-32),kmadd(KRANC_GFOFFSET3D(u,0,0,4),ToReal(-3),kmadd(KRANC_GFOFFSET3D(u,0,0,-4),ToReal(3),kmadd(KRANC_GFOFFSET3D(u,0,0,3),ToReal(32),kmadd(KRANC_GFOFFSET3D(u,0,0,-2),ToReal(168),kmul(KRANC_GFOFFSET3D(u,0,0,1),ToReal(672))))))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDstandardNthfdOrder211(u) (kmul(p1odx2,kadd(KRANC_GFOFFSET3D(u,-1,0,0),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-2),KRANC_GFOFFSET3D(u,1,0,0)))))
+#else
+# define PDstandardNthfdOrder211(u) (PDstandardNthfdOrder211_impl(u,p1odx2,cdj,cdk))
+static CCTK_REAL_VEC PDstandardNthfdOrder211_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1odx2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDstandardNthfdOrder211_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1odx2, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1odx2,kadd(KRANC_GFOFFSET3D(u,-1,0,0),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-2),KRANC_GFOFFSET3D(u,1,0,0))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDstandardNthfdOrder222(u) (kmul(p1ody2,kadd(KRANC_GFOFFSET3D(u,0,-1,0),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-2),KRANC_GFOFFSET3D(u,0,1,0)))))
+#else
+# define PDstandardNthfdOrder222(u) (PDstandardNthfdOrder222_impl(u,p1ody2,cdj,cdk))
+static CCTK_REAL_VEC PDstandardNthfdOrder222_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1ody2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDstandardNthfdOrder222_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1ody2, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1ody2,kadd(KRANC_GFOFFSET3D(u,0,-1,0),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-2),KRANC_GFOFFSET3D(u,0,1,0))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDstandardNthfdOrder233(u) (kmul(p1odz2,kadd(KRANC_GFOFFSET3D(u,0,0,-1),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-2),KRANC_GFOFFSET3D(u,0,0,1)))))
+#else
+# define PDstandardNthfdOrder233(u) (PDstandardNthfdOrder233_impl(u,p1odz2,cdj,cdk))
+static CCTK_REAL_VEC PDstandardNthfdOrder233_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1odz2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDstandardNthfdOrder233_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1odz2, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1odz2,kadd(KRANC_GFOFFSET3D(u,0,0,-1),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-2),KRANC_GFOFFSET3D(u,0,0,1))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDstandardNthfdOrder411(u) (kmul(pm1o12dx2,kadd(KRANC_GFOFFSET3D(u,-2,0,0),kadd(KRANC_GFOFFSET3D(u,2,0,0),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,0),KRANC_GFOFFSET3D(u,1,0,0)),ToReal(-16),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(30)))))))
+#else
+# define PDstandardNthfdOrder411(u) (PDstandardNthfdOrder411_impl(u,pm1o12dx2,cdj,cdk))
+static CCTK_REAL_VEC PDstandardNthfdOrder411_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o12dx2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDstandardNthfdOrder411_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o12dx2, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(pm1o12dx2,kadd(KRANC_GFOFFSET3D(u,-2,0,0),kadd(KRANC_GFOFFSET3D(u,2,0,0),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,0),KRANC_GFOFFSET3D(u,1,0,0)),ToReal(-16),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(30))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDstandardNthfdOrder422(u) (kmul(pm1o12dy2,kadd(KRANC_GFOFFSET3D(u,0,-2,0),kadd(KRANC_GFOFFSET3D(u,0,2,0),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,0),KRANC_GFOFFSET3D(u,0,1,0)),ToReal(-16),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(30)))))))
+#else
+# define PDstandardNthfdOrder422(u) (PDstandardNthfdOrder422_impl(u,pm1o12dy2,cdj,cdk))
+static CCTK_REAL_VEC PDstandardNthfdOrder422_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o12dy2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDstandardNthfdOrder422_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o12dy2, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(pm1o12dy2,kadd(KRANC_GFOFFSET3D(u,0,-2,0),kadd(KRANC_GFOFFSET3D(u,0,2,0),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,0),KRANC_GFOFFSET3D(u,0,1,0)),ToReal(-16),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(30))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDstandardNthfdOrder433(u) (kmul(pm1o12dz2,kadd(KRANC_GFOFFSET3D(u,0,0,-2),kadd(KRANC_GFOFFSET3D(u,0,0,2),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-1),KRANC_GFOFFSET3D(u,0,0,1)),ToReal(-16),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(30)))))))
+#else
+# define PDstandardNthfdOrder433(u) (PDstandardNthfdOrder433_impl(u,pm1o12dz2,cdj,cdk))
+static CCTK_REAL_VEC PDstandardNthfdOrder433_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o12dz2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDstandardNthfdOrder433_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o12dz2, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(pm1o12dz2,kadd(KRANC_GFOFFSET3D(u,0,0,-2),kadd(KRANC_GFOFFSET3D(u,0,0,2),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-1),KRANC_GFOFFSET3D(u,0,0,1)),ToReal(-16),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(30))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDstandardNthfdOrder611(u) (kmul(p1o180dx2,kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-490),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,0),KRANC_GFOFFSET3D(u,2,0,0)),ToReal(-27),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,0,0),KRANC_GFOFFSET3D(u,3,0,0)),ToReal(2),kmul(kadd(KRANC_GFOFFSET3D(u,-1,0,0),KRANC_GFOFFSET3D(u,1,0,0)),ToReal(270)))))))
+#else
+# define PDstandardNthfdOrder611(u) (PDstandardNthfdOrder611_impl(u,p1o180dx2,cdj,cdk))
+static CCTK_REAL_VEC PDstandardNthfdOrder611_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o180dx2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDstandardNthfdOrder611_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o180dx2, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o180dx2,kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-490),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,0),KRANC_GFOFFSET3D(u,2,0,0)),ToReal(-27),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,0,0),KRANC_GFOFFSET3D(u,3,0,0)),ToReal(2),kmul(kadd(KRANC_GFOFFSET3D(u,-1,0,0),KRANC_GFOFFSET3D(u,1,0,0)),ToReal(270))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDstandardNthfdOrder622(u) (kmul(p1o180dy2,kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-490),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,0),KRANC_GFOFFSET3D(u,0,2,0)),ToReal(-27),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-3,0),KRANC_GFOFFSET3D(u,0,3,0)),ToReal(2),kmul(kadd(KRANC_GFOFFSET3D(u,0,-1,0),KRANC_GFOFFSET3D(u,0,1,0)),ToReal(270)))))))
+#else
+# define PDstandardNthfdOrder622(u) (PDstandardNthfdOrder622_impl(u,p1o180dy2,cdj,cdk))
+static CCTK_REAL_VEC PDstandardNthfdOrder622_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o180dy2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDstandardNthfdOrder622_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o180dy2, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o180dy2,kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-490),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,0),KRANC_GFOFFSET3D(u,0,2,0)),ToReal(-27),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-3,0),KRANC_GFOFFSET3D(u,0,3,0)),ToReal(2),kmul(kadd(KRANC_GFOFFSET3D(u,0,-1,0),KRANC_GFOFFSET3D(u,0,1,0)),ToReal(270))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDstandardNthfdOrder633(u) (kmul(p1o180dz2,kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-490),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-2),KRANC_GFOFFSET3D(u,0,0,2)),ToReal(-27),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-3),KRANC_GFOFFSET3D(u,0,0,3)),ToReal(2),kmul(kadd(KRANC_GFOFFSET3D(u,0,0,-1),KRANC_GFOFFSET3D(u,0,0,1)),ToReal(270)))))))
+#else
+# define PDstandardNthfdOrder633(u) (PDstandardNthfdOrder633_impl(u,p1o180dz2,cdj,cdk))
+static CCTK_REAL_VEC PDstandardNthfdOrder633_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o180dz2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDstandardNthfdOrder633_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o180dz2, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o180dz2,kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-490),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-2),KRANC_GFOFFSET3D(u,0,0,2)),ToReal(-27),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-3),KRANC_GFOFFSET3D(u,0,0,3)),ToReal(2),kmul(kadd(KRANC_GFOFFSET3D(u,0,0,-1),KRANC_GFOFFSET3D(u,0,0,1)),ToReal(270))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDstandardNthfdOrder811(u) (kmul(p1o5040dx2,kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-14350),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,0),KRANC_GFOFFSET3D(u,2,0,0)),ToReal(-1008),kmadd(kadd(KRANC_GFOFFSET3D(u,-4,0,0),KRANC_GFOFFSET3D(u,4,0,0)),ToReal(-9),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,0,0),KRANC_GFOFFSET3D(u,3,0,0)),ToReal(128),kmul(kadd(KRANC_GFOFFSET3D(u,-1,0,0),KRANC_GFOFFSET3D(u,1,0,0)),ToReal(8064))))))))
+#else
+# define PDstandardNthfdOrder811(u) (PDstandardNthfdOrder811_impl(u,p1o5040dx2,cdj,cdk))
+static CCTK_REAL_VEC PDstandardNthfdOrder811_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o5040dx2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDstandardNthfdOrder811_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o5040dx2, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o5040dx2,kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-14350),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,0),KRANC_GFOFFSET3D(u,2,0,0)),ToReal(-1008),kmadd(kadd(KRANC_GFOFFSET3D(u,-4,0,0),KRANC_GFOFFSET3D(u,4,0,0)),ToReal(-9),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,0,0),KRANC_GFOFFSET3D(u,3,0,0)),ToReal(128),kmul(kadd(KRANC_GFOFFSET3D(u,-1,0,0),KRANC_GFOFFSET3D(u,1,0,0)),ToReal(8064)))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDstandardNthfdOrder822(u) (kmul(p1o5040dy2,kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-14350),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,0),KRANC_GFOFFSET3D(u,0,2,0)),ToReal(-1008),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-4,0),KRANC_GFOFFSET3D(u,0,4,0)),ToReal(-9),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-3,0),KRANC_GFOFFSET3D(u,0,3,0)),ToReal(128),kmul(kadd(KRANC_GFOFFSET3D(u,0,-1,0),KRANC_GFOFFSET3D(u,0,1,0)),ToReal(8064))))))))
+#else
+# define PDstandardNthfdOrder822(u) (PDstandardNthfdOrder822_impl(u,p1o5040dy2,cdj,cdk))
+static CCTK_REAL_VEC PDstandardNthfdOrder822_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o5040dy2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDstandardNthfdOrder822_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o5040dy2, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o5040dy2,kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-14350),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,0),KRANC_GFOFFSET3D(u,0,2,0)),ToReal(-1008),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-4,0),KRANC_GFOFFSET3D(u,0,4,0)),ToReal(-9),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-3,0),KRANC_GFOFFSET3D(u,0,3,0)),ToReal(128),kmul(kadd(KRANC_GFOFFSET3D(u,0,-1,0),KRANC_GFOFFSET3D(u,0,1,0)),ToReal(8064)))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDstandardNthfdOrder833(u) (kmul(p1o5040dz2,kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-14350),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-2),KRANC_GFOFFSET3D(u,0,0,2)),ToReal(-1008),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-4),KRANC_GFOFFSET3D(u,0,0,4)),ToReal(-9),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-3),KRANC_GFOFFSET3D(u,0,0,3)),ToReal(128),kmul(kadd(KRANC_GFOFFSET3D(u,0,0,-1),KRANC_GFOFFSET3D(u,0,0,1)),ToReal(8064))))))))
+#else
+# define PDstandardNthfdOrder833(u) (PDstandardNthfdOrder833_impl(u,p1o5040dz2,cdj,cdk))
+static CCTK_REAL_VEC PDstandardNthfdOrder833_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o5040dz2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDstandardNthfdOrder833_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o5040dz2, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o5040dz2,kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-14350),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-2),KRANC_GFOFFSET3D(u,0,0,2)),ToReal(-1008),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-4),KRANC_GFOFFSET3D(u,0,0,4)),ToReal(-9),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-3),KRANC_GFOFFSET3D(u,0,0,3)),ToReal(128),kmul(kadd(KRANC_GFOFFSET3D(u,0,0,-1),KRANC_GFOFFSET3D(u,0,0,1)),ToReal(8064)))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDstandardNthfdOrder212(u) (kmul(p1o4dxdy,kadd(KRANC_GFOFFSET3D(u,-1,-1,0),ksub(KRANC_GFOFFSET3D(u,1,1,0),kadd(KRANC_GFOFFSET3D(u,1,-1,0),KRANC_GFOFFSET3D(u,-1,1,0))))))
+#else
+# define PDstandardNthfdOrder212(u) (PDstandardNthfdOrder212_impl(u,p1o4dxdy,cdj,cdk))
+static CCTK_REAL_VEC PDstandardNthfdOrder212_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o4dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDstandardNthfdOrder212_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o4dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o4dxdy,kadd(KRANC_GFOFFSET3D(u,-1,-1,0),ksub(KRANC_GFOFFSET3D(u,1,1,0),kadd(KRANC_GFOFFSET3D(u,1,-1,0),KRANC_GFOFFSET3D(u,-1,1,0)))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDstandardNthfdOrder213(u) (kmul(p1o4dxdz,kadd(KRANC_GFOFFSET3D(u,-1,0,-1),ksub(KRANC_GFOFFSET3D(u,1,0,1),kadd(KRANC_GFOFFSET3D(u,1,0,-1),KRANC_GFOFFSET3D(u,-1,0,1))))))
+#else
+# define PDstandardNthfdOrder213(u) (PDstandardNthfdOrder213_impl(u,p1o4dxdz,cdj,cdk))
+static CCTK_REAL_VEC PDstandardNthfdOrder213_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o4dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDstandardNthfdOrder213_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o4dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o4dxdz,kadd(KRANC_GFOFFSET3D(u,-1,0,-1),ksub(KRANC_GFOFFSET3D(u,1,0,1),kadd(KRANC_GFOFFSET3D(u,1,0,-1),KRANC_GFOFFSET3D(u,-1,0,1)))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDstandardNthfdOrder221(u) (kmul(p1o4dxdy,kadd(KRANC_GFOFFSET3D(u,-1,-1,0),ksub(KRANC_GFOFFSET3D(u,1,1,0),kadd(KRANC_GFOFFSET3D(u,1,-1,0),KRANC_GFOFFSET3D(u,-1,1,0))))))
+#else
+# define PDstandardNthfdOrder221(u) (PDstandardNthfdOrder221_impl(u,p1o4dxdy,cdj,cdk))
+static CCTK_REAL_VEC PDstandardNthfdOrder221_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o4dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDstandardNthfdOrder221_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o4dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o4dxdy,kadd(KRANC_GFOFFSET3D(u,-1,-1,0),ksub(KRANC_GFOFFSET3D(u,1,1,0),kadd(KRANC_GFOFFSET3D(u,1,-1,0),KRANC_GFOFFSET3D(u,-1,1,0)))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDstandardNthfdOrder223(u) (kmul(p1o4dydz,kadd(KRANC_GFOFFSET3D(u,0,-1,-1),ksub(KRANC_GFOFFSET3D(u,0,1,1),kadd(KRANC_GFOFFSET3D(u,0,1,-1),KRANC_GFOFFSET3D(u,0,-1,1))))))
+#else
+# define PDstandardNthfdOrder223(u) (PDstandardNthfdOrder223_impl(u,p1o4dydz,cdj,cdk))
+static CCTK_REAL_VEC PDstandardNthfdOrder223_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o4dydz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDstandardNthfdOrder223_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o4dydz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o4dydz,kadd(KRANC_GFOFFSET3D(u,0,-1,-1),ksub(KRANC_GFOFFSET3D(u,0,1,1),kadd(KRANC_GFOFFSET3D(u,0,1,-1),KRANC_GFOFFSET3D(u,0,-1,1)))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDstandardNthfdOrder231(u) (kmul(p1o4dxdz,kadd(KRANC_GFOFFSET3D(u,-1,0,-1),ksub(KRANC_GFOFFSET3D(u,1,0,1),kadd(KRANC_GFOFFSET3D(u,1,0,-1),KRANC_GFOFFSET3D(u,-1,0,1))))))
+#else
+# define PDstandardNthfdOrder231(u) (PDstandardNthfdOrder231_impl(u,p1o4dxdz,cdj,cdk))
+static CCTK_REAL_VEC PDstandardNthfdOrder231_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o4dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDstandardNthfdOrder231_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o4dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o4dxdz,kadd(KRANC_GFOFFSET3D(u,-1,0,-1),ksub(KRANC_GFOFFSET3D(u,1,0,1),kadd(KRANC_GFOFFSET3D(u,1,0,-1),KRANC_GFOFFSET3D(u,-1,0,1)))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDstandardNthfdOrder232(u) (kmul(p1o4dydz,kadd(KRANC_GFOFFSET3D(u,0,-1,-1),ksub(KRANC_GFOFFSET3D(u,0,1,1),kadd(KRANC_GFOFFSET3D(u,0,1,-1),KRANC_GFOFFSET3D(u,0,-1,1))))))
+#else
+# define PDstandardNthfdOrder232(u) (PDstandardNthfdOrder232_impl(u,p1o4dydz,cdj,cdk))
+static CCTK_REAL_VEC PDstandardNthfdOrder232_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o4dydz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDstandardNthfdOrder232_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o4dydz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o4dydz,kadd(KRANC_GFOFFSET3D(u,0,-1,-1),ksub(KRANC_GFOFFSET3D(u,0,1,1),kadd(KRANC_GFOFFSET3D(u,0,1,-1),KRANC_GFOFFSET3D(u,0,-1,1)))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDstandardNthfdOrder412(u) (kmul(p1o144dxdy,kadd(KRANC_GFOFFSET3D(u,-2,-2,0),kadd(KRANC_GFOFFSET3D(u,2,2,0),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,1,0),KRANC_GFOFFSET3D(u,1,-1,0)),ToReal(-64),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,-2,0),kadd(KRANC_GFOFFSET3D(u,1,2,0),kadd(KRANC_GFOFFSET3D(u,-2,-1,0),KRANC_GFOFFSET3D(u,2,1,0)))),ToReal(-8),ksub(ksub(kmadd(kadd(KRANC_GFOFFSET3D(u,-1,2,0),kadd(KRANC_GFOFFSET3D(u,1,-2,0),kadd(KRANC_GFOFFSET3D(u,-2,1,0),KRANC_GFOFFSET3D(u,2,-1,0)))),ToReal(8),kmul(kadd(KRANC_GFOFFSET3D(u,-1,-1,0),KRANC_GFOFFSET3D(u,1,1,0)),ToReal(64))),KRANC_GFOFFSET3D(u,2,-2,0)),KRANC_GFOFFSET3D(u,-2,2,0))))))))
+#else
+# define PDstandardNthfdOrder412(u) (PDstandardNthfdOrder412_impl(u,p1o144dxdy,cdj,cdk))
+static CCTK_REAL_VEC PDstandardNthfdOrder412_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o144dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDstandardNthfdOrder412_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o144dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o144dxdy,kadd(KRANC_GFOFFSET3D(u,-2,-2,0),kadd(KRANC_GFOFFSET3D(u,2,2,0),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,1,0),KRANC_GFOFFSET3D(u,1,-1,0)),ToReal(-64),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,-2,0),kadd(KRANC_GFOFFSET3D(u,1,2,0),kadd(KRANC_GFOFFSET3D(u,-2,-1,0),KRANC_GFOFFSET3D(u,2,1,0)))),ToReal(-8),ksub(ksub(kmadd(kadd(KRANC_GFOFFSET3D(u,-1,2,0),kadd(KRANC_GFOFFSET3D(u,1,-2,0),kadd(KRANC_GFOFFSET3D(u,-2,1,0),KRANC_GFOFFSET3D(u,2,-1,0)))),ToReal(8),kmul(kadd(KRANC_GFOFFSET3D(u,-1,-1,0),KRANC_GFOFFSET3D(u,1,1,0)),ToReal(64))),KRANC_GFOFFSET3D(u,2,-2,0)),KRANC_GFOFFSET3D(u,-2,2,0)))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDstandardNthfdOrder413(u) (kmul(p1o144dxdz,kadd(KRANC_GFOFFSET3D(u,-2,0,-2),kadd(KRANC_GFOFFSET3D(u,2,0,2),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,1),KRANC_GFOFFSET3D(u,1,0,-1)),ToReal(-64),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,-2),kadd(KRANC_GFOFFSET3D(u,1,0,2),kadd(KRANC_GFOFFSET3D(u,-2,0,-1),KRANC_GFOFFSET3D(u,2,0,1)))),ToReal(-8),ksub(ksub(kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,2),kadd(KRANC_GFOFFSET3D(u,1,0,-2),kadd(KRANC_GFOFFSET3D(u,-2,0,1),KRANC_GFOFFSET3D(u,2,0,-1)))),ToReal(8),kmul(kadd(KRANC_GFOFFSET3D(u,-1,0,-1),KRANC_GFOFFSET3D(u,1,0,1)),ToReal(64))),KRANC_GFOFFSET3D(u,2,0,-2)),KRANC_GFOFFSET3D(u,-2,0,2))))))))
+#else
+# define PDstandardNthfdOrder413(u) (PDstandardNthfdOrder413_impl(u,p1o144dxdz,cdj,cdk))
+static CCTK_REAL_VEC PDstandardNthfdOrder413_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o144dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDstandardNthfdOrder413_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o144dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o144dxdz,kadd(KRANC_GFOFFSET3D(u,-2,0,-2),kadd(KRANC_GFOFFSET3D(u,2,0,2),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,1),KRANC_GFOFFSET3D(u,1,0,-1)),ToReal(-64),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,-2),kadd(KRANC_GFOFFSET3D(u,1,0,2),kadd(KRANC_GFOFFSET3D(u,-2,0,-1),KRANC_GFOFFSET3D(u,2,0,1)))),ToReal(-8),ksub(ksub(kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,2),kadd(KRANC_GFOFFSET3D(u,1,0,-2),kadd(KRANC_GFOFFSET3D(u,-2,0,1),KRANC_GFOFFSET3D(u,2,0,-1)))),ToReal(8),kmul(kadd(KRANC_GFOFFSET3D(u,-1,0,-1),KRANC_GFOFFSET3D(u,1,0,1)),ToReal(64))),KRANC_GFOFFSET3D(u,2,0,-2)),KRANC_GFOFFSET3D(u,-2,0,2)))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDstandardNthfdOrder421(u) (kmul(p1o144dxdy,kadd(KRANC_GFOFFSET3D(u,-2,-2,0),kadd(KRANC_GFOFFSET3D(u,2,2,0),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,1,0),KRANC_GFOFFSET3D(u,1,-1,0)),ToReal(-64),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,-2,0),kadd(KRANC_GFOFFSET3D(u,1,2,0),kadd(KRANC_GFOFFSET3D(u,-2,-1,0),KRANC_GFOFFSET3D(u,2,1,0)))),ToReal(-8),ksub(ksub(kmadd(kadd(KRANC_GFOFFSET3D(u,-1,2,0),kadd(KRANC_GFOFFSET3D(u,1,-2,0),kadd(KRANC_GFOFFSET3D(u,-2,1,0),KRANC_GFOFFSET3D(u,2,-1,0)))),ToReal(8),kmul(kadd(KRANC_GFOFFSET3D(u,-1,-1,0),KRANC_GFOFFSET3D(u,1,1,0)),ToReal(64))),KRANC_GFOFFSET3D(u,2,-2,0)),KRANC_GFOFFSET3D(u,-2,2,0))))))))
+#else
+# define PDstandardNthfdOrder421(u) (PDstandardNthfdOrder421_impl(u,p1o144dxdy,cdj,cdk))
+static CCTK_REAL_VEC PDstandardNthfdOrder421_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o144dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDstandardNthfdOrder421_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o144dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o144dxdy,kadd(KRANC_GFOFFSET3D(u,-2,-2,0),kadd(KRANC_GFOFFSET3D(u,2,2,0),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,1,0),KRANC_GFOFFSET3D(u,1,-1,0)),ToReal(-64),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,-2,0),kadd(KRANC_GFOFFSET3D(u,1,2,0),kadd(KRANC_GFOFFSET3D(u,-2,-1,0),KRANC_GFOFFSET3D(u,2,1,0)))),ToReal(-8),ksub(ksub(kmadd(kadd(KRANC_GFOFFSET3D(u,-1,2,0),kadd(KRANC_GFOFFSET3D(u,1,-2,0),kadd(KRANC_GFOFFSET3D(u,-2,1,0),KRANC_GFOFFSET3D(u,2,-1,0)))),ToReal(8),kmul(kadd(KRANC_GFOFFSET3D(u,-1,-1,0),KRANC_GFOFFSET3D(u,1,1,0)),ToReal(64))),KRANC_GFOFFSET3D(u,2,-2,0)),KRANC_GFOFFSET3D(u,-2,2,0)))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDstandardNthfdOrder423(u) (kmul(p1o144dydz,kadd(KRANC_GFOFFSET3D(u,0,-2,-2),kadd(KRANC_GFOFFSET3D(u,0,2,2),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,1),KRANC_GFOFFSET3D(u,0,1,-1)),ToReal(-64),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,-2),kadd(KRANC_GFOFFSET3D(u,0,1,2),kadd(KRANC_GFOFFSET3D(u,0,-2,-1),KRANC_GFOFFSET3D(u,0,2,1)))),ToReal(-8),ksub(ksub(kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,2),kadd(KRANC_GFOFFSET3D(u,0,1,-2),kadd(KRANC_GFOFFSET3D(u,0,-2,1),KRANC_GFOFFSET3D(u,0,2,-1)))),ToReal(8),kmul(kadd(KRANC_GFOFFSET3D(u,0,-1,-1),KRANC_GFOFFSET3D(u,0,1,1)),ToReal(64))),KRANC_GFOFFSET3D(u,0,2,-2)),KRANC_GFOFFSET3D(u,0,-2,2))))))))
+#else
+# define PDstandardNthfdOrder423(u) (PDstandardNthfdOrder423_impl(u,p1o144dydz,cdj,cdk))
+static CCTK_REAL_VEC PDstandardNthfdOrder423_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o144dydz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDstandardNthfdOrder423_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o144dydz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o144dydz,kadd(KRANC_GFOFFSET3D(u,0,-2,-2),kadd(KRANC_GFOFFSET3D(u,0,2,2),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,1),KRANC_GFOFFSET3D(u,0,1,-1)),ToReal(-64),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,-2),kadd(KRANC_GFOFFSET3D(u,0,1,2),kadd(KRANC_GFOFFSET3D(u,0,-2,-1),KRANC_GFOFFSET3D(u,0,2,1)))),ToReal(-8),ksub(ksub(kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,2),kadd(KRANC_GFOFFSET3D(u,0,1,-2),kadd(KRANC_GFOFFSET3D(u,0,-2,1),KRANC_GFOFFSET3D(u,0,2,-1)))),ToReal(8),kmul(kadd(KRANC_GFOFFSET3D(u,0,-1,-1),KRANC_GFOFFSET3D(u,0,1,1)),ToReal(64))),KRANC_GFOFFSET3D(u,0,2,-2)),KRANC_GFOFFSET3D(u,0,-2,2)))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDstandardNthfdOrder431(u) (kmul(p1o144dxdz,kadd(KRANC_GFOFFSET3D(u,-2,0,-2),kadd(KRANC_GFOFFSET3D(u,2,0,2),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,1),KRANC_GFOFFSET3D(u,1,0,-1)),ToReal(-64),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,-2),kadd(KRANC_GFOFFSET3D(u,1,0,2),kadd(KRANC_GFOFFSET3D(u,-2,0,-1),KRANC_GFOFFSET3D(u,2,0,1)))),ToReal(-8),ksub(ksub(kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,2),kadd(KRANC_GFOFFSET3D(u,1,0,-2),kadd(KRANC_GFOFFSET3D(u,-2,0,1),KRANC_GFOFFSET3D(u,2,0,-1)))),ToReal(8),kmul(kadd(KRANC_GFOFFSET3D(u,-1,0,-1),KRANC_GFOFFSET3D(u,1,0,1)),ToReal(64))),KRANC_GFOFFSET3D(u,2,0,-2)),KRANC_GFOFFSET3D(u,-2,0,2))))))))
+#else
+# define PDstandardNthfdOrder431(u) (PDstandardNthfdOrder431_impl(u,p1o144dxdz,cdj,cdk))
+static CCTK_REAL_VEC PDstandardNthfdOrder431_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o144dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDstandardNthfdOrder431_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o144dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o144dxdz,kadd(KRANC_GFOFFSET3D(u,-2,0,-2),kadd(KRANC_GFOFFSET3D(u,2,0,2),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,1),KRANC_GFOFFSET3D(u,1,0,-1)),ToReal(-64),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,-2),kadd(KRANC_GFOFFSET3D(u,1,0,2),kadd(KRANC_GFOFFSET3D(u,-2,0,-1),KRANC_GFOFFSET3D(u,2,0,1)))),ToReal(-8),ksub(ksub(kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,2),kadd(KRANC_GFOFFSET3D(u,1,0,-2),kadd(KRANC_GFOFFSET3D(u,-2,0,1),KRANC_GFOFFSET3D(u,2,0,-1)))),ToReal(8),kmul(kadd(KRANC_GFOFFSET3D(u,-1,0,-1),KRANC_GFOFFSET3D(u,1,0,1)),ToReal(64))),KRANC_GFOFFSET3D(u,2,0,-2)),KRANC_GFOFFSET3D(u,-2,0,2)))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDstandardNthfdOrder432(u) (kmul(p1o144dydz,kadd(KRANC_GFOFFSET3D(u,0,-2,-2),kadd(KRANC_GFOFFSET3D(u,0,2,2),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,1),KRANC_GFOFFSET3D(u,0,1,-1)),ToReal(-64),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,-2),kadd(KRANC_GFOFFSET3D(u,0,1,2),kadd(KRANC_GFOFFSET3D(u,0,-2,-1),KRANC_GFOFFSET3D(u,0,2,1)))),ToReal(-8),ksub(ksub(kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,2),kadd(KRANC_GFOFFSET3D(u,0,1,-2),kadd(KRANC_GFOFFSET3D(u,0,-2,1),KRANC_GFOFFSET3D(u,0,2,-1)))),ToReal(8),kmul(kadd(KRANC_GFOFFSET3D(u,0,-1,-1),KRANC_GFOFFSET3D(u,0,1,1)),ToReal(64))),KRANC_GFOFFSET3D(u,0,2,-2)),KRANC_GFOFFSET3D(u,0,-2,2))))))))
+#else
+# define PDstandardNthfdOrder432(u) (PDstandardNthfdOrder432_impl(u,p1o144dydz,cdj,cdk))
+static CCTK_REAL_VEC PDstandardNthfdOrder432_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o144dydz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDstandardNthfdOrder432_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o144dydz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o144dydz,kadd(KRANC_GFOFFSET3D(u,0,-2,-2),kadd(KRANC_GFOFFSET3D(u,0,2,2),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,1),KRANC_GFOFFSET3D(u,0,1,-1)),ToReal(-64),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,-2),kadd(KRANC_GFOFFSET3D(u,0,1,2),kadd(KRANC_GFOFFSET3D(u,0,-2,-1),KRANC_GFOFFSET3D(u,0,2,1)))),ToReal(-8),ksub(ksub(kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,2),kadd(KRANC_GFOFFSET3D(u,0,1,-2),kadd(KRANC_GFOFFSET3D(u,0,-2,1),KRANC_GFOFFSET3D(u,0,2,-1)))),ToReal(8),kmul(kadd(KRANC_GFOFFSET3D(u,0,-1,-1),KRANC_GFOFFSET3D(u,0,1,1)),ToReal(64))),KRANC_GFOFFSET3D(u,0,2,-2)),KRANC_GFOFFSET3D(u,0,-2,2)))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDstandardNthfdOrder612(u) (kmul(p1o3600dxdy,kadd(KRANC_GFOFFSET3D(u,-3,-3,0),kadd(KRANC_GFOFFSET3D(u,3,3,0),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,1,0),KRANC_GFOFFSET3D(u,1,-1,0)),ToReal(-2025),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,-2,0),kadd(KRANC_GFOFFSET3D(u,1,2,0),kadd(KRANC_GFOFFSET3D(u,-2,-1,0),KRANC_GFOFFSET3D(u,2,1,0)))),ToReal(-405),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,2,0),KRANC_GFOFFSET3D(u,2,-2,0)),ToReal(-81),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,3,0),kadd(KRANC_GFOFFSET3D(u,1,-3,0),kadd(KRANC_GFOFFSET3D(u,-3,1,0),KRANC_GFOFFSET3D(u,3,-1,0)))),ToReal(-45),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,-3,0),kadd(KRANC_GFOFFSET3D(u,2,3,0),kadd(KRANC_GFOFFSET3D(u,-3,-2,0),KRANC_GFOFFSET3D(u,3,2,0)))),ToReal(-9),ksub(ksub(kmadd(kadd(KRANC_GFOFFSET3D(u,-2,3,0),kadd(KRANC_GFOFFSET3D(u,2,-3,0),kadd(KRANC_GFOFFSET3D(u,-3,2,0),KRANC_GFOFFSET3D(u,3,-2,0)))),ToReal(9),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,-3,0),kadd(KRANC_GFOFFSET3D(u,1,3,0),kadd(KRANC_GFOFFSET3D(u,-3,-1,0),KRANC_GFOFFSET3D(u,3,1,0)))),ToReal(45),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,-2,0),KRANC_GFOFFSET3D(u,2,2,0)),ToReal(81),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,2,0),kadd(KRANC_GFOFFSET3D(u,1,-2,0),kadd(KRANC_GFOFFSET3D(u,-2,1,0),KRANC_GFOFFSET3D(u,2,-1,0)))),ToReal(405),kmul(kadd(KRANC_GFOFFSET3D(u,-1,-1,0),KRANC_GFOFFSET3D(u,1,1,0)),ToReal(2025)))))),KRANC_GFOFFSET3D(u,3,-3,0)),KRANC_GFOFFSET3D(u,-3,3,0)))))))))))
+#else
+# define PDstandardNthfdOrder612(u) (PDstandardNthfdOrder612_impl(u,p1o3600dxdy,cdj,cdk))
+static CCTK_REAL_VEC PDstandardNthfdOrder612_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o3600dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDstandardNthfdOrder612_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o3600dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o3600dxdy,kadd(KRANC_GFOFFSET3D(u,-3,-3,0),kadd(KRANC_GFOFFSET3D(u,3,3,0),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,1,0),KRANC_GFOFFSET3D(u,1,-1,0)),ToReal(-2025),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,-2,0),kadd(KRANC_GFOFFSET3D(u,1,2,0),kadd(KRANC_GFOFFSET3D(u,-2,-1,0),KRANC_GFOFFSET3D(u,2,1,0)))),ToReal(-405),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,2,0),KRANC_GFOFFSET3D(u,2,-2,0)),ToReal(-81),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,3,0),kadd(KRANC_GFOFFSET3D(u,1,-3,0),kadd(KRANC_GFOFFSET3D(u,-3,1,0),KRANC_GFOFFSET3D(u,3,-1,0)))),ToReal(-45),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,-3,0),kadd(KRANC_GFOFFSET3D(u,2,3,0),kadd(KRANC_GFOFFSET3D(u,-3,-2,0),KRANC_GFOFFSET3D(u,3,2,0)))),ToReal(-9),ksub(ksub(kmadd(kadd(KRANC_GFOFFSET3D(u,-2,3,0),kadd(KRANC_GFOFFSET3D(u,2,-3,0),kadd(KRANC_GFOFFSET3D(u,-3,2,0),KRANC_GFOFFSET3D(u,3,-2,0)))),ToReal(9),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,-3,0),kadd(KRANC_GFOFFSET3D(u,1,3,0),kadd(KRANC_GFOFFSET3D(u,-3,-1,0),KRANC_GFOFFSET3D(u,3,1,0)))),ToReal(45),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,-2,0),KRANC_GFOFFSET3D(u,2,2,0)),ToReal(81),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,2,0),kadd(KRANC_GFOFFSET3D(u,1,-2,0),kadd(KRANC_GFOFFSET3D(u,-2,1,0),KRANC_GFOFFSET3D(u,2,-1,0)))),ToReal(405),kmul(kadd(KRANC_GFOFFSET3D(u,-1,-1,0),KRANC_GFOFFSET3D(u,1,1,0)),ToReal(2025)))))),KRANC_GFOFFSET3D(u,3,-3,0)),KRANC_GFOFFSET3D(u,-3,3,0))))))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDstandardNthfdOrder613(u) (kmul(p1o3600dxdz,kadd(KRANC_GFOFFSET3D(u,-3,0,-3),kadd(KRANC_GFOFFSET3D(u,3,0,3),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,1),KRANC_GFOFFSET3D(u,1,0,-1)),ToReal(-2025),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,-2),kadd(KRANC_GFOFFSET3D(u,1,0,2),kadd(KRANC_GFOFFSET3D(u,-2,0,-1),KRANC_GFOFFSET3D(u,2,0,1)))),ToReal(-405),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,2),KRANC_GFOFFSET3D(u,2,0,-2)),ToReal(-81),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,3),kadd(KRANC_GFOFFSET3D(u,1,0,-3),kadd(KRANC_GFOFFSET3D(u,-3,0,1),KRANC_GFOFFSET3D(u,3,0,-1)))),ToReal(-45),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,-3),kadd(KRANC_GFOFFSET3D(u,2,0,3),kadd(KRANC_GFOFFSET3D(u,-3,0,-2),KRANC_GFOFFSET3D(u,3,0,2)))),ToReal(-9),ksub(ksub(kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,3),kadd(KRANC_GFOFFSET3D(u,2,0,-3),kadd(KRANC_GFOFFSET3D(u,-3,0,2),KRANC_GFOFFSET3D(u,3,0,-2)))),ToReal(9),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,-3),kadd(KRANC_GFOFFSET3D(u,1,0,3),kadd(KRANC_GFOFFSET3D(u,-3,0,-1),KRANC_GFOFFSET3D(u,3,0,1)))),ToReal(45),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,-2),KRANC_GFOFFSET3D(u,2,0,2)),ToReal(81),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,2),kadd(KRANC_GFOFFSET3D(u,1,0,-2),kadd(KRANC_GFOFFSET3D(u,-2,0,1),KRANC_GFOFFSET3D(u,2,0,-1)))),ToReal(405),kmul(kadd(KRANC_GFOFFSET3D(u,-1,0,-1),KRANC_GFOFFSET3D(u,1,0,1)),ToReal(2025)))))),KRANC_GFOFFSET3D(u,3,0,-3)),KRANC_GFOFFSET3D(u,-3,0,3)))))))))))
+#else
+# define PDstandardNthfdOrder613(u) (PDstandardNthfdOrder613_impl(u,p1o3600dxdz,cdj,cdk))
+static CCTK_REAL_VEC PDstandardNthfdOrder613_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o3600dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDstandardNthfdOrder613_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o3600dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o3600dxdz,kadd(KRANC_GFOFFSET3D(u,-3,0,-3),kadd(KRANC_GFOFFSET3D(u,3,0,3),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,1),KRANC_GFOFFSET3D(u,1,0,-1)),ToReal(-2025),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,-2),kadd(KRANC_GFOFFSET3D(u,1,0,2),kadd(KRANC_GFOFFSET3D(u,-2,0,-1),KRANC_GFOFFSET3D(u,2,0,1)))),ToReal(-405),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,2),KRANC_GFOFFSET3D(u,2,0,-2)),ToReal(-81),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,3),kadd(KRANC_GFOFFSET3D(u,1,0,-3),kadd(KRANC_GFOFFSET3D(u,-3,0,1),KRANC_GFOFFSET3D(u,3,0,-1)))),ToReal(-45),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,-3),kadd(KRANC_GFOFFSET3D(u,2,0,3),kadd(KRANC_GFOFFSET3D(u,-3,0,-2),KRANC_GFOFFSET3D(u,3,0,2)))),ToReal(-9),ksub(ksub(kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,3),kadd(KRANC_GFOFFSET3D(u,2,0,-3),kadd(KRANC_GFOFFSET3D(u,-3,0,2),KRANC_GFOFFSET3D(u,3,0,-2)))),ToReal(9),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,-3),kadd(KRANC_GFOFFSET3D(u,1,0,3),kadd(KRANC_GFOFFSET3D(u,-3,0,-1),KRANC_GFOFFSET3D(u,3,0,1)))),ToReal(45),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,-2),KRANC_GFOFFSET3D(u,2,0,2)),ToReal(81),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,2),kadd(KRANC_GFOFFSET3D(u,1,0,-2),kadd(KRANC_GFOFFSET3D(u,-2,0,1),KRANC_GFOFFSET3D(u,2,0,-1)))),ToReal(405),kmul(kadd(KRANC_GFOFFSET3D(u,-1,0,-1),KRANC_GFOFFSET3D(u,1,0,1)),ToReal(2025)))))),KRANC_GFOFFSET3D(u,3,0,-3)),KRANC_GFOFFSET3D(u,-3,0,3))))))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDstandardNthfdOrder621(u) (kmul(p1o3600dxdy,kadd(KRANC_GFOFFSET3D(u,-3,-3,0),kadd(KRANC_GFOFFSET3D(u,3,3,0),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,1,0),KRANC_GFOFFSET3D(u,1,-1,0)),ToReal(-2025),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,-2,0),kadd(KRANC_GFOFFSET3D(u,1,2,0),kadd(KRANC_GFOFFSET3D(u,-2,-1,0),KRANC_GFOFFSET3D(u,2,1,0)))),ToReal(-405),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,2,0),KRANC_GFOFFSET3D(u,2,-2,0)),ToReal(-81),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,3,0),kadd(KRANC_GFOFFSET3D(u,1,-3,0),kadd(KRANC_GFOFFSET3D(u,-3,1,0),KRANC_GFOFFSET3D(u,3,-1,0)))),ToReal(-45),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,-3,0),kadd(KRANC_GFOFFSET3D(u,2,3,0),kadd(KRANC_GFOFFSET3D(u,-3,-2,0),KRANC_GFOFFSET3D(u,3,2,0)))),ToReal(-9),ksub(ksub(kmadd(kadd(KRANC_GFOFFSET3D(u,-2,3,0),kadd(KRANC_GFOFFSET3D(u,2,-3,0),kadd(KRANC_GFOFFSET3D(u,-3,2,0),KRANC_GFOFFSET3D(u,3,-2,0)))),ToReal(9),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,-3,0),kadd(KRANC_GFOFFSET3D(u,1,3,0),kadd(KRANC_GFOFFSET3D(u,-3,-1,0),KRANC_GFOFFSET3D(u,3,1,0)))),ToReal(45),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,-2,0),KRANC_GFOFFSET3D(u,2,2,0)),ToReal(81),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,2,0),kadd(KRANC_GFOFFSET3D(u,1,-2,0),kadd(KRANC_GFOFFSET3D(u,-2,1,0),KRANC_GFOFFSET3D(u,2,-1,0)))),ToReal(405),kmul(kadd(KRANC_GFOFFSET3D(u,-1,-1,0),KRANC_GFOFFSET3D(u,1,1,0)),ToReal(2025)))))),KRANC_GFOFFSET3D(u,3,-3,0)),KRANC_GFOFFSET3D(u,-3,3,0)))))))))))
+#else
+# define PDstandardNthfdOrder621(u) (PDstandardNthfdOrder621_impl(u,p1o3600dxdy,cdj,cdk))
+static CCTK_REAL_VEC PDstandardNthfdOrder621_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o3600dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDstandardNthfdOrder621_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o3600dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o3600dxdy,kadd(KRANC_GFOFFSET3D(u,-3,-3,0),kadd(KRANC_GFOFFSET3D(u,3,3,0),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,1,0),KRANC_GFOFFSET3D(u,1,-1,0)),ToReal(-2025),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,-2,0),kadd(KRANC_GFOFFSET3D(u,1,2,0),kadd(KRANC_GFOFFSET3D(u,-2,-1,0),KRANC_GFOFFSET3D(u,2,1,0)))),ToReal(-405),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,2,0),KRANC_GFOFFSET3D(u,2,-2,0)),ToReal(-81),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,3,0),kadd(KRANC_GFOFFSET3D(u,1,-3,0),kadd(KRANC_GFOFFSET3D(u,-3,1,0),KRANC_GFOFFSET3D(u,3,-1,0)))),ToReal(-45),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,-3,0),kadd(KRANC_GFOFFSET3D(u,2,3,0),kadd(KRANC_GFOFFSET3D(u,-3,-2,0),KRANC_GFOFFSET3D(u,3,2,0)))),ToReal(-9),ksub(ksub(kmadd(kadd(KRANC_GFOFFSET3D(u,-2,3,0),kadd(KRANC_GFOFFSET3D(u,2,-3,0),kadd(KRANC_GFOFFSET3D(u,-3,2,0),KRANC_GFOFFSET3D(u,3,-2,0)))),ToReal(9),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,-3,0),kadd(KRANC_GFOFFSET3D(u,1,3,0),kadd(KRANC_GFOFFSET3D(u,-3,-1,0),KRANC_GFOFFSET3D(u,3,1,0)))),ToReal(45),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,-2,0),KRANC_GFOFFSET3D(u,2,2,0)),ToReal(81),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,2,0),kadd(KRANC_GFOFFSET3D(u,1,-2,0),kadd(KRANC_GFOFFSET3D(u,-2,1,0),KRANC_GFOFFSET3D(u,2,-1,0)))),ToReal(405),kmul(kadd(KRANC_GFOFFSET3D(u,-1,-1,0),KRANC_GFOFFSET3D(u,1,1,0)),ToReal(2025)))))),KRANC_GFOFFSET3D(u,3,-3,0)),KRANC_GFOFFSET3D(u,-3,3,0))))))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDstandardNthfdOrder623(u) (kmul(p1o3600dydz,kadd(KRANC_GFOFFSET3D(u,0,-3,-3),kadd(KRANC_GFOFFSET3D(u,0,3,3),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,1),KRANC_GFOFFSET3D(u,0,1,-1)),ToReal(-2025),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,-2),kadd(KRANC_GFOFFSET3D(u,0,1,2),kadd(KRANC_GFOFFSET3D(u,0,-2,-1),KRANC_GFOFFSET3D(u,0,2,1)))),ToReal(-405),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,2),KRANC_GFOFFSET3D(u,0,2,-2)),ToReal(-81),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,3),kadd(KRANC_GFOFFSET3D(u,0,1,-3),kadd(KRANC_GFOFFSET3D(u,0,-3,1),KRANC_GFOFFSET3D(u,0,3,-1)))),ToReal(-45),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,-3),kadd(KRANC_GFOFFSET3D(u,0,2,3),kadd(KRANC_GFOFFSET3D(u,0,-3,-2),KRANC_GFOFFSET3D(u,0,3,2)))),ToReal(-9),ksub(ksub(kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,3),kadd(KRANC_GFOFFSET3D(u,0,2,-3),kadd(KRANC_GFOFFSET3D(u,0,-3,2),KRANC_GFOFFSET3D(u,0,3,-2)))),ToReal(9),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,-3),kadd(KRANC_GFOFFSET3D(u,0,1,3),kadd(KRANC_GFOFFSET3D(u,0,-3,-1),KRANC_GFOFFSET3D(u,0,3,1)))),ToReal(45),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,-2),KRANC_GFOFFSET3D(u,0,2,2)),ToReal(81),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,2),kadd(KRANC_GFOFFSET3D(u,0,1,-2),kadd(KRANC_GFOFFSET3D(u,0,-2,1),KRANC_GFOFFSET3D(u,0,2,-1)))),ToReal(405),kmul(kadd(KRANC_GFOFFSET3D(u,0,-1,-1),KRANC_GFOFFSET3D(u,0,1,1)),ToReal(2025)))))),KRANC_GFOFFSET3D(u,0,3,-3)),KRANC_GFOFFSET3D(u,0,-3,3)))))))))))
+#else
+# define PDstandardNthfdOrder623(u) (PDstandardNthfdOrder623_impl(u,p1o3600dydz,cdj,cdk))
+static CCTK_REAL_VEC PDstandardNthfdOrder623_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o3600dydz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDstandardNthfdOrder623_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o3600dydz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o3600dydz,kadd(KRANC_GFOFFSET3D(u,0,-3,-3),kadd(KRANC_GFOFFSET3D(u,0,3,3),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,1),KRANC_GFOFFSET3D(u,0,1,-1)),ToReal(-2025),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,-2),kadd(KRANC_GFOFFSET3D(u,0,1,2),kadd(KRANC_GFOFFSET3D(u,0,-2,-1),KRANC_GFOFFSET3D(u,0,2,1)))),ToReal(-405),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,2),KRANC_GFOFFSET3D(u,0,2,-2)),ToReal(-81),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,3),kadd(KRANC_GFOFFSET3D(u,0,1,-3),kadd(KRANC_GFOFFSET3D(u,0,-3,1),KRANC_GFOFFSET3D(u,0,3,-1)))),ToReal(-45),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,-3),kadd(KRANC_GFOFFSET3D(u,0,2,3),kadd(KRANC_GFOFFSET3D(u,0,-3,-2),KRANC_GFOFFSET3D(u,0,3,2)))),ToReal(-9),ksub(ksub(kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,3),kadd(KRANC_GFOFFSET3D(u,0,2,-3),kadd(KRANC_GFOFFSET3D(u,0,-3,2),KRANC_GFOFFSET3D(u,0,3,-2)))),ToReal(9),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,-3),kadd(KRANC_GFOFFSET3D(u,0,1,3),kadd(KRANC_GFOFFSET3D(u,0,-3,-1),KRANC_GFOFFSET3D(u,0,3,1)))),ToReal(45),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,-2),KRANC_GFOFFSET3D(u,0,2,2)),ToReal(81),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,2),kadd(KRANC_GFOFFSET3D(u,0,1,-2),kadd(KRANC_GFOFFSET3D(u,0,-2,1),KRANC_GFOFFSET3D(u,0,2,-1)))),ToReal(405),kmul(kadd(KRANC_GFOFFSET3D(u,0,-1,-1),KRANC_GFOFFSET3D(u,0,1,1)),ToReal(2025)))))),KRANC_GFOFFSET3D(u,0,3,-3)),KRANC_GFOFFSET3D(u,0,-3,3))))))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDstandardNthfdOrder631(u) (kmul(p1o3600dxdz,kadd(KRANC_GFOFFSET3D(u,-3,0,-3),kadd(KRANC_GFOFFSET3D(u,3,0,3),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,1),KRANC_GFOFFSET3D(u,1,0,-1)),ToReal(-2025),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,-2),kadd(KRANC_GFOFFSET3D(u,1,0,2),kadd(KRANC_GFOFFSET3D(u,-2,0,-1),KRANC_GFOFFSET3D(u,2,0,1)))),ToReal(-405),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,2),KRANC_GFOFFSET3D(u,2,0,-2)),ToReal(-81),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,3),kadd(KRANC_GFOFFSET3D(u,1,0,-3),kadd(KRANC_GFOFFSET3D(u,-3,0,1),KRANC_GFOFFSET3D(u,3,0,-1)))),ToReal(-45),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,-3),kadd(KRANC_GFOFFSET3D(u,2,0,3),kadd(KRANC_GFOFFSET3D(u,-3,0,-2),KRANC_GFOFFSET3D(u,3,0,2)))),ToReal(-9),ksub(ksub(kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,3),kadd(KRANC_GFOFFSET3D(u,2,0,-3),kadd(KRANC_GFOFFSET3D(u,-3,0,2),KRANC_GFOFFSET3D(u,3,0,-2)))),ToReal(9),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,-3),kadd(KRANC_GFOFFSET3D(u,1,0,3),kadd(KRANC_GFOFFSET3D(u,-3,0,-1),KRANC_GFOFFSET3D(u,3,0,1)))),ToReal(45),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,-2),KRANC_GFOFFSET3D(u,2,0,2)),ToReal(81),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,2),kadd(KRANC_GFOFFSET3D(u,1,0,-2),kadd(KRANC_GFOFFSET3D(u,-2,0,1),KRANC_GFOFFSET3D(u,2,0,-1)))),ToReal(405),kmul(kadd(KRANC_GFOFFSET3D(u,-1,0,-1),KRANC_GFOFFSET3D(u,1,0,1)),ToReal(2025)))))),KRANC_GFOFFSET3D(u,3,0,-3)),KRANC_GFOFFSET3D(u,-3,0,3)))))))))))
+#else
+# define PDstandardNthfdOrder631(u) (PDstandardNthfdOrder631_impl(u,p1o3600dxdz,cdj,cdk))
+static CCTK_REAL_VEC PDstandardNthfdOrder631_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o3600dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDstandardNthfdOrder631_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o3600dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o3600dxdz,kadd(KRANC_GFOFFSET3D(u,-3,0,-3),kadd(KRANC_GFOFFSET3D(u,3,0,3),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,1),KRANC_GFOFFSET3D(u,1,0,-1)),ToReal(-2025),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,-2),kadd(KRANC_GFOFFSET3D(u,1,0,2),kadd(KRANC_GFOFFSET3D(u,-2,0,-1),KRANC_GFOFFSET3D(u,2,0,1)))),ToReal(-405),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,2),KRANC_GFOFFSET3D(u,2,0,-2)),ToReal(-81),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,3),kadd(KRANC_GFOFFSET3D(u,1,0,-3),kadd(KRANC_GFOFFSET3D(u,-3,0,1),KRANC_GFOFFSET3D(u,3,0,-1)))),ToReal(-45),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,-3),kadd(KRANC_GFOFFSET3D(u,2,0,3),kadd(KRANC_GFOFFSET3D(u,-3,0,-2),KRANC_GFOFFSET3D(u,3,0,2)))),ToReal(-9),ksub(ksub(kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,3),kadd(KRANC_GFOFFSET3D(u,2,0,-3),kadd(KRANC_GFOFFSET3D(u,-3,0,2),KRANC_GFOFFSET3D(u,3,0,-2)))),ToReal(9),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,-3),kadd(KRANC_GFOFFSET3D(u,1,0,3),kadd(KRANC_GFOFFSET3D(u,-3,0,-1),KRANC_GFOFFSET3D(u,3,0,1)))),ToReal(45),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,-2),KRANC_GFOFFSET3D(u,2,0,2)),ToReal(81),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,2),kadd(KRANC_GFOFFSET3D(u,1,0,-2),kadd(KRANC_GFOFFSET3D(u,-2,0,1),KRANC_GFOFFSET3D(u,2,0,-1)))),ToReal(405),kmul(kadd(KRANC_GFOFFSET3D(u,-1,0,-1),KRANC_GFOFFSET3D(u,1,0,1)),ToReal(2025)))))),KRANC_GFOFFSET3D(u,3,0,-3)),KRANC_GFOFFSET3D(u,-3,0,3))))))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDstandardNthfdOrder632(u) (kmul(p1o3600dydz,kadd(KRANC_GFOFFSET3D(u,0,-3,-3),kadd(KRANC_GFOFFSET3D(u,0,3,3),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,1),KRANC_GFOFFSET3D(u,0,1,-1)),ToReal(-2025),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,-2),kadd(KRANC_GFOFFSET3D(u,0,1,2),kadd(KRANC_GFOFFSET3D(u,0,-2,-1),KRANC_GFOFFSET3D(u,0,2,1)))),ToReal(-405),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,2),KRANC_GFOFFSET3D(u,0,2,-2)),ToReal(-81),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,3),kadd(KRANC_GFOFFSET3D(u,0,1,-3),kadd(KRANC_GFOFFSET3D(u,0,-3,1),KRANC_GFOFFSET3D(u,0,3,-1)))),ToReal(-45),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,-3),kadd(KRANC_GFOFFSET3D(u,0,2,3),kadd(KRANC_GFOFFSET3D(u,0,-3,-2),KRANC_GFOFFSET3D(u,0,3,2)))),ToReal(-9),ksub(ksub(kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,3),kadd(KRANC_GFOFFSET3D(u,0,2,-3),kadd(KRANC_GFOFFSET3D(u,0,-3,2),KRANC_GFOFFSET3D(u,0,3,-2)))),ToReal(9),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,-3),kadd(KRANC_GFOFFSET3D(u,0,1,3),kadd(KRANC_GFOFFSET3D(u,0,-3,-1),KRANC_GFOFFSET3D(u,0,3,1)))),ToReal(45),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,-2),KRANC_GFOFFSET3D(u,0,2,2)),ToReal(81),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,2),kadd(KRANC_GFOFFSET3D(u,0,1,-2),kadd(KRANC_GFOFFSET3D(u,0,-2,1),KRANC_GFOFFSET3D(u,0,2,-1)))),ToReal(405),kmul(kadd(KRANC_GFOFFSET3D(u,0,-1,-1),KRANC_GFOFFSET3D(u,0,1,1)),ToReal(2025)))))),KRANC_GFOFFSET3D(u,0,3,-3)),KRANC_GFOFFSET3D(u,0,-3,3)))))))))))
+#else
+# define PDstandardNthfdOrder632(u) (PDstandardNthfdOrder632_impl(u,p1o3600dydz,cdj,cdk))
+static CCTK_REAL_VEC PDstandardNthfdOrder632_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o3600dydz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDstandardNthfdOrder632_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o3600dydz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o3600dydz,kadd(KRANC_GFOFFSET3D(u,0,-3,-3),kadd(KRANC_GFOFFSET3D(u,0,3,3),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,1),KRANC_GFOFFSET3D(u,0,1,-1)),ToReal(-2025),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,-2),kadd(KRANC_GFOFFSET3D(u,0,1,2),kadd(KRANC_GFOFFSET3D(u,0,-2,-1),KRANC_GFOFFSET3D(u,0,2,1)))),ToReal(-405),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,2),KRANC_GFOFFSET3D(u,0,2,-2)),ToReal(-81),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,3),kadd(KRANC_GFOFFSET3D(u,0,1,-3),kadd(KRANC_GFOFFSET3D(u,0,-3,1),KRANC_GFOFFSET3D(u,0,3,-1)))),ToReal(-45),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,-3),kadd(KRANC_GFOFFSET3D(u,0,2,3),kadd(KRANC_GFOFFSET3D(u,0,-3,-2),KRANC_GFOFFSET3D(u,0,3,2)))),ToReal(-9),ksub(ksub(kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,3),kadd(KRANC_GFOFFSET3D(u,0,2,-3),kadd(KRANC_GFOFFSET3D(u,0,-3,2),KRANC_GFOFFSET3D(u,0,3,-2)))),ToReal(9),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,-3),kadd(KRANC_GFOFFSET3D(u,0,1,3),kadd(KRANC_GFOFFSET3D(u,0,-3,-1),KRANC_GFOFFSET3D(u,0,3,1)))),ToReal(45),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,-2),KRANC_GFOFFSET3D(u,0,2,2)),ToReal(81),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,2),kadd(KRANC_GFOFFSET3D(u,0,1,-2),kadd(KRANC_GFOFFSET3D(u,0,-2,1),KRANC_GFOFFSET3D(u,0,2,-1)))),ToReal(405),kmul(kadd(KRANC_GFOFFSET3D(u,0,-1,-1),KRANC_GFOFFSET3D(u,0,1,1)),ToReal(2025)))))),KRANC_GFOFFSET3D(u,0,3,-3)),KRANC_GFOFFSET3D(u,0,-3,3))))))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDstandardNthfdOrder812(u) (kmul(p1o705600dxdy,kmadd(kadd(KRANC_GFOFFSET3D(u,-1,1,0),KRANC_GFOFFSET3D(u,1,-1,0)),ToReal(-451584),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,-2,0),kadd(KRANC_GFOFFSET3D(u,1,2,0),kadd(KRANC_GFOFFSET3D(u,-2,-1,0),KRANC_GFOFFSET3D(u,2,1,0)))),ToReal(-112896),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,2,0),KRANC_GFOFFSET3D(u,2,-2,0)),ToReal(-28224),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,3,0),kadd(KRANC_GFOFFSET3D(u,1,-3,0),kadd(KRANC_GFOFFSET3D(u,-3,1,0),KRANC_GFOFFSET3D(u,3,-1,0)))),ToReal(-21504),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,-3,0),kadd(KRANC_GFOFFSET3D(u,2,3,0),kadd(KRANC_GFOFFSET3D(u,-3,-2,0),KRANC_GFOFFSET3D(u,3,2,0)))),ToReal(-5376),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,-4,0),kadd(KRANC_GFOFFSET3D(u,1,4,0),kadd(KRANC_GFOFFSET3D(u,-4,-1,0),KRANC_GFOFFSET3D(u,4,1,0)))),ToReal(-2016),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,3,0),KRANC_GFOFFSET3D(u,3,-3,0)),ToReal(-1024),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,4,0),kadd(KRANC_GFOFFSET3D(u,2,-4,0),kadd(KRANC_GFOFFSET3D(u,-4,2,0),KRANC_GFOFFSET3D(u,4,-2,0)))),ToReal(-504),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,-4,0),kadd(KRANC_GFOFFSET3D(u,3,4,0),kadd(KRANC_GFOFFSET3D(u,-4,-3,0),KRANC_GFOFFSET3D(u,4,3,0)))),ToReal(-96),kmadd(kadd(KRANC_GFOFFSET3D(u,-4,4,0),KRANC_GFOFFSET3D(u,4,-4,0)),ToReal(-9),kmadd(kadd(KRANC_GFOFFSET3D(u,-4,-4,0),KRANC_GFOFFSET3D(u,4,4,0)),ToReal(9),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,4,0),kadd(KRANC_GFOFFSET3D(u,3,-4,0),kadd(KRANC_GFOFFSET3D(u,-4,3,0),KRANC_GFOFFSET3D(u,4,-3,0)))),ToReal(96),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,-4,0),kadd(KRANC_GFOFFSET3D(u,2,4,0),kadd(KRANC_GFOFFSET3D(u,-4,-2,0),KRANC_GFOFFSET3D(u,4,2,0)))),ToReal(504),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,-3,0),KRANC_GFOFFSET3D(u,3,3,0)),ToReal(1024),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,4,0),kadd(KRANC_GFOFFSET3D(u,1,-4,0),kadd(KRANC_GFOFFSET3D(u,-4,1,0),KRANC_GFOFFSET3D(u,4,-1,0)))),ToReal(2016),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,3,0),kadd(KRANC_GFOFFSET3D(u,2,-3,0),kadd(KRANC_GFOFFSET3D(u,-3,2,0),KRANC_GFOFFSET3D(u,3,-2,0)))),ToReal(5376),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,-3,0),kadd(KRANC_GFOFFSET3D(u,1,3,0),kadd(KRANC_GFOFFSET3D(u,-3,-1,0),KRANC_GFOFFSET3D(u,3,1,0)))),ToReal(21504),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,-2,0),KRANC_GFOFFSET3D(u,2,2,0)),ToReal(28224),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,2,0),kadd(KRANC_GFOFFSET3D(u,1,-2,0),kadd(KRANC_GFOFFSET3D(u,-2,1,0),KRANC_GFOFFSET3D(u,2,-1,0)))),ToReal(112896),kmul(kadd(KRANC_GFOFFSET3D(u,-1,-1,0),KRANC_GFOFFSET3D(u,1,1,0)),ToReal(451584)))))))))))))))))))))))
+#else
+# define PDstandardNthfdOrder812(u) (PDstandardNthfdOrder812_impl(u,p1o705600dxdy,cdj,cdk))
+static CCTK_REAL_VEC PDstandardNthfdOrder812_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o705600dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDstandardNthfdOrder812_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o705600dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o705600dxdy,kmadd(kadd(KRANC_GFOFFSET3D(u,-1,1,0),KRANC_GFOFFSET3D(u,1,-1,0)),ToReal(-451584),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,-2,0),kadd(KRANC_GFOFFSET3D(u,1,2,0),kadd(KRANC_GFOFFSET3D(u,-2,-1,0),KRANC_GFOFFSET3D(u,2,1,0)))),ToReal(-112896),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,2,0),KRANC_GFOFFSET3D(u,2,-2,0)),ToReal(-28224),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,3,0),kadd(KRANC_GFOFFSET3D(u,1,-3,0),kadd(KRANC_GFOFFSET3D(u,-3,1,0),KRANC_GFOFFSET3D(u,3,-1,0)))),ToReal(-21504),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,-3,0),kadd(KRANC_GFOFFSET3D(u,2,3,0),kadd(KRANC_GFOFFSET3D(u,-3,-2,0),KRANC_GFOFFSET3D(u,3,2,0)))),ToReal(-5376),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,-4,0),kadd(KRANC_GFOFFSET3D(u,1,4,0),kadd(KRANC_GFOFFSET3D(u,-4,-1,0),KRANC_GFOFFSET3D(u,4,1,0)))),ToReal(-2016),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,3,0),KRANC_GFOFFSET3D(u,3,-3,0)),ToReal(-1024),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,4,0),kadd(KRANC_GFOFFSET3D(u,2,-4,0),kadd(KRANC_GFOFFSET3D(u,-4,2,0),KRANC_GFOFFSET3D(u,4,-2,0)))),ToReal(-504),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,-4,0),kadd(KRANC_GFOFFSET3D(u,3,4,0),kadd(KRANC_GFOFFSET3D(u,-4,-3,0),KRANC_GFOFFSET3D(u,4,3,0)))),ToReal(-96),kmadd(kadd(KRANC_GFOFFSET3D(u,-4,4,0),KRANC_GFOFFSET3D(u,4,-4,0)),ToReal(-9),kmadd(kadd(KRANC_GFOFFSET3D(u,-4,-4,0),KRANC_GFOFFSET3D(u,4,4,0)),ToReal(9),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,4,0),kadd(KRANC_GFOFFSET3D(u,3,-4,0),kadd(KRANC_GFOFFSET3D(u,-4,3,0),KRANC_GFOFFSET3D(u,4,-3,0)))),ToReal(96),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,-4,0),kadd(KRANC_GFOFFSET3D(u,2,4,0),kadd(KRANC_GFOFFSET3D(u,-4,-2,0),KRANC_GFOFFSET3D(u,4,2,0)))),ToReal(504),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,-3,0),KRANC_GFOFFSET3D(u,3,3,0)),ToReal(1024),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,4,0),kadd(KRANC_GFOFFSET3D(u,1,-4,0),kadd(KRANC_GFOFFSET3D(u,-4,1,0),KRANC_GFOFFSET3D(u,4,-1,0)))),ToReal(2016),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,3,0),kadd(KRANC_GFOFFSET3D(u,2,-3,0),kadd(KRANC_GFOFFSET3D(u,-3,2,0),KRANC_GFOFFSET3D(u,3,-2,0)))),ToReal(5376),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,-3,0),kadd(KRANC_GFOFFSET3D(u,1,3,0),kadd(KRANC_GFOFFSET3D(u,-3,-1,0),KRANC_GFOFFSET3D(u,3,1,0)))),ToReal(21504),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,-2,0),KRANC_GFOFFSET3D(u,2,2,0)),ToReal(28224),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,2,0),kadd(KRANC_GFOFFSET3D(u,1,-2,0),kadd(KRANC_GFOFFSET3D(u,-2,1,0),KRANC_GFOFFSET3D(u,2,-1,0)))),ToReal(112896),kmul(kadd(KRANC_GFOFFSET3D(u,-1,-1,0),KRANC_GFOFFSET3D(u,1,1,0)),ToReal(451584))))))))))))))))))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDstandardNthfdOrder813(u) (kmul(p1o705600dxdz,kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,1),KRANC_GFOFFSET3D(u,1,0,-1)),ToReal(-451584),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,-2),kadd(KRANC_GFOFFSET3D(u,1,0,2),kadd(KRANC_GFOFFSET3D(u,-2,0,-1),KRANC_GFOFFSET3D(u,2,0,1)))),ToReal(-112896),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,2),KRANC_GFOFFSET3D(u,2,0,-2)),ToReal(-28224),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,3),kadd(KRANC_GFOFFSET3D(u,1,0,-3),kadd(KRANC_GFOFFSET3D(u,-3,0,1),KRANC_GFOFFSET3D(u,3,0,-1)))),ToReal(-21504),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,-3),kadd(KRANC_GFOFFSET3D(u,2,0,3),kadd(KRANC_GFOFFSET3D(u,-3,0,-2),KRANC_GFOFFSET3D(u,3,0,2)))),ToReal(-5376),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,-4),kadd(KRANC_GFOFFSET3D(u,1,0,4),kadd(KRANC_GFOFFSET3D(u,-4,0,-1),KRANC_GFOFFSET3D(u,4,0,1)))),ToReal(-2016),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,0,3),KRANC_GFOFFSET3D(u,3,0,-3)),ToReal(-1024),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,4),kadd(KRANC_GFOFFSET3D(u,2,0,-4),kadd(KRANC_GFOFFSET3D(u,-4,0,2),KRANC_GFOFFSET3D(u,4,0,-2)))),ToReal(-504),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,0,-4),kadd(KRANC_GFOFFSET3D(u,3,0,4),kadd(KRANC_GFOFFSET3D(u,-4,0,-3),KRANC_GFOFFSET3D(u,4,0,3)))),ToReal(-96),kmadd(kadd(KRANC_GFOFFSET3D(u,-4,0,4),KRANC_GFOFFSET3D(u,4,0,-4)),ToReal(-9),kmadd(kadd(KRANC_GFOFFSET3D(u,-4,0,-4),KRANC_GFOFFSET3D(u,4,0,4)),ToReal(9),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,0,4),kadd(KRANC_GFOFFSET3D(u,3,0,-4),kadd(KRANC_GFOFFSET3D(u,-4,0,3),KRANC_GFOFFSET3D(u,4,0,-3)))),ToReal(96),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,-4),kadd(KRANC_GFOFFSET3D(u,2,0,4),kadd(KRANC_GFOFFSET3D(u,-4,0,-2),KRANC_GFOFFSET3D(u,4,0,2)))),ToReal(504),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,0,-3),KRANC_GFOFFSET3D(u,3,0,3)),ToReal(1024),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,4),kadd(KRANC_GFOFFSET3D(u,1,0,-4),kadd(KRANC_GFOFFSET3D(u,-4,0,1),KRANC_GFOFFSET3D(u,4,0,-1)))),ToReal(2016),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,3),kadd(KRANC_GFOFFSET3D(u,2,0,-3),kadd(KRANC_GFOFFSET3D(u,-3,0,2),KRANC_GFOFFSET3D(u,3,0,-2)))),ToReal(5376),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,-3),kadd(KRANC_GFOFFSET3D(u,1,0,3),kadd(KRANC_GFOFFSET3D(u,-3,0,-1),KRANC_GFOFFSET3D(u,3,0,1)))),ToReal(21504),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,-2),KRANC_GFOFFSET3D(u,2,0,2)),ToReal(28224),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,2),kadd(KRANC_GFOFFSET3D(u,1,0,-2),kadd(KRANC_GFOFFSET3D(u,-2,0,1),KRANC_GFOFFSET3D(u,2,0,-1)))),ToReal(112896),kmul(kadd(KRANC_GFOFFSET3D(u,-1,0,-1),KRANC_GFOFFSET3D(u,1,0,1)),ToReal(451584)))))))))))))))))))))))
+#else
+# define PDstandardNthfdOrder813(u) (PDstandardNthfdOrder813_impl(u,p1o705600dxdz,cdj,cdk))
+static CCTK_REAL_VEC PDstandardNthfdOrder813_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o705600dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDstandardNthfdOrder813_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o705600dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o705600dxdz,kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,1),KRANC_GFOFFSET3D(u,1,0,-1)),ToReal(-451584),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,-2),kadd(KRANC_GFOFFSET3D(u,1,0,2),kadd(KRANC_GFOFFSET3D(u,-2,0,-1),KRANC_GFOFFSET3D(u,2,0,1)))),ToReal(-112896),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,2),KRANC_GFOFFSET3D(u,2,0,-2)),ToReal(-28224),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,3),kadd(KRANC_GFOFFSET3D(u,1,0,-3),kadd(KRANC_GFOFFSET3D(u,-3,0,1),KRANC_GFOFFSET3D(u,3,0,-1)))),ToReal(-21504),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,-3),kadd(KRANC_GFOFFSET3D(u,2,0,3),kadd(KRANC_GFOFFSET3D(u,-3,0,-2),KRANC_GFOFFSET3D(u,3,0,2)))),ToReal(-5376),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,-4),kadd(KRANC_GFOFFSET3D(u,1,0,4),kadd(KRANC_GFOFFSET3D(u,-4,0,-1),KRANC_GFOFFSET3D(u,4,0,1)))),ToReal(-2016),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,0,3),KRANC_GFOFFSET3D(u,3,0,-3)),ToReal(-1024),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,4),kadd(KRANC_GFOFFSET3D(u,2,0,-4),kadd(KRANC_GFOFFSET3D(u,-4,0,2),KRANC_GFOFFSET3D(u,4,0,-2)))),ToReal(-504),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,0,-4),kadd(KRANC_GFOFFSET3D(u,3,0,4),kadd(KRANC_GFOFFSET3D(u,-4,0,-3),KRANC_GFOFFSET3D(u,4,0,3)))),ToReal(-96),kmadd(kadd(KRANC_GFOFFSET3D(u,-4,0,4),KRANC_GFOFFSET3D(u,4,0,-4)),ToReal(-9),kmadd(kadd(KRANC_GFOFFSET3D(u,-4,0,-4),KRANC_GFOFFSET3D(u,4,0,4)),ToReal(9),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,0,4),kadd(KRANC_GFOFFSET3D(u,3,0,-4),kadd(KRANC_GFOFFSET3D(u,-4,0,3),KRANC_GFOFFSET3D(u,4,0,-3)))),ToReal(96),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,-4),kadd(KRANC_GFOFFSET3D(u,2,0,4),kadd(KRANC_GFOFFSET3D(u,-4,0,-2),KRANC_GFOFFSET3D(u,4,0,2)))),ToReal(504),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,0,-3),KRANC_GFOFFSET3D(u,3,0,3)),ToReal(1024),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,4),kadd(KRANC_GFOFFSET3D(u,1,0,-4),kadd(KRANC_GFOFFSET3D(u,-4,0,1),KRANC_GFOFFSET3D(u,4,0,-1)))),ToReal(2016),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,3),kadd(KRANC_GFOFFSET3D(u,2,0,-3),kadd(KRANC_GFOFFSET3D(u,-3,0,2),KRANC_GFOFFSET3D(u,3,0,-2)))),ToReal(5376),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,-3),kadd(KRANC_GFOFFSET3D(u,1,0,3),kadd(KRANC_GFOFFSET3D(u,-3,0,-1),KRANC_GFOFFSET3D(u,3,0,1)))),ToReal(21504),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,-2),KRANC_GFOFFSET3D(u,2,0,2)),ToReal(28224),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,2),kadd(KRANC_GFOFFSET3D(u,1,0,-2),kadd(KRANC_GFOFFSET3D(u,-2,0,1),KRANC_GFOFFSET3D(u,2,0,-1)))),ToReal(112896),kmul(kadd(KRANC_GFOFFSET3D(u,-1,0,-1),KRANC_GFOFFSET3D(u,1,0,1)),ToReal(451584))))))))))))))))))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDstandardNthfdOrder821(u) (kmul(p1o705600dxdy,kmadd(kadd(KRANC_GFOFFSET3D(u,-1,1,0),KRANC_GFOFFSET3D(u,1,-1,0)),ToReal(-451584),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,-2,0),kadd(KRANC_GFOFFSET3D(u,1,2,0),kadd(KRANC_GFOFFSET3D(u,-2,-1,0),KRANC_GFOFFSET3D(u,2,1,0)))),ToReal(-112896),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,2,0),KRANC_GFOFFSET3D(u,2,-2,0)),ToReal(-28224),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,3,0),kadd(KRANC_GFOFFSET3D(u,1,-3,0),kadd(KRANC_GFOFFSET3D(u,-3,1,0),KRANC_GFOFFSET3D(u,3,-1,0)))),ToReal(-21504),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,-3,0),kadd(KRANC_GFOFFSET3D(u,2,3,0),kadd(KRANC_GFOFFSET3D(u,-3,-2,0),KRANC_GFOFFSET3D(u,3,2,0)))),ToReal(-5376),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,-4,0),kadd(KRANC_GFOFFSET3D(u,1,4,0),kadd(KRANC_GFOFFSET3D(u,-4,-1,0),KRANC_GFOFFSET3D(u,4,1,0)))),ToReal(-2016),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,3,0),KRANC_GFOFFSET3D(u,3,-3,0)),ToReal(-1024),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,4,0),kadd(KRANC_GFOFFSET3D(u,2,-4,0),kadd(KRANC_GFOFFSET3D(u,-4,2,0),KRANC_GFOFFSET3D(u,4,-2,0)))),ToReal(-504),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,-4,0),kadd(KRANC_GFOFFSET3D(u,3,4,0),kadd(KRANC_GFOFFSET3D(u,-4,-3,0),KRANC_GFOFFSET3D(u,4,3,0)))),ToReal(-96),kmadd(kadd(KRANC_GFOFFSET3D(u,-4,4,0),KRANC_GFOFFSET3D(u,4,-4,0)),ToReal(-9),kmadd(kadd(KRANC_GFOFFSET3D(u,-4,-4,0),KRANC_GFOFFSET3D(u,4,4,0)),ToReal(9),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,4,0),kadd(KRANC_GFOFFSET3D(u,3,-4,0),kadd(KRANC_GFOFFSET3D(u,-4,3,0),KRANC_GFOFFSET3D(u,4,-3,0)))),ToReal(96),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,-4,0),kadd(KRANC_GFOFFSET3D(u,2,4,0),kadd(KRANC_GFOFFSET3D(u,-4,-2,0),KRANC_GFOFFSET3D(u,4,2,0)))),ToReal(504),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,-3,0),KRANC_GFOFFSET3D(u,3,3,0)),ToReal(1024),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,4,0),kadd(KRANC_GFOFFSET3D(u,1,-4,0),kadd(KRANC_GFOFFSET3D(u,-4,1,0),KRANC_GFOFFSET3D(u,4,-1,0)))),ToReal(2016),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,3,0),kadd(KRANC_GFOFFSET3D(u,2,-3,0),kadd(KRANC_GFOFFSET3D(u,-3,2,0),KRANC_GFOFFSET3D(u,3,-2,0)))),ToReal(5376),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,-3,0),kadd(KRANC_GFOFFSET3D(u,1,3,0),kadd(KRANC_GFOFFSET3D(u,-3,-1,0),KRANC_GFOFFSET3D(u,3,1,0)))),ToReal(21504),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,-2,0),KRANC_GFOFFSET3D(u,2,2,0)),ToReal(28224),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,2,0),kadd(KRANC_GFOFFSET3D(u,1,-2,0),kadd(KRANC_GFOFFSET3D(u,-2,1,0),KRANC_GFOFFSET3D(u,2,-1,0)))),ToReal(112896),kmul(kadd(KRANC_GFOFFSET3D(u,-1,-1,0),KRANC_GFOFFSET3D(u,1,1,0)),ToReal(451584)))))))))))))))))))))))
+#else
+# define PDstandardNthfdOrder821(u) (PDstandardNthfdOrder821_impl(u,p1o705600dxdy,cdj,cdk))
+static CCTK_REAL_VEC PDstandardNthfdOrder821_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o705600dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDstandardNthfdOrder821_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o705600dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o705600dxdy,kmadd(kadd(KRANC_GFOFFSET3D(u,-1,1,0),KRANC_GFOFFSET3D(u,1,-1,0)),ToReal(-451584),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,-2,0),kadd(KRANC_GFOFFSET3D(u,1,2,0),kadd(KRANC_GFOFFSET3D(u,-2,-1,0),KRANC_GFOFFSET3D(u,2,1,0)))),ToReal(-112896),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,2,0),KRANC_GFOFFSET3D(u,2,-2,0)),ToReal(-28224),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,3,0),kadd(KRANC_GFOFFSET3D(u,1,-3,0),kadd(KRANC_GFOFFSET3D(u,-3,1,0),KRANC_GFOFFSET3D(u,3,-1,0)))),ToReal(-21504),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,-3,0),kadd(KRANC_GFOFFSET3D(u,2,3,0),kadd(KRANC_GFOFFSET3D(u,-3,-2,0),KRANC_GFOFFSET3D(u,3,2,0)))),ToReal(-5376),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,-4,0),kadd(KRANC_GFOFFSET3D(u,1,4,0),kadd(KRANC_GFOFFSET3D(u,-4,-1,0),KRANC_GFOFFSET3D(u,4,1,0)))),ToReal(-2016),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,3,0),KRANC_GFOFFSET3D(u,3,-3,0)),ToReal(-1024),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,4,0),kadd(KRANC_GFOFFSET3D(u,2,-4,0),kadd(KRANC_GFOFFSET3D(u,-4,2,0),KRANC_GFOFFSET3D(u,4,-2,0)))),ToReal(-504),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,-4,0),kadd(KRANC_GFOFFSET3D(u,3,4,0),kadd(KRANC_GFOFFSET3D(u,-4,-3,0),KRANC_GFOFFSET3D(u,4,3,0)))),ToReal(-96),kmadd(kadd(KRANC_GFOFFSET3D(u,-4,4,0),KRANC_GFOFFSET3D(u,4,-4,0)),ToReal(-9),kmadd(kadd(KRANC_GFOFFSET3D(u,-4,-4,0),KRANC_GFOFFSET3D(u,4,4,0)),ToReal(9),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,4,0),kadd(KRANC_GFOFFSET3D(u,3,-4,0),kadd(KRANC_GFOFFSET3D(u,-4,3,0),KRANC_GFOFFSET3D(u,4,-3,0)))),ToReal(96),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,-4,0),kadd(KRANC_GFOFFSET3D(u,2,4,0),kadd(KRANC_GFOFFSET3D(u,-4,-2,0),KRANC_GFOFFSET3D(u,4,2,0)))),ToReal(504),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,-3,0),KRANC_GFOFFSET3D(u,3,3,0)),ToReal(1024),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,4,0),kadd(KRANC_GFOFFSET3D(u,1,-4,0),kadd(KRANC_GFOFFSET3D(u,-4,1,0),KRANC_GFOFFSET3D(u,4,-1,0)))),ToReal(2016),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,3,0),kadd(KRANC_GFOFFSET3D(u,2,-3,0),kadd(KRANC_GFOFFSET3D(u,-3,2,0),KRANC_GFOFFSET3D(u,3,-2,0)))),ToReal(5376),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,-3,0),kadd(KRANC_GFOFFSET3D(u,1,3,0),kadd(KRANC_GFOFFSET3D(u,-3,-1,0),KRANC_GFOFFSET3D(u,3,1,0)))),ToReal(21504),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,-2,0),KRANC_GFOFFSET3D(u,2,2,0)),ToReal(28224),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,2,0),kadd(KRANC_GFOFFSET3D(u,1,-2,0),kadd(KRANC_GFOFFSET3D(u,-2,1,0),KRANC_GFOFFSET3D(u,2,-1,0)))),ToReal(112896),kmul(kadd(KRANC_GFOFFSET3D(u,-1,-1,0),KRANC_GFOFFSET3D(u,1,1,0)),ToReal(451584))))))))))))))))))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDstandardNthfdOrder823(u) (kmul(p1o705600dydz,kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,1),KRANC_GFOFFSET3D(u,0,1,-1)),ToReal(-451584),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,-2),kadd(KRANC_GFOFFSET3D(u,0,1,2),kadd(KRANC_GFOFFSET3D(u,0,-2,-1),KRANC_GFOFFSET3D(u,0,2,1)))),ToReal(-112896),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,2),KRANC_GFOFFSET3D(u,0,2,-2)),ToReal(-28224),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,3),kadd(KRANC_GFOFFSET3D(u,0,1,-3),kadd(KRANC_GFOFFSET3D(u,0,-3,1),KRANC_GFOFFSET3D(u,0,3,-1)))),ToReal(-21504),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,-3),kadd(KRANC_GFOFFSET3D(u,0,2,3),kadd(KRANC_GFOFFSET3D(u,0,-3,-2),KRANC_GFOFFSET3D(u,0,3,2)))),ToReal(-5376),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,-4),kadd(KRANC_GFOFFSET3D(u,0,1,4),kadd(KRANC_GFOFFSET3D(u,0,-4,-1),KRANC_GFOFFSET3D(u,0,4,1)))),ToReal(-2016),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-3,3),KRANC_GFOFFSET3D(u,0,3,-3)),ToReal(-1024),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,4),kadd(KRANC_GFOFFSET3D(u,0,2,-4),kadd(KRANC_GFOFFSET3D(u,0,-4,2),KRANC_GFOFFSET3D(u,0,4,-2)))),ToReal(-504),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-3,-4),kadd(KRANC_GFOFFSET3D(u,0,3,4),kadd(KRANC_GFOFFSET3D(u,0,-4,-3),KRANC_GFOFFSET3D(u,0,4,3)))),ToReal(-96),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-4,4),KRANC_GFOFFSET3D(u,0,4,-4)),ToReal(-9),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-4,-4),KRANC_GFOFFSET3D(u,0,4,4)),ToReal(9),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-3,4),kadd(KRANC_GFOFFSET3D(u,0,3,-4),kadd(KRANC_GFOFFSET3D(u,0,-4,3),KRANC_GFOFFSET3D(u,0,4,-3)))),ToReal(96),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,-4),kadd(KRANC_GFOFFSET3D(u,0,2,4),kadd(KRANC_GFOFFSET3D(u,0,-4,-2),KRANC_GFOFFSET3D(u,0,4,2)))),ToReal(504),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-3,-3),KRANC_GFOFFSET3D(u,0,3,3)),ToReal(1024),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,4),kadd(KRANC_GFOFFSET3D(u,0,1,-4),kadd(KRANC_GFOFFSET3D(u,0,-4,1),KRANC_GFOFFSET3D(u,0,4,-1)))),ToReal(2016),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,3),kadd(KRANC_GFOFFSET3D(u,0,2,-3),kadd(KRANC_GFOFFSET3D(u,0,-3,2),KRANC_GFOFFSET3D(u,0,3,-2)))),ToReal(5376),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,-3),kadd(KRANC_GFOFFSET3D(u,0,1,3),kadd(KRANC_GFOFFSET3D(u,0,-3,-1),KRANC_GFOFFSET3D(u,0,3,1)))),ToReal(21504),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,-2),KRANC_GFOFFSET3D(u,0,2,2)),ToReal(28224),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,2),kadd(KRANC_GFOFFSET3D(u,0,1,-2),kadd(KRANC_GFOFFSET3D(u,0,-2,1),KRANC_GFOFFSET3D(u,0,2,-1)))),ToReal(112896),kmul(kadd(KRANC_GFOFFSET3D(u,0,-1,-1),KRANC_GFOFFSET3D(u,0,1,1)),ToReal(451584)))))))))))))))))))))))
+#else
+# define PDstandardNthfdOrder823(u) (PDstandardNthfdOrder823_impl(u,p1o705600dydz,cdj,cdk))
+static CCTK_REAL_VEC PDstandardNthfdOrder823_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o705600dydz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDstandardNthfdOrder823_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o705600dydz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o705600dydz,kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,1),KRANC_GFOFFSET3D(u,0,1,-1)),ToReal(-451584),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,-2),kadd(KRANC_GFOFFSET3D(u,0,1,2),kadd(KRANC_GFOFFSET3D(u,0,-2,-1),KRANC_GFOFFSET3D(u,0,2,1)))),ToReal(-112896),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,2),KRANC_GFOFFSET3D(u,0,2,-2)),ToReal(-28224),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,3),kadd(KRANC_GFOFFSET3D(u,0,1,-3),kadd(KRANC_GFOFFSET3D(u,0,-3,1),KRANC_GFOFFSET3D(u,0,3,-1)))),ToReal(-21504),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,-3),kadd(KRANC_GFOFFSET3D(u,0,2,3),kadd(KRANC_GFOFFSET3D(u,0,-3,-2),KRANC_GFOFFSET3D(u,0,3,2)))),ToReal(-5376),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,-4),kadd(KRANC_GFOFFSET3D(u,0,1,4),kadd(KRANC_GFOFFSET3D(u,0,-4,-1),KRANC_GFOFFSET3D(u,0,4,1)))),ToReal(-2016),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-3,3),KRANC_GFOFFSET3D(u,0,3,-3)),ToReal(-1024),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,4),kadd(KRANC_GFOFFSET3D(u,0,2,-4),kadd(KRANC_GFOFFSET3D(u,0,-4,2),KRANC_GFOFFSET3D(u,0,4,-2)))),ToReal(-504),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-3,-4),kadd(KRANC_GFOFFSET3D(u,0,3,4),kadd(KRANC_GFOFFSET3D(u,0,-4,-3),KRANC_GFOFFSET3D(u,0,4,3)))),ToReal(-96),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-4,4),KRANC_GFOFFSET3D(u,0,4,-4)),ToReal(-9),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-4,-4),KRANC_GFOFFSET3D(u,0,4,4)),ToReal(9),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-3,4),kadd(KRANC_GFOFFSET3D(u,0,3,-4),kadd(KRANC_GFOFFSET3D(u,0,-4,3),KRANC_GFOFFSET3D(u,0,4,-3)))),ToReal(96),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,-4),kadd(KRANC_GFOFFSET3D(u,0,2,4),kadd(KRANC_GFOFFSET3D(u,0,-4,-2),KRANC_GFOFFSET3D(u,0,4,2)))),ToReal(504),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-3,-3),KRANC_GFOFFSET3D(u,0,3,3)),ToReal(1024),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,4),kadd(KRANC_GFOFFSET3D(u,0,1,-4),kadd(KRANC_GFOFFSET3D(u,0,-4,1),KRANC_GFOFFSET3D(u,0,4,-1)))),ToReal(2016),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,3),kadd(KRANC_GFOFFSET3D(u,0,2,-3),kadd(KRANC_GFOFFSET3D(u,0,-3,2),KRANC_GFOFFSET3D(u,0,3,-2)))),ToReal(5376),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,-3),kadd(KRANC_GFOFFSET3D(u,0,1,3),kadd(KRANC_GFOFFSET3D(u,0,-3,-1),KRANC_GFOFFSET3D(u,0,3,1)))),ToReal(21504),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,-2),KRANC_GFOFFSET3D(u,0,2,2)),ToReal(28224),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,2),kadd(KRANC_GFOFFSET3D(u,0,1,-2),kadd(KRANC_GFOFFSET3D(u,0,-2,1),KRANC_GFOFFSET3D(u,0,2,-1)))),ToReal(112896),kmul(kadd(KRANC_GFOFFSET3D(u,0,-1,-1),KRANC_GFOFFSET3D(u,0,1,1)),ToReal(451584))))))))))))))))))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDstandardNthfdOrder831(u) (kmul(p1o705600dxdz,kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,1),KRANC_GFOFFSET3D(u,1,0,-1)),ToReal(-451584),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,-2),kadd(KRANC_GFOFFSET3D(u,1,0,2),kadd(KRANC_GFOFFSET3D(u,-2,0,-1),KRANC_GFOFFSET3D(u,2,0,1)))),ToReal(-112896),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,2),KRANC_GFOFFSET3D(u,2,0,-2)),ToReal(-28224),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,3),kadd(KRANC_GFOFFSET3D(u,1,0,-3),kadd(KRANC_GFOFFSET3D(u,-3,0,1),KRANC_GFOFFSET3D(u,3,0,-1)))),ToReal(-21504),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,-3),kadd(KRANC_GFOFFSET3D(u,2,0,3),kadd(KRANC_GFOFFSET3D(u,-3,0,-2),KRANC_GFOFFSET3D(u,3,0,2)))),ToReal(-5376),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,-4),kadd(KRANC_GFOFFSET3D(u,1,0,4),kadd(KRANC_GFOFFSET3D(u,-4,0,-1),KRANC_GFOFFSET3D(u,4,0,1)))),ToReal(-2016),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,0,3),KRANC_GFOFFSET3D(u,3,0,-3)),ToReal(-1024),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,4),kadd(KRANC_GFOFFSET3D(u,2,0,-4),kadd(KRANC_GFOFFSET3D(u,-4,0,2),KRANC_GFOFFSET3D(u,4,0,-2)))),ToReal(-504),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,0,-4),kadd(KRANC_GFOFFSET3D(u,3,0,4),kadd(KRANC_GFOFFSET3D(u,-4,0,-3),KRANC_GFOFFSET3D(u,4,0,3)))),ToReal(-96),kmadd(kadd(KRANC_GFOFFSET3D(u,-4,0,4),KRANC_GFOFFSET3D(u,4,0,-4)),ToReal(-9),kmadd(kadd(KRANC_GFOFFSET3D(u,-4,0,-4),KRANC_GFOFFSET3D(u,4,0,4)),ToReal(9),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,0,4),kadd(KRANC_GFOFFSET3D(u,3,0,-4),kadd(KRANC_GFOFFSET3D(u,-4,0,3),KRANC_GFOFFSET3D(u,4,0,-3)))),ToReal(96),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,-4),kadd(KRANC_GFOFFSET3D(u,2,0,4),kadd(KRANC_GFOFFSET3D(u,-4,0,-2),KRANC_GFOFFSET3D(u,4,0,2)))),ToReal(504),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,0,-3),KRANC_GFOFFSET3D(u,3,0,3)),ToReal(1024),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,4),kadd(KRANC_GFOFFSET3D(u,1,0,-4),kadd(KRANC_GFOFFSET3D(u,-4,0,1),KRANC_GFOFFSET3D(u,4,0,-1)))),ToReal(2016),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,3),kadd(KRANC_GFOFFSET3D(u,2,0,-3),kadd(KRANC_GFOFFSET3D(u,-3,0,2),KRANC_GFOFFSET3D(u,3,0,-2)))),ToReal(5376),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,-3),kadd(KRANC_GFOFFSET3D(u,1,0,3),kadd(KRANC_GFOFFSET3D(u,-3,0,-1),KRANC_GFOFFSET3D(u,3,0,1)))),ToReal(21504),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,-2),KRANC_GFOFFSET3D(u,2,0,2)),ToReal(28224),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,2),kadd(KRANC_GFOFFSET3D(u,1,0,-2),kadd(KRANC_GFOFFSET3D(u,-2,0,1),KRANC_GFOFFSET3D(u,2,0,-1)))),ToReal(112896),kmul(kadd(KRANC_GFOFFSET3D(u,-1,0,-1),KRANC_GFOFFSET3D(u,1,0,1)),ToReal(451584)))))))))))))))))))))))
+#else
+# define PDstandardNthfdOrder831(u) (PDstandardNthfdOrder831_impl(u,p1o705600dxdz,cdj,cdk))
+static CCTK_REAL_VEC PDstandardNthfdOrder831_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o705600dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDstandardNthfdOrder831_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o705600dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o705600dxdz,kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,1),KRANC_GFOFFSET3D(u,1,0,-1)),ToReal(-451584),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,-2),kadd(KRANC_GFOFFSET3D(u,1,0,2),kadd(KRANC_GFOFFSET3D(u,-2,0,-1),KRANC_GFOFFSET3D(u,2,0,1)))),ToReal(-112896),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,2),KRANC_GFOFFSET3D(u,2,0,-2)),ToReal(-28224),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,3),kadd(KRANC_GFOFFSET3D(u,1,0,-3),kadd(KRANC_GFOFFSET3D(u,-3,0,1),KRANC_GFOFFSET3D(u,3,0,-1)))),ToReal(-21504),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,-3),kadd(KRANC_GFOFFSET3D(u,2,0,3),kadd(KRANC_GFOFFSET3D(u,-3,0,-2),KRANC_GFOFFSET3D(u,3,0,2)))),ToReal(-5376),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,-4),kadd(KRANC_GFOFFSET3D(u,1,0,4),kadd(KRANC_GFOFFSET3D(u,-4,0,-1),KRANC_GFOFFSET3D(u,4,0,1)))),ToReal(-2016),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,0,3),KRANC_GFOFFSET3D(u,3,0,-3)),ToReal(-1024),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,4),kadd(KRANC_GFOFFSET3D(u,2,0,-4),kadd(KRANC_GFOFFSET3D(u,-4,0,2),KRANC_GFOFFSET3D(u,4,0,-2)))),ToReal(-504),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,0,-4),kadd(KRANC_GFOFFSET3D(u,3,0,4),kadd(KRANC_GFOFFSET3D(u,-4,0,-3),KRANC_GFOFFSET3D(u,4,0,3)))),ToReal(-96),kmadd(kadd(KRANC_GFOFFSET3D(u,-4,0,4),KRANC_GFOFFSET3D(u,4,0,-4)),ToReal(-9),kmadd(kadd(KRANC_GFOFFSET3D(u,-4,0,-4),KRANC_GFOFFSET3D(u,4,0,4)),ToReal(9),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,0,4),kadd(KRANC_GFOFFSET3D(u,3,0,-4),kadd(KRANC_GFOFFSET3D(u,-4,0,3),KRANC_GFOFFSET3D(u,4,0,-3)))),ToReal(96),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,-4),kadd(KRANC_GFOFFSET3D(u,2,0,4),kadd(KRANC_GFOFFSET3D(u,-4,0,-2),KRANC_GFOFFSET3D(u,4,0,2)))),ToReal(504),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,0,-3),KRANC_GFOFFSET3D(u,3,0,3)),ToReal(1024),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,4),kadd(KRANC_GFOFFSET3D(u,1,0,-4),kadd(KRANC_GFOFFSET3D(u,-4,0,1),KRANC_GFOFFSET3D(u,4,0,-1)))),ToReal(2016),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,3),kadd(KRANC_GFOFFSET3D(u,2,0,-3),kadd(KRANC_GFOFFSET3D(u,-3,0,2),KRANC_GFOFFSET3D(u,3,0,-2)))),ToReal(5376),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,-3),kadd(KRANC_GFOFFSET3D(u,1,0,3),kadd(KRANC_GFOFFSET3D(u,-3,0,-1),KRANC_GFOFFSET3D(u,3,0,1)))),ToReal(21504),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,-2),KRANC_GFOFFSET3D(u,2,0,2)),ToReal(28224),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,2),kadd(KRANC_GFOFFSET3D(u,1,0,-2),kadd(KRANC_GFOFFSET3D(u,-2,0,1),KRANC_GFOFFSET3D(u,2,0,-1)))),ToReal(112896),kmul(kadd(KRANC_GFOFFSET3D(u,-1,0,-1),KRANC_GFOFFSET3D(u,1,0,1)),ToReal(451584))))))))))))))))))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDstandardNthfdOrder832(u) (kmul(p1o705600dydz,kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,1),KRANC_GFOFFSET3D(u,0,1,-1)),ToReal(-451584),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,-2),kadd(KRANC_GFOFFSET3D(u,0,1,2),kadd(KRANC_GFOFFSET3D(u,0,-2,-1),KRANC_GFOFFSET3D(u,0,2,1)))),ToReal(-112896),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,2),KRANC_GFOFFSET3D(u,0,2,-2)),ToReal(-28224),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,3),kadd(KRANC_GFOFFSET3D(u,0,1,-3),kadd(KRANC_GFOFFSET3D(u,0,-3,1),KRANC_GFOFFSET3D(u,0,3,-1)))),ToReal(-21504),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,-3),kadd(KRANC_GFOFFSET3D(u,0,2,3),kadd(KRANC_GFOFFSET3D(u,0,-3,-2),KRANC_GFOFFSET3D(u,0,3,2)))),ToReal(-5376),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,-4),kadd(KRANC_GFOFFSET3D(u,0,1,4),kadd(KRANC_GFOFFSET3D(u,0,-4,-1),KRANC_GFOFFSET3D(u,0,4,1)))),ToReal(-2016),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-3,3),KRANC_GFOFFSET3D(u,0,3,-3)),ToReal(-1024),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,4),kadd(KRANC_GFOFFSET3D(u,0,2,-4),kadd(KRANC_GFOFFSET3D(u,0,-4,2),KRANC_GFOFFSET3D(u,0,4,-2)))),ToReal(-504),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-3,-4),kadd(KRANC_GFOFFSET3D(u,0,3,4),kadd(KRANC_GFOFFSET3D(u,0,-4,-3),KRANC_GFOFFSET3D(u,0,4,3)))),ToReal(-96),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-4,4),KRANC_GFOFFSET3D(u,0,4,-4)),ToReal(-9),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-4,-4),KRANC_GFOFFSET3D(u,0,4,4)),ToReal(9),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-3,4),kadd(KRANC_GFOFFSET3D(u,0,3,-4),kadd(KRANC_GFOFFSET3D(u,0,-4,3),KRANC_GFOFFSET3D(u,0,4,-3)))),ToReal(96),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,-4),kadd(KRANC_GFOFFSET3D(u,0,2,4),kadd(KRANC_GFOFFSET3D(u,0,-4,-2),KRANC_GFOFFSET3D(u,0,4,2)))),ToReal(504),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-3,-3),KRANC_GFOFFSET3D(u,0,3,3)),ToReal(1024),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,4),kadd(KRANC_GFOFFSET3D(u,0,1,-4),kadd(KRANC_GFOFFSET3D(u,0,-4,1),KRANC_GFOFFSET3D(u,0,4,-1)))),ToReal(2016),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,3),kadd(KRANC_GFOFFSET3D(u,0,2,-3),kadd(KRANC_GFOFFSET3D(u,0,-3,2),KRANC_GFOFFSET3D(u,0,3,-2)))),ToReal(5376),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,-3),kadd(KRANC_GFOFFSET3D(u,0,1,3),kadd(KRANC_GFOFFSET3D(u,0,-3,-1),KRANC_GFOFFSET3D(u,0,3,1)))),ToReal(21504),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,-2),KRANC_GFOFFSET3D(u,0,2,2)),ToReal(28224),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,2),kadd(KRANC_GFOFFSET3D(u,0,1,-2),kadd(KRANC_GFOFFSET3D(u,0,-2,1),KRANC_GFOFFSET3D(u,0,2,-1)))),ToReal(112896),kmul(kadd(KRANC_GFOFFSET3D(u,0,-1,-1),KRANC_GFOFFSET3D(u,0,1,1)),ToReal(451584)))))))))))))))))))))))
+#else
+# define PDstandardNthfdOrder832(u) (PDstandardNthfdOrder832_impl(u,p1o705600dydz,cdj,cdk))
+static CCTK_REAL_VEC PDstandardNthfdOrder832_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o705600dydz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDstandardNthfdOrder832_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o705600dydz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o705600dydz,kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,1),KRANC_GFOFFSET3D(u,0,1,-1)),ToReal(-451584),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,-2),kadd(KRANC_GFOFFSET3D(u,0,1,2),kadd(KRANC_GFOFFSET3D(u,0,-2,-1),KRANC_GFOFFSET3D(u,0,2,1)))),ToReal(-112896),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,2),KRANC_GFOFFSET3D(u,0,2,-2)),ToReal(-28224),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,3),kadd(KRANC_GFOFFSET3D(u,0,1,-3),kadd(KRANC_GFOFFSET3D(u,0,-3,1),KRANC_GFOFFSET3D(u,0,3,-1)))),ToReal(-21504),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,-3),kadd(KRANC_GFOFFSET3D(u,0,2,3),kadd(KRANC_GFOFFSET3D(u,0,-3,-2),KRANC_GFOFFSET3D(u,0,3,2)))),ToReal(-5376),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,-4),kadd(KRANC_GFOFFSET3D(u,0,1,4),kadd(KRANC_GFOFFSET3D(u,0,-4,-1),KRANC_GFOFFSET3D(u,0,4,1)))),ToReal(-2016),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-3,3),KRANC_GFOFFSET3D(u,0,3,-3)),ToReal(-1024),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,4),kadd(KRANC_GFOFFSET3D(u,0,2,-4),kadd(KRANC_GFOFFSET3D(u,0,-4,2),KRANC_GFOFFSET3D(u,0,4,-2)))),ToReal(-504),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-3,-4),kadd(KRANC_GFOFFSET3D(u,0,3,4),kadd(KRANC_GFOFFSET3D(u,0,-4,-3),KRANC_GFOFFSET3D(u,0,4,3)))),ToReal(-96),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-4,4),KRANC_GFOFFSET3D(u,0,4,-4)),ToReal(-9),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-4,-4),KRANC_GFOFFSET3D(u,0,4,4)),ToReal(9),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-3,4),kadd(KRANC_GFOFFSET3D(u,0,3,-4),kadd(KRANC_GFOFFSET3D(u,0,-4,3),KRANC_GFOFFSET3D(u,0,4,-3)))),ToReal(96),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,-4),kadd(KRANC_GFOFFSET3D(u,0,2,4),kadd(KRANC_GFOFFSET3D(u,0,-4,-2),KRANC_GFOFFSET3D(u,0,4,2)))),ToReal(504),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-3,-3),KRANC_GFOFFSET3D(u,0,3,3)),ToReal(1024),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,4),kadd(KRANC_GFOFFSET3D(u,0,1,-4),kadd(KRANC_GFOFFSET3D(u,0,-4,1),KRANC_GFOFFSET3D(u,0,4,-1)))),ToReal(2016),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,3),kadd(KRANC_GFOFFSET3D(u,0,2,-3),kadd(KRANC_GFOFFSET3D(u,0,-3,2),KRANC_GFOFFSET3D(u,0,3,-2)))),ToReal(5376),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,-3),kadd(KRANC_GFOFFSET3D(u,0,1,3),kadd(KRANC_GFOFFSET3D(u,0,-3,-1),KRANC_GFOFFSET3D(u,0,3,1)))),ToReal(21504),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,-2),KRANC_GFOFFSET3D(u,0,2,2)),ToReal(28224),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,2),kadd(KRANC_GFOFFSET3D(u,0,1,-2),kadd(KRANC_GFOFFSET3D(u,0,-2,1),KRANC_GFOFFSET3D(u,0,2,-1)))),ToReal(112896),kmul(kadd(KRANC_GFOFFSET3D(u,0,-1,-1),KRANC_GFOFFSET3D(u,0,1,1)),ToReal(451584))))))))))))))))))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDdissipationNthfdOrder21(u) (kmul(p1o16dx,kadd(KRANC_GFOFFSET3D(u,-2,0,0),kadd(KRANC_GFOFFSET3D(u,2,0,0),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,0),KRANC_GFOFFSET3D(u,1,0,0)),ToReal(-4),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(6)))))))
+#else
+# define PDdissipationNthfdOrder21(u) (PDdissipationNthfdOrder21_impl(u,p1o16dx,cdj,cdk))
+static CCTK_REAL_VEC PDdissipationNthfdOrder21_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o16dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDdissipationNthfdOrder21_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o16dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o16dx,kadd(KRANC_GFOFFSET3D(u,-2,0,0),kadd(KRANC_GFOFFSET3D(u,2,0,0),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,0),KRANC_GFOFFSET3D(u,1,0,0)),ToReal(-4),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(6))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDdissipationNthfdOrder22(u) (kmul(p1o16dy,kadd(KRANC_GFOFFSET3D(u,0,-2,0),kadd(KRANC_GFOFFSET3D(u,0,2,0),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,0),KRANC_GFOFFSET3D(u,0,1,0)),ToReal(-4),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(6)))))))
+#else
+# define PDdissipationNthfdOrder22(u) (PDdissipationNthfdOrder22_impl(u,p1o16dy,cdj,cdk))
+static CCTK_REAL_VEC PDdissipationNthfdOrder22_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o16dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDdissipationNthfdOrder22_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o16dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o16dy,kadd(KRANC_GFOFFSET3D(u,0,-2,0),kadd(KRANC_GFOFFSET3D(u,0,2,0),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,0),KRANC_GFOFFSET3D(u,0,1,0)),ToReal(-4),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(6))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDdissipationNthfdOrder23(u) (kmul(p1o16dz,kadd(KRANC_GFOFFSET3D(u,0,0,-2),kadd(KRANC_GFOFFSET3D(u,0,0,2),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-1),KRANC_GFOFFSET3D(u,0,0,1)),ToReal(-4),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(6)))))))
+#else
+# define PDdissipationNthfdOrder23(u) (PDdissipationNthfdOrder23_impl(u,p1o16dz,cdj,cdk))
+static CCTK_REAL_VEC PDdissipationNthfdOrder23_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o16dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDdissipationNthfdOrder23_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o16dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o16dz,kadd(KRANC_GFOFFSET3D(u,0,0,-2),kadd(KRANC_GFOFFSET3D(u,0,0,2),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-1),KRANC_GFOFFSET3D(u,0,0,1)),ToReal(-4),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(6))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDdissipationNthfdOrder41(u) (kmul(p1o64dx,kadd(KRANC_GFOFFSET3D(u,-3,0,0),kadd(KRANC_GFOFFSET3D(u,3,0,0),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-20),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,0),KRANC_GFOFFSET3D(u,2,0,0)),ToReal(-6),kmul(kadd(KRANC_GFOFFSET3D(u,-1,0,0),KRANC_GFOFFSET3D(u,1,0,0)),ToReal(15))))))))
+#else
+# define PDdissipationNthfdOrder41(u) (PDdissipationNthfdOrder41_impl(u,p1o64dx,cdj,cdk))
+static CCTK_REAL_VEC PDdissipationNthfdOrder41_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o64dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDdissipationNthfdOrder41_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o64dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o64dx,kadd(KRANC_GFOFFSET3D(u,-3,0,0),kadd(KRANC_GFOFFSET3D(u,3,0,0),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-20),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,0),KRANC_GFOFFSET3D(u,2,0,0)),ToReal(-6),kmul(kadd(KRANC_GFOFFSET3D(u,-1,0,0),KRANC_GFOFFSET3D(u,1,0,0)),ToReal(15)))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDdissipationNthfdOrder42(u) (kmul(p1o64dy,kadd(KRANC_GFOFFSET3D(u,0,-3,0),kadd(KRANC_GFOFFSET3D(u,0,3,0),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-20),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,0),KRANC_GFOFFSET3D(u,0,2,0)),ToReal(-6),kmul(kadd(KRANC_GFOFFSET3D(u,0,-1,0),KRANC_GFOFFSET3D(u,0,1,0)),ToReal(15))))))))
+#else
+# define PDdissipationNthfdOrder42(u) (PDdissipationNthfdOrder42_impl(u,p1o64dy,cdj,cdk))
+static CCTK_REAL_VEC PDdissipationNthfdOrder42_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o64dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDdissipationNthfdOrder42_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o64dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o64dy,kadd(KRANC_GFOFFSET3D(u,0,-3,0),kadd(KRANC_GFOFFSET3D(u,0,3,0),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-20),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,0),KRANC_GFOFFSET3D(u,0,2,0)),ToReal(-6),kmul(kadd(KRANC_GFOFFSET3D(u,0,-1,0),KRANC_GFOFFSET3D(u,0,1,0)),ToReal(15)))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDdissipationNthfdOrder43(u) (kmul(p1o64dz,kadd(KRANC_GFOFFSET3D(u,0,0,-3),kadd(KRANC_GFOFFSET3D(u,0,0,3),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-20),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-2),KRANC_GFOFFSET3D(u,0,0,2)),ToReal(-6),kmul(kadd(KRANC_GFOFFSET3D(u,0,0,-1),KRANC_GFOFFSET3D(u,0,0,1)),ToReal(15))))))))
+#else
+# define PDdissipationNthfdOrder43(u) (PDdissipationNthfdOrder43_impl(u,p1o64dz,cdj,cdk))
+static CCTK_REAL_VEC PDdissipationNthfdOrder43_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o64dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDdissipationNthfdOrder43_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o64dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o64dz,kadd(KRANC_GFOFFSET3D(u,0,0,-3),kadd(KRANC_GFOFFSET3D(u,0,0,3),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-20),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-2),KRANC_GFOFFSET3D(u,0,0,2)),ToReal(-6),kmul(kadd(KRANC_GFOFFSET3D(u,0,0,-1),KRANC_GFOFFSET3D(u,0,0,1)),ToReal(15)))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDdissipationNthfdOrder61(u) (kmul(p1o256dx,kadd(KRANC_GFOFFSET3D(u,-4,0,0),kadd(KRANC_GFOFFSET3D(u,4,0,0),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,0),KRANC_GFOFFSET3D(u,1,0,0)),ToReal(-56),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,0,0),KRANC_GFOFFSET3D(u,3,0,0)),ToReal(-8),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,0),KRANC_GFOFFSET3D(u,2,0,0)),ToReal(28),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(70)))))))))
+#else
+# define PDdissipationNthfdOrder61(u) (PDdissipationNthfdOrder61_impl(u,p1o256dx,cdj,cdk))
+static CCTK_REAL_VEC PDdissipationNthfdOrder61_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o256dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDdissipationNthfdOrder61_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o256dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o256dx,kadd(KRANC_GFOFFSET3D(u,-4,0,0),kadd(KRANC_GFOFFSET3D(u,4,0,0),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,0),KRANC_GFOFFSET3D(u,1,0,0)),ToReal(-56),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,0,0),KRANC_GFOFFSET3D(u,3,0,0)),ToReal(-8),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,0),KRANC_GFOFFSET3D(u,2,0,0)),ToReal(28),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(70))))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDdissipationNthfdOrder62(u) (kmul(p1o256dy,kadd(KRANC_GFOFFSET3D(u,0,-4,0),kadd(KRANC_GFOFFSET3D(u,0,4,0),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,0),KRANC_GFOFFSET3D(u,0,1,0)),ToReal(-56),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-3,0),KRANC_GFOFFSET3D(u,0,3,0)),ToReal(-8),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,0),KRANC_GFOFFSET3D(u,0,2,0)),ToReal(28),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(70)))))))))
+#else
+# define PDdissipationNthfdOrder62(u) (PDdissipationNthfdOrder62_impl(u,p1o256dy,cdj,cdk))
+static CCTK_REAL_VEC PDdissipationNthfdOrder62_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o256dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDdissipationNthfdOrder62_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o256dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o256dy,kadd(KRANC_GFOFFSET3D(u,0,-4,0),kadd(KRANC_GFOFFSET3D(u,0,4,0),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,0),KRANC_GFOFFSET3D(u,0,1,0)),ToReal(-56),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-3,0),KRANC_GFOFFSET3D(u,0,3,0)),ToReal(-8),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,0),KRANC_GFOFFSET3D(u,0,2,0)),ToReal(28),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(70))))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDdissipationNthfdOrder63(u) (kmul(p1o256dz,kadd(KRANC_GFOFFSET3D(u,0,0,-4),kadd(KRANC_GFOFFSET3D(u,0,0,4),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-1),KRANC_GFOFFSET3D(u,0,0,1)),ToReal(-56),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-3),KRANC_GFOFFSET3D(u,0,0,3)),ToReal(-8),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-2),KRANC_GFOFFSET3D(u,0,0,2)),ToReal(28),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(70)))))))))
+#else
+# define PDdissipationNthfdOrder63(u) (PDdissipationNthfdOrder63_impl(u,p1o256dz,cdj,cdk))
+static CCTK_REAL_VEC PDdissipationNthfdOrder63_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o256dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDdissipationNthfdOrder63_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o256dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o256dz,kadd(KRANC_GFOFFSET3D(u,0,0,-4),kadd(KRANC_GFOFFSET3D(u,0,0,4),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-1),KRANC_GFOFFSET3D(u,0,0,1)),ToReal(-56),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-3),KRANC_GFOFFSET3D(u,0,0,3)),ToReal(-8),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-2),KRANC_GFOFFSET3D(u,0,0,2)),ToReal(28),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(70))))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDdissipationNthfdOrder81(u) (kmul(p1o1024dx,kadd(KRANC_GFOFFSET3D(u,-5,0,0),kadd(KRANC_GFOFFSET3D(u,5,0,0),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-252),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,0),KRANC_GFOFFSET3D(u,2,0,0)),ToReal(-120),kmadd(kadd(KRANC_GFOFFSET3D(u,-4,0,0),KRANC_GFOFFSET3D(u,4,0,0)),ToReal(-10),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,0,0),KRANC_GFOFFSET3D(u,3,0,0)),ToReal(45),kmul(kadd(KRANC_GFOFFSET3D(u,-1,0,0),KRANC_GFOFFSET3D(u,1,0,0)),ToReal(210))))))))))
+#else
+# define PDdissipationNthfdOrder81(u) (PDdissipationNthfdOrder81_impl(u,p1o1024dx,cdj,cdk))
+static CCTK_REAL_VEC PDdissipationNthfdOrder81_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o1024dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDdissipationNthfdOrder81_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o1024dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o1024dx,kadd(KRANC_GFOFFSET3D(u,-5,0,0),kadd(KRANC_GFOFFSET3D(u,5,0,0),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-252),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,0),KRANC_GFOFFSET3D(u,2,0,0)),ToReal(-120),kmadd(kadd(KRANC_GFOFFSET3D(u,-4,0,0),KRANC_GFOFFSET3D(u,4,0,0)),ToReal(-10),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,0,0),KRANC_GFOFFSET3D(u,3,0,0)),ToReal(45),kmul(kadd(KRANC_GFOFFSET3D(u,-1,0,0),KRANC_GFOFFSET3D(u,1,0,0)),ToReal(210)))))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDdissipationNthfdOrder82(u) (kmul(p1o1024dy,kadd(KRANC_GFOFFSET3D(u,0,-5,0),kadd(KRANC_GFOFFSET3D(u,0,5,0),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-252),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,0),KRANC_GFOFFSET3D(u,0,2,0)),ToReal(-120),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-4,0),KRANC_GFOFFSET3D(u,0,4,0)),ToReal(-10),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-3,0),KRANC_GFOFFSET3D(u,0,3,0)),ToReal(45),kmul(kadd(KRANC_GFOFFSET3D(u,0,-1,0),KRANC_GFOFFSET3D(u,0,1,0)),ToReal(210))))))))))
+#else
+# define PDdissipationNthfdOrder82(u) (PDdissipationNthfdOrder82_impl(u,p1o1024dy,cdj,cdk))
+static CCTK_REAL_VEC PDdissipationNthfdOrder82_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o1024dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDdissipationNthfdOrder82_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o1024dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o1024dy,kadd(KRANC_GFOFFSET3D(u,0,-5,0),kadd(KRANC_GFOFFSET3D(u,0,5,0),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-252),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,0),KRANC_GFOFFSET3D(u,0,2,0)),ToReal(-120),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-4,0),KRANC_GFOFFSET3D(u,0,4,0)),ToReal(-10),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-3,0),KRANC_GFOFFSET3D(u,0,3,0)),ToReal(45),kmul(kadd(KRANC_GFOFFSET3D(u,0,-1,0),KRANC_GFOFFSET3D(u,0,1,0)),ToReal(210)))))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDdissipationNthfdOrder83(u) (kmul(p1o1024dz,kadd(KRANC_GFOFFSET3D(u,0,0,-5),kadd(KRANC_GFOFFSET3D(u,0,0,5),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-252),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-2),KRANC_GFOFFSET3D(u,0,0,2)),ToReal(-120),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-4),KRANC_GFOFFSET3D(u,0,0,4)),ToReal(-10),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-3),KRANC_GFOFFSET3D(u,0,0,3)),ToReal(45),kmul(kadd(KRANC_GFOFFSET3D(u,0,0,-1),KRANC_GFOFFSET3D(u,0,0,1)),ToReal(210))))))))))
+#else
+# define PDdissipationNthfdOrder83(u) (PDdissipationNthfdOrder83_impl(u,p1o1024dz,cdj,cdk))
+static CCTK_REAL_VEC PDdissipationNthfdOrder83_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o1024dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDdissipationNthfdOrder83_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o1024dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o1024dz,kadd(KRANC_GFOFFSET3D(u,0,0,-5),kadd(KRANC_GFOFFSET3D(u,0,0,5),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-252),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-2),KRANC_GFOFFSET3D(u,0,0,2)),ToReal(-120),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-4),KRANC_GFOFFSET3D(u,0,0,4)),ToReal(-10),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-3),KRANC_GFOFFSET3D(u,0,0,3)),ToReal(45),kmul(kadd(KRANC_GFOFFSET3D(u,0,0,-1),KRANC_GFOFFSET3D(u,0,0,1)),ToReal(210)))))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDupwindNthfdOrder21(u) (kmul(pm1o2dx,kmul(dir1,kadd(KRANC_GFOFFSET3D(u,2,0,0),kmadd(KRANC_GFOFFSET3D(u,1,0,0),ToReal(-4),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(3)))))))
+#else
+# define PDupwindNthfdOrder21(u) (PDupwindNthfdOrder21_impl(u,pm1o2dx,cdj,cdk))
+static CCTK_REAL_VEC PDupwindNthfdOrder21_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o2dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDupwindNthfdOrder21_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o2dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{ assert(0); return ToReal(1e30); /* ERROR */ }
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDupwindNthfdOrder41(u) (kmul(p1o12dx,kmul(dir1,kadd(KRANC_GFOFFSET3D(u,3,0,0),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-10),kmadd(KRANC_GFOFFSET3D(u,2,0,0),ToReal(-6),kmadd(KRANC_GFOFFSET3D(u,-1,0,0),ToReal(-3),kmul(KRANC_GFOFFSET3D(u,1,0,0),ToReal(18)))))))))
+#else
+# define PDupwindNthfdOrder41(u) (PDupwindNthfdOrder41_impl(u,p1o12dx,cdj,cdk))
+static CCTK_REAL_VEC PDupwindNthfdOrder41_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o12dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDupwindNthfdOrder41_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o12dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{ assert(0); return ToReal(1e30); /* ERROR */ }
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDupwindNthfdOrder61(u) (kmul(pm1o60dx,kmul(dir1,kadd(KRANC_GFOFFSET3D(u,4,0,0),kmadd(KRANC_GFOFFSET3D(u,1,0,0),ToReal(-80),kmadd(KRANC_GFOFFSET3D(u,3,0,0),ToReal(-8),kmadd(KRANC_GFOFFSET3D(u,-2,0,0),ToReal(-2),kmadd(KRANC_GFOFFSET3D(u,-1,0,0),ToReal(24),kmadd(KRANC_GFOFFSET3D(u,2,0,0),ToReal(30),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(35)))))))))))
+#else
+# define PDupwindNthfdOrder61(u) (PDupwindNthfdOrder61_impl(u,pm1o60dx,cdj,cdk))
+static CCTK_REAL_VEC PDupwindNthfdOrder61_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o60dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDupwindNthfdOrder61_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o60dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{ assert(0); return ToReal(1e30); /* ERROR */ }
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDupwindNthfdOrder81(u) (kmul(p1o840dx,kmul(dir1,kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-378),kmadd(KRANC_GFOFFSET3D(u,5,0,0),ToReal(3),kmul(ToReal(-5),kadd(KRANC_GFOFFSET3D(u,-3,0,0),kmadd(KRANC_GFOFFSET3D(u,1,0,0),ToReal(-210),kmadd(KRANC_GFOFFSET3D(u,3,0,0),ToReal(-28),kmadd(KRANC_GFOFFSET3D(u,-2,0,0),ToReal(-12),kmadd(KRANC_GFOFFSET3D(u,4,0,0),ToReal(6),kmul(kadd(KRANC_GFOFFSET3D(u,-1,0,0),KRANC_GFOFFSET3D(u,2,0,0)),ToReal(84)))))))))))))
+#else
+# define PDupwindNthfdOrder81(u) (PDupwindNthfdOrder81_impl(u,p1o840dx,cdj,cdk))
+static CCTK_REAL_VEC PDupwindNthfdOrder81_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o840dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDupwindNthfdOrder81_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o840dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{ assert(0); return ToReal(1e30); /* ERROR */ }
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDupwindNthAntifdOrder21(u) (kmul(p1o4dx,kadd(KRANC_GFOFFSET3D(u,-2,0,0),kmadd(KRANC_GFOFFSET3D(u,-1,0,0),ToReal(-4),kmsub(KRANC_GFOFFSET3D(u,1,0,0),ToReal(4),KRANC_GFOFFSET3D(u,2,0,0))))))
+#else
+# define PDupwindNthAntifdOrder21(u) (PDupwindNthAntifdOrder21_impl(u,p1o4dx,cdj,cdk))
+static CCTK_REAL_VEC PDupwindNthAntifdOrder21_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o4dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDupwindNthAntifdOrder21_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o4dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o4dx,kadd(KRANC_GFOFFSET3D(u,-2,0,0),kmadd(KRANC_GFOFFSET3D(u,-1,0,0),ToReal(-4),kmsub(KRANC_GFOFFSET3D(u,1,0,0),ToReal(4),KRANC_GFOFFSET3D(u,2,0,0)))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDupwindNthAntifdOrder41(u) (kmul(p1o24dx,kadd(KRANC_GFOFFSET3D(u,3,0,0),kmadd(KRANC_GFOFFSET3D(u,-1,0,0),ToReal(-21),kmadd(KRANC_GFOFFSET3D(u,2,0,0),ToReal(-6),ksub(kmadd(KRANC_GFOFFSET3D(u,-2,0,0),ToReal(6),kmul(KRANC_GFOFFSET3D(u,1,0,0),ToReal(21))),KRANC_GFOFFSET3D(u,-3,0,0)))))))
+#else
+# define PDupwindNthAntifdOrder41(u) (PDupwindNthAntifdOrder41_impl(u,p1o24dx,cdj,cdk))
+static CCTK_REAL_VEC PDupwindNthAntifdOrder41_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o24dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDupwindNthAntifdOrder41_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o24dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o24dx,kadd(KRANC_GFOFFSET3D(u,3,0,0),kmadd(KRANC_GFOFFSET3D(u,-1,0,0),ToReal(-21),kmadd(KRANC_GFOFFSET3D(u,2,0,0),ToReal(-6),ksub(kmadd(KRANC_GFOFFSET3D(u,-2,0,0),ToReal(6),kmul(KRANC_GFOFFSET3D(u,1,0,0),ToReal(21))),KRANC_GFOFFSET3D(u,-3,0,0))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDupwindNthAntifdOrder61(u) (kmul(p1o120dx,kadd(KRANC_GFOFFSET3D(u,-4,0,0),kmadd(KRANC_GFOFFSET3D(u,-1,0,0),ToReal(-104),kmadd(KRANC_GFOFFSET3D(u,2,0,0),ToReal(-32),kmadd(KRANC_GFOFFSET3D(u,-3,0,0),ToReal(-8),ksub(kmadd(KRANC_GFOFFSET3D(u,3,0,0),ToReal(8),kmadd(KRANC_GFOFFSET3D(u,-2,0,0),ToReal(32),kmul(KRANC_GFOFFSET3D(u,1,0,0),ToReal(104)))),KRANC_GFOFFSET3D(u,4,0,0))))))))
+#else
+# define PDupwindNthAntifdOrder61(u) (PDupwindNthAntifdOrder61_impl(u,p1o120dx,cdj,cdk))
+static CCTK_REAL_VEC PDupwindNthAntifdOrder61_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o120dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDupwindNthAntifdOrder61_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o120dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o120dx,kadd(KRANC_GFOFFSET3D(u,-4,0,0),kmadd(KRANC_GFOFFSET3D(u,-1,0,0),ToReal(-104),kmadd(KRANC_GFOFFSET3D(u,2,0,0),ToReal(-32),kmadd(KRANC_GFOFFSET3D(u,-3,0,0),ToReal(-8),ksub(kmadd(KRANC_GFOFFSET3D(u,3,0,0),ToReal(8),kmadd(KRANC_GFOFFSET3D(u,-2,0,0),ToReal(32),kmul(KRANC_GFOFFSET3D(u,1,0,0),ToReal(104)))),KRANC_GFOFFSET3D(u,4,0,0)))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDupwindNthAntifdOrder81(u) (kmul(p1o1680dx,kmadd(KRANC_GFOFFSET3D(u,-1,0,0),ToReal(-1470),kmadd(KRANC_GFOFFSET3D(u,2,0,0),ToReal(-480),kmadd(KRANC_GFOFFSET3D(u,-3,0,0),ToReal(-145),kmadd(KRANC_GFOFFSET3D(u,4,0,0),ToReal(-30),kmadd(KRANC_GFOFFSET3D(u,-5,0,0),ToReal(-3),kmadd(KRANC_GFOFFSET3D(u,5,0,0),ToReal(3),kmadd(KRANC_GFOFFSET3D(u,-4,0,0),ToReal(30),kmadd(KRANC_GFOFFSET3D(u,3,0,0),ToReal(145),kmadd(KRANC_GFOFFSET3D(u,-2,0,0),ToReal(480),kmul(KRANC_GFOFFSET3D(u,1,0,0),ToReal(1470)))))))))))))
+#else
+# define PDupwindNthAntifdOrder81(u) (PDupwindNthAntifdOrder81_impl(u,p1o1680dx,cdj,cdk))
+static CCTK_REAL_VEC PDupwindNthAntifdOrder81_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o1680dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDupwindNthAntifdOrder81_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o1680dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o1680dx,kmadd(KRANC_GFOFFSET3D(u,-1,0,0),ToReal(-1470),kmadd(KRANC_GFOFFSET3D(u,2,0,0),ToReal(-480),kmadd(KRANC_GFOFFSET3D(u,-3,0,0),ToReal(-145),kmadd(KRANC_GFOFFSET3D(u,4,0,0),ToReal(-30),kmadd(KRANC_GFOFFSET3D(u,-5,0,0),ToReal(-3),kmadd(KRANC_GFOFFSET3D(u,5,0,0),ToReal(3),kmadd(KRANC_GFOFFSET3D(u,-4,0,0),ToReal(30),kmadd(KRANC_GFOFFSET3D(u,3,0,0),ToReal(145),kmadd(KRANC_GFOFFSET3D(u,-2,0,0),ToReal(480),kmul(KRANC_GFOFFSET3D(u,1,0,0),ToReal(1470))))))))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDupwindNthSymmfdOrder21(u) (kmul(pm1o4dx,kadd(KRANC_GFOFFSET3D(u,-2,0,0),kadd(KRANC_GFOFFSET3D(u,2,0,0),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,0),KRANC_GFOFFSET3D(u,1,0,0)),ToReal(-4),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(6)))))))
+#else
+# define PDupwindNthSymmfdOrder21(u) (PDupwindNthSymmfdOrder21_impl(u,pm1o4dx,cdj,cdk))
+static CCTK_REAL_VEC PDupwindNthSymmfdOrder21_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o4dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDupwindNthSymmfdOrder21_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o4dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(pm1o4dx,kadd(KRANC_GFOFFSET3D(u,-2,0,0),kadd(KRANC_GFOFFSET3D(u,2,0,0),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,0),KRANC_GFOFFSET3D(u,1,0,0)),ToReal(-4),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(6))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDupwindNthSymmfdOrder41(u) (kmul(p1o24dx,kadd(KRANC_GFOFFSET3D(u,-3,0,0),kadd(KRANC_GFOFFSET3D(u,3,0,0),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-20),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,0),KRANC_GFOFFSET3D(u,2,0,0)),ToReal(-6),kmul(kadd(KRANC_GFOFFSET3D(u,-1,0,0),KRANC_GFOFFSET3D(u,1,0,0)),ToReal(15))))))))
+#else
+# define PDupwindNthSymmfdOrder41(u) (PDupwindNthSymmfdOrder41_impl(u,p1o24dx,cdj,cdk))
+static CCTK_REAL_VEC PDupwindNthSymmfdOrder41_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o24dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDupwindNthSymmfdOrder41_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o24dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o24dx,kadd(KRANC_GFOFFSET3D(u,-3,0,0),kadd(KRANC_GFOFFSET3D(u,3,0,0),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-20),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,0),KRANC_GFOFFSET3D(u,2,0,0)),ToReal(-6),kmul(kadd(KRANC_GFOFFSET3D(u,-1,0,0),KRANC_GFOFFSET3D(u,1,0,0)),ToReal(15)))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDupwindNthSymmfdOrder61(u) (kmul(pm1o120dx,kadd(KRANC_GFOFFSET3D(u,-4,0,0),kadd(KRANC_GFOFFSET3D(u,4,0,0),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,0),KRANC_GFOFFSET3D(u,1,0,0)),ToReal(-56),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,0,0),KRANC_GFOFFSET3D(u,3,0,0)),ToReal(-8),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,0),KRANC_GFOFFSET3D(u,2,0,0)),ToReal(28),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(70)))))))))
+#else
+# define PDupwindNthSymmfdOrder61(u) (PDupwindNthSymmfdOrder61_impl(u,pm1o120dx,cdj,cdk))
+static CCTK_REAL_VEC PDupwindNthSymmfdOrder61_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o120dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDupwindNthSymmfdOrder61_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o120dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(pm1o120dx,kadd(KRANC_GFOFFSET3D(u,-4,0,0),kadd(KRANC_GFOFFSET3D(u,4,0,0),kmadd(kadd(KRANC_GFOFFSET3D(u,-1,0,0),KRANC_GFOFFSET3D(u,1,0,0)),ToReal(-56),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,0,0),KRANC_GFOFFSET3D(u,3,0,0)),ToReal(-8),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,0),KRANC_GFOFFSET3D(u,2,0,0)),ToReal(28),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(70))))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDupwindNthSymmfdOrder81(u) (kmul(p1o560dx,kadd(KRANC_GFOFFSET3D(u,-5,0,0),kadd(KRANC_GFOFFSET3D(u,5,0,0),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-252),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,0),KRANC_GFOFFSET3D(u,2,0,0)),ToReal(-120),kmadd(kadd(KRANC_GFOFFSET3D(u,-4,0,0),KRANC_GFOFFSET3D(u,4,0,0)),ToReal(-10),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,0,0),KRANC_GFOFFSET3D(u,3,0,0)),ToReal(45),kmul(kadd(KRANC_GFOFFSET3D(u,-1,0,0),KRANC_GFOFFSET3D(u,1,0,0)),ToReal(210))))))))))
+#else
+# define PDupwindNthSymmfdOrder81(u) (PDupwindNthSymmfdOrder81_impl(u,p1o560dx,cdj,cdk))
+static CCTK_REAL_VEC PDupwindNthSymmfdOrder81_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o560dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDupwindNthSymmfdOrder81_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o560dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o560dx,kadd(KRANC_GFOFFSET3D(u,-5,0,0),kadd(KRANC_GFOFFSET3D(u,5,0,0),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-252),kmadd(kadd(KRANC_GFOFFSET3D(u,-2,0,0),KRANC_GFOFFSET3D(u,2,0,0)),ToReal(-120),kmadd(kadd(KRANC_GFOFFSET3D(u,-4,0,0),KRANC_GFOFFSET3D(u,4,0,0)),ToReal(-10),kmadd(kadd(KRANC_GFOFFSET3D(u,-3,0,0),KRANC_GFOFFSET3D(u,3,0,0)),ToReal(45),kmul(kadd(KRANC_GFOFFSET3D(u,-1,0,0),KRANC_GFOFFSET3D(u,1,0,0)),ToReal(210)))))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDonesided1(u) (kmul(p1odx,kmul(dir1,ksub(KRANC_GFOFFSET3D(u,1,0,0),KRANC_GFOFFSET3D(u,0,0,0)))))
+#else
+# define PDonesided1(u) (PDonesided1_impl(u,p1odx,cdj,cdk))
+static CCTK_REAL_VEC PDonesided1_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1odx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDonesided1_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1odx, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{ assert(0); return ToReal(1e30); /* ERROR */ }
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDupwindNthfdOrder22(u) (kmul(pm1o2dy,kmul(dir2,kadd(KRANC_GFOFFSET3D(u,0,2,0),kmadd(KRANC_GFOFFSET3D(u,0,1,0),ToReal(-4),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(3)))))))
+#else
+# define PDupwindNthfdOrder22(u) (PDupwindNthfdOrder22_impl(u,pm1o2dy,cdj,cdk))
+static CCTK_REAL_VEC PDupwindNthfdOrder22_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o2dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDupwindNthfdOrder22_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o2dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{ assert(0); return ToReal(1e30); /* ERROR */ }
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDupwindNthfdOrder42(u) (kmul(p1o12dy,kmul(dir2,kadd(KRANC_GFOFFSET3D(u,0,3,0),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-10),kmadd(KRANC_GFOFFSET3D(u,0,2,0),ToReal(-6),kmadd(KRANC_GFOFFSET3D(u,0,-1,0),ToReal(-3),kmul(KRANC_GFOFFSET3D(u,0,1,0),ToReal(18)))))))))
+#else
+# define PDupwindNthfdOrder42(u) (PDupwindNthfdOrder42_impl(u,p1o12dy,cdj,cdk))
+static CCTK_REAL_VEC PDupwindNthfdOrder42_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o12dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDupwindNthfdOrder42_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o12dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{ assert(0); return ToReal(1e30); /* ERROR */ }
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDupwindNthfdOrder62(u) (kmul(pm1o60dy,kmul(dir2,kadd(KRANC_GFOFFSET3D(u,0,4,0),kmadd(KRANC_GFOFFSET3D(u,0,1,0),ToReal(-80),kmadd(KRANC_GFOFFSET3D(u,0,3,0),ToReal(-8),kmadd(KRANC_GFOFFSET3D(u,0,-2,0),ToReal(-2),kmadd(KRANC_GFOFFSET3D(u,0,-1,0),ToReal(24),kmadd(KRANC_GFOFFSET3D(u,0,2,0),ToReal(30),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(35)))))))))))
+#else
+# define PDupwindNthfdOrder62(u) (PDupwindNthfdOrder62_impl(u,pm1o60dy,cdj,cdk))
+static CCTK_REAL_VEC PDupwindNthfdOrder62_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o60dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDupwindNthfdOrder62_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o60dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{ assert(0); return ToReal(1e30); /* ERROR */ }
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDupwindNthfdOrder82(u) (kmul(p1o840dy,kmul(dir2,kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-378),kmadd(KRANC_GFOFFSET3D(u,0,5,0),ToReal(3),kmul(ToReal(-5),kadd(KRANC_GFOFFSET3D(u,0,-3,0),kmadd(KRANC_GFOFFSET3D(u,0,1,0),ToReal(-210),kmadd(KRANC_GFOFFSET3D(u,0,3,0),ToReal(-28),kmadd(KRANC_GFOFFSET3D(u,0,-2,0),ToReal(-12),kmadd(KRANC_GFOFFSET3D(u,0,4,0),ToReal(6),kmul(kadd(KRANC_GFOFFSET3D(u,0,-1,0),KRANC_GFOFFSET3D(u,0,2,0)),ToReal(84)))))))))))))
+#else
+# define PDupwindNthfdOrder82(u) (PDupwindNthfdOrder82_impl(u,p1o840dy,cdj,cdk))
+static CCTK_REAL_VEC PDupwindNthfdOrder82_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o840dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDupwindNthfdOrder82_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o840dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{ assert(0); return ToReal(1e30); /* ERROR */ }
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDupwindNthAntifdOrder22(u) (kmul(p1o4dy,kadd(KRANC_GFOFFSET3D(u,0,-2,0),kmadd(KRANC_GFOFFSET3D(u,0,-1,0),ToReal(-4),kmsub(KRANC_GFOFFSET3D(u,0,1,0),ToReal(4),KRANC_GFOFFSET3D(u,0,2,0))))))
+#else
+# define PDupwindNthAntifdOrder22(u) (PDupwindNthAntifdOrder22_impl(u,p1o4dy,cdj,cdk))
+static CCTK_REAL_VEC PDupwindNthAntifdOrder22_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o4dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDupwindNthAntifdOrder22_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o4dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o4dy,kadd(KRANC_GFOFFSET3D(u,0,-2,0),kmadd(KRANC_GFOFFSET3D(u,0,-1,0),ToReal(-4),kmsub(KRANC_GFOFFSET3D(u,0,1,0),ToReal(4),KRANC_GFOFFSET3D(u,0,2,0)))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDupwindNthAntifdOrder42(u) (kmul(p1o24dy,kadd(KRANC_GFOFFSET3D(u,0,3,0),kmadd(KRANC_GFOFFSET3D(u,0,-1,0),ToReal(-21),kmadd(KRANC_GFOFFSET3D(u,0,2,0),ToReal(-6),ksub(kmadd(KRANC_GFOFFSET3D(u,0,-2,0),ToReal(6),kmul(KRANC_GFOFFSET3D(u,0,1,0),ToReal(21))),KRANC_GFOFFSET3D(u,0,-3,0)))))))
+#else
+# define PDupwindNthAntifdOrder42(u) (PDupwindNthAntifdOrder42_impl(u,p1o24dy,cdj,cdk))
+static CCTK_REAL_VEC PDupwindNthAntifdOrder42_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o24dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDupwindNthAntifdOrder42_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o24dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o24dy,kadd(KRANC_GFOFFSET3D(u,0,3,0),kmadd(KRANC_GFOFFSET3D(u,0,-1,0),ToReal(-21),kmadd(KRANC_GFOFFSET3D(u,0,2,0),ToReal(-6),ksub(kmadd(KRANC_GFOFFSET3D(u,0,-2,0),ToReal(6),kmul(KRANC_GFOFFSET3D(u,0,1,0),ToReal(21))),KRANC_GFOFFSET3D(u,0,-3,0))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDupwindNthAntifdOrder62(u) (kmul(p1o120dy,kadd(KRANC_GFOFFSET3D(u,0,-4,0),kmadd(KRANC_GFOFFSET3D(u,0,-1,0),ToReal(-104),kmadd(KRANC_GFOFFSET3D(u,0,2,0),ToReal(-32),kmadd(KRANC_GFOFFSET3D(u,0,-3,0),ToReal(-8),ksub(kmadd(KRANC_GFOFFSET3D(u,0,3,0),ToReal(8),kmadd(KRANC_GFOFFSET3D(u,0,-2,0),ToReal(32),kmul(KRANC_GFOFFSET3D(u,0,1,0),ToReal(104)))),KRANC_GFOFFSET3D(u,0,4,0))))))))
+#else
+# define PDupwindNthAntifdOrder62(u) (PDupwindNthAntifdOrder62_impl(u,p1o120dy,cdj,cdk))
+static CCTK_REAL_VEC PDupwindNthAntifdOrder62_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o120dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDupwindNthAntifdOrder62_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o120dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o120dy,kadd(KRANC_GFOFFSET3D(u,0,-4,0),kmadd(KRANC_GFOFFSET3D(u,0,-1,0),ToReal(-104),kmadd(KRANC_GFOFFSET3D(u,0,2,0),ToReal(-32),kmadd(KRANC_GFOFFSET3D(u,0,-3,0),ToReal(-8),ksub(kmadd(KRANC_GFOFFSET3D(u,0,3,0),ToReal(8),kmadd(KRANC_GFOFFSET3D(u,0,-2,0),ToReal(32),kmul(KRANC_GFOFFSET3D(u,0,1,0),ToReal(104)))),KRANC_GFOFFSET3D(u,0,4,0)))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDupwindNthAntifdOrder82(u) (kmul(p1o1680dy,kmadd(KRANC_GFOFFSET3D(u,0,-1,0),ToReal(-1470),kmadd(KRANC_GFOFFSET3D(u,0,2,0),ToReal(-480),kmadd(KRANC_GFOFFSET3D(u,0,-3,0),ToReal(-145),kmadd(KRANC_GFOFFSET3D(u,0,4,0),ToReal(-30),kmadd(KRANC_GFOFFSET3D(u,0,-5,0),ToReal(-3),kmadd(KRANC_GFOFFSET3D(u,0,5,0),ToReal(3),kmadd(KRANC_GFOFFSET3D(u,0,-4,0),ToReal(30),kmadd(KRANC_GFOFFSET3D(u,0,3,0),ToReal(145),kmadd(KRANC_GFOFFSET3D(u,0,-2,0),ToReal(480),kmul(KRANC_GFOFFSET3D(u,0,1,0),ToReal(1470)))))))))))))
+#else
+# define PDupwindNthAntifdOrder82(u) (PDupwindNthAntifdOrder82_impl(u,p1o1680dy,cdj,cdk))
+static CCTK_REAL_VEC PDupwindNthAntifdOrder82_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o1680dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDupwindNthAntifdOrder82_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o1680dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o1680dy,kmadd(KRANC_GFOFFSET3D(u,0,-1,0),ToReal(-1470),kmadd(KRANC_GFOFFSET3D(u,0,2,0),ToReal(-480),kmadd(KRANC_GFOFFSET3D(u,0,-3,0),ToReal(-145),kmadd(KRANC_GFOFFSET3D(u,0,4,0),ToReal(-30),kmadd(KRANC_GFOFFSET3D(u,0,-5,0),ToReal(-3),kmadd(KRANC_GFOFFSET3D(u,0,5,0),ToReal(3),kmadd(KRANC_GFOFFSET3D(u,0,-4,0),ToReal(30),kmadd(KRANC_GFOFFSET3D(u,0,3,0),ToReal(145),kmadd(KRANC_GFOFFSET3D(u,0,-2,0),ToReal(480),kmul(KRANC_GFOFFSET3D(u,0,1,0),ToReal(1470))))))))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDupwindNthSymmfdOrder22(u) (kmul(pm1o4dy,kadd(KRANC_GFOFFSET3D(u,0,-2,0),kadd(KRANC_GFOFFSET3D(u,0,2,0),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,0),KRANC_GFOFFSET3D(u,0,1,0)),ToReal(-4),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(6)))))))
+#else
+# define PDupwindNthSymmfdOrder22(u) (PDupwindNthSymmfdOrder22_impl(u,pm1o4dy,cdj,cdk))
+static CCTK_REAL_VEC PDupwindNthSymmfdOrder22_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o4dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDupwindNthSymmfdOrder22_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o4dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(pm1o4dy,kadd(KRANC_GFOFFSET3D(u,0,-2,0),kadd(KRANC_GFOFFSET3D(u,0,2,0),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,0),KRANC_GFOFFSET3D(u,0,1,0)),ToReal(-4),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(6))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDupwindNthSymmfdOrder42(u) (kmul(p1o24dy,kadd(KRANC_GFOFFSET3D(u,0,-3,0),kadd(KRANC_GFOFFSET3D(u,0,3,0),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-20),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,0),KRANC_GFOFFSET3D(u,0,2,0)),ToReal(-6),kmul(kadd(KRANC_GFOFFSET3D(u,0,-1,0),KRANC_GFOFFSET3D(u,0,1,0)),ToReal(15))))))))
+#else
+# define PDupwindNthSymmfdOrder42(u) (PDupwindNthSymmfdOrder42_impl(u,p1o24dy,cdj,cdk))
+static CCTK_REAL_VEC PDupwindNthSymmfdOrder42_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o24dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDupwindNthSymmfdOrder42_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o24dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o24dy,kadd(KRANC_GFOFFSET3D(u,0,-3,0),kadd(KRANC_GFOFFSET3D(u,0,3,0),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-20),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,0),KRANC_GFOFFSET3D(u,0,2,0)),ToReal(-6),kmul(kadd(KRANC_GFOFFSET3D(u,0,-1,0),KRANC_GFOFFSET3D(u,0,1,0)),ToReal(15)))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDupwindNthSymmfdOrder62(u) (kmul(pm1o120dy,kadd(KRANC_GFOFFSET3D(u,0,-4,0),kadd(KRANC_GFOFFSET3D(u,0,4,0),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,0),KRANC_GFOFFSET3D(u,0,1,0)),ToReal(-56),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-3,0),KRANC_GFOFFSET3D(u,0,3,0)),ToReal(-8),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,0),KRANC_GFOFFSET3D(u,0,2,0)),ToReal(28),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(70)))))))))
+#else
+# define PDupwindNthSymmfdOrder62(u) (PDupwindNthSymmfdOrder62_impl(u,pm1o120dy,cdj,cdk))
+static CCTK_REAL_VEC PDupwindNthSymmfdOrder62_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o120dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDupwindNthSymmfdOrder62_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o120dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(pm1o120dy,kadd(KRANC_GFOFFSET3D(u,0,-4,0),kadd(KRANC_GFOFFSET3D(u,0,4,0),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-1,0),KRANC_GFOFFSET3D(u,0,1,0)),ToReal(-56),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-3,0),KRANC_GFOFFSET3D(u,0,3,0)),ToReal(-8),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,0),KRANC_GFOFFSET3D(u,0,2,0)),ToReal(28),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(70))))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDupwindNthSymmfdOrder82(u) (kmul(p1o560dy,kadd(KRANC_GFOFFSET3D(u,0,-5,0),kadd(KRANC_GFOFFSET3D(u,0,5,0),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-252),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,0),KRANC_GFOFFSET3D(u,0,2,0)),ToReal(-120),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-4,0),KRANC_GFOFFSET3D(u,0,4,0)),ToReal(-10),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-3,0),KRANC_GFOFFSET3D(u,0,3,0)),ToReal(45),kmul(kadd(KRANC_GFOFFSET3D(u,0,-1,0),KRANC_GFOFFSET3D(u,0,1,0)),ToReal(210))))))))))
+#else
+# define PDupwindNthSymmfdOrder82(u) (PDupwindNthSymmfdOrder82_impl(u,p1o560dy,cdj,cdk))
+static CCTK_REAL_VEC PDupwindNthSymmfdOrder82_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o560dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDupwindNthSymmfdOrder82_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o560dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o560dy,kadd(KRANC_GFOFFSET3D(u,0,-5,0),kadd(KRANC_GFOFFSET3D(u,0,5,0),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-252),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-2,0),KRANC_GFOFFSET3D(u,0,2,0)),ToReal(-120),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-4,0),KRANC_GFOFFSET3D(u,0,4,0)),ToReal(-10),kmadd(kadd(KRANC_GFOFFSET3D(u,0,-3,0),KRANC_GFOFFSET3D(u,0,3,0)),ToReal(45),kmul(kadd(KRANC_GFOFFSET3D(u,0,-1,0),KRANC_GFOFFSET3D(u,0,1,0)),ToReal(210)))))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDonesided2(u) (kmul(p1ody,kmul(dir2,ksub(KRANC_GFOFFSET3D(u,0,1,0),KRANC_GFOFFSET3D(u,0,0,0)))))
+#else
+# define PDonesided2(u) (PDonesided2_impl(u,p1ody,cdj,cdk))
+static CCTK_REAL_VEC PDonesided2_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1ody, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDonesided2_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1ody, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{ assert(0); return ToReal(1e30); /* ERROR */ }
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDupwindNthfdOrder23(u) (kmul(pm1o2dz,kmul(dir3,kadd(KRANC_GFOFFSET3D(u,0,0,2),kmadd(KRANC_GFOFFSET3D(u,0,0,1),ToReal(-4),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(3)))))))
+#else
+# define PDupwindNthfdOrder23(u) (PDupwindNthfdOrder23_impl(u,pm1o2dz,cdj,cdk))
+static CCTK_REAL_VEC PDupwindNthfdOrder23_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o2dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDupwindNthfdOrder23_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o2dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{ assert(0); return ToReal(1e30); /* ERROR */ }
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDupwindNthfdOrder43(u) (kmul(p1o12dz,kmul(dir3,kadd(KRANC_GFOFFSET3D(u,0,0,3),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-10),kmadd(KRANC_GFOFFSET3D(u,0,0,2),ToReal(-6),kmadd(KRANC_GFOFFSET3D(u,0,0,-1),ToReal(-3),kmul(KRANC_GFOFFSET3D(u,0,0,1),ToReal(18)))))))))
+#else
+# define PDupwindNthfdOrder43(u) (PDupwindNthfdOrder43_impl(u,p1o12dz,cdj,cdk))
+static CCTK_REAL_VEC PDupwindNthfdOrder43_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o12dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDupwindNthfdOrder43_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o12dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{ assert(0); return ToReal(1e30); /* ERROR */ }
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDupwindNthfdOrder63(u) (kmul(pm1o60dz,kmul(dir3,kadd(KRANC_GFOFFSET3D(u,0,0,4),kmadd(KRANC_GFOFFSET3D(u,0,0,1),ToReal(-80),kmadd(KRANC_GFOFFSET3D(u,0,0,3),ToReal(-8),kmadd(KRANC_GFOFFSET3D(u,0,0,-2),ToReal(-2),kmadd(KRANC_GFOFFSET3D(u,0,0,-1),ToReal(24),kmadd(KRANC_GFOFFSET3D(u,0,0,2),ToReal(30),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(35)))))))))))
+#else
+# define PDupwindNthfdOrder63(u) (PDupwindNthfdOrder63_impl(u,pm1o60dz,cdj,cdk))
+static CCTK_REAL_VEC PDupwindNthfdOrder63_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o60dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDupwindNthfdOrder63_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o60dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{ assert(0); return ToReal(1e30); /* ERROR */ }
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDupwindNthfdOrder83(u) (kmul(p1o840dz,kmul(dir3,kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-378),kmadd(KRANC_GFOFFSET3D(u,0,0,5),ToReal(3),kmul(ToReal(-5),kadd(KRANC_GFOFFSET3D(u,0,0,-3),kmadd(KRANC_GFOFFSET3D(u,0,0,1),ToReal(-210),kmadd(KRANC_GFOFFSET3D(u,0,0,3),ToReal(-28),kmadd(KRANC_GFOFFSET3D(u,0,0,-2),ToReal(-12),kmadd(KRANC_GFOFFSET3D(u,0,0,4),ToReal(6),kmul(kadd(KRANC_GFOFFSET3D(u,0,0,-1),KRANC_GFOFFSET3D(u,0,0,2)),ToReal(84)))))))))))))
+#else
+# define PDupwindNthfdOrder83(u) (PDupwindNthfdOrder83_impl(u,p1o840dz,cdj,cdk))
+static CCTK_REAL_VEC PDupwindNthfdOrder83_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o840dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDupwindNthfdOrder83_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o840dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{ assert(0); return ToReal(1e30); /* ERROR */ }
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDupwindNthAntifdOrder23(u) (kmul(p1o4dz,kadd(KRANC_GFOFFSET3D(u,0,0,-2),kmadd(KRANC_GFOFFSET3D(u,0,0,-1),ToReal(-4),kmsub(KRANC_GFOFFSET3D(u,0,0,1),ToReal(4),KRANC_GFOFFSET3D(u,0,0,2))))))
+#else
+# define PDupwindNthAntifdOrder23(u) (PDupwindNthAntifdOrder23_impl(u,p1o4dz,cdj,cdk))
+static CCTK_REAL_VEC PDupwindNthAntifdOrder23_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o4dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDupwindNthAntifdOrder23_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o4dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o4dz,kadd(KRANC_GFOFFSET3D(u,0,0,-2),kmadd(KRANC_GFOFFSET3D(u,0,0,-1),ToReal(-4),kmsub(KRANC_GFOFFSET3D(u,0,0,1),ToReal(4),KRANC_GFOFFSET3D(u,0,0,2)))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDupwindNthAntifdOrder43(u) (kmul(p1o24dz,kadd(KRANC_GFOFFSET3D(u,0,0,3),kmadd(KRANC_GFOFFSET3D(u,0,0,-1),ToReal(-21),kmadd(KRANC_GFOFFSET3D(u,0,0,2),ToReal(-6),ksub(kmadd(KRANC_GFOFFSET3D(u,0,0,-2),ToReal(6),kmul(KRANC_GFOFFSET3D(u,0,0,1),ToReal(21))),KRANC_GFOFFSET3D(u,0,0,-3)))))))
+#else
+# define PDupwindNthAntifdOrder43(u) (PDupwindNthAntifdOrder43_impl(u,p1o24dz,cdj,cdk))
+static CCTK_REAL_VEC PDupwindNthAntifdOrder43_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o24dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDupwindNthAntifdOrder43_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o24dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o24dz,kadd(KRANC_GFOFFSET3D(u,0,0,3),kmadd(KRANC_GFOFFSET3D(u,0,0,-1),ToReal(-21),kmadd(KRANC_GFOFFSET3D(u,0,0,2),ToReal(-6),ksub(kmadd(KRANC_GFOFFSET3D(u,0,0,-2),ToReal(6),kmul(KRANC_GFOFFSET3D(u,0,0,1),ToReal(21))),KRANC_GFOFFSET3D(u,0,0,-3))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDupwindNthAntifdOrder63(u) (kmul(p1o120dz,kadd(KRANC_GFOFFSET3D(u,0,0,-4),kmadd(KRANC_GFOFFSET3D(u,0,0,-1),ToReal(-104),kmadd(KRANC_GFOFFSET3D(u,0,0,2),ToReal(-32),kmadd(KRANC_GFOFFSET3D(u,0,0,-3),ToReal(-8),ksub(kmadd(KRANC_GFOFFSET3D(u,0,0,3),ToReal(8),kmadd(KRANC_GFOFFSET3D(u,0,0,-2),ToReal(32),kmul(KRANC_GFOFFSET3D(u,0,0,1),ToReal(104)))),KRANC_GFOFFSET3D(u,0,0,4))))))))
+#else
+# define PDupwindNthAntifdOrder63(u) (PDupwindNthAntifdOrder63_impl(u,p1o120dz,cdj,cdk))
+static CCTK_REAL_VEC PDupwindNthAntifdOrder63_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o120dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDupwindNthAntifdOrder63_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o120dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o120dz,kadd(KRANC_GFOFFSET3D(u,0,0,-4),kmadd(KRANC_GFOFFSET3D(u,0,0,-1),ToReal(-104),kmadd(KRANC_GFOFFSET3D(u,0,0,2),ToReal(-32),kmadd(KRANC_GFOFFSET3D(u,0,0,-3),ToReal(-8),ksub(kmadd(KRANC_GFOFFSET3D(u,0,0,3),ToReal(8),kmadd(KRANC_GFOFFSET3D(u,0,0,-2),ToReal(32),kmul(KRANC_GFOFFSET3D(u,0,0,1),ToReal(104)))),KRANC_GFOFFSET3D(u,0,0,4)))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDupwindNthAntifdOrder83(u) (kmul(p1o1680dz,kmadd(KRANC_GFOFFSET3D(u,0,0,-1),ToReal(-1470),kmadd(KRANC_GFOFFSET3D(u,0,0,2),ToReal(-480),kmadd(KRANC_GFOFFSET3D(u,0,0,-3),ToReal(-145),kmadd(KRANC_GFOFFSET3D(u,0,0,4),ToReal(-30),kmadd(KRANC_GFOFFSET3D(u,0,0,-5),ToReal(-3),kmadd(KRANC_GFOFFSET3D(u,0,0,5),ToReal(3),kmadd(KRANC_GFOFFSET3D(u,0,0,-4),ToReal(30),kmadd(KRANC_GFOFFSET3D(u,0,0,3),ToReal(145),kmadd(KRANC_GFOFFSET3D(u,0,0,-2),ToReal(480),kmul(KRANC_GFOFFSET3D(u,0,0,1),ToReal(1470)))))))))))))
+#else
+# define PDupwindNthAntifdOrder83(u) (PDupwindNthAntifdOrder83_impl(u,p1o1680dz,cdj,cdk))
+static CCTK_REAL_VEC PDupwindNthAntifdOrder83_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o1680dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDupwindNthAntifdOrder83_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o1680dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o1680dz,kmadd(KRANC_GFOFFSET3D(u,0,0,-1),ToReal(-1470),kmadd(KRANC_GFOFFSET3D(u,0,0,2),ToReal(-480),kmadd(KRANC_GFOFFSET3D(u,0,0,-3),ToReal(-145),kmadd(KRANC_GFOFFSET3D(u,0,0,4),ToReal(-30),kmadd(KRANC_GFOFFSET3D(u,0,0,-5),ToReal(-3),kmadd(KRANC_GFOFFSET3D(u,0,0,5),ToReal(3),kmadd(KRANC_GFOFFSET3D(u,0,0,-4),ToReal(30),kmadd(KRANC_GFOFFSET3D(u,0,0,3),ToReal(145),kmadd(KRANC_GFOFFSET3D(u,0,0,-2),ToReal(480),kmul(KRANC_GFOFFSET3D(u,0,0,1),ToReal(1470))))))))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDupwindNthSymmfdOrder23(u) (kmul(pm1o4dz,kadd(KRANC_GFOFFSET3D(u,0,0,-2),kadd(KRANC_GFOFFSET3D(u,0,0,2),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-1),KRANC_GFOFFSET3D(u,0,0,1)),ToReal(-4),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(6)))))))
+#else
+# define PDupwindNthSymmfdOrder23(u) (PDupwindNthSymmfdOrder23_impl(u,pm1o4dz,cdj,cdk))
+static CCTK_REAL_VEC PDupwindNthSymmfdOrder23_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o4dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDupwindNthSymmfdOrder23_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o4dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(pm1o4dz,kadd(KRANC_GFOFFSET3D(u,0,0,-2),kadd(KRANC_GFOFFSET3D(u,0,0,2),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-1),KRANC_GFOFFSET3D(u,0,0,1)),ToReal(-4),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(6))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDupwindNthSymmfdOrder43(u) (kmul(p1o24dz,kadd(KRANC_GFOFFSET3D(u,0,0,-3),kadd(KRANC_GFOFFSET3D(u,0,0,3),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-20),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-2),KRANC_GFOFFSET3D(u,0,0,2)),ToReal(-6),kmul(kadd(KRANC_GFOFFSET3D(u,0,0,-1),KRANC_GFOFFSET3D(u,0,0,1)),ToReal(15))))))))
+#else
+# define PDupwindNthSymmfdOrder43(u) (PDupwindNthSymmfdOrder43_impl(u,p1o24dz,cdj,cdk))
+static CCTK_REAL_VEC PDupwindNthSymmfdOrder43_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o24dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDupwindNthSymmfdOrder43_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o24dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o24dz,kadd(KRANC_GFOFFSET3D(u,0,0,-3),kadd(KRANC_GFOFFSET3D(u,0,0,3),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-20),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-2),KRANC_GFOFFSET3D(u,0,0,2)),ToReal(-6),kmul(kadd(KRANC_GFOFFSET3D(u,0,0,-1),KRANC_GFOFFSET3D(u,0,0,1)),ToReal(15)))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDupwindNthSymmfdOrder63(u) (kmul(pm1o120dz,kadd(KRANC_GFOFFSET3D(u,0,0,-4),kadd(KRANC_GFOFFSET3D(u,0,0,4),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-1),KRANC_GFOFFSET3D(u,0,0,1)),ToReal(-56),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-3),KRANC_GFOFFSET3D(u,0,0,3)),ToReal(-8),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-2),KRANC_GFOFFSET3D(u,0,0,2)),ToReal(28),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(70)))))))))
+#else
+# define PDupwindNthSymmfdOrder63(u) (PDupwindNthSymmfdOrder63_impl(u,pm1o120dz,cdj,cdk))
+static CCTK_REAL_VEC PDupwindNthSymmfdOrder63_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o120dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDupwindNthSymmfdOrder63_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const pm1o120dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(pm1o120dz,kadd(KRANC_GFOFFSET3D(u,0,0,-4),kadd(KRANC_GFOFFSET3D(u,0,0,4),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-1),KRANC_GFOFFSET3D(u,0,0,1)),ToReal(-56),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-3),KRANC_GFOFFSET3D(u,0,0,3)),ToReal(-8),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-2),KRANC_GFOFFSET3D(u,0,0,2)),ToReal(28),kmul(KRANC_GFOFFSET3D(u,0,0,0),ToReal(70))))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDupwindNthSymmfdOrder83(u) (kmul(p1o560dz,kadd(KRANC_GFOFFSET3D(u,0,0,-5),kadd(KRANC_GFOFFSET3D(u,0,0,5),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-252),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-2),KRANC_GFOFFSET3D(u,0,0,2)),ToReal(-120),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-4),KRANC_GFOFFSET3D(u,0,0,4)),ToReal(-10),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-3),KRANC_GFOFFSET3D(u,0,0,3)),ToReal(45),kmul(kadd(KRANC_GFOFFSET3D(u,0,0,-1),KRANC_GFOFFSET3D(u,0,0,1)),ToReal(210))))))))))
+#else
+# define PDupwindNthSymmfdOrder83(u) (PDupwindNthSymmfdOrder83_impl(u,p1o560dz,cdj,cdk))
+static CCTK_REAL_VEC PDupwindNthSymmfdOrder83_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o560dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDupwindNthSymmfdOrder83_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1o560dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{
+ ptrdiff_t const cdi=sizeof(CCTK_REAL);
+ return kmul(p1o560dz,kadd(KRANC_GFOFFSET3D(u,0,0,-5),kadd(KRANC_GFOFFSET3D(u,0,0,5),kmadd(KRANC_GFOFFSET3D(u,0,0,0),ToReal(-252),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-2),KRANC_GFOFFSET3D(u,0,0,2)),ToReal(-120),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-4),KRANC_GFOFFSET3D(u,0,0,4)),ToReal(-10),kmadd(kadd(KRANC_GFOFFSET3D(u,0,0,-3),KRANC_GFOFFSET3D(u,0,0,3)),ToReal(45),kmul(kadd(KRANC_GFOFFSET3D(u,0,0,-1),KRANC_GFOFFSET3D(u,0,0,1)),ToReal(210)))))))));
+}
+#endif
+
+#ifndef KRANC_DIFF_FUNCTIONS
+# define PDonesided3(u) (kmul(p1odz,kmul(dir3,ksub(KRANC_GFOFFSET3D(u,0,0,1),KRANC_GFOFFSET3D(u,0,0,0)))))
+#else
+# define PDonesided3(u) (PDonesided3_impl(u,p1odz,cdj,cdk))
+static CCTK_REAL_VEC PDonesided3_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1odz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
+static CCTK_REAL_VEC PDonesided3_impl(CCTK_REAL const* restrict const u, CCTK_REAL_VEC const p1odz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+{ assert(0); return ToReal(1e30); /* ERROR */ }
+#endif
+
diff --git a/ML_CCZ4/src/ML_CCZ4_Advect.cc b/ML_CCZ4/src/ML_CCZ4_Advect.cc
new file mode 100644
index 0000000..e10a3b5
--- /dev/null
+++ b/ML_CCZ4/src/ML_CCZ4_Advect.cc
@@ -0,0 +1,2232 @@
+/* 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 "cctk_Loop.h"
+#include "loopcontrol.h"
+#include "vectors.h"
+
+/* Define macros used in calculations */
+#define INITVALUE (42)
+#define QAD(x) (SQR(SQR(x)))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
+
+extern "C" void ML_CCZ4_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_CCZ4::ML_curvrhs","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_curvrhs.");
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_CCZ4::ML_dtlapserhs","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_dtlapserhs.");
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_CCZ4::ML_dtshiftrhs","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_dtshiftrhs.");
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_CCZ4::ML_Gammarhs","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_Gammarhs.");
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_CCZ4::ML_lapserhs","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_lapserhs.");
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_CCZ4::ML_log_confacrhs","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_log_confacrhs.");
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_CCZ4::ML_metricrhs","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_metricrhs.");
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_CCZ4::ML_shiftrhs","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_shiftrhs.");
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_CCZ4::ML_Thetarhs","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_Thetarhs.");
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_CCZ4::ML_trace_curvrhs","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_trace_curvrhs.");
+ return;
+}
+
+static void ML_CCZ4_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 imin[3], int const imax[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+{
+ DECLARE_CCTK_ARGUMENTS;
+ DECLARE_CCTK_PARAMETERS;
+
+
+ /* 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_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const t = ToReal(cctk_time);
+ CCTK_REAL_VEC const dxi = INV(dx);
+ CCTK_REAL_VEC const dyi = INV(dy);
+ CCTK_REAL_VEC const dzi = INV(dz);
+ CCTK_REAL_VEC const khalf = ToReal(0.5);
+ CCTK_REAL_VEC const kthird = ToReal(1.0/3.0);
+ CCTK_REAL_VEC const ktwothird = ToReal(2.0/3.0);
+ CCTK_REAL_VEC const kfourthird = ToReal(4.0/3.0);
+ CCTK_REAL_VEC const keightthird = ToReal(8.0/3.0);
+ CCTK_REAL_VEC const hdxi = kmul(ToReal(0.5), dxi);
+ CCTK_REAL_VEC const hdyi = kmul(ToReal(0.5), dyi);
+ CCTK_REAL_VEC const hdzi = kmul(ToReal(0.5), dzi);
+
+ /* Initialize predefined quantities */
+ CCTK_REAL_VEC const p1o1024dx = kmul(INV(dx),ToReal(0.0009765625));
+ CCTK_REAL_VEC const p1o1024dy = kmul(INV(dy),ToReal(0.0009765625));
+ CCTK_REAL_VEC const p1o1024dz = kmul(INV(dz),ToReal(0.0009765625));
+ CCTK_REAL_VEC const p1o120dx = kmul(INV(dx),ToReal(0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o120dy = kmul(INV(dy),ToReal(0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o120dz = kmul(INV(dz),ToReal(0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dx = kmul(INV(dx),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dy = kmul(INV(dy),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dz = kmul(INV(dz),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o144dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o144dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o144dydz = kmul(INV(kmul(dy,dz)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o1680dx = kmul(INV(dx),ToReal(0.000595238095238095238095238095238));
+ CCTK_REAL_VEC const p1o1680dy = kmul(INV(dy),ToReal(0.000595238095238095238095238095238));
+ CCTK_REAL_VEC const p1o1680dz = kmul(INV(dz),ToReal(0.000595238095238095238095238095238));
+ CCTK_REAL_VEC const p1o16dx = kmul(INV(dx),ToReal(0.0625));
+ CCTK_REAL_VEC const p1o16dy = kmul(INV(dy),ToReal(0.0625));
+ CCTK_REAL_VEC const p1o16dz = kmul(INV(dz),ToReal(0.0625));
+ CCTK_REAL_VEC const p1o180dx2 = kmul(INV(SQR(dx)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o180dy2 = kmul(INV(SQR(dy)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o180dz2 = kmul(INV(SQR(dz)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o24dx = kmul(INV(dx),ToReal(0.0416666666666666666666666666667));
+ CCTK_REAL_VEC const p1o24dy = kmul(INV(dy),ToReal(0.0416666666666666666666666666667));
+ CCTK_REAL_VEC const p1o24dz = kmul(INV(dz),ToReal(0.0416666666666666666666666666667));
+ CCTK_REAL_VEC const p1o256dx = kmul(INV(dx),ToReal(0.00390625));
+ CCTK_REAL_VEC const p1o256dy = kmul(INV(dy),ToReal(0.00390625));
+ CCTK_REAL_VEC const p1o256dz = kmul(INV(dz),ToReal(0.00390625));
+ CCTK_REAL_VEC const p1o2dx = kmul(INV(dx),ToReal(0.5));
+ CCTK_REAL_VEC const p1o2dy = kmul(INV(dy),ToReal(0.5));
+ CCTK_REAL_VEC const p1o2dz = kmul(INV(dz),ToReal(0.5));
+ CCTK_REAL_VEC const p1o3600dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o3600dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o3600dydz = kmul(INV(kmul(dy,dz)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o4dx = kmul(INV(dx),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(kmul(dy,dz)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dz = kmul(INV(dz),ToReal(0.25));
+ CCTK_REAL_VEC const p1o5040dx2 = kmul(INV(SQR(dx)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o5040dy2 = kmul(INV(SQR(dy)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o5040dz2 = kmul(INV(SQR(dz)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o560dx = kmul(INV(dx),ToReal(0.00178571428571428571428571428571));
+ CCTK_REAL_VEC const p1o560dy = kmul(INV(dy),ToReal(0.00178571428571428571428571428571));
+ CCTK_REAL_VEC const p1o560dz = kmul(INV(dz),ToReal(0.00178571428571428571428571428571));
+ CCTK_REAL_VEC const p1o60dx = kmul(INV(dx),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o60dy = kmul(INV(dy),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o60dz = kmul(INV(dz),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o64dx = kmul(INV(dx),ToReal(0.015625));
+ CCTK_REAL_VEC const p1o64dy = kmul(INV(dy),ToReal(0.015625));
+ CCTK_REAL_VEC const p1o64dz = kmul(INV(dz),ToReal(0.015625));
+ CCTK_REAL_VEC const p1o705600dxdy = kmul(INV(kmul(dx,dy)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(kmul(dx,dz)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(kmul(dy,dz)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1odx = INV(dx);
+ CCTK_REAL_VEC const p1odx2 = INV(SQR(dx));
+ CCTK_REAL_VEC const p1ody = INV(dy);
+ CCTK_REAL_VEC const p1ody2 = INV(SQR(dy));
+ CCTK_REAL_VEC const p1odz = INV(dz);
+ CCTK_REAL_VEC const p1odz2 = INV(SQR(dz));
+ CCTK_REAL_VEC const pm1o120dx = kmul(INV(dx),ToReal(-0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o120dy = kmul(INV(dy),ToReal(-0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o120dz = kmul(INV(dz),ToReal(-0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dx2 = kmul(INV(SQR(dx)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dy2 = kmul(INV(SQR(dy)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dz2 = kmul(INV(SQR(dz)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o2dx = kmul(INV(dx),ToReal(-0.5));
+ CCTK_REAL_VEC const pm1o2dy = kmul(INV(dy),ToReal(-0.5));
+ CCTK_REAL_VEC const pm1o2dz = kmul(INV(dz),ToReal(-0.5));
+ CCTK_REAL_VEC const pm1o4dx = kmul(INV(dx),ToReal(-0.25));
+ CCTK_REAL_VEC const pm1o4dy = kmul(INV(dy),ToReal(-0.25));
+ CCTK_REAL_VEC const pm1o4dz = kmul(INV(dz),ToReal(-0.25));
+ CCTK_REAL_VEC const pm1o60dx = kmul(INV(dx),ToReal(-0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const pm1o60dy = kmul(INV(dy),ToReal(-0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const pm1o60dz = kmul(INV(dz),ToReal(-0.0166666666666666666666666666667));
+
+ /* 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;
+
+ /* Assign local copies of arrays functions */
+
+
+
+ /* Calculate temporaries and arrays functions */
+
+ /* Copy local copies back to grid functions */
+
+ /* Loop over the grid points */
+ #pragma omp parallel
+ LC_LOOP3VEC(ML_CCZ4_Advect,
+ i,j,k, imin[0],imin[1],imin[2], imax[0],imax[1],imax[2],
+ cctk_lsh[0],cctk_lsh[1],cctk_lsh[2],
+ CCTK_REAL_VEC_SIZE)
+ {
+ ptrdiff_t const index = di*i + dj*j + dk*k;
+
+ /* Assign local copies of grid functions */
+
+ CCTK_REAL_VEC AL = vec_load(A[index]);
+ CCTK_REAL_VEC alphaL = vec_load(alpha[index]);
+ CCTK_REAL_VEC alpharhsL = vec_load(alpharhs[index]);
+ CCTK_REAL_VEC ArhsL = vec_load(Arhs[index]);
+ CCTK_REAL_VEC At11L = vec_load(At11[index]);
+ CCTK_REAL_VEC At11rhsL = vec_load(At11rhs[index]);
+ CCTK_REAL_VEC At12L = vec_load(At12[index]);
+ CCTK_REAL_VEC At12rhsL = vec_load(At12rhs[index]);
+ CCTK_REAL_VEC At13L = vec_load(At13[index]);
+ CCTK_REAL_VEC At13rhsL = vec_load(At13rhs[index]);
+ CCTK_REAL_VEC At22L = vec_load(At22[index]);
+ CCTK_REAL_VEC At22rhsL = vec_load(At22rhs[index]);
+ CCTK_REAL_VEC At23L = vec_load(At23[index]);
+ CCTK_REAL_VEC At23rhsL = vec_load(At23rhs[index]);
+ CCTK_REAL_VEC At33L = vec_load(At33[index]);
+ CCTK_REAL_VEC At33rhsL = vec_load(At33rhs[index]);
+ CCTK_REAL_VEC B1L = vec_load(B1[index]);
+ CCTK_REAL_VEC B1rhsL = vec_load(B1rhs[index]);
+ CCTK_REAL_VEC B2L = vec_load(B2[index]);
+ CCTK_REAL_VEC B2rhsL = vec_load(B2rhs[index]);
+ CCTK_REAL_VEC B3L = vec_load(B3[index]);
+ CCTK_REAL_VEC B3rhsL = vec_load(B3rhs[index]);
+ CCTK_REAL_VEC beta1L = vec_load(beta1[index]);
+ CCTK_REAL_VEC beta1rhsL = vec_load(beta1rhs[index]);
+ CCTK_REAL_VEC beta2L = vec_load(beta2[index]);
+ CCTK_REAL_VEC beta2rhsL = vec_load(beta2rhs[index]);
+ CCTK_REAL_VEC beta3L = vec_load(beta3[index]);
+ CCTK_REAL_VEC beta3rhsL = vec_load(beta3rhs[index]);
+ CCTK_REAL_VEC gt11L = vec_load(gt11[index]);
+ CCTK_REAL_VEC gt11rhsL = vec_load(gt11rhs[index]);
+ CCTK_REAL_VEC gt12L = vec_load(gt12[index]);
+ CCTK_REAL_VEC gt12rhsL = vec_load(gt12rhs[index]);
+ CCTK_REAL_VEC gt13L = vec_load(gt13[index]);
+ CCTK_REAL_VEC gt13rhsL = vec_load(gt13rhs[index]);
+ CCTK_REAL_VEC gt22L = vec_load(gt22[index]);
+ CCTK_REAL_VEC gt22rhsL = vec_load(gt22rhs[index]);
+ CCTK_REAL_VEC gt23L = vec_load(gt23[index]);
+ CCTK_REAL_VEC gt23rhsL = vec_load(gt23rhs[index]);
+ CCTK_REAL_VEC gt33L = vec_load(gt33[index]);
+ CCTK_REAL_VEC gt33rhsL = vec_load(gt33rhs[index]);
+ CCTK_REAL_VEC phiL = vec_load(phi[index]);
+ CCTK_REAL_VEC phirhsL = vec_load(phirhs[index]);
+ CCTK_REAL_VEC ThetaL = vec_load(Theta[index]);
+ CCTK_REAL_VEC ThetarhsL = vec_load(Thetarhs[index]);
+ CCTK_REAL_VEC trKL = vec_load(trK[index]);
+ CCTK_REAL_VEC trKrhsL = vec_load(trKrhs[index]);
+ CCTK_REAL_VEC Xt1L = vec_load(Xt1[index]);
+ CCTK_REAL_VEC Xt1rhsL = vec_load(Xt1rhs[index]);
+ CCTK_REAL_VEC Xt2L = vec_load(Xt2[index]);
+ CCTK_REAL_VEC Xt2rhsL = vec_load(Xt2rhs[index]);
+ CCTK_REAL_VEC Xt3L = vec_load(Xt3[index]);
+ CCTK_REAL_VEC Xt3rhsL = vec_load(Xt3rhs[index]);
+
+
+ CCTK_REAL_VEC J11L, J12L, J13L, J21L, J22L, J23L, J31L, J32L, J33L;
+
+ if (use_jacobian)
+ {
+ J11L = vec_load(J11[index]);
+ J12L = vec_load(J12[index]);
+ J13L = vec_load(J13[index]);
+ J21L = vec_load(J21[index]);
+ J22L = vec_load(J22[index]);
+ J23L = vec_load(J23[index]);
+ J31L = vec_load(J31[index]);
+ J32L = vec_load(J32[index]);
+ J33L = vec_load(J33[index]);
+ }
+
+ /* Include user supplied include files */
+
+ /* Precompute derivatives */
+ CCTK_REAL_VEC PDupwindNthAnti1A;
+ CCTK_REAL_VEC PDupwindNthSymm1A;
+ CCTK_REAL_VEC PDupwindNthAnti2A;
+ CCTK_REAL_VEC PDupwindNthSymm2A;
+ CCTK_REAL_VEC PDupwindNthAnti3A;
+ CCTK_REAL_VEC PDupwindNthSymm3A;
+ CCTK_REAL_VEC PDupwindNthAnti1alpha;
+ CCTK_REAL_VEC PDupwindNthSymm1alpha;
+ CCTK_REAL_VEC PDupwindNthAnti2alpha;
+ CCTK_REAL_VEC PDupwindNthSymm2alpha;
+ CCTK_REAL_VEC PDupwindNthAnti3alpha;
+ CCTK_REAL_VEC PDupwindNthSymm3alpha;
+ CCTK_REAL_VEC PDupwindNthAnti1At11;
+ CCTK_REAL_VEC PDupwindNthSymm1At11;
+ CCTK_REAL_VEC PDupwindNthAnti2At11;
+ CCTK_REAL_VEC PDupwindNthSymm2At11;
+ CCTK_REAL_VEC PDupwindNthAnti3At11;
+ CCTK_REAL_VEC PDupwindNthSymm3At11;
+ CCTK_REAL_VEC PDupwindNthAnti1At12;
+ CCTK_REAL_VEC PDupwindNthSymm1At12;
+ CCTK_REAL_VEC PDupwindNthAnti2At12;
+ CCTK_REAL_VEC PDupwindNthSymm2At12;
+ CCTK_REAL_VEC PDupwindNthAnti3At12;
+ CCTK_REAL_VEC PDupwindNthSymm3At12;
+ CCTK_REAL_VEC PDupwindNthAnti1At13;
+ CCTK_REAL_VEC PDupwindNthSymm1At13;
+ CCTK_REAL_VEC PDupwindNthAnti2At13;
+ CCTK_REAL_VEC PDupwindNthSymm2At13;
+ CCTK_REAL_VEC PDupwindNthAnti3At13;
+ CCTK_REAL_VEC PDupwindNthSymm3At13;
+ CCTK_REAL_VEC PDupwindNthAnti1At22;
+ CCTK_REAL_VEC PDupwindNthSymm1At22;
+ CCTK_REAL_VEC PDupwindNthAnti2At22;
+ CCTK_REAL_VEC PDupwindNthSymm2At22;
+ CCTK_REAL_VEC PDupwindNthAnti3At22;
+ CCTK_REAL_VEC PDupwindNthSymm3At22;
+ CCTK_REAL_VEC PDupwindNthAnti1At23;
+ CCTK_REAL_VEC PDupwindNthSymm1At23;
+ CCTK_REAL_VEC PDupwindNthAnti2At23;
+ CCTK_REAL_VEC PDupwindNthSymm2At23;
+ CCTK_REAL_VEC PDupwindNthAnti3At23;
+ CCTK_REAL_VEC PDupwindNthSymm3At23;
+ CCTK_REAL_VEC PDupwindNthAnti1At33;
+ CCTK_REAL_VEC PDupwindNthSymm1At33;
+ CCTK_REAL_VEC PDupwindNthAnti2At33;
+ CCTK_REAL_VEC PDupwindNthSymm2At33;
+ CCTK_REAL_VEC PDupwindNthAnti3At33;
+ CCTK_REAL_VEC PDupwindNthSymm3At33;
+ CCTK_REAL_VEC PDupwindNthAnti1B1;
+ CCTK_REAL_VEC PDupwindNthSymm1B1;
+ CCTK_REAL_VEC PDupwindNthAnti2B1;
+ CCTK_REAL_VEC PDupwindNthSymm2B1;
+ CCTK_REAL_VEC PDupwindNthAnti3B1;
+ CCTK_REAL_VEC PDupwindNthSymm3B1;
+ CCTK_REAL_VEC PDupwindNthAnti1B2;
+ CCTK_REAL_VEC PDupwindNthSymm1B2;
+ CCTK_REAL_VEC PDupwindNthAnti2B2;
+ CCTK_REAL_VEC PDupwindNthSymm2B2;
+ CCTK_REAL_VEC PDupwindNthAnti3B2;
+ CCTK_REAL_VEC PDupwindNthSymm3B2;
+ CCTK_REAL_VEC PDupwindNthAnti1B3;
+ CCTK_REAL_VEC PDupwindNthSymm1B3;
+ CCTK_REAL_VEC PDupwindNthAnti2B3;
+ CCTK_REAL_VEC PDupwindNthSymm2B3;
+ CCTK_REAL_VEC PDupwindNthAnti3B3;
+ CCTK_REAL_VEC PDupwindNthSymm3B3;
+ CCTK_REAL_VEC PDupwindNthAnti1beta1;
+ CCTK_REAL_VEC PDupwindNthSymm1beta1;
+ CCTK_REAL_VEC PDupwindNthAnti2beta1;
+ CCTK_REAL_VEC PDupwindNthSymm2beta1;
+ CCTK_REAL_VEC PDupwindNthAnti3beta1;
+ CCTK_REAL_VEC PDupwindNthSymm3beta1;
+ CCTK_REAL_VEC PDupwindNthAnti1beta2;
+ CCTK_REAL_VEC PDupwindNthSymm1beta2;
+ CCTK_REAL_VEC PDupwindNthAnti2beta2;
+ CCTK_REAL_VEC PDupwindNthSymm2beta2;
+ CCTK_REAL_VEC PDupwindNthAnti3beta2;
+ CCTK_REAL_VEC PDupwindNthSymm3beta2;
+ CCTK_REAL_VEC PDupwindNthAnti1beta3;
+ CCTK_REAL_VEC PDupwindNthSymm1beta3;
+ CCTK_REAL_VEC PDupwindNthAnti2beta3;
+ CCTK_REAL_VEC PDupwindNthSymm2beta3;
+ CCTK_REAL_VEC PDupwindNthAnti3beta3;
+ CCTK_REAL_VEC PDupwindNthSymm3beta3;
+ CCTK_REAL_VEC PDupwindNthAnti1gt11;
+ CCTK_REAL_VEC PDupwindNthSymm1gt11;
+ CCTK_REAL_VEC PDupwindNthAnti2gt11;
+ CCTK_REAL_VEC PDupwindNthSymm2gt11;
+ CCTK_REAL_VEC PDupwindNthAnti3gt11;
+ CCTK_REAL_VEC PDupwindNthSymm3gt11;
+ CCTK_REAL_VEC PDupwindNthAnti1gt12;
+ CCTK_REAL_VEC PDupwindNthSymm1gt12;
+ CCTK_REAL_VEC PDupwindNthAnti2gt12;
+ CCTK_REAL_VEC PDupwindNthSymm2gt12;
+ CCTK_REAL_VEC PDupwindNthAnti3gt12;
+ CCTK_REAL_VEC PDupwindNthSymm3gt12;
+ CCTK_REAL_VEC PDupwindNthAnti1gt13;
+ CCTK_REAL_VEC PDupwindNthSymm1gt13;
+ CCTK_REAL_VEC PDupwindNthAnti2gt13;
+ CCTK_REAL_VEC PDupwindNthSymm2gt13;
+ CCTK_REAL_VEC PDupwindNthAnti3gt13;
+ CCTK_REAL_VEC PDupwindNthSymm3gt13;
+ CCTK_REAL_VEC PDupwindNthAnti1gt22;
+ CCTK_REAL_VEC PDupwindNthSymm1gt22;
+ CCTK_REAL_VEC PDupwindNthAnti2gt22;
+ CCTK_REAL_VEC PDupwindNthSymm2gt22;
+ CCTK_REAL_VEC PDupwindNthAnti3gt22;
+ CCTK_REAL_VEC PDupwindNthSymm3gt22;
+ CCTK_REAL_VEC PDupwindNthAnti1gt23;
+ CCTK_REAL_VEC PDupwindNthSymm1gt23;
+ CCTK_REAL_VEC PDupwindNthAnti2gt23;
+ CCTK_REAL_VEC PDupwindNthSymm2gt23;
+ CCTK_REAL_VEC PDupwindNthAnti3gt23;
+ CCTK_REAL_VEC PDupwindNthSymm3gt23;
+ CCTK_REAL_VEC PDupwindNthAnti1gt33;
+ CCTK_REAL_VEC PDupwindNthSymm1gt33;
+ CCTK_REAL_VEC PDupwindNthAnti2gt33;
+ CCTK_REAL_VEC PDupwindNthSymm2gt33;
+ CCTK_REAL_VEC PDupwindNthAnti3gt33;
+ CCTK_REAL_VEC PDupwindNthSymm3gt33;
+ CCTK_REAL_VEC PDupwindNthAnti1phi;
+ CCTK_REAL_VEC PDupwindNthSymm1phi;
+ CCTK_REAL_VEC PDupwindNthAnti2phi;
+ CCTK_REAL_VEC PDupwindNthSymm2phi;
+ CCTK_REAL_VEC PDupwindNthAnti3phi;
+ CCTK_REAL_VEC PDupwindNthSymm3phi;
+ CCTK_REAL_VEC PDupwindNthAnti1Theta;
+ CCTK_REAL_VEC PDupwindNthSymm1Theta;
+ CCTK_REAL_VEC PDupwindNthAnti2Theta;
+ CCTK_REAL_VEC PDupwindNthSymm2Theta;
+ CCTK_REAL_VEC PDupwindNthAnti3Theta;
+ CCTK_REAL_VEC PDupwindNthSymm3Theta;
+ CCTK_REAL_VEC PDupwindNthAnti1trK;
+ CCTK_REAL_VEC PDupwindNthSymm1trK;
+ CCTK_REAL_VEC PDupwindNthAnti2trK;
+ CCTK_REAL_VEC PDupwindNthSymm2trK;
+ CCTK_REAL_VEC PDupwindNthAnti3trK;
+ CCTK_REAL_VEC PDupwindNthSymm3trK;
+ CCTK_REAL_VEC PDupwindNthAnti1Xt1;
+ CCTK_REAL_VEC PDupwindNthSymm1Xt1;
+ CCTK_REAL_VEC PDupwindNthAnti2Xt1;
+ CCTK_REAL_VEC PDupwindNthSymm2Xt1;
+ CCTK_REAL_VEC PDupwindNthAnti3Xt1;
+ CCTK_REAL_VEC PDupwindNthSymm3Xt1;
+ CCTK_REAL_VEC PDupwindNthAnti1Xt2;
+ CCTK_REAL_VEC PDupwindNthSymm1Xt2;
+ CCTK_REAL_VEC PDupwindNthAnti2Xt2;
+ CCTK_REAL_VEC PDupwindNthSymm2Xt2;
+ CCTK_REAL_VEC PDupwindNthAnti3Xt2;
+ CCTK_REAL_VEC PDupwindNthSymm3Xt2;
+ CCTK_REAL_VEC PDupwindNthAnti1Xt3;
+ CCTK_REAL_VEC PDupwindNthSymm1Xt3;
+ CCTK_REAL_VEC PDupwindNthAnti2Xt3;
+ CCTK_REAL_VEC PDupwindNthSymm2Xt3;
+ CCTK_REAL_VEC PDupwindNthAnti3Xt3;
+ CCTK_REAL_VEC PDupwindNthSymm3Xt3;
+
+ switch(fdOrder)
+ {
+ case 2:
+ PDupwindNthAnti1A = PDupwindNthAntifdOrder21(&A[index]);
+ PDupwindNthSymm1A = PDupwindNthSymmfdOrder21(&A[index]);
+ PDupwindNthAnti2A = PDupwindNthAntifdOrder22(&A[index]);
+ PDupwindNthSymm2A = PDupwindNthSymmfdOrder22(&A[index]);
+ PDupwindNthAnti3A = PDupwindNthAntifdOrder23(&A[index]);
+ PDupwindNthSymm3A = PDupwindNthSymmfdOrder23(&A[index]);
+ PDupwindNthAnti1alpha = PDupwindNthAntifdOrder21(&alpha[index]);
+ PDupwindNthSymm1alpha = PDupwindNthSymmfdOrder21(&alpha[index]);
+ PDupwindNthAnti2alpha = PDupwindNthAntifdOrder22(&alpha[index]);
+ PDupwindNthSymm2alpha = PDupwindNthSymmfdOrder22(&alpha[index]);
+ PDupwindNthAnti3alpha = PDupwindNthAntifdOrder23(&alpha[index]);
+ PDupwindNthSymm3alpha = PDupwindNthSymmfdOrder23(&alpha[index]);
+ PDupwindNthAnti1At11 = PDupwindNthAntifdOrder21(&At11[index]);
+ PDupwindNthSymm1At11 = PDupwindNthSymmfdOrder21(&At11[index]);
+ PDupwindNthAnti2At11 = PDupwindNthAntifdOrder22(&At11[index]);
+ PDupwindNthSymm2At11 = PDupwindNthSymmfdOrder22(&At11[index]);
+ PDupwindNthAnti3At11 = PDupwindNthAntifdOrder23(&At11[index]);
+ PDupwindNthSymm3At11 = PDupwindNthSymmfdOrder23(&At11[index]);
+ PDupwindNthAnti1At12 = PDupwindNthAntifdOrder21(&At12[index]);
+ PDupwindNthSymm1At12 = PDupwindNthSymmfdOrder21(&At12[index]);
+ PDupwindNthAnti2At12 = PDupwindNthAntifdOrder22(&At12[index]);
+ PDupwindNthSymm2At12 = PDupwindNthSymmfdOrder22(&At12[index]);
+ PDupwindNthAnti3At12 = PDupwindNthAntifdOrder23(&At12[index]);
+ PDupwindNthSymm3At12 = PDupwindNthSymmfdOrder23(&At12[index]);
+ PDupwindNthAnti1At13 = PDupwindNthAntifdOrder21(&At13[index]);
+ PDupwindNthSymm1At13 = PDupwindNthSymmfdOrder21(&At13[index]);
+ PDupwindNthAnti2At13 = PDupwindNthAntifdOrder22(&At13[index]);
+ PDupwindNthSymm2At13 = PDupwindNthSymmfdOrder22(&At13[index]);
+ PDupwindNthAnti3At13 = PDupwindNthAntifdOrder23(&At13[index]);
+ PDupwindNthSymm3At13 = PDupwindNthSymmfdOrder23(&At13[index]);
+ PDupwindNthAnti1At22 = PDupwindNthAntifdOrder21(&At22[index]);
+ PDupwindNthSymm1At22 = PDupwindNthSymmfdOrder21(&At22[index]);
+ PDupwindNthAnti2At22 = PDupwindNthAntifdOrder22(&At22[index]);
+ PDupwindNthSymm2At22 = PDupwindNthSymmfdOrder22(&At22[index]);
+ PDupwindNthAnti3At22 = PDupwindNthAntifdOrder23(&At22[index]);
+ PDupwindNthSymm3At22 = PDupwindNthSymmfdOrder23(&At22[index]);
+ PDupwindNthAnti1At23 = PDupwindNthAntifdOrder21(&At23[index]);
+ PDupwindNthSymm1At23 = PDupwindNthSymmfdOrder21(&At23[index]);
+ PDupwindNthAnti2At23 = PDupwindNthAntifdOrder22(&At23[index]);
+ PDupwindNthSymm2At23 = PDupwindNthSymmfdOrder22(&At23[index]);
+ PDupwindNthAnti3At23 = PDupwindNthAntifdOrder23(&At23[index]);
+ PDupwindNthSymm3At23 = PDupwindNthSymmfdOrder23(&At23[index]);
+ PDupwindNthAnti1At33 = PDupwindNthAntifdOrder21(&At33[index]);
+ PDupwindNthSymm1At33 = PDupwindNthSymmfdOrder21(&At33[index]);
+ PDupwindNthAnti2At33 = PDupwindNthAntifdOrder22(&At33[index]);
+ PDupwindNthSymm2At33 = PDupwindNthSymmfdOrder22(&At33[index]);
+ PDupwindNthAnti3At33 = PDupwindNthAntifdOrder23(&At33[index]);
+ PDupwindNthSymm3At33 = PDupwindNthSymmfdOrder23(&At33[index]);
+ PDupwindNthAnti1B1 = PDupwindNthAntifdOrder21(&B1[index]);
+ PDupwindNthSymm1B1 = PDupwindNthSymmfdOrder21(&B1[index]);
+ PDupwindNthAnti2B1 = PDupwindNthAntifdOrder22(&B1[index]);
+ PDupwindNthSymm2B1 = PDupwindNthSymmfdOrder22(&B1[index]);
+ PDupwindNthAnti3B1 = PDupwindNthAntifdOrder23(&B1[index]);
+ PDupwindNthSymm3B1 = PDupwindNthSymmfdOrder23(&B1[index]);
+ PDupwindNthAnti1B2 = PDupwindNthAntifdOrder21(&B2[index]);
+ PDupwindNthSymm1B2 = PDupwindNthSymmfdOrder21(&B2[index]);
+ PDupwindNthAnti2B2 = PDupwindNthAntifdOrder22(&B2[index]);
+ PDupwindNthSymm2B2 = PDupwindNthSymmfdOrder22(&B2[index]);
+ PDupwindNthAnti3B2 = PDupwindNthAntifdOrder23(&B2[index]);
+ PDupwindNthSymm3B2 = PDupwindNthSymmfdOrder23(&B2[index]);
+ PDupwindNthAnti1B3 = PDupwindNthAntifdOrder21(&B3[index]);
+ PDupwindNthSymm1B3 = PDupwindNthSymmfdOrder21(&B3[index]);
+ PDupwindNthAnti2B3 = PDupwindNthAntifdOrder22(&B3[index]);
+ PDupwindNthSymm2B3 = PDupwindNthSymmfdOrder22(&B3[index]);
+ PDupwindNthAnti3B3 = PDupwindNthAntifdOrder23(&B3[index]);
+ PDupwindNthSymm3B3 = PDupwindNthSymmfdOrder23(&B3[index]);
+ PDupwindNthAnti1beta1 = PDupwindNthAntifdOrder21(&beta1[index]);
+ PDupwindNthSymm1beta1 = PDupwindNthSymmfdOrder21(&beta1[index]);
+ PDupwindNthAnti2beta1 = PDupwindNthAntifdOrder22(&beta1[index]);
+ PDupwindNthSymm2beta1 = PDupwindNthSymmfdOrder22(&beta1[index]);
+ PDupwindNthAnti3beta1 = PDupwindNthAntifdOrder23(&beta1[index]);
+ PDupwindNthSymm3beta1 = PDupwindNthSymmfdOrder23(&beta1[index]);
+ PDupwindNthAnti1beta2 = PDupwindNthAntifdOrder21(&beta2[index]);
+ PDupwindNthSymm1beta2 = PDupwindNthSymmfdOrder21(&beta2[index]);
+ PDupwindNthAnti2beta2 = PDupwindNthAntifdOrder22(&beta2[index]);
+ PDupwindNthSymm2beta2 = PDupwindNthSymmfdOrder22(&beta2[index]);
+ PDupwindNthAnti3beta2 = PDupwindNthAntifdOrder23(&beta2[index]);
+ PDupwindNthSymm3beta2 = PDupwindNthSymmfdOrder23(&beta2[index]);
+ PDupwindNthAnti1beta3 = PDupwindNthAntifdOrder21(&beta3[index]);
+ PDupwindNthSymm1beta3 = PDupwindNthSymmfdOrder21(&beta3[index]);
+ PDupwindNthAnti2beta3 = PDupwindNthAntifdOrder22(&beta3[index]);
+ PDupwindNthSymm2beta3 = PDupwindNthSymmfdOrder22(&beta3[index]);
+ PDupwindNthAnti3beta3 = PDupwindNthAntifdOrder23(&beta3[index]);
+ PDupwindNthSymm3beta3 = PDupwindNthSymmfdOrder23(&beta3[index]);
+ PDupwindNthAnti1gt11 = PDupwindNthAntifdOrder21(&gt11[index]);
+ PDupwindNthSymm1gt11 = PDupwindNthSymmfdOrder21(&gt11[index]);
+ PDupwindNthAnti2gt11 = PDupwindNthAntifdOrder22(&gt11[index]);
+ PDupwindNthSymm2gt11 = PDupwindNthSymmfdOrder22(&gt11[index]);
+ PDupwindNthAnti3gt11 = PDupwindNthAntifdOrder23(&gt11[index]);
+ PDupwindNthSymm3gt11 = PDupwindNthSymmfdOrder23(&gt11[index]);
+ PDupwindNthAnti1gt12 = PDupwindNthAntifdOrder21(&gt12[index]);
+ PDupwindNthSymm1gt12 = PDupwindNthSymmfdOrder21(&gt12[index]);
+ PDupwindNthAnti2gt12 = PDupwindNthAntifdOrder22(&gt12[index]);
+ PDupwindNthSymm2gt12 = PDupwindNthSymmfdOrder22(&gt12[index]);
+ PDupwindNthAnti3gt12 = PDupwindNthAntifdOrder23(&gt12[index]);
+ PDupwindNthSymm3gt12 = PDupwindNthSymmfdOrder23(&gt12[index]);
+ PDupwindNthAnti1gt13 = PDupwindNthAntifdOrder21(&gt13[index]);
+ PDupwindNthSymm1gt13 = PDupwindNthSymmfdOrder21(&gt13[index]);
+ PDupwindNthAnti2gt13 = PDupwindNthAntifdOrder22(&gt13[index]);
+ PDupwindNthSymm2gt13 = PDupwindNthSymmfdOrder22(&gt13[index]);
+ PDupwindNthAnti3gt13 = PDupwindNthAntifdOrder23(&gt13[index]);
+ PDupwindNthSymm3gt13 = PDupwindNthSymmfdOrder23(&gt13[index]);
+ PDupwindNthAnti1gt22 = PDupwindNthAntifdOrder21(&gt22[index]);
+ PDupwindNthSymm1gt22 = PDupwindNthSymmfdOrder21(&gt22[index]);
+ PDupwindNthAnti2gt22 = PDupwindNthAntifdOrder22(&gt22[index]);
+ PDupwindNthSymm2gt22 = PDupwindNthSymmfdOrder22(&gt22[index]);
+ PDupwindNthAnti3gt22 = PDupwindNthAntifdOrder23(&gt22[index]);
+ PDupwindNthSymm3gt22 = PDupwindNthSymmfdOrder23(&gt22[index]);
+ PDupwindNthAnti1gt23 = PDupwindNthAntifdOrder21(&gt23[index]);
+ PDupwindNthSymm1gt23 = PDupwindNthSymmfdOrder21(&gt23[index]);
+ PDupwindNthAnti2gt23 = PDupwindNthAntifdOrder22(&gt23[index]);
+ PDupwindNthSymm2gt23 = PDupwindNthSymmfdOrder22(&gt23[index]);
+ PDupwindNthAnti3gt23 = PDupwindNthAntifdOrder23(&gt23[index]);
+ PDupwindNthSymm3gt23 = PDupwindNthSymmfdOrder23(&gt23[index]);
+ PDupwindNthAnti1gt33 = PDupwindNthAntifdOrder21(&gt33[index]);
+ PDupwindNthSymm1gt33 = PDupwindNthSymmfdOrder21(&gt33[index]);
+ PDupwindNthAnti2gt33 = PDupwindNthAntifdOrder22(&gt33[index]);
+ PDupwindNthSymm2gt33 = PDupwindNthSymmfdOrder22(&gt33[index]);
+ PDupwindNthAnti3gt33 = PDupwindNthAntifdOrder23(&gt33[index]);
+ PDupwindNthSymm3gt33 = PDupwindNthSymmfdOrder23(&gt33[index]);
+ PDupwindNthAnti1phi = PDupwindNthAntifdOrder21(&phi[index]);
+ PDupwindNthSymm1phi = PDupwindNthSymmfdOrder21(&phi[index]);
+ PDupwindNthAnti2phi = PDupwindNthAntifdOrder22(&phi[index]);
+ PDupwindNthSymm2phi = PDupwindNthSymmfdOrder22(&phi[index]);
+ PDupwindNthAnti3phi = PDupwindNthAntifdOrder23(&phi[index]);
+ PDupwindNthSymm3phi = PDupwindNthSymmfdOrder23(&phi[index]);
+ PDupwindNthAnti1Theta = PDupwindNthAntifdOrder21(&Theta[index]);
+ PDupwindNthSymm1Theta = PDupwindNthSymmfdOrder21(&Theta[index]);
+ PDupwindNthAnti2Theta = PDupwindNthAntifdOrder22(&Theta[index]);
+ PDupwindNthSymm2Theta = PDupwindNthSymmfdOrder22(&Theta[index]);
+ PDupwindNthAnti3Theta = PDupwindNthAntifdOrder23(&Theta[index]);
+ PDupwindNthSymm3Theta = PDupwindNthSymmfdOrder23(&Theta[index]);
+ PDupwindNthAnti1trK = PDupwindNthAntifdOrder21(&trK[index]);
+ PDupwindNthSymm1trK = PDupwindNthSymmfdOrder21(&trK[index]);
+ PDupwindNthAnti2trK = PDupwindNthAntifdOrder22(&trK[index]);
+ PDupwindNthSymm2trK = PDupwindNthSymmfdOrder22(&trK[index]);
+ PDupwindNthAnti3trK = PDupwindNthAntifdOrder23(&trK[index]);
+ PDupwindNthSymm3trK = PDupwindNthSymmfdOrder23(&trK[index]);
+ PDupwindNthAnti1Xt1 = PDupwindNthAntifdOrder21(&Xt1[index]);
+ PDupwindNthSymm1Xt1 = PDupwindNthSymmfdOrder21(&Xt1[index]);
+ PDupwindNthAnti2Xt1 = PDupwindNthAntifdOrder22(&Xt1[index]);
+ PDupwindNthSymm2Xt1 = PDupwindNthSymmfdOrder22(&Xt1[index]);
+ PDupwindNthAnti3Xt1 = PDupwindNthAntifdOrder23(&Xt1[index]);
+ PDupwindNthSymm3Xt1 = PDupwindNthSymmfdOrder23(&Xt1[index]);
+ PDupwindNthAnti1Xt2 = PDupwindNthAntifdOrder21(&Xt2[index]);
+ PDupwindNthSymm1Xt2 = PDupwindNthSymmfdOrder21(&Xt2[index]);
+ PDupwindNthAnti2Xt2 = PDupwindNthAntifdOrder22(&Xt2[index]);
+ PDupwindNthSymm2Xt2 = PDupwindNthSymmfdOrder22(&Xt2[index]);
+ PDupwindNthAnti3Xt2 = PDupwindNthAntifdOrder23(&Xt2[index]);
+ PDupwindNthSymm3Xt2 = PDupwindNthSymmfdOrder23(&Xt2[index]);
+ PDupwindNthAnti1Xt3 = PDupwindNthAntifdOrder21(&Xt3[index]);
+ PDupwindNthSymm1Xt3 = PDupwindNthSymmfdOrder21(&Xt3[index]);
+ PDupwindNthAnti2Xt3 = PDupwindNthAntifdOrder22(&Xt3[index]);
+ PDupwindNthSymm2Xt3 = PDupwindNthSymmfdOrder22(&Xt3[index]);
+ PDupwindNthAnti3Xt3 = PDupwindNthAntifdOrder23(&Xt3[index]);
+ PDupwindNthSymm3Xt3 = PDupwindNthSymmfdOrder23(&Xt3[index]);
+ break;
+
+ case 4:
+ PDupwindNthAnti1A = PDupwindNthAntifdOrder41(&A[index]);
+ PDupwindNthSymm1A = PDupwindNthSymmfdOrder41(&A[index]);
+ PDupwindNthAnti2A = PDupwindNthAntifdOrder42(&A[index]);
+ PDupwindNthSymm2A = PDupwindNthSymmfdOrder42(&A[index]);
+ PDupwindNthAnti3A = PDupwindNthAntifdOrder43(&A[index]);
+ PDupwindNthSymm3A = PDupwindNthSymmfdOrder43(&A[index]);
+ PDupwindNthAnti1alpha = PDupwindNthAntifdOrder41(&alpha[index]);
+ PDupwindNthSymm1alpha = PDupwindNthSymmfdOrder41(&alpha[index]);
+ PDupwindNthAnti2alpha = PDupwindNthAntifdOrder42(&alpha[index]);
+ PDupwindNthSymm2alpha = PDupwindNthSymmfdOrder42(&alpha[index]);
+ PDupwindNthAnti3alpha = PDupwindNthAntifdOrder43(&alpha[index]);
+ PDupwindNthSymm3alpha = PDupwindNthSymmfdOrder43(&alpha[index]);
+ PDupwindNthAnti1At11 = PDupwindNthAntifdOrder41(&At11[index]);
+ PDupwindNthSymm1At11 = PDupwindNthSymmfdOrder41(&At11[index]);
+ PDupwindNthAnti2At11 = PDupwindNthAntifdOrder42(&At11[index]);
+ PDupwindNthSymm2At11 = PDupwindNthSymmfdOrder42(&At11[index]);
+ PDupwindNthAnti3At11 = PDupwindNthAntifdOrder43(&At11[index]);
+ PDupwindNthSymm3At11 = PDupwindNthSymmfdOrder43(&At11[index]);
+ PDupwindNthAnti1At12 = PDupwindNthAntifdOrder41(&At12[index]);
+ PDupwindNthSymm1At12 = PDupwindNthSymmfdOrder41(&At12[index]);
+ PDupwindNthAnti2At12 = PDupwindNthAntifdOrder42(&At12[index]);
+ PDupwindNthSymm2At12 = PDupwindNthSymmfdOrder42(&At12[index]);
+ PDupwindNthAnti3At12 = PDupwindNthAntifdOrder43(&At12[index]);
+ PDupwindNthSymm3At12 = PDupwindNthSymmfdOrder43(&At12[index]);
+ PDupwindNthAnti1At13 = PDupwindNthAntifdOrder41(&At13[index]);
+ PDupwindNthSymm1At13 = PDupwindNthSymmfdOrder41(&At13[index]);
+ PDupwindNthAnti2At13 = PDupwindNthAntifdOrder42(&At13[index]);
+ PDupwindNthSymm2At13 = PDupwindNthSymmfdOrder42(&At13[index]);
+ PDupwindNthAnti3At13 = PDupwindNthAntifdOrder43(&At13[index]);
+ PDupwindNthSymm3At13 = PDupwindNthSymmfdOrder43(&At13[index]);
+ PDupwindNthAnti1At22 = PDupwindNthAntifdOrder41(&At22[index]);
+ PDupwindNthSymm1At22 = PDupwindNthSymmfdOrder41(&At22[index]);
+ PDupwindNthAnti2At22 = PDupwindNthAntifdOrder42(&At22[index]);
+ PDupwindNthSymm2At22 = PDupwindNthSymmfdOrder42(&At22[index]);
+ PDupwindNthAnti3At22 = PDupwindNthAntifdOrder43(&At22[index]);
+ PDupwindNthSymm3At22 = PDupwindNthSymmfdOrder43(&At22[index]);
+ PDupwindNthAnti1At23 = PDupwindNthAntifdOrder41(&At23[index]);
+ PDupwindNthSymm1At23 = PDupwindNthSymmfdOrder41(&At23[index]);
+ PDupwindNthAnti2At23 = PDupwindNthAntifdOrder42(&At23[index]);
+ PDupwindNthSymm2At23 = PDupwindNthSymmfdOrder42(&At23[index]);
+ PDupwindNthAnti3At23 = PDupwindNthAntifdOrder43(&At23[index]);
+ PDupwindNthSymm3At23 = PDupwindNthSymmfdOrder43(&At23[index]);
+ PDupwindNthAnti1At33 = PDupwindNthAntifdOrder41(&At33[index]);
+ PDupwindNthSymm1At33 = PDupwindNthSymmfdOrder41(&At33[index]);
+ PDupwindNthAnti2At33 = PDupwindNthAntifdOrder42(&At33[index]);
+ PDupwindNthSymm2At33 = PDupwindNthSymmfdOrder42(&At33[index]);
+ PDupwindNthAnti3At33 = PDupwindNthAntifdOrder43(&At33[index]);
+ PDupwindNthSymm3At33 = PDupwindNthSymmfdOrder43(&At33[index]);
+ PDupwindNthAnti1B1 = PDupwindNthAntifdOrder41(&B1[index]);
+ PDupwindNthSymm1B1 = PDupwindNthSymmfdOrder41(&B1[index]);
+ PDupwindNthAnti2B1 = PDupwindNthAntifdOrder42(&B1[index]);
+ PDupwindNthSymm2B1 = PDupwindNthSymmfdOrder42(&B1[index]);
+ PDupwindNthAnti3B1 = PDupwindNthAntifdOrder43(&B1[index]);
+ PDupwindNthSymm3B1 = PDupwindNthSymmfdOrder43(&B1[index]);
+ PDupwindNthAnti1B2 = PDupwindNthAntifdOrder41(&B2[index]);
+ PDupwindNthSymm1B2 = PDupwindNthSymmfdOrder41(&B2[index]);
+ PDupwindNthAnti2B2 = PDupwindNthAntifdOrder42(&B2[index]);
+ PDupwindNthSymm2B2 = PDupwindNthSymmfdOrder42(&B2[index]);
+ PDupwindNthAnti3B2 = PDupwindNthAntifdOrder43(&B2[index]);
+ PDupwindNthSymm3B2 = PDupwindNthSymmfdOrder43(&B2[index]);
+ PDupwindNthAnti1B3 = PDupwindNthAntifdOrder41(&B3[index]);
+ PDupwindNthSymm1B3 = PDupwindNthSymmfdOrder41(&B3[index]);
+ PDupwindNthAnti2B3 = PDupwindNthAntifdOrder42(&B3[index]);
+ PDupwindNthSymm2B3 = PDupwindNthSymmfdOrder42(&B3[index]);
+ PDupwindNthAnti3B3 = PDupwindNthAntifdOrder43(&B3[index]);
+ PDupwindNthSymm3B3 = PDupwindNthSymmfdOrder43(&B3[index]);
+ PDupwindNthAnti1beta1 = PDupwindNthAntifdOrder41(&beta1[index]);
+ PDupwindNthSymm1beta1 = PDupwindNthSymmfdOrder41(&beta1[index]);
+ PDupwindNthAnti2beta1 = PDupwindNthAntifdOrder42(&beta1[index]);
+ PDupwindNthSymm2beta1 = PDupwindNthSymmfdOrder42(&beta1[index]);
+ PDupwindNthAnti3beta1 = PDupwindNthAntifdOrder43(&beta1[index]);
+ PDupwindNthSymm3beta1 = PDupwindNthSymmfdOrder43(&beta1[index]);
+ PDupwindNthAnti1beta2 = PDupwindNthAntifdOrder41(&beta2[index]);
+ PDupwindNthSymm1beta2 = PDupwindNthSymmfdOrder41(&beta2[index]);
+ PDupwindNthAnti2beta2 = PDupwindNthAntifdOrder42(&beta2[index]);
+ PDupwindNthSymm2beta2 = PDupwindNthSymmfdOrder42(&beta2[index]);
+ PDupwindNthAnti3beta2 = PDupwindNthAntifdOrder43(&beta2[index]);
+ PDupwindNthSymm3beta2 = PDupwindNthSymmfdOrder43(&beta2[index]);
+ PDupwindNthAnti1beta3 = PDupwindNthAntifdOrder41(&beta3[index]);
+ PDupwindNthSymm1beta3 = PDupwindNthSymmfdOrder41(&beta3[index]);
+ PDupwindNthAnti2beta3 = PDupwindNthAntifdOrder42(&beta3[index]);
+ PDupwindNthSymm2beta3 = PDupwindNthSymmfdOrder42(&beta3[index]);
+ PDupwindNthAnti3beta3 = PDupwindNthAntifdOrder43(&beta3[index]);
+ PDupwindNthSymm3beta3 = PDupwindNthSymmfdOrder43(&beta3[index]);
+ PDupwindNthAnti1gt11 = PDupwindNthAntifdOrder41(&gt11[index]);
+ PDupwindNthSymm1gt11 = PDupwindNthSymmfdOrder41(&gt11[index]);
+ PDupwindNthAnti2gt11 = PDupwindNthAntifdOrder42(&gt11[index]);
+ PDupwindNthSymm2gt11 = PDupwindNthSymmfdOrder42(&gt11[index]);
+ PDupwindNthAnti3gt11 = PDupwindNthAntifdOrder43(&gt11[index]);
+ PDupwindNthSymm3gt11 = PDupwindNthSymmfdOrder43(&gt11[index]);
+ PDupwindNthAnti1gt12 = PDupwindNthAntifdOrder41(&gt12[index]);
+ PDupwindNthSymm1gt12 = PDupwindNthSymmfdOrder41(&gt12[index]);
+ PDupwindNthAnti2gt12 = PDupwindNthAntifdOrder42(&gt12[index]);
+ PDupwindNthSymm2gt12 = PDupwindNthSymmfdOrder42(&gt12[index]);
+ PDupwindNthAnti3gt12 = PDupwindNthAntifdOrder43(&gt12[index]);
+ PDupwindNthSymm3gt12 = PDupwindNthSymmfdOrder43(&gt12[index]);
+ PDupwindNthAnti1gt13 = PDupwindNthAntifdOrder41(&gt13[index]);
+ PDupwindNthSymm1gt13 = PDupwindNthSymmfdOrder41(&gt13[index]);
+ PDupwindNthAnti2gt13 = PDupwindNthAntifdOrder42(&gt13[index]);
+ PDupwindNthSymm2gt13 = PDupwindNthSymmfdOrder42(&gt13[index]);
+ PDupwindNthAnti3gt13 = PDupwindNthAntifdOrder43(&gt13[index]);
+ PDupwindNthSymm3gt13 = PDupwindNthSymmfdOrder43(&gt13[index]);
+ PDupwindNthAnti1gt22 = PDupwindNthAntifdOrder41(&gt22[index]);
+ PDupwindNthSymm1gt22 = PDupwindNthSymmfdOrder41(&gt22[index]);
+ PDupwindNthAnti2gt22 = PDupwindNthAntifdOrder42(&gt22[index]);
+ PDupwindNthSymm2gt22 = PDupwindNthSymmfdOrder42(&gt22[index]);
+ PDupwindNthAnti3gt22 = PDupwindNthAntifdOrder43(&gt22[index]);
+ PDupwindNthSymm3gt22 = PDupwindNthSymmfdOrder43(&gt22[index]);
+ PDupwindNthAnti1gt23 = PDupwindNthAntifdOrder41(&gt23[index]);
+ PDupwindNthSymm1gt23 = PDupwindNthSymmfdOrder41(&gt23[index]);
+ PDupwindNthAnti2gt23 = PDupwindNthAntifdOrder42(&gt23[index]);
+ PDupwindNthSymm2gt23 = PDupwindNthSymmfdOrder42(&gt23[index]);
+ PDupwindNthAnti3gt23 = PDupwindNthAntifdOrder43(&gt23[index]);
+ PDupwindNthSymm3gt23 = PDupwindNthSymmfdOrder43(&gt23[index]);
+ PDupwindNthAnti1gt33 = PDupwindNthAntifdOrder41(&gt33[index]);
+ PDupwindNthSymm1gt33 = PDupwindNthSymmfdOrder41(&gt33[index]);
+ PDupwindNthAnti2gt33 = PDupwindNthAntifdOrder42(&gt33[index]);
+ PDupwindNthSymm2gt33 = PDupwindNthSymmfdOrder42(&gt33[index]);
+ PDupwindNthAnti3gt33 = PDupwindNthAntifdOrder43(&gt33[index]);
+ PDupwindNthSymm3gt33 = PDupwindNthSymmfdOrder43(&gt33[index]);
+ PDupwindNthAnti1phi = PDupwindNthAntifdOrder41(&phi[index]);
+ PDupwindNthSymm1phi = PDupwindNthSymmfdOrder41(&phi[index]);
+ PDupwindNthAnti2phi = PDupwindNthAntifdOrder42(&phi[index]);
+ PDupwindNthSymm2phi = PDupwindNthSymmfdOrder42(&phi[index]);
+ PDupwindNthAnti3phi = PDupwindNthAntifdOrder43(&phi[index]);
+ PDupwindNthSymm3phi = PDupwindNthSymmfdOrder43(&phi[index]);
+ PDupwindNthAnti1Theta = PDupwindNthAntifdOrder41(&Theta[index]);
+ PDupwindNthSymm1Theta = PDupwindNthSymmfdOrder41(&Theta[index]);
+ PDupwindNthAnti2Theta = PDupwindNthAntifdOrder42(&Theta[index]);
+ PDupwindNthSymm2Theta = PDupwindNthSymmfdOrder42(&Theta[index]);
+ PDupwindNthAnti3Theta = PDupwindNthAntifdOrder43(&Theta[index]);
+ PDupwindNthSymm3Theta = PDupwindNthSymmfdOrder43(&Theta[index]);
+ PDupwindNthAnti1trK = PDupwindNthAntifdOrder41(&trK[index]);
+ PDupwindNthSymm1trK = PDupwindNthSymmfdOrder41(&trK[index]);
+ PDupwindNthAnti2trK = PDupwindNthAntifdOrder42(&trK[index]);
+ PDupwindNthSymm2trK = PDupwindNthSymmfdOrder42(&trK[index]);
+ PDupwindNthAnti3trK = PDupwindNthAntifdOrder43(&trK[index]);
+ PDupwindNthSymm3trK = PDupwindNthSymmfdOrder43(&trK[index]);
+ PDupwindNthAnti1Xt1 = PDupwindNthAntifdOrder41(&Xt1[index]);
+ PDupwindNthSymm1Xt1 = PDupwindNthSymmfdOrder41(&Xt1[index]);
+ PDupwindNthAnti2Xt1 = PDupwindNthAntifdOrder42(&Xt1[index]);
+ PDupwindNthSymm2Xt1 = PDupwindNthSymmfdOrder42(&Xt1[index]);
+ PDupwindNthAnti3Xt1 = PDupwindNthAntifdOrder43(&Xt1[index]);
+ PDupwindNthSymm3Xt1 = PDupwindNthSymmfdOrder43(&Xt1[index]);
+ PDupwindNthAnti1Xt2 = PDupwindNthAntifdOrder41(&Xt2[index]);
+ PDupwindNthSymm1Xt2 = PDupwindNthSymmfdOrder41(&Xt2[index]);
+ PDupwindNthAnti2Xt2 = PDupwindNthAntifdOrder42(&Xt2[index]);
+ PDupwindNthSymm2Xt2 = PDupwindNthSymmfdOrder42(&Xt2[index]);
+ PDupwindNthAnti3Xt2 = PDupwindNthAntifdOrder43(&Xt2[index]);
+ PDupwindNthSymm3Xt2 = PDupwindNthSymmfdOrder43(&Xt2[index]);
+ PDupwindNthAnti1Xt3 = PDupwindNthAntifdOrder41(&Xt3[index]);
+ PDupwindNthSymm1Xt3 = PDupwindNthSymmfdOrder41(&Xt3[index]);
+ PDupwindNthAnti2Xt3 = PDupwindNthAntifdOrder42(&Xt3[index]);
+ PDupwindNthSymm2Xt3 = PDupwindNthSymmfdOrder42(&Xt3[index]);
+ PDupwindNthAnti3Xt3 = PDupwindNthAntifdOrder43(&Xt3[index]);
+ PDupwindNthSymm3Xt3 = PDupwindNthSymmfdOrder43(&Xt3[index]);
+ break;
+
+ case 6:
+ PDupwindNthAnti1A = PDupwindNthAntifdOrder61(&A[index]);
+ PDupwindNthSymm1A = PDupwindNthSymmfdOrder61(&A[index]);
+ PDupwindNthAnti2A = PDupwindNthAntifdOrder62(&A[index]);
+ PDupwindNthSymm2A = PDupwindNthSymmfdOrder62(&A[index]);
+ PDupwindNthAnti3A = PDupwindNthAntifdOrder63(&A[index]);
+ PDupwindNthSymm3A = PDupwindNthSymmfdOrder63(&A[index]);
+ PDupwindNthAnti1alpha = PDupwindNthAntifdOrder61(&alpha[index]);
+ PDupwindNthSymm1alpha = PDupwindNthSymmfdOrder61(&alpha[index]);
+ PDupwindNthAnti2alpha = PDupwindNthAntifdOrder62(&alpha[index]);
+ PDupwindNthSymm2alpha = PDupwindNthSymmfdOrder62(&alpha[index]);
+ PDupwindNthAnti3alpha = PDupwindNthAntifdOrder63(&alpha[index]);
+ PDupwindNthSymm3alpha = PDupwindNthSymmfdOrder63(&alpha[index]);
+ PDupwindNthAnti1At11 = PDupwindNthAntifdOrder61(&At11[index]);
+ PDupwindNthSymm1At11 = PDupwindNthSymmfdOrder61(&At11[index]);
+ PDupwindNthAnti2At11 = PDupwindNthAntifdOrder62(&At11[index]);
+ PDupwindNthSymm2At11 = PDupwindNthSymmfdOrder62(&At11[index]);
+ PDupwindNthAnti3At11 = PDupwindNthAntifdOrder63(&At11[index]);
+ PDupwindNthSymm3At11 = PDupwindNthSymmfdOrder63(&At11[index]);
+ PDupwindNthAnti1At12 = PDupwindNthAntifdOrder61(&At12[index]);
+ PDupwindNthSymm1At12 = PDupwindNthSymmfdOrder61(&At12[index]);
+ PDupwindNthAnti2At12 = PDupwindNthAntifdOrder62(&At12[index]);
+ PDupwindNthSymm2At12 = PDupwindNthSymmfdOrder62(&At12[index]);
+ PDupwindNthAnti3At12 = PDupwindNthAntifdOrder63(&At12[index]);
+ PDupwindNthSymm3At12 = PDupwindNthSymmfdOrder63(&At12[index]);
+ PDupwindNthAnti1At13 = PDupwindNthAntifdOrder61(&At13[index]);
+ PDupwindNthSymm1At13 = PDupwindNthSymmfdOrder61(&At13[index]);
+ PDupwindNthAnti2At13 = PDupwindNthAntifdOrder62(&At13[index]);
+ PDupwindNthSymm2At13 = PDupwindNthSymmfdOrder62(&At13[index]);
+ PDupwindNthAnti3At13 = PDupwindNthAntifdOrder63(&At13[index]);
+ PDupwindNthSymm3At13 = PDupwindNthSymmfdOrder63(&At13[index]);
+ PDupwindNthAnti1At22 = PDupwindNthAntifdOrder61(&At22[index]);
+ PDupwindNthSymm1At22 = PDupwindNthSymmfdOrder61(&At22[index]);
+ PDupwindNthAnti2At22 = PDupwindNthAntifdOrder62(&At22[index]);
+ PDupwindNthSymm2At22 = PDupwindNthSymmfdOrder62(&At22[index]);
+ PDupwindNthAnti3At22 = PDupwindNthAntifdOrder63(&At22[index]);
+ PDupwindNthSymm3At22 = PDupwindNthSymmfdOrder63(&At22[index]);
+ PDupwindNthAnti1At23 = PDupwindNthAntifdOrder61(&At23[index]);
+ PDupwindNthSymm1At23 = PDupwindNthSymmfdOrder61(&At23[index]);
+ PDupwindNthAnti2At23 = PDupwindNthAntifdOrder62(&At23[index]);
+ PDupwindNthSymm2At23 = PDupwindNthSymmfdOrder62(&At23[index]);
+ PDupwindNthAnti3At23 = PDupwindNthAntifdOrder63(&At23[index]);
+ PDupwindNthSymm3At23 = PDupwindNthSymmfdOrder63(&At23[index]);
+ PDupwindNthAnti1At33 = PDupwindNthAntifdOrder61(&At33[index]);
+ PDupwindNthSymm1At33 = PDupwindNthSymmfdOrder61(&At33[index]);
+ PDupwindNthAnti2At33 = PDupwindNthAntifdOrder62(&At33[index]);
+ PDupwindNthSymm2At33 = PDupwindNthSymmfdOrder62(&At33[index]);
+ PDupwindNthAnti3At33 = PDupwindNthAntifdOrder63(&At33[index]);
+ PDupwindNthSymm3At33 = PDupwindNthSymmfdOrder63(&At33[index]);
+ PDupwindNthAnti1B1 = PDupwindNthAntifdOrder61(&B1[index]);
+ PDupwindNthSymm1B1 = PDupwindNthSymmfdOrder61(&B1[index]);
+ PDupwindNthAnti2B1 = PDupwindNthAntifdOrder62(&B1[index]);
+ PDupwindNthSymm2B1 = PDupwindNthSymmfdOrder62(&B1[index]);
+ PDupwindNthAnti3B1 = PDupwindNthAntifdOrder63(&B1[index]);
+ PDupwindNthSymm3B1 = PDupwindNthSymmfdOrder63(&B1[index]);
+ PDupwindNthAnti1B2 = PDupwindNthAntifdOrder61(&B2[index]);
+ PDupwindNthSymm1B2 = PDupwindNthSymmfdOrder61(&B2[index]);
+ PDupwindNthAnti2B2 = PDupwindNthAntifdOrder62(&B2[index]);
+ PDupwindNthSymm2B2 = PDupwindNthSymmfdOrder62(&B2[index]);
+ PDupwindNthAnti3B2 = PDupwindNthAntifdOrder63(&B2[index]);
+ PDupwindNthSymm3B2 = PDupwindNthSymmfdOrder63(&B2[index]);
+ PDupwindNthAnti1B3 = PDupwindNthAntifdOrder61(&B3[index]);
+ PDupwindNthSymm1B3 = PDupwindNthSymmfdOrder61(&B3[index]);
+ PDupwindNthAnti2B3 = PDupwindNthAntifdOrder62(&B3[index]);
+ PDupwindNthSymm2B3 = PDupwindNthSymmfdOrder62(&B3[index]);
+ PDupwindNthAnti3B3 = PDupwindNthAntifdOrder63(&B3[index]);
+ PDupwindNthSymm3B3 = PDupwindNthSymmfdOrder63(&B3[index]);
+ PDupwindNthAnti1beta1 = PDupwindNthAntifdOrder61(&beta1[index]);
+ PDupwindNthSymm1beta1 = PDupwindNthSymmfdOrder61(&beta1[index]);
+ PDupwindNthAnti2beta1 = PDupwindNthAntifdOrder62(&beta1[index]);
+ PDupwindNthSymm2beta1 = PDupwindNthSymmfdOrder62(&beta1[index]);
+ PDupwindNthAnti3beta1 = PDupwindNthAntifdOrder63(&beta1[index]);
+ PDupwindNthSymm3beta1 = PDupwindNthSymmfdOrder63(&beta1[index]);
+ PDupwindNthAnti1beta2 = PDupwindNthAntifdOrder61(&beta2[index]);
+ PDupwindNthSymm1beta2 = PDupwindNthSymmfdOrder61(&beta2[index]);
+ PDupwindNthAnti2beta2 = PDupwindNthAntifdOrder62(&beta2[index]);
+ PDupwindNthSymm2beta2 = PDupwindNthSymmfdOrder62(&beta2[index]);
+ PDupwindNthAnti3beta2 = PDupwindNthAntifdOrder63(&beta2[index]);
+ PDupwindNthSymm3beta2 = PDupwindNthSymmfdOrder63(&beta2[index]);
+ PDupwindNthAnti1beta3 = PDupwindNthAntifdOrder61(&beta3[index]);
+ PDupwindNthSymm1beta3 = PDupwindNthSymmfdOrder61(&beta3[index]);
+ PDupwindNthAnti2beta3 = PDupwindNthAntifdOrder62(&beta3[index]);
+ PDupwindNthSymm2beta3 = PDupwindNthSymmfdOrder62(&beta3[index]);
+ PDupwindNthAnti3beta3 = PDupwindNthAntifdOrder63(&beta3[index]);
+ PDupwindNthSymm3beta3 = PDupwindNthSymmfdOrder63(&beta3[index]);
+ PDupwindNthAnti1gt11 = PDupwindNthAntifdOrder61(&gt11[index]);
+ PDupwindNthSymm1gt11 = PDupwindNthSymmfdOrder61(&gt11[index]);
+ PDupwindNthAnti2gt11 = PDupwindNthAntifdOrder62(&gt11[index]);
+ PDupwindNthSymm2gt11 = PDupwindNthSymmfdOrder62(&gt11[index]);
+ PDupwindNthAnti3gt11 = PDupwindNthAntifdOrder63(&gt11[index]);
+ PDupwindNthSymm3gt11 = PDupwindNthSymmfdOrder63(&gt11[index]);
+ PDupwindNthAnti1gt12 = PDupwindNthAntifdOrder61(&gt12[index]);
+ PDupwindNthSymm1gt12 = PDupwindNthSymmfdOrder61(&gt12[index]);
+ PDupwindNthAnti2gt12 = PDupwindNthAntifdOrder62(&gt12[index]);
+ PDupwindNthSymm2gt12 = PDupwindNthSymmfdOrder62(&gt12[index]);
+ PDupwindNthAnti3gt12 = PDupwindNthAntifdOrder63(&gt12[index]);
+ PDupwindNthSymm3gt12 = PDupwindNthSymmfdOrder63(&gt12[index]);
+ PDupwindNthAnti1gt13 = PDupwindNthAntifdOrder61(&gt13[index]);
+ PDupwindNthSymm1gt13 = PDupwindNthSymmfdOrder61(&gt13[index]);
+ PDupwindNthAnti2gt13 = PDupwindNthAntifdOrder62(&gt13[index]);
+ PDupwindNthSymm2gt13 = PDupwindNthSymmfdOrder62(&gt13[index]);
+ PDupwindNthAnti3gt13 = PDupwindNthAntifdOrder63(&gt13[index]);
+ PDupwindNthSymm3gt13 = PDupwindNthSymmfdOrder63(&gt13[index]);
+ PDupwindNthAnti1gt22 = PDupwindNthAntifdOrder61(&gt22[index]);
+ PDupwindNthSymm1gt22 = PDupwindNthSymmfdOrder61(&gt22[index]);
+ PDupwindNthAnti2gt22 = PDupwindNthAntifdOrder62(&gt22[index]);
+ PDupwindNthSymm2gt22 = PDupwindNthSymmfdOrder62(&gt22[index]);
+ PDupwindNthAnti3gt22 = PDupwindNthAntifdOrder63(&gt22[index]);
+ PDupwindNthSymm3gt22 = PDupwindNthSymmfdOrder63(&gt22[index]);
+ PDupwindNthAnti1gt23 = PDupwindNthAntifdOrder61(&gt23[index]);
+ PDupwindNthSymm1gt23 = PDupwindNthSymmfdOrder61(&gt23[index]);
+ PDupwindNthAnti2gt23 = PDupwindNthAntifdOrder62(&gt23[index]);
+ PDupwindNthSymm2gt23 = PDupwindNthSymmfdOrder62(&gt23[index]);
+ PDupwindNthAnti3gt23 = PDupwindNthAntifdOrder63(&gt23[index]);
+ PDupwindNthSymm3gt23 = PDupwindNthSymmfdOrder63(&gt23[index]);
+ PDupwindNthAnti1gt33 = PDupwindNthAntifdOrder61(&gt33[index]);
+ PDupwindNthSymm1gt33 = PDupwindNthSymmfdOrder61(&gt33[index]);
+ PDupwindNthAnti2gt33 = PDupwindNthAntifdOrder62(&gt33[index]);
+ PDupwindNthSymm2gt33 = PDupwindNthSymmfdOrder62(&gt33[index]);
+ PDupwindNthAnti3gt33 = PDupwindNthAntifdOrder63(&gt33[index]);
+ PDupwindNthSymm3gt33 = PDupwindNthSymmfdOrder63(&gt33[index]);
+ PDupwindNthAnti1phi = PDupwindNthAntifdOrder61(&phi[index]);
+ PDupwindNthSymm1phi = PDupwindNthSymmfdOrder61(&phi[index]);
+ PDupwindNthAnti2phi = PDupwindNthAntifdOrder62(&phi[index]);
+ PDupwindNthSymm2phi = PDupwindNthSymmfdOrder62(&phi[index]);
+ PDupwindNthAnti3phi = PDupwindNthAntifdOrder63(&phi[index]);
+ PDupwindNthSymm3phi = PDupwindNthSymmfdOrder63(&phi[index]);
+ PDupwindNthAnti1Theta = PDupwindNthAntifdOrder61(&Theta[index]);
+ PDupwindNthSymm1Theta = PDupwindNthSymmfdOrder61(&Theta[index]);
+ PDupwindNthAnti2Theta = PDupwindNthAntifdOrder62(&Theta[index]);
+ PDupwindNthSymm2Theta = PDupwindNthSymmfdOrder62(&Theta[index]);
+ PDupwindNthAnti3Theta = PDupwindNthAntifdOrder63(&Theta[index]);
+ PDupwindNthSymm3Theta = PDupwindNthSymmfdOrder63(&Theta[index]);
+ PDupwindNthAnti1trK = PDupwindNthAntifdOrder61(&trK[index]);
+ PDupwindNthSymm1trK = PDupwindNthSymmfdOrder61(&trK[index]);
+ PDupwindNthAnti2trK = PDupwindNthAntifdOrder62(&trK[index]);
+ PDupwindNthSymm2trK = PDupwindNthSymmfdOrder62(&trK[index]);
+ PDupwindNthAnti3trK = PDupwindNthAntifdOrder63(&trK[index]);
+ PDupwindNthSymm3trK = PDupwindNthSymmfdOrder63(&trK[index]);
+ PDupwindNthAnti1Xt1 = PDupwindNthAntifdOrder61(&Xt1[index]);
+ PDupwindNthSymm1Xt1 = PDupwindNthSymmfdOrder61(&Xt1[index]);
+ PDupwindNthAnti2Xt1 = PDupwindNthAntifdOrder62(&Xt1[index]);
+ PDupwindNthSymm2Xt1 = PDupwindNthSymmfdOrder62(&Xt1[index]);
+ PDupwindNthAnti3Xt1 = PDupwindNthAntifdOrder63(&Xt1[index]);
+ PDupwindNthSymm3Xt1 = PDupwindNthSymmfdOrder63(&Xt1[index]);
+ PDupwindNthAnti1Xt2 = PDupwindNthAntifdOrder61(&Xt2[index]);
+ PDupwindNthSymm1Xt2 = PDupwindNthSymmfdOrder61(&Xt2[index]);
+ PDupwindNthAnti2Xt2 = PDupwindNthAntifdOrder62(&Xt2[index]);
+ PDupwindNthSymm2Xt2 = PDupwindNthSymmfdOrder62(&Xt2[index]);
+ PDupwindNthAnti3Xt2 = PDupwindNthAntifdOrder63(&Xt2[index]);
+ PDupwindNthSymm3Xt2 = PDupwindNthSymmfdOrder63(&Xt2[index]);
+ PDupwindNthAnti1Xt3 = PDupwindNthAntifdOrder61(&Xt3[index]);
+ PDupwindNthSymm1Xt3 = PDupwindNthSymmfdOrder61(&Xt3[index]);
+ PDupwindNthAnti2Xt3 = PDupwindNthAntifdOrder62(&Xt3[index]);
+ PDupwindNthSymm2Xt3 = PDupwindNthSymmfdOrder62(&Xt3[index]);
+ PDupwindNthAnti3Xt3 = PDupwindNthAntifdOrder63(&Xt3[index]);
+ PDupwindNthSymm3Xt3 = PDupwindNthSymmfdOrder63(&Xt3[index]);
+ break;
+
+ case 8:
+ PDupwindNthAnti1A = PDupwindNthAntifdOrder81(&A[index]);
+ PDupwindNthSymm1A = PDupwindNthSymmfdOrder81(&A[index]);
+ PDupwindNthAnti2A = PDupwindNthAntifdOrder82(&A[index]);
+ PDupwindNthSymm2A = PDupwindNthSymmfdOrder82(&A[index]);
+ PDupwindNthAnti3A = PDupwindNthAntifdOrder83(&A[index]);
+ PDupwindNthSymm3A = PDupwindNthSymmfdOrder83(&A[index]);
+ PDupwindNthAnti1alpha = PDupwindNthAntifdOrder81(&alpha[index]);
+ PDupwindNthSymm1alpha = PDupwindNthSymmfdOrder81(&alpha[index]);
+ PDupwindNthAnti2alpha = PDupwindNthAntifdOrder82(&alpha[index]);
+ PDupwindNthSymm2alpha = PDupwindNthSymmfdOrder82(&alpha[index]);
+ PDupwindNthAnti3alpha = PDupwindNthAntifdOrder83(&alpha[index]);
+ PDupwindNthSymm3alpha = PDupwindNthSymmfdOrder83(&alpha[index]);
+ PDupwindNthAnti1At11 = PDupwindNthAntifdOrder81(&At11[index]);
+ PDupwindNthSymm1At11 = PDupwindNthSymmfdOrder81(&At11[index]);
+ PDupwindNthAnti2At11 = PDupwindNthAntifdOrder82(&At11[index]);
+ PDupwindNthSymm2At11 = PDupwindNthSymmfdOrder82(&At11[index]);
+ PDupwindNthAnti3At11 = PDupwindNthAntifdOrder83(&At11[index]);
+ PDupwindNthSymm3At11 = PDupwindNthSymmfdOrder83(&At11[index]);
+ PDupwindNthAnti1At12 = PDupwindNthAntifdOrder81(&At12[index]);
+ PDupwindNthSymm1At12 = PDupwindNthSymmfdOrder81(&At12[index]);
+ PDupwindNthAnti2At12 = PDupwindNthAntifdOrder82(&At12[index]);
+ PDupwindNthSymm2At12 = PDupwindNthSymmfdOrder82(&At12[index]);
+ PDupwindNthAnti3At12 = PDupwindNthAntifdOrder83(&At12[index]);
+ PDupwindNthSymm3At12 = PDupwindNthSymmfdOrder83(&At12[index]);
+ PDupwindNthAnti1At13 = PDupwindNthAntifdOrder81(&At13[index]);
+ PDupwindNthSymm1At13 = PDupwindNthSymmfdOrder81(&At13[index]);
+ PDupwindNthAnti2At13 = PDupwindNthAntifdOrder82(&At13[index]);
+ PDupwindNthSymm2At13 = PDupwindNthSymmfdOrder82(&At13[index]);
+ PDupwindNthAnti3At13 = PDupwindNthAntifdOrder83(&At13[index]);
+ PDupwindNthSymm3At13 = PDupwindNthSymmfdOrder83(&At13[index]);
+ PDupwindNthAnti1At22 = PDupwindNthAntifdOrder81(&At22[index]);
+ PDupwindNthSymm1At22 = PDupwindNthSymmfdOrder81(&At22[index]);
+ PDupwindNthAnti2At22 = PDupwindNthAntifdOrder82(&At22[index]);
+ PDupwindNthSymm2At22 = PDupwindNthSymmfdOrder82(&At22[index]);
+ PDupwindNthAnti3At22 = PDupwindNthAntifdOrder83(&At22[index]);
+ PDupwindNthSymm3At22 = PDupwindNthSymmfdOrder83(&At22[index]);
+ PDupwindNthAnti1At23 = PDupwindNthAntifdOrder81(&At23[index]);
+ PDupwindNthSymm1At23 = PDupwindNthSymmfdOrder81(&At23[index]);
+ PDupwindNthAnti2At23 = PDupwindNthAntifdOrder82(&At23[index]);
+ PDupwindNthSymm2At23 = PDupwindNthSymmfdOrder82(&At23[index]);
+ PDupwindNthAnti3At23 = PDupwindNthAntifdOrder83(&At23[index]);
+ PDupwindNthSymm3At23 = PDupwindNthSymmfdOrder83(&At23[index]);
+ PDupwindNthAnti1At33 = PDupwindNthAntifdOrder81(&At33[index]);
+ PDupwindNthSymm1At33 = PDupwindNthSymmfdOrder81(&At33[index]);
+ PDupwindNthAnti2At33 = PDupwindNthAntifdOrder82(&At33[index]);
+ PDupwindNthSymm2At33 = PDupwindNthSymmfdOrder82(&At33[index]);
+ PDupwindNthAnti3At33 = PDupwindNthAntifdOrder83(&At33[index]);
+ PDupwindNthSymm3At33 = PDupwindNthSymmfdOrder83(&At33[index]);
+ PDupwindNthAnti1B1 = PDupwindNthAntifdOrder81(&B1[index]);
+ PDupwindNthSymm1B1 = PDupwindNthSymmfdOrder81(&B1[index]);
+ PDupwindNthAnti2B1 = PDupwindNthAntifdOrder82(&B1[index]);
+ PDupwindNthSymm2B1 = PDupwindNthSymmfdOrder82(&B1[index]);
+ PDupwindNthAnti3B1 = PDupwindNthAntifdOrder83(&B1[index]);
+ PDupwindNthSymm3B1 = PDupwindNthSymmfdOrder83(&B1[index]);
+ PDupwindNthAnti1B2 = PDupwindNthAntifdOrder81(&B2[index]);
+ PDupwindNthSymm1B2 = PDupwindNthSymmfdOrder81(&B2[index]);
+ PDupwindNthAnti2B2 = PDupwindNthAntifdOrder82(&B2[index]);
+ PDupwindNthSymm2B2 = PDupwindNthSymmfdOrder82(&B2[index]);
+ PDupwindNthAnti3B2 = PDupwindNthAntifdOrder83(&B2[index]);
+ PDupwindNthSymm3B2 = PDupwindNthSymmfdOrder83(&B2[index]);
+ PDupwindNthAnti1B3 = PDupwindNthAntifdOrder81(&B3[index]);
+ PDupwindNthSymm1B3 = PDupwindNthSymmfdOrder81(&B3[index]);
+ PDupwindNthAnti2B3 = PDupwindNthAntifdOrder82(&B3[index]);
+ PDupwindNthSymm2B3 = PDupwindNthSymmfdOrder82(&B3[index]);
+ PDupwindNthAnti3B3 = PDupwindNthAntifdOrder83(&B3[index]);
+ PDupwindNthSymm3B3 = PDupwindNthSymmfdOrder83(&B3[index]);
+ PDupwindNthAnti1beta1 = PDupwindNthAntifdOrder81(&beta1[index]);
+ PDupwindNthSymm1beta1 = PDupwindNthSymmfdOrder81(&beta1[index]);
+ PDupwindNthAnti2beta1 = PDupwindNthAntifdOrder82(&beta1[index]);
+ PDupwindNthSymm2beta1 = PDupwindNthSymmfdOrder82(&beta1[index]);
+ PDupwindNthAnti3beta1 = PDupwindNthAntifdOrder83(&beta1[index]);
+ PDupwindNthSymm3beta1 = PDupwindNthSymmfdOrder83(&beta1[index]);
+ PDupwindNthAnti1beta2 = PDupwindNthAntifdOrder81(&beta2[index]);
+ PDupwindNthSymm1beta2 = PDupwindNthSymmfdOrder81(&beta2[index]);
+ PDupwindNthAnti2beta2 = PDupwindNthAntifdOrder82(&beta2[index]);
+ PDupwindNthSymm2beta2 = PDupwindNthSymmfdOrder82(&beta2[index]);
+ PDupwindNthAnti3beta2 = PDupwindNthAntifdOrder83(&beta2[index]);
+ PDupwindNthSymm3beta2 = PDupwindNthSymmfdOrder83(&beta2[index]);
+ PDupwindNthAnti1beta3 = PDupwindNthAntifdOrder81(&beta3[index]);
+ PDupwindNthSymm1beta3 = PDupwindNthSymmfdOrder81(&beta3[index]);
+ PDupwindNthAnti2beta3 = PDupwindNthAntifdOrder82(&beta3[index]);
+ PDupwindNthSymm2beta3 = PDupwindNthSymmfdOrder82(&beta3[index]);
+ PDupwindNthAnti3beta3 = PDupwindNthAntifdOrder83(&beta3[index]);
+ PDupwindNthSymm3beta3 = PDupwindNthSymmfdOrder83(&beta3[index]);
+ PDupwindNthAnti1gt11 = PDupwindNthAntifdOrder81(&gt11[index]);
+ PDupwindNthSymm1gt11 = PDupwindNthSymmfdOrder81(&gt11[index]);
+ PDupwindNthAnti2gt11 = PDupwindNthAntifdOrder82(&gt11[index]);
+ PDupwindNthSymm2gt11 = PDupwindNthSymmfdOrder82(&gt11[index]);
+ PDupwindNthAnti3gt11 = PDupwindNthAntifdOrder83(&gt11[index]);
+ PDupwindNthSymm3gt11 = PDupwindNthSymmfdOrder83(&gt11[index]);
+ PDupwindNthAnti1gt12 = PDupwindNthAntifdOrder81(&gt12[index]);
+ PDupwindNthSymm1gt12 = PDupwindNthSymmfdOrder81(&gt12[index]);
+ PDupwindNthAnti2gt12 = PDupwindNthAntifdOrder82(&gt12[index]);
+ PDupwindNthSymm2gt12 = PDupwindNthSymmfdOrder82(&gt12[index]);
+ PDupwindNthAnti3gt12 = PDupwindNthAntifdOrder83(&gt12[index]);
+ PDupwindNthSymm3gt12 = PDupwindNthSymmfdOrder83(&gt12[index]);
+ PDupwindNthAnti1gt13 = PDupwindNthAntifdOrder81(&gt13[index]);
+ PDupwindNthSymm1gt13 = PDupwindNthSymmfdOrder81(&gt13[index]);
+ PDupwindNthAnti2gt13 = PDupwindNthAntifdOrder82(&gt13[index]);
+ PDupwindNthSymm2gt13 = PDupwindNthSymmfdOrder82(&gt13[index]);
+ PDupwindNthAnti3gt13 = PDupwindNthAntifdOrder83(&gt13[index]);
+ PDupwindNthSymm3gt13 = PDupwindNthSymmfdOrder83(&gt13[index]);
+ PDupwindNthAnti1gt22 = PDupwindNthAntifdOrder81(&gt22[index]);
+ PDupwindNthSymm1gt22 = PDupwindNthSymmfdOrder81(&gt22[index]);
+ PDupwindNthAnti2gt22 = PDupwindNthAntifdOrder82(&gt22[index]);
+ PDupwindNthSymm2gt22 = PDupwindNthSymmfdOrder82(&gt22[index]);
+ PDupwindNthAnti3gt22 = PDupwindNthAntifdOrder83(&gt22[index]);
+ PDupwindNthSymm3gt22 = PDupwindNthSymmfdOrder83(&gt22[index]);
+ PDupwindNthAnti1gt23 = PDupwindNthAntifdOrder81(&gt23[index]);
+ PDupwindNthSymm1gt23 = PDupwindNthSymmfdOrder81(&gt23[index]);
+ PDupwindNthAnti2gt23 = PDupwindNthAntifdOrder82(&gt23[index]);
+ PDupwindNthSymm2gt23 = PDupwindNthSymmfdOrder82(&gt23[index]);
+ PDupwindNthAnti3gt23 = PDupwindNthAntifdOrder83(&gt23[index]);
+ PDupwindNthSymm3gt23 = PDupwindNthSymmfdOrder83(&gt23[index]);
+ PDupwindNthAnti1gt33 = PDupwindNthAntifdOrder81(&gt33[index]);
+ PDupwindNthSymm1gt33 = PDupwindNthSymmfdOrder81(&gt33[index]);
+ PDupwindNthAnti2gt33 = PDupwindNthAntifdOrder82(&gt33[index]);
+ PDupwindNthSymm2gt33 = PDupwindNthSymmfdOrder82(&gt33[index]);
+ PDupwindNthAnti3gt33 = PDupwindNthAntifdOrder83(&gt33[index]);
+ PDupwindNthSymm3gt33 = PDupwindNthSymmfdOrder83(&gt33[index]);
+ PDupwindNthAnti1phi = PDupwindNthAntifdOrder81(&phi[index]);
+ PDupwindNthSymm1phi = PDupwindNthSymmfdOrder81(&phi[index]);
+ PDupwindNthAnti2phi = PDupwindNthAntifdOrder82(&phi[index]);
+ PDupwindNthSymm2phi = PDupwindNthSymmfdOrder82(&phi[index]);
+ PDupwindNthAnti3phi = PDupwindNthAntifdOrder83(&phi[index]);
+ PDupwindNthSymm3phi = PDupwindNthSymmfdOrder83(&phi[index]);
+ PDupwindNthAnti1Theta = PDupwindNthAntifdOrder81(&Theta[index]);
+ PDupwindNthSymm1Theta = PDupwindNthSymmfdOrder81(&Theta[index]);
+ PDupwindNthAnti2Theta = PDupwindNthAntifdOrder82(&Theta[index]);
+ PDupwindNthSymm2Theta = PDupwindNthSymmfdOrder82(&Theta[index]);
+ PDupwindNthAnti3Theta = PDupwindNthAntifdOrder83(&Theta[index]);
+ PDupwindNthSymm3Theta = PDupwindNthSymmfdOrder83(&Theta[index]);
+ PDupwindNthAnti1trK = PDupwindNthAntifdOrder81(&trK[index]);
+ PDupwindNthSymm1trK = PDupwindNthSymmfdOrder81(&trK[index]);
+ PDupwindNthAnti2trK = PDupwindNthAntifdOrder82(&trK[index]);
+ PDupwindNthSymm2trK = PDupwindNthSymmfdOrder82(&trK[index]);
+ PDupwindNthAnti3trK = PDupwindNthAntifdOrder83(&trK[index]);
+ PDupwindNthSymm3trK = PDupwindNthSymmfdOrder83(&trK[index]);
+ PDupwindNthAnti1Xt1 = PDupwindNthAntifdOrder81(&Xt1[index]);
+ PDupwindNthSymm1Xt1 = PDupwindNthSymmfdOrder81(&Xt1[index]);
+ PDupwindNthAnti2Xt1 = PDupwindNthAntifdOrder82(&Xt1[index]);
+ PDupwindNthSymm2Xt1 = PDupwindNthSymmfdOrder82(&Xt1[index]);
+ PDupwindNthAnti3Xt1 = PDupwindNthAntifdOrder83(&Xt1[index]);
+ PDupwindNthSymm3Xt1 = PDupwindNthSymmfdOrder83(&Xt1[index]);
+ PDupwindNthAnti1Xt2 = PDupwindNthAntifdOrder81(&Xt2[index]);
+ PDupwindNthSymm1Xt2 = PDupwindNthSymmfdOrder81(&Xt2[index]);
+ PDupwindNthAnti2Xt2 = PDupwindNthAntifdOrder82(&Xt2[index]);
+ PDupwindNthSymm2Xt2 = PDupwindNthSymmfdOrder82(&Xt2[index]);
+ PDupwindNthAnti3Xt2 = PDupwindNthAntifdOrder83(&Xt2[index]);
+ PDupwindNthSymm3Xt2 = PDupwindNthSymmfdOrder83(&Xt2[index]);
+ PDupwindNthAnti1Xt3 = PDupwindNthAntifdOrder81(&Xt3[index]);
+ PDupwindNthSymm1Xt3 = PDupwindNthSymmfdOrder81(&Xt3[index]);
+ PDupwindNthAnti2Xt3 = PDupwindNthAntifdOrder82(&Xt3[index]);
+ PDupwindNthSymm2Xt3 = PDupwindNthSymmfdOrder82(&Xt3[index]);
+ PDupwindNthAnti3Xt3 = PDupwindNthAntifdOrder83(&Xt3[index]);
+ PDupwindNthSymm3Xt3 = PDupwindNthSymmfdOrder83(&Xt3[index]);
+ break;
+ }
+
+ /* Calculate temporaries and grid functions */
+ ptrdiff_t dir1 = Sign(beta1L);
+
+ ptrdiff_t dir2 = Sign(beta2L);
+
+ ptrdiff_t dir3 = Sign(beta3L);
+
+ CCTK_REAL_VEC JacPDupwindNthAnti1A;
+ CCTK_REAL_VEC JacPDupwindNthAnti1alpha;
+ CCTK_REAL_VEC JacPDupwindNthAnti1At11;
+ CCTK_REAL_VEC JacPDupwindNthAnti1At12;
+ CCTK_REAL_VEC JacPDupwindNthAnti1At13;
+ CCTK_REAL_VEC JacPDupwindNthAnti1At22;
+ CCTK_REAL_VEC JacPDupwindNthAnti1At23;
+ CCTK_REAL_VEC JacPDupwindNthAnti1At33;
+ CCTK_REAL_VEC JacPDupwindNthAnti1B1;
+ CCTK_REAL_VEC JacPDupwindNthAnti1B2;
+ CCTK_REAL_VEC JacPDupwindNthAnti1B3;
+ CCTK_REAL_VEC JacPDupwindNthAnti1beta1;
+ CCTK_REAL_VEC JacPDupwindNthAnti1beta2;
+ CCTK_REAL_VEC JacPDupwindNthAnti1beta3;
+ CCTK_REAL_VEC JacPDupwindNthAnti1gt11;
+ CCTK_REAL_VEC JacPDupwindNthAnti1gt12;
+ CCTK_REAL_VEC JacPDupwindNthAnti1gt13;
+ CCTK_REAL_VEC JacPDupwindNthAnti1gt22;
+ CCTK_REAL_VEC JacPDupwindNthAnti1gt23;
+ CCTK_REAL_VEC JacPDupwindNthAnti1gt33;
+ CCTK_REAL_VEC JacPDupwindNthAnti1phi;
+ CCTK_REAL_VEC JacPDupwindNthAnti1Theta;
+ CCTK_REAL_VEC JacPDupwindNthAnti1trK;
+ CCTK_REAL_VEC JacPDupwindNthAnti1Xt1;
+ CCTK_REAL_VEC JacPDupwindNthAnti1Xt2;
+ CCTK_REAL_VEC JacPDupwindNthAnti1Xt3;
+ CCTK_REAL_VEC JacPDupwindNthAnti2A;
+ CCTK_REAL_VEC JacPDupwindNthAnti2alpha;
+ CCTK_REAL_VEC JacPDupwindNthAnti2At11;
+ CCTK_REAL_VEC JacPDupwindNthAnti2At12;
+ CCTK_REAL_VEC JacPDupwindNthAnti2At13;
+ CCTK_REAL_VEC JacPDupwindNthAnti2At22;
+ CCTK_REAL_VEC JacPDupwindNthAnti2At23;
+ CCTK_REAL_VEC JacPDupwindNthAnti2At33;
+ CCTK_REAL_VEC JacPDupwindNthAnti2B1;
+ CCTK_REAL_VEC JacPDupwindNthAnti2B2;
+ CCTK_REAL_VEC JacPDupwindNthAnti2B3;
+ CCTK_REAL_VEC JacPDupwindNthAnti2beta1;
+ CCTK_REAL_VEC JacPDupwindNthAnti2beta2;
+ CCTK_REAL_VEC JacPDupwindNthAnti2beta3;
+ CCTK_REAL_VEC JacPDupwindNthAnti2gt11;
+ CCTK_REAL_VEC JacPDupwindNthAnti2gt12;
+ CCTK_REAL_VEC JacPDupwindNthAnti2gt13;
+ CCTK_REAL_VEC JacPDupwindNthAnti2gt22;
+ CCTK_REAL_VEC JacPDupwindNthAnti2gt23;
+ CCTK_REAL_VEC JacPDupwindNthAnti2gt33;
+ CCTK_REAL_VEC JacPDupwindNthAnti2phi;
+ CCTK_REAL_VEC JacPDupwindNthAnti2Theta;
+ CCTK_REAL_VEC JacPDupwindNthAnti2trK;
+ CCTK_REAL_VEC JacPDupwindNthAnti2Xt1;
+ CCTK_REAL_VEC JacPDupwindNthAnti2Xt2;
+ CCTK_REAL_VEC JacPDupwindNthAnti2Xt3;
+ CCTK_REAL_VEC JacPDupwindNthAnti3A;
+ CCTK_REAL_VEC JacPDupwindNthAnti3alpha;
+ CCTK_REAL_VEC JacPDupwindNthAnti3At11;
+ CCTK_REAL_VEC JacPDupwindNthAnti3At12;
+ CCTK_REAL_VEC JacPDupwindNthAnti3At13;
+ CCTK_REAL_VEC JacPDupwindNthAnti3At22;
+ CCTK_REAL_VEC JacPDupwindNthAnti3At23;
+ CCTK_REAL_VEC JacPDupwindNthAnti3At33;
+ CCTK_REAL_VEC JacPDupwindNthAnti3B1;
+ CCTK_REAL_VEC JacPDupwindNthAnti3B2;
+ CCTK_REAL_VEC JacPDupwindNthAnti3B3;
+ CCTK_REAL_VEC JacPDupwindNthAnti3beta1;
+ CCTK_REAL_VEC JacPDupwindNthAnti3beta2;
+ CCTK_REAL_VEC JacPDupwindNthAnti3beta3;
+ CCTK_REAL_VEC JacPDupwindNthAnti3gt11;
+ CCTK_REAL_VEC JacPDupwindNthAnti3gt12;
+ CCTK_REAL_VEC JacPDupwindNthAnti3gt13;
+ CCTK_REAL_VEC JacPDupwindNthAnti3gt22;
+ CCTK_REAL_VEC JacPDupwindNthAnti3gt23;
+ CCTK_REAL_VEC JacPDupwindNthAnti3gt33;
+ CCTK_REAL_VEC JacPDupwindNthAnti3phi;
+ CCTK_REAL_VEC JacPDupwindNthAnti3Theta;
+ CCTK_REAL_VEC JacPDupwindNthAnti3trK;
+ CCTK_REAL_VEC JacPDupwindNthAnti3Xt1;
+ CCTK_REAL_VEC JacPDupwindNthAnti3Xt2;
+ CCTK_REAL_VEC JacPDupwindNthAnti3Xt3;
+ CCTK_REAL_VEC JacPDupwindNthSymm1A;
+ CCTK_REAL_VEC JacPDupwindNthSymm1alpha;
+ CCTK_REAL_VEC JacPDupwindNthSymm1At11;
+ CCTK_REAL_VEC JacPDupwindNthSymm1At12;
+ CCTK_REAL_VEC JacPDupwindNthSymm1At13;
+ CCTK_REAL_VEC JacPDupwindNthSymm1At22;
+ CCTK_REAL_VEC JacPDupwindNthSymm1At23;
+ CCTK_REAL_VEC JacPDupwindNthSymm1At33;
+ CCTK_REAL_VEC JacPDupwindNthSymm1B1;
+ CCTK_REAL_VEC JacPDupwindNthSymm1B2;
+ CCTK_REAL_VEC JacPDupwindNthSymm1B3;
+ CCTK_REAL_VEC JacPDupwindNthSymm1beta1;
+ CCTK_REAL_VEC JacPDupwindNthSymm1beta2;
+ CCTK_REAL_VEC JacPDupwindNthSymm1beta3;
+ CCTK_REAL_VEC JacPDupwindNthSymm1gt11;
+ CCTK_REAL_VEC JacPDupwindNthSymm1gt12;
+ CCTK_REAL_VEC JacPDupwindNthSymm1gt13;
+ CCTK_REAL_VEC JacPDupwindNthSymm1gt22;
+ CCTK_REAL_VEC JacPDupwindNthSymm1gt23;
+ CCTK_REAL_VEC JacPDupwindNthSymm1gt33;
+ CCTK_REAL_VEC JacPDupwindNthSymm1phi;
+ CCTK_REAL_VEC JacPDupwindNthSymm1Theta;
+ CCTK_REAL_VEC JacPDupwindNthSymm1trK;
+ CCTK_REAL_VEC JacPDupwindNthSymm1Xt1;
+ CCTK_REAL_VEC JacPDupwindNthSymm1Xt2;
+ CCTK_REAL_VEC JacPDupwindNthSymm1Xt3;
+ CCTK_REAL_VEC JacPDupwindNthSymm2A;
+ CCTK_REAL_VEC JacPDupwindNthSymm2alpha;
+ CCTK_REAL_VEC JacPDupwindNthSymm2At11;
+ CCTK_REAL_VEC JacPDupwindNthSymm2At12;
+ CCTK_REAL_VEC JacPDupwindNthSymm2At13;
+ CCTK_REAL_VEC JacPDupwindNthSymm2At22;
+ CCTK_REAL_VEC JacPDupwindNthSymm2At23;
+ CCTK_REAL_VEC JacPDupwindNthSymm2At33;
+ CCTK_REAL_VEC JacPDupwindNthSymm2B1;
+ CCTK_REAL_VEC JacPDupwindNthSymm2B2;
+ CCTK_REAL_VEC JacPDupwindNthSymm2B3;
+ CCTK_REAL_VEC JacPDupwindNthSymm2beta1;
+ CCTK_REAL_VEC JacPDupwindNthSymm2beta2;
+ CCTK_REAL_VEC JacPDupwindNthSymm2beta3;
+ CCTK_REAL_VEC JacPDupwindNthSymm2gt11;
+ CCTK_REAL_VEC JacPDupwindNthSymm2gt12;
+ CCTK_REAL_VEC JacPDupwindNthSymm2gt13;
+ CCTK_REAL_VEC JacPDupwindNthSymm2gt22;
+ CCTK_REAL_VEC JacPDupwindNthSymm2gt23;
+ CCTK_REAL_VEC JacPDupwindNthSymm2gt33;
+ CCTK_REAL_VEC JacPDupwindNthSymm2phi;
+ CCTK_REAL_VEC JacPDupwindNthSymm2Theta;
+ CCTK_REAL_VEC JacPDupwindNthSymm2trK;
+ CCTK_REAL_VEC JacPDupwindNthSymm2Xt1;
+ CCTK_REAL_VEC JacPDupwindNthSymm2Xt2;
+ CCTK_REAL_VEC JacPDupwindNthSymm2Xt3;
+ CCTK_REAL_VEC JacPDupwindNthSymm3A;
+ CCTK_REAL_VEC JacPDupwindNthSymm3alpha;
+ CCTK_REAL_VEC JacPDupwindNthSymm3At11;
+ CCTK_REAL_VEC JacPDupwindNthSymm3At12;
+ CCTK_REAL_VEC JacPDupwindNthSymm3At13;
+ CCTK_REAL_VEC JacPDupwindNthSymm3At22;
+ CCTK_REAL_VEC JacPDupwindNthSymm3At23;
+ CCTK_REAL_VEC JacPDupwindNthSymm3At33;
+ CCTK_REAL_VEC JacPDupwindNthSymm3B1;
+ CCTK_REAL_VEC JacPDupwindNthSymm3B2;
+ CCTK_REAL_VEC JacPDupwindNthSymm3B3;
+ CCTK_REAL_VEC JacPDupwindNthSymm3beta1;
+ CCTK_REAL_VEC JacPDupwindNthSymm3beta2;
+ CCTK_REAL_VEC JacPDupwindNthSymm3beta3;
+ CCTK_REAL_VEC JacPDupwindNthSymm3gt11;
+ CCTK_REAL_VEC JacPDupwindNthSymm3gt12;
+ CCTK_REAL_VEC JacPDupwindNthSymm3gt13;
+ CCTK_REAL_VEC JacPDupwindNthSymm3gt22;
+ CCTK_REAL_VEC JacPDupwindNthSymm3gt23;
+ CCTK_REAL_VEC JacPDupwindNthSymm3gt33;
+ CCTK_REAL_VEC JacPDupwindNthSymm3phi;
+ CCTK_REAL_VEC JacPDupwindNthSymm3Theta;
+ CCTK_REAL_VEC JacPDupwindNthSymm3trK;
+ CCTK_REAL_VEC JacPDupwindNthSymm3Xt1;
+ CCTK_REAL_VEC JacPDupwindNthSymm3Xt2;
+ CCTK_REAL_VEC JacPDupwindNthSymm3Xt3;
+
+ if (use_jacobian)
+ {
+ JacPDupwindNthAnti1A =
+ kmadd(J11L,PDupwindNthAnti1A,kmadd(J21L,PDupwindNthAnti2A,kmul(J31L,PDupwindNthAnti3A)));
+
+ JacPDupwindNthAnti1alpha =
+ kmadd(J11L,PDupwindNthAnti1alpha,kmadd(J21L,PDupwindNthAnti2alpha,kmul(J31L,PDupwindNthAnti3alpha)));
+
+ JacPDupwindNthAnti1At11 =
+ kmadd(J11L,PDupwindNthAnti1At11,kmadd(J21L,PDupwindNthAnti2At11,kmul(J31L,PDupwindNthAnti3At11)));
+
+ JacPDupwindNthAnti1At12 =
+ kmadd(J11L,PDupwindNthAnti1At12,kmadd(J21L,PDupwindNthAnti2At12,kmul(J31L,PDupwindNthAnti3At12)));
+
+ JacPDupwindNthAnti1At13 =
+ kmadd(J11L,PDupwindNthAnti1At13,kmadd(J21L,PDupwindNthAnti2At13,kmul(J31L,PDupwindNthAnti3At13)));
+
+ JacPDupwindNthAnti1At22 =
+ kmadd(J11L,PDupwindNthAnti1At22,kmadd(J21L,PDupwindNthAnti2At22,kmul(J31L,PDupwindNthAnti3At22)));
+
+ JacPDupwindNthAnti1At23 =
+ kmadd(J11L,PDupwindNthAnti1At23,kmadd(J21L,PDupwindNthAnti2At23,kmul(J31L,PDupwindNthAnti3At23)));
+
+ JacPDupwindNthAnti1At33 =
+ kmadd(J11L,PDupwindNthAnti1At33,kmadd(J21L,PDupwindNthAnti2At33,kmul(J31L,PDupwindNthAnti3At33)));
+
+ JacPDupwindNthAnti1B1 =
+ kmadd(J11L,PDupwindNthAnti1B1,kmadd(J21L,PDupwindNthAnti2B1,kmul(J31L,PDupwindNthAnti3B1)));
+
+ JacPDupwindNthAnti1B2 =
+ kmadd(J11L,PDupwindNthAnti1B2,kmadd(J21L,PDupwindNthAnti2B2,kmul(J31L,PDupwindNthAnti3B2)));
+
+ JacPDupwindNthAnti1B3 =
+ kmadd(J11L,PDupwindNthAnti1B3,kmadd(J21L,PDupwindNthAnti2B3,kmul(J31L,PDupwindNthAnti3B3)));
+
+ JacPDupwindNthAnti1beta1 =
+ kmadd(J11L,PDupwindNthAnti1beta1,kmadd(J21L,PDupwindNthAnti2beta1,kmul(J31L,PDupwindNthAnti3beta1)));
+
+ JacPDupwindNthAnti1beta2 =
+ kmadd(J11L,PDupwindNthAnti1beta2,kmadd(J21L,PDupwindNthAnti2beta2,kmul(J31L,PDupwindNthAnti3beta2)));
+
+ JacPDupwindNthAnti1beta3 =
+ kmadd(J11L,PDupwindNthAnti1beta3,kmadd(J21L,PDupwindNthAnti2beta3,kmul(J31L,PDupwindNthAnti3beta3)));
+
+ JacPDupwindNthAnti1gt11 =
+ kmadd(J11L,PDupwindNthAnti1gt11,kmadd(J21L,PDupwindNthAnti2gt11,kmul(J31L,PDupwindNthAnti3gt11)));
+
+ JacPDupwindNthAnti1gt12 =
+ kmadd(J11L,PDupwindNthAnti1gt12,kmadd(J21L,PDupwindNthAnti2gt12,kmul(J31L,PDupwindNthAnti3gt12)));
+
+ JacPDupwindNthAnti1gt13 =
+ kmadd(J11L,PDupwindNthAnti1gt13,kmadd(J21L,PDupwindNthAnti2gt13,kmul(J31L,PDupwindNthAnti3gt13)));
+
+ JacPDupwindNthAnti1gt22 =
+ kmadd(J11L,PDupwindNthAnti1gt22,kmadd(J21L,PDupwindNthAnti2gt22,kmul(J31L,PDupwindNthAnti3gt22)));
+
+ JacPDupwindNthAnti1gt23 =
+ kmadd(J11L,PDupwindNthAnti1gt23,kmadd(J21L,PDupwindNthAnti2gt23,kmul(J31L,PDupwindNthAnti3gt23)));
+
+ JacPDupwindNthAnti1gt33 =
+ kmadd(J11L,PDupwindNthAnti1gt33,kmadd(J21L,PDupwindNthAnti2gt33,kmul(J31L,PDupwindNthAnti3gt33)));
+
+ JacPDupwindNthAnti1phi =
+ kmadd(J11L,PDupwindNthAnti1phi,kmadd(J21L,PDupwindNthAnti2phi,kmul(J31L,PDupwindNthAnti3phi)));
+
+ JacPDupwindNthAnti1Theta =
+ kmadd(J11L,PDupwindNthAnti1Theta,kmadd(J21L,PDupwindNthAnti2Theta,kmul(J31L,PDupwindNthAnti3Theta)));
+
+ JacPDupwindNthAnti1trK =
+ kmadd(J11L,PDupwindNthAnti1trK,kmadd(J21L,PDupwindNthAnti2trK,kmul(J31L,PDupwindNthAnti3trK)));
+
+ JacPDupwindNthAnti1Xt1 =
+ kmadd(J11L,PDupwindNthAnti1Xt1,kmadd(J21L,PDupwindNthAnti2Xt1,kmul(J31L,PDupwindNthAnti3Xt1)));
+
+ JacPDupwindNthAnti1Xt2 =
+ kmadd(J11L,PDupwindNthAnti1Xt2,kmadd(J21L,PDupwindNthAnti2Xt2,kmul(J31L,PDupwindNthAnti3Xt2)));
+
+ JacPDupwindNthAnti1Xt3 =
+ kmadd(J11L,PDupwindNthAnti1Xt3,kmadd(J21L,PDupwindNthAnti2Xt3,kmul(J31L,PDupwindNthAnti3Xt3)));
+
+ JacPDupwindNthSymm1A =
+ kmadd(J11L,PDupwindNthSymm1A,kmadd(J21L,PDupwindNthSymm2A,kmul(J31L,PDupwindNthSymm3A)));
+
+ JacPDupwindNthSymm1alpha =
+ kmadd(J11L,PDupwindNthSymm1alpha,kmadd(J21L,PDupwindNthSymm2alpha,kmul(J31L,PDupwindNthSymm3alpha)));
+
+ JacPDupwindNthSymm1At11 =
+ kmadd(J11L,PDupwindNthSymm1At11,kmadd(J21L,PDupwindNthSymm2At11,kmul(J31L,PDupwindNthSymm3At11)));
+
+ JacPDupwindNthSymm1At12 =
+ kmadd(J11L,PDupwindNthSymm1At12,kmadd(J21L,PDupwindNthSymm2At12,kmul(J31L,PDupwindNthSymm3At12)));
+
+ JacPDupwindNthSymm1At13 =
+ kmadd(J11L,PDupwindNthSymm1At13,kmadd(J21L,PDupwindNthSymm2At13,kmul(J31L,PDupwindNthSymm3At13)));
+
+ JacPDupwindNthSymm1At22 =
+ kmadd(J11L,PDupwindNthSymm1At22,kmadd(J21L,PDupwindNthSymm2At22,kmul(J31L,PDupwindNthSymm3At22)));
+
+ JacPDupwindNthSymm1At23 =
+ kmadd(J11L,PDupwindNthSymm1At23,kmadd(J21L,PDupwindNthSymm2At23,kmul(J31L,PDupwindNthSymm3At23)));
+
+ JacPDupwindNthSymm1At33 =
+ kmadd(J11L,PDupwindNthSymm1At33,kmadd(J21L,PDupwindNthSymm2At33,kmul(J31L,PDupwindNthSymm3At33)));
+
+ JacPDupwindNthSymm1B1 =
+ kmadd(J11L,PDupwindNthSymm1B1,kmadd(J21L,PDupwindNthSymm2B1,kmul(J31L,PDupwindNthSymm3B1)));
+
+ JacPDupwindNthSymm1B2 =
+ kmadd(J11L,PDupwindNthSymm1B2,kmadd(J21L,PDupwindNthSymm2B2,kmul(J31L,PDupwindNthSymm3B2)));
+
+ JacPDupwindNthSymm1B3 =
+ kmadd(J11L,PDupwindNthSymm1B3,kmadd(J21L,PDupwindNthSymm2B3,kmul(J31L,PDupwindNthSymm3B3)));
+
+ JacPDupwindNthSymm1beta1 =
+ kmadd(J11L,PDupwindNthSymm1beta1,kmadd(J21L,PDupwindNthSymm2beta1,kmul(J31L,PDupwindNthSymm3beta1)));
+
+ JacPDupwindNthSymm1beta2 =
+ kmadd(J11L,PDupwindNthSymm1beta2,kmadd(J21L,PDupwindNthSymm2beta2,kmul(J31L,PDupwindNthSymm3beta2)));
+
+ JacPDupwindNthSymm1beta3 =
+ kmadd(J11L,PDupwindNthSymm1beta3,kmadd(J21L,PDupwindNthSymm2beta3,kmul(J31L,PDupwindNthSymm3beta3)));
+
+ JacPDupwindNthSymm1gt11 =
+ kmadd(J11L,PDupwindNthSymm1gt11,kmadd(J21L,PDupwindNthSymm2gt11,kmul(J31L,PDupwindNthSymm3gt11)));
+
+ JacPDupwindNthSymm1gt12 =
+ kmadd(J11L,PDupwindNthSymm1gt12,kmadd(J21L,PDupwindNthSymm2gt12,kmul(J31L,PDupwindNthSymm3gt12)));
+
+ JacPDupwindNthSymm1gt13 =
+ kmadd(J11L,PDupwindNthSymm1gt13,kmadd(J21L,PDupwindNthSymm2gt13,kmul(J31L,PDupwindNthSymm3gt13)));
+
+ JacPDupwindNthSymm1gt22 =
+ kmadd(J11L,PDupwindNthSymm1gt22,kmadd(J21L,PDupwindNthSymm2gt22,kmul(J31L,PDupwindNthSymm3gt22)));
+
+ JacPDupwindNthSymm1gt23 =
+ kmadd(J11L,PDupwindNthSymm1gt23,kmadd(J21L,PDupwindNthSymm2gt23,kmul(J31L,PDupwindNthSymm3gt23)));
+
+ JacPDupwindNthSymm1gt33 =
+ kmadd(J11L,PDupwindNthSymm1gt33,kmadd(J21L,PDupwindNthSymm2gt33,kmul(J31L,PDupwindNthSymm3gt33)));
+
+ JacPDupwindNthSymm1phi =
+ kmadd(J11L,PDupwindNthSymm1phi,kmadd(J21L,PDupwindNthSymm2phi,kmul(J31L,PDupwindNthSymm3phi)));
+
+ JacPDupwindNthSymm1Theta =
+ kmadd(J11L,PDupwindNthSymm1Theta,kmadd(J21L,PDupwindNthSymm2Theta,kmul(J31L,PDupwindNthSymm3Theta)));
+
+ JacPDupwindNthSymm1trK =
+ kmadd(J11L,PDupwindNthSymm1trK,kmadd(J21L,PDupwindNthSymm2trK,kmul(J31L,PDupwindNthSymm3trK)));
+
+ JacPDupwindNthSymm1Xt1 =
+ kmadd(J11L,PDupwindNthSymm1Xt1,kmadd(J21L,PDupwindNthSymm2Xt1,kmul(J31L,PDupwindNthSymm3Xt1)));
+
+ JacPDupwindNthSymm1Xt2 =
+ kmadd(J11L,PDupwindNthSymm1Xt2,kmadd(J21L,PDupwindNthSymm2Xt2,kmul(J31L,PDupwindNthSymm3Xt2)));
+
+ JacPDupwindNthSymm1Xt3 =
+ kmadd(J11L,PDupwindNthSymm1Xt3,kmadd(J21L,PDupwindNthSymm2Xt3,kmul(J31L,PDupwindNthSymm3Xt3)));
+
+ JacPDupwindNthAnti2A =
+ kmadd(J12L,PDupwindNthAnti1A,kmadd(J22L,PDupwindNthAnti2A,kmul(J32L,PDupwindNthAnti3A)));
+
+ JacPDupwindNthAnti2alpha =
+ kmadd(J12L,PDupwindNthAnti1alpha,kmadd(J22L,PDupwindNthAnti2alpha,kmul(J32L,PDupwindNthAnti3alpha)));
+
+ JacPDupwindNthAnti2At11 =
+ kmadd(J12L,PDupwindNthAnti1At11,kmadd(J22L,PDupwindNthAnti2At11,kmul(J32L,PDupwindNthAnti3At11)));
+
+ JacPDupwindNthAnti2At12 =
+ kmadd(J12L,PDupwindNthAnti1At12,kmadd(J22L,PDupwindNthAnti2At12,kmul(J32L,PDupwindNthAnti3At12)));
+
+ JacPDupwindNthAnti2At13 =
+ kmadd(J12L,PDupwindNthAnti1At13,kmadd(J22L,PDupwindNthAnti2At13,kmul(J32L,PDupwindNthAnti3At13)));
+
+ JacPDupwindNthAnti2At22 =
+ kmadd(J12L,PDupwindNthAnti1At22,kmadd(J22L,PDupwindNthAnti2At22,kmul(J32L,PDupwindNthAnti3At22)));
+
+ JacPDupwindNthAnti2At23 =
+ kmadd(J12L,PDupwindNthAnti1At23,kmadd(J22L,PDupwindNthAnti2At23,kmul(J32L,PDupwindNthAnti3At23)));
+
+ JacPDupwindNthAnti2At33 =
+ kmadd(J12L,PDupwindNthAnti1At33,kmadd(J22L,PDupwindNthAnti2At33,kmul(J32L,PDupwindNthAnti3At33)));
+
+ JacPDupwindNthAnti2B1 =
+ kmadd(J12L,PDupwindNthAnti1B1,kmadd(J22L,PDupwindNthAnti2B1,kmul(J32L,PDupwindNthAnti3B1)));
+
+ JacPDupwindNthAnti2B2 =
+ kmadd(J12L,PDupwindNthAnti1B2,kmadd(J22L,PDupwindNthAnti2B2,kmul(J32L,PDupwindNthAnti3B2)));
+
+ JacPDupwindNthAnti2B3 =
+ kmadd(J12L,PDupwindNthAnti1B3,kmadd(J22L,PDupwindNthAnti2B3,kmul(J32L,PDupwindNthAnti3B3)));
+
+ JacPDupwindNthAnti2beta1 =
+ kmadd(J12L,PDupwindNthAnti1beta1,kmadd(J22L,PDupwindNthAnti2beta1,kmul(J32L,PDupwindNthAnti3beta1)));
+
+ JacPDupwindNthAnti2beta2 =
+ kmadd(J12L,PDupwindNthAnti1beta2,kmadd(J22L,PDupwindNthAnti2beta2,kmul(J32L,PDupwindNthAnti3beta2)));
+
+ JacPDupwindNthAnti2beta3 =
+ kmadd(J12L,PDupwindNthAnti1beta3,kmadd(J22L,PDupwindNthAnti2beta3,kmul(J32L,PDupwindNthAnti3beta3)));
+
+ JacPDupwindNthAnti2gt11 =
+ kmadd(J12L,PDupwindNthAnti1gt11,kmadd(J22L,PDupwindNthAnti2gt11,kmul(J32L,PDupwindNthAnti3gt11)));
+
+ JacPDupwindNthAnti2gt12 =
+ kmadd(J12L,PDupwindNthAnti1gt12,kmadd(J22L,PDupwindNthAnti2gt12,kmul(J32L,PDupwindNthAnti3gt12)));
+
+ JacPDupwindNthAnti2gt13 =
+ kmadd(J12L,PDupwindNthAnti1gt13,kmadd(J22L,PDupwindNthAnti2gt13,kmul(J32L,PDupwindNthAnti3gt13)));
+
+ JacPDupwindNthAnti2gt22 =
+ kmadd(J12L,PDupwindNthAnti1gt22,kmadd(J22L,PDupwindNthAnti2gt22,kmul(J32L,PDupwindNthAnti3gt22)));
+
+ JacPDupwindNthAnti2gt23 =
+ kmadd(J12L,PDupwindNthAnti1gt23,kmadd(J22L,PDupwindNthAnti2gt23,kmul(J32L,PDupwindNthAnti3gt23)));
+
+ JacPDupwindNthAnti2gt33 =
+ kmadd(J12L,PDupwindNthAnti1gt33,kmadd(J22L,PDupwindNthAnti2gt33,kmul(J32L,PDupwindNthAnti3gt33)));
+
+ JacPDupwindNthAnti2phi =
+ kmadd(J12L,PDupwindNthAnti1phi,kmadd(J22L,PDupwindNthAnti2phi,kmul(J32L,PDupwindNthAnti3phi)));
+
+ JacPDupwindNthAnti2Theta =
+ kmadd(J12L,PDupwindNthAnti1Theta,kmadd(J22L,PDupwindNthAnti2Theta,kmul(J32L,PDupwindNthAnti3Theta)));
+
+ JacPDupwindNthAnti2trK =
+ kmadd(J12L,PDupwindNthAnti1trK,kmadd(J22L,PDupwindNthAnti2trK,kmul(J32L,PDupwindNthAnti3trK)));
+
+ JacPDupwindNthAnti2Xt1 =
+ kmadd(J12L,PDupwindNthAnti1Xt1,kmadd(J22L,PDupwindNthAnti2Xt1,kmul(J32L,PDupwindNthAnti3Xt1)));
+
+ JacPDupwindNthAnti2Xt2 =
+ kmadd(J12L,PDupwindNthAnti1Xt2,kmadd(J22L,PDupwindNthAnti2Xt2,kmul(J32L,PDupwindNthAnti3Xt2)));
+
+ JacPDupwindNthAnti2Xt3 =
+ kmadd(J12L,PDupwindNthAnti1Xt3,kmadd(J22L,PDupwindNthAnti2Xt3,kmul(J32L,PDupwindNthAnti3Xt3)));
+
+ JacPDupwindNthSymm2A =
+ kmadd(J12L,PDupwindNthSymm1A,kmadd(J22L,PDupwindNthSymm2A,kmul(J32L,PDupwindNthSymm3A)));
+
+ JacPDupwindNthSymm2alpha =
+ kmadd(J12L,PDupwindNthSymm1alpha,kmadd(J22L,PDupwindNthSymm2alpha,kmul(J32L,PDupwindNthSymm3alpha)));
+
+ JacPDupwindNthSymm2At11 =
+ kmadd(J12L,PDupwindNthSymm1At11,kmadd(J22L,PDupwindNthSymm2At11,kmul(J32L,PDupwindNthSymm3At11)));
+
+ JacPDupwindNthSymm2At12 =
+ kmadd(J12L,PDupwindNthSymm1At12,kmadd(J22L,PDupwindNthSymm2At12,kmul(J32L,PDupwindNthSymm3At12)));
+
+ JacPDupwindNthSymm2At13 =
+ kmadd(J12L,PDupwindNthSymm1At13,kmadd(J22L,PDupwindNthSymm2At13,kmul(J32L,PDupwindNthSymm3At13)));
+
+ JacPDupwindNthSymm2At22 =
+ kmadd(J12L,PDupwindNthSymm1At22,kmadd(J22L,PDupwindNthSymm2At22,kmul(J32L,PDupwindNthSymm3At22)));
+
+ JacPDupwindNthSymm2At23 =
+ kmadd(J12L,PDupwindNthSymm1At23,kmadd(J22L,PDupwindNthSymm2At23,kmul(J32L,PDupwindNthSymm3At23)));
+
+ JacPDupwindNthSymm2At33 =
+ kmadd(J12L,PDupwindNthSymm1At33,kmadd(J22L,PDupwindNthSymm2At33,kmul(J32L,PDupwindNthSymm3At33)));
+
+ JacPDupwindNthSymm2B1 =
+ kmadd(J12L,PDupwindNthSymm1B1,kmadd(J22L,PDupwindNthSymm2B1,kmul(J32L,PDupwindNthSymm3B1)));
+
+ JacPDupwindNthSymm2B2 =
+ kmadd(J12L,PDupwindNthSymm1B2,kmadd(J22L,PDupwindNthSymm2B2,kmul(J32L,PDupwindNthSymm3B2)));
+
+ JacPDupwindNthSymm2B3 =
+ kmadd(J12L,PDupwindNthSymm1B3,kmadd(J22L,PDupwindNthSymm2B3,kmul(J32L,PDupwindNthSymm3B3)));
+
+ JacPDupwindNthSymm2beta1 =
+ kmadd(J12L,PDupwindNthSymm1beta1,kmadd(J22L,PDupwindNthSymm2beta1,kmul(J32L,PDupwindNthSymm3beta1)));
+
+ JacPDupwindNthSymm2beta2 =
+ kmadd(J12L,PDupwindNthSymm1beta2,kmadd(J22L,PDupwindNthSymm2beta2,kmul(J32L,PDupwindNthSymm3beta2)));
+
+ JacPDupwindNthSymm2beta3 =
+ kmadd(J12L,PDupwindNthSymm1beta3,kmadd(J22L,PDupwindNthSymm2beta3,kmul(J32L,PDupwindNthSymm3beta3)));
+
+ JacPDupwindNthSymm2gt11 =
+ kmadd(J12L,PDupwindNthSymm1gt11,kmadd(J22L,PDupwindNthSymm2gt11,kmul(J32L,PDupwindNthSymm3gt11)));
+
+ JacPDupwindNthSymm2gt12 =
+ kmadd(J12L,PDupwindNthSymm1gt12,kmadd(J22L,PDupwindNthSymm2gt12,kmul(J32L,PDupwindNthSymm3gt12)));
+
+ JacPDupwindNthSymm2gt13 =
+ kmadd(J12L,PDupwindNthSymm1gt13,kmadd(J22L,PDupwindNthSymm2gt13,kmul(J32L,PDupwindNthSymm3gt13)));
+
+ JacPDupwindNthSymm2gt22 =
+ kmadd(J12L,PDupwindNthSymm1gt22,kmadd(J22L,PDupwindNthSymm2gt22,kmul(J32L,PDupwindNthSymm3gt22)));
+
+ JacPDupwindNthSymm2gt23 =
+ kmadd(J12L,PDupwindNthSymm1gt23,kmadd(J22L,PDupwindNthSymm2gt23,kmul(J32L,PDupwindNthSymm3gt23)));
+
+ JacPDupwindNthSymm2gt33 =
+ kmadd(J12L,PDupwindNthSymm1gt33,kmadd(J22L,PDupwindNthSymm2gt33,kmul(J32L,PDupwindNthSymm3gt33)));
+
+ JacPDupwindNthSymm2phi =
+ kmadd(J12L,PDupwindNthSymm1phi,kmadd(J22L,PDupwindNthSymm2phi,kmul(J32L,PDupwindNthSymm3phi)));
+
+ JacPDupwindNthSymm2Theta =
+ kmadd(J12L,PDupwindNthSymm1Theta,kmadd(J22L,PDupwindNthSymm2Theta,kmul(J32L,PDupwindNthSymm3Theta)));
+
+ JacPDupwindNthSymm2trK =
+ kmadd(J12L,PDupwindNthSymm1trK,kmadd(J22L,PDupwindNthSymm2trK,kmul(J32L,PDupwindNthSymm3trK)));
+
+ JacPDupwindNthSymm2Xt1 =
+ kmadd(J12L,PDupwindNthSymm1Xt1,kmadd(J22L,PDupwindNthSymm2Xt1,kmul(J32L,PDupwindNthSymm3Xt1)));
+
+ JacPDupwindNthSymm2Xt2 =
+ kmadd(J12L,PDupwindNthSymm1Xt2,kmadd(J22L,PDupwindNthSymm2Xt2,kmul(J32L,PDupwindNthSymm3Xt2)));
+
+ JacPDupwindNthSymm2Xt3 =
+ kmadd(J12L,PDupwindNthSymm1Xt3,kmadd(J22L,PDupwindNthSymm2Xt3,kmul(J32L,PDupwindNthSymm3Xt3)));
+
+ JacPDupwindNthAnti3A =
+ kmadd(J13L,PDupwindNthAnti1A,kmadd(J23L,PDupwindNthAnti2A,kmul(J33L,PDupwindNthAnti3A)));
+
+ JacPDupwindNthAnti3alpha =
+ kmadd(J13L,PDupwindNthAnti1alpha,kmadd(J23L,PDupwindNthAnti2alpha,kmul(J33L,PDupwindNthAnti3alpha)));
+
+ JacPDupwindNthAnti3At11 =
+ kmadd(J13L,PDupwindNthAnti1At11,kmadd(J23L,PDupwindNthAnti2At11,kmul(J33L,PDupwindNthAnti3At11)));
+
+ JacPDupwindNthAnti3At12 =
+ kmadd(J13L,PDupwindNthAnti1At12,kmadd(J23L,PDupwindNthAnti2At12,kmul(J33L,PDupwindNthAnti3At12)));
+
+ JacPDupwindNthAnti3At13 =
+ kmadd(J13L,PDupwindNthAnti1At13,kmadd(J23L,PDupwindNthAnti2At13,kmul(J33L,PDupwindNthAnti3At13)));
+
+ JacPDupwindNthAnti3At22 =
+ kmadd(J13L,PDupwindNthAnti1At22,kmadd(J23L,PDupwindNthAnti2At22,kmul(J33L,PDupwindNthAnti3At22)));
+
+ JacPDupwindNthAnti3At23 =
+ kmadd(J13L,PDupwindNthAnti1At23,kmadd(J23L,PDupwindNthAnti2At23,kmul(J33L,PDupwindNthAnti3At23)));
+
+ JacPDupwindNthAnti3At33 =
+ kmadd(J13L,PDupwindNthAnti1At33,kmadd(J23L,PDupwindNthAnti2At33,kmul(J33L,PDupwindNthAnti3At33)));
+
+ JacPDupwindNthAnti3B1 =
+ kmadd(J13L,PDupwindNthAnti1B1,kmadd(J23L,PDupwindNthAnti2B1,kmul(J33L,PDupwindNthAnti3B1)));
+
+ JacPDupwindNthAnti3B2 =
+ kmadd(J13L,PDupwindNthAnti1B2,kmadd(J23L,PDupwindNthAnti2B2,kmul(J33L,PDupwindNthAnti3B2)));
+
+ JacPDupwindNthAnti3B3 =
+ kmadd(J13L,PDupwindNthAnti1B3,kmadd(J23L,PDupwindNthAnti2B3,kmul(J33L,PDupwindNthAnti3B3)));
+
+ JacPDupwindNthAnti3beta1 =
+ kmadd(J13L,PDupwindNthAnti1beta1,kmadd(J23L,PDupwindNthAnti2beta1,kmul(J33L,PDupwindNthAnti3beta1)));
+
+ JacPDupwindNthAnti3beta2 =
+ kmadd(J13L,PDupwindNthAnti1beta2,kmadd(J23L,PDupwindNthAnti2beta2,kmul(J33L,PDupwindNthAnti3beta2)));
+
+ JacPDupwindNthAnti3beta3 =
+ kmadd(J13L,PDupwindNthAnti1beta3,kmadd(J23L,PDupwindNthAnti2beta3,kmul(J33L,PDupwindNthAnti3beta3)));
+
+ JacPDupwindNthAnti3gt11 =
+ kmadd(J13L,PDupwindNthAnti1gt11,kmadd(J23L,PDupwindNthAnti2gt11,kmul(J33L,PDupwindNthAnti3gt11)));
+
+ JacPDupwindNthAnti3gt12 =
+ kmadd(J13L,PDupwindNthAnti1gt12,kmadd(J23L,PDupwindNthAnti2gt12,kmul(J33L,PDupwindNthAnti3gt12)));
+
+ JacPDupwindNthAnti3gt13 =
+ kmadd(J13L,PDupwindNthAnti1gt13,kmadd(J23L,PDupwindNthAnti2gt13,kmul(J33L,PDupwindNthAnti3gt13)));
+
+ JacPDupwindNthAnti3gt22 =
+ kmadd(J13L,PDupwindNthAnti1gt22,kmadd(J23L,PDupwindNthAnti2gt22,kmul(J33L,PDupwindNthAnti3gt22)));
+
+ JacPDupwindNthAnti3gt23 =
+ kmadd(J13L,PDupwindNthAnti1gt23,kmadd(J23L,PDupwindNthAnti2gt23,kmul(J33L,PDupwindNthAnti3gt23)));
+
+ JacPDupwindNthAnti3gt33 =
+ kmadd(J13L,PDupwindNthAnti1gt33,kmadd(J23L,PDupwindNthAnti2gt33,kmul(J33L,PDupwindNthAnti3gt33)));
+
+ JacPDupwindNthAnti3phi =
+ kmadd(J13L,PDupwindNthAnti1phi,kmadd(J23L,PDupwindNthAnti2phi,kmul(J33L,PDupwindNthAnti3phi)));
+
+ JacPDupwindNthAnti3Theta =
+ kmadd(J13L,PDupwindNthAnti1Theta,kmadd(J23L,PDupwindNthAnti2Theta,kmul(J33L,PDupwindNthAnti3Theta)));
+
+ JacPDupwindNthAnti3trK =
+ kmadd(J13L,PDupwindNthAnti1trK,kmadd(J23L,PDupwindNthAnti2trK,kmul(J33L,PDupwindNthAnti3trK)));
+
+ JacPDupwindNthAnti3Xt1 =
+ kmadd(J13L,PDupwindNthAnti1Xt1,kmadd(J23L,PDupwindNthAnti2Xt1,kmul(J33L,PDupwindNthAnti3Xt1)));
+
+ JacPDupwindNthAnti3Xt2 =
+ kmadd(J13L,PDupwindNthAnti1Xt2,kmadd(J23L,PDupwindNthAnti2Xt2,kmul(J33L,PDupwindNthAnti3Xt2)));
+
+ JacPDupwindNthAnti3Xt3 =
+ kmadd(J13L,PDupwindNthAnti1Xt3,kmadd(J23L,PDupwindNthAnti2Xt3,kmul(J33L,PDupwindNthAnti3Xt3)));
+
+ JacPDupwindNthSymm3A =
+ kmadd(J13L,PDupwindNthSymm1A,kmadd(J23L,PDupwindNthSymm2A,kmul(J33L,PDupwindNthSymm3A)));
+
+ JacPDupwindNthSymm3alpha =
+ kmadd(J13L,PDupwindNthSymm1alpha,kmadd(J23L,PDupwindNthSymm2alpha,kmul(J33L,PDupwindNthSymm3alpha)));
+
+ JacPDupwindNthSymm3At11 =
+ kmadd(J13L,PDupwindNthSymm1At11,kmadd(J23L,PDupwindNthSymm2At11,kmul(J33L,PDupwindNthSymm3At11)));
+
+ JacPDupwindNthSymm3At12 =
+ kmadd(J13L,PDupwindNthSymm1At12,kmadd(J23L,PDupwindNthSymm2At12,kmul(J33L,PDupwindNthSymm3At12)));
+
+ JacPDupwindNthSymm3At13 =
+ kmadd(J13L,PDupwindNthSymm1At13,kmadd(J23L,PDupwindNthSymm2At13,kmul(J33L,PDupwindNthSymm3At13)));
+
+ JacPDupwindNthSymm3At22 =
+ kmadd(J13L,PDupwindNthSymm1At22,kmadd(J23L,PDupwindNthSymm2At22,kmul(J33L,PDupwindNthSymm3At22)));
+
+ JacPDupwindNthSymm3At23 =
+ kmadd(J13L,PDupwindNthSymm1At23,kmadd(J23L,PDupwindNthSymm2At23,kmul(J33L,PDupwindNthSymm3At23)));
+
+ JacPDupwindNthSymm3At33 =
+ kmadd(J13L,PDupwindNthSymm1At33,kmadd(J23L,PDupwindNthSymm2At33,kmul(J33L,PDupwindNthSymm3At33)));
+
+ JacPDupwindNthSymm3B1 =
+ kmadd(J13L,PDupwindNthSymm1B1,kmadd(J23L,PDupwindNthSymm2B1,kmul(J33L,PDupwindNthSymm3B1)));
+
+ JacPDupwindNthSymm3B2 =
+ kmadd(J13L,PDupwindNthSymm1B2,kmadd(J23L,PDupwindNthSymm2B2,kmul(J33L,PDupwindNthSymm3B2)));
+
+ JacPDupwindNthSymm3B3 =
+ kmadd(J13L,PDupwindNthSymm1B3,kmadd(J23L,PDupwindNthSymm2B3,kmul(J33L,PDupwindNthSymm3B3)));
+
+ JacPDupwindNthSymm3beta1 =
+ kmadd(J13L,PDupwindNthSymm1beta1,kmadd(J23L,PDupwindNthSymm2beta1,kmul(J33L,PDupwindNthSymm3beta1)));
+
+ JacPDupwindNthSymm3beta2 =
+ kmadd(J13L,PDupwindNthSymm1beta2,kmadd(J23L,PDupwindNthSymm2beta2,kmul(J33L,PDupwindNthSymm3beta2)));
+
+ JacPDupwindNthSymm3beta3 =
+ kmadd(J13L,PDupwindNthSymm1beta3,kmadd(J23L,PDupwindNthSymm2beta3,kmul(J33L,PDupwindNthSymm3beta3)));
+
+ JacPDupwindNthSymm3gt11 =
+ kmadd(J13L,PDupwindNthSymm1gt11,kmadd(J23L,PDupwindNthSymm2gt11,kmul(J33L,PDupwindNthSymm3gt11)));
+
+ JacPDupwindNthSymm3gt12 =
+ kmadd(J13L,PDupwindNthSymm1gt12,kmadd(J23L,PDupwindNthSymm2gt12,kmul(J33L,PDupwindNthSymm3gt12)));
+
+ JacPDupwindNthSymm3gt13 =
+ kmadd(J13L,PDupwindNthSymm1gt13,kmadd(J23L,PDupwindNthSymm2gt13,kmul(J33L,PDupwindNthSymm3gt13)));
+
+ JacPDupwindNthSymm3gt22 =
+ kmadd(J13L,PDupwindNthSymm1gt22,kmadd(J23L,PDupwindNthSymm2gt22,kmul(J33L,PDupwindNthSymm3gt22)));
+
+ JacPDupwindNthSymm3gt23 =
+ kmadd(J13L,PDupwindNthSymm1gt23,kmadd(J23L,PDupwindNthSymm2gt23,kmul(J33L,PDupwindNthSymm3gt23)));
+
+ JacPDupwindNthSymm3gt33 =
+ kmadd(J13L,PDupwindNthSymm1gt33,kmadd(J23L,PDupwindNthSymm2gt33,kmul(J33L,PDupwindNthSymm3gt33)));
+
+ JacPDupwindNthSymm3phi =
+ kmadd(J13L,PDupwindNthSymm1phi,kmadd(J23L,PDupwindNthSymm2phi,kmul(J33L,PDupwindNthSymm3phi)));
+
+ JacPDupwindNthSymm3Theta =
+ kmadd(J13L,PDupwindNthSymm1Theta,kmadd(J23L,PDupwindNthSymm2Theta,kmul(J33L,PDupwindNthSymm3Theta)));
+
+ JacPDupwindNthSymm3trK =
+ kmadd(J13L,PDupwindNthSymm1trK,kmadd(J23L,PDupwindNthSymm2trK,kmul(J33L,PDupwindNthSymm3trK)));
+
+ JacPDupwindNthSymm3Xt1 =
+ kmadd(J13L,PDupwindNthSymm1Xt1,kmadd(J23L,PDupwindNthSymm2Xt1,kmul(J33L,PDupwindNthSymm3Xt1)));
+
+ JacPDupwindNthSymm3Xt2 =
+ kmadd(J13L,PDupwindNthSymm1Xt2,kmadd(J23L,PDupwindNthSymm2Xt2,kmul(J33L,PDupwindNthSymm3Xt2)));
+
+ JacPDupwindNthSymm3Xt3 =
+ kmadd(J13L,PDupwindNthSymm1Xt3,kmadd(J23L,PDupwindNthSymm2Xt3,kmul(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;
+
+ JacPDupwindNthAnti1Theta = PDupwindNthAnti1Theta;
+
+ 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;
+
+ JacPDupwindNthSymm1Theta = PDupwindNthSymm1Theta;
+
+ 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;
+
+ JacPDupwindNthAnti2Theta = PDupwindNthAnti2Theta;
+
+ 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;
+
+ JacPDupwindNthSymm2Theta = PDupwindNthSymm2Theta;
+
+ 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;
+
+ JacPDupwindNthAnti3Theta = PDupwindNthAnti3Theta;
+
+ 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;
+
+ JacPDupwindNthSymm3Theta = PDupwindNthSymm3Theta;
+
+ JacPDupwindNthSymm3trK = PDupwindNthSymm3trK;
+
+ JacPDupwindNthSymm3Xt1 = PDupwindNthSymm3Xt1;
+
+ JacPDupwindNthSymm3Xt2 = PDupwindNthSymm3Xt2;
+
+ JacPDupwindNthSymm3Xt3 = PDupwindNthSymm3Xt3;
+ }
+
+ phirhsL =
+ kadd(phirhsL,kmadd(beta1L,JacPDupwindNthAnti1phi,kmadd(beta2L,JacPDupwindNthAnti2phi,kmadd(beta3L,JacPDupwindNthAnti3phi,kmadd(JacPDupwindNthSymm1phi,kfabs(beta1L),kmadd(JacPDupwindNthSymm2phi,kfabs(beta2L),kmul(JacPDupwindNthSymm3phi,kfabs(beta3L))))))));
+
+ gt11rhsL =
+ kadd(gt11rhsL,kmadd(beta1L,JacPDupwindNthAnti1gt11,kmadd(beta2L,JacPDupwindNthAnti2gt11,kmadd(beta3L,JacPDupwindNthAnti3gt11,kmadd(JacPDupwindNthSymm1gt11,kfabs(beta1L),kmadd(JacPDupwindNthSymm2gt11,kfabs(beta2L),kmul(JacPDupwindNthSymm3gt11,kfabs(beta3L))))))));
+
+ gt12rhsL =
+ kadd(gt12rhsL,kmadd(beta1L,JacPDupwindNthAnti1gt12,kmadd(beta2L,JacPDupwindNthAnti2gt12,kmadd(beta3L,JacPDupwindNthAnti3gt12,kmadd(JacPDupwindNthSymm1gt12,kfabs(beta1L),kmadd(JacPDupwindNthSymm2gt12,kfabs(beta2L),kmul(JacPDupwindNthSymm3gt12,kfabs(beta3L))))))));
+
+ gt13rhsL =
+ kadd(gt13rhsL,kmadd(beta1L,JacPDupwindNthAnti1gt13,kmadd(beta2L,JacPDupwindNthAnti2gt13,kmadd(beta3L,JacPDupwindNthAnti3gt13,kmadd(JacPDupwindNthSymm1gt13,kfabs(beta1L),kmadd(JacPDupwindNthSymm2gt13,kfabs(beta2L),kmul(JacPDupwindNthSymm3gt13,kfabs(beta3L))))))));
+
+ gt22rhsL =
+ kadd(gt22rhsL,kmadd(beta1L,JacPDupwindNthAnti1gt22,kmadd(beta2L,JacPDupwindNthAnti2gt22,kmadd(beta3L,JacPDupwindNthAnti3gt22,kmadd(JacPDupwindNthSymm1gt22,kfabs(beta1L),kmadd(JacPDupwindNthSymm2gt22,kfabs(beta2L),kmul(JacPDupwindNthSymm3gt22,kfabs(beta3L))))))));
+
+ gt23rhsL =
+ kadd(gt23rhsL,kmadd(beta1L,JacPDupwindNthAnti1gt23,kmadd(beta2L,JacPDupwindNthAnti2gt23,kmadd(beta3L,JacPDupwindNthAnti3gt23,kmadd(JacPDupwindNthSymm1gt23,kfabs(beta1L),kmadd(JacPDupwindNthSymm2gt23,kfabs(beta2L),kmul(JacPDupwindNthSymm3gt23,kfabs(beta3L))))))));
+
+ gt33rhsL =
+ kadd(gt33rhsL,kmadd(beta1L,JacPDupwindNthAnti1gt33,kmadd(beta2L,JacPDupwindNthAnti2gt33,kmadd(beta3L,JacPDupwindNthAnti3gt33,kmadd(JacPDupwindNthSymm1gt33,kfabs(beta1L),kmadd(JacPDupwindNthSymm2gt33,kfabs(beta2L),kmul(JacPDupwindNthSymm3gt33,kfabs(beta3L))))))));
+
+ Xt1rhsL =
+ kadd(Xt1rhsL,kmadd(beta1L,JacPDupwindNthAnti1Xt1,kmadd(beta2L,JacPDupwindNthAnti2Xt1,kmadd(beta3L,JacPDupwindNthAnti3Xt1,kmadd(JacPDupwindNthSymm1Xt1,kfabs(beta1L),kmadd(JacPDupwindNthSymm2Xt1,kfabs(beta2L),kmul(JacPDupwindNthSymm3Xt1,kfabs(beta3L))))))));
+
+ Xt2rhsL =
+ kadd(Xt2rhsL,kmadd(beta1L,JacPDupwindNthAnti1Xt2,kmadd(beta2L,JacPDupwindNthAnti2Xt2,kmadd(beta3L,JacPDupwindNthAnti3Xt2,kmadd(JacPDupwindNthSymm1Xt2,kfabs(beta1L),kmadd(JacPDupwindNthSymm2Xt2,kfabs(beta2L),kmul(JacPDupwindNthSymm3Xt2,kfabs(beta3L))))))));
+
+ Xt3rhsL =
+ kadd(Xt3rhsL,kmadd(beta1L,JacPDupwindNthAnti1Xt3,kmadd(beta2L,JacPDupwindNthAnti2Xt3,kmadd(beta3L,JacPDupwindNthAnti3Xt3,kmadd(JacPDupwindNthSymm1Xt3,kfabs(beta1L),kmadd(JacPDupwindNthSymm2Xt3,kfabs(beta2L),kmul(JacPDupwindNthSymm3Xt3,kfabs(beta3L))))))));
+
+ ThetarhsL =
+ kadd(ThetarhsL,kmadd(beta1L,JacPDupwindNthAnti1Theta,kmadd(beta2L,JacPDupwindNthAnti2Theta,kmadd(beta3L,JacPDupwindNthAnti3Theta,kmadd(JacPDupwindNthSymm1Theta,kfabs(beta1L),kmadd(JacPDupwindNthSymm2Theta,kfabs(beta2L),kmul(JacPDupwindNthSymm3Theta,kfabs(beta3L))))))));
+
+ trKrhsL =
+ kadd(trKrhsL,kmadd(beta1L,JacPDupwindNthAnti1trK,kmadd(beta2L,JacPDupwindNthAnti2trK,kmadd(beta3L,JacPDupwindNthAnti3trK,kmadd(JacPDupwindNthSymm1trK,kfabs(beta1L),kmadd(JacPDupwindNthSymm2trK,kfabs(beta2L),kmul(JacPDupwindNthSymm3trK,kfabs(beta3L))))))));
+
+ At11rhsL =
+ kadd(At11rhsL,kmadd(beta1L,JacPDupwindNthAnti1At11,kmadd(beta2L,JacPDupwindNthAnti2At11,kmadd(beta3L,JacPDupwindNthAnti3At11,kmadd(JacPDupwindNthSymm1At11,kfabs(beta1L),kmadd(JacPDupwindNthSymm2At11,kfabs(beta2L),kmul(JacPDupwindNthSymm3At11,kfabs(beta3L))))))));
+
+ At12rhsL =
+ kadd(At12rhsL,kmadd(beta1L,JacPDupwindNthAnti1At12,kmadd(beta2L,JacPDupwindNthAnti2At12,kmadd(beta3L,JacPDupwindNthAnti3At12,kmadd(JacPDupwindNthSymm1At12,kfabs(beta1L),kmadd(JacPDupwindNthSymm2At12,kfabs(beta2L),kmul(JacPDupwindNthSymm3At12,kfabs(beta3L))))))));
+
+ At13rhsL =
+ kadd(At13rhsL,kmadd(beta1L,JacPDupwindNthAnti1At13,kmadd(beta2L,JacPDupwindNthAnti2At13,kmadd(beta3L,JacPDupwindNthAnti3At13,kmadd(JacPDupwindNthSymm1At13,kfabs(beta1L),kmadd(JacPDupwindNthSymm2At13,kfabs(beta2L),kmul(JacPDupwindNthSymm3At13,kfabs(beta3L))))))));
+
+ At22rhsL =
+ kadd(At22rhsL,kmadd(beta1L,JacPDupwindNthAnti1At22,kmadd(beta2L,JacPDupwindNthAnti2At22,kmadd(beta3L,JacPDupwindNthAnti3At22,kmadd(JacPDupwindNthSymm1At22,kfabs(beta1L),kmadd(JacPDupwindNthSymm2At22,kfabs(beta2L),kmul(JacPDupwindNthSymm3At22,kfabs(beta3L))))))));
+
+ At23rhsL =
+ kadd(At23rhsL,kmadd(beta1L,JacPDupwindNthAnti1At23,kmadd(beta2L,JacPDupwindNthAnti2At23,kmadd(beta3L,JacPDupwindNthAnti3At23,kmadd(JacPDupwindNthSymm1At23,kfabs(beta1L),kmadd(JacPDupwindNthSymm2At23,kfabs(beta2L),kmul(JacPDupwindNthSymm3At23,kfabs(beta3L))))))));
+
+ At33rhsL =
+ kadd(At33rhsL,kmadd(beta1L,JacPDupwindNthAnti1At33,kmadd(beta2L,JacPDupwindNthAnti2At33,kmadd(beta3L,JacPDupwindNthAnti3At33,kmadd(JacPDupwindNthSymm1At33,kfabs(beta1L),kmadd(JacPDupwindNthSymm2At33,kfabs(beta2L),kmul(JacPDupwindNthSymm3At33,kfabs(beta3L))))))));
+
+ alpharhsL =
+ kmadd(kmadd(beta1L,JacPDupwindNthAnti1alpha,kmadd(beta2L,JacPDupwindNthAnti2alpha,kmadd(beta3L,JacPDupwindNthAnti3alpha,kmadd(JacPDupwindNthSymm1alpha,kfabs(beta1L),kmadd(JacPDupwindNthSymm2alpha,kfabs(beta2L),kmul(JacPDupwindNthSymm3alpha,kfabs(beta3L))))))),ToReal(LapseAdvectionCoeff),alpharhsL);
+
+ ArhsL =
+ kmadd(ToReal(LapseACoeff),kmsub(kmadd(beta1L,JacPDupwindNthAnti1A,kmadd(beta2L,JacPDupwindNthAnti2A,kmadd(beta3L,JacPDupwindNthAnti3A,kmadd(JacPDupwindNthSymm1A,kfabs(beta1L),kmadd(JacPDupwindNthSymm2A,kfabs(beta2L),kmul(JacPDupwindNthSymm3A,kfabs(beta3L))))))),ToReal(LapseAdvectionCoeff),kmul(kmadd(beta1L,JacPDupwindNthAnti1trK,kmadd(beta2L,JacPDupwindNthAnti2trK,kmadd(beta3L,JacPDupwindNthAnti3trK,kmadd(JacPDupwindNthSymm1trK,kfabs(beta1L),kmadd(JacPDupwindNthSymm2trK,kfabs(beta2L),kmul(JacPDupwindNthSymm3trK,kfabs(beta3L))))))),kadd(ToReal(-1),ToReal(LapseAdvectionCoeff)))),ArhsL);
+
+ beta1rhsL =
+ kmadd(kmadd(beta1L,JacPDupwindNthAnti1beta1,kmadd(beta2L,JacPDupwindNthAnti2beta1,kmadd(beta3L,JacPDupwindNthAnti3beta1,kmadd(JacPDupwindNthSymm1beta1,kfabs(beta1L),kmadd(JacPDupwindNthSymm2beta1,kfabs(beta2L),kmul(JacPDupwindNthSymm3beta1,kfabs(beta3L))))))),ToReal(ShiftAdvectionCoeff),beta1rhsL);
+
+ beta2rhsL =
+ kmadd(kmadd(beta1L,JacPDupwindNthAnti1beta2,kmadd(beta2L,JacPDupwindNthAnti2beta2,kmadd(beta3L,JacPDupwindNthAnti3beta2,kmadd(JacPDupwindNthSymm1beta2,kfabs(beta1L),kmadd(JacPDupwindNthSymm2beta2,kfabs(beta2L),kmul(JacPDupwindNthSymm3beta2,kfabs(beta3L))))))),ToReal(ShiftAdvectionCoeff),beta2rhsL);
+
+ beta3rhsL =
+ kmadd(kmadd(beta1L,JacPDupwindNthAnti1beta3,kmadd(beta2L,JacPDupwindNthAnti2beta3,kmadd(beta3L,JacPDupwindNthAnti3beta3,kmadd(JacPDupwindNthSymm1beta3,kfabs(beta1L),kmadd(JacPDupwindNthSymm2beta3,kfabs(beta2L),kmul(JacPDupwindNthSymm3beta3,kfabs(beta3L))))))),ToReal(ShiftAdvectionCoeff),beta3rhsL);
+
+ B1rhsL =
+ kmadd(kmsub(kmadd(beta1L,JacPDupwindNthAnti1B1,kmadd(beta2L,JacPDupwindNthAnti2B1,kmadd(beta3L,JacPDupwindNthAnti3B1,kmadd(JacPDupwindNthSymm1B1,kfabs(beta1L),kmadd(JacPDupwindNthSymm2B1,kfabs(beta2L),kmul(JacPDupwindNthSymm3B1,kfabs(beta3L))))))),ToReal(ShiftAdvectionCoeff),kmul(kmadd(beta1L,JacPDupwindNthAnti1Xt1,kmadd(beta2L,JacPDupwindNthAnti2Xt1,kmadd(beta3L,JacPDupwindNthAnti3Xt1,kmadd(JacPDupwindNthSymm1Xt1,kfabs(beta1L),kmadd(JacPDupwindNthSymm2Xt1,kfabs(beta2L),kmul(JacPDupwindNthSymm3Xt1,kfabs(beta3L))))))),kadd(ToReal(-1),ToReal(ShiftAdvectionCoeff)))),ToReal(ShiftBCoeff),B1rhsL);
+
+ B2rhsL =
+ kmadd(kmsub(kmadd(beta1L,JacPDupwindNthAnti1B2,kmadd(beta2L,JacPDupwindNthAnti2B2,kmadd(beta3L,JacPDupwindNthAnti3B2,kmadd(JacPDupwindNthSymm1B2,kfabs(beta1L),kmadd(JacPDupwindNthSymm2B2,kfabs(beta2L),kmul(JacPDupwindNthSymm3B2,kfabs(beta3L))))))),ToReal(ShiftAdvectionCoeff),kmul(kmadd(beta1L,JacPDupwindNthAnti1Xt2,kmadd(beta2L,JacPDupwindNthAnti2Xt2,kmadd(beta3L,JacPDupwindNthAnti3Xt2,kmadd(JacPDupwindNthSymm1Xt2,kfabs(beta1L),kmadd(JacPDupwindNthSymm2Xt2,kfabs(beta2L),kmul(JacPDupwindNthSymm3Xt2,kfabs(beta3L))))))),kadd(ToReal(-1),ToReal(ShiftAdvectionCoeff)))),ToReal(ShiftBCoeff),B2rhsL);
+
+ B3rhsL =
+ kmadd(kmsub(kmadd(beta1L,JacPDupwindNthAnti1B3,kmadd(beta2L,JacPDupwindNthAnti2B3,kmadd(beta3L,JacPDupwindNthAnti3B3,kmadd(JacPDupwindNthSymm1B3,kfabs(beta1L),kmadd(JacPDupwindNthSymm2B3,kfabs(beta2L),kmul(JacPDupwindNthSymm3B3,kfabs(beta3L))))))),ToReal(ShiftAdvectionCoeff),kmul(kmadd(beta1L,JacPDupwindNthAnti1Xt3,kmadd(beta2L,JacPDupwindNthAnti2Xt3,kmadd(beta3L,JacPDupwindNthAnti3Xt3,kmadd(JacPDupwindNthSymm1Xt3,kfabs(beta1L),kmadd(JacPDupwindNthSymm2Xt3,kfabs(beta2L),kmul(JacPDupwindNthSymm3Xt3,kfabs(beta3L))))))),kadd(ToReal(-1),ToReal(ShiftAdvectionCoeff)))),ToReal(ShiftBCoeff),B3rhsL);
+
+ /* Copy local copies back to grid functions */
+ vec_store_partial_prepare(i,lc_imin,lc_imax);
+ vec_store_nta_partial(alpharhs[index],alpharhsL);
+ vec_store_nta_partial(Arhs[index],ArhsL);
+ vec_store_nta_partial(At11rhs[index],At11rhsL);
+ vec_store_nta_partial(At12rhs[index],At12rhsL);
+ vec_store_nta_partial(At13rhs[index],At13rhsL);
+ vec_store_nta_partial(At22rhs[index],At22rhsL);
+ vec_store_nta_partial(At23rhs[index],At23rhsL);
+ vec_store_nta_partial(At33rhs[index],At33rhsL);
+ vec_store_nta_partial(B1rhs[index],B1rhsL);
+ vec_store_nta_partial(B2rhs[index],B2rhsL);
+ vec_store_nta_partial(B3rhs[index],B3rhsL);
+ vec_store_nta_partial(beta1rhs[index],beta1rhsL);
+ vec_store_nta_partial(beta2rhs[index],beta2rhsL);
+ vec_store_nta_partial(beta3rhs[index],beta3rhsL);
+ vec_store_nta_partial(gt11rhs[index],gt11rhsL);
+ vec_store_nta_partial(gt12rhs[index],gt12rhsL);
+ vec_store_nta_partial(gt13rhs[index],gt13rhsL);
+ vec_store_nta_partial(gt22rhs[index],gt22rhsL);
+ vec_store_nta_partial(gt23rhs[index],gt23rhsL);
+ vec_store_nta_partial(gt33rhs[index],gt33rhsL);
+ vec_store_nta_partial(phirhs[index],phirhsL);
+ vec_store_nta_partial(Thetarhs[index],ThetarhsL);
+ vec_store_nta_partial(trKrhs[index],trKrhsL);
+ vec_store_nta_partial(Xt1rhs[index],Xt1rhsL);
+ vec_store_nta_partial(Xt2rhs[index],Xt2rhsL);
+ vec_store_nta_partial(Xt3rhs[index],Xt3rhsL);
+ }
+ LC_ENDLOOP3VEC(ML_CCZ4_Advect);
+}
+
+extern "C" void ML_CCZ4_Advect(CCTK_ARGUMENTS)
+{
+ DECLARE_CCTK_ARGUMENTS;
+ DECLARE_CCTK_PARAMETERS;
+
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_CCZ4_Advect_Body");
+ }
+
+ if (cctk_iteration % ML_CCZ4_Advect_calc_every != ML_CCZ4_Advect_calc_offset)
+ {
+ return;
+ }
+
+ const char *const groups[] = {
+ "ML_CCZ4::ML_curv",
+ "ML_CCZ4::ML_curvrhs",
+ "ML_CCZ4::ML_dtlapse",
+ "ML_CCZ4::ML_dtlapserhs",
+ "ML_CCZ4::ML_dtshift",
+ "ML_CCZ4::ML_dtshiftrhs",
+ "ML_CCZ4::ML_Gamma",
+ "ML_CCZ4::ML_Gammarhs",
+ "ML_CCZ4::ML_lapse",
+ "ML_CCZ4::ML_lapserhs",
+ "ML_CCZ4::ML_log_confac",
+ "ML_CCZ4::ML_log_confacrhs",
+ "ML_CCZ4::ML_metric",
+ "ML_CCZ4::ML_metricrhs",
+ "ML_CCZ4::ML_shift",
+ "ML_CCZ4::ML_shiftrhs",
+ "ML_CCZ4::ML_Theta",
+ "ML_CCZ4::ML_Thetarhs",
+ "ML_CCZ4::ML_trace_curv",
+ "ML_CCZ4::ML_trace_curvrhs"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_CCZ4_Advect", 20, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_CCZ4_Advect", 2, 2, 2);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_CCZ4_Advect", 3, 3, 3);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_CCZ4_Advect", 4, 4, 4);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_CCZ4_Advect", 5, 5, 5);
+ break;
+ }
+
+ GenericFD_LoopOverInterior(cctkGH, ML_CCZ4_Advect_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_CCZ4_Advect_Body");
+ }
+}
diff --git a/ML_CCZ4/src/ML_CCZ4_Dissipation.cc b/ML_CCZ4/src/ML_CCZ4_Dissipation.cc
new file mode 100644
index 0000000..4e8770d
--- /dev/null
+++ b/ML_CCZ4/src/ML_CCZ4_Dissipation.cc
@@ -0,0 +1,1374 @@
+/* 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 "cctk_Loop.h"
+#include "loopcontrol.h"
+#include "vectors.h"
+
+/* Define macros used in calculations */
+#define INITVALUE (42)
+#define QAD(x) (SQR(SQR(x)))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
+
+extern "C" void ML_CCZ4_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_CCZ4::ML_curvrhs","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_curvrhs.");
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_CCZ4::ML_dtlapserhs","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_dtlapserhs.");
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_CCZ4::ML_dtshiftrhs","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_dtshiftrhs.");
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_CCZ4::ML_Gammarhs","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_Gammarhs.");
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_CCZ4::ML_lapserhs","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_lapserhs.");
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_CCZ4::ML_log_confacrhs","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_log_confacrhs.");
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_CCZ4::ML_metricrhs","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_metricrhs.");
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_CCZ4::ML_shiftrhs","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_shiftrhs.");
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_CCZ4::ML_Thetarhs","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_Thetarhs.");
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_CCZ4::ML_trace_curvrhs","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_trace_curvrhs.");
+ return;
+}
+
+static void ML_CCZ4_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 imin[3], int const imax[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+{
+ DECLARE_CCTK_ARGUMENTS;
+ DECLARE_CCTK_PARAMETERS;
+
+
+ /* 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_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const t = ToReal(cctk_time);
+ CCTK_REAL_VEC const dxi = INV(dx);
+ CCTK_REAL_VEC const dyi = INV(dy);
+ CCTK_REAL_VEC const dzi = INV(dz);
+ CCTK_REAL_VEC const khalf = ToReal(0.5);
+ CCTK_REAL_VEC const kthird = ToReal(1.0/3.0);
+ CCTK_REAL_VEC const ktwothird = ToReal(2.0/3.0);
+ CCTK_REAL_VEC const kfourthird = ToReal(4.0/3.0);
+ CCTK_REAL_VEC const keightthird = ToReal(8.0/3.0);
+ CCTK_REAL_VEC const hdxi = kmul(ToReal(0.5), dxi);
+ CCTK_REAL_VEC const hdyi = kmul(ToReal(0.5), dyi);
+ CCTK_REAL_VEC const hdzi = kmul(ToReal(0.5), dzi);
+
+ /* Initialize predefined quantities */
+ CCTK_REAL_VEC const p1o1024dx = kmul(INV(dx),ToReal(0.0009765625));
+ CCTK_REAL_VEC const p1o1024dy = kmul(INV(dy),ToReal(0.0009765625));
+ CCTK_REAL_VEC const p1o1024dz = kmul(INV(dz),ToReal(0.0009765625));
+ CCTK_REAL_VEC const p1o120dx = kmul(INV(dx),ToReal(0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o120dy = kmul(INV(dy),ToReal(0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o120dz = kmul(INV(dz),ToReal(0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dx = kmul(INV(dx),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dy = kmul(INV(dy),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dz = kmul(INV(dz),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o144dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o144dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o144dydz = kmul(INV(kmul(dy,dz)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o1680dx = kmul(INV(dx),ToReal(0.000595238095238095238095238095238));
+ CCTK_REAL_VEC const p1o1680dy = kmul(INV(dy),ToReal(0.000595238095238095238095238095238));
+ CCTK_REAL_VEC const p1o1680dz = kmul(INV(dz),ToReal(0.000595238095238095238095238095238));
+ CCTK_REAL_VEC const p1o16dx = kmul(INV(dx),ToReal(0.0625));
+ CCTK_REAL_VEC const p1o16dy = kmul(INV(dy),ToReal(0.0625));
+ CCTK_REAL_VEC const p1o16dz = kmul(INV(dz),ToReal(0.0625));
+ CCTK_REAL_VEC const p1o180dx2 = kmul(INV(SQR(dx)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o180dy2 = kmul(INV(SQR(dy)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o180dz2 = kmul(INV(SQR(dz)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o24dx = kmul(INV(dx),ToReal(0.0416666666666666666666666666667));
+ CCTK_REAL_VEC const p1o24dy = kmul(INV(dy),ToReal(0.0416666666666666666666666666667));
+ CCTK_REAL_VEC const p1o24dz = kmul(INV(dz),ToReal(0.0416666666666666666666666666667));
+ CCTK_REAL_VEC const p1o256dx = kmul(INV(dx),ToReal(0.00390625));
+ CCTK_REAL_VEC const p1o256dy = kmul(INV(dy),ToReal(0.00390625));
+ CCTK_REAL_VEC const p1o256dz = kmul(INV(dz),ToReal(0.00390625));
+ CCTK_REAL_VEC const p1o2dx = kmul(INV(dx),ToReal(0.5));
+ CCTK_REAL_VEC const p1o2dy = kmul(INV(dy),ToReal(0.5));
+ CCTK_REAL_VEC const p1o2dz = kmul(INV(dz),ToReal(0.5));
+ CCTK_REAL_VEC const p1o3600dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o3600dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o3600dydz = kmul(INV(kmul(dy,dz)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o4dx = kmul(INV(dx),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(kmul(dy,dz)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dz = kmul(INV(dz),ToReal(0.25));
+ CCTK_REAL_VEC const p1o5040dx2 = kmul(INV(SQR(dx)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o5040dy2 = kmul(INV(SQR(dy)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o5040dz2 = kmul(INV(SQR(dz)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o560dx = kmul(INV(dx),ToReal(0.00178571428571428571428571428571));
+ CCTK_REAL_VEC const p1o560dy = kmul(INV(dy),ToReal(0.00178571428571428571428571428571));
+ CCTK_REAL_VEC const p1o560dz = kmul(INV(dz),ToReal(0.00178571428571428571428571428571));
+ CCTK_REAL_VEC const p1o60dx = kmul(INV(dx),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o60dy = kmul(INV(dy),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o60dz = kmul(INV(dz),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o64dx = kmul(INV(dx),ToReal(0.015625));
+ CCTK_REAL_VEC const p1o64dy = kmul(INV(dy),ToReal(0.015625));
+ CCTK_REAL_VEC const p1o64dz = kmul(INV(dz),ToReal(0.015625));
+ CCTK_REAL_VEC const p1o705600dxdy = kmul(INV(kmul(dx,dy)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(kmul(dx,dz)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(kmul(dy,dz)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1odx = INV(dx);
+ CCTK_REAL_VEC const p1odx2 = INV(SQR(dx));
+ CCTK_REAL_VEC const p1ody = INV(dy);
+ CCTK_REAL_VEC const p1ody2 = INV(SQR(dy));
+ CCTK_REAL_VEC const p1odz = INV(dz);
+ CCTK_REAL_VEC const p1odz2 = INV(SQR(dz));
+ CCTK_REAL_VEC const pm1o120dx = kmul(INV(dx),ToReal(-0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o120dy = kmul(INV(dy),ToReal(-0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o120dz = kmul(INV(dz),ToReal(-0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dx2 = kmul(INV(SQR(dx)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dy2 = kmul(INV(SQR(dy)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dz2 = kmul(INV(SQR(dz)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o2dx = kmul(INV(dx),ToReal(-0.5));
+ CCTK_REAL_VEC const pm1o2dy = kmul(INV(dy),ToReal(-0.5));
+ CCTK_REAL_VEC const pm1o2dz = kmul(INV(dz),ToReal(-0.5));
+ CCTK_REAL_VEC const pm1o4dx = kmul(INV(dx),ToReal(-0.25));
+ CCTK_REAL_VEC const pm1o4dy = kmul(INV(dy),ToReal(-0.25));
+ CCTK_REAL_VEC const pm1o4dz = kmul(INV(dz),ToReal(-0.25));
+ CCTK_REAL_VEC const pm1o60dx = kmul(INV(dx),ToReal(-0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const pm1o60dy = kmul(INV(dy),ToReal(-0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const pm1o60dz = kmul(INV(dz),ToReal(-0.0166666666666666666666666666667));
+
+ /* 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;
+
+ /* Assign local copies of arrays functions */
+
+
+
+ /* Calculate temporaries and arrays functions */
+
+ /* Copy local copies back to grid functions */
+
+ /* Loop over the grid points */
+ #pragma omp parallel
+ LC_LOOP3VEC(ML_CCZ4_Dissipation,
+ i,j,k, imin[0],imin[1],imin[2], imax[0],imax[1],imax[2],
+ cctk_lsh[0],cctk_lsh[1],cctk_lsh[2],
+ CCTK_REAL_VEC_SIZE)
+ {
+ ptrdiff_t const index = di*i + dj*j + dk*k;
+
+ /* Assign local copies of grid functions */
+
+ CCTK_REAL_VEC AL = vec_load(A[index]);
+ CCTK_REAL_VEC alphaL = vec_load(alpha[index]);
+ CCTK_REAL_VEC alpharhsL = vec_load(alpharhs[index]);
+ CCTK_REAL_VEC ArhsL = vec_load(Arhs[index]);
+ CCTK_REAL_VEC At11L = vec_load(At11[index]);
+ CCTK_REAL_VEC At11rhsL = vec_load(At11rhs[index]);
+ CCTK_REAL_VEC At12L = vec_load(At12[index]);
+ CCTK_REAL_VEC At12rhsL = vec_load(At12rhs[index]);
+ CCTK_REAL_VEC At13L = vec_load(At13[index]);
+ CCTK_REAL_VEC At13rhsL = vec_load(At13rhs[index]);
+ CCTK_REAL_VEC At22L = vec_load(At22[index]);
+ CCTK_REAL_VEC At22rhsL = vec_load(At22rhs[index]);
+ CCTK_REAL_VEC At23L = vec_load(At23[index]);
+ CCTK_REAL_VEC At23rhsL = vec_load(At23rhs[index]);
+ CCTK_REAL_VEC At33L = vec_load(At33[index]);
+ CCTK_REAL_VEC At33rhsL = vec_load(At33rhs[index]);
+ CCTK_REAL_VEC B1L = vec_load(B1[index]);
+ CCTK_REAL_VEC B1rhsL = vec_load(B1rhs[index]);
+ CCTK_REAL_VEC B2L = vec_load(B2[index]);
+ CCTK_REAL_VEC B2rhsL = vec_load(B2rhs[index]);
+ CCTK_REAL_VEC B3L = vec_load(B3[index]);
+ CCTK_REAL_VEC B3rhsL = vec_load(B3rhs[index]);
+ CCTK_REAL_VEC beta1L = vec_load(beta1[index]);
+ CCTK_REAL_VEC beta1rhsL = vec_load(beta1rhs[index]);
+ CCTK_REAL_VEC beta2L = vec_load(beta2[index]);
+ CCTK_REAL_VEC beta2rhsL = vec_load(beta2rhs[index]);
+ CCTK_REAL_VEC beta3L = vec_load(beta3[index]);
+ CCTK_REAL_VEC beta3rhsL = vec_load(beta3rhs[index]);
+ CCTK_REAL_VEC gt11L = vec_load(gt11[index]);
+ CCTK_REAL_VEC gt11rhsL = vec_load(gt11rhs[index]);
+ CCTK_REAL_VEC gt12L = vec_load(gt12[index]);
+ CCTK_REAL_VEC gt12rhsL = vec_load(gt12rhs[index]);
+ CCTK_REAL_VEC gt13L = vec_load(gt13[index]);
+ CCTK_REAL_VEC gt13rhsL = vec_load(gt13rhs[index]);
+ CCTK_REAL_VEC gt22L = vec_load(gt22[index]);
+ CCTK_REAL_VEC gt22rhsL = vec_load(gt22rhs[index]);
+ CCTK_REAL_VEC gt23L = vec_load(gt23[index]);
+ CCTK_REAL_VEC gt23rhsL = vec_load(gt23rhs[index]);
+ CCTK_REAL_VEC gt33L = vec_load(gt33[index]);
+ CCTK_REAL_VEC gt33rhsL = vec_load(gt33rhs[index]);
+ CCTK_REAL_VEC phiL = vec_load(phi[index]);
+ CCTK_REAL_VEC phirhsL = vec_load(phirhs[index]);
+ CCTK_REAL_VEC ThetaL = vec_load(Theta[index]);
+ CCTK_REAL_VEC ThetarhsL = vec_load(Thetarhs[index]);
+ CCTK_REAL_VEC trKL = vec_load(trK[index]);
+ CCTK_REAL_VEC trKrhsL = vec_load(trKrhs[index]);
+ CCTK_REAL_VEC Xt1L = vec_load(Xt1[index]);
+ CCTK_REAL_VEC Xt1rhsL = vec_load(Xt1rhs[index]);
+ CCTK_REAL_VEC Xt2L = vec_load(Xt2[index]);
+ CCTK_REAL_VEC Xt2rhsL = vec_load(Xt2rhs[index]);
+ CCTK_REAL_VEC Xt3L = vec_load(Xt3[index]);
+ CCTK_REAL_VEC Xt3rhsL = vec_load(Xt3rhs[index]);
+
+
+ CCTK_REAL_VEC J11L, J12L, J13L, J21L, J22L, J23L, J31L, J32L, J33L;
+
+ if (use_jacobian)
+ {
+ J11L = vec_load(J11[index]);
+ J12L = vec_load(J12[index]);
+ J13L = vec_load(J13[index]);
+ J21L = vec_load(J21[index]);
+ J22L = vec_load(J22[index]);
+ J23L = vec_load(J23[index]);
+ J31L = vec_load(J31[index]);
+ J32L = vec_load(J32[index]);
+ J33L = vec_load(J33[index]);
+ }
+
+ /* Include user supplied include files */
+
+ /* Precompute derivatives */
+ CCTK_REAL_VEC PDdissipationNth1A;
+ CCTK_REAL_VEC PDdissipationNth2A;
+ CCTK_REAL_VEC PDdissipationNth3A;
+ CCTK_REAL_VEC PDdissipationNth1alpha;
+ CCTK_REAL_VEC PDdissipationNth2alpha;
+ CCTK_REAL_VEC PDdissipationNth3alpha;
+ CCTK_REAL_VEC PDdissipationNth1At11;
+ CCTK_REAL_VEC PDdissipationNth2At11;
+ CCTK_REAL_VEC PDdissipationNth3At11;
+ CCTK_REAL_VEC PDdissipationNth1At12;
+ CCTK_REAL_VEC PDdissipationNth2At12;
+ CCTK_REAL_VEC PDdissipationNth3At12;
+ CCTK_REAL_VEC PDdissipationNth1At13;
+ CCTK_REAL_VEC PDdissipationNth2At13;
+ CCTK_REAL_VEC PDdissipationNth3At13;
+ CCTK_REAL_VEC PDdissipationNth1At22;
+ CCTK_REAL_VEC PDdissipationNth2At22;
+ CCTK_REAL_VEC PDdissipationNth3At22;
+ CCTK_REAL_VEC PDdissipationNth1At23;
+ CCTK_REAL_VEC PDdissipationNth2At23;
+ CCTK_REAL_VEC PDdissipationNth3At23;
+ CCTK_REAL_VEC PDdissipationNth1At33;
+ CCTK_REAL_VEC PDdissipationNth2At33;
+ CCTK_REAL_VEC PDdissipationNth3At33;
+ CCTK_REAL_VEC PDdissipationNth1B1;
+ CCTK_REAL_VEC PDdissipationNth2B1;
+ CCTK_REAL_VEC PDdissipationNth3B1;
+ CCTK_REAL_VEC PDdissipationNth1B2;
+ CCTK_REAL_VEC PDdissipationNth2B2;
+ CCTK_REAL_VEC PDdissipationNth3B2;
+ CCTK_REAL_VEC PDdissipationNth1B3;
+ CCTK_REAL_VEC PDdissipationNth2B3;
+ CCTK_REAL_VEC PDdissipationNth3B3;
+ CCTK_REAL_VEC PDdissipationNth1beta1;
+ CCTK_REAL_VEC PDdissipationNth2beta1;
+ CCTK_REAL_VEC PDdissipationNth3beta1;
+ CCTK_REAL_VEC PDdissipationNth1beta2;
+ CCTK_REAL_VEC PDdissipationNth2beta2;
+ CCTK_REAL_VEC PDdissipationNth3beta2;
+ CCTK_REAL_VEC PDdissipationNth1beta3;
+ CCTK_REAL_VEC PDdissipationNth2beta3;
+ CCTK_REAL_VEC PDdissipationNth3beta3;
+ CCTK_REAL_VEC PDdissipationNth1gt11;
+ CCTK_REAL_VEC PDdissipationNth2gt11;
+ CCTK_REAL_VEC PDdissipationNth3gt11;
+ CCTK_REAL_VEC PDdissipationNth1gt12;
+ CCTK_REAL_VEC PDdissipationNth2gt12;
+ CCTK_REAL_VEC PDdissipationNth3gt12;
+ CCTK_REAL_VEC PDdissipationNth1gt13;
+ CCTK_REAL_VEC PDdissipationNth2gt13;
+ CCTK_REAL_VEC PDdissipationNth3gt13;
+ CCTK_REAL_VEC PDdissipationNth1gt22;
+ CCTK_REAL_VEC PDdissipationNth2gt22;
+ CCTK_REAL_VEC PDdissipationNth3gt22;
+ CCTK_REAL_VEC PDdissipationNth1gt23;
+ CCTK_REAL_VEC PDdissipationNth2gt23;
+ CCTK_REAL_VEC PDdissipationNth3gt23;
+ CCTK_REAL_VEC PDdissipationNth1gt33;
+ CCTK_REAL_VEC PDdissipationNth2gt33;
+ CCTK_REAL_VEC PDdissipationNth3gt33;
+ CCTK_REAL_VEC PDdissipationNth1phi;
+ CCTK_REAL_VEC PDdissipationNth2phi;
+ CCTK_REAL_VEC PDdissipationNth3phi;
+ CCTK_REAL_VEC PDdissipationNth1Theta;
+ CCTK_REAL_VEC PDdissipationNth2Theta;
+ CCTK_REAL_VEC PDdissipationNth3Theta;
+ CCTK_REAL_VEC PDdissipationNth1trK;
+ CCTK_REAL_VEC PDdissipationNth2trK;
+ CCTK_REAL_VEC PDdissipationNth3trK;
+ CCTK_REAL_VEC PDdissipationNth1Xt1;
+ CCTK_REAL_VEC PDdissipationNth2Xt1;
+ CCTK_REAL_VEC PDdissipationNth3Xt1;
+ CCTK_REAL_VEC PDdissipationNth1Xt2;
+ CCTK_REAL_VEC PDdissipationNth2Xt2;
+ CCTK_REAL_VEC PDdissipationNth3Xt2;
+ CCTK_REAL_VEC PDdissipationNth1Xt3;
+ CCTK_REAL_VEC PDdissipationNth2Xt3;
+ CCTK_REAL_VEC PDdissipationNth3Xt3;
+
+ switch(fdOrder)
+ {
+ case 2:
+ PDdissipationNth1A = PDdissipationNthfdOrder21(&A[index]);
+ PDdissipationNth2A = PDdissipationNthfdOrder22(&A[index]);
+ PDdissipationNth3A = PDdissipationNthfdOrder23(&A[index]);
+ PDdissipationNth1alpha = PDdissipationNthfdOrder21(&alpha[index]);
+ PDdissipationNth2alpha = PDdissipationNthfdOrder22(&alpha[index]);
+ PDdissipationNth3alpha = PDdissipationNthfdOrder23(&alpha[index]);
+ PDdissipationNth1At11 = PDdissipationNthfdOrder21(&At11[index]);
+ PDdissipationNth2At11 = PDdissipationNthfdOrder22(&At11[index]);
+ PDdissipationNth3At11 = PDdissipationNthfdOrder23(&At11[index]);
+ PDdissipationNth1At12 = PDdissipationNthfdOrder21(&At12[index]);
+ PDdissipationNth2At12 = PDdissipationNthfdOrder22(&At12[index]);
+ PDdissipationNth3At12 = PDdissipationNthfdOrder23(&At12[index]);
+ PDdissipationNth1At13 = PDdissipationNthfdOrder21(&At13[index]);
+ PDdissipationNth2At13 = PDdissipationNthfdOrder22(&At13[index]);
+ PDdissipationNth3At13 = PDdissipationNthfdOrder23(&At13[index]);
+ PDdissipationNth1At22 = PDdissipationNthfdOrder21(&At22[index]);
+ PDdissipationNth2At22 = PDdissipationNthfdOrder22(&At22[index]);
+ PDdissipationNth3At22 = PDdissipationNthfdOrder23(&At22[index]);
+ PDdissipationNth1At23 = PDdissipationNthfdOrder21(&At23[index]);
+ PDdissipationNth2At23 = PDdissipationNthfdOrder22(&At23[index]);
+ PDdissipationNth3At23 = PDdissipationNthfdOrder23(&At23[index]);
+ PDdissipationNth1At33 = PDdissipationNthfdOrder21(&At33[index]);
+ PDdissipationNth2At33 = PDdissipationNthfdOrder22(&At33[index]);
+ PDdissipationNth3At33 = PDdissipationNthfdOrder23(&At33[index]);
+ PDdissipationNth1B1 = PDdissipationNthfdOrder21(&B1[index]);
+ PDdissipationNth2B1 = PDdissipationNthfdOrder22(&B1[index]);
+ PDdissipationNth3B1 = PDdissipationNthfdOrder23(&B1[index]);
+ PDdissipationNth1B2 = PDdissipationNthfdOrder21(&B2[index]);
+ PDdissipationNth2B2 = PDdissipationNthfdOrder22(&B2[index]);
+ PDdissipationNth3B2 = PDdissipationNthfdOrder23(&B2[index]);
+ PDdissipationNth1B3 = PDdissipationNthfdOrder21(&B3[index]);
+ PDdissipationNth2B3 = PDdissipationNthfdOrder22(&B3[index]);
+ PDdissipationNth3B3 = PDdissipationNthfdOrder23(&B3[index]);
+ PDdissipationNth1beta1 = PDdissipationNthfdOrder21(&beta1[index]);
+ PDdissipationNth2beta1 = PDdissipationNthfdOrder22(&beta1[index]);
+ PDdissipationNth3beta1 = PDdissipationNthfdOrder23(&beta1[index]);
+ PDdissipationNth1beta2 = PDdissipationNthfdOrder21(&beta2[index]);
+ PDdissipationNth2beta2 = PDdissipationNthfdOrder22(&beta2[index]);
+ PDdissipationNth3beta2 = PDdissipationNthfdOrder23(&beta2[index]);
+ PDdissipationNth1beta3 = PDdissipationNthfdOrder21(&beta3[index]);
+ PDdissipationNth2beta3 = PDdissipationNthfdOrder22(&beta3[index]);
+ PDdissipationNth3beta3 = PDdissipationNthfdOrder23(&beta3[index]);
+ PDdissipationNth1gt11 = PDdissipationNthfdOrder21(&gt11[index]);
+ PDdissipationNth2gt11 = PDdissipationNthfdOrder22(&gt11[index]);
+ PDdissipationNth3gt11 = PDdissipationNthfdOrder23(&gt11[index]);
+ PDdissipationNth1gt12 = PDdissipationNthfdOrder21(&gt12[index]);
+ PDdissipationNth2gt12 = PDdissipationNthfdOrder22(&gt12[index]);
+ PDdissipationNth3gt12 = PDdissipationNthfdOrder23(&gt12[index]);
+ PDdissipationNth1gt13 = PDdissipationNthfdOrder21(&gt13[index]);
+ PDdissipationNth2gt13 = PDdissipationNthfdOrder22(&gt13[index]);
+ PDdissipationNth3gt13 = PDdissipationNthfdOrder23(&gt13[index]);
+ PDdissipationNth1gt22 = PDdissipationNthfdOrder21(&gt22[index]);
+ PDdissipationNth2gt22 = PDdissipationNthfdOrder22(&gt22[index]);
+ PDdissipationNth3gt22 = PDdissipationNthfdOrder23(&gt22[index]);
+ PDdissipationNth1gt23 = PDdissipationNthfdOrder21(&gt23[index]);
+ PDdissipationNth2gt23 = PDdissipationNthfdOrder22(&gt23[index]);
+ PDdissipationNth3gt23 = PDdissipationNthfdOrder23(&gt23[index]);
+ PDdissipationNth1gt33 = PDdissipationNthfdOrder21(&gt33[index]);
+ PDdissipationNth2gt33 = PDdissipationNthfdOrder22(&gt33[index]);
+ PDdissipationNth3gt33 = PDdissipationNthfdOrder23(&gt33[index]);
+ PDdissipationNth1phi = PDdissipationNthfdOrder21(&phi[index]);
+ PDdissipationNth2phi = PDdissipationNthfdOrder22(&phi[index]);
+ PDdissipationNth3phi = PDdissipationNthfdOrder23(&phi[index]);
+ PDdissipationNth1Theta = PDdissipationNthfdOrder21(&Theta[index]);
+ PDdissipationNth2Theta = PDdissipationNthfdOrder22(&Theta[index]);
+ PDdissipationNth3Theta = PDdissipationNthfdOrder23(&Theta[index]);
+ PDdissipationNth1trK = PDdissipationNthfdOrder21(&trK[index]);
+ PDdissipationNth2trK = PDdissipationNthfdOrder22(&trK[index]);
+ PDdissipationNth3trK = PDdissipationNthfdOrder23(&trK[index]);
+ PDdissipationNth1Xt1 = PDdissipationNthfdOrder21(&Xt1[index]);
+ PDdissipationNth2Xt1 = PDdissipationNthfdOrder22(&Xt1[index]);
+ PDdissipationNth3Xt1 = PDdissipationNthfdOrder23(&Xt1[index]);
+ PDdissipationNth1Xt2 = PDdissipationNthfdOrder21(&Xt2[index]);
+ PDdissipationNth2Xt2 = PDdissipationNthfdOrder22(&Xt2[index]);
+ PDdissipationNth3Xt2 = PDdissipationNthfdOrder23(&Xt2[index]);
+ PDdissipationNth1Xt3 = PDdissipationNthfdOrder21(&Xt3[index]);
+ PDdissipationNth2Xt3 = PDdissipationNthfdOrder22(&Xt3[index]);
+ PDdissipationNth3Xt3 = PDdissipationNthfdOrder23(&Xt3[index]);
+ break;
+
+ case 4:
+ PDdissipationNth1A = PDdissipationNthfdOrder41(&A[index]);
+ PDdissipationNth2A = PDdissipationNthfdOrder42(&A[index]);
+ PDdissipationNth3A = PDdissipationNthfdOrder43(&A[index]);
+ PDdissipationNth1alpha = PDdissipationNthfdOrder41(&alpha[index]);
+ PDdissipationNth2alpha = PDdissipationNthfdOrder42(&alpha[index]);
+ PDdissipationNth3alpha = PDdissipationNthfdOrder43(&alpha[index]);
+ PDdissipationNth1At11 = PDdissipationNthfdOrder41(&At11[index]);
+ PDdissipationNth2At11 = PDdissipationNthfdOrder42(&At11[index]);
+ PDdissipationNth3At11 = PDdissipationNthfdOrder43(&At11[index]);
+ PDdissipationNth1At12 = PDdissipationNthfdOrder41(&At12[index]);
+ PDdissipationNth2At12 = PDdissipationNthfdOrder42(&At12[index]);
+ PDdissipationNth3At12 = PDdissipationNthfdOrder43(&At12[index]);
+ PDdissipationNth1At13 = PDdissipationNthfdOrder41(&At13[index]);
+ PDdissipationNth2At13 = PDdissipationNthfdOrder42(&At13[index]);
+ PDdissipationNth3At13 = PDdissipationNthfdOrder43(&At13[index]);
+ PDdissipationNth1At22 = PDdissipationNthfdOrder41(&At22[index]);
+ PDdissipationNth2At22 = PDdissipationNthfdOrder42(&At22[index]);
+ PDdissipationNth3At22 = PDdissipationNthfdOrder43(&At22[index]);
+ PDdissipationNth1At23 = PDdissipationNthfdOrder41(&At23[index]);
+ PDdissipationNth2At23 = PDdissipationNthfdOrder42(&At23[index]);
+ PDdissipationNth3At23 = PDdissipationNthfdOrder43(&At23[index]);
+ PDdissipationNth1At33 = PDdissipationNthfdOrder41(&At33[index]);
+ PDdissipationNth2At33 = PDdissipationNthfdOrder42(&At33[index]);
+ PDdissipationNth3At33 = PDdissipationNthfdOrder43(&At33[index]);
+ PDdissipationNth1B1 = PDdissipationNthfdOrder41(&B1[index]);
+ PDdissipationNth2B1 = PDdissipationNthfdOrder42(&B1[index]);
+ PDdissipationNth3B1 = PDdissipationNthfdOrder43(&B1[index]);
+ PDdissipationNth1B2 = PDdissipationNthfdOrder41(&B2[index]);
+ PDdissipationNth2B2 = PDdissipationNthfdOrder42(&B2[index]);
+ PDdissipationNth3B2 = PDdissipationNthfdOrder43(&B2[index]);
+ PDdissipationNth1B3 = PDdissipationNthfdOrder41(&B3[index]);
+ PDdissipationNth2B3 = PDdissipationNthfdOrder42(&B3[index]);
+ PDdissipationNth3B3 = PDdissipationNthfdOrder43(&B3[index]);
+ PDdissipationNth1beta1 = PDdissipationNthfdOrder41(&beta1[index]);
+ PDdissipationNth2beta1 = PDdissipationNthfdOrder42(&beta1[index]);
+ PDdissipationNth3beta1 = PDdissipationNthfdOrder43(&beta1[index]);
+ PDdissipationNth1beta2 = PDdissipationNthfdOrder41(&beta2[index]);
+ PDdissipationNth2beta2 = PDdissipationNthfdOrder42(&beta2[index]);
+ PDdissipationNth3beta2 = PDdissipationNthfdOrder43(&beta2[index]);
+ PDdissipationNth1beta3 = PDdissipationNthfdOrder41(&beta3[index]);
+ PDdissipationNth2beta3 = PDdissipationNthfdOrder42(&beta3[index]);
+ PDdissipationNth3beta3 = PDdissipationNthfdOrder43(&beta3[index]);
+ PDdissipationNth1gt11 = PDdissipationNthfdOrder41(&gt11[index]);
+ PDdissipationNth2gt11 = PDdissipationNthfdOrder42(&gt11[index]);
+ PDdissipationNth3gt11 = PDdissipationNthfdOrder43(&gt11[index]);
+ PDdissipationNth1gt12 = PDdissipationNthfdOrder41(&gt12[index]);
+ PDdissipationNth2gt12 = PDdissipationNthfdOrder42(&gt12[index]);
+ PDdissipationNth3gt12 = PDdissipationNthfdOrder43(&gt12[index]);
+ PDdissipationNth1gt13 = PDdissipationNthfdOrder41(&gt13[index]);
+ PDdissipationNth2gt13 = PDdissipationNthfdOrder42(&gt13[index]);
+ PDdissipationNth3gt13 = PDdissipationNthfdOrder43(&gt13[index]);
+ PDdissipationNth1gt22 = PDdissipationNthfdOrder41(&gt22[index]);
+ PDdissipationNth2gt22 = PDdissipationNthfdOrder42(&gt22[index]);
+ PDdissipationNth3gt22 = PDdissipationNthfdOrder43(&gt22[index]);
+ PDdissipationNth1gt23 = PDdissipationNthfdOrder41(&gt23[index]);
+ PDdissipationNth2gt23 = PDdissipationNthfdOrder42(&gt23[index]);
+ PDdissipationNth3gt23 = PDdissipationNthfdOrder43(&gt23[index]);
+ PDdissipationNth1gt33 = PDdissipationNthfdOrder41(&gt33[index]);
+ PDdissipationNth2gt33 = PDdissipationNthfdOrder42(&gt33[index]);
+ PDdissipationNth3gt33 = PDdissipationNthfdOrder43(&gt33[index]);
+ PDdissipationNth1phi = PDdissipationNthfdOrder41(&phi[index]);
+ PDdissipationNth2phi = PDdissipationNthfdOrder42(&phi[index]);
+ PDdissipationNth3phi = PDdissipationNthfdOrder43(&phi[index]);
+ PDdissipationNth1Theta = PDdissipationNthfdOrder41(&Theta[index]);
+ PDdissipationNth2Theta = PDdissipationNthfdOrder42(&Theta[index]);
+ PDdissipationNth3Theta = PDdissipationNthfdOrder43(&Theta[index]);
+ PDdissipationNth1trK = PDdissipationNthfdOrder41(&trK[index]);
+ PDdissipationNth2trK = PDdissipationNthfdOrder42(&trK[index]);
+ PDdissipationNth3trK = PDdissipationNthfdOrder43(&trK[index]);
+ PDdissipationNth1Xt1 = PDdissipationNthfdOrder41(&Xt1[index]);
+ PDdissipationNth2Xt1 = PDdissipationNthfdOrder42(&Xt1[index]);
+ PDdissipationNth3Xt1 = PDdissipationNthfdOrder43(&Xt1[index]);
+ PDdissipationNth1Xt2 = PDdissipationNthfdOrder41(&Xt2[index]);
+ PDdissipationNth2Xt2 = PDdissipationNthfdOrder42(&Xt2[index]);
+ PDdissipationNth3Xt2 = PDdissipationNthfdOrder43(&Xt2[index]);
+ PDdissipationNth1Xt3 = PDdissipationNthfdOrder41(&Xt3[index]);
+ PDdissipationNth2Xt3 = PDdissipationNthfdOrder42(&Xt3[index]);
+ PDdissipationNth3Xt3 = PDdissipationNthfdOrder43(&Xt3[index]);
+ break;
+
+ case 6:
+ PDdissipationNth1A = PDdissipationNthfdOrder61(&A[index]);
+ PDdissipationNth2A = PDdissipationNthfdOrder62(&A[index]);
+ PDdissipationNth3A = PDdissipationNthfdOrder63(&A[index]);
+ PDdissipationNth1alpha = PDdissipationNthfdOrder61(&alpha[index]);
+ PDdissipationNth2alpha = PDdissipationNthfdOrder62(&alpha[index]);
+ PDdissipationNth3alpha = PDdissipationNthfdOrder63(&alpha[index]);
+ PDdissipationNth1At11 = PDdissipationNthfdOrder61(&At11[index]);
+ PDdissipationNth2At11 = PDdissipationNthfdOrder62(&At11[index]);
+ PDdissipationNth3At11 = PDdissipationNthfdOrder63(&At11[index]);
+ PDdissipationNth1At12 = PDdissipationNthfdOrder61(&At12[index]);
+ PDdissipationNth2At12 = PDdissipationNthfdOrder62(&At12[index]);
+ PDdissipationNth3At12 = PDdissipationNthfdOrder63(&At12[index]);
+ PDdissipationNth1At13 = PDdissipationNthfdOrder61(&At13[index]);
+ PDdissipationNth2At13 = PDdissipationNthfdOrder62(&At13[index]);
+ PDdissipationNth3At13 = PDdissipationNthfdOrder63(&At13[index]);
+ PDdissipationNth1At22 = PDdissipationNthfdOrder61(&At22[index]);
+ PDdissipationNth2At22 = PDdissipationNthfdOrder62(&At22[index]);
+ PDdissipationNth3At22 = PDdissipationNthfdOrder63(&At22[index]);
+ PDdissipationNth1At23 = PDdissipationNthfdOrder61(&At23[index]);
+ PDdissipationNth2At23 = PDdissipationNthfdOrder62(&At23[index]);
+ PDdissipationNth3At23 = PDdissipationNthfdOrder63(&At23[index]);
+ PDdissipationNth1At33 = PDdissipationNthfdOrder61(&At33[index]);
+ PDdissipationNth2At33 = PDdissipationNthfdOrder62(&At33[index]);
+ PDdissipationNth3At33 = PDdissipationNthfdOrder63(&At33[index]);
+ PDdissipationNth1B1 = PDdissipationNthfdOrder61(&B1[index]);
+ PDdissipationNth2B1 = PDdissipationNthfdOrder62(&B1[index]);
+ PDdissipationNth3B1 = PDdissipationNthfdOrder63(&B1[index]);
+ PDdissipationNth1B2 = PDdissipationNthfdOrder61(&B2[index]);
+ PDdissipationNth2B2 = PDdissipationNthfdOrder62(&B2[index]);
+ PDdissipationNth3B2 = PDdissipationNthfdOrder63(&B2[index]);
+ PDdissipationNth1B3 = PDdissipationNthfdOrder61(&B3[index]);
+ PDdissipationNth2B3 = PDdissipationNthfdOrder62(&B3[index]);
+ PDdissipationNth3B3 = PDdissipationNthfdOrder63(&B3[index]);
+ PDdissipationNth1beta1 = PDdissipationNthfdOrder61(&beta1[index]);
+ PDdissipationNth2beta1 = PDdissipationNthfdOrder62(&beta1[index]);
+ PDdissipationNth3beta1 = PDdissipationNthfdOrder63(&beta1[index]);
+ PDdissipationNth1beta2 = PDdissipationNthfdOrder61(&beta2[index]);
+ PDdissipationNth2beta2 = PDdissipationNthfdOrder62(&beta2[index]);
+ PDdissipationNth3beta2 = PDdissipationNthfdOrder63(&beta2[index]);
+ PDdissipationNth1beta3 = PDdissipationNthfdOrder61(&beta3[index]);
+ PDdissipationNth2beta3 = PDdissipationNthfdOrder62(&beta3[index]);
+ PDdissipationNth3beta3 = PDdissipationNthfdOrder63(&beta3[index]);
+ PDdissipationNth1gt11 = PDdissipationNthfdOrder61(&gt11[index]);
+ PDdissipationNth2gt11 = PDdissipationNthfdOrder62(&gt11[index]);
+ PDdissipationNth3gt11 = PDdissipationNthfdOrder63(&gt11[index]);
+ PDdissipationNth1gt12 = PDdissipationNthfdOrder61(&gt12[index]);
+ PDdissipationNth2gt12 = PDdissipationNthfdOrder62(&gt12[index]);
+ PDdissipationNth3gt12 = PDdissipationNthfdOrder63(&gt12[index]);
+ PDdissipationNth1gt13 = PDdissipationNthfdOrder61(&gt13[index]);
+ PDdissipationNth2gt13 = PDdissipationNthfdOrder62(&gt13[index]);
+ PDdissipationNth3gt13 = PDdissipationNthfdOrder63(&gt13[index]);
+ PDdissipationNth1gt22 = PDdissipationNthfdOrder61(&gt22[index]);
+ PDdissipationNth2gt22 = PDdissipationNthfdOrder62(&gt22[index]);
+ PDdissipationNth3gt22 = PDdissipationNthfdOrder63(&gt22[index]);
+ PDdissipationNth1gt23 = PDdissipationNthfdOrder61(&gt23[index]);
+ PDdissipationNth2gt23 = PDdissipationNthfdOrder62(&gt23[index]);
+ PDdissipationNth3gt23 = PDdissipationNthfdOrder63(&gt23[index]);
+ PDdissipationNth1gt33 = PDdissipationNthfdOrder61(&gt33[index]);
+ PDdissipationNth2gt33 = PDdissipationNthfdOrder62(&gt33[index]);
+ PDdissipationNth3gt33 = PDdissipationNthfdOrder63(&gt33[index]);
+ PDdissipationNth1phi = PDdissipationNthfdOrder61(&phi[index]);
+ PDdissipationNth2phi = PDdissipationNthfdOrder62(&phi[index]);
+ PDdissipationNth3phi = PDdissipationNthfdOrder63(&phi[index]);
+ PDdissipationNth1Theta = PDdissipationNthfdOrder61(&Theta[index]);
+ PDdissipationNth2Theta = PDdissipationNthfdOrder62(&Theta[index]);
+ PDdissipationNth3Theta = PDdissipationNthfdOrder63(&Theta[index]);
+ PDdissipationNth1trK = PDdissipationNthfdOrder61(&trK[index]);
+ PDdissipationNth2trK = PDdissipationNthfdOrder62(&trK[index]);
+ PDdissipationNth3trK = PDdissipationNthfdOrder63(&trK[index]);
+ PDdissipationNth1Xt1 = PDdissipationNthfdOrder61(&Xt1[index]);
+ PDdissipationNth2Xt1 = PDdissipationNthfdOrder62(&Xt1[index]);
+ PDdissipationNth3Xt1 = PDdissipationNthfdOrder63(&Xt1[index]);
+ PDdissipationNth1Xt2 = PDdissipationNthfdOrder61(&Xt2[index]);
+ PDdissipationNth2Xt2 = PDdissipationNthfdOrder62(&Xt2[index]);
+ PDdissipationNth3Xt2 = PDdissipationNthfdOrder63(&Xt2[index]);
+ PDdissipationNth1Xt3 = PDdissipationNthfdOrder61(&Xt3[index]);
+ PDdissipationNth2Xt3 = PDdissipationNthfdOrder62(&Xt3[index]);
+ PDdissipationNth3Xt3 = PDdissipationNthfdOrder63(&Xt3[index]);
+ break;
+
+ case 8:
+ PDdissipationNth1A = PDdissipationNthfdOrder81(&A[index]);
+ PDdissipationNth2A = PDdissipationNthfdOrder82(&A[index]);
+ PDdissipationNth3A = PDdissipationNthfdOrder83(&A[index]);
+ PDdissipationNth1alpha = PDdissipationNthfdOrder81(&alpha[index]);
+ PDdissipationNth2alpha = PDdissipationNthfdOrder82(&alpha[index]);
+ PDdissipationNth3alpha = PDdissipationNthfdOrder83(&alpha[index]);
+ PDdissipationNth1At11 = PDdissipationNthfdOrder81(&At11[index]);
+ PDdissipationNth2At11 = PDdissipationNthfdOrder82(&At11[index]);
+ PDdissipationNth3At11 = PDdissipationNthfdOrder83(&At11[index]);
+ PDdissipationNth1At12 = PDdissipationNthfdOrder81(&At12[index]);
+ PDdissipationNth2At12 = PDdissipationNthfdOrder82(&At12[index]);
+ PDdissipationNth3At12 = PDdissipationNthfdOrder83(&At12[index]);
+ PDdissipationNth1At13 = PDdissipationNthfdOrder81(&At13[index]);
+ PDdissipationNth2At13 = PDdissipationNthfdOrder82(&At13[index]);
+ PDdissipationNth3At13 = PDdissipationNthfdOrder83(&At13[index]);
+ PDdissipationNth1At22 = PDdissipationNthfdOrder81(&At22[index]);
+ PDdissipationNth2At22 = PDdissipationNthfdOrder82(&At22[index]);
+ PDdissipationNth3At22 = PDdissipationNthfdOrder83(&At22[index]);
+ PDdissipationNth1At23 = PDdissipationNthfdOrder81(&At23[index]);
+ PDdissipationNth2At23 = PDdissipationNthfdOrder82(&At23[index]);
+ PDdissipationNth3At23 = PDdissipationNthfdOrder83(&At23[index]);
+ PDdissipationNth1At33 = PDdissipationNthfdOrder81(&At33[index]);
+ PDdissipationNth2At33 = PDdissipationNthfdOrder82(&At33[index]);
+ PDdissipationNth3At33 = PDdissipationNthfdOrder83(&At33[index]);
+ PDdissipationNth1B1 = PDdissipationNthfdOrder81(&B1[index]);
+ PDdissipationNth2B1 = PDdissipationNthfdOrder82(&B1[index]);
+ PDdissipationNth3B1 = PDdissipationNthfdOrder83(&B1[index]);
+ PDdissipationNth1B2 = PDdissipationNthfdOrder81(&B2[index]);
+ PDdissipationNth2B2 = PDdissipationNthfdOrder82(&B2[index]);
+ PDdissipationNth3B2 = PDdissipationNthfdOrder83(&B2[index]);
+ PDdissipationNth1B3 = PDdissipationNthfdOrder81(&B3[index]);
+ PDdissipationNth2B3 = PDdissipationNthfdOrder82(&B3[index]);
+ PDdissipationNth3B3 = PDdissipationNthfdOrder83(&B3[index]);
+ PDdissipationNth1beta1 = PDdissipationNthfdOrder81(&beta1[index]);
+ PDdissipationNth2beta1 = PDdissipationNthfdOrder82(&beta1[index]);
+ PDdissipationNth3beta1 = PDdissipationNthfdOrder83(&beta1[index]);
+ PDdissipationNth1beta2 = PDdissipationNthfdOrder81(&beta2[index]);
+ PDdissipationNth2beta2 = PDdissipationNthfdOrder82(&beta2[index]);
+ PDdissipationNth3beta2 = PDdissipationNthfdOrder83(&beta2[index]);
+ PDdissipationNth1beta3 = PDdissipationNthfdOrder81(&beta3[index]);
+ PDdissipationNth2beta3 = PDdissipationNthfdOrder82(&beta3[index]);
+ PDdissipationNth3beta3 = PDdissipationNthfdOrder83(&beta3[index]);
+ PDdissipationNth1gt11 = PDdissipationNthfdOrder81(&gt11[index]);
+ PDdissipationNth2gt11 = PDdissipationNthfdOrder82(&gt11[index]);
+ PDdissipationNth3gt11 = PDdissipationNthfdOrder83(&gt11[index]);
+ PDdissipationNth1gt12 = PDdissipationNthfdOrder81(&gt12[index]);
+ PDdissipationNth2gt12 = PDdissipationNthfdOrder82(&gt12[index]);
+ PDdissipationNth3gt12 = PDdissipationNthfdOrder83(&gt12[index]);
+ PDdissipationNth1gt13 = PDdissipationNthfdOrder81(&gt13[index]);
+ PDdissipationNth2gt13 = PDdissipationNthfdOrder82(&gt13[index]);
+ PDdissipationNth3gt13 = PDdissipationNthfdOrder83(&gt13[index]);
+ PDdissipationNth1gt22 = PDdissipationNthfdOrder81(&gt22[index]);
+ PDdissipationNth2gt22 = PDdissipationNthfdOrder82(&gt22[index]);
+ PDdissipationNth3gt22 = PDdissipationNthfdOrder83(&gt22[index]);
+ PDdissipationNth1gt23 = PDdissipationNthfdOrder81(&gt23[index]);
+ PDdissipationNth2gt23 = PDdissipationNthfdOrder82(&gt23[index]);
+ PDdissipationNth3gt23 = PDdissipationNthfdOrder83(&gt23[index]);
+ PDdissipationNth1gt33 = PDdissipationNthfdOrder81(&gt33[index]);
+ PDdissipationNth2gt33 = PDdissipationNthfdOrder82(&gt33[index]);
+ PDdissipationNth3gt33 = PDdissipationNthfdOrder83(&gt33[index]);
+ PDdissipationNth1phi = PDdissipationNthfdOrder81(&phi[index]);
+ PDdissipationNth2phi = PDdissipationNthfdOrder82(&phi[index]);
+ PDdissipationNth3phi = PDdissipationNthfdOrder83(&phi[index]);
+ PDdissipationNth1Theta = PDdissipationNthfdOrder81(&Theta[index]);
+ PDdissipationNth2Theta = PDdissipationNthfdOrder82(&Theta[index]);
+ PDdissipationNth3Theta = PDdissipationNthfdOrder83(&Theta[index]);
+ PDdissipationNth1trK = PDdissipationNthfdOrder81(&trK[index]);
+ PDdissipationNth2trK = PDdissipationNthfdOrder82(&trK[index]);
+ PDdissipationNth3trK = PDdissipationNthfdOrder83(&trK[index]);
+ PDdissipationNth1Xt1 = PDdissipationNthfdOrder81(&Xt1[index]);
+ PDdissipationNth2Xt1 = PDdissipationNthfdOrder82(&Xt1[index]);
+ PDdissipationNth3Xt1 = PDdissipationNthfdOrder83(&Xt1[index]);
+ PDdissipationNth1Xt2 = PDdissipationNthfdOrder81(&Xt2[index]);
+ PDdissipationNth2Xt2 = PDdissipationNthfdOrder82(&Xt2[index]);
+ PDdissipationNth3Xt2 = PDdissipationNthfdOrder83(&Xt2[index]);
+ PDdissipationNth1Xt3 = PDdissipationNthfdOrder81(&Xt3[index]);
+ PDdissipationNth2Xt3 = PDdissipationNthfdOrder82(&Xt3[index]);
+ PDdissipationNth3Xt3 = PDdissipationNthfdOrder83(&Xt3[index]);
+ break;
+ }
+
+ /* Calculate temporaries and grid functions */
+ CCTK_REAL_VEC JacPDdissipationNth1A;
+ CCTK_REAL_VEC JacPDdissipationNth1alpha;
+ CCTK_REAL_VEC JacPDdissipationNth1At11;
+ CCTK_REAL_VEC JacPDdissipationNth1At12;
+ CCTK_REAL_VEC JacPDdissipationNth1At13;
+ CCTK_REAL_VEC JacPDdissipationNth1At22;
+ CCTK_REAL_VEC JacPDdissipationNth1At23;
+ CCTK_REAL_VEC JacPDdissipationNth1At33;
+ CCTK_REAL_VEC JacPDdissipationNth1B1;
+ CCTK_REAL_VEC JacPDdissipationNth1B2;
+ CCTK_REAL_VEC JacPDdissipationNth1B3;
+ CCTK_REAL_VEC JacPDdissipationNth1beta1;
+ CCTK_REAL_VEC JacPDdissipationNth1beta2;
+ CCTK_REAL_VEC JacPDdissipationNth1beta3;
+ CCTK_REAL_VEC JacPDdissipationNth1gt11;
+ CCTK_REAL_VEC JacPDdissipationNth1gt12;
+ CCTK_REAL_VEC JacPDdissipationNth1gt13;
+ CCTK_REAL_VEC JacPDdissipationNth1gt22;
+ CCTK_REAL_VEC JacPDdissipationNth1gt23;
+ CCTK_REAL_VEC JacPDdissipationNth1gt33;
+ CCTK_REAL_VEC JacPDdissipationNth1phi;
+ CCTK_REAL_VEC JacPDdissipationNth1Theta;
+ CCTK_REAL_VEC JacPDdissipationNth1trK;
+ CCTK_REAL_VEC JacPDdissipationNth1Xt1;
+ CCTK_REAL_VEC JacPDdissipationNth1Xt2;
+ CCTK_REAL_VEC JacPDdissipationNth1Xt3;
+ CCTK_REAL_VEC JacPDdissipationNth2A;
+ CCTK_REAL_VEC JacPDdissipationNth2alpha;
+ CCTK_REAL_VEC JacPDdissipationNth2At11;
+ CCTK_REAL_VEC JacPDdissipationNth2At12;
+ CCTK_REAL_VEC JacPDdissipationNth2At13;
+ CCTK_REAL_VEC JacPDdissipationNth2At22;
+ CCTK_REAL_VEC JacPDdissipationNth2At23;
+ CCTK_REAL_VEC JacPDdissipationNth2At33;
+ CCTK_REAL_VEC JacPDdissipationNth2B1;
+ CCTK_REAL_VEC JacPDdissipationNth2B2;
+ CCTK_REAL_VEC JacPDdissipationNth2B3;
+ CCTK_REAL_VEC JacPDdissipationNth2beta1;
+ CCTK_REAL_VEC JacPDdissipationNth2beta2;
+ CCTK_REAL_VEC JacPDdissipationNth2beta3;
+ CCTK_REAL_VEC JacPDdissipationNth2gt11;
+ CCTK_REAL_VEC JacPDdissipationNth2gt12;
+ CCTK_REAL_VEC JacPDdissipationNth2gt13;
+ CCTK_REAL_VEC JacPDdissipationNth2gt22;
+ CCTK_REAL_VEC JacPDdissipationNth2gt23;
+ CCTK_REAL_VEC JacPDdissipationNth2gt33;
+ CCTK_REAL_VEC JacPDdissipationNth2phi;
+ CCTK_REAL_VEC JacPDdissipationNth2Theta;
+ CCTK_REAL_VEC JacPDdissipationNth2trK;
+ CCTK_REAL_VEC JacPDdissipationNth2Xt1;
+ CCTK_REAL_VEC JacPDdissipationNth2Xt2;
+ CCTK_REAL_VEC JacPDdissipationNth2Xt3;
+ CCTK_REAL_VEC JacPDdissipationNth3A;
+ CCTK_REAL_VEC JacPDdissipationNth3alpha;
+ CCTK_REAL_VEC JacPDdissipationNth3At11;
+ CCTK_REAL_VEC JacPDdissipationNth3At12;
+ CCTK_REAL_VEC JacPDdissipationNth3At13;
+ CCTK_REAL_VEC JacPDdissipationNth3At22;
+ CCTK_REAL_VEC JacPDdissipationNth3At23;
+ CCTK_REAL_VEC JacPDdissipationNth3At33;
+ CCTK_REAL_VEC JacPDdissipationNth3B1;
+ CCTK_REAL_VEC JacPDdissipationNth3B2;
+ CCTK_REAL_VEC JacPDdissipationNth3B3;
+ CCTK_REAL_VEC JacPDdissipationNth3beta1;
+ CCTK_REAL_VEC JacPDdissipationNth3beta2;
+ CCTK_REAL_VEC JacPDdissipationNth3beta3;
+ CCTK_REAL_VEC JacPDdissipationNth3gt11;
+ CCTK_REAL_VEC JacPDdissipationNth3gt12;
+ CCTK_REAL_VEC JacPDdissipationNth3gt13;
+ CCTK_REAL_VEC JacPDdissipationNth3gt22;
+ CCTK_REAL_VEC JacPDdissipationNth3gt23;
+ CCTK_REAL_VEC JacPDdissipationNth3gt33;
+ CCTK_REAL_VEC JacPDdissipationNth3phi;
+ CCTK_REAL_VEC JacPDdissipationNth3Theta;
+ CCTK_REAL_VEC JacPDdissipationNth3trK;
+ CCTK_REAL_VEC JacPDdissipationNth3Xt1;
+ CCTK_REAL_VEC JacPDdissipationNth3Xt2;
+ CCTK_REAL_VEC JacPDdissipationNth3Xt3;
+
+ if (use_jacobian)
+ {
+ JacPDdissipationNth1A =
+ kmadd(J11L,PDdissipationNth1A,kmadd(J21L,PDdissipationNth2A,kmul(J31L,PDdissipationNth3A)));
+
+ JacPDdissipationNth1alpha =
+ kmadd(J11L,PDdissipationNth1alpha,kmadd(J21L,PDdissipationNth2alpha,kmul(J31L,PDdissipationNth3alpha)));
+
+ JacPDdissipationNth1At11 =
+ kmadd(J11L,PDdissipationNth1At11,kmadd(J21L,PDdissipationNth2At11,kmul(J31L,PDdissipationNth3At11)));
+
+ JacPDdissipationNth1At12 =
+ kmadd(J11L,PDdissipationNth1At12,kmadd(J21L,PDdissipationNth2At12,kmul(J31L,PDdissipationNth3At12)));
+
+ JacPDdissipationNth1At13 =
+ kmadd(J11L,PDdissipationNth1At13,kmadd(J21L,PDdissipationNth2At13,kmul(J31L,PDdissipationNth3At13)));
+
+ JacPDdissipationNth1At22 =
+ kmadd(J11L,PDdissipationNth1At22,kmadd(J21L,PDdissipationNth2At22,kmul(J31L,PDdissipationNth3At22)));
+
+ JacPDdissipationNth1At23 =
+ kmadd(J11L,PDdissipationNth1At23,kmadd(J21L,PDdissipationNth2At23,kmul(J31L,PDdissipationNth3At23)));
+
+ JacPDdissipationNth1At33 =
+ kmadd(J11L,PDdissipationNth1At33,kmadd(J21L,PDdissipationNth2At33,kmul(J31L,PDdissipationNth3At33)));
+
+ JacPDdissipationNth1B1 =
+ kmadd(J11L,PDdissipationNth1B1,kmadd(J21L,PDdissipationNth2B1,kmul(J31L,PDdissipationNth3B1)));
+
+ JacPDdissipationNth1B2 =
+ kmadd(J11L,PDdissipationNth1B2,kmadd(J21L,PDdissipationNth2B2,kmul(J31L,PDdissipationNth3B2)));
+
+ JacPDdissipationNth1B3 =
+ kmadd(J11L,PDdissipationNth1B3,kmadd(J21L,PDdissipationNth2B3,kmul(J31L,PDdissipationNth3B3)));
+
+ JacPDdissipationNth1beta1 =
+ kmadd(J11L,PDdissipationNth1beta1,kmadd(J21L,PDdissipationNth2beta1,kmul(J31L,PDdissipationNth3beta1)));
+
+ JacPDdissipationNth1beta2 =
+ kmadd(J11L,PDdissipationNth1beta2,kmadd(J21L,PDdissipationNth2beta2,kmul(J31L,PDdissipationNth3beta2)));
+
+ JacPDdissipationNth1beta3 =
+ kmadd(J11L,PDdissipationNth1beta3,kmadd(J21L,PDdissipationNth2beta3,kmul(J31L,PDdissipationNth3beta3)));
+
+ JacPDdissipationNth1gt11 =
+ kmadd(J11L,PDdissipationNth1gt11,kmadd(J21L,PDdissipationNth2gt11,kmul(J31L,PDdissipationNth3gt11)));
+
+ JacPDdissipationNth1gt12 =
+ kmadd(J11L,PDdissipationNth1gt12,kmadd(J21L,PDdissipationNth2gt12,kmul(J31L,PDdissipationNth3gt12)));
+
+ JacPDdissipationNth1gt13 =
+ kmadd(J11L,PDdissipationNth1gt13,kmadd(J21L,PDdissipationNth2gt13,kmul(J31L,PDdissipationNth3gt13)));
+
+ JacPDdissipationNth1gt22 =
+ kmadd(J11L,PDdissipationNth1gt22,kmadd(J21L,PDdissipationNth2gt22,kmul(J31L,PDdissipationNth3gt22)));
+
+ JacPDdissipationNth1gt23 =
+ kmadd(J11L,PDdissipationNth1gt23,kmadd(J21L,PDdissipationNth2gt23,kmul(J31L,PDdissipationNth3gt23)));
+
+ JacPDdissipationNth1gt33 =
+ kmadd(J11L,PDdissipationNth1gt33,kmadd(J21L,PDdissipationNth2gt33,kmul(J31L,PDdissipationNth3gt33)));
+
+ JacPDdissipationNth1phi =
+ kmadd(J11L,PDdissipationNth1phi,kmadd(J21L,PDdissipationNth2phi,kmul(J31L,PDdissipationNth3phi)));
+
+ JacPDdissipationNth1Theta =
+ kmadd(J11L,PDdissipationNth1Theta,kmadd(J21L,PDdissipationNth2Theta,kmul(J31L,PDdissipationNth3Theta)));
+
+ JacPDdissipationNth1trK =
+ kmadd(J11L,PDdissipationNth1trK,kmadd(J21L,PDdissipationNth2trK,kmul(J31L,PDdissipationNth3trK)));
+
+ JacPDdissipationNth1Xt1 =
+ kmadd(J11L,PDdissipationNth1Xt1,kmadd(J21L,PDdissipationNth2Xt1,kmul(J31L,PDdissipationNth3Xt1)));
+
+ JacPDdissipationNth1Xt2 =
+ kmadd(J11L,PDdissipationNth1Xt2,kmadd(J21L,PDdissipationNth2Xt2,kmul(J31L,PDdissipationNth3Xt2)));
+
+ JacPDdissipationNth1Xt3 =
+ kmadd(J11L,PDdissipationNth1Xt3,kmadd(J21L,PDdissipationNth2Xt3,kmul(J31L,PDdissipationNth3Xt3)));
+
+ JacPDdissipationNth2A =
+ kmadd(J12L,PDdissipationNth1A,kmadd(J22L,PDdissipationNth2A,kmul(J32L,PDdissipationNth3A)));
+
+ JacPDdissipationNth2alpha =
+ kmadd(J12L,PDdissipationNth1alpha,kmadd(J22L,PDdissipationNth2alpha,kmul(J32L,PDdissipationNth3alpha)));
+
+ JacPDdissipationNth2At11 =
+ kmadd(J12L,PDdissipationNth1At11,kmadd(J22L,PDdissipationNth2At11,kmul(J32L,PDdissipationNth3At11)));
+
+ JacPDdissipationNth2At12 =
+ kmadd(J12L,PDdissipationNth1At12,kmadd(J22L,PDdissipationNth2At12,kmul(J32L,PDdissipationNth3At12)));
+
+ JacPDdissipationNth2At13 =
+ kmadd(J12L,PDdissipationNth1At13,kmadd(J22L,PDdissipationNth2At13,kmul(J32L,PDdissipationNth3At13)));
+
+ JacPDdissipationNth2At22 =
+ kmadd(J12L,PDdissipationNth1At22,kmadd(J22L,PDdissipationNth2At22,kmul(J32L,PDdissipationNth3At22)));
+
+ JacPDdissipationNth2At23 =
+ kmadd(J12L,PDdissipationNth1At23,kmadd(J22L,PDdissipationNth2At23,kmul(J32L,PDdissipationNth3At23)));
+
+ JacPDdissipationNth2At33 =
+ kmadd(J12L,PDdissipationNth1At33,kmadd(J22L,PDdissipationNth2At33,kmul(J32L,PDdissipationNth3At33)));
+
+ JacPDdissipationNth2B1 =
+ kmadd(J12L,PDdissipationNth1B1,kmadd(J22L,PDdissipationNth2B1,kmul(J32L,PDdissipationNth3B1)));
+
+ JacPDdissipationNth2B2 =
+ kmadd(J12L,PDdissipationNth1B2,kmadd(J22L,PDdissipationNth2B2,kmul(J32L,PDdissipationNth3B2)));
+
+ JacPDdissipationNth2B3 =
+ kmadd(J12L,PDdissipationNth1B3,kmadd(J22L,PDdissipationNth2B3,kmul(J32L,PDdissipationNth3B3)));
+
+ JacPDdissipationNth2beta1 =
+ kmadd(J12L,PDdissipationNth1beta1,kmadd(J22L,PDdissipationNth2beta1,kmul(J32L,PDdissipationNth3beta1)));
+
+ JacPDdissipationNth2beta2 =
+ kmadd(J12L,PDdissipationNth1beta2,kmadd(J22L,PDdissipationNth2beta2,kmul(J32L,PDdissipationNth3beta2)));
+
+ JacPDdissipationNth2beta3 =
+ kmadd(J12L,PDdissipationNth1beta3,kmadd(J22L,PDdissipationNth2beta3,kmul(J32L,PDdissipationNth3beta3)));
+
+ JacPDdissipationNth2gt11 =
+ kmadd(J12L,PDdissipationNth1gt11,kmadd(J22L,PDdissipationNth2gt11,kmul(J32L,PDdissipationNth3gt11)));
+
+ JacPDdissipationNth2gt12 =
+ kmadd(J12L,PDdissipationNth1gt12,kmadd(J22L,PDdissipationNth2gt12,kmul(J32L,PDdissipationNth3gt12)));
+
+ JacPDdissipationNth2gt13 =
+ kmadd(J12L,PDdissipationNth1gt13,kmadd(J22L,PDdissipationNth2gt13,kmul(J32L,PDdissipationNth3gt13)));
+
+ JacPDdissipationNth2gt22 =
+ kmadd(J12L,PDdissipationNth1gt22,kmadd(J22L,PDdissipationNth2gt22,kmul(J32L,PDdissipationNth3gt22)));
+
+ JacPDdissipationNth2gt23 =
+ kmadd(J12L,PDdissipationNth1gt23,kmadd(J22L,PDdissipationNth2gt23,kmul(J32L,PDdissipationNth3gt23)));
+
+ JacPDdissipationNth2gt33 =
+ kmadd(J12L,PDdissipationNth1gt33,kmadd(J22L,PDdissipationNth2gt33,kmul(J32L,PDdissipationNth3gt33)));
+
+ JacPDdissipationNth2phi =
+ kmadd(J12L,PDdissipationNth1phi,kmadd(J22L,PDdissipationNth2phi,kmul(J32L,PDdissipationNth3phi)));
+
+ JacPDdissipationNth2Theta =
+ kmadd(J12L,PDdissipationNth1Theta,kmadd(J22L,PDdissipationNth2Theta,kmul(J32L,PDdissipationNth3Theta)));
+
+ JacPDdissipationNth2trK =
+ kmadd(J12L,PDdissipationNth1trK,kmadd(J22L,PDdissipationNth2trK,kmul(J32L,PDdissipationNth3trK)));
+
+ JacPDdissipationNth2Xt1 =
+ kmadd(J12L,PDdissipationNth1Xt1,kmadd(J22L,PDdissipationNth2Xt1,kmul(J32L,PDdissipationNth3Xt1)));
+
+ JacPDdissipationNth2Xt2 =
+ kmadd(J12L,PDdissipationNth1Xt2,kmadd(J22L,PDdissipationNth2Xt2,kmul(J32L,PDdissipationNth3Xt2)));
+
+ JacPDdissipationNth2Xt3 =
+ kmadd(J12L,PDdissipationNth1Xt3,kmadd(J22L,PDdissipationNth2Xt3,kmul(J32L,PDdissipationNth3Xt3)));
+
+ JacPDdissipationNth3A =
+ kmadd(J13L,PDdissipationNth1A,kmadd(J23L,PDdissipationNth2A,kmul(J33L,PDdissipationNth3A)));
+
+ JacPDdissipationNth3alpha =
+ kmadd(J13L,PDdissipationNth1alpha,kmadd(J23L,PDdissipationNth2alpha,kmul(J33L,PDdissipationNth3alpha)));
+
+ JacPDdissipationNth3At11 =
+ kmadd(J13L,PDdissipationNth1At11,kmadd(J23L,PDdissipationNth2At11,kmul(J33L,PDdissipationNth3At11)));
+
+ JacPDdissipationNth3At12 =
+ kmadd(J13L,PDdissipationNth1At12,kmadd(J23L,PDdissipationNth2At12,kmul(J33L,PDdissipationNth3At12)));
+
+ JacPDdissipationNth3At13 =
+ kmadd(J13L,PDdissipationNth1At13,kmadd(J23L,PDdissipationNth2At13,kmul(J33L,PDdissipationNth3At13)));
+
+ JacPDdissipationNth3At22 =
+ kmadd(J13L,PDdissipationNth1At22,kmadd(J23L,PDdissipationNth2At22,kmul(J33L,PDdissipationNth3At22)));
+
+ JacPDdissipationNth3At23 =
+ kmadd(J13L,PDdissipationNth1At23,kmadd(J23L,PDdissipationNth2At23,kmul(J33L,PDdissipationNth3At23)));
+
+ JacPDdissipationNth3At33 =
+ kmadd(J13L,PDdissipationNth1At33,kmadd(J23L,PDdissipationNth2At33,kmul(J33L,PDdissipationNth3At33)));
+
+ JacPDdissipationNth3B1 =
+ kmadd(J13L,PDdissipationNth1B1,kmadd(J23L,PDdissipationNth2B1,kmul(J33L,PDdissipationNth3B1)));
+
+ JacPDdissipationNth3B2 =
+ kmadd(J13L,PDdissipationNth1B2,kmadd(J23L,PDdissipationNth2B2,kmul(J33L,PDdissipationNth3B2)));
+
+ JacPDdissipationNth3B3 =
+ kmadd(J13L,PDdissipationNth1B3,kmadd(J23L,PDdissipationNth2B3,kmul(J33L,PDdissipationNth3B3)));
+
+ JacPDdissipationNth3beta1 =
+ kmadd(J13L,PDdissipationNth1beta1,kmadd(J23L,PDdissipationNth2beta1,kmul(J33L,PDdissipationNth3beta1)));
+
+ JacPDdissipationNth3beta2 =
+ kmadd(J13L,PDdissipationNth1beta2,kmadd(J23L,PDdissipationNth2beta2,kmul(J33L,PDdissipationNth3beta2)));
+
+ JacPDdissipationNth3beta3 =
+ kmadd(J13L,PDdissipationNth1beta3,kmadd(J23L,PDdissipationNth2beta3,kmul(J33L,PDdissipationNth3beta3)));
+
+ JacPDdissipationNth3gt11 =
+ kmadd(J13L,PDdissipationNth1gt11,kmadd(J23L,PDdissipationNth2gt11,kmul(J33L,PDdissipationNth3gt11)));
+
+ JacPDdissipationNth3gt12 =
+ kmadd(J13L,PDdissipationNth1gt12,kmadd(J23L,PDdissipationNth2gt12,kmul(J33L,PDdissipationNth3gt12)));
+
+ JacPDdissipationNth3gt13 =
+ kmadd(J13L,PDdissipationNth1gt13,kmadd(J23L,PDdissipationNth2gt13,kmul(J33L,PDdissipationNth3gt13)));
+
+ JacPDdissipationNth3gt22 =
+ kmadd(J13L,PDdissipationNth1gt22,kmadd(J23L,PDdissipationNth2gt22,kmul(J33L,PDdissipationNth3gt22)));
+
+ JacPDdissipationNth3gt23 =
+ kmadd(J13L,PDdissipationNth1gt23,kmadd(J23L,PDdissipationNth2gt23,kmul(J33L,PDdissipationNth3gt23)));
+
+ JacPDdissipationNth3gt33 =
+ kmadd(J13L,PDdissipationNth1gt33,kmadd(J23L,PDdissipationNth2gt33,kmul(J33L,PDdissipationNth3gt33)));
+
+ JacPDdissipationNth3phi =
+ kmadd(J13L,PDdissipationNth1phi,kmadd(J23L,PDdissipationNth2phi,kmul(J33L,PDdissipationNth3phi)));
+
+ JacPDdissipationNth3Theta =
+ kmadd(J13L,PDdissipationNth1Theta,kmadd(J23L,PDdissipationNth2Theta,kmul(J33L,PDdissipationNth3Theta)));
+
+ JacPDdissipationNth3trK =
+ kmadd(J13L,PDdissipationNth1trK,kmadd(J23L,PDdissipationNth2trK,kmul(J33L,PDdissipationNth3trK)));
+
+ JacPDdissipationNth3Xt1 =
+ kmadd(J13L,PDdissipationNth1Xt1,kmadd(J23L,PDdissipationNth2Xt1,kmul(J33L,PDdissipationNth3Xt1)));
+
+ JacPDdissipationNth3Xt2 =
+ kmadd(J13L,PDdissipationNth1Xt2,kmadd(J23L,PDdissipationNth2Xt2,kmul(J33L,PDdissipationNth3Xt2)));
+
+ JacPDdissipationNth3Xt3 =
+ kmadd(J13L,PDdissipationNth1Xt3,kmadd(J23L,PDdissipationNth2Xt3,kmul(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;
+
+ JacPDdissipationNth1Theta = PDdissipationNth1Theta;
+
+ 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;
+
+ JacPDdissipationNth2Theta = PDdissipationNth2Theta;
+
+ 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;
+
+ JacPDdissipationNth3Theta = PDdissipationNth3Theta;
+
+ JacPDdissipationNth3trK = PDdissipationNth3trK;
+
+ JacPDdissipationNth3Xt1 = PDdissipationNth3Xt1;
+
+ JacPDdissipationNth3Xt2 = PDdissipationNth3Xt2;
+
+ JacPDdissipationNth3Xt3 = PDdissipationNth3Xt3;
+ }
+
+ CCTK_REAL_VEC epsdiss1 = ToReal(EpsDiss);
+
+ CCTK_REAL_VEC epsdiss2 = ToReal(EpsDiss);
+
+ CCTK_REAL_VEC epsdiss3 = ToReal(EpsDiss);
+
+ phirhsL =
+ kadd(phirhsL,kmadd(epsdiss1,JacPDdissipationNth1phi,kmadd(epsdiss2,JacPDdissipationNth2phi,kmul(epsdiss3,JacPDdissipationNth3phi))));
+
+ gt11rhsL =
+ kadd(gt11rhsL,kmadd(epsdiss1,JacPDdissipationNth1gt11,kmadd(epsdiss2,JacPDdissipationNth2gt11,kmul(epsdiss3,JacPDdissipationNth3gt11))));
+
+ gt12rhsL =
+ kadd(gt12rhsL,kmadd(epsdiss1,JacPDdissipationNth1gt12,kmadd(epsdiss2,JacPDdissipationNth2gt12,kmul(epsdiss3,JacPDdissipationNth3gt12))));
+
+ gt13rhsL =
+ kadd(gt13rhsL,kmadd(epsdiss1,JacPDdissipationNth1gt13,kmadd(epsdiss2,JacPDdissipationNth2gt13,kmul(epsdiss3,JacPDdissipationNth3gt13))));
+
+ gt22rhsL =
+ kadd(gt22rhsL,kmadd(epsdiss1,JacPDdissipationNth1gt22,kmadd(epsdiss2,JacPDdissipationNth2gt22,kmul(epsdiss3,JacPDdissipationNth3gt22))));
+
+ gt23rhsL =
+ kadd(gt23rhsL,kmadd(epsdiss1,JacPDdissipationNth1gt23,kmadd(epsdiss2,JacPDdissipationNth2gt23,kmul(epsdiss3,JacPDdissipationNth3gt23))));
+
+ gt33rhsL =
+ kadd(gt33rhsL,kmadd(epsdiss1,JacPDdissipationNth1gt33,kmadd(epsdiss2,JacPDdissipationNth2gt33,kmul(epsdiss3,JacPDdissipationNth3gt33))));
+
+ Xt1rhsL =
+ kadd(Xt1rhsL,kmadd(epsdiss1,JacPDdissipationNth1Xt1,kmadd(epsdiss2,JacPDdissipationNth2Xt1,kmul(epsdiss3,JacPDdissipationNth3Xt1))));
+
+ Xt2rhsL =
+ kadd(Xt2rhsL,kmadd(epsdiss1,JacPDdissipationNth1Xt2,kmadd(epsdiss2,JacPDdissipationNth2Xt2,kmul(epsdiss3,JacPDdissipationNth3Xt2))));
+
+ Xt3rhsL =
+ kadd(Xt3rhsL,kmadd(epsdiss1,JacPDdissipationNth1Xt3,kmadd(epsdiss2,JacPDdissipationNth2Xt3,kmul(epsdiss3,JacPDdissipationNth3Xt3))));
+
+ ThetarhsL =
+ kadd(ThetarhsL,kmadd(epsdiss1,JacPDdissipationNth1Theta,kmadd(epsdiss2,JacPDdissipationNth2Theta,kmul(epsdiss3,JacPDdissipationNth3Theta))));
+
+ trKrhsL =
+ kadd(trKrhsL,kmadd(epsdiss1,JacPDdissipationNth1trK,kmadd(epsdiss2,JacPDdissipationNth2trK,kmul(epsdiss3,JacPDdissipationNth3trK))));
+
+ At11rhsL =
+ kadd(At11rhsL,kmadd(epsdiss1,JacPDdissipationNth1At11,kmadd(epsdiss2,JacPDdissipationNth2At11,kmul(epsdiss3,JacPDdissipationNth3At11))));
+
+ At12rhsL =
+ kadd(At12rhsL,kmadd(epsdiss1,JacPDdissipationNth1At12,kmadd(epsdiss2,JacPDdissipationNth2At12,kmul(epsdiss3,JacPDdissipationNth3At12))));
+
+ At13rhsL =
+ kadd(At13rhsL,kmadd(epsdiss1,JacPDdissipationNth1At13,kmadd(epsdiss2,JacPDdissipationNth2At13,kmul(epsdiss3,JacPDdissipationNth3At13))));
+
+ At22rhsL =
+ kadd(At22rhsL,kmadd(epsdiss1,JacPDdissipationNth1At22,kmadd(epsdiss2,JacPDdissipationNth2At22,kmul(epsdiss3,JacPDdissipationNth3At22))));
+
+ At23rhsL =
+ kadd(At23rhsL,kmadd(epsdiss1,JacPDdissipationNth1At23,kmadd(epsdiss2,JacPDdissipationNth2At23,kmul(epsdiss3,JacPDdissipationNth3At23))));
+
+ At33rhsL =
+ kadd(At33rhsL,kmadd(epsdiss1,JacPDdissipationNth1At33,kmadd(epsdiss2,JacPDdissipationNth2At33,kmul(epsdiss3,JacPDdissipationNth3At33))));
+
+ alpharhsL =
+ kadd(alpharhsL,kmadd(epsdiss1,JacPDdissipationNth1alpha,kmadd(epsdiss2,JacPDdissipationNth2alpha,kmul(epsdiss3,JacPDdissipationNth3alpha))));
+
+ ArhsL =
+ kadd(ArhsL,kmadd(epsdiss1,JacPDdissipationNth1A,kmadd(epsdiss2,JacPDdissipationNth2A,kmul(epsdiss3,JacPDdissipationNth3A))));
+
+ beta1rhsL =
+ kadd(beta1rhsL,kmadd(epsdiss1,JacPDdissipationNth1beta1,kmadd(epsdiss2,JacPDdissipationNth2beta1,kmul(epsdiss3,JacPDdissipationNth3beta1))));
+
+ beta2rhsL =
+ kadd(beta2rhsL,kmadd(epsdiss1,JacPDdissipationNth1beta2,kmadd(epsdiss2,JacPDdissipationNth2beta2,kmul(epsdiss3,JacPDdissipationNth3beta2))));
+
+ beta3rhsL =
+ kadd(beta3rhsL,kmadd(epsdiss1,JacPDdissipationNth1beta3,kmadd(epsdiss2,JacPDdissipationNth2beta3,kmul(epsdiss3,JacPDdissipationNth3beta3))));
+
+ B1rhsL =
+ kadd(B1rhsL,kmadd(epsdiss1,JacPDdissipationNth1B1,kmadd(epsdiss2,JacPDdissipationNth2B1,kmul(epsdiss3,JacPDdissipationNth3B1))));
+
+ B2rhsL =
+ kadd(B2rhsL,kmadd(epsdiss1,JacPDdissipationNth1B2,kmadd(epsdiss2,JacPDdissipationNth2B2,kmul(epsdiss3,JacPDdissipationNth3B2))));
+
+ B3rhsL =
+ kadd(B3rhsL,kmadd(epsdiss1,JacPDdissipationNth1B3,kmadd(epsdiss2,JacPDdissipationNth2B3,kmul(epsdiss3,JacPDdissipationNth3B3))));
+
+ /* Copy local copies back to grid functions */
+ vec_store_partial_prepare(i,lc_imin,lc_imax);
+ vec_store_nta_partial(alpharhs[index],alpharhsL);
+ vec_store_nta_partial(Arhs[index],ArhsL);
+ vec_store_nta_partial(At11rhs[index],At11rhsL);
+ vec_store_nta_partial(At12rhs[index],At12rhsL);
+ vec_store_nta_partial(At13rhs[index],At13rhsL);
+ vec_store_nta_partial(At22rhs[index],At22rhsL);
+ vec_store_nta_partial(At23rhs[index],At23rhsL);
+ vec_store_nta_partial(At33rhs[index],At33rhsL);
+ vec_store_nta_partial(B1rhs[index],B1rhsL);
+ vec_store_nta_partial(B2rhs[index],B2rhsL);
+ vec_store_nta_partial(B3rhs[index],B3rhsL);
+ vec_store_nta_partial(beta1rhs[index],beta1rhsL);
+ vec_store_nta_partial(beta2rhs[index],beta2rhsL);
+ vec_store_nta_partial(beta3rhs[index],beta3rhsL);
+ vec_store_nta_partial(gt11rhs[index],gt11rhsL);
+ vec_store_nta_partial(gt12rhs[index],gt12rhsL);
+ vec_store_nta_partial(gt13rhs[index],gt13rhsL);
+ vec_store_nta_partial(gt22rhs[index],gt22rhsL);
+ vec_store_nta_partial(gt23rhs[index],gt23rhsL);
+ vec_store_nta_partial(gt33rhs[index],gt33rhsL);
+ vec_store_nta_partial(phirhs[index],phirhsL);
+ vec_store_nta_partial(Thetarhs[index],ThetarhsL);
+ vec_store_nta_partial(trKrhs[index],trKrhsL);
+ vec_store_nta_partial(Xt1rhs[index],Xt1rhsL);
+ vec_store_nta_partial(Xt2rhs[index],Xt2rhsL);
+ vec_store_nta_partial(Xt3rhs[index],Xt3rhsL);
+ }
+ LC_ENDLOOP3VEC(ML_CCZ4_Dissipation);
+}
+
+extern "C" void ML_CCZ4_Dissipation(CCTK_ARGUMENTS)
+{
+ DECLARE_CCTK_ARGUMENTS;
+ DECLARE_CCTK_PARAMETERS;
+
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_CCZ4_Dissipation_Body");
+ }
+
+ if (cctk_iteration % ML_CCZ4_Dissipation_calc_every != ML_CCZ4_Dissipation_calc_offset)
+ {
+ return;
+ }
+
+ const char *const groups[] = {
+ "ML_CCZ4::ML_curv",
+ "ML_CCZ4::ML_curvrhs",
+ "ML_CCZ4::ML_dtlapse",
+ "ML_CCZ4::ML_dtlapserhs",
+ "ML_CCZ4::ML_dtshift",
+ "ML_CCZ4::ML_dtshiftrhs",
+ "ML_CCZ4::ML_Gamma",
+ "ML_CCZ4::ML_Gammarhs",
+ "ML_CCZ4::ML_lapse",
+ "ML_CCZ4::ML_lapserhs",
+ "ML_CCZ4::ML_log_confac",
+ "ML_CCZ4::ML_log_confacrhs",
+ "ML_CCZ4::ML_metric",
+ "ML_CCZ4::ML_metricrhs",
+ "ML_CCZ4::ML_shift",
+ "ML_CCZ4::ML_shiftrhs",
+ "ML_CCZ4::ML_Theta",
+ "ML_CCZ4::ML_Thetarhs",
+ "ML_CCZ4::ML_trace_curv",
+ "ML_CCZ4::ML_trace_curvrhs"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_CCZ4_Dissipation", 20, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_CCZ4_Dissipation", 2, 2, 2);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_CCZ4_Dissipation", 3, 3, 3);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_CCZ4_Dissipation", 4, 4, 4);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_CCZ4_Dissipation", 5, 5, 5);
+ break;
+ }
+
+ GenericFD_LoopOverInterior(cctkGH, ML_CCZ4_Dissipation_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_CCZ4_Dissipation_Body");
+ }
+}
diff --git a/ML_CCZ4/src/ML_CCZ4_InitGamma.cc b/ML_CCZ4/src/ML_CCZ4_InitGamma.cc
new file mode 100644
index 0000000..ebd3b86
--- /dev/null
+++ b/ML_CCZ4/src/ML_CCZ4_InitGamma.cc
@@ -0,0 +1,295 @@
+/* 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 "cctk_Loop.h"
+#include "loopcontrol.h"
+#include "vectors.h"
+
+/* Define macros used in calculations */
+#define INITVALUE (42)
+#define QAD(x) (SQR(SQR(x)))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
+
+static void ML_CCZ4_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 imin[3], int const imax[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+{
+ DECLARE_CCTK_ARGUMENTS;
+ DECLARE_CCTK_PARAMETERS;
+
+
+ /* 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_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const t = ToReal(cctk_time);
+ CCTK_REAL_VEC const dxi = INV(dx);
+ CCTK_REAL_VEC const dyi = INV(dy);
+ CCTK_REAL_VEC const dzi = INV(dz);
+ CCTK_REAL_VEC const khalf = ToReal(0.5);
+ CCTK_REAL_VEC const kthird = ToReal(1.0/3.0);
+ CCTK_REAL_VEC const ktwothird = ToReal(2.0/3.0);
+ CCTK_REAL_VEC const kfourthird = ToReal(4.0/3.0);
+ CCTK_REAL_VEC const keightthird = ToReal(8.0/3.0);
+ CCTK_REAL_VEC const hdxi = kmul(ToReal(0.5), dxi);
+ CCTK_REAL_VEC const hdyi = kmul(ToReal(0.5), dyi);
+ CCTK_REAL_VEC const hdzi = kmul(ToReal(0.5), dzi);
+
+ /* Initialize predefined quantities */
+ CCTK_REAL_VEC const p1o1024dx = kmul(INV(dx),ToReal(0.0009765625));
+ CCTK_REAL_VEC const p1o1024dy = kmul(INV(dy),ToReal(0.0009765625));
+ CCTK_REAL_VEC const p1o1024dz = kmul(INV(dz),ToReal(0.0009765625));
+ CCTK_REAL_VEC const p1o120dx = kmul(INV(dx),ToReal(0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o120dy = kmul(INV(dy),ToReal(0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o120dz = kmul(INV(dz),ToReal(0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dx = kmul(INV(dx),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dy = kmul(INV(dy),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dz = kmul(INV(dz),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o144dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o144dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o144dydz = kmul(INV(kmul(dy,dz)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o1680dx = kmul(INV(dx),ToReal(0.000595238095238095238095238095238));
+ CCTK_REAL_VEC const p1o1680dy = kmul(INV(dy),ToReal(0.000595238095238095238095238095238));
+ CCTK_REAL_VEC const p1o1680dz = kmul(INV(dz),ToReal(0.000595238095238095238095238095238));
+ CCTK_REAL_VEC const p1o16dx = kmul(INV(dx),ToReal(0.0625));
+ CCTK_REAL_VEC const p1o16dy = kmul(INV(dy),ToReal(0.0625));
+ CCTK_REAL_VEC const p1o16dz = kmul(INV(dz),ToReal(0.0625));
+ CCTK_REAL_VEC const p1o180dx2 = kmul(INV(SQR(dx)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o180dy2 = kmul(INV(SQR(dy)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o180dz2 = kmul(INV(SQR(dz)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o24dx = kmul(INV(dx),ToReal(0.0416666666666666666666666666667));
+ CCTK_REAL_VEC const p1o24dy = kmul(INV(dy),ToReal(0.0416666666666666666666666666667));
+ CCTK_REAL_VEC const p1o24dz = kmul(INV(dz),ToReal(0.0416666666666666666666666666667));
+ CCTK_REAL_VEC const p1o256dx = kmul(INV(dx),ToReal(0.00390625));
+ CCTK_REAL_VEC const p1o256dy = kmul(INV(dy),ToReal(0.00390625));
+ CCTK_REAL_VEC const p1o256dz = kmul(INV(dz),ToReal(0.00390625));
+ CCTK_REAL_VEC const p1o2dx = kmul(INV(dx),ToReal(0.5));
+ CCTK_REAL_VEC const p1o2dy = kmul(INV(dy),ToReal(0.5));
+ CCTK_REAL_VEC const p1o2dz = kmul(INV(dz),ToReal(0.5));
+ CCTK_REAL_VEC const p1o3600dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o3600dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o3600dydz = kmul(INV(kmul(dy,dz)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o4dx = kmul(INV(dx),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(kmul(dy,dz)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dz = kmul(INV(dz),ToReal(0.25));
+ CCTK_REAL_VEC const p1o5040dx2 = kmul(INV(SQR(dx)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o5040dy2 = kmul(INV(SQR(dy)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o5040dz2 = kmul(INV(SQR(dz)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o560dx = kmul(INV(dx),ToReal(0.00178571428571428571428571428571));
+ CCTK_REAL_VEC const p1o560dy = kmul(INV(dy),ToReal(0.00178571428571428571428571428571));
+ CCTK_REAL_VEC const p1o560dz = kmul(INV(dz),ToReal(0.00178571428571428571428571428571));
+ CCTK_REAL_VEC const p1o60dx = kmul(INV(dx),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o60dy = kmul(INV(dy),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o60dz = kmul(INV(dz),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o64dx = kmul(INV(dx),ToReal(0.015625));
+ CCTK_REAL_VEC const p1o64dy = kmul(INV(dy),ToReal(0.015625));
+ CCTK_REAL_VEC const p1o64dz = kmul(INV(dz),ToReal(0.015625));
+ CCTK_REAL_VEC const p1o705600dxdy = kmul(INV(kmul(dx,dy)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(kmul(dx,dz)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(kmul(dy,dz)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1odx = INV(dx);
+ CCTK_REAL_VEC const p1odx2 = INV(SQR(dx));
+ CCTK_REAL_VEC const p1ody = INV(dy);
+ CCTK_REAL_VEC const p1ody2 = INV(SQR(dy));
+ CCTK_REAL_VEC const p1odz = INV(dz);
+ CCTK_REAL_VEC const p1odz2 = INV(SQR(dz));
+ CCTK_REAL_VEC const pm1o120dx = kmul(INV(dx),ToReal(-0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o120dy = kmul(INV(dy),ToReal(-0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o120dz = kmul(INV(dz),ToReal(-0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dx2 = kmul(INV(SQR(dx)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dy2 = kmul(INV(SQR(dy)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dz2 = kmul(INV(SQR(dz)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o2dx = kmul(INV(dx),ToReal(-0.5));
+ CCTK_REAL_VEC const pm1o2dy = kmul(INV(dy),ToReal(-0.5));
+ CCTK_REAL_VEC const pm1o2dz = kmul(INV(dz),ToReal(-0.5));
+ CCTK_REAL_VEC const pm1o4dx = kmul(INV(dx),ToReal(-0.25));
+ CCTK_REAL_VEC const pm1o4dy = kmul(INV(dy),ToReal(-0.25));
+ CCTK_REAL_VEC const pm1o4dz = kmul(INV(dz),ToReal(-0.25));
+ CCTK_REAL_VEC const pm1o60dx = kmul(INV(dx),ToReal(-0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const pm1o60dy = kmul(INV(dy),ToReal(-0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const pm1o60dz = kmul(INV(dz),ToReal(-0.0166666666666666666666666666667));
+
+ /* 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;
+
+ /* Assign local copies of arrays functions */
+
+
+
+ /* Calculate temporaries and arrays functions */
+
+ /* Copy local copies back to grid functions */
+
+ /* Loop over the grid points */
+ #pragma omp parallel
+ LC_LOOP3VEC(ML_CCZ4_InitGamma,
+ i,j,k, imin[0],imin[1],imin[2], imax[0],imax[1],imax[2],
+ cctk_lsh[0],cctk_lsh[1],cctk_lsh[2],
+ CCTK_REAL_VEC_SIZE)
+ {
+ ptrdiff_t const index = di*i + dj*j + dk*k;
+
+ /* Assign local copies of grid functions */
+
+
+
+
+ /* Include user supplied include files */
+
+ /* Precompute derivatives */
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
+ /* Calculate temporaries and grid functions */
+ CCTK_REAL_VEC Xt1L = ToReal(0);
+
+ CCTK_REAL_VEC Xt2L = ToReal(0);
+
+ CCTK_REAL_VEC Xt3L = ToReal(0);
+
+ CCTK_REAL_VEC AL = ToReal(0);
+
+ CCTK_REAL_VEC B1L = ToReal(0);
+
+ CCTK_REAL_VEC B2L = ToReal(0);
+
+ CCTK_REAL_VEC B3L = ToReal(0);
+
+ /* Copy local copies back to grid functions */
+ vec_store_partial_prepare(i,lc_imin,lc_imax);
+ vec_store_nta_partial(A[index],AL);
+ vec_store_nta_partial(B1[index],B1L);
+ vec_store_nta_partial(B2[index],B2L);
+ vec_store_nta_partial(B3[index],B3L);
+ vec_store_nta_partial(Xt1[index],Xt1L);
+ vec_store_nta_partial(Xt2[index],Xt2L);
+ vec_store_nta_partial(Xt3[index],Xt3L);
+ }
+ LC_ENDLOOP3VEC(ML_CCZ4_InitGamma);
+}
+
+extern "C" void ML_CCZ4_InitGamma(CCTK_ARGUMENTS)
+{
+ DECLARE_CCTK_ARGUMENTS;
+ DECLARE_CCTK_PARAMETERS;
+
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_CCZ4_InitGamma_Body");
+ }
+
+ if (cctk_iteration % ML_CCZ4_InitGamma_calc_every != ML_CCZ4_InitGamma_calc_offset)
+ {
+ return;
+ }
+
+ const char *const groups[] = {
+ "ML_CCZ4::ML_dtlapse",
+ "ML_CCZ4::ML_dtshift",
+ "ML_CCZ4::ML_Gamma"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_CCZ4_InitGamma", 3, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
+ GenericFD_LoopOverEverything(cctkGH, ML_CCZ4_InitGamma_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_CCZ4_InitGamma_Body");
+ }
+}
diff --git a/ML_CCZ4/src/ML_CCZ4_InitRHS.cc b/ML_CCZ4/src/ML_CCZ4_InitRHS.cc
new file mode 100644
index 0000000..31496c5
--- /dev/null
+++ b/ML_CCZ4/src/ML_CCZ4_InitRHS.cc
@@ -0,0 +1,359 @@
+/* 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 "cctk_Loop.h"
+#include "loopcontrol.h"
+#include "vectors.h"
+
+/* Define macros used in calculations */
+#define INITVALUE (42)
+#define QAD(x) (SQR(SQR(x)))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
+
+static void ML_CCZ4_InitRHS_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const imin[3], int const imax[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+{
+ DECLARE_CCTK_ARGUMENTS;
+ DECLARE_CCTK_PARAMETERS;
+
+
+ /* 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_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const t = ToReal(cctk_time);
+ CCTK_REAL_VEC const dxi = INV(dx);
+ CCTK_REAL_VEC const dyi = INV(dy);
+ CCTK_REAL_VEC const dzi = INV(dz);
+ CCTK_REAL_VEC const khalf = ToReal(0.5);
+ CCTK_REAL_VEC const kthird = ToReal(1.0/3.0);
+ CCTK_REAL_VEC const ktwothird = ToReal(2.0/3.0);
+ CCTK_REAL_VEC const kfourthird = ToReal(4.0/3.0);
+ CCTK_REAL_VEC const keightthird = ToReal(8.0/3.0);
+ CCTK_REAL_VEC const hdxi = kmul(ToReal(0.5), dxi);
+ CCTK_REAL_VEC const hdyi = kmul(ToReal(0.5), dyi);
+ CCTK_REAL_VEC const hdzi = kmul(ToReal(0.5), dzi);
+
+ /* Initialize predefined quantities */
+ CCTK_REAL_VEC const p1o1024dx = kmul(INV(dx),ToReal(0.0009765625));
+ CCTK_REAL_VEC const p1o1024dy = kmul(INV(dy),ToReal(0.0009765625));
+ CCTK_REAL_VEC const p1o1024dz = kmul(INV(dz),ToReal(0.0009765625));
+ CCTK_REAL_VEC const p1o120dx = kmul(INV(dx),ToReal(0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o120dy = kmul(INV(dy),ToReal(0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o120dz = kmul(INV(dz),ToReal(0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dx = kmul(INV(dx),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dy = kmul(INV(dy),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dz = kmul(INV(dz),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o144dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o144dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o144dydz = kmul(INV(kmul(dy,dz)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o1680dx = kmul(INV(dx),ToReal(0.000595238095238095238095238095238));
+ CCTK_REAL_VEC const p1o1680dy = kmul(INV(dy),ToReal(0.000595238095238095238095238095238));
+ CCTK_REAL_VEC const p1o1680dz = kmul(INV(dz),ToReal(0.000595238095238095238095238095238));
+ CCTK_REAL_VEC const p1o16dx = kmul(INV(dx),ToReal(0.0625));
+ CCTK_REAL_VEC const p1o16dy = kmul(INV(dy),ToReal(0.0625));
+ CCTK_REAL_VEC const p1o16dz = kmul(INV(dz),ToReal(0.0625));
+ CCTK_REAL_VEC const p1o180dx2 = kmul(INV(SQR(dx)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o180dy2 = kmul(INV(SQR(dy)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o180dz2 = kmul(INV(SQR(dz)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o24dx = kmul(INV(dx),ToReal(0.0416666666666666666666666666667));
+ CCTK_REAL_VEC const p1o24dy = kmul(INV(dy),ToReal(0.0416666666666666666666666666667));
+ CCTK_REAL_VEC const p1o24dz = kmul(INV(dz),ToReal(0.0416666666666666666666666666667));
+ CCTK_REAL_VEC const p1o256dx = kmul(INV(dx),ToReal(0.00390625));
+ CCTK_REAL_VEC const p1o256dy = kmul(INV(dy),ToReal(0.00390625));
+ CCTK_REAL_VEC const p1o256dz = kmul(INV(dz),ToReal(0.00390625));
+ CCTK_REAL_VEC const p1o2dx = kmul(INV(dx),ToReal(0.5));
+ CCTK_REAL_VEC const p1o2dy = kmul(INV(dy),ToReal(0.5));
+ CCTK_REAL_VEC const p1o2dz = kmul(INV(dz),ToReal(0.5));
+ CCTK_REAL_VEC const p1o3600dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o3600dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o3600dydz = kmul(INV(kmul(dy,dz)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o4dx = kmul(INV(dx),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(kmul(dy,dz)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dz = kmul(INV(dz),ToReal(0.25));
+ CCTK_REAL_VEC const p1o5040dx2 = kmul(INV(SQR(dx)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o5040dy2 = kmul(INV(SQR(dy)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o5040dz2 = kmul(INV(SQR(dz)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o560dx = kmul(INV(dx),ToReal(0.00178571428571428571428571428571));
+ CCTK_REAL_VEC const p1o560dy = kmul(INV(dy),ToReal(0.00178571428571428571428571428571));
+ CCTK_REAL_VEC const p1o560dz = kmul(INV(dz),ToReal(0.00178571428571428571428571428571));
+ CCTK_REAL_VEC const p1o60dx = kmul(INV(dx),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o60dy = kmul(INV(dy),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o60dz = kmul(INV(dz),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o64dx = kmul(INV(dx),ToReal(0.015625));
+ CCTK_REAL_VEC const p1o64dy = kmul(INV(dy),ToReal(0.015625));
+ CCTK_REAL_VEC const p1o64dz = kmul(INV(dz),ToReal(0.015625));
+ CCTK_REAL_VEC const p1o705600dxdy = kmul(INV(kmul(dx,dy)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(kmul(dx,dz)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(kmul(dy,dz)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1odx = INV(dx);
+ CCTK_REAL_VEC const p1odx2 = INV(SQR(dx));
+ CCTK_REAL_VEC const p1ody = INV(dy);
+ CCTK_REAL_VEC const p1ody2 = INV(SQR(dy));
+ CCTK_REAL_VEC const p1odz = INV(dz);
+ CCTK_REAL_VEC const p1odz2 = INV(SQR(dz));
+ CCTK_REAL_VEC const pm1o120dx = kmul(INV(dx),ToReal(-0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o120dy = kmul(INV(dy),ToReal(-0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o120dz = kmul(INV(dz),ToReal(-0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dx2 = kmul(INV(SQR(dx)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dy2 = kmul(INV(SQR(dy)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dz2 = kmul(INV(SQR(dz)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o2dx = kmul(INV(dx),ToReal(-0.5));
+ CCTK_REAL_VEC const pm1o2dy = kmul(INV(dy),ToReal(-0.5));
+ CCTK_REAL_VEC const pm1o2dz = kmul(INV(dz),ToReal(-0.5));
+ CCTK_REAL_VEC const pm1o4dx = kmul(INV(dx),ToReal(-0.25));
+ CCTK_REAL_VEC const pm1o4dy = kmul(INV(dy),ToReal(-0.25));
+ CCTK_REAL_VEC const pm1o4dz = kmul(INV(dz),ToReal(-0.25));
+ CCTK_REAL_VEC const pm1o60dx = kmul(INV(dx),ToReal(-0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const pm1o60dy = kmul(INV(dy),ToReal(-0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const pm1o60dz = kmul(INV(dz),ToReal(-0.0166666666666666666666666666667));
+
+ /* 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;
+
+ /* Assign local copies of arrays functions */
+
+
+
+ /* Calculate temporaries and arrays functions */
+
+ /* Copy local copies back to grid functions */
+
+ /* Loop over the grid points */
+ #pragma omp parallel
+ LC_LOOP3VEC(ML_CCZ4_InitRHS,
+ i,j,k, imin[0],imin[1],imin[2], imax[0],imax[1],imax[2],
+ cctk_lsh[0],cctk_lsh[1],cctk_lsh[2],
+ CCTK_REAL_VEC_SIZE)
+ {
+ ptrdiff_t const index = di*i + dj*j + dk*k;
+
+ /* Assign local copies of grid functions */
+
+
+
+
+ /* Include user supplied include files */
+
+ /* Precompute derivatives */
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
+ /* Calculate temporaries and grid functions */
+ CCTK_REAL_VEC phirhsL = ToReal(0);
+
+ CCTK_REAL_VEC gt11rhsL = ToReal(0);
+
+ CCTK_REAL_VEC gt12rhsL = ToReal(0);
+
+ CCTK_REAL_VEC gt13rhsL = ToReal(0);
+
+ CCTK_REAL_VEC gt22rhsL = ToReal(0);
+
+ CCTK_REAL_VEC gt23rhsL = ToReal(0);
+
+ CCTK_REAL_VEC gt33rhsL = ToReal(0);
+
+ CCTK_REAL_VEC trKrhsL = ToReal(0);
+
+ CCTK_REAL_VEC At11rhsL = ToReal(0);
+
+ CCTK_REAL_VEC At12rhsL = ToReal(0);
+
+ CCTK_REAL_VEC At13rhsL = ToReal(0);
+
+ CCTK_REAL_VEC At22rhsL = ToReal(0);
+
+ CCTK_REAL_VEC At23rhsL = ToReal(0);
+
+ CCTK_REAL_VEC At33rhsL = ToReal(0);
+
+ CCTK_REAL_VEC Xt1rhsL = ToReal(0);
+
+ CCTK_REAL_VEC Xt2rhsL = ToReal(0);
+
+ CCTK_REAL_VEC Xt3rhsL = ToReal(0);
+
+ CCTK_REAL_VEC alpharhsL = ToReal(0);
+
+ CCTK_REAL_VEC ArhsL = ToReal(0);
+
+ CCTK_REAL_VEC beta1rhsL = ToReal(0);
+
+ CCTK_REAL_VEC beta2rhsL = ToReal(0);
+
+ CCTK_REAL_VEC beta3rhsL = ToReal(0);
+
+ CCTK_REAL_VEC B1rhsL = ToReal(0);
+
+ CCTK_REAL_VEC B2rhsL = ToReal(0);
+
+ CCTK_REAL_VEC B3rhsL = ToReal(0);
+
+ CCTK_REAL_VEC ThetarhsL = ToReal(0);
+
+ /* Copy local copies back to grid functions */
+ vec_store_partial_prepare(i,lc_imin,lc_imax);
+ vec_store_nta_partial(alpharhs[index],alpharhsL);
+ vec_store_nta_partial(Arhs[index],ArhsL);
+ vec_store_nta_partial(At11rhs[index],At11rhsL);
+ vec_store_nta_partial(At12rhs[index],At12rhsL);
+ vec_store_nta_partial(At13rhs[index],At13rhsL);
+ vec_store_nta_partial(At22rhs[index],At22rhsL);
+ vec_store_nta_partial(At23rhs[index],At23rhsL);
+ vec_store_nta_partial(At33rhs[index],At33rhsL);
+ vec_store_nta_partial(B1rhs[index],B1rhsL);
+ vec_store_nta_partial(B2rhs[index],B2rhsL);
+ vec_store_nta_partial(B3rhs[index],B3rhsL);
+ vec_store_nta_partial(beta1rhs[index],beta1rhsL);
+ vec_store_nta_partial(beta2rhs[index],beta2rhsL);
+ vec_store_nta_partial(beta3rhs[index],beta3rhsL);
+ vec_store_nta_partial(gt11rhs[index],gt11rhsL);
+ vec_store_nta_partial(gt12rhs[index],gt12rhsL);
+ vec_store_nta_partial(gt13rhs[index],gt13rhsL);
+ vec_store_nta_partial(gt22rhs[index],gt22rhsL);
+ vec_store_nta_partial(gt23rhs[index],gt23rhsL);
+ vec_store_nta_partial(gt33rhs[index],gt33rhsL);
+ vec_store_nta_partial(phirhs[index],phirhsL);
+ vec_store_nta_partial(Thetarhs[index],ThetarhsL);
+ vec_store_nta_partial(trKrhs[index],trKrhsL);
+ vec_store_nta_partial(Xt1rhs[index],Xt1rhsL);
+ vec_store_nta_partial(Xt2rhs[index],Xt2rhsL);
+ vec_store_nta_partial(Xt3rhs[index],Xt3rhsL);
+ }
+ LC_ENDLOOP3VEC(ML_CCZ4_InitRHS);
+}
+
+extern "C" void ML_CCZ4_InitRHS(CCTK_ARGUMENTS)
+{
+ DECLARE_CCTK_ARGUMENTS;
+ DECLARE_CCTK_PARAMETERS;
+
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_CCZ4_InitRHS_Body");
+ }
+
+ if (cctk_iteration % ML_CCZ4_InitRHS_calc_every != ML_CCZ4_InitRHS_calc_offset)
+ {
+ return;
+ }
+
+ const char *const groups[] = {
+ "ML_CCZ4::ML_curvrhs",
+ "ML_CCZ4::ML_dtlapserhs",
+ "ML_CCZ4::ML_dtshiftrhs",
+ "ML_CCZ4::ML_Gammarhs",
+ "ML_CCZ4::ML_lapserhs",
+ "ML_CCZ4::ML_log_confacrhs",
+ "ML_CCZ4::ML_metricrhs",
+ "ML_CCZ4::ML_shiftrhs",
+ "ML_CCZ4::ML_Thetarhs",
+ "ML_CCZ4::ML_trace_curvrhs"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_CCZ4_InitRHS", 10, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
+ GenericFD_LoopOverEverything(cctkGH, ML_CCZ4_InitRHS_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_CCZ4_InitRHS_Body");
+ }
+}
diff --git a/ML_CCZ4/src/ML_CCZ4_Minkowski.cc b/ML_CCZ4/src/ML_CCZ4_Minkowski.cc
new file mode 100644
index 0000000..77ae232
--- /dev/null
+++ b/ML_CCZ4/src/ML_CCZ4_Minkowski.cc
@@ -0,0 +1,359 @@
+/* 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 "cctk_Loop.h"
+#include "loopcontrol.h"
+#include "vectors.h"
+
+/* Define macros used in calculations */
+#define INITVALUE (42)
+#define QAD(x) (SQR(SQR(x)))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
+
+static void ML_CCZ4_Minkowski_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const imin[3], int const imax[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+{
+ DECLARE_CCTK_ARGUMENTS;
+ DECLARE_CCTK_PARAMETERS;
+
+
+ /* 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_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const t = ToReal(cctk_time);
+ CCTK_REAL_VEC const dxi = INV(dx);
+ CCTK_REAL_VEC const dyi = INV(dy);
+ CCTK_REAL_VEC const dzi = INV(dz);
+ CCTK_REAL_VEC const khalf = ToReal(0.5);
+ CCTK_REAL_VEC const kthird = ToReal(1.0/3.0);
+ CCTK_REAL_VEC const ktwothird = ToReal(2.0/3.0);
+ CCTK_REAL_VEC const kfourthird = ToReal(4.0/3.0);
+ CCTK_REAL_VEC const keightthird = ToReal(8.0/3.0);
+ CCTK_REAL_VEC const hdxi = kmul(ToReal(0.5), dxi);
+ CCTK_REAL_VEC const hdyi = kmul(ToReal(0.5), dyi);
+ CCTK_REAL_VEC const hdzi = kmul(ToReal(0.5), dzi);
+
+ /* Initialize predefined quantities */
+ CCTK_REAL_VEC const p1o1024dx = kmul(INV(dx),ToReal(0.0009765625));
+ CCTK_REAL_VEC const p1o1024dy = kmul(INV(dy),ToReal(0.0009765625));
+ CCTK_REAL_VEC const p1o1024dz = kmul(INV(dz),ToReal(0.0009765625));
+ CCTK_REAL_VEC const p1o120dx = kmul(INV(dx),ToReal(0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o120dy = kmul(INV(dy),ToReal(0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o120dz = kmul(INV(dz),ToReal(0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dx = kmul(INV(dx),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dy = kmul(INV(dy),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dz = kmul(INV(dz),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o144dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o144dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o144dydz = kmul(INV(kmul(dy,dz)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o1680dx = kmul(INV(dx),ToReal(0.000595238095238095238095238095238));
+ CCTK_REAL_VEC const p1o1680dy = kmul(INV(dy),ToReal(0.000595238095238095238095238095238));
+ CCTK_REAL_VEC const p1o1680dz = kmul(INV(dz),ToReal(0.000595238095238095238095238095238));
+ CCTK_REAL_VEC const p1o16dx = kmul(INV(dx),ToReal(0.0625));
+ CCTK_REAL_VEC const p1o16dy = kmul(INV(dy),ToReal(0.0625));
+ CCTK_REAL_VEC const p1o16dz = kmul(INV(dz),ToReal(0.0625));
+ CCTK_REAL_VEC const p1o180dx2 = kmul(INV(SQR(dx)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o180dy2 = kmul(INV(SQR(dy)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o180dz2 = kmul(INV(SQR(dz)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o24dx = kmul(INV(dx),ToReal(0.0416666666666666666666666666667));
+ CCTK_REAL_VEC const p1o24dy = kmul(INV(dy),ToReal(0.0416666666666666666666666666667));
+ CCTK_REAL_VEC const p1o24dz = kmul(INV(dz),ToReal(0.0416666666666666666666666666667));
+ CCTK_REAL_VEC const p1o256dx = kmul(INV(dx),ToReal(0.00390625));
+ CCTK_REAL_VEC const p1o256dy = kmul(INV(dy),ToReal(0.00390625));
+ CCTK_REAL_VEC const p1o256dz = kmul(INV(dz),ToReal(0.00390625));
+ CCTK_REAL_VEC const p1o2dx = kmul(INV(dx),ToReal(0.5));
+ CCTK_REAL_VEC const p1o2dy = kmul(INV(dy),ToReal(0.5));
+ CCTK_REAL_VEC const p1o2dz = kmul(INV(dz),ToReal(0.5));
+ CCTK_REAL_VEC const p1o3600dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o3600dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o3600dydz = kmul(INV(kmul(dy,dz)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o4dx = kmul(INV(dx),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(kmul(dy,dz)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dz = kmul(INV(dz),ToReal(0.25));
+ CCTK_REAL_VEC const p1o5040dx2 = kmul(INV(SQR(dx)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o5040dy2 = kmul(INV(SQR(dy)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o5040dz2 = kmul(INV(SQR(dz)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o560dx = kmul(INV(dx),ToReal(0.00178571428571428571428571428571));
+ CCTK_REAL_VEC const p1o560dy = kmul(INV(dy),ToReal(0.00178571428571428571428571428571));
+ CCTK_REAL_VEC const p1o560dz = kmul(INV(dz),ToReal(0.00178571428571428571428571428571));
+ CCTK_REAL_VEC const p1o60dx = kmul(INV(dx),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o60dy = kmul(INV(dy),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o60dz = kmul(INV(dz),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o64dx = kmul(INV(dx),ToReal(0.015625));
+ CCTK_REAL_VEC const p1o64dy = kmul(INV(dy),ToReal(0.015625));
+ CCTK_REAL_VEC const p1o64dz = kmul(INV(dz),ToReal(0.015625));
+ CCTK_REAL_VEC const p1o705600dxdy = kmul(INV(kmul(dx,dy)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(kmul(dx,dz)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(kmul(dy,dz)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1odx = INV(dx);
+ CCTK_REAL_VEC const p1odx2 = INV(SQR(dx));
+ CCTK_REAL_VEC const p1ody = INV(dy);
+ CCTK_REAL_VEC const p1ody2 = INV(SQR(dy));
+ CCTK_REAL_VEC const p1odz = INV(dz);
+ CCTK_REAL_VEC const p1odz2 = INV(SQR(dz));
+ CCTK_REAL_VEC const pm1o120dx = kmul(INV(dx),ToReal(-0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o120dy = kmul(INV(dy),ToReal(-0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o120dz = kmul(INV(dz),ToReal(-0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dx2 = kmul(INV(SQR(dx)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dy2 = kmul(INV(SQR(dy)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dz2 = kmul(INV(SQR(dz)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o2dx = kmul(INV(dx),ToReal(-0.5));
+ CCTK_REAL_VEC const pm1o2dy = kmul(INV(dy),ToReal(-0.5));
+ CCTK_REAL_VEC const pm1o2dz = kmul(INV(dz),ToReal(-0.5));
+ CCTK_REAL_VEC const pm1o4dx = kmul(INV(dx),ToReal(-0.25));
+ CCTK_REAL_VEC const pm1o4dy = kmul(INV(dy),ToReal(-0.25));
+ CCTK_REAL_VEC const pm1o4dz = kmul(INV(dz),ToReal(-0.25));
+ CCTK_REAL_VEC const pm1o60dx = kmul(INV(dx),ToReal(-0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const pm1o60dy = kmul(INV(dy),ToReal(-0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const pm1o60dz = kmul(INV(dz),ToReal(-0.0166666666666666666666666666667));
+
+ /* 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;
+
+ /* Assign local copies of arrays functions */
+
+
+
+ /* Calculate temporaries and arrays functions */
+
+ /* Copy local copies back to grid functions */
+
+ /* Loop over the grid points */
+ #pragma omp parallel
+ LC_LOOP3VEC(ML_CCZ4_Minkowski,
+ i,j,k, imin[0],imin[1],imin[2], imax[0],imax[1],imax[2],
+ cctk_lsh[0],cctk_lsh[1],cctk_lsh[2],
+ CCTK_REAL_VEC_SIZE)
+ {
+ ptrdiff_t const index = di*i + dj*j + dk*k;
+
+ /* Assign local copies of grid functions */
+
+
+
+
+ /* Include user supplied include files */
+
+ /* Precompute derivatives */
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
+ /* Calculate temporaries and grid functions */
+ CCTK_REAL_VEC phiL = IfThen(conformalMethod == 1,ToReal(1),ToReal(0));
+
+ CCTK_REAL_VEC gt11L = ToReal(1);
+
+ CCTK_REAL_VEC gt12L = ToReal(0);
+
+ CCTK_REAL_VEC gt13L = ToReal(0);
+
+ CCTK_REAL_VEC gt22L = ToReal(1);
+
+ CCTK_REAL_VEC gt23L = ToReal(0);
+
+ CCTK_REAL_VEC gt33L = ToReal(1);
+
+ CCTK_REAL_VEC trKL = ToReal(0);
+
+ CCTK_REAL_VEC At11L = ToReal(0);
+
+ CCTK_REAL_VEC At12L = ToReal(0);
+
+ CCTK_REAL_VEC At13L = ToReal(0);
+
+ CCTK_REAL_VEC At22L = ToReal(0);
+
+ CCTK_REAL_VEC At23L = ToReal(0);
+
+ CCTK_REAL_VEC At33L = ToReal(0);
+
+ CCTK_REAL_VEC Xt1L = ToReal(0);
+
+ CCTK_REAL_VEC Xt2L = ToReal(0);
+
+ CCTK_REAL_VEC Xt3L = ToReal(0);
+
+ CCTK_REAL_VEC alphaL = ToReal(1);
+
+ CCTK_REAL_VEC AL = ToReal(0);
+
+ CCTK_REAL_VEC beta1L = ToReal(0);
+
+ CCTK_REAL_VEC beta2L = ToReal(0);
+
+ CCTK_REAL_VEC beta3L = ToReal(0);
+
+ CCTK_REAL_VEC B1L = ToReal(0);
+
+ CCTK_REAL_VEC B2L = ToReal(0);
+
+ CCTK_REAL_VEC B3L = ToReal(0);
+
+ CCTK_REAL_VEC ThetaL = ToReal(0);
+
+ /* Copy local copies back to grid functions */
+ vec_store_partial_prepare(i,lc_imin,lc_imax);
+ vec_store_nta_partial(A[index],AL);
+ vec_store_nta_partial(alpha[index],alphaL);
+ vec_store_nta_partial(At11[index],At11L);
+ vec_store_nta_partial(At12[index],At12L);
+ vec_store_nta_partial(At13[index],At13L);
+ vec_store_nta_partial(At22[index],At22L);
+ vec_store_nta_partial(At23[index],At23L);
+ vec_store_nta_partial(At33[index],At33L);
+ vec_store_nta_partial(B1[index],B1L);
+ vec_store_nta_partial(B2[index],B2L);
+ vec_store_nta_partial(B3[index],B3L);
+ vec_store_nta_partial(beta1[index],beta1L);
+ vec_store_nta_partial(beta2[index],beta2L);
+ vec_store_nta_partial(beta3[index],beta3L);
+ vec_store_nta_partial(gt11[index],gt11L);
+ vec_store_nta_partial(gt12[index],gt12L);
+ vec_store_nta_partial(gt13[index],gt13L);
+ vec_store_nta_partial(gt22[index],gt22L);
+ vec_store_nta_partial(gt23[index],gt23L);
+ vec_store_nta_partial(gt33[index],gt33L);
+ vec_store_nta_partial(phi[index],phiL);
+ vec_store_nta_partial(Theta[index],ThetaL);
+ vec_store_nta_partial(trK[index],trKL);
+ vec_store_nta_partial(Xt1[index],Xt1L);
+ vec_store_nta_partial(Xt2[index],Xt2L);
+ vec_store_nta_partial(Xt3[index],Xt3L);
+ }
+ LC_ENDLOOP3VEC(ML_CCZ4_Minkowski);
+}
+
+extern "C" void ML_CCZ4_Minkowski(CCTK_ARGUMENTS)
+{
+ DECLARE_CCTK_ARGUMENTS;
+ DECLARE_CCTK_PARAMETERS;
+
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_CCZ4_Minkowski_Body");
+ }
+
+ if (cctk_iteration % ML_CCZ4_Minkowski_calc_every != ML_CCZ4_Minkowski_calc_offset)
+ {
+ return;
+ }
+
+ const char *const groups[] = {
+ "ML_CCZ4::ML_curv",
+ "ML_CCZ4::ML_dtlapse",
+ "ML_CCZ4::ML_dtshift",
+ "ML_CCZ4::ML_Gamma",
+ "ML_CCZ4::ML_lapse",
+ "ML_CCZ4::ML_log_confac",
+ "ML_CCZ4::ML_metric",
+ "ML_CCZ4::ML_shift",
+ "ML_CCZ4::ML_Theta",
+ "ML_CCZ4::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_CCZ4_Minkowski", 10, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
+ GenericFD_LoopOverEverything(cctkGH, ML_CCZ4_Minkowski_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_CCZ4_Minkowski_Body");
+ }
+}
diff --git a/ML_CCZ4/src/ML_CCZ4_RHS1.cc b/ML_CCZ4/src/ML_CCZ4_RHS1.cc
new file mode 100644
index 0000000..7a5d675
--- /dev/null
+++ b/ML_CCZ4/src/ML_CCZ4_RHS1.cc
@@ -0,0 +1,2382 @@
+/* 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 "cctk_Loop.h"
+#include "loopcontrol.h"
+#include "vectors.h"
+
+/* Define macros used in calculations */
+#define INITVALUE (42)
+#define QAD(x) (SQR(SQR(x)))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
+
+extern "C" void ML_CCZ4_RHS1_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_CCZ4::ML_dtlapserhs","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_dtlapserhs.");
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_CCZ4::ML_dtshiftrhs","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_dtshiftrhs.");
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_CCZ4::ML_Gammarhs","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_Gammarhs.");
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_CCZ4::ML_lapserhs","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_lapserhs.");
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_CCZ4::ML_log_confacrhs","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_log_confacrhs.");
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_CCZ4::ML_metricrhs","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_metricrhs.");
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_CCZ4::ML_shiftrhs","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_shiftrhs.");
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_CCZ4::ML_Thetarhs","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_Thetarhs.");
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_CCZ4::ML_trace_curvrhs","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_trace_curvrhs.");
+ return;
+}
+
+static void ML_CCZ4_RHS1_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const imin[3], int const imax[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+{
+ DECLARE_CCTK_ARGUMENTS;
+ DECLARE_CCTK_PARAMETERS;
+
+
+ /* 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_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const t = ToReal(cctk_time);
+ CCTK_REAL_VEC const dxi = INV(dx);
+ CCTK_REAL_VEC const dyi = INV(dy);
+ CCTK_REAL_VEC const dzi = INV(dz);
+ CCTK_REAL_VEC const khalf = ToReal(0.5);
+ CCTK_REAL_VEC const kthird = ToReal(1.0/3.0);
+ CCTK_REAL_VEC const ktwothird = ToReal(2.0/3.0);
+ CCTK_REAL_VEC const kfourthird = ToReal(4.0/3.0);
+ CCTK_REAL_VEC const keightthird = ToReal(8.0/3.0);
+ CCTK_REAL_VEC const hdxi = kmul(ToReal(0.5), dxi);
+ CCTK_REAL_VEC const hdyi = kmul(ToReal(0.5), dyi);
+ CCTK_REAL_VEC const hdzi = kmul(ToReal(0.5), dzi);
+
+ /* Initialize predefined quantities */
+ CCTK_REAL_VEC const p1o1024dx = kmul(INV(dx),ToReal(0.0009765625));
+ CCTK_REAL_VEC const p1o1024dy = kmul(INV(dy),ToReal(0.0009765625));
+ CCTK_REAL_VEC const p1o1024dz = kmul(INV(dz),ToReal(0.0009765625));
+ CCTK_REAL_VEC const p1o120dx = kmul(INV(dx),ToReal(0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o120dy = kmul(INV(dy),ToReal(0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o120dz = kmul(INV(dz),ToReal(0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dx = kmul(INV(dx),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dy = kmul(INV(dy),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dz = kmul(INV(dz),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o144dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o144dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o144dydz = kmul(INV(kmul(dy,dz)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o1680dx = kmul(INV(dx),ToReal(0.000595238095238095238095238095238));
+ CCTK_REAL_VEC const p1o1680dy = kmul(INV(dy),ToReal(0.000595238095238095238095238095238));
+ CCTK_REAL_VEC const p1o1680dz = kmul(INV(dz),ToReal(0.000595238095238095238095238095238));
+ CCTK_REAL_VEC const p1o16dx = kmul(INV(dx),ToReal(0.0625));
+ CCTK_REAL_VEC const p1o16dy = kmul(INV(dy),ToReal(0.0625));
+ CCTK_REAL_VEC const p1o16dz = kmul(INV(dz),ToReal(0.0625));
+ CCTK_REAL_VEC const p1o180dx2 = kmul(INV(SQR(dx)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o180dy2 = kmul(INV(SQR(dy)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o180dz2 = kmul(INV(SQR(dz)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o24dx = kmul(INV(dx),ToReal(0.0416666666666666666666666666667));
+ CCTK_REAL_VEC const p1o24dy = kmul(INV(dy),ToReal(0.0416666666666666666666666666667));
+ CCTK_REAL_VEC const p1o24dz = kmul(INV(dz),ToReal(0.0416666666666666666666666666667));
+ CCTK_REAL_VEC const p1o256dx = kmul(INV(dx),ToReal(0.00390625));
+ CCTK_REAL_VEC const p1o256dy = kmul(INV(dy),ToReal(0.00390625));
+ CCTK_REAL_VEC const p1o256dz = kmul(INV(dz),ToReal(0.00390625));
+ CCTK_REAL_VEC const p1o2dx = kmul(INV(dx),ToReal(0.5));
+ CCTK_REAL_VEC const p1o2dy = kmul(INV(dy),ToReal(0.5));
+ CCTK_REAL_VEC const p1o2dz = kmul(INV(dz),ToReal(0.5));
+ CCTK_REAL_VEC const p1o3600dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o3600dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o3600dydz = kmul(INV(kmul(dy,dz)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o4dx = kmul(INV(dx),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(kmul(dy,dz)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dz = kmul(INV(dz),ToReal(0.25));
+ CCTK_REAL_VEC const p1o5040dx2 = kmul(INV(SQR(dx)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o5040dy2 = kmul(INV(SQR(dy)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o5040dz2 = kmul(INV(SQR(dz)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o560dx = kmul(INV(dx),ToReal(0.00178571428571428571428571428571));
+ CCTK_REAL_VEC const p1o560dy = kmul(INV(dy),ToReal(0.00178571428571428571428571428571));
+ CCTK_REAL_VEC const p1o560dz = kmul(INV(dz),ToReal(0.00178571428571428571428571428571));
+ CCTK_REAL_VEC const p1o60dx = kmul(INV(dx),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o60dy = kmul(INV(dy),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o60dz = kmul(INV(dz),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o64dx = kmul(INV(dx),ToReal(0.015625));
+ CCTK_REAL_VEC const p1o64dy = kmul(INV(dy),ToReal(0.015625));
+ CCTK_REAL_VEC const p1o64dz = kmul(INV(dz),ToReal(0.015625));
+ CCTK_REAL_VEC const p1o705600dxdy = kmul(INV(kmul(dx,dy)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(kmul(dx,dz)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(kmul(dy,dz)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1odx = INV(dx);
+ CCTK_REAL_VEC const p1odx2 = INV(SQR(dx));
+ CCTK_REAL_VEC const p1ody = INV(dy);
+ CCTK_REAL_VEC const p1ody2 = INV(SQR(dy));
+ CCTK_REAL_VEC const p1odz = INV(dz);
+ CCTK_REAL_VEC const p1odz2 = INV(SQR(dz));
+ CCTK_REAL_VEC const pm1o120dx = kmul(INV(dx),ToReal(-0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o120dy = kmul(INV(dy),ToReal(-0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o120dz = kmul(INV(dz),ToReal(-0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dx2 = kmul(INV(SQR(dx)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dy2 = kmul(INV(SQR(dy)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dz2 = kmul(INV(SQR(dz)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o2dx = kmul(INV(dx),ToReal(-0.5));
+ CCTK_REAL_VEC const pm1o2dy = kmul(INV(dy),ToReal(-0.5));
+ CCTK_REAL_VEC const pm1o2dz = kmul(INV(dz),ToReal(-0.5));
+ CCTK_REAL_VEC const pm1o4dx = kmul(INV(dx),ToReal(-0.25));
+ CCTK_REAL_VEC const pm1o4dy = kmul(INV(dy),ToReal(-0.25));
+ CCTK_REAL_VEC const pm1o4dz = kmul(INV(dz),ToReal(-0.25));
+ CCTK_REAL_VEC const pm1o60dx = kmul(INV(dx),ToReal(-0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const pm1o60dy = kmul(INV(dy),ToReal(-0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const pm1o60dz = kmul(INV(dz),ToReal(-0.0166666666666666666666666666667));
+
+ /* 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;
+
+ /* Assign local copies of arrays functions */
+
+
+
+ /* Calculate temporaries and arrays functions */
+
+ /* Copy local copies back to grid functions */
+
+ /* Loop over the grid points */
+ #pragma omp parallel
+ LC_LOOP3VEC(ML_CCZ4_RHS1,
+ i,j,k, imin[0],imin[1],imin[2], imax[0],imax[1],imax[2],
+ cctk_lsh[0],cctk_lsh[1],cctk_lsh[2],
+ CCTK_REAL_VEC_SIZE)
+ {
+ ptrdiff_t const index = di*i + dj*j + dk*k;
+
+ /* Assign local copies of grid functions */
+
+ CCTK_REAL_VEC AL = vec_load(A[index]);
+ CCTK_REAL_VEC alphaL = vec_load(alpha[index]);
+ CCTK_REAL_VEC At11L = vec_load(At11[index]);
+ CCTK_REAL_VEC At12L = vec_load(At12[index]);
+ CCTK_REAL_VEC At13L = vec_load(At13[index]);
+ CCTK_REAL_VEC At22L = vec_load(At22[index]);
+ CCTK_REAL_VEC At23L = vec_load(At23[index]);
+ CCTK_REAL_VEC At33L = vec_load(At33[index]);
+ CCTK_REAL_VEC B1L = vec_load(B1[index]);
+ CCTK_REAL_VEC B2L = vec_load(B2[index]);
+ CCTK_REAL_VEC B3L = vec_load(B3[index]);
+ CCTK_REAL_VEC beta1L = vec_load(beta1[index]);
+ CCTK_REAL_VEC beta2L = vec_load(beta2[index]);
+ CCTK_REAL_VEC beta3L = vec_load(beta3[index]);
+ CCTK_REAL_VEC gt11L = vec_load(gt11[index]);
+ CCTK_REAL_VEC gt12L = vec_load(gt12[index]);
+ CCTK_REAL_VEC gt13L = vec_load(gt13[index]);
+ CCTK_REAL_VEC gt22L = vec_load(gt22[index]);
+ CCTK_REAL_VEC gt23L = vec_load(gt23[index]);
+ CCTK_REAL_VEC gt33L = vec_load(gt33[index]);
+ CCTK_REAL_VEC phiL = vec_load(phi[index]);
+ CCTK_REAL_VEC rL = vec_load(r[index]);
+ CCTK_REAL_VEC ThetaL = vec_load(Theta[index]);
+ CCTK_REAL_VEC trKL = vec_load(trK[index]);
+ CCTK_REAL_VEC Xt1L = vec_load(Xt1[index]);
+ CCTK_REAL_VEC Xt2L = vec_load(Xt2[index]);
+ CCTK_REAL_VEC Xt3L = vec_load(Xt3[index]);
+
+ CCTK_REAL_VEC eTttL, eTtxL, eTtyL, eTtzL, eTxxL, eTxyL, eTxzL, eTyyL, eTyzL, eTzzL;
+
+ if (*stress_energy_state)
+ {
+ eTttL = vec_load(eTtt[index]);
+ eTtxL = vec_load(eTtx[index]);
+ eTtyL = vec_load(eTty[index]);
+ eTtzL = vec_load(eTtz[index]);
+ eTxxL = vec_load(eTxx[index]);
+ eTxyL = vec_load(eTxy[index]);
+ eTxzL = vec_load(eTxz[index]);
+ eTyyL = vec_load(eTyy[index]);
+ eTyzL = vec_load(eTyz[index]);
+ eTzzL = vec_load(eTzz[index]);
+ }
+ else
+ {
+ eTttL = ToReal(0.0);
+ eTtxL = ToReal(0.0);
+ eTtyL = ToReal(0.0);
+ eTtzL = ToReal(0.0);
+ eTxxL = ToReal(0.0);
+ eTxyL = ToReal(0.0);
+ eTxzL = ToReal(0.0);
+ eTyyL = ToReal(0.0);
+ eTyzL = ToReal(0.0);
+ eTzzL = ToReal(0.0);
+ }
+
+ CCTK_REAL_VEC dJ111L, dJ112L, dJ113L, dJ122L, dJ123L, dJ133L, dJ211L, dJ212L, dJ213L, dJ222L, dJ223L, dJ233L, dJ311L, dJ312L, dJ313L, dJ322L, dJ323L, dJ333L, J11L, J12L, J13L, J21L, J22L, J23L, J31L, J32L, J33L;
+
+ if (use_jacobian)
+ {
+ dJ111L = vec_load(dJ111[index]);
+ dJ112L = vec_load(dJ112[index]);
+ dJ113L = vec_load(dJ113[index]);
+ dJ122L = vec_load(dJ122[index]);
+ dJ123L = vec_load(dJ123[index]);
+ dJ133L = vec_load(dJ133[index]);
+ dJ211L = vec_load(dJ211[index]);
+ dJ212L = vec_load(dJ212[index]);
+ dJ213L = vec_load(dJ213[index]);
+ dJ222L = vec_load(dJ222[index]);
+ dJ223L = vec_load(dJ223[index]);
+ dJ233L = vec_load(dJ233[index]);
+ dJ311L = vec_load(dJ311[index]);
+ dJ312L = vec_load(dJ312[index]);
+ dJ313L = vec_load(dJ313[index]);
+ dJ322L = vec_load(dJ322[index]);
+ dJ323L = vec_load(dJ323[index]);
+ dJ333L = vec_load(dJ333[index]);
+ J11L = vec_load(J11[index]);
+ J12L = vec_load(J12[index]);
+ J13L = vec_load(J13[index]);
+ J21L = vec_load(J21[index]);
+ J22L = vec_load(J22[index]);
+ J23L = vec_load(J23[index]);
+ J31L = vec_load(J31[index]);
+ J32L = vec_load(J32[index]);
+ J33L = vec_load(J33[index]);
+ }
+
+ /* Include user supplied include files */
+
+ /* Precompute derivatives */
+ CCTK_REAL_VEC PDstandardNth1alpha;
+ CCTK_REAL_VEC PDstandardNth2alpha;
+ CCTK_REAL_VEC PDstandardNth3alpha;
+ CCTK_REAL_VEC PDstandardNth11alpha;
+ CCTK_REAL_VEC PDstandardNth22alpha;
+ CCTK_REAL_VEC PDstandardNth33alpha;
+ CCTK_REAL_VEC PDstandardNth12alpha;
+ CCTK_REAL_VEC PDstandardNth13alpha;
+ CCTK_REAL_VEC PDstandardNth23alpha;
+ CCTK_REAL_VEC PDstandardNth1beta1;
+ CCTK_REAL_VEC PDstandardNth2beta1;
+ CCTK_REAL_VEC PDstandardNth3beta1;
+ CCTK_REAL_VEC PDstandardNth11beta1;
+ CCTK_REAL_VEC PDstandardNth22beta1;
+ CCTK_REAL_VEC PDstandardNth33beta1;
+ CCTK_REAL_VEC PDstandardNth12beta1;
+ CCTK_REAL_VEC PDstandardNth13beta1;
+ CCTK_REAL_VEC PDstandardNth23beta1;
+ CCTK_REAL_VEC PDstandardNth1beta2;
+ CCTK_REAL_VEC PDstandardNth2beta2;
+ CCTK_REAL_VEC PDstandardNth3beta2;
+ CCTK_REAL_VEC PDstandardNth11beta2;
+ CCTK_REAL_VEC PDstandardNth22beta2;
+ CCTK_REAL_VEC PDstandardNth33beta2;
+ CCTK_REAL_VEC PDstandardNth12beta2;
+ CCTK_REAL_VEC PDstandardNth13beta2;
+ CCTK_REAL_VEC PDstandardNth23beta2;
+ CCTK_REAL_VEC PDstandardNth1beta3;
+ CCTK_REAL_VEC PDstandardNth2beta3;
+ CCTK_REAL_VEC PDstandardNth3beta3;
+ CCTK_REAL_VEC PDstandardNth11beta3;
+ CCTK_REAL_VEC PDstandardNth22beta3;
+ CCTK_REAL_VEC PDstandardNth33beta3;
+ CCTK_REAL_VEC PDstandardNth12beta3;
+ CCTK_REAL_VEC PDstandardNth13beta3;
+ CCTK_REAL_VEC PDstandardNth23beta3;
+ CCTK_REAL_VEC PDstandardNth1gt11;
+ CCTK_REAL_VEC PDstandardNth2gt11;
+ CCTK_REAL_VEC PDstandardNth3gt11;
+ CCTK_REAL_VEC PDstandardNth11gt11;
+ CCTK_REAL_VEC PDstandardNth22gt11;
+ CCTK_REAL_VEC PDstandardNth33gt11;
+ CCTK_REAL_VEC PDstandardNth12gt11;
+ CCTK_REAL_VEC PDstandardNth13gt11;
+ CCTK_REAL_VEC PDstandardNth23gt11;
+ CCTK_REAL_VEC PDstandardNth1gt12;
+ CCTK_REAL_VEC PDstandardNth2gt12;
+ CCTK_REAL_VEC PDstandardNth3gt12;
+ CCTK_REAL_VEC PDstandardNth11gt12;
+ CCTK_REAL_VEC PDstandardNth22gt12;
+ CCTK_REAL_VEC PDstandardNth33gt12;
+ CCTK_REAL_VEC PDstandardNth12gt12;
+ CCTK_REAL_VEC PDstandardNth13gt12;
+ CCTK_REAL_VEC PDstandardNth23gt12;
+ CCTK_REAL_VEC PDstandardNth1gt13;
+ CCTK_REAL_VEC PDstandardNth2gt13;
+ CCTK_REAL_VEC PDstandardNth3gt13;
+ CCTK_REAL_VEC PDstandardNth11gt13;
+ CCTK_REAL_VEC PDstandardNth22gt13;
+ CCTK_REAL_VEC PDstandardNth33gt13;
+ CCTK_REAL_VEC PDstandardNth12gt13;
+ CCTK_REAL_VEC PDstandardNth13gt13;
+ CCTK_REAL_VEC PDstandardNth23gt13;
+ CCTK_REAL_VEC PDstandardNth1gt22;
+ CCTK_REAL_VEC PDstandardNth2gt22;
+ CCTK_REAL_VEC PDstandardNth3gt22;
+ CCTK_REAL_VEC PDstandardNth11gt22;
+ CCTK_REAL_VEC PDstandardNth22gt22;
+ CCTK_REAL_VEC PDstandardNth33gt22;
+ CCTK_REAL_VEC PDstandardNth12gt22;
+ CCTK_REAL_VEC PDstandardNth13gt22;
+ CCTK_REAL_VEC PDstandardNth23gt22;
+ CCTK_REAL_VEC PDstandardNth1gt23;
+ CCTK_REAL_VEC PDstandardNth2gt23;
+ CCTK_REAL_VEC PDstandardNth3gt23;
+ CCTK_REAL_VEC PDstandardNth11gt23;
+ CCTK_REAL_VEC PDstandardNth22gt23;
+ CCTK_REAL_VEC PDstandardNth33gt23;
+ CCTK_REAL_VEC PDstandardNth12gt23;
+ CCTK_REAL_VEC PDstandardNth13gt23;
+ CCTK_REAL_VEC PDstandardNth23gt23;
+ CCTK_REAL_VEC PDstandardNth1gt33;
+ CCTK_REAL_VEC PDstandardNth2gt33;
+ CCTK_REAL_VEC PDstandardNth3gt33;
+ CCTK_REAL_VEC PDstandardNth11gt33;
+ CCTK_REAL_VEC PDstandardNth22gt33;
+ CCTK_REAL_VEC PDstandardNth33gt33;
+ CCTK_REAL_VEC PDstandardNth12gt33;
+ CCTK_REAL_VEC PDstandardNth13gt33;
+ CCTK_REAL_VEC PDstandardNth23gt33;
+ CCTK_REAL_VEC PDstandardNth1phi;
+ CCTK_REAL_VEC PDstandardNth2phi;
+ CCTK_REAL_VEC PDstandardNth3phi;
+ CCTK_REAL_VEC PDstandardNth11phi;
+ CCTK_REAL_VEC PDstandardNth22phi;
+ CCTK_REAL_VEC PDstandardNth33phi;
+ CCTK_REAL_VEC PDstandardNth12phi;
+ CCTK_REAL_VEC PDstandardNth13phi;
+ CCTK_REAL_VEC PDstandardNth23phi;
+ CCTK_REAL_VEC PDstandardNth1Theta;
+ CCTK_REAL_VEC PDstandardNth2Theta;
+ CCTK_REAL_VEC PDstandardNth3Theta;
+ CCTK_REAL_VEC PDstandardNth1trK;
+ CCTK_REAL_VEC PDstandardNth2trK;
+ CCTK_REAL_VEC PDstandardNth3trK;
+ CCTK_REAL_VEC PDstandardNth1Xt1;
+ CCTK_REAL_VEC PDstandardNth2Xt1;
+ CCTK_REAL_VEC PDstandardNth3Xt1;
+ CCTK_REAL_VEC PDstandardNth1Xt2;
+ CCTK_REAL_VEC PDstandardNth2Xt2;
+ CCTK_REAL_VEC PDstandardNth3Xt2;
+ CCTK_REAL_VEC PDstandardNth1Xt3;
+ CCTK_REAL_VEC PDstandardNth2Xt3;
+ CCTK_REAL_VEC PDstandardNth3Xt3;
+
+ switch(fdOrder)
+ {
+ case 2:
+ PDstandardNth1alpha = PDstandardNthfdOrder21(&alpha[index]);
+ PDstandardNth2alpha = PDstandardNthfdOrder22(&alpha[index]);
+ PDstandardNth3alpha = PDstandardNthfdOrder23(&alpha[index]);
+ PDstandardNth11alpha = PDstandardNthfdOrder211(&alpha[index]);
+ PDstandardNth22alpha = PDstandardNthfdOrder222(&alpha[index]);
+ PDstandardNth33alpha = PDstandardNthfdOrder233(&alpha[index]);
+ PDstandardNth12alpha = PDstandardNthfdOrder212(&alpha[index]);
+ PDstandardNth13alpha = PDstandardNthfdOrder213(&alpha[index]);
+ PDstandardNth23alpha = PDstandardNthfdOrder223(&alpha[index]);
+ PDstandardNth1beta1 = PDstandardNthfdOrder21(&beta1[index]);
+ PDstandardNth2beta1 = PDstandardNthfdOrder22(&beta1[index]);
+ PDstandardNth3beta1 = PDstandardNthfdOrder23(&beta1[index]);
+ PDstandardNth11beta1 = PDstandardNthfdOrder211(&beta1[index]);
+ PDstandardNth22beta1 = PDstandardNthfdOrder222(&beta1[index]);
+ PDstandardNth33beta1 = PDstandardNthfdOrder233(&beta1[index]);
+ PDstandardNth12beta1 = PDstandardNthfdOrder212(&beta1[index]);
+ PDstandardNth13beta1 = PDstandardNthfdOrder213(&beta1[index]);
+ PDstandardNth23beta1 = PDstandardNthfdOrder223(&beta1[index]);
+ PDstandardNth1beta2 = PDstandardNthfdOrder21(&beta2[index]);
+ PDstandardNth2beta2 = PDstandardNthfdOrder22(&beta2[index]);
+ PDstandardNth3beta2 = PDstandardNthfdOrder23(&beta2[index]);
+ PDstandardNth11beta2 = PDstandardNthfdOrder211(&beta2[index]);
+ PDstandardNth22beta2 = PDstandardNthfdOrder222(&beta2[index]);
+ PDstandardNth33beta2 = PDstandardNthfdOrder233(&beta2[index]);
+ PDstandardNth12beta2 = PDstandardNthfdOrder212(&beta2[index]);
+ PDstandardNth13beta2 = PDstandardNthfdOrder213(&beta2[index]);
+ PDstandardNth23beta2 = PDstandardNthfdOrder223(&beta2[index]);
+ PDstandardNth1beta3 = PDstandardNthfdOrder21(&beta3[index]);
+ PDstandardNth2beta3 = PDstandardNthfdOrder22(&beta3[index]);
+ PDstandardNth3beta3 = PDstandardNthfdOrder23(&beta3[index]);
+ PDstandardNth11beta3 = PDstandardNthfdOrder211(&beta3[index]);
+ PDstandardNth22beta3 = PDstandardNthfdOrder222(&beta3[index]);
+ PDstandardNth33beta3 = PDstandardNthfdOrder233(&beta3[index]);
+ PDstandardNth12beta3 = PDstandardNthfdOrder212(&beta3[index]);
+ PDstandardNth13beta3 = PDstandardNthfdOrder213(&beta3[index]);
+ PDstandardNth23beta3 = PDstandardNthfdOrder223(&beta3[index]);
+ PDstandardNth1gt11 = PDstandardNthfdOrder21(&gt11[index]);
+ PDstandardNth2gt11 = PDstandardNthfdOrder22(&gt11[index]);
+ PDstandardNth3gt11 = PDstandardNthfdOrder23(&gt11[index]);
+ PDstandardNth11gt11 = PDstandardNthfdOrder211(&gt11[index]);
+ PDstandardNth22gt11 = PDstandardNthfdOrder222(&gt11[index]);
+ PDstandardNth33gt11 = PDstandardNthfdOrder233(&gt11[index]);
+ PDstandardNth12gt11 = PDstandardNthfdOrder212(&gt11[index]);
+ PDstandardNth13gt11 = PDstandardNthfdOrder213(&gt11[index]);
+ PDstandardNth23gt11 = PDstandardNthfdOrder223(&gt11[index]);
+ PDstandardNth1gt12 = PDstandardNthfdOrder21(&gt12[index]);
+ PDstandardNth2gt12 = PDstandardNthfdOrder22(&gt12[index]);
+ PDstandardNth3gt12 = PDstandardNthfdOrder23(&gt12[index]);
+ PDstandardNth11gt12 = PDstandardNthfdOrder211(&gt12[index]);
+ PDstandardNth22gt12 = PDstandardNthfdOrder222(&gt12[index]);
+ PDstandardNth33gt12 = PDstandardNthfdOrder233(&gt12[index]);
+ PDstandardNth12gt12 = PDstandardNthfdOrder212(&gt12[index]);
+ PDstandardNth13gt12 = PDstandardNthfdOrder213(&gt12[index]);
+ PDstandardNth23gt12 = PDstandardNthfdOrder223(&gt12[index]);
+ PDstandardNth1gt13 = PDstandardNthfdOrder21(&gt13[index]);
+ PDstandardNth2gt13 = PDstandardNthfdOrder22(&gt13[index]);
+ PDstandardNth3gt13 = PDstandardNthfdOrder23(&gt13[index]);
+ PDstandardNth11gt13 = PDstandardNthfdOrder211(&gt13[index]);
+ PDstandardNth22gt13 = PDstandardNthfdOrder222(&gt13[index]);
+ PDstandardNth33gt13 = PDstandardNthfdOrder233(&gt13[index]);
+ PDstandardNth12gt13 = PDstandardNthfdOrder212(&gt13[index]);
+ PDstandardNth13gt13 = PDstandardNthfdOrder213(&gt13[index]);
+ PDstandardNth23gt13 = PDstandardNthfdOrder223(&gt13[index]);
+ PDstandardNth1gt22 = PDstandardNthfdOrder21(&gt22[index]);
+ PDstandardNth2gt22 = PDstandardNthfdOrder22(&gt22[index]);
+ PDstandardNth3gt22 = PDstandardNthfdOrder23(&gt22[index]);
+ PDstandardNth11gt22 = PDstandardNthfdOrder211(&gt22[index]);
+ PDstandardNth22gt22 = PDstandardNthfdOrder222(&gt22[index]);
+ PDstandardNth33gt22 = PDstandardNthfdOrder233(&gt22[index]);
+ PDstandardNth12gt22 = PDstandardNthfdOrder212(&gt22[index]);
+ PDstandardNth13gt22 = PDstandardNthfdOrder213(&gt22[index]);
+ PDstandardNth23gt22 = PDstandardNthfdOrder223(&gt22[index]);
+ PDstandardNth1gt23 = PDstandardNthfdOrder21(&gt23[index]);
+ PDstandardNth2gt23 = PDstandardNthfdOrder22(&gt23[index]);
+ PDstandardNth3gt23 = PDstandardNthfdOrder23(&gt23[index]);
+ PDstandardNth11gt23 = PDstandardNthfdOrder211(&gt23[index]);
+ PDstandardNth22gt23 = PDstandardNthfdOrder222(&gt23[index]);
+ PDstandardNth33gt23 = PDstandardNthfdOrder233(&gt23[index]);
+ PDstandardNth12gt23 = PDstandardNthfdOrder212(&gt23[index]);
+ PDstandardNth13gt23 = PDstandardNthfdOrder213(&gt23[index]);
+ PDstandardNth23gt23 = PDstandardNthfdOrder223(&gt23[index]);
+ PDstandardNth1gt33 = PDstandardNthfdOrder21(&gt33[index]);
+ PDstandardNth2gt33 = PDstandardNthfdOrder22(&gt33[index]);
+ PDstandardNth3gt33 = PDstandardNthfdOrder23(&gt33[index]);
+ PDstandardNth11gt33 = PDstandardNthfdOrder211(&gt33[index]);
+ PDstandardNth22gt33 = PDstandardNthfdOrder222(&gt33[index]);
+ PDstandardNth33gt33 = PDstandardNthfdOrder233(&gt33[index]);
+ PDstandardNth12gt33 = PDstandardNthfdOrder212(&gt33[index]);
+ PDstandardNth13gt33 = PDstandardNthfdOrder213(&gt33[index]);
+ PDstandardNth23gt33 = PDstandardNthfdOrder223(&gt33[index]);
+ PDstandardNth1phi = PDstandardNthfdOrder21(&phi[index]);
+ PDstandardNth2phi = PDstandardNthfdOrder22(&phi[index]);
+ PDstandardNth3phi = PDstandardNthfdOrder23(&phi[index]);
+ PDstandardNth11phi = PDstandardNthfdOrder211(&phi[index]);
+ PDstandardNth22phi = PDstandardNthfdOrder222(&phi[index]);
+ PDstandardNth33phi = PDstandardNthfdOrder233(&phi[index]);
+ PDstandardNth12phi = PDstandardNthfdOrder212(&phi[index]);
+ PDstandardNth13phi = PDstandardNthfdOrder213(&phi[index]);
+ PDstandardNth23phi = PDstandardNthfdOrder223(&phi[index]);
+ PDstandardNth1Theta = PDstandardNthfdOrder21(&Theta[index]);
+ PDstandardNth2Theta = PDstandardNthfdOrder22(&Theta[index]);
+ PDstandardNth3Theta = PDstandardNthfdOrder23(&Theta[index]);
+ PDstandardNth1trK = PDstandardNthfdOrder21(&trK[index]);
+ PDstandardNth2trK = PDstandardNthfdOrder22(&trK[index]);
+ PDstandardNth3trK = PDstandardNthfdOrder23(&trK[index]);
+ PDstandardNth1Xt1 = PDstandardNthfdOrder21(&Xt1[index]);
+ PDstandardNth2Xt1 = PDstandardNthfdOrder22(&Xt1[index]);
+ PDstandardNth3Xt1 = PDstandardNthfdOrder23(&Xt1[index]);
+ PDstandardNth1Xt2 = PDstandardNthfdOrder21(&Xt2[index]);
+ PDstandardNth2Xt2 = PDstandardNthfdOrder22(&Xt2[index]);
+ PDstandardNth3Xt2 = PDstandardNthfdOrder23(&Xt2[index]);
+ PDstandardNth1Xt3 = PDstandardNthfdOrder21(&Xt3[index]);
+ PDstandardNth2Xt3 = PDstandardNthfdOrder22(&Xt3[index]);
+ PDstandardNth3Xt3 = PDstandardNthfdOrder23(&Xt3[index]);
+ break;
+
+ case 4:
+ PDstandardNth1alpha = PDstandardNthfdOrder41(&alpha[index]);
+ PDstandardNth2alpha = PDstandardNthfdOrder42(&alpha[index]);
+ PDstandardNth3alpha = PDstandardNthfdOrder43(&alpha[index]);
+ PDstandardNth11alpha = PDstandardNthfdOrder411(&alpha[index]);
+ PDstandardNth22alpha = PDstandardNthfdOrder422(&alpha[index]);
+ PDstandardNth33alpha = PDstandardNthfdOrder433(&alpha[index]);
+ PDstandardNth12alpha = PDstandardNthfdOrder412(&alpha[index]);
+ PDstandardNth13alpha = PDstandardNthfdOrder413(&alpha[index]);
+ PDstandardNth23alpha = PDstandardNthfdOrder423(&alpha[index]);
+ PDstandardNth1beta1 = PDstandardNthfdOrder41(&beta1[index]);
+ PDstandardNth2beta1 = PDstandardNthfdOrder42(&beta1[index]);
+ PDstandardNth3beta1 = PDstandardNthfdOrder43(&beta1[index]);
+ PDstandardNth11beta1 = PDstandardNthfdOrder411(&beta1[index]);
+ PDstandardNth22beta1 = PDstandardNthfdOrder422(&beta1[index]);
+ PDstandardNth33beta1 = PDstandardNthfdOrder433(&beta1[index]);
+ PDstandardNth12beta1 = PDstandardNthfdOrder412(&beta1[index]);
+ PDstandardNth13beta1 = PDstandardNthfdOrder413(&beta1[index]);
+ PDstandardNth23beta1 = PDstandardNthfdOrder423(&beta1[index]);
+ PDstandardNth1beta2 = PDstandardNthfdOrder41(&beta2[index]);
+ PDstandardNth2beta2 = PDstandardNthfdOrder42(&beta2[index]);
+ PDstandardNth3beta2 = PDstandardNthfdOrder43(&beta2[index]);
+ PDstandardNth11beta2 = PDstandardNthfdOrder411(&beta2[index]);
+ PDstandardNth22beta2 = PDstandardNthfdOrder422(&beta2[index]);
+ PDstandardNth33beta2 = PDstandardNthfdOrder433(&beta2[index]);
+ PDstandardNth12beta2 = PDstandardNthfdOrder412(&beta2[index]);
+ PDstandardNth13beta2 = PDstandardNthfdOrder413(&beta2[index]);
+ PDstandardNth23beta2 = PDstandardNthfdOrder423(&beta2[index]);
+ PDstandardNth1beta3 = PDstandardNthfdOrder41(&beta3[index]);
+ PDstandardNth2beta3 = PDstandardNthfdOrder42(&beta3[index]);
+ PDstandardNth3beta3 = PDstandardNthfdOrder43(&beta3[index]);
+ PDstandardNth11beta3 = PDstandardNthfdOrder411(&beta3[index]);
+ PDstandardNth22beta3 = PDstandardNthfdOrder422(&beta3[index]);
+ PDstandardNth33beta3 = PDstandardNthfdOrder433(&beta3[index]);
+ PDstandardNth12beta3 = PDstandardNthfdOrder412(&beta3[index]);
+ PDstandardNth13beta3 = PDstandardNthfdOrder413(&beta3[index]);
+ PDstandardNth23beta3 = PDstandardNthfdOrder423(&beta3[index]);
+ PDstandardNth1gt11 = PDstandardNthfdOrder41(&gt11[index]);
+ PDstandardNth2gt11 = PDstandardNthfdOrder42(&gt11[index]);
+ PDstandardNth3gt11 = PDstandardNthfdOrder43(&gt11[index]);
+ PDstandardNth11gt11 = PDstandardNthfdOrder411(&gt11[index]);
+ PDstandardNth22gt11 = PDstandardNthfdOrder422(&gt11[index]);
+ PDstandardNth33gt11 = PDstandardNthfdOrder433(&gt11[index]);
+ PDstandardNth12gt11 = PDstandardNthfdOrder412(&gt11[index]);
+ PDstandardNth13gt11 = PDstandardNthfdOrder413(&gt11[index]);
+ PDstandardNth23gt11 = PDstandardNthfdOrder423(&gt11[index]);
+ PDstandardNth1gt12 = PDstandardNthfdOrder41(&gt12[index]);
+ PDstandardNth2gt12 = PDstandardNthfdOrder42(&gt12[index]);
+ PDstandardNth3gt12 = PDstandardNthfdOrder43(&gt12[index]);
+ PDstandardNth11gt12 = PDstandardNthfdOrder411(&gt12[index]);
+ PDstandardNth22gt12 = PDstandardNthfdOrder422(&gt12[index]);
+ PDstandardNth33gt12 = PDstandardNthfdOrder433(&gt12[index]);
+ PDstandardNth12gt12 = PDstandardNthfdOrder412(&gt12[index]);
+ PDstandardNth13gt12 = PDstandardNthfdOrder413(&gt12[index]);
+ PDstandardNth23gt12 = PDstandardNthfdOrder423(&gt12[index]);
+ PDstandardNth1gt13 = PDstandardNthfdOrder41(&gt13[index]);
+ PDstandardNth2gt13 = PDstandardNthfdOrder42(&gt13[index]);
+ PDstandardNth3gt13 = PDstandardNthfdOrder43(&gt13[index]);
+ PDstandardNth11gt13 = PDstandardNthfdOrder411(&gt13[index]);
+ PDstandardNth22gt13 = PDstandardNthfdOrder422(&gt13[index]);
+ PDstandardNth33gt13 = PDstandardNthfdOrder433(&gt13[index]);
+ PDstandardNth12gt13 = PDstandardNthfdOrder412(&gt13[index]);
+ PDstandardNth13gt13 = PDstandardNthfdOrder413(&gt13[index]);
+ PDstandardNth23gt13 = PDstandardNthfdOrder423(&gt13[index]);
+ PDstandardNth1gt22 = PDstandardNthfdOrder41(&gt22[index]);
+ PDstandardNth2gt22 = PDstandardNthfdOrder42(&gt22[index]);
+ PDstandardNth3gt22 = PDstandardNthfdOrder43(&gt22[index]);
+ PDstandardNth11gt22 = PDstandardNthfdOrder411(&gt22[index]);
+ PDstandardNth22gt22 = PDstandardNthfdOrder422(&gt22[index]);
+ PDstandardNth33gt22 = PDstandardNthfdOrder433(&gt22[index]);
+ PDstandardNth12gt22 = PDstandardNthfdOrder412(&gt22[index]);
+ PDstandardNth13gt22 = PDstandardNthfdOrder413(&gt22[index]);
+ PDstandardNth23gt22 = PDstandardNthfdOrder423(&gt22[index]);
+ PDstandardNth1gt23 = PDstandardNthfdOrder41(&gt23[index]);
+ PDstandardNth2gt23 = PDstandardNthfdOrder42(&gt23[index]);
+ PDstandardNth3gt23 = PDstandardNthfdOrder43(&gt23[index]);
+ PDstandardNth11gt23 = PDstandardNthfdOrder411(&gt23[index]);
+ PDstandardNth22gt23 = PDstandardNthfdOrder422(&gt23[index]);
+ PDstandardNth33gt23 = PDstandardNthfdOrder433(&gt23[index]);
+ PDstandardNth12gt23 = PDstandardNthfdOrder412(&gt23[index]);
+ PDstandardNth13gt23 = PDstandardNthfdOrder413(&gt23[index]);
+ PDstandardNth23gt23 = PDstandardNthfdOrder423(&gt23[index]);
+ PDstandardNth1gt33 = PDstandardNthfdOrder41(&gt33[index]);
+ PDstandardNth2gt33 = PDstandardNthfdOrder42(&gt33[index]);
+ PDstandardNth3gt33 = PDstandardNthfdOrder43(&gt33[index]);
+ PDstandardNth11gt33 = PDstandardNthfdOrder411(&gt33[index]);
+ PDstandardNth22gt33 = PDstandardNthfdOrder422(&gt33[index]);
+ PDstandardNth33gt33 = PDstandardNthfdOrder433(&gt33[index]);
+ PDstandardNth12gt33 = PDstandardNthfdOrder412(&gt33[index]);
+ PDstandardNth13gt33 = PDstandardNthfdOrder413(&gt33[index]);
+ PDstandardNth23gt33 = PDstandardNthfdOrder423(&gt33[index]);
+ PDstandardNth1phi = PDstandardNthfdOrder41(&phi[index]);
+ PDstandardNth2phi = PDstandardNthfdOrder42(&phi[index]);
+ PDstandardNth3phi = PDstandardNthfdOrder43(&phi[index]);
+ PDstandardNth11phi = PDstandardNthfdOrder411(&phi[index]);
+ PDstandardNth22phi = PDstandardNthfdOrder422(&phi[index]);
+ PDstandardNth33phi = PDstandardNthfdOrder433(&phi[index]);
+ PDstandardNth12phi = PDstandardNthfdOrder412(&phi[index]);
+ PDstandardNth13phi = PDstandardNthfdOrder413(&phi[index]);
+ PDstandardNth23phi = PDstandardNthfdOrder423(&phi[index]);
+ PDstandardNth1Theta = PDstandardNthfdOrder41(&Theta[index]);
+ PDstandardNth2Theta = PDstandardNthfdOrder42(&Theta[index]);
+ PDstandardNth3Theta = PDstandardNthfdOrder43(&Theta[index]);
+ PDstandardNth1trK = PDstandardNthfdOrder41(&trK[index]);
+ PDstandardNth2trK = PDstandardNthfdOrder42(&trK[index]);
+ PDstandardNth3trK = PDstandardNthfdOrder43(&trK[index]);
+ PDstandardNth1Xt1 = PDstandardNthfdOrder41(&Xt1[index]);
+ PDstandardNth2Xt1 = PDstandardNthfdOrder42(&Xt1[index]);
+ PDstandardNth3Xt1 = PDstandardNthfdOrder43(&Xt1[index]);
+ PDstandardNth1Xt2 = PDstandardNthfdOrder41(&Xt2[index]);
+ PDstandardNth2Xt2 = PDstandardNthfdOrder42(&Xt2[index]);
+ PDstandardNth3Xt2 = PDstandardNthfdOrder43(&Xt2[index]);
+ PDstandardNth1Xt3 = PDstandardNthfdOrder41(&Xt3[index]);
+ PDstandardNth2Xt3 = PDstandardNthfdOrder42(&Xt3[index]);
+ PDstandardNth3Xt3 = PDstandardNthfdOrder43(&Xt3[index]);
+ break;
+
+ case 6:
+ PDstandardNth1alpha = PDstandardNthfdOrder61(&alpha[index]);
+ PDstandardNth2alpha = PDstandardNthfdOrder62(&alpha[index]);
+ PDstandardNth3alpha = PDstandardNthfdOrder63(&alpha[index]);
+ PDstandardNth11alpha = PDstandardNthfdOrder611(&alpha[index]);
+ PDstandardNth22alpha = PDstandardNthfdOrder622(&alpha[index]);
+ PDstandardNth33alpha = PDstandardNthfdOrder633(&alpha[index]);
+ PDstandardNth12alpha = PDstandardNthfdOrder612(&alpha[index]);
+ PDstandardNth13alpha = PDstandardNthfdOrder613(&alpha[index]);
+ PDstandardNth23alpha = PDstandardNthfdOrder623(&alpha[index]);
+ PDstandardNth1beta1 = PDstandardNthfdOrder61(&beta1[index]);
+ PDstandardNth2beta1 = PDstandardNthfdOrder62(&beta1[index]);
+ PDstandardNth3beta1 = PDstandardNthfdOrder63(&beta1[index]);
+ PDstandardNth11beta1 = PDstandardNthfdOrder611(&beta1[index]);
+ PDstandardNth22beta1 = PDstandardNthfdOrder622(&beta1[index]);
+ PDstandardNth33beta1 = PDstandardNthfdOrder633(&beta1[index]);
+ PDstandardNth12beta1 = PDstandardNthfdOrder612(&beta1[index]);
+ PDstandardNth13beta1 = PDstandardNthfdOrder613(&beta1[index]);
+ PDstandardNth23beta1 = PDstandardNthfdOrder623(&beta1[index]);
+ PDstandardNth1beta2 = PDstandardNthfdOrder61(&beta2[index]);
+ PDstandardNth2beta2 = PDstandardNthfdOrder62(&beta2[index]);
+ PDstandardNth3beta2 = PDstandardNthfdOrder63(&beta2[index]);
+ PDstandardNth11beta2 = PDstandardNthfdOrder611(&beta2[index]);
+ PDstandardNth22beta2 = PDstandardNthfdOrder622(&beta2[index]);
+ PDstandardNth33beta2 = PDstandardNthfdOrder633(&beta2[index]);
+ PDstandardNth12beta2 = PDstandardNthfdOrder612(&beta2[index]);
+ PDstandardNth13beta2 = PDstandardNthfdOrder613(&beta2[index]);
+ PDstandardNth23beta2 = PDstandardNthfdOrder623(&beta2[index]);
+ PDstandardNth1beta3 = PDstandardNthfdOrder61(&beta3[index]);
+ PDstandardNth2beta3 = PDstandardNthfdOrder62(&beta3[index]);
+ PDstandardNth3beta3 = PDstandardNthfdOrder63(&beta3[index]);
+ PDstandardNth11beta3 = PDstandardNthfdOrder611(&beta3[index]);
+ PDstandardNth22beta3 = PDstandardNthfdOrder622(&beta3[index]);
+ PDstandardNth33beta3 = PDstandardNthfdOrder633(&beta3[index]);
+ PDstandardNth12beta3 = PDstandardNthfdOrder612(&beta3[index]);
+ PDstandardNth13beta3 = PDstandardNthfdOrder613(&beta3[index]);
+ PDstandardNth23beta3 = PDstandardNthfdOrder623(&beta3[index]);
+ PDstandardNth1gt11 = PDstandardNthfdOrder61(&gt11[index]);
+ PDstandardNth2gt11 = PDstandardNthfdOrder62(&gt11[index]);
+ PDstandardNth3gt11 = PDstandardNthfdOrder63(&gt11[index]);
+ PDstandardNth11gt11 = PDstandardNthfdOrder611(&gt11[index]);
+ PDstandardNth22gt11 = PDstandardNthfdOrder622(&gt11[index]);
+ PDstandardNth33gt11 = PDstandardNthfdOrder633(&gt11[index]);
+ PDstandardNth12gt11 = PDstandardNthfdOrder612(&gt11[index]);
+ PDstandardNth13gt11 = PDstandardNthfdOrder613(&gt11[index]);
+ PDstandardNth23gt11 = PDstandardNthfdOrder623(&gt11[index]);
+ PDstandardNth1gt12 = PDstandardNthfdOrder61(&gt12[index]);
+ PDstandardNth2gt12 = PDstandardNthfdOrder62(&gt12[index]);
+ PDstandardNth3gt12 = PDstandardNthfdOrder63(&gt12[index]);
+ PDstandardNth11gt12 = PDstandardNthfdOrder611(&gt12[index]);
+ PDstandardNth22gt12 = PDstandardNthfdOrder622(&gt12[index]);
+ PDstandardNth33gt12 = PDstandardNthfdOrder633(&gt12[index]);
+ PDstandardNth12gt12 = PDstandardNthfdOrder612(&gt12[index]);
+ PDstandardNth13gt12 = PDstandardNthfdOrder613(&gt12[index]);
+ PDstandardNth23gt12 = PDstandardNthfdOrder623(&gt12[index]);
+ PDstandardNth1gt13 = PDstandardNthfdOrder61(&gt13[index]);
+ PDstandardNth2gt13 = PDstandardNthfdOrder62(&gt13[index]);
+ PDstandardNth3gt13 = PDstandardNthfdOrder63(&gt13[index]);
+ PDstandardNth11gt13 = PDstandardNthfdOrder611(&gt13[index]);
+ PDstandardNth22gt13 = PDstandardNthfdOrder622(&gt13[index]);
+ PDstandardNth33gt13 = PDstandardNthfdOrder633(&gt13[index]);
+ PDstandardNth12gt13 = PDstandardNthfdOrder612(&gt13[index]);
+ PDstandardNth13gt13 = PDstandardNthfdOrder613(&gt13[index]);
+ PDstandardNth23gt13 = PDstandardNthfdOrder623(&gt13[index]);
+ PDstandardNth1gt22 = PDstandardNthfdOrder61(&gt22[index]);
+ PDstandardNth2gt22 = PDstandardNthfdOrder62(&gt22[index]);
+ PDstandardNth3gt22 = PDstandardNthfdOrder63(&gt22[index]);
+ PDstandardNth11gt22 = PDstandardNthfdOrder611(&gt22[index]);
+ PDstandardNth22gt22 = PDstandardNthfdOrder622(&gt22[index]);
+ PDstandardNth33gt22 = PDstandardNthfdOrder633(&gt22[index]);
+ PDstandardNth12gt22 = PDstandardNthfdOrder612(&gt22[index]);
+ PDstandardNth13gt22 = PDstandardNthfdOrder613(&gt22[index]);
+ PDstandardNth23gt22 = PDstandardNthfdOrder623(&gt22[index]);
+ PDstandardNth1gt23 = PDstandardNthfdOrder61(&gt23[index]);
+ PDstandardNth2gt23 = PDstandardNthfdOrder62(&gt23[index]);
+ PDstandardNth3gt23 = PDstandardNthfdOrder63(&gt23[index]);
+ PDstandardNth11gt23 = PDstandardNthfdOrder611(&gt23[index]);
+ PDstandardNth22gt23 = PDstandardNthfdOrder622(&gt23[index]);
+ PDstandardNth33gt23 = PDstandardNthfdOrder633(&gt23[index]);
+ PDstandardNth12gt23 = PDstandardNthfdOrder612(&gt23[index]);
+ PDstandardNth13gt23 = PDstandardNthfdOrder613(&gt23[index]);
+ PDstandardNth23gt23 = PDstandardNthfdOrder623(&gt23[index]);
+ PDstandardNth1gt33 = PDstandardNthfdOrder61(&gt33[index]);
+ PDstandardNth2gt33 = PDstandardNthfdOrder62(&gt33[index]);
+ PDstandardNth3gt33 = PDstandardNthfdOrder63(&gt33[index]);
+ PDstandardNth11gt33 = PDstandardNthfdOrder611(&gt33[index]);
+ PDstandardNth22gt33 = PDstandardNthfdOrder622(&gt33[index]);
+ PDstandardNth33gt33 = PDstandardNthfdOrder633(&gt33[index]);
+ PDstandardNth12gt33 = PDstandardNthfdOrder612(&gt33[index]);
+ PDstandardNth13gt33 = PDstandardNthfdOrder613(&gt33[index]);
+ PDstandardNth23gt33 = PDstandardNthfdOrder623(&gt33[index]);
+ PDstandardNth1phi = PDstandardNthfdOrder61(&phi[index]);
+ PDstandardNth2phi = PDstandardNthfdOrder62(&phi[index]);
+ PDstandardNth3phi = PDstandardNthfdOrder63(&phi[index]);
+ PDstandardNth11phi = PDstandardNthfdOrder611(&phi[index]);
+ PDstandardNth22phi = PDstandardNthfdOrder622(&phi[index]);
+ PDstandardNth33phi = PDstandardNthfdOrder633(&phi[index]);
+ PDstandardNth12phi = PDstandardNthfdOrder612(&phi[index]);
+ PDstandardNth13phi = PDstandardNthfdOrder613(&phi[index]);
+ PDstandardNth23phi = PDstandardNthfdOrder623(&phi[index]);
+ PDstandardNth1Theta = PDstandardNthfdOrder61(&Theta[index]);
+ PDstandardNth2Theta = PDstandardNthfdOrder62(&Theta[index]);
+ PDstandardNth3Theta = PDstandardNthfdOrder63(&Theta[index]);
+ PDstandardNth1trK = PDstandardNthfdOrder61(&trK[index]);
+ PDstandardNth2trK = PDstandardNthfdOrder62(&trK[index]);
+ PDstandardNth3trK = PDstandardNthfdOrder63(&trK[index]);
+ PDstandardNth1Xt1 = PDstandardNthfdOrder61(&Xt1[index]);
+ PDstandardNth2Xt1 = PDstandardNthfdOrder62(&Xt1[index]);
+ PDstandardNth3Xt1 = PDstandardNthfdOrder63(&Xt1[index]);
+ PDstandardNth1Xt2 = PDstandardNthfdOrder61(&Xt2[index]);
+ PDstandardNth2Xt2 = PDstandardNthfdOrder62(&Xt2[index]);
+ PDstandardNth3Xt2 = PDstandardNthfdOrder63(&Xt2[index]);
+ PDstandardNth1Xt3 = PDstandardNthfdOrder61(&Xt3[index]);
+ PDstandardNth2Xt3 = PDstandardNthfdOrder62(&Xt3[index]);
+ PDstandardNth3Xt3 = PDstandardNthfdOrder63(&Xt3[index]);
+ break;
+
+ case 8:
+ PDstandardNth1alpha = PDstandardNthfdOrder81(&alpha[index]);
+ PDstandardNth2alpha = PDstandardNthfdOrder82(&alpha[index]);
+ PDstandardNth3alpha = PDstandardNthfdOrder83(&alpha[index]);
+ PDstandardNth11alpha = PDstandardNthfdOrder811(&alpha[index]);
+ PDstandardNth22alpha = PDstandardNthfdOrder822(&alpha[index]);
+ PDstandardNth33alpha = PDstandardNthfdOrder833(&alpha[index]);
+ PDstandardNth12alpha = PDstandardNthfdOrder812(&alpha[index]);
+ PDstandardNth13alpha = PDstandardNthfdOrder813(&alpha[index]);
+ PDstandardNth23alpha = PDstandardNthfdOrder823(&alpha[index]);
+ PDstandardNth1beta1 = PDstandardNthfdOrder81(&beta1[index]);
+ PDstandardNth2beta1 = PDstandardNthfdOrder82(&beta1[index]);
+ PDstandardNth3beta1 = PDstandardNthfdOrder83(&beta1[index]);
+ PDstandardNth11beta1 = PDstandardNthfdOrder811(&beta1[index]);
+ PDstandardNth22beta1 = PDstandardNthfdOrder822(&beta1[index]);
+ PDstandardNth33beta1 = PDstandardNthfdOrder833(&beta1[index]);
+ PDstandardNth12beta1 = PDstandardNthfdOrder812(&beta1[index]);
+ PDstandardNth13beta1 = PDstandardNthfdOrder813(&beta1[index]);
+ PDstandardNth23beta1 = PDstandardNthfdOrder823(&beta1[index]);
+ PDstandardNth1beta2 = PDstandardNthfdOrder81(&beta2[index]);
+ PDstandardNth2beta2 = PDstandardNthfdOrder82(&beta2[index]);
+ PDstandardNth3beta2 = PDstandardNthfdOrder83(&beta2[index]);
+ PDstandardNth11beta2 = PDstandardNthfdOrder811(&beta2[index]);
+ PDstandardNth22beta2 = PDstandardNthfdOrder822(&beta2[index]);
+ PDstandardNth33beta2 = PDstandardNthfdOrder833(&beta2[index]);
+ PDstandardNth12beta2 = PDstandardNthfdOrder812(&beta2[index]);
+ PDstandardNth13beta2 = PDstandardNthfdOrder813(&beta2[index]);
+ PDstandardNth23beta2 = PDstandardNthfdOrder823(&beta2[index]);
+ PDstandardNth1beta3 = PDstandardNthfdOrder81(&beta3[index]);
+ PDstandardNth2beta3 = PDstandardNthfdOrder82(&beta3[index]);
+ PDstandardNth3beta3 = PDstandardNthfdOrder83(&beta3[index]);
+ PDstandardNth11beta3 = PDstandardNthfdOrder811(&beta3[index]);
+ PDstandardNth22beta3 = PDstandardNthfdOrder822(&beta3[index]);
+ PDstandardNth33beta3 = PDstandardNthfdOrder833(&beta3[index]);
+ PDstandardNth12beta3 = PDstandardNthfdOrder812(&beta3[index]);
+ PDstandardNth13beta3 = PDstandardNthfdOrder813(&beta3[index]);
+ PDstandardNth23beta3 = PDstandardNthfdOrder823(&beta3[index]);
+ PDstandardNth1gt11 = PDstandardNthfdOrder81(&gt11[index]);
+ PDstandardNth2gt11 = PDstandardNthfdOrder82(&gt11[index]);
+ PDstandardNth3gt11 = PDstandardNthfdOrder83(&gt11[index]);
+ PDstandardNth11gt11 = PDstandardNthfdOrder811(&gt11[index]);
+ PDstandardNth22gt11 = PDstandardNthfdOrder822(&gt11[index]);
+ PDstandardNth33gt11 = PDstandardNthfdOrder833(&gt11[index]);
+ PDstandardNth12gt11 = PDstandardNthfdOrder812(&gt11[index]);
+ PDstandardNth13gt11 = PDstandardNthfdOrder813(&gt11[index]);
+ PDstandardNth23gt11 = PDstandardNthfdOrder823(&gt11[index]);
+ PDstandardNth1gt12 = PDstandardNthfdOrder81(&gt12[index]);
+ PDstandardNth2gt12 = PDstandardNthfdOrder82(&gt12[index]);
+ PDstandardNth3gt12 = PDstandardNthfdOrder83(&gt12[index]);
+ PDstandardNth11gt12 = PDstandardNthfdOrder811(&gt12[index]);
+ PDstandardNth22gt12 = PDstandardNthfdOrder822(&gt12[index]);
+ PDstandardNth33gt12 = PDstandardNthfdOrder833(&gt12[index]);
+ PDstandardNth12gt12 = PDstandardNthfdOrder812(&gt12[index]);
+ PDstandardNth13gt12 = PDstandardNthfdOrder813(&gt12[index]);
+ PDstandardNth23gt12 = PDstandardNthfdOrder823(&gt12[index]);
+ PDstandardNth1gt13 = PDstandardNthfdOrder81(&gt13[index]);
+ PDstandardNth2gt13 = PDstandardNthfdOrder82(&gt13[index]);
+ PDstandardNth3gt13 = PDstandardNthfdOrder83(&gt13[index]);
+ PDstandardNth11gt13 = PDstandardNthfdOrder811(&gt13[index]);
+ PDstandardNth22gt13 = PDstandardNthfdOrder822(&gt13[index]);
+ PDstandardNth33gt13 = PDstandardNthfdOrder833(&gt13[index]);
+ PDstandardNth12gt13 = PDstandardNthfdOrder812(&gt13[index]);
+ PDstandardNth13gt13 = PDstandardNthfdOrder813(&gt13[index]);
+ PDstandardNth23gt13 = PDstandardNthfdOrder823(&gt13[index]);
+ PDstandardNth1gt22 = PDstandardNthfdOrder81(&gt22[index]);
+ PDstandardNth2gt22 = PDstandardNthfdOrder82(&gt22[index]);
+ PDstandardNth3gt22 = PDstandardNthfdOrder83(&gt22[index]);
+ PDstandardNth11gt22 = PDstandardNthfdOrder811(&gt22[index]);
+ PDstandardNth22gt22 = PDstandardNthfdOrder822(&gt22[index]);
+ PDstandardNth33gt22 = PDstandardNthfdOrder833(&gt22[index]);
+ PDstandardNth12gt22 = PDstandardNthfdOrder812(&gt22[index]);
+ PDstandardNth13gt22 = PDstandardNthfdOrder813(&gt22[index]);
+ PDstandardNth23gt22 = PDstandardNthfdOrder823(&gt22[index]);
+ PDstandardNth1gt23 = PDstandardNthfdOrder81(&gt23[index]);
+ PDstandardNth2gt23 = PDstandardNthfdOrder82(&gt23[index]);
+ PDstandardNth3gt23 = PDstandardNthfdOrder83(&gt23[index]);
+ PDstandardNth11gt23 = PDstandardNthfdOrder811(&gt23[index]);
+ PDstandardNth22gt23 = PDstandardNthfdOrder822(&gt23[index]);
+ PDstandardNth33gt23 = PDstandardNthfdOrder833(&gt23[index]);
+ PDstandardNth12gt23 = PDstandardNthfdOrder812(&gt23[index]);
+ PDstandardNth13gt23 = PDstandardNthfdOrder813(&gt23[index]);
+ PDstandardNth23gt23 = PDstandardNthfdOrder823(&gt23[index]);
+ PDstandardNth1gt33 = PDstandardNthfdOrder81(&gt33[index]);
+ PDstandardNth2gt33 = PDstandardNthfdOrder82(&gt33[index]);
+ PDstandardNth3gt33 = PDstandardNthfdOrder83(&gt33[index]);
+ PDstandardNth11gt33 = PDstandardNthfdOrder811(&gt33[index]);
+ PDstandardNth22gt33 = PDstandardNthfdOrder822(&gt33[index]);
+ PDstandardNth33gt33 = PDstandardNthfdOrder833(&gt33[index]);
+ PDstandardNth12gt33 = PDstandardNthfdOrder812(&gt33[index]);
+ PDstandardNth13gt33 = PDstandardNthfdOrder813(&gt33[index]);
+ PDstandardNth23gt33 = PDstandardNthfdOrder823(&gt33[index]);
+ PDstandardNth1phi = PDstandardNthfdOrder81(&phi[index]);
+ PDstandardNth2phi = PDstandardNthfdOrder82(&phi[index]);
+ PDstandardNth3phi = PDstandardNthfdOrder83(&phi[index]);
+ PDstandardNth11phi = PDstandardNthfdOrder811(&phi[index]);
+ PDstandardNth22phi = PDstandardNthfdOrder822(&phi[index]);
+ PDstandardNth33phi = PDstandardNthfdOrder833(&phi[index]);
+ PDstandardNth12phi = PDstandardNthfdOrder812(&phi[index]);
+ PDstandardNth13phi = PDstandardNthfdOrder813(&phi[index]);
+ PDstandardNth23phi = PDstandardNthfdOrder823(&phi[index]);
+ PDstandardNth1Theta = PDstandardNthfdOrder81(&Theta[index]);
+ PDstandardNth2Theta = PDstandardNthfdOrder82(&Theta[index]);
+ PDstandardNth3Theta = PDstandardNthfdOrder83(&Theta[index]);
+ PDstandardNth1trK = PDstandardNthfdOrder81(&trK[index]);
+ PDstandardNth2trK = PDstandardNthfdOrder82(&trK[index]);
+ PDstandardNth3trK = PDstandardNthfdOrder83(&trK[index]);
+ PDstandardNth1Xt1 = PDstandardNthfdOrder81(&Xt1[index]);
+ PDstandardNth2Xt1 = PDstandardNthfdOrder82(&Xt1[index]);
+ PDstandardNth3Xt1 = PDstandardNthfdOrder83(&Xt1[index]);
+ PDstandardNth1Xt2 = PDstandardNthfdOrder81(&Xt2[index]);
+ PDstandardNth2Xt2 = PDstandardNthfdOrder82(&Xt2[index]);
+ PDstandardNth3Xt2 = PDstandardNthfdOrder83(&Xt2[index]);
+ PDstandardNth1Xt3 = PDstandardNthfdOrder81(&Xt3[index]);
+ PDstandardNth2Xt3 = PDstandardNthfdOrder82(&Xt3[index]);
+ PDstandardNth3Xt3 = PDstandardNthfdOrder83(&Xt3[index]);
+ break;
+ }
+
+ /* Calculate temporaries and grid functions */
+ ptrdiff_t dir1 = Sign(beta1L);
+
+ ptrdiff_t dir2 = Sign(beta2L);
+
+ ptrdiff_t dir3 = Sign(beta3L);
+
+ CCTK_REAL_VEC JacPDstandardNth11alpha;
+ CCTK_REAL_VEC JacPDstandardNth11beta1;
+ CCTK_REAL_VEC JacPDstandardNth11beta2;
+ CCTK_REAL_VEC JacPDstandardNth11beta3;
+ CCTK_REAL_VEC JacPDstandardNth11gt11;
+ CCTK_REAL_VEC JacPDstandardNth11gt12;
+ CCTK_REAL_VEC JacPDstandardNth11gt13;
+ CCTK_REAL_VEC JacPDstandardNth11gt22;
+ CCTK_REAL_VEC JacPDstandardNth11gt23;
+ CCTK_REAL_VEC JacPDstandardNth11gt33;
+ CCTK_REAL_VEC JacPDstandardNth11phi;
+ CCTK_REAL_VEC JacPDstandardNth12alpha;
+ CCTK_REAL_VEC JacPDstandardNth12beta1;
+ CCTK_REAL_VEC JacPDstandardNth12beta2;
+ CCTK_REAL_VEC JacPDstandardNth12beta3;
+ CCTK_REAL_VEC JacPDstandardNth12gt11;
+ CCTK_REAL_VEC JacPDstandardNth12gt12;
+ CCTK_REAL_VEC JacPDstandardNth12gt13;
+ CCTK_REAL_VEC JacPDstandardNth12gt22;
+ CCTK_REAL_VEC JacPDstandardNth12gt23;
+ CCTK_REAL_VEC JacPDstandardNth12gt33;
+ CCTK_REAL_VEC JacPDstandardNth12phi;
+ CCTK_REAL_VEC JacPDstandardNth13alpha;
+ CCTK_REAL_VEC JacPDstandardNth13beta1;
+ CCTK_REAL_VEC JacPDstandardNth13beta2;
+ CCTK_REAL_VEC JacPDstandardNth13beta3;
+ CCTK_REAL_VEC JacPDstandardNth13gt11;
+ CCTK_REAL_VEC JacPDstandardNth13gt12;
+ CCTK_REAL_VEC JacPDstandardNth13gt13;
+ CCTK_REAL_VEC JacPDstandardNth13gt22;
+ CCTK_REAL_VEC JacPDstandardNth13gt23;
+ CCTK_REAL_VEC JacPDstandardNth13gt33;
+ CCTK_REAL_VEC JacPDstandardNth13phi;
+ CCTK_REAL_VEC JacPDstandardNth1alpha;
+ CCTK_REAL_VEC JacPDstandardNth1beta1;
+ CCTK_REAL_VEC JacPDstandardNth1beta2;
+ CCTK_REAL_VEC JacPDstandardNth1beta3;
+ CCTK_REAL_VEC JacPDstandardNth1gt11;
+ CCTK_REAL_VEC JacPDstandardNth1gt12;
+ CCTK_REAL_VEC JacPDstandardNth1gt13;
+ CCTK_REAL_VEC JacPDstandardNth1gt22;
+ CCTK_REAL_VEC JacPDstandardNth1gt23;
+ CCTK_REAL_VEC JacPDstandardNth1gt33;
+ CCTK_REAL_VEC JacPDstandardNth1phi;
+ CCTK_REAL_VEC JacPDstandardNth1Theta;
+ CCTK_REAL_VEC JacPDstandardNth1trK;
+ CCTK_REAL_VEC JacPDstandardNth1Xt1;
+ CCTK_REAL_VEC JacPDstandardNth1Xt2;
+ CCTK_REAL_VEC JacPDstandardNth1Xt3;
+ CCTK_REAL_VEC JacPDstandardNth21alpha;
+ CCTK_REAL_VEC JacPDstandardNth21beta1;
+ CCTK_REAL_VEC JacPDstandardNth21beta2;
+ CCTK_REAL_VEC JacPDstandardNth21beta3;
+ CCTK_REAL_VEC JacPDstandardNth21gt11;
+ CCTK_REAL_VEC JacPDstandardNth21gt12;
+ CCTK_REAL_VEC JacPDstandardNth21gt13;
+ CCTK_REAL_VEC JacPDstandardNth21gt22;
+ CCTK_REAL_VEC JacPDstandardNth21gt23;
+ CCTK_REAL_VEC JacPDstandardNth21gt33;
+ CCTK_REAL_VEC JacPDstandardNth22alpha;
+ CCTK_REAL_VEC JacPDstandardNth22beta1;
+ CCTK_REAL_VEC JacPDstandardNth22beta2;
+ CCTK_REAL_VEC JacPDstandardNth22beta3;
+ CCTK_REAL_VEC JacPDstandardNth22gt11;
+ CCTK_REAL_VEC JacPDstandardNth22gt12;
+ CCTK_REAL_VEC JacPDstandardNth22gt13;
+ CCTK_REAL_VEC JacPDstandardNth22gt22;
+ CCTK_REAL_VEC JacPDstandardNth22gt23;
+ CCTK_REAL_VEC JacPDstandardNth22gt33;
+ CCTK_REAL_VEC JacPDstandardNth22phi;
+ CCTK_REAL_VEC JacPDstandardNth23alpha;
+ CCTK_REAL_VEC JacPDstandardNth23beta1;
+ CCTK_REAL_VEC JacPDstandardNth23beta2;
+ CCTK_REAL_VEC JacPDstandardNth23beta3;
+ CCTK_REAL_VEC JacPDstandardNth23gt11;
+ CCTK_REAL_VEC JacPDstandardNth23gt12;
+ CCTK_REAL_VEC JacPDstandardNth23gt13;
+ CCTK_REAL_VEC JacPDstandardNth23gt22;
+ CCTK_REAL_VEC JacPDstandardNth23gt23;
+ CCTK_REAL_VEC JacPDstandardNth23gt33;
+ CCTK_REAL_VEC JacPDstandardNth23phi;
+ CCTK_REAL_VEC JacPDstandardNth2alpha;
+ CCTK_REAL_VEC JacPDstandardNth2beta1;
+ CCTK_REAL_VEC JacPDstandardNth2beta2;
+ CCTK_REAL_VEC JacPDstandardNth2beta3;
+ CCTK_REAL_VEC JacPDstandardNth2gt11;
+ CCTK_REAL_VEC JacPDstandardNth2gt12;
+ CCTK_REAL_VEC JacPDstandardNth2gt13;
+ CCTK_REAL_VEC JacPDstandardNth2gt22;
+ CCTK_REAL_VEC JacPDstandardNth2gt23;
+ CCTK_REAL_VEC JacPDstandardNth2gt33;
+ CCTK_REAL_VEC JacPDstandardNth2phi;
+ CCTK_REAL_VEC JacPDstandardNth2Theta;
+ CCTK_REAL_VEC JacPDstandardNth2trK;
+ CCTK_REAL_VEC JacPDstandardNth2Xt1;
+ CCTK_REAL_VEC JacPDstandardNth2Xt2;
+ CCTK_REAL_VEC JacPDstandardNth2Xt3;
+ CCTK_REAL_VEC JacPDstandardNth31alpha;
+ CCTK_REAL_VEC JacPDstandardNth31beta1;
+ CCTK_REAL_VEC JacPDstandardNth31beta2;
+ CCTK_REAL_VEC JacPDstandardNth31beta3;
+ CCTK_REAL_VEC JacPDstandardNth31gt11;
+ CCTK_REAL_VEC JacPDstandardNth31gt12;
+ CCTK_REAL_VEC JacPDstandardNth31gt13;
+ CCTK_REAL_VEC JacPDstandardNth31gt22;
+ CCTK_REAL_VEC JacPDstandardNth31gt23;
+ CCTK_REAL_VEC JacPDstandardNth31gt33;
+ CCTK_REAL_VEC JacPDstandardNth32alpha;
+ CCTK_REAL_VEC JacPDstandardNth32beta1;
+ CCTK_REAL_VEC JacPDstandardNth32beta2;
+ CCTK_REAL_VEC JacPDstandardNth32beta3;
+ CCTK_REAL_VEC JacPDstandardNth32gt11;
+ CCTK_REAL_VEC JacPDstandardNth32gt12;
+ CCTK_REAL_VEC JacPDstandardNth32gt13;
+ CCTK_REAL_VEC JacPDstandardNth32gt22;
+ CCTK_REAL_VEC JacPDstandardNth32gt23;
+ CCTK_REAL_VEC JacPDstandardNth32gt33;
+ CCTK_REAL_VEC JacPDstandardNth33alpha;
+ CCTK_REAL_VEC JacPDstandardNth33beta1;
+ CCTK_REAL_VEC JacPDstandardNth33beta2;
+ CCTK_REAL_VEC JacPDstandardNth33beta3;
+ CCTK_REAL_VEC JacPDstandardNth33gt11;
+ CCTK_REAL_VEC JacPDstandardNth33gt12;
+ CCTK_REAL_VEC JacPDstandardNth33gt13;
+ CCTK_REAL_VEC JacPDstandardNth33gt22;
+ CCTK_REAL_VEC JacPDstandardNth33gt23;
+ CCTK_REAL_VEC JacPDstandardNth33gt33;
+ CCTK_REAL_VEC JacPDstandardNth33phi;
+ CCTK_REAL_VEC JacPDstandardNth3alpha;
+ CCTK_REAL_VEC JacPDstandardNth3beta1;
+ CCTK_REAL_VEC JacPDstandardNth3beta2;
+ CCTK_REAL_VEC JacPDstandardNth3beta3;
+ CCTK_REAL_VEC JacPDstandardNth3gt11;
+ CCTK_REAL_VEC JacPDstandardNth3gt12;
+ CCTK_REAL_VEC JacPDstandardNth3gt13;
+ CCTK_REAL_VEC JacPDstandardNth3gt22;
+ CCTK_REAL_VEC JacPDstandardNth3gt23;
+ CCTK_REAL_VEC JacPDstandardNth3gt33;
+ CCTK_REAL_VEC JacPDstandardNth3phi;
+ CCTK_REAL_VEC JacPDstandardNth3Theta;
+ CCTK_REAL_VEC JacPDstandardNth3trK;
+ CCTK_REAL_VEC JacPDstandardNth3Xt1;
+ CCTK_REAL_VEC JacPDstandardNth3Xt2;
+ CCTK_REAL_VEC JacPDstandardNth3Xt3;
+
+ if (use_jacobian)
+ {
+ JacPDstandardNth1alpha =
+ kmadd(J11L,PDstandardNth1alpha,kmadd(J21L,PDstandardNth2alpha,kmul(J31L,PDstandardNth3alpha)));
+
+ JacPDstandardNth1beta1 =
+ kmadd(J11L,PDstandardNth1beta1,kmadd(J21L,PDstandardNth2beta1,kmul(J31L,PDstandardNth3beta1)));
+
+ JacPDstandardNth1beta2 =
+ kmadd(J11L,PDstandardNth1beta2,kmadd(J21L,PDstandardNth2beta2,kmul(J31L,PDstandardNth3beta2)));
+
+ JacPDstandardNth1beta3 =
+ kmadd(J11L,PDstandardNth1beta3,kmadd(J21L,PDstandardNth2beta3,kmul(J31L,PDstandardNth3beta3)));
+
+ JacPDstandardNth1gt11 =
+ kmadd(J11L,PDstandardNth1gt11,kmadd(J21L,PDstandardNth2gt11,kmul(J31L,PDstandardNth3gt11)));
+
+ JacPDstandardNth1gt12 =
+ kmadd(J11L,PDstandardNth1gt12,kmadd(J21L,PDstandardNth2gt12,kmul(J31L,PDstandardNth3gt12)));
+
+ JacPDstandardNth1gt13 =
+ kmadd(J11L,PDstandardNth1gt13,kmadd(J21L,PDstandardNth2gt13,kmul(J31L,PDstandardNth3gt13)));
+
+ JacPDstandardNth1gt22 =
+ kmadd(J11L,PDstandardNth1gt22,kmadd(J21L,PDstandardNth2gt22,kmul(J31L,PDstandardNth3gt22)));
+
+ JacPDstandardNth1gt23 =
+ kmadd(J11L,PDstandardNth1gt23,kmadd(J21L,PDstandardNth2gt23,kmul(J31L,PDstandardNth3gt23)));
+
+ JacPDstandardNth1gt33 =
+ kmadd(J11L,PDstandardNth1gt33,kmadd(J21L,PDstandardNth2gt33,kmul(J31L,PDstandardNth3gt33)));
+
+ JacPDstandardNth1phi =
+ kmadd(J11L,PDstandardNth1phi,kmadd(J21L,PDstandardNth2phi,kmul(J31L,PDstandardNth3phi)));
+
+ JacPDstandardNth1Theta =
+ kmadd(J11L,PDstandardNth1Theta,kmadd(J21L,PDstandardNth2Theta,kmul(J31L,PDstandardNth3Theta)));
+
+ JacPDstandardNth1trK =
+ kmadd(J11L,PDstandardNth1trK,kmadd(J21L,PDstandardNth2trK,kmul(J31L,PDstandardNth3trK)));
+
+ JacPDstandardNth1Xt1 =
+ kmadd(J11L,PDstandardNth1Xt1,kmadd(J21L,PDstandardNth2Xt1,kmul(J31L,PDstandardNth3Xt1)));
+
+ JacPDstandardNth1Xt2 =
+ kmadd(J11L,PDstandardNth1Xt2,kmadd(J21L,PDstandardNth2Xt2,kmul(J31L,PDstandardNth3Xt2)));
+
+ JacPDstandardNth1Xt3 =
+ kmadd(J11L,PDstandardNth1Xt3,kmadd(J21L,PDstandardNth2Xt3,kmul(J31L,PDstandardNth3Xt3)));
+
+ JacPDstandardNth2alpha =
+ kmadd(J12L,PDstandardNth1alpha,kmadd(J22L,PDstandardNth2alpha,kmul(J32L,PDstandardNth3alpha)));
+
+ JacPDstandardNth2beta1 =
+ kmadd(J12L,PDstandardNth1beta1,kmadd(J22L,PDstandardNth2beta1,kmul(J32L,PDstandardNth3beta1)));
+
+ JacPDstandardNth2beta2 =
+ kmadd(J12L,PDstandardNth1beta2,kmadd(J22L,PDstandardNth2beta2,kmul(J32L,PDstandardNth3beta2)));
+
+ JacPDstandardNth2beta3 =
+ kmadd(J12L,PDstandardNth1beta3,kmadd(J22L,PDstandardNth2beta3,kmul(J32L,PDstandardNth3beta3)));
+
+ JacPDstandardNth2gt11 =
+ kmadd(J12L,PDstandardNth1gt11,kmadd(J22L,PDstandardNth2gt11,kmul(J32L,PDstandardNth3gt11)));
+
+ JacPDstandardNth2gt12 =
+ kmadd(J12L,PDstandardNth1gt12,kmadd(J22L,PDstandardNth2gt12,kmul(J32L,PDstandardNth3gt12)));
+
+ JacPDstandardNth2gt13 =
+ kmadd(J12L,PDstandardNth1gt13,kmadd(J22L,PDstandardNth2gt13,kmul(J32L,PDstandardNth3gt13)));
+
+ JacPDstandardNth2gt22 =
+ kmadd(J12L,PDstandardNth1gt22,kmadd(J22L,PDstandardNth2gt22,kmul(J32L,PDstandardNth3gt22)));
+
+ JacPDstandardNth2gt23 =
+ kmadd(J12L,PDstandardNth1gt23,kmadd(J22L,PDstandardNth2gt23,kmul(J32L,PDstandardNth3gt23)));
+
+ JacPDstandardNth2gt33 =
+ kmadd(J12L,PDstandardNth1gt33,kmadd(J22L,PDstandardNth2gt33,kmul(J32L,PDstandardNth3gt33)));
+
+ JacPDstandardNth2phi =
+ kmadd(J12L,PDstandardNth1phi,kmadd(J22L,PDstandardNth2phi,kmul(J32L,PDstandardNth3phi)));
+
+ JacPDstandardNth2Theta =
+ kmadd(J12L,PDstandardNth1Theta,kmadd(J22L,PDstandardNth2Theta,kmul(J32L,PDstandardNth3Theta)));
+
+ JacPDstandardNth2trK =
+ kmadd(J12L,PDstandardNth1trK,kmadd(J22L,PDstandardNth2trK,kmul(J32L,PDstandardNth3trK)));
+
+ JacPDstandardNth2Xt1 =
+ kmadd(J12L,PDstandardNth1Xt1,kmadd(J22L,PDstandardNth2Xt1,kmul(J32L,PDstandardNth3Xt1)));
+
+ JacPDstandardNth2Xt2 =
+ kmadd(J12L,PDstandardNth1Xt2,kmadd(J22L,PDstandardNth2Xt2,kmul(J32L,PDstandardNth3Xt2)));
+
+ JacPDstandardNth2Xt3 =
+ kmadd(J12L,PDstandardNth1Xt3,kmadd(J22L,PDstandardNth2Xt3,kmul(J32L,PDstandardNth3Xt3)));
+
+ JacPDstandardNth3alpha =
+ kmadd(J13L,PDstandardNth1alpha,kmadd(J23L,PDstandardNth2alpha,kmul(J33L,PDstandardNth3alpha)));
+
+ JacPDstandardNth3beta1 =
+ kmadd(J13L,PDstandardNth1beta1,kmadd(J23L,PDstandardNth2beta1,kmul(J33L,PDstandardNth3beta1)));
+
+ JacPDstandardNth3beta2 =
+ kmadd(J13L,PDstandardNth1beta2,kmadd(J23L,PDstandardNth2beta2,kmul(J33L,PDstandardNth3beta2)));
+
+ JacPDstandardNth3beta3 =
+ kmadd(J13L,PDstandardNth1beta3,kmadd(J23L,PDstandardNth2beta3,kmul(J33L,PDstandardNth3beta3)));
+
+ JacPDstandardNth3gt11 =
+ kmadd(J13L,PDstandardNth1gt11,kmadd(J23L,PDstandardNth2gt11,kmul(J33L,PDstandardNth3gt11)));
+
+ JacPDstandardNth3gt12 =
+ kmadd(J13L,PDstandardNth1gt12,kmadd(J23L,PDstandardNth2gt12,kmul(J33L,PDstandardNth3gt12)));
+
+ JacPDstandardNth3gt13 =
+ kmadd(J13L,PDstandardNth1gt13,kmadd(J23L,PDstandardNth2gt13,kmul(J33L,PDstandardNth3gt13)));
+
+ JacPDstandardNth3gt22 =
+ kmadd(J13L,PDstandardNth1gt22,kmadd(J23L,PDstandardNth2gt22,kmul(J33L,PDstandardNth3gt22)));
+
+ JacPDstandardNth3gt23 =
+ kmadd(J13L,PDstandardNth1gt23,kmadd(J23L,PDstandardNth2gt23,kmul(J33L,PDstandardNth3gt23)));
+
+ JacPDstandardNth3gt33 =
+ kmadd(J13L,PDstandardNth1gt33,kmadd(J23L,PDstandardNth2gt33,kmul(J33L,PDstandardNth3gt33)));
+
+ JacPDstandardNth3phi =
+ kmadd(J13L,PDstandardNth1phi,kmadd(J23L,PDstandardNth2phi,kmul(J33L,PDstandardNth3phi)));
+
+ JacPDstandardNth3Theta =
+ kmadd(J13L,PDstandardNth1Theta,kmadd(J23L,PDstandardNth2Theta,kmul(J33L,PDstandardNth3Theta)));
+
+ JacPDstandardNth3trK =
+ kmadd(J13L,PDstandardNth1trK,kmadd(J23L,PDstandardNth2trK,kmul(J33L,PDstandardNth3trK)));
+
+ JacPDstandardNth3Xt1 =
+ kmadd(J13L,PDstandardNth1Xt1,kmadd(J23L,PDstandardNth2Xt1,kmul(J33L,PDstandardNth3Xt1)));
+
+ JacPDstandardNth3Xt2 =
+ kmadd(J13L,PDstandardNth1Xt2,kmadd(J23L,PDstandardNth2Xt2,kmul(J33L,PDstandardNth3Xt2)));
+
+ JacPDstandardNth3Xt3 =
+ kmadd(J13L,PDstandardNth1Xt3,kmadd(J23L,PDstandardNth2Xt3,kmul(J33L,PDstandardNth3Xt3)));
+
+ JacPDstandardNth11alpha =
+ kmadd(dJ111L,PDstandardNth1alpha,kmadd(dJ211L,PDstandardNth2alpha,kmadd(dJ311L,PDstandardNth3alpha,kmadd(PDstandardNth11alpha,SQR(J11L),kmadd(PDstandardNth22alpha,SQR(J21L),kmadd(PDstandardNth33alpha,SQR(J31L),kmul(kmadd(J11L,kmadd(J21L,PDstandardNth12alpha,kmul(J31L,PDstandardNth13alpha)),kmul(J21L,kmul(J31L,PDstandardNth23alpha))),ToReal(2))))))));
+
+ JacPDstandardNth11beta1 =
+ kmadd(dJ111L,PDstandardNth1beta1,kmadd(dJ211L,PDstandardNth2beta1,kmadd(dJ311L,PDstandardNth3beta1,kmadd(PDstandardNth11beta1,SQR(J11L),kmadd(PDstandardNth22beta1,SQR(J21L),kmadd(PDstandardNth33beta1,SQR(J31L),kmul(kmadd(J11L,kmadd(J21L,PDstandardNth12beta1,kmul(J31L,PDstandardNth13beta1)),kmul(J21L,kmul(J31L,PDstandardNth23beta1))),ToReal(2))))))));
+
+ JacPDstandardNth11beta2 =
+ kmadd(dJ111L,PDstandardNth1beta2,kmadd(dJ211L,PDstandardNth2beta2,kmadd(dJ311L,PDstandardNth3beta2,kmadd(PDstandardNth11beta2,SQR(J11L),kmadd(PDstandardNth22beta2,SQR(J21L),kmadd(PDstandardNth33beta2,SQR(J31L),kmul(kmadd(J11L,kmadd(J21L,PDstandardNth12beta2,kmul(J31L,PDstandardNth13beta2)),kmul(J21L,kmul(J31L,PDstandardNth23beta2))),ToReal(2))))))));
+
+ JacPDstandardNth11beta3 =
+ kmadd(dJ111L,PDstandardNth1beta3,kmadd(dJ211L,PDstandardNth2beta3,kmadd(dJ311L,PDstandardNth3beta3,kmadd(PDstandardNth11beta3,SQR(J11L),kmadd(PDstandardNth22beta3,SQR(J21L),kmadd(PDstandardNth33beta3,SQR(J31L),kmul(kmadd(J11L,kmadd(J21L,PDstandardNth12beta3,kmul(J31L,PDstandardNth13beta3)),kmul(J21L,kmul(J31L,PDstandardNth23beta3))),ToReal(2))))))));
+
+ JacPDstandardNth11gt11 =
+ kmadd(dJ111L,PDstandardNth1gt11,kmadd(dJ211L,PDstandardNth2gt11,kmadd(dJ311L,PDstandardNth3gt11,kmadd(PDstandardNth11gt11,SQR(J11L),kmadd(PDstandardNth22gt11,SQR(J21L),kmadd(PDstandardNth33gt11,SQR(J31L),kmul(kmadd(J11L,kmadd(J21L,PDstandardNth12gt11,kmul(J31L,PDstandardNth13gt11)),kmul(J21L,kmul(J31L,PDstandardNth23gt11))),ToReal(2))))))));
+
+ JacPDstandardNth11gt12 =
+ kmadd(dJ111L,PDstandardNth1gt12,kmadd(dJ211L,PDstandardNth2gt12,kmadd(dJ311L,PDstandardNth3gt12,kmadd(PDstandardNth11gt12,SQR(J11L),kmadd(PDstandardNth22gt12,SQR(J21L),kmadd(PDstandardNth33gt12,SQR(J31L),kmul(kmadd(J11L,kmadd(J21L,PDstandardNth12gt12,kmul(J31L,PDstandardNth13gt12)),kmul(J21L,kmul(J31L,PDstandardNth23gt12))),ToReal(2))))))));
+
+ JacPDstandardNth11gt13 =
+ kmadd(dJ111L,PDstandardNth1gt13,kmadd(dJ211L,PDstandardNth2gt13,kmadd(dJ311L,PDstandardNth3gt13,kmadd(PDstandardNth11gt13,SQR(J11L),kmadd(PDstandardNth22gt13,SQR(J21L),kmadd(PDstandardNth33gt13,SQR(J31L),kmul(kmadd(J11L,kmadd(J21L,PDstandardNth12gt13,kmul(J31L,PDstandardNth13gt13)),kmul(J21L,kmul(J31L,PDstandardNth23gt13))),ToReal(2))))))));
+
+ JacPDstandardNth11gt22 =
+ kmadd(dJ111L,PDstandardNth1gt22,kmadd(dJ211L,PDstandardNth2gt22,kmadd(dJ311L,PDstandardNth3gt22,kmadd(PDstandardNth11gt22,SQR(J11L),kmadd(PDstandardNth22gt22,SQR(J21L),kmadd(PDstandardNth33gt22,SQR(J31L),kmul(kmadd(J11L,kmadd(J21L,PDstandardNth12gt22,kmul(J31L,PDstandardNth13gt22)),kmul(J21L,kmul(J31L,PDstandardNth23gt22))),ToReal(2))))))));
+
+ JacPDstandardNth11gt23 =
+ kmadd(dJ111L,PDstandardNth1gt23,kmadd(dJ211L,PDstandardNth2gt23,kmadd(dJ311L,PDstandardNth3gt23,kmadd(PDstandardNth11gt23,SQR(J11L),kmadd(PDstandardNth22gt23,SQR(J21L),kmadd(PDstandardNth33gt23,SQR(J31L),kmul(kmadd(J11L,kmadd(J21L,PDstandardNth12gt23,kmul(J31L,PDstandardNth13gt23)),kmul(J21L,kmul(J31L,PDstandardNth23gt23))),ToReal(2))))))));
+
+ JacPDstandardNth11gt33 =
+ kmadd(dJ111L,PDstandardNth1gt33,kmadd(dJ211L,PDstandardNth2gt33,kmadd(dJ311L,PDstandardNth3gt33,kmadd(PDstandardNth11gt33,SQR(J11L),kmadd(PDstandardNth22gt33,SQR(J21L),kmadd(PDstandardNth33gt33,SQR(J31L),kmul(kmadd(J11L,kmadd(J21L,PDstandardNth12gt33,kmul(J31L,PDstandardNth13gt33)),kmul(J21L,kmul(J31L,PDstandardNth23gt33))),ToReal(2))))))));
+
+ JacPDstandardNth11phi =
+ kmadd(dJ111L,PDstandardNth1phi,kmadd(dJ211L,PDstandardNth2phi,kmadd(dJ311L,PDstandardNth3phi,kmadd(PDstandardNth11phi,SQR(J11L),kmadd(PDstandardNth22phi,SQR(J21L),kmadd(PDstandardNth33phi,SQR(J31L),kmul(kmadd(J11L,kmadd(J21L,PDstandardNth12phi,kmul(J31L,PDstandardNth13phi)),kmul(J21L,kmul(J31L,PDstandardNth23phi))),ToReal(2))))))));
+
+ JacPDstandardNth22alpha =
+ kmadd(dJ122L,PDstandardNth1alpha,kmadd(dJ222L,PDstandardNth2alpha,kmadd(dJ322L,PDstandardNth3alpha,kmadd(PDstandardNth11alpha,SQR(J12L),kmadd(PDstandardNth22alpha,SQR(J22L),kmadd(PDstandardNth33alpha,SQR(J32L),kmul(kmadd(J12L,kmadd(J22L,PDstandardNth12alpha,kmul(J32L,PDstandardNth13alpha)),kmul(J22L,kmul(J32L,PDstandardNth23alpha))),ToReal(2))))))));
+
+ JacPDstandardNth22beta1 =
+ kmadd(dJ122L,PDstandardNth1beta1,kmadd(dJ222L,PDstandardNth2beta1,kmadd(dJ322L,PDstandardNth3beta1,kmadd(PDstandardNth11beta1,SQR(J12L),kmadd(PDstandardNth22beta1,SQR(J22L),kmadd(PDstandardNth33beta1,SQR(J32L),kmul(kmadd(J12L,kmadd(J22L,PDstandardNth12beta1,kmul(J32L,PDstandardNth13beta1)),kmul(J22L,kmul(J32L,PDstandardNth23beta1))),ToReal(2))))))));
+
+ JacPDstandardNth22beta2 =
+ kmadd(dJ122L,PDstandardNth1beta2,kmadd(dJ222L,PDstandardNth2beta2,kmadd(dJ322L,PDstandardNth3beta2,kmadd(PDstandardNth11beta2,SQR(J12L),kmadd(PDstandardNth22beta2,SQR(J22L),kmadd(PDstandardNth33beta2,SQR(J32L),kmul(kmadd(J12L,kmadd(J22L,PDstandardNth12beta2,kmul(J32L,PDstandardNth13beta2)),kmul(J22L,kmul(J32L,PDstandardNth23beta2))),ToReal(2))))))));
+
+ JacPDstandardNth22beta3 =
+ kmadd(dJ122L,PDstandardNth1beta3,kmadd(dJ222L,PDstandardNth2beta3,kmadd(dJ322L,PDstandardNth3beta3,kmadd(PDstandardNth11beta3,SQR(J12L),kmadd(PDstandardNth22beta3,SQR(J22L),kmadd(PDstandardNth33beta3,SQR(J32L),kmul(kmadd(J12L,kmadd(J22L,PDstandardNth12beta3,kmul(J32L,PDstandardNth13beta3)),kmul(J22L,kmul(J32L,PDstandardNth23beta3))),ToReal(2))))))));
+
+ JacPDstandardNth22gt11 =
+ kmadd(dJ122L,PDstandardNth1gt11,kmadd(dJ222L,PDstandardNth2gt11,kmadd(dJ322L,PDstandardNth3gt11,kmadd(PDstandardNth11gt11,SQR(J12L),kmadd(PDstandardNth22gt11,SQR(J22L),kmadd(PDstandardNth33gt11,SQR(J32L),kmul(kmadd(J12L,kmadd(J22L,PDstandardNth12gt11,kmul(J32L,PDstandardNth13gt11)),kmul(J22L,kmul(J32L,PDstandardNth23gt11))),ToReal(2))))))));
+
+ JacPDstandardNth22gt12 =
+ kmadd(dJ122L,PDstandardNth1gt12,kmadd(dJ222L,PDstandardNth2gt12,kmadd(dJ322L,PDstandardNth3gt12,kmadd(PDstandardNth11gt12,SQR(J12L),kmadd(PDstandardNth22gt12,SQR(J22L),kmadd(PDstandardNth33gt12,SQR(J32L),kmul(kmadd(J12L,kmadd(J22L,PDstandardNth12gt12,kmul(J32L,PDstandardNth13gt12)),kmul(J22L,kmul(J32L,PDstandardNth23gt12))),ToReal(2))))))));
+
+ JacPDstandardNth22gt13 =
+ kmadd(dJ122L,PDstandardNth1gt13,kmadd(dJ222L,PDstandardNth2gt13,kmadd(dJ322L,PDstandardNth3gt13,kmadd(PDstandardNth11gt13,SQR(J12L),kmadd(PDstandardNth22gt13,SQR(J22L),kmadd(PDstandardNth33gt13,SQR(J32L),kmul(kmadd(J12L,kmadd(J22L,PDstandardNth12gt13,kmul(J32L,PDstandardNth13gt13)),kmul(J22L,kmul(J32L,PDstandardNth23gt13))),ToReal(2))))))));
+
+ JacPDstandardNth22gt22 =
+ kmadd(dJ122L,PDstandardNth1gt22,kmadd(dJ222L,PDstandardNth2gt22,kmadd(dJ322L,PDstandardNth3gt22,kmadd(PDstandardNth11gt22,SQR(J12L),kmadd(PDstandardNth22gt22,SQR(J22L),kmadd(PDstandardNth33gt22,SQR(J32L),kmul(kmadd(J12L,kmadd(J22L,PDstandardNth12gt22,kmul(J32L,PDstandardNth13gt22)),kmul(J22L,kmul(J32L,PDstandardNth23gt22))),ToReal(2))))))));
+
+ JacPDstandardNth22gt23 =
+ kmadd(dJ122L,PDstandardNth1gt23,kmadd(dJ222L,PDstandardNth2gt23,kmadd(dJ322L,PDstandardNth3gt23,kmadd(PDstandardNth11gt23,SQR(J12L),kmadd(PDstandardNth22gt23,SQR(J22L),kmadd(PDstandardNth33gt23,SQR(J32L),kmul(kmadd(J12L,kmadd(J22L,PDstandardNth12gt23,kmul(J32L,PDstandardNth13gt23)),kmul(J22L,kmul(J32L,PDstandardNth23gt23))),ToReal(2))))))));
+
+ JacPDstandardNth22gt33 =
+ kmadd(dJ122L,PDstandardNth1gt33,kmadd(dJ222L,PDstandardNth2gt33,kmadd(dJ322L,PDstandardNth3gt33,kmadd(PDstandardNth11gt33,SQR(J12L),kmadd(PDstandardNth22gt33,SQR(J22L),kmadd(PDstandardNth33gt33,SQR(J32L),kmul(kmadd(J12L,kmadd(J22L,PDstandardNth12gt33,kmul(J32L,PDstandardNth13gt33)),kmul(J22L,kmul(J32L,PDstandardNth23gt33))),ToReal(2))))))));
+
+ JacPDstandardNth22phi =
+ kmadd(dJ122L,PDstandardNth1phi,kmadd(dJ222L,PDstandardNth2phi,kmadd(dJ322L,PDstandardNth3phi,kmadd(PDstandardNth11phi,SQR(J12L),kmadd(PDstandardNth22phi,SQR(J22L),kmadd(PDstandardNth33phi,SQR(J32L),kmul(kmadd(J12L,kmadd(J22L,PDstandardNth12phi,kmul(J32L,PDstandardNth13phi)),kmul(J22L,kmul(J32L,PDstandardNth23phi))),ToReal(2))))))));
+
+ JacPDstandardNth33alpha =
+ kmadd(dJ133L,PDstandardNth1alpha,kmadd(dJ233L,PDstandardNth2alpha,kmadd(dJ333L,PDstandardNth3alpha,kmadd(PDstandardNth11alpha,SQR(J13L),kmadd(PDstandardNth22alpha,SQR(J23L),kmadd(PDstandardNth33alpha,SQR(J33L),kmul(kmadd(J13L,kmadd(J23L,PDstandardNth12alpha,kmul(J33L,PDstandardNth13alpha)),kmul(J23L,kmul(J33L,PDstandardNth23alpha))),ToReal(2))))))));
+
+ JacPDstandardNth33beta1 =
+ kmadd(dJ133L,PDstandardNth1beta1,kmadd(dJ233L,PDstandardNth2beta1,kmadd(dJ333L,PDstandardNth3beta1,kmadd(PDstandardNth11beta1,SQR(J13L),kmadd(PDstandardNth22beta1,SQR(J23L),kmadd(PDstandardNth33beta1,SQR(J33L),kmul(kmadd(J13L,kmadd(J23L,PDstandardNth12beta1,kmul(J33L,PDstandardNth13beta1)),kmul(J23L,kmul(J33L,PDstandardNth23beta1))),ToReal(2))))))));
+
+ JacPDstandardNth33beta2 =
+ kmadd(dJ133L,PDstandardNth1beta2,kmadd(dJ233L,PDstandardNth2beta2,kmadd(dJ333L,PDstandardNth3beta2,kmadd(PDstandardNth11beta2,SQR(J13L),kmadd(PDstandardNth22beta2,SQR(J23L),kmadd(PDstandardNth33beta2,SQR(J33L),kmul(kmadd(J13L,kmadd(J23L,PDstandardNth12beta2,kmul(J33L,PDstandardNth13beta2)),kmul(J23L,kmul(J33L,PDstandardNth23beta2))),ToReal(2))))))));
+
+ JacPDstandardNth33beta3 =
+ kmadd(dJ133L,PDstandardNth1beta3,kmadd(dJ233L,PDstandardNth2beta3,kmadd(dJ333L,PDstandardNth3beta3,kmadd(PDstandardNth11beta3,SQR(J13L),kmadd(PDstandardNth22beta3,SQR(J23L),kmadd(PDstandardNth33beta3,SQR(J33L),kmul(kmadd(J13L,kmadd(J23L,PDstandardNth12beta3,kmul(J33L,PDstandardNth13beta3)),kmul(J23L,kmul(J33L,PDstandardNth23beta3))),ToReal(2))))))));
+
+ JacPDstandardNth33gt11 =
+ kmadd(dJ133L,PDstandardNth1gt11,kmadd(dJ233L,PDstandardNth2gt11,kmadd(dJ333L,PDstandardNth3gt11,kmadd(PDstandardNth11gt11,SQR(J13L),kmadd(PDstandardNth22gt11,SQR(J23L),kmadd(PDstandardNth33gt11,SQR(J33L),kmul(kmadd(J13L,kmadd(J23L,PDstandardNth12gt11,kmul(J33L,PDstandardNth13gt11)),kmul(J23L,kmul(J33L,PDstandardNth23gt11))),ToReal(2))))))));
+
+ JacPDstandardNth33gt12 =
+ kmadd(dJ133L,PDstandardNth1gt12,kmadd(dJ233L,PDstandardNth2gt12,kmadd(dJ333L,PDstandardNth3gt12,kmadd(PDstandardNth11gt12,SQR(J13L),kmadd(PDstandardNth22gt12,SQR(J23L),kmadd(PDstandardNth33gt12,SQR(J33L),kmul(kmadd(J13L,kmadd(J23L,PDstandardNth12gt12,kmul(J33L,PDstandardNth13gt12)),kmul(J23L,kmul(J33L,PDstandardNth23gt12))),ToReal(2))))))));
+
+ JacPDstandardNth33gt13 =
+ kmadd(dJ133L,PDstandardNth1gt13,kmadd(dJ233L,PDstandardNth2gt13,kmadd(dJ333L,PDstandardNth3gt13,kmadd(PDstandardNth11gt13,SQR(J13L),kmadd(PDstandardNth22gt13,SQR(J23L),kmadd(PDstandardNth33gt13,SQR(J33L),kmul(kmadd(J13L,kmadd(J23L,PDstandardNth12gt13,kmul(J33L,PDstandardNth13gt13)),kmul(J23L,kmul(J33L,PDstandardNth23gt13))),ToReal(2))))))));
+
+ JacPDstandardNth33gt22 =
+ kmadd(dJ133L,PDstandardNth1gt22,kmadd(dJ233L,PDstandardNth2gt22,kmadd(dJ333L,PDstandardNth3gt22,kmadd(PDstandardNth11gt22,SQR(J13L),kmadd(PDstandardNth22gt22,SQR(J23L),kmadd(PDstandardNth33gt22,SQR(J33L),kmul(kmadd(J13L,kmadd(J23L,PDstandardNth12gt22,kmul(J33L,PDstandardNth13gt22)),kmul(J23L,kmul(J33L,PDstandardNth23gt22))),ToReal(2))))))));
+
+ JacPDstandardNth33gt23 =
+ kmadd(dJ133L,PDstandardNth1gt23,kmadd(dJ233L,PDstandardNth2gt23,kmadd(dJ333L,PDstandardNth3gt23,kmadd(PDstandardNth11gt23,SQR(J13L),kmadd(PDstandardNth22gt23,SQR(J23L),kmadd(PDstandardNth33gt23,SQR(J33L),kmul(kmadd(J13L,kmadd(J23L,PDstandardNth12gt23,kmul(J33L,PDstandardNth13gt23)),kmul(J23L,kmul(J33L,PDstandardNth23gt23))),ToReal(2))))))));
+
+ JacPDstandardNth33gt33 =
+ kmadd(dJ133L,PDstandardNth1gt33,kmadd(dJ233L,PDstandardNth2gt33,kmadd(dJ333L,PDstandardNth3gt33,kmadd(PDstandardNth11gt33,SQR(J13L),kmadd(PDstandardNth22gt33,SQR(J23L),kmadd(PDstandardNth33gt33,SQR(J33L),kmul(kmadd(J13L,kmadd(J23L,PDstandardNth12gt33,kmul(J33L,PDstandardNth13gt33)),kmul(J23L,kmul(J33L,PDstandardNth23gt33))),ToReal(2))))))));
+
+ JacPDstandardNth33phi =
+ kmadd(dJ133L,PDstandardNth1phi,kmadd(dJ233L,PDstandardNth2phi,kmadd(dJ333L,PDstandardNth3phi,kmadd(PDstandardNth11phi,SQR(J13L),kmadd(PDstandardNth22phi,SQR(J23L),kmadd(PDstandardNth33phi,SQR(J33L),kmul(kmadd(J13L,kmadd(J23L,PDstandardNth12phi,kmul(J33L,PDstandardNth13phi)),kmul(J23L,kmul(J33L,PDstandardNth23phi))),ToReal(2))))))));
+
+ JacPDstandardNth12alpha =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11alpha,kmadd(J21L,PDstandardNth12alpha,kmul(J31L,PDstandardNth13alpha))),kmadd(J11L,kmadd(J22L,PDstandardNth12alpha,kmul(J32L,PDstandardNth13alpha)),kmadd(dJ112L,PDstandardNth1alpha,kmadd(J22L,kmadd(J21L,PDstandardNth22alpha,kmul(J31L,PDstandardNth23alpha)),kmadd(dJ212L,PDstandardNth2alpha,kmadd(J32L,kmadd(J21L,PDstandardNth23alpha,kmul(J31L,PDstandardNth33alpha)),kmul(dJ312L,PDstandardNth3alpha)))))));
+
+ JacPDstandardNth12beta1 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11beta1,kmadd(J21L,PDstandardNth12beta1,kmul(J31L,PDstandardNth13beta1))),kmadd(J11L,kmadd(J22L,PDstandardNth12beta1,kmul(J32L,PDstandardNth13beta1)),kmadd(dJ112L,PDstandardNth1beta1,kmadd(J22L,kmadd(J21L,PDstandardNth22beta1,kmul(J31L,PDstandardNth23beta1)),kmadd(dJ212L,PDstandardNth2beta1,kmadd(J32L,kmadd(J21L,PDstandardNth23beta1,kmul(J31L,PDstandardNth33beta1)),kmul(dJ312L,PDstandardNth3beta1)))))));
+
+ JacPDstandardNth12beta2 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11beta2,kmadd(J21L,PDstandardNth12beta2,kmul(J31L,PDstandardNth13beta2))),kmadd(J11L,kmadd(J22L,PDstandardNth12beta2,kmul(J32L,PDstandardNth13beta2)),kmadd(dJ112L,PDstandardNth1beta2,kmadd(J22L,kmadd(J21L,PDstandardNth22beta2,kmul(J31L,PDstandardNth23beta2)),kmadd(dJ212L,PDstandardNth2beta2,kmadd(J32L,kmadd(J21L,PDstandardNth23beta2,kmul(J31L,PDstandardNth33beta2)),kmul(dJ312L,PDstandardNth3beta2)))))));
+
+ JacPDstandardNth12beta3 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11beta3,kmadd(J21L,PDstandardNth12beta3,kmul(J31L,PDstandardNth13beta3))),kmadd(J11L,kmadd(J22L,PDstandardNth12beta3,kmul(J32L,PDstandardNth13beta3)),kmadd(dJ112L,PDstandardNth1beta3,kmadd(J22L,kmadd(J21L,PDstandardNth22beta3,kmul(J31L,PDstandardNth23beta3)),kmadd(dJ212L,PDstandardNth2beta3,kmadd(J32L,kmadd(J21L,PDstandardNth23beta3,kmul(J31L,PDstandardNth33beta3)),kmul(dJ312L,PDstandardNth3beta3)))))));
+
+ JacPDstandardNth12gt11 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11gt11,kmadd(J21L,PDstandardNth12gt11,kmul(J31L,PDstandardNth13gt11))),kmadd(J11L,kmadd(J22L,PDstandardNth12gt11,kmul(J32L,PDstandardNth13gt11)),kmadd(dJ112L,PDstandardNth1gt11,kmadd(J22L,kmadd(J21L,PDstandardNth22gt11,kmul(J31L,PDstandardNth23gt11)),kmadd(dJ212L,PDstandardNth2gt11,kmadd(J32L,kmadd(J21L,PDstandardNth23gt11,kmul(J31L,PDstandardNth33gt11)),kmul(dJ312L,PDstandardNth3gt11)))))));
+
+ JacPDstandardNth12gt12 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11gt12,kmadd(J21L,PDstandardNth12gt12,kmul(J31L,PDstandardNth13gt12))),kmadd(J11L,kmadd(J22L,PDstandardNth12gt12,kmul(J32L,PDstandardNth13gt12)),kmadd(dJ112L,PDstandardNth1gt12,kmadd(J22L,kmadd(J21L,PDstandardNth22gt12,kmul(J31L,PDstandardNth23gt12)),kmadd(dJ212L,PDstandardNth2gt12,kmadd(J32L,kmadd(J21L,PDstandardNth23gt12,kmul(J31L,PDstandardNth33gt12)),kmul(dJ312L,PDstandardNth3gt12)))))));
+
+ JacPDstandardNth12gt13 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11gt13,kmadd(J21L,PDstandardNth12gt13,kmul(J31L,PDstandardNth13gt13))),kmadd(J11L,kmadd(J22L,PDstandardNth12gt13,kmul(J32L,PDstandardNth13gt13)),kmadd(dJ112L,PDstandardNth1gt13,kmadd(J22L,kmadd(J21L,PDstandardNth22gt13,kmul(J31L,PDstandardNth23gt13)),kmadd(dJ212L,PDstandardNth2gt13,kmadd(J32L,kmadd(J21L,PDstandardNth23gt13,kmul(J31L,PDstandardNth33gt13)),kmul(dJ312L,PDstandardNth3gt13)))))));
+
+ JacPDstandardNth12gt22 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11gt22,kmadd(J21L,PDstandardNth12gt22,kmul(J31L,PDstandardNth13gt22))),kmadd(J11L,kmadd(J22L,PDstandardNth12gt22,kmul(J32L,PDstandardNth13gt22)),kmadd(dJ112L,PDstandardNth1gt22,kmadd(J22L,kmadd(J21L,PDstandardNth22gt22,kmul(J31L,PDstandardNth23gt22)),kmadd(dJ212L,PDstandardNth2gt22,kmadd(J32L,kmadd(J21L,PDstandardNth23gt22,kmul(J31L,PDstandardNth33gt22)),kmul(dJ312L,PDstandardNth3gt22)))))));
+
+ JacPDstandardNth12gt23 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11gt23,kmadd(J21L,PDstandardNth12gt23,kmul(J31L,PDstandardNth13gt23))),kmadd(J11L,kmadd(J22L,PDstandardNth12gt23,kmul(J32L,PDstandardNth13gt23)),kmadd(dJ112L,PDstandardNth1gt23,kmadd(J22L,kmadd(J21L,PDstandardNth22gt23,kmul(J31L,PDstandardNth23gt23)),kmadd(dJ212L,PDstandardNth2gt23,kmadd(J32L,kmadd(J21L,PDstandardNth23gt23,kmul(J31L,PDstandardNth33gt23)),kmul(dJ312L,PDstandardNth3gt23)))))));
+
+ JacPDstandardNth12gt33 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11gt33,kmadd(J21L,PDstandardNth12gt33,kmul(J31L,PDstandardNth13gt33))),kmadd(J11L,kmadd(J22L,PDstandardNth12gt33,kmul(J32L,PDstandardNth13gt33)),kmadd(dJ112L,PDstandardNth1gt33,kmadd(J22L,kmadd(J21L,PDstandardNth22gt33,kmul(J31L,PDstandardNth23gt33)),kmadd(dJ212L,PDstandardNth2gt33,kmadd(J32L,kmadd(J21L,PDstandardNth23gt33,kmul(J31L,PDstandardNth33gt33)),kmul(dJ312L,PDstandardNth3gt33)))))));
+
+ JacPDstandardNth12phi =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11phi,kmadd(J21L,PDstandardNth12phi,kmul(J31L,PDstandardNth13phi))),kmadd(J11L,kmadd(J22L,PDstandardNth12phi,kmul(J32L,PDstandardNth13phi)),kmadd(dJ112L,PDstandardNth1phi,kmadd(J22L,kmadd(J21L,PDstandardNth22phi,kmul(J31L,PDstandardNth23phi)),kmadd(dJ212L,PDstandardNth2phi,kmadd(J32L,kmadd(J21L,PDstandardNth23phi,kmul(J31L,PDstandardNth33phi)),kmul(dJ312L,PDstandardNth3phi)))))));
+
+ JacPDstandardNth13alpha =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11alpha,kmadd(J21L,PDstandardNth12alpha,kmul(J31L,PDstandardNth13alpha))),kmadd(J11L,kmadd(J23L,PDstandardNth12alpha,kmul(J33L,PDstandardNth13alpha)),kmadd(dJ113L,PDstandardNth1alpha,kmadd(J23L,kmadd(J21L,PDstandardNth22alpha,kmul(J31L,PDstandardNth23alpha)),kmadd(dJ213L,PDstandardNth2alpha,kmadd(J33L,kmadd(J21L,PDstandardNth23alpha,kmul(J31L,PDstandardNth33alpha)),kmul(dJ313L,PDstandardNth3alpha)))))));
+
+ JacPDstandardNth13beta1 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11beta1,kmadd(J21L,PDstandardNth12beta1,kmul(J31L,PDstandardNth13beta1))),kmadd(J11L,kmadd(J23L,PDstandardNth12beta1,kmul(J33L,PDstandardNth13beta1)),kmadd(dJ113L,PDstandardNth1beta1,kmadd(J23L,kmadd(J21L,PDstandardNth22beta1,kmul(J31L,PDstandardNth23beta1)),kmadd(dJ213L,PDstandardNth2beta1,kmadd(J33L,kmadd(J21L,PDstandardNth23beta1,kmul(J31L,PDstandardNth33beta1)),kmul(dJ313L,PDstandardNth3beta1)))))));
+
+ JacPDstandardNth13beta2 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11beta2,kmadd(J21L,PDstandardNth12beta2,kmul(J31L,PDstandardNth13beta2))),kmadd(J11L,kmadd(J23L,PDstandardNth12beta2,kmul(J33L,PDstandardNth13beta2)),kmadd(dJ113L,PDstandardNth1beta2,kmadd(J23L,kmadd(J21L,PDstandardNth22beta2,kmul(J31L,PDstandardNth23beta2)),kmadd(dJ213L,PDstandardNth2beta2,kmadd(J33L,kmadd(J21L,PDstandardNth23beta2,kmul(J31L,PDstandardNth33beta2)),kmul(dJ313L,PDstandardNth3beta2)))))));
+
+ JacPDstandardNth13beta3 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11beta3,kmadd(J21L,PDstandardNth12beta3,kmul(J31L,PDstandardNth13beta3))),kmadd(J11L,kmadd(J23L,PDstandardNth12beta3,kmul(J33L,PDstandardNth13beta3)),kmadd(dJ113L,PDstandardNth1beta3,kmadd(J23L,kmadd(J21L,PDstandardNth22beta3,kmul(J31L,PDstandardNth23beta3)),kmadd(dJ213L,PDstandardNth2beta3,kmadd(J33L,kmadd(J21L,PDstandardNth23beta3,kmul(J31L,PDstandardNth33beta3)),kmul(dJ313L,PDstandardNth3beta3)))))));
+
+ JacPDstandardNth13gt11 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11gt11,kmadd(J21L,PDstandardNth12gt11,kmul(J31L,PDstandardNth13gt11))),kmadd(J11L,kmadd(J23L,PDstandardNth12gt11,kmul(J33L,PDstandardNth13gt11)),kmadd(dJ113L,PDstandardNth1gt11,kmadd(J23L,kmadd(J21L,PDstandardNth22gt11,kmul(J31L,PDstandardNth23gt11)),kmadd(dJ213L,PDstandardNth2gt11,kmadd(J33L,kmadd(J21L,PDstandardNth23gt11,kmul(J31L,PDstandardNth33gt11)),kmul(dJ313L,PDstandardNth3gt11)))))));
+
+ JacPDstandardNth13gt12 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11gt12,kmadd(J21L,PDstandardNth12gt12,kmul(J31L,PDstandardNth13gt12))),kmadd(J11L,kmadd(J23L,PDstandardNth12gt12,kmul(J33L,PDstandardNth13gt12)),kmadd(dJ113L,PDstandardNth1gt12,kmadd(J23L,kmadd(J21L,PDstandardNth22gt12,kmul(J31L,PDstandardNth23gt12)),kmadd(dJ213L,PDstandardNth2gt12,kmadd(J33L,kmadd(J21L,PDstandardNth23gt12,kmul(J31L,PDstandardNth33gt12)),kmul(dJ313L,PDstandardNth3gt12)))))));
+
+ JacPDstandardNth13gt13 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11gt13,kmadd(J21L,PDstandardNth12gt13,kmul(J31L,PDstandardNth13gt13))),kmadd(J11L,kmadd(J23L,PDstandardNth12gt13,kmul(J33L,PDstandardNth13gt13)),kmadd(dJ113L,PDstandardNth1gt13,kmadd(J23L,kmadd(J21L,PDstandardNth22gt13,kmul(J31L,PDstandardNth23gt13)),kmadd(dJ213L,PDstandardNth2gt13,kmadd(J33L,kmadd(J21L,PDstandardNth23gt13,kmul(J31L,PDstandardNth33gt13)),kmul(dJ313L,PDstandardNth3gt13)))))));
+
+ JacPDstandardNth13gt22 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11gt22,kmadd(J21L,PDstandardNth12gt22,kmul(J31L,PDstandardNth13gt22))),kmadd(J11L,kmadd(J23L,PDstandardNth12gt22,kmul(J33L,PDstandardNth13gt22)),kmadd(dJ113L,PDstandardNth1gt22,kmadd(J23L,kmadd(J21L,PDstandardNth22gt22,kmul(J31L,PDstandardNth23gt22)),kmadd(dJ213L,PDstandardNth2gt22,kmadd(J33L,kmadd(J21L,PDstandardNth23gt22,kmul(J31L,PDstandardNth33gt22)),kmul(dJ313L,PDstandardNth3gt22)))))));
+
+ JacPDstandardNth13gt23 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11gt23,kmadd(J21L,PDstandardNth12gt23,kmul(J31L,PDstandardNth13gt23))),kmadd(J11L,kmadd(J23L,PDstandardNth12gt23,kmul(J33L,PDstandardNth13gt23)),kmadd(dJ113L,PDstandardNth1gt23,kmadd(J23L,kmadd(J21L,PDstandardNth22gt23,kmul(J31L,PDstandardNth23gt23)),kmadd(dJ213L,PDstandardNth2gt23,kmadd(J33L,kmadd(J21L,PDstandardNth23gt23,kmul(J31L,PDstandardNth33gt23)),kmul(dJ313L,PDstandardNth3gt23)))))));
+
+ JacPDstandardNth13gt33 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11gt33,kmadd(J21L,PDstandardNth12gt33,kmul(J31L,PDstandardNth13gt33))),kmadd(J11L,kmadd(J23L,PDstandardNth12gt33,kmul(J33L,PDstandardNth13gt33)),kmadd(dJ113L,PDstandardNth1gt33,kmadd(J23L,kmadd(J21L,PDstandardNth22gt33,kmul(J31L,PDstandardNth23gt33)),kmadd(dJ213L,PDstandardNth2gt33,kmadd(J33L,kmadd(J21L,PDstandardNth23gt33,kmul(J31L,PDstandardNth33gt33)),kmul(dJ313L,PDstandardNth3gt33)))))));
+
+ JacPDstandardNth13phi =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11phi,kmadd(J21L,PDstandardNth12phi,kmul(J31L,PDstandardNth13phi))),kmadd(J11L,kmadd(J23L,PDstandardNth12phi,kmul(J33L,PDstandardNth13phi)),kmadd(dJ113L,PDstandardNth1phi,kmadd(J23L,kmadd(J21L,PDstandardNth22phi,kmul(J31L,PDstandardNth23phi)),kmadd(dJ213L,PDstandardNth2phi,kmadd(J33L,kmadd(J21L,PDstandardNth23phi,kmul(J31L,PDstandardNth33phi)),kmul(dJ313L,PDstandardNth3phi)))))));
+
+ JacPDstandardNth21alpha =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11alpha,kmadd(J21L,PDstandardNth12alpha,kmul(J31L,PDstandardNth13alpha))),kmadd(J11L,kmadd(J22L,PDstandardNth12alpha,kmul(J32L,PDstandardNth13alpha)),kmadd(dJ112L,PDstandardNth1alpha,kmadd(J22L,kmadd(J21L,PDstandardNth22alpha,kmul(J31L,PDstandardNth23alpha)),kmadd(dJ212L,PDstandardNth2alpha,kmadd(J32L,kmadd(J21L,PDstandardNth23alpha,kmul(J31L,PDstandardNth33alpha)),kmul(dJ312L,PDstandardNth3alpha)))))));
+
+ JacPDstandardNth21beta1 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11beta1,kmadd(J21L,PDstandardNth12beta1,kmul(J31L,PDstandardNth13beta1))),kmadd(J11L,kmadd(J22L,PDstandardNth12beta1,kmul(J32L,PDstandardNth13beta1)),kmadd(dJ112L,PDstandardNth1beta1,kmadd(J22L,kmadd(J21L,PDstandardNth22beta1,kmul(J31L,PDstandardNth23beta1)),kmadd(dJ212L,PDstandardNth2beta1,kmadd(J32L,kmadd(J21L,PDstandardNth23beta1,kmul(J31L,PDstandardNth33beta1)),kmul(dJ312L,PDstandardNth3beta1)))))));
+
+ JacPDstandardNth21beta2 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11beta2,kmadd(J21L,PDstandardNth12beta2,kmul(J31L,PDstandardNth13beta2))),kmadd(J11L,kmadd(J22L,PDstandardNth12beta2,kmul(J32L,PDstandardNth13beta2)),kmadd(dJ112L,PDstandardNth1beta2,kmadd(J22L,kmadd(J21L,PDstandardNth22beta2,kmul(J31L,PDstandardNth23beta2)),kmadd(dJ212L,PDstandardNth2beta2,kmadd(J32L,kmadd(J21L,PDstandardNth23beta2,kmul(J31L,PDstandardNth33beta2)),kmul(dJ312L,PDstandardNth3beta2)))))));
+
+ JacPDstandardNth21beta3 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11beta3,kmadd(J21L,PDstandardNth12beta3,kmul(J31L,PDstandardNth13beta3))),kmadd(J11L,kmadd(J22L,PDstandardNth12beta3,kmul(J32L,PDstandardNth13beta3)),kmadd(dJ112L,PDstandardNth1beta3,kmadd(J22L,kmadd(J21L,PDstandardNth22beta3,kmul(J31L,PDstandardNth23beta3)),kmadd(dJ212L,PDstandardNth2beta3,kmadd(J32L,kmadd(J21L,PDstandardNth23beta3,kmul(J31L,PDstandardNth33beta3)),kmul(dJ312L,PDstandardNth3beta3)))))));
+
+ JacPDstandardNth21gt11 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11gt11,kmadd(J21L,PDstandardNth12gt11,kmul(J31L,PDstandardNth13gt11))),kmadd(J11L,kmadd(J22L,PDstandardNth12gt11,kmul(J32L,PDstandardNth13gt11)),kmadd(dJ112L,PDstandardNth1gt11,kmadd(J22L,kmadd(J21L,PDstandardNth22gt11,kmul(J31L,PDstandardNth23gt11)),kmadd(dJ212L,PDstandardNth2gt11,kmadd(J32L,kmadd(J21L,PDstandardNth23gt11,kmul(J31L,PDstandardNth33gt11)),kmul(dJ312L,PDstandardNth3gt11)))))));
+
+ JacPDstandardNth21gt12 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11gt12,kmadd(J21L,PDstandardNth12gt12,kmul(J31L,PDstandardNth13gt12))),kmadd(J11L,kmadd(J22L,PDstandardNth12gt12,kmul(J32L,PDstandardNth13gt12)),kmadd(dJ112L,PDstandardNth1gt12,kmadd(J22L,kmadd(J21L,PDstandardNth22gt12,kmul(J31L,PDstandardNth23gt12)),kmadd(dJ212L,PDstandardNth2gt12,kmadd(J32L,kmadd(J21L,PDstandardNth23gt12,kmul(J31L,PDstandardNth33gt12)),kmul(dJ312L,PDstandardNth3gt12)))))));
+
+ JacPDstandardNth21gt13 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11gt13,kmadd(J21L,PDstandardNth12gt13,kmul(J31L,PDstandardNth13gt13))),kmadd(J11L,kmadd(J22L,PDstandardNth12gt13,kmul(J32L,PDstandardNth13gt13)),kmadd(dJ112L,PDstandardNth1gt13,kmadd(J22L,kmadd(J21L,PDstandardNth22gt13,kmul(J31L,PDstandardNth23gt13)),kmadd(dJ212L,PDstandardNth2gt13,kmadd(J32L,kmadd(J21L,PDstandardNth23gt13,kmul(J31L,PDstandardNth33gt13)),kmul(dJ312L,PDstandardNth3gt13)))))));
+
+ JacPDstandardNth21gt22 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11gt22,kmadd(J21L,PDstandardNth12gt22,kmul(J31L,PDstandardNth13gt22))),kmadd(J11L,kmadd(J22L,PDstandardNth12gt22,kmul(J32L,PDstandardNth13gt22)),kmadd(dJ112L,PDstandardNth1gt22,kmadd(J22L,kmadd(J21L,PDstandardNth22gt22,kmul(J31L,PDstandardNth23gt22)),kmadd(dJ212L,PDstandardNth2gt22,kmadd(J32L,kmadd(J21L,PDstandardNth23gt22,kmul(J31L,PDstandardNth33gt22)),kmul(dJ312L,PDstandardNth3gt22)))))));
+
+ JacPDstandardNth21gt23 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11gt23,kmadd(J21L,PDstandardNth12gt23,kmul(J31L,PDstandardNth13gt23))),kmadd(J11L,kmadd(J22L,PDstandardNth12gt23,kmul(J32L,PDstandardNth13gt23)),kmadd(dJ112L,PDstandardNth1gt23,kmadd(J22L,kmadd(J21L,PDstandardNth22gt23,kmul(J31L,PDstandardNth23gt23)),kmadd(dJ212L,PDstandardNth2gt23,kmadd(J32L,kmadd(J21L,PDstandardNth23gt23,kmul(J31L,PDstandardNth33gt23)),kmul(dJ312L,PDstandardNth3gt23)))))));
+
+ JacPDstandardNth21gt33 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11gt33,kmadd(J21L,PDstandardNth12gt33,kmul(J31L,PDstandardNth13gt33))),kmadd(J11L,kmadd(J22L,PDstandardNth12gt33,kmul(J32L,PDstandardNth13gt33)),kmadd(dJ112L,PDstandardNth1gt33,kmadd(J22L,kmadd(J21L,PDstandardNth22gt33,kmul(J31L,PDstandardNth23gt33)),kmadd(dJ212L,PDstandardNth2gt33,kmadd(J32L,kmadd(J21L,PDstandardNth23gt33,kmul(J31L,PDstandardNth33gt33)),kmul(dJ312L,PDstandardNth3gt33)))))));
+
+ JacPDstandardNth23alpha =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11alpha,kmadd(J22L,PDstandardNth12alpha,kmul(J32L,PDstandardNth13alpha))),kmadd(J12L,kmadd(J23L,PDstandardNth12alpha,kmul(J33L,PDstandardNth13alpha)),kmadd(dJ123L,PDstandardNth1alpha,kmadd(J23L,kmadd(J22L,PDstandardNth22alpha,kmul(J32L,PDstandardNth23alpha)),kmadd(dJ223L,PDstandardNth2alpha,kmadd(J33L,kmadd(J22L,PDstandardNth23alpha,kmul(J32L,PDstandardNth33alpha)),kmul(dJ323L,PDstandardNth3alpha)))))));
+
+ JacPDstandardNth23beta1 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11beta1,kmadd(J22L,PDstandardNth12beta1,kmul(J32L,PDstandardNth13beta1))),kmadd(J12L,kmadd(J23L,PDstandardNth12beta1,kmul(J33L,PDstandardNth13beta1)),kmadd(dJ123L,PDstandardNth1beta1,kmadd(J23L,kmadd(J22L,PDstandardNth22beta1,kmul(J32L,PDstandardNth23beta1)),kmadd(dJ223L,PDstandardNth2beta1,kmadd(J33L,kmadd(J22L,PDstandardNth23beta1,kmul(J32L,PDstandardNth33beta1)),kmul(dJ323L,PDstandardNth3beta1)))))));
+
+ JacPDstandardNth23beta2 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11beta2,kmadd(J22L,PDstandardNth12beta2,kmul(J32L,PDstandardNth13beta2))),kmadd(J12L,kmadd(J23L,PDstandardNth12beta2,kmul(J33L,PDstandardNth13beta2)),kmadd(dJ123L,PDstandardNth1beta2,kmadd(J23L,kmadd(J22L,PDstandardNth22beta2,kmul(J32L,PDstandardNth23beta2)),kmadd(dJ223L,PDstandardNth2beta2,kmadd(J33L,kmadd(J22L,PDstandardNth23beta2,kmul(J32L,PDstandardNth33beta2)),kmul(dJ323L,PDstandardNth3beta2)))))));
+
+ JacPDstandardNth23beta3 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11beta3,kmadd(J22L,PDstandardNth12beta3,kmul(J32L,PDstandardNth13beta3))),kmadd(J12L,kmadd(J23L,PDstandardNth12beta3,kmul(J33L,PDstandardNth13beta3)),kmadd(dJ123L,PDstandardNth1beta3,kmadd(J23L,kmadd(J22L,PDstandardNth22beta3,kmul(J32L,PDstandardNth23beta3)),kmadd(dJ223L,PDstandardNth2beta3,kmadd(J33L,kmadd(J22L,PDstandardNth23beta3,kmul(J32L,PDstandardNth33beta3)),kmul(dJ323L,PDstandardNth3beta3)))))));
+
+ JacPDstandardNth23gt11 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11gt11,kmadd(J22L,PDstandardNth12gt11,kmul(J32L,PDstandardNth13gt11))),kmadd(J12L,kmadd(J23L,PDstandardNth12gt11,kmul(J33L,PDstandardNth13gt11)),kmadd(dJ123L,PDstandardNth1gt11,kmadd(J23L,kmadd(J22L,PDstandardNth22gt11,kmul(J32L,PDstandardNth23gt11)),kmadd(dJ223L,PDstandardNth2gt11,kmadd(J33L,kmadd(J22L,PDstandardNth23gt11,kmul(J32L,PDstandardNth33gt11)),kmul(dJ323L,PDstandardNth3gt11)))))));
+
+ JacPDstandardNth23gt12 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11gt12,kmadd(J22L,PDstandardNth12gt12,kmul(J32L,PDstandardNth13gt12))),kmadd(J12L,kmadd(J23L,PDstandardNth12gt12,kmul(J33L,PDstandardNth13gt12)),kmadd(dJ123L,PDstandardNth1gt12,kmadd(J23L,kmadd(J22L,PDstandardNth22gt12,kmul(J32L,PDstandardNth23gt12)),kmadd(dJ223L,PDstandardNth2gt12,kmadd(J33L,kmadd(J22L,PDstandardNth23gt12,kmul(J32L,PDstandardNth33gt12)),kmul(dJ323L,PDstandardNth3gt12)))))));
+
+ JacPDstandardNth23gt13 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11gt13,kmadd(J22L,PDstandardNth12gt13,kmul(J32L,PDstandardNth13gt13))),kmadd(J12L,kmadd(J23L,PDstandardNth12gt13,kmul(J33L,PDstandardNth13gt13)),kmadd(dJ123L,PDstandardNth1gt13,kmadd(J23L,kmadd(J22L,PDstandardNth22gt13,kmul(J32L,PDstandardNth23gt13)),kmadd(dJ223L,PDstandardNth2gt13,kmadd(J33L,kmadd(J22L,PDstandardNth23gt13,kmul(J32L,PDstandardNth33gt13)),kmul(dJ323L,PDstandardNth3gt13)))))));
+
+ JacPDstandardNth23gt22 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11gt22,kmadd(J22L,PDstandardNth12gt22,kmul(J32L,PDstandardNth13gt22))),kmadd(J12L,kmadd(J23L,PDstandardNth12gt22,kmul(J33L,PDstandardNth13gt22)),kmadd(dJ123L,PDstandardNth1gt22,kmadd(J23L,kmadd(J22L,PDstandardNth22gt22,kmul(J32L,PDstandardNth23gt22)),kmadd(dJ223L,PDstandardNth2gt22,kmadd(J33L,kmadd(J22L,PDstandardNth23gt22,kmul(J32L,PDstandardNth33gt22)),kmul(dJ323L,PDstandardNth3gt22)))))));
+
+ JacPDstandardNth23gt23 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11gt23,kmadd(J22L,PDstandardNth12gt23,kmul(J32L,PDstandardNth13gt23))),kmadd(J12L,kmadd(J23L,PDstandardNth12gt23,kmul(J33L,PDstandardNth13gt23)),kmadd(dJ123L,PDstandardNth1gt23,kmadd(J23L,kmadd(J22L,PDstandardNth22gt23,kmul(J32L,PDstandardNth23gt23)),kmadd(dJ223L,PDstandardNth2gt23,kmadd(J33L,kmadd(J22L,PDstandardNth23gt23,kmul(J32L,PDstandardNth33gt23)),kmul(dJ323L,PDstandardNth3gt23)))))));
+
+ JacPDstandardNth23gt33 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11gt33,kmadd(J22L,PDstandardNth12gt33,kmul(J32L,PDstandardNth13gt33))),kmadd(J12L,kmadd(J23L,PDstandardNth12gt33,kmul(J33L,PDstandardNth13gt33)),kmadd(dJ123L,PDstandardNth1gt33,kmadd(J23L,kmadd(J22L,PDstandardNth22gt33,kmul(J32L,PDstandardNth23gt33)),kmadd(dJ223L,PDstandardNth2gt33,kmadd(J33L,kmadd(J22L,PDstandardNth23gt33,kmul(J32L,PDstandardNth33gt33)),kmul(dJ323L,PDstandardNth3gt33)))))));
+
+ JacPDstandardNth23phi =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11phi,kmadd(J22L,PDstandardNth12phi,kmul(J32L,PDstandardNth13phi))),kmadd(J12L,kmadd(J23L,PDstandardNth12phi,kmul(J33L,PDstandardNth13phi)),kmadd(dJ123L,PDstandardNth1phi,kmadd(J23L,kmadd(J22L,PDstandardNth22phi,kmul(J32L,PDstandardNth23phi)),kmadd(dJ223L,PDstandardNth2phi,kmadd(J33L,kmadd(J22L,PDstandardNth23phi,kmul(J32L,PDstandardNth33phi)),kmul(dJ323L,PDstandardNth3phi)))))));
+
+ JacPDstandardNth31alpha =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11alpha,kmadd(J21L,PDstandardNth12alpha,kmul(J31L,PDstandardNth13alpha))),kmadd(J11L,kmadd(J23L,PDstandardNth12alpha,kmul(J33L,PDstandardNth13alpha)),kmadd(dJ113L,PDstandardNth1alpha,kmadd(J23L,kmadd(J21L,PDstandardNth22alpha,kmul(J31L,PDstandardNth23alpha)),kmadd(dJ213L,PDstandardNth2alpha,kmadd(J33L,kmadd(J21L,PDstandardNth23alpha,kmul(J31L,PDstandardNth33alpha)),kmul(dJ313L,PDstandardNth3alpha)))))));
+
+ JacPDstandardNth31beta1 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11beta1,kmadd(J21L,PDstandardNth12beta1,kmul(J31L,PDstandardNth13beta1))),kmadd(J11L,kmadd(J23L,PDstandardNth12beta1,kmul(J33L,PDstandardNth13beta1)),kmadd(dJ113L,PDstandardNth1beta1,kmadd(J23L,kmadd(J21L,PDstandardNth22beta1,kmul(J31L,PDstandardNth23beta1)),kmadd(dJ213L,PDstandardNth2beta1,kmadd(J33L,kmadd(J21L,PDstandardNth23beta1,kmul(J31L,PDstandardNth33beta1)),kmul(dJ313L,PDstandardNth3beta1)))))));
+
+ JacPDstandardNth31beta2 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11beta2,kmadd(J21L,PDstandardNth12beta2,kmul(J31L,PDstandardNth13beta2))),kmadd(J11L,kmadd(J23L,PDstandardNth12beta2,kmul(J33L,PDstandardNth13beta2)),kmadd(dJ113L,PDstandardNth1beta2,kmadd(J23L,kmadd(J21L,PDstandardNth22beta2,kmul(J31L,PDstandardNth23beta2)),kmadd(dJ213L,PDstandardNth2beta2,kmadd(J33L,kmadd(J21L,PDstandardNth23beta2,kmul(J31L,PDstandardNth33beta2)),kmul(dJ313L,PDstandardNth3beta2)))))));
+
+ JacPDstandardNth31beta3 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11beta3,kmadd(J21L,PDstandardNth12beta3,kmul(J31L,PDstandardNth13beta3))),kmadd(J11L,kmadd(J23L,PDstandardNth12beta3,kmul(J33L,PDstandardNth13beta3)),kmadd(dJ113L,PDstandardNth1beta3,kmadd(J23L,kmadd(J21L,PDstandardNth22beta3,kmul(J31L,PDstandardNth23beta3)),kmadd(dJ213L,PDstandardNth2beta3,kmadd(J33L,kmadd(J21L,PDstandardNth23beta3,kmul(J31L,PDstandardNth33beta3)),kmul(dJ313L,PDstandardNth3beta3)))))));
+
+ JacPDstandardNth31gt11 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11gt11,kmadd(J21L,PDstandardNth12gt11,kmul(J31L,PDstandardNth13gt11))),kmadd(J11L,kmadd(J23L,PDstandardNth12gt11,kmul(J33L,PDstandardNth13gt11)),kmadd(dJ113L,PDstandardNth1gt11,kmadd(J23L,kmadd(J21L,PDstandardNth22gt11,kmul(J31L,PDstandardNth23gt11)),kmadd(dJ213L,PDstandardNth2gt11,kmadd(J33L,kmadd(J21L,PDstandardNth23gt11,kmul(J31L,PDstandardNth33gt11)),kmul(dJ313L,PDstandardNth3gt11)))))));
+
+ JacPDstandardNth31gt12 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11gt12,kmadd(J21L,PDstandardNth12gt12,kmul(J31L,PDstandardNth13gt12))),kmadd(J11L,kmadd(J23L,PDstandardNth12gt12,kmul(J33L,PDstandardNth13gt12)),kmadd(dJ113L,PDstandardNth1gt12,kmadd(J23L,kmadd(J21L,PDstandardNth22gt12,kmul(J31L,PDstandardNth23gt12)),kmadd(dJ213L,PDstandardNth2gt12,kmadd(J33L,kmadd(J21L,PDstandardNth23gt12,kmul(J31L,PDstandardNth33gt12)),kmul(dJ313L,PDstandardNth3gt12)))))));
+
+ JacPDstandardNth31gt13 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11gt13,kmadd(J21L,PDstandardNth12gt13,kmul(J31L,PDstandardNth13gt13))),kmadd(J11L,kmadd(J23L,PDstandardNth12gt13,kmul(J33L,PDstandardNth13gt13)),kmadd(dJ113L,PDstandardNth1gt13,kmadd(J23L,kmadd(J21L,PDstandardNth22gt13,kmul(J31L,PDstandardNth23gt13)),kmadd(dJ213L,PDstandardNth2gt13,kmadd(J33L,kmadd(J21L,PDstandardNth23gt13,kmul(J31L,PDstandardNth33gt13)),kmul(dJ313L,PDstandardNth3gt13)))))));
+
+ JacPDstandardNth31gt22 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11gt22,kmadd(J21L,PDstandardNth12gt22,kmul(J31L,PDstandardNth13gt22))),kmadd(J11L,kmadd(J23L,PDstandardNth12gt22,kmul(J33L,PDstandardNth13gt22)),kmadd(dJ113L,PDstandardNth1gt22,kmadd(J23L,kmadd(J21L,PDstandardNth22gt22,kmul(J31L,PDstandardNth23gt22)),kmadd(dJ213L,PDstandardNth2gt22,kmadd(J33L,kmadd(J21L,PDstandardNth23gt22,kmul(J31L,PDstandardNth33gt22)),kmul(dJ313L,PDstandardNth3gt22)))))));
+
+ JacPDstandardNth31gt23 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11gt23,kmadd(J21L,PDstandardNth12gt23,kmul(J31L,PDstandardNth13gt23))),kmadd(J11L,kmadd(J23L,PDstandardNth12gt23,kmul(J33L,PDstandardNth13gt23)),kmadd(dJ113L,PDstandardNth1gt23,kmadd(J23L,kmadd(J21L,PDstandardNth22gt23,kmul(J31L,PDstandardNth23gt23)),kmadd(dJ213L,PDstandardNth2gt23,kmadd(J33L,kmadd(J21L,PDstandardNth23gt23,kmul(J31L,PDstandardNth33gt23)),kmul(dJ313L,PDstandardNth3gt23)))))));
+
+ JacPDstandardNth31gt33 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11gt33,kmadd(J21L,PDstandardNth12gt33,kmul(J31L,PDstandardNth13gt33))),kmadd(J11L,kmadd(J23L,PDstandardNth12gt33,kmul(J33L,PDstandardNth13gt33)),kmadd(dJ113L,PDstandardNth1gt33,kmadd(J23L,kmadd(J21L,PDstandardNth22gt33,kmul(J31L,PDstandardNth23gt33)),kmadd(dJ213L,PDstandardNth2gt33,kmadd(J33L,kmadd(J21L,PDstandardNth23gt33,kmul(J31L,PDstandardNth33gt33)),kmul(dJ313L,PDstandardNth3gt33)))))));
+
+ JacPDstandardNth32alpha =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11alpha,kmadd(J22L,PDstandardNth12alpha,kmul(J32L,PDstandardNth13alpha))),kmadd(J12L,kmadd(J23L,PDstandardNth12alpha,kmul(J33L,PDstandardNth13alpha)),kmadd(dJ123L,PDstandardNth1alpha,kmadd(J23L,kmadd(J22L,PDstandardNth22alpha,kmul(J32L,PDstandardNth23alpha)),kmadd(dJ223L,PDstandardNth2alpha,kmadd(J33L,kmadd(J22L,PDstandardNth23alpha,kmul(J32L,PDstandardNth33alpha)),kmul(dJ323L,PDstandardNth3alpha)))))));
+
+ JacPDstandardNth32beta1 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11beta1,kmadd(J22L,PDstandardNth12beta1,kmul(J32L,PDstandardNth13beta1))),kmadd(J12L,kmadd(J23L,PDstandardNth12beta1,kmul(J33L,PDstandardNth13beta1)),kmadd(dJ123L,PDstandardNth1beta1,kmadd(J23L,kmadd(J22L,PDstandardNth22beta1,kmul(J32L,PDstandardNth23beta1)),kmadd(dJ223L,PDstandardNth2beta1,kmadd(J33L,kmadd(J22L,PDstandardNth23beta1,kmul(J32L,PDstandardNth33beta1)),kmul(dJ323L,PDstandardNth3beta1)))))));
+
+ JacPDstandardNth32beta2 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11beta2,kmadd(J22L,PDstandardNth12beta2,kmul(J32L,PDstandardNth13beta2))),kmadd(J12L,kmadd(J23L,PDstandardNth12beta2,kmul(J33L,PDstandardNth13beta2)),kmadd(dJ123L,PDstandardNth1beta2,kmadd(J23L,kmadd(J22L,PDstandardNth22beta2,kmul(J32L,PDstandardNth23beta2)),kmadd(dJ223L,PDstandardNth2beta2,kmadd(J33L,kmadd(J22L,PDstandardNth23beta2,kmul(J32L,PDstandardNth33beta2)),kmul(dJ323L,PDstandardNth3beta2)))))));
+
+ JacPDstandardNth32beta3 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11beta3,kmadd(J22L,PDstandardNth12beta3,kmul(J32L,PDstandardNth13beta3))),kmadd(J12L,kmadd(J23L,PDstandardNth12beta3,kmul(J33L,PDstandardNth13beta3)),kmadd(dJ123L,PDstandardNth1beta3,kmadd(J23L,kmadd(J22L,PDstandardNth22beta3,kmul(J32L,PDstandardNth23beta3)),kmadd(dJ223L,PDstandardNth2beta3,kmadd(J33L,kmadd(J22L,PDstandardNth23beta3,kmul(J32L,PDstandardNth33beta3)),kmul(dJ323L,PDstandardNth3beta3)))))));
+
+ JacPDstandardNth32gt11 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11gt11,kmadd(J22L,PDstandardNth12gt11,kmul(J32L,PDstandardNth13gt11))),kmadd(J12L,kmadd(J23L,PDstandardNth12gt11,kmul(J33L,PDstandardNth13gt11)),kmadd(dJ123L,PDstandardNth1gt11,kmadd(J23L,kmadd(J22L,PDstandardNth22gt11,kmul(J32L,PDstandardNth23gt11)),kmadd(dJ223L,PDstandardNth2gt11,kmadd(J33L,kmadd(J22L,PDstandardNth23gt11,kmul(J32L,PDstandardNth33gt11)),kmul(dJ323L,PDstandardNth3gt11)))))));
+
+ JacPDstandardNth32gt12 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11gt12,kmadd(J22L,PDstandardNth12gt12,kmul(J32L,PDstandardNth13gt12))),kmadd(J12L,kmadd(J23L,PDstandardNth12gt12,kmul(J33L,PDstandardNth13gt12)),kmadd(dJ123L,PDstandardNth1gt12,kmadd(J23L,kmadd(J22L,PDstandardNth22gt12,kmul(J32L,PDstandardNth23gt12)),kmadd(dJ223L,PDstandardNth2gt12,kmadd(J33L,kmadd(J22L,PDstandardNth23gt12,kmul(J32L,PDstandardNth33gt12)),kmul(dJ323L,PDstandardNth3gt12)))))));
+
+ JacPDstandardNth32gt13 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11gt13,kmadd(J22L,PDstandardNth12gt13,kmul(J32L,PDstandardNth13gt13))),kmadd(J12L,kmadd(J23L,PDstandardNth12gt13,kmul(J33L,PDstandardNth13gt13)),kmadd(dJ123L,PDstandardNth1gt13,kmadd(J23L,kmadd(J22L,PDstandardNth22gt13,kmul(J32L,PDstandardNth23gt13)),kmadd(dJ223L,PDstandardNth2gt13,kmadd(J33L,kmadd(J22L,PDstandardNth23gt13,kmul(J32L,PDstandardNth33gt13)),kmul(dJ323L,PDstandardNth3gt13)))))));
+
+ JacPDstandardNth32gt22 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11gt22,kmadd(J22L,PDstandardNth12gt22,kmul(J32L,PDstandardNth13gt22))),kmadd(J12L,kmadd(J23L,PDstandardNth12gt22,kmul(J33L,PDstandardNth13gt22)),kmadd(dJ123L,PDstandardNth1gt22,kmadd(J23L,kmadd(J22L,PDstandardNth22gt22,kmul(J32L,PDstandardNth23gt22)),kmadd(dJ223L,PDstandardNth2gt22,kmadd(J33L,kmadd(J22L,PDstandardNth23gt22,kmul(J32L,PDstandardNth33gt22)),kmul(dJ323L,PDstandardNth3gt22)))))));
+
+ JacPDstandardNth32gt23 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11gt23,kmadd(J22L,PDstandardNth12gt23,kmul(J32L,PDstandardNth13gt23))),kmadd(J12L,kmadd(J23L,PDstandardNth12gt23,kmul(J33L,PDstandardNth13gt23)),kmadd(dJ123L,PDstandardNth1gt23,kmadd(J23L,kmadd(J22L,PDstandardNth22gt23,kmul(J32L,PDstandardNth23gt23)),kmadd(dJ223L,PDstandardNth2gt23,kmadd(J33L,kmadd(J22L,PDstandardNth23gt23,kmul(J32L,PDstandardNth33gt23)),kmul(dJ323L,PDstandardNth3gt23)))))));
+
+ JacPDstandardNth32gt33 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11gt33,kmadd(J22L,PDstandardNth12gt33,kmul(J32L,PDstandardNth13gt33))),kmadd(J12L,kmadd(J23L,PDstandardNth12gt33,kmul(J33L,PDstandardNth13gt33)),kmadd(dJ123L,PDstandardNth1gt33,kmadd(J23L,kmadd(J22L,PDstandardNth22gt33,kmul(J32L,PDstandardNth23gt33)),kmadd(dJ223L,PDstandardNth2gt33,kmadd(J33L,kmadd(J22L,PDstandardNth23gt33,kmul(J32L,PDstandardNth33gt33)),kmul(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;
+
+ JacPDstandardNth1Theta = PDstandardNth1Theta;
+
+ JacPDstandardNth1trK = PDstandardNth1trK;
+
+ 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;
+
+ JacPDstandardNth2Theta = PDstandardNth2Theta;
+
+ JacPDstandardNth2trK = PDstandardNth2trK;
+
+ 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;
+
+ JacPDstandardNth3Theta = PDstandardNth3Theta;
+
+ JacPDstandardNth3trK = PDstandardNth3trK;
+
+ JacPDstandardNth3Xt1 = PDstandardNth3Xt1;
+
+ JacPDstandardNth3Xt2 = PDstandardNth3Xt2;
+
+ JacPDstandardNth3Xt3 = PDstandardNth3Xt3;
+
+ JacPDstandardNth11alpha = PDstandardNth11alpha;
+
+ JacPDstandardNth11beta1 = PDstandardNth11beta1;
+
+ JacPDstandardNth11beta2 = PDstandardNth11beta2;
+
+ JacPDstandardNth11beta3 = PDstandardNth11beta3;
+
+ JacPDstandardNth11gt11 = PDstandardNth11gt11;
+
+ JacPDstandardNth11gt12 = PDstandardNth11gt12;
+
+ JacPDstandardNth11gt13 = PDstandardNth11gt13;
+
+ JacPDstandardNth11gt22 = PDstandardNth11gt22;
+
+ JacPDstandardNth11gt23 = PDstandardNth11gt23;
+
+ JacPDstandardNth11gt33 = PDstandardNth11gt33;
+
+ JacPDstandardNth11phi = PDstandardNth11phi;
+
+ JacPDstandardNth22alpha = PDstandardNth22alpha;
+
+ JacPDstandardNth22beta1 = PDstandardNth22beta1;
+
+ JacPDstandardNth22beta2 = PDstandardNth22beta2;
+
+ JacPDstandardNth22beta3 = PDstandardNth22beta3;
+
+ JacPDstandardNth22gt11 = PDstandardNth22gt11;
+
+ JacPDstandardNth22gt12 = PDstandardNth22gt12;
+
+ JacPDstandardNth22gt13 = PDstandardNth22gt13;
+
+ JacPDstandardNth22gt22 = PDstandardNth22gt22;
+
+ JacPDstandardNth22gt23 = PDstandardNth22gt23;
+
+ JacPDstandardNth22gt33 = PDstandardNth22gt33;
+
+ JacPDstandardNth22phi = PDstandardNth22phi;
+
+ JacPDstandardNth33alpha = PDstandardNth33alpha;
+
+ JacPDstandardNth33beta1 = PDstandardNth33beta1;
+
+ JacPDstandardNth33beta2 = PDstandardNth33beta2;
+
+ JacPDstandardNth33beta3 = PDstandardNth33beta3;
+
+ JacPDstandardNth33gt11 = PDstandardNth33gt11;
+
+ JacPDstandardNth33gt12 = PDstandardNth33gt12;
+
+ JacPDstandardNth33gt13 = PDstandardNth33gt13;
+
+ JacPDstandardNth33gt22 = PDstandardNth33gt22;
+
+ JacPDstandardNth33gt23 = PDstandardNth33gt23;
+
+ JacPDstandardNth33gt33 = PDstandardNth33gt33;
+
+ JacPDstandardNth33phi = PDstandardNth33phi;
+
+ JacPDstandardNth12alpha = PDstandardNth12alpha;
+
+ JacPDstandardNth12beta1 = PDstandardNth12beta1;
+
+ JacPDstandardNth12beta2 = PDstandardNth12beta2;
+
+ JacPDstandardNth12beta3 = PDstandardNth12beta3;
+
+ JacPDstandardNth12gt11 = PDstandardNth12gt11;
+
+ JacPDstandardNth12gt12 = PDstandardNth12gt12;
+
+ JacPDstandardNth12gt13 = PDstandardNth12gt13;
+
+ JacPDstandardNth12gt22 = PDstandardNth12gt22;
+
+ JacPDstandardNth12gt23 = PDstandardNth12gt23;
+
+ JacPDstandardNth12gt33 = PDstandardNth12gt33;
+
+ JacPDstandardNth12phi = PDstandardNth12phi;
+
+ JacPDstandardNth13alpha = PDstandardNth13alpha;
+
+ JacPDstandardNth13beta1 = PDstandardNth13beta1;
+
+ JacPDstandardNth13beta2 = PDstandardNth13beta2;
+
+ JacPDstandardNth13beta3 = PDstandardNth13beta3;
+
+ JacPDstandardNth13gt11 = PDstandardNth13gt11;
+
+ JacPDstandardNth13gt12 = PDstandardNth13gt12;
+
+ JacPDstandardNth13gt13 = PDstandardNth13gt13;
+
+ JacPDstandardNth13gt22 = PDstandardNth13gt22;
+
+ JacPDstandardNth13gt23 = PDstandardNth13gt23;
+
+ JacPDstandardNth13gt33 = PDstandardNth13gt33;
+
+ JacPDstandardNth13phi = PDstandardNth13phi;
+
+ JacPDstandardNth21alpha = PDstandardNth12alpha;
+
+ JacPDstandardNth21beta1 = PDstandardNth12beta1;
+
+ JacPDstandardNth21beta2 = PDstandardNth12beta2;
+
+ JacPDstandardNth21beta3 = PDstandardNth12beta3;
+
+ JacPDstandardNth21gt11 = PDstandardNth12gt11;
+
+ JacPDstandardNth21gt12 = PDstandardNth12gt12;
+
+ JacPDstandardNth21gt13 = PDstandardNth12gt13;
+
+ JacPDstandardNth21gt22 = PDstandardNth12gt22;
+
+ JacPDstandardNth21gt23 = PDstandardNth12gt23;
+
+ JacPDstandardNth21gt33 = PDstandardNth12gt33;
+
+ JacPDstandardNth23alpha = PDstandardNth23alpha;
+
+ JacPDstandardNth23beta1 = PDstandardNth23beta1;
+
+ JacPDstandardNth23beta2 = PDstandardNth23beta2;
+
+ JacPDstandardNth23beta3 = PDstandardNth23beta3;
+
+ JacPDstandardNth23gt11 = PDstandardNth23gt11;
+
+ JacPDstandardNth23gt12 = PDstandardNth23gt12;
+
+ JacPDstandardNth23gt13 = PDstandardNth23gt13;
+
+ JacPDstandardNth23gt22 = PDstandardNth23gt22;
+
+ JacPDstandardNth23gt23 = PDstandardNth23gt23;
+
+ JacPDstandardNth23gt33 = PDstandardNth23gt33;
+
+ JacPDstandardNth23phi = PDstandardNth23phi;
+
+ JacPDstandardNth31alpha = PDstandardNth13alpha;
+
+ JacPDstandardNth31beta1 = PDstandardNth13beta1;
+
+ JacPDstandardNth31beta2 = PDstandardNth13beta2;
+
+ JacPDstandardNth31beta3 = PDstandardNth13beta3;
+
+ JacPDstandardNth31gt11 = PDstandardNth13gt11;
+
+ JacPDstandardNth31gt12 = PDstandardNth13gt12;
+
+ JacPDstandardNth31gt13 = PDstandardNth13gt13;
+
+ JacPDstandardNth31gt22 = PDstandardNth13gt22;
+
+ JacPDstandardNth31gt23 = PDstandardNth13gt23;
+
+ JacPDstandardNth31gt33 = PDstandardNth13gt33;
+
+ JacPDstandardNth32alpha = PDstandardNth23alpha;
+
+ JacPDstandardNth32beta1 = PDstandardNth23beta1;
+
+ JacPDstandardNth32beta2 = PDstandardNth23beta2;
+
+ JacPDstandardNth32beta3 = PDstandardNth23beta3;
+
+ JacPDstandardNth32gt11 = PDstandardNth23gt11;
+
+ JacPDstandardNth32gt12 = PDstandardNth23gt12;
+
+ JacPDstandardNth32gt13 = PDstandardNth23gt13;
+
+ JacPDstandardNth32gt22 = PDstandardNth23gt22;
+
+ JacPDstandardNth32gt23 = PDstandardNth23gt23;
+
+ JacPDstandardNth32gt33 = PDstandardNth23gt33;
+ }
+
+ CCTK_REAL_VEC detgt = ToReal(1);
+
+ CCTK_REAL_VEC gtu11 =
+ kmul(INV(detgt),kmsub(gt22L,gt33L,SQR(gt23L)));
+
+ CCTK_REAL_VEC gtu12 =
+ kmul(INV(detgt),kmsub(gt13L,gt23L,kmul(gt12L,gt33L)));
+
+ CCTK_REAL_VEC gtu13 =
+ kmul(INV(detgt),kmsub(gt12L,gt23L,kmul(gt13L,gt22L)));
+
+ CCTK_REAL_VEC gtu22 =
+ kmul(INV(detgt),kmsub(gt11L,gt33L,SQR(gt13L)));
+
+ CCTK_REAL_VEC gtu23 =
+ kmul(INV(detgt),kmsub(gt12L,gt13L,kmul(gt11L,gt23L)));
+
+ CCTK_REAL_VEC gtu33 =
+ kmul(INV(detgt),kmsub(gt11L,gt22L,SQR(gt12L)));
+
+ CCTK_REAL_VEC Gtl111 = kmul(JacPDstandardNth1gt11,ToReal(0.5));
+
+ CCTK_REAL_VEC Gtl112 = kmul(JacPDstandardNth2gt11,ToReal(0.5));
+
+ CCTK_REAL_VEC Gtl113 = kmul(JacPDstandardNth3gt11,ToReal(0.5));
+
+ CCTK_REAL_VEC Gtl122 =
+ kmadd(JacPDstandardNth1gt22,ToReal(-0.5),JacPDstandardNth2gt12);
+
+ CCTK_REAL_VEC Gtl123 =
+ kmul(kadd(JacPDstandardNth2gt13,ksub(JacPDstandardNth3gt12,JacPDstandardNth1gt23)),ToReal(0.5));
+
+ CCTK_REAL_VEC Gtl133 =
+ kmadd(JacPDstandardNth1gt33,ToReal(-0.5),JacPDstandardNth3gt13);
+
+ CCTK_REAL_VEC Gtl211 =
+ kmadd(JacPDstandardNth2gt11,ToReal(-0.5),JacPDstandardNth1gt12);
+
+ CCTK_REAL_VEC Gtl212 = kmul(JacPDstandardNth1gt22,ToReal(0.5));
+
+ CCTK_REAL_VEC Gtl213 =
+ kmul(kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth3gt12,JacPDstandardNth2gt13)),ToReal(0.5));
+
+ CCTK_REAL_VEC Gtl222 = kmul(JacPDstandardNth2gt22,ToReal(0.5));
+
+ CCTK_REAL_VEC Gtl223 = kmul(JacPDstandardNth3gt22,ToReal(0.5));
+
+ CCTK_REAL_VEC Gtl233 =
+ kmadd(JacPDstandardNth2gt33,ToReal(-0.5),JacPDstandardNth3gt23);
+
+ CCTK_REAL_VEC Gtl311 =
+ kmadd(JacPDstandardNth3gt11,ToReal(-0.5),JacPDstandardNth1gt13);
+
+ CCTK_REAL_VEC Gtl312 =
+ kmul(kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth2gt13,JacPDstandardNth3gt12)),ToReal(0.5));
+
+ CCTK_REAL_VEC Gtl313 = kmul(JacPDstandardNth1gt33,ToReal(0.5));
+
+ CCTK_REAL_VEC Gtl322 =
+ kmadd(JacPDstandardNth3gt22,ToReal(-0.5),JacPDstandardNth2gt23);
+
+ CCTK_REAL_VEC Gtl323 = kmul(JacPDstandardNth2gt33,ToReal(0.5));
+
+ CCTK_REAL_VEC Gtl333 = kmul(JacPDstandardNth3gt33,ToReal(0.5));
+
+ CCTK_REAL_VEC Gtlu111 =
+ kmadd(Gtl111,gtu11,kmadd(Gtl112,gtu12,kmul(Gtl113,gtu13)));
+
+ CCTK_REAL_VEC Gtlu112 =
+ kmadd(Gtl111,gtu12,kmadd(Gtl112,gtu22,kmul(Gtl113,gtu23)));
+
+ CCTK_REAL_VEC Gtlu113 =
+ kmadd(Gtl111,gtu13,kmadd(Gtl112,gtu23,kmul(Gtl113,gtu33)));
+
+ CCTK_REAL_VEC Gtlu121 =
+ kmadd(Gtl112,gtu11,kmadd(Gtl122,gtu12,kmul(Gtl123,gtu13)));
+
+ CCTK_REAL_VEC Gtlu122 =
+ kmadd(Gtl112,gtu12,kmadd(Gtl122,gtu22,kmul(Gtl123,gtu23)));
+
+ CCTK_REAL_VEC Gtlu123 =
+ kmadd(Gtl112,gtu13,kmadd(Gtl122,gtu23,kmul(Gtl123,gtu33)));
+
+ CCTK_REAL_VEC Gtlu131 =
+ kmadd(Gtl113,gtu11,kmadd(Gtl123,gtu12,kmul(Gtl133,gtu13)));
+
+ CCTK_REAL_VEC Gtlu132 =
+ kmadd(Gtl113,gtu12,kmadd(Gtl123,gtu22,kmul(Gtl133,gtu23)));
+
+ CCTK_REAL_VEC Gtlu133 =
+ kmadd(Gtl113,gtu13,kmadd(Gtl123,gtu23,kmul(Gtl133,gtu33)));
+
+ CCTK_REAL_VEC Gtlu211 =
+ kmadd(Gtl211,gtu11,kmadd(Gtl212,gtu12,kmul(Gtl213,gtu13)));
+
+ CCTK_REAL_VEC Gtlu212 =
+ kmadd(Gtl211,gtu12,kmadd(Gtl212,gtu22,kmul(Gtl213,gtu23)));
+
+ CCTK_REAL_VEC Gtlu213 =
+ kmadd(Gtl211,gtu13,kmadd(Gtl212,gtu23,kmul(Gtl213,gtu33)));
+
+ CCTK_REAL_VEC Gtlu221 =
+ kmadd(Gtl212,gtu11,kmadd(Gtl222,gtu12,kmul(Gtl223,gtu13)));
+
+ CCTK_REAL_VEC Gtlu222 =
+ kmadd(Gtl212,gtu12,kmadd(Gtl222,gtu22,kmul(Gtl223,gtu23)));
+
+ CCTK_REAL_VEC Gtlu223 =
+ kmadd(Gtl212,gtu13,kmadd(Gtl222,gtu23,kmul(Gtl223,gtu33)));
+
+ CCTK_REAL_VEC Gtlu231 =
+ kmadd(Gtl213,gtu11,kmadd(Gtl223,gtu12,kmul(Gtl233,gtu13)));
+
+ CCTK_REAL_VEC Gtlu232 =
+ kmadd(Gtl213,gtu12,kmadd(Gtl223,gtu22,kmul(Gtl233,gtu23)));
+
+ CCTK_REAL_VEC Gtlu233 =
+ kmadd(Gtl213,gtu13,kmadd(Gtl223,gtu23,kmul(Gtl233,gtu33)));
+
+ CCTK_REAL_VEC Gtlu311 =
+ kmadd(Gtl311,gtu11,kmadd(Gtl312,gtu12,kmul(Gtl313,gtu13)));
+
+ CCTK_REAL_VEC Gtlu312 =
+ kmadd(Gtl311,gtu12,kmadd(Gtl312,gtu22,kmul(Gtl313,gtu23)));
+
+ CCTK_REAL_VEC Gtlu313 =
+ kmadd(Gtl311,gtu13,kmadd(Gtl312,gtu23,kmul(Gtl313,gtu33)));
+
+ CCTK_REAL_VEC Gtlu321 =
+ kmadd(Gtl312,gtu11,kmadd(Gtl322,gtu12,kmul(Gtl323,gtu13)));
+
+ CCTK_REAL_VEC Gtlu322 =
+ kmadd(Gtl312,gtu12,kmadd(Gtl322,gtu22,kmul(Gtl323,gtu23)));
+
+ CCTK_REAL_VEC Gtlu323 =
+ kmadd(Gtl312,gtu13,kmadd(Gtl322,gtu23,kmul(Gtl323,gtu33)));
+
+ CCTK_REAL_VEC Gtlu331 =
+ kmadd(Gtl313,gtu11,kmadd(Gtl323,gtu12,kmul(Gtl333,gtu13)));
+
+ CCTK_REAL_VEC Gtlu332 =
+ kmadd(Gtl313,gtu12,kmadd(Gtl323,gtu22,kmul(Gtl333,gtu23)));
+
+ CCTK_REAL_VEC Gtlu333 =
+ kmadd(Gtl313,gtu13,kmadd(Gtl323,gtu23,kmul(Gtl333,gtu33)));
+
+ CCTK_REAL_VEC Gt111 =
+ kmadd(Gtl111,gtu11,kmadd(Gtl211,gtu12,kmul(Gtl311,gtu13)));
+
+ CCTK_REAL_VEC Gt211 =
+ kmadd(Gtl111,gtu12,kmadd(Gtl211,gtu22,kmul(Gtl311,gtu23)));
+
+ CCTK_REAL_VEC Gt311 =
+ kmadd(Gtl111,gtu13,kmadd(Gtl211,gtu23,kmul(Gtl311,gtu33)));
+
+ CCTK_REAL_VEC Gt112 =
+ kmadd(Gtl112,gtu11,kmadd(Gtl212,gtu12,kmul(Gtl312,gtu13)));
+
+ CCTK_REAL_VEC Gt212 =
+ kmadd(Gtl112,gtu12,kmadd(Gtl212,gtu22,kmul(Gtl312,gtu23)));
+
+ CCTK_REAL_VEC Gt312 =
+ kmadd(Gtl112,gtu13,kmadd(Gtl212,gtu23,kmul(Gtl312,gtu33)));
+
+ CCTK_REAL_VEC Gt113 =
+ kmadd(Gtl113,gtu11,kmadd(Gtl213,gtu12,kmul(Gtl313,gtu13)));
+
+ CCTK_REAL_VEC Gt213 =
+ kmadd(Gtl113,gtu12,kmadd(Gtl213,gtu22,kmul(Gtl313,gtu23)));
+
+ CCTK_REAL_VEC Gt313 =
+ kmadd(Gtl113,gtu13,kmadd(Gtl213,gtu23,kmul(Gtl313,gtu33)));
+
+ CCTK_REAL_VEC Gt122 =
+ kmadd(Gtl122,gtu11,kmadd(Gtl222,gtu12,kmul(Gtl322,gtu13)));
+
+ CCTK_REAL_VEC Gt222 =
+ kmadd(Gtl122,gtu12,kmadd(Gtl222,gtu22,kmul(Gtl322,gtu23)));
+
+ CCTK_REAL_VEC Gt322 =
+ kmadd(Gtl122,gtu13,kmadd(Gtl222,gtu23,kmul(Gtl322,gtu33)));
+
+ CCTK_REAL_VEC Gt123 =
+ kmadd(Gtl123,gtu11,kmadd(Gtl223,gtu12,kmul(Gtl323,gtu13)));
+
+ CCTK_REAL_VEC Gt223 =
+ kmadd(Gtl123,gtu12,kmadd(Gtl223,gtu22,kmul(Gtl323,gtu23)));
+
+ CCTK_REAL_VEC Gt323 =
+ kmadd(Gtl123,gtu13,kmadd(Gtl223,gtu23,kmul(Gtl323,gtu33)));
+
+ CCTK_REAL_VEC Gt133 =
+ kmadd(Gtl133,gtu11,kmadd(Gtl233,gtu12,kmul(Gtl333,gtu13)));
+
+ CCTK_REAL_VEC Gt233 =
+ kmadd(Gtl133,gtu12,kmadd(Gtl233,gtu22,kmul(Gtl333,gtu23)));
+
+ CCTK_REAL_VEC Gt333 =
+ kmadd(Gtl133,gtu13,kmadd(Gtl233,gtu23,kmul(Gtl333,gtu33)));
+
+ CCTK_REAL_VEC Xtn1 =
+ kmadd(Gt111,gtu11,kmadd(Gt122,gtu22,kmadd(Gt133,gtu33,kmul(kmadd(Gt112,gtu12,kmadd(Gt113,gtu13,kmul(Gt123,gtu23))),ToReal(2)))));
+
+ CCTK_REAL_VEC Xtn2 =
+ kmadd(Gt211,gtu11,kmadd(Gt222,gtu22,kmadd(Gt233,gtu33,kmul(kmadd(Gt212,gtu12,kmadd(Gt213,gtu13,kmul(Gt223,gtu23))),ToReal(2)))));
+
+ CCTK_REAL_VEC Xtn3 =
+ kmadd(Gt311,gtu11,kmadd(Gt322,gtu22,kmadd(Gt333,gtu33,kmul(kmadd(Gt312,gtu12,kmadd(Gt313,gtu13,kmul(Gt323,gtu23))),ToReal(2)))));
+
+ CCTK_REAL_VEC e4phi = IfThen(conformalMethod ==
+ 1,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
+
+ CCTK_REAL_VEC em4phi = INV(e4phi);
+
+ CCTK_REAL_VEC g11 = kmul(gt11L,e4phi);
+
+ CCTK_REAL_VEC g12 = kmul(gt12L,e4phi);
+
+ CCTK_REAL_VEC g13 = kmul(gt13L,e4phi);
+
+ CCTK_REAL_VEC g22 = kmul(gt22L,e4phi);
+
+ CCTK_REAL_VEC g23 = kmul(gt23L,e4phi);
+
+ CCTK_REAL_VEC g33 = kmul(gt33L,e4phi);
+
+ CCTK_REAL_VEC gu11 = kmul(em4phi,gtu11);
+
+ CCTK_REAL_VEC gu12 = kmul(em4phi,gtu12);
+
+ CCTK_REAL_VEC gu13 = kmul(em4phi,gtu13);
+
+ CCTK_REAL_VEC gu22 = kmul(em4phi,gtu22);
+
+ CCTK_REAL_VEC gu23 = kmul(em4phi,gtu23);
+
+ CCTK_REAL_VEC gu33 = kmul(em4phi,gtu33);
+
+ CCTK_REAL_VEC Z1 =
+ kneg(kmul(kmadd(gu11,kmadd(gtu11,JacPDstandardNth1gt11,kmadd(gtu13,JacPDstandardNth1gt13,kmadd(gtu12,kadd(JacPDstandardNth1gt12,JacPDstandardNth2gt11),kmadd(gtu22,JacPDstandardNth2gt12,kmadd(gtu23,JacPDstandardNth2gt13,kmadd(gtu13,JacPDstandardNth3gt11,kmadd(gtu23,JacPDstandardNth3gt12,kmsub(gtu33,JacPDstandardNth3gt13,kmadd(gt11L,Xt1L,kmadd(gt13L,Xt3L,kmul(gt12L,Xt2L))))))))))),kmadd(gu13,kmadd(gtu11,JacPDstandardNth1gt13,kmadd(gtu13,JacPDstandardNth1gt33,kmadd(gtu12,kadd(JacPDstandardNth1gt23,JacPDstandardNth2gt13),kmadd(gtu22,JacPDstandardNth2gt23,kmadd(gtu23,JacPDstandardNth2gt33,kmadd(gtu13,JacPDstandardNth3gt13,kmadd(gtu23,JacPDstandardNth3gt23,kmsub(gtu33,JacPDstandardNth3gt33,kmadd(gt13L,Xt1L,kmadd(gt33L,Xt3L,kmul(gt23L,Xt2L))))))))))),kmul(gu12,kmadd(gtu11,JacPDstandardNth1gt12,kmadd(gtu13,JacPDstandardNth1gt23,kmadd(gtu12,kadd(JacPDstandardNth1gt22,JacPDstandardNth2gt12),kmadd(gtu22,JacPDstandardNth2gt22,kmadd(gtu23,JacPDstandardNth2gt23,kmadd(gtu13,JacPDstandardNth3gt12,kmadd(gtu23,JacPDstandardNth3gt22,kmsub(gtu33,JacPDstandardNth3gt23,kmadd(gt12L,Xt1L,kmadd(gt23L,Xt3L,kmul(gt22L,Xt2L)))))))))))))),ToReal(0.5)));
+
+ CCTK_REAL_VEC Z2 =
+ kneg(kmul(kmadd(gu12,kmadd(gtu11,JacPDstandardNth1gt11,kmadd(gtu13,JacPDstandardNth1gt13,kmadd(gtu12,kadd(JacPDstandardNth1gt12,JacPDstandardNth2gt11),kmadd(gtu22,JacPDstandardNth2gt12,kmadd(gtu23,JacPDstandardNth2gt13,kmadd(gtu13,JacPDstandardNth3gt11,kmadd(gtu23,JacPDstandardNth3gt12,kmsub(gtu33,JacPDstandardNth3gt13,kmadd(gt11L,Xt1L,kmadd(gt13L,Xt3L,kmul(gt12L,Xt2L))))))))))),kmadd(gu23,kmadd(gtu11,JacPDstandardNth1gt13,kmadd(gtu13,JacPDstandardNth1gt33,kmadd(gtu12,kadd(JacPDstandardNth1gt23,JacPDstandardNth2gt13),kmadd(gtu22,JacPDstandardNth2gt23,kmadd(gtu23,JacPDstandardNth2gt33,kmadd(gtu13,JacPDstandardNth3gt13,kmadd(gtu23,JacPDstandardNth3gt23,kmsub(gtu33,JacPDstandardNth3gt33,kmadd(gt13L,Xt1L,kmadd(gt33L,Xt3L,kmul(gt23L,Xt2L))))))))))),kmul(gu22,kmadd(gtu11,JacPDstandardNth1gt12,kmadd(gtu13,JacPDstandardNth1gt23,kmadd(gtu12,kadd(JacPDstandardNth1gt22,JacPDstandardNth2gt12),kmadd(gtu22,JacPDstandardNth2gt22,kmadd(gtu23,JacPDstandardNth2gt23,kmadd(gtu13,JacPDstandardNth3gt12,kmadd(gtu23,JacPDstandardNth3gt22,kmsub(gtu33,JacPDstandardNth3gt23,kmadd(gt12L,Xt1L,kmadd(gt23L,Xt3L,kmul(gt22L,Xt2L)))))))))))))),ToReal(0.5)));
+
+ CCTK_REAL_VEC Z3 =
+ kneg(kmul(kmadd(gu13,kmadd(gtu11,JacPDstandardNth1gt11,kmadd(gtu13,JacPDstandardNth1gt13,kmadd(gtu12,kadd(JacPDstandardNth1gt12,JacPDstandardNth2gt11),kmadd(gtu22,JacPDstandardNth2gt12,kmadd(gtu23,JacPDstandardNth2gt13,kmadd(gtu13,JacPDstandardNth3gt11,kmadd(gtu23,JacPDstandardNth3gt12,kmsub(gtu33,JacPDstandardNth3gt13,kmadd(gt11L,Xt1L,kmadd(gt13L,Xt3L,kmul(gt12L,Xt2L))))))))))),kmadd(gu33,kmadd(gtu11,JacPDstandardNth1gt13,kmadd(gtu13,JacPDstandardNth1gt33,kmadd(gtu12,kadd(JacPDstandardNth1gt23,JacPDstandardNth2gt13),kmadd(gtu22,JacPDstandardNth2gt23,kmadd(gtu23,JacPDstandardNth2gt33,kmadd(gtu13,JacPDstandardNth3gt13,kmadd(gtu23,JacPDstandardNth3gt23,kmsub(gtu33,JacPDstandardNth3gt33,kmadd(gt13L,Xt1L,kmadd(gt33L,Xt3L,kmul(gt23L,Xt2L))))))))))),kmul(gu23,kmadd(gtu11,JacPDstandardNth1gt12,kmadd(gtu13,JacPDstandardNth1gt23,kmadd(gtu12,kadd(JacPDstandardNth1gt22,JacPDstandardNth2gt12),kmadd(gtu22,JacPDstandardNth2gt22,kmadd(gtu23,JacPDstandardNth2gt23,kmadd(gtu13,JacPDstandardNth3gt12,kmadd(gtu23,JacPDstandardNth3gt22,kmsub(gtu33,JacPDstandardNth3gt23,kmadd(gt12L,Xt1L,kmadd(gt23L,Xt3L,kmul(gt22L,Xt2L)))))))))))))),ToReal(0.5)));
+
+ CCTK_REAL_VEC Rt11 =
+ kmul(ToReal(0.5),knmsub(gtu11,JacPDstandardNth11gt11,knmsub(gtu22,JacPDstandardNth22gt11,knmsub(gtu33,JacPDstandardNth33gt11,knmsub(gtu12,kadd(JacPDstandardNth21gt11,JacPDstandardNth12gt11),knmsub(gtu13,kadd(JacPDstandardNth31gt11,JacPDstandardNth13gt11),knmsub(gtu23,kadd(JacPDstandardNth32gt11,JacPDstandardNth23gt11),kmadd(kmadd(Gt211,Gtlu211,kmadd(Gt212,Gtlu212,kmadd(Gt213,Gtlu213,kmadd(Gt311,Gtlu311,kmadd(Gt312,Gtlu312,kmadd(Gt313,Gtlu313,kmul(gt11L,JacPDstandardNth1Xt1))))))),ToReal(2),kmadd(gt12L,kmul(JacPDstandardNth1Xt2,ToReal(2)),kmadd(gt13L,kmul(JacPDstandardNth1Xt3,ToReal(2)),kmadd(Gtl111,kmul(Xtn1,ToReal(2)),kmadd(Gtl112,kmul(Xtn2,ToReal(2)),kmadd(Gtl113,kmul(Xtn3,ToReal(2)),kmadd(kmadd(Gt211,Gtlu121,kmadd(Gt212,Gtlu122,kmadd(Gt213,Gtlu123,kmadd(Gt311,Gtlu131,kmadd(Gt312,Gtlu132,kmul(Gt313,Gtlu133)))))),ToReal(4),kmul(kmadd(Gt111,Gtlu111,kmadd(Gt112,Gtlu112,kmul(Gt113,Gtlu113))),ToReal(6))))))))))))))));
+
+ CCTK_REAL_VEC Rt12 =
+ kmul(ToReal(0.5),kmadd(gt12L,JacPDstandardNth1Xt1,kmadd(gt22L,JacPDstandardNth1Xt2,kmadd(gt23L,JacPDstandardNth1Xt3,kmadd(gt11L,JacPDstandardNth2Xt1,kmadd(gt12L,JacPDstandardNth2Xt2,kmadd(gt13L,JacPDstandardNth2Xt3,kmadd(Gtl112,Xtn1,kmadd(Gtl211,Xtn1,kmadd(Gtl122,Xtn2,kmadd(Gtl212,Xtn2,kmadd(Gtl123,Xtn3,kmadd(Gtl213,Xtn3,knmsub(gtu11,JacPDstandardNth11gt12,knmsub(gtu22,JacPDstandardNth22gt12,knmsub(gtu33,JacPDstandardNth33gt12,knmsub(gtu12,kadd(JacPDstandardNth21gt12,JacPDstandardNth12gt12),knmsub(gtu13,kadd(JacPDstandardNth31gt12,JacPDstandardNth13gt12),knmsub(gtu23,kadd(JacPDstandardNth32gt12,JacPDstandardNth23gt12),kmadd(kmadd(Gt122,Gtlu112,kmadd(Gt123,Gtlu113,kmadd(Gt111,Gtlu121,kmadd(Gt212,Gtlu121,kmadd(Gt222,Gtlu122,kmadd(Gt113,Gtlu123,kmadd(Gt223,Gtlu123,kmadd(Gt312,Gtlu131,kmadd(Gt322,Gtlu132,kmadd(Gt323,Gtlu133,kmadd(Gt111,Gtlu211,kmadd(Gt112,kadd(Gtlu111,kadd(Gtlu122,Gtlu212)),kmadd(Gt113,Gtlu213,kmadd(Gt311,Gtlu231,kmadd(Gt312,Gtlu232,kmadd(Gt313,Gtlu233,kmadd(Gt311,Gtlu321,kmadd(Gt312,Gtlu322,kmul(Gt313,Gtlu323))))))))))))))))))),ToReal(2),kmul(kmadd(Gt211,Gtlu221,kmadd(Gt212,Gtlu222,kmul(Gt213,Gtlu223))),ToReal(4))))))))))))))))))))));
+
+ CCTK_REAL_VEC Rt13 =
+ kmul(ToReal(0.5),kmadd(gt13L,JacPDstandardNth1Xt1,kmadd(gt23L,JacPDstandardNth1Xt2,kmadd(gt33L,JacPDstandardNth1Xt3,kmadd(gt11L,JacPDstandardNth3Xt1,kmadd(gt12L,JacPDstandardNth3Xt2,kmadd(gt13L,JacPDstandardNth3Xt3,kmadd(Gtl113,Xtn1,kmadd(Gtl311,Xtn1,kmadd(Gtl123,Xtn2,kmadd(Gtl312,Xtn2,kmadd(Gtl133,Xtn3,kmadd(Gtl313,Xtn3,knmsub(gtu11,JacPDstandardNth11gt13,knmsub(gtu22,JacPDstandardNth22gt13,knmsub(gtu33,JacPDstandardNth33gt13,knmsub(gtu12,kadd(JacPDstandardNth21gt13,JacPDstandardNth12gt13),knmsub(gtu13,kadd(JacPDstandardNth31gt13,JacPDstandardNth13gt13),knmsub(gtu23,kadd(JacPDstandardNth32gt13,JacPDstandardNth23gt13),kmadd(kmadd(Gt123,Gtlu112,kmadd(Gt133,Gtlu113,kmadd(Gt213,Gtlu121,kmadd(Gt223,Gtlu122,kmadd(Gt233,Gtlu123,kmadd(Gt111,Gtlu131,kmadd(Gt313,Gtlu131,kmadd(Gt112,Gtlu132,kmadd(Gt323,Gtlu132,kmadd(Gt333,Gtlu133,kmadd(Gt211,Gtlu231,kmadd(Gt212,Gtlu232,kmadd(Gt213,Gtlu233,kmadd(Gt111,Gtlu311,kmadd(Gt112,Gtlu312,kmadd(Gt113,kadd(Gtlu111,kadd(Gtlu133,Gtlu313)),kmadd(Gt211,Gtlu321,kmadd(Gt212,Gtlu322,kmul(Gt213,Gtlu323))))))))))))))))))),ToReal(2),kmul(kmadd(Gt311,Gtlu331,kmadd(Gt312,Gtlu332,kmul(Gt313,Gtlu333))),ToReal(4))))))))))))))))))))));
+
+ CCTK_REAL_VEC Rt22 =
+ kmul(ToReal(0.5),knmsub(gtu11,JacPDstandardNth11gt22,knmsub(gtu22,JacPDstandardNth22gt22,knmsub(gtu33,JacPDstandardNth33gt22,knmsub(gtu12,kadd(JacPDstandardNth21gt22,JacPDstandardNth12gt22),knmsub(gtu13,kadd(JacPDstandardNth31gt22,JacPDstandardNth13gt22),knmsub(gtu23,kadd(JacPDstandardNth32gt22,JacPDstandardNth23gt22),kmadd(gt22L,kmul(JacPDstandardNth2Xt2,ToReal(2)),kmadd(gt23L,kmul(JacPDstandardNth2Xt3,ToReal(2)),kmadd(Gtl212,kmul(Xtn1,ToReal(2)),kmadd(Gtl222,kmul(Xtn2,ToReal(2)),kmadd(Gtl223,kmul(Xtn3,ToReal(2)),kmadd(ToReal(2),kmadd(Gt123,Gtlu123,kmadd(Gt312,Gtlu321,kmadd(Gt322,Gtlu322,kmadd(Gt323,Gtlu323,kmadd(gt12L,JacPDstandardNth2Xt1,kmadd(Gt112,kmadd(Gtlu211,ToReal(2),Gtlu121),kmul(Gt122,kmadd(Gtlu212,ToReal(2),Gtlu122)))))))),kmadd(kmadd(Gt123,Gtlu213,kmadd(Gt312,Gtlu231,kmadd(Gt322,Gtlu232,kmul(Gt323,Gtlu233)))),ToReal(4),kmul(kmadd(Gt212,Gtlu221,kmadd(Gt222,Gtlu222,kmul(Gt223,Gtlu223))),ToReal(6))))))))))))))));
+
+ CCTK_REAL_VEC Rt23 =
+ kmul(ToReal(0.5),kmadd(gt13L,JacPDstandardNth2Xt1,kmadd(gt23L,JacPDstandardNth2Xt2,kmadd(gt33L,JacPDstandardNth2Xt3,kmadd(gt12L,JacPDstandardNth3Xt1,kmadd(gt22L,JacPDstandardNth3Xt2,kmadd(gt23L,JacPDstandardNth3Xt3,kmadd(Gtl213,Xtn1,kmadd(Gtl312,Xtn1,kmadd(Gtl223,Xtn2,kmadd(Gtl322,Xtn2,kmadd(Gtl233,Xtn3,kmadd(Gtl323,Xtn3,knmsub(gtu11,JacPDstandardNth11gt23,knmsub(gtu22,JacPDstandardNth22gt23,knmsub(gtu33,JacPDstandardNth33gt23,knmsub(gtu12,kadd(JacPDstandardNth21gt23,JacPDstandardNth12gt23),knmsub(gtu13,kadd(JacPDstandardNth31gt23,JacPDstandardNth13gt23),knmsub(gtu23,kadd(JacPDstandardNth32gt23,JacPDstandardNth23gt23),kmadd(kmadd(Gt123,Gtlu133,kmadd(Gt113,Gtlu211,kmadd(Gt123,Gtlu212,kmadd(Gt133,Gtlu213,kmadd(Gt213,Gtlu221,kmadd(Gt223,Gtlu222,kmadd(Gt233,Gtlu223,kmadd(Gt212,Gtlu231,kmadd(Gt313,Gtlu231,kmadd(Gt222,Gtlu232,kmadd(Gt323,Gtlu232,kmadd(Gt223,Gtlu233,kmadd(Gt333,Gtlu233,kmadd(Gt112,kadd(Gtlu131,Gtlu311),kmadd(Gt122,kadd(Gtlu132,Gtlu312),kmadd(Gt123,Gtlu313,kmadd(Gt212,Gtlu321,kmadd(Gt222,Gtlu322,kmul(Gt223,Gtlu323))))))))))))))))))),ToReal(2),kmul(kmadd(Gt312,Gtlu331,kmadd(Gt322,Gtlu332,kmul(Gt323,Gtlu333))),ToReal(4))))))))))))))))))))));
+
+ CCTK_REAL_VEC Rt33 =
+ kmul(ToReal(0.5),knmsub(gtu11,JacPDstandardNth11gt33,knmsub(gtu22,JacPDstandardNth22gt33,knmsub(gtu33,JacPDstandardNth33gt33,knmsub(gtu12,kadd(JacPDstandardNth21gt33,JacPDstandardNth12gt33),knmsub(gtu13,kadd(JacPDstandardNth31gt33,JacPDstandardNth13gt33),knmsub(gtu23,kadd(JacPDstandardNth32gt33,JacPDstandardNth23gt33),kmadd(gt23L,kmul(JacPDstandardNth3Xt2,ToReal(2)),kmadd(gt33L,kmul(JacPDstandardNth3Xt3,ToReal(2)),kmadd(Gtl313,kmul(Xtn1,ToReal(2)),kmadd(Gtl323,kmul(Xtn2,ToReal(2)),kmadd(Gtl333,kmul(Xtn3,ToReal(2)),kmadd(ToReal(2),kmadd(Gt133,Gtlu133,kmadd(Gt213,Gtlu231,kmadd(Gt223,Gtlu232,kmadd(Gt233,Gtlu233,kmadd(gt13L,JacPDstandardNth3Xt1,kmadd(Gt113,kmadd(Gtlu311,ToReal(2),Gtlu131),kmul(Gt123,kmadd(Gtlu312,ToReal(2),Gtlu132)))))))),kmadd(kmadd(Gt133,Gtlu313,kmadd(Gt213,Gtlu321,kmadd(Gt223,Gtlu322,kmul(Gt233,Gtlu323)))),ToReal(4),kmul(kmadd(Gt313,Gtlu331,kmadd(Gt323,Gtlu332,kmul(Gt333,Gtlu333))),ToReal(6))))))))))))))));
+
+ CCTK_REAL_VEC fac1 = IfThen(conformalMethod ==
+ 1,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
+
+ CCTK_REAL_VEC cdphi1 = kmul(fac1,JacPDstandardNth1phi);
+
+ CCTK_REAL_VEC cdphi2 = kmul(fac1,JacPDstandardNth2phi);
+
+ CCTK_REAL_VEC cdphi3 = kmul(fac1,JacPDstandardNth3phi);
+
+ CCTK_REAL_VEC fac2 = IfThen(conformalMethod ==
+ 1,kmul(INV(SQR(phiL)),ToReal(0.5)),ToReal(0));
+
+ CCTK_REAL_VEC cdphi211 =
+ kmadd(fac2,SQR(JacPDstandardNth1phi),kmul(fac1,ksub(JacPDstandardNth11phi,kmadd(Gt111,JacPDstandardNth1phi,kmadd(Gt311,JacPDstandardNth3phi,kmul(Gt211,JacPDstandardNth2phi))))));
+
+ CCTK_REAL_VEC cdphi212 =
+ kmadd(fac2,kmul(JacPDstandardNth1phi,JacPDstandardNth2phi),kmul(fac1,ksub(JacPDstandardNth12phi,kmadd(Gt112,JacPDstandardNth1phi,kmadd(Gt312,JacPDstandardNth3phi,kmul(Gt212,JacPDstandardNth2phi))))));
+
+ CCTK_REAL_VEC cdphi213 =
+ kmadd(fac2,kmul(JacPDstandardNth1phi,JacPDstandardNth3phi),kmul(fac1,ksub(JacPDstandardNth13phi,kmadd(Gt113,JacPDstandardNth1phi,kmadd(Gt313,JacPDstandardNth3phi,kmul(Gt213,JacPDstandardNth2phi))))));
+
+ CCTK_REAL_VEC cdphi222 =
+ kmsub(fac2,SQR(JacPDstandardNth2phi),kmul(fac1,kmadd(Gt122,JacPDstandardNth1phi,kmadd(Gt222,JacPDstandardNth2phi,kmsub(Gt322,JacPDstandardNth3phi,JacPDstandardNth22phi)))));
+
+ CCTK_REAL_VEC cdphi223 =
+ kmsub(fac2,kmul(JacPDstandardNth2phi,JacPDstandardNth3phi),kmul(fac1,kmadd(Gt123,JacPDstandardNth1phi,kmadd(Gt223,JacPDstandardNth2phi,kmsub(Gt323,JacPDstandardNth3phi,JacPDstandardNth23phi)))));
+
+ CCTK_REAL_VEC cdphi233 =
+ kmsub(fac2,SQR(JacPDstandardNth3phi),kmul(fac1,kmadd(Gt133,JacPDstandardNth1phi,kmadd(Gt233,JacPDstandardNth2phi,kmsub(Gt333,JacPDstandardNth3phi,JacPDstandardNth33phi)))));
+
+ CCTK_REAL_VEC Rphi11 =
+ kmul(ToReal(-2),kadd(cdphi211,kmadd(SQR(cdphi1),kmul(kmadd(gt11L,gtu11,ToReal(-1)),ToReal(2)),kmul(gt11L,kmadd(cdphi211,gtu11,kmadd(cdphi233,gtu33,kmadd(kmadd(cdphi212,gtu12,kmadd(cdphi213,gtu13,kmadd(cdphi223,gtu23,kmul(gtu33,SQR(cdphi3))))),ToReal(2),kmadd(gtu22,kmadd(SQR(cdphi2),ToReal(2),cdphi222),kmul(kmadd(cdphi1,kmadd(cdphi2,gtu12,kmul(cdphi3,gtu13)),kmul(cdphi2,kmul(cdphi3,gtu23))),ToReal(4))))))))));
+
+ CCTK_REAL_VEC Rphi12 =
+ kmul(ToReal(-2),kadd(cdphi212,kmadd(gt12L,kmadd(cdphi211,gtu11,kmadd(kmadd(cdphi212,gtu12,kmadd(cdphi213,gtu13,kmadd(cdphi223,gtu23,kmul(gtu11,SQR(cdphi1))))),ToReal(2),kmadd(gtu22,kmadd(SQR(cdphi2),ToReal(2),cdphi222),kmadd(gtu33,kmadd(SQR(cdphi3),ToReal(2),cdphi233),kmul(cdphi2,kmul(cdphi3,kmul(gtu23,ToReal(4)))))))),kmul(cdphi1,kmadd(gt12L,kmul(cdphi3,kmul(gtu13,ToReal(4))),kmul(cdphi2,kmadd(gt12L,kmul(gtu12,ToReal(4)),ToReal(-2))))))));
+
+ CCTK_REAL_VEC Rphi13 =
+ kmul(ToReal(-2),kadd(cdphi213,kmadd(gt13L,kmadd(cdphi211,gtu11,kmadd(kmadd(cdphi212,gtu12,kmadd(cdphi213,gtu13,kmadd(cdphi223,gtu23,kmul(gtu11,SQR(cdphi1))))),ToReal(2),kmadd(gtu22,kmadd(SQR(cdphi2),ToReal(2),cdphi222),kmadd(gtu33,kmadd(SQR(cdphi3),ToReal(2),cdphi233),kmul(cdphi2,kmul(cdphi3,kmul(gtu23,ToReal(4)))))))),kmul(cdphi1,kmadd(gt13L,kmul(cdphi2,kmul(gtu12,ToReal(4))),kmul(cdphi3,kmadd(gt13L,kmul(gtu13,ToReal(4)),ToReal(-2))))))));
+
+ CCTK_REAL_VEC Rphi22 =
+ kmul(ToReal(-2),kadd(cdphi222,kmadd(SQR(cdphi2),kmul(kmadd(gt22L,gtu22,ToReal(-1)),ToReal(2)),kmul(gt22L,kmadd(cdphi222,gtu22,kmadd(cdphi233,gtu33,kmadd(kmadd(cdphi212,gtu12,kmadd(cdphi213,gtu13,kmadd(cdphi223,gtu23,kmul(gtu33,SQR(cdphi3))))),ToReal(2),kmadd(gtu11,kmadd(SQR(cdphi1),ToReal(2),cdphi211),kmul(kmadd(cdphi1,kmul(cdphi3,gtu13),kmul(cdphi2,kmadd(cdphi1,gtu12,kmul(cdphi3,gtu23)))),ToReal(4))))))))));
+
+ CCTK_REAL_VEC Rphi23 =
+ kmul(ToReal(-2),kadd(cdphi223,kmadd(gt23L,kmadd(cdphi222,gtu22,kmadd(kmadd(cdphi212,gtu12,kmadd(cdphi213,gtu13,kmadd(cdphi223,gtu23,kmul(gtu22,SQR(cdphi2))))),ToReal(2),kmadd(gtu11,kmadd(SQR(cdphi1),ToReal(2),cdphi211),kmadd(gtu33,kmadd(SQR(cdphi3),ToReal(2),cdphi233),kmul(cdphi1,kmul(cdphi3,kmul(gtu13,ToReal(4)))))))),kmul(cdphi2,kmadd(gt23L,kmul(cdphi1,kmul(gtu12,ToReal(4))),kmul(cdphi3,kmadd(gt23L,kmul(gtu23,ToReal(4)),ToReal(-2))))))));
+
+ CCTK_REAL_VEC Rphi33 =
+ kmul(ToReal(-2),kadd(cdphi233,kmadd(SQR(cdphi3),kmul(kmadd(gt33L,gtu33,ToReal(-1)),ToReal(2)),kmul(gt33L,kmadd(cdphi233,gtu33,kmadd(kmadd(cdphi213,gtu13,kmul(cdphi223,gtu23)),ToReal(2),kmadd(gtu11,kmadd(SQR(cdphi1),ToReal(2),cdphi211),kmadd(gtu22,kmadd(SQR(cdphi2),ToReal(2),cdphi222),kmadd(cdphi3,kmul(kmadd(cdphi1,gtu13,kmul(cdphi2,gtu23)),ToReal(4)),kmul(gtu12,kmadd(cdphi212,ToReal(2),kmul(cdphi1,kmul(cdphi2,ToReal(4))))))))))))));
+
+ CCTK_REAL_VEC Atm11 =
+ kmadd(At11L,gtu11,kmadd(At12L,gtu12,kmul(At13L,gtu13)));
+
+ CCTK_REAL_VEC Atm21 =
+ kmadd(At11L,gtu12,kmadd(At12L,gtu22,kmul(At13L,gtu23)));
+
+ CCTK_REAL_VEC Atm31 =
+ kmadd(At11L,gtu13,kmadd(At12L,gtu23,kmul(At13L,gtu33)));
+
+ CCTK_REAL_VEC Atm12 =
+ kmadd(At12L,gtu11,kmadd(At22L,gtu12,kmul(At23L,gtu13)));
+
+ CCTK_REAL_VEC Atm22 =
+ kmadd(At12L,gtu12,kmadd(At22L,gtu22,kmul(At23L,gtu23)));
+
+ CCTK_REAL_VEC Atm32 =
+ kmadd(At12L,gtu13,kmadd(At22L,gtu23,kmul(At23L,gtu33)));
+
+ CCTK_REAL_VEC Atm13 =
+ kmadd(At13L,gtu11,kmadd(At23L,gtu12,kmul(At33L,gtu13)));
+
+ CCTK_REAL_VEC Atm23 =
+ kmadd(At13L,gtu12,kmadd(At23L,gtu22,kmul(At33L,gtu23)));
+
+ CCTK_REAL_VEC Atm33 =
+ kmadd(At13L,gtu13,kmadd(At23L,gtu23,kmul(At33L,gtu33)));
+
+ CCTK_REAL_VEC Atu11 =
+ kmadd(Atm11,gtu11,kmadd(Atm12,gtu12,kmul(Atm13,gtu13)));
+
+ CCTK_REAL_VEC Atu12 =
+ kmadd(Atm11,gtu12,kmadd(Atm12,gtu22,kmul(Atm13,gtu23)));
+
+ CCTK_REAL_VEC Atu13 =
+ kmadd(Atm11,gtu13,kmadd(Atm12,gtu23,kmul(Atm13,gtu33)));
+
+ CCTK_REAL_VEC Atu22 =
+ kmadd(Atm21,gtu12,kmadd(Atm22,gtu22,kmul(Atm23,gtu23)));
+
+ CCTK_REAL_VEC Atu23 =
+ kmadd(Atm21,gtu13,kmadd(Atm22,gtu23,kmul(Atm23,gtu33)));
+
+ CCTK_REAL_VEC Atu33 =
+ kmadd(Atm31,gtu13,kmadd(Atm32,gtu23,kmul(Atm33,gtu33)));
+
+ CCTK_REAL_VEC R11 = kadd(Rphi11,Rt11);
+
+ CCTK_REAL_VEC R12 = kadd(Rphi12,Rt12);
+
+ CCTK_REAL_VEC R13 = kadd(Rphi13,Rt13);
+
+ CCTK_REAL_VEC R22 = kadd(Rphi22,Rt22);
+
+ CCTK_REAL_VEC R23 = kadd(Rphi23,Rt23);
+
+ CCTK_REAL_VEC R33 = kadd(Rphi33,Rt33);
+
+ R11 =
+ kadd(R11,kmadd(e4phi,kmadd(JacPDstandardNth1gt11,Z1,kmadd(JacPDstandardNth2gt11,Z2,kmul(JacPDstandardNth3gt11,Z3))),kmul(INV(phiL),kmadd(g11,kmul(kmadd(JacPDstandardNth2phi,Z2,kmul(JacPDstandardNth3phi,Z3)),ToReal(-2)),kmul(JacPDstandardNth1phi,kmadd(g11,kmul(Z1,ToReal(2)),kmul(kmadd(g12,Z2,kmul(g13,Z3)),ToReal(4))))))));
+
+ R12 =
+ kadd(R12,kmadd(e4phi,kmadd(JacPDstandardNth1gt12,Z1,kmadd(JacPDstandardNth2gt12,Z2,kmul(JacPDstandardNth3gt12,Z3))),kmul(INV(phiL),kmul(kmadd(g11,kmul(JacPDstandardNth2phi,Z1),kmadd(g22,kmul(JacPDstandardNth1phi,Z2),kmul(Z3,kmadd(g23,JacPDstandardNth1phi,kmsub(g13,JacPDstandardNth2phi,kmul(g12,JacPDstandardNth3phi)))))),ToReal(2)))));
+
+ R13 =
+ kadd(R13,kmadd(e4phi,kmadd(JacPDstandardNth1gt13,Z1,kmadd(JacPDstandardNth2gt13,Z2,kmul(JacPDstandardNth3gt13,Z3))),kmul(INV(phiL),kmul(kmadd(JacPDstandardNth3phi,kmadd(g11,Z1,kmul(g12,Z2)),kmadd(g33,kmul(JacPDstandardNth1phi,Z3),kmul(Z2,kmsub(g23,JacPDstandardNth1phi,kmul(g13,JacPDstandardNth2phi))))),ToReal(2)))));
+
+ R22 =
+ kadd(R22,kmadd(e4phi,kmadd(JacPDstandardNth1gt22,Z1,kmadd(JacPDstandardNth2gt22,Z2,kmul(JacPDstandardNth3gt22,Z3))),kmul(INV(phiL),kmadd(g22,kmul(ToReal(-2),kmadd(JacPDstandardNth1phi,Z1,kmsub(JacPDstandardNth3phi,Z3,kmul(JacPDstandardNth2phi,Z2)))),kmul(JacPDstandardNth2phi,kmul(kmadd(g12,Z1,kmul(g23,Z3)),ToReal(4)))))));
+
+ R23 =
+ kadd(R23,kmadd(e4phi,kmadd(JacPDstandardNth1gt23,Z1,kmadd(JacPDstandardNth2gt23,Z2,kmul(JacPDstandardNth3gt23,Z3))),kmul(INV(phiL),kmul(kmadd(g22,kmul(JacPDstandardNth3phi,Z2),kmadd(g33,kmul(JacPDstandardNth2phi,Z3),kmul(Z1,kmadd(g13,JacPDstandardNth2phi,kmsub(g12,JacPDstandardNth3phi,kmul(g23,JacPDstandardNth1phi)))))),ToReal(2)))));
+
+ R33 =
+ kadd(R33,kmadd(e4phi,kmadd(JacPDstandardNth1gt33,Z1,kmadd(JacPDstandardNth2gt33,Z2,kmul(JacPDstandardNth3gt33,Z3))),kmul(INV(phiL),kmadd(g33,kmul(ToReal(-2),kmadd(JacPDstandardNth1phi,Z1,kmsub(JacPDstandardNth2phi,Z2,kmul(JacPDstandardNth3phi,Z3)))),kmul(JacPDstandardNth3phi,kmul(kmadd(g13,Z1,kmul(g23,Z2)),ToReal(4)))))));
+
+ CCTK_REAL_VEC rho =
+ kmul(INV(SQR(alphaL)),kadd(eTttL,kmadd(eTxxL,SQR(beta1L),kmadd(eTyyL,SQR(beta2L),kmadd(eTzzL,SQR(beta3L),kmadd(kmadd(beta2L,eTtyL,kmul(beta3L,eTtzL)),ToReal(-2),kmul(kmadd(beta2L,kmul(beta3L,eTyzL),kmul(beta1L,kmadd(beta2L,eTxyL,kmsub(beta3L,eTxzL,eTtxL)))),ToReal(2))))))));
+
+ CCTK_REAL_VEC S1 =
+ kmul(INV(alphaL),kmadd(beta1L,eTxxL,kmadd(beta2L,eTxyL,kmsub(beta3L,eTxzL,eTtxL))));
+
+ CCTK_REAL_VEC S2 =
+ kmul(INV(alphaL),kmadd(beta1L,eTxyL,kmadd(beta2L,eTyyL,kmsub(beta3L,eTyzL,eTtyL))));
+
+ CCTK_REAL_VEC S3 =
+ kmul(INV(alphaL),kmadd(beta1L,eTxzL,kmadd(beta2L,eTyzL,kmsub(beta3L,eTzzL,eTtzL))));
+
+ CCTK_REAL_VEC trS =
+ kmul(em4phi,kmadd(eTxxL,gtu11,kmadd(eTyyL,gtu22,kmadd(eTzzL,gtu33,kmul(kmadd(eTxyL,gtu12,kmadd(eTxzL,gtu13,kmul(eTyzL,gtu23))),ToReal(2))))));
+
+ CCTK_REAL_VEC phirhsL = kneg(kmul(IfThen(conformalMethod ==
+ 1,kmul(phiL,ToReal(0.333333333333333333333333333333)),ToReal(-0.166666666666666666666666666667)),kadd(JacPDstandardNth1beta1,kadd(JacPDstandardNth2beta2,knmsub(alphaL,trKL,JacPDstandardNth3beta3)))));
+
+ CCTK_REAL_VEC gt11rhsL =
+ kmul(ToReal(0.666666666666666666666666666667),kmadd(gt11L,ksub(kmsub(JacPDstandardNth1beta1,ToReal(2),JacPDstandardNth3beta3),JacPDstandardNth2beta2),kmadd(alphaL,kmadd(At11L,kmadd(gt11L,gtu11,ToReal(-3)),kmul(gt11L,kmadd(At22L,gtu22,kmadd(At33L,gtu33,kmul(kmadd(At12L,gtu12,kmadd(At13L,gtu13,kmul(At23L,gtu23))),ToReal(2)))))),kmul(kmadd(gt12L,JacPDstandardNth1beta2,kmul(gt13L,JacPDstandardNth1beta3)),ToReal(3)))));
+
+ CCTK_REAL_VEC gt12rhsL =
+ kmul(ToReal(0.333333333333333333333333333333),kmadd(gt12L,kadd(JacPDstandardNth1beta1,kmadd(JacPDstandardNth3beta3,ToReal(-2),JacPDstandardNth2beta2)),kmadd(alphaL,kmul(ToReal(2),kmadd(At12L,kmadd(gt12L,kmul(gtu12,ToReal(2)),ToReal(-3)),kmul(gt12L,kmadd(At11L,gtu11,kmadd(At22L,gtu22,kmadd(At33L,gtu33,kmul(kmadd(At13L,gtu13,kmul(At23L,gtu23)),ToReal(2)))))))),kmul(kmadd(gt22L,JacPDstandardNth1beta2,kmadd(gt23L,JacPDstandardNth1beta3,kmadd(gt11L,JacPDstandardNth2beta1,kmul(gt13L,JacPDstandardNth2beta3)))),ToReal(3)))));
+
+ CCTK_REAL_VEC gt13rhsL =
+ kmul(ToReal(0.333333333333333333333333333333),kmadd(gt13L,kadd(JacPDstandardNth1beta1,kmadd(JacPDstandardNth2beta2,ToReal(-2),JacPDstandardNth3beta3)),kmadd(alphaL,kmul(ToReal(2),kmadd(At13L,kmadd(gt13L,kmul(gtu13,ToReal(2)),ToReal(-3)),kmul(gt13L,kmadd(At11L,gtu11,kmadd(At22L,gtu22,kmadd(At33L,gtu33,kmul(kmadd(At12L,gtu12,kmul(At23L,gtu23)),ToReal(2)))))))),kmul(kmadd(gt23L,JacPDstandardNth1beta2,kmadd(gt33L,JacPDstandardNth1beta3,kmadd(gt11L,JacPDstandardNth3beta1,kmul(gt12L,JacPDstandardNth3beta2)))),ToReal(3)))));
+
+ CCTK_REAL_VEC gt22rhsL =
+ kmul(ToReal(0.666666666666666666666666666667),knmsub(gt22L,kadd(JacPDstandardNth1beta1,kmadd(JacPDstandardNth2beta2,ToReal(-2),JacPDstandardNth3beta3)),kmadd(alphaL,kmadd(At22L,kmadd(gt22L,gtu22,ToReal(-3)),kmul(gt22L,kmadd(At11L,gtu11,kmadd(At33L,gtu33,kmul(kmadd(At12L,gtu12,kmadd(At13L,gtu13,kmul(At23L,gtu23))),ToReal(2)))))),kmul(kmadd(gt12L,JacPDstandardNth2beta1,kmul(gt23L,JacPDstandardNth2beta3)),ToReal(3)))));
+
+ CCTK_REAL_VEC gt23rhsL =
+ kmul(ToReal(0.333333333333333333333333333333),kmadd(gt23L,kadd(JacPDstandardNth2beta2,kmadd(JacPDstandardNth1beta1,ToReal(-2),JacPDstandardNth3beta3)),kmadd(alphaL,kmul(ToReal(2),kmadd(gt23L,kmadd(At11L,gtu11,kmadd(At22L,gtu22,kmadd(At33L,gtu33,kmul(kmadd(At12L,gtu12,kmul(At13L,gtu13)),ToReal(2))))),kmul(At23L,kmadd(gt23L,kmul(gtu23,ToReal(2)),ToReal(-3))))),kmul(kmadd(gt13L,JacPDstandardNth2beta1,kmadd(gt33L,JacPDstandardNth2beta3,kmadd(gt12L,JacPDstandardNth3beta1,kmul(gt22L,JacPDstandardNth3beta2)))),ToReal(3)))));
+
+ CCTK_REAL_VEC gt33rhsL =
+ kmul(ToReal(0.666666666666666666666666666667),knmsub(gt33L,kadd(JacPDstandardNth1beta1,kmadd(JacPDstandardNth3beta3,ToReal(-2),JacPDstandardNth2beta2)),kmadd(alphaL,kmadd(At33L,kmadd(gt33L,gtu33,ToReal(-3)),kmul(gt33L,kmadd(At11L,gtu11,kmadd(At22L,gtu22,kmul(kmadd(At12L,gtu12,kmadd(At13L,gtu13,kmul(At23L,gtu23))),ToReal(2)))))),kmul(kmadd(gt13L,JacPDstandardNth3beta1,kmul(gt23L,JacPDstandardNth3beta2)),ToReal(3)))));
+
+ CCTK_REAL_VEC dotXt1 =
+ kmul(ToReal(0.333333333333333333333333333333),kmadd(kmadd(Atu11,JacPDstandardNth1alpha,kmadd(Atu12,JacPDstandardNth2alpha,kmul(Atu13,JacPDstandardNth3alpha))),ToReal(-6),kmadd(kmadd(JacPDstandardNth2beta1,Xtn2,kmul(JacPDstandardNth3beta1,Xtn3)),ToReal(-3),kmadd(Xtn1,kmsub(kadd(JacPDstandardNth2beta2,JacPDstandardNth3beta3),ToReal(2),JacPDstandardNth1beta1),kmadd(kmadd(gtu12,JacPDstandardNth12beta1,kmadd(gtu13,JacPDstandardNth13beta1,kmadd(gtu22,JacPDstandardNth22beta1,kmadd(gtu23,kadd(JacPDstandardNth23beta1,JacPDstandardNth32beta1),kmadd(gtu33,JacPDstandardNth33beta1,IfThen(GammaShift,kmul(e4phi,kmul(ToReal(-0.666666666666666666666666666667),kmadd(Z1,kmadd(kadd(JacPDstandardNth2beta2,JacPDstandardNth3beta3),ToReal(-2),JacPDstandardNth1beta1),kmul(kmadd(JacPDstandardNth2beta1,Z2,kmul(JacPDstandardNth3beta1,Z3)),ToReal(3))))),ToReal(0))))))),ToReal(3),kmadd(gtu11,kadd(JacPDstandardNth12beta2,kadd(JacPDstandardNth13beta3,kmadd(ThetaL,kmul(JacPDstandardNth1alpha,ToReal(-6)),kmul(JacPDstandardNth11beta1,ToReal(4))))),kmadd(gtu12,kadd(JacPDstandardNth22beta2,kadd(JacPDstandardNth23beta3,kmadd(ThetaL,kmul(JacPDstandardNth2alpha,ToReal(-6)),kmul(JacPDstandardNth21beta1,ToReal(4))))),kmadd(gtu13,kadd(JacPDstandardNth32beta2,kadd(JacPDstandardNth33beta3,kmadd(ThetaL,kmul(JacPDstandardNth3alpha,ToReal(-6)),kmul(JacPDstandardNth31beta1,ToReal(4))))),kmul(alphaL,kmul(ToReal(2),kmadd(kmadd(gtu11,JacPDstandardNth1trK,kmadd(gtu12,JacPDstandardNth2trK,kmadd(gtu13,JacPDstandardNth3trK,kmul(trKL,kmul(e4phi,Z1))))),ToReal(-2),kmadd(kmadd(Atu23,Gt123,kmul(Atu12,kmadd(cdphi2,ToReal(3),Gt112))),ToReal(6),kmadd(ToReal(3),kmadd(Atu22,Gt122,kmadd(Atu33,Gt133,kmadd(gtu11,JacPDstandardNth1Theta,kmadd(gtu12,JacPDstandardNth2Theta,kmadd(gtu13,JacPDstandardNth3Theta,kmul(Atu11,kmadd(cdphi1,ToReal(6),Gt111))))))),kmadd(Atu13,kmadd(Gt113,ToReal(6),kmul(cdphi3,ToReal(18))),kmadd(e4phi,kmul(Z1,kmul(ToReal(-3),ToReal(dampk1))),kmul(kmadd(gtu11,S1,kmadd(gtu12,S2,kmul(gtu13,S3))),kmul(ToReal(-24),ToReal(Pi))))))))))))))))));
+
+ CCTK_REAL_VEC dotXt2 =
+ kmul(ToReal(0.333333333333333333333333333333),kmadd(kmadd(Atu12,JacPDstandardNth1alpha,kmadd(Atu22,JacPDstandardNth2alpha,kmul(Atu23,JacPDstandardNth3alpha))),ToReal(-6),kmadd(kmadd(JacPDstandardNth1beta2,Xtn1,kmul(JacPDstandardNth3beta2,Xtn3)),ToReal(-3),kmadd(Xtn2,kmsub(kadd(JacPDstandardNth1beta1,JacPDstandardNth3beta3),ToReal(2),JacPDstandardNth2beta2),kmadd(kmadd(gtu11,JacPDstandardNth11beta2,kmadd(gtu12,JacPDstandardNth21beta2,kmadd(gtu23,JacPDstandardNth23beta2,kmadd(gtu13,kadd(JacPDstandardNth13beta2,JacPDstandardNth31beta2),kmadd(gtu33,JacPDstandardNth33beta2,IfThen(GammaShift,kmul(e4phi,kmul(ToReal(-0.666666666666666666666666666667),kmadd(Z2,kmadd(kadd(JacPDstandardNth1beta1,JacPDstandardNth3beta3),ToReal(-2),JacPDstandardNth2beta2),kmul(kmadd(JacPDstandardNth1beta2,Z1,kmul(JacPDstandardNth3beta2,Z3)),ToReal(3))))),ToReal(0))))))),ToReal(3),kmadd(gtu12,kadd(JacPDstandardNth11beta1,kadd(JacPDstandardNth13beta3,kmadd(ThetaL,kmul(JacPDstandardNth1alpha,ToReal(-6)),kmul(JacPDstandardNth12beta2,ToReal(4))))),kmadd(gtu22,kadd(JacPDstandardNth21beta1,kadd(JacPDstandardNth23beta3,kmadd(ThetaL,kmul(JacPDstandardNth2alpha,ToReal(-6)),kmul(JacPDstandardNth22beta2,ToReal(4))))),kmadd(gtu23,kadd(JacPDstandardNth31beta1,kadd(JacPDstandardNth33beta3,kmadd(ThetaL,kmul(JacPDstandardNth3alpha,ToReal(-6)),kmul(JacPDstandardNth32beta2,ToReal(4))))),kmul(alphaL,kmul(ToReal(2),kmadd(kmadd(gtu12,JacPDstandardNth1trK,kmadd(gtu22,JacPDstandardNth2trK,kmadd(gtu23,JacPDstandardNth3trK,kmul(trKL,kmul(e4phi,Z2))))),ToReal(-2),kmadd(kmadd(Atu13,Gt213,kmul(Atu12,kmadd(cdphi1,ToReal(3),Gt212))),ToReal(6),kmadd(ToReal(3),kmadd(Atu11,Gt211,kmadd(Atu33,Gt233,kmadd(gtu12,JacPDstandardNth1Theta,kmadd(gtu22,JacPDstandardNth2Theta,kmadd(gtu23,JacPDstandardNth3Theta,kmul(Atu22,kmadd(cdphi2,ToReal(6),Gt222))))))),kmadd(Atu23,kmadd(Gt223,ToReal(6),kmul(cdphi3,ToReal(18))),kmadd(e4phi,kmul(Z2,kmul(ToReal(-3),ToReal(dampk1))),kmul(kmadd(gtu12,S1,kmadd(gtu22,S2,kmul(gtu23,S3))),kmul(ToReal(-24),ToReal(Pi))))))))))))))))));
+
+ CCTK_REAL_VEC dotXt3 =
+ kmul(ToReal(0.333333333333333333333333333333),kmadd(kmadd(Atu13,JacPDstandardNth1alpha,kmadd(Atu23,JacPDstandardNth2alpha,kmul(Atu33,JacPDstandardNth3alpha))),ToReal(-6),kmadd(kmadd(JacPDstandardNth1beta3,Xtn1,kmul(JacPDstandardNth2beta3,Xtn2)),ToReal(-3),knmsub(JacPDstandardNth3beta3,Xtn3,kmadd(kmadd(gtu11,JacPDstandardNth11beta3,kmadd(gtu12,kadd(JacPDstandardNth12beta3,JacPDstandardNth21beta3),kmadd(gtu22,JacPDstandardNth22beta3,kmadd(gtu23,JacPDstandardNth32beta3,IfThen(GammaShift,kmul(e4phi,kmul(ToReal(-0.666666666666666666666666666667),kmadd(Z3,kmadd(kadd(JacPDstandardNth1beta1,JacPDstandardNth2beta2),ToReal(-2),JacPDstandardNth3beta3),kmul(kmadd(JacPDstandardNth1beta3,Z1,kmul(JacPDstandardNth2beta3,Z2)),ToReal(3))))),ToReal(0)))))),ToReal(3),kmadd(gtu13,kadd(JacPDstandardNth11beta1,kadd(JacPDstandardNth12beta2,kmadd(ThetaL,kmul(JacPDstandardNth1alpha,ToReal(-6)),kmadd(JacPDstandardNth31beta3,ToReal(3),kmul(JacPDstandardNth13beta3,ToReal(4)))))),kmadd(gtu23,kadd(JacPDstandardNth21beta1,kadd(JacPDstandardNth22beta2,kmadd(ThetaL,kmul(JacPDstandardNth2alpha,ToReal(-6)),kmul(JacPDstandardNth23beta3,ToReal(4))))),kmadd(gtu33,kadd(JacPDstandardNth31beta1,kadd(JacPDstandardNth32beta2,kmadd(ThetaL,kmul(JacPDstandardNth3alpha,ToReal(-6)),kmul(JacPDstandardNth33beta3,ToReal(4))))),kmul(ToReal(2),kmadd(kadd(JacPDstandardNth1beta1,JacPDstandardNth2beta2),Xtn3,kmul(alphaL,kmadd(kmadd(gtu13,JacPDstandardNth1trK,kmadd(gtu23,JacPDstandardNth2trK,kmadd(gtu33,JacPDstandardNth3trK,kmul(trKL,kmul(e4phi,Z3))))),ToReal(-2),kmadd(kmadd(Atu11,Gt311,kmadd(Atu22,Gt322,kmadd(gtu13,JacPDstandardNth1Theta,kmadd(gtu23,JacPDstandardNth2Theta,kmul(gtu33,JacPDstandardNth3Theta))))),ToReal(3),kmadd(kmadd(Atu12,Gt312,kmadd(Atu13,kmadd(cdphi1,ToReal(3),Gt313),kmul(Atu23,kmadd(cdphi2,ToReal(3),Gt323)))),ToReal(6),kmadd(Atu33,kmadd(Gt333,ToReal(3),kmul(cdphi3,ToReal(18))),kmadd(e4phi,kmul(Z3,kmul(ToReal(-3),ToReal(dampk1))),kmul(kmadd(gtu13,S1,kmadd(gtu23,S2,kmul(gtu33,S3))),kmul(ToReal(-24),ToReal(Pi)))))))))))))))))));
+
+ CCTK_REAL_VEC Xt1rhsL = dotXt1;
+
+ CCTK_REAL_VEC Xt2rhsL = dotXt2;
+
+ CCTK_REAL_VEC Xt3rhsL = dotXt3;
+
+ CCTK_REAL_VEC dotTheta =
+ knmsub(JacPDstandardNth1alpha,Z1,knmsub(JacPDstandardNth2alpha,Z2,kmsub(alphaL,kmsub(ToReal(0.5),kmadd(gu11,R11,kmadd(gu22,R22,kmadd(gu33,R33,kmadd(ThetaL,kmul(trKL,ToReal(-2)),kmadd(Atm12,kmul(Atm21,ToReal(-2)),kmadd(Atm13,kmul(Atm31,ToReal(-2)),kmadd(Atm23,kmul(Atm32,ToReal(-2)),ksub(ksub(ksub(kmadd(SQR(trKL),ToReal(0.666666666666666666666666666667),kmadd(gu12,kmul(R12,ToReal(2)),kmadd(gu13,kmul(R13,ToReal(2)),kmul(gu23,kmul(R23,ToReal(2)))))),SQR(Atm33)),SQR(Atm22)),SQR(Atm11))))))))),kmul(ThetaL,kmul(ToReal(dampk1),kadd(ToReal(2),ToReal(dampk2))))),kmul(JacPDstandardNth3alpha,Z3))));
+
+ CCTK_REAL_VEC ThetarhsL = dotTheta;
+
+ CCTK_REAL_VEC dottrK =
+ kmadd(kmadd(JacPDstandardNth1alpha,Z1,dotTheta),ToReal(2),kmadd(JacPDstandardNth2alpha,kmul(Z2,ToReal(2)),kmadd(JacPDstandardNth3alpha,kmul(Z3,ToReal(2)),kmsub(alphaL,kadd(SQR(Atm11),kadd(SQR(Atm22),kadd(SQR(Atm33),kmadd(SQR(trKL),ToReal(0.333333333333333333333333333333),kmadd(Atm12,kmul(Atm21,ToReal(2)),kmadd(Atm13,kmul(Atm31,ToReal(2)),kmadd(Atm23,kmul(Atm32,ToReal(2)),kmsub(kadd(rho,trS),kmul(ToReal(4),ToReal(Pi)),kmul(ThetaL,kmul(ToReal(dampk1),kadd(ToReal(-1),ToReal(dampk2)))))))))))),kmul(em4phi,kmadd(gtu13,JacPDstandardNth13alpha,kmadd(gtu22,JacPDstandardNth22alpha,kmadd(gtu23,JacPDstandardNth23alpha,kmadd(gtu13,JacPDstandardNth31alpha,kmadd(gtu23,JacPDstandardNth32alpha,kmadd(gtu33,JacPDstandardNth33alpha,kmadd(cdphi3,kmul(gtu23,kmul(JacPDstandardNth2alpha,ToReal(2))),kmadd(cdphi2,kmul(gtu23,kmul(JacPDstandardNth3alpha,ToReal(2))),kmadd(cdphi3,kmul(gtu33,kmul(JacPDstandardNth3alpha,ToReal(2))),kmadd(JacPDstandardNth3alpha,kmsub(cdphi1,kmul(gtu13,ToReal(2)),Xtn3),kmadd(JacPDstandardNth1alpha,kmsub(cdphi3,kmul(gtu13,ToReal(2)),Xtn1),kmadd(JacPDstandardNth2alpha,kmsub(cdphi2,kmul(gtu22,ToReal(2)),Xtn2),kmadd(gtu11,kmadd(cdphi1,kmul(JacPDstandardNth1alpha,ToReal(2)),JacPDstandardNth11alpha),kmul(gtu12,kadd(JacPDstandardNth12alpha,kadd(JacPDstandardNth21alpha,kmadd(cdphi2,kmul(JacPDstandardNth1alpha,ToReal(2)),kmul(cdphi1,kmul(JacPDstandardNth2alpha,ToReal(2)))))))))))))))))))))))));
+
+ CCTK_REAL_VEC trKrhsL = dottrK;
+
+ CCTK_REAL_VEC alpharhsL =
+ kneg(kmul(kpow(alphaL,harmonicN),kmul(ToReal(harmonicF),kmadd(AL,ToReal(LapseACoeff),kmul(kadd(trKL,kmadd(ThetaL,ToReal(-2),kmul(kadd(alphaL,ToReal(-1)),ToReal(AlphaDriver)))),ksub(ToReal(1),ToReal(LapseACoeff)))))));
+
+ CCTK_REAL_VEC ArhsL =
+ kmul(kadd(dottrK,kmsub(dotTheta,ToReal(-2),kmul(AL,ToReal(AlphaDriver)))),ToReal(LapseACoeff));
+
+ CCTK_REAL_VEC eta =
+ kmul(INV(kfmax(rL,ToReal(SpatialBetaDriverRadius))),ToReal(SpatialBetaDriverRadius));
+
+ CCTK_REAL_VEC theta =
+ kfmin(ToReal(1),kexp(knmsub(rL,INV(ToReal(SpatialShiftGammaCoeffRadius)),ToReal(1))));
+
+ CCTK_REAL_VEC beta1rhsL;
+ CCTK_REAL_VEC beta2rhsL;
+ CCTK_REAL_VEC beta3rhsL;
+
+ if (harmonicShift)
+ {
+ beta1rhsL =
+ kmul(alphaL,kmul(phiL,kmul(ToReal(0.5),kmadd(phiL,kmul(kmadd(gtu11,JacPDstandardNth1alpha,kmadd(gtu12,JacPDstandardNth2alpha,kmul(gtu13,JacPDstandardNth3alpha))),ToReal(-2)),kmul(alphaL,kmadd(phiL,kmadd(JacPDstandardNth1gt11,SQR(gtu11),kmul(JacPDstandardNth1gt22,kmul(SQR(gtu12),ToReal(2)))),kmadd(gtu13,kmadd(JacPDstandardNth3phi,ToReal(2),kmul(phiL,kmadd(gtu33,JacPDstandardNth3gt33,kmsub(kmadd(gtu13,JacPDstandardNth1gt33,kmadd(gtu22,JacPDstandardNth2gt23,kmul(gtu23,JacPDstandardNth2gt33))),ToReal(2),kmul(gtu22,JacPDstandardNth3gt22))))),kmadd(gtu11,kmadd(JacPDstandardNth1phi,ToReal(2),kmul(phiL,kmadd(gtu12,JacPDstandardNth2gt11,kmadd(gtu13,JacPDstandardNth3gt11,kmadd(gtu23,kmul(JacPDstandardNth1gt23,ToReal(-2)),knmsub(gtu22,JacPDstandardNth1gt22,kmadd(kmadd(gtu12,JacPDstandardNth1gt12,kmadd(gtu13,JacPDstandardNth1gt13,kmul(gtu22,JacPDstandardNth2gt12))),ToReal(2),kmadd(gtu23,kmul(JacPDstandardNth2gt13,ToReal(2)),kmadd(gtu23,kmul(JacPDstandardNth3gt12,ToReal(2)),kmul(gtu33,kmsub(JacPDstandardNth3gt13,ToReal(2),JacPDstandardNth1gt33))))))))))),kmul(gtu12,kmadd(JacPDstandardNth2phi,ToReal(2),kmul(phiL,kmadd(gtu22,JacPDstandardNth2gt22,kmadd(gtu23,kmul(JacPDstandardNth3gt22,ToReal(2)),kmadd(gtu33,kmsub(JacPDstandardNth3gt23,ToReal(2),JacPDstandardNth2gt33),kmul(gtu13,kmul(JacPDstandardNth1gt23,ToReal(4)))))))))))))))));
+
+ beta2rhsL =
+ kmul(alphaL,kmul(phiL,kmul(ToReal(0.5),kmadd(phiL,kmul(kmadd(gtu12,JacPDstandardNth1alpha,kmadd(gtu22,JacPDstandardNth2alpha,kmul(gtu23,JacPDstandardNth3alpha))),ToReal(-2)),kmul(alphaL,kmadd(phiL,kmadd(JacPDstandardNth2gt22,SQR(gtu22),kmul(JacPDstandardNth2gt11,kmul(SQR(gtu12),ToReal(2)))),kmadd(gtu23,kmadd(JacPDstandardNth3phi,ToReal(2),kmul(phiL,kmadd(gtu33,JacPDstandardNth3gt33,kmsub(kmadd(gtu11,JacPDstandardNth1gt13,kmadd(gtu13,JacPDstandardNth1gt33,kmul(gtu23,JacPDstandardNth2gt33))),ToReal(2),kmul(gtu11,JacPDstandardNth3gt11))))),kmadd(gtu22,kmadd(JacPDstandardNth2phi,ToReal(2),kmul(phiL,kmadd(gtu23,JacPDstandardNth3gt22,kmadd(kmadd(gtu23,JacPDstandardNth2gt23,kmul(gtu13,kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth3gt12,JacPDstandardNth2gt13)))),ToReal(2),kmadd(gtu11,kmsub(JacPDstandardNth1gt12,ToReal(2),JacPDstandardNth2gt11),kmul(gtu33,kmsub(JacPDstandardNth3gt23,ToReal(2),JacPDstandardNth2gt33))))))),kmul(gtu12,kmadd(JacPDstandardNth1phi,ToReal(2),kmul(phiL,kmadd(gtu11,JacPDstandardNth1gt11,kmadd(gtu13,kmul(JacPDstandardNth3gt11,ToReal(2)),kmadd(gtu22,kmadd(JacPDstandardNth2gt12,ToReal(2),JacPDstandardNth1gt22),kmadd(gtu33,kmsub(JacPDstandardNth3gt13,ToReal(2),JacPDstandardNth1gt33),kmul(gtu23,kmul(JacPDstandardNth2gt13,ToReal(4))))))))))))))))));
+
+ beta3rhsL =
+ kmul(alphaL,kmul(phiL,kmul(ToReal(0.5),kmadd(phiL,kmul(kmadd(gtu13,JacPDstandardNth1alpha,kmadd(gtu23,JacPDstandardNth2alpha,kmul(gtu33,JacPDstandardNth3alpha))),ToReal(-2)),kmul(alphaL,kmadd(phiL,kmul(kmadd(JacPDstandardNth3gt11,SQR(gtu13),kmul(JacPDstandardNth3gt22,SQR(gtu23))),ToReal(2)),kmadd(gtu23,kmadd(JacPDstandardNth2phi,ToReal(2),kmul(phiL,kmadd(gtu22,JacPDstandardNth2gt22,kmadd(gtu33,JacPDstandardNth2gt33,kmsub(kmadd(gtu11,JacPDstandardNth1gt12,kmadd(gtu12,JacPDstandardNth1gt22,kmul(gtu33,JacPDstandardNth3gt23))),ToReal(2),kmul(gtu11,JacPDstandardNth2gt11)))))),kmadd(gtu33,kmadd(JacPDstandardNth3phi,ToReal(2),kmul(phiL,kmadd(gtu33,JacPDstandardNth3gt33,knmsub(gtu22,JacPDstandardNth3gt22,kmadd(kmadd(gtu22,JacPDstandardNth2gt23,kmul(gtu12,kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth2gt13,JacPDstandardNth3gt12)))),ToReal(2),kmul(gtu11,kmsub(JacPDstandardNth1gt13,ToReal(2),JacPDstandardNth3gt11))))))),kmul(gtu13,kmadd(JacPDstandardNth1phi,ToReal(2),kmul(phiL,kmadd(gtu11,JacPDstandardNth1gt11,kmadd(gtu12,kmul(JacPDstandardNth2gt11,ToReal(2)),kmadd(gtu22,kmsub(JacPDstandardNth2gt12,ToReal(2),JacPDstandardNth1gt22),kmadd(gtu33,kmadd(JacPDstandardNth3gt13,ToReal(2),JacPDstandardNth1gt33),kmul(gtu23,kmul(JacPDstandardNth3gt12,ToReal(4))))))))))))))))));
+ }
+ else
+ {
+ beta1rhsL =
+ kmul(theta,kmul(kadd(Xt1L,kmadd(ksub(B1L,Xt1L),ToReal(ShiftBCoeff),kmul(beta1L,kmul(eta,kmul(ToReal(BetaDriver),kadd(ToReal(-1),ToReal(ShiftBCoeff))))))),ToReal(ShiftGammaCoeff)));
+
+ beta2rhsL =
+ kmul(theta,kmul(kadd(Xt2L,kmadd(ksub(B2L,Xt2L),ToReal(ShiftBCoeff),kmul(beta2L,kmul(eta,kmul(ToReal(BetaDriver),kadd(ToReal(-1),ToReal(ShiftBCoeff))))))),ToReal(ShiftGammaCoeff)));
+
+ beta3rhsL =
+ kmul(theta,kmul(kadd(Xt3L,kmadd(ksub(B3L,Xt3L),ToReal(ShiftBCoeff),kmul(beta3L,kmul(eta,kmul(ToReal(BetaDriver),kadd(ToReal(-1),ToReal(ShiftBCoeff))))))),ToReal(ShiftGammaCoeff)));
+ }
+
+ CCTK_REAL_VEC B1rhsL =
+ kmul(knmsub(B1L,kmul(eta,ToReal(BetaDriver)),dotXt1),ToReal(ShiftBCoeff));
+
+ CCTK_REAL_VEC B2rhsL =
+ kmul(knmsub(B2L,kmul(eta,ToReal(BetaDriver)),dotXt2),ToReal(ShiftBCoeff));
+
+ CCTK_REAL_VEC B3rhsL =
+ kmul(knmsub(B3L,kmul(eta,ToReal(BetaDriver)),dotXt3),ToReal(ShiftBCoeff));
+
+ /* Copy local copies back to grid functions */
+ vec_store_partial_prepare(i,lc_imin,lc_imax);
+ vec_store_nta_partial(alpharhs[index],alpharhsL);
+ vec_store_nta_partial(Arhs[index],ArhsL);
+ vec_store_nta_partial(B1rhs[index],B1rhsL);
+ vec_store_nta_partial(B2rhs[index],B2rhsL);
+ vec_store_nta_partial(B3rhs[index],B3rhsL);
+ vec_store_nta_partial(beta1rhs[index],beta1rhsL);
+ vec_store_nta_partial(beta2rhs[index],beta2rhsL);
+ vec_store_nta_partial(beta3rhs[index],beta3rhsL);
+ vec_store_nta_partial(gt11rhs[index],gt11rhsL);
+ vec_store_nta_partial(gt12rhs[index],gt12rhsL);
+ vec_store_nta_partial(gt13rhs[index],gt13rhsL);
+ vec_store_nta_partial(gt22rhs[index],gt22rhsL);
+ vec_store_nta_partial(gt23rhs[index],gt23rhsL);
+ vec_store_nta_partial(gt33rhs[index],gt33rhsL);
+ vec_store_nta_partial(phirhs[index],phirhsL);
+ vec_store_nta_partial(Thetarhs[index],ThetarhsL);
+ vec_store_nta_partial(trKrhs[index],trKrhsL);
+ vec_store_nta_partial(Xt1rhs[index],Xt1rhsL);
+ vec_store_nta_partial(Xt2rhs[index],Xt2rhsL);
+ vec_store_nta_partial(Xt3rhs[index],Xt3rhsL);
+ }
+ LC_ENDLOOP3VEC(ML_CCZ4_RHS1);
+}
+
+extern "C" void ML_CCZ4_RHS1(CCTK_ARGUMENTS)
+{
+ DECLARE_CCTK_ARGUMENTS;
+ DECLARE_CCTK_PARAMETERS;
+
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_CCZ4_RHS1_Body");
+ }
+
+ if (cctk_iteration % ML_CCZ4_RHS1_calc_every != ML_CCZ4_RHS1_calc_offset)
+ {
+ return;
+ }
+
+ const char *const groups[] = {
+ "grid::coordinates",
+ "Grid::coordinates",
+ "ML_CCZ4::ML_curv",
+ "ML_CCZ4::ML_dtlapse",
+ "ML_CCZ4::ML_dtlapserhs",
+ "ML_CCZ4::ML_dtshift",
+ "ML_CCZ4::ML_dtshiftrhs",
+ "ML_CCZ4::ML_Gamma",
+ "ML_CCZ4::ML_Gammarhs",
+ "ML_CCZ4::ML_lapse",
+ "ML_CCZ4::ML_lapserhs",
+ "ML_CCZ4::ML_log_confac",
+ "ML_CCZ4::ML_log_confacrhs",
+ "ML_CCZ4::ML_metric",
+ "ML_CCZ4::ML_metricrhs",
+ "ML_CCZ4::ML_shift",
+ "ML_CCZ4::ML_shiftrhs",
+ "ML_CCZ4::ML_Theta",
+ "ML_CCZ4::ML_Thetarhs",
+ "ML_CCZ4::ML_trace_curv",
+ "ML_CCZ4::ML_trace_curvrhs"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_CCZ4_RHS1", 21, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_CCZ4_RHS1", 1, 1, 1);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_CCZ4_RHS1", 2, 2, 2);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_CCZ4_RHS1", 3, 3, 3);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_CCZ4_RHS1", 4, 4, 4);
+ break;
+ }
+
+ GenericFD_LoopOverInterior(cctkGH, ML_CCZ4_RHS1_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_CCZ4_RHS1_Body");
+ }
+}
diff --git a/ML_CCZ4/src/ML_CCZ4_RHS2.cc b/ML_CCZ4/src/ML_CCZ4_RHS2.cc
new file mode 100644
index 0000000..d5b3821
--- /dev/null
+++ b/ML_CCZ4/src/ML_CCZ4_RHS2.cc
@@ -0,0 +1,1898 @@
+/* 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 "cctk_Loop.h"
+#include "loopcontrol.h"
+#include "vectors.h"
+
+/* Define macros used in calculations */
+#define INITVALUE (42)
+#define QAD(x) (SQR(SQR(x)))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
+
+extern "C" void ML_CCZ4_RHS2_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_CCZ4::ML_curvrhs","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_curvrhs.");
+ return;
+}
+
+static void ML_CCZ4_RHS2_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const imin[3], int const imax[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+{
+ DECLARE_CCTK_ARGUMENTS;
+ DECLARE_CCTK_PARAMETERS;
+
+
+ /* 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_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const t = ToReal(cctk_time);
+ CCTK_REAL_VEC const dxi = INV(dx);
+ CCTK_REAL_VEC const dyi = INV(dy);
+ CCTK_REAL_VEC const dzi = INV(dz);
+ CCTK_REAL_VEC const khalf = ToReal(0.5);
+ CCTK_REAL_VEC const kthird = ToReal(1.0/3.0);
+ CCTK_REAL_VEC const ktwothird = ToReal(2.0/3.0);
+ CCTK_REAL_VEC const kfourthird = ToReal(4.0/3.0);
+ CCTK_REAL_VEC const keightthird = ToReal(8.0/3.0);
+ CCTK_REAL_VEC const hdxi = kmul(ToReal(0.5), dxi);
+ CCTK_REAL_VEC const hdyi = kmul(ToReal(0.5), dyi);
+ CCTK_REAL_VEC const hdzi = kmul(ToReal(0.5), dzi);
+
+ /* Initialize predefined quantities */
+ CCTK_REAL_VEC const p1o1024dx = kmul(INV(dx),ToReal(0.0009765625));
+ CCTK_REAL_VEC const p1o1024dy = kmul(INV(dy),ToReal(0.0009765625));
+ CCTK_REAL_VEC const p1o1024dz = kmul(INV(dz),ToReal(0.0009765625));
+ CCTK_REAL_VEC const p1o120dx = kmul(INV(dx),ToReal(0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o120dy = kmul(INV(dy),ToReal(0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o120dz = kmul(INV(dz),ToReal(0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dx = kmul(INV(dx),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dy = kmul(INV(dy),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dz = kmul(INV(dz),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o144dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o144dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o144dydz = kmul(INV(kmul(dy,dz)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o1680dx = kmul(INV(dx),ToReal(0.000595238095238095238095238095238));
+ CCTK_REAL_VEC const p1o1680dy = kmul(INV(dy),ToReal(0.000595238095238095238095238095238));
+ CCTK_REAL_VEC const p1o1680dz = kmul(INV(dz),ToReal(0.000595238095238095238095238095238));
+ CCTK_REAL_VEC const p1o16dx = kmul(INV(dx),ToReal(0.0625));
+ CCTK_REAL_VEC const p1o16dy = kmul(INV(dy),ToReal(0.0625));
+ CCTK_REAL_VEC const p1o16dz = kmul(INV(dz),ToReal(0.0625));
+ CCTK_REAL_VEC const p1o180dx2 = kmul(INV(SQR(dx)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o180dy2 = kmul(INV(SQR(dy)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o180dz2 = kmul(INV(SQR(dz)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o24dx = kmul(INV(dx),ToReal(0.0416666666666666666666666666667));
+ CCTK_REAL_VEC const p1o24dy = kmul(INV(dy),ToReal(0.0416666666666666666666666666667));
+ CCTK_REAL_VEC const p1o24dz = kmul(INV(dz),ToReal(0.0416666666666666666666666666667));
+ CCTK_REAL_VEC const p1o256dx = kmul(INV(dx),ToReal(0.00390625));
+ CCTK_REAL_VEC const p1o256dy = kmul(INV(dy),ToReal(0.00390625));
+ CCTK_REAL_VEC const p1o256dz = kmul(INV(dz),ToReal(0.00390625));
+ CCTK_REAL_VEC const p1o2dx = kmul(INV(dx),ToReal(0.5));
+ CCTK_REAL_VEC const p1o2dy = kmul(INV(dy),ToReal(0.5));
+ CCTK_REAL_VEC const p1o2dz = kmul(INV(dz),ToReal(0.5));
+ CCTK_REAL_VEC const p1o3600dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o3600dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o3600dydz = kmul(INV(kmul(dy,dz)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o4dx = kmul(INV(dx),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(kmul(dy,dz)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dz = kmul(INV(dz),ToReal(0.25));
+ CCTK_REAL_VEC const p1o5040dx2 = kmul(INV(SQR(dx)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o5040dy2 = kmul(INV(SQR(dy)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o5040dz2 = kmul(INV(SQR(dz)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o560dx = kmul(INV(dx),ToReal(0.00178571428571428571428571428571));
+ CCTK_REAL_VEC const p1o560dy = kmul(INV(dy),ToReal(0.00178571428571428571428571428571));
+ CCTK_REAL_VEC const p1o560dz = kmul(INV(dz),ToReal(0.00178571428571428571428571428571));
+ CCTK_REAL_VEC const p1o60dx = kmul(INV(dx),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o60dy = kmul(INV(dy),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o60dz = kmul(INV(dz),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o64dx = kmul(INV(dx),ToReal(0.015625));
+ CCTK_REAL_VEC const p1o64dy = kmul(INV(dy),ToReal(0.015625));
+ CCTK_REAL_VEC const p1o64dz = kmul(INV(dz),ToReal(0.015625));
+ CCTK_REAL_VEC const p1o705600dxdy = kmul(INV(kmul(dx,dy)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(kmul(dx,dz)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(kmul(dy,dz)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1odx = INV(dx);
+ CCTK_REAL_VEC const p1odx2 = INV(SQR(dx));
+ CCTK_REAL_VEC const p1ody = INV(dy);
+ CCTK_REAL_VEC const p1ody2 = INV(SQR(dy));
+ CCTK_REAL_VEC const p1odz = INV(dz);
+ CCTK_REAL_VEC const p1odz2 = INV(SQR(dz));
+ CCTK_REAL_VEC const pm1o120dx = kmul(INV(dx),ToReal(-0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o120dy = kmul(INV(dy),ToReal(-0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o120dz = kmul(INV(dz),ToReal(-0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dx2 = kmul(INV(SQR(dx)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dy2 = kmul(INV(SQR(dy)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dz2 = kmul(INV(SQR(dz)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o2dx = kmul(INV(dx),ToReal(-0.5));
+ CCTK_REAL_VEC const pm1o2dy = kmul(INV(dy),ToReal(-0.5));
+ CCTK_REAL_VEC const pm1o2dz = kmul(INV(dz),ToReal(-0.5));
+ CCTK_REAL_VEC const pm1o4dx = kmul(INV(dx),ToReal(-0.25));
+ CCTK_REAL_VEC const pm1o4dy = kmul(INV(dy),ToReal(-0.25));
+ CCTK_REAL_VEC const pm1o4dz = kmul(INV(dz),ToReal(-0.25));
+ CCTK_REAL_VEC const pm1o60dx = kmul(INV(dx),ToReal(-0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const pm1o60dy = kmul(INV(dy),ToReal(-0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const pm1o60dz = kmul(INV(dz),ToReal(-0.0166666666666666666666666666667));
+
+ /* 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;
+
+ /* Assign local copies of arrays functions */
+
+
+
+ /* Calculate temporaries and arrays functions */
+
+ /* Copy local copies back to grid functions */
+
+ /* Loop over the grid points */
+ #pragma omp parallel
+ LC_LOOP3VEC(ML_CCZ4_RHS2,
+ i,j,k, imin[0],imin[1],imin[2], imax[0],imax[1],imax[2],
+ cctk_lsh[0],cctk_lsh[1],cctk_lsh[2],
+ CCTK_REAL_VEC_SIZE)
+ {
+ ptrdiff_t const index = di*i + dj*j + dk*k;
+
+ /* Assign local copies of grid functions */
+
+ CCTK_REAL_VEC alphaL = vec_load(alpha[index]);
+ CCTK_REAL_VEC At11L = vec_load(At11[index]);
+ CCTK_REAL_VEC At12L = vec_load(At12[index]);
+ CCTK_REAL_VEC At13L = vec_load(At13[index]);
+ CCTK_REAL_VEC At22L = vec_load(At22[index]);
+ CCTK_REAL_VEC At23L = vec_load(At23[index]);
+ CCTK_REAL_VEC At33L = vec_load(At33[index]);
+ CCTK_REAL_VEC beta1L = vec_load(beta1[index]);
+ CCTK_REAL_VEC beta2L = vec_load(beta2[index]);
+ CCTK_REAL_VEC beta3L = vec_load(beta3[index]);
+ CCTK_REAL_VEC gt11L = vec_load(gt11[index]);
+ CCTK_REAL_VEC gt12L = vec_load(gt12[index]);
+ CCTK_REAL_VEC gt13L = vec_load(gt13[index]);
+ CCTK_REAL_VEC gt22L = vec_load(gt22[index]);
+ CCTK_REAL_VEC gt23L = vec_load(gt23[index]);
+ CCTK_REAL_VEC gt33L = vec_load(gt33[index]);
+ CCTK_REAL_VEC phiL = vec_load(phi[index]);
+ CCTK_REAL_VEC ThetaL = vec_load(Theta[index]);
+ CCTK_REAL_VEC trKL = vec_load(trK[index]);
+ CCTK_REAL_VEC Xt1L = vec_load(Xt1[index]);
+ CCTK_REAL_VEC Xt2L = vec_load(Xt2[index]);
+ CCTK_REAL_VEC Xt3L = vec_load(Xt3[index]);
+
+ CCTK_REAL_VEC eTxxL, eTxyL, eTxzL, eTyyL, eTyzL, eTzzL;
+
+ if (*stress_energy_state)
+ {
+ eTxxL = vec_load(eTxx[index]);
+ eTxyL = vec_load(eTxy[index]);
+ eTxzL = vec_load(eTxz[index]);
+ eTyyL = vec_load(eTyy[index]);
+ eTyzL = vec_load(eTyz[index]);
+ eTzzL = vec_load(eTzz[index]);
+ }
+ else
+ {
+ eTxxL = ToReal(0.0);
+ eTxyL = ToReal(0.0);
+ eTxzL = ToReal(0.0);
+ eTyyL = ToReal(0.0);
+ eTyzL = ToReal(0.0);
+ eTzzL = ToReal(0.0);
+ }
+
+ CCTK_REAL_VEC dJ111L, dJ112L, dJ113L, dJ122L, dJ123L, dJ133L, dJ211L, dJ212L, dJ213L, dJ222L, dJ223L, dJ233L, dJ311L, dJ312L, dJ313L, dJ322L, dJ323L, dJ333L, J11L, J12L, J13L, J21L, J22L, J23L, J31L, J32L, J33L;
+
+ if (use_jacobian)
+ {
+ dJ111L = vec_load(dJ111[index]);
+ dJ112L = vec_load(dJ112[index]);
+ dJ113L = vec_load(dJ113[index]);
+ dJ122L = vec_load(dJ122[index]);
+ dJ123L = vec_load(dJ123[index]);
+ dJ133L = vec_load(dJ133[index]);
+ dJ211L = vec_load(dJ211[index]);
+ dJ212L = vec_load(dJ212[index]);
+ dJ213L = vec_load(dJ213[index]);
+ dJ222L = vec_load(dJ222[index]);
+ dJ223L = vec_load(dJ223[index]);
+ dJ233L = vec_load(dJ233[index]);
+ dJ311L = vec_load(dJ311[index]);
+ dJ312L = vec_load(dJ312[index]);
+ dJ313L = vec_load(dJ313[index]);
+ dJ322L = vec_load(dJ322[index]);
+ dJ323L = vec_load(dJ323[index]);
+ dJ333L = vec_load(dJ333[index]);
+ J11L = vec_load(J11[index]);
+ J12L = vec_load(J12[index]);
+ J13L = vec_load(J13[index]);
+ J21L = vec_load(J21[index]);
+ J22L = vec_load(J22[index]);
+ J23L = vec_load(J23[index]);
+ J31L = vec_load(J31[index]);
+ J32L = vec_load(J32[index]);
+ J33L = vec_load(J33[index]);
+ }
+
+ /* Include user supplied include files */
+
+ /* Precompute derivatives */
+ CCTK_REAL_VEC PDstandardNth1alpha;
+ CCTK_REAL_VEC PDstandardNth2alpha;
+ CCTK_REAL_VEC PDstandardNth3alpha;
+ CCTK_REAL_VEC PDstandardNth11alpha;
+ CCTK_REAL_VEC PDstandardNth22alpha;
+ CCTK_REAL_VEC PDstandardNth33alpha;
+ CCTK_REAL_VEC PDstandardNth12alpha;
+ CCTK_REAL_VEC PDstandardNth13alpha;
+ CCTK_REAL_VEC PDstandardNth23alpha;
+ CCTK_REAL_VEC PDstandardNth1beta1;
+ CCTK_REAL_VEC PDstandardNth2beta1;
+ CCTK_REAL_VEC PDstandardNth3beta1;
+ CCTK_REAL_VEC PDstandardNth1beta2;
+ CCTK_REAL_VEC PDstandardNth2beta2;
+ CCTK_REAL_VEC PDstandardNth3beta2;
+ CCTK_REAL_VEC PDstandardNth1beta3;
+ CCTK_REAL_VEC PDstandardNth2beta3;
+ CCTK_REAL_VEC PDstandardNth3beta3;
+ CCTK_REAL_VEC PDstandardNth1gt11;
+ CCTK_REAL_VEC PDstandardNth2gt11;
+ CCTK_REAL_VEC PDstandardNth3gt11;
+ CCTK_REAL_VEC PDstandardNth11gt11;
+ CCTK_REAL_VEC PDstandardNth22gt11;
+ CCTK_REAL_VEC PDstandardNth33gt11;
+ CCTK_REAL_VEC PDstandardNth12gt11;
+ CCTK_REAL_VEC PDstandardNth13gt11;
+ CCTK_REAL_VEC PDstandardNth23gt11;
+ CCTK_REAL_VEC PDstandardNth1gt12;
+ CCTK_REAL_VEC PDstandardNth2gt12;
+ CCTK_REAL_VEC PDstandardNth3gt12;
+ CCTK_REAL_VEC PDstandardNth11gt12;
+ CCTK_REAL_VEC PDstandardNth22gt12;
+ CCTK_REAL_VEC PDstandardNth33gt12;
+ CCTK_REAL_VEC PDstandardNth12gt12;
+ CCTK_REAL_VEC PDstandardNth13gt12;
+ CCTK_REAL_VEC PDstandardNth23gt12;
+ CCTK_REAL_VEC PDstandardNth1gt13;
+ CCTK_REAL_VEC PDstandardNth2gt13;
+ CCTK_REAL_VEC PDstandardNth3gt13;
+ CCTK_REAL_VEC PDstandardNth11gt13;
+ CCTK_REAL_VEC PDstandardNth22gt13;
+ CCTK_REAL_VEC PDstandardNth33gt13;
+ CCTK_REAL_VEC PDstandardNth12gt13;
+ CCTK_REAL_VEC PDstandardNth13gt13;
+ CCTK_REAL_VEC PDstandardNth23gt13;
+ CCTK_REAL_VEC PDstandardNth1gt22;
+ CCTK_REAL_VEC PDstandardNth2gt22;
+ CCTK_REAL_VEC PDstandardNth3gt22;
+ CCTK_REAL_VEC PDstandardNth11gt22;
+ CCTK_REAL_VEC PDstandardNth22gt22;
+ CCTK_REAL_VEC PDstandardNth33gt22;
+ CCTK_REAL_VEC PDstandardNth12gt22;
+ CCTK_REAL_VEC PDstandardNth13gt22;
+ CCTK_REAL_VEC PDstandardNth23gt22;
+ CCTK_REAL_VEC PDstandardNth1gt23;
+ CCTK_REAL_VEC PDstandardNth2gt23;
+ CCTK_REAL_VEC PDstandardNth3gt23;
+ CCTK_REAL_VEC PDstandardNth11gt23;
+ CCTK_REAL_VEC PDstandardNth22gt23;
+ CCTK_REAL_VEC PDstandardNth33gt23;
+ CCTK_REAL_VEC PDstandardNth12gt23;
+ CCTK_REAL_VEC PDstandardNth13gt23;
+ CCTK_REAL_VEC PDstandardNth23gt23;
+ CCTK_REAL_VEC PDstandardNth1gt33;
+ CCTK_REAL_VEC PDstandardNth2gt33;
+ CCTK_REAL_VEC PDstandardNth3gt33;
+ CCTK_REAL_VEC PDstandardNth11gt33;
+ CCTK_REAL_VEC PDstandardNth22gt33;
+ CCTK_REAL_VEC PDstandardNth33gt33;
+ CCTK_REAL_VEC PDstandardNth12gt33;
+ CCTK_REAL_VEC PDstandardNth13gt33;
+ CCTK_REAL_VEC PDstandardNth23gt33;
+ CCTK_REAL_VEC PDstandardNth1phi;
+ CCTK_REAL_VEC PDstandardNth2phi;
+ CCTK_REAL_VEC PDstandardNth3phi;
+ CCTK_REAL_VEC PDstandardNth11phi;
+ CCTK_REAL_VEC PDstandardNth22phi;
+ CCTK_REAL_VEC PDstandardNth33phi;
+ CCTK_REAL_VEC PDstandardNth12phi;
+ CCTK_REAL_VEC PDstandardNth13phi;
+ CCTK_REAL_VEC PDstandardNth23phi;
+ CCTK_REAL_VEC PDstandardNth1Xt1;
+ CCTK_REAL_VEC PDstandardNth2Xt1;
+ CCTK_REAL_VEC PDstandardNth3Xt1;
+ CCTK_REAL_VEC PDstandardNth1Xt2;
+ CCTK_REAL_VEC PDstandardNth2Xt2;
+ CCTK_REAL_VEC PDstandardNth3Xt2;
+ CCTK_REAL_VEC PDstandardNth1Xt3;
+ CCTK_REAL_VEC PDstandardNth2Xt3;
+ CCTK_REAL_VEC PDstandardNth3Xt3;
+
+ switch(fdOrder)
+ {
+ case 2:
+ PDstandardNth1alpha = PDstandardNthfdOrder21(&alpha[index]);
+ PDstandardNth2alpha = PDstandardNthfdOrder22(&alpha[index]);
+ PDstandardNth3alpha = PDstandardNthfdOrder23(&alpha[index]);
+ PDstandardNth11alpha = PDstandardNthfdOrder211(&alpha[index]);
+ PDstandardNth22alpha = PDstandardNthfdOrder222(&alpha[index]);
+ PDstandardNth33alpha = PDstandardNthfdOrder233(&alpha[index]);
+ PDstandardNth12alpha = PDstandardNthfdOrder212(&alpha[index]);
+ PDstandardNth13alpha = PDstandardNthfdOrder213(&alpha[index]);
+ PDstandardNth23alpha = PDstandardNthfdOrder223(&alpha[index]);
+ PDstandardNth1beta1 = PDstandardNthfdOrder21(&beta1[index]);
+ PDstandardNth2beta1 = PDstandardNthfdOrder22(&beta1[index]);
+ PDstandardNth3beta1 = PDstandardNthfdOrder23(&beta1[index]);
+ PDstandardNth1beta2 = PDstandardNthfdOrder21(&beta2[index]);
+ PDstandardNth2beta2 = PDstandardNthfdOrder22(&beta2[index]);
+ PDstandardNth3beta2 = PDstandardNthfdOrder23(&beta2[index]);
+ PDstandardNth1beta3 = PDstandardNthfdOrder21(&beta3[index]);
+ PDstandardNth2beta3 = PDstandardNthfdOrder22(&beta3[index]);
+ PDstandardNth3beta3 = PDstandardNthfdOrder23(&beta3[index]);
+ PDstandardNth1gt11 = PDstandardNthfdOrder21(&gt11[index]);
+ PDstandardNth2gt11 = PDstandardNthfdOrder22(&gt11[index]);
+ PDstandardNth3gt11 = PDstandardNthfdOrder23(&gt11[index]);
+ PDstandardNth11gt11 = PDstandardNthfdOrder211(&gt11[index]);
+ PDstandardNth22gt11 = PDstandardNthfdOrder222(&gt11[index]);
+ PDstandardNth33gt11 = PDstandardNthfdOrder233(&gt11[index]);
+ PDstandardNth12gt11 = PDstandardNthfdOrder212(&gt11[index]);
+ PDstandardNth13gt11 = PDstandardNthfdOrder213(&gt11[index]);
+ PDstandardNth23gt11 = PDstandardNthfdOrder223(&gt11[index]);
+ PDstandardNth1gt12 = PDstandardNthfdOrder21(&gt12[index]);
+ PDstandardNth2gt12 = PDstandardNthfdOrder22(&gt12[index]);
+ PDstandardNth3gt12 = PDstandardNthfdOrder23(&gt12[index]);
+ PDstandardNth11gt12 = PDstandardNthfdOrder211(&gt12[index]);
+ PDstandardNth22gt12 = PDstandardNthfdOrder222(&gt12[index]);
+ PDstandardNth33gt12 = PDstandardNthfdOrder233(&gt12[index]);
+ PDstandardNth12gt12 = PDstandardNthfdOrder212(&gt12[index]);
+ PDstandardNth13gt12 = PDstandardNthfdOrder213(&gt12[index]);
+ PDstandardNth23gt12 = PDstandardNthfdOrder223(&gt12[index]);
+ PDstandardNth1gt13 = PDstandardNthfdOrder21(&gt13[index]);
+ PDstandardNth2gt13 = PDstandardNthfdOrder22(&gt13[index]);
+ PDstandardNth3gt13 = PDstandardNthfdOrder23(&gt13[index]);
+ PDstandardNth11gt13 = PDstandardNthfdOrder211(&gt13[index]);
+ PDstandardNth22gt13 = PDstandardNthfdOrder222(&gt13[index]);
+ PDstandardNth33gt13 = PDstandardNthfdOrder233(&gt13[index]);
+ PDstandardNth12gt13 = PDstandardNthfdOrder212(&gt13[index]);
+ PDstandardNth13gt13 = PDstandardNthfdOrder213(&gt13[index]);
+ PDstandardNth23gt13 = PDstandardNthfdOrder223(&gt13[index]);
+ PDstandardNth1gt22 = PDstandardNthfdOrder21(&gt22[index]);
+ PDstandardNth2gt22 = PDstandardNthfdOrder22(&gt22[index]);
+ PDstandardNth3gt22 = PDstandardNthfdOrder23(&gt22[index]);
+ PDstandardNth11gt22 = PDstandardNthfdOrder211(&gt22[index]);
+ PDstandardNth22gt22 = PDstandardNthfdOrder222(&gt22[index]);
+ PDstandardNth33gt22 = PDstandardNthfdOrder233(&gt22[index]);
+ PDstandardNth12gt22 = PDstandardNthfdOrder212(&gt22[index]);
+ PDstandardNth13gt22 = PDstandardNthfdOrder213(&gt22[index]);
+ PDstandardNth23gt22 = PDstandardNthfdOrder223(&gt22[index]);
+ PDstandardNth1gt23 = PDstandardNthfdOrder21(&gt23[index]);
+ PDstandardNth2gt23 = PDstandardNthfdOrder22(&gt23[index]);
+ PDstandardNth3gt23 = PDstandardNthfdOrder23(&gt23[index]);
+ PDstandardNth11gt23 = PDstandardNthfdOrder211(&gt23[index]);
+ PDstandardNth22gt23 = PDstandardNthfdOrder222(&gt23[index]);
+ PDstandardNth33gt23 = PDstandardNthfdOrder233(&gt23[index]);
+ PDstandardNth12gt23 = PDstandardNthfdOrder212(&gt23[index]);
+ PDstandardNth13gt23 = PDstandardNthfdOrder213(&gt23[index]);
+ PDstandardNth23gt23 = PDstandardNthfdOrder223(&gt23[index]);
+ PDstandardNth1gt33 = PDstandardNthfdOrder21(&gt33[index]);
+ PDstandardNth2gt33 = PDstandardNthfdOrder22(&gt33[index]);
+ PDstandardNth3gt33 = PDstandardNthfdOrder23(&gt33[index]);
+ PDstandardNth11gt33 = PDstandardNthfdOrder211(&gt33[index]);
+ PDstandardNth22gt33 = PDstandardNthfdOrder222(&gt33[index]);
+ PDstandardNth33gt33 = PDstandardNthfdOrder233(&gt33[index]);
+ PDstandardNth12gt33 = PDstandardNthfdOrder212(&gt33[index]);
+ PDstandardNth13gt33 = PDstandardNthfdOrder213(&gt33[index]);
+ PDstandardNth23gt33 = PDstandardNthfdOrder223(&gt33[index]);
+ PDstandardNth1phi = PDstandardNthfdOrder21(&phi[index]);
+ PDstandardNth2phi = PDstandardNthfdOrder22(&phi[index]);
+ PDstandardNth3phi = PDstandardNthfdOrder23(&phi[index]);
+ PDstandardNth11phi = PDstandardNthfdOrder211(&phi[index]);
+ PDstandardNth22phi = PDstandardNthfdOrder222(&phi[index]);
+ PDstandardNth33phi = PDstandardNthfdOrder233(&phi[index]);
+ PDstandardNth12phi = PDstandardNthfdOrder212(&phi[index]);
+ PDstandardNth13phi = PDstandardNthfdOrder213(&phi[index]);
+ PDstandardNth23phi = PDstandardNthfdOrder223(&phi[index]);
+ PDstandardNth1Xt1 = PDstandardNthfdOrder21(&Xt1[index]);
+ PDstandardNth2Xt1 = PDstandardNthfdOrder22(&Xt1[index]);
+ PDstandardNth3Xt1 = PDstandardNthfdOrder23(&Xt1[index]);
+ PDstandardNth1Xt2 = PDstandardNthfdOrder21(&Xt2[index]);
+ PDstandardNth2Xt2 = PDstandardNthfdOrder22(&Xt2[index]);
+ PDstandardNth3Xt2 = PDstandardNthfdOrder23(&Xt2[index]);
+ PDstandardNth1Xt3 = PDstandardNthfdOrder21(&Xt3[index]);
+ PDstandardNth2Xt3 = PDstandardNthfdOrder22(&Xt3[index]);
+ PDstandardNth3Xt3 = PDstandardNthfdOrder23(&Xt3[index]);
+ break;
+
+ case 4:
+ PDstandardNth1alpha = PDstandardNthfdOrder41(&alpha[index]);
+ PDstandardNth2alpha = PDstandardNthfdOrder42(&alpha[index]);
+ PDstandardNth3alpha = PDstandardNthfdOrder43(&alpha[index]);
+ PDstandardNth11alpha = PDstandardNthfdOrder411(&alpha[index]);
+ PDstandardNth22alpha = PDstandardNthfdOrder422(&alpha[index]);
+ PDstandardNth33alpha = PDstandardNthfdOrder433(&alpha[index]);
+ PDstandardNth12alpha = PDstandardNthfdOrder412(&alpha[index]);
+ PDstandardNth13alpha = PDstandardNthfdOrder413(&alpha[index]);
+ PDstandardNth23alpha = PDstandardNthfdOrder423(&alpha[index]);
+ PDstandardNth1beta1 = PDstandardNthfdOrder41(&beta1[index]);
+ PDstandardNth2beta1 = PDstandardNthfdOrder42(&beta1[index]);
+ PDstandardNth3beta1 = PDstandardNthfdOrder43(&beta1[index]);
+ PDstandardNth1beta2 = PDstandardNthfdOrder41(&beta2[index]);
+ PDstandardNth2beta2 = PDstandardNthfdOrder42(&beta2[index]);
+ PDstandardNth3beta2 = PDstandardNthfdOrder43(&beta2[index]);
+ PDstandardNth1beta3 = PDstandardNthfdOrder41(&beta3[index]);
+ PDstandardNth2beta3 = PDstandardNthfdOrder42(&beta3[index]);
+ PDstandardNth3beta3 = PDstandardNthfdOrder43(&beta3[index]);
+ PDstandardNth1gt11 = PDstandardNthfdOrder41(&gt11[index]);
+ PDstandardNth2gt11 = PDstandardNthfdOrder42(&gt11[index]);
+ PDstandardNth3gt11 = PDstandardNthfdOrder43(&gt11[index]);
+ PDstandardNth11gt11 = PDstandardNthfdOrder411(&gt11[index]);
+ PDstandardNth22gt11 = PDstandardNthfdOrder422(&gt11[index]);
+ PDstandardNth33gt11 = PDstandardNthfdOrder433(&gt11[index]);
+ PDstandardNth12gt11 = PDstandardNthfdOrder412(&gt11[index]);
+ PDstandardNth13gt11 = PDstandardNthfdOrder413(&gt11[index]);
+ PDstandardNth23gt11 = PDstandardNthfdOrder423(&gt11[index]);
+ PDstandardNth1gt12 = PDstandardNthfdOrder41(&gt12[index]);
+ PDstandardNth2gt12 = PDstandardNthfdOrder42(&gt12[index]);
+ PDstandardNth3gt12 = PDstandardNthfdOrder43(&gt12[index]);
+ PDstandardNth11gt12 = PDstandardNthfdOrder411(&gt12[index]);
+ PDstandardNth22gt12 = PDstandardNthfdOrder422(&gt12[index]);
+ PDstandardNth33gt12 = PDstandardNthfdOrder433(&gt12[index]);
+ PDstandardNth12gt12 = PDstandardNthfdOrder412(&gt12[index]);
+ PDstandardNth13gt12 = PDstandardNthfdOrder413(&gt12[index]);
+ PDstandardNth23gt12 = PDstandardNthfdOrder423(&gt12[index]);
+ PDstandardNth1gt13 = PDstandardNthfdOrder41(&gt13[index]);
+ PDstandardNth2gt13 = PDstandardNthfdOrder42(&gt13[index]);
+ PDstandardNth3gt13 = PDstandardNthfdOrder43(&gt13[index]);
+ PDstandardNth11gt13 = PDstandardNthfdOrder411(&gt13[index]);
+ PDstandardNth22gt13 = PDstandardNthfdOrder422(&gt13[index]);
+ PDstandardNth33gt13 = PDstandardNthfdOrder433(&gt13[index]);
+ PDstandardNth12gt13 = PDstandardNthfdOrder412(&gt13[index]);
+ PDstandardNth13gt13 = PDstandardNthfdOrder413(&gt13[index]);
+ PDstandardNth23gt13 = PDstandardNthfdOrder423(&gt13[index]);
+ PDstandardNth1gt22 = PDstandardNthfdOrder41(&gt22[index]);
+ PDstandardNth2gt22 = PDstandardNthfdOrder42(&gt22[index]);
+ PDstandardNth3gt22 = PDstandardNthfdOrder43(&gt22[index]);
+ PDstandardNth11gt22 = PDstandardNthfdOrder411(&gt22[index]);
+ PDstandardNth22gt22 = PDstandardNthfdOrder422(&gt22[index]);
+ PDstandardNth33gt22 = PDstandardNthfdOrder433(&gt22[index]);
+ PDstandardNth12gt22 = PDstandardNthfdOrder412(&gt22[index]);
+ PDstandardNth13gt22 = PDstandardNthfdOrder413(&gt22[index]);
+ PDstandardNth23gt22 = PDstandardNthfdOrder423(&gt22[index]);
+ PDstandardNth1gt23 = PDstandardNthfdOrder41(&gt23[index]);
+ PDstandardNth2gt23 = PDstandardNthfdOrder42(&gt23[index]);
+ PDstandardNth3gt23 = PDstandardNthfdOrder43(&gt23[index]);
+ PDstandardNth11gt23 = PDstandardNthfdOrder411(&gt23[index]);
+ PDstandardNth22gt23 = PDstandardNthfdOrder422(&gt23[index]);
+ PDstandardNth33gt23 = PDstandardNthfdOrder433(&gt23[index]);
+ PDstandardNth12gt23 = PDstandardNthfdOrder412(&gt23[index]);
+ PDstandardNth13gt23 = PDstandardNthfdOrder413(&gt23[index]);
+ PDstandardNth23gt23 = PDstandardNthfdOrder423(&gt23[index]);
+ PDstandardNth1gt33 = PDstandardNthfdOrder41(&gt33[index]);
+ PDstandardNth2gt33 = PDstandardNthfdOrder42(&gt33[index]);
+ PDstandardNth3gt33 = PDstandardNthfdOrder43(&gt33[index]);
+ PDstandardNth11gt33 = PDstandardNthfdOrder411(&gt33[index]);
+ PDstandardNth22gt33 = PDstandardNthfdOrder422(&gt33[index]);
+ PDstandardNth33gt33 = PDstandardNthfdOrder433(&gt33[index]);
+ PDstandardNth12gt33 = PDstandardNthfdOrder412(&gt33[index]);
+ PDstandardNth13gt33 = PDstandardNthfdOrder413(&gt33[index]);
+ PDstandardNth23gt33 = PDstandardNthfdOrder423(&gt33[index]);
+ PDstandardNth1phi = PDstandardNthfdOrder41(&phi[index]);
+ PDstandardNth2phi = PDstandardNthfdOrder42(&phi[index]);
+ PDstandardNth3phi = PDstandardNthfdOrder43(&phi[index]);
+ PDstandardNth11phi = PDstandardNthfdOrder411(&phi[index]);
+ PDstandardNth22phi = PDstandardNthfdOrder422(&phi[index]);
+ PDstandardNth33phi = PDstandardNthfdOrder433(&phi[index]);
+ PDstandardNth12phi = PDstandardNthfdOrder412(&phi[index]);
+ PDstandardNth13phi = PDstandardNthfdOrder413(&phi[index]);
+ PDstandardNth23phi = PDstandardNthfdOrder423(&phi[index]);
+ PDstandardNth1Xt1 = PDstandardNthfdOrder41(&Xt1[index]);
+ PDstandardNth2Xt1 = PDstandardNthfdOrder42(&Xt1[index]);
+ PDstandardNth3Xt1 = PDstandardNthfdOrder43(&Xt1[index]);
+ PDstandardNth1Xt2 = PDstandardNthfdOrder41(&Xt2[index]);
+ PDstandardNth2Xt2 = PDstandardNthfdOrder42(&Xt2[index]);
+ PDstandardNth3Xt2 = PDstandardNthfdOrder43(&Xt2[index]);
+ PDstandardNth1Xt3 = PDstandardNthfdOrder41(&Xt3[index]);
+ PDstandardNth2Xt3 = PDstandardNthfdOrder42(&Xt3[index]);
+ PDstandardNth3Xt3 = PDstandardNthfdOrder43(&Xt3[index]);
+ break;
+
+ case 6:
+ PDstandardNth1alpha = PDstandardNthfdOrder61(&alpha[index]);
+ PDstandardNth2alpha = PDstandardNthfdOrder62(&alpha[index]);
+ PDstandardNth3alpha = PDstandardNthfdOrder63(&alpha[index]);
+ PDstandardNth11alpha = PDstandardNthfdOrder611(&alpha[index]);
+ PDstandardNth22alpha = PDstandardNthfdOrder622(&alpha[index]);
+ PDstandardNth33alpha = PDstandardNthfdOrder633(&alpha[index]);
+ PDstandardNth12alpha = PDstandardNthfdOrder612(&alpha[index]);
+ PDstandardNth13alpha = PDstandardNthfdOrder613(&alpha[index]);
+ PDstandardNth23alpha = PDstandardNthfdOrder623(&alpha[index]);
+ PDstandardNth1beta1 = PDstandardNthfdOrder61(&beta1[index]);
+ PDstandardNth2beta1 = PDstandardNthfdOrder62(&beta1[index]);
+ PDstandardNth3beta1 = PDstandardNthfdOrder63(&beta1[index]);
+ PDstandardNth1beta2 = PDstandardNthfdOrder61(&beta2[index]);
+ PDstandardNth2beta2 = PDstandardNthfdOrder62(&beta2[index]);
+ PDstandardNth3beta2 = PDstandardNthfdOrder63(&beta2[index]);
+ PDstandardNth1beta3 = PDstandardNthfdOrder61(&beta3[index]);
+ PDstandardNth2beta3 = PDstandardNthfdOrder62(&beta3[index]);
+ PDstandardNth3beta3 = PDstandardNthfdOrder63(&beta3[index]);
+ PDstandardNth1gt11 = PDstandardNthfdOrder61(&gt11[index]);
+ PDstandardNth2gt11 = PDstandardNthfdOrder62(&gt11[index]);
+ PDstandardNth3gt11 = PDstandardNthfdOrder63(&gt11[index]);
+ PDstandardNth11gt11 = PDstandardNthfdOrder611(&gt11[index]);
+ PDstandardNth22gt11 = PDstandardNthfdOrder622(&gt11[index]);
+ PDstandardNth33gt11 = PDstandardNthfdOrder633(&gt11[index]);
+ PDstandardNth12gt11 = PDstandardNthfdOrder612(&gt11[index]);
+ PDstandardNth13gt11 = PDstandardNthfdOrder613(&gt11[index]);
+ PDstandardNth23gt11 = PDstandardNthfdOrder623(&gt11[index]);
+ PDstandardNth1gt12 = PDstandardNthfdOrder61(&gt12[index]);
+ PDstandardNth2gt12 = PDstandardNthfdOrder62(&gt12[index]);
+ PDstandardNth3gt12 = PDstandardNthfdOrder63(&gt12[index]);
+ PDstandardNth11gt12 = PDstandardNthfdOrder611(&gt12[index]);
+ PDstandardNth22gt12 = PDstandardNthfdOrder622(&gt12[index]);
+ PDstandardNth33gt12 = PDstandardNthfdOrder633(&gt12[index]);
+ PDstandardNth12gt12 = PDstandardNthfdOrder612(&gt12[index]);
+ PDstandardNth13gt12 = PDstandardNthfdOrder613(&gt12[index]);
+ PDstandardNth23gt12 = PDstandardNthfdOrder623(&gt12[index]);
+ PDstandardNth1gt13 = PDstandardNthfdOrder61(&gt13[index]);
+ PDstandardNth2gt13 = PDstandardNthfdOrder62(&gt13[index]);
+ PDstandardNth3gt13 = PDstandardNthfdOrder63(&gt13[index]);
+ PDstandardNth11gt13 = PDstandardNthfdOrder611(&gt13[index]);
+ PDstandardNth22gt13 = PDstandardNthfdOrder622(&gt13[index]);
+ PDstandardNth33gt13 = PDstandardNthfdOrder633(&gt13[index]);
+ PDstandardNth12gt13 = PDstandardNthfdOrder612(&gt13[index]);
+ PDstandardNth13gt13 = PDstandardNthfdOrder613(&gt13[index]);
+ PDstandardNth23gt13 = PDstandardNthfdOrder623(&gt13[index]);
+ PDstandardNth1gt22 = PDstandardNthfdOrder61(&gt22[index]);
+ PDstandardNth2gt22 = PDstandardNthfdOrder62(&gt22[index]);
+ PDstandardNth3gt22 = PDstandardNthfdOrder63(&gt22[index]);
+ PDstandardNth11gt22 = PDstandardNthfdOrder611(&gt22[index]);
+ PDstandardNth22gt22 = PDstandardNthfdOrder622(&gt22[index]);
+ PDstandardNth33gt22 = PDstandardNthfdOrder633(&gt22[index]);
+ PDstandardNth12gt22 = PDstandardNthfdOrder612(&gt22[index]);
+ PDstandardNth13gt22 = PDstandardNthfdOrder613(&gt22[index]);
+ PDstandardNth23gt22 = PDstandardNthfdOrder623(&gt22[index]);
+ PDstandardNth1gt23 = PDstandardNthfdOrder61(&gt23[index]);
+ PDstandardNth2gt23 = PDstandardNthfdOrder62(&gt23[index]);
+ PDstandardNth3gt23 = PDstandardNthfdOrder63(&gt23[index]);
+ PDstandardNth11gt23 = PDstandardNthfdOrder611(&gt23[index]);
+ PDstandardNth22gt23 = PDstandardNthfdOrder622(&gt23[index]);
+ PDstandardNth33gt23 = PDstandardNthfdOrder633(&gt23[index]);
+ PDstandardNth12gt23 = PDstandardNthfdOrder612(&gt23[index]);
+ PDstandardNth13gt23 = PDstandardNthfdOrder613(&gt23[index]);
+ PDstandardNth23gt23 = PDstandardNthfdOrder623(&gt23[index]);
+ PDstandardNth1gt33 = PDstandardNthfdOrder61(&gt33[index]);
+ PDstandardNth2gt33 = PDstandardNthfdOrder62(&gt33[index]);
+ PDstandardNth3gt33 = PDstandardNthfdOrder63(&gt33[index]);
+ PDstandardNth11gt33 = PDstandardNthfdOrder611(&gt33[index]);
+ PDstandardNth22gt33 = PDstandardNthfdOrder622(&gt33[index]);
+ PDstandardNth33gt33 = PDstandardNthfdOrder633(&gt33[index]);
+ PDstandardNth12gt33 = PDstandardNthfdOrder612(&gt33[index]);
+ PDstandardNth13gt33 = PDstandardNthfdOrder613(&gt33[index]);
+ PDstandardNth23gt33 = PDstandardNthfdOrder623(&gt33[index]);
+ PDstandardNth1phi = PDstandardNthfdOrder61(&phi[index]);
+ PDstandardNth2phi = PDstandardNthfdOrder62(&phi[index]);
+ PDstandardNth3phi = PDstandardNthfdOrder63(&phi[index]);
+ PDstandardNth11phi = PDstandardNthfdOrder611(&phi[index]);
+ PDstandardNth22phi = PDstandardNthfdOrder622(&phi[index]);
+ PDstandardNth33phi = PDstandardNthfdOrder633(&phi[index]);
+ PDstandardNth12phi = PDstandardNthfdOrder612(&phi[index]);
+ PDstandardNth13phi = PDstandardNthfdOrder613(&phi[index]);
+ PDstandardNth23phi = PDstandardNthfdOrder623(&phi[index]);
+ PDstandardNth1Xt1 = PDstandardNthfdOrder61(&Xt1[index]);
+ PDstandardNth2Xt1 = PDstandardNthfdOrder62(&Xt1[index]);
+ PDstandardNth3Xt1 = PDstandardNthfdOrder63(&Xt1[index]);
+ PDstandardNth1Xt2 = PDstandardNthfdOrder61(&Xt2[index]);
+ PDstandardNth2Xt2 = PDstandardNthfdOrder62(&Xt2[index]);
+ PDstandardNth3Xt2 = PDstandardNthfdOrder63(&Xt2[index]);
+ PDstandardNth1Xt3 = PDstandardNthfdOrder61(&Xt3[index]);
+ PDstandardNth2Xt3 = PDstandardNthfdOrder62(&Xt3[index]);
+ PDstandardNth3Xt3 = PDstandardNthfdOrder63(&Xt3[index]);
+ break;
+
+ case 8:
+ PDstandardNth1alpha = PDstandardNthfdOrder81(&alpha[index]);
+ PDstandardNth2alpha = PDstandardNthfdOrder82(&alpha[index]);
+ PDstandardNth3alpha = PDstandardNthfdOrder83(&alpha[index]);
+ PDstandardNth11alpha = PDstandardNthfdOrder811(&alpha[index]);
+ PDstandardNth22alpha = PDstandardNthfdOrder822(&alpha[index]);
+ PDstandardNth33alpha = PDstandardNthfdOrder833(&alpha[index]);
+ PDstandardNth12alpha = PDstandardNthfdOrder812(&alpha[index]);
+ PDstandardNth13alpha = PDstandardNthfdOrder813(&alpha[index]);
+ PDstandardNth23alpha = PDstandardNthfdOrder823(&alpha[index]);
+ PDstandardNth1beta1 = PDstandardNthfdOrder81(&beta1[index]);
+ PDstandardNth2beta1 = PDstandardNthfdOrder82(&beta1[index]);
+ PDstandardNth3beta1 = PDstandardNthfdOrder83(&beta1[index]);
+ PDstandardNth1beta2 = PDstandardNthfdOrder81(&beta2[index]);
+ PDstandardNth2beta2 = PDstandardNthfdOrder82(&beta2[index]);
+ PDstandardNth3beta2 = PDstandardNthfdOrder83(&beta2[index]);
+ PDstandardNth1beta3 = PDstandardNthfdOrder81(&beta3[index]);
+ PDstandardNth2beta3 = PDstandardNthfdOrder82(&beta3[index]);
+ PDstandardNth3beta3 = PDstandardNthfdOrder83(&beta3[index]);
+ PDstandardNth1gt11 = PDstandardNthfdOrder81(&gt11[index]);
+ PDstandardNth2gt11 = PDstandardNthfdOrder82(&gt11[index]);
+ PDstandardNth3gt11 = PDstandardNthfdOrder83(&gt11[index]);
+ PDstandardNth11gt11 = PDstandardNthfdOrder811(&gt11[index]);
+ PDstandardNth22gt11 = PDstandardNthfdOrder822(&gt11[index]);
+ PDstandardNth33gt11 = PDstandardNthfdOrder833(&gt11[index]);
+ PDstandardNth12gt11 = PDstandardNthfdOrder812(&gt11[index]);
+ PDstandardNth13gt11 = PDstandardNthfdOrder813(&gt11[index]);
+ PDstandardNth23gt11 = PDstandardNthfdOrder823(&gt11[index]);
+ PDstandardNth1gt12 = PDstandardNthfdOrder81(&gt12[index]);
+ PDstandardNth2gt12 = PDstandardNthfdOrder82(&gt12[index]);
+ PDstandardNth3gt12 = PDstandardNthfdOrder83(&gt12[index]);
+ PDstandardNth11gt12 = PDstandardNthfdOrder811(&gt12[index]);
+ PDstandardNth22gt12 = PDstandardNthfdOrder822(&gt12[index]);
+ PDstandardNth33gt12 = PDstandardNthfdOrder833(&gt12[index]);
+ PDstandardNth12gt12 = PDstandardNthfdOrder812(&gt12[index]);
+ PDstandardNth13gt12 = PDstandardNthfdOrder813(&gt12[index]);
+ PDstandardNth23gt12 = PDstandardNthfdOrder823(&gt12[index]);
+ PDstandardNth1gt13 = PDstandardNthfdOrder81(&gt13[index]);
+ PDstandardNth2gt13 = PDstandardNthfdOrder82(&gt13[index]);
+ PDstandardNth3gt13 = PDstandardNthfdOrder83(&gt13[index]);
+ PDstandardNth11gt13 = PDstandardNthfdOrder811(&gt13[index]);
+ PDstandardNth22gt13 = PDstandardNthfdOrder822(&gt13[index]);
+ PDstandardNth33gt13 = PDstandardNthfdOrder833(&gt13[index]);
+ PDstandardNth12gt13 = PDstandardNthfdOrder812(&gt13[index]);
+ PDstandardNth13gt13 = PDstandardNthfdOrder813(&gt13[index]);
+ PDstandardNth23gt13 = PDstandardNthfdOrder823(&gt13[index]);
+ PDstandardNth1gt22 = PDstandardNthfdOrder81(&gt22[index]);
+ PDstandardNth2gt22 = PDstandardNthfdOrder82(&gt22[index]);
+ PDstandardNth3gt22 = PDstandardNthfdOrder83(&gt22[index]);
+ PDstandardNth11gt22 = PDstandardNthfdOrder811(&gt22[index]);
+ PDstandardNth22gt22 = PDstandardNthfdOrder822(&gt22[index]);
+ PDstandardNth33gt22 = PDstandardNthfdOrder833(&gt22[index]);
+ PDstandardNth12gt22 = PDstandardNthfdOrder812(&gt22[index]);
+ PDstandardNth13gt22 = PDstandardNthfdOrder813(&gt22[index]);
+ PDstandardNth23gt22 = PDstandardNthfdOrder823(&gt22[index]);
+ PDstandardNth1gt23 = PDstandardNthfdOrder81(&gt23[index]);
+ PDstandardNth2gt23 = PDstandardNthfdOrder82(&gt23[index]);
+ PDstandardNth3gt23 = PDstandardNthfdOrder83(&gt23[index]);
+ PDstandardNth11gt23 = PDstandardNthfdOrder811(&gt23[index]);
+ PDstandardNth22gt23 = PDstandardNthfdOrder822(&gt23[index]);
+ PDstandardNth33gt23 = PDstandardNthfdOrder833(&gt23[index]);
+ PDstandardNth12gt23 = PDstandardNthfdOrder812(&gt23[index]);
+ PDstandardNth13gt23 = PDstandardNthfdOrder813(&gt23[index]);
+ PDstandardNth23gt23 = PDstandardNthfdOrder823(&gt23[index]);
+ PDstandardNth1gt33 = PDstandardNthfdOrder81(&gt33[index]);
+ PDstandardNth2gt33 = PDstandardNthfdOrder82(&gt33[index]);
+ PDstandardNth3gt33 = PDstandardNthfdOrder83(&gt33[index]);
+ PDstandardNth11gt33 = PDstandardNthfdOrder811(&gt33[index]);
+ PDstandardNth22gt33 = PDstandardNthfdOrder822(&gt33[index]);
+ PDstandardNth33gt33 = PDstandardNthfdOrder833(&gt33[index]);
+ PDstandardNth12gt33 = PDstandardNthfdOrder812(&gt33[index]);
+ PDstandardNth13gt33 = PDstandardNthfdOrder813(&gt33[index]);
+ PDstandardNth23gt33 = PDstandardNthfdOrder823(&gt33[index]);
+ PDstandardNth1phi = PDstandardNthfdOrder81(&phi[index]);
+ PDstandardNth2phi = PDstandardNthfdOrder82(&phi[index]);
+ PDstandardNth3phi = PDstandardNthfdOrder83(&phi[index]);
+ PDstandardNth11phi = PDstandardNthfdOrder811(&phi[index]);
+ PDstandardNth22phi = PDstandardNthfdOrder822(&phi[index]);
+ PDstandardNth33phi = PDstandardNthfdOrder833(&phi[index]);
+ PDstandardNth12phi = PDstandardNthfdOrder812(&phi[index]);
+ PDstandardNth13phi = PDstandardNthfdOrder813(&phi[index]);
+ PDstandardNth23phi = PDstandardNthfdOrder823(&phi[index]);
+ PDstandardNth1Xt1 = PDstandardNthfdOrder81(&Xt1[index]);
+ PDstandardNth2Xt1 = PDstandardNthfdOrder82(&Xt1[index]);
+ PDstandardNth3Xt1 = PDstandardNthfdOrder83(&Xt1[index]);
+ PDstandardNth1Xt2 = PDstandardNthfdOrder81(&Xt2[index]);
+ PDstandardNth2Xt2 = PDstandardNthfdOrder82(&Xt2[index]);
+ PDstandardNth3Xt2 = PDstandardNthfdOrder83(&Xt2[index]);
+ PDstandardNth1Xt3 = PDstandardNthfdOrder81(&Xt3[index]);
+ PDstandardNth2Xt3 = PDstandardNthfdOrder82(&Xt3[index]);
+ PDstandardNth3Xt3 = PDstandardNthfdOrder83(&Xt3[index]);
+ break;
+ }
+
+ /* Calculate temporaries and grid functions */
+ ptrdiff_t dir1 = Sign(beta1L);
+
+ ptrdiff_t dir2 = Sign(beta2L);
+
+ ptrdiff_t dir3 = Sign(beta3L);
+
+ CCTK_REAL_VEC JacPDstandardNth11alpha;
+ CCTK_REAL_VEC JacPDstandardNth11gt11;
+ CCTK_REAL_VEC JacPDstandardNth11gt12;
+ CCTK_REAL_VEC JacPDstandardNth11gt13;
+ CCTK_REAL_VEC JacPDstandardNth11gt22;
+ CCTK_REAL_VEC JacPDstandardNth11gt23;
+ CCTK_REAL_VEC JacPDstandardNth11gt33;
+ CCTK_REAL_VEC JacPDstandardNth11phi;
+ CCTK_REAL_VEC JacPDstandardNth12alpha;
+ CCTK_REAL_VEC JacPDstandardNth12gt11;
+ CCTK_REAL_VEC JacPDstandardNth12gt12;
+ CCTK_REAL_VEC JacPDstandardNth12gt13;
+ CCTK_REAL_VEC JacPDstandardNth12gt22;
+ CCTK_REAL_VEC JacPDstandardNth12gt23;
+ CCTK_REAL_VEC JacPDstandardNth12gt33;
+ CCTK_REAL_VEC JacPDstandardNth12phi;
+ CCTK_REAL_VEC JacPDstandardNth13alpha;
+ CCTK_REAL_VEC JacPDstandardNth13gt11;
+ CCTK_REAL_VEC JacPDstandardNth13gt12;
+ CCTK_REAL_VEC JacPDstandardNth13gt13;
+ CCTK_REAL_VEC JacPDstandardNth13gt22;
+ CCTK_REAL_VEC JacPDstandardNth13gt23;
+ CCTK_REAL_VEC JacPDstandardNth13gt33;
+ CCTK_REAL_VEC JacPDstandardNth13phi;
+ CCTK_REAL_VEC JacPDstandardNth1alpha;
+ CCTK_REAL_VEC JacPDstandardNth1beta1;
+ CCTK_REAL_VEC JacPDstandardNth1beta2;
+ CCTK_REAL_VEC JacPDstandardNth1beta3;
+ CCTK_REAL_VEC JacPDstandardNth1gt11;
+ CCTK_REAL_VEC JacPDstandardNth1gt12;
+ CCTK_REAL_VEC JacPDstandardNth1gt13;
+ CCTK_REAL_VEC JacPDstandardNth1gt22;
+ CCTK_REAL_VEC JacPDstandardNth1gt23;
+ CCTK_REAL_VEC JacPDstandardNth1gt33;
+ CCTK_REAL_VEC JacPDstandardNth1phi;
+ CCTK_REAL_VEC JacPDstandardNth1Xt1;
+ CCTK_REAL_VEC JacPDstandardNth1Xt2;
+ CCTK_REAL_VEC JacPDstandardNth1Xt3;
+ CCTK_REAL_VEC JacPDstandardNth21gt11;
+ CCTK_REAL_VEC JacPDstandardNth21gt12;
+ CCTK_REAL_VEC JacPDstandardNth21gt13;
+ CCTK_REAL_VEC JacPDstandardNth21gt22;
+ CCTK_REAL_VEC JacPDstandardNth21gt23;
+ CCTK_REAL_VEC JacPDstandardNth21gt33;
+ CCTK_REAL_VEC JacPDstandardNth22alpha;
+ CCTK_REAL_VEC JacPDstandardNth22gt11;
+ CCTK_REAL_VEC JacPDstandardNth22gt12;
+ CCTK_REAL_VEC JacPDstandardNth22gt13;
+ CCTK_REAL_VEC JacPDstandardNth22gt22;
+ CCTK_REAL_VEC JacPDstandardNth22gt23;
+ CCTK_REAL_VEC JacPDstandardNth22gt33;
+ CCTK_REAL_VEC JacPDstandardNth22phi;
+ CCTK_REAL_VEC JacPDstandardNth23alpha;
+ CCTK_REAL_VEC JacPDstandardNth23gt11;
+ CCTK_REAL_VEC JacPDstandardNth23gt12;
+ CCTK_REAL_VEC JacPDstandardNth23gt13;
+ CCTK_REAL_VEC JacPDstandardNth23gt22;
+ CCTK_REAL_VEC JacPDstandardNth23gt23;
+ CCTK_REAL_VEC JacPDstandardNth23gt33;
+ CCTK_REAL_VEC JacPDstandardNth23phi;
+ CCTK_REAL_VEC JacPDstandardNth2alpha;
+ CCTK_REAL_VEC JacPDstandardNth2beta1;
+ CCTK_REAL_VEC JacPDstandardNth2beta2;
+ CCTK_REAL_VEC JacPDstandardNth2beta3;
+ CCTK_REAL_VEC JacPDstandardNth2gt11;
+ CCTK_REAL_VEC JacPDstandardNth2gt12;
+ CCTK_REAL_VEC JacPDstandardNth2gt13;
+ CCTK_REAL_VEC JacPDstandardNth2gt22;
+ CCTK_REAL_VEC JacPDstandardNth2gt23;
+ CCTK_REAL_VEC JacPDstandardNth2gt33;
+ CCTK_REAL_VEC JacPDstandardNth2phi;
+ CCTK_REAL_VEC JacPDstandardNth2Xt1;
+ CCTK_REAL_VEC JacPDstandardNth2Xt2;
+ CCTK_REAL_VEC JacPDstandardNth2Xt3;
+ CCTK_REAL_VEC JacPDstandardNth31gt11;
+ CCTK_REAL_VEC JacPDstandardNth31gt12;
+ CCTK_REAL_VEC JacPDstandardNth31gt13;
+ CCTK_REAL_VEC JacPDstandardNth31gt22;
+ CCTK_REAL_VEC JacPDstandardNth31gt23;
+ CCTK_REAL_VEC JacPDstandardNth31gt33;
+ CCTK_REAL_VEC JacPDstandardNth32gt11;
+ CCTK_REAL_VEC JacPDstandardNth32gt12;
+ CCTK_REAL_VEC JacPDstandardNth32gt13;
+ CCTK_REAL_VEC JacPDstandardNth32gt22;
+ CCTK_REAL_VEC JacPDstandardNth32gt23;
+ CCTK_REAL_VEC JacPDstandardNth32gt33;
+ CCTK_REAL_VEC JacPDstandardNth33alpha;
+ CCTK_REAL_VEC JacPDstandardNth33gt11;
+ CCTK_REAL_VEC JacPDstandardNth33gt12;
+ CCTK_REAL_VEC JacPDstandardNth33gt13;
+ CCTK_REAL_VEC JacPDstandardNth33gt22;
+ CCTK_REAL_VEC JacPDstandardNth33gt23;
+ CCTK_REAL_VEC JacPDstandardNth33gt33;
+ CCTK_REAL_VEC JacPDstandardNth33phi;
+ CCTK_REAL_VEC JacPDstandardNth3alpha;
+ CCTK_REAL_VEC JacPDstandardNth3beta1;
+ CCTK_REAL_VEC JacPDstandardNth3beta2;
+ CCTK_REAL_VEC JacPDstandardNth3beta3;
+ CCTK_REAL_VEC JacPDstandardNth3gt11;
+ CCTK_REAL_VEC JacPDstandardNth3gt12;
+ CCTK_REAL_VEC JacPDstandardNth3gt13;
+ CCTK_REAL_VEC JacPDstandardNth3gt22;
+ CCTK_REAL_VEC JacPDstandardNth3gt23;
+ CCTK_REAL_VEC JacPDstandardNth3gt33;
+ CCTK_REAL_VEC JacPDstandardNth3phi;
+ CCTK_REAL_VEC JacPDstandardNth3Xt1;
+ CCTK_REAL_VEC JacPDstandardNth3Xt2;
+ CCTK_REAL_VEC JacPDstandardNth3Xt3;
+
+ if (use_jacobian)
+ {
+ JacPDstandardNth1alpha =
+ kmadd(J11L,PDstandardNth1alpha,kmadd(J21L,PDstandardNth2alpha,kmul(J31L,PDstandardNth3alpha)));
+
+ JacPDstandardNth1beta1 =
+ kmadd(J11L,PDstandardNth1beta1,kmadd(J21L,PDstandardNth2beta1,kmul(J31L,PDstandardNth3beta1)));
+
+ JacPDstandardNth1beta2 =
+ kmadd(J11L,PDstandardNth1beta2,kmadd(J21L,PDstandardNth2beta2,kmul(J31L,PDstandardNth3beta2)));
+
+ JacPDstandardNth1beta3 =
+ kmadd(J11L,PDstandardNth1beta3,kmadd(J21L,PDstandardNth2beta3,kmul(J31L,PDstandardNth3beta3)));
+
+ JacPDstandardNth1gt11 =
+ kmadd(J11L,PDstandardNth1gt11,kmadd(J21L,PDstandardNth2gt11,kmul(J31L,PDstandardNth3gt11)));
+
+ JacPDstandardNth1gt12 =
+ kmadd(J11L,PDstandardNth1gt12,kmadd(J21L,PDstandardNth2gt12,kmul(J31L,PDstandardNth3gt12)));
+
+ JacPDstandardNth1gt13 =
+ kmadd(J11L,PDstandardNth1gt13,kmadd(J21L,PDstandardNth2gt13,kmul(J31L,PDstandardNth3gt13)));
+
+ JacPDstandardNth1gt22 =
+ kmadd(J11L,PDstandardNth1gt22,kmadd(J21L,PDstandardNth2gt22,kmul(J31L,PDstandardNth3gt22)));
+
+ JacPDstandardNth1gt23 =
+ kmadd(J11L,PDstandardNth1gt23,kmadd(J21L,PDstandardNth2gt23,kmul(J31L,PDstandardNth3gt23)));
+
+ JacPDstandardNth1gt33 =
+ kmadd(J11L,PDstandardNth1gt33,kmadd(J21L,PDstandardNth2gt33,kmul(J31L,PDstandardNth3gt33)));
+
+ JacPDstandardNth1phi =
+ kmadd(J11L,PDstandardNth1phi,kmadd(J21L,PDstandardNth2phi,kmul(J31L,PDstandardNth3phi)));
+
+ JacPDstandardNth1Xt1 =
+ kmadd(J11L,PDstandardNth1Xt1,kmadd(J21L,PDstandardNth2Xt1,kmul(J31L,PDstandardNth3Xt1)));
+
+ JacPDstandardNth1Xt2 =
+ kmadd(J11L,PDstandardNth1Xt2,kmadd(J21L,PDstandardNth2Xt2,kmul(J31L,PDstandardNth3Xt2)));
+
+ JacPDstandardNth1Xt3 =
+ kmadd(J11L,PDstandardNth1Xt3,kmadd(J21L,PDstandardNth2Xt3,kmul(J31L,PDstandardNth3Xt3)));
+
+ JacPDstandardNth2alpha =
+ kmadd(J12L,PDstandardNth1alpha,kmadd(J22L,PDstandardNth2alpha,kmul(J32L,PDstandardNth3alpha)));
+
+ JacPDstandardNth2beta1 =
+ kmadd(J12L,PDstandardNth1beta1,kmadd(J22L,PDstandardNth2beta1,kmul(J32L,PDstandardNth3beta1)));
+
+ JacPDstandardNth2beta2 =
+ kmadd(J12L,PDstandardNth1beta2,kmadd(J22L,PDstandardNth2beta2,kmul(J32L,PDstandardNth3beta2)));
+
+ JacPDstandardNth2beta3 =
+ kmadd(J12L,PDstandardNth1beta3,kmadd(J22L,PDstandardNth2beta3,kmul(J32L,PDstandardNth3beta3)));
+
+ JacPDstandardNth2gt11 =
+ kmadd(J12L,PDstandardNth1gt11,kmadd(J22L,PDstandardNth2gt11,kmul(J32L,PDstandardNth3gt11)));
+
+ JacPDstandardNth2gt12 =
+ kmadd(J12L,PDstandardNth1gt12,kmadd(J22L,PDstandardNth2gt12,kmul(J32L,PDstandardNth3gt12)));
+
+ JacPDstandardNth2gt13 =
+ kmadd(J12L,PDstandardNth1gt13,kmadd(J22L,PDstandardNth2gt13,kmul(J32L,PDstandardNth3gt13)));
+
+ JacPDstandardNth2gt22 =
+ kmadd(J12L,PDstandardNth1gt22,kmadd(J22L,PDstandardNth2gt22,kmul(J32L,PDstandardNth3gt22)));
+
+ JacPDstandardNth2gt23 =
+ kmadd(J12L,PDstandardNth1gt23,kmadd(J22L,PDstandardNth2gt23,kmul(J32L,PDstandardNth3gt23)));
+
+ JacPDstandardNth2gt33 =
+ kmadd(J12L,PDstandardNth1gt33,kmadd(J22L,PDstandardNth2gt33,kmul(J32L,PDstandardNth3gt33)));
+
+ JacPDstandardNth2phi =
+ kmadd(J12L,PDstandardNth1phi,kmadd(J22L,PDstandardNth2phi,kmul(J32L,PDstandardNth3phi)));
+
+ JacPDstandardNth2Xt1 =
+ kmadd(J12L,PDstandardNth1Xt1,kmadd(J22L,PDstandardNth2Xt1,kmul(J32L,PDstandardNth3Xt1)));
+
+ JacPDstandardNth2Xt2 =
+ kmadd(J12L,PDstandardNth1Xt2,kmadd(J22L,PDstandardNth2Xt2,kmul(J32L,PDstandardNth3Xt2)));
+
+ JacPDstandardNth2Xt3 =
+ kmadd(J12L,PDstandardNth1Xt3,kmadd(J22L,PDstandardNth2Xt3,kmul(J32L,PDstandardNth3Xt3)));
+
+ JacPDstandardNth3alpha =
+ kmadd(J13L,PDstandardNth1alpha,kmadd(J23L,PDstandardNth2alpha,kmul(J33L,PDstandardNth3alpha)));
+
+ JacPDstandardNth3beta1 =
+ kmadd(J13L,PDstandardNth1beta1,kmadd(J23L,PDstandardNth2beta1,kmul(J33L,PDstandardNth3beta1)));
+
+ JacPDstandardNth3beta2 =
+ kmadd(J13L,PDstandardNth1beta2,kmadd(J23L,PDstandardNth2beta2,kmul(J33L,PDstandardNth3beta2)));
+
+ JacPDstandardNth3beta3 =
+ kmadd(J13L,PDstandardNth1beta3,kmadd(J23L,PDstandardNth2beta3,kmul(J33L,PDstandardNth3beta3)));
+
+ JacPDstandardNth3gt11 =
+ kmadd(J13L,PDstandardNth1gt11,kmadd(J23L,PDstandardNth2gt11,kmul(J33L,PDstandardNth3gt11)));
+
+ JacPDstandardNth3gt12 =
+ kmadd(J13L,PDstandardNth1gt12,kmadd(J23L,PDstandardNth2gt12,kmul(J33L,PDstandardNth3gt12)));
+
+ JacPDstandardNth3gt13 =
+ kmadd(J13L,PDstandardNth1gt13,kmadd(J23L,PDstandardNth2gt13,kmul(J33L,PDstandardNth3gt13)));
+
+ JacPDstandardNth3gt22 =
+ kmadd(J13L,PDstandardNth1gt22,kmadd(J23L,PDstandardNth2gt22,kmul(J33L,PDstandardNth3gt22)));
+
+ JacPDstandardNth3gt23 =
+ kmadd(J13L,PDstandardNth1gt23,kmadd(J23L,PDstandardNth2gt23,kmul(J33L,PDstandardNth3gt23)));
+
+ JacPDstandardNth3gt33 =
+ kmadd(J13L,PDstandardNth1gt33,kmadd(J23L,PDstandardNth2gt33,kmul(J33L,PDstandardNth3gt33)));
+
+ JacPDstandardNth3phi =
+ kmadd(J13L,PDstandardNth1phi,kmadd(J23L,PDstandardNth2phi,kmul(J33L,PDstandardNth3phi)));
+
+ JacPDstandardNth3Xt1 =
+ kmadd(J13L,PDstandardNth1Xt1,kmadd(J23L,PDstandardNth2Xt1,kmul(J33L,PDstandardNth3Xt1)));
+
+ JacPDstandardNth3Xt2 =
+ kmadd(J13L,PDstandardNth1Xt2,kmadd(J23L,PDstandardNth2Xt2,kmul(J33L,PDstandardNth3Xt2)));
+
+ JacPDstandardNth3Xt3 =
+ kmadd(J13L,PDstandardNth1Xt3,kmadd(J23L,PDstandardNth2Xt3,kmul(J33L,PDstandardNth3Xt3)));
+
+ JacPDstandardNth11alpha =
+ kmadd(dJ111L,PDstandardNth1alpha,kmadd(dJ211L,PDstandardNth2alpha,kmadd(dJ311L,PDstandardNth3alpha,kmadd(PDstandardNth11alpha,SQR(J11L),kmadd(PDstandardNth22alpha,SQR(J21L),kmadd(PDstandardNth33alpha,SQR(J31L),kmul(kmadd(J11L,kmadd(J21L,PDstandardNth12alpha,kmul(J31L,PDstandardNth13alpha)),kmul(J21L,kmul(J31L,PDstandardNth23alpha))),ToReal(2))))))));
+
+ JacPDstandardNth11gt11 =
+ kmadd(dJ111L,PDstandardNth1gt11,kmadd(dJ211L,PDstandardNth2gt11,kmadd(dJ311L,PDstandardNth3gt11,kmadd(PDstandardNth11gt11,SQR(J11L),kmadd(PDstandardNth22gt11,SQR(J21L),kmadd(PDstandardNth33gt11,SQR(J31L),kmul(kmadd(J11L,kmadd(J21L,PDstandardNth12gt11,kmul(J31L,PDstandardNth13gt11)),kmul(J21L,kmul(J31L,PDstandardNth23gt11))),ToReal(2))))))));
+
+ JacPDstandardNth11gt12 =
+ kmadd(dJ111L,PDstandardNth1gt12,kmadd(dJ211L,PDstandardNth2gt12,kmadd(dJ311L,PDstandardNth3gt12,kmadd(PDstandardNth11gt12,SQR(J11L),kmadd(PDstandardNth22gt12,SQR(J21L),kmadd(PDstandardNth33gt12,SQR(J31L),kmul(kmadd(J11L,kmadd(J21L,PDstandardNth12gt12,kmul(J31L,PDstandardNth13gt12)),kmul(J21L,kmul(J31L,PDstandardNth23gt12))),ToReal(2))))))));
+
+ JacPDstandardNth11gt13 =
+ kmadd(dJ111L,PDstandardNth1gt13,kmadd(dJ211L,PDstandardNth2gt13,kmadd(dJ311L,PDstandardNth3gt13,kmadd(PDstandardNth11gt13,SQR(J11L),kmadd(PDstandardNth22gt13,SQR(J21L),kmadd(PDstandardNth33gt13,SQR(J31L),kmul(kmadd(J11L,kmadd(J21L,PDstandardNth12gt13,kmul(J31L,PDstandardNth13gt13)),kmul(J21L,kmul(J31L,PDstandardNth23gt13))),ToReal(2))))))));
+
+ JacPDstandardNth11gt22 =
+ kmadd(dJ111L,PDstandardNth1gt22,kmadd(dJ211L,PDstandardNth2gt22,kmadd(dJ311L,PDstandardNth3gt22,kmadd(PDstandardNth11gt22,SQR(J11L),kmadd(PDstandardNth22gt22,SQR(J21L),kmadd(PDstandardNth33gt22,SQR(J31L),kmul(kmadd(J11L,kmadd(J21L,PDstandardNth12gt22,kmul(J31L,PDstandardNth13gt22)),kmul(J21L,kmul(J31L,PDstandardNth23gt22))),ToReal(2))))))));
+
+ JacPDstandardNth11gt23 =
+ kmadd(dJ111L,PDstandardNth1gt23,kmadd(dJ211L,PDstandardNth2gt23,kmadd(dJ311L,PDstandardNth3gt23,kmadd(PDstandardNth11gt23,SQR(J11L),kmadd(PDstandardNth22gt23,SQR(J21L),kmadd(PDstandardNth33gt23,SQR(J31L),kmul(kmadd(J11L,kmadd(J21L,PDstandardNth12gt23,kmul(J31L,PDstandardNth13gt23)),kmul(J21L,kmul(J31L,PDstandardNth23gt23))),ToReal(2))))))));
+
+ JacPDstandardNth11gt33 =
+ kmadd(dJ111L,PDstandardNth1gt33,kmadd(dJ211L,PDstandardNth2gt33,kmadd(dJ311L,PDstandardNth3gt33,kmadd(PDstandardNth11gt33,SQR(J11L),kmadd(PDstandardNth22gt33,SQR(J21L),kmadd(PDstandardNth33gt33,SQR(J31L),kmul(kmadd(J11L,kmadd(J21L,PDstandardNth12gt33,kmul(J31L,PDstandardNth13gt33)),kmul(J21L,kmul(J31L,PDstandardNth23gt33))),ToReal(2))))))));
+
+ JacPDstandardNth11phi =
+ kmadd(dJ111L,PDstandardNth1phi,kmadd(dJ211L,PDstandardNth2phi,kmadd(dJ311L,PDstandardNth3phi,kmadd(PDstandardNth11phi,SQR(J11L),kmadd(PDstandardNth22phi,SQR(J21L),kmadd(PDstandardNth33phi,SQR(J31L),kmul(kmadd(J11L,kmadd(J21L,PDstandardNth12phi,kmul(J31L,PDstandardNth13phi)),kmul(J21L,kmul(J31L,PDstandardNth23phi))),ToReal(2))))))));
+
+ JacPDstandardNth22alpha =
+ kmadd(dJ122L,PDstandardNth1alpha,kmadd(dJ222L,PDstandardNth2alpha,kmadd(dJ322L,PDstandardNth3alpha,kmadd(PDstandardNth11alpha,SQR(J12L),kmadd(PDstandardNth22alpha,SQR(J22L),kmadd(PDstandardNth33alpha,SQR(J32L),kmul(kmadd(J12L,kmadd(J22L,PDstandardNth12alpha,kmul(J32L,PDstandardNth13alpha)),kmul(J22L,kmul(J32L,PDstandardNth23alpha))),ToReal(2))))))));
+
+ JacPDstandardNth22gt11 =
+ kmadd(dJ122L,PDstandardNth1gt11,kmadd(dJ222L,PDstandardNth2gt11,kmadd(dJ322L,PDstandardNth3gt11,kmadd(PDstandardNth11gt11,SQR(J12L),kmadd(PDstandardNth22gt11,SQR(J22L),kmadd(PDstandardNth33gt11,SQR(J32L),kmul(kmadd(J12L,kmadd(J22L,PDstandardNth12gt11,kmul(J32L,PDstandardNth13gt11)),kmul(J22L,kmul(J32L,PDstandardNth23gt11))),ToReal(2))))))));
+
+ JacPDstandardNth22gt12 =
+ kmadd(dJ122L,PDstandardNth1gt12,kmadd(dJ222L,PDstandardNth2gt12,kmadd(dJ322L,PDstandardNth3gt12,kmadd(PDstandardNth11gt12,SQR(J12L),kmadd(PDstandardNth22gt12,SQR(J22L),kmadd(PDstandardNth33gt12,SQR(J32L),kmul(kmadd(J12L,kmadd(J22L,PDstandardNth12gt12,kmul(J32L,PDstandardNth13gt12)),kmul(J22L,kmul(J32L,PDstandardNth23gt12))),ToReal(2))))))));
+
+ JacPDstandardNth22gt13 =
+ kmadd(dJ122L,PDstandardNth1gt13,kmadd(dJ222L,PDstandardNth2gt13,kmadd(dJ322L,PDstandardNth3gt13,kmadd(PDstandardNth11gt13,SQR(J12L),kmadd(PDstandardNth22gt13,SQR(J22L),kmadd(PDstandardNth33gt13,SQR(J32L),kmul(kmadd(J12L,kmadd(J22L,PDstandardNth12gt13,kmul(J32L,PDstandardNth13gt13)),kmul(J22L,kmul(J32L,PDstandardNth23gt13))),ToReal(2))))))));
+
+ JacPDstandardNth22gt22 =
+ kmadd(dJ122L,PDstandardNth1gt22,kmadd(dJ222L,PDstandardNth2gt22,kmadd(dJ322L,PDstandardNth3gt22,kmadd(PDstandardNth11gt22,SQR(J12L),kmadd(PDstandardNth22gt22,SQR(J22L),kmadd(PDstandardNth33gt22,SQR(J32L),kmul(kmadd(J12L,kmadd(J22L,PDstandardNth12gt22,kmul(J32L,PDstandardNth13gt22)),kmul(J22L,kmul(J32L,PDstandardNth23gt22))),ToReal(2))))))));
+
+ JacPDstandardNth22gt23 =
+ kmadd(dJ122L,PDstandardNth1gt23,kmadd(dJ222L,PDstandardNth2gt23,kmadd(dJ322L,PDstandardNth3gt23,kmadd(PDstandardNth11gt23,SQR(J12L),kmadd(PDstandardNth22gt23,SQR(J22L),kmadd(PDstandardNth33gt23,SQR(J32L),kmul(kmadd(J12L,kmadd(J22L,PDstandardNth12gt23,kmul(J32L,PDstandardNth13gt23)),kmul(J22L,kmul(J32L,PDstandardNth23gt23))),ToReal(2))))))));
+
+ JacPDstandardNth22gt33 =
+ kmadd(dJ122L,PDstandardNth1gt33,kmadd(dJ222L,PDstandardNth2gt33,kmadd(dJ322L,PDstandardNth3gt33,kmadd(PDstandardNth11gt33,SQR(J12L),kmadd(PDstandardNth22gt33,SQR(J22L),kmadd(PDstandardNth33gt33,SQR(J32L),kmul(kmadd(J12L,kmadd(J22L,PDstandardNth12gt33,kmul(J32L,PDstandardNth13gt33)),kmul(J22L,kmul(J32L,PDstandardNth23gt33))),ToReal(2))))))));
+
+ JacPDstandardNth22phi =
+ kmadd(dJ122L,PDstandardNth1phi,kmadd(dJ222L,PDstandardNth2phi,kmadd(dJ322L,PDstandardNth3phi,kmadd(PDstandardNth11phi,SQR(J12L),kmadd(PDstandardNth22phi,SQR(J22L),kmadd(PDstandardNth33phi,SQR(J32L),kmul(kmadd(J12L,kmadd(J22L,PDstandardNth12phi,kmul(J32L,PDstandardNth13phi)),kmul(J22L,kmul(J32L,PDstandardNth23phi))),ToReal(2))))))));
+
+ JacPDstandardNth33alpha =
+ kmadd(dJ133L,PDstandardNth1alpha,kmadd(dJ233L,PDstandardNth2alpha,kmadd(dJ333L,PDstandardNth3alpha,kmadd(PDstandardNth11alpha,SQR(J13L),kmadd(PDstandardNth22alpha,SQR(J23L),kmadd(PDstandardNth33alpha,SQR(J33L),kmul(kmadd(J13L,kmadd(J23L,PDstandardNth12alpha,kmul(J33L,PDstandardNth13alpha)),kmul(J23L,kmul(J33L,PDstandardNth23alpha))),ToReal(2))))))));
+
+ JacPDstandardNth33gt11 =
+ kmadd(dJ133L,PDstandardNth1gt11,kmadd(dJ233L,PDstandardNth2gt11,kmadd(dJ333L,PDstandardNth3gt11,kmadd(PDstandardNth11gt11,SQR(J13L),kmadd(PDstandardNth22gt11,SQR(J23L),kmadd(PDstandardNth33gt11,SQR(J33L),kmul(kmadd(J13L,kmadd(J23L,PDstandardNth12gt11,kmul(J33L,PDstandardNth13gt11)),kmul(J23L,kmul(J33L,PDstandardNth23gt11))),ToReal(2))))))));
+
+ JacPDstandardNth33gt12 =
+ kmadd(dJ133L,PDstandardNth1gt12,kmadd(dJ233L,PDstandardNth2gt12,kmadd(dJ333L,PDstandardNth3gt12,kmadd(PDstandardNth11gt12,SQR(J13L),kmadd(PDstandardNth22gt12,SQR(J23L),kmadd(PDstandardNth33gt12,SQR(J33L),kmul(kmadd(J13L,kmadd(J23L,PDstandardNth12gt12,kmul(J33L,PDstandardNth13gt12)),kmul(J23L,kmul(J33L,PDstandardNth23gt12))),ToReal(2))))))));
+
+ JacPDstandardNth33gt13 =
+ kmadd(dJ133L,PDstandardNth1gt13,kmadd(dJ233L,PDstandardNth2gt13,kmadd(dJ333L,PDstandardNth3gt13,kmadd(PDstandardNth11gt13,SQR(J13L),kmadd(PDstandardNth22gt13,SQR(J23L),kmadd(PDstandardNth33gt13,SQR(J33L),kmul(kmadd(J13L,kmadd(J23L,PDstandardNth12gt13,kmul(J33L,PDstandardNth13gt13)),kmul(J23L,kmul(J33L,PDstandardNth23gt13))),ToReal(2))))))));
+
+ JacPDstandardNth33gt22 =
+ kmadd(dJ133L,PDstandardNth1gt22,kmadd(dJ233L,PDstandardNth2gt22,kmadd(dJ333L,PDstandardNth3gt22,kmadd(PDstandardNth11gt22,SQR(J13L),kmadd(PDstandardNth22gt22,SQR(J23L),kmadd(PDstandardNth33gt22,SQR(J33L),kmul(kmadd(J13L,kmadd(J23L,PDstandardNth12gt22,kmul(J33L,PDstandardNth13gt22)),kmul(J23L,kmul(J33L,PDstandardNth23gt22))),ToReal(2))))))));
+
+ JacPDstandardNth33gt23 =
+ kmadd(dJ133L,PDstandardNth1gt23,kmadd(dJ233L,PDstandardNth2gt23,kmadd(dJ333L,PDstandardNth3gt23,kmadd(PDstandardNth11gt23,SQR(J13L),kmadd(PDstandardNth22gt23,SQR(J23L),kmadd(PDstandardNth33gt23,SQR(J33L),kmul(kmadd(J13L,kmadd(J23L,PDstandardNth12gt23,kmul(J33L,PDstandardNth13gt23)),kmul(J23L,kmul(J33L,PDstandardNth23gt23))),ToReal(2))))))));
+
+ JacPDstandardNth33gt33 =
+ kmadd(dJ133L,PDstandardNth1gt33,kmadd(dJ233L,PDstandardNth2gt33,kmadd(dJ333L,PDstandardNth3gt33,kmadd(PDstandardNth11gt33,SQR(J13L),kmadd(PDstandardNth22gt33,SQR(J23L),kmadd(PDstandardNth33gt33,SQR(J33L),kmul(kmadd(J13L,kmadd(J23L,PDstandardNth12gt33,kmul(J33L,PDstandardNth13gt33)),kmul(J23L,kmul(J33L,PDstandardNth23gt33))),ToReal(2))))))));
+
+ JacPDstandardNth33phi =
+ kmadd(dJ133L,PDstandardNth1phi,kmadd(dJ233L,PDstandardNth2phi,kmadd(dJ333L,PDstandardNth3phi,kmadd(PDstandardNth11phi,SQR(J13L),kmadd(PDstandardNth22phi,SQR(J23L),kmadd(PDstandardNth33phi,SQR(J33L),kmul(kmadd(J13L,kmadd(J23L,PDstandardNth12phi,kmul(J33L,PDstandardNth13phi)),kmul(J23L,kmul(J33L,PDstandardNth23phi))),ToReal(2))))))));
+
+ JacPDstandardNth12alpha =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11alpha,kmadd(J21L,PDstandardNth12alpha,kmul(J31L,PDstandardNth13alpha))),kmadd(J11L,kmadd(J22L,PDstandardNth12alpha,kmul(J32L,PDstandardNth13alpha)),kmadd(dJ112L,PDstandardNth1alpha,kmadd(J22L,kmadd(J21L,PDstandardNth22alpha,kmul(J31L,PDstandardNth23alpha)),kmadd(dJ212L,PDstandardNth2alpha,kmadd(J32L,kmadd(J21L,PDstandardNth23alpha,kmul(J31L,PDstandardNth33alpha)),kmul(dJ312L,PDstandardNth3alpha)))))));
+
+ JacPDstandardNth12gt11 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11gt11,kmadd(J21L,PDstandardNth12gt11,kmul(J31L,PDstandardNth13gt11))),kmadd(J11L,kmadd(J22L,PDstandardNth12gt11,kmul(J32L,PDstandardNth13gt11)),kmadd(dJ112L,PDstandardNth1gt11,kmadd(J22L,kmadd(J21L,PDstandardNth22gt11,kmul(J31L,PDstandardNth23gt11)),kmadd(dJ212L,PDstandardNth2gt11,kmadd(J32L,kmadd(J21L,PDstandardNth23gt11,kmul(J31L,PDstandardNth33gt11)),kmul(dJ312L,PDstandardNth3gt11)))))));
+
+ JacPDstandardNth12gt12 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11gt12,kmadd(J21L,PDstandardNth12gt12,kmul(J31L,PDstandardNth13gt12))),kmadd(J11L,kmadd(J22L,PDstandardNth12gt12,kmul(J32L,PDstandardNth13gt12)),kmadd(dJ112L,PDstandardNth1gt12,kmadd(J22L,kmadd(J21L,PDstandardNth22gt12,kmul(J31L,PDstandardNth23gt12)),kmadd(dJ212L,PDstandardNth2gt12,kmadd(J32L,kmadd(J21L,PDstandardNth23gt12,kmul(J31L,PDstandardNth33gt12)),kmul(dJ312L,PDstandardNth3gt12)))))));
+
+ JacPDstandardNth12gt13 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11gt13,kmadd(J21L,PDstandardNth12gt13,kmul(J31L,PDstandardNth13gt13))),kmadd(J11L,kmadd(J22L,PDstandardNth12gt13,kmul(J32L,PDstandardNth13gt13)),kmadd(dJ112L,PDstandardNth1gt13,kmadd(J22L,kmadd(J21L,PDstandardNth22gt13,kmul(J31L,PDstandardNth23gt13)),kmadd(dJ212L,PDstandardNth2gt13,kmadd(J32L,kmadd(J21L,PDstandardNth23gt13,kmul(J31L,PDstandardNth33gt13)),kmul(dJ312L,PDstandardNth3gt13)))))));
+
+ JacPDstandardNth12gt22 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11gt22,kmadd(J21L,PDstandardNth12gt22,kmul(J31L,PDstandardNth13gt22))),kmadd(J11L,kmadd(J22L,PDstandardNth12gt22,kmul(J32L,PDstandardNth13gt22)),kmadd(dJ112L,PDstandardNth1gt22,kmadd(J22L,kmadd(J21L,PDstandardNth22gt22,kmul(J31L,PDstandardNth23gt22)),kmadd(dJ212L,PDstandardNth2gt22,kmadd(J32L,kmadd(J21L,PDstandardNth23gt22,kmul(J31L,PDstandardNth33gt22)),kmul(dJ312L,PDstandardNth3gt22)))))));
+
+ JacPDstandardNth12gt23 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11gt23,kmadd(J21L,PDstandardNth12gt23,kmul(J31L,PDstandardNth13gt23))),kmadd(J11L,kmadd(J22L,PDstandardNth12gt23,kmul(J32L,PDstandardNth13gt23)),kmadd(dJ112L,PDstandardNth1gt23,kmadd(J22L,kmadd(J21L,PDstandardNth22gt23,kmul(J31L,PDstandardNth23gt23)),kmadd(dJ212L,PDstandardNth2gt23,kmadd(J32L,kmadd(J21L,PDstandardNth23gt23,kmul(J31L,PDstandardNth33gt23)),kmul(dJ312L,PDstandardNth3gt23)))))));
+
+ JacPDstandardNth12gt33 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11gt33,kmadd(J21L,PDstandardNth12gt33,kmul(J31L,PDstandardNth13gt33))),kmadd(J11L,kmadd(J22L,PDstandardNth12gt33,kmul(J32L,PDstandardNth13gt33)),kmadd(dJ112L,PDstandardNth1gt33,kmadd(J22L,kmadd(J21L,PDstandardNth22gt33,kmul(J31L,PDstandardNth23gt33)),kmadd(dJ212L,PDstandardNth2gt33,kmadd(J32L,kmadd(J21L,PDstandardNth23gt33,kmul(J31L,PDstandardNth33gt33)),kmul(dJ312L,PDstandardNth3gt33)))))));
+
+ JacPDstandardNth12phi =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11phi,kmadd(J21L,PDstandardNth12phi,kmul(J31L,PDstandardNth13phi))),kmadd(J11L,kmadd(J22L,PDstandardNth12phi,kmul(J32L,PDstandardNth13phi)),kmadd(dJ112L,PDstandardNth1phi,kmadd(J22L,kmadd(J21L,PDstandardNth22phi,kmul(J31L,PDstandardNth23phi)),kmadd(dJ212L,PDstandardNth2phi,kmadd(J32L,kmadd(J21L,PDstandardNth23phi,kmul(J31L,PDstandardNth33phi)),kmul(dJ312L,PDstandardNth3phi)))))));
+
+ JacPDstandardNth13alpha =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11alpha,kmadd(J21L,PDstandardNth12alpha,kmul(J31L,PDstandardNth13alpha))),kmadd(J11L,kmadd(J23L,PDstandardNth12alpha,kmul(J33L,PDstandardNth13alpha)),kmadd(dJ113L,PDstandardNth1alpha,kmadd(J23L,kmadd(J21L,PDstandardNth22alpha,kmul(J31L,PDstandardNth23alpha)),kmadd(dJ213L,PDstandardNth2alpha,kmadd(J33L,kmadd(J21L,PDstandardNth23alpha,kmul(J31L,PDstandardNth33alpha)),kmul(dJ313L,PDstandardNth3alpha)))))));
+
+ JacPDstandardNth13gt11 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11gt11,kmadd(J21L,PDstandardNth12gt11,kmul(J31L,PDstandardNth13gt11))),kmadd(J11L,kmadd(J23L,PDstandardNth12gt11,kmul(J33L,PDstandardNth13gt11)),kmadd(dJ113L,PDstandardNth1gt11,kmadd(J23L,kmadd(J21L,PDstandardNth22gt11,kmul(J31L,PDstandardNth23gt11)),kmadd(dJ213L,PDstandardNth2gt11,kmadd(J33L,kmadd(J21L,PDstandardNth23gt11,kmul(J31L,PDstandardNth33gt11)),kmul(dJ313L,PDstandardNth3gt11)))))));
+
+ JacPDstandardNth13gt12 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11gt12,kmadd(J21L,PDstandardNth12gt12,kmul(J31L,PDstandardNth13gt12))),kmadd(J11L,kmadd(J23L,PDstandardNth12gt12,kmul(J33L,PDstandardNth13gt12)),kmadd(dJ113L,PDstandardNth1gt12,kmadd(J23L,kmadd(J21L,PDstandardNth22gt12,kmul(J31L,PDstandardNth23gt12)),kmadd(dJ213L,PDstandardNth2gt12,kmadd(J33L,kmadd(J21L,PDstandardNth23gt12,kmul(J31L,PDstandardNth33gt12)),kmul(dJ313L,PDstandardNth3gt12)))))));
+
+ JacPDstandardNth13gt13 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11gt13,kmadd(J21L,PDstandardNth12gt13,kmul(J31L,PDstandardNth13gt13))),kmadd(J11L,kmadd(J23L,PDstandardNth12gt13,kmul(J33L,PDstandardNth13gt13)),kmadd(dJ113L,PDstandardNth1gt13,kmadd(J23L,kmadd(J21L,PDstandardNth22gt13,kmul(J31L,PDstandardNth23gt13)),kmadd(dJ213L,PDstandardNth2gt13,kmadd(J33L,kmadd(J21L,PDstandardNth23gt13,kmul(J31L,PDstandardNth33gt13)),kmul(dJ313L,PDstandardNth3gt13)))))));
+
+ JacPDstandardNth13gt22 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11gt22,kmadd(J21L,PDstandardNth12gt22,kmul(J31L,PDstandardNth13gt22))),kmadd(J11L,kmadd(J23L,PDstandardNth12gt22,kmul(J33L,PDstandardNth13gt22)),kmadd(dJ113L,PDstandardNth1gt22,kmadd(J23L,kmadd(J21L,PDstandardNth22gt22,kmul(J31L,PDstandardNth23gt22)),kmadd(dJ213L,PDstandardNth2gt22,kmadd(J33L,kmadd(J21L,PDstandardNth23gt22,kmul(J31L,PDstandardNth33gt22)),kmul(dJ313L,PDstandardNth3gt22)))))));
+
+ JacPDstandardNth13gt23 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11gt23,kmadd(J21L,PDstandardNth12gt23,kmul(J31L,PDstandardNth13gt23))),kmadd(J11L,kmadd(J23L,PDstandardNth12gt23,kmul(J33L,PDstandardNth13gt23)),kmadd(dJ113L,PDstandardNth1gt23,kmadd(J23L,kmadd(J21L,PDstandardNth22gt23,kmul(J31L,PDstandardNth23gt23)),kmadd(dJ213L,PDstandardNth2gt23,kmadd(J33L,kmadd(J21L,PDstandardNth23gt23,kmul(J31L,PDstandardNth33gt23)),kmul(dJ313L,PDstandardNth3gt23)))))));
+
+ JacPDstandardNth13gt33 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11gt33,kmadd(J21L,PDstandardNth12gt33,kmul(J31L,PDstandardNth13gt33))),kmadd(J11L,kmadd(J23L,PDstandardNth12gt33,kmul(J33L,PDstandardNth13gt33)),kmadd(dJ113L,PDstandardNth1gt33,kmadd(J23L,kmadd(J21L,PDstandardNth22gt33,kmul(J31L,PDstandardNth23gt33)),kmadd(dJ213L,PDstandardNth2gt33,kmadd(J33L,kmadd(J21L,PDstandardNth23gt33,kmul(J31L,PDstandardNth33gt33)),kmul(dJ313L,PDstandardNth3gt33)))))));
+
+ JacPDstandardNth13phi =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11phi,kmadd(J21L,PDstandardNth12phi,kmul(J31L,PDstandardNth13phi))),kmadd(J11L,kmadd(J23L,PDstandardNth12phi,kmul(J33L,PDstandardNth13phi)),kmadd(dJ113L,PDstandardNth1phi,kmadd(J23L,kmadd(J21L,PDstandardNth22phi,kmul(J31L,PDstandardNth23phi)),kmadd(dJ213L,PDstandardNth2phi,kmadd(J33L,kmadd(J21L,PDstandardNth23phi,kmul(J31L,PDstandardNth33phi)),kmul(dJ313L,PDstandardNth3phi)))))));
+
+ JacPDstandardNth21gt11 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11gt11,kmadd(J21L,PDstandardNth12gt11,kmul(J31L,PDstandardNth13gt11))),kmadd(J11L,kmadd(J22L,PDstandardNth12gt11,kmul(J32L,PDstandardNth13gt11)),kmadd(dJ112L,PDstandardNth1gt11,kmadd(J22L,kmadd(J21L,PDstandardNth22gt11,kmul(J31L,PDstandardNth23gt11)),kmadd(dJ212L,PDstandardNth2gt11,kmadd(J32L,kmadd(J21L,PDstandardNth23gt11,kmul(J31L,PDstandardNth33gt11)),kmul(dJ312L,PDstandardNth3gt11)))))));
+
+ JacPDstandardNth21gt12 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11gt12,kmadd(J21L,PDstandardNth12gt12,kmul(J31L,PDstandardNth13gt12))),kmadd(J11L,kmadd(J22L,PDstandardNth12gt12,kmul(J32L,PDstandardNth13gt12)),kmadd(dJ112L,PDstandardNth1gt12,kmadd(J22L,kmadd(J21L,PDstandardNth22gt12,kmul(J31L,PDstandardNth23gt12)),kmadd(dJ212L,PDstandardNth2gt12,kmadd(J32L,kmadd(J21L,PDstandardNth23gt12,kmul(J31L,PDstandardNth33gt12)),kmul(dJ312L,PDstandardNth3gt12)))))));
+
+ JacPDstandardNth21gt13 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11gt13,kmadd(J21L,PDstandardNth12gt13,kmul(J31L,PDstandardNth13gt13))),kmadd(J11L,kmadd(J22L,PDstandardNth12gt13,kmul(J32L,PDstandardNth13gt13)),kmadd(dJ112L,PDstandardNth1gt13,kmadd(J22L,kmadd(J21L,PDstandardNth22gt13,kmul(J31L,PDstandardNth23gt13)),kmadd(dJ212L,PDstandardNth2gt13,kmadd(J32L,kmadd(J21L,PDstandardNth23gt13,kmul(J31L,PDstandardNth33gt13)),kmul(dJ312L,PDstandardNth3gt13)))))));
+
+ JacPDstandardNth21gt22 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11gt22,kmadd(J21L,PDstandardNth12gt22,kmul(J31L,PDstandardNth13gt22))),kmadd(J11L,kmadd(J22L,PDstandardNth12gt22,kmul(J32L,PDstandardNth13gt22)),kmadd(dJ112L,PDstandardNth1gt22,kmadd(J22L,kmadd(J21L,PDstandardNth22gt22,kmul(J31L,PDstandardNth23gt22)),kmadd(dJ212L,PDstandardNth2gt22,kmadd(J32L,kmadd(J21L,PDstandardNth23gt22,kmul(J31L,PDstandardNth33gt22)),kmul(dJ312L,PDstandardNth3gt22)))))));
+
+ JacPDstandardNth21gt23 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11gt23,kmadd(J21L,PDstandardNth12gt23,kmul(J31L,PDstandardNth13gt23))),kmadd(J11L,kmadd(J22L,PDstandardNth12gt23,kmul(J32L,PDstandardNth13gt23)),kmadd(dJ112L,PDstandardNth1gt23,kmadd(J22L,kmadd(J21L,PDstandardNth22gt23,kmul(J31L,PDstandardNth23gt23)),kmadd(dJ212L,PDstandardNth2gt23,kmadd(J32L,kmadd(J21L,PDstandardNth23gt23,kmul(J31L,PDstandardNth33gt23)),kmul(dJ312L,PDstandardNth3gt23)))))));
+
+ JacPDstandardNth21gt33 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11gt33,kmadd(J21L,PDstandardNth12gt33,kmul(J31L,PDstandardNth13gt33))),kmadd(J11L,kmadd(J22L,PDstandardNth12gt33,kmul(J32L,PDstandardNth13gt33)),kmadd(dJ112L,PDstandardNth1gt33,kmadd(J22L,kmadd(J21L,PDstandardNth22gt33,kmul(J31L,PDstandardNth23gt33)),kmadd(dJ212L,PDstandardNth2gt33,kmadd(J32L,kmadd(J21L,PDstandardNth23gt33,kmul(J31L,PDstandardNth33gt33)),kmul(dJ312L,PDstandardNth3gt33)))))));
+
+ JacPDstandardNth23alpha =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11alpha,kmadd(J22L,PDstandardNth12alpha,kmul(J32L,PDstandardNth13alpha))),kmadd(J12L,kmadd(J23L,PDstandardNth12alpha,kmul(J33L,PDstandardNth13alpha)),kmadd(dJ123L,PDstandardNth1alpha,kmadd(J23L,kmadd(J22L,PDstandardNth22alpha,kmul(J32L,PDstandardNth23alpha)),kmadd(dJ223L,PDstandardNth2alpha,kmadd(J33L,kmadd(J22L,PDstandardNth23alpha,kmul(J32L,PDstandardNth33alpha)),kmul(dJ323L,PDstandardNth3alpha)))))));
+
+ JacPDstandardNth23gt11 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11gt11,kmadd(J22L,PDstandardNth12gt11,kmul(J32L,PDstandardNth13gt11))),kmadd(J12L,kmadd(J23L,PDstandardNth12gt11,kmul(J33L,PDstandardNth13gt11)),kmadd(dJ123L,PDstandardNth1gt11,kmadd(J23L,kmadd(J22L,PDstandardNth22gt11,kmul(J32L,PDstandardNth23gt11)),kmadd(dJ223L,PDstandardNth2gt11,kmadd(J33L,kmadd(J22L,PDstandardNth23gt11,kmul(J32L,PDstandardNth33gt11)),kmul(dJ323L,PDstandardNth3gt11)))))));
+
+ JacPDstandardNth23gt12 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11gt12,kmadd(J22L,PDstandardNth12gt12,kmul(J32L,PDstandardNth13gt12))),kmadd(J12L,kmadd(J23L,PDstandardNth12gt12,kmul(J33L,PDstandardNth13gt12)),kmadd(dJ123L,PDstandardNth1gt12,kmadd(J23L,kmadd(J22L,PDstandardNth22gt12,kmul(J32L,PDstandardNth23gt12)),kmadd(dJ223L,PDstandardNth2gt12,kmadd(J33L,kmadd(J22L,PDstandardNth23gt12,kmul(J32L,PDstandardNth33gt12)),kmul(dJ323L,PDstandardNth3gt12)))))));
+
+ JacPDstandardNth23gt13 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11gt13,kmadd(J22L,PDstandardNth12gt13,kmul(J32L,PDstandardNth13gt13))),kmadd(J12L,kmadd(J23L,PDstandardNth12gt13,kmul(J33L,PDstandardNth13gt13)),kmadd(dJ123L,PDstandardNth1gt13,kmadd(J23L,kmadd(J22L,PDstandardNth22gt13,kmul(J32L,PDstandardNth23gt13)),kmadd(dJ223L,PDstandardNth2gt13,kmadd(J33L,kmadd(J22L,PDstandardNth23gt13,kmul(J32L,PDstandardNth33gt13)),kmul(dJ323L,PDstandardNth3gt13)))))));
+
+ JacPDstandardNth23gt22 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11gt22,kmadd(J22L,PDstandardNth12gt22,kmul(J32L,PDstandardNth13gt22))),kmadd(J12L,kmadd(J23L,PDstandardNth12gt22,kmul(J33L,PDstandardNth13gt22)),kmadd(dJ123L,PDstandardNth1gt22,kmadd(J23L,kmadd(J22L,PDstandardNth22gt22,kmul(J32L,PDstandardNth23gt22)),kmadd(dJ223L,PDstandardNth2gt22,kmadd(J33L,kmadd(J22L,PDstandardNth23gt22,kmul(J32L,PDstandardNth33gt22)),kmul(dJ323L,PDstandardNth3gt22)))))));
+
+ JacPDstandardNth23gt23 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11gt23,kmadd(J22L,PDstandardNth12gt23,kmul(J32L,PDstandardNth13gt23))),kmadd(J12L,kmadd(J23L,PDstandardNth12gt23,kmul(J33L,PDstandardNth13gt23)),kmadd(dJ123L,PDstandardNth1gt23,kmadd(J23L,kmadd(J22L,PDstandardNth22gt23,kmul(J32L,PDstandardNth23gt23)),kmadd(dJ223L,PDstandardNth2gt23,kmadd(J33L,kmadd(J22L,PDstandardNth23gt23,kmul(J32L,PDstandardNth33gt23)),kmul(dJ323L,PDstandardNth3gt23)))))));
+
+ JacPDstandardNth23gt33 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11gt33,kmadd(J22L,PDstandardNth12gt33,kmul(J32L,PDstandardNth13gt33))),kmadd(J12L,kmadd(J23L,PDstandardNth12gt33,kmul(J33L,PDstandardNth13gt33)),kmadd(dJ123L,PDstandardNth1gt33,kmadd(J23L,kmadd(J22L,PDstandardNth22gt33,kmul(J32L,PDstandardNth23gt33)),kmadd(dJ223L,PDstandardNth2gt33,kmadd(J33L,kmadd(J22L,PDstandardNth23gt33,kmul(J32L,PDstandardNth33gt33)),kmul(dJ323L,PDstandardNth3gt33)))))));
+
+ JacPDstandardNth23phi =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11phi,kmadd(J22L,PDstandardNth12phi,kmul(J32L,PDstandardNth13phi))),kmadd(J12L,kmadd(J23L,PDstandardNth12phi,kmul(J33L,PDstandardNth13phi)),kmadd(dJ123L,PDstandardNth1phi,kmadd(J23L,kmadd(J22L,PDstandardNth22phi,kmul(J32L,PDstandardNth23phi)),kmadd(dJ223L,PDstandardNth2phi,kmadd(J33L,kmadd(J22L,PDstandardNth23phi,kmul(J32L,PDstandardNth33phi)),kmul(dJ323L,PDstandardNth3phi)))))));
+
+ JacPDstandardNth31gt11 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11gt11,kmadd(J21L,PDstandardNth12gt11,kmul(J31L,PDstandardNth13gt11))),kmadd(J11L,kmadd(J23L,PDstandardNth12gt11,kmul(J33L,PDstandardNth13gt11)),kmadd(dJ113L,PDstandardNth1gt11,kmadd(J23L,kmadd(J21L,PDstandardNth22gt11,kmul(J31L,PDstandardNth23gt11)),kmadd(dJ213L,PDstandardNth2gt11,kmadd(J33L,kmadd(J21L,PDstandardNth23gt11,kmul(J31L,PDstandardNth33gt11)),kmul(dJ313L,PDstandardNth3gt11)))))));
+
+ JacPDstandardNth31gt12 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11gt12,kmadd(J21L,PDstandardNth12gt12,kmul(J31L,PDstandardNth13gt12))),kmadd(J11L,kmadd(J23L,PDstandardNth12gt12,kmul(J33L,PDstandardNth13gt12)),kmadd(dJ113L,PDstandardNth1gt12,kmadd(J23L,kmadd(J21L,PDstandardNth22gt12,kmul(J31L,PDstandardNth23gt12)),kmadd(dJ213L,PDstandardNth2gt12,kmadd(J33L,kmadd(J21L,PDstandardNth23gt12,kmul(J31L,PDstandardNth33gt12)),kmul(dJ313L,PDstandardNth3gt12)))))));
+
+ JacPDstandardNth31gt13 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11gt13,kmadd(J21L,PDstandardNth12gt13,kmul(J31L,PDstandardNth13gt13))),kmadd(J11L,kmadd(J23L,PDstandardNth12gt13,kmul(J33L,PDstandardNth13gt13)),kmadd(dJ113L,PDstandardNth1gt13,kmadd(J23L,kmadd(J21L,PDstandardNth22gt13,kmul(J31L,PDstandardNth23gt13)),kmadd(dJ213L,PDstandardNth2gt13,kmadd(J33L,kmadd(J21L,PDstandardNth23gt13,kmul(J31L,PDstandardNth33gt13)),kmul(dJ313L,PDstandardNth3gt13)))))));
+
+ JacPDstandardNth31gt22 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11gt22,kmadd(J21L,PDstandardNth12gt22,kmul(J31L,PDstandardNth13gt22))),kmadd(J11L,kmadd(J23L,PDstandardNth12gt22,kmul(J33L,PDstandardNth13gt22)),kmadd(dJ113L,PDstandardNth1gt22,kmadd(J23L,kmadd(J21L,PDstandardNth22gt22,kmul(J31L,PDstandardNth23gt22)),kmadd(dJ213L,PDstandardNth2gt22,kmadd(J33L,kmadd(J21L,PDstandardNth23gt22,kmul(J31L,PDstandardNth33gt22)),kmul(dJ313L,PDstandardNth3gt22)))))));
+
+ JacPDstandardNth31gt23 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11gt23,kmadd(J21L,PDstandardNth12gt23,kmul(J31L,PDstandardNth13gt23))),kmadd(J11L,kmadd(J23L,PDstandardNth12gt23,kmul(J33L,PDstandardNth13gt23)),kmadd(dJ113L,PDstandardNth1gt23,kmadd(J23L,kmadd(J21L,PDstandardNth22gt23,kmul(J31L,PDstandardNth23gt23)),kmadd(dJ213L,PDstandardNth2gt23,kmadd(J33L,kmadd(J21L,PDstandardNth23gt23,kmul(J31L,PDstandardNth33gt23)),kmul(dJ313L,PDstandardNth3gt23)))))));
+
+ JacPDstandardNth31gt33 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11gt33,kmadd(J21L,PDstandardNth12gt33,kmul(J31L,PDstandardNth13gt33))),kmadd(J11L,kmadd(J23L,PDstandardNth12gt33,kmul(J33L,PDstandardNth13gt33)),kmadd(dJ113L,PDstandardNth1gt33,kmadd(J23L,kmadd(J21L,PDstandardNth22gt33,kmul(J31L,PDstandardNth23gt33)),kmadd(dJ213L,PDstandardNth2gt33,kmadd(J33L,kmadd(J21L,PDstandardNth23gt33,kmul(J31L,PDstandardNth33gt33)),kmul(dJ313L,PDstandardNth3gt33)))))));
+
+ JacPDstandardNth32gt11 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11gt11,kmadd(J22L,PDstandardNth12gt11,kmul(J32L,PDstandardNth13gt11))),kmadd(J12L,kmadd(J23L,PDstandardNth12gt11,kmul(J33L,PDstandardNth13gt11)),kmadd(dJ123L,PDstandardNth1gt11,kmadd(J23L,kmadd(J22L,PDstandardNth22gt11,kmul(J32L,PDstandardNth23gt11)),kmadd(dJ223L,PDstandardNth2gt11,kmadd(J33L,kmadd(J22L,PDstandardNth23gt11,kmul(J32L,PDstandardNth33gt11)),kmul(dJ323L,PDstandardNth3gt11)))))));
+
+ JacPDstandardNth32gt12 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11gt12,kmadd(J22L,PDstandardNth12gt12,kmul(J32L,PDstandardNth13gt12))),kmadd(J12L,kmadd(J23L,PDstandardNth12gt12,kmul(J33L,PDstandardNth13gt12)),kmadd(dJ123L,PDstandardNth1gt12,kmadd(J23L,kmadd(J22L,PDstandardNth22gt12,kmul(J32L,PDstandardNth23gt12)),kmadd(dJ223L,PDstandardNth2gt12,kmadd(J33L,kmadd(J22L,PDstandardNth23gt12,kmul(J32L,PDstandardNth33gt12)),kmul(dJ323L,PDstandardNth3gt12)))))));
+
+ JacPDstandardNth32gt13 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11gt13,kmadd(J22L,PDstandardNth12gt13,kmul(J32L,PDstandardNth13gt13))),kmadd(J12L,kmadd(J23L,PDstandardNth12gt13,kmul(J33L,PDstandardNth13gt13)),kmadd(dJ123L,PDstandardNth1gt13,kmadd(J23L,kmadd(J22L,PDstandardNth22gt13,kmul(J32L,PDstandardNth23gt13)),kmadd(dJ223L,PDstandardNth2gt13,kmadd(J33L,kmadd(J22L,PDstandardNth23gt13,kmul(J32L,PDstandardNth33gt13)),kmul(dJ323L,PDstandardNth3gt13)))))));
+
+ JacPDstandardNth32gt22 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11gt22,kmadd(J22L,PDstandardNth12gt22,kmul(J32L,PDstandardNth13gt22))),kmadd(J12L,kmadd(J23L,PDstandardNth12gt22,kmul(J33L,PDstandardNth13gt22)),kmadd(dJ123L,PDstandardNth1gt22,kmadd(J23L,kmadd(J22L,PDstandardNth22gt22,kmul(J32L,PDstandardNth23gt22)),kmadd(dJ223L,PDstandardNth2gt22,kmadd(J33L,kmadd(J22L,PDstandardNth23gt22,kmul(J32L,PDstandardNth33gt22)),kmul(dJ323L,PDstandardNth3gt22)))))));
+
+ JacPDstandardNth32gt23 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11gt23,kmadd(J22L,PDstandardNth12gt23,kmul(J32L,PDstandardNth13gt23))),kmadd(J12L,kmadd(J23L,PDstandardNth12gt23,kmul(J33L,PDstandardNth13gt23)),kmadd(dJ123L,PDstandardNth1gt23,kmadd(J23L,kmadd(J22L,PDstandardNth22gt23,kmul(J32L,PDstandardNth23gt23)),kmadd(dJ223L,PDstandardNth2gt23,kmadd(J33L,kmadd(J22L,PDstandardNth23gt23,kmul(J32L,PDstandardNth33gt23)),kmul(dJ323L,PDstandardNth3gt23)))))));
+
+ JacPDstandardNth32gt33 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11gt33,kmadd(J22L,PDstandardNth12gt33,kmul(J32L,PDstandardNth13gt33))),kmadd(J12L,kmadd(J23L,PDstandardNth12gt33,kmul(J33L,PDstandardNth13gt33)),kmadd(dJ123L,PDstandardNth1gt33,kmadd(J23L,kmadd(J22L,PDstandardNth22gt33,kmul(J32L,PDstandardNth23gt33)),kmadd(dJ223L,PDstandardNth2gt33,kmadd(J33L,kmadd(J22L,PDstandardNth23gt33,kmul(J32L,PDstandardNth33gt33)),kmul(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;
+ }
+
+ CCTK_REAL_VEC detgt = ToReal(1);
+
+ CCTK_REAL_VEC gtu11 =
+ kmul(INV(detgt),kmsub(gt22L,gt33L,SQR(gt23L)));
+
+ CCTK_REAL_VEC gtu12 =
+ kmul(INV(detgt),kmsub(gt13L,gt23L,kmul(gt12L,gt33L)));
+
+ CCTK_REAL_VEC gtu13 =
+ kmul(INV(detgt),kmsub(gt12L,gt23L,kmul(gt13L,gt22L)));
+
+ CCTK_REAL_VEC gtu22 =
+ kmul(INV(detgt),kmsub(gt11L,gt33L,SQR(gt13L)));
+
+ CCTK_REAL_VEC gtu23 =
+ kmul(INV(detgt),kmsub(gt12L,gt13L,kmul(gt11L,gt23L)));
+
+ CCTK_REAL_VEC gtu33 =
+ kmul(INV(detgt),kmsub(gt11L,gt22L,SQR(gt12L)));
+
+ CCTK_REAL_VEC Gtl111 = kmul(JacPDstandardNth1gt11,ToReal(0.5));
+
+ CCTK_REAL_VEC Gtl112 = kmul(JacPDstandardNth2gt11,ToReal(0.5));
+
+ CCTK_REAL_VEC Gtl113 = kmul(JacPDstandardNth3gt11,ToReal(0.5));
+
+ CCTK_REAL_VEC Gtl122 =
+ kmadd(JacPDstandardNth1gt22,ToReal(-0.5),JacPDstandardNth2gt12);
+
+ CCTK_REAL_VEC Gtl123 =
+ kmul(kadd(JacPDstandardNth2gt13,ksub(JacPDstandardNth3gt12,JacPDstandardNth1gt23)),ToReal(0.5));
+
+ CCTK_REAL_VEC Gtl133 =
+ kmadd(JacPDstandardNth1gt33,ToReal(-0.5),JacPDstandardNth3gt13);
+
+ CCTK_REAL_VEC Gtl211 =
+ kmadd(JacPDstandardNth2gt11,ToReal(-0.5),JacPDstandardNth1gt12);
+
+ CCTK_REAL_VEC Gtl212 = kmul(JacPDstandardNth1gt22,ToReal(0.5));
+
+ CCTK_REAL_VEC Gtl213 =
+ kmul(kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth3gt12,JacPDstandardNth2gt13)),ToReal(0.5));
+
+ CCTK_REAL_VEC Gtl222 = kmul(JacPDstandardNth2gt22,ToReal(0.5));
+
+ CCTK_REAL_VEC Gtl223 = kmul(JacPDstandardNth3gt22,ToReal(0.5));
+
+ CCTK_REAL_VEC Gtl233 =
+ kmadd(JacPDstandardNth2gt33,ToReal(-0.5),JacPDstandardNth3gt23);
+
+ CCTK_REAL_VEC Gtl311 =
+ kmadd(JacPDstandardNth3gt11,ToReal(-0.5),JacPDstandardNth1gt13);
+
+ CCTK_REAL_VEC Gtl312 =
+ kmul(kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth2gt13,JacPDstandardNth3gt12)),ToReal(0.5));
+
+ CCTK_REAL_VEC Gtl313 = kmul(JacPDstandardNth1gt33,ToReal(0.5));
+
+ CCTK_REAL_VEC Gtl322 =
+ kmadd(JacPDstandardNth3gt22,ToReal(-0.5),JacPDstandardNth2gt23);
+
+ CCTK_REAL_VEC Gtl323 = kmul(JacPDstandardNth2gt33,ToReal(0.5));
+
+ CCTK_REAL_VEC Gtl333 = kmul(JacPDstandardNth3gt33,ToReal(0.5));
+
+ CCTK_REAL_VEC Gtlu111 =
+ kmadd(Gtl111,gtu11,kmadd(Gtl112,gtu12,kmul(Gtl113,gtu13)));
+
+ CCTK_REAL_VEC Gtlu112 =
+ kmadd(Gtl111,gtu12,kmadd(Gtl112,gtu22,kmul(Gtl113,gtu23)));
+
+ CCTK_REAL_VEC Gtlu113 =
+ kmadd(Gtl111,gtu13,kmadd(Gtl112,gtu23,kmul(Gtl113,gtu33)));
+
+ CCTK_REAL_VEC Gtlu121 =
+ kmadd(Gtl112,gtu11,kmadd(Gtl122,gtu12,kmul(Gtl123,gtu13)));
+
+ CCTK_REAL_VEC Gtlu122 =
+ kmadd(Gtl112,gtu12,kmadd(Gtl122,gtu22,kmul(Gtl123,gtu23)));
+
+ CCTK_REAL_VEC Gtlu123 =
+ kmadd(Gtl112,gtu13,kmadd(Gtl122,gtu23,kmul(Gtl123,gtu33)));
+
+ CCTK_REAL_VEC Gtlu131 =
+ kmadd(Gtl113,gtu11,kmadd(Gtl123,gtu12,kmul(Gtl133,gtu13)));
+
+ CCTK_REAL_VEC Gtlu132 =
+ kmadd(Gtl113,gtu12,kmadd(Gtl123,gtu22,kmul(Gtl133,gtu23)));
+
+ CCTK_REAL_VEC Gtlu133 =
+ kmadd(Gtl113,gtu13,kmadd(Gtl123,gtu23,kmul(Gtl133,gtu33)));
+
+ CCTK_REAL_VEC Gtlu211 =
+ kmadd(Gtl211,gtu11,kmadd(Gtl212,gtu12,kmul(Gtl213,gtu13)));
+
+ CCTK_REAL_VEC Gtlu212 =
+ kmadd(Gtl211,gtu12,kmadd(Gtl212,gtu22,kmul(Gtl213,gtu23)));
+
+ CCTK_REAL_VEC Gtlu213 =
+ kmadd(Gtl211,gtu13,kmadd(Gtl212,gtu23,kmul(Gtl213,gtu33)));
+
+ CCTK_REAL_VEC Gtlu221 =
+ kmadd(Gtl212,gtu11,kmadd(Gtl222,gtu12,kmul(Gtl223,gtu13)));
+
+ CCTK_REAL_VEC Gtlu222 =
+ kmadd(Gtl212,gtu12,kmadd(Gtl222,gtu22,kmul(Gtl223,gtu23)));
+
+ CCTK_REAL_VEC Gtlu223 =
+ kmadd(Gtl212,gtu13,kmadd(Gtl222,gtu23,kmul(Gtl223,gtu33)));
+
+ CCTK_REAL_VEC Gtlu231 =
+ kmadd(Gtl213,gtu11,kmadd(Gtl223,gtu12,kmul(Gtl233,gtu13)));
+
+ CCTK_REAL_VEC Gtlu232 =
+ kmadd(Gtl213,gtu12,kmadd(Gtl223,gtu22,kmul(Gtl233,gtu23)));
+
+ CCTK_REAL_VEC Gtlu233 =
+ kmadd(Gtl213,gtu13,kmadd(Gtl223,gtu23,kmul(Gtl233,gtu33)));
+
+ CCTK_REAL_VEC Gtlu311 =
+ kmadd(Gtl311,gtu11,kmadd(Gtl312,gtu12,kmul(Gtl313,gtu13)));
+
+ CCTK_REAL_VEC Gtlu312 =
+ kmadd(Gtl311,gtu12,kmadd(Gtl312,gtu22,kmul(Gtl313,gtu23)));
+
+ CCTK_REAL_VEC Gtlu313 =
+ kmadd(Gtl311,gtu13,kmadd(Gtl312,gtu23,kmul(Gtl313,gtu33)));
+
+ CCTK_REAL_VEC Gtlu321 =
+ kmadd(Gtl312,gtu11,kmadd(Gtl322,gtu12,kmul(Gtl323,gtu13)));
+
+ CCTK_REAL_VEC Gtlu322 =
+ kmadd(Gtl312,gtu12,kmadd(Gtl322,gtu22,kmul(Gtl323,gtu23)));
+
+ CCTK_REAL_VEC Gtlu323 =
+ kmadd(Gtl312,gtu13,kmadd(Gtl322,gtu23,kmul(Gtl323,gtu33)));
+
+ CCTK_REAL_VEC Gtlu331 =
+ kmadd(Gtl313,gtu11,kmadd(Gtl323,gtu12,kmul(Gtl333,gtu13)));
+
+ CCTK_REAL_VEC Gtlu332 =
+ kmadd(Gtl313,gtu12,kmadd(Gtl323,gtu22,kmul(Gtl333,gtu23)));
+
+ CCTK_REAL_VEC Gtlu333 =
+ kmadd(Gtl313,gtu13,kmadd(Gtl323,gtu23,kmul(Gtl333,gtu33)));
+
+ CCTK_REAL_VEC Gt111 =
+ kmadd(Gtl111,gtu11,kmadd(Gtl211,gtu12,kmul(Gtl311,gtu13)));
+
+ CCTK_REAL_VEC Gt211 =
+ kmadd(Gtl111,gtu12,kmadd(Gtl211,gtu22,kmul(Gtl311,gtu23)));
+
+ CCTK_REAL_VEC Gt311 =
+ kmadd(Gtl111,gtu13,kmadd(Gtl211,gtu23,kmul(Gtl311,gtu33)));
+
+ CCTK_REAL_VEC Gt112 =
+ kmadd(Gtl112,gtu11,kmadd(Gtl212,gtu12,kmul(Gtl312,gtu13)));
+
+ CCTK_REAL_VEC Gt212 =
+ kmadd(Gtl112,gtu12,kmadd(Gtl212,gtu22,kmul(Gtl312,gtu23)));
+
+ CCTK_REAL_VEC Gt312 =
+ kmadd(Gtl112,gtu13,kmadd(Gtl212,gtu23,kmul(Gtl312,gtu33)));
+
+ CCTK_REAL_VEC Gt113 =
+ kmadd(Gtl113,gtu11,kmadd(Gtl213,gtu12,kmul(Gtl313,gtu13)));
+
+ CCTK_REAL_VEC Gt213 =
+ kmadd(Gtl113,gtu12,kmadd(Gtl213,gtu22,kmul(Gtl313,gtu23)));
+
+ CCTK_REAL_VEC Gt313 =
+ kmadd(Gtl113,gtu13,kmadd(Gtl213,gtu23,kmul(Gtl313,gtu33)));
+
+ CCTK_REAL_VEC Gt122 =
+ kmadd(Gtl122,gtu11,kmadd(Gtl222,gtu12,kmul(Gtl322,gtu13)));
+
+ CCTK_REAL_VEC Gt222 =
+ kmadd(Gtl122,gtu12,kmadd(Gtl222,gtu22,kmul(Gtl322,gtu23)));
+
+ CCTK_REAL_VEC Gt322 =
+ kmadd(Gtl122,gtu13,kmadd(Gtl222,gtu23,kmul(Gtl322,gtu33)));
+
+ CCTK_REAL_VEC Gt123 =
+ kmadd(Gtl123,gtu11,kmadd(Gtl223,gtu12,kmul(Gtl323,gtu13)));
+
+ CCTK_REAL_VEC Gt223 =
+ kmadd(Gtl123,gtu12,kmadd(Gtl223,gtu22,kmul(Gtl323,gtu23)));
+
+ CCTK_REAL_VEC Gt323 =
+ kmadd(Gtl123,gtu13,kmadd(Gtl223,gtu23,kmul(Gtl323,gtu33)));
+
+ CCTK_REAL_VEC Gt133 =
+ kmadd(Gtl133,gtu11,kmadd(Gtl233,gtu12,kmul(Gtl333,gtu13)));
+
+ CCTK_REAL_VEC Gt233 =
+ kmadd(Gtl133,gtu12,kmadd(Gtl233,gtu22,kmul(Gtl333,gtu23)));
+
+ CCTK_REAL_VEC Gt333 =
+ kmadd(Gtl133,gtu13,kmadd(Gtl233,gtu23,kmul(Gtl333,gtu33)));
+
+ CCTK_REAL_VEC Xtn1 =
+ kmadd(Gt111,gtu11,kmadd(Gt122,gtu22,kmadd(Gt133,gtu33,kmul(kmadd(Gt112,gtu12,kmadd(Gt113,gtu13,kmul(Gt123,gtu23))),ToReal(2)))));
+
+ CCTK_REAL_VEC Xtn2 =
+ kmadd(Gt211,gtu11,kmadd(Gt222,gtu22,kmadd(Gt233,gtu33,kmul(kmadd(Gt212,gtu12,kmadd(Gt213,gtu13,kmul(Gt223,gtu23))),ToReal(2)))));
+
+ CCTK_REAL_VEC Xtn3 =
+ kmadd(Gt311,gtu11,kmadd(Gt322,gtu22,kmadd(Gt333,gtu33,kmul(kmadd(Gt312,gtu12,kmadd(Gt313,gtu13,kmul(Gt323,gtu23))),ToReal(2)))));
+
+ CCTK_REAL_VEC e4phi = IfThen(conformalMethod ==
+ 1,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
+
+ CCTK_REAL_VEC em4phi = INV(e4phi);
+
+ CCTK_REAL_VEC g11 = kmul(gt11L,e4phi);
+
+ CCTK_REAL_VEC g12 = kmul(gt12L,e4phi);
+
+ CCTK_REAL_VEC g13 = kmul(gt13L,e4phi);
+
+ CCTK_REAL_VEC g22 = kmul(gt22L,e4phi);
+
+ CCTK_REAL_VEC g23 = kmul(gt23L,e4phi);
+
+ CCTK_REAL_VEC g33 = kmul(gt33L,e4phi);
+
+ CCTK_REAL_VEC gu11 = kmul(em4phi,gtu11);
+
+ CCTK_REAL_VEC gu12 = kmul(em4phi,gtu12);
+
+ CCTK_REAL_VEC gu13 = kmul(em4phi,gtu13);
+
+ CCTK_REAL_VEC gu22 = kmul(em4phi,gtu22);
+
+ CCTK_REAL_VEC gu23 = kmul(em4phi,gtu23);
+
+ CCTK_REAL_VEC gu33 = kmul(em4phi,gtu33);
+
+ CCTK_REAL_VEC Z1 =
+ kneg(kmul(kmadd(gu11,kmadd(gtu11,JacPDstandardNth1gt11,kmadd(gtu13,JacPDstandardNth1gt13,kmadd(gtu12,kadd(JacPDstandardNth1gt12,JacPDstandardNth2gt11),kmadd(gtu22,JacPDstandardNth2gt12,kmadd(gtu23,JacPDstandardNth2gt13,kmadd(gtu13,JacPDstandardNth3gt11,kmadd(gtu23,JacPDstandardNth3gt12,kmsub(gtu33,JacPDstandardNth3gt13,kmadd(gt11L,Xt1L,kmadd(gt13L,Xt3L,kmul(gt12L,Xt2L))))))))))),kmadd(gu13,kmadd(gtu11,JacPDstandardNth1gt13,kmadd(gtu13,JacPDstandardNth1gt33,kmadd(gtu12,kadd(JacPDstandardNth1gt23,JacPDstandardNth2gt13),kmadd(gtu22,JacPDstandardNth2gt23,kmadd(gtu23,JacPDstandardNth2gt33,kmadd(gtu13,JacPDstandardNth3gt13,kmadd(gtu23,JacPDstandardNth3gt23,kmsub(gtu33,JacPDstandardNth3gt33,kmadd(gt13L,Xt1L,kmadd(gt33L,Xt3L,kmul(gt23L,Xt2L))))))))))),kmul(gu12,kmadd(gtu11,JacPDstandardNth1gt12,kmadd(gtu13,JacPDstandardNth1gt23,kmadd(gtu12,kadd(JacPDstandardNth1gt22,JacPDstandardNth2gt12),kmadd(gtu22,JacPDstandardNth2gt22,kmadd(gtu23,JacPDstandardNth2gt23,kmadd(gtu13,JacPDstandardNth3gt12,kmadd(gtu23,JacPDstandardNth3gt22,kmsub(gtu33,JacPDstandardNth3gt23,kmadd(gt12L,Xt1L,kmadd(gt23L,Xt3L,kmul(gt22L,Xt2L)))))))))))))),ToReal(0.5)));
+
+ CCTK_REAL_VEC Z2 =
+ kneg(kmul(kmadd(gu12,kmadd(gtu11,JacPDstandardNth1gt11,kmadd(gtu13,JacPDstandardNth1gt13,kmadd(gtu12,kadd(JacPDstandardNth1gt12,JacPDstandardNth2gt11),kmadd(gtu22,JacPDstandardNth2gt12,kmadd(gtu23,JacPDstandardNth2gt13,kmadd(gtu13,JacPDstandardNth3gt11,kmadd(gtu23,JacPDstandardNth3gt12,kmsub(gtu33,JacPDstandardNth3gt13,kmadd(gt11L,Xt1L,kmadd(gt13L,Xt3L,kmul(gt12L,Xt2L))))))))))),kmadd(gu23,kmadd(gtu11,JacPDstandardNth1gt13,kmadd(gtu13,JacPDstandardNth1gt33,kmadd(gtu12,kadd(JacPDstandardNth1gt23,JacPDstandardNth2gt13),kmadd(gtu22,JacPDstandardNth2gt23,kmadd(gtu23,JacPDstandardNth2gt33,kmadd(gtu13,JacPDstandardNth3gt13,kmadd(gtu23,JacPDstandardNth3gt23,kmsub(gtu33,JacPDstandardNth3gt33,kmadd(gt13L,Xt1L,kmadd(gt33L,Xt3L,kmul(gt23L,Xt2L))))))))))),kmul(gu22,kmadd(gtu11,JacPDstandardNth1gt12,kmadd(gtu13,JacPDstandardNth1gt23,kmadd(gtu12,kadd(JacPDstandardNth1gt22,JacPDstandardNth2gt12),kmadd(gtu22,JacPDstandardNth2gt22,kmadd(gtu23,JacPDstandardNth2gt23,kmadd(gtu13,JacPDstandardNth3gt12,kmadd(gtu23,JacPDstandardNth3gt22,kmsub(gtu33,JacPDstandardNth3gt23,kmadd(gt12L,Xt1L,kmadd(gt23L,Xt3L,kmul(gt22L,Xt2L)))))))))))))),ToReal(0.5)));
+
+ CCTK_REAL_VEC Z3 =
+ kneg(kmul(kmadd(gu13,kmadd(gtu11,JacPDstandardNth1gt11,kmadd(gtu13,JacPDstandardNth1gt13,kmadd(gtu12,kadd(JacPDstandardNth1gt12,JacPDstandardNth2gt11),kmadd(gtu22,JacPDstandardNth2gt12,kmadd(gtu23,JacPDstandardNth2gt13,kmadd(gtu13,JacPDstandardNth3gt11,kmadd(gtu23,JacPDstandardNth3gt12,kmsub(gtu33,JacPDstandardNth3gt13,kmadd(gt11L,Xt1L,kmadd(gt13L,Xt3L,kmul(gt12L,Xt2L))))))))))),kmadd(gu33,kmadd(gtu11,JacPDstandardNth1gt13,kmadd(gtu13,JacPDstandardNth1gt33,kmadd(gtu12,kadd(JacPDstandardNth1gt23,JacPDstandardNth2gt13),kmadd(gtu22,JacPDstandardNth2gt23,kmadd(gtu23,JacPDstandardNth2gt33,kmadd(gtu13,JacPDstandardNth3gt13,kmadd(gtu23,JacPDstandardNth3gt23,kmsub(gtu33,JacPDstandardNth3gt33,kmadd(gt13L,Xt1L,kmadd(gt33L,Xt3L,kmul(gt23L,Xt2L))))))))))),kmul(gu23,kmadd(gtu11,JacPDstandardNth1gt12,kmadd(gtu13,JacPDstandardNth1gt23,kmadd(gtu12,kadd(JacPDstandardNth1gt22,JacPDstandardNth2gt12),kmadd(gtu22,JacPDstandardNth2gt22,kmadd(gtu23,JacPDstandardNth2gt23,kmadd(gtu13,JacPDstandardNth3gt12,kmadd(gtu23,JacPDstandardNth3gt22,kmsub(gtu33,JacPDstandardNth3gt23,kmadd(gt12L,Xt1L,kmadd(gt23L,Xt3L,kmul(gt22L,Xt2L)))))))))))))),ToReal(0.5)));
+
+ CCTK_REAL_VEC Rt11 =
+ kmul(ToReal(0.5),knmsub(gtu11,JacPDstandardNth11gt11,knmsub(gtu22,JacPDstandardNth22gt11,knmsub(gtu33,JacPDstandardNth33gt11,knmsub(gtu12,kadd(JacPDstandardNth21gt11,JacPDstandardNth12gt11),knmsub(gtu13,kadd(JacPDstandardNth31gt11,JacPDstandardNth13gt11),knmsub(gtu23,kadd(JacPDstandardNth32gt11,JacPDstandardNth23gt11),kmadd(kmadd(Gt211,Gtlu211,kmadd(Gt212,Gtlu212,kmadd(Gt213,Gtlu213,kmadd(Gt311,Gtlu311,kmadd(Gt312,Gtlu312,kmadd(Gt313,Gtlu313,kmul(gt11L,JacPDstandardNth1Xt1))))))),ToReal(2),kmadd(gt12L,kmul(JacPDstandardNth1Xt2,ToReal(2)),kmadd(gt13L,kmul(JacPDstandardNth1Xt3,ToReal(2)),kmadd(Gtl111,kmul(Xtn1,ToReal(2)),kmadd(Gtl112,kmul(Xtn2,ToReal(2)),kmadd(Gtl113,kmul(Xtn3,ToReal(2)),kmadd(kmadd(Gt211,Gtlu121,kmadd(Gt212,Gtlu122,kmadd(Gt213,Gtlu123,kmadd(Gt311,Gtlu131,kmadd(Gt312,Gtlu132,kmul(Gt313,Gtlu133)))))),ToReal(4),kmul(kmadd(Gt111,Gtlu111,kmadd(Gt112,Gtlu112,kmul(Gt113,Gtlu113))),ToReal(6))))))))))))))));
+
+ CCTK_REAL_VEC Rt12 =
+ kmul(ToReal(0.5),kmadd(gt12L,JacPDstandardNth1Xt1,kmadd(gt22L,JacPDstandardNth1Xt2,kmadd(gt23L,JacPDstandardNth1Xt3,kmadd(gt11L,JacPDstandardNth2Xt1,kmadd(gt12L,JacPDstandardNth2Xt2,kmadd(gt13L,JacPDstandardNth2Xt3,kmadd(Gtl112,Xtn1,kmadd(Gtl211,Xtn1,kmadd(Gtl122,Xtn2,kmadd(Gtl212,Xtn2,kmadd(Gtl123,Xtn3,kmadd(Gtl213,Xtn3,knmsub(gtu11,JacPDstandardNth11gt12,knmsub(gtu22,JacPDstandardNth22gt12,knmsub(gtu33,JacPDstandardNth33gt12,knmsub(gtu12,kadd(JacPDstandardNth21gt12,JacPDstandardNth12gt12),knmsub(gtu13,kadd(JacPDstandardNth31gt12,JacPDstandardNth13gt12),knmsub(gtu23,kadd(JacPDstandardNth32gt12,JacPDstandardNth23gt12),kmadd(kmadd(Gt122,Gtlu112,kmadd(Gt123,Gtlu113,kmadd(Gt111,Gtlu121,kmadd(Gt212,Gtlu121,kmadd(Gt222,Gtlu122,kmadd(Gt113,Gtlu123,kmadd(Gt223,Gtlu123,kmadd(Gt312,Gtlu131,kmadd(Gt322,Gtlu132,kmadd(Gt323,Gtlu133,kmadd(Gt111,Gtlu211,kmadd(Gt112,kadd(Gtlu111,kadd(Gtlu122,Gtlu212)),kmadd(Gt113,Gtlu213,kmadd(Gt311,Gtlu231,kmadd(Gt312,Gtlu232,kmadd(Gt313,Gtlu233,kmadd(Gt311,Gtlu321,kmadd(Gt312,Gtlu322,kmul(Gt313,Gtlu323))))))))))))))))))),ToReal(2),kmul(kmadd(Gt211,Gtlu221,kmadd(Gt212,Gtlu222,kmul(Gt213,Gtlu223))),ToReal(4))))))))))))))))))))));
+
+ CCTK_REAL_VEC Rt13 =
+ kmul(ToReal(0.5),kmadd(gt13L,JacPDstandardNth1Xt1,kmadd(gt23L,JacPDstandardNth1Xt2,kmadd(gt33L,JacPDstandardNth1Xt3,kmadd(gt11L,JacPDstandardNth3Xt1,kmadd(gt12L,JacPDstandardNth3Xt2,kmadd(gt13L,JacPDstandardNth3Xt3,kmadd(Gtl113,Xtn1,kmadd(Gtl311,Xtn1,kmadd(Gtl123,Xtn2,kmadd(Gtl312,Xtn2,kmadd(Gtl133,Xtn3,kmadd(Gtl313,Xtn3,knmsub(gtu11,JacPDstandardNth11gt13,knmsub(gtu22,JacPDstandardNth22gt13,knmsub(gtu33,JacPDstandardNth33gt13,knmsub(gtu12,kadd(JacPDstandardNth21gt13,JacPDstandardNth12gt13),knmsub(gtu13,kadd(JacPDstandardNth31gt13,JacPDstandardNth13gt13),knmsub(gtu23,kadd(JacPDstandardNth32gt13,JacPDstandardNth23gt13),kmadd(kmadd(Gt123,Gtlu112,kmadd(Gt133,Gtlu113,kmadd(Gt213,Gtlu121,kmadd(Gt223,Gtlu122,kmadd(Gt233,Gtlu123,kmadd(Gt111,Gtlu131,kmadd(Gt313,Gtlu131,kmadd(Gt112,Gtlu132,kmadd(Gt323,Gtlu132,kmadd(Gt333,Gtlu133,kmadd(Gt211,Gtlu231,kmadd(Gt212,Gtlu232,kmadd(Gt213,Gtlu233,kmadd(Gt111,Gtlu311,kmadd(Gt112,Gtlu312,kmadd(Gt113,kadd(Gtlu111,kadd(Gtlu133,Gtlu313)),kmadd(Gt211,Gtlu321,kmadd(Gt212,Gtlu322,kmul(Gt213,Gtlu323))))))))))))))))))),ToReal(2),kmul(kmadd(Gt311,Gtlu331,kmadd(Gt312,Gtlu332,kmul(Gt313,Gtlu333))),ToReal(4))))))))))))))))))))));
+
+ CCTK_REAL_VEC Rt22 =
+ kmul(ToReal(0.5),knmsub(gtu11,JacPDstandardNth11gt22,knmsub(gtu22,JacPDstandardNth22gt22,knmsub(gtu33,JacPDstandardNth33gt22,knmsub(gtu12,kadd(JacPDstandardNth21gt22,JacPDstandardNth12gt22),knmsub(gtu13,kadd(JacPDstandardNth31gt22,JacPDstandardNth13gt22),knmsub(gtu23,kadd(JacPDstandardNth32gt22,JacPDstandardNth23gt22),kmadd(gt22L,kmul(JacPDstandardNth2Xt2,ToReal(2)),kmadd(gt23L,kmul(JacPDstandardNth2Xt3,ToReal(2)),kmadd(Gtl212,kmul(Xtn1,ToReal(2)),kmadd(Gtl222,kmul(Xtn2,ToReal(2)),kmadd(Gtl223,kmul(Xtn3,ToReal(2)),kmadd(ToReal(2),kmadd(Gt123,Gtlu123,kmadd(Gt312,Gtlu321,kmadd(Gt322,Gtlu322,kmadd(Gt323,Gtlu323,kmadd(gt12L,JacPDstandardNth2Xt1,kmadd(Gt112,kmadd(Gtlu211,ToReal(2),Gtlu121),kmul(Gt122,kmadd(Gtlu212,ToReal(2),Gtlu122)))))))),kmadd(kmadd(Gt123,Gtlu213,kmadd(Gt312,Gtlu231,kmadd(Gt322,Gtlu232,kmul(Gt323,Gtlu233)))),ToReal(4),kmul(kmadd(Gt212,Gtlu221,kmadd(Gt222,Gtlu222,kmul(Gt223,Gtlu223))),ToReal(6))))))))))))))));
+
+ CCTK_REAL_VEC Rt23 =
+ kmul(ToReal(0.5),kmadd(gt13L,JacPDstandardNth2Xt1,kmadd(gt23L,JacPDstandardNth2Xt2,kmadd(gt33L,JacPDstandardNth2Xt3,kmadd(gt12L,JacPDstandardNth3Xt1,kmadd(gt22L,JacPDstandardNth3Xt2,kmadd(gt23L,JacPDstandardNth3Xt3,kmadd(Gtl213,Xtn1,kmadd(Gtl312,Xtn1,kmadd(Gtl223,Xtn2,kmadd(Gtl322,Xtn2,kmadd(Gtl233,Xtn3,kmadd(Gtl323,Xtn3,knmsub(gtu11,JacPDstandardNth11gt23,knmsub(gtu22,JacPDstandardNth22gt23,knmsub(gtu33,JacPDstandardNth33gt23,knmsub(gtu12,kadd(JacPDstandardNth21gt23,JacPDstandardNth12gt23),knmsub(gtu13,kadd(JacPDstandardNth31gt23,JacPDstandardNth13gt23),knmsub(gtu23,kadd(JacPDstandardNth32gt23,JacPDstandardNth23gt23),kmadd(kmadd(Gt123,Gtlu133,kmadd(Gt113,Gtlu211,kmadd(Gt123,Gtlu212,kmadd(Gt133,Gtlu213,kmadd(Gt213,Gtlu221,kmadd(Gt223,Gtlu222,kmadd(Gt233,Gtlu223,kmadd(Gt212,Gtlu231,kmadd(Gt313,Gtlu231,kmadd(Gt222,Gtlu232,kmadd(Gt323,Gtlu232,kmadd(Gt223,Gtlu233,kmadd(Gt333,Gtlu233,kmadd(Gt112,kadd(Gtlu131,Gtlu311),kmadd(Gt122,kadd(Gtlu132,Gtlu312),kmadd(Gt123,Gtlu313,kmadd(Gt212,Gtlu321,kmadd(Gt222,Gtlu322,kmul(Gt223,Gtlu323))))))))))))))))))),ToReal(2),kmul(kmadd(Gt312,Gtlu331,kmadd(Gt322,Gtlu332,kmul(Gt323,Gtlu333))),ToReal(4))))))))))))))))))))));
+
+ CCTK_REAL_VEC Rt33 =
+ kmul(ToReal(0.5),knmsub(gtu11,JacPDstandardNth11gt33,knmsub(gtu22,JacPDstandardNth22gt33,knmsub(gtu33,JacPDstandardNth33gt33,knmsub(gtu12,kadd(JacPDstandardNth21gt33,JacPDstandardNth12gt33),knmsub(gtu13,kadd(JacPDstandardNth31gt33,JacPDstandardNth13gt33),knmsub(gtu23,kadd(JacPDstandardNth32gt33,JacPDstandardNth23gt33),kmadd(gt23L,kmul(JacPDstandardNth3Xt2,ToReal(2)),kmadd(gt33L,kmul(JacPDstandardNth3Xt3,ToReal(2)),kmadd(Gtl313,kmul(Xtn1,ToReal(2)),kmadd(Gtl323,kmul(Xtn2,ToReal(2)),kmadd(Gtl333,kmul(Xtn3,ToReal(2)),kmadd(ToReal(2),kmadd(Gt133,Gtlu133,kmadd(Gt213,Gtlu231,kmadd(Gt223,Gtlu232,kmadd(Gt233,Gtlu233,kmadd(gt13L,JacPDstandardNth3Xt1,kmadd(Gt113,kmadd(Gtlu311,ToReal(2),Gtlu131),kmul(Gt123,kmadd(Gtlu312,ToReal(2),Gtlu132)))))))),kmadd(kmadd(Gt133,Gtlu313,kmadd(Gt213,Gtlu321,kmadd(Gt223,Gtlu322,kmul(Gt233,Gtlu323)))),ToReal(4),kmul(kmadd(Gt313,Gtlu331,kmadd(Gt323,Gtlu332,kmul(Gt333,Gtlu333))),ToReal(6))))))))))))))));
+
+ CCTK_REAL_VEC fac1 = IfThen(conformalMethod ==
+ 1,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
+
+ CCTK_REAL_VEC cdphi1 = kmul(fac1,JacPDstandardNth1phi);
+
+ CCTK_REAL_VEC cdphi2 = kmul(fac1,JacPDstandardNth2phi);
+
+ CCTK_REAL_VEC cdphi3 = kmul(fac1,JacPDstandardNth3phi);
+
+ CCTK_REAL_VEC fac2 = IfThen(conformalMethod ==
+ 1,kmul(INV(SQR(phiL)),ToReal(0.5)),ToReal(0));
+
+ CCTK_REAL_VEC cdphi211 =
+ kmadd(fac2,SQR(JacPDstandardNth1phi),kmul(fac1,ksub(JacPDstandardNth11phi,kmadd(Gt111,JacPDstandardNth1phi,kmadd(Gt311,JacPDstandardNth3phi,kmul(Gt211,JacPDstandardNth2phi))))));
+
+ CCTK_REAL_VEC cdphi212 =
+ kmadd(fac2,kmul(JacPDstandardNth1phi,JacPDstandardNth2phi),kmul(fac1,ksub(JacPDstandardNth12phi,kmadd(Gt112,JacPDstandardNth1phi,kmadd(Gt312,JacPDstandardNth3phi,kmul(Gt212,JacPDstandardNth2phi))))));
+
+ CCTK_REAL_VEC cdphi213 =
+ kmadd(fac2,kmul(JacPDstandardNth1phi,JacPDstandardNth3phi),kmul(fac1,ksub(JacPDstandardNth13phi,kmadd(Gt113,JacPDstandardNth1phi,kmadd(Gt313,JacPDstandardNth3phi,kmul(Gt213,JacPDstandardNth2phi))))));
+
+ CCTK_REAL_VEC cdphi222 =
+ kmsub(fac2,SQR(JacPDstandardNth2phi),kmul(fac1,kmadd(Gt122,JacPDstandardNth1phi,kmadd(Gt222,JacPDstandardNth2phi,kmsub(Gt322,JacPDstandardNth3phi,JacPDstandardNth22phi)))));
+
+ CCTK_REAL_VEC cdphi223 =
+ kmsub(fac2,kmul(JacPDstandardNth2phi,JacPDstandardNth3phi),kmul(fac1,kmadd(Gt123,JacPDstandardNth1phi,kmadd(Gt223,JacPDstandardNth2phi,kmsub(Gt323,JacPDstandardNth3phi,JacPDstandardNth23phi)))));
+
+ CCTK_REAL_VEC cdphi233 =
+ kmsub(fac2,SQR(JacPDstandardNth3phi),kmul(fac1,kmadd(Gt133,JacPDstandardNth1phi,kmadd(Gt233,JacPDstandardNth2phi,kmsub(Gt333,JacPDstandardNth3phi,JacPDstandardNth33phi)))));
+
+ CCTK_REAL_VEC Rphi11 =
+ kmul(ToReal(-2),kadd(cdphi211,kmadd(SQR(cdphi1),kmul(kmadd(gt11L,gtu11,ToReal(-1)),ToReal(2)),kmul(gt11L,kmadd(cdphi211,gtu11,kmadd(cdphi233,gtu33,kmadd(kmadd(cdphi212,gtu12,kmadd(cdphi213,gtu13,kmadd(cdphi223,gtu23,kmul(gtu33,SQR(cdphi3))))),ToReal(2),kmadd(gtu22,kmadd(SQR(cdphi2),ToReal(2),cdphi222),kmul(kmadd(cdphi1,kmadd(cdphi2,gtu12,kmul(cdphi3,gtu13)),kmul(cdphi2,kmul(cdphi3,gtu23))),ToReal(4))))))))));
+
+ CCTK_REAL_VEC Rphi12 =
+ kmul(ToReal(-2),kadd(cdphi212,kmadd(gt12L,kmadd(cdphi211,gtu11,kmadd(kmadd(cdphi212,gtu12,kmadd(cdphi213,gtu13,kmadd(cdphi223,gtu23,kmul(gtu11,SQR(cdphi1))))),ToReal(2),kmadd(gtu22,kmadd(SQR(cdphi2),ToReal(2),cdphi222),kmadd(gtu33,kmadd(SQR(cdphi3),ToReal(2),cdphi233),kmul(cdphi2,kmul(cdphi3,kmul(gtu23,ToReal(4)))))))),kmul(cdphi1,kmadd(gt12L,kmul(cdphi3,kmul(gtu13,ToReal(4))),kmul(cdphi2,kmadd(gt12L,kmul(gtu12,ToReal(4)),ToReal(-2))))))));
+
+ CCTK_REAL_VEC Rphi13 =
+ kmul(ToReal(-2),kadd(cdphi213,kmadd(gt13L,kmadd(cdphi211,gtu11,kmadd(kmadd(cdphi212,gtu12,kmadd(cdphi213,gtu13,kmadd(cdphi223,gtu23,kmul(gtu11,SQR(cdphi1))))),ToReal(2),kmadd(gtu22,kmadd(SQR(cdphi2),ToReal(2),cdphi222),kmadd(gtu33,kmadd(SQR(cdphi3),ToReal(2),cdphi233),kmul(cdphi2,kmul(cdphi3,kmul(gtu23,ToReal(4)))))))),kmul(cdphi1,kmadd(gt13L,kmul(cdphi2,kmul(gtu12,ToReal(4))),kmul(cdphi3,kmadd(gt13L,kmul(gtu13,ToReal(4)),ToReal(-2))))))));
+
+ CCTK_REAL_VEC Rphi22 =
+ kmul(ToReal(-2),kadd(cdphi222,kmadd(SQR(cdphi2),kmul(kmadd(gt22L,gtu22,ToReal(-1)),ToReal(2)),kmul(gt22L,kmadd(cdphi222,gtu22,kmadd(cdphi233,gtu33,kmadd(kmadd(cdphi212,gtu12,kmadd(cdphi213,gtu13,kmadd(cdphi223,gtu23,kmul(gtu33,SQR(cdphi3))))),ToReal(2),kmadd(gtu11,kmadd(SQR(cdphi1),ToReal(2),cdphi211),kmul(kmadd(cdphi1,kmul(cdphi3,gtu13),kmul(cdphi2,kmadd(cdphi1,gtu12,kmul(cdphi3,gtu23)))),ToReal(4))))))))));
+
+ CCTK_REAL_VEC Rphi23 =
+ kmul(ToReal(-2),kadd(cdphi223,kmadd(gt23L,kmadd(cdphi222,gtu22,kmadd(kmadd(cdphi212,gtu12,kmadd(cdphi213,gtu13,kmadd(cdphi223,gtu23,kmul(gtu22,SQR(cdphi2))))),ToReal(2),kmadd(gtu11,kmadd(SQR(cdphi1),ToReal(2),cdphi211),kmadd(gtu33,kmadd(SQR(cdphi3),ToReal(2),cdphi233),kmul(cdphi1,kmul(cdphi3,kmul(gtu13,ToReal(4)))))))),kmul(cdphi2,kmadd(gt23L,kmul(cdphi1,kmul(gtu12,ToReal(4))),kmul(cdphi3,kmadd(gt23L,kmul(gtu23,ToReal(4)),ToReal(-2))))))));
+
+ CCTK_REAL_VEC Rphi33 =
+ kmul(ToReal(-2),kadd(cdphi233,kmadd(SQR(cdphi3),kmul(kmadd(gt33L,gtu33,ToReal(-1)),ToReal(2)),kmul(gt33L,kmadd(cdphi233,gtu33,kmadd(kmadd(cdphi213,gtu13,kmul(cdphi223,gtu23)),ToReal(2),kmadd(gtu11,kmadd(SQR(cdphi1),ToReal(2),cdphi211),kmadd(gtu22,kmadd(SQR(cdphi2),ToReal(2),cdphi222),kmadd(cdphi3,kmul(kmadd(cdphi1,gtu13,kmul(cdphi2,gtu23)),ToReal(4)),kmul(gtu12,kmadd(cdphi212,ToReal(2),kmul(cdphi1,kmul(cdphi2,ToReal(4))))))))))))));
+
+ CCTK_REAL_VEC Atm11 =
+ kmadd(At11L,gtu11,kmadd(At12L,gtu12,kmul(At13L,gtu13)));
+
+ CCTK_REAL_VEC Atm21 =
+ kmadd(At11L,gtu12,kmadd(At12L,gtu22,kmul(At13L,gtu23)));
+
+ CCTK_REAL_VEC Atm31 =
+ kmadd(At11L,gtu13,kmadd(At12L,gtu23,kmul(At13L,gtu33)));
+
+ CCTK_REAL_VEC Atm12 =
+ kmadd(At12L,gtu11,kmadd(At22L,gtu12,kmul(At23L,gtu13)));
+
+ CCTK_REAL_VEC Atm22 =
+ kmadd(At12L,gtu12,kmadd(At22L,gtu22,kmul(At23L,gtu23)));
+
+ CCTK_REAL_VEC Atm32 =
+ kmadd(At12L,gtu13,kmadd(At22L,gtu23,kmul(At23L,gtu33)));
+
+ CCTK_REAL_VEC Atm13 =
+ kmadd(At13L,gtu11,kmadd(At23L,gtu12,kmul(At33L,gtu13)));
+
+ CCTK_REAL_VEC Atm23 =
+ kmadd(At13L,gtu12,kmadd(At23L,gtu22,kmul(At33L,gtu23)));
+
+ CCTK_REAL_VEC Atm33 =
+ kmadd(At13L,gtu13,kmadd(At23L,gtu23,kmul(At33L,gtu33)));
+
+ CCTK_REAL_VEC R11 = kadd(Rphi11,Rt11);
+
+ CCTK_REAL_VEC R12 = kadd(Rphi12,Rt12);
+
+ CCTK_REAL_VEC R13 = kadd(Rphi13,Rt13);
+
+ CCTK_REAL_VEC R22 = kadd(Rphi22,Rt22);
+
+ CCTK_REAL_VEC R23 = kadd(Rphi23,Rt23);
+
+ CCTK_REAL_VEC R33 = kadd(Rphi33,Rt33);
+
+ R11 =
+ kadd(R11,kmadd(e4phi,kmadd(JacPDstandardNth1gt11,Z1,kmadd(JacPDstandardNth2gt11,Z2,kmul(JacPDstandardNth3gt11,Z3))),kmul(INV(phiL),kmadd(g11,kmul(kmadd(JacPDstandardNth2phi,Z2,kmul(JacPDstandardNth3phi,Z3)),ToReal(-2)),kmul(JacPDstandardNth1phi,kmadd(g11,kmul(Z1,ToReal(2)),kmul(kmadd(g12,Z2,kmul(g13,Z3)),ToReal(4))))))));
+
+ R12 =
+ kadd(R12,kmadd(e4phi,kmadd(JacPDstandardNth1gt12,Z1,kmadd(JacPDstandardNth2gt12,Z2,kmul(JacPDstandardNth3gt12,Z3))),kmul(INV(phiL),kmul(kmadd(g11,kmul(JacPDstandardNth2phi,Z1),kmadd(g22,kmul(JacPDstandardNth1phi,Z2),kmul(Z3,kmadd(g23,JacPDstandardNth1phi,kmsub(g13,JacPDstandardNth2phi,kmul(g12,JacPDstandardNth3phi)))))),ToReal(2)))));
+
+ R13 =
+ kadd(R13,kmadd(e4phi,kmadd(JacPDstandardNth1gt13,Z1,kmadd(JacPDstandardNth2gt13,Z2,kmul(JacPDstandardNth3gt13,Z3))),kmul(INV(phiL),kmul(kmadd(JacPDstandardNth3phi,kmadd(g11,Z1,kmul(g12,Z2)),kmadd(g33,kmul(JacPDstandardNth1phi,Z3),kmul(Z2,kmsub(g23,JacPDstandardNth1phi,kmul(g13,JacPDstandardNth2phi))))),ToReal(2)))));
+
+ R22 =
+ kadd(R22,kmadd(e4phi,kmadd(JacPDstandardNth1gt22,Z1,kmadd(JacPDstandardNth2gt22,Z2,kmul(JacPDstandardNth3gt22,Z3))),kmul(INV(phiL),kmadd(g22,kmul(ToReal(-2),kmadd(JacPDstandardNth1phi,Z1,kmsub(JacPDstandardNth3phi,Z3,kmul(JacPDstandardNth2phi,Z2)))),kmul(JacPDstandardNth2phi,kmul(kmadd(g12,Z1,kmul(g23,Z3)),ToReal(4)))))));
+
+ R23 =
+ kadd(R23,kmadd(e4phi,kmadd(JacPDstandardNth1gt23,Z1,kmadd(JacPDstandardNth2gt23,Z2,kmul(JacPDstandardNth3gt23,Z3))),kmul(INV(phiL),kmul(kmadd(g22,kmul(JacPDstandardNth3phi,Z2),kmadd(g33,kmul(JacPDstandardNth2phi,Z3),kmul(Z1,kmadd(g13,JacPDstandardNth2phi,kmsub(g12,JacPDstandardNth3phi,kmul(g23,JacPDstandardNth1phi)))))),ToReal(2)))));
+
+ R33 =
+ kadd(R33,kmadd(e4phi,kmadd(JacPDstandardNth1gt33,Z1,kmadd(JacPDstandardNth2gt33,Z2,kmul(JacPDstandardNth3gt33,Z3))),kmul(INV(phiL),kmadd(g33,kmul(ToReal(-2),kmadd(JacPDstandardNth1phi,Z1,kmsub(JacPDstandardNth2phi,Z2,kmul(JacPDstandardNth3phi,Z3)))),kmul(JacPDstandardNth3phi,kmul(kmadd(g13,Z1,kmul(g23,Z2)),ToReal(4)))))));
+
+ CCTK_REAL_VEC trS =
+ kmul(em4phi,kmadd(eTxxL,gtu11,kmadd(eTyyL,gtu22,kmadd(eTzzL,gtu33,kmul(kmadd(eTxyL,gtu12,kmadd(eTxzL,gtu13,kmul(eTyzL,gtu23))),ToReal(2))))));
+
+ CCTK_REAL_VEC Ats11 =
+ kmadd(Gt211,JacPDstandardNth2alpha,kmadd(Gt311,JacPDstandardNth3alpha,kmadd(alphaL,R11,kmsub(JacPDstandardNth1alpha,kmadd(cdphi1,ToReal(4),Gt111),JacPDstandardNth11alpha))));
+
+ CCTK_REAL_VEC Ats12 =
+ kmadd(Gt312,JacPDstandardNth3alpha,kmadd(alphaL,R12,ksub(kmadd(JacPDstandardNth2alpha,kmadd(cdphi1,ToReal(2),Gt212),kmul(JacPDstandardNth1alpha,kmadd(cdphi2,ToReal(2),Gt112))),JacPDstandardNth12alpha)));
+
+ CCTK_REAL_VEC Ats13 =
+ kmadd(Gt213,JacPDstandardNth2alpha,kmadd(alphaL,R13,ksub(kmadd(JacPDstandardNth3alpha,kmadd(cdphi1,ToReal(2),Gt313),kmul(JacPDstandardNth1alpha,kmadd(cdphi3,ToReal(2),Gt113))),JacPDstandardNth13alpha)));
+
+ CCTK_REAL_VEC Ats22 =
+ kmadd(Gt122,JacPDstandardNth1alpha,kmadd(Gt322,JacPDstandardNth3alpha,kmadd(alphaL,R22,kmsub(JacPDstandardNth2alpha,kmadd(cdphi2,ToReal(4),Gt222),JacPDstandardNth22alpha))));
+
+ CCTK_REAL_VEC Ats23 =
+ kmadd(Gt123,JacPDstandardNth1alpha,kmadd(alphaL,R23,ksub(kmadd(JacPDstandardNth3alpha,kmadd(cdphi2,ToReal(2),Gt323),kmul(JacPDstandardNth2alpha,kmadd(cdphi3,ToReal(2),Gt223))),JacPDstandardNth23alpha)));
+
+ CCTK_REAL_VEC Ats33 =
+ kmadd(Gt133,JacPDstandardNth1alpha,kmadd(Gt233,JacPDstandardNth2alpha,kmadd(alphaL,R33,kmsub(JacPDstandardNth3alpha,kmadd(cdphi3,ToReal(4),Gt333),JacPDstandardNth33alpha))));
+
+ CCTK_REAL_VEC trAts =
+ kmadd(Ats11,gu11,kmadd(Ats22,gu22,kmadd(Ats33,gu33,kmul(kmadd(Ats12,gu12,kmadd(Ats13,gu13,kmul(Ats23,gu23))),ToReal(2)))));
+
+ CCTK_REAL_VEC At11rhsL =
+ kmul(ToReal(0.333333333333333333333333333333),kmadd(em4phi,kmsub(Ats11,ToReal(3),kmul(g11,trAts)),kmadd(At11L,kmadd(kadd(JacPDstandardNth2beta2,JacPDstandardNth3beta3),ToReal(-2),kmul(JacPDstandardNth1beta1,ToReal(4))),kmsub(kmadd(At12L,JacPDstandardNth1beta2,kmul(At13L,JacPDstandardNth1beta3)),ToReal(6),kmul(alphaL,kmadd(kmadd(At12L,Atm21,kmul(At13L,Atm31)),ToReal(6),kmadd(At11L,kmadd(trKL,ToReal(-3),kmul(kadd(ThetaL,Atm11),ToReal(6))),kmul(em4phi,kmul(kmadd(g11,kmul(trS,ToReal(-8)),kmul(eTxxL,ToReal(24))),ToReal(Pi))))))))));
+
+ CCTK_REAL_VEC At12rhsL =
+ kmadd(ToReal(0.333333333333333333333333333333),kmadd(At12L,kadd(JacPDstandardNth1beta1,kmadd(JacPDstandardNth3beta3,ToReal(-2),JacPDstandardNth2beta2)),kmsub(kmadd(Ats12,em4phi,kmadd(At22L,JacPDstandardNth1beta2,kmadd(At23L,JacPDstandardNth1beta3,kmadd(At11L,JacPDstandardNth2beta1,kmul(At13L,JacPDstandardNth2beta3))))),ToReal(3),kmul(em4phi,kmul(g12,trAts)))),kmul(alphaL,kmadd(kmadd(At11L,Atm12,kmul(At13L,Atm32)),ToReal(-2),kmadd(At12L,kmadd(kadd(ThetaL,Atm22),ToReal(-2),trKL),kmul(em4phi,kmadd(g12,kmul(trS,ToReal(8.37758040957278196923371568875)),kmul(eTxyL,kmul(ToReal(-8),ToReal(Pi)))))))));
+
+ CCTK_REAL_VEC At13rhsL =
+ kmadd(ToReal(0.333333333333333333333333333333),kmadd(At13L,kadd(JacPDstandardNth1beta1,kmadd(JacPDstandardNth2beta2,ToReal(-2),JacPDstandardNth3beta3)),kmsub(kmadd(Ats13,em4phi,kmadd(At23L,JacPDstandardNth1beta2,kmadd(At33L,JacPDstandardNth1beta3,kmadd(At11L,JacPDstandardNth3beta1,kmul(At12L,JacPDstandardNth3beta2))))),ToReal(3),kmul(em4phi,kmul(g13,trAts)))),kmul(alphaL,kmadd(kmadd(At11L,Atm13,kmul(At12L,Atm23)),ToReal(-2),kmadd(At13L,kmadd(kadd(ThetaL,Atm33),ToReal(-2),trKL),kmul(em4phi,kmadd(g13,kmul(trS,ToReal(8.37758040957278196923371568875)),kmul(eTxzL,kmul(ToReal(-8),ToReal(Pi)))))))));
+
+ CCTK_REAL_VEC At22rhsL =
+ kmul(ToReal(0.333333333333333333333333333333),kmadd(em4phi,kmsub(Ats22,ToReal(3),kmul(g22,trAts)),kmadd(At22L,kmadd(kadd(JacPDstandardNth1beta1,JacPDstandardNth3beta3),ToReal(-2),kmul(JacPDstandardNth2beta2,ToReal(4))),kmsub(kmadd(At12L,JacPDstandardNth2beta1,kmul(At23L,JacPDstandardNth2beta3)),ToReal(6),kmul(alphaL,kmadd(kmadd(At12L,Atm12,kmul(At23L,Atm32)),ToReal(6),kmadd(At22L,kmadd(trKL,ToReal(-3),kmul(kadd(ThetaL,Atm22),ToReal(6))),kmul(em4phi,kmul(kmadd(g22,kmul(trS,ToReal(-8)),kmul(eTyyL,ToReal(24))),ToReal(Pi))))))))));
+
+ CCTK_REAL_VEC At23rhsL =
+ kmadd(ToReal(0.333333333333333333333333333333),kmadd(At23L,kadd(JacPDstandardNth2beta2,kmadd(JacPDstandardNth1beta1,ToReal(-2),JacPDstandardNth3beta3)),kmsub(kmadd(Ats23,em4phi,kmadd(At13L,JacPDstandardNth2beta1,kmadd(At33L,JacPDstandardNth2beta3,kmadd(At12L,JacPDstandardNth3beta1,kmul(At22L,JacPDstandardNth3beta2))))),ToReal(3),kmul(em4phi,kmul(g23,trAts)))),kmul(alphaL,kmadd(kmadd(At12L,Atm13,kmul(At22L,Atm23)),ToReal(-2),kmadd(At23L,kmadd(kadd(ThetaL,Atm33),ToReal(-2),trKL),kmul(em4phi,kmadd(g23,kmul(trS,ToReal(8.37758040957278196923371568875)),kmul(eTyzL,kmul(ToReal(-8),ToReal(Pi)))))))));
+
+ CCTK_REAL_VEC At33rhsL =
+ kmul(ToReal(0.333333333333333333333333333333),kmadd(em4phi,kmsub(Ats33,ToReal(3),kmul(g33,trAts)),kmadd(At33L,kmadd(kadd(JacPDstandardNth1beta1,JacPDstandardNth2beta2),ToReal(-2),kmul(JacPDstandardNth3beta3,ToReal(4))),kmsub(kmadd(At13L,JacPDstandardNth3beta1,kmul(At23L,JacPDstandardNth3beta2)),ToReal(6),kmul(alphaL,kmadd(kmadd(At13L,Atm13,kmul(At23L,Atm23)),ToReal(6),kmadd(At33L,kmadd(trKL,ToReal(-3),kmul(kadd(ThetaL,Atm33),ToReal(6))),kmul(em4phi,kmul(kmadd(g33,kmul(trS,ToReal(-8)),kmul(eTzzL,ToReal(24))),ToReal(Pi))))))))));
+
+ /* Copy local copies back to grid functions */
+ vec_store_partial_prepare(i,lc_imin,lc_imax);
+ vec_store_nta_partial(At11rhs[index],At11rhsL);
+ vec_store_nta_partial(At12rhs[index],At12rhsL);
+ vec_store_nta_partial(At13rhs[index],At13rhsL);
+ vec_store_nta_partial(At22rhs[index],At22rhsL);
+ vec_store_nta_partial(At23rhs[index],At23rhsL);
+ vec_store_nta_partial(At33rhs[index],At33rhsL);
+ }
+ LC_ENDLOOP3VEC(ML_CCZ4_RHS2);
+}
+
+extern "C" void ML_CCZ4_RHS2(CCTK_ARGUMENTS)
+{
+ DECLARE_CCTK_ARGUMENTS;
+ DECLARE_CCTK_PARAMETERS;
+
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_CCZ4_RHS2_Body");
+ }
+
+ if (cctk_iteration % ML_CCZ4_RHS2_calc_every != ML_CCZ4_RHS2_calc_offset)
+ {
+ return;
+ }
+
+ const char *const groups[] = {
+ "ML_CCZ4::ML_curv",
+ "ML_CCZ4::ML_curvrhs",
+ "ML_CCZ4::ML_Gamma",
+ "ML_CCZ4::ML_lapse",
+ "ML_CCZ4::ML_log_confac",
+ "ML_CCZ4::ML_metric",
+ "ML_CCZ4::ML_shift",
+ "ML_CCZ4::ML_Theta",
+ "ML_CCZ4::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_CCZ4_RHS2", 9, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_CCZ4_RHS2", 1, 1, 1);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_CCZ4_RHS2", 2, 2, 2);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_CCZ4_RHS2", 3, 3, 3);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_CCZ4_RHS2", 4, 4, 4);
+ break;
+ }
+
+ GenericFD_LoopOverInterior(cctkGH, ML_CCZ4_RHS2_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_CCZ4_RHS2_Body");
+ }
+}
diff --git a/ML_CCZ4/src/ML_CCZ4_RHSStaticBoundary.cc b/ML_CCZ4/src/ML_CCZ4_RHSStaticBoundary.cc
new file mode 100644
index 0000000..83b35c7
--- /dev/null
+++ b/ML_CCZ4/src/ML_CCZ4_RHSStaticBoundary.cc
@@ -0,0 +1,398 @@
+/* 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 "cctk_Loop.h"
+#include "loopcontrol.h"
+#include "vectors.h"
+
+/* Define macros used in calculations */
+#define INITVALUE (42)
+#define QAD(x) (SQR(SQR(x)))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
+
+extern "C" void ML_CCZ4_RHSStaticBoundary_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_CCZ4::ML_curvrhs","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_curvrhs.");
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_CCZ4::ML_dtlapserhs","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_dtlapserhs.");
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_CCZ4::ML_dtshiftrhs","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_dtshiftrhs.");
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_CCZ4::ML_Gammarhs","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_Gammarhs.");
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_CCZ4::ML_lapserhs","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_lapserhs.");
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_CCZ4::ML_log_confacrhs","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_log_confacrhs.");
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_CCZ4::ML_metricrhs","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_metricrhs.");
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_CCZ4::ML_shiftrhs","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_shiftrhs.");
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_CCZ4::ML_Thetarhs","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_Thetarhs.");
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_CCZ4::ML_trace_curvrhs","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_trace_curvrhs.");
+ return;
+}
+
+static void ML_CCZ4_RHSStaticBoundary_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const imin[3], int const imax[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+{
+ DECLARE_CCTK_ARGUMENTS;
+ DECLARE_CCTK_PARAMETERS;
+
+
+ /* 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_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const t = ToReal(cctk_time);
+ CCTK_REAL_VEC const dxi = INV(dx);
+ CCTK_REAL_VEC const dyi = INV(dy);
+ CCTK_REAL_VEC const dzi = INV(dz);
+ CCTK_REAL_VEC const khalf = ToReal(0.5);
+ CCTK_REAL_VEC const kthird = ToReal(1.0/3.0);
+ CCTK_REAL_VEC const ktwothird = ToReal(2.0/3.0);
+ CCTK_REAL_VEC const kfourthird = ToReal(4.0/3.0);
+ CCTK_REAL_VEC const keightthird = ToReal(8.0/3.0);
+ CCTK_REAL_VEC const hdxi = kmul(ToReal(0.5), dxi);
+ CCTK_REAL_VEC const hdyi = kmul(ToReal(0.5), dyi);
+ CCTK_REAL_VEC const hdzi = kmul(ToReal(0.5), dzi);
+
+ /* Initialize predefined quantities */
+ CCTK_REAL_VEC const p1o1024dx = kmul(INV(dx),ToReal(0.0009765625));
+ CCTK_REAL_VEC const p1o1024dy = kmul(INV(dy),ToReal(0.0009765625));
+ CCTK_REAL_VEC const p1o1024dz = kmul(INV(dz),ToReal(0.0009765625));
+ CCTK_REAL_VEC const p1o120dx = kmul(INV(dx),ToReal(0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o120dy = kmul(INV(dy),ToReal(0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o120dz = kmul(INV(dz),ToReal(0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dx = kmul(INV(dx),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dy = kmul(INV(dy),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dz = kmul(INV(dz),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o144dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o144dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o144dydz = kmul(INV(kmul(dy,dz)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o1680dx = kmul(INV(dx),ToReal(0.000595238095238095238095238095238));
+ CCTK_REAL_VEC const p1o1680dy = kmul(INV(dy),ToReal(0.000595238095238095238095238095238));
+ CCTK_REAL_VEC const p1o1680dz = kmul(INV(dz),ToReal(0.000595238095238095238095238095238));
+ CCTK_REAL_VEC const p1o16dx = kmul(INV(dx),ToReal(0.0625));
+ CCTK_REAL_VEC const p1o16dy = kmul(INV(dy),ToReal(0.0625));
+ CCTK_REAL_VEC const p1o16dz = kmul(INV(dz),ToReal(0.0625));
+ CCTK_REAL_VEC const p1o180dx2 = kmul(INV(SQR(dx)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o180dy2 = kmul(INV(SQR(dy)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o180dz2 = kmul(INV(SQR(dz)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o24dx = kmul(INV(dx),ToReal(0.0416666666666666666666666666667));
+ CCTK_REAL_VEC const p1o24dy = kmul(INV(dy),ToReal(0.0416666666666666666666666666667));
+ CCTK_REAL_VEC const p1o24dz = kmul(INV(dz),ToReal(0.0416666666666666666666666666667));
+ CCTK_REAL_VEC const p1o256dx = kmul(INV(dx),ToReal(0.00390625));
+ CCTK_REAL_VEC const p1o256dy = kmul(INV(dy),ToReal(0.00390625));
+ CCTK_REAL_VEC const p1o256dz = kmul(INV(dz),ToReal(0.00390625));
+ CCTK_REAL_VEC const p1o2dx = kmul(INV(dx),ToReal(0.5));
+ CCTK_REAL_VEC const p1o2dy = kmul(INV(dy),ToReal(0.5));
+ CCTK_REAL_VEC const p1o2dz = kmul(INV(dz),ToReal(0.5));
+ CCTK_REAL_VEC const p1o3600dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o3600dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o3600dydz = kmul(INV(kmul(dy,dz)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o4dx = kmul(INV(dx),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(kmul(dy,dz)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dz = kmul(INV(dz),ToReal(0.25));
+ CCTK_REAL_VEC const p1o5040dx2 = kmul(INV(SQR(dx)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o5040dy2 = kmul(INV(SQR(dy)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o5040dz2 = kmul(INV(SQR(dz)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o560dx = kmul(INV(dx),ToReal(0.00178571428571428571428571428571));
+ CCTK_REAL_VEC const p1o560dy = kmul(INV(dy),ToReal(0.00178571428571428571428571428571));
+ CCTK_REAL_VEC const p1o560dz = kmul(INV(dz),ToReal(0.00178571428571428571428571428571));
+ CCTK_REAL_VEC const p1o60dx = kmul(INV(dx),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o60dy = kmul(INV(dy),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o60dz = kmul(INV(dz),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o64dx = kmul(INV(dx),ToReal(0.015625));
+ CCTK_REAL_VEC const p1o64dy = kmul(INV(dy),ToReal(0.015625));
+ CCTK_REAL_VEC const p1o64dz = kmul(INV(dz),ToReal(0.015625));
+ CCTK_REAL_VEC const p1o705600dxdy = kmul(INV(kmul(dx,dy)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(kmul(dx,dz)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(kmul(dy,dz)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1odx = INV(dx);
+ CCTK_REAL_VEC const p1odx2 = INV(SQR(dx));
+ CCTK_REAL_VEC const p1ody = INV(dy);
+ CCTK_REAL_VEC const p1ody2 = INV(SQR(dy));
+ CCTK_REAL_VEC const p1odz = INV(dz);
+ CCTK_REAL_VEC const p1odz2 = INV(SQR(dz));
+ CCTK_REAL_VEC const pm1o120dx = kmul(INV(dx),ToReal(-0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o120dy = kmul(INV(dy),ToReal(-0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o120dz = kmul(INV(dz),ToReal(-0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dx2 = kmul(INV(SQR(dx)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dy2 = kmul(INV(SQR(dy)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dz2 = kmul(INV(SQR(dz)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o2dx = kmul(INV(dx),ToReal(-0.5));
+ CCTK_REAL_VEC const pm1o2dy = kmul(INV(dy),ToReal(-0.5));
+ CCTK_REAL_VEC const pm1o2dz = kmul(INV(dz),ToReal(-0.5));
+ CCTK_REAL_VEC const pm1o4dx = kmul(INV(dx),ToReal(-0.25));
+ CCTK_REAL_VEC const pm1o4dy = kmul(INV(dy),ToReal(-0.25));
+ CCTK_REAL_VEC const pm1o4dz = kmul(INV(dz),ToReal(-0.25));
+ CCTK_REAL_VEC const pm1o60dx = kmul(INV(dx),ToReal(-0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const pm1o60dy = kmul(INV(dy),ToReal(-0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const pm1o60dz = kmul(INV(dz),ToReal(-0.0166666666666666666666666666667));
+
+ /* 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;
+
+ /* Assign local copies of arrays functions */
+
+
+
+ /* Calculate temporaries and arrays functions */
+
+ /* Copy local copies back to grid functions */
+
+ /* Loop over the grid points */
+ #pragma omp parallel
+ LC_LOOP3VEC(ML_CCZ4_RHSStaticBoundary,
+ i,j,k, imin[0],imin[1],imin[2], imax[0],imax[1],imax[2],
+ cctk_lsh[0],cctk_lsh[1],cctk_lsh[2],
+ CCTK_REAL_VEC_SIZE)
+ {
+ ptrdiff_t const index = di*i + dj*j + dk*k;
+
+ /* Assign local copies of grid functions */
+
+
+
+
+ /* Include user supplied include files */
+
+ /* Precompute derivatives */
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
+ /* Calculate temporaries and grid functions */
+ CCTK_REAL_VEC phirhsL = ToReal(0);
+
+ CCTK_REAL_VEC gt11rhsL = ToReal(0);
+
+ CCTK_REAL_VEC gt12rhsL = ToReal(0);
+
+ CCTK_REAL_VEC gt13rhsL = ToReal(0);
+
+ CCTK_REAL_VEC gt22rhsL = ToReal(0);
+
+ CCTK_REAL_VEC gt23rhsL = ToReal(0);
+
+ CCTK_REAL_VEC gt33rhsL = ToReal(0);
+
+ CCTK_REAL_VEC trKrhsL = ToReal(0);
+
+ CCTK_REAL_VEC At11rhsL = ToReal(0);
+
+ CCTK_REAL_VEC At12rhsL = ToReal(0);
+
+ CCTK_REAL_VEC At13rhsL = ToReal(0);
+
+ CCTK_REAL_VEC At22rhsL = ToReal(0);
+
+ CCTK_REAL_VEC At23rhsL = ToReal(0);
+
+ CCTK_REAL_VEC At33rhsL = ToReal(0);
+
+ CCTK_REAL_VEC Xt1rhsL = ToReal(0);
+
+ CCTK_REAL_VEC Xt2rhsL = ToReal(0);
+
+ CCTK_REAL_VEC Xt3rhsL = ToReal(0);
+
+ CCTK_REAL_VEC alpharhsL = ToReal(0);
+
+ CCTK_REAL_VEC ArhsL = ToReal(0);
+
+ CCTK_REAL_VEC beta1rhsL = ToReal(0);
+
+ CCTK_REAL_VEC beta2rhsL = ToReal(0);
+
+ CCTK_REAL_VEC beta3rhsL = ToReal(0);
+
+ CCTK_REAL_VEC B1rhsL = ToReal(0);
+
+ CCTK_REAL_VEC B2rhsL = ToReal(0);
+
+ CCTK_REAL_VEC B3rhsL = ToReal(0);
+
+ CCTK_REAL_VEC ThetarhsL = ToReal(0);
+
+ /* Copy local copies back to grid functions */
+ vec_store_partial_prepare(i,lc_imin,lc_imax);
+ vec_store_nta_partial(alpharhs[index],alpharhsL);
+ vec_store_nta_partial(Arhs[index],ArhsL);
+ vec_store_nta_partial(At11rhs[index],At11rhsL);
+ vec_store_nta_partial(At12rhs[index],At12rhsL);
+ vec_store_nta_partial(At13rhs[index],At13rhsL);
+ vec_store_nta_partial(At22rhs[index],At22rhsL);
+ vec_store_nta_partial(At23rhs[index],At23rhsL);
+ vec_store_nta_partial(At33rhs[index],At33rhsL);
+ vec_store_nta_partial(B1rhs[index],B1rhsL);
+ vec_store_nta_partial(B2rhs[index],B2rhsL);
+ vec_store_nta_partial(B3rhs[index],B3rhsL);
+ vec_store_nta_partial(beta1rhs[index],beta1rhsL);
+ vec_store_nta_partial(beta2rhs[index],beta2rhsL);
+ vec_store_nta_partial(beta3rhs[index],beta3rhsL);
+ vec_store_nta_partial(gt11rhs[index],gt11rhsL);
+ vec_store_nta_partial(gt12rhs[index],gt12rhsL);
+ vec_store_nta_partial(gt13rhs[index],gt13rhsL);
+ vec_store_nta_partial(gt22rhs[index],gt22rhsL);
+ vec_store_nta_partial(gt23rhs[index],gt23rhsL);
+ vec_store_nta_partial(gt33rhs[index],gt33rhsL);
+ vec_store_nta_partial(phirhs[index],phirhsL);
+ vec_store_nta_partial(Thetarhs[index],ThetarhsL);
+ vec_store_nta_partial(trKrhs[index],trKrhsL);
+ vec_store_nta_partial(Xt1rhs[index],Xt1rhsL);
+ vec_store_nta_partial(Xt2rhs[index],Xt2rhsL);
+ vec_store_nta_partial(Xt3rhs[index],Xt3rhsL);
+ }
+ LC_ENDLOOP3VEC(ML_CCZ4_RHSStaticBoundary);
+}
+
+extern "C" void ML_CCZ4_RHSStaticBoundary(CCTK_ARGUMENTS)
+{
+ DECLARE_CCTK_ARGUMENTS;
+ DECLARE_CCTK_PARAMETERS;
+
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_CCZ4_RHSStaticBoundary_Body");
+ }
+
+ if (cctk_iteration % ML_CCZ4_RHSStaticBoundary_calc_every != ML_CCZ4_RHSStaticBoundary_calc_offset)
+ {
+ return;
+ }
+
+ const char *const groups[] = {
+ "ML_CCZ4::ML_curvrhs",
+ "ML_CCZ4::ML_dtlapserhs",
+ "ML_CCZ4::ML_dtshiftrhs",
+ "ML_CCZ4::ML_Gammarhs",
+ "ML_CCZ4::ML_lapserhs",
+ "ML_CCZ4::ML_log_confacrhs",
+ "ML_CCZ4::ML_metricrhs",
+ "ML_CCZ4::ML_shiftrhs",
+ "ML_CCZ4::ML_Thetarhs",
+ "ML_CCZ4::ML_trace_curvrhs"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_CCZ4_RHSStaticBoundary", 10, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
+ GenericFD_LoopOverBoundary(cctkGH, ML_CCZ4_RHSStaticBoundary_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_CCZ4_RHSStaticBoundary_Body");
+ }
+}
diff --git a/ML_CCZ4/src/ML_CCZ4_boundary.cc b/ML_CCZ4/src/ML_CCZ4_boundary.cc
new file mode 100644
index 0000000..e5aeddd
--- /dev/null
+++ b/ML_CCZ4/src/ML_CCZ4_boundary.cc
@@ -0,0 +1,398 @@
+/* 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 "cctk_Loop.h"
+#include "loopcontrol.h"
+#include "vectors.h"
+
+/* Define macros used in calculations */
+#define INITVALUE (42)
+#define QAD(x) (SQR(SQR(x)))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
+
+extern "C" void ML_CCZ4_boundary_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_CCZ4::ML_curv","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_curv.");
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_CCZ4::ML_dtlapse","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_dtlapse.");
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_CCZ4::ML_dtshift","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_dtshift.");
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_CCZ4::ML_Gamma","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_Gamma.");
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_CCZ4::ML_lapse","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_lapse.");
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_CCZ4::ML_log_confac","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_log_confac.");
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_CCZ4::ML_metric","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_metric.");
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_CCZ4::ML_shift","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_shift.");
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_CCZ4::ML_Theta","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_Theta.");
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_CCZ4::ML_trace_curv","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_trace_curv.");
+ return;
+}
+
+static void ML_CCZ4_boundary_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const imin[3], int const imax[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+{
+ DECLARE_CCTK_ARGUMENTS;
+ DECLARE_CCTK_PARAMETERS;
+
+
+ /* 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_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const t = ToReal(cctk_time);
+ CCTK_REAL_VEC const dxi = INV(dx);
+ CCTK_REAL_VEC const dyi = INV(dy);
+ CCTK_REAL_VEC const dzi = INV(dz);
+ CCTK_REAL_VEC const khalf = ToReal(0.5);
+ CCTK_REAL_VEC const kthird = ToReal(1.0/3.0);
+ CCTK_REAL_VEC const ktwothird = ToReal(2.0/3.0);
+ CCTK_REAL_VEC const kfourthird = ToReal(4.0/3.0);
+ CCTK_REAL_VEC const keightthird = ToReal(8.0/3.0);
+ CCTK_REAL_VEC const hdxi = kmul(ToReal(0.5), dxi);
+ CCTK_REAL_VEC const hdyi = kmul(ToReal(0.5), dyi);
+ CCTK_REAL_VEC const hdzi = kmul(ToReal(0.5), dzi);
+
+ /* Initialize predefined quantities */
+ CCTK_REAL_VEC const p1o1024dx = kmul(INV(dx),ToReal(0.0009765625));
+ CCTK_REAL_VEC const p1o1024dy = kmul(INV(dy),ToReal(0.0009765625));
+ CCTK_REAL_VEC const p1o1024dz = kmul(INV(dz),ToReal(0.0009765625));
+ CCTK_REAL_VEC const p1o120dx = kmul(INV(dx),ToReal(0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o120dy = kmul(INV(dy),ToReal(0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o120dz = kmul(INV(dz),ToReal(0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dx = kmul(INV(dx),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dy = kmul(INV(dy),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dz = kmul(INV(dz),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o144dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o144dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o144dydz = kmul(INV(kmul(dy,dz)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o1680dx = kmul(INV(dx),ToReal(0.000595238095238095238095238095238));
+ CCTK_REAL_VEC const p1o1680dy = kmul(INV(dy),ToReal(0.000595238095238095238095238095238));
+ CCTK_REAL_VEC const p1o1680dz = kmul(INV(dz),ToReal(0.000595238095238095238095238095238));
+ CCTK_REAL_VEC const p1o16dx = kmul(INV(dx),ToReal(0.0625));
+ CCTK_REAL_VEC const p1o16dy = kmul(INV(dy),ToReal(0.0625));
+ CCTK_REAL_VEC const p1o16dz = kmul(INV(dz),ToReal(0.0625));
+ CCTK_REAL_VEC const p1o180dx2 = kmul(INV(SQR(dx)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o180dy2 = kmul(INV(SQR(dy)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o180dz2 = kmul(INV(SQR(dz)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o24dx = kmul(INV(dx),ToReal(0.0416666666666666666666666666667));
+ CCTK_REAL_VEC const p1o24dy = kmul(INV(dy),ToReal(0.0416666666666666666666666666667));
+ CCTK_REAL_VEC const p1o24dz = kmul(INV(dz),ToReal(0.0416666666666666666666666666667));
+ CCTK_REAL_VEC const p1o256dx = kmul(INV(dx),ToReal(0.00390625));
+ CCTK_REAL_VEC const p1o256dy = kmul(INV(dy),ToReal(0.00390625));
+ CCTK_REAL_VEC const p1o256dz = kmul(INV(dz),ToReal(0.00390625));
+ CCTK_REAL_VEC const p1o2dx = kmul(INV(dx),ToReal(0.5));
+ CCTK_REAL_VEC const p1o2dy = kmul(INV(dy),ToReal(0.5));
+ CCTK_REAL_VEC const p1o2dz = kmul(INV(dz),ToReal(0.5));
+ CCTK_REAL_VEC const p1o3600dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o3600dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o3600dydz = kmul(INV(kmul(dy,dz)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o4dx = kmul(INV(dx),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(kmul(dy,dz)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dz = kmul(INV(dz),ToReal(0.25));
+ CCTK_REAL_VEC const p1o5040dx2 = kmul(INV(SQR(dx)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o5040dy2 = kmul(INV(SQR(dy)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o5040dz2 = kmul(INV(SQR(dz)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o560dx = kmul(INV(dx),ToReal(0.00178571428571428571428571428571));
+ CCTK_REAL_VEC const p1o560dy = kmul(INV(dy),ToReal(0.00178571428571428571428571428571));
+ CCTK_REAL_VEC const p1o560dz = kmul(INV(dz),ToReal(0.00178571428571428571428571428571));
+ CCTK_REAL_VEC const p1o60dx = kmul(INV(dx),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o60dy = kmul(INV(dy),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o60dz = kmul(INV(dz),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o64dx = kmul(INV(dx),ToReal(0.015625));
+ CCTK_REAL_VEC const p1o64dy = kmul(INV(dy),ToReal(0.015625));
+ CCTK_REAL_VEC const p1o64dz = kmul(INV(dz),ToReal(0.015625));
+ CCTK_REAL_VEC const p1o705600dxdy = kmul(INV(kmul(dx,dy)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(kmul(dx,dz)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(kmul(dy,dz)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1odx = INV(dx);
+ CCTK_REAL_VEC const p1odx2 = INV(SQR(dx));
+ CCTK_REAL_VEC const p1ody = INV(dy);
+ CCTK_REAL_VEC const p1ody2 = INV(SQR(dy));
+ CCTK_REAL_VEC const p1odz = INV(dz);
+ CCTK_REAL_VEC const p1odz2 = INV(SQR(dz));
+ CCTK_REAL_VEC const pm1o120dx = kmul(INV(dx),ToReal(-0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o120dy = kmul(INV(dy),ToReal(-0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o120dz = kmul(INV(dz),ToReal(-0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dx2 = kmul(INV(SQR(dx)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dy2 = kmul(INV(SQR(dy)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dz2 = kmul(INV(SQR(dz)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o2dx = kmul(INV(dx),ToReal(-0.5));
+ CCTK_REAL_VEC const pm1o2dy = kmul(INV(dy),ToReal(-0.5));
+ CCTK_REAL_VEC const pm1o2dz = kmul(INV(dz),ToReal(-0.5));
+ CCTK_REAL_VEC const pm1o4dx = kmul(INV(dx),ToReal(-0.25));
+ CCTK_REAL_VEC const pm1o4dy = kmul(INV(dy),ToReal(-0.25));
+ CCTK_REAL_VEC const pm1o4dz = kmul(INV(dz),ToReal(-0.25));
+ CCTK_REAL_VEC const pm1o60dx = kmul(INV(dx),ToReal(-0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const pm1o60dy = kmul(INV(dy),ToReal(-0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const pm1o60dz = kmul(INV(dz),ToReal(-0.0166666666666666666666666666667));
+
+ /* 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;
+
+ /* Assign local copies of arrays functions */
+
+
+
+ /* Calculate temporaries and arrays functions */
+
+ /* Copy local copies back to grid functions */
+
+ /* Loop over the grid points */
+ #pragma omp parallel
+ LC_LOOP3VEC(ML_CCZ4_boundary,
+ i,j,k, imin[0],imin[1],imin[2], imax[0],imax[1],imax[2],
+ cctk_lsh[0],cctk_lsh[1],cctk_lsh[2],
+ CCTK_REAL_VEC_SIZE)
+ {
+ ptrdiff_t const index = di*i + dj*j + dk*k;
+
+ /* Assign local copies of grid functions */
+
+
+
+
+ /* Include user supplied include files */
+
+ /* Precompute derivatives */
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
+ /* Calculate temporaries and grid functions */
+ CCTK_REAL_VEC phiL = IfThen(conformalMethod == 1,ToReal(1),ToReal(0));
+
+ CCTK_REAL_VEC gt11L = ToReal(1);
+
+ CCTK_REAL_VEC gt12L = ToReal(0);
+
+ CCTK_REAL_VEC gt13L = ToReal(0);
+
+ CCTK_REAL_VEC gt22L = ToReal(1);
+
+ CCTK_REAL_VEC gt23L = ToReal(0);
+
+ CCTK_REAL_VEC gt33L = ToReal(1);
+
+ CCTK_REAL_VEC trKL = ToReal(0);
+
+ CCTK_REAL_VEC At11L = ToReal(0);
+
+ CCTK_REAL_VEC At12L = ToReal(0);
+
+ CCTK_REAL_VEC At13L = ToReal(0);
+
+ CCTK_REAL_VEC At22L = ToReal(0);
+
+ CCTK_REAL_VEC At23L = ToReal(0);
+
+ CCTK_REAL_VEC At33L = ToReal(0);
+
+ CCTK_REAL_VEC Xt1L = ToReal(0);
+
+ CCTK_REAL_VEC Xt2L = ToReal(0);
+
+ CCTK_REAL_VEC Xt3L = ToReal(0);
+
+ CCTK_REAL_VEC alphaL = ToReal(1);
+
+ CCTK_REAL_VEC AL = ToReal(0);
+
+ CCTK_REAL_VEC beta1L = ToReal(0);
+
+ CCTK_REAL_VEC beta2L = ToReal(0);
+
+ CCTK_REAL_VEC beta3L = ToReal(0);
+
+ CCTK_REAL_VEC B1L = ToReal(0);
+
+ CCTK_REAL_VEC B2L = ToReal(0);
+
+ CCTK_REAL_VEC B3L = ToReal(0);
+
+ CCTK_REAL_VEC ThetaL = ToReal(0);
+
+ /* Copy local copies back to grid functions */
+ vec_store_partial_prepare(i,lc_imin,lc_imax);
+ vec_store_nta_partial(A[index],AL);
+ vec_store_nta_partial(alpha[index],alphaL);
+ vec_store_nta_partial(At11[index],At11L);
+ vec_store_nta_partial(At12[index],At12L);
+ vec_store_nta_partial(At13[index],At13L);
+ vec_store_nta_partial(At22[index],At22L);
+ vec_store_nta_partial(At23[index],At23L);
+ vec_store_nta_partial(At33[index],At33L);
+ vec_store_nta_partial(B1[index],B1L);
+ vec_store_nta_partial(B2[index],B2L);
+ vec_store_nta_partial(B3[index],B3L);
+ vec_store_nta_partial(beta1[index],beta1L);
+ vec_store_nta_partial(beta2[index],beta2L);
+ vec_store_nta_partial(beta3[index],beta3L);
+ vec_store_nta_partial(gt11[index],gt11L);
+ vec_store_nta_partial(gt12[index],gt12L);
+ vec_store_nta_partial(gt13[index],gt13L);
+ vec_store_nta_partial(gt22[index],gt22L);
+ vec_store_nta_partial(gt23[index],gt23L);
+ vec_store_nta_partial(gt33[index],gt33L);
+ vec_store_nta_partial(phi[index],phiL);
+ vec_store_nta_partial(Theta[index],ThetaL);
+ vec_store_nta_partial(trK[index],trKL);
+ vec_store_nta_partial(Xt1[index],Xt1L);
+ vec_store_nta_partial(Xt2[index],Xt2L);
+ vec_store_nta_partial(Xt3[index],Xt3L);
+ }
+ LC_ENDLOOP3VEC(ML_CCZ4_boundary);
+}
+
+extern "C" void ML_CCZ4_boundary(CCTK_ARGUMENTS)
+{
+ DECLARE_CCTK_ARGUMENTS;
+ DECLARE_CCTK_PARAMETERS;
+
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_CCZ4_boundary_Body");
+ }
+
+ if (cctk_iteration % ML_CCZ4_boundary_calc_every != ML_CCZ4_boundary_calc_offset)
+ {
+ return;
+ }
+
+ const char *const groups[] = {
+ "ML_CCZ4::ML_curv",
+ "ML_CCZ4::ML_dtlapse",
+ "ML_CCZ4::ML_dtshift",
+ "ML_CCZ4::ML_Gamma",
+ "ML_CCZ4::ML_lapse",
+ "ML_CCZ4::ML_log_confac",
+ "ML_CCZ4::ML_metric",
+ "ML_CCZ4::ML_shift",
+ "ML_CCZ4::ML_Theta",
+ "ML_CCZ4::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_CCZ4_boundary", 10, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
+ GenericFD_LoopOverBoundaryWithGhosts(cctkGH, ML_CCZ4_boundary_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_CCZ4_boundary_Body");
+ }
+}
diff --git a/ML_CCZ4/src/ML_CCZ4_constraints1.cc b/ML_CCZ4/src/ML_CCZ4_constraints1.cc
new file mode 100644
index 0000000..0877287
--- /dev/null
+++ b/ML_CCZ4/src/ML_CCZ4_constraints1.cc
@@ -0,0 +1,1662 @@
+/* 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 "cctk_Loop.h"
+#include "loopcontrol.h"
+#include "vectors.h"
+
+/* Define macros used in calculations */
+#define INITVALUE (42)
+#define QAD(x) (SQR(SQR(x)))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
+
+extern "C" void ML_CCZ4_constraints1_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_CCZ4::ML_Ham","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_Ham.");
+ return;
+}
+
+static void ML_CCZ4_constraints1_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const imin[3], int const imax[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+{
+ DECLARE_CCTK_ARGUMENTS;
+ DECLARE_CCTK_PARAMETERS;
+
+
+ /* 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_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const t = ToReal(cctk_time);
+ CCTK_REAL_VEC const dxi = INV(dx);
+ CCTK_REAL_VEC const dyi = INV(dy);
+ CCTK_REAL_VEC const dzi = INV(dz);
+ CCTK_REAL_VEC const khalf = ToReal(0.5);
+ CCTK_REAL_VEC const kthird = ToReal(1.0/3.0);
+ CCTK_REAL_VEC const ktwothird = ToReal(2.0/3.0);
+ CCTK_REAL_VEC const kfourthird = ToReal(4.0/3.0);
+ CCTK_REAL_VEC const keightthird = ToReal(8.0/3.0);
+ CCTK_REAL_VEC const hdxi = kmul(ToReal(0.5), dxi);
+ CCTK_REAL_VEC const hdyi = kmul(ToReal(0.5), dyi);
+ CCTK_REAL_VEC const hdzi = kmul(ToReal(0.5), dzi);
+
+ /* Initialize predefined quantities */
+ CCTK_REAL_VEC const p1o1024dx = kmul(INV(dx),ToReal(0.0009765625));
+ CCTK_REAL_VEC const p1o1024dy = kmul(INV(dy),ToReal(0.0009765625));
+ CCTK_REAL_VEC const p1o1024dz = kmul(INV(dz),ToReal(0.0009765625));
+ CCTK_REAL_VEC const p1o120dx = kmul(INV(dx),ToReal(0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o120dy = kmul(INV(dy),ToReal(0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o120dz = kmul(INV(dz),ToReal(0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dx = kmul(INV(dx),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dy = kmul(INV(dy),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dz = kmul(INV(dz),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o144dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o144dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o144dydz = kmul(INV(kmul(dy,dz)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o1680dx = kmul(INV(dx),ToReal(0.000595238095238095238095238095238));
+ CCTK_REAL_VEC const p1o1680dy = kmul(INV(dy),ToReal(0.000595238095238095238095238095238));
+ CCTK_REAL_VEC const p1o1680dz = kmul(INV(dz),ToReal(0.000595238095238095238095238095238));
+ CCTK_REAL_VEC const p1o16dx = kmul(INV(dx),ToReal(0.0625));
+ CCTK_REAL_VEC const p1o16dy = kmul(INV(dy),ToReal(0.0625));
+ CCTK_REAL_VEC const p1o16dz = kmul(INV(dz),ToReal(0.0625));
+ CCTK_REAL_VEC const p1o180dx2 = kmul(INV(SQR(dx)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o180dy2 = kmul(INV(SQR(dy)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o180dz2 = kmul(INV(SQR(dz)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o24dx = kmul(INV(dx),ToReal(0.0416666666666666666666666666667));
+ CCTK_REAL_VEC const p1o24dy = kmul(INV(dy),ToReal(0.0416666666666666666666666666667));
+ CCTK_REAL_VEC const p1o24dz = kmul(INV(dz),ToReal(0.0416666666666666666666666666667));
+ CCTK_REAL_VEC const p1o256dx = kmul(INV(dx),ToReal(0.00390625));
+ CCTK_REAL_VEC const p1o256dy = kmul(INV(dy),ToReal(0.00390625));
+ CCTK_REAL_VEC const p1o256dz = kmul(INV(dz),ToReal(0.00390625));
+ CCTK_REAL_VEC const p1o2dx = kmul(INV(dx),ToReal(0.5));
+ CCTK_REAL_VEC const p1o2dy = kmul(INV(dy),ToReal(0.5));
+ CCTK_REAL_VEC const p1o2dz = kmul(INV(dz),ToReal(0.5));
+ CCTK_REAL_VEC const p1o3600dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o3600dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o3600dydz = kmul(INV(kmul(dy,dz)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o4dx = kmul(INV(dx),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(kmul(dy,dz)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dz = kmul(INV(dz),ToReal(0.25));
+ CCTK_REAL_VEC const p1o5040dx2 = kmul(INV(SQR(dx)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o5040dy2 = kmul(INV(SQR(dy)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o5040dz2 = kmul(INV(SQR(dz)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o560dx = kmul(INV(dx),ToReal(0.00178571428571428571428571428571));
+ CCTK_REAL_VEC const p1o560dy = kmul(INV(dy),ToReal(0.00178571428571428571428571428571));
+ CCTK_REAL_VEC const p1o560dz = kmul(INV(dz),ToReal(0.00178571428571428571428571428571));
+ CCTK_REAL_VEC const p1o60dx = kmul(INV(dx),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o60dy = kmul(INV(dy),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o60dz = kmul(INV(dz),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o64dx = kmul(INV(dx),ToReal(0.015625));
+ CCTK_REAL_VEC const p1o64dy = kmul(INV(dy),ToReal(0.015625));
+ CCTK_REAL_VEC const p1o64dz = kmul(INV(dz),ToReal(0.015625));
+ CCTK_REAL_VEC const p1o705600dxdy = kmul(INV(kmul(dx,dy)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(kmul(dx,dz)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(kmul(dy,dz)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1odx = INV(dx);
+ CCTK_REAL_VEC const p1odx2 = INV(SQR(dx));
+ CCTK_REAL_VEC const p1ody = INV(dy);
+ CCTK_REAL_VEC const p1ody2 = INV(SQR(dy));
+ CCTK_REAL_VEC const p1odz = INV(dz);
+ CCTK_REAL_VEC const p1odz2 = INV(SQR(dz));
+ CCTK_REAL_VEC const pm1o120dx = kmul(INV(dx),ToReal(-0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o120dy = kmul(INV(dy),ToReal(-0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o120dz = kmul(INV(dz),ToReal(-0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dx2 = kmul(INV(SQR(dx)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dy2 = kmul(INV(SQR(dy)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dz2 = kmul(INV(SQR(dz)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o2dx = kmul(INV(dx),ToReal(-0.5));
+ CCTK_REAL_VEC const pm1o2dy = kmul(INV(dy),ToReal(-0.5));
+ CCTK_REAL_VEC const pm1o2dz = kmul(INV(dz),ToReal(-0.5));
+ CCTK_REAL_VEC const pm1o4dx = kmul(INV(dx),ToReal(-0.25));
+ CCTK_REAL_VEC const pm1o4dy = kmul(INV(dy),ToReal(-0.25));
+ CCTK_REAL_VEC const pm1o4dz = kmul(INV(dz),ToReal(-0.25));
+ CCTK_REAL_VEC const pm1o60dx = kmul(INV(dx),ToReal(-0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const pm1o60dy = kmul(INV(dy),ToReal(-0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const pm1o60dz = kmul(INV(dz),ToReal(-0.0166666666666666666666666666667));
+
+ /* 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;
+
+ /* Assign local copies of arrays functions */
+
+
+
+ /* Calculate temporaries and arrays functions */
+
+ /* Copy local copies back to grid functions */
+
+ /* Loop over the grid points */
+ #pragma omp parallel
+ LC_LOOP3VEC(ML_CCZ4_constraints1,
+ i,j,k, imin[0],imin[1],imin[2], imax[0],imax[1],imax[2],
+ cctk_lsh[0],cctk_lsh[1],cctk_lsh[2],
+ CCTK_REAL_VEC_SIZE)
+ {
+ ptrdiff_t const index = di*i + dj*j + dk*k;
+
+ /* Assign local copies of grid functions */
+
+ CCTK_REAL_VEC alphaL = vec_load(alpha[index]);
+ CCTK_REAL_VEC At11L = vec_load(At11[index]);
+ CCTK_REAL_VEC At12L = vec_load(At12[index]);
+ CCTK_REAL_VEC At13L = vec_load(At13[index]);
+ CCTK_REAL_VEC At22L = vec_load(At22[index]);
+ CCTK_REAL_VEC At23L = vec_load(At23[index]);
+ CCTK_REAL_VEC At33L = vec_load(At33[index]);
+ CCTK_REAL_VEC beta1L = vec_load(beta1[index]);
+ CCTK_REAL_VEC beta2L = vec_load(beta2[index]);
+ CCTK_REAL_VEC beta3L = vec_load(beta3[index]);
+ CCTK_REAL_VEC gt11L = vec_load(gt11[index]);
+ CCTK_REAL_VEC gt12L = vec_load(gt12[index]);
+ CCTK_REAL_VEC gt13L = vec_load(gt13[index]);
+ CCTK_REAL_VEC gt22L = vec_load(gt22[index]);
+ CCTK_REAL_VEC gt23L = vec_load(gt23[index]);
+ CCTK_REAL_VEC gt33L = vec_load(gt33[index]);
+ CCTK_REAL_VEC phiL = vec_load(phi[index]);
+ CCTK_REAL_VEC trKL = vec_load(trK[index]);
+ CCTK_REAL_VEC Xt1L = vec_load(Xt1[index]);
+ CCTK_REAL_VEC Xt2L = vec_load(Xt2[index]);
+ CCTK_REAL_VEC Xt3L = vec_load(Xt3[index]);
+
+ CCTK_REAL_VEC eTttL, eTtxL, eTtyL, eTtzL, eTxxL, eTxyL, eTxzL, eTyyL, eTyzL, eTzzL;
+
+ if (*stress_energy_state)
+ {
+ eTttL = vec_load(eTtt[index]);
+ eTtxL = vec_load(eTtx[index]);
+ eTtyL = vec_load(eTty[index]);
+ eTtzL = vec_load(eTtz[index]);
+ eTxxL = vec_load(eTxx[index]);
+ eTxyL = vec_load(eTxy[index]);
+ eTxzL = vec_load(eTxz[index]);
+ eTyyL = vec_load(eTyy[index]);
+ eTyzL = vec_load(eTyz[index]);
+ eTzzL = vec_load(eTzz[index]);
+ }
+ else
+ {
+ eTttL = ToReal(0.0);
+ eTtxL = ToReal(0.0);
+ eTtyL = ToReal(0.0);
+ eTtzL = ToReal(0.0);
+ eTxxL = ToReal(0.0);
+ eTxyL = ToReal(0.0);
+ eTxzL = ToReal(0.0);
+ eTyyL = ToReal(0.0);
+ eTyzL = ToReal(0.0);
+ eTzzL = ToReal(0.0);
+ }
+
+ CCTK_REAL_VEC dJ111L, dJ112L, dJ113L, dJ122L, dJ123L, dJ133L, dJ211L, dJ212L, dJ213L, dJ222L, dJ223L, dJ233L, dJ311L, dJ312L, dJ313L, dJ322L, dJ323L, dJ333L, J11L, J12L, J13L, J21L, J22L, J23L, J31L, J32L, J33L;
+
+ if (use_jacobian)
+ {
+ dJ111L = vec_load(dJ111[index]);
+ dJ112L = vec_load(dJ112[index]);
+ dJ113L = vec_load(dJ113[index]);
+ dJ122L = vec_load(dJ122[index]);
+ dJ123L = vec_load(dJ123[index]);
+ dJ133L = vec_load(dJ133[index]);
+ dJ211L = vec_load(dJ211[index]);
+ dJ212L = vec_load(dJ212[index]);
+ dJ213L = vec_load(dJ213[index]);
+ dJ222L = vec_load(dJ222[index]);
+ dJ223L = vec_load(dJ223[index]);
+ dJ233L = vec_load(dJ233[index]);
+ dJ311L = vec_load(dJ311[index]);
+ dJ312L = vec_load(dJ312[index]);
+ dJ313L = vec_load(dJ313[index]);
+ dJ322L = vec_load(dJ322[index]);
+ dJ323L = vec_load(dJ323[index]);
+ dJ333L = vec_load(dJ333[index]);
+ J11L = vec_load(J11[index]);
+ J12L = vec_load(J12[index]);
+ J13L = vec_load(J13[index]);
+ J21L = vec_load(J21[index]);
+ J22L = vec_load(J22[index]);
+ J23L = vec_load(J23[index]);
+ J31L = vec_load(J31[index]);
+ J32L = vec_load(J32[index]);
+ J33L = vec_load(J33[index]);
+ }
+
+ /* Include user supplied include files */
+
+ /* Precompute derivatives */
+ CCTK_REAL_VEC PDstandardNth1gt11;
+ CCTK_REAL_VEC PDstandardNth2gt11;
+ CCTK_REAL_VEC PDstandardNth3gt11;
+ CCTK_REAL_VEC PDstandardNth11gt11;
+ CCTK_REAL_VEC PDstandardNth22gt11;
+ CCTK_REAL_VEC PDstandardNth33gt11;
+ CCTK_REAL_VEC PDstandardNth12gt11;
+ CCTK_REAL_VEC PDstandardNth13gt11;
+ CCTK_REAL_VEC PDstandardNth23gt11;
+ CCTK_REAL_VEC PDstandardNth1gt12;
+ CCTK_REAL_VEC PDstandardNth2gt12;
+ CCTK_REAL_VEC PDstandardNth3gt12;
+ CCTK_REAL_VEC PDstandardNth11gt12;
+ CCTK_REAL_VEC PDstandardNth22gt12;
+ CCTK_REAL_VEC PDstandardNth33gt12;
+ CCTK_REAL_VEC PDstandardNth12gt12;
+ CCTK_REAL_VEC PDstandardNth13gt12;
+ CCTK_REAL_VEC PDstandardNth23gt12;
+ CCTK_REAL_VEC PDstandardNth1gt13;
+ CCTK_REAL_VEC PDstandardNth2gt13;
+ CCTK_REAL_VEC PDstandardNth3gt13;
+ CCTK_REAL_VEC PDstandardNth11gt13;
+ CCTK_REAL_VEC PDstandardNth22gt13;
+ CCTK_REAL_VEC PDstandardNth33gt13;
+ CCTK_REAL_VEC PDstandardNth12gt13;
+ CCTK_REAL_VEC PDstandardNth13gt13;
+ CCTK_REAL_VEC PDstandardNth23gt13;
+ CCTK_REAL_VEC PDstandardNth1gt22;
+ CCTK_REAL_VEC PDstandardNth2gt22;
+ CCTK_REAL_VEC PDstandardNth3gt22;
+ CCTK_REAL_VEC PDstandardNth11gt22;
+ CCTK_REAL_VEC PDstandardNth22gt22;
+ CCTK_REAL_VEC PDstandardNth33gt22;
+ CCTK_REAL_VEC PDstandardNth12gt22;
+ CCTK_REAL_VEC PDstandardNth13gt22;
+ CCTK_REAL_VEC PDstandardNth23gt22;
+ CCTK_REAL_VEC PDstandardNth1gt23;
+ CCTK_REAL_VEC PDstandardNth2gt23;
+ CCTK_REAL_VEC PDstandardNth3gt23;
+ CCTK_REAL_VEC PDstandardNth11gt23;
+ CCTK_REAL_VEC PDstandardNth22gt23;
+ CCTK_REAL_VEC PDstandardNth33gt23;
+ CCTK_REAL_VEC PDstandardNth12gt23;
+ CCTK_REAL_VEC PDstandardNth13gt23;
+ CCTK_REAL_VEC PDstandardNth23gt23;
+ CCTK_REAL_VEC PDstandardNth1gt33;
+ CCTK_REAL_VEC PDstandardNth2gt33;
+ CCTK_REAL_VEC PDstandardNth3gt33;
+ CCTK_REAL_VEC PDstandardNth11gt33;
+ CCTK_REAL_VEC PDstandardNth22gt33;
+ CCTK_REAL_VEC PDstandardNth33gt33;
+ CCTK_REAL_VEC PDstandardNth12gt33;
+ CCTK_REAL_VEC PDstandardNth13gt33;
+ CCTK_REAL_VEC PDstandardNth23gt33;
+ CCTK_REAL_VEC PDstandardNth1phi;
+ CCTK_REAL_VEC PDstandardNth2phi;
+ CCTK_REAL_VEC PDstandardNth3phi;
+ CCTK_REAL_VEC PDstandardNth11phi;
+ CCTK_REAL_VEC PDstandardNth22phi;
+ CCTK_REAL_VEC PDstandardNth33phi;
+ CCTK_REAL_VEC PDstandardNth12phi;
+ CCTK_REAL_VEC PDstandardNth13phi;
+ CCTK_REAL_VEC PDstandardNth23phi;
+ CCTK_REAL_VEC PDstandardNth1Xt1;
+ CCTK_REAL_VEC PDstandardNth2Xt1;
+ CCTK_REAL_VEC PDstandardNth3Xt1;
+ CCTK_REAL_VEC PDstandardNth1Xt2;
+ CCTK_REAL_VEC PDstandardNth2Xt2;
+ CCTK_REAL_VEC PDstandardNth3Xt2;
+ CCTK_REAL_VEC PDstandardNth1Xt3;
+ CCTK_REAL_VEC PDstandardNth2Xt3;
+ CCTK_REAL_VEC PDstandardNth3Xt3;
+
+ switch(fdOrder)
+ {
+ case 2:
+ PDstandardNth1gt11 = PDstandardNthfdOrder21(&gt11[index]);
+ PDstandardNth2gt11 = PDstandardNthfdOrder22(&gt11[index]);
+ PDstandardNth3gt11 = PDstandardNthfdOrder23(&gt11[index]);
+ PDstandardNth11gt11 = PDstandardNthfdOrder211(&gt11[index]);
+ PDstandardNth22gt11 = PDstandardNthfdOrder222(&gt11[index]);
+ PDstandardNth33gt11 = PDstandardNthfdOrder233(&gt11[index]);
+ PDstandardNth12gt11 = PDstandardNthfdOrder212(&gt11[index]);
+ PDstandardNth13gt11 = PDstandardNthfdOrder213(&gt11[index]);
+ PDstandardNth23gt11 = PDstandardNthfdOrder223(&gt11[index]);
+ PDstandardNth1gt12 = PDstandardNthfdOrder21(&gt12[index]);
+ PDstandardNth2gt12 = PDstandardNthfdOrder22(&gt12[index]);
+ PDstandardNth3gt12 = PDstandardNthfdOrder23(&gt12[index]);
+ PDstandardNth11gt12 = PDstandardNthfdOrder211(&gt12[index]);
+ PDstandardNth22gt12 = PDstandardNthfdOrder222(&gt12[index]);
+ PDstandardNth33gt12 = PDstandardNthfdOrder233(&gt12[index]);
+ PDstandardNth12gt12 = PDstandardNthfdOrder212(&gt12[index]);
+ PDstandardNth13gt12 = PDstandardNthfdOrder213(&gt12[index]);
+ PDstandardNth23gt12 = PDstandardNthfdOrder223(&gt12[index]);
+ PDstandardNth1gt13 = PDstandardNthfdOrder21(&gt13[index]);
+ PDstandardNth2gt13 = PDstandardNthfdOrder22(&gt13[index]);
+ PDstandardNth3gt13 = PDstandardNthfdOrder23(&gt13[index]);
+ PDstandardNth11gt13 = PDstandardNthfdOrder211(&gt13[index]);
+ PDstandardNth22gt13 = PDstandardNthfdOrder222(&gt13[index]);
+ PDstandardNth33gt13 = PDstandardNthfdOrder233(&gt13[index]);
+ PDstandardNth12gt13 = PDstandardNthfdOrder212(&gt13[index]);
+ PDstandardNth13gt13 = PDstandardNthfdOrder213(&gt13[index]);
+ PDstandardNth23gt13 = PDstandardNthfdOrder223(&gt13[index]);
+ PDstandardNth1gt22 = PDstandardNthfdOrder21(&gt22[index]);
+ PDstandardNth2gt22 = PDstandardNthfdOrder22(&gt22[index]);
+ PDstandardNth3gt22 = PDstandardNthfdOrder23(&gt22[index]);
+ PDstandardNth11gt22 = PDstandardNthfdOrder211(&gt22[index]);
+ PDstandardNth22gt22 = PDstandardNthfdOrder222(&gt22[index]);
+ PDstandardNth33gt22 = PDstandardNthfdOrder233(&gt22[index]);
+ PDstandardNth12gt22 = PDstandardNthfdOrder212(&gt22[index]);
+ PDstandardNth13gt22 = PDstandardNthfdOrder213(&gt22[index]);
+ PDstandardNth23gt22 = PDstandardNthfdOrder223(&gt22[index]);
+ PDstandardNth1gt23 = PDstandardNthfdOrder21(&gt23[index]);
+ PDstandardNth2gt23 = PDstandardNthfdOrder22(&gt23[index]);
+ PDstandardNth3gt23 = PDstandardNthfdOrder23(&gt23[index]);
+ PDstandardNth11gt23 = PDstandardNthfdOrder211(&gt23[index]);
+ PDstandardNth22gt23 = PDstandardNthfdOrder222(&gt23[index]);
+ PDstandardNth33gt23 = PDstandardNthfdOrder233(&gt23[index]);
+ PDstandardNth12gt23 = PDstandardNthfdOrder212(&gt23[index]);
+ PDstandardNth13gt23 = PDstandardNthfdOrder213(&gt23[index]);
+ PDstandardNth23gt23 = PDstandardNthfdOrder223(&gt23[index]);
+ PDstandardNth1gt33 = PDstandardNthfdOrder21(&gt33[index]);
+ PDstandardNth2gt33 = PDstandardNthfdOrder22(&gt33[index]);
+ PDstandardNth3gt33 = PDstandardNthfdOrder23(&gt33[index]);
+ PDstandardNth11gt33 = PDstandardNthfdOrder211(&gt33[index]);
+ PDstandardNth22gt33 = PDstandardNthfdOrder222(&gt33[index]);
+ PDstandardNth33gt33 = PDstandardNthfdOrder233(&gt33[index]);
+ PDstandardNth12gt33 = PDstandardNthfdOrder212(&gt33[index]);
+ PDstandardNth13gt33 = PDstandardNthfdOrder213(&gt33[index]);
+ PDstandardNth23gt33 = PDstandardNthfdOrder223(&gt33[index]);
+ PDstandardNth1phi = PDstandardNthfdOrder21(&phi[index]);
+ PDstandardNth2phi = PDstandardNthfdOrder22(&phi[index]);
+ PDstandardNth3phi = PDstandardNthfdOrder23(&phi[index]);
+ PDstandardNth11phi = PDstandardNthfdOrder211(&phi[index]);
+ PDstandardNth22phi = PDstandardNthfdOrder222(&phi[index]);
+ PDstandardNth33phi = PDstandardNthfdOrder233(&phi[index]);
+ PDstandardNth12phi = PDstandardNthfdOrder212(&phi[index]);
+ PDstandardNth13phi = PDstandardNthfdOrder213(&phi[index]);
+ PDstandardNth23phi = PDstandardNthfdOrder223(&phi[index]);
+ PDstandardNth1Xt1 = PDstandardNthfdOrder21(&Xt1[index]);
+ PDstandardNth2Xt1 = PDstandardNthfdOrder22(&Xt1[index]);
+ PDstandardNth3Xt1 = PDstandardNthfdOrder23(&Xt1[index]);
+ PDstandardNth1Xt2 = PDstandardNthfdOrder21(&Xt2[index]);
+ PDstandardNth2Xt2 = PDstandardNthfdOrder22(&Xt2[index]);
+ PDstandardNth3Xt2 = PDstandardNthfdOrder23(&Xt2[index]);
+ PDstandardNth1Xt3 = PDstandardNthfdOrder21(&Xt3[index]);
+ PDstandardNth2Xt3 = PDstandardNthfdOrder22(&Xt3[index]);
+ PDstandardNth3Xt3 = PDstandardNthfdOrder23(&Xt3[index]);
+ break;
+
+ case 4:
+ PDstandardNth1gt11 = PDstandardNthfdOrder41(&gt11[index]);
+ PDstandardNth2gt11 = PDstandardNthfdOrder42(&gt11[index]);
+ PDstandardNth3gt11 = PDstandardNthfdOrder43(&gt11[index]);
+ PDstandardNth11gt11 = PDstandardNthfdOrder411(&gt11[index]);
+ PDstandardNth22gt11 = PDstandardNthfdOrder422(&gt11[index]);
+ PDstandardNth33gt11 = PDstandardNthfdOrder433(&gt11[index]);
+ PDstandardNth12gt11 = PDstandardNthfdOrder412(&gt11[index]);
+ PDstandardNth13gt11 = PDstandardNthfdOrder413(&gt11[index]);
+ PDstandardNth23gt11 = PDstandardNthfdOrder423(&gt11[index]);
+ PDstandardNth1gt12 = PDstandardNthfdOrder41(&gt12[index]);
+ PDstandardNth2gt12 = PDstandardNthfdOrder42(&gt12[index]);
+ PDstandardNth3gt12 = PDstandardNthfdOrder43(&gt12[index]);
+ PDstandardNth11gt12 = PDstandardNthfdOrder411(&gt12[index]);
+ PDstandardNth22gt12 = PDstandardNthfdOrder422(&gt12[index]);
+ PDstandardNth33gt12 = PDstandardNthfdOrder433(&gt12[index]);
+ PDstandardNth12gt12 = PDstandardNthfdOrder412(&gt12[index]);
+ PDstandardNth13gt12 = PDstandardNthfdOrder413(&gt12[index]);
+ PDstandardNth23gt12 = PDstandardNthfdOrder423(&gt12[index]);
+ PDstandardNth1gt13 = PDstandardNthfdOrder41(&gt13[index]);
+ PDstandardNth2gt13 = PDstandardNthfdOrder42(&gt13[index]);
+ PDstandardNth3gt13 = PDstandardNthfdOrder43(&gt13[index]);
+ PDstandardNth11gt13 = PDstandardNthfdOrder411(&gt13[index]);
+ PDstandardNth22gt13 = PDstandardNthfdOrder422(&gt13[index]);
+ PDstandardNth33gt13 = PDstandardNthfdOrder433(&gt13[index]);
+ PDstandardNth12gt13 = PDstandardNthfdOrder412(&gt13[index]);
+ PDstandardNth13gt13 = PDstandardNthfdOrder413(&gt13[index]);
+ PDstandardNth23gt13 = PDstandardNthfdOrder423(&gt13[index]);
+ PDstandardNth1gt22 = PDstandardNthfdOrder41(&gt22[index]);
+ PDstandardNth2gt22 = PDstandardNthfdOrder42(&gt22[index]);
+ PDstandardNth3gt22 = PDstandardNthfdOrder43(&gt22[index]);
+ PDstandardNth11gt22 = PDstandardNthfdOrder411(&gt22[index]);
+ PDstandardNth22gt22 = PDstandardNthfdOrder422(&gt22[index]);
+ PDstandardNth33gt22 = PDstandardNthfdOrder433(&gt22[index]);
+ PDstandardNth12gt22 = PDstandardNthfdOrder412(&gt22[index]);
+ PDstandardNth13gt22 = PDstandardNthfdOrder413(&gt22[index]);
+ PDstandardNth23gt22 = PDstandardNthfdOrder423(&gt22[index]);
+ PDstandardNth1gt23 = PDstandardNthfdOrder41(&gt23[index]);
+ PDstandardNth2gt23 = PDstandardNthfdOrder42(&gt23[index]);
+ PDstandardNth3gt23 = PDstandardNthfdOrder43(&gt23[index]);
+ PDstandardNth11gt23 = PDstandardNthfdOrder411(&gt23[index]);
+ PDstandardNth22gt23 = PDstandardNthfdOrder422(&gt23[index]);
+ PDstandardNth33gt23 = PDstandardNthfdOrder433(&gt23[index]);
+ PDstandardNth12gt23 = PDstandardNthfdOrder412(&gt23[index]);
+ PDstandardNth13gt23 = PDstandardNthfdOrder413(&gt23[index]);
+ PDstandardNth23gt23 = PDstandardNthfdOrder423(&gt23[index]);
+ PDstandardNth1gt33 = PDstandardNthfdOrder41(&gt33[index]);
+ PDstandardNth2gt33 = PDstandardNthfdOrder42(&gt33[index]);
+ PDstandardNth3gt33 = PDstandardNthfdOrder43(&gt33[index]);
+ PDstandardNth11gt33 = PDstandardNthfdOrder411(&gt33[index]);
+ PDstandardNth22gt33 = PDstandardNthfdOrder422(&gt33[index]);
+ PDstandardNth33gt33 = PDstandardNthfdOrder433(&gt33[index]);
+ PDstandardNth12gt33 = PDstandardNthfdOrder412(&gt33[index]);
+ PDstandardNth13gt33 = PDstandardNthfdOrder413(&gt33[index]);
+ PDstandardNth23gt33 = PDstandardNthfdOrder423(&gt33[index]);
+ PDstandardNth1phi = PDstandardNthfdOrder41(&phi[index]);
+ PDstandardNth2phi = PDstandardNthfdOrder42(&phi[index]);
+ PDstandardNth3phi = PDstandardNthfdOrder43(&phi[index]);
+ PDstandardNth11phi = PDstandardNthfdOrder411(&phi[index]);
+ PDstandardNth22phi = PDstandardNthfdOrder422(&phi[index]);
+ PDstandardNth33phi = PDstandardNthfdOrder433(&phi[index]);
+ PDstandardNth12phi = PDstandardNthfdOrder412(&phi[index]);
+ PDstandardNth13phi = PDstandardNthfdOrder413(&phi[index]);
+ PDstandardNth23phi = PDstandardNthfdOrder423(&phi[index]);
+ PDstandardNth1Xt1 = PDstandardNthfdOrder41(&Xt1[index]);
+ PDstandardNth2Xt1 = PDstandardNthfdOrder42(&Xt1[index]);
+ PDstandardNth3Xt1 = PDstandardNthfdOrder43(&Xt1[index]);
+ PDstandardNth1Xt2 = PDstandardNthfdOrder41(&Xt2[index]);
+ PDstandardNth2Xt2 = PDstandardNthfdOrder42(&Xt2[index]);
+ PDstandardNth3Xt2 = PDstandardNthfdOrder43(&Xt2[index]);
+ PDstandardNth1Xt3 = PDstandardNthfdOrder41(&Xt3[index]);
+ PDstandardNth2Xt3 = PDstandardNthfdOrder42(&Xt3[index]);
+ PDstandardNth3Xt3 = PDstandardNthfdOrder43(&Xt3[index]);
+ break;
+
+ case 6:
+ PDstandardNth1gt11 = PDstandardNthfdOrder61(&gt11[index]);
+ PDstandardNth2gt11 = PDstandardNthfdOrder62(&gt11[index]);
+ PDstandardNth3gt11 = PDstandardNthfdOrder63(&gt11[index]);
+ PDstandardNth11gt11 = PDstandardNthfdOrder611(&gt11[index]);
+ PDstandardNth22gt11 = PDstandardNthfdOrder622(&gt11[index]);
+ PDstandardNth33gt11 = PDstandardNthfdOrder633(&gt11[index]);
+ PDstandardNth12gt11 = PDstandardNthfdOrder612(&gt11[index]);
+ PDstandardNth13gt11 = PDstandardNthfdOrder613(&gt11[index]);
+ PDstandardNth23gt11 = PDstandardNthfdOrder623(&gt11[index]);
+ PDstandardNth1gt12 = PDstandardNthfdOrder61(&gt12[index]);
+ PDstandardNth2gt12 = PDstandardNthfdOrder62(&gt12[index]);
+ PDstandardNth3gt12 = PDstandardNthfdOrder63(&gt12[index]);
+ PDstandardNth11gt12 = PDstandardNthfdOrder611(&gt12[index]);
+ PDstandardNth22gt12 = PDstandardNthfdOrder622(&gt12[index]);
+ PDstandardNth33gt12 = PDstandardNthfdOrder633(&gt12[index]);
+ PDstandardNth12gt12 = PDstandardNthfdOrder612(&gt12[index]);
+ PDstandardNth13gt12 = PDstandardNthfdOrder613(&gt12[index]);
+ PDstandardNth23gt12 = PDstandardNthfdOrder623(&gt12[index]);
+ PDstandardNth1gt13 = PDstandardNthfdOrder61(&gt13[index]);
+ PDstandardNth2gt13 = PDstandardNthfdOrder62(&gt13[index]);
+ PDstandardNth3gt13 = PDstandardNthfdOrder63(&gt13[index]);
+ PDstandardNth11gt13 = PDstandardNthfdOrder611(&gt13[index]);
+ PDstandardNth22gt13 = PDstandardNthfdOrder622(&gt13[index]);
+ PDstandardNth33gt13 = PDstandardNthfdOrder633(&gt13[index]);
+ PDstandardNth12gt13 = PDstandardNthfdOrder612(&gt13[index]);
+ PDstandardNth13gt13 = PDstandardNthfdOrder613(&gt13[index]);
+ PDstandardNth23gt13 = PDstandardNthfdOrder623(&gt13[index]);
+ PDstandardNth1gt22 = PDstandardNthfdOrder61(&gt22[index]);
+ PDstandardNth2gt22 = PDstandardNthfdOrder62(&gt22[index]);
+ PDstandardNth3gt22 = PDstandardNthfdOrder63(&gt22[index]);
+ PDstandardNth11gt22 = PDstandardNthfdOrder611(&gt22[index]);
+ PDstandardNth22gt22 = PDstandardNthfdOrder622(&gt22[index]);
+ PDstandardNth33gt22 = PDstandardNthfdOrder633(&gt22[index]);
+ PDstandardNth12gt22 = PDstandardNthfdOrder612(&gt22[index]);
+ PDstandardNth13gt22 = PDstandardNthfdOrder613(&gt22[index]);
+ PDstandardNth23gt22 = PDstandardNthfdOrder623(&gt22[index]);
+ PDstandardNth1gt23 = PDstandardNthfdOrder61(&gt23[index]);
+ PDstandardNth2gt23 = PDstandardNthfdOrder62(&gt23[index]);
+ PDstandardNth3gt23 = PDstandardNthfdOrder63(&gt23[index]);
+ PDstandardNth11gt23 = PDstandardNthfdOrder611(&gt23[index]);
+ PDstandardNth22gt23 = PDstandardNthfdOrder622(&gt23[index]);
+ PDstandardNth33gt23 = PDstandardNthfdOrder633(&gt23[index]);
+ PDstandardNth12gt23 = PDstandardNthfdOrder612(&gt23[index]);
+ PDstandardNth13gt23 = PDstandardNthfdOrder613(&gt23[index]);
+ PDstandardNth23gt23 = PDstandardNthfdOrder623(&gt23[index]);
+ PDstandardNth1gt33 = PDstandardNthfdOrder61(&gt33[index]);
+ PDstandardNth2gt33 = PDstandardNthfdOrder62(&gt33[index]);
+ PDstandardNth3gt33 = PDstandardNthfdOrder63(&gt33[index]);
+ PDstandardNth11gt33 = PDstandardNthfdOrder611(&gt33[index]);
+ PDstandardNth22gt33 = PDstandardNthfdOrder622(&gt33[index]);
+ PDstandardNth33gt33 = PDstandardNthfdOrder633(&gt33[index]);
+ PDstandardNth12gt33 = PDstandardNthfdOrder612(&gt33[index]);
+ PDstandardNth13gt33 = PDstandardNthfdOrder613(&gt33[index]);
+ PDstandardNth23gt33 = PDstandardNthfdOrder623(&gt33[index]);
+ PDstandardNth1phi = PDstandardNthfdOrder61(&phi[index]);
+ PDstandardNth2phi = PDstandardNthfdOrder62(&phi[index]);
+ PDstandardNth3phi = PDstandardNthfdOrder63(&phi[index]);
+ PDstandardNth11phi = PDstandardNthfdOrder611(&phi[index]);
+ PDstandardNth22phi = PDstandardNthfdOrder622(&phi[index]);
+ PDstandardNth33phi = PDstandardNthfdOrder633(&phi[index]);
+ PDstandardNth12phi = PDstandardNthfdOrder612(&phi[index]);
+ PDstandardNth13phi = PDstandardNthfdOrder613(&phi[index]);
+ PDstandardNth23phi = PDstandardNthfdOrder623(&phi[index]);
+ PDstandardNth1Xt1 = PDstandardNthfdOrder61(&Xt1[index]);
+ PDstandardNth2Xt1 = PDstandardNthfdOrder62(&Xt1[index]);
+ PDstandardNth3Xt1 = PDstandardNthfdOrder63(&Xt1[index]);
+ PDstandardNth1Xt2 = PDstandardNthfdOrder61(&Xt2[index]);
+ PDstandardNth2Xt2 = PDstandardNthfdOrder62(&Xt2[index]);
+ PDstandardNth3Xt2 = PDstandardNthfdOrder63(&Xt2[index]);
+ PDstandardNth1Xt3 = PDstandardNthfdOrder61(&Xt3[index]);
+ PDstandardNth2Xt3 = PDstandardNthfdOrder62(&Xt3[index]);
+ PDstandardNth3Xt3 = PDstandardNthfdOrder63(&Xt3[index]);
+ break;
+
+ case 8:
+ PDstandardNth1gt11 = PDstandardNthfdOrder81(&gt11[index]);
+ PDstandardNth2gt11 = PDstandardNthfdOrder82(&gt11[index]);
+ PDstandardNth3gt11 = PDstandardNthfdOrder83(&gt11[index]);
+ PDstandardNth11gt11 = PDstandardNthfdOrder811(&gt11[index]);
+ PDstandardNth22gt11 = PDstandardNthfdOrder822(&gt11[index]);
+ PDstandardNth33gt11 = PDstandardNthfdOrder833(&gt11[index]);
+ PDstandardNth12gt11 = PDstandardNthfdOrder812(&gt11[index]);
+ PDstandardNth13gt11 = PDstandardNthfdOrder813(&gt11[index]);
+ PDstandardNth23gt11 = PDstandardNthfdOrder823(&gt11[index]);
+ PDstandardNth1gt12 = PDstandardNthfdOrder81(&gt12[index]);
+ PDstandardNth2gt12 = PDstandardNthfdOrder82(&gt12[index]);
+ PDstandardNth3gt12 = PDstandardNthfdOrder83(&gt12[index]);
+ PDstandardNth11gt12 = PDstandardNthfdOrder811(&gt12[index]);
+ PDstandardNth22gt12 = PDstandardNthfdOrder822(&gt12[index]);
+ PDstandardNth33gt12 = PDstandardNthfdOrder833(&gt12[index]);
+ PDstandardNth12gt12 = PDstandardNthfdOrder812(&gt12[index]);
+ PDstandardNth13gt12 = PDstandardNthfdOrder813(&gt12[index]);
+ PDstandardNth23gt12 = PDstandardNthfdOrder823(&gt12[index]);
+ PDstandardNth1gt13 = PDstandardNthfdOrder81(&gt13[index]);
+ PDstandardNth2gt13 = PDstandardNthfdOrder82(&gt13[index]);
+ PDstandardNth3gt13 = PDstandardNthfdOrder83(&gt13[index]);
+ PDstandardNth11gt13 = PDstandardNthfdOrder811(&gt13[index]);
+ PDstandardNth22gt13 = PDstandardNthfdOrder822(&gt13[index]);
+ PDstandardNth33gt13 = PDstandardNthfdOrder833(&gt13[index]);
+ PDstandardNth12gt13 = PDstandardNthfdOrder812(&gt13[index]);
+ PDstandardNth13gt13 = PDstandardNthfdOrder813(&gt13[index]);
+ PDstandardNth23gt13 = PDstandardNthfdOrder823(&gt13[index]);
+ PDstandardNth1gt22 = PDstandardNthfdOrder81(&gt22[index]);
+ PDstandardNth2gt22 = PDstandardNthfdOrder82(&gt22[index]);
+ PDstandardNth3gt22 = PDstandardNthfdOrder83(&gt22[index]);
+ PDstandardNth11gt22 = PDstandardNthfdOrder811(&gt22[index]);
+ PDstandardNth22gt22 = PDstandardNthfdOrder822(&gt22[index]);
+ PDstandardNth33gt22 = PDstandardNthfdOrder833(&gt22[index]);
+ PDstandardNth12gt22 = PDstandardNthfdOrder812(&gt22[index]);
+ PDstandardNth13gt22 = PDstandardNthfdOrder813(&gt22[index]);
+ PDstandardNth23gt22 = PDstandardNthfdOrder823(&gt22[index]);
+ PDstandardNth1gt23 = PDstandardNthfdOrder81(&gt23[index]);
+ PDstandardNth2gt23 = PDstandardNthfdOrder82(&gt23[index]);
+ PDstandardNth3gt23 = PDstandardNthfdOrder83(&gt23[index]);
+ PDstandardNth11gt23 = PDstandardNthfdOrder811(&gt23[index]);
+ PDstandardNth22gt23 = PDstandardNthfdOrder822(&gt23[index]);
+ PDstandardNth33gt23 = PDstandardNthfdOrder833(&gt23[index]);
+ PDstandardNth12gt23 = PDstandardNthfdOrder812(&gt23[index]);
+ PDstandardNth13gt23 = PDstandardNthfdOrder813(&gt23[index]);
+ PDstandardNth23gt23 = PDstandardNthfdOrder823(&gt23[index]);
+ PDstandardNth1gt33 = PDstandardNthfdOrder81(&gt33[index]);
+ PDstandardNth2gt33 = PDstandardNthfdOrder82(&gt33[index]);
+ PDstandardNth3gt33 = PDstandardNthfdOrder83(&gt33[index]);
+ PDstandardNth11gt33 = PDstandardNthfdOrder811(&gt33[index]);
+ PDstandardNth22gt33 = PDstandardNthfdOrder822(&gt33[index]);
+ PDstandardNth33gt33 = PDstandardNthfdOrder833(&gt33[index]);
+ PDstandardNth12gt33 = PDstandardNthfdOrder812(&gt33[index]);
+ PDstandardNth13gt33 = PDstandardNthfdOrder813(&gt33[index]);
+ PDstandardNth23gt33 = PDstandardNthfdOrder823(&gt33[index]);
+ PDstandardNth1phi = PDstandardNthfdOrder81(&phi[index]);
+ PDstandardNth2phi = PDstandardNthfdOrder82(&phi[index]);
+ PDstandardNth3phi = PDstandardNthfdOrder83(&phi[index]);
+ PDstandardNth11phi = PDstandardNthfdOrder811(&phi[index]);
+ PDstandardNth22phi = PDstandardNthfdOrder822(&phi[index]);
+ PDstandardNth33phi = PDstandardNthfdOrder833(&phi[index]);
+ PDstandardNth12phi = PDstandardNthfdOrder812(&phi[index]);
+ PDstandardNth13phi = PDstandardNthfdOrder813(&phi[index]);
+ PDstandardNth23phi = PDstandardNthfdOrder823(&phi[index]);
+ PDstandardNth1Xt1 = PDstandardNthfdOrder81(&Xt1[index]);
+ PDstandardNth2Xt1 = PDstandardNthfdOrder82(&Xt1[index]);
+ PDstandardNth3Xt1 = PDstandardNthfdOrder83(&Xt1[index]);
+ PDstandardNth1Xt2 = PDstandardNthfdOrder81(&Xt2[index]);
+ PDstandardNth2Xt2 = PDstandardNthfdOrder82(&Xt2[index]);
+ PDstandardNth3Xt2 = PDstandardNthfdOrder83(&Xt2[index]);
+ PDstandardNth1Xt3 = PDstandardNthfdOrder81(&Xt3[index]);
+ PDstandardNth2Xt3 = PDstandardNthfdOrder82(&Xt3[index]);
+ PDstandardNth3Xt3 = PDstandardNthfdOrder83(&Xt3[index]);
+ break;
+ }
+
+ /* Calculate temporaries and grid functions */
+ CCTK_REAL_VEC JacPDstandardNth11gt11;
+ CCTK_REAL_VEC JacPDstandardNth11gt12;
+ CCTK_REAL_VEC JacPDstandardNth11gt13;
+ CCTK_REAL_VEC JacPDstandardNth11gt22;
+ CCTK_REAL_VEC JacPDstandardNth11gt23;
+ CCTK_REAL_VEC JacPDstandardNth11gt33;
+ CCTK_REAL_VEC JacPDstandardNth11phi;
+ CCTK_REAL_VEC JacPDstandardNth12gt11;
+ CCTK_REAL_VEC JacPDstandardNth12gt12;
+ CCTK_REAL_VEC JacPDstandardNth12gt13;
+ CCTK_REAL_VEC JacPDstandardNth12gt22;
+ CCTK_REAL_VEC JacPDstandardNth12gt23;
+ CCTK_REAL_VEC JacPDstandardNth12gt33;
+ CCTK_REAL_VEC JacPDstandardNth12phi;
+ CCTK_REAL_VEC JacPDstandardNth13gt11;
+ CCTK_REAL_VEC JacPDstandardNth13gt12;
+ CCTK_REAL_VEC JacPDstandardNth13gt13;
+ CCTK_REAL_VEC JacPDstandardNth13gt22;
+ CCTK_REAL_VEC JacPDstandardNth13gt23;
+ CCTK_REAL_VEC JacPDstandardNth13gt33;
+ CCTK_REAL_VEC JacPDstandardNth13phi;
+ CCTK_REAL_VEC JacPDstandardNth1gt11;
+ CCTK_REAL_VEC JacPDstandardNth1gt12;
+ CCTK_REAL_VEC JacPDstandardNth1gt13;
+ CCTK_REAL_VEC JacPDstandardNth1gt22;
+ CCTK_REAL_VEC JacPDstandardNth1gt23;
+ CCTK_REAL_VEC JacPDstandardNth1gt33;
+ CCTK_REAL_VEC JacPDstandardNth1phi;
+ CCTK_REAL_VEC JacPDstandardNth1Xt1;
+ CCTK_REAL_VEC JacPDstandardNth1Xt2;
+ CCTK_REAL_VEC JacPDstandardNth1Xt3;
+ CCTK_REAL_VEC JacPDstandardNth21gt11;
+ CCTK_REAL_VEC JacPDstandardNth21gt12;
+ CCTK_REAL_VEC JacPDstandardNth21gt13;
+ CCTK_REAL_VEC JacPDstandardNth21gt22;
+ CCTK_REAL_VEC JacPDstandardNth21gt23;
+ CCTK_REAL_VEC JacPDstandardNth21gt33;
+ CCTK_REAL_VEC JacPDstandardNth22gt11;
+ CCTK_REAL_VEC JacPDstandardNth22gt12;
+ CCTK_REAL_VEC JacPDstandardNth22gt13;
+ CCTK_REAL_VEC JacPDstandardNth22gt22;
+ CCTK_REAL_VEC JacPDstandardNth22gt23;
+ CCTK_REAL_VEC JacPDstandardNth22gt33;
+ CCTK_REAL_VEC JacPDstandardNth22phi;
+ CCTK_REAL_VEC JacPDstandardNth23gt11;
+ CCTK_REAL_VEC JacPDstandardNth23gt12;
+ CCTK_REAL_VEC JacPDstandardNth23gt13;
+ CCTK_REAL_VEC JacPDstandardNth23gt22;
+ CCTK_REAL_VEC JacPDstandardNth23gt23;
+ CCTK_REAL_VEC JacPDstandardNth23gt33;
+ CCTK_REAL_VEC JacPDstandardNth23phi;
+ CCTK_REAL_VEC JacPDstandardNth2gt11;
+ CCTK_REAL_VEC JacPDstandardNth2gt12;
+ CCTK_REAL_VEC JacPDstandardNth2gt13;
+ CCTK_REAL_VEC JacPDstandardNth2gt22;
+ CCTK_REAL_VEC JacPDstandardNth2gt23;
+ CCTK_REAL_VEC JacPDstandardNth2gt33;
+ CCTK_REAL_VEC JacPDstandardNth2phi;
+ CCTK_REAL_VEC JacPDstandardNth2Xt1;
+ CCTK_REAL_VEC JacPDstandardNth2Xt2;
+ CCTK_REAL_VEC JacPDstandardNth2Xt3;
+ CCTK_REAL_VEC JacPDstandardNth31gt11;
+ CCTK_REAL_VEC JacPDstandardNth31gt12;
+ CCTK_REAL_VEC JacPDstandardNth31gt13;
+ CCTK_REAL_VEC JacPDstandardNth31gt22;
+ CCTK_REAL_VEC JacPDstandardNth31gt23;
+ CCTK_REAL_VEC JacPDstandardNth31gt33;
+ CCTK_REAL_VEC JacPDstandardNth32gt11;
+ CCTK_REAL_VEC JacPDstandardNth32gt12;
+ CCTK_REAL_VEC JacPDstandardNth32gt13;
+ CCTK_REAL_VEC JacPDstandardNth32gt22;
+ CCTK_REAL_VEC JacPDstandardNth32gt23;
+ CCTK_REAL_VEC JacPDstandardNth32gt33;
+ CCTK_REAL_VEC JacPDstandardNth33gt11;
+ CCTK_REAL_VEC JacPDstandardNth33gt12;
+ CCTK_REAL_VEC JacPDstandardNth33gt13;
+ CCTK_REAL_VEC JacPDstandardNth33gt22;
+ CCTK_REAL_VEC JacPDstandardNth33gt23;
+ CCTK_REAL_VEC JacPDstandardNth33gt33;
+ CCTK_REAL_VEC JacPDstandardNth33phi;
+ CCTK_REAL_VEC JacPDstandardNth3gt11;
+ CCTK_REAL_VEC JacPDstandardNth3gt12;
+ CCTK_REAL_VEC JacPDstandardNth3gt13;
+ CCTK_REAL_VEC JacPDstandardNth3gt22;
+ CCTK_REAL_VEC JacPDstandardNth3gt23;
+ CCTK_REAL_VEC JacPDstandardNth3gt33;
+ CCTK_REAL_VEC JacPDstandardNth3phi;
+ CCTK_REAL_VEC JacPDstandardNth3Xt1;
+ CCTK_REAL_VEC JacPDstandardNth3Xt2;
+ CCTK_REAL_VEC JacPDstandardNth3Xt3;
+
+ if (use_jacobian)
+ {
+ JacPDstandardNth1gt11 =
+ kmadd(J11L,PDstandardNth1gt11,kmadd(J21L,PDstandardNth2gt11,kmul(J31L,PDstandardNth3gt11)));
+
+ JacPDstandardNth1gt12 =
+ kmadd(J11L,PDstandardNth1gt12,kmadd(J21L,PDstandardNth2gt12,kmul(J31L,PDstandardNth3gt12)));
+
+ JacPDstandardNth1gt13 =
+ kmadd(J11L,PDstandardNth1gt13,kmadd(J21L,PDstandardNth2gt13,kmul(J31L,PDstandardNth3gt13)));
+
+ JacPDstandardNth1gt22 =
+ kmadd(J11L,PDstandardNth1gt22,kmadd(J21L,PDstandardNth2gt22,kmul(J31L,PDstandardNth3gt22)));
+
+ JacPDstandardNth1gt23 =
+ kmadd(J11L,PDstandardNth1gt23,kmadd(J21L,PDstandardNth2gt23,kmul(J31L,PDstandardNth3gt23)));
+
+ JacPDstandardNth1gt33 =
+ kmadd(J11L,PDstandardNth1gt33,kmadd(J21L,PDstandardNth2gt33,kmul(J31L,PDstandardNth3gt33)));
+
+ JacPDstandardNth1phi =
+ kmadd(J11L,PDstandardNth1phi,kmadd(J21L,PDstandardNth2phi,kmul(J31L,PDstandardNth3phi)));
+
+ JacPDstandardNth1Xt1 =
+ kmadd(J11L,PDstandardNth1Xt1,kmadd(J21L,PDstandardNth2Xt1,kmul(J31L,PDstandardNth3Xt1)));
+
+ JacPDstandardNth1Xt2 =
+ kmadd(J11L,PDstandardNth1Xt2,kmadd(J21L,PDstandardNth2Xt2,kmul(J31L,PDstandardNth3Xt2)));
+
+ JacPDstandardNth1Xt3 =
+ kmadd(J11L,PDstandardNth1Xt3,kmadd(J21L,PDstandardNth2Xt3,kmul(J31L,PDstandardNth3Xt3)));
+
+ JacPDstandardNth2gt11 =
+ kmadd(J12L,PDstandardNth1gt11,kmadd(J22L,PDstandardNth2gt11,kmul(J32L,PDstandardNth3gt11)));
+
+ JacPDstandardNth2gt12 =
+ kmadd(J12L,PDstandardNth1gt12,kmadd(J22L,PDstandardNth2gt12,kmul(J32L,PDstandardNth3gt12)));
+
+ JacPDstandardNth2gt13 =
+ kmadd(J12L,PDstandardNth1gt13,kmadd(J22L,PDstandardNth2gt13,kmul(J32L,PDstandardNth3gt13)));
+
+ JacPDstandardNth2gt22 =
+ kmadd(J12L,PDstandardNth1gt22,kmadd(J22L,PDstandardNth2gt22,kmul(J32L,PDstandardNth3gt22)));
+
+ JacPDstandardNth2gt23 =
+ kmadd(J12L,PDstandardNth1gt23,kmadd(J22L,PDstandardNth2gt23,kmul(J32L,PDstandardNth3gt23)));
+
+ JacPDstandardNth2gt33 =
+ kmadd(J12L,PDstandardNth1gt33,kmadd(J22L,PDstandardNth2gt33,kmul(J32L,PDstandardNth3gt33)));
+
+ JacPDstandardNth2phi =
+ kmadd(J12L,PDstandardNth1phi,kmadd(J22L,PDstandardNth2phi,kmul(J32L,PDstandardNth3phi)));
+
+ JacPDstandardNth2Xt1 =
+ kmadd(J12L,PDstandardNth1Xt1,kmadd(J22L,PDstandardNth2Xt1,kmul(J32L,PDstandardNth3Xt1)));
+
+ JacPDstandardNth2Xt2 =
+ kmadd(J12L,PDstandardNth1Xt2,kmadd(J22L,PDstandardNth2Xt2,kmul(J32L,PDstandardNth3Xt2)));
+
+ JacPDstandardNth2Xt3 =
+ kmadd(J12L,PDstandardNth1Xt3,kmadd(J22L,PDstandardNth2Xt3,kmul(J32L,PDstandardNth3Xt3)));
+
+ JacPDstandardNth3gt11 =
+ kmadd(J13L,PDstandardNth1gt11,kmadd(J23L,PDstandardNth2gt11,kmul(J33L,PDstandardNth3gt11)));
+
+ JacPDstandardNth3gt12 =
+ kmadd(J13L,PDstandardNth1gt12,kmadd(J23L,PDstandardNth2gt12,kmul(J33L,PDstandardNth3gt12)));
+
+ JacPDstandardNth3gt13 =
+ kmadd(J13L,PDstandardNth1gt13,kmadd(J23L,PDstandardNth2gt13,kmul(J33L,PDstandardNth3gt13)));
+
+ JacPDstandardNth3gt22 =
+ kmadd(J13L,PDstandardNth1gt22,kmadd(J23L,PDstandardNth2gt22,kmul(J33L,PDstandardNth3gt22)));
+
+ JacPDstandardNth3gt23 =
+ kmadd(J13L,PDstandardNth1gt23,kmadd(J23L,PDstandardNth2gt23,kmul(J33L,PDstandardNth3gt23)));
+
+ JacPDstandardNth3gt33 =
+ kmadd(J13L,PDstandardNth1gt33,kmadd(J23L,PDstandardNth2gt33,kmul(J33L,PDstandardNth3gt33)));
+
+ JacPDstandardNth3phi =
+ kmadd(J13L,PDstandardNth1phi,kmadd(J23L,PDstandardNth2phi,kmul(J33L,PDstandardNth3phi)));
+
+ JacPDstandardNth3Xt1 =
+ kmadd(J13L,PDstandardNth1Xt1,kmadd(J23L,PDstandardNth2Xt1,kmul(J33L,PDstandardNth3Xt1)));
+
+ JacPDstandardNth3Xt2 =
+ kmadd(J13L,PDstandardNth1Xt2,kmadd(J23L,PDstandardNth2Xt2,kmul(J33L,PDstandardNth3Xt2)));
+
+ JacPDstandardNth3Xt3 =
+ kmadd(J13L,PDstandardNth1Xt3,kmadd(J23L,PDstandardNth2Xt3,kmul(J33L,PDstandardNth3Xt3)));
+
+ JacPDstandardNth11gt11 =
+ kmadd(dJ111L,PDstandardNth1gt11,kmadd(dJ211L,PDstandardNth2gt11,kmadd(dJ311L,PDstandardNth3gt11,kmadd(PDstandardNth11gt11,SQR(J11L),kmadd(PDstandardNth22gt11,SQR(J21L),kmadd(PDstandardNth33gt11,SQR(J31L),kmul(kmadd(J11L,kmadd(J21L,PDstandardNth12gt11,kmul(J31L,PDstandardNth13gt11)),kmul(J21L,kmul(J31L,PDstandardNth23gt11))),ToReal(2))))))));
+
+ JacPDstandardNth11gt12 =
+ kmadd(dJ111L,PDstandardNth1gt12,kmadd(dJ211L,PDstandardNth2gt12,kmadd(dJ311L,PDstandardNth3gt12,kmadd(PDstandardNth11gt12,SQR(J11L),kmadd(PDstandardNth22gt12,SQR(J21L),kmadd(PDstandardNth33gt12,SQR(J31L),kmul(kmadd(J11L,kmadd(J21L,PDstandardNth12gt12,kmul(J31L,PDstandardNth13gt12)),kmul(J21L,kmul(J31L,PDstandardNth23gt12))),ToReal(2))))))));
+
+ JacPDstandardNth11gt13 =
+ kmadd(dJ111L,PDstandardNth1gt13,kmadd(dJ211L,PDstandardNth2gt13,kmadd(dJ311L,PDstandardNth3gt13,kmadd(PDstandardNth11gt13,SQR(J11L),kmadd(PDstandardNth22gt13,SQR(J21L),kmadd(PDstandardNth33gt13,SQR(J31L),kmul(kmadd(J11L,kmadd(J21L,PDstandardNth12gt13,kmul(J31L,PDstandardNth13gt13)),kmul(J21L,kmul(J31L,PDstandardNth23gt13))),ToReal(2))))))));
+
+ JacPDstandardNth11gt22 =
+ kmadd(dJ111L,PDstandardNth1gt22,kmadd(dJ211L,PDstandardNth2gt22,kmadd(dJ311L,PDstandardNth3gt22,kmadd(PDstandardNth11gt22,SQR(J11L),kmadd(PDstandardNth22gt22,SQR(J21L),kmadd(PDstandardNth33gt22,SQR(J31L),kmul(kmadd(J11L,kmadd(J21L,PDstandardNth12gt22,kmul(J31L,PDstandardNth13gt22)),kmul(J21L,kmul(J31L,PDstandardNth23gt22))),ToReal(2))))))));
+
+ JacPDstandardNth11gt23 =
+ kmadd(dJ111L,PDstandardNth1gt23,kmadd(dJ211L,PDstandardNth2gt23,kmadd(dJ311L,PDstandardNth3gt23,kmadd(PDstandardNth11gt23,SQR(J11L),kmadd(PDstandardNth22gt23,SQR(J21L),kmadd(PDstandardNth33gt23,SQR(J31L),kmul(kmadd(J11L,kmadd(J21L,PDstandardNth12gt23,kmul(J31L,PDstandardNth13gt23)),kmul(J21L,kmul(J31L,PDstandardNth23gt23))),ToReal(2))))))));
+
+ JacPDstandardNth11gt33 =
+ kmadd(dJ111L,PDstandardNth1gt33,kmadd(dJ211L,PDstandardNth2gt33,kmadd(dJ311L,PDstandardNth3gt33,kmadd(PDstandardNth11gt33,SQR(J11L),kmadd(PDstandardNth22gt33,SQR(J21L),kmadd(PDstandardNth33gt33,SQR(J31L),kmul(kmadd(J11L,kmadd(J21L,PDstandardNth12gt33,kmul(J31L,PDstandardNth13gt33)),kmul(J21L,kmul(J31L,PDstandardNth23gt33))),ToReal(2))))))));
+
+ JacPDstandardNth11phi =
+ kmadd(dJ111L,PDstandardNth1phi,kmadd(dJ211L,PDstandardNth2phi,kmadd(dJ311L,PDstandardNth3phi,kmadd(PDstandardNth11phi,SQR(J11L),kmadd(PDstandardNth22phi,SQR(J21L),kmadd(PDstandardNth33phi,SQR(J31L),kmul(kmadd(J11L,kmadd(J21L,PDstandardNth12phi,kmul(J31L,PDstandardNth13phi)),kmul(J21L,kmul(J31L,PDstandardNth23phi))),ToReal(2))))))));
+
+ JacPDstandardNth22gt11 =
+ kmadd(dJ122L,PDstandardNth1gt11,kmadd(dJ222L,PDstandardNth2gt11,kmadd(dJ322L,PDstandardNth3gt11,kmadd(PDstandardNth11gt11,SQR(J12L),kmadd(PDstandardNth22gt11,SQR(J22L),kmadd(PDstandardNth33gt11,SQR(J32L),kmul(kmadd(J12L,kmadd(J22L,PDstandardNth12gt11,kmul(J32L,PDstandardNth13gt11)),kmul(J22L,kmul(J32L,PDstandardNth23gt11))),ToReal(2))))))));
+
+ JacPDstandardNth22gt12 =
+ kmadd(dJ122L,PDstandardNth1gt12,kmadd(dJ222L,PDstandardNth2gt12,kmadd(dJ322L,PDstandardNth3gt12,kmadd(PDstandardNth11gt12,SQR(J12L),kmadd(PDstandardNth22gt12,SQR(J22L),kmadd(PDstandardNth33gt12,SQR(J32L),kmul(kmadd(J12L,kmadd(J22L,PDstandardNth12gt12,kmul(J32L,PDstandardNth13gt12)),kmul(J22L,kmul(J32L,PDstandardNth23gt12))),ToReal(2))))))));
+
+ JacPDstandardNth22gt13 =
+ kmadd(dJ122L,PDstandardNth1gt13,kmadd(dJ222L,PDstandardNth2gt13,kmadd(dJ322L,PDstandardNth3gt13,kmadd(PDstandardNth11gt13,SQR(J12L),kmadd(PDstandardNth22gt13,SQR(J22L),kmadd(PDstandardNth33gt13,SQR(J32L),kmul(kmadd(J12L,kmadd(J22L,PDstandardNth12gt13,kmul(J32L,PDstandardNth13gt13)),kmul(J22L,kmul(J32L,PDstandardNth23gt13))),ToReal(2))))))));
+
+ JacPDstandardNth22gt22 =
+ kmadd(dJ122L,PDstandardNth1gt22,kmadd(dJ222L,PDstandardNth2gt22,kmadd(dJ322L,PDstandardNth3gt22,kmadd(PDstandardNth11gt22,SQR(J12L),kmadd(PDstandardNth22gt22,SQR(J22L),kmadd(PDstandardNth33gt22,SQR(J32L),kmul(kmadd(J12L,kmadd(J22L,PDstandardNth12gt22,kmul(J32L,PDstandardNth13gt22)),kmul(J22L,kmul(J32L,PDstandardNth23gt22))),ToReal(2))))))));
+
+ JacPDstandardNth22gt23 =
+ kmadd(dJ122L,PDstandardNth1gt23,kmadd(dJ222L,PDstandardNth2gt23,kmadd(dJ322L,PDstandardNth3gt23,kmadd(PDstandardNth11gt23,SQR(J12L),kmadd(PDstandardNth22gt23,SQR(J22L),kmadd(PDstandardNth33gt23,SQR(J32L),kmul(kmadd(J12L,kmadd(J22L,PDstandardNth12gt23,kmul(J32L,PDstandardNth13gt23)),kmul(J22L,kmul(J32L,PDstandardNth23gt23))),ToReal(2))))))));
+
+ JacPDstandardNth22gt33 =
+ kmadd(dJ122L,PDstandardNth1gt33,kmadd(dJ222L,PDstandardNth2gt33,kmadd(dJ322L,PDstandardNth3gt33,kmadd(PDstandardNth11gt33,SQR(J12L),kmadd(PDstandardNth22gt33,SQR(J22L),kmadd(PDstandardNth33gt33,SQR(J32L),kmul(kmadd(J12L,kmadd(J22L,PDstandardNth12gt33,kmul(J32L,PDstandardNth13gt33)),kmul(J22L,kmul(J32L,PDstandardNth23gt33))),ToReal(2))))))));
+
+ JacPDstandardNth22phi =
+ kmadd(dJ122L,PDstandardNth1phi,kmadd(dJ222L,PDstandardNth2phi,kmadd(dJ322L,PDstandardNth3phi,kmadd(PDstandardNth11phi,SQR(J12L),kmadd(PDstandardNth22phi,SQR(J22L),kmadd(PDstandardNth33phi,SQR(J32L),kmul(kmadd(J12L,kmadd(J22L,PDstandardNth12phi,kmul(J32L,PDstandardNth13phi)),kmul(J22L,kmul(J32L,PDstandardNth23phi))),ToReal(2))))))));
+
+ JacPDstandardNth33gt11 =
+ kmadd(dJ133L,PDstandardNth1gt11,kmadd(dJ233L,PDstandardNth2gt11,kmadd(dJ333L,PDstandardNth3gt11,kmadd(PDstandardNth11gt11,SQR(J13L),kmadd(PDstandardNth22gt11,SQR(J23L),kmadd(PDstandardNth33gt11,SQR(J33L),kmul(kmadd(J13L,kmadd(J23L,PDstandardNth12gt11,kmul(J33L,PDstandardNth13gt11)),kmul(J23L,kmul(J33L,PDstandardNth23gt11))),ToReal(2))))))));
+
+ JacPDstandardNth33gt12 =
+ kmadd(dJ133L,PDstandardNth1gt12,kmadd(dJ233L,PDstandardNth2gt12,kmadd(dJ333L,PDstandardNth3gt12,kmadd(PDstandardNth11gt12,SQR(J13L),kmadd(PDstandardNth22gt12,SQR(J23L),kmadd(PDstandardNth33gt12,SQR(J33L),kmul(kmadd(J13L,kmadd(J23L,PDstandardNth12gt12,kmul(J33L,PDstandardNth13gt12)),kmul(J23L,kmul(J33L,PDstandardNth23gt12))),ToReal(2))))))));
+
+ JacPDstandardNth33gt13 =
+ kmadd(dJ133L,PDstandardNth1gt13,kmadd(dJ233L,PDstandardNth2gt13,kmadd(dJ333L,PDstandardNth3gt13,kmadd(PDstandardNth11gt13,SQR(J13L),kmadd(PDstandardNth22gt13,SQR(J23L),kmadd(PDstandardNth33gt13,SQR(J33L),kmul(kmadd(J13L,kmadd(J23L,PDstandardNth12gt13,kmul(J33L,PDstandardNth13gt13)),kmul(J23L,kmul(J33L,PDstandardNth23gt13))),ToReal(2))))))));
+
+ JacPDstandardNth33gt22 =
+ kmadd(dJ133L,PDstandardNth1gt22,kmadd(dJ233L,PDstandardNth2gt22,kmadd(dJ333L,PDstandardNth3gt22,kmadd(PDstandardNth11gt22,SQR(J13L),kmadd(PDstandardNth22gt22,SQR(J23L),kmadd(PDstandardNth33gt22,SQR(J33L),kmul(kmadd(J13L,kmadd(J23L,PDstandardNth12gt22,kmul(J33L,PDstandardNth13gt22)),kmul(J23L,kmul(J33L,PDstandardNth23gt22))),ToReal(2))))))));
+
+ JacPDstandardNth33gt23 =
+ kmadd(dJ133L,PDstandardNth1gt23,kmadd(dJ233L,PDstandardNth2gt23,kmadd(dJ333L,PDstandardNth3gt23,kmadd(PDstandardNth11gt23,SQR(J13L),kmadd(PDstandardNth22gt23,SQR(J23L),kmadd(PDstandardNth33gt23,SQR(J33L),kmul(kmadd(J13L,kmadd(J23L,PDstandardNth12gt23,kmul(J33L,PDstandardNth13gt23)),kmul(J23L,kmul(J33L,PDstandardNth23gt23))),ToReal(2))))))));
+
+ JacPDstandardNth33gt33 =
+ kmadd(dJ133L,PDstandardNth1gt33,kmadd(dJ233L,PDstandardNth2gt33,kmadd(dJ333L,PDstandardNth3gt33,kmadd(PDstandardNth11gt33,SQR(J13L),kmadd(PDstandardNth22gt33,SQR(J23L),kmadd(PDstandardNth33gt33,SQR(J33L),kmul(kmadd(J13L,kmadd(J23L,PDstandardNth12gt33,kmul(J33L,PDstandardNth13gt33)),kmul(J23L,kmul(J33L,PDstandardNth23gt33))),ToReal(2))))))));
+
+ JacPDstandardNth33phi =
+ kmadd(dJ133L,PDstandardNth1phi,kmadd(dJ233L,PDstandardNth2phi,kmadd(dJ333L,PDstandardNth3phi,kmadd(PDstandardNth11phi,SQR(J13L),kmadd(PDstandardNth22phi,SQR(J23L),kmadd(PDstandardNth33phi,SQR(J33L),kmul(kmadd(J13L,kmadd(J23L,PDstandardNth12phi,kmul(J33L,PDstandardNth13phi)),kmul(J23L,kmul(J33L,PDstandardNth23phi))),ToReal(2))))))));
+
+ JacPDstandardNth12gt11 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11gt11,kmadd(J21L,PDstandardNth12gt11,kmul(J31L,PDstandardNth13gt11))),kmadd(J11L,kmadd(J22L,PDstandardNth12gt11,kmul(J32L,PDstandardNth13gt11)),kmadd(dJ112L,PDstandardNth1gt11,kmadd(J22L,kmadd(J21L,PDstandardNth22gt11,kmul(J31L,PDstandardNth23gt11)),kmadd(dJ212L,PDstandardNth2gt11,kmadd(J32L,kmadd(J21L,PDstandardNth23gt11,kmul(J31L,PDstandardNth33gt11)),kmul(dJ312L,PDstandardNth3gt11)))))));
+
+ JacPDstandardNth12gt12 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11gt12,kmadd(J21L,PDstandardNth12gt12,kmul(J31L,PDstandardNth13gt12))),kmadd(J11L,kmadd(J22L,PDstandardNth12gt12,kmul(J32L,PDstandardNth13gt12)),kmadd(dJ112L,PDstandardNth1gt12,kmadd(J22L,kmadd(J21L,PDstandardNth22gt12,kmul(J31L,PDstandardNth23gt12)),kmadd(dJ212L,PDstandardNth2gt12,kmadd(J32L,kmadd(J21L,PDstandardNth23gt12,kmul(J31L,PDstandardNth33gt12)),kmul(dJ312L,PDstandardNth3gt12)))))));
+
+ JacPDstandardNth12gt13 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11gt13,kmadd(J21L,PDstandardNth12gt13,kmul(J31L,PDstandardNth13gt13))),kmadd(J11L,kmadd(J22L,PDstandardNth12gt13,kmul(J32L,PDstandardNth13gt13)),kmadd(dJ112L,PDstandardNth1gt13,kmadd(J22L,kmadd(J21L,PDstandardNth22gt13,kmul(J31L,PDstandardNth23gt13)),kmadd(dJ212L,PDstandardNth2gt13,kmadd(J32L,kmadd(J21L,PDstandardNth23gt13,kmul(J31L,PDstandardNth33gt13)),kmul(dJ312L,PDstandardNth3gt13)))))));
+
+ JacPDstandardNth12gt22 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11gt22,kmadd(J21L,PDstandardNth12gt22,kmul(J31L,PDstandardNth13gt22))),kmadd(J11L,kmadd(J22L,PDstandardNth12gt22,kmul(J32L,PDstandardNth13gt22)),kmadd(dJ112L,PDstandardNth1gt22,kmadd(J22L,kmadd(J21L,PDstandardNth22gt22,kmul(J31L,PDstandardNth23gt22)),kmadd(dJ212L,PDstandardNth2gt22,kmadd(J32L,kmadd(J21L,PDstandardNth23gt22,kmul(J31L,PDstandardNth33gt22)),kmul(dJ312L,PDstandardNth3gt22)))))));
+
+ JacPDstandardNth12gt23 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11gt23,kmadd(J21L,PDstandardNth12gt23,kmul(J31L,PDstandardNth13gt23))),kmadd(J11L,kmadd(J22L,PDstandardNth12gt23,kmul(J32L,PDstandardNth13gt23)),kmadd(dJ112L,PDstandardNth1gt23,kmadd(J22L,kmadd(J21L,PDstandardNth22gt23,kmul(J31L,PDstandardNth23gt23)),kmadd(dJ212L,PDstandardNth2gt23,kmadd(J32L,kmadd(J21L,PDstandardNth23gt23,kmul(J31L,PDstandardNth33gt23)),kmul(dJ312L,PDstandardNth3gt23)))))));
+
+ JacPDstandardNth12gt33 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11gt33,kmadd(J21L,PDstandardNth12gt33,kmul(J31L,PDstandardNth13gt33))),kmadd(J11L,kmadd(J22L,PDstandardNth12gt33,kmul(J32L,PDstandardNth13gt33)),kmadd(dJ112L,PDstandardNth1gt33,kmadd(J22L,kmadd(J21L,PDstandardNth22gt33,kmul(J31L,PDstandardNth23gt33)),kmadd(dJ212L,PDstandardNth2gt33,kmadd(J32L,kmadd(J21L,PDstandardNth23gt33,kmul(J31L,PDstandardNth33gt33)),kmul(dJ312L,PDstandardNth3gt33)))))));
+
+ JacPDstandardNth12phi =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11phi,kmadd(J21L,PDstandardNth12phi,kmul(J31L,PDstandardNth13phi))),kmadd(J11L,kmadd(J22L,PDstandardNth12phi,kmul(J32L,PDstandardNth13phi)),kmadd(dJ112L,PDstandardNth1phi,kmadd(J22L,kmadd(J21L,PDstandardNth22phi,kmul(J31L,PDstandardNth23phi)),kmadd(dJ212L,PDstandardNth2phi,kmadd(J32L,kmadd(J21L,PDstandardNth23phi,kmul(J31L,PDstandardNth33phi)),kmul(dJ312L,PDstandardNth3phi)))))));
+
+ JacPDstandardNth13gt11 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11gt11,kmadd(J21L,PDstandardNth12gt11,kmul(J31L,PDstandardNth13gt11))),kmadd(J11L,kmadd(J23L,PDstandardNth12gt11,kmul(J33L,PDstandardNth13gt11)),kmadd(dJ113L,PDstandardNth1gt11,kmadd(J23L,kmadd(J21L,PDstandardNth22gt11,kmul(J31L,PDstandardNth23gt11)),kmadd(dJ213L,PDstandardNth2gt11,kmadd(J33L,kmadd(J21L,PDstandardNth23gt11,kmul(J31L,PDstandardNth33gt11)),kmul(dJ313L,PDstandardNth3gt11)))))));
+
+ JacPDstandardNth13gt12 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11gt12,kmadd(J21L,PDstandardNth12gt12,kmul(J31L,PDstandardNth13gt12))),kmadd(J11L,kmadd(J23L,PDstandardNth12gt12,kmul(J33L,PDstandardNth13gt12)),kmadd(dJ113L,PDstandardNth1gt12,kmadd(J23L,kmadd(J21L,PDstandardNth22gt12,kmul(J31L,PDstandardNth23gt12)),kmadd(dJ213L,PDstandardNth2gt12,kmadd(J33L,kmadd(J21L,PDstandardNth23gt12,kmul(J31L,PDstandardNth33gt12)),kmul(dJ313L,PDstandardNth3gt12)))))));
+
+ JacPDstandardNth13gt13 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11gt13,kmadd(J21L,PDstandardNth12gt13,kmul(J31L,PDstandardNth13gt13))),kmadd(J11L,kmadd(J23L,PDstandardNth12gt13,kmul(J33L,PDstandardNth13gt13)),kmadd(dJ113L,PDstandardNth1gt13,kmadd(J23L,kmadd(J21L,PDstandardNth22gt13,kmul(J31L,PDstandardNth23gt13)),kmadd(dJ213L,PDstandardNth2gt13,kmadd(J33L,kmadd(J21L,PDstandardNth23gt13,kmul(J31L,PDstandardNth33gt13)),kmul(dJ313L,PDstandardNth3gt13)))))));
+
+ JacPDstandardNth13gt22 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11gt22,kmadd(J21L,PDstandardNth12gt22,kmul(J31L,PDstandardNth13gt22))),kmadd(J11L,kmadd(J23L,PDstandardNth12gt22,kmul(J33L,PDstandardNth13gt22)),kmadd(dJ113L,PDstandardNth1gt22,kmadd(J23L,kmadd(J21L,PDstandardNth22gt22,kmul(J31L,PDstandardNth23gt22)),kmadd(dJ213L,PDstandardNth2gt22,kmadd(J33L,kmadd(J21L,PDstandardNth23gt22,kmul(J31L,PDstandardNth33gt22)),kmul(dJ313L,PDstandardNth3gt22)))))));
+
+ JacPDstandardNth13gt23 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11gt23,kmadd(J21L,PDstandardNth12gt23,kmul(J31L,PDstandardNth13gt23))),kmadd(J11L,kmadd(J23L,PDstandardNth12gt23,kmul(J33L,PDstandardNth13gt23)),kmadd(dJ113L,PDstandardNth1gt23,kmadd(J23L,kmadd(J21L,PDstandardNth22gt23,kmul(J31L,PDstandardNth23gt23)),kmadd(dJ213L,PDstandardNth2gt23,kmadd(J33L,kmadd(J21L,PDstandardNth23gt23,kmul(J31L,PDstandardNth33gt23)),kmul(dJ313L,PDstandardNth3gt23)))))));
+
+ JacPDstandardNth13gt33 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11gt33,kmadd(J21L,PDstandardNth12gt33,kmul(J31L,PDstandardNth13gt33))),kmadd(J11L,kmadd(J23L,PDstandardNth12gt33,kmul(J33L,PDstandardNth13gt33)),kmadd(dJ113L,PDstandardNth1gt33,kmadd(J23L,kmadd(J21L,PDstandardNth22gt33,kmul(J31L,PDstandardNth23gt33)),kmadd(dJ213L,PDstandardNth2gt33,kmadd(J33L,kmadd(J21L,PDstandardNth23gt33,kmul(J31L,PDstandardNth33gt33)),kmul(dJ313L,PDstandardNth3gt33)))))));
+
+ JacPDstandardNth13phi =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11phi,kmadd(J21L,PDstandardNth12phi,kmul(J31L,PDstandardNth13phi))),kmadd(J11L,kmadd(J23L,PDstandardNth12phi,kmul(J33L,PDstandardNth13phi)),kmadd(dJ113L,PDstandardNth1phi,kmadd(J23L,kmadd(J21L,PDstandardNth22phi,kmul(J31L,PDstandardNth23phi)),kmadd(dJ213L,PDstandardNth2phi,kmadd(J33L,kmadd(J21L,PDstandardNth23phi,kmul(J31L,PDstandardNth33phi)),kmul(dJ313L,PDstandardNth3phi)))))));
+
+ JacPDstandardNth21gt11 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11gt11,kmadd(J21L,PDstandardNth12gt11,kmul(J31L,PDstandardNth13gt11))),kmadd(J11L,kmadd(J22L,PDstandardNth12gt11,kmul(J32L,PDstandardNth13gt11)),kmadd(dJ112L,PDstandardNth1gt11,kmadd(J22L,kmadd(J21L,PDstandardNth22gt11,kmul(J31L,PDstandardNth23gt11)),kmadd(dJ212L,PDstandardNth2gt11,kmadd(J32L,kmadd(J21L,PDstandardNth23gt11,kmul(J31L,PDstandardNth33gt11)),kmul(dJ312L,PDstandardNth3gt11)))))));
+
+ JacPDstandardNth21gt12 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11gt12,kmadd(J21L,PDstandardNth12gt12,kmul(J31L,PDstandardNth13gt12))),kmadd(J11L,kmadd(J22L,PDstandardNth12gt12,kmul(J32L,PDstandardNth13gt12)),kmadd(dJ112L,PDstandardNth1gt12,kmadd(J22L,kmadd(J21L,PDstandardNth22gt12,kmul(J31L,PDstandardNth23gt12)),kmadd(dJ212L,PDstandardNth2gt12,kmadd(J32L,kmadd(J21L,PDstandardNth23gt12,kmul(J31L,PDstandardNth33gt12)),kmul(dJ312L,PDstandardNth3gt12)))))));
+
+ JacPDstandardNth21gt13 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11gt13,kmadd(J21L,PDstandardNth12gt13,kmul(J31L,PDstandardNth13gt13))),kmadd(J11L,kmadd(J22L,PDstandardNth12gt13,kmul(J32L,PDstandardNth13gt13)),kmadd(dJ112L,PDstandardNth1gt13,kmadd(J22L,kmadd(J21L,PDstandardNth22gt13,kmul(J31L,PDstandardNth23gt13)),kmadd(dJ212L,PDstandardNth2gt13,kmadd(J32L,kmadd(J21L,PDstandardNth23gt13,kmul(J31L,PDstandardNth33gt13)),kmul(dJ312L,PDstandardNth3gt13)))))));
+
+ JacPDstandardNth21gt22 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11gt22,kmadd(J21L,PDstandardNth12gt22,kmul(J31L,PDstandardNth13gt22))),kmadd(J11L,kmadd(J22L,PDstandardNth12gt22,kmul(J32L,PDstandardNth13gt22)),kmadd(dJ112L,PDstandardNth1gt22,kmadd(J22L,kmadd(J21L,PDstandardNth22gt22,kmul(J31L,PDstandardNth23gt22)),kmadd(dJ212L,PDstandardNth2gt22,kmadd(J32L,kmadd(J21L,PDstandardNth23gt22,kmul(J31L,PDstandardNth33gt22)),kmul(dJ312L,PDstandardNth3gt22)))))));
+
+ JacPDstandardNth21gt23 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11gt23,kmadd(J21L,PDstandardNth12gt23,kmul(J31L,PDstandardNth13gt23))),kmadd(J11L,kmadd(J22L,PDstandardNth12gt23,kmul(J32L,PDstandardNth13gt23)),kmadd(dJ112L,PDstandardNth1gt23,kmadd(J22L,kmadd(J21L,PDstandardNth22gt23,kmul(J31L,PDstandardNth23gt23)),kmadd(dJ212L,PDstandardNth2gt23,kmadd(J32L,kmadd(J21L,PDstandardNth23gt23,kmul(J31L,PDstandardNth33gt23)),kmul(dJ312L,PDstandardNth3gt23)))))));
+
+ JacPDstandardNth21gt33 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11gt33,kmadd(J21L,PDstandardNth12gt33,kmul(J31L,PDstandardNth13gt33))),kmadd(J11L,kmadd(J22L,PDstandardNth12gt33,kmul(J32L,PDstandardNth13gt33)),kmadd(dJ112L,PDstandardNth1gt33,kmadd(J22L,kmadd(J21L,PDstandardNth22gt33,kmul(J31L,PDstandardNth23gt33)),kmadd(dJ212L,PDstandardNth2gt33,kmadd(J32L,kmadd(J21L,PDstandardNth23gt33,kmul(J31L,PDstandardNth33gt33)),kmul(dJ312L,PDstandardNth3gt33)))))));
+
+ JacPDstandardNth23gt11 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11gt11,kmadd(J22L,PDstandardNth12gt11,kmul(J32L,PDstandardNth13gt11))),kmadd(J12L,kmadd(J23L,PDstandardNth12gt11,kmul(J33L,PDstandardNth13gt11)),kmadd(dJ123L,PDstandardNth1gt11,kmadd(J23L,kmadd(J22L,PDstandardNth22gt11,kmul(J32L,PDstandardNth23gt11)),kmadd(dJ223L,PDstandardNth2gt11,kmadd(J33L,kmadd(J22L,PDstandardNth23gt11,kmul(J32L,PDstandardNth33gt11)),kmul(dJ323L,PDstandardNth3gt11)))))));
+
+ JacPDstandardNth23gt12 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11gt12,kmadd(J22L,PDstandardNth12gt12,kmul(J32L,PDstandardNth13gt12))),kmadd(J12L,kmadd(J23L,PDstandardNth12gt12,kmul(J33L,PDstandardNth13gt12)),kmadd(dJ123L,PDstandardNth1gt12,kmadd(J23L,kmadd(J22L,PDstandardNth22gt12,kmul(J32L,PDstandardNth23gt12)),kmadd(dJ223L,PDstandardNth2gt12,kmadd(J33L,kmadd(J22L,PDstandardNth23gt12,kmul(J32L,PDstandardNth33gt12)),kmul(dJ323L,PDstandardNth3gt12)))))));
+
+ JacPDstandardNth23gt13 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11gt13,kmadd(J22L,PDstandardNth12gt13,kmul(J32L,PDstandardNth13gt13))),kmadd(J12L,kmadd(J23L,PDstandardNth12gt13,kmul(J33L,PDstandardNth13gt13)),kmadd(dJ123L,PDstandardNth1gt13,kmadd(J23L,kmadd(J22L,PDstandardNth22gt13,kmul(J32L,PDstandardNth23gt13)),kmadd(dJ223L,PDstandardNth2gt13,kmadd(J33L,kmadd(J22L,PDstandardNth23gt13,kmul(J32L,PDstandardNth33gt13)),kmul(dJ323L,PDstandardNth3gt13)))))));
+
+ JacPDstandardNth23gt22 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11gt22,kmadd(J22L,PDstandardNth12gt22,kmul(J32L,PDstandardNth13gt22))),kmadd(J12L,kmadd(J23L,PDstandardNth12gt22,kmul(J33L,PDstandardNth13gt22)),kmadd(dJ123L,PDstandardNth1gt22,kmadd(J23L,kmadd(J22L,PDstandardNth22gt22,kmul(J32L,PDstandardNth23gt22)),kmadd(dJ223L,PDstandardNth2gt22,kmadd(J33L,kmadd(J22L,PDstandardNth23gt22,kmul(J32L,PDstandardNth33gt22)),kmul(dJ323L,PDstandardNth3gt22)))))));
+
+ JacPDstandardNth23gt23 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11gt23,kmadd(J22L,PDstandardNth12gt23,kmul(J32L,PDstandardNth13gt23))),kmadd(J12L,kmadd(J23L,PDstandardNth12gt23,kmul(J33L,PDstandardNth13gt23)),kmadd(dJ123L,PDstandardNth1gt23,kmadd(J23L,kmadd(J22L,PDstandardNth22gt23,kmul(J32L,PDstandardNth23gt23)),kmadd(dJ223L,PDstandardNth2gt23,kmadd(J33L,kmadd(J22L,PDstandardNth23gt23,kmul(J32L,PDstandardNth33gt23)),kmul(dJ323L,PDstandardNth3gt23)))))));
+
+ JacPDstandardNth23gt33 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11gt33,kmadd(J22L,PDstandardNth12gt33,kmul(J32L,PDstandardNth13gt33))),kmadd(J12L,kmadd(J23L,PDstandardNth12gt33,kmul(J33L,PDstandardNth13gt33)),kmadd(dJ123L,PDstandardNth1gt33,kmadd(J23L,kmadd(J22L,PDstandardNth22gt33,kmul(J32L,PDstandardNth23gt33)),kmadd(dJ223L,PDstandardNth2gt33,kmadd(J33L,kmadd(J22L,PDstandardNth23gt33,kmul(J32L,PDstandardNth33gt33)),kmul(dJ323L,PDstandardNth3gt33)))))));
+
+ JacPDstandardNth23phi =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11phi,kmadd(J22L,PDstandardNth12phi,kmul(J32L,PDstandardNth13phi))),kmadd(J12L,kmadd(J23L,PDstandardNth12phi,kmul(J33L,PDstandardNth13phi)),kmadd(dJ123L,PDstandardNth1phi,kmadd(J23L,kmadd(J22L,PDstandardNth22phi,kmul(J32L,PDstandardNth23phi)),kmadd(dJ223L,PDstandardNth2phi,kmadd(J33L,kmadd(J22L,PDstandardNth23phi,kmul(J32L,PDstandardNth33phi)),kmul(dJ323L,PDstandardNth3phi)))))));
+
+ JacPDstandardNth31gt11 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11gt11,kmadd(J21L,PDstandardNth12gt11,kmul(J31L,PDstandardNth13gt11))),kmadd(J11L,kmadd(J23L,PDstandardNth12gt11,kmul(J33L,PDstandardNth13gt11)),kmadd(dJ113L,PDstandardNth1gt11,kmadd(J23L,kmadd(J21L,PDstandardNth22gt11,kmul(J31L,PDstandardNth23gt11)),kmadd(dJ213L,PDstandardNth2gt11,kmadd(J33L,kmadd(J21L,PDstandardNth23gt11,kmul(J31L,PDstandardNth33gt11)),kmul(dJ313L,PDstandardNth3gt11)))))));
+
+ JacPDstandardNth31gt12 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11gt12,kmadd(J21L,PDstandardNth12gt12,kmul(J31L,PDstandardNth13gt12))),kmadd(J11L,kmadd(J23L,PDstandardNth12gt12,kmul(J33L,PDstandardNth13gt12)),kmadd(dJ113L,PDstandardNth1gt12,kmadd(J23L,kmadd(J21L,PDstandardNth22gt12,kmul(J31L,PDstandardNth23gt12)),kmadd(dJ213L,PDstandardNth2gt12,kmadd(J33L,kmadd(J21L,PDstandardNth23gt12,kmul(J31L,PDstandardNth33gt12)),kmul(dJ313L,PDstandardNth3gt12)))))));
+
+ JacPDstandardNth31gt13 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11gt13,kmadd(J21L,PDstandardNth12gt13,kmul(J31L,PDstandardNth13gt13))),kmadd(J11L,kmadd(J23L,PDstandardNth12gt13,kmul(J33L,PDstandardNth13gt13)),kmadd(dJ113L,PDstandardNth1gt13,kmadd(J23L,kmadd(J21L,PDstandardNth22gt13,kmul(J31L,PDstandardNth23gt13)),kmadd(dJ213L,PDstandardNth2gt13,kmadd(J33L,kmadd(J21L,PDstandardNth23gt13,kmul(J31L,PDstandardNth33gt13)),kmul(dJ313L,PDstandardNth3gt13)))))));
+
+ JacPDstandardNth31gt22 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11gt22,kmadd(J21L,PDstandardNth12gt22,kmul(J31L,PDstandardNth13gt22))),kmadd(J11L,kmadd(J23L,PDstandardNth12gt22,kmul(J33L,PDstandardNth13gt22)),kmadd(dJ113L,PDstandardNth1gt22,kmadd(J23L,kmadd(J21L,PDstandardNth22gt22,kmul(J31L,PDstandardNth23gt22)),kmadd(dJ213L,PDstandardNth2gt22,kmadd(J33L,kmadd(J21L,PDstandardNth23gt22,kmul(J31L,PDstandardNth33gt22)),kmul(dJ313L,PDstandardNth3gt22)))))));
+
+ JacPDstandardNth31gt23 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11gt23,kmadd(J21L,PDstandardNth12gt23,kmul(J31L,PDstandardNth13gt23))),kmadd(J11L,kmadd(J23L,PDstandardNth12gt23,kmul(J33L,PDstandardNth13gt23)),kmadd(dJ113L,PDstandardNth1gt23,kmadd(J23L,kmadd(J21L,PDstandardNth22gt23,kmul(J31L,PDstandardNth23gt23)),kmadd(dJ213L,PDstandardNth2gt23,kmadd(J33L,kmadd(J21L,PDstandardNth23gt23,kmul(J31L,PDstandardNth33gt23)),kmul(dJ313L,PDstandardNth3gt23)))))));
+
+ JacPDstandardNth31gt33 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11gt33,kmadd(J21L,PDstandardNth12gt33,kmul(J31L,PDstandardNth13gt33))),kmadd(J11L,kmadd(J23L,PDstandardNth12gt33,kmul(J33L,PDstandardNth13gt33)),kmadd(dJ113L,PDstandardNth1gt33,kmadd(J23L,kmadd(J21L,PDstandardNth22gt33,kmul(J31L,PDstandardNth23gt33)),kmadd(dJ213L,PDstandardNth2gt33,kmadd(J33L,kmadd(J21L,PDstandardNth23gt33,kmul(J31L,PDstandardNth33gt33)),kmul(dJ313L,PDstandardNth3gt33)))))));
+
+ JacPDstandardNth32gt11 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11gt11,kmadd(J22L,PDstandardNth12gt11,kmul(J32L,PDstandardNth13gt11))),kmadd(J12L,kmadd(J23L,PDstandardNth12gt11,kmul(J33L,PDstandardNth13gt11)),kmadd(dJ123L,PDstandardNth1gt11,kmadd(J23L,kmadd(J22L,PDstandardNth22gt11,kmul(J32L,PDstandardNth23gt11)),kmadd(dJ223L,PDstandardNth2gt11,kmadd(J33L,kmadd(J22L,PDstandardNth23gt11,kmul(J32L,PDstandardNth33gt11)),kmul(dJ323L,PDstandardNth3gt11)))))));
+
+ JacPDstandardNth32gt12 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11gt12,kmadd(J22L,PDstandardNth12gt12,kmul(J32L,PDstandardNth13gt12))),kmadd(J12L,kmadd(J23L,PDstandardNth12gt12,kmul(J33L,PDstandardNth13gt12)),kmadd(dJ123L,PDstandardNth1gt12,kmadd(J23L,kmadd(J22L,PDstandardNth22gt12,kmul(J32L,PDstandardNth23gt12)),kmadd(dJ223L,PDstandardNth2gt12,kmadd(J33L,kmadd(J22L,PDstandardNth23gt12,kmul(J32L,PDstandardNth33gt12)),kmul(dJ323L,PDstandardNth3gt12)))))));
+
+ JacPDstandardNth32gt13 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11gt13,kmadd(J22L,PDstandardNth12gt13,kmul(J32L,PDstandardNth13gt13))),kmadd(J12L,kmadd(J23L,PDstandardNth12gt13,kmul(J33L,PDstandardNth13gt13)),kmadd(dJ123L,PDstandardNth1gt13,kmadd(J23L,kmadd(J22L,PDstandardNth22gt13,kmul(J32L,PDstandardNth23gt13)),kmadd(dJ223L,PDstandardNth2gt13,kmadd(J33L,kmadd(J22L,PDstandardNth23gt13,kmul(J32L,PDstandardNth33gt13)),kmul(dJ323L,PDstandardNth3gt13)))))));
+
+ JacPDstandardNth32gt22 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11gt22,kmadd(J22L,PDstandardNth12gt22,kmul(J32L,PDstandardNth13gt22))),kmadd(J12L,kmadd(J23L,PDstandardNth12gt22,kmul(J33L,PDstandardNth13gt22)),kmadd(dJ123L,PDstandardNth1gt22,kmadd(J23L,kmadd(J22L,PDstandardNth22gt22,kmul(J32L,PDstandardNth23gt22)),kmadd(dJ223L,PDstandardNth2gt22,kmadd(J33L,kmadd(J22L,PDstandardNth23gt22,kmul(J32L,PDstandardNth33gt22)),kmul(dJ323L,PDstandardNth3gt22)))))));
+
+ JacPDstandardNth32gt23 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11gt23,kmadd(J22L,PDstandardNth12gt23,kmul(J32L,PDstandardNth13gt23))),kmadd(J12L,kmadd(J23L,PDstandardNth12gt23,kmul(J33L,PDstandardNth13gt23)),kmadd(dJ123L,PDstandardNth1gt23,kmadd(J23L,kmadd(J22L,PDstandardNth22gt23,kmul(J32L,PDstandardNth23gt23)),kmadd(dJ223L,PDstandardNth2gt23,kmadd(J33L,kmadd(J22L,PDstandardNth23gt23,kmul(J32L,PDstandardNth33gt23)),kmul(dJ323L,PDstandardNth3gt23)))))));
+
+ JacPDstandardNth32gt33 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11gt33,kmadd(J22L,PDstandardNth12gt33,kmul(J32L,PDstandardNth13gt33))),kmadd(J12L,kmadd(J23L,PDstandardNth12gt33,kmul(J33L,PDstandardNth13gt33)),kmadd(dJ123L,PDstandardNth1gt33,kmadd(J23L,kmadd(J22L,PDstandardNth22gt33,kmul(J32L,PDstandardNth23gt33)),kmadd(dJ223L,PDstandardNth2gt33,kmadd(J33L,kmadd(J22L,PDstandardNth23gt33,kmul(J32L,PDstandardNth33gt33)),kmul(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_VEC detgt = ToReal(1);
+
+ CCTK_REAL_VEC gtu11 =
+ kmul(INV(detgt),kmsub(gt22L,gt33L,SQR(gt23L)));
+
+ CCTK_REAL_VEC gtu12 =
+ kmul(INV(detgt),kmsub(gt13L,gt23L,kmul(gt12L,gt33L)));
+
+ CCTK_REAL_VEC gtu13 =
+ kmul(INV(detgt),kmsub(gt12L,gt23L,kmul(gt13L,gt22L)));
+
+ CCTK_REAL_VEC gtu22 =
+ kmul(INV(detgt),kmsub(gt11L,gt33L,SQR(gt13L)));
+
+ CCTK_REAL_VEC gtu23 =
+ kmul(INV(detgt),kmsub(gt12L,gt13L,kmul(gt11L,gt23L)));
+
+ CCTK_REAL_VEC gtu33 =
+ kmul(INV(detgt),kmsub(gt11L,gt22L,SQR(gt12L)));
+
+ CCTK_REAL_VEC Gtl111 = kmul(JacPDstandardNth1gt11,ToReal(0.5));
+
+ CCTK_REAL_VEC Gtl112 = kmul(JacPDstandardNth2gt11,ToReal(0.5));
+
+ CCTK_REAL_VEC Gtl113 = kmul(JacPDstandardNth3gt11,ToReal(0.5));
+
+ CCTK_REAL_VEC Gtl122 =
+ kmadd(JacPDstandardNth1gt22,ToReal(-0.5),JacPDstandardNth2gt12);
+
+ CCTK_REAL_VEC Gtl123 =
+ kmul(kadd(JacPDstandardNth2gt13,ksub(JacPDstandardNth3gt12,JacPDstandardNth1gt23)),ToReal(0.5));
+
+ CCTK_REAL_VEC Gtl133 =
+ kmadd(JacPDstandardNth1gt33,ToReal(-0.5),JacPDstandardNth3gt13);
+
+ CCTK_REAL_VEC Gtl211 =
+ kmadd(JacPDstandardNth2gt11,ToReal(-0.5),JacPDstandardNth1gt12);
+
+ CCTK_REAL_VEC Gtl212 = kmul(JacPDstandardNth1gt22,ToReal(0.5));
+
+ CCTK_REAL_VEC Gtl213 =
+ kmul(kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth3gt12,JacPDstandardNth2gt13)),ToReal(0.5));
+
+ CCTK_REAL_VEC Gtl222 = kmul(JacPDstandardNth2gt22,ToReal(0.5));
+
+ CCTK_REAL_VEC Gtl223 = kmul(JacPDstandardNth3gt22,ToReal(0.5));
+
+ CCTK_REAL_VEC Gtl233 =
+ kmadd(JacPDstandardNth2gt33,ToReal(-0.5),JacPDstandardNth3gt23);
+
+ CCTK_REAL_VEC Gtl311 =
+ kmadd(JacPDstandardNth3gt11,ToReal(-0.5),JacPDstandardNth1gt13);
+
+ CCTK_REAL_VEC Gtl312 =
+ kmul(kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth2gt13,JacPDstandardNth3gt12)),ToReal(0.5));
+
+ CCTK_REAL_VEC Gtl313 = kmul(JacPDstandardNth1gt33,ToReal(0.5));
+
+ CCTK_REAL_VEC Gtl322 =
+ kmadd(JacPDstandardNth3gt22,ToReal(-0.5),JacPDstandardNth2gt23);
+
+ CCTK_REAL_VEC Gtl323 = kmul(JacPDstandardNth2gt33,ToReal(0.5));
+
+ CCTK_REAL_VEC Gtl333 = kmul(JacPDstandardNth3gt33,ToReal(0.5));
+
+ CCTK_REAL_VEC Gtlu111 =
+ kmadd(Gtl111,gtu11,kmadd(Gtl112,gtu12,kmul(Gtl113,gtu13)));
+
+ CCTK_REAL_VEC Gtlu112 =
+ kmadd(Gtl111,gtu12,kmadd(Gtl112,gtu22,kmul(Gtl113,gtu23)));
+
+ CCTK_REAL_VEC Gtlu113 =
+ kmadd(Gtl111,gtu13,kmadd(Gtl112,gtu23,kmul(Gtl113,gtu33)));
+
+ CCTK_REAL_VEC Gtlu121 =
+ kmadd(Gtl112,gtu11,kmadd(Gtl122,gtu12,kmul(Gtl123,gtu13)));
+
+ CCTK_REAL_VEC Gtlu122 =
+ kmadd(Gtl112,gtu12,kmadd(Gtl122,gtu22,kmul(Gtl123,gtu23)));
+
+ CCTK_REAL_VEC Gtlu123 =
+ kmadd(Gtl112,gtu13,kmadd(Gtl122,gtu23,kmul(Gtl123,gtu33)));
+
+ CCTK_REAL_VEC Gtlu131 =
+ kmadd(Gtl113,gtu11,kmadd(Gtl123,gtu12,kmul(Gtl133,gtu13)));
+
+ CCTK_REAL_VEC Gtlu132 =
+ kmadd(Gtl113,gtu12,kmadd(Gtl123,gtu22,kmul(Gtl133,gtu23)));
+
+ CCTK_REAL_VEC Gtlu133 =
+ kmadd(Gtl113,gtu13,kmadd(Gtl123,gtu23,kmul(Gtl133,gtu33)));
+
+ CCTK_REAL_VEC Gtlu211 =
+ kmadd(Gtl211,gtu11,kmadd(Gtl212,gtu12,kmul(Gtl213,gtu13)));
+
+ CCTK_REAL_VEC Gtlu212 =
+ kmadd(Gtl211,gtu12,kmadd(Gtl212,gtu22,kmul(Gtl213,gtu23)));
+
+ CCTK_REAL_VEC Gtlu213 =
+ kmadd(Gtl211,gtu13,kmadd(Gtl212,gtu23,kmul(Gtl213,gtu33)));
+
+ CCTK_REAL_VEC Gtlu221 =
+ kmadd(Gtl212,gtu11,kmadd(Gtl222,gtu12,kmul(Gtl223,gtu13)));
+
+ CCTK_REAL_VEC Gtlu222 =
+ kmadd(Gtl212,gtu12,kmadd(Gtl222,gtu22,kmul(Gtl223,gtu23)));
+
+ CCTK_REAL_VEC Gtlu223 =
+ kmadd(Gtl212,gtu13,kmadd(Gtl222,gtu23,kmul(Gtl223,gtu33)));
+
+ CCTK_REAL_VEC Gtlu231 =
+ kmadd(Gtl213,gtu11,kmadd(Gtl223,gtu12,kmul(Gtl233,gtu13)));
+
+ CCTK_REAL_VEC Gtlu232 =
+ kmadd(Gtl213,gtu12,kmadd(Gtl223,gtu22,kmul(Gtl233,gtu23)));
+
+ CCTK_REAL_VEC Gtlu233 =
+ kmadd(Gtl213,gtu13,kmadd(Gtl223,gtu23,kmul(Gtl233,gtu33)));
+
+ CCTK_REAL_VEC Gtlu311 =
+ kmadd(Gtl311,gtu11,kmadd(Gtl312,gtu12,kmul(Gtl313,gtu13)));
+
+ CCTK_REAL_VEC Gtlu312 =
+ kmadd(Gtl311,gtu12,kmadd(Gtl312,gtu22,kmul(Gtl313,gtu23)));
+
+ CCTK_REAL_VEC Gtlu313 =
+ kmadd(Gtl311,gtu13,kmadd(Gtl312,gtu23,kmul(Gtl313,gtu33)));
+
+ CCTK_REAL_VEC Gtlu321 =
+ kmadd(Gtl312,gtu11,kmadd(Gtl322,gtu12,kmul(Gtl323,gtu13)));
+
+ CCTK_REAL_VEC Gtlu322 =
+ kmadd(Gtl312,gtu12,kmadd(Gtl322,gtu22,kmul(Gtl323,gtu23)));
+
+ CCTK_REAL_VEC Gtlu323 =
+ kmadd(Gtl312,gtu13,kmadd(Gtl322,gtu23,kmul(Gtl323,gtu33)));
+
+ CCTK_REAL_VEC Gtlu331 =
+ kmadd(Gtl313,gtu11,kmadd(Gtl323,gtu12,kmul(Gtl333,gtu13)));
+
+ CCTK_REAL_VEC Gtlu332 =
+ kmadd(Gtl313,gtu12,kmadd(Gtl323,gtu22,kmul(Gtl333,gtu23)));
+
+ CCTK_REAL_VEC Gtlu333 =
+ kmadd(Gtl313,gtu13,kmadd(Gtl323,gtu23,kmul(Gtl333,gtu33)));
+
+ CCTK_REAL_VEC Gt111 =
+ kmadd(Gtl111,gtu11,kmadd(Gtl211,gtu12,kmul(Gtl311,gtu13)));
+
+ CCTK_REAL_VEC Gt211 =
+ kmadd(Gtl111,gtu12,kmadd(Gtl211,gtu22,kmul(Gtl311,gtu23)));
+
+ CCTK_REAL_VEC Gt311 =
+ kmadd(Gtl111,gtu13,kmadd(Gtl211,gtu23,kmul(Gtl311,gtu33)));
+
+ CCTK_REAL_VEC Gt112 =
+ kmadd(Gtl112,gtu11,kmadd(Gtl212,gtu12,kmul(Gtl312,gtu13)));
+
+ CCTK_REAL_VEC Gt212 =
+ kmadd(Gtl112,gtu12,kmadd(Gtl212,gtu22,kmul(Gtl312,gtu23)));
+
+ CCTK_REAL_VEC Gt312 =
+ kmadd(Gtl112,gtu13,kmadd(Gtl212,gtu23,kmul(Gtl312,gtu33)));
+
+ CCTK_REAL_VEC Gt113 =
+ kmadd(Gtl113,gtu11,kmadd(Gtl213,gtu12,kmul(Gtl313,gtu13)));
+
+ CCTK_REAL_VEC Gt213 =
+ kmadd(Gtl113,gtu12,kmadd(Gtl213,gtu22,kmul(Gtl313,gtu23)));
+
+ CCTK_REAL_VEC Gt313 =
+ kmadd(Gtl113,gtu13,kmadd(Gtl213,gtu23,kmul(Gtl313,gtu33)));
+
+ CCTK_REAL_VEC Gt122 =
+ kmadd(Gtl122,gtu11,kmadd(Gtl222,gtu12,kmul(Gtl322,gtu13)));
+
+ CCTK_REAL_VEC Gt222 =
+ kmadd(Gtl122,gtu12,kmadd(Gtl222,gtu22,kmul(Gtl322,gtu23)));
+
+ CCTK_REAL_VEC Gt322 =
+ kmadd(Gtl122,gtu13,kmadd(Gtl222,gtu23,kmul(Gtl322,gtu33)));
+
+ CCTK_REAL_VEC Gt123 =
+ kmadd(Gtl123,gtu11,kmadd(Gtl223,gtu12,kmul(Gtl323,gtu13)));
+
+ CCTK_REAL_VEC Gt223 =
+ kmadd(Gtl123,gtu12,kmadd(Gtl223,gtu22,kmul(Gtl323,gtu23)));
+
+ CCTK_REAL_VEC Gt323 =
+ kmadd(Gtl123,gtu13,kmadd(Gtl223,gtu23,kmul(Gtl323,gtu33)));
+
+ CCTK_REAL_VEC Gt133 =
+ kmadd(Gtl133,gtu11,kmadd(Gtl233,gtu12,kmul(Gtl333,gtu13)));
+
+ CCTK_REAL_VEC Gt233 =
+ kmadd(Gtl133,gtu12,kmadd(Gtl233,gtu22,kmul(Gtl333,gtu23)));
+
+ CCTK_REAL_VEC Gt333 =
+ kmadd(Gtl133,gtu13,kmadd(Gtl233,gtu23,kmul(Gtl333,gtu33)));
+
+ CCTK_REAL_VEC Xtn1 =
+ kmadd(Gt111,gtu11,kmadd(Gt122,gtu22,kmadd(Gt133,gtu33,kmul(kmadd(Gt112,gtu12,kmadd(Gt113,gtu13,kmul(Gt123,gtu23))),ToReal(2)))));
+
+ CCTK_REAL_VEC Xtn2 =
+ kmadd(Gt211,gtu11,kmadd(Gt222,gtu22,kmadd(Gt233,gtu33,kmul(kmadd(Gt212,gtu12,kmadd(Gt213,gtu13,kmul(Gt223,gtu23))),ToReal(2)))));
+
+ CCTK_REAL_VEC Xtn3 =
+ kmadd(Gt311,gtu11,kmadd(Gt322,gtu22,kmadd(Gt333,gtu33,kmul(kmadd(Gt312,gtu12,kmadd(Gt313,gtu13,kmul(Gt323,gtu23))),ToReal(2)))));
+
+ CCTK_REAL_VEC e4phi = IfThen(conformalMethod ==
+ 1,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
+
+ CCTK_REAL_VEC em4phi = INV(e4phi);
+
+ CCTK_REAL_VEC g11 = kmul(gt11L,e4phi);
+
+ CCTK_REAL_VEC g12 = kmul(gt12L,e4phi);
+
+ CCTK_REAL_VEC g13 = kmul(gt13L,e4phi);
+
+ CCTK_REAL_VEC g22 = kmul(gt22L,e4phi);
+
+ CCTK_REAL_VEC g23 = kmul(gt23L,e4phi);
+
+ CCTK_REAL_VEC g33 = kmul(gt33L,e4phi);
+
+ CCTK_REAL_VEC gu11 = kmul(em4phi,gtu11);
+
+ CCTK_REAL_VEC gu12 = kmul(em4phi,gtu12);
+
+ CCTK_REAL_VEC gu13 = kmul(em4phi,gtu13);
+
+ CCTK_REAL_VEC gu22 = kmul(em4phi,gtu22);
+
+ CCTK_REAL_VEC gu23 = kmul(em4phi,gtu23);
+
+ CCTK_REAL_VEC gu33 = kmul(em4phi,gtu33);
+
+ CCTK_REAL_VEC Z1 =
+ kneg(kmul(kmadd(gu11,kmadd(gtu11,JacPDstandardNth1gt11,kmadd(gtu13,JacPDstandardNth1gt13,kmadd(gtu12,kadd(JacPDstandardNth1gt12,JacPDstandardNth2gt11),kmadd(gtu22,JacPDstandardNth2gt12,kmadd(gtu23,JacPDstandardNth2gt13,kmadd(gtu13,JacPDstandardNth3gt11,kmadd(gtu23,JacPDstandardNth3gt12,kmsub(gtu33,JacPDstandardNth3gt13,kmadd(gt11L,Xt1L,kmadd(gt13L,Xt3L,kmul(gt12L,Xt2L))))))))))),kmadd(gu13,kmadd(gtu11,JacPDstandardNth1gt13,kmadd(gtu13,JacPDstandardNth1gt33,kmadd(gtu12,kadd(JacPDstandardNth1gt23,JacPDstandardNth2gt13),kmadd(gtu22,JacPDstandardNth2gt23,kmadd(gtu23,JacPDstandardNth2gt33,kmadd(gtu13,JacPDstandardNth3gt13,kmadd(gtu23,JacPDstandardNth3gt23,kmsub(gtu33,JacPDstandardNth3gt33,kmadd(gt13L,Xt1L,kmadd(gt33L,Xt3L,kmul(gt23L,Xt2L))))))))))),kmul(gu12,kmadd(gtu11,JacPDstandardNth1gt12,kmadd(gtu13,JacPDstandardNth1gt23,kmadd(gtu12,kadd(JacPDstandardNth1gt22,JacPDstandardNth2gt12),kmadd(gtu22,JacPDstandardNth2gt22,kmadd(gtu23,JacPDstandardNth2gt23,kmadd(gtu13,JacPDstandardNth3gt12,kmadd(gtu23,JacPDstandardNth3gt22,kmsub(gtu33,JacPDstandardNth3gt23,kmadd(gt12L,Xt1L,kmadd(gt23L,Xt3L,kmul(gt22L,Xt2L)))))))))))))),ToReal(0.5)));
+
+ CCTK_REAL_VEC Z2 =
+ kneg(kmul(kmadd(gu12,kmadd(gtu11,JacPDstandardNth1gt11,kmadd(gtu13,JacPDstandardNth1gt13,kmadd(gtu12,kadd(JacPDstandardNth1gt12,JacPDstandardNth2gt11),kmadd(gtu22,JacPDstandardNth2gt12,kmadd(gtu23,JacPDstandardNth2gt13,kmadd(gtu13,JacPDstandardNth3gt11,kmadd(gtu23,JacPDstandardNth3gt12,kmsub(gtu33,JacPDstandardNth3gt13,kmadd(gt11L,Xt1L,kmadd(gt13L,Xt3L,kmul(gt12L,Xt2L))))))))))),kmadd(gu23,kmadd(gtu11,JacPDstandardNth1gt13,kmadd(gtu13,JacPDstandardNth1gt33,kmadd(gtu12,kadd(JacPDstandardNth1gt23,JacPDstandardNth2gt13),kmadd(gtu22,JacPDstandardNth2gt23,kmadd(gtu23,JacPDstandardNth2gt33,kmadd(gtu13,JacPDstandardNth3gt13,kmadd(gtu23,JacPDstandardNth3gt23,kmsub(gtu33,JacPDstandardNth3gt33,kmadd(gt13L,Xt1L,kmadd(gt33L,Xt3L,kmul(gt23L,Xt2L))))))))))),kmul(gu22,kmadd(gtu11,JacPDstandardNth1gt12,kmadd(gtu13,JacPDstandardNth1gt23,kmadd(gtu12,kadd(JacPDstandardNth1gt22,JacPDstandardNth2gt12),kmadd(gtu22,JacPDstandardNth2gt22,kmadd(gtu23,JacPDstandardNth2gt23,kmadd(gtu13,JacPDstandardNth3gt12,kmadd(gtu23,JacPDstandardNth3gt22,kmsub(gtu33,JacPDstandardNth3gt23,kmadd(gt12L,Xt1L,kmadd(gt23L,Xt3L,kmul(gt22L,Xt2L)))))))))))))),ToReal(0.5)));
+
+ CCTK_REAL_VEC Z3 =
+ kneg(kmul(kmadd(gu13,kmadd(gtu11,JacPDstandardNth1gt11,kmadd(gtu13,JacPDstandardNth1gt13,kmadd(gtu12,kadd(JacPDstandardNth1gt12,JacPDstandardNth2gt11),kmadd(gtu22,JacPDstandardNth2gt12,kmadd(gtu23,JacPDstandardNth2gt13,kmadd(gtu13,JacPDstandardNth3gt11,kmadd(gtu23,JacPDstandardNth3gt12,kmsub(gtu33,JacPDstandardNth3gt13,kmadd(gt11L,Xt1L,kmadd(gt13L,Xt3L,kmul(gt12L,Xt2L))))))))))),kmadd(gu33,kmadd(gtu11,JacPDstandardNth1gt13,kmadd(gtu13,JacPDstandardNth1gt33,kmadd(gtu12,kadd(JacPDstandardNth1gt23,JacPDstandardNth2gt13),kmadd(gtu22,JacPDstandardNth2gt23,kmadd(gtu23,JacPDstandardNth2gt33,kmadd(gtu13,JacPDstandardNth3gt13,kmadd(gtu23,JacPDstandardNth3gt23,kmsub(gtu33,JacPDstandardNth3gt33,kmadd(gt13L,Xt1L,kmadd(gt33L,Xt3L,kmul(gt23L,Xt2L))))))))))),kmul(gu23,kmadd(gtu11,JacPDstandardNth1gt12,kmadd(gtu13,JacPDstandardNth1gt23,kmadd(gtu12,kadd(JacPDstandardNth1gt22,JacPDstandardNth2gt12),kmadd(gtu22,JacPDstandardNth2gt22,kmadd(gtu23,JacPDstandardNth2gt23,kmadd(gtu13,JacPDstandardNth3gt12,kmadd(gtu23,JacPDstandardNth3gt22,kmsub(gtu33,JacPDstandardNth3gt23,kmadd(gt12L,Xt1L,kmadd(gt23L,Xt3L,kmul(gt22L,Xt2L)))))))))))))),ToReal(0.5)));
+
+ CCTK_REAL_VEC Rt11 =
+ kmul(ToReal(0.5),knmsub(gtu11,JacPDstandardNth11gt11,knmsub(gtu22,JacPDstandardNth22gt11,knmsub(gtu33,JacPDstandardNth33gt11,knmsub(gtu12,kadd(JacPDstandardNth21gt11,JacPDstandardNth12gt11),knmsub(gtu13,kadd(JacPDstandardNth31gt11,JacPDstandardNth13gt11),knmsub(gtu23,kadd(JacPDstandardNth32gt11,JacPDstandardNth23gt11),kmadd(kmadd(Gt211,Gtlu211,kmadd(Gt212,Gtlu212,kmadd(Gt213,Gtlu213,kmadd(Gt311,Gtlu311,kmadd(Gt312,Gtlu312,kmadd(Gt313,Gtlu313,kmul(gt11L,JacPDstandardNth1Xt1))))))),ToReal(2),kmadd(gt12L,kmul(JacPDstandardNth1Xt2,ToReal(2)),kmadd(gt13L,kmul(JacPDstandardNth1Xt3,ToReal(2)),kmadd(Gtl111,kmul(Xtn1,ToReal(2)),kmadd(Gtl112,kmul(Xtn2,ToReal(2)),kmadd(Gtl113,kmul(Xtn3,ToReal(2)),kmadd(kmadd(Gt211,Gtlu121,kmadd(Gt212,Gtlu122,kmadd(Gt213,Gtlu123,kmadd(Gt311,Gtlu131,kmadd(Gt312,Gtlu132,kmul(Gt313,Gtlu133)))))),ToReal(4),kmul(kmadd(Gt111,Gtlu111,kmadd(Gt112,Gtlu112,kmul(Gt113,Gtlu113))),ToReal(6))))))))))))))));
+
+ CCTK_REAL_VEC Rt12 =
+ kmul(ToReal(0.5),kmadd(gt12L,JacPDstandardNth1Xt1,kmadd(gt22L,JacPDstandardNth1Xt2,kmadd(gt23L,JacPDstandardNth1Xt3,kmadd(gt11L,JacPDstandardNth2Xt1,kmadd(gt12L,JacPDstandardNth2Xt2,kmadd(gt13L,JacPDstandardNth2Xt3,kmadd(Gtl112,Xtn1,kmadd(Gtl211,Xtn1,kmadd(Gtl122,Xtn2,kmadd(Gtl212,Xtn2,kmadd(Gtl123,Xtn3,kmadd(Gtl213,Xtn3,knmsub(gtu11,JacPDstandardNth11gt12,knmsub(gtu22,JacPDstandardNth22gt12,knmsub(gtu33,JacPDstandardNth33gt12,knmsub(gtu12,kadd(JacPDstandardNth21gt12,JacPDstandardNth12gt12),knmsub(gtu13,kadd(JacPDstandardNth31gt12,JacPDstandardNth13gt12),knmsub(gtu23,kadd(JacPDstandardNth32gt12,JacPDstandardNth23gt12),kmadd(kmadd(Gt122,Gtlu112,kmadd(Gt123,Gtlu113,kmadd(Gt111,Gtlu121,kmadd(Gt212,Gtlu121,kmadd(Gt222,Gtlu122,kmadd(Gt113,Gtlu123,kmadd(Gt223,Gtlu123,kmadd(Gt312,Gtlu131,kmadd(Gt322,Gtlu132,kmadd(Gt323,Gtlu133,kmadd(Gt111,Gtlu211,kmadd(Gt112,kadd(Gtlu111,kadd(Gtlu122,Gtlu212)),kmadd(Gt113,Gtlu213,kmadd(Gt311,Gtlu231,kmadd(Gt312,Gtlu232,kmadd(Gt313,Gtlu233,kmadd(Gt311,Gtlu321,kmadd(Gt312,Gtlu322,kmul(Gt313,Gtlu323))))))))))))))))))),ToReal(2),kmul(kmadd(Gt211,Gtlu221,kmadd(Gt212,Gtlu222,kmul(Gt213,Gtlu223))),ToReal(4))))))))))))))))))))));
+
+ CCTK_REAL_VEC Rt13 =
+ kmul(ToReal(0.5),kmadd(gt13L,JacPDstandardNth1Xt1,kmadd(gt23L,JacPDstandardNth1Xt2,kmadd(gt33L,JacPDstandardNth1Xt3,kmadd(gt11L,JacPDstandardNth3Xt1,kmadd(gt12L,JacPDstandardNth3Xt2,kmadd(gt13L,JacPDstandardNth3Xt3,kmadd(Gtl113,Xtn1,kmadd(Gtl311,Xtn1,kmadd(Gtl123,Xtn2,kmadd(Gtl312,Xtn2,kmadd(Gtl133,Xtn3,kmadd(Gtl313,Xtn3,knmsub(gtu11,JacPDstandardNth11gt13,knmsub(gtu22,JacPDstandardNth22gt13,knmsub(gtu33,JacPDstandardNth33gt13,knmsub(gtu12,kadd(JacPDstandardNth21gt13,JacPDstandardNth12gt13),knmsub(gtu13,kadd(JacPDstandardNth31gt13,JacPDstandardNth13gt13),knmsub(gtu23,kadd(JacPDstandardNth32gt13,JacPDstandardNth23gt13),kmadd(kmadd(Gt123,Gtlu112,kmadd(Gt133,Gtlu113,kmadd(Gt213,Gtlu121,kmadd(Gt223,Gtlu122,kmadd(Gt233,Gtlu123,kmadd(Gt111,Gtlu131,kmadd(Gt313,Gtlu131,kmadd(Gt112,Gtlu132,kmadd(Gt323,Gtlu132,kmadd(Gt333,Gtlu133,kmadd(Gt211,Gtlu231,kmadd(Gt212,Gtlu232,kmadd(Gt213,Gtlu233,kmadd(Gt111,Gtlu311,kmadd(Gt112,Gtlu312,kmadd(Gt113,kadd(Gtlu111,kadd(Gtlu133,Gtlu313)),kmadd(Gt211,Gtlu321,kmadd(Gt212,Gtlu322,kmul(Gt213,Gtlu323))))))))))))))))))),ToReal(2),kmul(kmadd(Gt311,Gtlu331,kmadd(Gt312,Gtlu332,kmul(Gt313,Gtlu333))),ToReal(4))))))))))))))))))))));
+
+ CCTK_REAL_VEC Rt22 =
+ kmul(ToReal(0.5),knmsub(gtu11,JacPDstandardNth11gt22,knmsub(gtu22,JacPDstandardNth22gt22,knmsub(gtu33,JacPDstandardNth33gt22,knmsub(gtu12,kadd(JacPDstandardNth21gt22,JacPDstandardNth12gt22),knmsub(gtu13,kadd(JacPDstandardNth31gt22,JacPDstandardNth13gt22),knmsub(gtu23,kadd(JacPDstandardNth32gt22,JacPDstandardNth23gt22),kmadd(gt22L,kmul(JacPDstandardNth2Xt2,ToReal(2)),kmadd(gt23L,kmul(JacPDstandardNth2Xt3,ToReal(2)),kmadd(Gtl212,kmul(Xtn1,ToReal(2)),kmadd(Gtl222,kmul(Xtn2,ToReal(2)),kmadd(Gtl223,kmul(Xtn3,ToReal(2)),kmadd(ToReal(2),kmadd(Gt123,Gtlu123,kmadd(Gt312,Gtlu321,kmadd(Gt322,Gtlu322,kmadd(Gt323,Gtlu323,kmadd(gt12L,JacPDstandardNth2Xt1,kmadd(Gt112,kmadd(Gtlu211,ToReal(2),Gtlu121),kmul(Gt122,kmadd(Gtlu212,ToReal(2),Gtlu122)))))))),kmadd(kmadd(Gt123,Gtlu213,kmadd(Gt312,Gtlu231,kmadd(Gt322,Gtlu232,kmul(Gt323,Gtlu233)))),ToReal(4),kmul(kmadd(Gt212,Gtlu221,kmadd(Gt222,Gtlu222,kmul(Gt223,Gtlu223))),ToReal(6))))))))))))))));
+
+ CCTK_REAL_VEC Rt23 =
+ kmul(ToReal(0.5),kmadd(gt13L,JacPDstandardNth2Xt1,kmadd(gt23L,JacPDstandardNth2Xt2,kmadd(gt33L,JacPDstandardNth2Xt3,kmadd(gt12L,JacPDstandardNth3Xt1,kmadd(gt22L,JacPDstandardNth3Xt2,kmadd(gt23L,JacPDstandardNth3Xt3,kmadd(Gtl213,Xtn1,kmadd(Gtl312,Xtn1,kmadd(Gtl223,Xtn2,kmadd(Gtl322,Xtn2,kmadd(Gtl233,Xtn3,kmadd(Gtl323,Xtn3,knmsub(gtu11,JacPDstandardNth11gt23,knmsub(gtu22,JacPDstandardNth22gt23,knmsub(gtu33,JacPDstandardNth33gt23,knmsub(gtu12,kadd(JacPDstandardNth21gt23,JacPDstandardNth12gt23),knmsub(gtu13,kadd(JacPDstandardNth31gt23,JacPDstandardNth13gt23),knmsub(gtu23,kadd(JacPDstandardNth32gt23,JacPDstandardNth23gt23),kmadd(kmadd(Gt123,Gtlu133,kmadd(Gt113,Gtlu211,kmadd(Gt123,Gtlu212,kmadd(Gt133,Gtlu213,kmadd(Gt213,Gtlu221,kmadd(Gt223,Gtlu222,kmadd(Gt233,Gtlu223,kmadd(Gt212,Gtlu231,kmadd(Gt313,Gtlu231,kmadd(Gt222,Gtlu232,kmadd(Gt323,Gtlu232,kmadd(Gt223,Gtlu233,kmadd(Gt333,Gtlu233,kmadd(Gt112,kadd(Gtlu131,Gtlu311),kmadd(Gt122,kadd(Gtlu132,Gtlu312),kmadd(Gt123,Gtlu313,kmadd(Gt212,Gtlu321,kmadd(Gt222,Gtlu322,kmul(Gt223,Gtlu323))))))))))))))))))),ToReal(2),kmul(kmadd(Gt312,Gtlu331,kmadd(Gt322,Gtlu332,kmul(Gt323,Gtlu333))),ToReal(4))))))))))))))))))))));
+
+ CCTK_REAL_VEC Rt33 =
+ kmul(ToReal(0.5),knmsub(gtu11,JacPDstandardNth11gt33,knmsub(gtu22,JacPDstandardNth22gt33,knmsub(gtu33,JacPDstandardNth33gt33,knmsub(gtu12,kadd(JacPDstandardNth21gt33,JacPDstandardNth12gt33),knmsub(gtu13,kadd(JacPDstandardNth31gt33,JacPDstandardNth13gt33),knmsub(gtu23,kadd(JacPDstandardNth32gt33,JacPDstandardNth23gt33),kmadd(gt23L,kmul(JacPDstandardNth3Xt2,ToReal(2)),kmadd(gt33L,kmul(JacPDstandardNth3Xt3,ToReal(2)),kmadd(Gtl313,kmul(Xtn1,ToReal(2)),kmadd(Gtl323,kmul(Xtn2,ToReal(2)),kmadd(Gtl333,kmul(Xtn3,ToReal(2)),kmadd(ToReal(2),kmadd(Gt133,Gtlu133,kmadd(Gt213,Gtlu231,kmadd(Gt223,Gtlu232,kmadd(Gt233,Gtlu233,kmadd(gt13L,JacPDstandardNth3Xt1,kmadd(Gt113,kmadd(Gtlu311,ToReal(2),Gtlu131),kmul(Gt123,kmadd(Gtlu312,ToReal(2),Gtlu132)))))))),kmadd(kmadd(Gt133,Gtlu313,kmadd(Gt213,Gtlu321,kmadd(Gt223,Gtlu322,kmul(Gt233,Gtlu323)))),ToReal(4),kmul(kmadd(Gt313,Gtlu331,kmadd(Gt323,Gtlu332,kmul(Gt333,Gtlu333))),ToReal(6))))))))))))))));
+
+ CCTK_REAL_VEC fac1 = IfThen(conformalMethod ==
+ 1,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
+
+ CCTK_REAL_VEC cdphi1 = kmul(fac1,JacPDstandardNth1phi);
+
+ CCTK_REAL_VEC cdphi2 = kmul(fac1,JacPDstandardNth2phi);
+
+ CCTK_REAL_VEC cdphi3 = kmul(fac1,JacPDstandardNth3phi);
+
+ CCTK_REAL_VEC fac2 = IfThen(conformalMethod ==
+ 1,kmul(INV(SQR(phiL)),ToReal(0.5)),ToReal(0));
+
+ CCTK_REAL_VEC cdphi211 =
+ kmadd(fac2,SQR(JacPDstandardNth1phi),kmul(fac1,ksub(JacPDstandardNth11phi,kmadd(Gt111,JacPDstandardNth1phi,kmadd(Gt311,JacPDstandardNth3phi,kmul(Gt211,JacPDstandardNth2phi))))));
+
+ CCTK_REAL_VEC cdphi212 =
+ kmadd(fac2,kmul(JacPDstandardNth1phi,JacPDstandardNth2phi),kmul(fac1,ksub(JacPDstandardNth12phi,kmadd(Gt112,JacPDstandardNth1phi,kmadd(Gt312,JacPDstandardNth3phi,kmul(Gt212,JacPDstandardNth2phi))))));
+
+ CCTK_REAL_VEC cdphi213 =
+ kmadd(fac2,kmul(JacPDstandardNth1phi,JacPDstandardNth3phi),kmul(fac1,ksub(JacPDstandardNth13phi,kmadd(Gt113,JacPDstandardNth1phi,kmadd(Gt313,JacPDstandardNth3phi,kmul(Gt213,JacPDstandardNth2phi))))));
+
+ CCTK_REAL_VEC cdphi222 =
+ kmsub(fac2,SQR(JacPDstandardNth2phi),kmul(fac1,kmadd(Gt122,JacPDstandardNth1phi,kmadd(Gt222,JacPDstandardNth2phi,kmsub(Gt322,JacPDstandardNth3phi,JacPDstandardNth22phi)))));
+
+ CCTK_REAL_VEC cdphi223 =
+ kmsub(fac2,kmul(JacPDstandardNth2phi,JacPDstandardNth3phi),kmul(fac1,kmadd(Gt123,JacPDstandardNth1phi,kmadd(Gt223,JacPDstandardNth2phi,kmsub(Gt323,JacPDstandardNth3phi,JacPDstandardNth23phi)))));
+
+ CCTK_REAL_VEC cdphi233 =
+ kmsub(fac2,SQR(JacPDstandardNth3phi),kmul(fac1,kmadd(Gt133,JacPDstandardNth1phi,kmadd(Gt233,JacPDstandardNth2phi,kmsub(Gt333,JacPDstandardNth3phi,JacPDstandardNth33phi)))));
+
+ CCTK_REAL_VEC Rphi11 =
+ kmul(ToReal(-2),kadd(cdphi211,kmadd(SQR(cdphi1),kmul(kmadd(gt11L,gtu11,ToReal(-1)),ToReal(2)),kmul(gt11L,kmadd(cdphi211,gtu11,kmadd(cdphi233,gtu33,kmadd(kmadd(cdphi212,gtu12,kmadd(cdphi213,gtu13,kmadd(cdphi223,gtu23,kmul(gtu33,SQR(cdphi3))))),ToReal(2),kmadd(gtu22,kmadd(SQR(cdphi2),ToReal(2),cdphi222),kmul(kmadd(cdphi1,kmadd(cdphi2,gtu12,kmul(cdphi3,gtu13)),kmul(cdphi2,kmul(cdphi3,gtu23))),ToReal(4))))))))));
+
+ CCTK_REAL_VEC Rphi12 =
+ kmul(ToReal(-2),kadd(cdphi212,kmadd(gt12L,kmadd(cdphi211,gtu11,kmadd(kmadd(cdphi212,gtu12,kmadd(cdphi213,gtu13,kmadd(cdphi223,gtu23,kmul(gtu11,SQR(cdphi1))))),ToReal(2),kmadd(gtu22,kmadd(SQR(cdphi2),ToReal(2),cdphi222),kmadd(gtu33,kmadd(SQR(cdphi3),ToReal(2),cdphi233),kmul(cdphi2,kmul(cdphi3,kmul(gtu23,ToReal(4)))))))),kmul(cdphi1,kmadd(gt12L,kmul(cdphi3,kmul(gtu13,ToReal(4))),kmul(cdphi2,kmadd(gt12L,kmul(gtu12,ToReal(4)),ToReal(-2))))))));
+
+ CCTK_REAL_VEC Rphi13 =
+ kmul(ToReal(-2),kadd(cdphi213,kmadd(gt13L,kmadd(cdphi211,gtu11,kmadd(kmadd(cdphi212,gtu12,kmadd(cdphi213,gtu13,kmadd(cdphi223,gtu23,kmul(gtu11,SQR(cdphi1))))),ToReal(2),kmadd(gtu22,kmadd(SQR(cdphi2),ToReal(2),cdphi222),kmadd(gtu33,kmadd(SQR(cdphi3),ToReal(2),cdphi233),kmul(cdphi2,kmul(cdphi3,kmul(gtu23,ToReal(4)))))))),kmul(cdphi1,kmadd(gt13L,kmul(cdphi2,kmul(gtu12,ToReal(4))),kmul(cdphi3,kmadd(gt13L,kmul(gtu13,ToReal(4)),ToReal(-2))))))));
+
+ CCTK_REAL_VEC Rphi22 =
+ kmul(ToReal(-2),kadd(cdphi222,kmadd(SQR(cdphi2),kmul(kmadd(gt22L,gtu22,ToReal(-1)),ToReal(2)),kmul(gt22L,kmadd(cdphi222,gtu22,kmadd(cdphi233,gtu33,kmadd(kmadd(cdphi212,gtu12,kmadd(cdphi213,gtu13,kmadd(cdphi223,gtu23,kmul(gtu33,SQR(cdphi3))))),ToReal(2),kmadd(gtu11,kmadd(SQR(cdphi1),ToReal(2),cdphi211),kmul(kmadd(cdphi1,kmul(cdphi3,gtu13),kmul(cdphi2,kmadd(cdphi1,gtu12,kmul(cdphi3,gtu23)))),ToReal(4))))))))));
+
+ CCTK_REAL_VEC Rphi23 =
+ kmul(ToReal(-2),kadd(cdphi223,kmadd(gt23L,kmadd(cdphi222,gtu22,kmadd(kmadd(cdphi212,gtu12,kmadd(cdphi213,gtu13,kmadd(cdphi223,gtu23,kmul(gtu22,SQR(cdphi2))))),ToReal(2),kmadd(gtu11,kmadd(SQR(cdphi1),ToReal(2),cdphi211),kmadd(gtu33,kmadd(SQR(cdphi3),ToReal(2),cdphi233),kmul(cdphi1,kmul(cdphi3,kmul(gtu13,ToReal(4)))))))),kmul(cdphi2,kmadd(gt23L,kmul(cdphi1,kmul(gtu12,ToReal(4))),kmul(cdphi3,kmadd(gt23L,kmul(gtu23,ToReal(4)),ToReal(-2))))))));
+
+ CCTK_REAL_VEC Rphi33 =
+ kmul(ToReal(-2),kadd(cdphi233,kmadd(SQR(cdphi3),kmul(kmadd(gt33L,gtu33,ToReal(-1)),ToReal(2)),kmul(gt33L,kmadd(cdphi233,gtu33,kmadd(kmadd(cdphi213,gtu13,kmul(cdphi223,gtu23)),ToReal(2),kmadd(gtu11,kmadd(SQR(cdphi1),ToReal(2),cdphi211),kmadd(gtu22,kmadd(SQR(cdphi2),ToReal(2),cdphi222),kmadd(cdphi3,kmul(kmadd(cdphi1,gtu13,kmul(cdphi2,gtu23)),ToReal(4)),kmul(gtu12,kmadd(cdphi212,ToReal(2),kmul(cdphi1,kmul(cdphi2,ToReal(4))))))))))))));
+
+ CCTK_REAL_VEC R11 = kadd(Rphi11,Rt11);
+
+ CCTK_REAL_VEC R12 = kadd(Rphi12,Rt12);
+
+ CCTK_REAL_VEC R13 = kadd(Rphi13,Rt13);
+
+ CCTK_REAL_VEC R22 = kadd(Rphi22,Rt22);
+
+ CCTK_REAL_VEC R23 = kadd(Rphi23,Rt23);
+
+ CCTK_REAL_VEC R33 = kadd(Rphi33,Rt33);
+
+ R11 =
+ kmadd(e4phi,kmadd(JacPDstandardNth1gt11,Z1,kmadd(JacPDstandardNth2gt11,Z2,kmul(JacPDstandardNth3gt11,Z3))),kmul(INV(phiL),kmadd(g11,kmul(kmadd(JacPDstandardNth2phi,Z2,kmul(JacPDstandardNth3phi,Z3)),ToReal(-2)),kmul(JacPDstandardNth1phi,kmadd(g11,kmul(Z1,ToReal(2)),kmul(kmadd(g12,Z2,kmul(g13,Z3)),ToReal(4)))))));
+
+ R12 =
+ kmadd(e4phi,kmadd(JacPDstandardNth1gt12,Z1,kmadd(JacPDstandardNth2gt12,Z2,kmul(JacPDstandardNth3gt12,Z3))),kmul(INV(phiL),kmul(kmadd(JacPDstandardNth2phi,kmadd(g11,Z1,kmul(g13,Z3)),kmsub(JacPDstandardNth1phi,kmadd(g22,Z2,kmul(g23,Z3)),kmul(g12,kmul(JacPDstandardNth3phi,Z3)))),ToReal(2))));
+
+ R13 =
+ kmadd(e4phi,kmadd(JacPDstandardNth1gt13,Z1,kmadd(JacPDstandardNth2gt13,Z2,kmul(JacPDstandardNth3gt13,Z3))),kmul(INV(phiL),kmul(kmadd(JacPDstandardNth3phi,kmadd(g11,Z1,kmul(g12,Z2)),kmadd(g33,kmul(JacPDstandardNth1phi,Z3),kmul(Z2,kmsub(g23,JacPDstandardNth1phi,kmul(g13,JacPDstandardNth2phi))))),ToReal(2))));
+
+ R22 =
+ kmadd(e4phi,kmadd(JacPDstandardNth1gt22,Z1,kmadd(JacPDstandardNth2gt22,Z2,kmul(JacPDstandardNth3gt22,Z3))),kmul(INV(phiL),kmadd(g22,kmul(ToReal(-2),kmadd(JacPDstandardNth1phi,Z1,kmsub(JacPDstandardNth3phi,Z3,kmul(JacPDstandardNth2phi,Z2)))),kmul(JacPDstandardNth2phi,kmul(kmadd(g12,Z1,kmul(g23,Z3)),ToReal(4))))));
+
+ R23 =
+ kmadd(e4phi,kmadd(JacPDstandardNth1gt23,Z1,kmadd(JacPDstandardNth2gt23,Z2,kmul(JacPDstandardNth3gt23,Z3))),kmul(INV(phiL),kmul(kmadd(g22,kmul(JacPDstandardNth3phi,Z2),kmadd(g33,kmul(JacPDstandardNth2phi,Z3),kmul(Z1,kmadd(g13,JacPDstandardNth2phi,kmsub(g12,JacPDstandardNth3phi,kmul(g23,JacPDstandardNth1phi)))))),ToReal(2))));
+
+ R33 =
+ kmadd(e4phi,kmadd(JacPDstandardNth1gt33,Z1,kmadd(JacPDstandardNth2gt33,Z2,kmul(JacPDstandardNth3gt33,Z3))),kmul(INV(phiL),kmadd(g33,kmul(ToReal(-2),kmadd(JacPDstandardNth1phi,Z1,kmsub(JacPDstandardNth2phi,Z2,kmul(JacPDstandardNth3phi,Z3)))),kmul(JacPDstandardNth3phi,kmul(kmadd(g13,Z1,kmul(g23,Z2)),ToReal(4))))));
+
+ CCTK_REAL_VEC trR =
+ kmadd(gu11,R11,kmadd(gu22,R22,kmadd(gu33,R33,kmul(kmadd(gu12,R12,kmadd(gu13,R13,kmul(gu23,R23))),ToReal(2)))));
+
+ CCTK_REAL_VEC Atm11 =
+ kmadd(At11L,gtu11,kmadd(At12L,gtu12,kmul(At13L,gtu13)));
+
+ CCTK_REAL_VEC Atm21 =
+ kmadd(At11L,gtu12,kmadd(At12L,gtu22,kmul(At13L,gtu23)));
+
+ CCTK_REAL_VEC Atm31 =
+ kmadd(At11L,gtu13,kmadd(At12L,gtu23,kmul(At13L,gtu33)));
+
+ CCTK_REAL_VEC Atm12 =
+ kmadd(At12L,gtu11,kmadd(At22L,gtu12,kmul(At23L,gtu13)));
+
+ CCTK_REAL_VEC Atm22 =
+ kmadd(At12L,gtu12,kmadd(At22L,gtu22,kmul(At23L,gtu23)));
+
+ CCTK_REAL_VEC Atm32 =
+ kmadd(At12L,gtu13,kmadd(At22L,gtu23,kmul(At23L,gtu33)));
+
+ CCTK_REAL_VEC Atm13 =
+ kmadd(At13L,gtu11,kmadd(At23L,gtu12,kmul(At33L,gtu13)));
+
+ CCTK_REAL_VEC Atm23 =
+ kmadd(At13L,gtu12,kmadd(At23L,gtu22,kmul(At33L,gtu23)));
+
+ CCTK_REAL_VEC Atm33 =
+ kmadd(At13L,gtu13,kmadd(At23L,gtu23,kmul(At33L,gtu33)));
+
+ CCTK_REAL_VEC rho =
+ kmul(INV(SQR(alphaL)),kadd(eTttL,kmadd(eTxxL,SQR(beta1L),kmadd(eTyyL,SQR(beta2L),kmadd(eTzzL,SQR(beta3L),kmadd(kmadd(beta2L,eTtyL,kmul(beta3L,eTtzL)),ToReal(-2),kmul(kmadd(beta2L,kmul(beta3L,eTyzL),kmul(beta1L,kmadd(beta2L,eTxyL,kmsub(beta3L,eTxzL,eTtxL)))),ToReal(2))))))));
+
+ CCTK_REAL_VEC HL =
+ kadd(trR,kmadd(kmadd(Atm12,Atm21,kmadd(Atm13,Atm31,kmul(Atm23,Atm32))),ToReal(-2),ksub(ksub(ksub(kmadd(SQR(trKL),ToReal(0.666666666666666666666666666667),kmul(rho,kmul(ToReal(-16),ToReal(Pi)))),SQR(Atm33)),SQR(Atm22)),SQR(Atm11))));
+
+ /* Copy local copies back to grid functions */
+ vec_store_partial_prepare(i,lc_imin,lc_imax);
+ vec_store_nta_partial(H[index],HL);
+ }
+ LC_ENDLOOP3VEC(ML_CCZ4_constraints1);
+}
+
+extern "C" void ML_CCZ4_constraints1(CCTK_ARGUMENTS)
+{
+ DECLARE_CCTK_ARGUMENTS;
+ DECLARE_CCTK_PARAMETERS;
+
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_CCZ4_constraints1_Body");
+ }
+
+ if (cctk_iteration % ML_CCZ4_constraints1_calc_every != ML_CCZ4_constraints1_calc_offset)
+ {
+ return;
+ }
+
+ const char *const groups[] = {
+ "ML_CCZ4::ML_curv",
+ "ML_CCZ4::ML_Gamma",
+ "ML_CCZ4::ML_Ham",
+ "ML_CCZ4::ML_lapse",
+ "ML_CCZ4::ML_log_confac",
+ "ML_CCZ4::ML_metric",
+ "ML_CCZ4::ML_shift",
+ "ML_CCZ4::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_CCZ4_constraints1", 8, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_CCZ4_constraints1", 1, 1, 1);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_CCZ4_constraints1", 2, 2, 2);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_CCZ4_constraints1", 3, 3, 3);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_CCZ4_constraints1", 4, 4, 4);
+ break;
+ }
+
+ GenericFD_LoopOverInterior(cctkGH, ML_CCZ4_constraints1_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_CCZ4_constraints1_Body");
+ }
+}
diff --git a/ML_CCZ4/src/ML_CCZ4_constraints2.cc b/ML_CCZ4/src/ML_CCZ4_constraints2.cc
new file mode 100644
index 0000000..e5d87da
--- /dev/null
+++ b/ML_CCZ4/src/ML_CCZ4_constraints2.cc
@@ -0,0 +1,1004 @@
+/* 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 "cctk_Loop.h"
+#include "loopcontrol.h"
+#include "vectors.h"
+
+/* Define macros used in calculations */
+#define INITVALUE (42)
+#define QAD(x) (SQR(SQR(x)))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
+
+extern "C" void ML_CCZ4_constraints2_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_CCZ4::ML_cons_detg","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_cons_detg.");
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_CCZ4::ML_cons_Gamma","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_cons_Gamma.");
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_CCZ4::ML_cons_traceA","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_cons_traceA.");
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_CCZ4::ML_mom","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_mom.");
+ return;
+}
+
+static void ML_CCZ4_constraints2_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const imin[3], int const imax[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+{
+ DECLARE_CCTK_ARGUMENTS;
+ DECLARE_CCTK_PARAMETERS;
+
+
+ /* 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_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const t = ToReal(cctk_time);
+ CCTK_REAL_VEC const dxi = INV(dx);
+ CCTK_REAL_VEC const dyi = INV(dy);
+ CCTK_REAL_VEC const dzi = INV(dz);
+ CCTK_REAL_VEC const khalf = ToReal(0.5);
+ CCTK_REAL_VEC const kthird = ToReal(1.0/3.0);
+ CCTK_REAL_VEC const ktwothird = ToReal(2.0/3.0);
+ CCTK_REAL_VEC const kfourthird = ToReal(4.0/3.0);
+ CCTK_REAL_VEC const keightthird = ToReal(8.0/3.0);
+ CCTK_REAL_VEC const hdxi = kmul(ToReal(0.5), dxi);
+ CCTK_REAL_VEC const hdyi = kmul(ToReal(0.5), dyi);
+ CCTK_REAL_VEC const hdzi = kmul(ToReal(0.5), dzi);
+
+ /* Initialize predefined quantities */
+ CCTK_REAL_VEC const p1o1024dx = kmul(INV(dx),ToReal(0.0009765625));
+ CCTK_REAL_VEC const p1o1024dy = kmul(INV(dy),ToReal(0.0009765625));
+ CCTK_REAL_VEC const p1o1024dz = kmul(INV(dz),ToReal(0.0009765625));
+ CCTK_REAL_VEC const p1o120dx = kmul(INV(dx),ToReal(0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o120dy = kmul(INV(dy),ToReal(0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o120dz = kmul(INV(dz),ToReal(0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dx = kmul(INV(dx),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dy = kmul(INV(dy),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dz = kmul(INV(dz),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o144dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o144dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o144dydz = kmul(INV(kmul(dy,dz)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o1680dx = kmul(INV(dx),ToReal(0.000595238095238095238095238095238));
+ CCTK_REAL_VEC const p1o1680dy = kmul(INV(dy),ToReal(0.000595238095238095238095238095238));
+ CCTK_REAL_VEC const p1o1680dz = kmul(INV(dz),ToReal(0.000595238095238095238095238095238));
+ CCTK_REAL_VEC const p1o16dx = kmul(INV(dx),ToReal(0.0625));
+ CCTK_REAL_VEC const p1o16dy = kmul(INV(dy),ToReal(0.0625));
+ CCTK_REAL_VEC const p1o16dz = kmul(INV(dz),ToReal(0.0625));
+ CCTK_REAL_VEC const p1o180dx2 = kmul(INV(SQR(dx)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o180dy2 = kmul(INV(SQR(dy)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o180dz2 = kmul(INV(SQR(dz)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o24dx = kmul(INV(dx),ToReal(0.0416666666666666666666666666667));
+ CCTK_REAL_VEC const p1o24dy = kmul(INV(dy),ToReal(0.0416666666666666666666666666667));
+ CCTK_REAL_VEC const p1o24dz = kmul(INV(dz),ToReal(0.0416666666666666666666666666667));
+ CCTK_REAL_VEC const p1o256dx = kmul(INV(dx),ToReal(0.00390625));
+ CCTK_REAL_VEC const p1o256dy = kmul(INV(dy),ToReal(0.00390625));
+ CCTK_REAL_VEC const p1o256dz = kmul(INV(dz),ToReal(0.00390625));
+ CCTK_REAL_VEC const p1o2dx = kmul(INV(dx),ToReal(0.5));
+ CCTK_REAL_VEC const p1o2dy = kmul(INV(dy),ToReal(0.5));
+ CCTK_REAL_VEC const p1o2dz = kmul(INV(dz),ToReal(0.5));
+ CCTK_REAL_VEC const p1o3600dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o3600dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o3600dydz = kmul(INV(kmul(dy,dz)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o4dx = kmul(INV(dx),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(kmul(dy,dz)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dz = kmul(INV(dz),ToReal(0.25));
+ CCTK_REAL_VEC const p1o5040dx2 = kmul(INV(SQR(dx)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o5040dy2 = kmul(INV(SQR(dy)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o5040dz2 = kmul(INV(SQR(dz)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o560dx = kmul(INV(dx),ToReal(0.00178571428571428571428571428571));
+ CCTK_REAL_VEC const p1o560dy = kmul(INV(dy),ToReal(0.00178571428571428571428571428571));
+ CCTK_REAL_VEC const p1o560dz = kmul(INV(dz),ToReal(0.00178571428571428571428571428571));
+ CCTK_REAL_VEC const p1o60dx = kmul(INV(dx),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o60dy = kmul(INV(dy),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o60dz = kmul(INV(dz),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o64dx = kmul(INV(dx),ToReal(0.015625));
+ CCTK_REAL_VEC const p1o64dy = kmul(INV(dy),ToReal(0.015625));
+ CCTK_REAL_VEC const p1o64dz = kmul(INV(dz),ToReal(0.015625));
+ CCTK_REAL_VEC const p1o705600dxdy = kmul(INV(kmul(dx,dy)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(kmul(dx,dz)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(kmul(dy,dz)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1odx = INV(dx);
+ CCTK_REAL_VEC const p1odx2 = INV(SQR(dx));
+ CCTK_REAL_VEC const p1ody = INV(dy);
+ CCTK_REAL_VEC const p1ody2 = INV(SQR(dy));
+ CCTK_REAL_VEC const p1odz = INV(dz);
+ CCTK_REAL_VEC const p1odz2 = INV(SQR(dz));
+ CCTK_REAL_VEC const pm1o120dx = kmul(INV(dx),ToReal(-0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o120dy = kmul(INV(dy),ToReal(-0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o120dz = kmul(INV(dz),ToReal(-0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dx2 = kmul(INV(SQR(dx)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dy2 = kmul(INV(SQR(dy)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dz2 = kmul(INV(SQR(dz)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o2dx = kmul(INV(dx),ToReal(-0.5));
+ CCTK_REAL_VEC const pm1o2dy = kmul(INV(dy),ToReal(-0.5));
+ CCTK_REAL_VEC const pm1o2dz = kmul(INV(dz),ToReal(-0.5));
+ CCTK_REAL_VEC const pm1o4dx = kmul(INV(dx),ToReal(-0.25));
+ CCTK_REAL_VEC const pm1o4dy = kmul(INV(dy),ToReal(-0.25));
+ CCTK_REAL_VEC const pm1o4dz = kmul(INV(dz),ToReal(-0.25));
+ CCTK_REAL_VEC const pm1o60dx = kmul(INV(dx),ToReal(-0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const pm1o60dy = kmul(INV(dy),ToReal(-0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const pm1o60dz = kmul(INV(dz),ToReal(-0.0166666666666666666666666666667));
+
+ /* 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;
+
+ /* Assign local copies of arrays functions */
+
+
+
+ /* Calculate temporaries and arrays functions */
+
+ /* Copy local copies back to grid functions */
+
+ /* Loop over the grid points */
+ #pragma omp parallel
+ LC_LOOP3VEC(ML_CCZ4_constraints2,
+ i,j,k, imin[0],imin[1],imin[2], imax[0],imax[1],imax[2],
+ cctk_lsh[0],cctk_lsh[1],cctk_lsh[2],
+ CCTK_REAL_VEC_SIZE)
+ {
+ ptrdiff_t const index = di*i + dj*j + dk*k;
+
+ /* Assign local copies of grid functions */
+
+ CCTK_REAL_VEC alphaL = vec_load(alpha[index]);
+ CCTK_REAL_VEC At11L = vec_load(At11[index]);
+ CCTK_REAL_VEC At12L = vec_load(At12[index]);
+ CCTK_REAL_VEC At13L = vec_load(At13[index]);
+ CCTK_REAL_VEC At22L = vec_load(At22[index]);
+ CCTK_REAL_VEC At23L = vec_load(At23[index]);
+ CCTK_REAL_VEC At33L = vec_load(At33[index]);
+ CCTK_REAL_VEC beta1L = vec_load(beta1[index]);
+ CCTK_REAL_VEC beta2L = vec_load(beta2[index]);
+ CCTK_REAL_VEC beta3L = vec_load(beta3[index]);
+ CCTK_REAL_VEC gt11L = vec_load(gt11[index]);
+ CCTK_REAL_VEC gt12L = vec_load(gt12[index]);
+ CCTK_REAL_VEC gt13L = vec_load(gt13[index]);
+ CCTK_REAL_VEC gt22L = vec_load(gt22[index]);
+ CCTK_REAL_VEC gt23L = vec_load(gt23[index]);
+ CCTK_REAL_VEC gt33L = vec_load(gt33[index]);
+ CCTK_REAL_VEC phiL = vec_load(phi[index]);
+ CCTK_REAL_VEC trKL = vec_load(trK[index]);
+ CCTK_REAL_VEC Xt1L = vec_load(Xt1[index]);
+ CCTK_REAL_VEC Xt2L = vec_load(Xt2[index]);
+ CCTK_REAL_VEC Xt3L = vec_load(Xt3[index]);
+
+ CCTK_REAL_VEC eTtxL, eTtyL, eTtzL, eTxxL, eTxyL, eTxzL, eTyyL, eTyzL, eTzzL;
+
+ if (*stress_energy_state)
+ {
+ eTtxL = vec_load(eTtx[index]);
+ eTtyL = vec_load(eTty[index]);
+ eTtzL = vec_load(eTtz[index]);
+ eTxxL = vec_load(eTxx[index]);
+ eTxyL = vec_load(eTxy[index]);
+ eTxzL = vec_load(eTxz[index]);
+ eTyyL = vec_load(eTyy[index]);
+ eTyzL = vec_load(eTyz[index]);
+ eTzzL = vec_load(eTzz[index]);
+ }
+ else
+ {
+ eTtxL = ToReal(0.0);
+ eTtyL = ToReal(0.0);
+ eTtzL = ToReal(0.0);
+ eTxxL = ToReal(0.0);
+ eTxyL = ToReal(0.0);
+ eTxzL = ToReal(0.0);
+ eTyyL = ToReal(0.0);
+ eTyzL = ToReal(0.0);
+ eTzzL = ToReal(0.0);
+ }
+
+ CCTK_REAL_VEC J11L, J12L, J13L, J21L, J22L, J23L, J31L, J32L, J33L;
+
+ if (use_jacobian)
+ {
+ J11L = vec_load(J11[index]);
+ J12L = vec_load(J12[index]);
+ J13L = vec_load(J13[index]);
+ J21L = vec_load(J21[index]);
+ J22L = vec_load(J22[index]);
+ J23L = vec_load(J23[index]);
+ J31L = vec_load(J31[index]);
+ J32L = vec_load(J32[index]);
+ J33L = vec_load(J33[index]);
+ }
+
+ /* Include user supplied include files */
+
+ /* Precompute derivatives */
+ CCTK_REAL_VEC PDstandardNth1At11;
+ CCTK_REAL_VEC PDstandardNth2At11;
+ CCTK_REAL_VEC PDstandardNth3At11;
+ CCTK_REAL_VEC PDstandardNth1At12;
+ CCTK_REAL_VEC PDstandardNth2At12;
+ CCTK_REAL_VEC PDstandardNth3At12;
+ CCTK_REAL_VEC PDstandardNth1At13;
+ CCTK_REAL_VEC PDstandardNth2At13;
+ CCTK_REAL_VEC PDstandardNth3At13;
+ CCTK_REAL_VEC PDstandardNth1At22;
+ CCTK_REAL_VEC PDstandardNth2At22;
+ CCTK_REAL_VEC PDstandardNth3At22;
+ CCTK_REAL_VEC PDstandardNth1At23;
+ CCTK_REAL_VEC PDstandardNth2At23;
+ CCTK_REAL_VEC PDstandardNth3At23;
+ CCTK_REAL_VEC PDstandardNth1At33;
+ CCTK_REAL_VEC PDstandardNth2At33;
+ CCTK_REAL_VEC PDstandardNth3At33;
+ CCTK_REAL_VEC PDstandardNth1gt11;
+ CCTK_REAL_VEC PDstandardNth2gt11;
+ CCTK_REAL_VEC PDstandardNth3gt11;
+ CCTK_REAL_VEC PDstandardNth1gt12;
+ CCTK_REAL_VEC PDstandardNth2gt12;
+ CCTK_REAL_VEC PDstandardNth3gt12;
+ CCTK_REAL_VEC PDstandardNth1gt13;
+ CCTK_REAL_VEC PDstandardNth2gt13;
+ CCTK_REAL_VEC PDstandardNth3gt13;
+ CCTK_REAL_VEC PDstandardNth1gt22;
+ CCTK_REAL_VEC PDstandardNth2gt22;
+ CCTK_REAL_VEC PDstandardNth3gt22;
+ CCTK_REAL_VEC PDstandardNth1gt23;
+ CCTK_REAL_VEC PDstandardNth2gt23;
+ CCTK_REAL_VEC PDstandardNth3gt23;
+ CCTK_REAL_VEC PDstandardNth1gt33;
+ CCTK_REAL_VEC PDstandardNth2gt33;
+ CCTK_REAL_VEC PDstandardNth3gt33;
+ CCTK_REAL_VEC PDstandardNth1phi;
+ CCTK_REAL_VEC PDstandardNth2phi;
+ CCTK_REAL_VEC PDstandardNth3phi;
+ CCTK_REAL_VEC PDstandardNth1trK;
+ CCTK_REAL_VEC PDstandardNth2trK;
+ CCTK_REAL_VEC PDstandardNth3trK;
+
+ switch(fdOrder)
+ {
+ case 2:
+ PDstandardNth1At11 = PDstandardNthfdOrder21(&At11[index]);
+ PDstandardNth2At11 = PDstandardNthfdOrder22(&At11[index]);
+ PDstandardNth3At11 = PDstandardNthfdOrder23(&At11[index]);
+ PDstandardNth1At12 = PDstandardNthfdOrder21(&At12[index]);
+ PDstandardNth2At12 = PDstandardNthfdOrder22(&At12[index]);
+ PDstandardNth3At12 = PDstandardNthfdOrder23(&At12[index]);
+ PDstandardNth1At13 = PDstandardNthfdOrder21(&At13[index]);
+ PDstandardNth2At13 = PDstandardNthfdOrder22(&At13[index]);
+ PDstandardNth3At13 = PDstandardNthfdOrder23(&At13[index]);
+ PDstandardNth1At22 = PDstandardNthfdOrder21(&At22[index]);
+ PDstandardNth2At22 = PDstandardNthfdOrder22(&At22[index]);
+ PDstandardNth3At22 = PDstandardNthfdOrder23(&At22[index]);
+ PDstandardNth1At23 = PDstandardNthfdOrder21(&At23[index]);
+ PDstandardNth2At23 = PDstandardNthfdOrder22(&At23[index]);
+ PDstandardNth3At23 = PDstandardNthfdOrder23(&At23[index]);
+ PDstandardNth1At33 = PDstandardNthfdOrder21(&At33[index]);
+ PDstandardNth2At33 = PDstandardNthfdOrder22(&At33[index]);
+ PDstandardNth3At33 = PDstandardNthfdOrder23(&At33[index]);
+ PDstandardNth1gt11 = PDstandardNthfdOrder21(&gt11[index]);
+ PDstandardNth2gt11 = PDstandardNthfdOrder22(&gt11[index]);
+ PDstandardNth3gt11 = PDstandardNthfdOrder23(&gt11[index]);
+ PDstandardNth1gt12 = PDstandardNthfdOrder21(&gt12[index]);
+ PDstandardNth2gt12 = PDstandardNthfdOrder22(&gt12[index]);
+ PDstandardNth3gt12 = PDstandardNthfdOrder23(&gt12[index]);
+ PDstandardNth1gt13 = PDstandardNthfdOrder21(&gt13[index]);
+ PDstandardNth2gt13 = PDstandardNthfdOrder22(&gt13[index]);
+ PDstandardNth3gt13 = PDstandardNthfdOrder23(&gt13[index]);
+ PDstandardNth1gt22 = PDstandardNthfdOrder21(&gt22[index]);
+ PDstandardNth2gt22 = PDstandardNthfdOrder22(&gt22[index]);
+ PDstandardNth3gt22 = PDstandardNthfdOrder23(&gt22[index]);
+ PDstandardNth1gt23 = PDstandardNthfdOrder21(&gt23[index]);
+ PDstandardNth2gt23 = PDstandardNthfdOrder22(&gt23[index]);
+ PDstandardNth3gt23 = PDstandardNthfdOrder23(&gt23[index]);
+ PDstandardNth1gt33 = PDstandardNthfdOrder21(&gt33[index]);
+ PDstandardNth2gt33 = PDstandardNthfdOrder22(&gt33[index]);
+ PDstandardNth3gt33 = PDstandardNthfdOrder23(&gt33[index]);
+ PDstandardNth1phi = PDstandardNthfdOrder21(&phi[index]);
+ PDstandardNth2phi = PDstandardNthfdOrder22(&phi[index]);
+ PDstandardNth3phi = PDstandardNthfdOrder23(&phi[index]);
+ PDstandardNth1trK = PDstandardNthfdOrder21(&trK[index]);
+ PDstandardNth2trK = PDstandardNthfdOrder22(&trK[index]);
+ PDstandardNth3trK = PDstandardNthfdOrder23(&trK[index]);
+ break;
+
+ case 4:
+ PDstandardNth1At11 = PDstandardNthfdOrder41(&At11[index]);
+ PDstandardNth2At11 = PDstandardNthfdOrder42(&At11[index]);
+ PDstandardNth3At11 = PDstandardNthfdOrder43(&At11[index]);
+ PDstandardNth1At12 = PDstandardNthfdOrder41(&At12[index]);
+ PDstandardNth2At12 = PDstandardNthfdOrder42(&At12[index]);
+ PDstandardNth3At12 = PDstandardNthfdOrder43(&At12[index]);
+ PDstandardNth1At13 = PDstandardNthfdOrder41(&At13[index]);
+ PDstandardNth2At13 = PDstandardNthfdOrder42(&At13[index]);
+ PDstandardNth3At13 = PDstandardNthfdOrder43(&At13[index]);
+ PDstandardNth1At22 = PDstandardNthfdOrder41(&At22[index]);
+ PDstandardNth2At22 = PDstandardNthfdOrder42(&At22[index]);
+ PDstandardNth3At22 = PDstandardNthfdOrder43(&At22[index]);
+ PDstandardNth1At23 = PDstandardNthfdOrder41(&At23[index]);
+ PDstandardNth2At23 = PDstandardNthfdOrder42(&At23[index]);
+ PDstandardNth3At23 = PDstandardNthfdOrder43(&At23[index]);
+ PDstandardNth1At33 = PDstandardNthfdOrder41(&At33[index]);
+ PDstandardNth2At33 = PDstandardNthfdOrder42(&At33[index]);
+ PDstandardNth3At33 = PDstandardNthfdOrder43(&At33[index]);
+ PDstandardNth1gt11 = PDstandardNthfdOrder41(&gt11[index]);
+ PDstandardNth2gt11 = PDstandardNthfdOrder42(&gt11[index]);
+ PDstandardNth3gt11 = PDstandardNthfdOrder43(&gt11[index]);
+ PDstandardNth1gt12 = PDstandardNthfdOrder41(&gt12[index]);
+ PDstandardNth2gt12 = PDstandardNthfdOrder42(&gt12[index]);
+ PDstandardNth3gt12 = PDstandardNthfdOrder43(&gt12[index]);
+ PDstandardNth1gt13 = PDstandardNthfdOrder41(&gt13[index]);
+ PDstandardNth2gt13 = PDstandardNthfdOrder42(&gt13[index]);
+ PDstandardNth3gt13 = PDstandardNthfdOrder43(&gt13[index]);
+ PDstandardNth1gt22 = PDstandardNthfdOrder41(&gt22[index]);
+ PDstandardNth2gt22 = PDstandardNthfdOrder42(&gt22[index]);
+ PDstandardNth3gt22 = PDstandardNthfdOrder43(&gt22[index]);
+ PDstandardNth1gt23 = PDstandardNthfdOrder41(&gt23[index]);
+ PDstandardNth2gt23 = PDstandardNthfdOrder42(&gt23[index]);
+ PDstandardNth3gt23 = PDstandardNthfdOrder43(&gt23[index]);
+ PDstandardNth1gt33 = PDstandardNthfdOrder41(&gt33[index]);
+ PDstandardNth2gt33 = PDstandardNthfdOrder42(&gt33[index]);
+ PDstandardNth3gt33 = PDstandardNthfdOrder43(&gt33[index]);
+ PDstandardNth1phi = PDstandardNthfdOrder41(&phi[index]);
+ PDstandardNth2phi = PDstandardNthfdOrder42(&phi[index]);
+ PDstandardNth3phi = PDstandardNthfdOrder43(&phi[index]);
+ PDstandardNth1trK = PDstandardNthfdOrder41(&trK[index]);
+ PDstandardNth2trK = PDstandardNthfdOrder42(&trK[index]);
+ PDstandardNth3trK = PDstandardNthfdOrder43(&trK[index]);
+ break;
+
+ case 6:
+ PDstandardNth1At11 = PDstandardNthfdOrder61(&At11[index]);
+ PDstandardNth2At11 = PDstandardNthfdOrder62(&At11[index]);
+ PDstandardNth3At11 = PDstandardNthfdOrder63(&At11[index]);
+ PDstandardNth1At12 = PDstandardNthfdOrder61(&At12[index]);
+ PDstandardNth2At12 = PDstandardNthfdOrder62(&At12[index]);
+ PDstandardNth3At12 = PDstandardNthfdOrder63(&At12[index]);
+ PDstandardNth1At13 = PDstandardNthfdOrder61(&At13[index]);
+ PDstandardNth2At13 = PDstandardNthfdOrder62(&At13[index]);
+ PDstandardNth3At13 = PDstandardNthfdOrder63(&At13[index]);
+ PDstandardNth1At22 = PDstandardNthfdOrder61(&At22[index]);
+ PDstandardNth2At22 = PDstandardNthfdOrder62(&At22[index]);
+ PDstandardNth3At22 = PDstandardNthfdOrder63(&At22[index]);
+ PDstandardNth1At23 = PDstandardNthfdOrder61(&At23[index]);
+ PDstandardNth2At23 = PDstandardNthfdOrder62(&At23[index]);
+ PDstandardNth3At23 = PDstandardNthfdOrder63(&At23[index]);
+ PDstandardNth1At33 = PDstandardNthfdOrder61(&At33[index]);
+ PDstandardNth2At33 = PDstandardNthfdOrder62(&At33[index]);
+ PDstandardNth3At33 = PDstandardNthfdOrder63(&At33[index]);
+ PDstandardNth1gt11 = PDstandardNthfdOrder61(&gt11[index]);
+ PDstandardNth2gt11 = PDstandardNthfdOrder62(&gt11[index]);
+ PDstandardNth3gt11 = PDstandardNthfdOrder63(&gt11[index]);
+ PDstandardNth1gt12 = PDstandardNthfdOrder61(&gt12[index]);
+ PDstandardNth2gt12 = PDstandardNthfdOrder62(&gt12[index]);
+ PDstandardNth3gt12 = PDstandardNthfdOrder63(&gt12[index]);
+ PDstandardNth1gt13 = PDstandardNthfdOrder61(&gt13[index]);
+ PDstandardNth2gt13 = PDstandardNthfdOrder62(&gt13[index]);
+ PDstandardNth3gt13 = PDstandardNthfdOrder63(&gt13[index]);
+ PDstandardNth1gt22 = PDstandardNthfdOrder61(&gt22[index]);
+ PDstandardNth2gt22 = PDstandardNthfdOrder62(&gt22[index]);
+ PDstandardNth3gt22 = PDstandardNthfdOrder63(&gt22[index]);
+ PDstandardNth1gt23 = PDstandardNthfdOrder61(&gt23[index]);
+ PDstandardNth2gt23 = PDstandardNthfdOrder62(&gt23[index]);
+ PDstandardNth3gt23 = PDstandardNthfdOrder63(&gt23[index]);
+ PDstandardNth1gt33 = PDstandardNthfdOrder61(&gt33[index]);
+ PDstandardNth2gt33 = PDstandardNthfdOrder62(&gt33[index]);
+ PDstandardNth3gt33 = PDstandardNthfdOrder63(&gt33[index]);
+ PDstandardNth1phi = PDstandardNthfdOrder61(&phi[index]);
+ PDstandardNth2phi = PDstandardNthfdOrder62(&phi[index]);
+ PDstandardNth3phi = PDstandardNthfdOrder63(&phi[index]);
+ PDstandardNth1trK = PDstandardNthfdOrder61(&trK[index]);
+ PDstandardNth2trK = PDstandardNthfdOrder62(&trK[index]);
+ PDstandardNth3trK = PDstandardNthfdOrder63(&trK[index]);
+ break;
+
+ case 8:
+ PDstandardNth1At11 = PDstandardNthfdOrder81(&At11[index]);
+ PDstandardNth2At11 = PDstandardNthfdOrder82(&At11[index]);
+ PDstandardNth3At11 = PDstandardNthfdOrder83(&At11[index]);
+ PDstandardNth1At12 = PDstandardNthfdOrder81(&At12[index]);
+ PDstandardNth2At12 = PDstandardNthfdOrder82(&At12[index]);
+ PDstandardNth3At12 = PDstandardNthfdOrder83(&At12[index]);
+ PDstandardNth1At13 = PDstandardNthfdOrder81(&At13[index]);
+ PDstandardNth2At13 = PDstandardNthfdOrder82(&At13[index]);
+ PDstandardNth3At13 = PDstandardNthfdOrder83(&At13[index]);
+ PDstandardNth1At22 = PDstandardNthfdOrder81(&At22[index]);
+ PDstandardNth2At22 = PDstandardNthfdOrder82(&At22[index]);
+ PDstandardNth3At22 = PDstandardNthfdOrder83(&At22[index]);
+ PDstandardNth1At23 = PDstandardNthfdOrder81(&At23[index]);
+ PDstandardNth2At23 = PDstandardNthfdOrder82(&At23[index]);
+ PDstandardNth3At23 = PDstandardNthfdOrder83(&At23[index]);
+ PDstandardNth1At33 = PDstandardNthfdOrder81(&At33[index]);
+ PDstandardNth2At33 = PDstandardNthfdOrder82(&At33[index]);
+ PDstandardNth3At33 = PDstandardNthfdOrder83(&At33[index]);
+ PDstandardNth1gt11 = PDstandardNthfdOrder81(&gt11[index]);
+ PDstandardNth2gt11 = PDstandardNthfdOrder82(&gt11[index]);
+ PDstandardNth3gt11 = PDstandardNthfdOrder83(&gt11[index]);
+ PDstandardNth1gt12 = PDstandardNthfdOrder81(&gt12[index]);
+ PDstandardNth2gt12 = PDstandardNthfdOrder82(&gt12[index]);
+ PDstandardNth3gt12 = PDstandardNthfdOrder83(&gt12[index]);
+ PDstandardNth1gt13 = PDstandardNthfdOrder81(&gt13[index]);
+ PDstandardNth2gt13 = PDstandardNthfdOrder82(&gt13[index]);
+ PDstandardNth3gt13 = PDstandardNthfdOrder83(&gt13[index]);
+ PDstandardNth1gt22 = PDstandardNthfdOrder81(&gt22[index]);
+ PDstandardNth2gt22 = PDstandardNthfdOrder82(&gt22[index]);
+ PDstandardNth3gt22 = PDstandardNthfdOrder83(&gt22[index]);
+ PDstandardNth1gt23 = PDstandardNthfdOrder81(&gt23[index]);
+ PDstandardNth2gt23 = PDstandardNthfdOrder82(&gt23[index]);
+ PDstandardNth3gt23 = PDstandardNthfdOrder83(&gt23[index]);
+ PDstandardNth1gt33 = PDstandardNthfdOrder81(&gt33[index]);
+ PDstandardNth2gt33 = PDstandardNthfdOrder82(&gt33[index]);
+ PDstandardNth3gt33 = PDstandardNthfdOrder83(&gt33[index]);
+ PDstandardNth1phi = PDstandardNthfdOrder81(&phi[index]);
+ PDstandardNth2phi = PDstandardNthfdOrder82(&phi[index]);
+ PDstandardNth3phi = PDstandardNthfdOrder83(&phi[index]);
+ PDstandardNth1trK = PDstandardNthfdOrder81(&trK[index]);
+ PDstandardNth2trK = PDstandardNthfdOrder82(&trK[index]);
+ PDstandardNth3trK = PDstandardNthfdOrder83(&trK[index]);
+ break;
+ }
+
+ /* Calculate temporaries and grid functions */
+ CCTK_REAL_VEC JacPDstandardNth1At11;
+ CCTK_REAL_VEC JacPDstandardNth1At12;
+ CCTK_REAL_VEC JacPDstandardNth1At13;
+ CCTK_REAL_VEC JacPDstandardNth1At22;
+ CCTK_REAL_VEC JacPDstandardNth1At23;
+ CCTK_REAL_VEC JacPDstandardNth1At33;
+ CCTK_REAL_VEC JacPDstandardNth1gt11;
+ CCTK_REAL_VEC JacPDstandardNth1gt12;
+ CCTK_REAL_VEC JacPDstandardNth1gt13;
+ CCTK_REAL_VEC JacPDstandardNth1gt22;
+ CCTK_REAL_VEC JacPDstandardNth1gt23;
+ CCTK_REAL_VEC JacPDstandardNth1gt33;
+ CCTK_REAL_VEC JacPDstandardNth1phi;
+ CCTK_REAL_VEC JacPDstandardNth1trK;
+ CCTK_REAL_VEC JacPDstandardNth2At11;
+ CCTK_REAL_VEC JacPDstandardNth2At12;
+ CCTK_REAL_VEC JacPDstandardNth2At13;
+ CCTK_REAL_VEC JacPDstandardNth2At22;
+ CCTK_REAL_VEC JacPDstandardNth2At23;
+ CCTK_REAL_VEC JacPDstandardNth2At33;
+ CCTK_REAL_VEC JacPDstandardNth2gt11;
+ CCTK_REAL_VEC JacPDstandardNth2gt12;
+ CCTK_REAL_VEC JacPDstandardNth2gt13;
+ CCTK_REAL_VEC JacPDstandardNth2gt22;
+ CCTK_REAL_VEC JacPDstandardNth2gt23;
+ CCTK_REAL_VEC JacPDstandardNth2gt33;
+ CCTK_REAL_VEC JacPDstandardNth2phi;
+ CCTK_REAL_VEC JacPDstandardNth2trK;
+ CCTK_REAL_VEC JacPDstandardNth3At11;
+ CCTK_REAL_VEC JacPDstandardNth3At12;
+ CCTK_REAL_VEC JacPDstandardNth3At13;
+ CCTK_REAL_VEC JacPDstandardNth3At22;
+ CCTK_REAL_VEC JacPDstandardNth3At23;
+ CCTK_REAL_VEC JacPDstandardNth3At33;
+ CCTK_REAL_VEC JacPDstandardNth3gt11;
+ CCTK_REAL_VEC JacPDstandardNth3gt12;
+ CCTK_REAL_VEC JacPDstandardNth3gt13;
+ CCTK_REAL_VEC JacPDstandardNth3gt22;
+ CCTK_REAL_VEC JacPDstandardNth3gt23;
+ CCTK_REAL_VEC JacPDstandardNth3gt33;
+ CCTK_REAL_VEC JacPDstandardNth3phi;
+ CCTK_REAL_VEC JacPDstandardNth3trK;
+
+ if (use_jacobian)
+ {
+ JacPDstandardNth1At11 =
+ kmadd(J11L,PDstandardNth1At11,kmadd(J21L,PDstandardNth2At11,kmul(J31L,PDstandardNth3At11)));
+
+ JacPDstandardNth1At12 =
+ kmadd(J11L,PDstandardNth1At12,kmadd(J21L,PDstandardNth2At12,kmul(J31L,PDstandardNth3At12)));
+
+ JacPDstandardNth1At13 =
+ kmadd(J11L,PDstandardNth1At13,kmadd(J21L,PDstandardNth2At13,kmul(J31L,PDstandardNth3At13)));
+
+ JacPDstandardNth1At22 =
+ kmadd(J11L,PDstandardNth1At22,kmadd(J21L,PDstandardNth2At22,kmul(J31L,PDstandardNth3At22)));
+
+ JacPDstandardNth1At23 =
+ kmadd(J11L,PDstandardNth1At23,kmadd(J21L,PDstandardNth2At23,kmul(J31L,PDstandardNth3At23)));
+
+ JacPDstandardNth1At33 =
+ kmadd(J11L,PDstandardNth1At33,kmadd(J21L,PDstandardNth2At33,kmul(J31L,PDstandardNth3At33)));
+
+ JacPDstandardNth1gt11 =
+ kmadd(J11L,PDstandardNth1gt11,kmadd(J21L,PDstandardNth2gt11,kmul(J31L,PDstandardNth3gt11)));
+
+ JacPDstandardNth1gt12 =
+ kmadd(J11L,PDstandardNth1gt12,kmadd(J21L,PDstandardNth2gt12,kmul(J31L,PDstandardNth3gt12)));
+
+ JacPDstandardNth1gt13 =
+ kmadd(J11L,PDstandardNth1gt13,kmadd(J21L,PDstandardNth2gt13,kmul(J31L,PDstandardNth3gt13)));
+
+ JacPDstandardNth1gt22 =
+ kmadd(J11L,PDstandardNth1gt22,kmadd(J21L,PDstandardNth2gt22,kmul(J31L,PDstandardNth3gt22)));
+
+ JacPDstandardNth1gt23 =
+ kmadd(J11L,PDstandardNth1gt23,kmadd(J21L,PDstandardNth2gt23,kmul(J31L,PDstandardNth3gt23)));
+
+ JacPDstandardNth1gt33 =
+ kmadd(J11L,PDstandardNth1gt33,kmadd(J21L,PDstandardNth2gt33,kmul(J31L,PDstandardNth3gt33)));
+
+ JacPDstandardNth1phi =
+ kmadd(J11L,PDstandardNth1phi,kmadd(J21L,PDstandardNth2phi,kmul(J31L,PDstandardNth3phi)));
+
+ JacPDstandardNth1trK =
+ kmadd(J11L,PDstandardNth1trK,kmadd(J21L,PDstandardNth2trK,kmul(J31L,PDstandardNth3trK)));
+
+ JacPDstandardNth2At11 =
+ kmadd(J12L,PDstandardNth1At11,kmadd(J22L,PDstandardNth2At11,kmul(J32L,PDstandardNth3At11)));
+
+ JacPDstandardNth2At12 =
+ kmadd(J12L,PDstandardNth1At12,kmadd(J22L,PDstandardNth2At12,kmul(J32L,PDstandardNth3At12)));
+
+ JacPDstandardNth2At13 =
+ kmadd(J12L,PDstandardNth1At13,kmadd(J22L,PDstandardNth2At13,kmul(J32L,PDstandardNth3At13)));
+
+ JacPDstandardNth2At22 =
+ kmadd(J12L,PDstandardNth1At22,kmadd(J22L,PDstandardNth2At22,kmul(J32L,PDstandardNth3At22)));
+
+ JacPDstandardNth2At23 =
+ kmadd(J12L,PDstandardNth1At23,kmadd(J22L,PDstandardNth2At23,kmul(J32L,PDstandardNth3At23)));
+
+ JacPDstandardNth2At33 =
+ kmadd(J12L,PDstandardNth1At33,kmadd(J22L,PDstandardNth2At33,kmul(J32L,PDstandardNth3At33)));
+
+ JacPDstandardNth2gt11 =
+ kmadd(J12L,PDstandardNth1gt11,kmadd(J22L,PDstandardNth2gt11,kmul(J32L,PDstandardNth3gt11)));
+
+ JacPDstandardNth2gt12 =
+ kmadd(J12L,PDstandardNth1gt12,kmadd(J22L,PDstandardNth2gt12,kmul(J32L,PDstandardNth3gt12)));
+
+ JacPDstandardNth2gt13 =
+ kmadd(J12L,PDstandardNth1gt13,kmadd(J22L,PDstandardNth2gt13,kmul(J32L,PDstandardNth3gt13)));
+
+ JacPDstandardNth2gt22 =
+ kmadd(J12L,PDstandardNth1gt22,kmadd(J22L,PDstandardNth2gt22,kmul(J32L,PDstandardNth3gt22)));
+
+ JacPDstandardNth2gt23 =
+ kmadd(J12L,PDstandardNth1gt23,kmadd(J22L,PDstandardNth2gt23,kmul(J32L,PDstandardNth3gt23)));
+
+ JacPDstandardNth2gt33 =
+ kmadd(J12L,PDstandardNth1gt33,kmadd(J22L,PDstandardNth2gt33,kmul(J32L,PDstandardNth3gt33)));
+
+ JacPDstandardNth2phi =
+ kmadd(J12L,PDstandardNth1phi,kmadd(J22L,PDstandardNth2phi,kmul(J32L,PDstandardNth3phi)));
+
+ JacPDstandardNth2trK =
+ kmadd(J12L,PDstandardNth1trK,kmadd(J22L,PDstandardNth2trK,kmul(J32L,PDstandardNth3trK)));
+
+ JacPDstandardNth3At11 =
+ kmadd(J13L,PDstandardNth1At11,kmadd(J23L,PDstandardNth2At11,kmul(J33L,PDstandardNth3At11)));
+
+ JacPDstandardNth3At12 =
+ kmadd(J13L,PDstandardNth1At12,kmadd(J23L,PDstandardNth2At12,kmul(J33L,PDstandardNth3At12)));
+
+ JacPDstandardNth3At13 =
+ kmadd(J13L,PDstandardNth1At13,kmadd(J23L,PDstandardNth2At13,kmul(J33L,PDstandardNth3At13)));
+
+ JacPDstandardNth3At22 =
+ kmadd(J13L,PDstandardNth1At22,kmadd(J23L,PDstandardNth2At22,kmul(J33L,PDstandardNth3At22)));
+
+ JacPDstandardNth3At23 =
+ kmadd(J13L,PDstandardNth1At23,kmadd(J23L,PDstandardNth2At23,kmul(J33L,PDstandardNth3At23)));
+
+ JacPDstandardNth3At33 =
+ kmadd(J13L,PDstandardNth1At33,kmadd(J23L,PDstandardNth2At33,kmul(J33L,PDstandardNth3At33)));
+
+ JacPDstandardNth3gt11 =
+ kmadd(J13L,PDstandardNth1gt11,kmadd(J23L,PDstandardNth2gt11,kmul(J33L,PDstandardNth3gt11)));
+
+ JacPDstandardNth3gt12 =
+ kmadd(J13L,PDstandardNth1gt12,kmadd(J23L,PDstandardNth2gt12,kmul(J33L,PDstandardNth3gt12)));
+
+ JacPDstandardNth3gt13 =
+ kmadd(J13L,PDstandardNth1gt13,kmadd(J23L,PDstandardNth2gt13,kmul(J33L,PDstandardNth3gt13)));
+
+ JacPDstandardNth3gt22 =
+ kmadd(J13L,PDstandardNth1gt22,kmadd(J23L,PDstandardNth2gt22,kmul(J33L,PDstandardNth3gt22)));
+
+ JacPDstandardNth3gt23 =
+ kmadd(J13L,PDstandardNth1gt23,kmadd(J23L,PDstandardNth2gt23,kmul(J33L,PDstandardNth3gt23)));
+
+ JacPDstandardNth3gt33 =
+ kmadd(J13L,PDstandardNth1gt33,kmadd(J23L,PDstandardNth2gt33,kmul(J33L,PDstandardNth3gt33)));
+
+ JacPDstandardNth3phi =
+ kmadd(J13L,PDstandardNth1phi,kmadd(J23L,PDstandardNth2phi,kmul(J33L,PDstandardNth3phi)));
+
+ JacPDstandardNth3trK =
+ kmadd(J13L,PDstandardNth1trK,kmadd(J23L,PDstandardNth2trK,kmul(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_VEC detgt = ToReal(1);
+
+ CCTK_REAL_VEC gtu11 =
+ kmul(INV(detgt),kmsub(gt22L,gt33L,SQR(gt23L)));
+
+ CCTK_REAL_VEC gtu12 =
+ kmul(INV(detgt),kmsub(gt13L,gt23L,kmul(gt12L,gt33L)));
+
+ CCTK_REAL_VEC gtu13 =
+ kmul(INV(detgt),kmsub(gt12L,gt23L,kmul(gt13L,gt22L)));
+
+ CCTK_REAL_VEC gtu22 =
+ kmul(INV(detgt),kmsub(gt11L,gt33L,SQR(gt13L)));
+
+ CCTK_REAL_VEC gtu23 =
+ kmul(INV(detgt),kmsub(gt12L,gt13L,kmul(gt11L,gt23L)));
+
+ CCTK_REAL_VEC gtu33 =
+ kmul(INV(detgt),kmsub(gt11L,gt22L,SQR(gt12L)));
+
+ CCTK_REAL_VEC Gtl111 = kmul(JacPDstandardNth1gt11,ToReal(0.5));
+
+ CCTK_REAL_VEC Gtl112 = kmul(JacPDstandardNth2gt11,ToReal(0.5));
+
+ CCTK_REAL_VEC Gtl113 = kmul(JacPDstandardNth3gt11,ToReal(0.5));
+
+ CCTK_REAL_VEC Gtl122 =
+ kmadd(JacPDstandardNth1gt22,ToReal(-0.5),JacPDstandardNth2gt12);
+
+ CCTK_REAL_VEC Gtl123 =
+ kmul(kadd(JacPDstandardNth2gt13,ksub(JacPDstandardNth3gt12,JacPDstandardNth1gt23)),ToReal(0.5));
+
+ CCTK_REAL_VEC Gtl133 =
+ kmadd(JacPDstandardNth1gt33,ToReal(-0.5),JacPDstandardNth3gt13);
+
+ CCTK_REAL_VEC Gtl211 =
+ kmadd(JacPDstandardNth2gt11,ToReal(-0.5),JacPDstandardNth1gt12);
+
+ CCTK_REAL_VEC Gtl212 = kmul(JacPDstandardNth1gt22,ToReal(0.5));
+
+ CCTK_REAL_VEC Gtl213 =
+ kmul(kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth3gt12,JacPDstandardNth2gt13)),ToReal(0.5));
+
+ CCTK_REAL_VEC Gtl222 = kmul(JacPDstandardNth2gt22,ToReal(0.5));
+
+ CCTK_REAL_VEC Gtl223 = kmul(JacPDstandardNth3gt22,ToReal(0.5));
+
+ CCTK_REAL_VEC Gtl233 =
+ kmadd(JacPDstandardNth2gt33,ToReal(-0.5),JacPDstandardNth3gt23);
+
+ CCTK_REAL_VEC Gtl311 =
+ kmadd(JacPDstandardNth3gt11,ToReal(-0.5),JacPDstandardNth1gt13);
+
+ CCTK_REAL_VEC Gtl312 =
+ kmul(kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth2gt13,JacPDstandardNth3gt12)),ToReal(0.5));
+
+ CCTK_REAL_VEC Gtl313 = kmul(JacPDstandardNth1gt33,ToReal(0.5));
+
+ CCTK_REAL_VEC Gtl322 =
+ kmadd(JacPDstandardNth3gt22,ToReal(-0.5),JacPDstandardNth2gt23);
+
+ CCTK_REAL_VEC Gtl323 = kmul(JacPDstandardNth2gt33,ToReal(0.5));
+
+ CCTK_REAL_VEC Gtl333 = kmul(JacPDstandardNth3gt33,ToReal(0.5));
+
+ CCTK_REAL_VEC Gt111 =
+ kmadd(Gtl111,gtu11,kmadd(Gtl211,gtu12,kmul(Gtl311,gtu13)));
+
+ CCTK_REAL_VEC Gt211 =
+ kmadd(Gtl111,gtu12,kmadd(Gtl211,gtu22,kmul(Gtl311,gtu23)));
+
+ CCTK_REAL_VEC Gt311 =
+ kmadd(Gtl111,gtu13,kmadd(Gtl211,gtu23,kmul(Gtl311,gtu33)));
+
+ CCTK_REAL_VEC Gt112 =
+ kmadd(Gtl112,gtu11,kmadd(Gtl212,gtu12,kmul(Gtl312,gtu13)));
+
+ CCTK_REAL_VEC Gt212 =
+ kmadd(Gtl112,gtu12,kmadd(Gtl212,gtu22,kmul(Gtl312,gtu23)));
+
+ CCTK_REAL_VEC Gt312 =
+ kmadd(Gtl112,gtu13,kmadd(Gtl212,gtu23,kmul(Gtl312,gtu33)));
+
+ CCTK_REAL_VEC Gt113 =
+ kmadd(Gtl113,gtu11,kmadd(Gtl213,gtu12,kmul(Gtl313,gtu13)));
+
+ CCTK_REAL_VEC Gt213 =
+ kmadd(Gtl113,gtu12,kmadd(Gtl213,gtu22,kmul(Gtl313,gtu23)));
+
+ CCTK_REAL_VEC Gt313 =
+ kmadd(Gtl113,gtu13,kmadd(Gtl213,gtu23,kmul(Gtl313,gtu33)));
+
+ CCTK_REAL_VEC Gt122 =
+ kmadd(Gtl122,gtu11,kmadd(Gtl222,gtu12,kmul(Gtl322,gtu13)));
+
+ CCTK_REAL_VEC Gt222 =
+ kmadd(Gtl122,gtu12,kmadd(Gtl222,gtu22,kmul(Gtl322,gtu23)));
+
+ CCTK_REAL_VEC Gt322 =
+ kmadd(Gtl122,gtu13,kmadd(Gtl222,gtu23,kmul(Gtl322,gtu33)));
+
+ CCTK_REAL_VEC Gt123 =
+ kmadd(Gtl123,gtu11,kmadd(Gtl223,gtu12,kmul(Gtl323,gtu13)));
+
+ CCTK_REAL_VEC Gt223 =
+ kmadd(Gtl123,gtu12,kmadd(Gtl223,gtu22,kmul(Gtl323,gtu23)));
+
+ CCTK_REAL_VEC Gt323 =
+ kmadd(Gtl123,gtu13,kmadd(Gtl223,gtu23,kmul(Gtl323,gtu33)));
+
+ CCTK_REAL_VEC Gt133 =
+ kmadd(Gtl133,gtu11,kmadd(Gtl233,gtu12,kmul(Gtl333,gtu13)));
+
+ CCTK_REAL_VEC Gt233 =
+ kmadd(Gtl133,gtu12,kmadd(Gtl233,gtu22,kmul(Gtl333,gtu23)));
+
+ CCTK_REAL_VEC Gt333 =
+ kmadd(Gtl133,gtu13,kmadd(Gtl233,gtu23,kmul(Gtl333,gtu33)));
+
+ CCTK_REAL_VEC fac1 = IfThen(conformalMethod ==
+ 1,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
+
+ CCTK_REAL_VEC cdphi1 = kmul(fac1,JacPDstandardNth1phi);
+
+ CCTK_REAL_VEC cdphi2 = kmul(fac1,JacPDstandardNth2phi);
+
+ CCTK_REAL_VEC cdphi3 = kmul(fac1,JacPDstandardNth3phi);
+
+ CCTK_REAL_VEC S1 =
+ kmul(INV(alphaL),kmadd(beta1L,eTxxL,kmadd(beta2L,eTxyL,kmsub(beta3L,eTxzL,eTtxL))));
+
+ CCTK_REAL_VEC S2 =
+ kmul(INV(alphaL),kmadd(beta1L,eTxyL,kmadd(beta2L,eTyyL,kmsub(beta3L,eTyzL,eTtyL))));
+
+ CCTK_REAL_VEC S3 =
+ kmul(INV(alphaL),kmadd(beta1L,eTxzL,kmadd(beta2L,eTyzL,kmsub(beta3L,eTzzL,eTtzL))));
+
+ CCTK_REAL_VEC M1L =
+ kmadd(gtu11,JacPDstandardNth1At11,kmadd(gtu12,JacPDstandardNth2At11,kmadd(gtu22,JacPDstandardNth2At12,kmadd(gtu23,JacPDstandardNth2At13,kmadd(gtu13,JacPDstandardNth3At11,kmadd(gtu23,JacPDstandardNth3At12,kmadd(gtu33,JacPDstandardNth3At13,kmadd(gtu12,kadd(JacPDstandardNth1At12,kmsub(At13L,kmul(Gt312,ToReal(-3)),kmul(At22L,Gt211))),kmadd(gtu13,kadd(JacPDstandardNth1At13,kmsub(At13L,kmul(Gt313,ToReal(-3)),kmul(At23L,Gt211))),knmsub(gtu22,kmadd(At23L,Gt312,kmul(At22L,Gt212)),kmadd(Gt311,kmsub(At13L,kmul(gtu11,ToReal(-2)),kmadd(At33L,gtu13,kmul(At23L,gtu12))),kmadd(At13L,kmsub(Gt323,kmul(gtu23,ToReal(-2)),kmul(Gt113,gtu33)),kmadd(JacPDstandardNth1trK,ToReal(-0.666666666666666666666666666667),knmsub(At12L,kmadd(Gt111,gtu12,kmadd(Gt112,gtu22,kmadd(Gt222,gtu22,kmadd(Gt113,gtu23,kmadd(Gt233,gtu33,kmadd(cdphi1,kmul(gtu12,ToReal(-6)),kmadd(cdphi2,kmul(gtu22,ToReal(-6)),kmadd(cdphi3,kmul(gtu23,ToReal(-6)),kmadd(Gt211,kmul(gtu11,ToReal(2)),kmadd(Gt223,kmul(gtu23,ToReal(2)),kmadd(Gt212,kmul(gtu12,ToReal(3)),kmul(Gt213,kmul(gtu13,ToReal(3)))))))))))))),kmadd(gtu23,knmsub(At22L,Gt213,knmsub(At33L,Gt312,kmsub(At13L,kmul(cdphi2,ToReal(6)),kmul(At23L,kadd(Gt313,Gt212))))),kmadd(gtu33,knmsub(At23L,Gt213,kmsub(At13L,kmul(cdphi3,ToReal(6)),kmul(At33L,Gt313))),kmadd(At11L,kmadd(Gt112,kmul(gtu12,ToReal(-3)),kmadd(Gt113,kmul(gtu13,ToReal(-3)),kmadd(Gt111,kmul(gtu11,ToReal(-2)),kmadd(Gt123,kmul(gtu23,ToReal(-2)),knmsub(Gt122,gtu22,knmsub(Gt133,gtu33,kmadd(cdphi1,kmul(gtu11,ToReal(6)),kmadd(cdphi2,kmul(gtu12,ToReal(6)),kmul(cdphi3,kmul(gtu13,ToReal(6))))))))))),kmadd(At13L,knmsub(Gt322,gtu22,knmsub(Gt112,gtu23,kmsub(gtu13,kmsub(cdphi1,ToReal(6),Gt111),kmul(Gt333,gtu33)))),kmul(S1,kmul(ToReal(-8),ToReal(Pi)))))))))))))))))))));
+
+ CCTK_REAL_VEC M2L =
+ kmadd(gtu11,JacPDstandardNth1At12,kmadd(gtu12,JacPDstandardNth1At22,kmadd(gtu13,JacPDstandardNth1At23,kmadd(gtu12,JacPDstandardNth2At12,kmadd(gtu22,JacPDstandardNth2At22,kmadd(gtu23,JacPDstandardNth2At23,kmadd(gtu13,JacPDstandardNth3At12,kmadd(gtu23,JacPDstandardNth3At22,kmadd(gtu33,JacPDstandardNth3At23,kmadd(At22L,kmul(Gt222,kmul(gtu22,ToReal(-2))),knmsub(At11L,kmadd(Gt112,gtu11,kmadd(Gt122,gtu12,kmul(Gt123,gtu13))),knmsub(gtu11,kmadd(At22L,Gt211,kmadd(At13L,Gt312,kmul(At23L,Gt311))),kmadd(Gt212,kmsub(At22L,kmul(gtu12,ToReal(-3)),kmul(At23L,gtu13)),kmadd(Gt312,kmsub(At23L,kmul(gtu12,ToReal(-3)),kmul(At33L,gtu13)),kmadd(Gt322,kmsub(At23L,kmul(gtu22,ToReal(-2)),kmul(At33L,gtu23)),kmadd(Gt223,kmsub(At22L,kmul(gtu23,ToReal(-3)),kmul(At23L,gtu33)),kmadd(Gt323,kmsub(At23L,kmul(gtu23,ToReal(-3)),kmul(At33L,gtu33)),kmadd(At22L,kmsub(Gt213,kmul(gtu13,ToReal(-2)),kmul(Gt233,gtu33)),kmadd(At23L,kmsub(Gt313,kmul(gtu13,ToReal(-2)),kmadd(Gt333,gtu33,kmul(Gt222,gtu23))),kmadd(JacPDstandardNth2trK,ToReal(-0.666666666666666666666666666667),kmadd(At22L,kmul(cdphi2,kmul(gtu22,ToReal(6))),kmadd(At22L,kmul(cdphi3,kmul(gtu23,ToReal(6))),kmadd(gtu12,kmsub(At22L,kmul(cdphi1,ToReal(6)),kmul(At13L,Gt322)),kmadd(gtu13,kmsub(At23L,kmul(cdphi1,ToReal(6)),kmul(At13L,kadd(Gt323,Gt112))),kmadd(gtu23,kmsub(At23L,kmul(cdphi2,ToReal(6)),kmul(At13L,Gt122)),kmadd(gtu33,kmsub(At23L,kmul(cdphi3,ToReal(6)),kmul(At13L,Gt123)),kmadd(At12L,kmadd(Gt112,kmul(gtu12,ToReal(-3)),kmadd(Gt123,kmul(gtu23,ToReal(-3)),kmadd(Gt113,kmul(gtu13,ToReal(-2)),kmadd(Gt122,kmul(gtu22,ToReal(-2)),knmsub(Gt133,gtu33,kmadd(gtu11,ksub(kmsub(cdphi1,ToReal(6),Gt212),Gt111),kmadd(gtu12,kmsub(cdphi2,ToReal(6),Gt222),kmul(gtu13,kmsub(cdphi3,ToReal(6),Gt223))))))))),kmul(S2,kmul(ToReal(-8),ToReal(Pi))))))))))))))))))))))))))))));
+
+ CCTK_REAL_VEC M3L =
+ kmadd(gtu11,JacPDstandardNth1At13,kmadd(gtu12,JacPDstandardNth1At23,kmadd(gtu13,JacPDstandardNth1At33,kmadd(gtu12,JacPDstandardNth2At13,kmadd(gtu22,JacPDstandardNth2At23,kmadd(gtu23,JacPDstandardNth2At33,kmadd(gtu13,JacPDstandardNth3At13,kmadd(gtu23,JacPDstandardNth3At23,kmadd(gtu33,JacPDstandardNth3At33,kmadd(At33L,kmul(Gt313,kmul(gtu13,ToReal(-3))),kmadd(At23L,kmul(Gt223,kmul(gtu23,ToReal(-3))),kmadd(At33L,kmul(Gt323,kmul(gtu23,ToReal(-3))),kmadd(At23L,kmul(Gt233,kmul(gtu33,ToReal(-2))),kmadd(At33L,kmul(Gt333,kmul(gtu33,ToReal(-2))),knmsub(At11L,kmadd(Gt113,gtu11,kmadd(Gt123,gtu12,kmul(Gt133,gtu13))),kmadd(gtu12,kmsub(At23L,kmul(Gt212,ToReal(-2)),kmul(At12L,Gt223)),knmsub(gtu11,kmadd(At23L,Gt211,kmadd(At33L,Gt311,kmul(At12L,Gt213))),kmadd(At33L,kmsub(Gt312,kmul(gtu12,ToReal(-2)),kmul(Gt322,gtu22)),kmadd(At23L,kmsub(Gt213,kmul(gtu13,ToReal(-3)),kmadd(Gt333,gtu23,kmul(Gt222,gtu22))),kmadd(JacPDstandardNth3trK,ToReal(-0.666666666666666666666666666667),kmadd(At33L,kmul(cdphi3,kmul(gtu33,ToReal(6))),kmadd(gtu13,kmsub(At33L,kmul(cdphi1,ToReal(6)),kmul(At12L,Gt233)),kmadd(gtu23,kmsub(At33L,kmul(cdphi2,ToReal(6)),kmul(At12L,Gt133)),kmadd(gtu23,kmsub(At23L,kmul(cdphi3,ToReal(6)),kmul(At22L,Gt233)),kmadd(gtu12,knmsub(At12L,Gt113,kmsub(At23L,kmsub(cdphi1,ToReal(6),Gt313),kmul(At22L,Gt213))),kmadd(gtu22,knmsub(At12L,Gt123,kmsub(At23L,kmsub(cdphi2,ToReal(6),Gt323),kmul(At22L,Gt223))),kmadd(At13L,kmadd(Gt113,kmul(gtu13,ToReal(-3)),kmadd(Gt123,kmul(gtu23,ToReal(-3)),kmadd(Gt112,kmul(gtu12,ToReal(-2)),kmadd(Gt133,kmul(gtu33,ToReal(-2)),knmsub(Gt122,gtu22,kmadd(gtu11,ksub(kmsub(cdphi1,ToReal(6),Gt313),Gt111),kmadd(gtu12,kmsub(cdphi2,ToReal(6),Gt323),kmul(gtu13,kmsub(cdphi3,ToReal(6),Gt333))))))))),kmul(S3,kmul(ToReal(-8),ToReal(Pi))))))))))))))))))))))))))))));
+
+ CCTK_REAL_VEC cSL = klog(detgt);
+
+ CCTK_REAL_VEC cXt1L =
+ kmadd(Gt111,gtu11,kmadd(Gt122,gtu22,kmadd(Gt133,gtu33,kmsub(kmadd(Gt112,gtu12,kmadd(Gt113,gtu13,kmul(Gt123,gtu23))),ToReal(2),Xt1L))));
+
+ CCTK_REAL_VEC cXt2L =
+ kmadd(Gt211,gtu11,kmadd(Gt222,gtu22,kmadd(Gt233,gtu33,kmsub(kmadd(Gt212,gtu12,kmadd(Gt213,gtu13,kmul(Gt223,gtu23))),ToReal(2),Xt2L))));
+
+ CCTK_REAL_VEC cXt3L =
+ kmadd(Gt311,gtu11,kmadd(Gt322,gtu22,kmadd(Gt333,gtu33,kmsub(kmadd(Gt312,gtu12,kmadd(Gt313,gtu13,kmul(Gt323,gtu23))),ToReal(2),Xt3L))));
+
+ CCTK_REAL_VEC cAL =
+ kmadd(At11L,gtu11,kmadd(At22L,gtu22,kmadd(At33L,gtu33,kmul(kmadd(At12L,gtu12,kmadd(At13L,gtu13,kmul(At23L,gtu23))),ToReal(2)))));
+
+ /* Copy local copies back to grid functions */
+ vec_store_partial_prepare(i,lc_imin,lc_imax);
+ vec_store_nta_partial(cA[index],cAL);
+ vec_store_nta_partial(cS[index],cSL);
+ vec_store_nta_partial(cXt1[index],cXt1L);
+ vec_store_nta_partial(cXt2[index],cXt2L);
+ vec_store_nta_partial(cXt3[index],cXt3L);
+ vec_store_nta_partial(M1[index],M1L);
+ vec_store_nta_partial(M2[index],M2L);
+ vec_store_nta_partial(M3[index],M3L);
+ }
+ LC_ENDLOOP3VEC(ML_CCZ4_constraints2);
+}
+
+extern "C" void ML_CCZ4_constraints2(CCTK_ARGUMENTS)
+{
+ DECLARE_CCTK_ARGUMENTS;
+ DECLARE_CCTK_PARAMETERS;
+
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_CCZ4_constraints2_Body");
+ }
+
+ if (cctk_iteration % ML_CCZ4_constraints2_calc_every != ML_CCZ4_constraints2_calc_offset)
+ {
+ return;
+ }
+
+ const char *const groups[] = {
+ "ML_CCZ4::ML_cons_detg",
+ "ML_CCZ4::ML_cons_Gamma",
+ "ML_CCZ4::ML_cons_traceA",
+ "ML_CCZ4::ML_curv",
+ "ML_CCZ4::ML_Gamma",
+ "ML_CCZ4::ML_lapse",
+ "ML_CCZ4::ML_log_confac",
+ "ML_CCZ4::ML_metric",
+ "ML_CCZ4::ML_mom",
+ "ML_CCZ4::ML_shift",
+ "ML_CCZ4::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_CCZ4_constraints2", 11, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_CCZ4_constraints2", 1, 1, 1);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_CCZ4_constraints2", 2, 2, 2);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_CCZ4_constraints2", 3, 3, 3);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_CCZ4_constraints2", 4, 4, 4);
+ break;
+ }
+
+ GenericFD_LoopOverInterior(cctkGH, ML_CCZ4_constraints2_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_CCZ4_constraints2_Body");
+ }
+}
diff --git a/ML_CCZ4/src/ML_CCZ4_convertFromADMBase.cc b/ML_CCZ4/src/ML_CCZ4_convertFromADMBase.cc
new file mode 100644
index 0000000..d519cae
--- /dev/null
+++ b/ML_CCZ4/src/ML_CCZ4_convertFromADMBase.cc
@@ -0,0 +1,404 @@
+/* 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 "cctk_Loop.h"
+#include "loopcontrol.h"
+#include "vectors.h"
+
+/* Define macros used in calculations */
+#define INITVALUE (42)
+#define QAD(x) (SQR(SQR(x)))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
+
+static void ML_CCZ4_convertFromADMBase_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const imin[3], int const imax[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+{
+ DECLARE_CCTK_ARGUMENTS;
+ DECLARE_CCTK_PARAMETERS;
+
+
+ /* 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_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const t = ToReal(cctk_time);
+ CCTK_REAL_VEC const dxi = INV(dx);
+ CCTK_REAL_VEC const dyi = INV(dy);
+ CCTK_REAL_VEC const dzi = INV(dz);
+ CCTK_REAL_VEC const khalf = ToReal(0.5);
+ CCTK_REAL_VEC const kthird = ToReal(1.0/3.0);
+ CCTK_REAL_VEC const ktwothird = ToReal(2.0/3.0);
+ CCTK_REAL_VEC const kfourthird = ToReal(4.0/3.0);
+ CCTK_REAL_VEC const keightthird = ToReal(8.0/3.0);
+ CCTK_REAL_VEC const hdxi = kmul(ToReal(0.5), dxi);
+ CCTK_REAL_VEC const hdyi = kmul(ToReal(0.5), dyi);
+ CCTK_REAL_VEC const hdzi = kmul(ToReal(0.5), dzi);
+
+ /* Initialize predefined quantities */
+ CCTK_REAL_VEC const p1o1024dx = kmul(INV(dx),ToReal(0.0009765625));
+ CCTK_REAL_VEC const p1o1024dy = kmul(INV(dy),ToReal(0.0009765625));
+ CCTK_REAL_VEC const p1o1024dz = kmul(INV(dz),ToReal(0.0009765625));
+ CCTK_REAL_VEC const p1o120dx = kmul(INV(dx),ToReal(0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o120dy = kmul(INV(dy),ToReal(0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o120dz = kmul(INV(dz),ToReal(0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dx = kmul(INV(dx),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dy = kmul(INV(dy),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dz = kmul(INV(dz),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o144dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o144dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o144dydz = kmul(INV(kmul(dy,dz)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o1680dx = kmul(INV(dx),ToReal(0.000595238095238095238095238095238));
+ CCTK_REAL_VEC const p1o1680dy = kmul(INV(dy),ToReal(0.000595238095238095238095238095238));
+ CCTK_REAL_VEC const p1o1680dz = kmul(INV(dz),ToReal(0.000595238095238095238095238095238));
+ CCTK_REAL_VEC const p1o16dx = kmul(INV(dx),ToReal(0.0625));
+ CCTK_REAL_VEC const p1o16dy = kmul(INV(dy),ToReal(0.0625));
+ CCTK_REAL_VEC const p1o16dz = kmul(INV(dz),ToReal(0.0625));
+ CCTK_REAL_VEC const p1o180dx2 = kmul(INV(SQR(dx)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o180dy2 = kmul(INV(SQR(dy)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o180dz2 = kmul(INV(SQR(dz)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o24dx = kmul(INV(dx),ToReal(0.0416666666666666666666666666667));
+ CCTK_REAL_VEC const p1o24dy = kmul(INV(dy),ToReal(0.0416666666666666666666666666667));
+ CCTK_REAL_VEC const p1o24dz = kmul(INV(dz),ToReal(0.0416666666666666666666666666667));
+ CCTK_REAL_VEC const p1o256dx = kmul(INV(dx),ToReal(0.00390625));
+ CCTK_REAL_VEC const p1o256dy = kmul(INV(dy),ToReal(0.00390625));
+ CCTK_REAL_VEC const p1o256dz = kmul(INV(dz),ToReal(0.00390625));
+ CCTK_REAL_VEC const p1o2dx = kmul(INV(dx),ToReal(0.5));
+ CCTK_REAL_VEC const p1o2dy = kmul(INV(dy),ToReal(0.5));
+ CCTK_REAL_VEC const p1o2dz = kmul(INV(dz),ToReal(0.5));
+ CCTK_REAL_VEC const p1o3600dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o3600dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o3600dydz = kmul(INV(kmul(dy,dz)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o4dx = kmul(INV(dx),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(kmul(dy,dz)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dz = kmul(INV(dz),ToReal(0.25));
+ CCTK_REAL_VEC const p1o5040dx2 = kmul(INV(SQR(dx)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o5040dy2 = kmul(INV(SQR(dy)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o5040dz2 = kmul(INV(SQR(dz)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o560dx = kmul(INV(dx),ToReal(0.00178571428571428571428571428571));
+ CCTK_REAL_VEC const p1o560dy = kmul(INV(dy),ToReal(0.00178571428571428571428571428571));
+ CCTK_REAL_VEC const p1o560dz = kmul(INV(dz),ToReal(0.00178571428571428571428571428571));
+ CCTK_REAL_VEC const p1o60dx = kmul(INV(dx),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o60dy = kmul(INV(dy),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o60dz = kmul(INV(dz),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o64dx = kmul(INV(dx),ToReal(0.015625));
+ CCTK_REAL_VEC const p1o64dy = kmul(INV(dy),ToReal(0.015625));
+ CCTK_REAL_VEC const p1o64dz = kmul(INV(dz),ToReal(0.015625));
+ CCTK_REAL_VEC const p1o705600dxdy = kmul(INV(kmul(dx,dy)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(kmul(dx,dz)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(kmul(dy,dz)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1odx = INV(dx);
+ CCTK_REAL_VEC const p1odx2 = INV(SQR(dx));
+ CCTK_REAL_VEC const p1ody = INV(dy);
+ CCTK_REAL_VEC const p1ody2 = INV(SQR(dy));
+ CCTK_REAL_VEC const p1odz = INV(dz);
+ CCTK_REAL_VEC const p1odz2 = INV(SQR(dz));
+ CCTK_REAL_VEC const pm1o120dx = kmul(INV(dx),ToReal(-0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o120dy = kmul(INV(dy),ToReal(-0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o120dz = kmul(INV(dz),ToReal(-0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dx2 = kmul(INV(SQR(dx)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dy2 = kmul(INV(SQR(dy)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dz2 = kmul(INV(SQR(dz)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o2dx = kmul(INV(dx),ToReal(-0.5));
+ CCTK_REAL_VEC const pm1o2dy = kmul(INV(dy),ToReal(-0.5));
+ CCTK_REAL_VEC const pm1o2dz = kmul(INV(dz),ToReal(-0.5));
+ CCTK_REAL_VEC const pm1o4dx = kmul(INV(dx),ToReal(-0.25));
+ CCTK_REAL_VEC const pm1o4dy = kmul(INV(dy),ToReal(-0.25));
+ CCTK_REAL_VEC const pm1o4dz = kmul(INV(dz),ToReal(-0.25));
+ CCTK_REAL_VEC const pm1o60dx = kmul(INV(dx),ToReal(-0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const pm1o60dy = kmul(INV(dy),ToReal(-0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const pm1o60dz = kmul(INV(dz),ToReal(-0.0166666666666666666666666666667));
+
+ /* 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;
+
+ /* Assign local copies of arrays functions */
+
+
+
+ /* Calculate temporaries and arrays functions */
+
+ /* Copy local copies back to grid functions */
+
+ /* Loop over the grid points */
+ #pragma omp parallel
+ LC_LOOP3VEC(ML_CCZ4_convertFromADMBase,
+ i,j,k, imin[0],imin[1],imin[2], imax[0],imax[1],imax[2],
+ cctk_lsh[0],cctk_lsh[1],cctk_lsh[2],
+ CCTK_REAL_VEC_SIZE)
+ {
+ ptrdiff_t const index = di*i + dj*j + dk*k;
+
+ /* Assign local copies of grid functions */
+
+ CCTK_REAL_VEC alpL = vec_load(alp[index]);
+ CCTK_REAL_VEC betaxL = vec_load(betax[index]);
+ CCTK_REAL_VEC betayL = vec_load(betay[index]);
+ CCTK_REAL_VEC betazL = vec_load(betaz[index]);
+ CCTK_REAL_VEC gxxL = vec_load(gxx[index]);
+ CCTK_REAL_VEC gxyL = vec_load(gxy[index]);
+ CCTK_REAL_VEC gxzL = vec_load(gxz[index]);
+ CCTK_REAL_VEC gyyL = vec_load(gyy[index]);
+ CCTK_REAL_VEC gyzL = vec_load(gyz[index]);
+ CCTK_REAL_VEC gzzL = vec_load(gzz[index]);
+ CCTK_REAL_VEC kxxL = vec_load(kxx[index]);
+ CCTK_REAL_VEC kxyL = vec_load(kxy[index]);
+ CCTK_REAL_VEC kxzL = vec_load(kxz[index]);
+ CCTK_REAL_VEC kyyL = vec_load(kyy[index]);
+ CCTK_REAL_VEC kyzL = vec_load(kyz[index]);
+ CCTK_REAL_VEC kzzL = vec_load(kzz[index]);
+ CCTK_REAL_VEC phiL = vec_load(phi[index]);
+ CCTK_REAL_VEC trKL = vec_load(trK[index]);
+
+
+
+ /* Include user supplied include files */
+
+ /* Precompute derivatives */
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
+ /* Calculate temporaries and grid functions */
+ CCTK_REAL_VEC g11 = gxxL;
+
+ CCTK_REAL_VEC g12 = gxyL;
+
+ CCTK_REAL_VEC g13 = gxzL;
+
+ CCTK_REAL_VEC g22 = gyyL;
+
+ CCTK_REAL_VEC g23 = gyzL;
+
+ CCTK_REAL_VEC g33 = gzzL;
+
+ CCTK_REAL_VEC detg =
+ knmsub(g22,SQR(g13),knmsub(g11,SQR(g23),kmadd(g33,kmsub(g11,g22,SQR(g12)),kmul(g12,kmul(g13,kmul(g23,ToReal(2)))))));
+
+ CCTK_REAL_VEC gu11 = kmul(INV(detg),kmsub(g22,g33,SQR(g23)));
+
+ CCTK_REAL_VEC gu12 = kmul(INV(detg),kmsub(g13,g23,kmul(g12,g33)));
+
+ CCTK_REAL_VEC gu13 = kmul(INV(detg),kmsub(g12,g23,kmul(g13,g22)));
+
+ CCTK_REAL_VEC gu22 = kmul(INV(detg),kmsub(g11,g33,SQR(g13)));
+
+ CCTK_REAL_VEC gu23 = kmul(INV(detg),kmsub(g12,g13,kmul(g11,g23)));
+
+ CCTK_REAL_VEC gu33 = kmul(INV(detg),kmsub(g11,g22,SQR(g12)));
+
+ CCTK_REAL_VEC em4phi;
+
+ if (conformalMethod == 1)
+ {
+ phiL = kpow(detg,-0.166666666666666666666666666667);
+
+ em4phi = SQR(phiL);
+ }
+ else
+ {
+ phiL = kmul(klog(detg),ToReal(0.0833333333333333333333333333333));
+
+ em4phi = kexp(kmul(phiL,ToReal(-4)));
+ }
+
+ CCTK_REAL_VEC gt11L = kmul(em4phi,g11);
+
+ CCTK_REAL_VEC gt12L = kmul(em4phi,g12);
+
+ CCTK_REAL_VEC gt13L = kmul(em4phi,g13);
+
+ CCTK_REAL_VEC gt22L = kmul(em4phi,g22);
+
+ CCTK_REAL_VEC gt23L = kmul(em4phi,g23);
+
+ CCTK_REAL_VEC gt33L = kmul(em4phi,g33);
+
+ trKL =
+ kmadd(kxxL,gu11,kmadd(kyyL,gu22,kmadd(kzzL,gu33,kmul(kmadd(kxyL,gu12,kmadd(kxzL,gu13,kmul(kyzL,gu23))),ToReal(2)))));
+
+ CCTK_REAL_VEC At11L =
+ kmul(em4phi,kmadd(trKL,kmul(g11,ToReal(-0.333333333333333333333333333333)),kxxL));
+
+ CCTK_REAL_VEC At12L =
+ kmul(em4phi,kmadd(trKL,kmul(g12,ToReal(-0.333333333333333333333333333333)),kxyL));
+
+ CCTK_REAL_VEC At13L =
+ kmul(em4phi,kmadd(trKL,kmul(g13,ToReal(-0.333333333333333333333333333333)),kxzL));
+
+ CCTK_REAL_VEC At22L =
+ kmul(em4phi,kmadd(trKL,kmul(g22,ToReal(-0.333333333333333333333333333333)),kyyL));
+
+ CCTK_REAL_VEC At23L =
+ kmul(em4phi,kmadd(trKL,kmul(g23,ToReal(-0.333333333333333333333333333333)),kyzL));
+
+ CCTK_REAL_VEC At33L =
+ kmul(em4phi,kmadd(trKL,kmul(g33,ToReal(-0.333333333333333333333333333333)),kzzL));
+
+ CCTK_REAL_VEC alphaL = alpL;
+
+ CCTK_REAL_VEC beta1L = betaxL;
+
+ CCTK_REAL_VEC beta2L = betayL;
+
+ CCTK_REAL_VEC beta3L = betazL;
+
+ CCTK_REAL_VEC ThetaL = ToReal(0);
+
+ /* Copy local copies back to grid functions */
+ vec_store_partial_prepare(i,lc_imin,lc_imax);
+ vec_store_nta_partial(alpha[index],alphaL);
+ vec_store_nta_partial(At11[index],At11L);
+ vec_store_nta_partial(At12[index],At12L);
+ vec_store_nta_partial(At13[index],At13L);
+ vec_store_nta_partial(At22[index],At22L);
+ vec_store_nta_partial(At23[index],At23L);
+ vec_store_nta_partial(At33[index],At33L);
+ vec_store_nta_partial(beta1[index],beta1L);
+ vec_store_nta_partial(beta2[index],beta2L);
+ vec_store_nta_partial(beta3[index],beta3L);
+ vec_store_nta_partial(gt11[index],gt11L);
+ vec_store_nta_partial(gt12[index],gt12L);
+ vec_store_nta_partial(gt13[index],gt13L);
+ vec_store_nta_partial(gt22[index],gt22L);
+ vec_store_nta_partial(gt23[index],gt23L);
+ vec_store_nta_partial(gt33[index],gt33L);
+ vec_store_nta_partial(phi[index],phiL);
+ vec_store_nta_partial(Theta[index],ThetaL);
+ vec_store_nta_partial(trK[index],trKL);
+ }
+ LC_ENDLOOP3VEC(ML_CCZ4_convertFromADMBase);
+}
+
+extern "C" void ML_CCZ4_convertFromADMBase(CCTK_ARGUMENTS)
+{
+ DECLARE_CCTK_ARGUMENTS;
+ DECLARE_CCTK_PARAMETERS;
+
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_CCZ4_convertFromADMBase_Body");
+ }
+
+ if (cctk_iteration % ML_CCZ4_convertFromADMBase_calc_every != ML_CCZ4_convertFromADMBase_calc_offset)
+ {
+ return;
+ }
+
+ const char *const groups[] = {
+ "ADMBase::curv",
+ "ADMBase::lapse",
+ "ADMBase::metric",
+ "ADMBase::shift",
+ "ML_CCZ4::ML_curv",
+ "ML_CCZ4::ML_lapse",
+ "ML_CCZ4::ML_log_confac",
+ "ML_CCZ4::ML_metric",
+ "ML_CCZ4::ML_shift",
+ "ML_CCZ4::ML_Theta",
+ "ML_CCZ4::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_CCZ4_convertFromADMBase", 11, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
+ GenericFD_LoopOverEverything(cctkGH, ML_CCZ4_convertFromADMBase_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_CCZ4_convertFromADMBase_Body");
+ }
+}
diff --git a/ML_CCZ4/src/ML_CCZ4_convertFromADMBaseGamma.cc b/ML_CCZ4/src/ML_CCZ4_convertFromADMBaseGamma.cc
new file mode 100644
index 0000000..0f759e0
--- /dev/null
+++ b/ML_CCZ4/src/ML_CCZ4_convertFromADMBaseGamma.cc
@@ -0,0 +1,926 @@
+/* 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 "cctk_Loop.h"
+#include "loopcontrol.h"
+#include "vectors.h"
+
+/* Define macros used in calculations */
+#define INITVALUE (42)
+#define QAD(x) (SQR(SQR(x)))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
+
+extern "C" void ML_CCZ4_convertFromADMBaseGamma_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_CCZ4::ML_dtlapse","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_dtlapse.");
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_CCZ4::ML_dtshift","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_dtshift.");
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_CCZ4::ML_Gamma","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ML_CCZ4::ML_Gamma.");
+ return;
+}
+
+static void ML_CCZ4_convertFromADMBaseGamma_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const imin[3], int const imax[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+{
+ DECLARE_CCTK_ARGUMENTS;
+ DECLARE_CCTK_PARAMETERS;
+
+
+ /* 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_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const t = ToReal(cctk_time);
+ CCTK_REAL_VEC const dxi = INV(dx);
+ CCTK_REAL_VEC const dyi = INV(dy);
+ CCTK_REAL_VEC const dzi = INV(dz);
+ CCTK_REAL_VEC const khalf = ToReal(0.5);
+ CCTK_REAL_VEC const kthird = ToReal(1.0/3.0);
+ CCTK_REAL_VEC const ktwothird = ToReal(2.0/3.0);
+ CCTK_REAL_VEC const kfourthird = ToReal(4.0/3.0);
+ CCTK_REAL_VEC const keightthird = ToReal(8.0/3.0);
+ CCTK_REAL_VEC const hdxi = kmul(ToReal(0.5), dxi);
+ CCTK_REAL_VEC const hdyi = kmul(ToReal(0.5), dyi);
+ CCTK_REAL_VEC const hdzi = kmul(ToReal(0.5), dzi);
+
+ /* Initialize predefined quantities */
+ CCTK_REAL_VEC const p1o1024dx = kmul(INV(dx),ToReal(0.0009765625));
+ CCTK_REAL_VEC const p1o1024dy = kmul(INV(dy),ToReal(0.0009765625));
+ CCTK_REAL_VEC const p1o1024dz = kmul(INV(dz),ToReal(0.0009765625));
+ CCTK_REAL_VEC const p1o120dx = kmul(INV(dx),ToReal(0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o120dy = kmul(INV(dy),ToReal(0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o120dz = kmul(INV(dz),ToReal(0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dx = kmul(INV(dx),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dy = kmul(INV(dy),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dz = kmul(INV(dz),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o144dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o144dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o144dydz = kmul(INV(kmul(dy,dz)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o1680dx = kmul(INV(dx),ToReal(0.000595238095238095238095238095238));
+ CCTK_REAL_VEC const p1o1680dy = kmul(INV(dy),ToReal(0.000595238095238095238095238095238));
+ CCTK_REAL_VEC const p1o1680dz = kmul(INV(dz),ToReal(0.000595238095238095238095238095238));
+ CCTK_REAL_VEC const p1o16dx = kmul(INV(dx),ToReal(0.0625));
+ CCTK_REAL_VEC const p1o16dy = kmul(INV(dy),ToReal(0.0625));
+ CCTK_REAL_VEC const p1o16dz = kmul(INV(dz),ToReal(0.0625));
+ CCTK_REAL_VEC const p1o180dx2 = kmul(INV(SQR(dx)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o180dy2 = kmul(INV(SQR(dy)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o180dz2 = kmul(INV(SQR(dz)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o24dx = kmul(INV(dx),ToReal(0.0416666666666666666666666666667));
+ CCTK_REAL_VEC const p1o24dy = kmul(INV(dy),ToReal(0.0416666666666666666666666666667));
+ CCTK_REAL_VEC const p1o24dz = kmul(INV(dz),ToReal(0.0416666666666666666666666666667));
+ CCTK_REAL_VEC const p1o256dx = kmul(INV(dx),ToReal(0.00390625));
+ CCTK_REAL_VEC const p1o256dy = kmul(INV(dy),ToReal(0.00390625));
+ CCTK_REAL_VEC const p1o256dz = kmul(INV(dz),ToReal(0.00390625));
+ CCTK_REAL_VEC const p1o2dx = kmul(INV(dx),ToReal(0.5));
+ CCTK_REAL_VEC const p1o2dy = kmul(INV(dy),ToReal(0.5));
+ CCTK_REAL_VEC const p1o2dz = kmul(INV(dz),ToReal(0.5));
+ CCTK_REAL_VEC const p1o3600dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o3600dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o3600dydz = kmul(INV(kmul(dy,dz)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o4dx = kmul(INV(dx),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(kmul(dy,dz)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dz = kmul(INV(dz),ToReal(0.25));
+ CCTK_REAL_VEC const p1o5040dx2 = kmul(INV(SQR(dx)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o5040dy2 = kmul(INV(SQR(dy)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o5040dz2 = kmul(INV(SQR(dz)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o560dx = kmul(INV(dx),ToReal(0.00178571428571428571428571428571));
+ CCTK_REAL_VEC const p1o560dy = kmul(INV(dy),ToReal(0.00178571428571428571428571428571));
+ CCTK_REAL_VEC const p1o560dz = kmul(INV(dz),ToReal(0.00178571428571428571428571428571));
+ CCTK_REAL_VEC const p1o60dx = kmul(INV(dx),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o60dy = kmul(INV(dy),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o60dz = kmul(INV(dz),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o64dx = kmul(INV(dx),ToReal(0.015625));
+ CCTK_REAL_VEC const p1o64dy = kmul(INV(dy),ToReal(0.015625));
+ CCTK_REAL_VEC const p1o64dz = kmul(INV(dz),ToReal(0.015625));
+ CCTK_REAL_VEC const p1o705600dxdy = kmul(INV(kmul(dx,dy)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(kmul(dx,dz)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(kmul(dy,dz)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1odx = INV(dx);
+ CCTK_REAL_VEC const p1odx2 = INV(SQR(dx));
+ CCTK_REAL_VEC const p1ody = INV(dy);
+ CCTK_REAL_VEC const p1ody2 = INV(SQR(dy));
+ CCTK_REAL_VEC const p1odz = INV(dz);
+ CCTK_REAL_VEC const p1odz2 = INV(SQR(dz));
+ CCTK_REAL_VEC const pm1o120dx = kmul(INV(dx),ToReal(-0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o120dy = kmul(INV(dy),ToReal(-0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o120dz = kmul(INV(dz),ToReal(-0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dx2 = kmul(INV(SQR(dx)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dy2 = kmul(INV(SQR(dy)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dz2 = kmul(INV(SQR(dz)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o2dx = kmul(INV(dx),ToReal(-0.5));
+ CCTK_REAL_VEC const pm1o2dy = kmul(INV(dy),ToReal(-0.5));
+ CCTK_REAL_VEC const pm1o2dz = kmul(INV(dz),ToReal(-0.5));
+ CCTK_REAL_VEC const pm1o4dx = kmul(INV(dx),ToReal(-0.25));
+ CCTK_REAL_VEC const pm1o4dy = kmul(INV(dy),ToReal(-0.25));
+ CCTK_REAL_VEC const pm1o4dz = kmul(INV(dz),ToReal(-0.25));
+ CCTK_REAL_VEC const pm1o60dx = kmul(INV(dx),ToReal(-0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const pm1o60dy = kmul(INV(dy),ToReal(-0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const pm1o60dz = kmul(INV(dz),ToReal(-0.0166666666666666666666666666667));
+
+ /* 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;
+
+ /* Assign local copies of arrays functions */
+
+
+
+ /* Calculate temporaries and arrays functions */
+
+ /* Copy local copies back to grid functions */
+
+ /* Loop over the grid points */
+ #pragma omp parallel
+ LC_LOOP3VEC(ML_CCZ4_convertFromADMBaseGamma,
+ i,j,k, imin[0],imin[1],imin[2], imax[0],imax[1],imax[2],
+ cctk_lsh[0],cctk_lsh[1],cctk_lsh[2],
+ CCTK_REAL_VEC_SIZE)
+ {
+ ptrdiff_t const index = di*i + dj*j + dk*k;
+
+ /* Assign local copies of grid functions */
+
+ CCTK_REAL_VEC alphaL = vec_load(alpha[index]);
+ CCTK_REAL_VEC beta1L = vec_load(beta1[index]);
+ CCTK_REAL_VEC beta2L = vec_load(beta2[index]);
+ CCTK_REAL_VEC beta3L = vec_load(beta3[index]);
+ CCTK_REAL_VEC dtalpL = vec_load(dtalp[index]);
+ CCTK_REAL_VEC dtbetaxL = vec_load(dtbetax[index]);
+ CCTK_REAL_VEC dtbetayL = vec_load(dtbetay[index]);
+ CCTK_REAL_VEC dtbetazL = vec_load(dtbetaz[index]);
+ CCTK_REAL_VEC gt11L = vec_load(gt11[index]);
+ CCTK_REAL_VEC gt12L = vec_load(gt12[index]);
+ CCTK_REAL_VEC gt13L = vec_load(gt13[index]);
+ CCTK_REAL_VEC gt22L = vec_load(gt22[index]);
+ CCTK_REAL_VEC gt23L = vec_load(gt23[index]);
+ CCTK_REAL_VEC gt33L = vec_load(gt33[index]);
+ CCTK_REAL_VEC rL = vec_load(r[index]);
+
+
+ CCTK_REAL_VEC J11L, J12L, J13L, J21L, J22L, J23L, J31L, J32L, J33L;
+
+ if (use_jacobian)
+ {
+ J11L = vec_load(J11[index]);
+ J12L = vec_load(J12[index]);
+ J13L = vec_load(J13[index]);
+ J21L = vec_load(J21[index]);
+ J22L = vec_load(J22[index]);
+ J23L = vec_load(J23[index]);
+ J31L = vec_load(J31[index]);
+ J32L = vec_load(J32[index]);
+ J33L = vec_load(J33[index]);
+ }
+
+ /* Include user supplied include files */
+
+ /* Precompute derivatives */
+ CCTK_REAL_VEC PDupwindNthAnti1alpha;
+ CCTK_REAL_VEC PDupwindNthSymm1alpha;
+ CCTK_REAL_VEC PDupwindNthAnti2alpha;
+ CCTK_REAL_VEC PDupwindNthSymm2alpha;
+ CCTK_REAL_VEC PDupwindNthAnti3alpha;
+ CCTK_REAL_VEC PDupwindNthSymm3alpha;
+ CCTK_REAL_VEC PDupwindNthAnti1beta1;
+ CCTK_REAL_VEC PDupwindNthSymm1beta1;
+ CCTK_REAL_VEC PDupwindNthAnti2beta1;
+ CCTK_REAL_VEC PDupwindNthSymm2beta1;
+ CCTK_REAL_VEC PDupwindNthAnti3beta1;
+ CCTK_REAL_VEC PDupwindNthSymm3beta1;
+ CCTK_REAL_VEC PDupwindNthAnti1beta2;
+ CCTK_REAL_VEC PDupwindNthSymm1beta2;
+ CCTK_REAL_VEC PDupwindNthAnti2beta2;
+ CCTK_REAL_VEC PDupwindNthSymm2beta2;
+ CCTK_REAL_VEC PDupwindNthAnti3beta2;
+ CCTK_REAL_VEC PDupwindNthSymm3beta2;
+ CCTK_REAL_VEC PDupwindNthAnti1beta3;
+ CCTK_REAL_VEC PDupwindNthSymm1beta3;
+ CCTK_REAL_VEC PDupwindNthAnti2beta3;
+ CCTK_REAL_VEC PDupwindNthSymm2beta3;
+ CCTK_REAL_VEC PDupwindNthAnti3beta3;
+ CCTK_REAL_VEC PDupwindNthSymm3beta3;
+ CCTK_REAL_VEC PDstandardNth1gt11;
+ CCTK_REAL_VEC PDstandardNth2gt11;
+ CCTK_REAL_VEC PDstandardNth3gt11;
+ CCTK_REAL_VEC PDstandardNth1gt12;
+ CCTK_REAL_VEC PDstandardNth2gt12;
+ CCTK_REAL_VEC PDstandardNth3gt12;
+ CCTK_REAL_VEC PDstandardNth1gt13;
+ CCTK_REAL_VEC PDstandardNth2gt13;
+ CCTK_REAL_VEC PDstandardNth3gt13;
+ CCTK_REAL_VEC PDstandardNth1gt22;
+ CCTK_REAL_VEC PDstandardNth2gt22;
+ CCTK_REAL_VEC PDstandardNth3gt22;
+ CCTK_REAL_VEC PDstandardNth1gt23;
+ CCTK_REAL_VEC PDstandardNth2gt23;
+ CCTK_REAL_VEC PDstandardNth3gt23;
+ CCTK_REAL_VEC PDstandardNth1gt33;
+ CCTK_REAL_VEC PDstandardNth2gt33;
+ CCTK_REAL_VEC PDstandardNth3gt33;
+
+ switch(fdOrder)
+ {
+ case 2:
+ PDupwindNthAnti1alpha = PDupwindNthAntifdOrder21(&alpha[index]);
+ PDupwindNthSymm1alpha = PDupwindNthSymmfdOrder21(&alpha[index]);
+ PDupwindNthAnti2alpha = PDupwindNthAntifdOrder22(&alpha[index]);
+ PDupwindNthSymm2alpha = PDupwindNthSymmfdOrder22(&alpha[index]);
+ PDupwindNthAnti3alpha = PDupwindNthAntifdOrder23(&alpha[index]);
+ PDupwindNthSymm3alpha = PDupwindNthSymmfdOrder23(&alpha[index]);
+ PDupwindNthAnti1beta1 = PDupwindNthAntifdOrder21(&beta1[index]);
+ PDupwindNthSymm1beta1 = PDupwindNthSymmfdOrder21(&beta1[index]);
+ PDupwindNthAnti2beta1 = PDupwindNthAntifdOrder22(&beta1[index]);
+ PDupwindNthSymm2beta1 = PDupwindNthSymmfdOrder22(&beta1[index]);
+ PDupwindNthAnti3beta1 = PDupwindNthAntifdOrder23(&beta1[index]);
+ PDupwindNthSymm3beta1 = PDupwindNthSymmfdOrder23(&beta1[index]);
+ PDupwindNthAnti1beta2 = PDupwindNthAntifdOrder21(&beta2[index]);
+ PDupwindNthSymm1beta2 = PDupwindNthSymmfdOrder21(&beta2[index]);
+ PDupwindNthAnti2beta2 = PDupwindNthAntifdOrder22(&beta2[index]);
+ PDupwindNthSymm2beta2 = PDupwindNthSymmfdOrder22(&beta2[index]);
+ PDupwindNthAnti3beta2 = PDupwindNthAntifdOrder23(&beta2[index]);
+ PDupwindNthSymm3beta2 = PDupwindNthSymmfdOrder23(&beta2[index]);
+ PDupwindNthAnti1beta3 = PDupwindNthAntifdOrder21(&beta3[index]);
+ PDupwindNthSymm1beta3 = PDupwindNthSymmfdOrder21(&beta3[index]);
+ PDupwindNthAnti2beta3 = PDupwindNthAntifdOrder22(&beta3[index]);
+ PDupwindNthSymm2beta3 = PDupwindNthSymmfdOrder22(&beta3[index]);
+ PDupwindNthAnti3beta3 = PDupwindNthAntifdOrder23(&beta3[index]);
+ PDupwindNthSymm3beta3 = PDupwindNthSymmfdOrder23(&beta3[index]);
+ PDstandardNth1gt11 = PDstandardNthfdOrder21(&gt11[index]);
+ PDstandardNth2gt11 = PDstandardNthfdOrder22(&gt11[index]);
+ PDstandardNth3gt11 = PDstandardNthfdOrder23(&gt11[index]);
+ PDstandardNth1gt12 = PDstandardNthfdOrder21(&gt12[index]);
+ PDstandardNth2gt12 = PDstandardNthfdOrder22(&gt12[index]);
+ PDstandardNth3gt12 = PDstandardNthfdOrder23(&gt12[index]);
+ PDstandardNth1gt13 = PDstandardNthfdOrder21(&gt13[index]);
+ PDstandardNth2gt13 = PDstandardNthfdOrder22(&gt13[index]);
+ PDstandardNth3gt13 = PDstandardNthfdOrder23(&gt13[index]);
+ PDstandardNth1gt22 = PDstandardNthfdOrder21(&gt22[index]);
+ PDstandardNth2gt22 = PDstandardNthfdOrder22(&gt22[index]);
+ PDstandardNth3gt22 = PDstandardNthfdOrder23(&gt22[index]);
+ PDstandardNth1gt23 = PDstandardNthfdOrder21(&gt23[index]);
+ PDstandardNth2gt23 = PDstandardNthfdOrder22(&gt23[index]);
+ PDstandardNth3gt23 = PDstandardNthfdOrder23(&gt23[index]);
+ PDstandardNth1gt33 = PDstandardNthfdOrder21(&gt33[index]);
+ PDstandardNth2gt33 = PDstandardNthfdOrder22(&gt33[index]);
+ PDstandardNth3gt33 = PDstandardNthfdOrder23(&gt33[index]);
+ break;
+
+ case 4:
+ PDupwindNthAnti1alpha = PDupwindNthAntifdOrder41(&alpha[index]);
+ PDupwindNthSymm1alpha = PDupwindNthSymmfdOrder41(&alpha[index]);
+ PDupwindNthAnti2alpha = PDupwindNthAntifdOrder42(&alpha[index]);
+ PDupwindNthSymm2alpha = PDupwindNthSymmfdOrder42(&alpha[index]);
+ PDupwindNthAnti3alpha = PDupwindNthAntifdOrder43(&alpha[index]);
+ PDupwindNthSymm3alpha = PDupwindNthSymmfdOrder43(&alpha[index]);
+ PDupwindNthAnti1beta1 = PDupwindNthAntifdOrder41(&beta1[index]);
+ PDupwindNthSymm1beta1 = PDupwindNthSymmfdOrder41(&beta1[index]);
+ PDupwindNthAnti2beta1 = PDupwindNthAntifdOrder42(&beta1[index]);
+ PDupwindNthSymm2beta1 = PDupwindNthSymmfdOrder42(&beta1[index]);
+ PDupwindNthAnti3beta1 = PDupwindNthAntifdOrder43(&beta1[index]);
+ PDupwindNthSymm3beta1 = PDupwindNthSymmfdOrder43(&beta1[index]);
+ PDupwindNthAnti1beta2 = PDupwindNthAntifdOrder41(&beta2[index]);
+ PDupwindNthSymm1beta2 = PDupwindNthSymmfdOrder41(&beta2[index]);
+ PDupwindNthAnti2beta2 = PDupwindNthAntifdOrder42(&beta2[index]);
+ PDupwindNthSymm2beta2 = PDupwindNthSymmfdOrder42(&beta2[index]);
+ PDupwindNthAnti3beta2 = PDupwindNthAntifdOrder43(&beta2[index]);
+ PDupwindNthSymm3beta2 = PDupwindNthSymmfdOrder43(&beta2[index]);
+ PDupwindNthAnti1beta3 = PDupwindNthAntifdOrder41(&beta3[index]);
+ PDupwindNthSymm1beta3 = PDupwindNthSymmfdOrder41(&beta3[index]);
+ PDupwindNthAnti2beta3 = PDupwindNthAntifdOrder42(&beta3[index]);
+ PDupwindNthSymm2beta3 = PDupwindNthSymmfdOrder42(&beta3[index]);
+ PDupwindNthAnti3beta3 = PDupwindNthAntifdOrder43(&beta3[index]);
+ PDupwindNthSymm3beta3 = PDupwindNthSymmfdOrder43(&beta3[index]);
+ PDstandardNth1gt11 = PDstandardNthfdOrder41(&gt11[index]);
+ PDstandardNth2gt11 = PDstandardNthfdOrder42(&gt11[index]);
+ PDstandardNth3gt11 = PDstandardNthfdOrder43(&gt11[index]);
+ PDstandardNth1gt12 = PDstandardNthfdOrder41(&gt12[index]);
+ PDstandardNth2gt12 = PDstandardNthfdOrder42(&gt12[index]);
+ PDstandardNth3gt12 = PDstandardNthfdOrder43(&gt12[index]);
+ PDstandardNth1gt13 = PDstandardNthfdOrder41(&gt13[index]);
+ PDstandardNth2gt13 = PDstandardNthfdOrder42(&gt13[index]);
+ PDstandardNth3gt13 = PDstandardNthfdOrder43(&gt13[index]);
+ PDstandardNth1gt22 = PDstandardNthfdOrder41(&gt22[index]);
+ PDstandardNth2gt22 = PDstandardNthfdOrder42(&gt22[index]);
+ PDstandardNth3gt22 = PDstandardNthfdOrder43(&gt22[index]);
+ PDstandardNth1gt23 = PDstandardNthfdOrder41(&gt23[index]);
+ PDstandardNth2gt23 = PDstandardNthfdOrder42(&gt23[index]);
+ PDstandardNth3gt23 = PDstandardNthfdOrder43(&gt23[index]);
+ PDstandardNth1gt33 = PDstandardNthfdOrder41(&gt33[index]);
+ PDstandardNth2gt33 = PDstandardNthfdOrder42(&gt33[index]);
+ PDstandardNth3gt33 = PDstandardNthfdOrder43(&gt33[index]);
+ break;
+
+ case 6:
+ PDupwindNthAnti1alpha = PDupwindNthAntifdOrder61(&alpha[index]);
+ PDupwindNthSymm1alpha = PDupwindNthSymmfdOrder61(&alpha[index]);
+ PDupwindNthAnti2alpha = PDupwindNthAntifdOrder62(&alpha[index]);
+ PDupwindNthSymm2alpha = PDupwindNthSymmfdOrder62(&alpha[index]);
+ PDupwindNthAnti3alpha = PDupwindNthAntifdOrder63(&alpha[index]);
+ PDupwindNthSymm3alpha = PDupwindNthSymmfdOrder63(&alpha[index]);
+ PDupwindNthAnti1beta1 = PDupwindNthAntifdOrder61(&beta1[index]);
+ PDupwindNthSymm1beta1 = PDupwindNthSymmfdOrder61(&beta1[index]);
+ PDupwindNthAnti2beta1 = PDupwindNthAntifdOrder62(&beta1[index]);
+ PDupwindNthSymm2beta1 = PDupwindNthSymmfdOrder62(&beta1[index]);
+ PDupwindNthAnti3beta1 = PDupwindNthAntifdOrder63(&beta1[index]);
+ PDupwindNthSymm3beta1 = PDupwindNthSymmfdOrder63(&beta1[index]);
+ PDupwindNthAnti1beta2 = PDupwindNthAntifdOrder61(&beta2[index]);
+ PDupwindNthSymm1beta2 = PDupwindNthSymmfdOrder61(&beta2[index]);
+ PDupwindNthAnti2beta2 = PDupwindNthAntifdOrder62(&beta2[index]);
+ PDupwindNthSymm2beta2 = PDupwindNthSymmfdOrder62(&beta2[index]);
+ PDupwindNthAnti3beta2 = PDupwindNthAntifdOrder63(&beta2[index]);
+ PDupwindNthSymm3beta2 = PDupwindNthSymmfdOrder63(&beta2[index]);
+ PDupwindNthAnti1beta3 = PDupwindNthAntifdOrder61(&beta3[index]);
+ PDupwindNthSymm1beta3 = PDupwindNthSymmfdOrder61(&beta3[index]);
+ PDupwindNthAnti2beta3 = PDupwindNthAntifdOrder62(&beta3[index]);
+ PDupwindNthSymm2beta3 = PDupwindNthSymmfdOrder62(&beta3[index]);
+ PDupwindNthAnti3beta3 = PDupwindNthAntifdOrder63(&beta3[index]);
+ PDupwindNthSymm3beta3 = PDupwindNthSymmfdOrder63(&beta3[index]);
+ PDstandardNth1gt11 = PDstandardNthfdOrder61(&gt11[index]);
+ PDstandardNth2gt11 = PDstandardNthfdOrder62(&gt11[index]);
+ PDstandardNth3gt11 = PDstandardNthfdOrder63(&gt11[index]);
+ PDstandardNth1gt12 = PDstandardNthfdOrder61(&gt12[index]);
+ PDstandardNth2gt12 = PDstandardNthfdOrder62(&gt12[index]);
+ PDstandardNth3gt12 = PDstandardNthfdOrder63(&gt12[index]);
+ PDstandardNth1gt13 = PDstandardNthfdOrder61(&gt13[index]);
+ PDstandardNth2gt13 = PDstandardNthfdOrder62(&gt13[index]);
+ PDstandardNth3gt13 = PDstandardNthfdOrder63(&gt13[index]);
+ PDstandardNth1gt22 = PDstandardNthfdOrder61(&gt22[index]);
+ PDstandardNth2gt22 = PDstandardNthfdOrder62(&gt22[index]);
+ PDstandardNth3gt22 = PDstandardNthfdOrder63(&gt22[index]);
+ PDstandardNth1gt23 = PDstandardNthfdOrder61(&gt23[index]);
+ PDstandardNth2gt23 = PDstandardNthfdOrder62(&gt23[index]);
+ PDstandardNth3gt23 = PDstandardNthfdOrder63(&gt23[index]);
+ PDstandardNth1gt33 = PDstandardNthfdOrder61(&gt33[index]);
+ PDstandardNth2gt33 = PDstandardNthfdOrder62(&gt33[index]);
+ PDstandardNth3gt33 = PDstandardNthfdOrder63(&gt33[index]);
+ break;
+
+ case 8:
+ PDupwindNthAnti1alpha = PDupwindNthAntifdOrder81(&alpha[index]);
+ PDupwindNthSymm1alpha = PDupwindNthSymmfdOrder81(&alpha[index]);
+ PDupwindNthAnti2alpha = PDupwindNthAntifdOrder82(&alpha[index]);
+ PDupwindNthSymm2alpha = PDupwindNthSymmfdOrder82(&alpha[index]);
+ PDupwindNthAnti3alpha = PDupwindNthAntifdOrder83(&alpha[index]);
+ PDupwindNthSymm3alpha = PDupwindNthSymmfdOrder83(&alpha[index]);
+ PDupwindNthAnti1beta1 = PDupwindNthAntifdOrder81(&beta1[index]);
+ PDupwindNthSymm1beta1 = PDupwindNthSymmfdOrder81(&beta1[index]);
+ PDupwindNthAnti2beta1 = PDupwindNthAntifdOrder82(&beta1[index]);
+ PDupwindNthSymm2beta1 = PDupwindNthSymmfdOrder82(&beta1[index]);
+ PDupwindNthAnti3beta1 = PDupwindNthAntifdOrder83(&beta1[index]);
+ PDupwindNthSymm3beta1 = PDupwindNthSymmfdOrder83(&beta1[index]);
+ PDupwindNthAnti1beta2 = PDupwindNthAntifdOrder81(&beta2[index]);
+ PDupwindNthSymm1beta2 = PDupwindNthSymmfdOrder81(&beta2[index]);
+ PDupwindNthAnti2beta2 = PDupwindNthAntifdOrder82(&beta2[index]);
+ PDupwindNthSymm2beta2 = PDupwindNthSymmfdOrder82(&beta2[index]);
+ PDupwindNthAnti3beta2 = PDupwindNthAntifdOrder83(&beta2[index]);
+ PDupwindNthSymm3beta2 = PDupwindNthSymmfdOrder83(&beta2[index]);
+ PDupwindNthAnti1beta3 = PDupwindNthAntifdOrder81(&beta3[index]);
+ PDupwindNthSymm1beta3 = PDupwindNthSymmfdOrder81(&beta3[index]);
+ PDupwindNthAnti2beta3 = PDupwindNthAntifdOrder82(&beta3[index]);
+ PDupwindNthSymm2beta3 = PDupwindNthSymmfdOrder82(&beta3[index]);
+ PDupwindNthAnti3beta3 = PDupwindNthAntifdOrder83(&beta3[index]);
+ PDupwindNthSymm3beta3 = PDupwindNthSymmfdOrder83(&beta3[index]);
+ PDstandardNth1gt11 = PDstandardNthfdOrder81(&gt11[index]);
+ PDstandardNth2gt11 = PDstandardNthfdOrder82(&gt11[index]);
+ PDstandardNth3gt11 = PDstandardNthfdOrder83(&gt11[index]);
+ PDstandardNth1gt12 = PDstandardNthfdOrder81(&gt12[index]);
+ PDstandardNth2gt12 = PDstandardNthfdOrder82(&gt12[index]);
+ PDstandardNth3gt12 = PDstandardNthfdOrder83(&gt12[index]);
+ PDstandardNth1gt13 = PDstandardNthfdOrder81(&gt13[index]);
+ PDstandardNth2gt13 = PDstandardNthfdOrder82(&gt13[index]);
+ PDstandardNth3gt13 = PDstandardNthfdOrder83(&gt13[index]);
+ PDstandardNth1gt22 = PDstandardNthfdOrder81(&gt22[index]);
+ PDstandardNth2gt22 = PDstandardNthfdOrder82(&gt22[index]);
+ PDstandardNth3gt22 = PDstandardNthfdOrder83(&gt22[index]);
+ PDstandardNth1gt23 = PDstandardNthfdOrder81(&gt23[index]);
+ PDstandardNth2gt23 = PDstandardNthfdOrder82(&gt23[index]);
+ PDstandardNth3gt23 = PDstandardNthfdOrder83(&gt23[index]);
+ PDstandardNth1gt33 = PDstandardNthfdOrder81(&gt33[index]);
+ PDstandardNth2gt33 = PDstandardNthfdOrder82(&gt33[index]);
+ PDstandardNth3gt33 = PDstandardNthfdOrder83(&gt33[index]);
+ break;
+ }
+
+ /* Calculate temporaries and grid functions */
+ ptrdiff_t dir1 = Sign(beta1L);
+
+ ptrdiff_t dir2 = Sign(beta2L);
+
+ ptrdiff_t dir3 = Sign(beta3L);
+
+ CCTK_REAL_VEC JacPDstandardNth1gt11;
+ CCTK_REAL_VEC JacPDstandardNth1gt12;
+ CCTK_REAL_VEC JacPDstandardNth1gt13;
+ CCTK_REAL_VEC JacPDstandardNth1gt22;
+ CCTK_REAL_VEC JacPDstandardNth1gt23;
+ CCTK_REAL_VEC JacPDstandardNth1gt33;
+ CCTK_REAL_VEC JacPDstandardNth2gt11;
+ CCTK_REAL_VEC JacPDstandardNth2gt12;
+ CCTK_REAL_VEC JacPDstandardNth2gt13;
+ CCTK_REAL_VEC JacPDstandardNth2gt22;
+ CCTK_REAL_VEC JacPDstandardNth2gt23;
+ CCTK_REAL_VEC JacPDstandardNth2gt33;
+ CCTK_REAL_VEC JacPDstandardNth3gt11;
+ CCTK_REAL_VEC JacPDstandardNth3gt12;
+ CCTK_REAL_VEC JacPDstandardNth3gt13;
+ CCTK_REAL_VEC JacPDstandardNth3gt22;
+ CCTK_REAL_VEC JacPDstandardNth3gt23;
+ CCTK_REAL_VEC JacPDstandardNth3gt33;
+ CCTK_REAL_VEC JacPDupwindNthAnti1alpha;
+ CCTK_REAL_VEC JacPDupwindNthAnti1beta1;
+ CCTK_REAL_VEC JacPDupwindNthAnti1beta2;
+ CCTK_REAL_VEC JacPDupwindNthAnti1beta3;
+ CCTK_REAL_VEC JacPDupwindNthAnti2alpha;
+ CCTK_REAL_VEC JacPDupwindNthAnti2beta1;
+ CCTK_REAL_VEC JacPDupwindNthAnti2beta2;
+ CCTK_REAL_VEC JacPDupwindNthAnti2beta3;
+ CCTK_REAL_VEC JacPDupwindNthAnti3alpha;
+ CCTK_REAL_VEC JacPDupwindNthAnti3beta1;
+ CCTK_REAL_VEC JacPDupwindNthAnti3beta2;
+ CCTK_REAL_VEC JacPDupwindNthAnti3beta3;
+ CCTK_REAL_VEC JacPDupwindNthSymm1alpha;
+ CCTK_REAL_VEC JacPDupwindNthSymm1beta1;
+ CCTK_REAL_VEC JacPDupwindNthSymm1beta2;
+ CCTK_REAL_VEC JacPDupwindNthSymm1beta3;
+ CCTK_REAL_VEC JacPDupwindNthSymm2alpha;
+ CCTK_REAL_VEC JacPDupwindNthSymm2beta1;
+ CCTK_REAL_VEC JacPDupwindNthSymm2beta2;
+ CCTK_REAL_VEC JacPDupwindNthSymm2beta3;
+ CCTK_REAL_VEC JacPDupwindNthSymm3alpha;
+ CCTK_REAL_VEC JacPDupwindNthSymm3beta1;
+ CCTK_REAL_VEC JacPDupwindNthSymm3beta2;
+ CCTK_REAL_VEC JacPDupwindNthSymm3beta3;
+
+ if (use_jacobian)
+ {
+ JacPDstandardNth1gt11 =
+ kmadd(J11L,PDstandardNth1gt11,kmadd(J21L,PDstandardNth2gt11,kmul(J31L,PDstandardNth3gt11)));
+
+ JacPDstandardNth1gt12 =
+ kmadd(J11L,PDstandardNth1gt12,kmadd(J21L,PDstandardNth2gt12,kmul(J31L,PDstandardNth3gt12)));
+
+ JacPDstandardNth1gt13 =
+ kmadd(J11L,PDstandardNth1gt13,kmadd(J21L,PDstandardNth2gt13,kmul(J31L,PDstandardNth3gt13)));
+
+ JacPDstandardNth1gt22 =
+ kmadd(J11L,PDstandardNth1gt22,kmadd(J21L,PDstandardNth2gt22,kmul(J31L,PDstandardNth3gt22)));
+
+ JacPDstandardNth1gt23 =
+ kmadd(J11L,PDstandardNth1gt23,kmadd(J21L,PDstandardNth2gt23,kmul(J31L,PDstandardNth3gt23)));
+
+ JacPDstandardNth1gt33 =
+ kmadd(J11L,PDstandardNth1gt33,kmadd(J21L,PDstandardNth2gt33,kmul(J31L,PDstandardNth3gt33)));
+
+ JacPDstandardNth2gt11 =
+ kmadd(J12L,PDstandardNth1gt11,kmadd(J22L,PDstandardNth2gt11,kmul(J32L,PDstandardNth3gt11)));
+
+ JacPDstandardNth2gt12 =
+ kmadd(J12L,PDstandardNth1gt12,kmadd(J22L,PDstandardNth2gt12,kmul(J32L,PDstandardNth3gt12)));
+
+ JacPDstandardNth2gt13 =
+ kmadd(J12L,PDstandardNth1gt13,kmadd(J22L,PDstandardNth2gt13,kmul(J32L,PDstandardNth3gt13)));
+
+ JacPDstandardNth2gt22 =
+ kmadd(J12L,PDstandardNth1gt22,kmadd(J22L,PDstandardNth2gt22,kmul(J32L,PDstandardNth3gt22)));
+
+ JacPDstandardNth2gt23 =
+ kmadd(J12L,PDstandardNth1gt23,kmadd(J22L,PDstandardNth2gt23,kmul(J32L,PDstandardNth3gt23)));
+
+ JacPDstandardNth2gt33 =
+ kmadd(J12L,PDstandardNth1gt33,kmadd(J22L,PDstandardNth2gt33,kmul(J32L,PDstandardNth3gt33)));
+
+ JacPDstandardNth3gt11 =
+ kmadd(J13L,PDstandardNth1gt11,kmadd(J23L,PDstandardNth2gt11,kmul(J33L,PDstandardNth3gt11)));
+
+ JacPDstandardNth3gt12 =
+ kmadd(J13L,PDstandardNth1gt12,kmadd(J23L,PDstandardNth2gt12,kmul(J33L,PDstandardNth3gt12)));
+
+ JacPDstandardNth3gt13 =
+ kmadd(J13L,PDstandardNth1gt13,kmadd(J23L,PDstandardNth2gt13,kmul(J33L,PDstandardNth3gt13)));
+
+ JacPDstandardNth3gt22 =
+ kmadd(J13L,PDstandardNth1gt22,kmadd(J23L,PDstandardNth2gt22,kmul(J33L,PDstandardNth3gt22)));
+
+ JacPDstandardNth3gt23 =
+ kmadd(J13L,PDstandardNth1gt23,kmadd(J23L,PDstandardNth2gt23,kmul(J33L,PDstandardNth3gt23)));
+
+ JacPDstandardNth3gt33 =
+ kmadd(J13L,PDstandardNth1gt33,kmadd(J23L,PDstandardNth2gt33,kmul(J33L,PDstandardNth3gt33)));
+
+ JacPDupwindNthAnti1alpha =
+ kmadd(J11L,PDupwindNthAnti1alpha,kmadd(J21L,PDupwindNthAnti2alpha,kmul(J31L,PDupwindNthAnti3alpha)));
+
+ JacPDupwindNthAnti1beta1 =
+ kmadd(J11L,PDupwindNthAnti1beta1,kmadd(J21L,PDupwindNthAnti2beta1,kmul(J31L,PDupwindNthAnti3beta1)));
+
+ JacPDupwindNthAnti1beta2 =
+ kmadd(J11L,PDupwindNthAnti1beta2,kmadd(J21L,PDupwindNthAnti2beta2,kmul(J31L,PDupwindNthAnti3beta2)));
+
+ JacPDupwindNthAnti1beta3 =
+ kmadd(J11L,PDupwindNthAnti1beta3,kmadd(J21L,PDupwindNthAnti2beta3,kmul(J31L,PDupwindNthAnti3beta3)));
+
+ JacPDupwindNthSymm1alpha =
+ kmadd(J11L,PDupwindNthSymm1alpha,kmadd(J21L,PDupwindNthSymm2alpha,kmul(J31L,PDupwindNthSymm3alpha)));
+
+ JacPDupwindNthSymm1beta1 =
+ kmadd(J11L,PDupwindNthSymm1beta1,kmadd(J21L,PDupwindNthSymm2beta1,kmul(J31L,PDupwindNthSymm3beta1)));
+
+ JacPDupwindNthSymm1beta2 =
+ kmadd(J11L,PDupwindNthSymm1beta2,kmadd(J21L,PDupwindNthSymm2beta2,kmul(J31L,PDupwindNthSymm3beta2)));
+
+ JacPDupwindNthSymm1beta3 =
+ kmadd(J11L,PDupwindNthSymm1beta3,kmadd(J21L,PDupwindNthSymm2beta3,kmul(J31L,PDupwindNthSymm3beta3)));
+
+ JacPDupwindNthAnti2alpha =
+ kmadd(J12L,PDupwindNthAnti1alpha,kmadd(J22L,PDupwindNthAnti2alpha,kmul(J32L,PDupwindNthAnti3alpha)));
+
+ JacPDupwindNthAnti2beta1 =
+ kmadd(J12L,PDupwindNthAnti1beta1,kmadd(J22L,PDupwindNthAnti2beta1,kmul(J32L,PDupwindNthAnti3beta1)));
+
+ JacPDupwindNthAnti2beta2 =
+ kmadd(J12L,PDupwindNthAnti1beta2,kmadd(J22L,PDupwindNthAnti2beta2,kmul(J32L,PDupwindNthAnti3beta2)));
+
+ JacPDupwindNthAnti2beta3 =
+ kmadd(J12L,PDupwindNthAnti1beta3,kmadd(J22L,PDupwindNthAnti2beta3,kmul(J32L,PDupwindNthAnti3beta3)));
+
+ JacPDupwindNthSymm2alpha =
+ kmadd(J12L,PDupwindNthSymm1alpha,kmadd(J22L,PDupwindNthSymm2alpha,kmul(J32L,PDupwindNthSymm3alpha)));
+
+ JacPDupwindNthSymm2beta1 =
+ kmadd(J12L,PDupwindNthSymm1beta1,kmadd(J22L,PDupwindNthSymm2beta1,kmul(J32L,PDupwindNthSymm3beta1)));
+
+ JacPDupwindNthSymm2beta2 =
+ kmadd(J12L,PDupwindNthSymm1beta2,kmadd(J22L,PDupwindNthSymm2beta2,kmul(J32L,PDupwindNthSymm3beta2)));
+
+ JacPDupwindNthSymm2beta3 =
+ kmadd(J12L,PDupwindNthSymm1beta3,kmadd(J22L,PDupwindNthSymm2beta3,kmul(J32L,PDupwindNthSymm3beta3)));
+
+ JacPDupwindNthAnti3alpha =
+ kmadd(J13L,PDupwindNthAnti1alpha,kmadd(J23L,PDupwindNthAnti2alpha,kmul(J33L,PDupwindNthAnti3alpha)));
+
+ JacPDupwindNthAnti3beta1 =
+ kmadd(J13L,PDupwindNthAnti1beta1,kmadd(J23L,PDupwindNthAnti2beta1,kmul(J33L,PDupwindNthAnti3beta1)));
+
+ JacPDupwindNthAnti3beta2 =
+ kmadd(J13L,PDupwindNthAnti1beta2,kmadd(J23L,PDupwindNthAnti2beta2,kmul(J33L,PDupwindNthAnti3beta2)));
+
+ JacPDupwindNthAnti3beta3 =
+ kmadd(J13L,PDupwindNthAnti1beta3,kmadd(J23L,PDupwindNthAnti2beta3,kmul(J33L,PDupwindNthAnti3beta3)));
+
+ JacPDupwindNthSymm3alpha =
+ kmadd(J13L,PDupwindNthSymm1alpha,kmadd(J23L,PDupwindNthSymm2alpha,kmul(J33L,PDupwindNthSymm3alpha)));
+
+ JacPDupwindNthSymm3beta1 =
+ kmadd(J13L,PDupwindNthSymm1beta1,kmadd(J23L,PDupwindNthSymm2beta1,kmul(J33L,PDupwindNthSymm3beta1)));
+
+ JacPDupwindNthSymm3beta2 =
+ kmadd(J13L,PDupwindNthSymm1beta2,kmadd(J23L,PDupwindNthSymm2beta2,kmul(J33L,PDupwindNthSymm3beta2)));
+
+ JacPDupwindNthSymm3beta3 =
+ kmadd(J13L,PDupwindNthSymm1beta3,kmadd(J23L,PDupwindNthSymm2beta3,kmul(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;
+ }
+
+ CCTK_REAL_VEC detgt = ToReal(1);
+
+ CCTK_REAL_VEC gtu11 =
+ kmul(INV(detgt),kmsub(gt22L,gt33L,SQR(gt23L)));
+
+ CCTK_REAL_VEC gtu12 =
+ kmul(INV(detgt),kmsub(gt13L,gt23L,kmul(gt12L,gt33L)));
+
+ CCTK_REAL_VEC gtu13 =
+ kmul(INV(detgt),kmsub(gt12L,gt23L,kmul(gt13L,gt22L)));
+
+ CCTK_REAL_VEC gtu22 =
+ kmul(INV(detgt),kmsub(gt11L,gt33L,SQR(gt13L)));
+
+ CCTK_REAL_VEC gtu23 =
+ kmul(INV(detgt),kmsub(gt12L,gt13L,kmul(gt11L,gt23L)));
+
+ CCTK_REAL_VEC gtu33 =
+ kmul(INV(detgt),kmsub(gt11L,gt22L,SQR(gt12L)));
+
+ CCTK_REAL_VEC Gt111 =
+ kmul(ToReal(0.5),kmadd(gtu11,JacPDstandardNth1gt11,knmsub(gtu12,JacPDstandardNth2gt11,kmsub(kmadd(gtu12,JacPDstandardNth1gt12,kmul(gtu13,JacPDstandardNth1gt13)),ToReal(2),kmul(gtu13,JacPDstandardNth3gt11)))));
+
+ CCTK_REAL_VEC Gt211 =
+ kmul(ToReal(0.5),kmadd(gtu12,JacPDstandardNth1gt11,knmsub(gtu22,JacPDstandardNth2gt11,kmsub(kmadd(gtu22,JacPDstandardNth1gt12,kmul(gtu23,JacPDstandardNth1gt13)),ToReal(2),kmul(gtu23,JacPDstandardNth3gt11)))));
+
+ CCTK_REAL_VEC Gt311 =
+ kmul(ToReal(0.5),kmadd(gtu13,JacPDstandardNth1gt11,knmsub(gtu23,JacPDstandardNth2gt11,kmsub(kmadd(gtu23,JacPDstandardNth1gt12,kmul(gtu33,JacPDstandardNth1gt13)),ToReal(2),kmul(gtu33,JacPDstandardNth3gt11)))));
+
+ CCTK_REAL_VEC Gt112 =
+ kmul(kmadd(gtu12,JacPDstandardNth1gt22,kmadd(gtu11,JacPDstandardNth2gt11,kmul(gtu13,kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth2gt13,JacPDstandardNth3gt12))))),ToReal(0.5));
+
+ CCTK_REAL_VEC Gt212 =
+ kmul(kmadd(gtu22,JacPDstandardNth1gt22,kmadd(gtu12,JacPDstandardNth2gt11,kmul(gtu23,kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth2gt13,JacPDstandardNth3gt12))))),ToReal(0.5));
+
+ CCTK_REAL_VEC Gt312 =
+ kmul(kmadd(gtu23,JacPDstandardNth1gt22,kmadd(gtu13,JacPDstandardNth2gt11,kmul(gtu33,kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth2gt13,JacPDstandardNth3gt12))))),ToReal(0.5));
+
+ CCTK_REAL_VEC Gt113 =
+ kmul(kmadd(gtu13,JacPDstandardNth1gt33,kmadd(gtu11,JacPDstandardNth3gt11,kmul(gtu12,kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth3gt12,JacPDstandardNth2gt13))))),ToReal(0.5));
+
+ CCTK_REAL_VEC Gt213 =
+ kmul(kmadd(gtu23,JacPDstandardNth1gt33,kmadd(gtu12,JacPDstandardNth3gt11,kmul(gtu22,kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth3gt12,JacPDstandardNth2gt13))))),ToReal(0.5));
+
+ CCTK_REAL_VEC Gt313 =
+ kmul(kmadd(gtu33,JacPDstandardNth1gt33,kmadd(gtu13,JacPDstandardNth3gt11,kmul(gtu23,kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth3gt12,JacPDstandardNth2gt13))))),ToReal(0.5));
+
+ CCTK_REAL_VEC Gt122 =
+ kmul(ToReal(0.5),kmadd(gtu12,JacPDstandardNth2gt22,kmadd(gtu11,kmsub(JacPDstandardNth2gt12,ToReal(2),JacPDstandardNth1gt22),kmul(gtu13,kmsub(JacPDstandardNth2gt23,ToReal(2),JacPDstandardNth3gt22)))));
+
+ CCTK_REAL_VEC Gt222 =
+ kmul(ToReal(0.5),kmadd(gtu22,JacPDstandardNth2gt22,kmadd(gtu12,kmsub(JacPDstandardNth2gt12,ToReal(2),JacPDstandardNth1gt22),kmul(gtu23,kmsub(JacPDstandardNth2gt23,ToReal(2),JacPDstandardNth3gt22)))));
+
+ CCTK_REAL_VEC Gt322 =
+ kmul(ToReal(0.5),kmadd(gtu23,JacPDstandardNth2gt22,kmadd(gtu13,kmsub(JacPDstandardNth2gt12,ToReal(2),JacPDstandardNth1gt22),kmul(gtu33,kmsub(JacPDstandardNth2gt23,ToReal(2),JacPDstandardNth3gt22)))));
+
+ CCTK_REAL_VEC Gt123 =
+ kmul(kmadd(gtu13,JacPDstandardNth2gt33,kmadd(gtu12,JacPDstandardNth3gt22,kmul(gtu11,kadd(JacPDstandardNth2gt13,ksub(JacPDstandardNth3gt12,JacPDstandardNth1gt23))))),ToReal(0.5));
+
+ CCTK_REAL_VEC Gt223 =
+ kmul(kmadd(gtu23,JacPDstandardNth2gt33,kmadd(gtu22,JacPDstandardNth3gt22,kmul(gtu12,kadd(JacPDstandardNth2gt13,ksub(JacPDstandardNth3gt12,JacPDstandardNth1gt23))))),ToReal(0.5));
+
+ CCTK_REAL_VEC Gt323 =
+ kmul(kmadd(gtu33,JacPDstandardNth2gt33,kmadd(gtu23,JacPDstandardNth3gt22,kmul(gtu13,kadd(JacPDstandardNth2gt13,ksub(JacPDstandardNth3gt12,JacPDstandardNth1gt23))))),ToReal(0.5));
+
+ CCTK_REAL_VEC Gt133 =
+ kmul(ToReal(0.5),kmadd(gtu13,JacPDstandardNth3gt33,kmadd(gtu11,kmsub(JacPDstandardNth3gt13,ToReal(2),JacPDstandardNth1gt33),kmul(gtu12,kmsub(JacPDstandardNth3gt23,ToReal(2),JacPDstandardNth2gt33)))));
+
+ CCTK_REAL_VEC Gt233 =
+ kmul(ToReal(0.5),kmadd(gtu23,JacPDstandardNth3gt33,kmadd(gtu12,kmsub(JacPDstandardNth3gt13,ToReal(2),JacPDstandardNth1gt33),kmul(gtu22,kmsub(JacPDstandardNth3gt23,ToReal(2),JacPDstandardNth2gt33)))));
+
+ CCTK_REAL_VEC Gt333 =
+ kmul(ToReal(0.5),kmadd(gtu33,JacPDstandardNth3gt33,kmadd(gtu13,kmsub(JacPDstandardNth3gt13,ToReal(2),JacPDstandardNth1gt33),kmul(gtu23,kmsub(JacPDstandardNth3gt23,ToReal(2),JacPDstandardNth2gt33)))));
+
+ CCTK_REAL_VEC Xt1L =
+ kmadd(Gt111,gtu11,kmadd(Gt122,gtu22,kmadd(Gt133,gtu33,kmul(kmadd(Gt112,gtu12,kmadd(Gt113,gtu13,kmul(Gt123,gtu23))),ToReal(2)))));
+
+ CCTK_REAL_VEC Xt2L =
+ kmadd(Gt211,gtu11,kmadd(Gt222,gtu22,kmadd(Gt233,gtu33,kmul(kmadd(Gt212,gtu12,kmadd(Gt213,gtu13,kmul(Gt223,gtu23))),ToReal(2)))));
+
+ CCTK_REAL_VEC Xt3L =
+ kmadd(Gt311,gtu11,kmadd(Gt322,gtu22,kmadd(Gt333,gtu33,kmul(kmadd(Gt312,gtu12,kmadd(Gt313,gtu13,kmul(Gt323,gtu23))),ToReal(2)))));
+
+ CCTK_REAL_VEC AL = IfThen(LapseACoeff !=
+ 0,kneg(kmul(INV(ToReal(harmonicF)),kmul(kpow(alphaL,-harmonicN),knmsub(kmadd(beta1L,JacPDupwindNthAnti1alpha,kmadd(beta2L,JacPDupwindNthAnti2alpha,kmadd(beta3L,JacPDupwindNthAnti3alpha,kmadd(JacPDupwindNthSymm1alpha,kfabs(beta1L),kmadd(JacPDupwindNthSymm2alpha,kfabs(beta2L),kmul(JacPDupwindNthSymm3alpha,kfabs(beta3L))))))),ToReal(LapseAdvectionCoeff),dtalpL)))),ToReal(0));
+
+ CCTK_REAL_VEC theta =
+ kfmin(ToReal(1),kexp(knmsub(rL,INV(ToReal(SpatialShiftGammaCoeffRadius)),ToReal(1))));
+
+ CCTK_REAL_VEC B1L;
+ CCTK_REAL_VEC B2L;
+ CCTK_REAL_VEC B3L;
+
+ if (ShiftBCoeff*ShiftGammaCoeff != 0)
+ {
+ B1L =
+ kmul(INV(kmul(theta,ToReal(ShiftGammaCoeff))),knmsub(kmadd(beta1L,JacPDupwindNthAnti1beta1,kmadd(beta2L,JacPDupwindNthAnti2beta1,kmadd(beta3L,JacPDupwindNthAnti3beta1,kmadd(JacPDupwindNthSymm1beta1,kfabs(beta1L),kmadd(JacPDupwindNthSymm2beta1,kfabs(beta2L),kmul(JacPDupwindNthSymm3beta1,kfabs(beta3L))))))),ToReal(ShiftAdvectionCoeff),dtbetaxL));
+
+ B2L =
+ kmul(INV(kmul(theta,ToReal(ShiftGammaCoeff))),knmsub(kmadd(beta1L,JacPDupwindNthAnti1beta2,kmadd(beta2L,JacPDupwindNthAnti2beta2,kmadd(beta3L,JacPDupwindNthAnti3beta2,kmadd(JacPDupwindNthSymm1beta2,kfabs(beta1L),kmadd(JacPDupwindNthSymm2beta2,kfabs(beta2L),kmul(JacPDupwindNthSymm3beta2,kfabs(beta3L))))))),ToReal(ShiftAdvectionCoeff),dtbetayL));
+
+ B3L =
+ kmul(INV(kmul(theta,ToReal(ShiftGammaCoeff))),knmsub(kmadd(beta1L,JacPDupwindNthAnti1beta3,kmadd(beta2L,JacPDupwindNthAnti2beta3,kmadd(beta3L,JacPDupwindNthAnti3beta3,kmadd(JacPDupwindNthSymm1beta3,kfabs(beta1L),kmadd(JacPDupwindNthSymm2beta3,kfabs(beta2L),kmul(JacPDupwindNthSymm3beta3,kfabs(beta3L))))))),ToReal(ShiftAdvectionCoeff),dtbetazL));
+ }
+ else
+ {
+ B1L = ToReal(0);
+
+ B2L = ToReal(0);
+
+ B3L = ToReal(0);
+ }
+
+ /* Copy local copies back to grid functions */
+ vec_store_partial_prepare(i,lc_imin,lc_imax);
+ vec_store_nta_partial(A[index],AL);
+ vec_store_nta_partial(B1[index],B1L);
+ vec_store_nta_partial(B2[index],B2L);
+ vec_store_nta_partial(B3[index],B3L);
+ vec_store_nta_partial(Xt1[index],Xt1L);
+ vec_store_nta_partial(Xt2[index],Xt2L);
+ vec_store_nta_partial(Xt3[index],Xt3L);
+ }
+ LC_ENDLOOP3VEC(ML_CCZ4_convertFromADMBaseGamma);
+}
+
+extern "C" void ML_CCZ4_convertFromADMBaseGamma(CCTK_ARGUMENTS)
+{
+ DECLARE_CCTK_ARGUMENTS;
+ DECLARE_CCTK_PARAMETERS;
+
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_CCZ4_convertFromADMBaseGamma_Body");
+ }
+
+ if (cctk_iteration % ML_CCZ4_convertFromADMBaseGamma_calc_every != ML_CCZ4_convertFromADMBaseGamma_calc_offset)
+ {
+ return;
+ }
+
+ const char *const groups[] = {
+ "ADMBase::dtlapse",
+ "ADMBase::dtshift",
+ "grid::coordinates",
+ "Grid::coordinates",
+ "ML_CCZ4::ML_dtlapse",
+ "ML_CCZ4::ML_dtshift",
+ "ML_CCZ4::ML_Gamma",
+ "ML_CCZ4::ML_lapse",
+ "ML_CCZ4::ML_metric",
+ "ML_CCZ4::ML_shift"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_CCZ4_convertFromADMBaseGamma", 10, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_CCZ4_convertFromADMBaseGamma", 2, 2, 2);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_CCZ4_convertFromADMBaseGamma", 3, 3, 3);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_CCZ4_convertFromADMBaseGamma", 4, 4, 4);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_CCZ4_convertFromADMBaseGamma", 5, 5, 5);
+ break;
+ }
+
+ GenericFD_LoopOverInterior(cctkGH, ML_CCZ4_convertFromADMBaseGamma_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_CCZ4_convertFromADMBaseGamma_Body");
+ }
+}
diff --git a/ML_CCZ4/src/ML_CCZ4_convertToADMBase.cc b/ML_CCZ4/src/ML_CCZ4_convertToADMBase.cc
new file mode 100644
index 0000000..8df699f
--- /dev/null
+++ b/ML_CCZ4/src/ML_CCZ4_convertToADMBase.cc
@@ -0,0 +1,362 @@
+/* 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 "cctk_Loop.h"
+#include "loopcontrol.h"
+#include "vectors.h"
+
+/* Define macros used in calculations */
+#define INITVALUE (42)
+#define QAD(x) (SQR(SQR(x)))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
+
+static void ML_CCZ4_convertToADMBase_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const imin[3], int const imax[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+{
+ DECLARE_CCTK_ARGUMENTS;
+ DECLARE_CCTK_PARAMETERS;
+
+
+ /* 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_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const t = ToReal(cctk_time);
+ CCTK_REAL_VEC const dxi = INV(dx);
+ CCTK_REAL_VEC const dyi = INV(dy);
+ CCTK_REAL_VEC const dzi = INV(dz);
+ CCTK_REAL_VEC const khalf = ToReal(0.5);
+ CCTK_REAL_VEC const kthird = ToReal(1.0/3.0);
+ CCTK_REAL_VEC const ktwothird = ToReal(2.0/3.0);
+ CCTK_REAL_VEC const kfourthird = ToReal(4.0/3.0);
+ CCTK_REAL_VEC const keightthird = ToReal(8.0/3.0);
+ CCTK_REAL_VEC const hdxi = kmul(ToReal(0.5), dxi);
+ CCTK_REAL_VEC const hdyi = kmul(ToReal(0.5), dyi);
+ CCTK_REAL_VEC const hdzi = kmul(ToReal(0.5), dzi);
+
+ /* Initialize predefined quantities */
+ CCTK_REAL_VEC const p1o1024dx = kmul(INV(dx),ToReal(0.0009765625));
+ CCTK_REAL_VEC const p1o1024dy = kmul(INV(dy),ToReal(0.0009765625));
+ CCTK_REAL_VEC const p1o1024dz = kmul(INV(dz),ToReal(0.0009765625));
+ CCTK_REAL_VEC const p1o120dx = kmul(INV(dx),ToReal(0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o120dy = kmul(INV(dy),ToReal(0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o120dz = kmul(INV(dz),ToReal(0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dx = kmul(INV(dx),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dy = kmul(INV(dy),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dz = kmul(INV(dz),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o144dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o144dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o144dydz = kmul(INV(kmul(dy,dz)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o1680dx = kmul(INV(dx),ToReal(0.000595238095238095238095238095238));
+ CCTK_REAL_VEC const p1o1680dy = kmul(INV(dy),ToReal(0.000595238095238095238095238095238));
+ CCTK_REAL_VEC const p1o1680dz = kmul(INV(dz),ToReal(0.000595238095238095238095238095238));
+ CCTK_REAL_VEC const p1o16dx = kmul(INV(dx),ToReal(0.0625));
+ CCTK_REAL_VEC const p1o16dy = kmul(INV(dy),ToReal(0.0625));
+ CCTK_REAL_VEC const p1o16dz = kmul(INV(dz),ToReal(0.0625));
+ CCTK_REAL_VEC const p1o180dx2 = kmul(INV(SQR(dx)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o180dy2 = kmul(INV(SQR(dy)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o180dz2 = kmul(INV(SQR(dz)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o24dx = kmul(INV(dx),ToReal(0.0416666666666666666666666666667));
+ CCTK_REAL_VEC const p1o24dy = kmul(INV(dy),ToReal(0.0416666666666666666666666666667));
+ CCTK_REAL_VEC const p1o24dz = kmul(INV(dz),ToReal(0.0416666666666666666666666666667));
+ CCTK_REAL_VEC const p1o256dx = kmul(INV(dx),ToReal(0.00390625));
+ CCTK_REAL_VEC const p1o256dy = kmul(INV(dy),ToReal(0.00390625));
+ CCTK_REAL_VEC const p1o256dz = kmul(INV(dz),ToReal(0.00390625));
+ CCTK_REAL_VEC const p1o2dx = kmul(INV(dx),ToReal(0.5));
+ CCTK_REAL_VEC const p1o2dy = kmul(INV(dy),ToReal(0.5));
+ CCTK_REAL_VEC const p1o2dz = kmul(INV(dz),ToReal(0.5));
+ CCTK_REAL_VEC const p1o3600dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o3600dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o3600dydz = kmul(INV(kmul(dy,dz)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o4dx = kmul(INV(dx),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(kmul(dy,dz)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dz = kmul(INV(dz),ToReal(0.25));
+ CCTK_REAL_VEC const p1o5040dx2 = kmul(INV(SQR(dx)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o5040dy2 = kmul(INV(SQR(dy)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o5040dz2 = kmul(INV(SQR(dz)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o560dx = kmul(INV(dx),ToReal(0.00178571428571428571428571428571));
+ CCTK_REAL_VEC const p1o560dy = kmul(INV(dy),ToReal(0.00178571428571428571428571428571));
+ CCTK_REAL_VEC const p1o560dz = kmul(INV(dz),ToReal(0.00178571428571428571428571428571));
+ CCTK_REAL_VEC const p1o60dx = kmul(INV(dx),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o60dy = kmul(INV(dy),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o60dz = kmul(INV(dz),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o64dx = kmul(INV(dx),ToReal(0.015625));
+ CCTK_REAL_VEC const p1o64dy = kmul(INV(dy),ToReal(0.015625));
+ CCTK_REAL_VEC const p1o64dz = kmul(INV(dz),ToReal(0.015625));
+ CCTK_REAL_VEC const p1o705600dxdy = kmul(INV(kmul(dx,dy)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(kmul(dx,dz)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(kmul(dy,dz)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1odx = INV(dx);
+ CCTK_REAL_VEC const p1odx2 = INV(SQR(dx));
+ CCTK_REAL_VEC const p1ody = INV(dy);
+ CCTK_REAL_VEC const p1ody2 = INV(SQR(dy));
+ CCTK_REAL_VEC const p1odz = INV(dz);
+ CCTK_REAL_VEC const p1odz2 = INV(SQR(dz));
+ CCTK_REAL_VEC const pm1o120dx = kmul(INV(dx),ToReal(-0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o120dy = kmul(INV(dy),ToReal(-0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o120dz = kmul(INV(dz),ToReal(-0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dx2 = kmul(INV(SQR(dx)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dy2 = kmul(INV(SQR(dy)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dz2 = kmul(INV(SQR(dz)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o2dx = kmul(INV(dx),ToReal(-0.5));
+ CCTK_REAL_VEC const pm1o2dy = kmul(INV(dy),ToReal(-0.5));
+ CCTK_REAL_VEC const pm1o2dz = kmul(INV(dz),ToReal(-0.5));
+ CCTK_REAL_VEC const pm1o4dx = kmul(INV(dx),ToReal(-0.25));
+ CCTK_REAL_VEC const pm1o4dy = kmul(INV(dy),ToReal(-0.25));
+ CCTK_REAL_VEC const pm1o4dz = kmul(INV(dz),ToReal(-0.25));
+ CCTK_REAL_VEC const pm1o60dx = kmul(INV(dx),ToReal(-0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const pm1o60dy = kmul(INV(dy),ToReal(-0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const pm1o60dz = kmul(INV(dz),ToReal(-0.0166666666666666666666666666667));
+
+ /* 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;
+
+ /* Assign local copies of arrays functions */
+
+
+
+ /* Calculate temporaries and arrays functions */
+
+ /* Copy local copies back to grid functions */
+
+ /* Loop over the grid points */
+ #pragma omp parallel
+ LC_LOOP3VEC(ML_CCZ4_convertToADMBase,
+ i,j,k, imin[0],imin[1],imin[2], imax[0],imax[1],imax[2],
+ cctk_lsh[0],cctk_lsh[1],cctk_lsh[2],
+ CCTK_REAL_VEC_SIZE)
+ {
+ ptrdiff_t const index = di*i + dj*j + dk*k;
+
+ /* Assign local copies of grid functions */
+
+ CCTK_REAL_VEC alphaL = vec_load(alpha[index]);
+ CCTK_REAL_VEC At11L = vec_load(At11[index]);
+ CCTK_REAL_VEC At12L = vec_load(At12[index]);
+ CCTK_REAL_VEC At13L = vec_load(At13[index]);
+ CCTK_REAL_VEC At22L = vec_load(At22[index]);
+ CCTK_REAL_VEC At23L = vec_load(At23[index]);
+ CCTK_REAL_VEC At33L = vec_load(At33[index]);
+ CCTK_REAL_VEC beta1L = vec_load(beta1[index]);
+ CCTK_REAL_VEC beta2L = vec_load(beta2[index]);
+ CCTK_REAL_VEC beta3L = vec_load(beta3[index]);
+ CCTK_REAL_VEC gt11L = vec_load(gt11[index]);
+ CCTK_REAL_VEC gt12L = vec_load(gt12[index]);
+ CCTK_REAL_VEC gt13L = vec_load(gt13[index]);
+ CCTK_REAL_VEC gt22L = vec_load(gt22[index]);
+ CCTK_REAL_VEC gt23L = vec_load(gt23[index]);
+ CCTK_REAL_VEC gt33L = vec_load(gt33[index]);
+ CCTK_REAL_VEC gxxL = vec_load(gxx[index]);
+ CCTK_REAL_VEC gxyL = vec_load(gxy[index]);
+ CCTK_REAL_VEC gxzL = vec_load(gxz[index]);
+ CCTK_REAL_VEC gyyL = vec_load(gyy[index]);
+ CCTK_REAL_VEC gyzL = vec_load(gyz[index]);
+ CCTK_REAL_VEC gzzL = vec_load(gzz[index]);
+ CCTK_REAL_VEC phiL = vec_load(phi[index]);
+ CCTK_REAL_VEC trKL = vec_load(trK[index]);
+
+
+
+ /* Include user supplied include files */
+
+ /* Precompute derivatives */
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
+ /* Calculate temporaries and grid functions */
+ CCTK_REAL_VEC e4phi = IfThen(conformalMethod ==
+ 1,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
+
+ gxxL = kmul(gt11L,e4phi);
+
+ gxyL = kmul(gt12L,e4phi);
+
+ gxzL = kmul(gt13L,e4phi);
+
+ gyyL = kmul(gt22L,e4phi);
+
+ gyzL = kmul(gt23L,e4phi);
+
+ gzzL = kmul(gt33L,e4phi);
+
+ CCTK_REAL_VEC kxxL =
+ kmadd(At11L,e4phi,kmul(gxxL,kmul(trKL,ToReal(0.333333333333333333333333333333))));
+
+ CCTK_REAL_VEC kxyL =
+ kmadd(At12L,e4phi,kmul(gxyL,kmul(trKL,ToReal(0.333333333333333333333333333333))));
+
+ CCTK_REAL_VEC kxzL =
+ kmadd(At13L,e4phi,kmul(gxzL,kmul(trKL,ToReal(0.333333333333333333333333333333))));
+
+ CCTK_REAL_VEC kyyL =
+ kmadd(At22L,e4phi,kmul(gyyL,kmul(trKL,ToReal(0.333333333333333333333333333333))));
+
+ CCTK_REAL_VEC kyzL =
+ kmadd(At23L,e4phi,kmul(gyzL,kmul(trKL,ToReal(0.333333333333333333333333333333))));
+
+ CCTK_REAL_VEC kzzL =
+ kmadd(At33L,e4phi,kmul(gzzL,kmul(trKL,ToReal(0.333333333333333333333333333333))));
+
+ CCTK_REAL_VEC alpL = alphaL;
+
+ CCTK_REAL_VEC betaxL = beta1L;
+
+ CCTK_REAL_VEC betayL = beta2L;
+
+ CCTK_REAL_VEC betazL = beta3L;
+
+ /* Copy local copies back to grid functions */
+ vec_store_partial_prepare(i,lc_imin,lc_imax);
+ vec_store_nta_partial(alp[index],alpL);
+ vec_store_nta_partial(betax[index],betaxL);
+ vec_store_nta_partial(betay[index],betayL);
+ vec_store_nta_partial(betaz[index],betazL);
+ vec_store_nta_partial(gxx[index],gxxL);
+ vec_store_nta_partial(gxy[index],gxyL);
+ vec_store_nta_partial(gxz[index],gxzL);
+ vec_store_nta_partial(gyy[index],gyyL);
+ vec_store_nta_partial(gyz[index],gyzL);
+ vec_store_nta_partial(gzz[index],gzzL);
+ vec_store_nta_partial(kxx[index],kxxL);
+ vec_store_nta_partial(kxy[index],kxyL);
+ vec_store_nta_partial(kxz[index],kxzL);
+ vec_store_nta_partial(kyy[index],kyyL);
+ vec_store_nta_partial(kyz[index],kyzL);
+ vec_store_nta_partial(kzz[index],kzzL);
+ }
+ LC_ENDLOOP3VEC(ML_CCZ4_convertToADMBase);
+}
+
+extern "C" void ML_CCZ4_convertToADMBase(CCTK_ARGUMENTS)
+{
+ DECLARE_CCTK_ARGUMENTS;
+ DECLARE_CCTK_PARAMETERS;
+
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_CCZ4_convertToADMBase_Body");
+ }
+
+ if (cctk_iteration % ML_CCZ4_convertToADMBase_calc_every != ML_CCZ4_convertToADMBase_calc_offset)
+ {
+ return;
+ }
+
+ const char *const groups[] = {
+ "ADMBase::curv",
+ "ADMBase::lapse",
+ "ADMBase::metric",
+ "ADMBase::shift",
+ "ML_CCZ4::ML_curv",
+ "ML_CCZ4::ML_lapse",
+ "ML_CCZ4::ML_log_confac",
+ "ML_CCZ4::ML_metric",
+ "ML_CCZ4::ML_shift",
+ "ML_CCZ4::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_CCZ4_convertToADMBase", 10, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
+ GenericFD_LoopOverEverything(cctkGH, ML_CCZ4_convertToADMBase_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_CCZ4_convertToADMBase_Body");
+ }
+}
diff --git a/ML_CCZ4/src/ML_CCZ4_convertToADMBaseDtLapseShift.cc b/ML_CCZ4/src/ML_CCZ4_convertToADMBaseDtLapseShift.cc
new file mode 100644
index 0000000..3a49506
--- /dev/null
+++ b/ML_CCZ4/src/ML_CCZ4_convertToADMBaseDtLapseShift.cc
@@ -0,0 +1,920 @@
+/* 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 "cctk_Loop.h"
+#include "loopcontrol.h"
+#include "vectors.h"
+
+/* Define macros used in calculations */
+#define INITVALUE (42)
+#define QAD(x) (SQR(SQR(x)))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
+
+extern "C" void ML_CCZ4_convertToADMBaseDtLapseShift_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 */, "ADMBase::dtlapse","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ADMBase::dtlapse.");
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ADMBase::dtshift","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ADMBase::dtshift.");
+ return;
+}
+
+static void ML_CCZ4_convertToADMBaseDtLapseShift_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const imin[3], int const imax[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+{
+ DECLARE_CCTK_ARGUMENTS;
+ DECLARE_CCTK_PARAMETERS;
+
+
+ /* 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_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const t = ToReal(cctk_time);
+ CCTK_REAL_VEC const dxi = INV(dx);
+ CCTK_REAL_VEC const dyi = INV(dy);
+ CCTK_REAL_VEC const dzi = INV(dz);
+ CCTK_REAL_VEC const khalf = ToReal(0.5);
+ CCTK_REAL_VEC const kthird = ToReal(1.0/3.0);
+ CCTK_REAL_VEC const ktwothird = ToReal(2.0/3.0);
+ CCTK_REAL_VEC const kfourthird = ToReal(4.0/3.0);
+ CCTK_REAL_VEC const keightthird = ToReal(8.0/3.0);
+ CCTK_REAL_VEC const hdxi = kmul(ToReal(0.5), dxi);
+ CCTK_REAL_VEC const hdyi = kmul(ToReal(0.5), dyi);
+ CCTK_REAL_VEC const hdzi = kmul(ToReal(0.5), dzi);
+
+ /* Initialize predefined quantities */
+ CCTK_REAL_VEC const p1o1024dx = kmul(INV(dx),ToReal(0.0009765625));
+ CCTK_REAL_VEC const p1o1024dy = kmul(INV(dy),ToReal(0.0009765625));
+ CCTK_REAL_VEC const p1o1024dz = kmul(INV(dz),ToReal(0.0009765625));
+ CCTK_REAL_VEC const p1o120dx = kmul(INV(dx),ToReal(0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o120dy = kmul(INV(dy),ToReal(0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o120dz = kmul(INV(dz),ToReal(0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dx = kmul(INV(dx),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dy = kmul(INV(dy),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dz = kmul(INV(dz),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o144dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o144dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o144dydz = kmul(INV(kmul(dy,dz)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o1680dx = kmul(INV(dx),ToReal(0.000595238095238095238095238095238));
+ CCTK_REAL_VEC const p1o1680dy = kmul(INV(dy),ToReal(0.000595238095238095238095238095238));
+ CCTK_REAL_VEC const p1o1680dz = kmul(INV(dz),ToReal(0.000595238095238095238095238095238));
+ CCTK_REAL_VEC const p1o16dx = kmul(INV(dx),ToReal(0.0625));
+ CCTK_REAL_VEC const p1o16dy = kmul(INV(dy),ToReal(0.0625));
+ CCTK_REAL_VEC const p1o16dz = kmul(INV(dz),ToReal(0.0625));
+ CCTK_REAL_VEC const p1o180dx2 = kmul(INV(SQR(dx)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o180dy2 = kmul(INV(SQR(dy)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o180dz2 = kmul(INV(SQR(dz)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o24dx = kmul(INV(dx),ToReal(0.0416666666666666666666666666667));
+ CCTK_REAL_VEC const p1o24dy = kmul(INV(dy),ToReal(0.0416666666666666666666666666667));
+ CCTK_REAL_VEC const p1o24dz = kmul(INV(dz),ToReal(0.0416666666666666666666666666667));
+ CCTK_REAL_VEC const p1o256dx = kmul(INV(dx),ToReal(0.00390625));
+ CCTK_REAL_VEC const p1o256dy = kmul(INV(dy),ToReal(0.00390625));
+ CCTK_REAL_VEC const p1o256dz = kmul(INV(dz),ToReal(0.00390625));
+ CCTK_REAL_VEC const p1o2dx = kmul(INV(dx),ToReal(0.5));
+ CCTK_REAL_VEC const p1o2dy = kmul(INV(dy),ToReal(0.5));
+ CCTK_REAL_VEC const p1o2dz = kmul(INV(dz),ToReal(0.5));
+ CCTK_REAL_VEC const p1o3600dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o3600dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o3600dydz = kmul(INV(kmul(dy,dz)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o4dx = kmul(INV(dx),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(kmul(dy,dz)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dz = kmul(INV(dz),ToReal(0.25));
+ CCTK_REAL_VEC const p1o5040dx2 = kmul(INV(SQR(dx)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o5040dy2 = kmul(INV(SQR(dy)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o5040dz2 = kmul(INV(SQR(dz)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o560dx = kmul(INV(dx),ToReal(0.00178571428571428571428571428571));
+ CCTK_REAL_VEC const p1o560dy = kmul(INV(dy),ToReal(0.00178571428571428571428571428571));
+ CCTK_REAL_VEC const p1o560dz = kmul(INV(dz),ToReal(0.00178571428571428571428571428571));
+ CCTK_REAL_VEC const p1o60dx = kmul(INV(dx),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o60dy = kmul(INV(dy),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o60dz = kmul(INV(dz),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o64dx = kmul(INV(dx),ToReal(0.015625));
+ CCTK_REAL_VEC const p1o64dy = kmul(INV(dy),ToReal(0.015625));
+ CCTK_REAL_VEC const p1o64dz = kmul(INV(dz),ToReal(0.015625));
+ CCTK_REAL_VEC const p1o705600dxdy = kmul(INV(kmul(dx,dy)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(kmul(dx,dz)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(kmul(dy,dz)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1odx = INV(dx);
+ CCTK_REAL_VEC const p1odx2 = INV(SQR(dx));
+ CCTK_REAL_VEC const p1ody = INV(dy);
+ CCTK_REAL_VEC const p1ody2 = INV(SQR(dy));
+ CCTK_REAL_VEC const p1odz = INV(dz);
+ CCTK_REAL_VEC const p1odz2 = INV(SQR(dz));
+ CCTK_REAL_VEC const pm1o120dx = kmul(INV(dx),ToReal(-0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o120dy = kmul(INV(dy),ToReal(-0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o120dz = kmul(INV(dz),ToReal(-0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dx2 = kmul(INV(SQR(dx)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dy2 = kmul(INV(SQR(dy)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dz2 = kmul(INV(SQR(dz)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o2dx = kmul(INV(dx),ToReal(-0.5));
+ CCTK_REAL_VEC const pm1o2dy = kmul(INV(dy),ToReal(-0.5));
+ CCTK_REAL_VEC const pm1o2dz = kmul(INV(dz),ToReal(-0.5));
+ CCTK_REAL_VEC const pm1o4dx = kmul(INV(dx),ToReal(-0.25));
+ CCTK_REAL_VEC const pm1o4dy = kmul(INV(dy),ToReal(-0.25));
+ CCTK_REAL_VEC const pm1o4dz = kmul(INV(dz),ToReal(-0.25));
+ CCTK_REAL_VEC const pm1o60dx = kmul(INV(dx),ToReal(-0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const pm1o60dy = kmul(INV(dy),ToReal(-0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const pm1o60dz = kmul(INV(dz),ToReal(-0.0166666666666666666666666666667));
+
+ /* 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;
+
+ /* Assign local copies of arrays functions */
+
+
+
+ /* Calculate temporaries and arrays functions */
+
+ /* Copy local copies back to grid functions */
+
+ /* Loop over the grid points */
+ #pragma omp parallel
+ LC_LOOP3VEC(ML_CCZ4_convertToADMBaseDtLapseShift,
+ i,j,k, imin[0],imin[1],imin[2], imax[0],imax[1],imax[2],
+ cctk_lsh[0],cctk_lsh[1],cctk_lsh[2],
+ CCTK_REAL_VEC_SIZE)
+ {
+ ptrdiff_t const index = di*i + dj*j + dk*k;
+
+ /* Assign local copies of grid functions */
+
+ CCTK_REAL_VEC AL = vec_load(A[index]);
+ CCTK_REAL_VEC alphaL = vec_load(alpha[index]);
+ CCTK_REAL_VEC B1L = vec_load(B1[index]);
+ CCTK_REAL_VEC B2L = vec_load(B2[index]);
+ CCTK_REAL_VEC B3L = vec_load(B3[index]);
+ CCTK_REAL_VEC beta1L = vec_load(beta1[index]);
+ CCTK_REAL_VEC beta2L = vec_load(beta2[index]);
+ CCTK_REAL_VEC beta3L = vec_load(beta3[index]);
+ CCTK_REAL_VEC gt11L = vec_load(gt11[index]);
+ CCTK_REAL_VEC gt12L = vec_load(gt12[index]);
+ CCTK_REAL_VEC gt13L = vec_load(gt13[index]);
+ CCTK_REAL_VEC gt22L = vec_load(gt22[index]);
+ CCTK_REAL_VEC gt23L = vec_load(gt23[index]);
+ CCTK_REAL_VEC gt33L = vec_load(gt33[index]);
+ CCTK_REAL_VEC phiL = vec_load(phi[index]);
+ CCTK_REAL_VEC rL = vec_load(r[index]);
+ CCTK_REAL_VEC ThetaL = vec_load(Theta[index]);
+ CCTK_REAL_VEC trKL = vec_load(trK[index]);
+ CCTK_REAL_VEC Xt1L = vec_load(Xt1[index]);
+ CCTK_REAL_VEC Xt2L = vec_load(Xt2[index]);
+ CCTK_REAL_VEC Xt3L = vec_load(Xt3[index]);
+
+
+ CCTK_REAL_VEC J11L, J12L, J13L, J21L, J22L, J23L, J31L, J32L, J33L;
+
+ if (use_jacobian)
+ {
+ J11L = vec_load(J11[index]);
+ J12L = vec_load(J12[index]);
+ J13L = vec_load(J13[index]);
+ J21L = vec_load(J21[index]);
+ J22L = vec_load(J22[index]);
+ J23L = vec_load(J23[index]);
+ J31L = vec_load(J31[index]);
+ J32L = vec_load(J32[index]);
+ J33L = vec_load(J33[index]);
+ }
+
+ /* Include user supplied include files */
+
+ /* Precompute derivatives */
+ CCTK_REAL_VEC PDstandardNth1alpha;
+ CCTK_REAL_VEC PDstandardNth2alpha;
+ CCTK_REAL_VEC PDstandardNth3alpha;
+ CCTK_REAL_VEC PDupwindNthAnti1alpha;
+ CCTK_REAL_VEC PDupwindNthSymm1alpha;
+ CCTK_REAL_VEC PDupwindNthAnti2alpha;
+ CCTK_REAL_VEC PDupwindNthSymm2alpha;
+ CCTK_REAL_VEC PDupwindNthAnti3alpha;
+ CCTK_REAL_VEC PDupwindNthSymm3alpha;
+ CCTK_REAL_VEC PDupwindNthAnti1beta1;
+ CCTK_REAL_VEC PDupwindNthSymm1beta1;
+ CCTK_REAL_VEC PDupwindNthAnti2beta1;
+ CCTK_REAL_VEC PDupwindNthSymm2beta1;
+ CCTK_REAL_VEC PDupwindNthAnti3beta1;
+ CCTK_REAL_VEC PDupwindNthSymm3beta1;
+ CCTK_REAL_VEC PDupwindNthAnti1beta2;
+ CCTK_REAL_VEC PDupwindNthSymm1beta2;
+ CCTK_REAL_VEC PDupwindNthAnti2beta2;
+ CCTK_REAL_VEC PDupwindNthSymm2beta2;
+ CCTK_REAL_VEC PDupwindNthAnti3beta2;
+ CCTK_REAL_VEC PDupwindNthSymm3beta2;
+ CCTK_REAL_VEC PDupwindNthAnti1beta3;
+ CCTK_REAL_VEC PDupwindNthSymm1beta3;
+ CCTK_REAL_VEC PDupwindNthAnti2beta3;
+ CCTK_REAL_VEC PDupwindNthSymm2beta3;
+ CCTK_REAL_VEC PDupwindNthAnti3beta3;
+ CCTK_REAL_VEC PDupwindNthSymm3beta3;
+ CCTK_REAL_VEC PDstandardNth1gt11;
+ CCTK_REAL_VEC PDstandardNth2gt11;
+ CCTK_REAL_VEC PDstandardNth3gt11;
+ CCTK_REAL_VEC PDstandardNth1gt12;
+ CCTK_REAL_VEC PDstandardNth2gt12;
+ CCTK_REAL_VEC PDstandardNth3gt12;
+ CCTK_REAL_VEC PDstandardNth1gt13;
+ CCTK_REAL_VEC PDstandardNth2gt13;
+ CCTK_REAL_VEC PDstandardNth3gt13;
+ CCTK_REAL_VEC PDstandardNth1gt22;
+ CCTK_REAL_VEC PDstandardNth2gt22;
+ CCTK_REAL_VEC PDstandardNth3gt22;
+ CCTK_REAL_VEC PDstandardNth1gt23;
+ CCTK_REAL_VEC PDstandardNth2gt23;
+ CCTK_REAL_VEC PDstandardNth3gt23;
+ CCTK_REAL_VEC PDstandardNth1gt33;
+ CCTK_REAL_VEC PDstandardNth2gt33;
+ CCTK_REAL_VEC PDstandardNth3gt33;
+ CCTK_REAL_VEC PDstandardNth1phi;
+ CCTK_REAL_VEC PDstandardNth2phi;
+ CCTK_REAL_VEC PDstandardNth3phi;
+
+ switch(fdOrder)
+ {
+ case 2:
+ PDstandardNth1alpha = PDstandardNthfdOrder21(&alpha[index]);
+ PDstandardNth2alpha = PDstandardNthfdOrder22(&alpha[index]);
+ PDstandardNth3alpha = PDstandardNthfdOrder23(&alpha[index]);
+ PDupwindNthAnti1alpha = PDupwindNthAntifdOrder21(&alpha[index]);
+ PDupwindNthSymm1alpha = PDupwindNthSymmfdOrder21(&alpha[index]);
+ PDupwindNthAnti2alpha = PDupwindNthAntifdOrder22(&alpha[index]);
+ PDupwindNthSymm2alpha = PDupwindNthSymmfdOrder22(&alpha[index]);
+ PDupwindNthAnti3alpha = PDupwindNthAntifdOrder23(&alpha[index]);
+ PDupwindNthSymm3alpha = PDupwindNthSymmfdOrder23(&alpha[index]);
+ PDupwindNthAnti1beta1 = PDupwindNthAntifdOrder21(&beta1[index]);
+ PDupwindNthSymm1beta1 = PDupwindNthSymmfdOrder21(&beta1[index]);
+ PDupwindNthAnti2beta1 = PDupwindNthAntifdOrder22(&beta1[index]);
+ PDupwindNthSymm2beta1 = PDupwindNthSymmfdOrder22(&beta1[index]);
+ PDupwindNthAnti3beta1 = PDupwindNthAntifdOrder23(&beta1[index]);
+ PDupwindNthSymm3beta1 = PDupwindNthSymmfdOrder23(&beta1[index]);
+ PDupwindNthAnti1beta2 = PDupwindNthAntifdOrder21(&beta2[index]);
+ PDupwindNthSymm1beta2 = PDupwindNthSymmfdOrder21(&beta2[index]);
+ PDupwindNthAnti2beta2 = PDupwindNthAntifdOrder22(&beta2[index]);
+ PDupwindNthSymm2beta2 = PDupwindNthSymmfdOrder22(&beta2[index]);
+ PDupwindNthAnti3beta2 = PDupwindNthAntifdOrder23(&beta2[index]);
+ PDupwindNthSymm3beta2 = PDupwindNthSymmfdOrder23(&beta2[index]);
+ PDupwindNthAnti1beta3 = PDupwindNthAntifdOrder21(&beta3[index]);
+ PDupwindNthSymm1beta3 = PDupwindNthSymmfdOrder21(&beta3[index]);
+ PDupwindNthAnti2beta3 = PDupwindNthAntifdOrder22(&beta3[index]);
+ PDupwindNthSymm2beta3 = PDupwindNthSymmfdOrder22(&beta3[index]);
+ PDupwindNthAnti3beta3 = PDupwindNthAntifdOrder23(&beta3[index]);
+ PDupwindNthSymm3beta3 = PDupwindNthSymmfdOrder23(&beta3[index]);
+ PDstandardNth1gt11 = PDstandardNthfdOrder21(&gt11[index]);
+ PDstandardNth2gt11 = PDstandardNthfdOrder22(&gt11[index]);
+ PDstandardNth3gt11 = PDstandardNthfdOrder23(&gt11[index]);
+ PDstandardNth1gt12 = PDstandardNthfdOrder21(&gt12[index]);
+ PDstandardNth2gt12 = PDstandardNthfdOrder22(&gt12[index]);
+ PDstandardNth3gt12 = PDstandardNthfdOrder23(&gt12[index]);
+ PDstandardNth1gt13 = PDstandardNthfdOrder21(&gt13[index]);
+ PDstandardNth2gt13 = PDstandardNthfdOrder22(&gt13[index]);
+ PDstandardNth3gt13 = PDstandardNthfdOrder23(&gt13[index]);
+ PDstandardNth1gt22 = PDstandardNthfdOrder21(&gt22[index]);
+ PDstandardNth2gt22 = PDstandardNthfdOrder22(&gt22[index]);
+ PDstandardNth3gt22 = PDstandardNthfdOrder23(&gt22[index]);
+ PDstandardNth1gt23 = PDstandardNthfdOrder21(&gt23[index]);
+ PDstandardNth2gt23 = PDstandardNthfdOrder22(&gt23[index]);
+ PDstandardNth3gt23 = PDstandardNthfdOrder23(&gt23[index]);
+ PDstandardNth1gt33 = PDstandardNthfdOrder21(&gt33[index]);
+ PDstandardNth2gt33 = PDstandardNthfdOrder22(&gt33[index]);
+ PDstandardNth3gt33 = PDstandardNthfdOrder23(&gt33[index]);
+ PDstandardNth1phi = PDstandardNthfdOrder21(&phi[index]);
+ PDstandardNth2phi = PDstandardNthfdOrder22(&phi[index]);
+ PDstandardNth3phi = PDstandardNthfdOrder23(&phi[index]);
+ break;
+
+ case 4:
+ PDstandardNth1alpha = PDstandardNthfdOrder41(&alpha[index]);
+ PDstandardNth2alpha = PDstandardNthfdOrder42(&alpha[index]);
+ PDstandardNth3alpha = PDstandardNthfdOrder43(&alpha[index]);
+ PDupwindNthAnti1alpha = PDupwindNthAntifdOrder41(&alpha[index]);
+ PDupwindNthSymm1alpha = PDupwindNthSymmfdOrder41(&alpha[index]);
+ PDupwindNthAnti2alpha = PDupwindNthAntifdOrder42(&alpha[index]);
+ PDupwindNthSymm2alpha = PDupwindNthSymmfdOrder42(&alpha[index]);
+ PDupwindNthAnti3alpha = PDupwindNthAntifdOrder43(&alpha[index]);
+ PDupwindNthSymm3alpha = PDupwindNthSymmfdOrder43(&alpha[index]);
+ PDupwindNthAnti1beta1 = PDupwindNthAntifdOrder41(&beta1[index]);
+ PDupwindNthSymm1beta1 = PDupwindNthSymmfdOrder41(&beta1[index]);
+ PDupwindNthAnti2beta1 = PDupwindNthAntifdOrder42(&beta1[index]);
+ PDupwindNthSymm2beta1 = PDupwindNthSymmfdOrder42(&beta1[index]);
+ PDupwindNthAnti3beta1 = PDupwindNthAntifdOrder43(&beta1[index]);
+ PDupwindNthSymm3beta1 = PDupwindNthSymmfdOrder43(&beta1[index]);
+ PDupwindNthAnti1beta2 = PDupwindNthAntifdOrder41(&beta2[index]);
+ PDupwindNthSymm1beta2 = PDupwindNthSymmfdOrder41(&beta2[index]);
+ PDupwindNthAnti2beta2 = PDupwindNthAntifdOrder42(&beta2[index]);
+ PDupwindNthSymm2beta2 = PDupwindNthSymmfdOrder42(&beta2[index]);
+ PDupwindNthAnti3beta2 = PDupwindNthAntifdOrder43(&beta2[index]);
+ PDupwindNthSymm3beta2 = PDupwindNthSymmfdOrder43(&beta2[index]);
+ PDupwindNthAnti1beta3 = PDupwindNthAntifdOrder41(&beta3[index]);
+ PDupwindNthSymm1beta3 = PDupwindNthSymmfdOrder41(&beta3[index]);
+ PDupwindNthAnti2beta3 = PDupwindNthAntifdOrder42(&beta3[index]);
+ PDupwindNthSymm2beta3 = PDupwindNthSymmfdOrder42(&beta3[index]);
+ PDupwindNthAnti3beta3 = PDupwindNthAntifdOrder43(&beta3[index]);
+ PDupwindNthSymm3beta3 = PDupwindNthSymmfdOrder43(&beta3[index]);
+ PDstandardNth1gt11 = PDstandardNthfdOrder41(&gt11[index]);
+ PDstandardNth2gt11 = PDstandardNthfdOrder42(&gt11[index]);
+ PDstandardNth3gt11 = PDstandardNthfdOrder43(&gt11[index]);
+ PDstandardNth1gt12 = PDstandardNthfdOrder41(&gt12[index]);
+ PDstandardNth2gt12 = PDstandardNthfdOrder42(&gt12[index]);
+ PDstandardNth3gt12 = PDstandardNthfdOrder43(&gt12[index]);
+ PDstandardNth1gt13 = PDstandardNthfdOrder41(&gt13[index]);
+ PDstandardNth2gt13 = PDstandardNthfdOrder42(&gt13[index]);
+ PDstandardNth3gt13 = PDstandardNthfdOrder43(&gt13[index]);
+ PDstandardNth1gt22 = PDstandardNthfdOrder41(&gt22[index]);
+ PDstandardNth2gt22 = PDstandardNthfdOrder42(&gt22[index]);
+ PDstandardNth3gt22 = PDstandardNthfdOrder43(&gt22[index]);
+ PDstandardNth1gt23 = PDstandardNthfdOrder41(&gt23[index]);
+ PDstandardNth2gt23 = PDstandardNthfdOrder42(&gt23[index]);
+ PDstandardNth3gt23 = PDstandardNthfdOrder43(&gt23[index]);
+ PDstandardNth1gt33 = PDstandardNthfdOrder41(&gt33[index]);
+ PDstandardNth2gt33 = PDstandardNthfdOrder42(&gt33[index]);
+ PDstandardNth3gt33 = PDstandardNthfdOrder43(&gt33[index]);
+ PDstandardNth1phi = PDstandardNthfdOrder41(&phi[index]);
+ PDstandardNth2phi = PDstandardNthfdOrder42(&phi[index]);
+ PDstandardNth3phi = PDstandardNthfdOrder43(&phi[index]);
+ break;
+
+ case 6:
+ PDstandardNth1alpha = PDstandardNthfdOrder61(&alpha[index]);
+ PDstandardNth2alpha = PDstandardNthfdOrder62(&alpha[index]);
+ PDstandardNth3alpha = PDstandardNthfdOrder63(&alpha[index]);
+ PDupwindNthAnti1alpha = PDupwindNthAntifdOrder61(&alpha[index]);
+ PDupwindNthSymm1alpha = PDupwindNthSymmfdOrder61(&alpha[index]);
+ PDupwindNthAnti2alpha = PDupwindNthAntifdOrder62(&alpha[index]);
+ PDupwindNthSymm2alpha = PDupwindNthSymmfdOrder62(&alpha[index]);
+ PDupwindNthAnti3alpha = PDupwindNthAntifdOrder63(&alpha[index]);
+ PDupwindNthSymm3alpha = PDupwindNthSymmfdOrder63(&alpha[index]);
+ PDupwindNthAnti1beta1 = PDupwindNthAntifdOrder61(&beta1[index]);
+ PDupwindNthSymm1beta1 = PDupwindNthSymmfdOrder61(&beta1[index]);
+ PDupwindNthAnti2beta1 = PDupwindNthAntifdOrder62(&beta1[index]);
+ PDupwindNthSymm2beta1 = PDupwindNthSymmfdOrder62(&beta1[index]);
+ PDupwindNthAnti3beta1 = PDupwindNthAntifdOrder63(&beta1[index]);
+ PDupwindNthSymm3beta1 = PDupwindNthSymmfdOrder63(&beta1[index]);
+ PDupwindNthAnti1beta2 = PDupwindNthAntifdOrder61(&beta2[index]);
+ PDupwindNthSymm1beta2 = PDupwindNthSymmfdOrder61(&beta2[index]);
+ PDupwindNthAnti2beta2 = PDupwindNthAntifdOrder62(&beta2[index]);
+ PDupwindNthSymm2beta2 = PDupwindNthSymmfdOrder62(&beta2[index]);
+ PDupwindNthAnti3beta2 = PDupwindNthAntifdOrder63(&beta2[index]);
+ PDupwindNthSymm3beta2 = PDupwindNthSymmfdOrder63(&beta2[index]);
+ PDupwindNthAnti1beta3 = PDupwindNthAntifdOrder61(&beta3[index]);
+ PDupwindNthSymm1beta3 = PDupwindNthSymmfdOrder61(&beta3[index]);
+ PDupwindNthAnti2beta3 = PDupwindNthAntifdOrder62(&beta3[index]);
+ PDupwindNthSymm2beta3 = PDupwindNthSymmfdOrder62(&beta3[index]);
+ PDupwindNthAnti3beta3 = PDupwindNthAntifdOrder63(&beta3[index]);
+ PDupwindNthSymm3beta3 = PDupwindNthSymmfdOrder63(&beta3[index]);
+ PDstandardNth1gt11 = PDstandardNthfdOrder61(&gt11[index]);
+ PDstandardNth2gt11 = PDstandardNthfdOrder62(&gt11[index]);
+ PDstandardNth3gt11 = PDstandardNthfdOrder63(&gt11[index]);
+ PDstandardNth1gt12 = PDstandardNthfdOrder61(&gt12[index]);
+ PDstandardNth2gt12 = PDstandardNthfdOrder62(&gt12[index]);
+ PDstandardNth3gt12 = PDstandardNthfdOrder63(&gt12[index]);
+ PDstandardNth1gt13 = PDstandardNthfdOrder61(&gt13[index]);
+ PDstandardNth2gt13 = PDstandardNthfdOrder62(&gt13[index]);
+ PDstandardNth3gt13 = PDstandardNthfdOrder63(&gt13[index]);
+ PDstandardNth1gt22 = PDstandardNthfdOrder61(&gt22[index]);
+ PDstandardNth2gt22 = PDstandardNthfdOrder62(&gt22[index]);
+ PDstandardNth3gt22 = PDstandardNthfdOrder63(&gt22[index]);
+ PDstandardNth1gt23 = PDstandardNthfdOrder61(&gt23[index]);
+ PDstandardNth2gt23 = PDstandardNthfdOrder62(&gt23[index]);
+ PDstandardNth3gt23 = PDstandardNthfdOrder63(&gt23[index]);
+ PDstandardNth1gt33 = PDstandardNthfdOrder61(&gt33[index]);
+ PDstandardNth2gt33 = PDstandardNthfdOrder62(&gt33[index]);
+ PDstandardNth3gt33 = PDstandardNthfdOrder63(&gt33[index]);
+ PDstandardNth1phi = PDstandardNthfdOrder61(&phi[index]);
+ PDstandardNth2phi = PDstandardNthfdOrder62(&phi[index]);
+ PDstandardNth3phi = PDstandardNthfdOrder63(&phi[index]);
+ break;
+
+ case 8:
+ PDstandardNth1alpha = PDstandardNthfdOrder81(&alpha[index]);
+ PDstandardNth2alpha = PDstandardNthfdOrder82(&alpha[index]);
+ PDstandardNth3alpha = PDstandardNthfdOrder83(&alpha[index]);
+ PDupwindNthAnti1alpha = PDupwindNthAntifdOrder81(&alpha[index]);
+ PDupwindNthSymm1alpha = PDupwindNthSymmfdOrder81(&alpha[index]);
+ PDupwindNthAnti2alpha = PDupwindNthAntifdOrder82(&alpha[index]);
+ PDupwindNthSymm2alpha = PDupwindNthSymmfdOrder82(&alpha[index]);
+ PDupwindNthAnti3alpha = PDupwindNthAntifdOrder83(&alpha[index]);
+ PDupwindNthSymm3alpha = PDupwindNthSymmfdOrder83(&alpha[index]);
+ PDupwindNthAnti1beta1 = PDupwindNthAntifdOrder81(&beta1[index]);
+ PDupwindNthSymm1beta1 = PDupwindNthSymmfdOrder81(&beta1[index]);
+ PDupwindNthAnti2beta1 = PDupwindNthAntifdOrder82(&beta1[index]);
+ PDupwindNthSymm2beta1 = PDupwindNthSymmfdOrder82(&beta1[index]);
+ PDupwindNthAnti3beta1 = PDupwindNthAntifdOrder83(&beta1[index]);
+ PDupwindNthSymm3beta1 = PDupwindNthSymmfdOrder83(&beta1[index]);
+ PDupwindNthAnti1beta2 = PDupwindNthAntifdOrder81(&beta2[index]);
+ PDupwindNthSymm1beta2 = PDupwindNthSymmfdOrder81(&beta2[index]);
+ PDupwindNthAnti2beta2 = PDupwindNthAntifdOrder82(&beta2[index]);
+ PDupwindNthSymm2beta2 = PDupwindNthSymmfdOrder82(&beta2[index]);
+ PDupwindNthAnti3beta2 = PDupwindNthAntifdOrder83(&beta2[index]);
+ PDupwindNthSymm3beta2 = PDupwindNthSymmfdOrder83(&beta2[index]);
+ PDupwindNthAnti1beta3 = PDupwindNthAntifdOrder81(&beta3[index]);
+ PDupwindNthSymm1beta3 = PDupwindNthSymmfdOrder81(&beta3[index]);
+ PDupwindNthAnti2beta3 = PDupwindNthAntifdOrder82(&beta3[index]);
+ PDupwindNthSymm2beta3 = PDupwindNthSymmfdOrder82(&beta3[index]);
+ PDupwindNthAnti3beta3 = PDupwindNthAntifdOrder83(&beta3[index]);
+ PDupwindNthSymm3beta3 = PDupwindNthSymmfdOrder83(&beta3[index]);
+ PDstandardNth1gt11 = PDstandardNthfdOrder81(&gt11[index]);
+ PDstandardNth2gt11 = PDstandardNthfdOrder82(&gt11[index]);
+ PDstandardNth3gt11 = PDstandardNthfdOrder83(&gt11[index]);
+ PDstandardNth1gt12 = PDstandardNthfdOrder81(&gt12[index]);
+ PDstandardNth2gt12 = PDstandardNthfdOrder82(&gt12[index]);
+ PDstandardNth3gt12 = PDstandardNthfdOrder83(&gt12[index]);
+ PDstandardNth1gt13 = PDstandardNthfdOrder81(&gt13[index]);
+ PDstandardNth2gt13 = PDstandardNthfdOrder82(&gt13[index]);
+ PDstandardNth3gt13 = PDstandardNthfdOrder83(&gt13[index]);
+ PDstandardNth1gt22 = PDstandardNthfdOrder81(&gt22[index]);
+ PDstandardNth2gt22 = PDstandardNthfdOrder82(&gt22[index]);
+ PDstandardNth3gt22 = PDstandardNthfdOrder83(&gt22[index]);
+ PDstandardNth1gt23 = PDstandardNthfdOrder81(&gt23[index]);
+ PDstandardNth2gt23 = PDstandardNthfdOrder82(&gt23[index]);
+ PDstandardNth3gt23 = PDstandardNthfdOrder83(&gt23[index]);
+ PDstandardNth1gt33 = PDstandardNthfdOrder81(&gt33[index]);
+ PDstandardNth2gt33 = PDstandardNthfdOrder82(&gt33[index]);
+ PDstandardNth3gt33 = PDstandardNthfdOrder83(&gt33[index]);
+ PDstandardNth1phi = PDstandardNthfdOrder81(&phi[index]);
+ PDstandardNth2phi = PDstandardNthfdOrder82(&phi[index]);
+ PDstandardNth3phi = PDstandardNthfdOrder83(&phi[index]);
+ break;
+ }
+
+ /* Calculate temporaries and grid functions */
+ ptrdiff_t dir1 = Sign(beta1L);
+
+ ptrdiff_t dir2 = Sign(beta2L);
+
+ ptrdiff_t dir3 = Sign(beta3L);
+
+ CCTK_REAL_VEC JacPDstandardNth1alpha;
+ CCTK_REAL_VEC JacPDstandardNth1gt11;
+ CCTK_REAL_VEC JacPDstandardNth1gt12;
+ CCTK_REAL_VEC JacPDstandardNth1gt13;
+ CCTK_REAL_VEC JacPDstandardNth1gt22;
+ CCTK_REAL_VEC JacPDstandardNth1gt23;
+ CCTK_REAL_VEC JacPDstandardNth1gt33;
+ CCTK_REAL_VEC JacPDstandardNth1phi;
+ CCTK_REAL_VEC JacPDstandardNth2alpha;
+ CCTK_REAL_VEC JacPDstandardNth2gt11;
+ CCTK_REAL_VEC JacPDstandardNth2gt12;
+ CCTK_REAL_VEC JacPDstandardNth2gt13;
+ CCTK_REAL_VEC JacPDstandardNth2gt22;
+ CCTK_REAL_VEC JacPDstandardNth2gt23;
+ CCTK_REAL_VEC JacPDstandardNth2gt33;
+ CCTK_REAL_VEC JacPDstandardNth2phi;
+ CCTK_REAL_VEC JacPDstandardNth3alpha;
+ CCTK_REAL_VEC JacPDstandardNth3gt11;
+ CCTK_REAL_VEC JacPDstandardNth3gt12;
+ CCTK_REAL_VEC JacPDstandardNth3gt13;
+ CCTK_REAL_VEC JacPDstandardNth3gt22;
+ CCTK_REAL_VEC JacPDstandardNth3gt23;
+ CCTK_REAL_VEC JacPDstandardNth3gt33;
+ CCTK_REAL_VEC JacPDstandardNth3phi;
+ CCTK_REAL_VEC JacPDupwindNthAnti1alpha;
+ CCTK_REAL_VEC JacPDupwindNthAnti1beta1;
+ CCTK_REAL_VEC JacPDupwindNthAnti1beta2;
+ CCTK_REAL_VEC JacPDupwindNthAnti1beta3;
+ CCTK_REAL_VEC JacPDupwindNthAnti2alpha;
+ CCTK_REAL_VEC JacPDupwindNthAnti2beta1;
+ CCTK_REAL_VEC JacPDupwindNthAnti2beta2;
+ CCTK_REAL_VEC JacPDupwindNthAnti2beta3;
+ CCTK_REAL_VEC JacPDupwindNthAnti3alpha;
+ CCTK_REAL_VEC JacPDupwindNthAnti3beta1;
+ CCTK_REAL_VEC JacPDupwindNthAnti3beta2;
+ CCTK_REAL_VEC JacPDupwindNthAnti3beta3;
+ CCTK_REAL_VEC JacPDupwindNthSymm1alpha;
+ CCTK_REAL_VEC JacPDupwindNthSymm1beta1;
+ CCTK_REAL_VEC JacPDupwindNthSymm1beta2;
+ CCTK_REAL_VEC JacPDupwindNthSymm1beta3;
+ CCTK_REAL_VEC JacPDupwindNthSymm2alpha;
+ CCTK_REAL_VEC JacPDupwindNthSymm2beta1;
+ CCTK_REAL_VEC JacPDupwindNthSymm2beta2;
+ CCTK_REAL_VEC JacPDupwindNthSymm2beta3;
+ CCTK_REAL_VEC JacPDupwindNthSymm3alpha;
+ CCTK_REAL_VEC JacPDupwindNthSymm3beta1;
+ CCTK_REAL_VEC JacPDupwindNthSymm3beta2;
+ CCTK_REAL_VEC JacPDupwindNthSymm3beta3;
+
+ if (use_jacobian)
+ {
+ JacPDstandardNth1alpha =
+ kmadd(J11L,PDstandardNth1alpha,kmadd(J21L,PDstandardNth2alpha,kmul(J31L,PDstandardNth3alpha)));
+
+ JacPDstandardNth1gt11 =
+ kmadd(J11L,PDstandardNth1gt11,kmadd(J21L,PDstandardNth2gt11,kmul(J31L,PDstandardNth3gt11)));
+
+ JacPDstandardNth1gt12 =
+ kmadd(J11L,PDstandardNth1gt12,kmadd(J21L,PDstandardNth2gt12,kmul(J31L,PDstandardNth3gt12)));
+
+ JacPDstandardNth1gt13 =
+ kmadd(J11L,PDstandardNth1gt13,kmadd(J21L,PDstandardNth2gt13,kmul(J31L,PDstandardNth3gt13)));
+
+ JacPDstandardNth1gt22 =
+ kmadd(J11L,PDstandardNth1gt22,kmadd(J21L,PDstandardNth2gt22,kmul(J31L,PDstandardNth3gt22)));
+
+ JacPDstandardNth1gt23 =
+ kmadd(J11L,PDstandardNth1gt23,kmadd(J21L,PDstandardNth2gt23,kmul(J31L,PDstandardNth3gt23)));
+
+ JacPDstandardNth1gt33 =
+ kmadd(J11L,PDstandardNth1gt33,kmadd(J21L,PDstandardNth2gt33,kmul(J31L,PDstandardNth3gt33)));
+
+ JacPDstandardNth1phi =
+ kmadd(J11L,PDstandardNth1phi,kmadd(J21L,PDstandardNth2phi,kmul(J31L,PDstandardNth3phi)));
+
+ JacPDstandardNth2alpha =
+ kmadd(J12L,PDstandardNth1alpha,kmadd(J22L,PDstandardNth2alpha,kmul(J32L,PDstandardNth3alpha)));
+
+ JacPDstandardNth2gt11 =
+ kmadd(J12L,PDstandardNth1gt11,kmadd(J22L,PDstandardNth2gt11,kmul(J32L,PDstandardNth3gt11)));
+
+ JacPDstandardNth2gt12 =
+ kmadd(J12L,PDstandardNth1gt12,kmadd(J22L,PDstandardNth2gt12,kmul(J32L,PDstandardNth3gt12)));
+
+ JacPDstandardNth2gt13 =
+ kmadd(J12L,PDstandardNth1gt13,kmadd(J22L,PDstandardNth2gt13,kmul(J32L,PDstandardNth3gt13)));
+
+ JacPDstandardNth2gt22 =
+ kmadd(J12L,PDstandardNth1gt22,kmadd(J22L,PDstandardNth2gt22,kmul(J32L,PDstandardNth3gt22)));
+
+ JacPDstandardNth2gt23 =
+ kmadd(J12L,PDstandardNth1gt23,kmadd(J22L,PDstandardNth2gt23,kmul(J32L,PDstandardNth3gt23)));
+
+ JacPDstandardNth2gt33 =
+ kmadd(J12L,PDstandardNth1gt33,kmadd(J22L,PDstandardNth2gt33,kmul(J32L,PDstandardNth3gt33)));
+
+ JacPDstandardNth2phi =
+ kmadd(J12L,PDstandardNth1phi,kmadd(J22L,PDstandardNth2phi,kmul(J32L,PDstandardNth3phi)));
+
+ JacPDstandardNth3alpha =
+ kmadd(J13L,PDstandardNth1alpha,kmadd(J23L,PDstandardNth2alpha,kmul(J33L,PDstandardNth3alpha)));
+
+ JacPDstandardNth3gt11 =
+ kmadd(J13L,PDstandardNth1gt11,kmadd(J23L,PDstandardNth2gt11,kmul(J33L,PDstandardNth3gt11)));
+
+ JacPDstandardNth3gt12 =
+ kmadd(J13L,PDstandardNth1gt12,kmadd(J23L,PDstandardNth2gt12,kmul(J33L,PDstandardNth3gt12)));
+
+ JacPDstandardNth3gt13 =
+ kmadd(J13L,PDstandardNth1gt13,kmadd(J23L,PDstandardNth2gt13,kmul(J33L,PDstandardNth3gt13)));
+
+ JacPDstandardNth3gt22 =
+ kmadd(J13L,PDstandardNth1gt22,kmadd(J23L,PDstandardNth2gt22,kmul(J33L,PDstandardNth3gt22)));
+
+ JacPDstandardNth3gt23 =
+ kmadd(J13L,PDstandardNth1gt23,kmadd(J23L,PDstandardNth2gt23,kmul(J33L,PDstandardNth3gt23)));
+
+ JacPDstandardNth3gt33 =
+ kmadd(J13L,PDstandardNth1gt33,kmadd(J23L,PDstandardNth2gt33,kmul(J33L,PDstandardNth3gt33)));
+
+ JacPDstandardNth3phi =
+ kmadd(J13L,PDstandardNth1phi,kmadd(J23L,PDstandardNth2phi,kmul(J33L,PDstandardNth3phi)));
+
+ JacPDupwindNthAnti1alpha =
+ kmadd(J11L,PDupwindNthAnti1alpha,kmadd(J21L,PDupwindNthAnti2alpha,kmul(J31L,PDupwindNthAnti3alpha)));
+
+ JacPDupwindNthAnti1beta1 =
+ kmadd(J11L,PDupwindNthAnti1beta1,kmadd(J21L,PDupwindNthAnti2beta1,kmul(J31L,PDupwindNthAnti3beta1)));
+
+ JacPDupwindNthAnti1beta2 =
+ kmadd(J11L,PDupwindNthAnti1beta2,kmadd(J21L,PDupwindNthAnti2beta2,kmul(J31L,PDupwindNthAnti3beta2)));
+
+ JacPDupwindNthAnti1beta3 =
+ kmadd(J11L,PDupwindNthAnti1beta3,kmadd(J21L,PDupwindNthAnti2beta3,kmul(J31L,PDupwindNthAnti3beta3)));
+
+ JacPDupwindNthSymm1alpha =
+ kmadd(J11L,PDupwindNthSymm1alpha,kmadd(J21L,PDupwindNthSymm2alpha,kmul(J31L,PDupwindNthSymm3alpha)));
+
+ JacPDupwindNthSymm1beta1 =
+ kmadd(J11L,PDupwindNthSymm1beta1,kmadd(J21L,PDupwindNthSymm2beta1,kmul(J31L,PDupwindNthSymm3beta1)));
+
+ JacPDupwindNthSymm1beta2 =
+ kmadd(J11L,PDupwindNthSymm1beta2,kmadd(J21L,PDupwindNthSymm2beta2,kmul(J31L,PDupwindNthSymm3beta2)));
+
+ JacPDupwindNthSymm1beta3 =
+ kmadd(J11L,PDupwindNthSymm1beta3,kmadd(J21L,PDupwindNthSymm2beta3,kmul(J31L,PDupwindNthSymm3beta3)));
+
+ JacPDupwindNthAnti2alpha =
+ kmadd(J12L,PDupwindNthAnti1alpha,kmadd(J22L,PDupwindNthAnti2alpha,kmul(J32L,PDupwindNthAnti3alpha)));
+
+ JacPDupwindNthAnti2beta1 =
+ kmadd(J12L,PDupwindNthAnti1beta1,kmadd(J22L,PDupwindNthAnti2beta1,kmul(J32L,PDupwindNthAnti3beta1)));
+
+ JacPDupwindNthAnti2beta2 =
+ kmadd(J12L,PDupwindNthAnti1beta2,kmadd(J22L,PDupwindNthAnti2beta2,kmul(J32L,PDupwindNthAnti3beta2)));
+
+ JacPDupwindNthAnti2beta3 =
+ kmadd(J12L,PDupwindNthAnti1beta3,kmadd(J22L,PDupwindNthAnti2beta3,kmul(J32L,PDupwindNthAnti3beta3)));
+
+ JacPDupwindNthSymm2alpha =
+ kmadd(J12L,PDupwindNthSymm1alpha,kmadd(J22L,PDupwindNthSymm2alpha,kmul(J32L,PDupwindNthSymm3alpha)));
+
+ JacPDupwindNthSymm2beta1 =
+ kmadd(J12L,PDupwindNthSymm1beta1,kmadd(J22L,PDupwindNthSymm2beta1,kmul(J32L,PDupwindNthSymm3beta1)));
+
+ JacPDupwindNthSymm2beta2 =
+ kmadd(J12L,PDupwindNthSymm1beta2,kmadd(J22L,PDupwindNthSymm2beta2,kmul(J32L,PDupwindNthSymm3beta2)));
+
+ JacPDupwindNthSymm2beta3 =
+ kmadd(J12L,PDupwindNthSymm1beta3,kmadd(J22L,PDupwindNthSymm2beta3,kmul(J32L,PDupwindNthSymm3beta3)));
+
+ JacPDupwindNthAnti3alpha =
+ kmadd(J13L,PDupwindNthAnti1alpha,kmadd(J23L,PDupwindNthAnti2alpha,kmul(J33L,PDupwindNthAnti3alpha)));
+
+ JacPDupwindNthAnti3beta1 =
+ kmadd(J13L,PDupwindNthAnti1beta1,kmadd(J23L,PDupwindNthAnti2beta1,kmul(J33L,PDupwindNthAnti3beta1)));
+
+ JacPDupwindNthAnti3beta2 =
+ kmadd(J13L,PDupwindNthAnti1beta2,kmadd(J23L,PDupwindNthAnti2beta2,kmul(J33L,PDupwindNthAnti3beta2)));
+
+ JacPDupwindNthAnti3beta3 =
+ kmadd(J13L,PDupwindNthAnti1beta3,kmadd(J23L,PDupwindNthAnti2beta3,kmul(J33L,PDupwindNthAnti3beta3)));
+
+ JacPDupwindNthSymm3alpha =
+ kmadd(J13L,PDupwindNthSymm1alpha,kmadd(J23L,PDupwindNthSymm2alpha,kmul(J33L,PDupwindNthSymm3alpha)));
+
+ JacPDupwindNthSymm3beta1 =
+ kmadd(J13L,PDupwindNthSymm1beta1,kmadd(J23L,PDupwindNthSymm2beta1,kmul(J33L,PDupwindNthSymm3beta1)));
+
+ JacPDupwindNthSymm3beta2 =
+ kmadd(J13L,PDupwindNthSymm1beta2,kmadd(J23L,PDupwindNthSymm2beta2,kmul(J33L,PDupwindNthSymm3beta2)));
+
+ JacPDupwindNthSymm3beta3 =
+ kmadd(J13L,PDupwindNthSymm1beta3,kmadd(J23L,PDupwindNthSymm2beta3,kmul(J33L,PDupwindNthSymm3beta3)));
+ }
+ else
+ {
+ JacPDstandardNth1alpha = PDstandardNth1alpha;
+
+ JacPDstandardNth1gt11 = PDstandardNth1gt11;
+
+ JacPDstandardNth1gt12 = PDstandardNth1gt12;
+
+ JacPDstandardNth1gt13 = PDstandardNth1gt13;
+
+ JacPDstandardNth1gt22 = PDstandardNth1gt22;
+
+ JacPDstandardNth1gt23 = PDstandardNth1gt23;
+
+ JacPDstandardNth1gt33 = PDstandardNth1gt33;
+
+ JacPDstandardNth1phi = PDstandardNth1phi;
+
+ JacPDstandardNth2alpha = PDstandardNth2alpha;
+
+ JacPDstandardNth2gt11 = PDstandardNth2gt11;
+
+ JacPDstandardNth2gt12 = PDstandardNth2gt12;
+
+ JacPDstandardNth2gt13 = PDstandardNth2gt13;
+
+ JacPDstandardNth2gt22 = PDstandardNth2gt22;
+
+ JacPDstandardNth2gt23 = PDstandardNth2gt23;
+
+ JacPDstandardNth2gt33 = PDstandardNth2gt33;
+
+ JacPDstandardNth2phi = PDstandardNth2phi;
+
+ JacPDstandardNth3alpha = PDstandardNth3alpha;
+
+ JacPDstandardNth3gt11 = PDstandardNth3gt11;
+
+ JacPDstandardNth3gt12 = PDstandardNth3gt12;
+
+ JacPDstandardNth3gt13 = PDstandardNth3gt13;
+
+ JacPDstandardNth3gt22 = PDstandardNth3gt22;
+
+ JacPDstandardNth3gt23 = PDstandardNth3gt23;
+
+ JacPDstandardNth3gt33 = PDstandardNth3gt33;
+
+ JacPDstandardNth3phi = PDstandardNth3phi;
+
+ 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;
+ }
+
+ CCTK_REAL_VEC detgt = ToReal(1);
+
+ CCTK_REAL_VEC gtu11 =
+ kmul(INV(detgt),kmsub(gt22L,gt33L,SQR(gt23L)));
+
+ CCTK_REAL_VEC gtu12 =
+ kmul(INV(detgt),kmsub(gt13L,gt23L,kmul(gt12L,gt33L)));
+
+ CCTK_REAL_VEC gtu13 =
+ kmul(INV(detgt),kmsub(gt12L,gt23L,kmul(gt13L,gt22L)));
+
+ CCTK_REAL_VEC gtu22 =
+ kmul(INV(detgt),kmsub(gt11L,gt33L,SQR(gt13L)));
+
+ CCTK_REAL_VEC gtu23 =
+ kmul(INV(detgt),kmsub(gt12L,gt13L,kmul(gt11L,gt23L)));
+
+ CCTK_REAL_VEC gtu33 =
+ kmul(INV(detgt),kmsub(gt11L,gt22L,SQR(gt12L)));
+
+ CCTK_REAL_VEC eta =
+ kmul(INV(kfmax(rL,ToReal(SpatialBetaDriverRadius))),ToReal(SpatialBetaDriverRadius));
+
+ CCTK_REAL_VEC theta =
+ kfmin(ToReal(1),kexp(knmsub(rL,INV(ToReal(SpatialShiftGammaCoeffRadius)),ToReal(1))));
+
+ CCTK_REAL_VEC dtalpL =
+ kmsub(kmadd(beta1L,JacPDupwindNthAnti1alpha,kmadd(beta2L,JacPDupwindNthAnti2alpha,kmadd(beta3L,JacPDupwindNthAnti3alpha,kmadd(JacPDupwindNthSymm1alpha,kfabs(beta1L),kmadd(JacPDupwindNthSymm2alpha,kfabs(beta2L),kmul(JacPDupwindNthSymm3alpha,kfabs(beta3L))))))),ToReal(LapseAdvectionCoeff),kmul(kpow(alphaL,harmonicN),kmul(ToReal(harmonicF),kmadd(AL,ToReal(LapseACoeff),kmul(kmsub(ThetaL,ToReal(2),trKL),kadd(ToReal(-1),ToReal(LapseACoeff)))))));
+
+ CCTK_REAL_VEC dtbetaxL =
+ kmadd(kmadd(beta1L,JacPDupwindNthAnti1beta1,kmadd(beta2L,JacPDupwindNthAnti2beta1,kmadd(beta3L,JacPDupwindNthAnti3beta1,kmadd(JacPDupwindNthSymm1beta1,kfabs(beta1L),kmadd(JacPDupwindNthSymm2beta1,kfabs(beta2L),kmul(JacPDupwindNthSymm3beta1,kfabs(beta3L))))))),ToReal(ShiftAdvectionCoeff),IfThen(harmonicShift,kmul(alphaL,kmul(phiL,kmul(ToReal(0.5),kmadd(phiL,kmul(kmadd(gtu11,JacPDstandardNth1alpha,kmadd(gtu12,JacPDstandardNth2alpha,kmul(gtu13,JacPDstandardNth3alpha))),ToReal(-2)),kmul(alphaL,kmadd(phiL,kmadd(JacPDstandardNth1gt11,SQR(gtu11),kmul(JacPDstandardNth1gt22,kmul(SQR(gtu12),ToReal(2)))),kmadd(gtu13,kmadd(JacPDstandardNth3phi,ToReal(2),kmul(phiL,kmadd(gtu33,JacPDstandardNth3gt33,kmsub(kmadd(gtu13,JacPDstandardNth1gt33,kmadd(gtu22,JacPDstandardNth2gt23,kmul(gtu23,JacPDstandardNth2gt33))),ToReal(2),kmul(gtu22,JacPDstandardNth3gt22))))),kmadd(gtu11,kmadd(JacPDstandardNth1phi,ToReal(2),kmul(phiL,kmadd(gtu12,JacPDstandardNth2gt11,kmadd(gtu13,JacPDstandardNth3gt11,kmadd(gtu23,kmul(JacPDstandardNth1gt23,ToReal(-2)),knmsub(gtu22,JacPDstandardNth1gt22,kmadd(kmadd(gtu12,JacPDstandardNth1gt12,kmadd(gtu13,JacPDstandardNth1gt13,kmul(gtu22,JacPDstandardNth2gt12))),ToReal(2),kmadd(gtu23,kmul(JacPDstandardNth2gt13,ToReal(2)),kmadd(gtu23,kmul(JacPDstandardNth3gt12,ToReal(2)),kmul(gtu33,kmsub(JacPDstandardNth3gt13,ToReal(2),JacPDstandardNth1gt33))))))))))),kmul(gtu12,kmadd(JacPDstandardNth2phi,ToReal(2),kmul(phiL,kmadd(gtu22,JacPDstandardNth2gt22,kmadd(gtu23,kmul(JacPDstandardNth3gt22,ToReal(2)),kmadd(gtu33,kmsub(JacPDstandardNth3gt23,ToReal(2),JacPDstandardNth2gt33),kmul(gtu13,kmul(JacPDstandardNth1gt23,ToReal(4))))))))))))))))),kmul(theta,kmul(kadd(Xt1L,kmadd(ksub(B1L,Xt1L),ToReal(ShiftBCoeff),kmul(beta1L,kmul(eta,kmul(ToReal(BetaDriver),kadd(ToReal(-1),ToReal(ShiftBCoeff))))))),ToReal(ShiftGammaCoeff)))));
+
+ CCTK_REAL_VEC dtbetayL =
+ kmadd(kmadd(beta1L,JacPDupwindNthAnti1beta2,kmadd(beta2L,JacPDupwindNthAnti2beta2,kmadd(beta3L,JacPDupwindNthAnti3beta2,kmadd(JacPDupwindNthSymm1beta2,kfabs(beta1L),kmadd(JacPDupwindNthSymm2beta2,kfabs(beta2L),kmul(JacPDupwindNthSymm3beta2,kfabs(beta3L))))))),ToReal(ShiftAdvectionCoeff),IfThen(harmonicShift,kmul(alphaL,kmul(phiL,kmul(ToReal(0.5),kmadd(phiL,kmul(kmadd(gtu12,JacPDstandardNth1alpha,kmadd(gtu22,JacPDstandardNth2alpha,kmul(gtu23,JacPDstandardNth3alpha))),ToReal(-2)),kmul(alphaL,kmadd(phiL,kmadd(JacPDstandardNth2gt22,SQR(gtu22),kmul(JacPDstandardNth2gt11,kmul(SQR(gtu12),ToReal(2)))),kmadd(gtu23,kmadd(JacPDstandardNth3phi,ToReal(2),kmul(phiL,kmadd(gtu33,JacPDstandardNth3gt33,kmsub(kmadd(gtu11,JacPDstandardNth1gt13,kmadd(gtu13,JacPDstandardNth1gt33,kmul(gtu23,JacPDstandardNth2gt33))),ToReal(2),kmul(gtu11,JacPDstandardNth3gt11))))),kmadd(gtu22,kmadd(JacPDstandardNth2phi,ToReal(2),kmul(phiL,kmadd(gtu23,JacPDstandardNth3gt22,kmadd(kmadd(gtu23,JacPDstandardNth2gt23,kmul(gtu13,kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth3gt12,JacPDstandardNth2gt13)))),ToReal(2),kmadd(gtu11,kmsub(JacPDstandardNth1gt12,ToReal(2),JacPDstandardNth2gt11),kmul(gtu33,kmsub(JacPDstandardNth3gt23,ToReal(2),JacPDstandardNth2gt33))))))),kmul(gtu12,kmadd(JacPDstandardNth1phi,ToReal(2),kmul(phiL,kmadd(gtu11,JacPDstandardNth1gt11,kmadd(gtu13,kmul(JacPDstandardNth3gt11,ToReal(2)),kmadd(gtu22,kmadd(JacPDstandardNth2gt12,ToReal(2),JacPDstandardNth1gt22),kmadd(gtu33,kmsub(JacPDstandardNth3gt13,ToReal(2),JacPDstandardNth1gt33),kmul(gtu23,kmul(JacPDstandardNth2gt13,ToReal(4)))))))))))))))))),kmul(theta,kmul(kadd(Xt2L,kmadd(ksub(B2L,Xt2L),ToReal(ShiftBCoeff),kmul(beta2L,kmul(eta,kmul(ToReal(BetaDriver),kadd(ToReal(-1),ToReal(ShiftBCoeff))))))),ToReal(ShiftGammaCoeff)))));
+
+ CCTK_REAL_VEC dtbetazL =
+ kmadd(kmadd(beta1L,JacPDupwindNthAnti1beta3,kmadd(beta2L,JacPDupwindNthAnti2beta3,kmadd(beta3L,JacPDupwindNthAnti3beta3,kmadd(JacPDupwindNthSymm1beta3,kfabs(beta1L),kmadd(JacPDupwindNthSymm2beta3,kfabs(beta2L),kmul(JacPDupwindNthSymm3beta3,kfabs(beta3L))))))),ToReal(ShiftAdvectionCoeff),IfThen(harmonicShift,kmul(alphaL,kmul(phiL,kmul(ToReal(0.5),kmadd(phiL,kmul(kmadd(gtu13,JacPDstandardNth1alpha,kmadd(gtu23,JacPDstandardNth2alpha,kmul(gtu33,JacPDstandardNth3alpha))),ToReal(-2)),kmul(alphaL,kmadd(phiL,kmul(kmadd(JacPDstandardNth3gt11,SQR(gtu13),kmul(JacPDstandardNth3gt22,SQR(gtu23))),ToReal(2)),kmadd(gtu23,kmadd(JacPDstandardNth2phi,ToReal(2),kmul(phiL,kmadd(gtu22,JacPDstandardNth2gt22,kmadd(gtu33,JacPDstandardNth2gt33,kmsub(kmadd(gtu11,JacPDstandardNth1gt12,kmadd(gtu12,JacPDstandardNth1gt22,kmul(gtu33,JacPDstandardNth3gt23))),ToReal(2),kmul(gtu11,JacPDstandardNth2gt11)))))),kmadd(gtu33,kmadd(JacPDstandardNth3phi,ToReal(2),kmul(phiL,kmadd(gtu33,JacPDstandardNth3gt33,knmsub(gtu22,JacPDstandardNth3gt22,kmadd(kmadd(gtu22,JacPDstandardNth2gt23,kmul(gtu12,kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth2gt13,JacPDstandardNth3gt12)))),ToReal(2),kmul(gtu11,kmsub(JacPDstandardNth1gt13,ToReal(2),JacPDstandardNth3gt11))))))),kmul(gtu13,kmadd(JacPDstandardNth1phi,ToReal(2),kmul(phiL,kmadd(gtu11,JacPDstandardNth1gt11,kmadd(gtu12,kmul(JacPDstandardNth2gt11,ToReal(2)),kmadd(gtu22,kmsub(JacPDstandardNth2gt12,ToReal(2),JacPDstandardNth1gt22),kmadd(gtu33,kmadd(JacPDstandardNth3gt13,ToReal(2),JacPDstandardNth1gt33),kmul(gtu23,kmul(JacPDstandardNth3gt12,ToReal(4)))))))))))))))))),kmul(theta,kmul(kadd(Xt3L,kmadd(ksub(B3L,Xt3L),ToReal(ShiftBCoeff),kmul(beta3L,kmul(eta,kmul(ToReal(BetaDriver),kadd(ToReal(-1),ToReal(ShiftBCoeff))))))),ToReal(ShiftGammaCoeff)))));
+
+ /* Copy local copies back to grid functions */
+ vec_store_partial_prepare(i,lc_imin,lc_imax);
+ vec_store_nta_partial(dtalp[index],dtalpL);
+ vec_store_nta_partial(dtbetax[index],dtbetaxL);
+ vec_store_nta_partial(dtbetay[index],dtbetayL);
+ vec_store_nta_partial(dtbetaz[index],dtbetazL);
+ }
+ LC_ENDLOOP3VEC(ML_CCZ4_convertToADMBaseDtLapseShift);
+}
+
+extern "C" void ML_CCZ4_convertToADMBaseDtLapseShift(CCTK_ARGUMENTS)
+{
+ DECLARE_CCTK_ARGUMENTS;
+ DECLARE_CCTK_PARAMETERS;
+
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_CCZ4_convertToADMBaseDtLapseShift_Body");
+ }
+
+ if (cctk_iteration % ML_CCZ4_convertToADMBaseDtLapseShift_calc_every != ML_CCZ4_convertToADMBaseDtLapseShift_calc_offset)
+ {
+ return;
+ }
+
+ const char *const groups[] = {
+ "ADMBase::dtlapse",
+ "ADMBase::dtshift",
+ "grid::coordinates",
+ "Grid::coordinates",
+ "ML_CCZ4::ML_dtlapse",
+ "ML_CCZ4::ML_dtshift",
+ "ML_CCZ4::ML_Gamma",
+ "ML_CCZ4::ML_lapse",
+ "ML_CCZ4::ML_log_confac",
+ "ML_CCZ4::ML_metric",
+ "ML_CCZ4::ML_shift",
+ "ML_CCZ4::ML_Theta",
+ "ML_CCZ4::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_CCZ4_convertToADMBaseDtLapseShift", 13, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_CCZ4_convertToADMBaseDtLapseShift", 2, 2, 2);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_CCZ4_convertToADMBaseDtLapseShift", 3, 3, 3);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_CCZ4_convertToADMBaseDtLapseShift", 4, 4, 4);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_CCZ4_convertToADMBaseDtLapseShift", 5, 5, 5);
+ break;
+ }
+
+ GenericFD_LoopOverInterior(cctkGH, ML_CCZ4_convertToADMBaseDtLapseShift_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_CCZ4_convertToADMBaseDtLapseShift_Body");
+ }
+}
diff --git a/ML_CCZ4/src/ML_CCZ4_convertToADMBaseDtLapseShiftBoundary.cc b/ML_CCZ4/src/ML_CCZ4_convertToADMBaseDtLapseShiftBoundary.cc
new file mode 100644
index 0000000..0d06a21
--- /dev/null
+++ b/ML_CCZ4/src/ML_CCZ4_convertToADMBaseDtLapseShiftBoundary.cc
@@ -0,0 +1,348 @@
+/* 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 "cctk_Loop.h"
+#include "loopcontrol.h"
+#include "vectors.h"
+
+/* Define macros used in calculations */
+#define INITVALUE (42)
+#define QAD(x) (SQR(SQR(x)))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
+
+extern "C" void ML_CCZ4_convertToADMBaseDtLapseShiftBoundary_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 */, "ADMBase::dtlapse","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ADMBase::dtlapse.");
+ ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ADMBase::dtshift","flat");
+ if (ierr < 0)
+ CCTK_WARN(1, "Failed to register flat BC for ADMBase::dtshift.");
+ return;
+}
+
+static void ML_CCZ4_convertToADMBaseDtLapseShiftBoundary_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const imin[3], int const imax[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+{
+ DECLARE_CCTK_ARGUMENTS;
+ DECLARE_CCTK_PARAMETERS;
+
+
+ /* 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_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const t = ToReal(cctk_time);
+ CCTK_REAL_VEC const dxi = INV(dx);
+ CCTK_REAL_VEC const dyi = INV(dy);
+ CCTK_REAL_VEC const dzi = INV(dz);
+ CCTK_REAL_VEC const khalf = ToReal(0.5);
+ CCTK_REAL_VEC const kthird = ToReal(1.0/3.0);
+ CCTK_REAL_VEC const ktwothird = ToReal(2.0/3.0);
+ CCTK_REAL_VEC const kfourthird = ToReal(4.0/3.0);
+ CCTK_REAL_VEC const keightthird = ToReal(8.0/3.0);
+ CCTK_REAL_VEC const hdxi = kmul(ToReal(0.5), dxi);
+ CCTK_REAL_VEC const hdyi = kmul(ToReal(0.5), dyi);
+ CCTK_REAL_VEC const hdzi = kmul(ToReal(0.5), dzi);
+
+ /* Initialize predefined quantities */
+ CCTK_REAL_VEC const p1o1024dx = kmul(INV(dx),ToReal(0.0009765625));
+ CCTK_REAL_VEC const p1o1024dy = kmul(INV(dy),ToReal(0.0009765625));
+ CCTK_REAL_VEC const p1o1024dz = kmul(INV(dz),ToReal(0.0009765625));
+ CCTK_REAL_VEC const p1o120dx = kmul(INV(dx),ToReal(0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o120dy = kmul(INV(dy),ToReal(0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o120dz = kmul(INV(dz),ToReal(0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dx = kmul(INV(dx),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dy = kmul(INV(dy),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dz = kmul(INV(dz),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o144dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o144dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o144dydz = kmul(INV(kmul(dy,dz)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o1680dx = kmul(INV(dx),ToReal(0.000595238095238095238095238095238));
+ CCTK_REAL_VEC const p1o1680dy = kmul(INV(dy),ToReal(0.000595238095238095238095238095238));
+ CCTK_REAL_VEC const p1o1680dz = kmul(INV(dz),ToReal(0.000595238095238095238095238095238));
+ CCTK_REAL_VEC const p1o16dx = kmul(INV(dx),ToReal(0.0625));
+ CCTK_REAL_VEC const p1o16dy = kmul(INV(dy),ToReal(0.0625));
+ CCTK_REAL_VEC const p1o16dz = kmul(INV(dz),ToReal(0.0625));
+ CCTK_REAL_VEC const p1o180dx2 = kmul(INV(SQR(dx)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o180dy2 = kmul(INV(SQR(dy)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o180dz2 = kmul(INV(SQR(dz)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o24dx = kmul(INV(dx),ToReal(0.0416666666666666666666666666667));
+ CCTK_REAL_VEC const p1o24dy = kmul(INV(dy),ToReal(0.0416666666666666666666666666667));
+ CCTK_REAL_VEC const p1o24dz = kmul(INV(dz),ToReal(0.0416666666666666666666666666667));
+ CCTK_REAL_VEC const p1o256dx = kmul(INV(dx),ToReal(0.00390625));
+ CCTK_REAL_VEC const p1o256dy = kmul(INV(dy),ToReal(0.00390625));
+ CCTK_REAL_VEC const p1o256dz = kmul(INV(dz),ToReal(0.00390625));
+ CCTK_REAL_VEC const p1o2dx = kmul(INV(dx),ToReal(0.5));
+ CCTK_REAL_VEC const p1o2dy = kmul(INV(dy),ToReal(0.5));
+ CCTK_REAL_VEC const p1o2dz = kmul(INV(dz),ToReal(0.5));
+ CCTK_REAL_VEC const p1o3600dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o3600dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o3600dydz = kmul(INV(kmul(dy,dz)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o4dx = kmul(INV(dx),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(kmul(dy,dz)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dz = kmul(INV(dz),ToReal(0.25));
+ CCTK_REAL_VEC const p1o5040dx2 = kmul(INV(SQR(dx)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o5040dy2 = kmul(INV(SQR(dy)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o5040dz2 = kmul(INV(SQR(dz)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o560dx = kmul(INV(dx),ToReal(0.00178571428571428571428571428571));
+ CCTK_REAL_VEC const p1o560dy = kmul(INV(dy),ToReal(0.00178571428571428571428571428571));
+ CCTK_REAL_VEC const p1o560dz = kmul(INV(dz),ToReal(0.00178571428571428571428571428571));
+ CCTK_REAL_VEC const p1o60dx = kmul(INV(dx),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o60dy = kmul(INV(dy),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o60dz = kmul(INV(dz),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o64dx = kmul(INV(dx),ToReal(0.015625));
+ CCTK_REAL_VEC const p1o64dy = kmul(INV(dy),ToReal(0.015625));
+ CCTK_REAL_VEC const p1o64dz = kmul(INV(dz),ToReal(0.015625));
+ CCTK_REAL_VEC const p1o705600dxdy = kmul(INV(kmul(dx,dy)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(kmul(dx,dz)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(kmul(dy,dz)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1odx = INV(dx);
+ CCTK_REAL_VEC const p1odx2 = INV(SQR(dx));
+ CCTK_REAL_VEC const p1ody = INV(dy);
+ CCTK_REAL_VEC const p1ody2 = INV(SQR(dy));
+ CCTK_REAL_VEC const p1odz = INV(dz);
+ CCTK_REAL_VEC const p1odz2 = INV(SQR(dz));
+ CCTK_REAL_VEC const pm1o120dx = kmul(INV(dx),ToReal(-0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o120dy = kmul(INV(dy),ToReal(-0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o120dz = kmul(INV(dz),ToReal(-0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dx2 = kmul(INV(SQR(dx)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dy2 = kmul(INV(SQR(dy)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dz2 = kmul(INV(SQR(dz)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o2dx = kmul(INV(dx),ToReal(-0.5));
+ CCTK_REAL_VEC const pm1o2dy = kmul(INV(dy),ToReal(-0.5));
+ CCTK_REAL_VEC const pm1o2dz = kmul(INV(dz),ToReal(-0.5));
+ CCTK_REAL_VEC const pm1o4dx = kmul(INV(dx),ToReal(-0.25));
+ CCTK_REAL_VEC const pm1o4dy = kmul(INV(dy),ToReal(-0.25));
+ CCTK_REAL_VEC const pm1o4dz = kmul(INV(dz),ToReal(-0.25));
+ CCTK_REAL_VEC const pm1o60dx = kmul(INV(dx),ToReal(-0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const pm1o60dy = kmul(INV(dy),ToReal(-0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const pm1o60dz = kmul(INV(dz),ToReal(-0.0166666666666666666666666666667));
+
+ /* 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;
+
+ /* Assign local copies of arrays functions */
+
+
+
+ /* Calculate temporaries and arrays functions */
+
+ /* Copy local copies back to grid functions */
+
+ /* Loop over the grid points */
+ #pragma omp parallel
+ LC_LOOP3VEC(ML_CCZ4_convertToADMBaseDtLapseShiftBoundary,
+ i,j,k, imin[0],imin[1],imin[2], imax[0],imax[1],imax[2],
+ cctk_lsh[0],cctk_lsh[1],cctk_lsh[2],
+ CCTK_REAL_VEC_SIZE)
+ {
+ ptrdiff_t const index = di*i + dj*j + dk*k;
+
+ /* Assign local copies of grid functions */
+
+ CCTK_REAL_VEC AL = vec_load(A[index]);
+ CCTK_REAL_VEC alphaL = vec_load(alpha[index]);
+ CCTK_REAL_VEC B1L = vec_load(B1[index]);
+ CCTK_REAL_VEC B2L = vec_load(B2[index]);
+ CCTK_REAL_VEC B3L = vec_load(B3[index]);
+ CCTK_REAL_VEC beta1L = vec_load(beta1[index]);
+ CCTK_REAL_VEC beta2L = vec_load(beta2[index]);
+ CCTK_REAL_VEC beta3L = vec_load(beta3[index]);
+ CCTK_REAL_VEC rL = vec_load(r[index]);
+ CCTK_REAL_VEC ThetaL = vec_load(Theta[index]);
+ CCTK_REAL_VEC trKL = vec_load(trK[index]);
+ CCTK_REAL_VEC Xt1L = vec_load(Xt1[index]);
+ CCTK_REAL_VEC Xt2L = vec_load(Xt2[index]);
+ CCTK_REAL_VEC Xt3L = vec_load(Xt3[index]);
+
+
+
+ /* Include user supplied include files */
+
+ /* Precompute derivatives */
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
+ /* Calculate temporaries and grid functions */
+ CCTK_REAL_VEC eta =
+ kmul(INV(kfmax(rL,ToReal(SpatialBetaDriverRadius))),ToReal(SpatialBetaDriverRadius));
+
+ CCTK_REAL_VEC theta =
+ kfmin(ToReal(1),kexp(knmsub(rL,INV(ToReal(SpatialShiftGammaCoeffRadius)),ToReal(1))));
+
+ CCTK_REAL_VEC dtalpL =
+ kneg(kmul(kpow(alphaL,harmonicN),kmul(ToReal(harmonicF),kmadd(AL,ToReal(LapseACoeff),kmul(kmsub(ThetaL,ToReal(2),trKL),kadd(ToReal(-1),ToReal(LapseACoeff)))))));
+
+ CCTK_REAL_VEC dtbetaxL;
+ CCTK_REAL_VEC dtbetayL;
+ CCTK_REAL_VEC dtbetazL;
+
+ if (harmonicShift)
+ {
+ dtbetaxL = ToReal(0);
+
+ dtbetayL = ToReal(0);
+
+ dtbetazL = ToReal(0);
+ }
+ else
+ {
+ dtbetaxL =
+ kmul(theta,kmul(kadd(Xt1L,kmadd(ksub(B1L,Xt1L),ToReal(ShiftBCoeff),kmul(beta1L,kmul(eta,kmul(ToReal(BetaDriver),kadd(ToReal(-1),ToReal(ShiftBCoeff))))))),ToReal(ShiftGammaCoeff)));
+
+ dtbetayL =
+ kmul(theta,kmul(kadd(Xt2L,kmadd(ksub(B2L,Xt2L),ToReal(ShiftBCoeff),kmul(beta2L,kmul(eta,kmul(ToReal(BetaDriver),kadd(ToReal(-1),ToReal(ShiftBCoeff))))))),ToReal(ShiftGammaCoeff)));
+
+ dtbetazL =
+ kmul(theta,kmul(kadd(Xt3L,kmadd(ksub(B3L,Xt3L),ToReal(ShiftBCoeff),kmul(beta3L,kmul(eta,kmul(ToReal(BetaDriver),kadd(ToReal(-1),ToReal(ShiftBCoeff))))))),ToReal(ShiftGammaCoeff)));
+ }
+
+ /* Copy local copies back to grid functions */
+ vec_store_partial_prepare(i,lc_imin,lc_imax);
+ vec_store_nta_partial(dtalp[index],dtalpL);
+ vec_store_nta_partial(dtbetax[index],dtbetaxL);
+ vec_store_nta_partial(dtbetay[index],dtbetayL);
+ vec_store_nta_partial(dtbetaz[index],dtbetazL);
+ }
+ LC_ENDLOOP3VEC(ML_CCZ4_convertToADMBaseDtLapseShiftBoundary);
+}
+
+extern "C" void ML_CCZ4_convertToADMBaseDtLapseShiftBoundary(CCTK_ARGUMENTS)
+{
+ DECLARE_CCTK_ARGUMENTS;
+ DECLARE_CCTK_PARAMETERS;
+
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_CCZ4_convertToADMBaseDtLapseShiftBoundary_Body");
+ }
+
+ if (cctk_iteration % ML_CCZ4_convertToADMBaseDtLapseShiftBoundary_calc_every != ML_CCZ4_convertToADMBaseDtLapseShiftBoundary_calc_offset)
+ {
+ return;
+ }
+
+ const char *const groups[] = {
+ "ADMBase::dtlapse",
+ "ADMBase::dtshift",
+ "grid::coordinates",
+ "Grid::coordinates",
+ "ML_CCZ4::ML_dtlapse",
+ "ML_CCZ4::ML_dtshift",
+ "ML_CCZ4::ML_Gamma",
+ "ML_CCZ4::ML_lapse",
+ "ML_CCZ4::ML_shift",
+ "ML_CCZ4::ML_Theta",
+ "ML_CCZ4::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_CCZ4_convertToADMBaseDtLapseShiftBoundary", 11, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
+ GenericFD_LoopOverBoundaryWithGhosts(cctkGH, ML_CCZ4_convertToADMBaseDtLapseShiftBoundary_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_CCZ4_convertToADMBaseDtLapseShiftBoundary_Body");
+ }
+}
diff --git a/ML_CCZ4/src/ML_CCZ4_convertToADMBaseFakeDtLapseShift.cc b/ML_CCZ4/src/ML_CCZ4_convertToADMBaseFakeDtLapseShift.cc
new file mode 100644
index 0000000..8cc59d0
--- /dev/null
+++ b/ML_CCZ4/src/ML_CCZ4_convertToADMBaseFakeDtLapseShift.cc
@@ -0,0 +1,333 @@
+/* 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 "cctk_Loop.h"
+#include "loopcontrol.h"
+#include "vectors.h"
+
+/* Define macros used in calculations */
+#define INITVALUE (42)
+#define QAD(x) (SQR(SQR(x)))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
+
+static void ML_CCZ4_convertToADMBaseFakeDtLapseShift_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const imin[3], int const imax[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+{
+ DECLARE_CCTK_ARGUMENTS;
+ DECLARE_CCTK_PARAMETERS;
+
+
+ /* 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_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const t = ToReal(cctk_time);
+ CCTK_REAL_VEC const dxi = INV(dx);
+ CCTK_REAL_VEC const dyi = INV(dy);
+ CCTK_REAL_VEC const dzi = INV(dz);
+ CCTK_REAL_VEC const khalf = ToReal(0.5);
+ CCTK_REAL_VEC const kthird = ToReal(1.0/3.0);
+ CCTK_REAL_VEC const ktwothird = ToReal(2.0/3.0);
+ CCTK_REAL_VEC const kfourthird = ToReal(4.0/3.0);
+ CCTK_REAL_VEC const keightthird = ToReal(8.0/3.0);
+ CCTK_REAL_VEC const hdxi = kmul(ToReal(0.5), dxi);
+ CCTK_REAL_VEC const hdyi = kmul(ToReal(0.5), dyi);
+ CCTK_REAL_VEC const hdzi = kmul(ToReal(0.5), dzi);
+
+ /* Initialize predefined quantities */
+ CCTK_REAL_VEC const p1o1024dx = kmul(INV(dx),ToReal(0.0009765625));
+ CCTK_REAL_VEC const p1o1024dy = kmul(INV(dy),ToReal(0.0009765625));
+ CCTK_REAL_VEC const p1o1024dz = kmul(INV(dz),ToReal(0.0009765625));
+ CCTK_REAL_VEC const p1o120dx = kmul(INV(dx),ToReal(0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o120dy = kmul(INV(dy),ToReal(0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o120dz = kmul(INV(dz),ToReal(0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dx = kmul(INV(dx),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dy = kmul(INV(dy),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dz = kmul(INV(dz),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o144dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o144dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o144dydz = kmul(INV(kmul(dy,dz)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o1680dx = kmul(INV(dx),ToReal(0.000595238095238095238095238095238));
+ CCTK_REAL_VEC const p1o1680dy = kmul(INV(dy),ToReal(0.000595238095238095238095238095238));
+ CCTK_REAL_VEC const p1o1680dz = kmul(INV(dz),ToReal(0.000595238095238095238095238095238));
+ CCTK_REAL_VEC const p1o16dx = kmul(INV(dx),ToReal(0.0625));
+ CCTK_REAL_VEC const p1o16dy = kmul(INV(dy),ToReal(0.0625));
+ CCTK_REAL_VEC const p1o16dz = kmul(INV(dz),ToReal(0.0625));
+ CCTK_REAL_VEC const p1o180dx2 = kmul(INV(SQR(dx)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o180dy2 = kmul(INV(SQR(dy)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o180dz2 = kmul(INV(SQR(dz)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o24dx = kmul(INV(dx),ToReal(0.0416666666666666666666666666667));
+ CCTK_REAL_VEC const p1o24dy = kmul(INV(dy),ToReal(0.0416666666666666666666666666667));
+ CCTK_REAL_VEC const p1o24dz = kmul(INV(dz),ToReal(0.0416666666666666666666666666667));
+ CCTK_REAL_VEC const p1o256dx = kmul(INV(dx),ToReal(0.00390625));
+ CCTK_REAL_VEC const p1o256dy = kmul(INV(dy),ToReal(0.00390625));
+ CCTK_REAL_VEC const p1o256dz = kmul(INV(dz),ToReal(0.00390625));
+ CCTK_REAL_VEC const p1o2dx = kmul(INV(dx),ToReal(0.5));
+ CCTK_REAL_VEC const p1o2dy = kmul(INV(dy),ToReal(0.5));
+ CCTK_REAL_VEC const p1o2dz = kmul(INV(dz),ToReal(0.5));
+ CCTK_REAL_VEC const p1o3600dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o3600dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o3600dydz = kmul(INV(kmul(dy,dz)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o4dx = kmul(INV(dx),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(kmul(dy,dz)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dz = kmul(INV(dz),ToReal(0.25));
+ CCTK_REAL_VEC const p1o5040dx2 = kmul(INV(SQR(dx)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o5040dy2 = kmul(INV(SQR(dy)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o5040dz2 = kmul(INV(SQR(dz)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o560dx = kmul(INV(dx),ToReal(0.00178571428571428571428571428571));
+ CCTK_REAL_VEC const p1o560dy = kmul(INV(dy),ToReal(0.00178571428571428571428571428571));
+ CCTK_REAL_VEC const p1o560dz = kmul(INV(dz),ToReal(0.00178571428571428571428571428571));
+ CCTK_REAL_VEC const p1o60dx = kmul(INV(dx),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o60dy = kmul(INV(dy),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o60dz = kmul(INV(dz),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o64dx = kmul(INV(dx),ToReal(0.015625));
+ CCTK_REAL_VEC const p1o64dy = kmul(INV(dy),ToReal(0.015625));
+ CCTK_REAL_VEC const p1o64dz = kmul(INV(dz),ToReal(0.015625));
+ CCTK_REAL_VEC const p1o705600dxdy = kmul(INV(kmul(dx,dy)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(kmul(dx,dz)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(kmul(dy,dz)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1odx = INV(dx);
+ CCTK_REAL_VEC const p1odx2 = INV(SQR(dx));
+ CCTK_REAL_VEC const p1ody = INV(dy);
+ CCTK_REAL_VEC const p1ody2 = INV(SQR(dy));
+ CCTK_REAL_VEC const p1odz = INV(dz);
+ CCTK_REAL_VEC const p1odz2 = INV(SQR(dz));
+ CCTK_REAL_VEC const pm1o120dx = kmul(INV(dx),ToReal(-0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o120dy = kmul(INV(dy),ToReal(-0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o120dz = kmul(INV(dz),ToReal(-0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dx2 = kmul(INV(SQR(dx)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dy2 = kmul(INV(SQR(dy)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dz2 = kmul(INV(SQR(dz)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o2dx = kmul(INV(dx),ToReal(-0.5));
+ CCTK_REAL_VEC const pm1o2dy = kmul(INV(dy),ToReal(-0.5));
+ CCTK_REAL_VEC const pm1o2dz = kmul(INV(dz),ToReal(-0.5));
+ CCTK_REAL_VEC const pm1o4dx = kmul(INV(dx),ToReal(-0.25));
+ CCTK_REAL_VEC const pm1o4dy = kmul(INV(dy),ToReal(-0.25));
+ CCTK_REAL_VEC const pm1o4dz = kmul(INV(dz),ToReal(-0.25));
+ CCTK_REAL_VEC const pm1o60dx = kmul(INV(dx),ToReal(-0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const pm1o60dy = kmul(INV(dy),ToReal(-0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const pm1o60dz = kmul(INV(dz),ToReal(-0.0166666666666666666666666666667));
+
+ /* 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;
+
+ /* Assign local copies of arrays functions */
+
+
+
+ /* Calculate temporaries and arrays functions */
+
+ /* Copy local copies back to grid functions */
+
+ /* Loop over the grid points */
+ #pragma omp parallel
+ LC_LOOP3VEC(ML_CCZ4_convertToADMBaseFakeDtLapseShift,
+ i,j,k, imin[0],imin[1],imin[2], imax[0],imax[1],imax[2],
+ cctk_lsh[0],cctk_lsh[1],cctk_lsh[2],
+ CCTK_REAL_VEC_SIZE)
+ {
+ ptrdiff_t const index = di*i + dj*j + dk*k;
+
+ /* Assign local copies of grid functions */
+
+ CCTK_REAL_VEC AL = vec_load(A[index]);
+ CCTK_REAL_VEC alphaL = vec_load(alpha[index]);
+ CCTK_REAL_VEC B1L = vec_load(B1[index]);
+ CCTK_REAL_VEC B2L = vec_load(B2[index]);
+ CCTK_REAL_VEC B3L = vec_load(B3[index]);
+ CCTK_REAL_VEC beta1L = vec_load(beta1[index]);
+ CCTK_REAL_VEC beta2L = vec_load(beta2[index]);
+ CCTK_REAL_VEC beta3L = vec_load(beta3[index]);
+ CCTK_REAL_VEC rL = vec_load(r[index]);
+ CCTK_REAL_VEC ThetaL = vec_load(Theta[index]);
+ CCTK_REAL_VEC trKL = vec_load(trK[index]);
+ CCTK_REAL_VEC Xt1L = vec_load(Xt1[index]);
+ CCTK_REAL_VEC Xt2L = vec_load(Xt2[index]);
+ CCTK_REAL_VEC Xt3L = vec_load(Xt3[index]);
+
+
+
+ /* Include user supplied include files */
+
+ /* Precompute derivatives */
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
+ /* Calculate temporaries and grid functions */
+ CCTK_REAL_VEC eta =
+ kmul(INV(kfmax(rL,ToReal(SpatialBetaDriverRadius))),ToReal(SpatialBetaDriverRadius));
+
+ CCTK_REAL_VEC theta =
+ kfmin(ToReal(1),kexp(knmsub(rL,INV(ToReal(SpatialShiftGammaCoeffRadius)),ToReal(1))));
+
+ CCTK_REAL_VEC dtalpL =
+ kneg(kmul(kpow(alphaL,harmonicN),kmul(ToReal(harmonicF),kmadd(AL,ToReal(LapseACoeff),kmul(kmsub(ThetaL,ToReal(2),trKL),kadd(ToReal(-1),ToReal(LapseACoeff)))))));
+
+ CCTK_REAL_VEC dtbetaxL;
+ CCTK_REAL_VEC dtbetayL;
+ CCTK_REAL_VEC dtbetazL;
+
+ if (harmonicShift)
+ {
+ dtbetaxL = ToReal(0);
+
+ dtbetayL = ToReal(0);
+
+ dtbetazL = ToReal(0);
+ }
+ else
+ {
+ dtbetaxL =
+ kmul(theta,kmul(kadd(Xt1L,kmadd(ksub(B1L,Xt1L),ToReal(ShiftBCoeff),kmul(beta1L,kmul(eta,kmul(ToReal(BetaDriver),kadd(ToReal(-1),ToReal(ShiftBCoeff))))))),ToReal(ShiftGammaCoeff)));
+
+ dtbetayL =
+ kmul(theta,kmul(kadd(Xt2L,kmadd(ksub(B2L,Xt2L),ToReal(ShiftBCoeff),kmul(beta2L,kmul(eta,kmul(ToReal(BetaDriver),kadd(ToReal(-1),ToReal(ShiftBCoeff))))))),ToReal(ShiftGammaCoeff)));
+
+ dtbetazL =
+ kmul(theta,kmul(kadd(Xt3L,kmadd(ksub(B3L,Xt3L),ToReal(ShiftBCoeff),kmul(beta3L,kmul(eta,kmul(ToReal(BetaDriver),kadd(ToReal(-1),ToReal(ShiftBCoeff))))))),ToReal(ShiftGammaCoeff)));
+ }
+
+ /* Copy local copies back to grid functions */
+ vec_store_partial_prepare(i,lc_imin,lc_imax);
+ vec_store_nta_partial(dtalp[index],dtalpL);
+ vec_store_nta_partial(dtbetax[index],dtbetaxL);
+ vec_store_nta_partial(dtbetay[index],dtbetayL);
+ vec_store_nta_partial(dtbetaz[index],dtbetazL);
+ }
+ LC_ENDLOOP3VEC(ML_CCZ4_convertToADMBaseFakeDtLapseShift);
+}
+
+extern "C" void ML_CCZ4_convertToADMBaseFakeDtLapseShift(CCTK_ARGUMENTS)
+{
+ DECLARE_CCTK_ARGUMENTS;
+ DECLARE_CCTK_PARAMETERS;
+
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_CCZ4_convertToADMBaseFakeDtLapseShift_Body");
+ }
+
+ if (cctk_iteration % ML_CCZ4_convertToADMBaseFakeDtLapseShift_calc_every != ML_CCZ4_convertToADMBaseFakeDtLapseShift_calc_offset)
+ {
+ return;
+ }
+
+ const char *const groups[] = {
+ "ADMBase::dtlapse",
+ "ADMBase::dtshift",
+ "grid::coordinates",
+ "Grid::coordinates",
+ "ML_CCZ4::ML_dtlapse",
+ "ML_CCZ4::ML_dtshift",
+ "ML_CCZ4::ML_Gamma",
+ "ML_CCZ4::ML_lapse",
+ "ML_CCZ4::ML_shift",
+ "ML_CCZ4::ML_Theta",
+ "ML_CCZ4::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_CCZ4_convertToADMBaseFakeDtLapseShift", 11, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
+ GenericFD_LoopOverEverything(cctkGH, ML_CCZ4_convertToADMBaseFakeDtLapseShift_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_CCZ4_convertToADMBaseFakeDtLapseShift_Body");
+ }
+}
diff --git a/ML_CCZ4/src/ML_CCZ4_enforce.cc b/ML_CCZ4/src/ML_CCZ4_enforce.cc
new file mode 100644
index 0000000..15f88d2
--- /dev/null
+++ b/ML_CCZ4/src/ML_CCZ4_enforce.cc
@@ -0,0 +1,337 @@
+/* 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 "cctk_Loop.h"
+#include "loopcontrol.h"
+#include "vectors.h"
+
+/* Define macros used in calculations */
+#define INITVALUE (42)
+#define QAD(x) (SQR(SQR(x)))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
+
+static void ML_CCZ4_enforce_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const imin[3], int const imax[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+{
+ DECLARE_CCTK_ARGUMENTS;
+ DECLARE_CCTK_PARAMETERS;
+
+
+ /* 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_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const t = ToReal(cctk_time);
+ CCTK_REAL_VEC const dxi = INV(dx);
+ CCTK_REAL_VEC const dyi = INV(dy);
+ CCTK_REAL_VEC const dzi = INV(dz);
+ CCTK_REAL_VEC const khalf = ToReal(0.5);
+ CCTK_REAL_VEC const kthird = ToReal(1.0/3.0);
+ CCTK_REAL_VEC const ktwothird = ToReal(2.0/3.0);
+ CCTK_REAL_VEC const kfourthird = ToReal(4.0/3.0);
+ CCTK_REAL_VEC const keightthird = ToReal(8.0/3.0);
+ CCTK_REAL_VEC const hdxi = kmul(ToReal(0.5), dxi);
+ CCTK_REAL_VEC const hdyi = kmul(ToReal(0.5), dyi);
+ CCTK_REAL_VEC const hdzi = kmul(ToReal(0.5), dzi);
+
+ /* Initialize predefined quantities */
+ CCTK_REAL_VEC const p1o1024dx = kmul(INV(dx),ToReal(0.0009765625));
+ CCTK_REAL_VEC const p1o1024dy = kmul(INV(dy),ToReal(0.0009765625));
+ CCTK_REAL_VEC const p1o1024dz = kmul(INV(dz),ToReal(0.0009765625));
+ CCTK_REAL_VEC const p1o120dx = kmul(INV(dx),ToReal(0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o120dy = kmul(INV(dy),ToReal(0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o120dz = kmul(INV(dz),ToReal(0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dx = kmul(INV(dx),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dy = kmul(INV(dy),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dz = kmul(INV(dz),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o144dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o144dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o144dydz = kmul(INV(kmul(dy,dz)),ToReal(0.00694444444444444444444444444444));
+ CCTK_REAL_VEC const p1o1680dx = kmul(INV(dx),ToReal(0.000595238095238095238095238095238));
+ CCTK_REAL_VEC const p1o1680dy = kmul(INV(dy),ToReal(0.000595238095238095238095238095238));
+ CCTK_REAL_VEC const p1o1680dz = kmul(INV(dz),ToReal(0.000595238095238095238095238095238));
+ CCTK_REAL_VEC const p1o16dx = kmul(INV(dx),ToReal(0.0625));
+ CCTK_REAL_VEC const p1o16dy = kmul(INV(dy),ToReal(0.0625));
+ CCTK_REAL_VEC const p1o16dz = kmul(INV(dz),ToReal(0.0625));
+ CCTK_REAL_VEC const p1o180dx2 = kmul(INV(SQR(dx)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o180dy2 = kmul(INV(SQR(dy)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o180dz2 = kmul(INV(SQR(dz)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o24dx = kmul(INV(dx),ToReal(0.0416666666666666666666666666667));
+ CCTK_REAL_VEC const p1o24dy = kmul(INV(dy),ToReal(0.0416666666666666666666666666667));
+ CCTK_REAL_VEC const p1o24dz = kmul(INV(dz),ToReal(0.0416666666666666666666666666667));
+ CCTK_REAL_VEC const p1o256dx = kmul(INV(dx),ToReal(0.00390625));
+ CCTK_REAL_VEC const p1o256dy = kmul(INV(dy),ToReal(0.00390625));
+ CCTK_REAL_VEC const p1o256dz = kmul(INV(dz),ToReal(0.00390625));
+ CCTK_REAL_VEC const p1o2dx = kmul(INV(dx),ToReal(0.5));
+ CCTK_REAL_VEC const p1o2dy = kmul(INV(dy),ToReal(0.5));
+ CCTK_REAL_VEC const p1o2dz = kmul(INV(dz),ToReal(0.5));
+ CCTK_REAL_VEC const p1o3600dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o3600dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o3600dydz = kmul(INV(kmul(dy,dz)),ToReal(0.000277777777777777777777777777778));
+ CCTK_REAL_VEC const p1o4dx = kmul(INV(dx),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dxdy = kmul(INV(kmul(dx,dy)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dxdz = kmul(INV(kmul(dx,dz)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(kmul(dy,dz)),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dz = kmul(INV(dz),ToReal(0.25));
+ CCTK_REAL_VEC const p1o5040dx2 = kmul(INV(SQR(dx)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o5040dy2 = kmul(INV(SQR(dy)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o5040dz2 = kmul(INV(SQR(dz)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o560dx = kmul(INV(dx),ToReal(0.00178571428571428571428571428571));
+ CCTK_REAL_VEC const p1o560dy = kmul(INV(dy),ToReal(0.00178571428571428571428571428571));
+ CCTK_REAL_VEC const p1o560dz = kmul(INV(dz),ToReal(0.00178571428571428571428571428571));
+ CCTK_REAL_VEC const p1o60dx = kmul(INV(dx),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o60dy = kmul(INV(dy),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o60dz = kmul(INV(dz),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o64dx = kmul(INV(dx),ToReal(0.015625));
+ CCTK_REAL_VEC const p1o64dy = kmul(INV(dy),ToReal(0.015625));
+ CCTK_REAL_VEC const p1o64dz = kmul(INV(dz),ToReal(0.015625));
+ CCTK_REAL_VEC const p1o705600dxdy = kmul(INV(kmul(dx,dy)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(kmul(dx,dz)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(kmul(dy,dz)),ToReal(1.41723356009070294784580498866e-6));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1odx = INV(dx);
+ CCTK_REAL_VEC const p1odx2 = INV(SQR(dx));
+ CCTK_REAL_VEC const p1ody = INV(dy);
+ CCTK_REAL_VEC const p1ody2 = INV(SQR(dy));
+ CCTK_REAL_VEC const p1odz = INV(dz);
+ CCTK_REAL_VEC const p1odz2 = INV(SQR(dz));
+ CCTK_REAL_VEC const pm1o120dx = kmul(INV(dx),ToReal(-0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o120dy = kmul(INV(dy),ToReal(-0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o120dz = kmul(INV(dz),ToReal(-0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dx2 = kmul(INV(SQR(dx)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dy2 = kmul(INV(SQR(dy)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dz2 = kmul(INV(SQR(dz)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o2dx = kmul(INV(dx),ToReal(-0.5));
+ CCTK_REAL_VEC const pm1o2dy = kmul(INV(dy),ToReal(-0.5));
+ CCTK_REAL_VEC const pm1o2dz = kmul(INV(dz),ToReal(-0.5));
+ CCTK_REAL_VEC const pm1o4dx = kmul(INV(dx),ToReal(-0.25));
+ CCTK_REAL_VEC const pm1o4dy = kmul(INV(dy),ToReal(-0.25));
+ CCTK_REAL_VEC const pm1o4dz = kmul(INV(dz),ToReal(-0.25));
+ CCTK_REAL_VEC const pm1o60dx = kmul(INV(dx),ToReal(-0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const pm1o60dy = kmul(INV(dy),ToReal(-0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const pm1o60dz = kmul(INV(dz),ToReal(-0.0166666666666666666666666666667));
+
+ /* 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;
+
+ /* Assign local copies of arrays functions */
+
+
+
+ /* Calculate temporaries and arrays functions */
+
+ /* Copy local copies back to grid functions */
+
+ /* Loop over the grid points */
+ #pragma omp parallel
+ LC_LOOP3VEC(ML_CCZ4_enforce,
+ i,j,k, imin[0],imin[1],imin[2], imax[0],imax[1],imax[2],
+ cctk_lsh[0],cctk_lsh[1],cctk_lsh[2],
+ CCTK_REAL_VEC_SIZE)
+ {
+ ptrdiff_t const index = di*i + dj*j + dk*k;
+
+ /* Assign local copies of grid functions */
+
+ CCTK_REAL_VEC alphaL = vec_load(alpha[index]);
+ CCTK_REAL_VEC At11L = vec_load(At11[index]);
+ CCTK_REAL_VEC At12L = vec_load(At12[index]);
+ CCTK_REAL_VEC At13L = vec_load(At13[index]);
+ CCTK_REAL_VEC At22L = vec_load(At22[index]);
+ CCTK_REAL_VEC At23L = vec_load(At23[index]);
+ CCTK_REAL_VEC At33L = vec_load(At33[index]);
+ CCTK_REAL_VEC gt11L = vec_load(gt11[index]);
+ CCTK_REAL_VEC gt12L = vec_load(gt12[index]);
+ CCTK_REAL_VEC gt13L = vec_load(gt13[index]);
+ CCTK_REAL_VEC gt22L = vec_load(gt22[index]);
+ CCTK_REAL_VEC gt23L = vec_load(gt23[index]);
+ CCTK_REAL_VEC gt33L = vec_load(gt33[index]);
+
+
+
+ /* Include user supplied include files */
+
+ /* Precompute derivatives */
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
+ /* Calculate temporaries and grid functions */
+ CCTK_REAL_VEC detgt = ToReal(1);
+
+ CCTK_REAL_VEC gtu11 =
+ kmul(INV(detgt),kmsub(gt22L,gt33L,SQR(gt23L)));
+
+ CCTK_REAL_VEC gtu12 =
+ kmul(INV(detgt),kmsub(gt13L,gt23L,kmul(gt12L,gt33L)));
+
+ CCTK_REAL_VEC gtu13 =
+ kmul(INV(detgt),kmsub(gt12L,gt23L,kmul(gt13L,gt22L)));
+
+ CCTK_REAL_VEC gtu22 =
+ kmul(INV(detgt),kmsub(gt11L,gt33L,SQR(gt13L)));
+
+ CCTK_REAL_VEC gtu23 =
+ kmul(INV(detgt),kmsub(gt12L,gt13L,kmul(gt11L,gt23L)));
+
+ CCTK_REAL_VEC gtu33 =
+ kmul(INV(detgt),kmsub(gt11L,gt22L,SQR(gt12L)));
+
+ CCTK_REAL_VEC trAt =
+ kmadd(At11L,gtu11,kmadd(At22L,gtu22,kmadd(At33L,gtu33,kmul(kmadd(At12L,gtu12,kmadd(At13L,gtu13,kmul(At23L,gtu23))),ToReal(2)))));
+
+ At11L =
+ kmadd(gt11L,kmul(trAt,ToReal(-0.333333333333333333333333333333)),At11L);
+
+ At12L =
+ kmadd(gt12L,kmul(trAt,ToReal(-0.333333333333333333333333333333)),At12L);
+
+ At13L =
+ kmadd(gt13L,kmul(trAt,ToReal(-0.333333333333333333333333333333)),At13L);
+
+ At22L =
+ kmadd(gt22L,kmul(trAt,ToReal(-0.333333333333333333333333333333)),At22L);
+
+ At23L =
+ kmadd(gt23L,kmul(trAt,ToReal(-0.333333333333333333333333333333)),At23L);
+
+ At33L =
+ kmadd(gt33L,kmul(trAt,ToReal(-0.333333333333333333333333333333)),At33L);
+
+ alphaL = kfmax(alphaL,ToReal(MinimumLapse));
+
+ /* Copy local copies back to grid functions */
+ vec_store_partial_prepare(i,lc_imin,lc_imax);
+ vec_store_nta_partial(alpha[index],alphaL);
+ vec_store_nta_partial(At11[index],At11L);
+ vec_store_nta_partial(At12[index],At12L);
+ vec_store_nta_partial(At13[index],At13L);
+ vec_store_nta_partial(At22[index],At22L);
+ vec_store_nta_partial(At23[index],At23L);
+ vec_store_nta_partial(At33[index],At33L);
+ }
+ LC_ENDLOOP3VEC(ML_CCZ4_enforce);
+}
+
+extern "C" void ML_CCZ4_enforce(CCTK_ARGUMENTS)
+{
+ DECLARE_CCTK_ARGUMENTS;
+ DECLARE_CCTK_PARAMETERS;
+
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_CCZ4_enforce_Body");
+ }
+
+ if (cctk_iteration % ML_CCZ4_enforce_calc_every != ML_CCZ4_enforce_calc_offset)
+ {
+ return;
+ }
+
+ const char *const groups[] = {
+ "ML_CCZ4::ML_curv",
+ "ML_CCZ4::ML_lapse",
+ "ML_CCZ4::ML_metric"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_CCZ4_enforce", 3, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
+ GenericFD_LoopOverEverything(cctkGH, ML_CCZ4_enforce_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_CCZ4_enforce_Body");
+ }
+}
diff --git a/ML_CCZ4/src/RegisterMoL.cc b/ML_CCZ4/src/RegisterMoL.cc
new file mode 100644
index 0000000..27e74a3
--- /dev/null
+++ b/ML_CCZ4/src/RegisterMoL.cc
@@ -0,0 +1,44 @@
+/* File produced by Kranc */
+
+#include "cctk.h"
+#include "cctk_Arguments.h"
+#include "cctk_Parameters.h"
+
+extern "C" void ML_CCZ4_RegisterVars(CCTK_ARGUMENTS)
+{
+ DECLARE_CCTK_ARGUMENTS;
+ DECLARE_CCTK_PARAMETERS;
+
+ CCTK_INT ierr = 0;
+
+ /* Register all the evolved grid functions with MoL */
+ ierr += MoLRegisterEvolved(CCTK_VarIndex("ML_CCZ4::At11"), CCTK_VarIndex("ML_CCZ4::At11rhs"));
+ ierr += MoLRegisterEvolved(CCTK_VarIndex("ML_CCZ4::At12"), CCTK_VarIndex("ML_CCZ4::At12rhs"));
+ ierr += MoLRegisterEvolved(CCTK_VarIndex("ML_CCZ4::At13"), CCTK_VarIndex("ML_CCZ4::At13rhs"));
+ ierr += MoLRegisterEvolved(CCTK_VarIndex("ML_CCZ4::At22"), CCTK_VarIndex("ML_CCZ4::At22rhs"));
+ ierr += MoLRegisterEvolved(CCTK_VarIndex("ML_CCZ4::At23"), CCTK_VarIndex("ML_CCZ4::At23rhs"));
+ ierr += MoLRegisterEvolved(CCTK_VarIndex("ML_CCZ4::At33"), CCTK_VarIndex("ML_CCZ4::At33rhs"));
+ ierr += MoLRegisterEvolved(CCTK_VarIndex("ML_CCZ4::A"), CCTK_VarIndex("ML_CCZ4::Arhs"));
+ ierr += MoLRegisterEvolved(CCTK_VarIndex("ML_CCZ4::B1"), CCTK_VarIndex("ML_CCZ4::B1rhs"));
+ ierr += MoLRegisterEvolved(CCTK_VarIndex("ML_CCZ4::B2"), CCTK_VarIndex("ML_CCZ4::B2rhs"));
+ ierr += MoLRegisterEvolved(CCTK_VarIndex("ML_CCZ4::B3"), CCTK_VarIndex("ML_CCZ4::B3rhs"));
+ ierr += MoLRegisterEvolved(CCTK_VarIndex("ML_CCZ4::Xt1"), CCTK_VarIndex("ML_CCZ4::Xt1rhs"));
+ ierr += MoLRegisterEvolved(CCTK_VarIndex("ML_CCZ4::Xt2"), CCTK_VarIndex("ML_CCZ4::Xt2rhs"));
+ ierr += MoLRegisterEvolved(CCTK_VarIndex("ML_CCZ4::Xt3"), CCTK_VarIndex("ML_CCZ4::Xt3rhs"));
+ ierr += MoLRegisterEvolved(CCTK_VarIndex("ML_CCZ4::alpha"), CCTK_VarIndex("ML_CCZ4::alpharhs"));
+ ierr += MoLRegisterEvolved(CCTK_VarIndex("ML_CCZ4::phi"), CCTK_VarIndex("ML_CCZ4::phirhs"));
+ ierr += MoLRegisterEvolved(CCTK_VarIndex("ML_CCZ4::gt11"), CCTK_VarIndex("ML_CCZ4::gt11rhs"));
+ ierr += MoLRegisterEvolved(CCTK_VarIndex("ML_CCZ4::gt12"), CCTK_VarIndex("ML_CCZ4::gt12rhs"));
+ ierr += MoLRegisterEvolved(CCTK_VarIndex("ML_CCZ4::gt13"), CCTK_VarIndex("ML_CCZ4::gt13rhs"));
+ ierr += MoLRegisterEvolved(CCTK_VarIndex("ML_CCZ4::gt22"), CCTK_VarIndex("ML_CCZ4::gt22rhs"));
+ ierr += MoLRegisterEvolved(CCTK_VarIndex("ML_CCZ4::gt23"), CCTK_VarIndex("ML_CCZ4::gt23rhs"));
+ ierr += MoLRegisterEvolved(CCTK_VarIndex("ML_CCZ4::gt33"), CCTK_VarIndex("ML_CCZ4::gt33rhs"));
+ ierr += MoLRegisterEvolved(CCTK_VarIndex("ML_CCZ4::beta1"), CCTK_VarIndex("ML_CCZ4::beta1rhs"));
+ ierr += MoLRegisterEvolved(CCTK_VarIndex("ML_CCZ4::beta2"), CCTK_VarIndex("ML_CCZ4::beta2rhs"));
+ ierr += MoLRegisterEvolved(CCTK_VarIndex("ML_CCZ4::beta3"), CCTK_VarIndex("ML_CCZ4::beta3rhs"));
+ ierr += MoLRegisterEvolved(CCTK_VarIndex("ML_CCZ4::Theta"), CCTK_VarIndex("ML_CCZ4::Thetarhs"));
+ ierr += MoLRegisterEvolved(CCTK_VarIndex("ML_CCZ4::trK"), CCTK_VarIndex("ML_CCZ4::trKrhs"));
+
+ /* Register all the evolved Array functions with MoL */
+ return;
+}
diff --git a/ML_CCZ4/src/RegisterSymmetries.cc b/ML_CCZ4/src/RegisterSymmetries.cc
new file mode 100644
index 0000000..eef4c88
--- /dev/null
+++ b/ML_CCZ4/src/RegisterSymmetries.cc
@@ -0,0 +1,194 @@
+/* File produced by Kranc */
+
+#include "cctk.h"
+#include "cctk_Arguments.h"
+#include "cctk_Parameters.h"
+#include "Symmetry.h"
+
+extern "C" void ML_CCZ4_RegisterSymmetries(CCTK_ARGUMENTS)
+{
+ DECLARE_CCTK_ARGUMENTS;
+ DECLARE_CCTK_PARAMETERS;
+
+
+ /* array holding symmetry definitions */
+ CCTK_INT sym[3];
+
+
+ /* Register symmetries of grid functions */
+ sym[0] = 1;
+ sym[1] = 1;
+ sym[2] = 1;
+ SetCartSymVN(cctkGH, sym, "ML_CCZ4::At11");
+
+ sym[0] = -1;
+ sym[1] = -1;
+ sym[2] = 1;
+ SetCartSymVN(cctkGH, sym, "ML_CCZ4::At12");
+
+ sym[0] = -1;
+ sym[1] = 1;
+ sym[2] = -1;
+ SetCartSymVN(cctkGH, sym, "ML_CCZ4::At13");
+
+ sym[0] = 1;
+ sym[1] = 1;
+ sym[2] = 1;
+ SetCartSymVN(cctkGH, sym, "ML_CCZ4::At22");
+
+ sym[0] = 1;
+ sym[1] = -1;
+ sym[2] = -1;
+ SetCartSymVN(cctkGH, sym, "ML_CCZ4::At23");
+
+ sym[0] = 1;
+ sym[1] = 1;
+ sym[2] = 1;
+ SetCartSymVN(cctkGH, sym, "ML_CCZ4::At33");
+
+ sym[0] = 1;
+ sym[1] = 1;
+ sym[2] = 1;
+ SetCartSymVN(cctkGH, sym, "ML_CCZ4::A");
+
+ sym[0] = -1;
+ sym[1] = 1;
+ sym[2] = 1;
+ SetCartSymVN(cctkGH, sym, "ML_CCZ4::B1");
+
+ sym[0] = 1;
+ sym[1] = -1;
+ sym[2] = 1;
+ SetCartSymVN(cctkGH, sym, "ML_CCZ4::B2");
+
+ sym[0] = 1;
+ sym[1] = 1;
+ sym[2] = -1;
+ SetCartSymVN(cctkGH, sym, "ML_CCZ4::B3");
+
+ sym[0] = -1;
+ sym[1] = 1;
+ sym[2] = 1;
+ SetCartSymVN(cctkGH, sym, "ML_CCZ4::Xt1");
+
+ sym[0] = 1;
+ sym[1] = -1;
+ sym[2] = 1;
+ SetCartSymVN(cctkGH, sym, "ML_CCZ4::Xt2");
+
+ sym[0] = 1;
+ sym[1] = 1;
+ sym[2] = -1;
+ SetCartSymVN(cctkGH, sym, "ML_CCZ4::Xt3");
+
+ sym[0] = 1;
+ sym[1] = 1;
+ sym[2] = 1;
+ SetCartSymVN(cctkGH, sym, "ML_CCZ4::alpha");
+
+ sym[0] = 1;
+ sym[1] = 1;
+ sym[2] = 1;
+ SetCartSymVN(cctkGH, sym, "ML_CCZ4::phi");
+
+ sym[0] = 1;
+ sym[1] = 1;
+ sym[2] = 1;
+ SetCartSymVN(cctkGH, sym, "ML_CCZ4::gt11");
+
+ sym[0] = -1;
+ sym[1] = -1;
+ sym[2] = 1;
+ SetCartSymVN(cctkGH, sym, "ML_CCZ4::gt12");
+
+ sym[0] = -1;
+ sym[1] = 1;
+ sym[2] = -1;
+ SetCartSymVN(cctkGH, sym, "ML_CCZ4::gt13");
+
+ sym[0] = 1;
+ sym[1] = 1;
+ sym[2] = 1;
+ SetCartSymVN(cctkGH, sym, "ML_CCZ4::gt22");
+
+ sym[0] = 1;
+ sym[1] = -1;
+ sym[2] = -1;
+ SetCartSymVN(cctkGH, sym, "ML_CCZ4::gt23");
+
+ sym[0] = 1;
+ sym[1] = 1;
+ sym[2] = 1;
+ SetCartSymVN(cctkGH, sym, "ML_CCZ4::gt33");
+
+ sym[0] = -1;
+ sym[1] = 1;
+ sym[2] = 1;
+ SetCartSymVN(cctkGH, sym, "ML_CCZ4::beta1");
+
+ sym[0] = 1;
+ sym[1] = -1;
+ sym[2] = 1;
+ SetCartSymVN(cctkGH, sym, "ML_CCZ4::beta2");
+
+ sym[0] = 1;
+ sym[1] = 1;
+ sym[2] = -1;
+ SetCartSymVN(cctkGH, sym, "ML_CCZ4::beta3");
+
+ sym[0] = 1;
+ sym[1] = 1;
+ sym[2] = 1;
+ SetCartSymVN(cctkGH, sym, "ML_CCZ4::Theta");
+
+ sym[0] = 1;
+ sym[1] = 1;
+ sym[2] = 1;
+ SetCartSymVN(cctkGH, sym, "ML_CCZ4::trK");
+
+ sym[0] = 1;
+ sym[1] = 1;
+ sym[2] = 1;
+ SetCartSymVN(cctkGH, sym, "ML_CCZ4::cS");
+
+ sym[0] = -1;
+ sym[1] = 1;
+ sym[2] = 1;
+ SetCartSymVN(cctkGH, sym, "ML_CCZ4::cXt1");
+
+ sym[0] = 1;
+ sym[1] = -1;
+ sym[2] = 1;
+ SetCartSymVN(cctkGH, sym, "ML_CCZ4::cXt2");
+
+ sym[0] = 1;
+ sym[1] = 1;
+ sym[2] = -1;
+ SetCartSymVN(cctkGH, sym, "ML_CCZ4::cXt3");
+
+ sym[0] = 1;
+ sym[1] = 1;
+ sym[2] = 1;
+ SetCartSymVN(cctkGH, sym, "ML_CCZ4::cA");
+
+ sym[0] = 1;
+ sym[1] = 1;
+ sym[2] = 1;
+ SetCartSymVN(cctkGH, sym, "ML_CCZ4::H");
+
+ sym[0] = -1;
+ sym[1] = 1;
+ sym[2] = 1;
+ SetCartSymVN(cctkGH, sym, "ML_CCZ4::M1");
+
+ sym[0] = 1;
+ sym[1] = -1;
+ sym[2] = 1;
+ SetCartSymVN(cctkGH, sym, "ML_CCZ4::M2");
+
+ sym[0] = 1;
+ sym[1] = 1;
+ sym[2] = -1;
+ SetCartSymVN(cctkGH, sym, "ML_CCZ4::M3");
+
+}
diff --git a/ML_CCZ4/src/Startup.cc b/ML_CCZ4/src/Startup.cc
new file mode 100644
index 0000000..094d242
--- /dev/null
+++ b/ML_CCZ4/src/Startup.cc
@@ -0,0 +1,10 @@
+/* File produced by Kranc */
+
+#include "cctk.h"
+
+extern "C" int ML_CCZ4_Startup(void)
+{
+ const char * banner = "ML_CCZ4";
+ CCTK_RegisterBanner(banner);
+ return 0;
+}
diff --git a/ML_CCZ4/src/make.code.defn b/ML_CCZ4/src/make.code.defn
new file mode 100644
index 0000000..8bb1a0f
--- /dev/null
+++ b/ML_CCZ4/src/make.code.defn
@@ -0,0 +1,3 @@
+# File produced by Kranc
+
+SRCS = Startup.cc RegisterSymmetries.cc RegisterMoL.cc ML_CCZ4_Minkowski.cc ML_CCZ4_convertFromADMBase.cc ML_CCZ4_InitGamma.cc ML_CCZ4_convertFromADMBaseGamma.cc ML_CCZ4_RHS1.cc ML_CCZ4_RHS2.cc ML_CCZ4_Dissipation.cc ML_CCZ4_Advect.cc ML_CCZ4_InitRHS.cc ML_CCZ4_RHSStaticBoundary.cc ML_CCZ4_enforce.cc ML_CCZ4_boundary.cc ML_CCZ4_convertToADMBase.cc ML_CCZ4_convertToADMBaseDtLapseShift.cc ML_CCZ4_convertToADMBaseDtLapseShiftBoundary.cc ML_CCZ4_convertToADMBaseFakeDtLapseShift.cc ML_CCZ4_constraints1.cc ML_CCZ4_constraints2.cc Boundaries.cc
diff --git a/ML_CCZ4_Helper/configuration.ccl b/ML_CCZ4_Helper/configuration.ccl
new file mode 100644
index 0000000..edaa5b7
--- /dev/null
+++ b/ML_CCZ4_Helper/configuration.ccl
@@ -0,0 +1 @@
+REQUIRES THORNS: CartGrid3D CoordGauge
diff --git a/ML_CCZ4_Helper/interface.ccl b/ML_CCZ4_Helper/interface.ccl
new file mode 100644
index 0000000..9b2864f
--- /dev/null
+++ b/ML_CCZ4_Helper/interface.ccl
@@ -0,0 +1,38 @@
+IMPLEMENTS: ML_CCZ4_Helper
+
+INHERITS: ADMBase CoordGauge ML_CCZ4
+
+USES INCLUDE: Slicing.h
+USES INCLUDE: Symmetry.h
+
+
+
+CCTK_INT FUNCTION MoLRegisterConstrainedGroup \
+ (CCTK_INT IN ConstrainedIndex)
+USES FUNCTION MoLRegisterConstrainedGroup
+
+CCTK_INT FUNCTION \
+ Boundary_SelectGroupForBC \
+ (CCTK_POINTER_TO_CONST IN cctkGH, \
+ CCTK_INT IN faces, \
+ CCTK_INT IN boundary_width, \
+ CCTK_INT IN table_handle, \
+ CCTK_STRING IN group_name, \
+ CCTK_STRING IN bc_name)
+USES FUNCTION Boundary_SelectGroupForBC
+
+CCTK_INT FUNCTION \
+ ExtrapolateGammas \
+ (CCTK_POINTER_TO_CONST IN cctkGH, \
+ CCTK_REAL ARRAY INOUT var)
+USES FUNCTION ExtrapolateGammas
+
+CCTK_INT FUNCTION \
+ NewRad_Apply \
+ (CCTK_POINTER_TO_CONST IN cctkGH, \
+ CCTK_REAL ARRAY IN var, \
+ CCTK_REAL ARRAY INOUT rhs, \
+ CCTK_REAL IN var0, \
+ CCTK_REAL IN v0, \
+ CCTK_INT IN radpower)
+USES FUNCTION NewRad_Apply
diff --git a/ML_CCZ4_Helper/param.ccl b/ML_CCZ4_Helper/param.ccl
new file mode 100644
index 0000000..8ede1a2
--- /dev/null
+++ b/ML_CCZ4_Helper/param.ccl
@@ -0,0 +1,39 @@
+SHARES: Boundary
+
+USES CCTK_INT radpower
+
+SHARES: MethodofLines
+
+USES CCTK_INT MoL_Num_Constrained_Vars
+
+SHARES: ADMBase
+
+USES KEYWORD evolution_method
+
+SHARES: GenericFD
+
+USES CCTK_INT boundary_width
+
+SHARES: ML_CCZ4
+
+USES CCTK_INT timelevels
+USES CCTK_INT rhs_timelevels
+USES KEYWORD calculate_ADMBase_variables_at
+
+USES CCTK_REAL harmonicF
+
+EXTENDS KEYWORD my_initial_boundary_condition
+{
+ "extrapolate-gammas" :: "extrapolate-gammas"
+}
+EXTENDS KEYWORD my_rhs_boundary_condition
+{
+ "NewRad" :: "NewRad"
+}
+
+PRIVATE:
+
+CCTK_INT ML_CCZ4_MaxNumConstrainedVars "Number of constrained variables used by this thorn" ACCUMULATOR-BASE=MethodofLines::MoL_Num_Constrained_Vars
+{
+ 20:20 :: "Number of constrained variables used by this thorn"
+} 20
diff --git a/ML_CCZ4_Helper/schedule.ccl b/ML_CCZ4_Helper/schedule.ccl
new file mode 100644
index 0000000..7e95150
--- /dev/null
+++ b/ML_CCZ4_Helper/schedule.ccl
@@ -0,0 +1,161 @@
+if (CCTK_EQUALS (evolution_method, "ML_CCZ4")) {
+
+ if (timelevels == 1) {
+ STORAGE: ADMBase::metric[1]
+ STORAGE: ADMBase::curv[1]
+ STORAGE: ADMBase::lapse[1]
+ STORAGE: ADMBase::shift[1]
+ STORAGE: ADMBase::dtlapse[1]
+ STORAGE: ADMBase::dtshift[1]
+ } else if (timelevels == 2) {
+ STORAGE: ADMBase::metric[2]
+ STORAGE: ADMBase::curv[2]
+ STORAGE: ADMBase::lapse[2]
+ STORAGE: ADMBase::shift[2]
+ STORAGE: ADMBase::dtlapse[2]
+ STORAGE: ADMBase::dtshift[2]
+ } else if (timelevels == 3) {
+ STORAGE: ADMBase::metric[3]
+ STORAGE: ADMBase::curv[3]
+ STORAGE: ADMBase::lapse[3]
+ STORAGE: ADMBase::shift[3]
+ STORAGE: ADMBase::dtlapse[3]
+ STORAGE: ADMBase::dtshift[3]
+ } else if (timelevels == 4) {
+ #STORAGE: ADMBase::metric[4]
+ #STORAGE: ADMBase::curv[4]
+ #STORAGE: ADMBase::lapse[4]
+ #STORAGE: ADMBase::shift[4]
+ #STORAGE: ADMBase::dtlapse[4]
+ #STORAGE: ADMBase::dtshift[4]
+ STORAGE: ADMBase::metric[3]
+ STORAGE: ADMBase::curv[3]
+ STORAGE: ADMBase::lapse[3]
+ STORAGE: ADMBase::shift[3]
+ STORAGE: ADMBase::dtlapse[3]
+ STORAGE: ADMBase::dtshift[3]
+ }
+
+ SCHEDULE ML_CCZ4_RegisterSlicing AT startup
+ {
+ LANG: C
+ OPTIONS: meta
+ } "Register slicing"
+
+ SCHEDULE ML_CCZ4_SetGroupTags AT startup BEFORE Driver_Startup
+ {
+ LANG: C
+ OPTIONS: meta
+ } "Set checkpointing and prolongation group tags"
+
+ SCHEDULE ML_CCZ4_RegisterConstrained IN MoL_Register
+ {
+ LANG: C
+ OPTIONS: meta
+ } "Register ADMBase variables as constrained"
+
+
+
+ # Why would any of these two be necessary?
+ #SCHEDULE GROUP ML_CCZ4_evolCalcGroup AT postinitial AFTER MoL_PostStep
+ #{
+ #} "Calculate BSSN RHS"
+ #SCHEDULE GROUP MoL_CalcRHS AT postinitial AFTER MoL_PostStep
+ #{
+ #} "Evaluate RHS"
+
+ SCHEDULE GROUP ML_CCZ4_evolCalcGroup IN MoL_CalcRHS
+ {
+ } "Calculate BSSN RHS"
+
+ SCHEDULE GROUP ML_CCZ4_evolCalcGroup AT analysis
+ {
+ TRIGGERS: ML_CCZ4::ML_log_confacrhs
+ TRIGGERS: ML_CCZ4::ML_metricrhs
+ TRIGGERS: ML_CCZ4::ML_Gammarhs
+ TRIGGERS: ML_CCZ4::ML_trace_curvrhs
+ TRIGGERS: ML_CCZ4::ML_curvrhs
+ TRIGGERS: ML_CCZ4::ML_lapserhs
+ TRIGGERS: ML_CCZ4::ML_dtlapserhs
+ TRIGGERS: ML_CCZ4::ML_shiftrhs
+ TRIGGERS: ML_CCZ4::ML_dtshiftrhs
+ } "Calculate BSSN RHS"
+
+
+
+ if (CCTK_EQUALS (my_initial_boundary_condition, "extrapolate-gammas"))
+ {
+ SCHEDULE ML_CCZ4_ExtrapolateGammas AT initial AFTER ML_CCZ4_convertFromADMBaseGamma
+ {
+ LANG: C
+ # We don't need to synchronise here because extrapolation is now filling
+ # ghost zones
+ #SYNC: ML_Gamma
+ #SYNC: ML_dtlapse
+ #SYNC: ML_dtshift
+ } "Extrapolate Gammas and time derivatives of lapse and shift"
+ }
+
+ if (CCTK_EQUALS (my_rhs_boundary_condition, "NewRad"))
+ {
+ SCHEDULE ML_CCZ4_NewRad IN ML_CCZ4_evolCalcGroup AFTER ML_CCZ4_RHS
+ {
+ LANG: C
+ #SYNC: ML_curvrhs
+ #SYNC: ML_dtlapserhs
+ #SYNC: ML_dtshiftrhs
+ #SYNC: ML_Gammarhs
+ #SYNC: ML_lapserhs
+ #SYNC: ML_log_confacrhs
+ #SYNC: ML_metricrhs
+ #SYNC: ML_shiftrhs
+ #SYNC: ML_trace_curvrhs
+ } "Apply NewRad boundary conditions to RHS"
+ }
+
+
+
+ SCHEDULE GROUP ML_CCZ4_convertToADMBaseGroup IN ML_CCZ4_convertToADMBaseGroupWrapper
+ {
+ #SYNC: ADMBase::metric
+ #SYNC: ADMBase::curv
+ #SYNC: ADMBase::lapse
+ #SYNC: ADMBase::shift
+ #SYNC: ADMBase::dtlapse
+ #SYNC: ADMBase::dtshift
+ } "Calculate ADM variables"
+
+ if (CCTK_EQUALS (calculate_ADMBase_variables_at, "MoL_PostStep"))
+ {
+ SCHEDULE GROUP ML_CCZ4_convertToADMBaseGroupWrapper IN MoL_PostStep AFTER (ML_CCZ4_ApplyBCs ML_CCZ4_enforce) BEFORE (ADMBase_SetADMVars Whisky_PostStep)
+ {
+ } "Calculate ADM variables"
+ }
+ else if (CCTK_EQUALS (calculate_ADMBase_variables_at, "CCTK_EVOL"))
+ {
+ SCHEDULE GROUP ML_CCZ4_convertToADMBaseGroupWrapper IN MoL_PseudoEvolution BEFORE (ADMBase_SetADMVars Whisky_PostStep)
+ {
+ } "Calculate ADM variables"
+ }
+ else if (CCTK_EQUALS (calculate_ADMBase_variables_at, "CCTK_ANALYSIS"))
+ {
+ SCHEDULE GROUP ML_CCZ4_convertToADMBaseGroupWrapper AT post_recover_variables
+ {
+ } "Calculate ADM variables"
+
+ SCHEDULE GROUP ML_CCZ4_convertToADMBaseGroupWrapper AT analysis BEFORE (ADMBase_SetADMVars Whisky_PostStep)
+ {
+ } "Calculate ADM variables"
+ }
+
+ SCHEDULE ML_CCZ4_SelectBCsADMBase IN ML_CCZ4_convertToADMBaseGroupWrapper AFTER ML_CCZ4_convertToADMBaseGroup
+ {
+ LANG: C
+ OPTIONS: level
+ } "Select boundary conditions for ADMBase variables"
+
+ SCHEDULE GROUP ApplyBCs AS ML_CCZ4_ApplyBCsADMBase IN ML_CCZ4_convertToADMBaseGroupWrapper AFTER ML_CCZ4_SelectBCsADMBase
+ {
+ } "Apply boundary conditions to ADMBase variables"
+
+}
diff --git a/ML_CCZ4_Helper/src/ExtrapolateGammas.c b/ML_CCZ4_Helper/src/ExtrapolateGammas.c
new file mode 100644
index 0000000..efa08dd
--- /dev/null
+++ b/ML_CCZ4_Helper/src/ExtrapolateGammas.c
@@ -0,0 +1,29 @@
+#include <cctk.h>
+#include <cctk_Arguments.h>
+
+static void
+extrap (cGH const * restrict cctkGH,
+ CCTK_REAL * restrict var);
+
+void
+ML_CCZ4_ExtrapolateGammas (CCTK_ARGUMENTS)
+{
+ DECLARE_CCTK_ARGUMENTS;
+
+ extrap (cctkGH, Xt1);
+ extrap (cctkGH, Xt2);
+ extrap (cctkGH, Xt3);
+
+ extrap (cctkGH, A);
+
+ extrap (cctkGH, B1);
+ extrap (cctkGH, B2);
+ extrap (cctkGH, B3);
+}
+
+static void
+extrap (cGH const * restrict const cctkGH,
+ CCTK_REAL * restrict const var)
+{
+ ExtrapolateGammas (cctkGH, var);
+}
diff --git a/ML_CCZ4_Helper/src/NewRad.c b/ML_CCZ4_Helper/src/NewRad.c
new file mode 100644
index 0000000..756e5bf
--- /dev/null
+++ b/ML_CCZ4_Helper/src/NewRad.c
@@ -0,0 +1,69 @@
+#include <math.h>
+
+#include <cctk.h>
+#include <cctk_Arguments.h>
+#include <cctk_Parameters.h>
+
+static void
+newrad (cGH const * restrict cctkGH,
+ CCTK_REAL const * restrict var,
+ CCTK_REAL * restrict rhs,
+ CCTK_REAL var0,
+ CCTK_REAL v0);
+
+void
+ML_CCZ4_NewRad (CCTK_ARGUMENTS)
+{
+ DECLARE_CCTK_ARGUMENTS;
+ DECLARE_CCTK_PARAMETERS;
+
+ CCTK_REAL const v0 = sqrt (harmonicF);
+
+ newrad (cctkGH, phi , phirhs , 0.0, v0 );
+
+ newrad (cctkGH, gt11 , gt11rhs , 1.0, 1.0);
+ newrad (cctkGH, gt12 , gt12rhs , 0.0, 1.0);
+ newrad (cctkGH, gt13 , gt13rhs , 0.0, 1.0);
+ newrad (cctkGH, gt22 , gt22rhs , 1.0, 1.0);
+ newrad (cctkGH, gt23 , gt23rhs , 0.0, 1.0);
+ newrad (cctkGH, gt33 , gt33rhs , 1.0, 1.0);
+
+ newrad (cctkGH, Xt1 , Xt1rhs , 0.0, 1.0);
+ newrad (cctkGH, Xt2 , Xt2rhs , 0.0, 1.0);
+ newrad (cctkGH, Xt3 , Xt3rhs , 0.0, 1.0);
+
+ newrad (cctkGH, trK , trKrhs , 0.0, v0 );
+
+ newrad (cctkGH, At11 , At11rhs , 0.0, 1.0);
+ newrad (cctkGH, At12 , At12rhs , 0.0, 1.0);
+ newrad (cctkGH, At13 , At13rhs , 0.0, 1.0);
+ newrad (cctkGH, At22 , At22rhs , 0.0, 1.0);
+ newrad (cctkGH, At23 , At23rhs , 0.0, 1.0);
+ newrad (cctkGH, At33 , At33rhs , 0.0, 1.0);
+
+ newrad (cctkGH, alpha, alpharhs, 1.0, v0 );
+
+ newrad (cctkGH, A , Arhs , 0.0, v0 );
+
+ newrad (cctkGH, beta1, beta1rhs, 0.0, 1.0);
+ newrad (cctkGH, beta2, beta2rhs, 0.0, 1.0);
+ newrad (cctkGH, beta3, beta3rhs, 0.0, 1.0);
+
+ newrad (cctkGH, B1 , B1rhs , 0.0, 1.0);
+ newrad (cctkGH, B2 , B2rhs , 0.0, 1.0);
+ newrad (cctkGH, B3 , B3rhs , 0.0, 1.0);
+
+ newrad (cctkGH, Theta, Thetarhs, 0.0, 1.0);
+}
+
+static void
+newrad (cGH const * restrict const cctkGH,
+ CCTK_REAL const * restrict const var,
+ CCTK_REAL * restrict const rhs,
+ CCTK_REAL const var0,
+ CCTK_REAL const v0)
+{
+ DECLARE_CCTK_PARAMETERS;
+
+ NewRad_Apply (cctkGH, var, rhs, var0, v0, radpower);
+}
diff --git a/ML_CCZ4_Helper/src/RegisterConstrained.c b/ML_CCZ4_Helper/src/RegisterConstrained.c
new file mode 100644
index 0000000..ab906a3
--- /dev/null
+++ b/ML_CCZ4_Helper/src/RegisterConstrained.c
@@ -0,0 +1,32 @@
+#include <assert.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <cctk.h>
+#include <cctk_Arguments.h>
+
+static void
+register_constrained (char const * restrict const gn);
+
+void
+ML_CCZ4_RegisterConstrained (CCTK_ARGUMENTS)
+{
+ DECLARE_CCTK_ARGUMENTS;
+
+ register_constrained ("ADMBase::metric");
+ register_constrained ("ADMBase::curv");
+ register_constrained ("ADMBase::lapse");
+ register_constrained ("ADMBase::shift");
+ register_constrained ("ADMBase::dtlapse");
+ register_constrained ("ADMBase::dtshift");
+}
+
+static void
+register_constrained (char const * restrict const gn)
+{
+ assert (gn);
+
+ int const gi = CCTK_GroupIndex (gn);
+ int const ierr = MoLRegisterConstrainedGroup (gi);
+ assert (! ierr);
+}
diff --git a/ML_CCZ4_Helper/src/RegisterSlicing.c b/ML_CCZ4_Helper/src/RegisterSlicing.c
new file mode 100644
index 0000000..437e185
--- /dev/null
+++ b/ML_CCZ4_Helper/src/RegisterSlicing.c
@@ -0,0 +1,9 @@
+#include <cctk.h>
+#include <Slicing.h>
+
+int
+ML_CCZ4_RegisterSlicing (void)
+{
+ Einstein_RegisterSlicing ("ML_CCZ4");
+ return 0;
+}
diff --git a/ML_CCZ4_Helper/src/SelectBCsADMBase.c b/ML_CCZ4_Helper/src/SelectBCsADMBase.c
new file mode 100644
index 0000000..10c01f9
--- /dev/null
+++ b/ML_CCZ4_Helper/src/SelectBCsADMBase.c
@@ -0,0 +1,31 @@
+#include <assert.h>
+
+#include <cctk.h>
+#include <cctk_Arguments.h>
+#include <cctk_Parameters.h>
+
+static void
+select_bcs (cGH const * restrict cctkGH, char const * restrict gn);
+
+void
+ML_CCZ4_SelectBCsADMBase (CCTK_ARGUMENTS)
+{
+ DECLARE_CCTK_ARGUMENTS;
+
+ select_bcs (cctkGH, "ADMBase::metric");
+ select_bcs (cctkGH, "ADMBase::curv");
+ select_bcs (cctkGH, "ADMBase::lapse");
+ select_bcs (cctkGH, "ADMBase::shift");
+ select_bcs (cctkGH, "ADMBase::dtlapse");
+ select_bcs (cctkGH, "ADMBase::dtshift");
+}
+
+static void
+select_bcs (cGH const * restrict const cctkGH, char const * restrict const gn)
+{
+ DECLARE_CCTK_PARAMETERS;
+
+ int const ierr = Boundary_SelectGroupForBC
+ (cctkGH, CCTK_ALL_FACES, boundary_width, -1, gn, "none");
+ assert (! ierr);
+}
diff --git a/ML_CCZ4_Helper/src/SetGroupTags.c b/ML_CCZ4_Helper/src/SetGroupTags.c
new file mode 100644
index 0000000..00878ee
--- /dev/null
+++ b/ML_CCZ4_Helper/src/SetGroupTags.c
@@ -0,0 +1,77 @@
+#include <cctk.h>
+#include <cctk_Parameters.h>
+#include <util_Table.h>
+
+#include <assert.h>
+
+static void
+set_group_tags (int const checkpoint,
+ int const persistent,
+ int const prolongate,
+ char const * restrict const gn);
+
+int
+ML_CCZ4_SetGroupTags (void)
+{
+ DECLARE_CCTK_PARAMETERS;
+
+ int const checkpoint = timelevels > 1;
+ set_group_tags (checkpoint, checkpoint, 1, "ADMBase::metric");
+ set_group_tags (checkpoint, checkpoint, 1, "ADMBase::curv");
+ set_group_tags (checkpoint, checkpoint, 1, "ADMBase::lapse");
+ set_group_tags (checkpoint, checkpoint, 1, "ADMBase::shift");
+ set_group_tags (checkpoint, checkpoint, 1, "ADMBase::dtlapse");
+ set_group_tags (checkpoint, checkpoint, 1, "ADMBase::dtshift");
+
+ set_group_tags (checkpoint, checkpoint, 0, "ML_CCZ4::ML_cons_detg");
+ set_group_tags (checkpoint, checkpoint, 0, "ML_CCZ4::ML_cons_Gamma");
+ set_group_tags (checkpoint, checkpoint, 0, "ML_CCZ4::ML_cons_traceA");
+ set_group_tags (checkpoint, checkpoint, 0, "ML_CCZ4::ML_Ham");
+ set_group_tags (checkpoint, checkpoint, 0, "ML_CCZ4::ML_mom");
+
+ int const rhs_checkpoint = rhs_timelevels > 1;
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_CCZ4::ML_log_confacrhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_CCZ4::ML_metricrhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_CCZ4::ML_Gammarhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_CCZ4::ML_trace_curvrhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_CCZ4::ML_curvrhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_CCZ4::ML_lapserhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_CCZ4::ML_dtlapserhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_CCZ4::ML_shiftrhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_CCZ4::ML_dtshiftrhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_CCZ4::ML_Thetarhs");
+
+ return 0;
+}
+
+static void
+set_group_tags (int const checkpoint,
+ int const persistent,
+ int const prolongate,
+ char const * restrict const gn)
+{
+ assert (gn);
+
+ int const gi = CCTK_GroupIndex (gn);
+ assert (gi >= 0);
+
+ int const table = CCTK_GroupTagsTableI (gi);
+ assert (table >= 0);
+
+ if (! checkpoint) {
+ int const ierr = Util_TableSetString (table, "no", "Checkpoint");
+ assert (! ierr);
+ }
+
+ if (! persistent) {
+ int const ierr = Util_TableSetString (table, "no", "Persistent");
+ assert (! ierr);
+ }
+
+ if (! prolongate) {
+ int const iret = Util_TableDeleteKey (table, "ProlongationParameter");
+ assert (iret == 0 || iret == UTIL_ERROR_TABLE_NO_SUCH_KEY);
+ int const ierr = Util_TableSetString (table, "none", "Prolongation");
+ assert (! ierr);
+ }
+}
diff --git a/ML_CCZ4_Helper/src/make.code.defn b/ML_CCZ4_Helper/src/make.code.defn
new file mode 100644
index 0000000..a3ac433
--- /dev/null
+++ b/ML_CCZ4_Helper/src/make.code.defn
@@ -0,0 +1,2 @@
+# -*-Makefile-*-
+SRCS = ExtrapolateGammas.c NewRad.c RegisterConstrained.c RegisterSlicing.c SelectBCsADMBase.c SetGroupTags.c
diff --git a/ML_CCZ4_Test/interface.ccl b/ML_CCZ4_Test/interface.ccl
new file mode 100644
index 0000000..08b297f
--- /dev/null
+++ b/ML_CCZ4_Test/interface.ccl
@@ -0,0 +1 @@
+implements: ML_BSSN_Test
diff --git a/ML_CCZ4_Test/param.ccl b/ML_CCZ4_Test/param.ccl
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/ML_CCZ4_Test/param.ccl
diff --git a/ML_CCZ4_Test/schedule.ccl b/ML_CCZ4_Test/schedule.ccl
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/ML_CCZ4_Test/schedule.ccl
diff --git a/ML_CCZ4_Test/src/make.code.defn b/ML_CCZ4_Test/src/make.code.defn
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/ML_CCZ4_Test/src/make.code.defn
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d.par b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d.par
new file mode 100644
index 0000000..9028533
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d.par
@@ -0,0 +1,145 @@
+
+ActiveThorns = "CoordBase SymBase Boundary NanChecker CartGrid3d Time MoL CarpetIOBasic CarpetIOScalar IOUtil Carpet CarpetLib CarpetReduce CarpetInterp CarpetSlab CarpetIOASCII ADMBase StaticConformal SpaceMask Slab Periodic Exact GenericFD CoordGauge ADMCoupling LoopControl ML_CCZ4 ML_CCZ4_Helper GenericFD TMuNuBase SphericalSurface ADMMacros TimerReport"
+
+ADMBase::evolution_method = "ML_CCZ4"
+ADMBase::lapse_evolution_method = "ML_CCZ4"
+ADMBase::shift_evolution_method = "ML_CCZ4"
+ADMBase::dtlapse_evolution_method = "ML_CCZ4"
+ADMBase::dtshift_evolution_method = "ML_CCZ4"
+
+# We use the BBH gauge to ensure it is regression-tested.
+ML_CCZ4::harmonicN = 1 # 1+log
+ML_CCZ4::harmonicF = 2.0 # 1+log
+ML_CCZ4::ShiftGammaCoeff = 1.0
+ML_CCZ4::BetaDriver = 2.0
+ML_CCZ4::LapseAdvectionCoeff = 1.0
+ML_CCZ4::ShiftAdvectionCoeff = 1.0
+ML_CCZ4::GammaShift = 1.0
+ML_CCZ4::dampk1 = 1.0
+
+ML_CCZ4::MinimumLapse = 1.0e-8
+ML_CCZ4::conformalMethod = 1 # 1 for W, 0 for phi
+ML_CCZ4::my_rhs_boundary_condition = "static"
+
+ML_CCZ4::EpsDiss = 0.1
+
+Boundary::radpower = 2
+
+#############################################################
+# Grid
+#############################################################
+
+CoordBase::domainsize = minmax
+
+CoordBase::boundary_size_x_lower = 3
+CoordBase::boundary_size_y_lower = 3
+CoordBase::boundary_size_z_lower = 3
+CoordBase::boundary_shiftout_x_lower = 1
+CoordBase::boundary_shiftout_y_lower = 1
+CoordBase::boundary_shiftout_z_lower = 1
+
+CoordBase::boundary_size_x_upper = 3
+CoordBase::boundary_size_y_upper = 3
+CoordBase::boundary_size_z_upper = 3
+CoordBase::boundary_shiftout_x_upper = 0
+CoordBase::boundary_shiftout_y_upper = 0
+CoordBase::boundary_shiftout_z_upper = 0
+
+CartGrid3D::type = "coordbase"
+CartGrid3D::domain = "full"
+CartGrid3D::avoid_origin = "no"
+
+Periodic::periodic = "yes"
+
+CoordBase::xmin = 0
+CoordBase::ymin = 0
+CoordBase::zmin = 0
+
+CoordBase::xmax = 1
+CoordBase::ymax = 1
+CoordBase::zmax = 1
+
+CoordBase::dx = 0.1
+CoordBase::dy = 0.1
+CoordBase::dz = 0.1
+
+#############################################################
+# Carpet
+#############################################################
+
+Carpet::ghost_size = 3
+Carpet::domain_from_coordbase = "yes"
+Carpet::init_3_timelevels = "no"
+Carpet::poison_new_timelevels = yes
+
+#############################################################
+# Timers
+#############################################################
+
+# Do not commit these as testsuite output as they will change on
+# different machines. They are useful for performance monitoring in
+# automated build and test systems.
+TimerReport::output_all_timers_readable = yes
+TimerReport::n_top_timers = 40
+TimerReport::output_schedule_timers = no
+
+#############################################################
+# Time integration
+#############################################################
+
+Cactus::terminate = "iteration"
+Cactus::cctk_itlast = 8
+# Use 0.5 for RK4 and 0.25 for ICN
+Time::dtfac = 0.5
+
+MethodOfLines::ode_method = "RK4"
+MethodOfLines::MoL_Intermediate_Steps = 4
+
+#MethodOfLines::ode_method = "generic"
+#MethodOfLines::generic_type = "RK"
+#MethodOfLines::MoL_Intermediate_Steps = 1
+
+MethodOfLines::MoL_Num_Scratch_Levels = 1
+MethodOfLines::MoL_NaN_Check = "no"
+MethodOfLines::initial_data_is_crap = "no"
+
+#############################################################
+# Initial data
+#############################################################
+
+ADMBase::initial_data = "exact"
+ADMBase::initial_lapse = "exact"
+ADMBase::initial_shift = "exact"
+ADMBase::initial_dtlapse = "exact"
+ADMBase::initial_dtshift = "exact"
+
+Exact::exact_model = "Minkowski/shifted gauge wave"
+Exact::Minkowski_gauge_wave__what_fn = "sin"
+Exact::Minkowski_gauge_wave__amplitude = 0.1
+Exact::Minkowski_gauge_wave__omega = 1
+Exact::Minkowski_gauge_wave__lambda = 0.577350269189626
+
+Exact::rotation_euler_psi = -1.9216757376671543544
+Exact::rotation_euler_theta = 0.66214523564555227398
+Exact::rotation_euler_phi = 1.2199169159226388841
+
+Exact::exact_order = 4
+Exact::exact_eps = 1e-2 # This is large to ensure regression tests are insensitive to roundoff
+
+#############################################################
+# Output
+#############################################################
+
+IO::out_dir = $parfile
+IO::out_fileinfo = "none"
+IO::parfile_write = "no"
+CarpetIOBasic::outInfo_every = 1
+CarpetIOBasic::outInfo_vars = "ADMBase::alp"
+
+IOASCII::out1D_every = 8
+IOASCII::out_precision = 19
+IOASCII::out1D_x = "yes"
+IOASCII::out1D_y = "no"
+IOASCII::out1D_z = "no"
+IOASCII::out1D_d = "no"
+IOASCII::out1D_vars = "ADMBase::gxx ADMBase::kxx ML_CCZ4::ML_cons_detg ML_CCZ4::ML_cons_Gamma ML_CCZ4::ML_cons_traceA ML_CCZ4::ML_curv ML_CCZ4::ML_dtlapse ML_CCZ4::ML_dtshift ML_CCZ4::ML_Gamma ML_CCZ4::ML_lapse ML_CCZ4::ML_log_confac ML_CCZ4::ML_metric ML_CCZ4::ML_shift ML_CCZ4::ML_trace_curv ML_CCZ4::ML_Theta"
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/A.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/A.x.asc
new file mode 100644
index 0000000..4014b07
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/A.x.asc
@@ -0,0 +1,40 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 0
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 0
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 0
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 0
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 0
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 0
+0 0 0 0 0 8 3 3 0 0.5 0 0 0
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 0
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 0
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 0
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 0
+0 0 0 0 0 13 3 3 0 1 0 0 0
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 0
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 0
+
+#
+
+8 0 0 0 0 0 3 3 0.4000000000000000222 -0.3000000000000000444 0 0 0
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 0
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 0
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 0
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 0
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 0
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 0
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 0
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 0
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 0
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 0
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 0
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 0
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 0
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 0
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/At11.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/At11.x.asc
new file mode 100644
index 0000000..0c63110
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/At11.x.asc
@@ -0,0 +1,40 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 -0.004268336421319260041
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0.004268336421318102113
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0.006425507527048178111
+0 0 0 0 0 3 3 3 0 0 0 0 1.62832710278356286e-15
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 -0.005178451796062633929
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 -0.003008516424827497107
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 0.003008516424827675784
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 0.005178451796062817809
+0 0 0 0 0 8 3 3 0 0.5 0 0 -2.884946289831959165e-15
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 -0.006425507527046082565
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 -0.004268336421319260041
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 0.004268336421318102113
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 0.006425507527048178111
+0 0 0 0 0 13 3 3 0 1 0 0 1.62832710278356286e-15
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 -0.005178451796062633929
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 -0.003008516424827497107
+
+#
+
+8 0 0 0 0 0 3 3 0.4000000000000000222 -0.3000000000000000444 0 0 0.002222171016184940756
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 -0.009982638058223873914
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 -0.0220821126043325433
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 -0.01882351527460260354
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 -0.006012377901254812272
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 0.0006191395102141921802
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 -0.006647728121377407574
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 -0.02194742834188746425
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 -0.02866372164198962083
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 -0.01065106008485865868
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 0.002222171016184940756
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 -0.009982638058223873914
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 -0.0220821126043325433
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 -0.01882351527460260354
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 -0.006012377901254812272
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 0.0006191395102141921802
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/At12.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/At12.x.asc
new file mode 100644
index 0000000..212b09d
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/At12.x.asc
@@ -0,0 +1,40 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 -0.06305158118906070697
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0.06305158118905931919
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0.1575503876315908769
+0 0 0 0 0 3 3 3 0 0 0 0 0.1813805949244508275
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 0.1373300779859493725
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 0.05045863700046659961
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 -0.05045863700046622491
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 -0.1373300779859512599
+0 0 0 0 0 8 3 3 0 0.5 0 0 -0.1813805949244477467
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 -0.1575503876315910434
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 -0.06305158118906070697
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 0.06305158118905931919
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 0.1575503876315908769
+0 0 0 0 0 13 3 3 0 1 0 0 0.1813805949244508275
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 0.1373300779859493725
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 0.05045863700046659961
+
+#
+
+8 0 0 0 0 0 3 3 0.4000000000000000222 -0.3000000000000000444 0 0 -0.04887373793918897702
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 0.08416661046294075799
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 0.1628215839948528587
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 0.1719077601987810955
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 0.11223599739224982
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 0.02175386228453273299
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 -0.05559295622511341295
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 -0.1259931811143147895
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 -0.1854335815206167304
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 -0.1644510565218194886
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 -0.04887373793918897702
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 0.08416661046294075799
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 0.1628215839948528587
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 0.1719077601987810955
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 0.11223599739224982
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 0.02175386228453273299
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/At13.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/At13.x.asc
new file mode 100644
index 0000000..158b785
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/At13.x.asc
@@ -0,0 +1,40 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 -0.063051581189060249
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0.06305158118905951348
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0.1575503876315908491
+0 0 0 0 0 3 3 3 0 0 0 0 0.1813805949244508831
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 0.1373300779859494003
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 0.0504586370004666343
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 -0.05045863700046620409
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 -0.1373300779859512877
+0 0 0 0 0 8 3 3 0 0.5 0 0 -0.1813805949244477744
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 -0.1575503876315910712
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 -0.063051581189060249
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 0.06305158118905951348
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 0.1575503876315908491
+0 0 0 0 0 13 3 3 0 1 0 0 0.1813805949244508831
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 0.1373300779859494003
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 0.0504586370004666343
+
+#
+
+8 0 0 0 0 0 3 3 0.4000000000000000222 -0.3000000000000000444 0 0 -0.04887373793918757536
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 0.08416661046294376947
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 0.1628215839948519705
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 0.1719077601987814841
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 0.1122359973922514853
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 0.02175386228453189338
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 -0.05559295622511292723
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 -0.1259931811143150671
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 -0.1854335815206188953
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 -0.1644510565218213205
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 -0.04887373793918757536
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 0.08416661046294376947
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 0.1628215839948519705
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 0.1719077601987814841
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 0.1122359973922514853
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 0.02175386228453189338
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/At22.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/At22.x.asc
new file mode 100644
index 0000000..356913d
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/At22.x.asc
@@ -0,0 +1,40 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 -0.004268336421318786461
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0.0042683364213229949
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0.006425507527044411159
+0 0 0 0 0 3 3 3 0 0 0 0 -2.090920029710711353e-15
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 -0.005178451796062851636
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 -0.003008516424827362232
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 0.003008516424827217817
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 0.005178451796061292987
+0 0 0 0 0 8 3 3 0 0.5 0 0 1.417167930590521443e-15
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 -0.006425507527047243095
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 -0.004268336421318786461
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 0.0042683364213229949
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 0.006425507527044411159
+0 0 0 0 0 13 3 3 0 1 0 0 -2.090920029710711353e-15
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 -0.005178451796062851636
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 -0.003008516424827362232
+
+#
+
+8 0 0 0 0 0 3 3 0.4000000000000000222 -0.3000000000000000444 0 0 0.002222171016191636789
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 -0.009982638058234917164
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 -0.02208211260432214884
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 -0.01882351527460244742
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 -0.006012377901247856898
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 0.0006191395102204596277
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 -0.006647728121379109338
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 -0.02194742834188589259
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 -0.02866372164198386155
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 -0.01065106008486724556
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 0.002222171016191636789
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 -0.009982638058234917164
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 -0.02208211260432214884
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 -0.01882351527460244742
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 -0.006012377901247856898
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 0.0006191395102204596277
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/At23.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/At23.x.asc
new file mode 100644
index 0000000..5cba3bc
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/At23.x.asc
@@ -0,0 +1,40 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 0.06305158118906060982
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 -0.06305158118905883347
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 -0.1575503876315908214
+0 0 0 0 0 3 3 3 0 0 0 0 -0.1813805949244508831
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 -0.1373300779859494836
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 -0.05045863700046648859
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 0.0504586370004660098
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 0.1373300779859505938
+0 0 0 0 0 8 3 3 0 0.5 0 0 0.1813805949244481353
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 0.1575503876315904883
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 0.06305158118906060982
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 -0.06305158118905883347
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 -0.1575503876315908214
+0 0 0 0 0 13 3 3 0 1 0 0 -0.1813805949244508831
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 -0.1373300779859494836
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 -0.05045863700046648859
+
+#
+
+8 0 0 0 0 0 3 3 0.4000000000000000222 -0.3000000000000000444 0 0 0.04887373793918800557
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 -0.08416661046294370008
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 -0.1628215839948544408
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 -0.171907760198782511
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 -0.1122359973922497922
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 -0.02175386228453122031
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 0.0555929562251098186
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 0.1259931811143115143
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 0.1854335815206170079
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 0.1644510565218241238
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 0.04887373793918800557
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 -0.08416661046294370008
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 -0.1628215839948544408
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 -0.171907760198782511
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 -0.1122359973922497922
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 -0.02175386228453122031
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/At33.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/At33.x.asc
new file mode 100644
index 0000000..10ab45c
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/At33.x.asc
@@ -0,0 +1,40 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 -0.004268336421323083371
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0.00426833642131976658
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0.006425507527048234489
+0 0 0 0 0 3 3 3 0 0 0 0 4.625929269271485914e-16
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 -0.005178451796051549913
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 -0.003008516424835124253
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 0.003008516424835013664
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 0.005178451796053150195
+0 0 0 0 0 8 3 3 0 0.5 0 0 1.528190233053037097e-15
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 -0.006425507527047385342
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 -0.004268336421323083371
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 0.00426833642131976658
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 0.006425507527048234489
+0 0 0 0 0 13 3 3 0 1 0 0 4.625929269271485914e-16
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 -0.005178451796051549913
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 -0.003008516424835124253
+
+#
+
+8 0 0 0 0 0 3 3 0.4000000000000000222 -0.3000000000000000444 0 0 0.002222171016199682436
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 -0.009982638058230177899
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 -0.02208211260431991799
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 -0.01882351527460386295
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 -0.006012377901254206854
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 0.0006191395102208465794
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 -0.006647728121377751917
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 -0.02194742834188101108
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 -0.02866372164198211989
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 -0.0106510600848650841
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 0.002222171016199682436
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 -0.009982638058230177899
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 -0.02208211260431991799
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 -0.01882351527460386295
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 -0.006012377901254206854
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 0.0006191395102208465794
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/B1.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/B1.x.asc
new file mode 100644
index 0000000..8eb2993
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/B1.x.asc
@@ -0,0 +1,40 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 -0.261533743509176686
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0.2631960600575807829
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0.6098815089448363924
+0 0 0 0 0 3 3 3 0 0 0 0 0.6283155970682403613
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 0.4281815728329479431
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 0.1479927352531239526
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 -0.1477785858613959169
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 -0.4283473856400248359
+0 0 0 0 0 8 3 3 0 0.5 0 0 -0.6283155970682403613
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 -0.6101741936052138549
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 -0.261533743509176686
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 0.2631960600575807829
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 0.6098815089448363924
+0 0 0 0 0 13 3 3 0 1 0 0 0.6283155970682403613
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 0.4281815728329479431
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 0.1479927352531239526
+
+#
+
+8 0 0 0 0 0 3 3 0.4000000000000000222 -0.3000000000000000444 0 0 0.9723953674019965021
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 0.7289130783533870339
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 0.3400576471164251102
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 -0.09789964395248995643
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 -0.5693631900354440001
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 -1.009473067426440274
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 -1.082385548783288964
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 -0.5483319210379221653
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 0.2770634697823551873
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 0.8658266462659740537
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 0.9723953674019965021
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 0.7289130783533870339
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 0.3400576471164251102
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 -0.09789964395248995643
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 -0.5693631900354440001
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 -1.009473067426440274
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/B2.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/B2.x.asc
new file mode 100644
index 0000000..7c8191d
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/B2.x.asc
@@ -0,0 +1,40 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 0.261533743509176686
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 -0.2631960600575807829
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 -0.6098815089448363924
+0 0 0 0 0 3 3 3 0 0 0 0 -0.6283155970682403613
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 -0.4281815728329479431
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 -0.1479927352531239526
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 0.1477785858613959169
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 0.4283473856400248359
+0 0 0 0 0 8 3 3 0 0.5 0 0 0.6283155970682403613
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 0.6101741936052138549
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 0.261533743509176686
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 -0.2631960600575807829
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 -0.6098815089448363924
+0 0 0 0 0 13 3 3 0 1 0 0 -0.6283155970682403613
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 -0.4281815728329479431
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 -0.1479927352531239526
+
+#
+
+8 0 0 0 0 0 3 3 0.4000000000000000222 -0.3000000000000000444 0 0 -0.9723953674020048288
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 -0.7289130783533860347
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 -0.3400576471164168946
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 0.0978996439524813522
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 0.5693631900354382269
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 1.009473067426432502
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 1.08238554878327542
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 0.548331921037915837
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 -0.2770634697823622927
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 -0.8658266462659844898
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 -0.9723953674020048288
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 -0.7289130783533860347
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 -0.3400576471164168946
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 0.0978996439524813522
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 0.5693631900354382269
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 1.009473067426432502
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/B3.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/B3.x.asc
new file mode 100644
index 0000000..b472fd5
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/B3.x.asc
@@ -0,0 +1,40 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 0.2615337435091760754
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 -0.2631960600575809495
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 -0.6098815089448366145
+0 0 0 0 0 3 3 3 0 0 0 0 -0.6283155970682405833
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 -0.4281815728329480542
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 -0.1479927352531242857
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 0.1477785858613956116
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 0.4283473856400249469
+0 0 0 0 0 8 3 3 0 0.5 0 0 0.6283155970682404723
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 0.6101741936052137438
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 0.2615337435091760754
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 -0.2631960600575809495
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 -0.6098815089448366145
+0 0 0 0 0 13 3 3 0 1 0 0 -0.6283155970682405833
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 -0.4281815728329480542
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 -0.1479927352531242857
+
+#
+
+8 0 0 0 0 0 3 3 0.4000000000000000222 -0.3000000000000000444 0 0 -0.9723953674020062721
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 -0.7289130783533778191
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 -0.3400576471164161729
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 0.09789964395247230389
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 0.5693631900354408915
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 1.009473067426440718
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 1.082385548783286744
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 0.5483319210379224984
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 -0.2770634697823689541
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 -0.8658266462659871543
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 -0.9723953674020062721
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 -0.7289130783533778191
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 -0.3400576471164161729
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 0.09789964395247230389
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 0.5693631900354408915
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 1.009473067426440718
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/Theta.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/Theta.x.asc
new file mode 100644
index 0000000..b83adca
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/Theta.x.asc
@@ -0,0 +1,40 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 0
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 0
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 0
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 0
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 0
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 0
+0 0 0 0 0 8 3 3 0 0.5 0 0 0
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 0
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 0
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 0
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 0
+0 0 0 0 0 13 3 3 0 1 0 0 0
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 0
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 0
+
+#
+
+8 0 0 0 0 0 3 3 0.4000000000000000222 -0.3000000000000000444 0 0 0.01026874944439704583
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 -0.006146998634393356295
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 -0.007621164422260719162
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 -0.007218600508167378332
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 0.008592949443868290113
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 0.01675215518851411178
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 -0.01774003032690215156
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 -0.03243038461519604648
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 0.006373039265432495909
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 0.02676490303355243128
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 0.01026874944439704583
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 -0.006146998634393356295
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 -0.007621164422260719162
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 -0.007218600508167378332
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 0.008592949443868290113
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 0.01675215518851411178
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/Xt1.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/Xt1.x.asc
new file mode 100644
index 0000000..ae0821f
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/Xt1.x.asc
@@ -0,0 +1,40 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 -0.1511973670841813833
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0.1511973670841793016
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0.3718616479575347911
+0 0 0 0 0 3 3 3 0 0 0 0 0.4170539798141705279
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 0.3075250631768484677
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 0.1111590284029087966
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 -0.1111590284029082554
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 -0.3075250631768488008
+0 0 0 0 0 8 3 3 0 0.5 0 0 -0.4170539798141684185
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 -0.3718616479575358458
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 -0.1511973670841813833
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 0.1511973670841793016
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 0.3718616479575347911
+0 0 0 0 0 13 3 3 0 1 0 0 0.4170539798141705279
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 0.3075250631768484677
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 0.1111590284029087966
+
+#
+
+8 0 0 0 0 0 3 3 0.4000000000000000222 -0.3000000000000000444 0 0 0.9929793950116826418
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 0.4457618031461417218
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 -0.08153725863349570169
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 -0.4085290182789532709
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 -0.6757401491608735489
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 -0.9346227287756014857
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 -0.8555502336040403666
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 -0.2137551508383944143
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 0.6390253368745013596
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 1.13170378350831502
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 0.9929793950116826418
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 0.4457618031461417218
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 -0.08153725863349570169
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 -0.4085290182789532709
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 -0.6757401491608735489
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 -0.9346227287756014857
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/Xt2.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/Xt2.x.asc
new file mode 100644
index 0000000..b4b9cf5
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/Xt2.x.asc
@@ -0,0 +1,40 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 0.1511973670841813278
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 -0.1511973670841806894
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 -0.3718616479575345135
+0 0 0 0 0 3 3 3 0 0 0 0 -0.417053979814168807
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 -0.3075250631768485787
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 -0.1111590284029089076
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 0.1111590284029082554
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 0.3075250631768485232
+0 0 0 0 0 8 3 3 0 0.5 0 0 0.417053979814168474
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 0.3718616479575356237
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 0.1511973670841813278
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 -0.1511973670841806894
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 -0.3718616479575345135
+0 0 0 0 0 13 3 3 0 1 0 0 -0.417053979814168807
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 -0.3075250631768485787
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 -0.1111590284029089076
+
+#
+
+8 0 0 0 0 0 3 3 0.4000000000000000222 -0.3000000000000000444 0 0 -0.9929793950116904133
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 -0.4457618031461407782
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 0.08153725863350419489
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 0.4085290182789457214
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 0.6757401491608673316
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 0.9346227287755936031
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 0.8555502336040265998
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 0.2137551508383866983
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 -0.6390253368745077989
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 -1.13170378350832479
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 -0.9929793950116904133
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 -0.4457618031461407782
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 0.08153725863350419489
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 0.4085290182789457214
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 0.6757401491608673316
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 0.9346227287755936031
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/Xt3.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/Xt3.x.asc
new file mode 100644
index 0000000..8efb3f6
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/Xt3.x.asc
@@ -0,0 +1,40 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 0.1511973670841814665
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 -0.1511973670841791351
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 -0.3718616479575344025
+0 0 0 0 0 3 3 3 0 0 0 0 -0.4170539798141703614
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 -0.3075250631768485232
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 -0.1111590284029074643
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 0.1111590284029082693
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 0.3075250631768481346
+0 0 0 0 0 8 3 3 0 0.5 0 0 0.417053979814168585
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 0.3718616479575356792
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 0.1511973670841814665
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 -0.1511973670841791351
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 -0.3718616479575344025
+0 0 0 0 0 13 3 3 0 1 0 0 -0.4170539798141703614
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 -0.3075250631768485232
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 -0.1111590284029074643
+
+#
+
+8 0 0 0 0 0 3 3 0.4000000000000000222 -0.3000000000000000444 0 0 -0.9929793950116916346
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 -0.4457618031461308417
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 0.08153725863350524961
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 0.4085290182789350633
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 0.6757401491608699962
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 0.9346227287756038171
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 0.8555502336040381461
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 0.2137551508383933041
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 -0.6390253368745160145
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 -1.131703783508328787
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 -0.9929793950116916346
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 -0.4457618031461308417
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 0.08153725863350524961
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 0.4085290182789350633
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 0.6757401491608699962
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 0.9346227287756038171
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/alpha.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/alpha.x.asc
new file mode 100644
index 0000000..c092343
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/alpha.x.asc
@@ -0,0 +1,40 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 1.05123802613049433
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 1.05123802613049433
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 1.030751762999378984
+0 0 0 0 0 3 3 3 0 0 0 0 1
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 0.971845969673347021
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 0.9555908659126353122
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 0.9555908659126353122
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 0.97184596967334691
+0 0 0 0 0 8 3 3 0 0.5 0 0 1
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 1.030751762999378762
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 1.05123802613049433
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 1.05123802613049433
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 1.030751762999378984
+0 0 0 0 0 13 3 3 0 1 0 0 1
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 0.971845969673347021
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 0.9555908659126353122
+
+#
+
+8 0 0 0 0 0 3 3 0.4000000000000000222 -0.3000000000000000444 0 0 1.052652412178646246
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 1.047269543969207684
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 1.02052535918932441
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 0.9873822139863915881
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 0.9627443419304942962
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 0.9536416149661693931
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 0.9599689419224836096
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 0.9785943367522877967
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 1.005594793765888895
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 1.03458556566145421
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 1.052652412178646246
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 1.047269543969207684
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 1.02052535918932441
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 0.9873822139863915881
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 0.9627443419304942962
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 0.9536416149661693931
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/beta1.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/beta1.x.asc
new file mode 100644
index 0000000..28f957d
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/beta1.x.asc
@@ -0,0 +1,40 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 0.06068031441309687524
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0.06068031441309696544
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0.0360550606560913478
+0 0 0 0 0 3 3 3 0 0 0 0 0
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 -0.03205183761762388922
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 -0.05014061747197683105
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 -0.05014061747197684493
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 -0.03205183761762393779
+0 0 0 0 0 8 3 3 0 0.5 0 0 -8.398900904684191565e-17
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 0.03605506065609112576
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 0.06068031441309687524
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 0.06068031441309696544
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 0.0360550606560913478
+0 0 0 0 0 13 3 3 0 1 0 0 0
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 -0.03205183761762388922
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 -0.05014061747197683105
+
+#
+
+8 0 0 0 0 0 3 3 0.4000000000000000222 -0.3000000000000000444 0 0 -0.003387524249141231347
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 -0.04196647570336492494
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 -0.06120346994373934701
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 -0.05970039829375977519
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 -0.03976154833146313544
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 -0.002925204554348588559
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 0.04236785368525254614
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 0.07379104123768567836
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 0.07337740056148615853
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 0.04206348227224530195
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 -0.003387524249141231347
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 -0.04196647570336492494
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 -0.06120346994373934701
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 -0.05970039829375977519
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 -0.03976154833146313544
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 -0.002925204554348588559
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/beta2.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/beta2.x.asc
new file mode 100644
index 0000000..90bad87
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/beta2.x.asc
@@ -0,0 +1,40 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 -0.06068031441309687524
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 -0.06068031441309696544
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 -0.0360550606560913478
+0 0 0 0 0 3 3 3 0 0 0 0 0
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 0.03205183761762388922
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 0.05014061747197683105
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 0.05014061747197684493
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 0.03205183761762393779
+0 0 0 0 0 8 3 3 0 0.5 0 0 8.398900904684191565e-17
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 -0.03605506065609112576
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 -0.06068031441309687524
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 -0.06068031441309696544
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 -0.0360550606560913478
+0 0 0 0 0 13 3 3 0 1 0 0 0
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 0.03205183761762388922
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 0.05014061747197683105
+
+#
+
+8 0 0 0 0 0 3 3 0.4000000000000000222 -0.3000000000000000444 0 0 0.003387524249141522781
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 0.04196647570336543148
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 0.06120346994373945804
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 0.05970039829375967805
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 0.03976154833146304524
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 0.002925204554348588559
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 -0.04236785368525282369
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 -0.07379104123768591428
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 -0.07337740056148595036
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 -0.0420634822722450244
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 0.003387524249141522781
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 0.04196647570336543148
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 0.06120346994373945804
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 0.05970039829375967805
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 0.03976154833146304524
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 0.002925204554348588559
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/beta3.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/beta3.x.asc
new file mode 100644
index 0000000..fb10ff3
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/beta3.x.asc
@@ -0,0 +1,40 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 -0.06068031441309688911
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 -0.06068031441309697238
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 -0.0360550606560913478
+0 0 0 0 0 3 3 3 0 0 0 0 0
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 0.03205183761762389616
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 0.05014061747197683799
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 0.05014061747197685881
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 0.03205183761762394473
+0 0 0 0 0 8 3 3 0 0.5 0 0 8.398900904684192798e-17
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 -0.0360550606560911327
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 -0.06068031441309688911
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 -0.06068031441309697238
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 -0.0360550606560913478
+0 0 0 0 0 13 3 3 0 1 0 0 0
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 0.03205183761762389616
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 0.05014061747197683799
+
+#
+
+8 0 0 0 0 0 3 3 0.4000000000000000222 -0.3000000000000000444 0 0 0.003387524249141293797
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 0.04196647570336537597
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 0.06120346994373945804
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 0.0597003982937595809
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 0.03976154833146310075
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 0.002925204554349074282
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 -0.04236785368525246287
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 -0.07379104123768583101
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 -0.07337740056148625567
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 -0.04206348227224557257
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 0.003387524249141293797
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 0.04196647570336537597
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 0.06120346994373945804
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 0.0597003982937595809
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 0.03976154833146310075
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 0.002925204554349074282
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/cA.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/cA.x.asc
new file mode 100644
index 0000000..b09a51d
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/cA.x.asc
@@ -0,0 +1,40 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 -8.673617379884035472e-19
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 -1.734723475976807094e-18
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 8.673617379884035472e-19
+0 0 0 0 0 3 3 3 0 0 0 0 1.972152263052529514e-31
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 8.673617379884035472e-19
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 1.301042606982605321e-18
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 -4.336808689942017736e-19
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 -8.673617379884035472e-19
+0 0 0 0 0 8 3 3 0 0.5 0 0 3.944304526105059027e-31
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 1.734723475976807094e-18
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 -8.673617379884035472e-19
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 -1.734723475976807094e-18
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 8.673617379884035472e-19
+0 0 0 0 0 13 3 3 0 1 0 0 1.972152263052529514e-31
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 8.673617379884035472e-19
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 1.301042606982605321e-18
+
+#
+
+8 0 0 0 0 0 3 3 0.4000000000000000222 -0.3000000000000000444 0 0 4.982990626156355574e-08
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 -1.190458048180853545e-07
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 -2.601277027808324149e-08
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 -1.734948820719672824e-08
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 -3.048918067669048604e-08
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 -7.198199099929178391e-09
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 -9.301470390785104847e-08
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 1.100028669542840731e-08
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 -7.382714641013254919e-08
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 -8.166419225401344573e-08
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 4.982990626156355574e-08
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 -1.190458048180853545e-07
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 -2.601277027808324149e-08
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 -1.734948820719672824e-08
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 -3.048918067669048604e-08
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 -7.198199099929178391e-09
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/cS.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/cS.x.asc
new file mode 100644
index 0000000..4014b07
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/cS.x.asc
@@ -0,0 +1,40 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 0
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 0
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 0
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 0
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 0
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 0
+0 0 0 0 0 8 3 3 0 0.5 0 0 0
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 0
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 0
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 0
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 0
+0 0 0 0 0 13 3 3 0 1 0 0 0
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 0
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 0
+
+#
+
+8 0 0 0 0 0 3 3 0.4000000000000000222 -0.3000000000000000444 0 0 0
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 0
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 0
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 0
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 0
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 0
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 0
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 0
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 0
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 0
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 0
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 0
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 0
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 0
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 0
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/cXt1.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/cXt1.x.asc
new file mode 100644
index 0000000..d9937a6
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/cXt1.x.asc
@@ -0,0 +1,40 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 -8.066464163292152989e-17
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 -1.322726650432315409e-16
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 2.784231178942775387e-16
+0 0 0 0 0 3 3 3 0 0 0 0 3.354250471127029343e-17
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 6.158268339717665185e-17
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 -1.940721888749052937e-16
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 -6.002143226879752547e-16
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 -3.222248856626919178e-16
+0 0 0 0 0 8 3 3 0 0.5 0 0 -4.174855990426995511e-16
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 2.602085213965210642e-18
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 -8.066464163292152989e-17
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 -1.322726650432315409e-16
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 2.784231178942775387e-16
+0 0 0 0 0 13 3 3 0 1 0 0 3.354250471127029343e-17
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 6.158268339717665185e-17
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 -1.940721888749052937e-16
+
+#
+
+8 0 0 0 0 0 3 3 0.4000000000000000222 -0.3000000000000000444 0 0 -0.0397614953376748681
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 -0.01811801489483534644
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 0.01980991780630323926
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 0.005922896843701817154
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 -0.01158544486338861437
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 0.005036027183185773186
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 -0.0003438348711606552255
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 -0.01329340422364685449
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 0.01133733906781632036
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 0.001897947706963529907
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 -0.0397614953376748681
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 -0.01811801489483534644
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 0.01980991780630323926
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 0.005922896843701817154
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 -0.01158544486338861437
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 0.005036027183185773186
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/cXt2.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/cXt2.x.asc
new file mode 100644
index 0000000..ce5cf52
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/cXt2.x.asc
@@ -0,0 +1,40 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 0
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 1.11022302462515654e-16
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 -8.049116928532384918e-16
+0 0 0 0 0 3 3 3 0 0 0 0 -2.775557561562891351e-17
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 -5.551115123125782702e-17
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 6.869504964868156094e-16
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 3.261280134836397337e-16
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 -2.775557561562891351e-17
+0 0 0 0 0 8 3 3 0 0.5 0 0 -7.494005416219806648e-16
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 2.775557561562891351e-17
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 0
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 1.11022302462515654e-16
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 -8.049116928532384918e-16
+0 0 0 0 0 13 3 3 0 1 0 0 -2.775557561562891351e-17
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 -5.551115123125782702e-17
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 6.869504964868156094e-16
+
+#
+
+8 0 0 0 0 0 3 3 0.4000000000000000222 -0.3000000000000000444 0 0 0.03976149533767420197
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 0.01811801489484177186
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 -0.01980991780629907245
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 -0.005922896843697428304
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 0.01158544486338580759
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 -0.005036027183182301137
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 0.0003438348711661820545
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 0.01329340422364738705
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 -0.011337339067821528
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 -0.001897947706974045801
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 0.03976149533767420197
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 0.01811801489484177186
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 -0.01980991780629907245
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 -0.005922896843697428304
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 0.01158544486338580759
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 -0.005036027183182301137
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/cXt3.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/cXt3.x.asc
new file mode 100644
index 0000000..4d093a3
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/cXt3.x.asc
@@ -0,0 +1,40 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 6.938893903907228378e-17
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 1.526556658859590243e-16
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 -1.137978600240785454e-15
+0 0 0 0 0 3 3 3 0 0 0 0 -2.775557561562891351e-17
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 -2.775557561562891351e-17
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 4.787836793695987581e-16
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 -1.186550857568136053e-15
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 1.942890293094023946e-16
+0 0 0 0 0 8 3 3 0 0.5 0 0 4.163336342344337027e-16
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 -2.775557561562891351e-17
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 6.938893903907228378e-17
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 1.526556658859590243e-16
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 -1.137978600240785454e-15
+0 0 0 0 0 13 3 3 0 1 0 0 -2.775557561562891351e-17
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 -2.775557561562891351e-17
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 4.787836793695987581e-16
+
+#
+
+8 0 0 0 0 0 3 3 0.4000000000000000222 -0.3000000000000000444 0 0 0.0397614953376813629
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 0.01811801489483705341
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 -0.01980991780630420029
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 -0.00592289684369287639
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 0.01158544486338575208
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 -0.005036027183185243228
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 0.0003438348711604088948
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 0.0132934042236457356
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 -0.01133733906781841938
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 -0.001897947706976044202
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 0.0397614953376813629
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 0.01811801489483705341
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 -0.01980991780630420029
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 -0.00592289684369287639
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 0.01158544486338575208
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 -0.005036027183185243228
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/gt11.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/gt11.x.asc
new file mode 100644
index 0000000..164a9b2
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/gt11.x.asc
@@ -0,0 +1,40 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 1.001097695519928665
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 1.001097695519928665
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 1.000405024681067401
+0 0 0 0 0 3 3 3 0 0 0 0 1
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 1.000364803038667816
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 1.000926567406855705
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 1.000926567406855705
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 1.000364803038668038
+0 0 0 0 0 8 3 3 0 0.5 0 0 1
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 1.000405024681067179
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 1.001097695519928665
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 1.001097695519928665
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 1.000405024681067401
+0 0 0 0 0 13 3 3 0 1 0 0 1
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 1.000364803038667816
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 1.000926567406855705
+
+#
+
+8 0 0 0 0 0 3 3 0.4000000000000000222 -0.3000000000000000444 0 0 1.000416525608256668
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 1.003880382340599731
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 1.005228259448056383
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 1.003233814302351368
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 1.000709960643116903
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 1.000169434255847589
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 1.003281743977509688
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 1.006850398232920663
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 1.005505229960597324
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 1.00096969944896208
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 1.000416525608256668
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 1.003880382340599731
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 1.005228259448056383
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 1.003233814302351368
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 1.000709960643116903
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 1.000169434255847589
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/gt12.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/gt12.x.asc
new file mode 100644
index 0000000..6b6198c
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/gt12.x.asc
@@ -0,0 +1,40 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 0.03277573545166539287
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0.03277573545166539287
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0.01999248696063090497
+0 0 0 0 0 3 3 3 0 0 0 0 -2.775557561562891351e-17
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 -0.01922334923201163281
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 -0.03075622745750388604
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 -0.03075622745750388604
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 -0.01922334923201168833
+0 0 0 0 0 8 3 3 0 0.5 0 0 -8.326672684688671588e-17
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 0.01999248696063078354
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 0.03277573545166539287
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 0.03277573545166539287
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 0.01999248696063090497
+0 0 0 0 0 13 3 3 0 1 0 0 -2.775557561562891351e-17
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 -0.01922334923201163281
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 -0.03075622745750388604
+
+#
+
+8 0 0 0 0 0 3 3 0.4000000000000000222 -0.3000000000000000444 0 0 -0.02327215403346585831
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 -0.06328573056723811596
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 -0.07312385407106053448
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 -0.05810721682659377579
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 -0.02754118173192332888
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 0.01403332850362783157
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 0.05660111134317387382
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 0.08066832606474082235
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 0.07213835097634918592
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 0.03139821061251318185
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 -0.02327215403346585831
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 -0.06328573056723811596
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 -0.07312385407106053448
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 -0.05810721682659377579
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 -0.02754118173192332888
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 0.01403332850362783157
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/gt13.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/gt13.x.asc
new file mode 100644
index 0000000..7b80b7c
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/gt13.x.asc
@@ -0,0 +1,40 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 0.03277573545166547614
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0.03277573545166547614
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0.0199924869606309917
+0 0 0 0 0 3 3 3 0 0 0 0 5.551115123125782702e-17
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 -0.01922334923201155302
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 -0.03075622745750380277
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 -0.03075622745750380277
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 -0.01922334923201160506
+0 0 0 0 0 8 3 3 0 0.5 0 0 0
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 0.01999248696063087027
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 0.03277573545166547614
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 0.03277573545166547614
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 0.0199924869606309917
+0 0 0 0 0 13 3 3 0 1 0 0 5.551115123125782702e-17
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 -0.01922334923201155302
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 -0.03075622745750380277
+
+#
+
+8 0 0 0 0 0 3 3 0.4000000000000000222 -0.3000000000000000444 0 0 -0.02327215403346633016
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 -0.06328573056723793555
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 -0.07312385407105988222
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 -0.05810721682659360232
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 -0.02754118173192372787
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 0.01403332850362752626
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 0.05660111134317406811
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 0.0806683260647413497
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 0.07213835097634932469
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 0.03139821061251277245
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 -0.02327215403346633016
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 -0.06328573056723793555
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 -0.07312385407105988222
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 -0.05810721682659360232
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 -0.02754118173192372787
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 0.01403332850362752626
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/gt22.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/gt22.x.asc
new file mode 100644
index 0000000..0a606bc
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/gt22.x.asc
@@ -0,0 +1,40 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 1.001097695519928665
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 1.001097695519928665
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 1.000405024681067623
+0 0 0 0 0 3 3 3 0 0 0 0 1
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 1.000364803038667816
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 1.000926567406855705
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 1.000926567406855705
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 1.000364803038668038
+0 0 0 0 0 8 3 3 0 0.5 0 0 1
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 1.000405024681067179
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 1.001097695519928665
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 1.001097695519928665
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 1.000405024681067623
+0 0 0 0 0 13 3 3 0 1 0 0 1
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 1.000364803038667816
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 1.000926567406855705
+
+#
+
+8 0 0 0 0 0 3 3 0.4000000000000000222 -0.3000000000000000444 0 0 1.000416525608257778
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 1.003880382340599953
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 1.005228259448056161
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 1.00323381430235048
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 1.000709960643116903
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 1.000169434255847367
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 1.003281743977509688
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 1.006850398232920885
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 1.005505229960596214
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 1.000969699448962746
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 1.000416525608257778
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 1.003880382340599953
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 1.005228259448056161
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 1.00323381430235048
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 1.000709960643116903
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 1.000169434255847367
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/gt23.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/gt23.x.asc
new file mode 100644
index 0000000..f27e238
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/gt23.x.asc
@@ -0,0 +1,40 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 -0.03277573545166539287
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 -0.03277573545166539287
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 -0.01999248696063090497
+0 0 0 0 0 3 3 3 0 0 0 0 2.775557561562891351e-17
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 0.01922334923201163281
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 0.03075622745750388604
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 0.03075622745750388604
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 0.01922334923201168833
+0 0 0 0 0 8 3 3 0 0.5 0 0 8.326672684688671588e-17
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 -0.01999248696063078354
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 -0.03277573545166539287
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 -0.03277573545166539287
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 -0.01999248696063090497
+0 0 0 0 0 13 3 3 0 1 0 0 2.775557561562891351e-17
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 0.01922334923201163281
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 0.03075622745750388604
+
+#
+
+8 0 0 0 0 0 3 3 0.4000000000000000222 -0.3000000000000000444 0 0 0.02327215403346632322
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 0.06328573056723811596
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 0.07312385407106035407
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 0.05810721682659355375
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 0.02754118173192338787
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 -0.01403332850362779688
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 -0.05660111134317348525
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 -0.08066832606474040601
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 -0.07213835097634890836
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 -0.03139821061251305695
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 0.02327215403346632322
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 0.06328573056723811596
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 0.07312385407106035407
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 0.05810721682659355375
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 0.02754118173192338787
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 -0.01403332850362779688
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/gt33.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/gt33.x.asc
new file mode 100644
index 0000000..83d318f
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/gt33.x.asc
@@ -0,0 +1,40 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 1.001097695519928665
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 1.001097695519928665
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 1.000405024681067401
+0 0 0 0 0 3 3 3 0 0 0 0 1
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 1.000364803038668038
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 1.000926567406855705
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 1.000926567406855705
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 1.000364803038668038
+0 0 0 0 0 8 3 3 0 0.5 0 0 1
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 1.000405024681067179
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 1.001097695519928665
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 1.001097695519928665
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 1.000405024681067401
+0 0 0 0 0 13 3 3 0 1 0 0 1
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 1.000364803038668038
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 1.000926567406855705
+
+#
+
+8 0 0 0 0 0 3 3 0.4000000000000000222 -0.3000000000000000444 0 0 1.000416525608256668
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 1.003880382340600175
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 1.005228259448055717
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 1.003233814302349369
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 1.000709960643115792
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 1.000169434255847589
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 1.003281743977510354
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 1.006850398232920885
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 1.005505229960595548
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 1.000969699448961192
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 1.000416525608256668
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 1.003880382340600175
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 1.005228259448055717
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 1.003233814302349369
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 1.000709960643115792
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 1.000169434255847589
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/gxx.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/gxx.x.asc
new file mode 100644
index 0000000..6efe5c7
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/gxx.x.asc
@@ -0,0 +1,40 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 0.968298116123494923
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0.968298116123494923
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0.9804071582569174881
+0 0 0 0 0 3 3 3 0 0 0 0 1
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 1.019592841743082401
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 1.031701883876505299
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 1.031701883876505299
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 1.019592841743082623
+0 0 0 0 0 8 3 3 0 0.5 0 0 1.000000000000000222
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 0.9804071582569177101
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 0.968298116123494923
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 0.968298116123494923
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 0.9804071582569174881
+0 0 0 0 0 13 3 3 0 1 0 0 1
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 1.019592841743082401
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 1.031701883876505299
+
+#
+
+8 0 0 0 0 0 3 3 0.4000000000000000222 -0.3000000000000000444 0 0 1.023193145953921857
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 1.068393052046706204
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 1.079836765826430955
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 1.061703592630796944
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 1.027961788398015885
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 0.986279063751585916
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 0.9470870436872945719
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 0.9258860743340653343
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 0.9321049702742328913
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 0.9680794870041943279
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 1.023193145953921857
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 1.068393052046706204
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 1.079836765826430955
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 1.061703592630796944
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 1.027961788398015885
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 0.986279063751585916
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/kxx.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/kxx.x.asc
new file mode 100644
index 0000000..af58c1c
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/kxx.x.asc
@@ -0,0 +1,40 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 0.05892153831746786696
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 -0.0589215383174686233
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 -0.1512524600532927366
+0 0 0 0 0 3 3 3 0 0 0 0 -0.1813805949244461646
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 -0.1426086965759302549
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 -0.05356058938639061962
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 0.05356058938638950245
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 0.1426086965759379155
+0 0 0 0 0 8 3 3 0 0.5 0 0 0.1813805949244440552
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 0.1512524600532958452
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 0.05892153831746786696
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 -0.0589215383174686233
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 -0.1512524600532927366
+0 0 0 0 0 13 3 3 0 1 0 0 -0.1813805949244461646
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 -0.1426086965759302549
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 -0.05356058938639061962
+
+#
+
+8 0 0 0 0 0 3 3 0.4000000000000000222 -0.3000000000000000444 0 0 0.06910202839635219696
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 -0.08907958273457161624
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 -0.2000818839855364184
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 -0.2059776394727745874
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 -0.1160290203660148955
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 -0.008731208735987237152
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 0.0499201079401754913
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 0.09575868731973095904
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 0.1512185964586307829
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 0.1605120023718065447
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 0.06910202839635219696
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 -0.08907958273457161624
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 -0.2000818839855364184
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 -0.2059776394727745874
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 -0.1160290203660148955
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 -0.008731208735987237152
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/phi.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/phi.x.asc
new file mode 100644
index 0000000..6732d31
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/phi.x.asc
@@ -0,0 +1,40 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 1.016795668249818041
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 1.016795668249818041
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 1.010147272253753226
+0 0 0 0 0 3 3 3 0 0 0 0 1
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 0.9905258471169019474
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 0.9849722533905976851
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 0.9849722533905976851
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 0.9905258471169019474
+0 0 0 0 0 8 3 3 0 0.5 0 0 0.999999999999999889
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 1.010147272253753004
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 1.016795668249818041
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 1.016795668249818041
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 1.010147272253753226
+0 0 0 0 0 13 3 3 0 1 0 0 1
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 0.9905258471169019474
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 0.9849722533905976851
+
+#
+
+8 0 0 0 0 0 3 3 0.4000000000000000222 -0.3000000000000000444 0 0 0.9888071939518700004
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 0.9693384863115995786
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 0.9648355335678293621
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 0.9720742465937129984
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 0.9866556919759048583
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 1.007017184972836432
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 1.029239646980635969
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 1.042806421839191033
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 1.038627351009956845
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 1.016845466318951896
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 0.9888071939518700004
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 0.9693384863115995786
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 0.9648355335678293621
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 0.9720742465937129984
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 0.9866556919759048583
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 1.007017184972836432
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/trK.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/trK.x.asc
new file mode 100644
index 0000000..557b4cc
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d/trK.x.asc
@@ -0,0 +1,40 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 0.1953428212594253421
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 -0.1953428212594242042
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 -0.4820941641502610731
+0 0 0 0 0 3 3 3 0 0 0 0 -0.5441417847733434066
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 -0.4040751484217592893
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 -0.1467271837380128285
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 0.146727183738009026
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 0.4040751484217811607
+0 0 0 0 0 8 3 3 0 0.5 0 0 0.544141784773340742
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 0.4820941641502641817
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 0.1953428212594253421
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 -0.1953428212594242042
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 -0.4820941641502610731
+0 0 0 0 0 13 3 3 0 1 0 0 -0.5441417847733434066
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 -0.4040751484217592893
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 -0.1467271837380128285
+
+#
+
+8 0 0 0 0 0 3 3 0.4000000000000000222 -0.3000000000000000444 0 0 0.1959432542289286372
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 -0.2202993380383910793
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 -0.4899652401669922219
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 -0.5257316629880188774
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 -0.3205943401621000333
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 -0.02841513107977053365
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 0.1780052571350426716
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 0.3756658088880814872
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 0.5722206779221203909
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 0.5293359331311475735
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 0.1959432542289286372
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 -0.2202993380383910793
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 -0.4899652401669922219
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 -0.5257316629880188774
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 -0.3205943401621000333
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 -0.02841513107977053365
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs.par b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs.par
new file mode 100644
index 0000000..31add0c
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs.par
@@ -0,0 +1,147 @@
+
+ActiveThorns = "CoordBase SymBase Boundary NanChecker CartGrid3d Time MoL CarpetIOBasic CarpetIOScalar IOUtil Carpet CarpetLib CarpetReduce CarpetInterp CarpetSlab CarpetIOASCII ADMBase StaticConformal SpaceMask Slab Periodic Exact GenericFD CoordGauge ADMCoupling LoopControl ML_CCZ4 ML_CCZ4_Helper GenericFD TMuNuBase SphericalSurface ADMMacros TimerReport"
+
+ADMBase::evolution_method = "ML_CCZ4"
+ADMBase::lapse_evolution_method = "ML_CCZ4"
+ADMBase::shift_evolution_method = "ML_CCZ4"
+ADMBase::dtlapse_evolution_method = "ML_CCZ4"
+ADMBase::dtshift_evolution_method = "ML_CCZ4"
+
+# We use the BBH gauge to ensure it is regression-tested. Also, there
+# is no harmonic shift in McLachlan
+ML_CCZ4::harmonicN = 1 # 1+log
+ML_CCZ4::harmonicF = 2.0 # 1+log
+ML_CCZ4::ShiftGammaCoeff = 1.0
+ML_CCZ4::BetaDriver = 2.0
+ML_CCZ4::LapseAdvectionCoeff = 1.0
+ML_CCZ4::ShiftAdvectionCoeff = 1.0
+ML_CCZ4::GammaShift = 1.0
+ML_CCZ4::dampk1 = 1.0
+
+ML_CCZ4::MinimumLapse = 1.0e-8
+ML_CCZ4::conformalMethod = 1 # 1 for W, 0 for phi
+ML_CCZ4::my_rhs_boundary_condition = "static"
+
+ML_CCZ4::EpsDiss = 0.1
+
+Boundary::radpower = 2
+
+#############################################################
+# Grid
+#############################################################
+
+CoordBase::domainsize = minmax
+
+CoordBase::boundary_size_x_lower = 3
+CoordBase::boundary_size_y_lower = 3
+CoordBase::boundary_size_z_lower = 3
+CoordBase::boundary_shiftout_x_lower = 1
+CoordBase::boundary_shiftout_y_lower = 1
+CoordBase::boundary_shiftout_z_lower = 1
+
+CoordBase::boundary_size_x_upper = 3
+CoordBase::boundary_size_y_upper = 3
+CoordBase::boundary_size_z_upper = 3
+CoordBase::boundary_shiftout_x_upper = 0
+CoordBase::boundary_shiftout_y_upper = 0
+CoordBase::boundary_shiftout_z_upper = 0
+
+CartGrid3D::type = "coordbase"
+CartGrid3D::domain = "full"
+CartGrid3D::avoid_origin = "no"
+
+Periodic::periodic = "yes"
+
+CoordBase::xmin = 0
+CoordBase::ymin = 0
+CoordBase::zmin = 0
+
+CoordBase::xmax = 1
+CoordBase::ymax = 1
+CoordBase::zmax = 1
+
+CoordBase::dx = 0.1
+CoordBase::dy = 0.1
+CoordBase::dz = 0.1
+
+#############################################################
+# Carpet
+#############################################################
+
+Carpet::ghost_size = 3
+Carpet::domain_from_coordbase = "yes"
+Carpet::init_3_timelevels = "no"
+
+#############################################################
+# Timers
+#############################################################
+
+# Do not commit these as testsuite output as they will change on
+# different machines. They are useful for performance monitoring in
+# automated build and test systems.
+TimerReport::output_all_timers_readable = yes
+TimerReport::n_top_timers = 40
+TimerReport::output_schedule_timers = no
+
+#############################################################
+# Time integration
+#############################################################
+
+Cactus::terminate = "iteration"
+Cactus::cctk_itlast = 0
+# Use 0.5 for RK4 and 0.25 for ICN
+Time::dtfac = 0.5
+
+MethodOfLines::ode_method = "RK4"
+MethodOfLines::MoL_Intermediate_Steps = 4
+
+#MethodOfLines::ode_method = "generic"
+#MethodOfLines::generic_type = "RK"
+#MethodOfLines::MoL_Intermediate_Steps = 1
+
+MethodOfLines::MoL_Num_Scratch_Levels = 1
+MethodOfLines::MoL_NaN_Check = "no"
+MethodOfLines::initial_data_is_crap = "no"
+
+#############################################################
+# Initial data
+#############################################################
+
+ADMBase::initial_data = "exact"
+ADMBase::initial_lapse = "exact"
+ADMBase::initial_shift = "exact"
+ADMBase::initial_dtlapse = "exact"
+ADMBase::initial_dtshift = "exact"
+
+Exact::exact_model = "Minkowski/shifted gauge wave"
+Exact::Minkowski_gauge_wave__what_fn = "sin"
+Exact::Minkowski_gauge_wave__amplitude = 0.1
+Exact::Minkowski_gauge_wave__omega = 1
+Exact::Minkowski_gauge_wave__lambda = 0.577350269189626
+
+Exact::rotation_euler_psi = -1.9216757376671543544
+Exact::rotation_euler_theta = 0.66214523564555227398
+Exact::rotation_euler_phi = 1.2199169159226388841
+
+Exact::exact_order = 4
+Exact::exact_eps = 1e-2 # This is large to ensure regression tests are insensitive to roundoff
+
+#############################################################
+# Output
+#############################################################
+
+IO::out_dir = $parfile
+IO::out_fileinfo = "none"
+IO::parfile_write = "no"
+CarpetIOBasic::outInfo_every = 1
+CarpetIOBasic::outInfo_vars = "ADMBase::alp"
+
+IOASCII::out1D_every = 1
+IOASCII::out_precision = 19
+IOASCII::out1D_d = no
+IOASCII::out1D_x = yes
+IOASCII::out1D_y = yes
+IOASCII::out1D_z = yes
+IOASCII::out1D_vars = "ADMBase::gxx ADMBase::kxx ML_CCZ4::ML_cons_detg ML_CCZ4::ML_cons_Gamma ML_CCZ4::ML_cons_traceA ML_CCZ4::ML_curv ML_CCZ4::ML_dtlapse ML_CCZ4::ML_dtshift ML_CCZ4::ML_Gamma ML_CCZ4::ML_lapse ML_CCZ4::ML_log_confac ML_CCZ4::ML_metric ML_CCZ4::ML_shift ML_CCZ4::ML_trace_curv ML_CCZ4::ML_Theta ML_CCZ4::ML_curvrhs ML_CCZ4::ML_dtlapserhs ML_CCZ4::ML_dtshiftrhs ML_CCZ4::ML_Gammarhs ML_CCZ4::ML_lapserhs ML_CCZ4::ML_log_confacrhs ML_CCZ4::ML_metricrhs ML_CCZ4::ML_shiftrhs ML_CCZ4::ML_trace_curvrhs ML_CCZ4::ML_Thetarhs"
+
+Carpet::poison_new_timelevels = yes
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/A.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/A.x.asc
new file mode 100644
index 0000000..477e3b6
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/A.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 0
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 0
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 0
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 0
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 0
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 0
+0 0 0 0 0 8 3 3 0 0.5 0 0 0
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 0
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 0
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 0
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 0
+0 0 0 0 0 13 3 3 0 1 0 0 0
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 0
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/A.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/A.y.asc
new file mode 100644
index 0000000..9926d9d
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/A.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 0
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 0
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 0
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 0
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 0
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 0
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 0
+0 0 0 0 0 3 8 3 0 0 0.5 0 0
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 0
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 0
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 0
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 0
+0 0 0 0 0 3 13 3 0 0 1 0 0
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 0
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/A.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/A.z.asc
new file mode 100644
index 0000000..c0a5c6a
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/A.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 0
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 0
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 0
+0 0 0 0 0 3 3 3 0 0 0 0 0
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 0
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 0
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 0
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 0
+0 0 0 0 0 3 3 8 0 0 0 0.5 0
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 0
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 0
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 0
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 0
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 0
+0 0 0 1 0 3 3 8 0 0 0 0.5 0
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 0
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 0
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 0
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 0
+0 0 0 1 0 3 3 13 0 0 0 1 0
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 0
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 0
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Arhs.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Arhs.x.asc
new file mode 100644
index 0000000..477e3b6
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Arhs.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 0
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 0
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 0
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 0
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 0
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 0
+0 0 0 0 0 8 3 3 0 0.5 0 0 0
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 0
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 0
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 0
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 0
+0 0 0 0 0 13 3 3 0 1 0 0 0
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 0
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Arhs.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Arhs.y.asc
new file mode 100644
index 0000000..9926d9d
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Arhs.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 0
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 0
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 0
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 0
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 0
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 0
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 0
+0 0 0 0 0 3 8 3 0 0 0.5 0 0
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 0
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 0
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 0
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 0
+0 0 0 0 0 3 13 3 0 0 1 0 0
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 0
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Arhs.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Arhs.z.asc
new file mode 100644
index 0000000..c0a5c6a
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Arhs.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 0
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 0
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 0
+0 0 0 0 0 3 3 3 0 0 0 0 0
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 0
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 0
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 0
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 0
+0 0 0 0 0 3 3 8 0 0 0 0.5 0
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 0
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 0
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 0
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 0
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 0
+0 0 0 1 0 3 3 8 0 0 0 0.5 0
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 0
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 0
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 0
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 0
+0 0 0 1 0 3 3 13 0 0 0 1 0
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 0
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 0
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At11.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At11.x.asc
new file mode 100644
index 0000000..ee48a38
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At11.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 -0.004268336421319260041
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0.004268336421318102113
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0.006425507527048178111
+0 0 0 0 0 3 3 3 0 0 0 0 1.62832710278356286e-15
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 -0.005178451796062633929
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 -0.003008516424827497107
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 0.003008516424827675784
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 0.005178451796062817809
+0 0 0 0 0 8 3 3 0 0.5 0 0 -2.884946289831959165e-15
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 -0.006425507527046082565
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 -0.004268336421319260041
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 0.004268336421318102113
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 0.006425507527048178111
+0 0 0 0 0 13 3 3 0 1 0 0 1.62832710278356286e-15
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 -0.005178451796062633929
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 -0.003008516424827497107
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At11.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At11.y.asc
new file mode 100644
index 0000000..718c2cd
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At11.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 0.003008516424827910839
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 -0.003008516424827197434
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 -0.005178451796063042456
+0 0 0 0 0 3 3 3 0 0 0 0 1.62832710278356286e-15
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 0.006425507527044504834
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 0.004268336421317569553
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 -0.004268336421317625064
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 -0.006425507527048673374
+0 0 0 0 0 3 8 3 0 0 0.5 0 -9.91582437817545295e-16
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 0.005178451796058797588
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 0.003008516424827910839
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 -0.003008516424827197434
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 -0.005178451796063042456
+0 0 0 0 0 3 13 3 0 0 1 0 1.62832710278356286e-15
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 0.006425507527044504834
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 0.004268336421317569553
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At11.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At11.z.asc
new file mode 100644
index 0000000..7a83f43
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At11.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 0.003008516424827586012
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 -0.00300851642482750925
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 -0.005178451796062960057
+0 0 0 0 0 3 3 3 0 0 0 0 1.62832710278356286e-15
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 0.006425507527044685245
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 0.00426833642131761986
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 -0.004268336421317540062
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 -0.006425507527048104385
+0 0 0 0 0 3 3 8 0 0 0 0.5 -8.157971255852288756e-16
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 0.005178451796058269364
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 0.003008516424827586012
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 0.00426833642131761986
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 -0.004268336421317540062
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 -0.006425507527048104385
+0 0 0 1 0 3 3 8 0 0 0 0.5 -8.157971255852288756e-16
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 0.005178451796058269364
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 0.003008516424827586012
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 -0.00300851642482750925
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 -0.005178451796062960057
+0 0 0 1 0 3 3 13 0 0 0 1 1.62832710278356286e-15
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 0.006425507527044685245
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 0.00426833642131761986
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At11rhs.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At11rhs.x.asc
new file mode 100644
index 0000000..d283dd7
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At11rhs.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 0
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 0.1312857476417988445
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 0.0309558665679778959
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 -0.09241829636818871263
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 -0.09307036330646109579
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 0.02899382069529065145
+0 0 0 0 0 8 3 3 0 0.5 0 0 0.1303588323928048243
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 0.0542434625924902436
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 -0.1151589679900298924
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 -0.1199782882554565333
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 0.05107353390648736169
+0 0 0 0 0 13 3 3 0 1 0 0 0
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 0
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At11rhs.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At11rhs.y.asc
new file mode 100644
index 0000000..ea7c9be
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At11rhs.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 0
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 0
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 0.1312857476417988445
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 0.05107353390648777802
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 -0.1199782882554577268
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 -0.1151589679899906182
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 0.05424346259253626928
+0 0 0 0 0 3 8 3 0 0 0.5 0 0.1303588323927964976
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 0.02899382069531345266
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 -0.09307036330648812972
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 -0.0924182963682043529
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 0.03095586656800380573
+0 0 0 0 0 3 13 3 0 0 1 0 0
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 0
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At11rhs.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At11rhs.z.asc
new file mode 100644
index 0000000..ffbd699
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At11rhs.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 0
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 0
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 0
+0 0 0 0 0 3 3 3 0 0 0 0 0.1312857476417988445
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 0.05107353390650093417
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 -0.1199782882554502883
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 -0.1151589679900315577
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 0.0542434625924743466
+0 0 0 0 0 3 3 8 0 0 0 0.5 0
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 0
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 0
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 0
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 0
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 0
+0 0 0 1 0 3 3 8 0 0 0 0.5 0.1303588323927979131
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 0.02899382069533699979
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 -0.09307036330648654765
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 -0.09241829636820605987
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 0.0309558665679862087
+0 0 0 1 0 3 3 13 0 0 0 1 0
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 0
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 0
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At12.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At12.x.asc
new file mode 100644
index 0000000..7f8d740
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At12.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 -0.06305158118906070697
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0.06305158118905931919
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0.1575503876315908769
+0 0 0 0 0 3 3 3 0 0 0 0 0.1813805949244508275
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 0.1373300779859493725
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 0.05045863700046659961
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 -0.05045863700046622491
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 -0.1373300779859512599
+0 0 0 0 0 8 3 3 0 0.5 0 0 -0.1813805949244477467
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 -0.1575503876315910434
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 -0.06305158118906070697
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 0.06305158118905931919
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 0.1575503876315908769
+0 0 0 0 0 13 3 3 0 1 0 0 0.1813805949244508275
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 0.1373300779859493725
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 0.05045863700046659961
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At12.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At12.y.asc
new file mode 100644
index 0000000..d391d00
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At12.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 -0.05045863700047144296
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 0.05045863700046668981
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 0.1373300779859519538
+0 0 0 0 0 3 3 3 0 0 0 0 0.1813805949244508275
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 0.1575503876315920149
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 0.06305158118905880571
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 -0.06305158118905655751
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 -0.1575503876315918761
+0 0 0 0 0 3 8 3 0 0 0.5 0 -0.1813805949244499116
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 -0.1373300779859500664
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 -0.05045863700047144296
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 0.05045863700046668981
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 0.1373300779859519538
+0 0 0 0 0 3 13 3 0 0 1 0 0.1813805949244508275
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 0.1575503876315920149
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 0.06305158118905880571
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At12.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At12.z.asc
new file mode 100644
index 0000000..d7e6447
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At12.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 -0.05045863700047131112
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 0.05045863700046598899
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 0.137330077985950566
+0 0 0 0 0 3 3 3 0 0 0 0 0.1813805949244508275
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 0.157550387631591654
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 0.06305158118905931919
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 -0.06305158118905729303
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 -0.1575503876315925422
+0 0 0 0 0 3 3 8 0 0 0 0.5 -0.1813805949244500226
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 -0.1373300779859505938
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 -0.05045863700047131112
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 0.06305158118905931919
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 -0.06305158118905729303
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 -0.1575503876315925422
+0 0 0 1 0 3 3 8 0 0 0 0.5 -0.1813805949244500226
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 -0.1373300779859505938
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 -0.05045863700047131112
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 0.05045863700046598899
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 0.137330077985950566
+0 0 0 1 0 3 3 13 0 0 0 1 0.1813805949244508275
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 0.157550387631591654
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 0.06305158118905931919
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At12rhs.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At12rhs.x.asc
new file mode 100644
index 0000000..5750675
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At12rhs.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 0
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 0.1640780247673136183
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 1.197633859732739392
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 1.717928796884366838
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 1.716665552506672965
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 1.195172086599050498
+0 0 0 0 0 8 3 3 0 0.5 0 0 0.163982066162862955
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 -1.095209771305901469
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 -1.966658005094116035
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 -1.974164206232071672
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 -1.102066545068808967
+0 0 0 0 0 13 3 3 0 1 0 0 0
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 0
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At12rhs.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At12rhs.y.asc
new file mode 100644
index 0000000..71f2233
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At12rhs.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 0
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 0
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 0.1640780247673136183
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 -1.102066545068810743
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 -1.974164206232061014
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 -1.96665800509411115
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 -1.095209771305872604
+0 0 0 0 0 3 8 3 0 0 0.5 0 0.1639820661628834386
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 1.195172086599058936
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 1.716665552506687398
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 1.71792879688438016
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 1.197633859732734951
+0 0 0 0 0 3 13 3 0 0 1 0 0
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 0
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At12rhs.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At12rhs.z.asc
new file mode 100644
index 0000000..8429f45
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At12rhs.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 0
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 0
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 0
+0 0 0 0 0 3 3 3 0 0 0 0 0.1640780247673136183
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 -1.10206654506880608
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 -1.974164206232075003
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 -1.966658005094131356
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 -1.095209771305871271
+0 0 0 0 0 3 3 8 0 0 0 0.5 0
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 0
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 0
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 0
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 0
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 0
+0 0 0 1 0 3 3 8 0 0 0 0.5 0.1639820661628539344
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 1.195172086599058714
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 1.716665552506689396
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 1.717928796884377718
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 1.197633859732710304
+0 0 0 1 0 3 3 13 0 0 0 1 0
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 0
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 0
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At13.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At13.x.asc
new file mode 100644
index 0000000..deefba3
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At13.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 -0.063051581189060249
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0.06305158118905951348
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0.1575503876315908491
+0 0 0 0 0 3 3 3 0 0 0 0 0.1813805949244508831
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 0.1373300779859494003
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 0.0504586370004666343
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 -0.05045863700046620409
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 -0.1373300779859512877
+0 0 0 0 0 8 3 3 0 0.5 0 0 -0.1813805949244477744
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 -0.1575503876315910712
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 -0.063051581189060249
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 0.06305158118905951348
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 0.1575503876315908491
+0 0 0 0 0 13 3 3 0 1 0 0 0.1813805949244508831
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 0.1373300779859494003
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 0.0504586370004666343
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At13.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At13.y.asc
new file mode 100644
index 0000000..5e6c270
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At13.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 -0.05045863700047124173
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 0.05045863700046625266
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 0.1373300779859519816
+0 0 0 0 0 3 3 3 0 0 0 0 0.1813805949244508831
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 0.1575503876315919594
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 0.06305158118905877795
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 -0.06305158118905634934
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 -0.1575503876315911544
+0 0 0 0 0 3 8 3 0 0 0.5 0 -0.1813805949244502724
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 -0.1373300779859497056
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 -0.05045863700047124173
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 0.05045863700046625266
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 0.1373300779859519816
+0 0 0 0 0 3 13 3 0 0 1 0 0.1813805949244508831
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 0.1575503876315919594
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 0.06305158118905877795
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At13.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At13.z.asc
new file mode 100644
index 0000000..d21ac1c
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At13.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 -0.05045863700047148459
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 0.05045863700046603756
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 0.137330077985950344
+0 0 0 0 0 3 3 3 0 0 0 0 0.1813805949244508831
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 0.1575503876315917928
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 0.06305158118905927755
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 -0.06305158118905729303
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 -0.1575503876315925422
+0 0 0 0 0 3 3 8 0 0 0 0.5 -0.1813805949244498283
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 -0.1373300779859520648
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 -0.05045863700047148459
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 0.06305158118905927755
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 -0.06305158118905729303
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 -0.1575503876315925422
+0 0 0 1 0 3 3 8 0 0 0 0.5 -0.1813805949244498283
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 -0.1373300779859520648
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 -0.05045863700047148459
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 0.05045863700046603756
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 0.137330077985950344
+0 0 0 1 0 3 3 13 0 0 0 1 0.1813805949244508831
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 0.1575503876315917928
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 0.06305158118905927755
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At13rhs.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At13rhs.x.asc
new file mode 100644
index 0000000..f6b2232
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At13rhs.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 0
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 0.1640780247673127301
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 1.197633859732741612
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 1.71792879688436595
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 1.716665552506651427
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 1.195172086599062933
+0 0 0 0 0 8 3 3 0 0.5 0 0 0.1639820661628648146
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 -1.095209771305893476
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 -1.966658005094109152
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 -1.974164206232054131
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 -1.102066545068837167
+0 0 0 0 0 13 3 3 0 1 0 0 0
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 0
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At13rhs.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At13rhs.y.asc
new file mode 100644
index 0000000..2cdf24d
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At13rhs.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 0
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 0
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 0.1640780247673127301
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 -1.102066545068818293
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 -1.974164206232062568
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 -1.966658005094106709
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 -1.095209771305882374
+0 0 0 0 0 3 8 3 0 0 0.5 0 0.1639820661628814402
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 1.195172086599075811
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 1.71666555250668984
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 1.717928796884374387
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 1.197633859732722739
+0 0 0 0 0 3 13 3 0 0 1 0 0
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 0
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At13rhs.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At13rhs.z.asc
new file mode 100644
index 0000000..8eb921b
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At13rhs.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 0
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 0
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 0
+0 0 0 0 0 3 3 3 0 0 0 0 0.1640780247673127301
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 -1.102066545068820957
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 -1.974164206232042584
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 -1.966658005094123807
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 -1.095209771305871715
+0 0 0 0 0 3 3 8 0 0 0 0.5 0
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 0
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 0
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 0
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 0
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 0
+0 0 0 1 0 3 3 8 0 0 0 0.5 0.1639820661628741683
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 1.195172086599057382
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 1.716665552506670522
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 1.717928796884380382
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 1.197633859732734507
+0 0 0 1 0 3 3 13 0 0 0 1 0
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 0
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 0
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At22.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At22.x.asc
new file mode 100644
index 0000000..2fd10aa
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At22.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 -0.004268336421318786461
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0.0042683364213229949
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0.006425507527044411159
+0 0 0 0 0 3 3 3 0 0 0 0 -2.090920029710711353e-15
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 -0.005178451796062851636
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 -0.003008516424827362232
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 0.003008516424827217817
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 0.005178451796061292987
+0 0 0 0 0 8 3 3 0 0.5 0 0 1.417167930590521443e-15
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 -0.006425507527047243095
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 -0.004268336421318786461
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 0.0042683364213229949
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 0.006425507527044411159
+0 0 0 0 0 13 3 3 0 1 0 0 -2.090920029710711353e-15
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 -0.005178451796062851636
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 -0.003008516424827362232
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At22.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At22.y.asc
new file mode 100644
index 0000000..157901b
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At22.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 0.003008516424827924283
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 -0.003008516424828126812
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 -0.005178451796062824748
+0 0 0 0 0 3 3 3 0 0 0 0 -2.090920029710711353e-15
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 0.006425507527048243163
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 0.004268336421321644418
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 -0.004268336421321090174
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 -0.0064255075270475406
+0 0 0 0 0 3 8 3 0 0 0.5 0 1.756219548129717143e-15
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 0.005178451796059886994
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 0.003008516424827924283
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 -0.003008516424828126812
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 -0.005178451796062824748
+0 0 0 0 0 3 13 3 0 0 1 0 -2.090920029710711353e-15
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 0.006425507527048243163
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 0.004268336421321644418
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At22.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At22.z.asc
new file mode 100644
index 0000000..b50c321
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At22.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 0.003008516424827491469
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 -0.003008516424827307589
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 -0.005178451796062633061
+0 0 0 0 0 3 3 3 0 0 0 0 -2.090920029710711353e-15
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 0.006425507527048310817
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 0.004268336421321694725
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 -0.004268336421321420639
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 -0.006425507527048500769
+0 0 0 0 0 3 3 8 0 0 0 0.5 2.542627523905869758e-15
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 0.005178451796058377785
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 0.003008516424827491469
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 0.004268336421321694725
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 -0.004268336421321420639
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 -0.006425507527048500769
+0 0 0 1 0 3 3 8 0 0 0 0.5 2.542627523905869758e-15
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 0.005178451796058377785
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 0.003008516424827491469
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 -0.003008516424827307589
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 -0.005178451796062633061
+0 0 0 1 0 3 3 13 0 0 0 1 -2.090920029710711353e-15
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 0.006425507527048310817
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 0.004268336421321694725
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At22rhs.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At22rhs.x.asc
new file mode 100644
index 0000000..9db54b5
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At22rhs.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 0
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 0.1312857476418024805
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 0.03095586656797455483
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 -0.0924182963682214087
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 -0.09307036330644882782
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 0.02899382069532239342
+0 0 0 0 0 8 3 3 0 0.5 0 0 0.1303588323927993287
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 0.05424346259249259589
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 -0.1151589679900048291
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 -0.1199782882554063235
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 0.05107353390652463743
+0 0 0 0 0 13 3 3 0 1 0 0 0
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 0
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At22rhs.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At22rhs.y.asc
new file mode 100644
index 0000000..5d2aa2e
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At22rhs.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 0
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 0
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 0.1312857476418024805
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 0.05107353390649211483
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 -0.1199782882554328023
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 -0.1151589679900262425
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 0.05424346259248058466
+0 0 0 0 0 3 8 3 0 0 0.5 0 0.1303588323927935833
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 0.02899382069529851322
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 -0.09307036330647913691
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 -0.09241829636820428351
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 0.03095586656800607475
+0 0 0 0 0 3 13 3 0 0 1 0 0
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 0
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At22rhs.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At22rhs.z.asc
new file mode 100644
index 0000000..e0423b9
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At22rhs.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 0
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 0
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 0
+0 0 0 0 0 3 3 3 0 0 0 0 0.1312857476418024805
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 0.0510735339064524313
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 -0.1199782882554209229
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 -0.1151589679900030944
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 0.05424346259251083824
+0 0 0 0 0 3 3 8 0 0 0 0.5 0
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 0
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 0
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 0
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 0
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 0
+0 0 0 1 0 3 3 8 0 0 0 0.5 0.1303588323927944992
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 0.02899382069529283373
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 -0.09307036330647888711
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 -0.09241829636821115301
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 0.03095586656800623088
+0 0 0 1 0 3 3 13 0 0 0 1 0
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 0
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 0
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At23.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At23.x.asc
new file mode 100644
index 0000000..eb9ba0d
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At23.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 0.06305158118906060982
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 -0.06305158118905883347
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 -0.1575503876315908214
+0 0 0 0 0 3 3 3 0 0 0 0 -0.1813805949244508831
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 -0.1373300779859494836
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 -0.05045863700046648859
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 0.0504586370004660098
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 0.1373300779859505938
+0 0 0 0 0 8 3 3 0 0.5 0 0 0.1813805949244481353
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 0.1575503876315904883
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 0.06305158118906060982
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 -0.06305158118905883347
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 -0.1575503876315908214
+0 0 0 0 0 13 3 3 0 1 0 0 -0.1813805949244508831
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 -0.1373300779859494836
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 -0.05045863700046648859
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At23.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At23.y.asc
new file mode 100644
index 0000000..0cd10a7
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At23.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 0.05045863700047117234
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 -0.05045863700046684247
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 -0.1373300779859518428
+0 0 0 0 0 3 3 3 0 0 0 0 -0.1813805949244508831
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 -0.1575503876315919594
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 -0.06305158118905872244
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 0.0630515811890567518
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 0.1575503876315918761
+0 0 0 0 0 3 8 3 0 0 0.5 0 0.1813805949244499116
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 0.137330077985950233
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 0.05045863700047117234
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 -0.05045863700046684247
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 -0.1373300779859518428
+0 0 0 0 0 3 13 3 0 0 1 0 -0.1813805949244508831
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 -0.1575503876315919594
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 -0.06305158118905872244
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At23.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At23.z.asc
new file mode 100644
index 0000000..dfa03ab
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At23.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 0.0504586370004715401
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 -0.05045863700046582939
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 -0.137330077985950455
+0 0 0 0 0 3 3 3 0 0 0 0 -0.1813805949244508831
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 -0.1575503876315918206
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 -0.06305158118905927755
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 0.06305158118905744569
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 0.1575503876315924867
+0 0 0 0 0 3 3 8 0 0 0 0.5 0.1813805949244496896
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 0.1373300779859522314
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 0.0504586370004715401
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 -0.06305158118905927755
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 0.06305158118905744569
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 0.1575503876315924867
+0 0 0 1 0 3 3 8 0 0 0 0.5 0.1813805949244496896
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 0.1373300779859522314
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 0.0504586370004715401
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 -0.05045863700046582939
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 -0.137330077985950455
+0 0 0 1 0 3 3 13 0 0 0 1 -0.1813805949244508831
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 -0.1575503876315918206
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 -0.06305158118905927755
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At23rhs.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At23rhs.x.asc
new file mode 100644
index 0000000..339026b
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At23rhs.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 0
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 -0.1640780247673317704
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 -1.197633859732750494
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 -1.717928796884381271
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 -1.716665552506672743
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 -1.19517208659904961
+0 0 0 0 0 8 3 3 0 0.5 0 0 -0.1639820661628783316
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 1.095209771305900803
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 1.966658005094150008
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 1.974164206232112306
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 1.102066545068814962
+0 0 0 0 0 13 3 3 0 1 0 0 0
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 0
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At23rhs.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At23rhs.y.asc
new file mode 100644
index 0000000..b482203
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At23rhs.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 0
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 0
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 -0.1640780247673317704
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 1.102066545068816961
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 1.97416420623210076
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 1.966658005094119144
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 1.09520977130590258
+0 0 0 0 0 3 8 3 0 0 0.5 0 -0.1639820661628513809
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 -1.195172086599072259
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 -1.716665552506679626
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 -1.717928796884391485
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 -1.197633859732729622
+0 0 0 0 0 3 13 3 0 0 1 0 0
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 0
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At23rhs.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At23rhs.z.asc
new file mode 100644
index 0000000..9b2dfee
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At23rhs.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 0
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 0
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 0
+0 0 0 0 0 3 3 3 0 0 0 0 -0.1640780247673317704
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 1.102066545068809411
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 1.974164206232107199
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 1.966658005094129136
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 1.095209771305874824
+0 0 0 0 0 3 3 8 0 0 0 0.5 0
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 0
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 0
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 0
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 0
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 0
+0 0 0 1 0 3 3 8 0 0 0 0.5 -0.1639820661628633436
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 -1.195172086599071593
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 -1.716665552506682957
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 -1.717928796884373943
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 -1.197633859732724959
+0 0 0 1 0 3 3 13 0 0 0 1 0
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 0
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 0
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At33.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At33.x.asc
new file mode 100644
index 0000000..d548c47
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At33.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 -0.004268336421323083371
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0.00426833642131976658
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0.006425507527048234489
+0 0 0 0 0 3 3 3 0 0 0 0 4.625929269271485914e-16
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 -0.005178451796051549913
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 -0.003008516424835124253
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 0.003008516424835013664
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 0.005178451796053150195
+0 0 0 0 0 8 3 3 0 0.5 0 0 1.528190233053037097e-15
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 -0.006425507527047385342
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 -0.004268336421323083371
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 0.00426833642131976658
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 0.006425507527048234489
+0 0 0 0 0 13 3 3 0 1 0 0 4.625929269271485914e-16
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 -0.005178451796051549913
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 -0.003008516424835124253
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At33.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At33.y.asc
new file mode 100644
index 0000000..7f04c2f
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At33.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 0.003008516424834979403
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 -0.00300851642483466325
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 -0.005178451796051496137
+0 0 0 0 0 3 3 3 0 0 0 0 4.625929269271485914e-16
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 0.00642550752704821454
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 0.004268336421321557682
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 -0.004268336421321606254
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 -0.006425507527044707796
+0 0 0 0 0 3 8 3 0 0 0.5 0 -8.250489841237718139e-16
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 0.005178451796058416816
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 0.003008516424834979403
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 -0.00300851642483466325
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 -0.005178451796051496137
+0 0 0 0 0 3 13 3 0 0 1 0 4.625929269271485914e-16
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 0.00642550752704821454
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 0.004268336421321557682
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At33.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At33.z.asc
new file mode 100644
index 0000000..aa4a15d
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At33.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 0.003008516424835765233
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 -0.003008516424835055731
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 -0.005178451796051603689
+0 0 0 0 0 3 3 3 0 0 0 0 4.625929269271485914e-16
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 0.006425507527047942188
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 0.004268336421321565488
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 -0.004268336421321521253
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 -0.006425507527044422434
+0 0 0 0 0 3 3 8 0 0 0 0.5 -1.78724227213224075e-15
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 0.005178451796060638129
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 0.003008516424835765233
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 0.004268336421321565488
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 -0.004268336421321521253
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 -0.006425507527044422434
+0 0 0 1 0 3 3 8 0 0 0 0.5 -1.78724227213224075e-15
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 0.005178451796060638129
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 0.003008516424835765233
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 -0.003008516424835055731
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 -0.005178451796051603689
+0 0 0 1 0 3 3 13 0 0 0 1 4.625929269271485914e-16
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 0.006425507527047942188
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 0.004268336421321565488
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At33rhs.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At33rhs.x.asc
new file mode 100644
index 0000000..3a6e890
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At33rhs.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 0
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 0.1312857476418074765
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 0.03095586656802034806
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 -0.09241829636823845062
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 -0.0930703633065669278
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 0.02899382069533376627
+0 0 0 0 0 8 3 3 0 0.5 0 0 0.1303588323927889481
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 0.05424346259249124974
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 -0.1151589679900136276
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 -0.1199782882554694119
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 0.05107353390643231544
+0 0 0 0 0 13 3 3 0 1 0 0 0
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 0
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At33rhs.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At33rhs.y.asc
new file mode 100644
index 0000000..06334f1
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At33rhs.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 0
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 0
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 0.1312857476418074765
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 0.05107353390646442864
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 -0.1199782882554401575
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 -0.1151589679900307528
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 0.05424346259245523688
+0 0 0 0 0 3 8 3 0 0 0.5 0 0.1303588323928028536
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 0.02899382069533373851
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 -0.09307036330651012601
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 -0.09241829636824162864
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 0.03095586656796600264
+0 0 0 0 0 3 13 3 0 0 1 0 0
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 0
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At33rhs.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At33rhs.z.asc
new file mode 100644
index 0000000..859e78f
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/At33rhs.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 0
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 0
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 0
+0 0 0 0 0 3 3 3 0 0 0 0 0.1312857476418074765
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 0.05107353390649190666
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 -0.1199782882554585872
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 -0.1151589679900156399
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 0.05424346259248891133
+0 0 0 0 0 3 3 8 0 0 0 0.5 0
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 0
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 0
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 0
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 0
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 0
+0 0 0 1 0 3 3 8 0 0 0 0.5 0.1303588323928010773
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 0.02899382069531615536
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 -0.09307036330651176359
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 -0.09241829636823219174
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 0.03095586656798535521
+0 0 0 1 0 3 3 13 0 0 0 1 0
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 0
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 0
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B1.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B1.x.asc
new file mode 100644
index 0000000..4e47ffd
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B1.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 -0.261533743509176686
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0.2631960600575807829
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0.6098815089448363924
+0 0 0 0 0 3 3 3 0 0 0 0 0.6283155970682403613
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 0.4281815728329479431
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 0.1479927352531239526
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 -0.1477785858613959169
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 -0.4283473856400248359
+0 0 0 0 0 8 3 3 0 0.5 0 0 -0.6283155970682403613
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 -0.6101741936052138549
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 -0.261533743509176686
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 0.2631960600575807829
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 0.6098815089448363924
+0 0 0 0 0 13 3 3 0 1 0 0 0.6283155970682403613
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 0.4281815728329479431
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 0.1479927352531239526
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B1.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B1.y.asc
new file mode 100644
index 0000000..a1219e6
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B1.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 -0.1477785858613976933
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 0.1479927352531235918
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 0.428181572832947277
+0 0 0 0 0 3 3 3 0 0 0 0 0.6283155970682403613
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 0.6098815089448375026
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 0.2631960600575816711
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 -0.2615337435091759088
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 -0.6101741936052124116
+0 0 0 0 0 3 8 3 0 0 0.5 0 -0.6283155970682409164
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 -0.4283473856400268343
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 -0.1477785858613976933
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 0.1479927352531235918
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 0.428181572832947277
+0 0 0 0 0 3 13 3 0 0 1 0 0.6283155970682403613
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 0.6098815089448375026
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 0.2631960600575816711
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B1.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B1.z.asc
new file mode 100644
index 0000000..99a8f2b
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B1.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 -0.147778585861397721
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 0.1479927352531244522
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 0.4281815728329484427
+0 0 0 0 0 3 3 3 0 0 0 0 0.6283155970682403613
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 0.6098815089448363924
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 0.2631960600575822262
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 -0.261533743509176464
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 -0.6101741936052117454
+0 0 0 0 0 3 3 8 0 0 0 0.5 -0.6283155970682410274
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 -0.4283473856400252799
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 -0.147778585861397721
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 0.2631960600575822262
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 -0.261533743509176464
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 -0.6101741936052117454
+0 0 0 1 0 3 3 8 0 0 0 0.5 -0.6283155970682410274
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 -0.4283473856400252799
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 -0.147778585861397721
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 0.1479927352531244522
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 0.4281815728329484427
+0 0 0 1 0 3 3 13 0 0 0 1 0.6283155970682403613
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 0.6098815089448363924
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 0.2631960600575822262
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B1rhs.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B1rhs.x.asc
new file mode 100644
index 0000000..e2cf5ca
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B1rhs.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 0
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 -0.5167747652716112583
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 2.111260102827940965
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 3.608362565846253922
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 4.194557643362228916
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 3.801245606206421268
+0 0 0 0 0 8 3 3 0 0.5 0 0 1.984084321824042929
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 -1.113033306189567195
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 -4.029674089309144946
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 -5.165151526498789281
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 -3.607571465488409679
+0 0 0 0 0 13 3 3 0 1 0 0 0
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 0
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B1rhs.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B1rhs.y.asc
new file mode 100644
index 0000000..6288922
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B1rhs.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 0
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 0
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 -0.5167747652716112583
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 -3.607571465488292883
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 -5.165151526498719114
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 -4.029674089309077445
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 -1.113033306189512572
+0 0 0 0 0 3 8 3 0 0 0.5 0 1.984084321823773589
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 3.801245606206206773
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 4.194557643362332833
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 3.608362565846042092
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 2.111260102828000029
+0 0 0 0 0 3 13 3 0 0 1 0 0
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 0
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B1rhs.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B1rhs.z.asc
new file mode 100644
index 0000000..caa70f2
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B1rhs.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 0
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 0
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 0
+0 0 0 0 0 3 3 3 0 0 0 0 -0.5167747652716112583
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 -3.60757146548837504
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 -5.165151526498791057
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 -4.029674089309119189
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 -1.113033306189529448
+0 0 0 0 0 3 3 8 0 0 0 0.5 0
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 0
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 0
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 0
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 0
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 0
+0 0 0 1 0 3 3 8 0 0 0 0.5 1.984084321823967434
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 3.801245606206437255
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 4.194557643362333721
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 3.608362565846204184
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 2.111260102827813956
+0 0 0 1 0 3 3 13 0 0 0 1 0
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 0
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 0
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B2.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B2.x.asc
new file mode 100644
index 0000000..90c9765
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B2.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 0.261533743509176686
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 -0.2631960600575807829
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 -0.6098815089448363924
+0 0 0 0 0 3 3 3 0 0 0 0 -0.6283155970682403613
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 -0.4281815728329479431
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 -0.1479927352531239526
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 0.1477785858613959169
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 0.4283473856400248359
+0 0 0 0 0 8 3 3 0 0.5 0 0 0.6283155970682403613
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 0.6101741936052138549
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 0.261533743509176686
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 -0.2631960600575807829
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 -0.6098815089448363924
+0 0 0 0 0 13 3 3 0 1 0 0 -0.6283155970682403613
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 -0.4281815728329479431
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 -0.1479927352531239526
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B2.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B2.y.asc
new file mode 100644
index 0000000..768991b
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B2.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 0.1477785858613976933
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 -0.1479927352531235918
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 -0.428181572832947277
+0 0 0 0 0 3 3 3 0 0 0 0 -0.6283155970682403613
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 -0.6098815089448375026
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 -0.2631960600575816711
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 0.2615337435091759088
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 0.6101741936052124116
+0 0 0 0 0 3 8 3 0 0 0.5 0 0.6283155970682409164
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 0.4283473856400268343
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 0.1477785858613976933
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 -0.1479927352531235918
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 -0.428181572832947277
+0 0 0 0 0 3 13 3 0 0 1 0 -0.6283155970682403613
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 -0.6098815089448375026
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 -0.2631960600575816711
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B2.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B2.z.asc
new file mode 100644
index 0000000..0274971
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B2.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 0.147778585861397721
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 -0.1479927352531244522
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 -0.4281815728329484427
+0 0 0 0 0 3 3 3 0 0 0 0 -0.6283155970682403613
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 -0.6098815089448363924
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 -0.2631960600575822262
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 0.261533743509176464
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 0.6101741936052117454
+0 0 0 0 0 3 3 8 0 0 0 0.5 0.6283155970682410274
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 0.4283473856400252799
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 0.147778585861397721
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 -0.2631960600575822262
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 0.261533743509176464
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 0.6101741936052117454
+0 0 0 1 0 3 3 8 0 0 0 0.5 0.6283155970682410274
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 0.4283473856400252799
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 0.147778585861397721
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 -0.1479927352531244522
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 -0.4281815728329484427
+0 0 0 1 0 3 3 13 0 0 0 1 -0.6283155970682403613
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 -0.6098815089448363924
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 -0.2631960600575822262
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B2rhs.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B2rhs.x.asc
new file mode 100644
index 0000000..90c6ae5
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B2rhs.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 0
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 0.5167747652715126705
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 -2.111260102827952512
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 -3.608362565846237047
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 -4.194557643362335497
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 -3.801245606206440808
+0 0 0 0 0 8 3 3 0 0.5 0 0 -1.984084321824045594
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 1.113033306189519678
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 4.029674089309073892
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 5.165151526498786616
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 3.607571465488383478
+0 0 0 0 0 13 3 3 0 1 0 0 0
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 0
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B2rhs.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B2rhs.y.asc
new file mode 100644
index 0000000..bafe87c
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B2rhs.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 0
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 0
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 0.5167747652715126705
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 3.607571465488317308
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 5.16515152649874576
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 4.029674089309224883
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 1.113033306189334937
+0 0 0 0 0 3 8 3 0 0 0.5 0 -1.984084321823895714
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 -3.801245606206220096
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 -4.194557643362433197
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 -3.608362565846053638
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 -2.1112601028279121
+0 0 0 0 0 3 13 3 0 0 1 0 0
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 0
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B2rhs.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B2rhs.z.asc
new file mode 100644
index 0000000..8709bb3
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B2rhs.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 0
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 0
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 0
+0 0 0 0 0 3 3 3 0 0 0 0 0.5167747652715126705
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 3.607571465488220941
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 5.165151526498933165
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 4.029674089309198237
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 1.113033306189343374
+0 0 0 0 0 3 3 8 0 0 0 0.5 0
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 0
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 0
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 0
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 0
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 0
+0 0 0 1 0 3 3 8 0 0 0 0.5 -1.984084321823984531
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 -3.801245606206290706
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 -4.194557643362516686
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 -3.608362565846107373
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 -2.111260102827923202
+0 0 0 1 0 3 3 13 0 0 0 1 0
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 0
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 0
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B3.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B3.x.asc
new file mode 100644
index 0000000..253f1c8
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B3.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 0.2615337435091760754
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 -0.2631960600575809495
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 -0.6098815089448366145
+0 0 0 0 0 3 3 3 0 0 0 0 -0.6283155970682405833
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 -0.4281815728329480542
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 -0.1479927352531242857
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 0.1477785858613956116
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 0.4283473856400249469
+0 0 0 0 0 8 3 3 0 0.5 0 0 0.6283155970682404723
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 0.6101741936052137438
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 0.2615337435091760754
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 -0.2631960600575809495
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 -0.6098815089448366145
+0 0 0 0 0 13 3 3 0 1 0 0 -0.6283155970682405833
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 -0.4281815728329480542
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 -0.1479927352531242857
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B3.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B3.y.asc
new file mode 100644
index 0000000..789d94a
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B3.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 0.1477785858613973602
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 -0.1479927352531234253
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 -0.428181572832947388
+0 0 0 0 0 3 3 3 0 0 0 0 -0.6283155970682405833
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 -0.6098815089448370586
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 -0.2631960600575817266
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 0.2615337435091757978
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 0.6101741936052124116
+0 0 0 0 0 3 8 3 0 0 0.5 0 0.6283155970682410274
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 0.4283473856400265012
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 0.1477785858613973602
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 -0.1479927352531234253
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 -0.428181572832947388
+0 0 0 0 0 3 13 3 0 0 1 0 -0.6283155970682405833
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 -0.6098815089448370586
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 -0.2631960600575817266
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B3.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B3.z.asc
new file mode 100644
index 0000000..30964f6
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B3.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 0.1477785858613973602
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 -0.1479927352531238971
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 -0.4281815728329484427
+0 0 0 0 0 3 3 3 0 0 0 0 -0.6283155970682405833
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 -0.6098815089448366145
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 -0.2631960600575822817
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 0.261533743509176797
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 0.6101741936052116344
+0 0 0 0 0 3 3 8 0 0 0 0.5 0.6283155970682412494
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 0.4283473856400253355
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 0.1477785858613973602
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 -0.2631960600575822817
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 0.261533743509176797
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 0.6101741936052116344
+0 0 0 1 0 3 3 8 0 0 0 0.5 0.6283155970682412494
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 0.4283473856400253355
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 0.1477785858613973602
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 -0.1479927352531238971
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 -0.4281815728329484427
+0 0 0 1 0 3 3 13 0 0 0 1 -0.6283155970682405833
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 -0.6098815089448366145
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 -0.2631960600575822817
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B3rhs.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B3rhs.x.asc
new file mode 100644
index 0000000..572ab4a
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B3rhs.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 0
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 0.516774765271689418
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 -2.111260102827998697
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 -3.608362565846162884
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 -4.194557643362403887
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 -3.80124560620644214
+0 0 0 0 0 8 3 3 0 0.5 0 0 -1.984084321823939678
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 1.113033306189529226
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 4.029674089309173368
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 5.165151526498835466
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 3.60757146548822405
+0 0 0 0 0 13 3 3 0 1 0 0 0
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 0
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B3rhs.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B3rhs.y.asc
new file mode 100644
index 0000000..121b188
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B3rhs.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 0
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 0
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 0.516774765271689418
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 3.607571465488287998
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 5.165151526498837242
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 4.029674089309189355
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 1.11303330618934937
+0 0 0 0 0 3 8 3 0 0 0.5 0 -1.984084321823924357
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 -3.801245606206213434
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 -4.194557643362522015
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 -3.608362565846334746
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 -2.111260102827900997
+0 0 0 0 0 3 13 3 0 0 1 0 0
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 0
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B3rhs.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B3rhs.z.asc
new file mode 100644
index 0000000..767ad10
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/B3rhs.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 0
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 0
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 0
+0 0 0 0 0 3 3 3 0 0 0 0 0.516774765271689418
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 3.607571465488324414
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 5.165151526498734214
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 4.029674089309185803
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 1.11303330618937113
+0 0 0 0 0 3 3 8 0 0 0 0.5 0
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 0
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 0
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 0
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 0
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 0
+0 0 0 1 0 3 3 8 0 0 0 0.5 -1.984084321823877284
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 -3.801245606206260952
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 -4.194557643362346155
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 -3.608362565846219283
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 -2.11126010282795562
+0 0 0 1 0 3 3 13 0 0 0 1 0
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 0
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 0
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Theta.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Theta.x.asc
new file mode 100644
index 0000000..477e3b6
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Theta.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 0
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 0
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 0
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 0
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 0
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 0
+0 0 0 0 0 8 3 3 0 0.5 0 0 0
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 0
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 0
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 0
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 0
+0 0 0 0 0 13 3 3 0 1 0 0 0
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 0
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Theta.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Theta.y.asc
new file mode 100644
index 0000000..9926d9d
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Theta.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 0
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 0
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 0
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 0
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 0
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 0
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 0
+0 0 0 0 0 3 8 3 0 0 0.5 0 0
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 0
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 0
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 0
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 0
+0 0 0 0 0 3 13 3 0 0 1 0 0
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 0
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Theta.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Theta.z.asc
new file mode 100644
index 0000000..c0a5c6a
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Theta.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 0
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 0
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 0
+0 0 0 0 0 3 3 3 0 0 0 0 0
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 0
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 0
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 0
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 0
+0 0 0 0 0 3 3 8 0 0 0 0.5 0
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 0
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 0
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 0
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 0
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 0
+0 0 0 1 0 3 3 8 0 0 0 0.5 0
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 0
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 0
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 0
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 0
+0 0 0 1 0 3 3 13 0 0 0 1 0
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 0
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 0
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Thetarhs.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Thetarhs.x.asc
new file mode 100644
index 0000000..3d321c2
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Thetarhs.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 0
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 0.05500903003092403459
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 0.01906378881481039789
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 -0.005663059630210893688
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 -0.005663059630226696152
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 0.0190637888148563403
+0 0 0 0 0 8 3 3 0 0.5 0 0 0.05500903003109807593
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 0.0210075111148952838
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 -0.09965827115870991293
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 -0.0996582711587111203
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 0.02100751111509069693
+0 0 0 0 0 13 3 3 0 1 0 0 0
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 0
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Thetarhs.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Thetarhs.y.asc
new file mode 100644
index 0000000..3833002
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Thetarhs.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 0
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 0
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 0.05500903003092403459
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 0.02100751111508279353
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 -0.09965827115871864206
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 -0.09965827115872018249
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 0.02100751111508316823
+0 0 0 0 0 3 8 3 0 0 0.5 0 0.05500903003093582377
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 0.0190637888147938972
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 -0.005663059630335620306
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 -0.005663059630332046776
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 0.01906378881484016574
+0 0 0 0 0 3 13 3 0 0 1 0 0
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 0
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Thetarhs.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Thetarhs.z.asc
new file mode 100644
index 0000000..0a931c6
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Thetarhs.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 0
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 0
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 0
+0 0 0 0 0 3 3 3 0 0 0 0 0.05500903003092403459
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 0.02100751111495806692
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 -0.09965827115871764286
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 -0.09965827115872272213
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 0.02100751111496049553
+0 0 0 0 0 3 3 8 0 0 0 0.5 0
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 0
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 0
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 0
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 0
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 0
+0 0 0 1 0 3 3 8 0 0 0 0.5 0.05500903003093256943
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 0.01906378881477906531
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 -0.005663059630342455117
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 -0.005663059630287129581
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 0.01906378881489505239
+0 0 0 1 0 3 3 13 0 0 0 1 0
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 0
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 0
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt1.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt1.x.asc
new file mode 100644
index 0000000..043a3df
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt1.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 -0.1511973670841813833
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0.1511973670841793016
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0.3718616479575347911
+0 0 0 0 0 3 3 3 0 0 0 0 0.4170539798141705279
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 0.3075250631768484677
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 0.1111590284029087966
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 -0.1111590284029082554
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 -0.3075250631768488008
+0 0 0 0 0 8 3 3 0 0.5 0 0 -0.4170539798141684185
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 -0.3718616479575358458
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 -0.1511973670841813833
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 0.1511973670841793016
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 0.3718616479575347911
+0 0 0 0 0 13 3 3 0 1 0 0 0.4170539798141705279
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 0.3075250631768484677
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 0.1111590284029087966
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt1.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt1.y.asc
new file mode 100644
index 0000000..1333623
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt1.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 -0.1111590284029087689
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 0.1111590284029063264
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 0.3075250631768480791
+0 0 0 0 0 3 3 3 0 0 0 0 0.4170539798141705279
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 0.3718616479575355127
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 0.1511973670841792461
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 -0.1511973670841788853
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 -0.3718616479575350131
+0 0 0 0 0 3 8 3 0 0 0.5 0 -0.4170539798141702503
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 -0.3075250631768479681
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 -0.1111590284029087689
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 0.1111590284029063264
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 0.3075250631768480791
+0 0 0 0 0 3 13 3 0 0 1 0 0.4170539798141705279
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 0.3718616479575355127
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 0.1511973670841792461
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt1.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt1.z.asc
new file mode 100644
index 0000000..bbdd778
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt1.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 -0.1111590284029087689
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 0.1111590284029077558
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 0.3075250631768483567
+0 0 0 0 0 3 3 3 0 0 0 0 0.4170539798141705279
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 0.3718616479575355127
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 0.151197367084178802
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 -0.1511973670841788853
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 -0.3718616479575350686
+0 0 0 0 0 3 3 8 0 0 0 0.5 -0.4170539798141702503
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 -0.3075250631768479681
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 -0.1111590284029087689
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 0.151197367084178802
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 -0.1511973670841788853
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 -0.3718616479575350686
+0 0 0 1 0 3 3 8 0 0 0 0.5 -0.4170539798141702503
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 -0.3075250631768479681
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 -0.1111590284029087689
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 0.1111590284029077558
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 0.3075250631768483567
+0 0 0 1 0 3 3 13 0 0 0 1 0.4170539798141705279
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 0.3718616479575355127
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 0.151197367084178802
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt1rhs.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt1rhs.x.asc
new file mode 100644
index 0000000..da0c2b7
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt1rhs.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 0
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 0.7344675437830997522
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 2.869640787754425659
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 3.793188606187775314
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 3.789326475536360039
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 2.861680567185337587
+0 0 0 0 0 8 3 3 0 0.5 0 0 0.7336041905058517942
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 -2.396400053833666277
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 -4.961145808296708815
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 -4.983163255540013381
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 -2.415612171188087132
+0 0 0 0 0 13 3 3 0 1 0 0 0
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 0
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt1rhs.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt1rhs.y.asc
new file mode 100644
index 0000000..965505d
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt1rhs.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 0
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 0
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 0.7344675437830997522
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 -2.41561217118796856
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 -4.983163255539942327
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 -4.961145808296649307
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 -2.396400053833609878
+0 0 0 0 0 3 8 3 0 0 0.5 0 0.7336041905055826762
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 2.861680567185118207
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 3.789326475536455519
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 3.793188606187568368
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 2.869640787754483391
+0 0 0 0 0 3 13 3 0 0 1 0 0
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 0
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt1rhs.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt1rhs.z.asc
new file mode 100644
index 0000000..3dc1ca3
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt1rhs.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 0
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 0
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 0
+0 0 0 0 0 3 3 3 0 0 0 0 0.7344675437830997522
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 -2.415612171188053825
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 -4.983163255540009828
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 -4.961145808296691939
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 -2.39640005383362098
+0 0 0 0 0 3 3 8 0 0 0 0.5 0
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 0
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 0
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 0
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 0
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 0
+0 0 0 1 0 3 3 8 0 0 0 0.5 0.7336041905057754109
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 2.861680567185354018
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 3.789326475536457295
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 3.793188606187729572
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 2.869640787754300426
+0 0 0 1 0 3 3 13 0 0 0 1 0
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 0
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 0
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt2.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt2.x.asc
new file mode 100644
index 0000000..c9f6e46
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt2.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 0.1511973670841813278
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 -0.1511973670841806894
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 -0.3718616479575345135
+0 0 0 0 0 3 3 3 0 0 0 0 -0.417053979814168807
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 -0.3075250631768485787
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 -0.1111590284029089076
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 0.1111590284029082554
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 0.3075250631768485232
+0 0 0 0 0 8 3 3 0 0.5 0 0 0.417053979814168474
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 0.3718616479575356237
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 0.1511973670841813278
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 -0.1511973670841806894
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 -0.3718616479575345135
+0 0 0 0 0 13 3 3 0 1 0 0 -0.417053979814168807
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 -0.3075250631768485787
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 -0.1111590284029089076
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt2.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt2.y.asc
new file mode 100644
index 0000000..dade4b8
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt2.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 0.1111590284029086162
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 -0.1111590284029064235
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 -0.3075250631768485787
+0 0 0 0 0 3 3 3 0 0 0 0 -0.417053979814168807
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 -0.3718616479575356237
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 -0.1511973670841808004
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 0.1511973670841806616
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 0.3718616479575347356
+0 0 0 0 0 3 8 3 0 0 0.5 0 0.4170539798141684185
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 0.3075250631768480236
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 0.1111590284029086162
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 -0.1111590284029064235
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 -0.3075250631768485787
+0 0 0 0 0 3 13 3 0 0 1 0 -0.417053979814168807
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 -0.3718616479575356237
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 -0.1511973670841808004
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt2.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt2.z.asc
new file mode 100644
index 0000000..40c8d39
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt2.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 0.1111590284029087827
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 -0.1111590284029073672
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 -0.3075250631768484122
+0 0 0 0 0 3 3 3 0 0 0 0 -0.417053979814168807
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 -0.3718616479575356237
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 -0.1511973670841803563
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 0.1511973670841806061
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 0.3718616479575351241
+0 0 0 0 0 3 3 8 0 0 0 0.5 0.4170539798141684185
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 0.3075250631768476905
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 0.1111590284029087827
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 -0.1511973670841803563
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 0.1511973670841806061
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 0.3718616479575351241
+0 0 0 1 0 3 3 8 0 0 0 0.5 0.4170539798141684185
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 0.3075250631768476905
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 0.1111590284029087827
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 -0.1111590284029073672
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 -0.3075250631768484122
+0 0 0 1 0 3 3 13 0 0 0 1 -0.417053979814168807
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 -0.3718616479575356237
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 -0.1511973670841803563
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt2rhs.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt2rhs.x.asc
new file mode 100644
index 0000000..d9a8494
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt2rhs.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 0
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 -0.7344675437831997833
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 -2.869640787754434097
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 -3.793188606187759326
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 -3.789326475536467065
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 -2.861680567185357127
+0 0 0 0 0 8 3 3 0 0.5 0 0 -0.7336041905058550139
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 2.396400053833622756
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 4.961145808296633319
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 4.983163255540013381
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 2.415612171188062707
+0 0 0 0 0 13 3 3 0 1 0 0 0
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 0
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt2rhs.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt2rhs.y.asc
new file mode 100644
index 0000000..8d08097
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt2rhs.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 0
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 0
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 -0.7344675437831997833
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 2.415612171187994317
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 4.983163255539971637
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 4.961145808296788751
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 2.396400053833437127
+0 0 0 0 0 3 8 3 0 0 0.5 0 -0.7336041905057038015
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 -2.861680567185132418
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 -3.78932647553655455
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 -3.793188606187582579
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 -2.869640787754391464
+0 0 0 0 0 3 13 3 0 0 1 0 0
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 0
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt2rhs.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt2rhs.z.asc
new file mode 100644
index 0000000..916b3b6
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt2rhs.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 0
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 0
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 0
+0 0 0 0 0 3 3 3 0 0 0 0 -0.7344675437831997833
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 2.415612171187903279
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 4.983163255540152825
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 4.961145808296762993
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 2.396400053833439792
+0 0 0 0 0 3 3 8 0 0 0 0.5 0
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 0
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 0
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 0
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 0
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 0
+0 0 0 1 0 3 3 8 0 0 0 0.5 -0.7336041905057913981
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 -2.861680567185207469
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 -3.789326475536639816
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 -3.793188606187636758
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 -2.869640787754407452
+0 0 0 1 0 3 3 13 0 0 0 1 0
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 0
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 0
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt3.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt3.x.asc
new file mode 100644
index 0000000..b3d53e8
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt3.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 0.1511973670841814665
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 -0.1511973670841791351
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 -0.3718616479575344025
+0 0 0 0 0 3 3 3 0 0 0 0 -0.4170539798141703614
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 -0.3075250631768485232
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 -0.1111590284029074643
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 0.1111590284029082693
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 0.3075250631768481346
+0 0 0 0 0 8 3 3 0 0.5 0 0 0.417053979814168585
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 0.3718616479575356792
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 0.1511973670841814665
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 -0.1511973670841791351
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 -0.3718616479575344025
+0 0 0 0 0 13 3 3 0 1 0 0 -0.4170539798141703614
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 -0.3075250631768485232
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 -0.1111590284029074643
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt3.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt3.y.asc
new file mode 100644
index 0000000..a1b460c
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt3.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 0.1111590284029072284
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 -0.1111590284029083942
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 -0.3075250631768481346
+0 0 0 0 0 3 3 3 0 0 0 0 -0.4170539798141703614
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 -0.3718616479575356792
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 -0.1511973670841795514
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 0.151197367084178913
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 0.3718616479575347356
+0 0 0 0 0 3 8 3 0 0 0.5 0 0.4170539798141714716
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 0.3075250631768492449
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 0.1111590284029072284
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 -0.1111590284029083942
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 -0.3075250631768481346
+0 0 0 0 0 3 13 3 0 0 1 0 -0.4170539798141703614
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 -0.3718616479575356792
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 -0.1511973670841795514
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt3.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt3.z.asc
new file mode 100644
index 0000000..f30da97
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt3.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 0.1111590284029072284
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 -0.1111590284029086717
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 -0.3075250631768486897
+0 0 0 0 0 3 3 3 0 0 0 0 -0.4170539798141703614
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 -0.3718616479575357348
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 -0.151197367084178802
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 0.1511973670841788575
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 0.3718616479575351796
+0 0 0 0 0 3 3 8 0 0 0 0.5 0.4170539798141714716
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 0.3075250631768489118
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 0.1111590284029072284
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 -0.151197367084178802
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 0.1511973670841788575
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 0.3718616479575351796
+0 0 0 1 0 3 3 8 0 0 0 0.5 0.4170539798141714716
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 0.3075250631768489118
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 0.1111590284029072284
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 -0.1111590284029086717
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 -0.3075250631768486897
+0 0 0 1 0 3 3 13 0 0 0 1 -0.4170539798141703614
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 -0.3718616479575357348
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 -0.151197367084178802
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt3rhs.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt3rhs.x.asc
new file mode 100644
index 0000000..5f8125e
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt3rhs.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 0
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 -0.7344675437830222586
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 -2.869640787754485167
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 -3.793188606187688272
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 -3.789326475536535899
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 -2.861680567185356683
+0 0 0 0 0 8 3 3 0 0.5 0 0 -0.7336041905057489876
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 2.396400053833629418
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 4.961145808296732795
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 4.983163255540061343
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 2.415612171187899282
+0 0 0 0 0 13 3 3 0 1 0 0 0
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 0
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt3rhs.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt3rhs.y.asc
new file mode 100644
index 0000000..89f1ce5
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt3rhs.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 0
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 0
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 -0.7344675437830222586
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 2.415612171187965895
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 4.983163255540059566
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 4.961145808296759441
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 2.396400053833449117
+0 0 0 0 0 3 8 3 0 0 0.5 0 -0.7336041905057337775
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 -2.861680567185130197
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 -3.789326475536646033
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 -3.793188606187856582
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 -2.869640787754383915
+0 0 0 0 0 3 13 3 0 0 1 0 0
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 0
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt3rhs.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt3rhs.z.asc
new file mode 100644
index 0000000..7a96d6c
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/Xt3rhs.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 0
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 0
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 0
+0 0 0 0 0 3 3 3 0 0 0 0 -0.7344675437830222586
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 2.415612171188002755
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 4.983163255539952985
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 4.961145808296759441
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 2.396400053833463328
+0 0 0 0 0 3 3 8 0 0 0 0.5 0
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 0
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 0
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 0
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 0
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 0
+0 0 0 1 0 3 3 8 0 0 0 0.5 -0.7336041905056853718
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 -2.861680567185179491
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 -3.789326475536468841
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 -3.793188606187741563
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 -2.869640787754442535
+0 0 0 1 0 3 3 13 0 0 0 1 0
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 0
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 0
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/alpha.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/alpha.x.asc
new file mode 100644
index 0000000..14035a2
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/alpha.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 1.05123802613049433
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 1.05123802613049433
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 1.030751762999378984
+0 0 0 0 0 3 3 3 0 0 0 0 1
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 0.971845969673347021
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 0.9555908659126353122
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 0.9555908659126353122
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 0.97184596967334691
+0 0 0 0 0 8 3 3 0 0.5 0 0 1
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 1.030751762999378762
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 1.05123802613049433
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 1.05123802613049433
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 1.030751762999378984
+0 0 0 0 0 13 3 3 0 1 0 0 1
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 0.971845969673347021
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 0.9555908659126353122
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/alpha.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/alpha.y.asc
new file mode 100644
index 0000000..9f8bad9
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/alpha.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 0.9555908659126355342
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 0.9555908659126353122
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 0.97184596967334691
+0 0 0 0 0 3 3 3 0 0 0 0 1
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 1.030751762999378762
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 1.05123802613049433
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 1.05123802613049433
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 1.030751762999378984
+0 0 0 0 0 3 8 3 0 0 0.5 0 1.000000000000000222
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 0.971845969673347021
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 0.9555908659126355342
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 0.9555908659126353122
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 0.97184596967334691
+0 0 0 0 0 3 13 3 0 0 1 0 1
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 1.030751762999378762
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 1.05123802613049433
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/alpha.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/alpha.z.asc
new file mode 100644
index 0000000..51fb7cd
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/alpha.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 0.9555908659126355342
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 0.9555908659126353122
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 0.97184596967334691
+0 0 0 0 0 3 3 3 0 0 0 0 1
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 1.030751762999378762
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 1.05123802613049433
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 1.05123802613049433
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 1.030751762999378762
+0 0 0 0 0 3 3 8 0 0 0 0.5 1.000000000000000222
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 0.971845969673347021
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 0.9555908659126355342
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 1.05123802613049433
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 1.05123802613049433
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 1.030751762999378762
+0 0 0 1 0 3 3 8 0 0 0 0.5 1.000000000000000222
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 0.971845969673347021
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 0.9555908659126355342
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 0.9555908659126353122
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 0.97184596967334691
+0 0 0 1 0 3 3 13 0 0 0 1 1
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 1.030751762999378762
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 1.05123802613049433
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/alpharhs.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/alpharhs.x.asc
new file mode 100644
index 0000000..72139b2
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/alpharhs.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 0
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 1.088509578759588647
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 0.8080461302139263502
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 0.2930925669601651129
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 -0.2932215826043919615
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 -0.8077032713780902817
+0 0 0 0 0 8 3 3 0 0.5 0 0 -1.08805756033377965
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 -0.9632997441417340267
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 -0.3908616450695627242
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 0.3890015468542239452
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 0.9635523664339373795
+0 0 0 0 0 13 3 3 0 1 0 0 0
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 0
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/alpharhs.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/alpharhs.y.asc
new file mode 100644
index 0000000..850907c
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/alpharhs.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 0
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 0
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 1.088509578759588647
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 0.9635523664339584737
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 0.3890015468542131205
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 -0.3908616450695444056
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 -0.9632997441417366913
+0 0 0 0 0 3 8 3 0 0 0.5 0 -1.088057560333822282
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 -0.8077032713780736284
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 -0.293221582604396791
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 0.2930925669601445183
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 0.8080461302139687607
+0 0 0 0 0 3 13 3 0 0 1 0 0
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 0
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/alpharhs.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/alpharhs.z.asc
new file mode 100644
index 0000000..3254a37
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/alpharhs.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 0
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 0
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 0
+0 0 0 0 0 3 3 3 0 0 0 0 1.088509578759588647
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 0.9635523664339572525
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 0.3890015468542165067
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 -0.3908616450695501232
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 -0.9632997441417412432
+0 0 0 0 0 3 3 8 0 0 0 0.5 0
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 0
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 0
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 0
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 0
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 0
+0 0 0 1 0 3 3 8 0 0 0 0.5 -1.088057560333821394
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 -0.8077032713780708528
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 -0.2932215826044000107
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 0.2930925669601612826
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 0.808046130213930569
+0 0 0 1 0 3 3 13 0 0 0 1 0
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 0
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 0
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta1.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta1.x.asc
new file mode 100644
index 0000000..c295d04
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta1.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 0.06068031441309687524
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0.06068031441309696544
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0.0360550606560913478
+0 0 0 0 0 3 3 3 0 0 0 0 0
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 -0.03205183761762388922
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 -0.05014061747197683105
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 -0.05014061747197684493
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 -0.03205183761762393779
+0 0 0 0 0 8 3 3 0 0.5 0 0 -8.398900904684191565e-17
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 0.03605506065609112576
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 0.06068031441309687524
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 0.06068031441309696544
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 0.0360550606560913478
+0 0 0 0 0 13 3 3 0 1 0 0 0
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 -0.03205183761762388922
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 -0.05014061747197683105
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta1.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta1.y.asc
new file mode 100644
index 0000000..bfa298e
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta1.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 -0.05014061747197681024
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 -0.05014061747197687269
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 -0.03205183761762398637
+0 0 0 0 0 3 3 3 0 0 0 0 0
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 0.03605506065609122984
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 0.06068031441309690299
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 0.06068031441309693075
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 0.03605506065609129923
+0 0 0 0 0 3 8 3 0 0 0.5 0 8.398900904684195263e-17
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 -0.03205183761762380595
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 -0.05014061747197681024
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 -0.05014061747197687269
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 -0.03205183761762398637
+0 0 0 0 0 3 13 3 0 0 1 0 0
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 0.03605506065609122984
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 0.06068031441309690299
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta1.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta1.z.asc
new file mode 100644
index 0000000..019b336
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta1.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 -0.05014061747197681024
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 -0.05014061747197685187
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 -0.0320518376176239031
+0 0 0 0 0 3 3 3 0 0 0 0 0
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 0.03605506065609123678
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 0.06068031441309690299
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 0.06068031441309692381
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 0.03605506065609127148
+0 0 0 0 0 3 3 8 0 0 0 0.5 5.834950656172775855e-17
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 -0.03205183761762385453
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 -0.05014061747197681024
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 0.06068031441309690299
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 0.06068031441309692381
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 0.03605506065609127148
+0 0 0 1 0 3 3 8 0 0 0 0.5 5.834950656172775855e-17
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 -0.03205183761762385453
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 -0.05014061747197681024
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 -0.05014061747197685187
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 -0.0320518376176239031
+0 0 0 1 0 3 3 13 0 0 0 1 0
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 0.03605506065609123678
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 0.06068031441309690299
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta1rhs.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta1rhs.x.asc
new file mode 100644
index 0000000..d60dbd4
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta1rhs.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 0
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 0.6286601217965877009
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 0.4535426456985975352
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 0.1618204095557999045
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 -0.1619805711691723604
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 -0.4533486480770094751
+0 0 0 0 0 8 3 3 0 0.5 0 0 -0.6279710723398931327
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 -0.573636280444789648
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 -0.2376316116062230366
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 0.2366043118770069786
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 0.573940694709090149
+0 0 0 0 0 13 3 3 0 1 0 0 0
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 0
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta1rhs.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta1rhs.y.asc
new file mode 100644
index 0000000..05a2164
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta1rhs.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 0
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 0
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 0.6286601217965877009
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 0.5739406947090913702
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 0.2366043118770077003
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 -0.237631611606222426
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 -0.5736362804447880936
+0 0 0 0 0 3 8 3 0 0 0.5 0 -0.6279710723398934658
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 -0.453348648077011529
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 -0.1619805711691742478
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 0.1618204095557993771
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 0.4535426456985970911
+0 0 0 0 0 3 13 3 0 0 1 0 0
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 0
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta1rhs.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta1rhs.z.asc
new file mode 100644
index 0000000..135ec3d
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta1rhs.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 0
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 0
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 0
+0 0 0 0 0 3 3 3 0 0 0 0 0.6286601217965877009
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 0.57394069470909026
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 0.2366043118770083109
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 -0.2376316116062229811
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 -0.5736362804447874275
+0 0 0 0 0 3 3 8 0 0 0 0.5 0
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 0
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 0
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 0
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 0
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 0
+0 0 0 1 0 3 3 8 0 0 0 0.5 -0.6279710723398935768
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 -0.4533486480770099192
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 -0.1619805711691742478
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 0.1618204095558003486
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 0.4535426456985981458
+0 0 0 1 0 3 3 13 0 0 0 1 0
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 0
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 0
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta2.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta2.x.asc
new file mode 100644
index 0000000..291f9f6
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta2.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 -0.06068031441309687524
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 -0.06068031441309696544
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 -0.0360550606560913478
+0 0 0 0 0 3 3 3 0 0 0 0 0
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 0.03205183761762388922
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 0.05014061747197683105
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 0.05014061747197684493
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 0.03205183761762393779
+0 0 0 0 0 8 3 3 0 0.5 0 0 8.398900904684191565e-17
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 -0.03605506065609112576
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 -0.06068031441309687524
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 -0.06068031441309696544
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 -0.0360550606560913478
+0 0 0 0 0 13 3 3 0 1 0 0 0
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 0.03205183761762388922
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 0.05014061747197683105
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta2.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta2.y.asc
new file mode 100644
index 0000000..f622cc8
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta2.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 0.05014061747197681024
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 0.05014061747197687269
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 0.03205183761762398637
+0 0 0 0 0 3 3 3 0 0 0 0 0
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 -0.03605506065609122984
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 -0.06068031441309690299
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 -0.06068031441309693075
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 -0.03605506065609129923
+0 0 0 0 0 3 8 3 0 0 0.5 0 -8.398900904684195263e-17
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 0.03205183761762380595
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 0.05014061747197681024
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 0.05014061747197687269
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 0.03205183761762398637
+0 0 0 0 0 3 13 3 0 0 1 0 0
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 -0.03605506065609122984
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 -0.06068031441309690299
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta2.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta2.z.asc
new file mode 100644
index 0000000..fec0c1d
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta2.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 0.05014061747197681024
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 0.05014061747197685187
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 0.0320518376176239031
+0 0 0 0 0 3 3 3 0 0 0 0 0
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 -0.03605506065609123678
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 -0.06068031441309690299
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 -0.06068031441309692381
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 -0.03605506065609127148
+0 0 0 0 0 3 3 8 0 0 0 0.5 -5.834950656172775855e-17
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 0.03205183761762385453
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 0.05014061747197681024
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 -0.06068031441309690299
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 -0.06068031441309692381
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 -0.03605506065609127148
+0 0 0 1 0 3 3 8 0 0 0 0.5 -5.834950656172775855e-17
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 0.03205183761762385453
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 0.05014061747197681024
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 0.05014061747197685187
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 0.0320518376176239031
+0 0 0 1 0 3 3 13 0 0 0 1 0
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 -0.03605506065609123678
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 -0.06068031441309690299
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta2rhs.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta2rhs.x.asc
new file mode 100644
index 0000000..53b2eaf
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta2rhs.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 0
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 -0.6286601217965877009
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 -0.4535426456985975352
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 -0.1618204095557999045
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 0.1619805711691723604
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 0.4533486480770094751
+0 0 0 0 0 8 3 3 0 0.5 0 0 0.6279710723398931327
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 0.573636280444789648
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 0.2376316116062230366
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 -0.2366043118770069786
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 -0.573940694709090149
+0 0 0 0 0 13 3 3 0 1 0 0 0
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 0
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta2rhs.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta2rhs.y.asc
new file mode 100644
index 0000000..f93c4b2
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta2rhs.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 0
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 0
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 -0.6286601217965877009
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 -0.5739406947090913702
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 -0.2366043118770077003
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 0.237631611606222426
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 0.5736362804447880936
+0 0 0 0 0 3 8 3 0 0 0.5 0 0.6279710723398934658
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 0.453348648077011529
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 0.1619805711691742478
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 -0.1618204095557993771
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 -0.4535426456985970911
+0 0 0 0 0 3 13 3 0 0 1 0 0
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 0
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta2rhs.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta2rhs.z.asc
new file mode 100644
index 0000000..778cd3b
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta2rhs.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 0
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 0
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 0
+0 0 0 0 0 3 3 3 0 0 0 0 -0.6286601217965877009
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 -0.57394069470909026
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 -0.2366043118770083109
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 0.2376316116062229811
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 0.5736362804447874275
+0 0 0 0 0 3 3 8 0 0 0 0.5 0
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 0
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 0
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 0
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 0
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 0
+0 0 0 1 0 3 3 8 0 0 0 0.5 0.6279710723398935768
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 0.4533486480770099192
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 0.1619805711691742478
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 -0.1618204095558003486
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 -0.4535426456985981458
+0 0 0 1 0 3 3 13 0 0 0 1 0
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 0
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 0
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta3.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta3.x.asc
new file mode 100644
index 0000000..13ea5ba
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta3.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 -0.06068031441309688911
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 -0.06068031441309697238
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 -0.0360550606560913478
+0 0 0 0 0 3 3 3 0 0 0 0 0
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 0.03205183761762389616
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 0.05014061747197683799
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 0.05014061747197685881
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 0.03205183761762394473
+0 0 0 0 0 8 3 3 0 0.5 0 0 8.398900904684192798e-17
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 -0.0360550606560911327
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 -0.06068031441309688911
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 -0.06068031441309697238
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 -0.0360550606560913478
+0 0 0 0 0 13 3 3 0 1 0 0 0
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 0.03205183761762389616
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 0.05014061747197683799
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta3.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta3.y.asc
new file mode 100644
index 0000000..102b849
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta3.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 0.05014061747197682412
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 0.05014061747197687963
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 0.03205183761762398637
+0 0 0 0 0 3 3 3 0 0 0 0 0
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 -0.03605506065609123678
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 -0.06068031441309690993
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 -0.06068031441309694463
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 -0.03605506065609130617
+0 0 0 0 0 3 8 3 0 0 0.5 0 -8.398900904684196496e-17
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 0.03205183761762381289
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 0.05014061747197682412
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 0.05014061747197687963
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 0.03205183761762398637
+0 0 0 0 0 3 13 3 0 0 1 0 0
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 -0.03605506065609123678
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 -0.06068031441309690993
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta3.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta3.z.asc
new file mode 100644
index 0000000..ffe46f3
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta3.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 0.05014061747197682412
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 0.05014061747197686575
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 0.03205183761762391004
+0 0 0 0 0 3 3 3 0 0 0 0 0
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 -0.03605506065609123678
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 -0.06068031441309690993
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 -0.06068031441309693075
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 -0.03605506065609127841
+0 0 0 0 0 3 3 8 0 0 0 0.5 -5.834950656172777088e-17
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 0.03205183761762386146
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 0.05014061747197682412
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 -0.06068031441309690993
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 -0.06068031441309693075
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 -0.03605506065609127841
+0 0 0 1 0 3 3 8 0 0 0 0.5 -5.834950656172777088e-17
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 0.03205183761762386146
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 0.05014061747197682412
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 0.05014061747197686575
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 0.03205183761762391004
+0 0 0 1 0 3 3 13 0 0 0 1 0
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 -0.03605506065609123678
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 -0.06068031441309690993
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta3rhs.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta3rhs.x.asc
new file mode 100644
index 0000000..6b1d6cd
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta3rhs.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 0
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 -0.6286601217965879229
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 -0.4535426456985976462
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 -0.161820409555800182
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 0.1619805711691720551
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 0.4533486480770095861
+0 0 0 0 0 8 3 3 0 0.5 0 0 0.6279710723398932437
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 0.5736362804447895369
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 0.237631611606222426
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 -0.2366043118770071729
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 -0.573940694709090371
+0 0 0 0 0 13 3 3 0 1 0 0 0
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 0
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta3rhs.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta3rhs.y.asc
new file mode 100644
index 0000000..6c0019a
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta3rhs.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 0
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 0
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 -0.6286601217965879229
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 -0.5739406947090909261
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 -0.2366043118770077558
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 0.2376316116062222872
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 0.5736362804447880936
+0 0 0 0 0 3 8 3 0 0 0.5 0 0.6279710723398935768
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 0.4533486480770111959
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 0.1619805711691738592
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 -0.1618204095557992384
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 -0.4535426456985972021
+0 0 0 0 0 3 13 3 0 0 1 0 0
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 0
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta3rhs.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta3rhs.z.asc
new file mode 100644
index 0000000..62d24f8
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/beta3rhs.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 0
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 0
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 0
+0 0 0 0 0 3 3 3 0 0 0 0 -0.6286601217965879229
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 -0.573940694709090482
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 -0.2366043118770083387
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 0.2376316116062232864
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 0.5736362804447873165
+0 0 0 0 0 3 3 8 0 0 0 0.5 0
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 0
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 0
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 0
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 0
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 0
+0 0 0 1 0 3 3 8 0 0 0 0.5 0.6279710723398937988
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 0.4533486480770100302
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 0.161980571169173887
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 -0.1618204095557997935
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 -0.4535426456985982013
+0 0 0 1 0 3 3 13 0 0 0 1 0
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 0
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 0
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cA.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cA.x.asc
new file mode 100644
index 0000000..b19f98f
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cA.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 -8.673617379884035472e-19
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 -1.734723475976807094e-18
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 8.673617379884035472e-19
+0 0 0 0 0 3 3 3 0 0 0 0 1.972152263052529514e-31
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 8.673617379884035472e-19
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 1.301042606982605321e-18
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 -4.336808689942017736e-19
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 -8.673617379884035472e-19
+0 0 0 0 0 8 3 3 0 0.5 0 0 3.944304526105059027e-31
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 1.734723475976807094e-18
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 -8.673617379884035472e-19
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 -1.734723475976807094e-18
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 8.673617379884035472e-19
+0 0 0 0 0 13 3 3 0 1 0 0 1.972152263052529514e-31
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 8.673617379884035472e-19
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 1.301042606982605321e-18
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cA.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cA.y.asc
new file mode 100644
index 0000000..c3b10c9
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cA.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 4.336808689942017736e-19
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 4.336808689942017736e-19
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 -8.673617379884035472e-19
+0 0 0 0 0 3 3 3 0 0 0 0 1.972152263052529514e-31
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 0
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 -8.673617379884035472e-19
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 8.673617379884035472e-19
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 -1.734723475976807094e-18
+0 0 0 0 0 3 8 3 0 0 0.5 0 0
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 0
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 4.336808689942017736e-19
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 4.336808689942017736e-19
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 -8.673617379884035472e-19
+0 0 0 0 0 3 13 3 0 0 1 0 1.972152263052529514e-31
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 0
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 -8.673617379884035472e-19
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cA.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cA.z.asc
new file mode 100644
index 0000000..348dc44
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cA.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 0
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 4.336808689942017736e-19
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 -8.673617379884035472e-19
+0 0 0 0 0 3 3 3 0 0 0 0 1.972152263052529514e-31
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 0
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 8.673617379884035472e-19
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 8.673617379884035472e-19
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 8.673617379884035472e-19
+0 0 0 0 0 3 3 8 0 0 0 0.5 9.860761315262647568e-32
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 8.673617379884035472e-19
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 0
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 8.673617379884035472e-19
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 8.673617379884035472e-19
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 8.673617379884035472e-19
+0 0 0 1 0 3 3 8 0 0 0 0.5 9.860761315262647568e-32
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 8.673617379884035472e-19
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 0
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 4.336808689942017736e-19
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 -8.673617379884035472e-19
+0 0 0 1 0 3 3 13 0 0 0 1 1.972152263052529514e-31
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 0
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 8.673617379884035472e-19
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cS.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cS.x.asc
new file mode 100644
index 0000000..477e3b6
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cS.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 0
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 0
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 0
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 0
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 0
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 0
+0 0 0 0 0 8 3 3 0 0.5 0 0 0
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 0
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 0
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 0
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 0
+0 0 0 0 0 13 3 3 0 1 0 0 0
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 0
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cS.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cS.y.asc
new file mode 100644
index 0000000..9926d9d
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cS.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 0
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 0
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 0
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 0
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 0
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 0
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 0
+0 0 0 0 0 3 8 3 0 0 0.5 0 0
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 0
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 0
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 0
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 0
+0 0 0 0 0 3 13 3 0 0 1 0 0
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 0
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cS.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cS.z.asc
new file mode 100644
index 0000000..c0a5c6a
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cS.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 0
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 0
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 0
+0 0 0 0 0 3 3 3 0 0 0 0 0
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 0
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 0
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 0
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 0
+0 0 0 0 0 3 3 8 0 0 0 0.5 0
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 0
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 0
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 0
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 0
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 0
+0 0 0 1 0 3 3 8 0 0 0 0.5 0
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 0
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 0
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 0
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 0
+0 0 0 1 0 3 3 13 0 0 0 1 0
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 0
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 0
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cXt1.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cXt1.x.asc
new file mode 100644
index 0000000..645b22d
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cXt1.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 -8.066464163292152989e-17
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 -1.322726650432315409e-16
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 2.784231178942775387e-16
+0 0 0 0 0 3 3 3 0 0 0 0 3.354250471127029343e-17
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 6.158268339717665185e-17
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 -1.940721888749052937e-16
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 -6.002143226879752547e-16
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 -3.222248856626919178e-16
+0 0 0 0 0 8 3 3 0 0.5 0 0 -4.174855990426995511e-16
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 2.602085213965210642e-18
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 -8.066464163292152989e-17
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 -1.322726650432315409e-16
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 2.784231178942775387e-16
+0 0 0 0 0 13 3 3 0 1 0 0 3.354250471127029343e-17
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 6.158268339717665185e-17
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 -1.940721888749052937e-16
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cXt1.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cXt1.y.asc
new file mode 100644
index 0000000..46a179c
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cXt1.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 -2.402592014227877826e-16
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 1.257674520083185143e-17
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 2.927345865710861972e-16
+0 0 0 0 0 3 3 3 0 0 0 0 3.354250471127029343e-17
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 -1.084202172485504434e-16
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 -1.257674520083185143e-16
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 6.613633252161577047e-16
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 -1.734723475976807094e-18
+0 0 0 0 0 3 8 3 0 0 0.5 0 5.431852884152377214e-17
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 -6.028164079019404653e-16
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 -2.402592014227877826e-16
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 1.257674520083185143e-17
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 2.927345865710861972e-16
+0 0 0 0 0 3 13 3 0 0 1 0 3.354250471127029343e-17
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 -1.084202172485504434e-16
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 -1.257674520083185143e-16
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cXt1.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cXt1.z.asc
new file mode 100644
index 0000000..5d01935
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cXt1.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 -2.602085213965210642e-16
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 8.456776945386934585e-18
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 3.638582490861352881e-16
+0 0 0 0 0 3 3 3 0 0 0 0 3.354250471127029343e-17
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 2.246466901389965187e-16
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 2.48932818802671818e-16
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 6.613633252161577047e-16
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 6.591949208711866959e-17
+0 0 0 0 0 3 3 8 0 0 0 0.5 -7.228375883960858062e-16
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 -6.982261990806648555e-16
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 -2.602085213965210642e-16
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 2.48932818802671818e-16
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 6.613633252161577047e-16
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 6.591949208711866959e-17
+0 0 0 1 0 3 3 8 0 0 0 0.5 -7.228375883960858062e-16
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 -6.982261990806648555e-16
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 -2.602085213965210642e-16
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 8.456776945386934585e-18
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 3.638582490861352881e-16
+0 0 0 1 0 3 3 13 0 0 0 1 3.354250471127029343e-17
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 2.246466901389965187e-16
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 2.48932818802671818e-16
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cXt2.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cXt2.x.asc
new file mode 100644
index 0000000..601563c
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cXt2.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 0
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 1.11022302462515654e-16
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 -8.049116928532384918e-16
+0 0 0 0 0 3 3 3 0 0 0 0 -2.775557561562891351e-17
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 -5.551115123125782702e-17
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 6.869504964868156094e-16
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 3.261280134836397337e-16
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 -2.775557561562891351e-17
+0 0 0 0 0 8 3 3 0 0.5 0 0 -7.494005416219806648e-16
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 2.775557561562891351e-17
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 0
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 1.11022302462515654e-16
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 -8.049116928532384918e-16
+0 0 0 0 0 13 3 3 0 1 0 0 -2.775557561562891351e-17
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 -5.551115123125782702e-17
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 6.869504964868156094e-16
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cXt2.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cXt2.y.asc
new file mode 100644
index 0000000..c2a3dba
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cXt2.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 2.844946500601963635e-16
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 6.938893903907228378e-18
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 2.775557561562891351e-17
+0 0 0 0 0 3 3 3 0 0 0 0 -2.775557561562891351e-17
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 0
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 0
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 3.191891195797325054e-16
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 3.053113317719180486e-16
+0 0 0 0 0 3 8 3 0 0 0.5 0 3.053113317719180486e-16
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 1.665334536937734811e-16
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 2.844946500601963635e-16
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 6.938893903907228378e-18
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 2.775557561562891351e-17
+0 0 0 0 0 3 13 3 0 0 1 0 -2.775557561562891351e-17
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 0
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cXt2.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cXt2.z.asc
new file mode 100644
index 0000000..e778844
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cXt2.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 2.775557561562891351e-17
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 -1.804112415015879378e-16
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 -7.771561172376095783e-16
+0 0 0 0 0 3 3 3 0 0 0 0 -2.775557561562891351e-17
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 0
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 6.80011602582908381e-16
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 2.359223927328457648e-16
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 3.053113317719180486e-16
+0 0 0 0 0 3 3 8 0 0 0 0.5 1.0269562977782698e-15
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 2.220446049250313081e-16
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 2.775557561562891351e-17
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 6.80011602582908381e-16
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 2.359223927328457648e-16
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 3.053113317719180486e-16
+0 0 0 1 0 3 3 8 0 0 0 0.5 1.0269562977782698e-15
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 2.220446049250313081e-16
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 2.775557561562891351e-17
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 -1.804112415015879378e-16
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 -7.771561172376095783e-16
+0 0 0 1 0 3 3 13 0 0 0 1 -2.775557561562891351e-17
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 0
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 6.80011602582908381e-16
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cXt3.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cXt3.x.asc
new file mode 100644
index 0000000..e9b4b64
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cXt3.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 6.938893903907228378e-17
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 1.526556658859590243e-16
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 -1.137978600240785454e-15
+0 0 0 0 0 3 3 3 0 0 0 0 -2.775557561562891351e-17
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 -2.775557561562891351e-17
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 4.787836793695987581e-16
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 -1.186550857568136053e-15
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 1.942890293094023946e-16
+0 0 0 0 0 8 3 3 0 0.5 0 0 4.163336342344337027e-16
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 -2.775557561562891351e-17
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 6.938893903907228378e-17
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 1.526556658859590243e-16
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 -1.137978600240785454e-15
+0 0 0 0 0 13 3 3 0 1 0 0 -2.775557561562891351e-17
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 -2.775557561562891351e-17
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 4.787836793695987581e-16
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cXt3.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cXt3.y.asc
new file mode 100644
index 0000000..0187b37
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cXt3.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 1.568190022283033613e-15
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 -8.326672684688674053e-17
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 -5.551115123125782702e-16
+0 0 0 0 0 3 3 3 0 0 0 0 -2.775557561562891351e-17
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 -2.775557561562891351e-17
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 -5.551115123125782702e-17
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 4.579669976578770729e-16
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 3.885780586188047891e-16
+0 0 0 0 0 3 8 3 0 0 0.5 0 3.053113317719180486e-16
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 3.885780586188047891e-16
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 1.568190022283033613e-15
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 -8.326672684688674053e-17
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 -5.551115123125782702e-16
+0 0 0 0 0 3 13 3 0 0 1 0 -2.775557561562891351e-17
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 -2.775557561562891351e-17
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 -5.551115123125782702e-17
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cXt3.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cXt3.z.asc
new file mode 100644
index 0000000..cfa4be9
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/cXt3.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 2.5673907444456745e-16
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 -2.983724378680108202e-16
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 -3.330669073875469621e-16
+0 0 0 0 0 3 3 3 0 0 0 0 -2.775557561562891351e-17
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 -2.775557561562891351e-16
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 -4.302114220422481594e-16
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 4.440892098500626162e-16
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 3.608224830031758756e-16
+0 0 0 0 0 3 3 8 0 0 0 0.5 1.082467449009527627e-15
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 2.220446049250313081e-16
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 2.5673907444456745e-16
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 -4.302114220422481594e-16
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 4.440892098500626162e-16
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 3.608224830031758756e-16
+0 0 0 1 0 3 3 8 0 0 0 0.5 1.082467449009527627e-15
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 2.220446049250313081e-16
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 2.5673907444456745e-16
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 -2.983724378680108202e-16
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 -3.330669073875469621e-16
+0 0 0 1 0 3 3 13 0 0 0 1 -2.775557561562891351e-17
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 -2.775557561562891351e-16
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 -4.302114220422481594e-16
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt11.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt11.x.asc
new file mode 100644
index 0000000..a9f914c
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt11.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 1.001097695519928665
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 1.001097695519928665
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 1.000405024681067401
+0 0 0 0 0 3 3 3 0 0 0 0 1
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 1.000364803038667816
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 1.000926567406855705
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 1.000926567406855705
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 1.000364803038668038
+0 0 0 0 0 8 3 3 0 0.5 0 0 1
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 1.000405024681067179
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 1.001097695519928665
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 1.001097695519928665
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 1.000405024681067401
+0 0 0 0 0 13 3 3 0 1 0 0 1
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 1.000364803038667816
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 1.000926567406855705
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt11.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt11.y.asc
new file mode 100644
index 0000000..5ba758a
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt11.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 1.000926567406855705
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 1.000926567406855705
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 1.000364803038668038
+0 0 0 0 0 3 3 3 0 0 0 0 1
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 1.000405024681067401
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 1.001097695519928665
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 1.001097695519928665
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 1.000405024681067401
+0 0 0 0 0 3 8 3 0 0 0.5 0 1
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 1.000364803038667816
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 1.000926567406855705
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 1.000926567406855705
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 1.000364803038668038
+0 0 0 0 0 3 13 3 0 0 1 0 1
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 1.000405024681067401
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 1.001097695519928665
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt11.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt11.z.asc
new file mode 100644
index 0000000..7b6658d
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt11.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 1.000926567406855705
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 1.000926567406855705
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 1.000364803038668038
+0 0 0 0 0 3 3 3 0 0 0 0 1
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 1.000405024681067401
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 1.001097695519928665
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 1.001097695519928665
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 1.000405024681067401
+0 0 0 0 0 3 3 8 0 0 0 0.5 1
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 1.000364803038667816
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 1.000926567406855705
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 1.001097695519928665
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 1.001097695519928665
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 1.000405024681067401
+0 0 0 1 0 3 3 8 0 0 0 0.5 1
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 1.000364803038667816
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 1.000926567406855705
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 1.000926567406855705
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 1.000364803038668038
+0 0 0 1 0 3 3 13 0 0 0 1 1
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 1.000405024681067401
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 1.001097695519928665
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt11rhs.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt11rhs.x.asc
new file mode 100644
index 0000000..7f346a8
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt11rhs.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 0
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 6.684849197017580071e-05
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 -0.01073295520242198084
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 -0.006480301310938721762
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 0.006273341278161287393
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 0.01074606509098257993
+0 0 0 0 0 8 3 3 0 0.5 0 0 6.684849197887257936e-05
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 -0.01202269985594927107
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 -0.007899891194979309639
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 0.007537003883591321222
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 0.01219215966660935034
+0 0 0 0 0 13 3 3 0 1 0 0 0
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 0
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt11rhs.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt11rhs.y.asc
new file mode 100644
index 0000000..81dcd99
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt11rhs.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 0
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 0
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 6.684849197017580071e-05
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 0.01219215966661663618
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 0.007537003883592723746
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 -0.007899891194982211831
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 -0.01202269985594377373
+0 0 0 0 0 3 8 3 0 0 0.5 0 6.684849197622048532e-05
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 0.01074606509099132814
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 0.006273341278160595239
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 -0.006480301310939185801
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 -0.01073295520242187155
+0 0 0 0 0 3 13 3 0 0 1 0 0
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 0
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt11rhs.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt11rhs.z.asc
new file mode 100644
index 0000000..f9f6892
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt11rhs.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 0
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 0
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 0
+0 0 0 0 0 3 3 3 0 0 0 0 6.684849197017580071e-05
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 0.01219215966661670557
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 0.007537003883592666501
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 -0.007899891194982378365
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 -0.01202269985594464109
+0 0 0 0 0 3 3 8 0 0 0 0.5 0
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 0
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 0
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 0
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 0
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 0
+0 0 0 1 0 3 3 8 0 0 0 0.5 6.684849197542478934e-05
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 0.01074606509099184162
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 0.00627334127816141663
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 -0.006480301310938778141
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 -0.01073295520242216299
+0 0 0 1 0 3 3 13 0 0 0 1 0
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 0
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 0
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt12.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt12.x.asc
new file mode 100644
index 0000000..d355746
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt12.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 0.03277573545166539287
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0.03277573545166539287
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0.01999248696063090497
+0 0 0 0 0 3 3 3 0 0 0 0 -2.775557561562891351e-17
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 -0.01922334923201163281
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 -0.03075622745750388604
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 -0.03075622745750388604
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 -0.01922334923201168833
+0 0 0 0 0 8 3 3 0 0.5 0 0 -8.326672684688671588e-17
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 0.01999248696063078354
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 0.03277573545166539287
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 0.03277573545166539287
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 0.01999248696063090497
+0 0 0 0 0 13 3 3 0 1 0 0 -2.775557561562891351e-17
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 -0.01922334923201163281
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 -0.03075622745750388604
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt12.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt12.y.asc
new file mode 100644
index 0000000..4da79b0
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt12.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 -0.03075622745750383746
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 -0.03075622745750388604
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 -0.01922334923201168833
+0 0 0 0 0 3 3 3 0 0 0 0 -2.775557561562891351e-17
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 0.01999248696063090497
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 0.03277573545166539287
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 0.03277573545166539287
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 0.01999248696063090497
+0 0 0 0 0 3 8 3 0 0 0.5 0 2.775557561562891351e-17
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 -0.01922334923201163281
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 -0.03075622745750383746
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 -0.03075622745750388604
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 -0.01922334923201168833
+0 0 0 0 0 3 13 3 0 0 1 0 -2.775557561562891351e-17
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 0.01999248696063090497
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 0.03277573545166539287
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt12.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt12.z.asc
new file mode 100644
index 0000000..28675ef
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt12.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 -0.03075622745750383746
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 -0.03075622745750388604
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 -0.01922334923201168833
+0 0 0 0 0 3 3 3 0 0 0 0 -2.775557561562891351e-17
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 0.01999248696063090497
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 0.03277573545166539287
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 0.03277573545166539287
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 0.01999248696063090497
+0 0 0 0 0 3 3 8 0 0 0 0.5 2.775557561562891351e-17
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 -0.01922334923201163281
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 -0.03075622745750383746
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 0.03277573545166539287
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 0.03277573545166539287
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 0.01999248696063090497
+0 0 0 1 0 3 3 8 0 0 0 0.5 2.775557561562891351e-17
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 -0.01922334923201163281
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 -0.03075622745750383746
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 -0.03075622745750388604
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 -0.01922334923201168833
+0 0 0 1 0 3 3 13 0 0 0 1 -2.775557561562891351e-17
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 0.01999248696063090497
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 0.03277573545166539287
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt12rhs.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt12rhs.x.asc
new file mode 100644
index 0000000..0aeda9a
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt12rhs.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 0
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 0.3606967117714822146
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 0.2841066062350856569
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 0.1065643930692912328
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 -0.106397113168555324
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 -0.2838877958099043086
+0 0 0 0 0 8 3 3 0 0.5 0 0 -0.3605617562128795028
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 -0.297686685148574437
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 -0.1148506575755901815
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 0.1140726660024747735
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 0.297633033121474766
+0 0 0 0 0 13 3 3 0 1 0 0 0
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 0
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt12rhs.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt12rhs.y.asc
new file mode 100644
index 0000000..4254f00
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt12rhs.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 0
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 0
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 0.3606967117714822146
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 0.2976330331214721014
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 0.1140726660024771744
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 -0.1148506575755975784
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 -0.2976866851485719945
+0 0 0 0 0 3 8 3 0 0 0.5 0 -0.3605617562128751175
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 -0.2838877958099075283
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 -0.1063971131685463589
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 0.1065643930692896785
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 0.284106606235081216
+0 0 0 0 0 3 13 3 0 0 1 0 0
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 0
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt12rhs.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt12rhs.z.asc
new file mode 100644
index 0000000..bd6f59d
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt12rhs.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 0
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 0
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 0
+0 0 0 0 0 3 3 3 0 0 0 0 0.3606967117714822146
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 0.2976330331214736558
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 0.114072666002476536
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 -0.1148506575755961351
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 -0.2976866851485714949
+0 0 0 0 0 3 3 8 0 0 0 0.5 0
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 0
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 0
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 0
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 0
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 0
+0 0 0 1 0 3 3 8 0 0 0 0.5 -0.3605617562128761722
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 -0.2838877958099064736
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 -0.1063971131685468585
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 0.1065643930692917046
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 0.2841066062350843802
+0 0 0 1 0 3 3 13 0 0 0 1 0
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 0
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 0
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt13.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt13.x.asc
new file mode 100644
index 0000000..f665e4a
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt13.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 0.03277573545166547614
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0.03277573545166547614
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0.0199924869606309917
+0 0 0 0 0 3 3 3 0 0 0 0 5.551115123125782702e-17
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 -0.01922334923201155302
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 -0.03075622745750380277
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 -0.03075622745750380277
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 -0.01922334923201160506
+0 0 0 0 0 8 3 3 0 0.5 0 0 0
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 0.01999248696063087027
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 0.03277573545166547614
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 0.03277573545166547614
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 0.0199924869606309917
+0 0 0 0 0 13 3 3 0 1 0 0 5.551115123125782702e-17
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 -0.01922334923201155302
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 -0.03075622745750380277
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt13.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt13.y.asc
new file mode 100644
index 0000000..31acd63
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt13.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 -0.03075622745750375767
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 -0.03075622745750380277
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 -0.01922334923201160506
+0 0 0 0 0 3 3 3 0 0 0 0 5.551115123125782702e-17
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 0.0199924869606309917
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 0.03277573545166547614
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 0.03277573545166547614
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 0.0199924869606309917
+0 0 0 0 0 3 8 3 0 0 0.5 0 1.11022302462515654e-16
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 -0.01922334923201155302
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 -0.03075622745750375767
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 -0.03075622745750380277
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 -0.01922334923201160506
+0 0 0 0 0 3 13 3 0 0 1 0 5.551115123125782702e-17
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 0.0199924869606309917
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 0.03277573545166547614
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt13.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt13.z.asc
new file mode 100644
index 0000000..645b392
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt13.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 -0.03075622745750375767
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 -0.03075622745750380277
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 -0.01922334923201160506
+0 0 0 0 0 3 3 3 0 0 0 0 5.551115123125782702e-17
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 0.0199924869606309917
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 0.03277573545166547614
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 0.03277573545166547614
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 0.0199924869606309917
+0 0 0 0 0 3 3 8 0 0 0 0.5 1.11022302462515654e-16
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 -0.01922334923201155302
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 -0.03075622745750375767
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 0.03277573545166547614
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 0.03277573545166547614
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 0.0199924869606309917
+0 0 0 1 0 3 3 8 0 0 0 0.5 1.11022302462515654e-16
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 -0.01922334923201155302
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 -0.03075622745750375767
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 -0.03075622745750380277
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 -0.01922334923201160506
+0 0 0 1 0 3 3 13 0 0 0 1 5.551115123125782702e-17
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 0.0199924869606309917
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 0.03277573545166547614
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt13rhs.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt13rhs.x.asc
new file mode 100644
index 0000000..578cb52
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt13rhs.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 0
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 0.3606967117714815485
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 0.2841066062350855459
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 0.1065643930692912883
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 -0.1063971131685549909
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 -0.2838877958099040311
+0 0 0 0 0 8 3 3 0 0.5 0 0 -0.3605617562128792808
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 -0.2976866851485743815
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 -0.114850657575591597
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 0.1140726660024741351
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 0.2976330331214744329
+0 0 0 0 0 13 3 3 0 1 0 0 0
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 0
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt13rhs.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt13rhs.y.asc
new file mode 100644
index 0000000..8c1d596
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt13rhs.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 0
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 0
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 0.3606967117714815485
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 0.297633033121472268
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 0.1140726660024778405
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 -0.1148506575755980225
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 -0.2976866851485737153
+0 0 0 0 0 3 8 3 0 0 0.5 0 -0.3605617562128750064
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 -0.283887795809908583
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 -0.1063971131685470112
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 0.1065643930692906499
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 0.2841066062350807719
+0 0 0 0 0 3 13 3 0 0 1 0 0
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 0
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt13rhs.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt13rhs.z.asc
new file mode 100644
index 0000000..2de7b15
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt13rhs.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 0
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 0
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 0
+0 0 0 0 0 3 3 3 0 0 0 0 0.3606967117714815485
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 0.297633033121472601
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 0.1140726660024760641
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 -0.1148506575755962045
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 -0.2976866851485711618
+0 0 0 0 0 3 3 8 0 0 0 0.5 0
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 0
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 0
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 0
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 0
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 0
+0 0 0 1 0 3 3 8 0 0 0 0.5 -0.3605617562128756726
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 -0.2838877958099033094
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 -0.1063971131685457483
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 0.1065643930692919683
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 0.2841066062350844357
+0 0 0 1 0 3 3 13 0 0 0 1 0
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 0
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 0
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt22.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt22.x.asc
new file mode 100644
index 0000000..f78fd15
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt22.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 1.001097695519928665
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 1.001097695519928665
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 1.000405024681067623
+0 0 0 0 0 3 3 3 0 0 0 0 1
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 1.000364803038667816
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 1.000926567406855705
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 1.000926567406855705
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 1.000364803038668038
+0 0 0 0 0 8 3 3 0 0.5 0 0 1
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 1.000405024681067179
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 1.001097695519928665
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 1.001097695519928665
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 1.000405024681067623
+0 0 0 0 0 13 3 3 0 1 0 0 1
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 1.000364803038667816
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 1.000926567406855705
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt22.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt22.y.asc
new file mode 100644
index 0000000..6d6c3a7
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt22.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 1.000926567406855705
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 1.000926567406855705
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 1.000364803038668038
+0 0 0 0 0 3 3 3 0 0 0 0 1
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 1.000405024681067623
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 1.001097695519928665
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 1.001097695519928665
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 1.000405024681067623
+0 0 0 0 0 3 8 3 0 0 0.5 0 1
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 1.000364803038667816
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 1.000926567406855705
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 1.000926567406855705
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 1.000364803038668038
+0 0 0 0 0 3 13 3 0 0 1 0 1
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 1.000405024681067623
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 1.001097695519928665
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt22.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt22.z.asc
new file mode 100644
index 0000000..6121d90
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt22.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 1.000926567406855705
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 1.000926567406855705
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 1.000364803038668038
+0 0 0 0 0 3 3 3 0 0 0 0 1
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 1.000405024681067623
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 1.001097695519928665
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 1.001097695519928665
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 1.000405024681067623
+0 0 0 0 0 3 3 8 0 0 0 0.5 1
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 1.000364803038667816
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 1.000926567406855705
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 1.001097695519928665
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 1.001097695519928665
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 1.000405024681067623
+0 0 0 1 0 3 3 8 0 0 0 0.5 1
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 1.000364803038667816
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 1.000926567406855705
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 1.000926567406855705
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 1.000364803038668038
+0 0 0 1 0 3 3 13 0 0 0 1 1
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 1.000405024681067623
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 1.001097695519928665
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt22rhs.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt22rhs.x.asc
new file mode 100644
index 0000000..7e07b4c
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt22rhs.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 0
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 6.684849197788713445e-05
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 -0.01073295520242237115
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 -0.006480301310938816305
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 0.006273341278163370796
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 0.01074606509098670164
+0 0 0 0 0 8 3 3 0 0.5 0 0 6.684849197177188183e-05
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 -0.01202269985594636367
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 -0.007899891194981524881
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 0.007537003883580787982
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 0.01219215966661705425
+0 0 0 0 0 13 3 3 0 1 0 0 0
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 0
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt22rhs.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt22rhs.y.asc
new file mode 100644
index 0000000..ee5d552
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt22rhs.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 0
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 0
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 6.684849197788713445e-05
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 0.01219215966660951514
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 0.007537003883584593097
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 -0.007899891194976929598
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 -0.01202269985594732471
+0 0 0 0 0 3 8 3 0 0 0.5 0 6.68484919694528547e-05
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 0.01074606509098893596
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 0.006273341278161388875
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 -0.006480301310936508255
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 -0.01073295520242298351
+0 0 0 0 0 3 13 3 0 0 1 0 0
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 0
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt22rhs.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt22rhs.z.asc
new file mode 100644
index 0000000..e89659f
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt22rhs.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 0
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 0
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 0
+0 0 0 0 0 3 3 3 0 0 0 0 6.684849197788713445e-05
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 0.012192159666608424
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 0.007537003883583340627
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 -0.007899891194976336323
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 -0.01202269985594504008
+0 0 0 0 0 3 3 8 0 0 0 0.5 0
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 0
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 0
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 0
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 0
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 0
+0 0 0 1 0 3 3 8 0 0 0 0.5 6.68484919696563459e-05
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 0.01074606509099262398
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 0.006273341278163101914
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 -0.006480301310937814502
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 -0.01073295520242314657
+0 0 0 1 0 3 3 13 0 0 0 1 0
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 0
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 0
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt23.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt23.x.asc
new file mode 100644
index 0000000..4cb8d37
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt23.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 -0.03277573545166539287
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 -0.03277573545166539287
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 -0.01999248696063090497
+0 0 0 0 0 3 3 3 0 0 0 0 2.775557561562891351e-17
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 0.01922334923201163281
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 0.03075622745750388604
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 0.03075622745750388604
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 0.01922334923201168833
+0 0 0 0 0 8 3 3 0 0.5 0 0 8.326672684688671588e-17
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 -0.01999248696063078354
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 -0.03277573545166539287
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 -0.03277573545166539287
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 -0.01999248696063090497
+0 0 0 0 0 13 3 3 0 1 0 0 2.775557561562891351e-17
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 0.01922334923201163281
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 0.03075622745750388604
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt23.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt23.y.asc
new file mode 100644
index 0000000..9a1efd3
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt23.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 0.03075622745750383746
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 0.03075622745750388604
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 0.01922334923201168833
+0 0 0 0 0 3 3 3 0 0 0 0 2.775557561562891351e-17
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 -0.01999248696063090497
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 -0.03277573545166539287
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 -0.03277573545166539287
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 -0.01999248696063090497
+0 0 0 0 0 3 8 3 0 0 0.5 0 -2.775557561562891351e-17
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 0.01922334923201163281
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 0.03075622745750383746
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 0.03075622745750388604
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 0.01922334923201168833
+0 0 0 0 0 3 13 3 0 0 1 0 2.775557561562891351e-17
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 -0.01999248696063090497
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 -0.03277573545166539287
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt23.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt23.z.asc
new file mode 100644
index 0000000..150cb7a
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt23.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 0.03075622745750383746
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 0.03075622745750388604
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 0.01922334923201168833
+0 0 0 0 0 3 3 3 0 0 0 0 2.775557561562891351e-17
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 -0.01999248696063090497
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 -0.03277573545166539287
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 -0.03277573545166539287
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 -0.01999248696063090497
+0 0 0 0 0 3 3 8 0 0 0 0.5 -2.775557561562891351e-17
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 0.01922334923201163281
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 0.03075622745750383746
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 -0.03277573545166539287
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 -0.03277573545166539287
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 -0.01999248696063090497
+0 0 0 1 0 3 3 8 0 0 0 0.5 -2.775557561562891351e-17
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 0.01922334923201163281
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 0.03075622745750383746
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 0.03075622745750388604
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 0.01922334923201168833
+0 0 0 1 0 3 3 13 0 0 0 1 2.775557561562891351e-17
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 -0.01999248696063090497
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 -0.03277573545166539287
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt23rhs.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt23rhs.x.asc
new file mode 100644
index 0000000..b505e31
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt23rhs.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 0
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 -0.360696711771481382
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 -0.2841066062350856569
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 -0.1065643930692915242
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 0.1063971131685558791
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 0.2838877958099058074
+0 0 0 0 0 8 3 3 0 0.5 0 0 0.3605617562128792808
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 0.2976866851485758247
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 0.114850657575590348
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 -0.1140726660024759392
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 -0.2976330331214744884
+0 0 0 0 0 13 3 3 0 1 0 0 0
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 0
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt23rhs.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt23rhs.y.asc
new file mode 100644
index 0000000..fffda2b
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt23rhs.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 0
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 0
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 -0.360696711771481382
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 -0.2976330331214718239
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 -0.1140726660024781181
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 0.1148506575755964682
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 0.2976866851485718279
+0 0 0 0 0 3 8 3 0 0 0.5 0 0.360561756212875284
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 0.2838877958099073062
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 0.1063971131685475802
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 -0.1065643930692890401
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 -0.2841066062350810495
+0 0 0 0 0 3 13 3 0 0 1 0 0
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 0
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt23rhs.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt23rhs.z.asc
new file mode 100644
index 0000000..fd25bfd
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt23rhs.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 0
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 0
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 0
+0 0 0 0 0 3 3 3 0 0 0 0 -0.360696711771481382
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 -0.2976330331214728231
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 -0.1140726660024769246
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 0.1148506575755952469
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 0.2976866851485707732
+0 0 0 0 0 3 3 8 0 0 0 0.5 0
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 0
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 0
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 0
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 0
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 0
+0 0 0 1 0 3 3 8 0 0 0 0.5 0.3605617562128763942
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 0.283887795809903476
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 0.1063971131685464144
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 -0.1065643930692917324
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 -0.2841066062350843802
+0 0 0 1 0 3 3 13 0 0 0 1 0
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 0
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 0
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt33.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt33.x.asc
new file mode 100644
index 0000000..e4c472c
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt33.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 1.001097695519928665
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 1.001097695519928665
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 1.000405024681067401
+0 0 0 0 0 3 3 3 0 0 0 0 1
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 1.000364803038668038
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 1.000926567406855705
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 1.000926567406855705
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 1.000364803038668038
+0 0 0 0 0 8 3 3 0 0.5 0 0 1
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 1.000405024681067179
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 1.001097695519928665
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 1.001097695519928665
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 1.000405024681067401
+0 0 0 0 0 13 3 3 0 1 0 0 1
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 1.000364803038668038
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 1.000926567406855705
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt33.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt33.y.asc
new file mode 100644
index 0000000..984dda4
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt33.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 1.000926567406855927
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 1.000926567406855705
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 1.000364803038668038
+0 0 0 0 0 3 3 3 0 0 0 0 1
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 1.000405024681067401
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 1.001097695519928665
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 1.001097695519928665
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 1.000405024681067401
+0 0 0 0 0 3 8 3 0 0 0.5 0 1
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 1.000364803038668038
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 1.000926567406855927
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 1.000926567406855705
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 1.000364803038668038
+0 0 0 0 0 3 13 3 0 0 1 0 1
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 1.000405024681067401
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 1.001097695519928665
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt33.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt33.z.asc
new file mode 100644
index 0000000..10eae1b
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt33.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 1.000926567406855927
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 1.000926567406855705
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 1.000364803038668038
+0 0 0 0 0 3 3 3 0 0 0 0 1
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 1.000405024681067401
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 1.001097695519928665
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 1.001097695519928665
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 1.000405024681067401
+0 0 0 0 0 3 3 8 0 0 0 0.5 1
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 1.000364803038668038
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 1.000926567406855927
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 1.001097695519928665
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 1.001097695519928665
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 1.000405024681067401
+0 0 0 1 0 3 3 8 0 0 0 0.5 1
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 1.000364803038668038
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 1.000926567406855927
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 1.000926567406855705
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 1.000364803038668038
+0 0 0 1 0 3 3 13 0 0 0 1 1
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 1.000405024681067401
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 1.001097695519928665
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt33rhs.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt33rhs.x.asc
new file mode 100644
index 0000000..c138416
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt33rhs.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 0
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 6.684849197362443098e-05
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 -0.01073295520244416969
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 -0.006480301310923265376
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 0.006273341278147616905
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 0.01074606509100196026
+0 0 0 0 0 8 3 3 0 0.5 0 0 6.684849197115999878e-05
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 -0.01202269985594603754
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 -0.007899891194971498179
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 0.007537003883587648813
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 0.01219215966660970943
+0 0 0 0 0 13 3 3 0 1 0 0 0
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 0
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt33rhs.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt33rhs.y.asc
new file mode 100644
index 0000000..1576320
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt33rhs.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 0
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 0
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 6.684849197362443098e-05
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 0.01219215966660946483
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 0.007537003883583056132
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 -0.007899891194975363143
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 -0.01202269985595257745
+0 0 0 0 0 3 8 3 0 0 0.5 0 6.684849197577639611e-05
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 0.01074606509099247306
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 0.006273341278148207578
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 -0.006480301310923189916
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 -0.01073295520244387999
+0 0 0 0 0 3 13 3 0 0 1 0 0
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 0
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt33rhs.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt33rhs.z.asc
new file mode 100644
index 0000000..54d7680
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gt33rhs.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 0
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 0
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 0
+0 0 0 0 0 3 3 3 0 0 0 0 6.684849197362443098e-05
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 0.01219215966661056812
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 0.007537003883584124722
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 -0.007899891194975481104
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 -0.01202269985595382992
+0 0 0 0 0 3 3 8 0 0 0 0.5 0
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 0
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 0
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 0
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 0
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 0
+0 0 0 1 0 3 3 8 0 0 0 0.5 6.684849197637194836e-05
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 0.01074606509098787431
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 0.006273341278145712178
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 -0.006480301310923293132
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 -0.01073295520244380713
+0 0 0 1 0 3 3 13 0 0 0 1 0
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 0
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 0
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gxx.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gxx.x.asc
new file mode 100644
index 0000000..523d6ff
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gxx.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 0.968298116123494923
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0.968298116123494923
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0.9804071582569174881
+0 0 0 0 0 3 3 3 0 0 0 0 1
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 1.019592841743082401
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 1.031701883876505299
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 1.031701883876505299
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 1.019592841743082623
+0 0 0 0 0 8 3 3 0 0.5 0 0 1.000000000000000222
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 0.9804071582569177101
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 0.968298116123494923
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 0.968298116123494923
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 0.9804071582569174881
+0 0 0 0 0 13 3 3 0 1 0 0 1
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 1.019592841743082401
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 1.031701883876505299
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gxx.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gxx.y.asc
new file mode 100644
index 0000000..5a9adfa
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gxx.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 1.031701883876505077
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 1.031701883876505299
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 1.019592841743082623
+0 0 0 0 0 3 3 3 0 0 0 0 1
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 0.9804071582569174881
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 0.968298116123494923
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 0.968298116123494923
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 0.9804071582569174881
+0 0 0 0 0 3 8 3 0 0 0.5 0 1
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 1.019592841743082401
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 1.031701883876505077
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 1.031701883876505299
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 1.019592841743082623
+0 0 0 0 0 3 13 3 0 0 1 0 1
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 0.9804071582569174881
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 0.968298116123494923
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gxx.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gxx.z.asc
new file mode 100644
index 0000000..04dd7a7
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/gxx.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 1.031701883876505077
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 1.031701883876505299
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 1.019592841743082623
+0 0 0 0 0 3 3 3 0 0 0 0 1
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 0.9804071582569174881
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 0.968298116123494923
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 0.968298116123494923
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 0.9804071582569174881
+0 0 0 0 0 3 3 8 0 0 0 0.5 1
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 1.019592841743082401
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 1.031701883876505077
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 0.968298116123494923
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 0.968298116123494923
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 0.9804071582569174881
+0 0 0 1 0 3 3 8 0 0 0 0.5 1
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 1.019592841743082401
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 1.031701883876505077
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 1.031701883876505299
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 1.019592841743082623
+0 0 0 1 0 3 3 13 0 0 0 1 1
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 0.9804071582569174881
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 0.968298116123494923
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/kxx.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/kxx.x.asc
new file mode 100644
index 0000000..85f53b3
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/kxx.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 0.05892153831746786696
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 -0.0589215383174686233
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 -0.1512524600532927366
+0 0 0 0 0 3 3 3 0 0 0 0 -0.1813805949244461646
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 -0.1426086965759302549
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 -0.05356058938639061962
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 0.05356058938638950245
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 0.1426086965759379155
+0 0 0 0 0 8 3 3 0 0.5 0 0 0.1813805949244440552
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 0.1512524600532958452
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 0.05892153831746786696
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 -0.0589215383174686233
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 -0.1512524600532927366
+0 0 0 0 0 13 3 3 0 1 0 0 -0.1813805949244461646
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 -0.1426086965759302549
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 -0.05356058938639061962
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/kxx.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/kxx.y.asc
new file mode 100644
index 0000000..e7b1aa4
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/kxx.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 0.0535605893863904739
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 -0.05356058938638663669
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 -0.142608696575938082
+0 0 0 0 0 3 3 3 0 0 0 0 -0.1813805949244461646
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 -0.151252460053299731
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 -0.05892153831746754777
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 0.05892153831746672898
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 0.1512524600532936803
+0 0 0 0 0 3 8 3 0 0 0.5 0 0.181380594924452937
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 0.1426086965759309211
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 0.0535605893863904739
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 -0.05356058938638663669
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 -0.142608696575938082
+0 0 0 0 0 3 13 3 0 0 1 0 -0.1813805949244461646
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 -0.151252460053299731
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 -0.05892153831746754777
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/kxx.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/kxx.z.asc
new file mode 100644
index 0000000..6936e53
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/kxx.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 0.053560589386390689
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 -0.05356058938639000899
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 -0.1426086965759312819
+0 0 0 0 0 3 3 3 0 0 0 0 -0.1813805949244461646
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 -0.1512524600532993424
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 -0.05892153831746801962
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 0.05892153831746758941
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 0.151252460053295068
+0 0 0 0 0 3 3 8 0 0 0 0.5 0.1813805949244529925
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 0.1426086965759298386
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 0.053560589386390689
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 -0.05892153831746801962
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 0.05892153831746758941
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 0.151252460053295068
+0 0 0 1 0 3 3 8 0 0 0 0.5 0.1813805949244529925
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 0.1426086965759298386
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 0.053560589386390689
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 -0.05356058938639000899
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 -0.1426086965759312819
+0 0 0 1 0 3 3 13 0 0 0 1 -0.1813805949244461646
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 -0.1512524600532993424
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 -0.05892153831746801962
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/phi.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/phi.x.asc
new file mode 100644
index 0000000..a7e037e
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/phi.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 1.016795668249818041
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 1.016795668249818041
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 1.010147272253753226
+0 0 0 0 0 3 3 3 0 0 0 0 1
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 0.9905258471169019474
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 0.9849722533905976851
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 0.9849722533905976851
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 0.9905258471169019474
+0 0 0 0 0 8 3 3 0 0.5 0 0 0.999999999999999889
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 1.010147272253753004
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 1.016795668249818041
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 1.016795668249818041
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 1.010147272253753226
+0 0 0 0 0 13 3 3 0 1 0 0 1
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 0.9905258471169019474
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 0.9849722533905976851
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/phi.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/phi.y.asc
new file mode 100644
index 0000000..350d571
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/phi.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 0.9849722533905977961
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 0.9849722533905976851
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 0.9905258471169019474
+0 0 0 0 0 3 3 3 0 0 0 0 1
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 1.010147272253753226
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 1.016795668249818041
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 1.016795668249818041
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 1.010147272253753226
+0 0 0 0 0 3 8 3 0 0 0.5 0 1
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 0.9905258471169019474
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 0.9849722533905977961
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 0.9849722533905976851
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 0.9905258471169019474
+0 0 0 0 0 3 13 3 0 0 1 0 1
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 1.010147272253753226
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 1.016795668249818041
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/phi.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/phi.z.asc
new file mode 100644
index 0000000..19935b5
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/phi.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 0.9849722533905977961
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 0.9849722533905976851
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 0.9905258471169019474
+0 0 0 0 0 3 3 3 0 0 0 0 1
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 1.010147272253753226
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 1.016795668249818041
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 1.016795668249818041
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 1.010147272253753226
+0 0 0 0 0 3 3 8 0 0 0 0.5 1
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 0.9905258471169019474
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 0.9849722533905977961
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 1.016795668249818041
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 1.016795668249818041
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 1.010147272253753226
+0 0 0 1 0 3 3 8 0 0 0 0.5 1
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 0.9905258471169019474
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 0.9849722533905977961
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 0.9849722533905976851
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 0.9905258471169019474
+0 0 0 1 0 3 3 13 0 0 0 1 1
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 1.010147272253753226
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 1.016795668249818041
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/phirhs.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/phirhs.x.asc
new file mode 100644
index 0000000..6162121
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/phirhs.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 0
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 0.1803735474191114629
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 0.1379980207156958627
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 0.05082128763500962099
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 -0.05081720591503635642
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 -0.1378813092508292815
+0 0 0 0 0 8 3 3 0 0.5 0 0 -0.180255686573072893
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 -0.1533151815805421925
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 -0.06034539606363258785
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 0.05982331147911297553
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 0.1533482835858647753
+0 0 0 0 0 13 3 3 0 1 0 0 0
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 0
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/phirhs.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/phirhs.y.asc
new file mode 100644
index 0000000..540dffd
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/phirhs.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 0
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 0
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 0.1803735474191114629
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 0.153348283585861167
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 0.05982331147911567476
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 -0.06034539606363485686
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 -0.1533151815805418594
+0 0 0 0 0 3 8 3 0 0 0.5 0 -0.1802556865730661484
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 -0.1378813092508325844
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 -0.0508172059150367797
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 0.05082128763501234103
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 0.1379980207156889238
+0 0 0 0 0 3 13 3 0 0 1 0 0
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 0
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/phirhs.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/phirhs.z.asc
new file mode 100644
index 0000000..4683cba
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/phirhs.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 0
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 0
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 0
+0 0 0 0 0 3 3 3 0 0 0 0 0.1803735474191114629
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 0.1533482835858615834
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 0.05982331147911503638
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 -0.06034539606363406583
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 -0.1533151815805412765
+0 0 0 0 0 3 3 8 0 0 0 0.5 0
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 0
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 0
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 0
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 0
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 0
+0 0 0 1 0 3 3 8 0 0 0 0.5 -0.180255686573066537
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 -0.1378813092508329452
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 -0.05081720591503614132
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 0.05082128763500994711
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 0.1379980207156955574
+0 0 0 1 0 3 3 13 0 0 0 1 0
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 0
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 0
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/trK.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/trK.x.asc
new file mode 100644
index 0000000..399ac80
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/trK.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 0.1953428212594253421
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 -0.1953428212594242042
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 -0.4820941641502610731
+0 0 0 0 0 3 3 3 0 0 0 0 -0.5441417847733434066
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 -0.4040751484217592893
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 -0.1467271837380128285
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 0.146727183738009026
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 0.4040751484217811607
+0 0 0 0 0 8 3 3 0 0.5 0 0 0.544141784773340742
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 0.4820941641502641817
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 0.1953428212594253421
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 -0.1953428212594242042
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 -0.4820941641502610731
+0 0 0 0 0 13 3 3 0 1 0 0 -0.5441417847733434066
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 -0.4040751484217592893
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 -0.1467271837380128285
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/trK.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/trK.y.asc
new file mode 100644
index 0000000..412338e
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/trK.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 0.146727183738011191
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 -0.1467271837380021426
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 -0.4040751484217809386
+0 0 0 0 0 3 3 3 0 0 0 0 -0.5441417847733434066
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 -0.4820941641502713981
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 -0.1953428212594192914
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 0.1953428212594169322
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 0.4820941641502654584
+0 0 0 0 0 3 8 3 0 0 0.5 0 0.5441417847733618363
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 0.4040751484217726675
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 0.146727183738011191
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 -0.1467271837380021426
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 -0.4040751484217809386
+0 0 0 0 0 3 13 3 0 0 1 0 -0.5441417847733434066
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 -0.4820941641502713981
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 -0.1953428212594192914
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/trK.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/trK.z.asc
new file mode 100644
index 0000000..f38885e
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/trK.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 0.1467271837380128008
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 -0.1467271837380109967
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 -0.4040751484217611766
+0 0 0 0 0 3 3 3 0 0 0 0 -0.5441417847733434066
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 -0.4820941641502707875
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 -0.195342821259420929
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 0.1953428212594193469
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 0.4820941641502679564
+0 0 0 0 0 3 3 8 0 0 0 0.5 0.5441417847733613922
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 0.4040751484217711686
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 0.1467271837380128008
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 -0.195342821259420929
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 0.1953428212594193469
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 0.4820941641502679564
+0 0 0 1 0 3 3 8 0 0 0 0.5 0.5441417847733613922
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 0.4040751484217711686
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 0.1467271837380128008
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 -0.1467271837380109967
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 -0.4040751484217611766
+0 0 0 1 0 3 3 13 0 0 0 1 -0.5441417847733434066
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 -0.4820941641502707875
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 -0.195342821259420929
+
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/trKrhs.x.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/trKrhs.x.asc
new file mode 100644
index 0000000..1b1a6c4
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/trKrhs.x.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 0 3 3 0 -0.3000000000000000444 0 0 0
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 -0.7568371511643994243
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 -3.663942027173537674
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 -4.998247353042589936
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 -4.993157984218573375
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 -3.653405384625103558
+0 0 0 0 0 8 3 3 0 0.5 0 0 -0.7554108425892037681
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 3.181497761558605308
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 6.167563390845148596
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 6.196511523206931216
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 3.206759352693532072
+0 0 0 0 0 13 3 3 0 1 0 0 0
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 0
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/trKrhs.y.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/trKrhs.y.asc
new file mode 100644
index 0000000..9dfda8a
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/trKrhs.y.asc
@@ -0,0 +1,21 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 0 3 0 0 -0.3000000000000000444 0 0
+0 0 0 0 0 3 1 3 0 0 -0.2000000000000000111 0 0
+0 0 0 0 0 3 2 3 0 0 -0.1000000000000000056 0 0
+0 0 0 0 0 3 3 3 0 0 0 0 -0.7568371511643994243
+0 0 0 0 0 3 4 3 0 0 0.1000000000000000056 0 3.206759352693439702
+0 0 0 0 0 3 5 3 0 0 0.2000000000000000111 0 6.196511523206994276
+0 0 0 0 0 3 6 3 0 0 0.3000000000000000444 0 6.16756339084501537
+0 0 0 0 0 3 7 3 0 0 0.4000000000000000222 0 3.181497761559038739
+0 0 0 0 0 3 8 3 0 0 0.5 0 -0.7554108425893699685
+0 0 0 0 0 3 9 3 0 0 0.6000000000000000888 0 -3.653405384625258545
+0 0 0 0 0 3 10 3 0 0 0.7000000000000000666 0 -4.993157984218600909
+0 0 0 0 0 3 11 3 0 0 0.8000000000000000444 0 -4.998247353042854613
+0 0 0 0 0 3 12 3 0 0 0.9000000000000000222 0 -3.663942027173523464
+0 0 0 0 0 3 13 3 0 0 1 0 0
+0 0 0 0 0 3 14 3 0 0 1.100000000000000089 0 0
+0 0 0 0 0 3 15 3 0 0 1.200000000000000178 0 0
+
+#
+
diff --git a/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/trKrhs.z.asc b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/trKrhs.z.asc
new file mode 100644
index 0000000..ce21929
--- /dev/null
+++ b/ML_CCZ4_Test/test/ML_CCZ4_sgw3d_rhs/trKrhs.z.asc
@@ -0,0 +1,27 @@
+# 1D ASCII output created by CarpetIOASCII
+#
+0 0 0 0 0 3 3 0 0 0 0 -0.3000000000000000444 0
+0 0 0 0 0 3 3 1 0 0 0 -0.2000000000000000111 0
+0 0 0 0 0 3 3 2 0 0 0 -0.1000000000000000056 0
+0 0 0 0 0 3 3 3 0 0 0 0 -0.7568371511643994243
+0 0 0 0 0 3 3 4 0 0 0 0.1000000000000000056 3.206759352693170584
+0 0 0 0 0 3 3 5 0 0 0 0.2000000000000000111 6.196511523207024474
+0 0 0 0 0 3 3 6 0 0 0 0.3000000000000000444 6.167563390845131721
+0 0 0 0 0 3 3 7 0 0 0 0.4000000000000000222 3.18149776155861197
+0 0 0 0 0 3 3 8 0 0 0 0.5 0
+0 0 0 0 0 3 3 9 0 0 0 0.6000000000000000888 0
+0 0 0 0 0 3 3 10 0 0 0 0.7000000000000000666 0
+
+0 0 0 1 0 3 3 5 0 0 0 0.2000000000000000111 0
+0 0 0 1 0 3 3 6 0 0 0 0.3000000000000000444 0
+0 0 0 1 0 3 3 7 0 0 0 0.4000000000000000222 0
+0 0 0 1 0 3 3 8 0 0 0 0.5 -0.7554108425893716339
+0 0 0 1 0 3 3 9 0 0 0 0.6000000000000000888 -3.65340538462526121
+0 0 0 1 0 3 3 10 0 0 0 0.7000000000000000666 -4.993157984218628442
+0 0 0 1 0 3 3 11 0 0 0 0.8000000000000000444 -4.998247353042727603
+0 0 0 1 0 3 3 12 0 0 0 0.9000000000000000222 -3.663942027173496374
+0 0 0 1 0 3 3 13 0 0 0 1 0
+0 0 0 1 0 3 3 14 0 0 0 1.100000000000000089 0
+0 0 0 1 0 3 3 15 0 0 0 1.200000000000000178 0
+
+
diff --git a/ML_CCZ4_Test/test/test.ccl b/ML_CCZ4_Test/test/test.ccl
new file mode 100644
index 0000000..95b367d
--- /dev/null
+++ b/ML_CCZ4_Test/test/test.ccl
@@ -0,0 +1 @@
+NPROCS 2
diff --git a/ML_WaveToyFO/configuration.ccl b/ML_WaveToyFO/configuration.ccl
index 8e2c3c5..0a66ec2 100644
--- a/ML_WaveToyFO/configuration.ccl
+++ b/ML_WaveToyFO/configuration.ccl
@@ -1,4 +1,6 @@
# File produced by Kranc
REQUIRES GenericFD
-REQUIRES LoopControl
+OPTIONAL LoopControl
+{
+}
diff --git a/ML_WaveToyFO/param.ccl b/ML_WaveToyFO/param.ccl
index 854aee9..5bfa8b8 100644
--- a/ML_WaveToyFO/param.ccl
+++ b/ML_WaveToyFO/param.ccl
@@ -41,6 +41,12 @@ CCTK_INT rhs_timelevels "Number of active RHS timelevels" STEERABLE=RECOVER
} 1
restricted:
+CCTK_INT other_timelevels "Number of active timelevels for non-evolved grid functions" STEERABLE=RECOVER
+{
+ 0:2 :: ""
+} 1
+
+restricted:
CCTK_INT WTFO_Gaussian_calc_every "WTFO_Gaussian_calc_every" STEERABLE=ALWAYS
{
*:* :: ""
diff --git a/ML_WaveToyFO/schedule.ccl b/ML_WaveToyFO/schedule.ccl
index e8c9a3f..f294545 100644
--- a/ML_WaveToyFO/schedule.ccl
+++ b/ML_WaveToyFO/schedule.ccl
@@ -1,7 +1,10 @@
# File produced by Kranc
-STORAGE: WT_w[1]
+if (other_timelevels == 1)
+{
+ STORAGE: WT_w[1]
+}
if (timelevels == 1)
{
@@ -63,12 +66,6 @@ schedule ML_WaveToyFO_Startup at STARTUP
OPTIONS: meta
} "create banner"
-schedule ML_WaveToyFO_RegisterVars in MoL_Register
-{
- LANG: C
- OPTIONS: meta
-} "Register Variables for MoL"
-
schedule ML_WaveToyFO_RegisterSymmetries in SymmetryRegister
{
LANG: C
@@ -78,11 +75,19 @@ schedule ML_WaveToyFO_RegisterSymmetries in SymmetryRegister
schedule WTFO_Gaussian AT initial
{
LANG: C
+ WRITES: ML_WaveToyFO::WT_rho
+ WRITES: ML_WaveToyFO::WT_u
+ WRITES: ML_WaveToyFO::WT_v
} "WTFO_Gaussian"
schedule WTFO_RHS IN MoL_CalcRHS
{
LANG: C
+ READS: ML_WaveToyFO::WT_rho
+ READS: ML_WaveToyFO::WT_v
+ WRITES: ML_WaveToyFO::WT_rhorhs
+ WRITES: ML_WaveToyFO::WT_urhs
+ WRITES: ML_WaveToyFO::WT_vrhs
} "WTFO_RHS"
schedule WTFO_RHS AT analysis
@@ -91,12 +96,19 @@ schedule WTFO_RHS AT analysis
SYNC: WT_rhorhs
SYNC: WT_urhs
SYNC: WT_vrhs
+ READS: ML_WaveToyFO::WT_rho
+ READS: ML_WaveToyFO::WT_v
+ WRITES: ML_WaveToyFO::WT_rhorhs
+ WRITES: ML_WaveToyFO::WT_urhs
+ WRITES: ML_WaveToyFO::WT_vrhs
} "WTFO_RHS"
schedule WTFO_constraints AT analysis
{
LANG: C
SYNC: WT_w
+ READS: ML_WaveToyFO::WT_v
+ WRITES: ML_WaveToyFO::WT_w
} "WTFO_constraints"
schedule ML_WaveToyFO_SelectBoundConds in MoL_PostStep
@@ -114,6 +126,12 @@ schedule ML_WaveToyFO_CheckBoundaries at BASEGRID
OPTIONS: meta
} "check boundaries treatment"
+schedule ML_WaveToyFO_RegisterVars in MoL_Register
+{
+ LANG: C
+ OPTIONS: meta
+} "Register Variables for MoL"
+
schedule group ApplyBCs as ML_WaveToyFO_ApplyBCs in MoL_PostStep after ML_WaveToyFO_SelectBoundConds
{
# no language specified
diff --git a/ML_WaveToyFO/src/WTFO_Gaussian.cc b/ML_WaveToyFO/src/WTFO_Gaussian.cc
index 0320d22..560f59b 100644
--- a/ML_WaveToyFO/src/WTFO_Gaussian.cc
+++ b/ML_WaveToyFO/src/WTFO_Gaussian.cc
@@ -12,6 +12,7 @@
#include "cctk_Parameters.h"
#include "GenericFD.h"
#include "Differencing.h"
+#include "cctk_Loop.h"
#include "loopcontrol.h"
/* Define macros used in calculations */
@@ -27,8 +28,6 @@ static void WTFO_Gaussian_Body(cGH const * restrict const cctkGH, int const dir,
DECLARE_CCTK_PARAMETERS;
- /* Declare finite differencing variables */
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -59,9 +58,9 @@ static void WTFO_Gaussian_Body(cGH const * restrict const cctkGH, int const dir,
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 p1o144dxdy = 0.00694444444444444444444444444444*INV(dx*dy);
+ CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx*dz);
+ CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy*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));
@@ -76,7 +75,7 @@ static void WTFO_Gaussian_Body(cGH const * restrict const cctkGH, int const dir,
/* Loop over the grid points */
#pragma omp parallel
- LC_LOOP3 (WTFO_Gaussian,
+ CCTK_LOOP3(WTFO_Gaussian,
i,j,k, imin[0],imin[1],imin[2], imax[0],imax[1],imax[2],
cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
{
@@ -108,7 +107,7 @@ static void WTFO_Gaussian_Body(cGH const * restrict const cctkGH, int const dir,
v2[index] = v2L;
v3[index] = v3L;
}
- LC_ENDLOOP3 (WTFO_Gaussian);
+ CCTK_ENDLOOP3(WTFO_Gaussian);
}
extern "C" void WTFO_Gaussian(CCTK_ARGUMENTS)
@@ -127,11 +126,14 @@ extern "C" void WTFO_Gaussian(CCTK_ARGUMENTS)
return;
}
- const char *groups[] = {"ML_WaveToyFO::WT_rho","ML_WaveToyFO::WT_u","ML_WaveToyFO::WT_v"};
+ const char *const groups[] = {
+ "ML_WaveToyFO::WT_rho",
+ "ML_WaveToyFO::WT_u",
+ "ML_WaveToyFO::WT_v"};
GenericFD_AssertGroupStorage(cctkGH, "WTFO_Gaussian", 3, groups);
- GenericFD_LoopOverEverything(cctkGH, &WTFO_Gaussian_Body);
+ GenericFD_LoopOverEverything(cctkGH, WTFO_Gaussian_Body);
if (verbose > 1)
{
diff --git a/ML_WaveToyFO/src/WTFO_RHS.cc b/ML_WaveToyFO/src/WTFO_RHS.cc
index fb9af18..d197632 100644
--- a/ML_WaveToyFO/src/WTFO_RHS.cc
+++ b/ML_WaveToyFO/src/WTFO_RHS.cc
@@ -12,6 +12,7 @@
#include "cctk_Parameters.h"
#include "GenericFD.h"
#include "Differencing.h"
+#include "cctk_Loop.h"
#include "loopcontrol.h"
/* Define macros used in calculations */
@@ -45,8 +46,6 @@ static void WTFO_RHS_Body(cGH const * restrict const cctkGH, int const dir, int
DECLARE_CCTK_PARAMETERS;
- /* Declare finite differencing variables */
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -77,9 +76,9 @@ static void WTFO_RHS_Body(cGH const * restrict const cctkGH, int const dir, int
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 p1o144dxdy = 0.00694444444444444444444444444444*INV(dx*dy);
+ CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx*dz);
+ CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy*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));
@@ -94,7 +93,7 @@ static void WTFO_RHS_Body(cGH const * restrict const cctkGH, int const dir, int
/* Loop over the grid points */
#pragma omp parallel
- LC_LOOP3 (WTFO_RHS,
+ CCTK_LOOP3(WTFO_RHS,
i,j,k, imin[0],imin[1],imin[2], imax[0],imax[1],imax[2],
cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
{
@@ -137,7 +136,7 @@ static void WTFO_RHS_Body(cGH const * restrict const cctkGH, int const dir, int
v2rhs[index] = v2rhsL;
v3rhs[index] = v3rhsL;
}
- LC_ENDLOOP3 (WTFO_RHS);
+ CCTK_ENDLOOP3(WTFO_RHS);
}
extern "C" void WTFO_RHS(CCTK_ARGUMENTS)
@@ -156,12 +155,17 @@ extern "C" void WTFO_RHS(CCTK_ARGUMENTS)
return;
}
- const char *groups[] = {"ML_WaveToyFO::WT_rho","ML_WaveToyFO::WT_rhorhs","ML_WaveToyFO::WT_urhs","ML_WaveToyFO::WT_v","ML_WaveToyFO::WT_vrhs"};
+ const char *const groups[] = {
+ "ML_WaveToyFO::WT_rho",
+ "ML_WaveToyFO::WT_rhorhs",
+ "ML_WaveToyFO::WT_urhs",
+ "ML_WaveToyFO::WT_v",
+ "ML_WaveToyFO::WT_vrhs"};
GenericFD_AssertGroupStorage(cctkGH, "WTFO_RHS", 5, groups);
GenericFD_EnsureStencilFits(cctkGH, "WTFO_RHS", 2, 2, 2);
- GenericFD_LoopOverInterior(cctkGH, &WTFO_RHS_Body);
+ GenericFD_LoopOverInterior(cctkGH, WTFO_RHS_Body);
if (verbose > 1)
{
diff --git a/ML_WaveToyFO/src/WTFO_constraints.cc b/ML_WaveToyFO/src/WTFO_constraints.cc
index 3c89dcd..fe58e77 100644
--- a/ML_WaveToyFO/src/WTFO_constraints.cc
+++ b/ML_WaveToyFO/src/WTFO_constraints.cc
@@ -12,6 +12,7 @@
#include "cctk_Parameters.h"
#include "GenericFD.h"
#include "Differencing.h"
+#include "cctk_Loop.h"
#include "loopcontrol.h"
/* Define macros used in calculations */
@@ -39,8 +40,6 @@ static void WTFO_constraints_Body(cGH const * restrict const cctkGH, int const d
DECLARE_CCTK_PARAMETERS;
- /* Declare finite differencing variables */
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -71,9 +70,9 @@ static void WTFO_constraints_Body(cGH const * restrict const cctkGH, int const d
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 p1o144dxdy = 0.00694444444444444444444444444444*INV(dx*dy);
+ CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx*dz);
+ CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy*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));
@@ -88,7 +87,7 @@ static void WTFO_constraints_Body(cGH const * restrict const cctkGH, int const d
/* Loop over the grid points */
#pragma omp parallel
- LC_LOOP3 (WTFO_constraints,
+ CCTK_LOOP3(WTFO_constraints,
i,j,k, imin[0],imin[1],imin[2], imax[0],imax[1],imax[2],
cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
{
@@ -123,7 +122,7 @@ static void WTFO_constraints_Body(cGH const * restrict const cctkGH, int const d
w2[index] = w2L;
w3[index] = w3L;
}
- LC_ENDLOOP3 (WTFO_constraints);
+ CCTK_ENDLOOP3(WTFO_constraints);
}
extern "C" void WTFO_constraints(CCTK_ARGUMENTS)
@@ -142,12 +141,14 @@ extern "C" void WTFO_constraints(CCTK_ARGUMENTS)
return;
}
- const char *groups[] = {"ML_WaveToyFO::WT_v","ML_WaveToyFO::WT_w"};
+ const char *const groups[] = {
+ "ML_WaveToyFO::WT_v",
+ "ML_WaveToyFO::WT_w"};
GenericFD_AssertGroupStorage(cctkGH, "WTFO_constraints", 2, groups);
GenericFD_EnsureStencilFits(cctkGH, "WTFO_constraints", 2, 2, 2);
- GenericFD_LoopOverInterior(cctkGH, &WTFO_constraints_Body);
+ GenericFD_LoopOverInterior(cctkGH, WTFO_constraints_Body);
if (verbose > 1)
{
diff --git a/ML_WaveToyFO/src/make.code.defn b/ML_WaveToyFO/src/make.code.defn
index d60b8d6..1b30d1c 100644
--- a/ML_WaveToyFO/src/make.code.defn
+++ b/ML_WaveToyFO/src/make.code.defn
@@ -1,3 +1,3 @@
# File produced by Kranc
-SRCS = Startup.cc RegisterMoL.cc RegisterSymmetries.cc WTFO_Gaussian.cc WTFO_RHS.cc WTFO_constraints.cc Boundaries.cc
+SRCS = Startup.cc RegisterSymmetries.cc RegisterMoL.cc WTFO_Gaussian.cc WTFO_RHS.cc WTFO_constraints.cc Boundaries.cc
diff --git a/m/Makefile b/m/Makefile
index 3af082a..cf8260b 100644
--- a/m/Makefile
+++ b/m/Makefile
@@ -13,13 +13,14 @@ McLachlan_ADM.out: McLachlan_ADM.m
done
McLachlan_BSSN.out: McLachlan_BSSN.m
- rm -rf ML_BSSN*
+ rm -rf ML_BSSN* ML_CCZ4*
./runmath.sh $^
for thorn in ML_BSSN*; do \
./copy-if-changed.sh $$thorn ../$$thorn && \
./create-helper-thorn.sh $$thorn && \
./copy-if-changed.sh $${thorn}_Helper ../$${thorn}_Helper; \
done
+ ./copy-if-changed.sh ML_CCZ4 ../ML_CCZ4
McLachlan_ADMConstraints.out: McLachlan_ADMConstraints.m
rm -rf ML_ADMConstraints*
diff --git a/m/McLachlan_BSSN.m b/m/McLachlan_BSSN.m
index 2d4eeb3..fa8e79c 100644
--- a/m/McLachlan_BSSN.m
+++ b/m/McLachlan_BSSN.m
@@ -6,8 +6,8 @@ SetSourceLanguage["C"];
(* Options *)
(******************************************************************************)
-createCode[derivOrder_, useJacobian_, splitUpwindDerivs_, evolutionTimelevels_, addMatter_] :=
-Module[{},
+createCode[derivOrder_, useJacobian_, splitUpwindDerivs_, evolutionTimelevels_, addMatter_, formulation_] :=
+Module[{prefix, suffix, thorn},
prefix = "ML_";
suffix =
@@ -19,9 +19,10 @@ suffix =
(* <> If [addMatter==1, "_M", ""] *)
;
-BSSN = prefix <> "BSSN" <> suffix;
-
+thorn = prefix <> formulation <> suffix;
+SetAttributes[IfCCZ4, HoldAll];
+IfCCZ4[expr_, else_:Sequence[]] := If[formulation === "CCZ4", expr, Unevaluated[else]];
(******************************************************************************)
(* Derivatives *)
@@ -103,7 +104,8 @@ Map [DefineTensor,
xx, rr, th, ph,
admg, admK, admalpha, admdtalpha, admbeta, admdtbeta, H, M,
g, detg, gu, G, R, trR, Km, trK, cdphi, cdphi2,
- phi, gt, At, Xt, Xtn, alpha, A, beta, B, Atm, Atu, trA, Ats, trAts,
+ phi, gt, At, Xt, Xtn, Theta, Z,
+ alpha, A, beta, B, Atm, Atu, trA, Ats, trAts,
dottrK, dotXt,
cXt, cS, cA,
e4phi, em4phi, ddetg, detgt, gtu, ddetgt, dgtu, ddgtu, Gtl, Gtlu, Gt,
@@ -159,6 +161,11 @@ T11=eTxx; T12=eTxy; T22=eTyy; T13=eTxz; T23=eTyz; T33=eTzz;
(* Expressions *)
(******************************************************************************)
+(* enum constants for conformalMethod; these must be consistent
+ with the definition of the Cactus parameter conformalMethod *)
+CMphi = 0;
+CMW = 1;
+
detgExpr = Det [MatrixOfComponents [g [la,lb]]];
ddetgExpr[la_] =
Sum [D[Det[MatrixOfComponents[g[la, lb]]], X] PD[X, la],
@@ -187,7 +194,8 @@ evolvedGroups =
SetGroupName [CreateGroupFromTensor [alpha ], prefix <> "lapse" ],
SetGroupName [CreateGroupFromTensor [A ], prefix <> "dtlapse" ],
SetGroupName [CreateGroupFromTensor [beta[ua] ], prefix <> "shift" ],
- SetGroupName [CreateGroupFromTensor [B[ua] ], prefix <> "dtshift" ]};
+ SetGroupName [CreateGroupFromTensor [B[ua] ], prefix <> "dtshift" ],
+ IfCCZ4[SetGroupName[CreateGroupFromTensor[Theta], prefix <> "Theta"]]};
evaluatedGroups =
{SetGroupName [CreateGroupFromTensor [H ], prefix <> "Ham"],
SetGroupName [CreateGroupFromTensor [M[la] ], prefix <> "mom"],
@@ -223,12 +231,12 @@ groups = Join [declaredGroups, extraGroups];
initialCalc =
{
- Name -> BSSN <> "_Minkowski",
+ Name -> thorn <> "_Minkowski",
Schedule -> {"IN ADMBase_InitialData"},
ConditionalOnKeyword -> {"my_initial_data", "Minkowski"},
Equations ->
{
- phi -> IfThen [conformalMethod, 1, 0],
+ phi -> IfThen[conformalMethod==CMW, 1, 0],
gt[la,lb] -> KD[la,lb],
trK -> 0,
At[la,lb] -> 0,
@@ -236,7 +244,8 @@ initialCalc =
alpha -> 1,
A -> 0,
beta[ua] -> 0,
- B[ua] -> 0
+ B[ua] -> 0,
+ IfCCZ4[Theta -> 0]
}
};
@@ -273,7 +282,7 @@ Module[
convertFromADMBaseCalc =
{
- Name -> BSSN <> "_convertFromADMBase",
+ Name -> thorn <> "_convertFromADMBase",
Schedule -> {"AT initial AFTER ADMBase_PostInitial"},
ConditionalOnKeyword -> {"my_initial_data", "ADMBase"},
Shorthands -> {g[la,lb], detg, gu[ua,ub], em4phi},
@@ -283,8 +292,8 @@ convertFromADMBaseCalc =
detg -> detgExpr,
gu[ua,ub] -> 1/detg detgExpr MatrixInverse [g[ua,ub]],
- phi -> IfThen [conformalMethod, detg^(-1/6), Log[detg]/12],
- em4phi -> IfThen [conformalMethod, phi^2, Exp[-4 phi]],
+ phi -> IfThen[conformalMethod==CMW, detg^(-1/6), Log[detg]/12],
+ em4phi -> IfThen[conformalMethod==CMW, phi^2, Exp[-4 phi]],
gt[la,lb] -> em4phi g[la,lb],
trK -> gu[ua,ub] admK[la,lb],
@@ -292,14 +301,16 @@ convertFromADMBaseCalc =
alpha -> admalpha,
- beta[ua] -> admbeta[ua]
+ beta[ua] -> admbeta[ua],
+
+ IfCCZ4[Theta -> 0]
}
};
convertFromADMBaseGammaCalc =
{
- Name -> BSSN <> "_convertFromADMBaseGamma",
- Schedule -> {"AT initial AFTER " <> BSSN <> "_convertFromADMBase"},
+ Name -> thorn <> "_convertFromADMBaseGamma",
+ Schedule -> {"AT initial AFTER " <> thorn <> "_convertFromADMBase"},
ConditionalOnKeyword -> {"my_initial_data", "ADMBase"},
(*
Where -> InteriorNoSync,
@@ -355,8 +366,8 @@ convertFromADMBaseGammaCalc =
initialised. *)
initGammaCalc =
{
- Name -> BSSN <> "_InitGamma",
- Schedule -> {"AT initial BEFORE " <> BSSN <> "_convertFromADMBaseGamma"},
+ Name -> thorn <> "_InitGamma",
+ Schedule -> {"AT initial BEFORE " <> thorn <> "_convertFromADMBaseGamma"},
ConditionalOnKeyword -> {"my_initial_data", "ADMBase"},
Where -> Everywhere,
Equations ->
@@ -375,13 +386,13 @@ initGammaCalc =
convertToADMBaseCalc =
{
- Name -> BSSN <> "_convertToADMBase",
- Schedule -> {"IN " <> BSSN <> "_convertToADMBaseGroup"},
+ Name -> thorn <> "_convertToADMBase",
+ Schedule -> {"IN " <> thorn <> "_convertToADMBaseGroup"},
Where -> Everywhere,
Shorthands -> {e4phi},
Equations ->
{
- e4phi -> IfThen [conformalMethod, 1/phi^2, Exp[4 phi]],
+ e4phi -> IfThen[conformalMethod==CMW, 1/phi^2, Exp[4 phi]],
admg[la,lb] -> e4phi gt[la,lb],
admK[la,lb] -> e4phi At[la,lb] + (1/3) admg[la,lb] trK,
admalpha -> alpha,
@@ -391,8 +402,8 @@ convertToADMBaseCalc =
convertToADMBaseDtLapseShiftCalc =
{
- Name -> BSSN <> "_convertToADMBaseDtLapseShift",
- Schedule -> {"IN " <> BSSN <> "_convertToADMBaseGroup"},
+ Name -> thorn <> "_convertToADMBaseDtLapseShift",
+ Schedule -> {"IN " <> thorn <> "_convertToADMBaseGroup"},
ConditionalOnKeyword -> {"dt_lapse_shift_method", "correct"},
Where -> Interior,
Shorthands -> {dir[ua], detgt, gtu[ua,ub], eta, theta},
@@ -415,7 +426,8 @@ convertToADMBaseDtLapseShiftCalc =
*)
admdtalpha -> - harmonicF alpha^harmonicN
(+ LapseACoeff A
- + (1 - LapseACoeff) trK)
+ + ((1 - LapseACoeff)
+ (trK - IfCCZ4[2 Theta, 0])))
+ LapseAdvectionCoeff Upwind[beta[ua], alpha, la],
admdtbeta[ua] -> IfThen[harmonicShift,
- 1/2 gtu[ua,uj] phi alpha
@@ -434,8 +446,8 @@ convertToADMBaseDtLapseShiftCalc =
convertToADMBaseDtLapseShiftBoundaryCalc =
{
- Name -> BSSN <> "_convertToADMBaseDtLapseShiftBoundary",
- Schedule -> {"IN " <> BSSN <> "_convertToADMBaseGroup"},
+ Name -> thorn <> "_convertToADMBaseDtLapseShiftBoundary",
+ Schedule -> {"IN " <> thorn <> "_convertToADMBaseGroup"},
ConditionalOnKeyword -> {"dt_lapse_shift_method", "correct"},
Where -> BoundaryWithGhosts,
Shorthands -> {detgt, gtu[ua,ub], eta, theta},
@@ -455,7 +467,8 @@ convertToADMBaseDtLapseShiftBoundaryCalc =
*)
admdtalpha -> - harmonicF alpha^harmonicN
(+ LapseACoeff A
- + (1 - LapseACoeff) trK),
+ + ((1 - LapseACoeff)
+ (trK - IfCCZ4[2 Theta, 0]))),
admdtbeta[ua] -> IfThen[harmonicShift,
0,
(* else *)
@@ -468,8 +481,8 @@ convertToADMBaseDtLapseShiftBoundaryCalc =
convertToADMBaseFakeDtLapseShiftCalc =
{
- Name -> BSSN <> "_convertToADMBaseFakeDtLapseShift",
- Schedule -> {"IN " <> BSSN <> "_convertToADMBaseGroup"},
+ Name -> thorn <> "_convertToADMBaseFakeDtLapseShift",
+ Schedule -> {"IN " <> thorn <> "_convertToADMBaseGroup"},
ConditionalOnKeyword -> {"dt_lapse_shift_method", "noLapseShiftAdvection"},
Where -> Everywhere,
Shorthands -> {detgt, gtu[ua,ub], eta, theta},
@@ -491,7 +504,8 @@ convertToADMBaseFakeDtLapseShiftCalc =
*)
admdtalpha -> - harmonicF alpha^harmonicN
(+ LapseACoeff A
- + (1 - LapseACoeff) trK),
+ + ((1 - LapseACoeff)
+ (trK - IfCCZ4[2 Theta, 0]))),
admdtbeta[ua] -> IfThen[harmonicShift,
0,
(* else *)
@@ -508,8 +522,8 @@ convertToADMBaseFakeDtLapseShiftCalc =
evolCalc =
{
- Name -> BSSN <> "_RHS",
- Schedule -> {"IN " <> BSSN <> "_evolCalcGroup"},
+ Name -> thorn <> "_RHS",
+ Schedule -> {"IN " <> thorn <> "_evolCalcGroup"},
(*
Where -> Interior,
*)
@@ -524,7 +538,8 @@ evolCalc =
Atm[ua,lb], Atu[ua,ub],
e4phi, em4phi, cdphi[la], cdphi2[la,lb], g[la,lb], detg,
gu[ua,ub], Ats[la,lb], trAts, eta, theta,
- rho, S[la], trS, fac1, fac2, dottrK, dotXt[ua], epsdiss[ua]},
+ rho, S[la], trS, fac1, fac2, dottrK, dotXt[ua],
+ epsdiss[ua], IfCCZ4[Z[ua]], IfCCZ4[dotTheta]},
Equations ->
{
dir[ua] -> Sign[beta[ua]],
@@ -542,7 +557,20 @@ evolCalc =
used instead of Xt where no derivatives of Xt are taken *)
Xtn[ui] -> gtu[uj,uk] Gt[ui,lj,lk],
+ e4phi -> IfThen[conformalMethod==CMW, 1/phi^2, Exp[4 phi]],
+ em4phi -> 1 / e4phi,
+ g[la,lb] -> e4phi gt[la,lb],
+ detg -> detgExpr,
+ gu[ua,ub] -> em4phi gtu[ua,ub],
+
+ (* The Z quantities *)
+ (* gr-qc:1106.2254 (2011), eqn. (23) *)
+ IfCCZ4[
+ Z[ud] -> (1/2) gu[ua,ud] (- PD[gt[la,lb],lc] gtu[ub,uc] + gt[la,lc] Xt[uc])
+ ],
+
(* PRD 62, 044034 (2000), eqn. (18) *)
+ (* Adding Z term by changing Xtn to Xt *)
Rt[li,lj] -> - (1/2) gtu[ul,um] PD[gt[li,lj],ll,lm]
+ (1/2) gt[lk,li] PD[Xt[uk],lj]
+ (1/2) gt[lk,lj] PD[Xt[uk],li]
@@ -552,9 +580,9 @@ evolCalc =
+ Gt[uk,lj,ll] Gtlu[li,lk,ul]
+ Gt[uk,li,ll] Gtlu[lk,lj,ul]),
- fac1 -> IfThen [conformalMethod, -1/(2 phi), 1],
+ fac1 -> IfThen[conformalMethod==CMW, -1/(2 phi), 1],
cdphi[la] -> fac1 CDt[phi,la],
- fac2 -> IfThen [conformalMethod, 1/(2 phi^2), 0],
+ fac2 -> IfThen[conformalMethod==CMW, 1/(2 phi^2), 0],
cdphi2[la,lb] -> fac1 CDt[phi,la,lb] + fac2 CDt[phi,la] CDt[phi,lb],
(* PRD 62, 044034 (2000), eqn. (15) *)
@@ -566,14 +594,12 @@ evolCalc =
Atm[ua,lb] -> gtu[ua,uc] At[lc,lb],
Atu[ua,ub] -> Atm[ua,lc] gtu[ub,uc],
- e4phi -> IfThen [conformalMethod, 1/phi^2, Exp[4 phi]],
- em4phi -> 1 / e4phi,
- g[la,lb] -> e4phi gt[la,lb],
- detg -> detgExpr,
- (* gu[ua,ub] -> 1/detg detgExpr MatrixInverse [g[ua,ub]], *)
- gu[ua,ub] -> em4phi gtu[ua,ub],
-
R[la,lb] -> Rt[la,lb] + Rphi[la,lb],
+ IfCCZ4[
+ R[la,lb] -> R[la,lb] + (2/phi) (+ g[la,lc] Z[uc] PD[phi,lb]
+ + g[lb,lc] Z[uc] PD[phi,la] - g[la,lb] Z[uc] PD[phi,lc])
+ + e4phi Z[uc] PD[gt[la,lb],lc]
+ ],
(* Matter terms *)
@@ -591,15 +617,20 @@ evolCalc =
(* PRD 62, 044034 (2000), eqn. (10) *)
(* PRD 67 084023 (2003), eqn. (16) and (23) *)
- dot[phi] -> IfThen [conformalMethod, 1/3 phi, -1/6] alpha trK
- + IfThen [conformalMethod, -1/3 phi, 1/6] PD[beta[ua],la],
+ dot[phi] -> IfThen[conformalMethod==CMW, 1/3 phi, -1/6]
+ (alpha trK - PD[beta[ua],la]),
(* PRD 62, 044034 (2000), eqn. (9) *)
- dot[gt[la,lb]] -> - 2 alpha At[la,lb]
+ (* gr-qc:1106.2254 (2011), eqn. (14) *)
+ (* removing trA from Aij ensures that detg = 1 *)
+ dot[gt[la,lb]] -> - 2 alpha (At[la,lb] - IfCCZ4[(1/3) At[lc,ld] gtu[uc,ud] gt[la,lb], 0])
+ gt[la,lc] PD[beta[uc],lb] + gt[lb,lc] PD[beta[uc],la]
- (2/3) gt[la,lb] PD[beta[uc],lc],
(* PRD 62, 044034 (2000), eqn. (20) *)
(* PRD 67 084023 (2003), eqn (26) *)
+ (* gr-qc:1106.2254 (2011), eqn. (19) *)
+ (* Adding Z terms by changing Xtn to Xt,
+ also adding extra Z and Theta terms *)
dotXt[ui] -> - 2 Atu[ui,uj] PD[alpha,lj]
+ 2 alpha (+ Gt[ui,lj,lk] Atu[uk,uj]
- (2/3) gtu[ui,uj] PD[trK,lj]
@@ -608,27 +639,59 @@ evolCalc =
+ (1/3) gtu[ui,uj] PD[beta[ul],lj,ll]
- Xtn[uj] PD[beta[ui],lj]
+ (2/3) Xtn[ui] PD[beta[uj],lj]
+ + IfCCZ4[
+ + IfThen[GammaShift,
+ 2 e4phi (- Z[uj] PD[beta[ui],lj]
+ + (2/3) Z[ui] PD[beta[uj],lj]),
+ 0]
+ - (4/3) alpha e4phi Z[ui] trK
+ + 2 gtu[ui,uj] (+ alpha PD[Theta,lj]
+ - Theta PD[alpha,lj])
+ - 2 alpha e4phi dampk1 Z[ui],
+ 0]
(* Equation (4.28) in Baumgarte & Shapiro (Phys. Rept. 376 (2003) 41-131) *)
+ addMatter (- 16 Pi alpha gtu[ui,uj] S[lj]),
dot[Xt[ui]] -> dotXt[ui],
+ (* gr-qc:1106.2254 (2011), eqn. (18) *)
+ IfCCZ4[
+ dotTheta ->
+ - PD[alpha,la] Z[ua] - dampk1 (2 + dampk2) alpha Theta
+ + (1/2) alpha (gu[ua,ub] R[la,lb] - Atm[ua,lb] Atm[ub,la] + (2/3) trK^2 - 2 trK Theta)
+ ],
+
+ IfCCZ4[
+ dot[Theta] -> dotTheta
+ ],
+
(* PRD 62, 044034 (2000), eqn. (11) *)
+ (* gr-qc:1106.2254 (2011), eqn. (17) *)
+ (* Adding the RHS of Theta to K, because K_Z4 = K_BSSN + 2 Theta *)
+ (* Also adding the Z term, as it has to cancel with the one in Theta *)
dottrK -> - em4phi ( gtu[ua,ub] ( PD[alpha,la,lb]
+ 2 cdphi[la] PD[alpha,lb] )
- Xtn[ua] PD[alpha,la] )
+ alpha (Atm[ua,lb] Atm[ub,la] + (1/3) trK^2)
+ + IfCCZ4[
+ + 2 dotTheta + 2 PD[alpha,la] Z[ua]
+ + dampk1 (1 - dampk2) alpha Theta,
+ 0]
(* Equation (4.21) in Baumgarte & Shapiro (Phys. Rept. 376 (2003) 41-131) *)
+ addMatter (4 Pi alpha (rho + trS)),
dot[trK] -> dottrK,
(* PRD 62, 044034 (2000), eqn. (12) *)
(* TODO: Should we use the Hamiltonian constraint to make Rij tracefree? *)
+ (* gr-qc:1106.2254 (2011), eqn. (15) *)
+ (* Adding Z terms in the Ricci and Theta terms *)
Ats[la,lb] -> - CDt[alpha,la,lb] +
+ 2 (PD[alpha,la] cdphi[lb] + PD[alpha,lb] cdphi[la] )
+ alpha R[la,lb],
trAts -> gu[ua,ub] Ats[la,lb],
dot[At[la,lb]] -> + em4phi (+ Ats[la,lb] - (1/3) g[la,lb] trAts )
- + alpha (trK At[la,lb] - 2 At[la,lc] Atm[uc,lb])
+ + alpha (+ ((trK - IfCCZ4[2 Theta, 0])
+ At[la,lb])
+ - 2 At[la,lc] Atm[uc,lb])
+ At[la,lc] PD[beta[uc],lb] + At[lb,lc] PD[beta[uc],la]
- (2/3) At[la,lb] PD[beta[uc],lc]
(* Equation (4.23) in Baumgarte & Shapiro (Phys. Rept. 376 (2003) 41-131) *)
@@ -648,9 +711,13 @@ evolCalc =
*)
dot[alpha] -> - harmonicF alpha^harmonicN
(+ LapseACoeff A
- + (1 - LapseACoeff) (trK + AlphaDriver (alpha - 1))),
+ + ((1 - LapseACoeff)
+ (+ trK - IfCCZ4[2 Theta, 0]
+ + AlphaDriver (alpha - 1)))),
- dot[A] -> + LapseACoeff (dottrK - AlphaDriver A),
+ dot[A] -> + (LapseACoeff
+ (+ dottrK - IfCCZ4[2 dotTheta, 0]
+ - AlphaDriver A)),
eta -> etaExpr,
theta -> thetaExpr,
@@ -676,9 +743,9 @@ evolCalc =
advectCalc =
{
- Name -> BSSN <> "_Advect",
- Schedule -> {"IN " <> BSSN <> "_evolCalcGroup " <>
- "AFTER (" <> BSSN <> "_RHS1 " <> BSSN <> "_RHS2)"},
+ Name -> thorn <> "_Advect",
+ Schedule -> {"IN " <> thorn <> "_evolCalcGroup " <>
+ "AFTER (" <> thorn <> "_RHS1 " <> thorn <> "_RHS2)"},
(*
Where -> Interior,
*)
@@ -697,6 +764,10 @@ advectCalc =
dot[Xt[ui]] -> dot[Xt[ui]] + Upwind[beta[uj], Xt[ui], lj],
+ IfCCZ4[
+ dot[Theta] -> dot[Theta] + Upwind[beta[ua], Theta, la]
+ ],
+
dot[trK] -> dot[trK] + Upwind[beta[ua], trK, la],
dot[At[la,lb]] -> dot[At[la,lb]] + Upwind[beta[uc], At[la,lb], lc],
@@ -725,14 +796,15 @@ evolCalc1 = PartialCalculation[evolCalc, "1",
ConditionalOnKeyword -> {"RHS_calculation", "split"}
},
{
- dot[trK],
dot[phi],
dot[gt[la,lb]],
dot[Xt[ui]],
+ dot[trK],
dot[alpha],
dot[A],
dot[beta[ua]],
- dot[B[ua]]
+ dot[B[ua]],
+ IfCCZ4[dot[Theta]]
}];
evolCalc2 = PartialCalculation[evolCalc, "2",
@@ -745,9 +817,9 @@ evolCalc2 = PartialCalculation[evolCalc, "2",
dissCalc =
{
- Name -> BSSN <> "_Dissipation",
- Schedule -> {"IN " <> BSSN <> "_evolCalcGroup " <>
- "AFTER (" <> BSSN <> "_RHS1 " <> BSSN <> "_RHS2)"},
+ Name -> thorn <> "_Dissipation",
+ Schedule -> {"IN " <> thorn <> "_evolCalcGroup " <>
+ "AFTER (" <> thorn <> "_RHS1 " <> thorn <> "_RHS2)"},
ConditionalOnKeyword -> {"apply_dissipation", "always"},
Where -> InteriorNoSync,
Shorthands -> {epsdiss[ua]},
@@ -756,16 +828,17 @@ dissCalc =
epsdiss[ua] -> EpsDiss,
Sequence@@Table[
dot[var] -> dot[var] + epsdiss[ux] PDdiss[var,lx],
- {var, {phi, gt[la,lb], Xt[ui], trK, At[la,lb], alpha, A, beta[ua], B[ua]}}]
+ {var, {phi, gt[la,lb], Xt[ui], IfCCZ4[Theta], trK, At[la,lb],
+ alpha, A, beta[ua], B[ua]}}]
}
};
dissCalcs =
Table[
{
- Name -> BSSN <> "_Dissipation_" <> ToString[var /. {Tensor[n_,__] -> n}],
- Schedule -> {"IN " <> BSSN <> "_evolCalcGroup " <>
- "AFTER (" <> BSSN <> "_RHS1 " <> BSSN <> "_RHS2)"},
+ Name -> thorn <> "_Dissipation_" <> ToString[var /. {Tensor[n_,__] -> n}],
+ Schedule -> {"IN " <> thorn <> "_evolCalcGroup " <>
+ "AFTER (" <> thorn <> "_RHS1 " <> thorn <> "_RHS2)"},
ConditionalOnKeyword -> {"apply_dissipation", "always"},
Where -> InteriorNoSync,
Shorthands -> {epsdiss[ua]},
@@ -775,12 +848,13 @@ Table[
dot[var] -> dot[var] + epsdiss[ux] PDdiss[var,lx]
}
},
- {var, {phi, gt[la,lb], Xt[ui], trK, At[la,lb], alpha, A, beta[ua], B[ua]}}
+ {var, {phi, gt[la,lb], Xt[ui], IfCCZ4[Theta], trK, At[la,lb],
+ alpha, A, beta[ua], B[ua]}}
];
RHSStaticBoundaryCalc =
{
- Name -> BSSN <> "_RHSStaticBoundary",
+ Name -> thorn <> "_RHSStaticBoundary",
Schedule -> {"IN MoL_CalcRHS"},
ConditionalOnKeyword -> {"my_rhs_boundary_condition", "static"},
Where -> Boundary,
@@ -794,7 +868,8 @@ RHSStaticBoundaryCalc =
dot[alpha] -> 0,
dot[A] -> 0,
dot[beta[ua]] -> 0,
- dot[B[ua]] -> 0
+ dot[B[ua]] -> 0,
+ IfCCZ4[dot[Theta] -> 0]
}
};
@@ -803,8 +878,8 @@ RHSStaticBoundaryCalc =
them to be zero *)
initRHSCalc =
{
- Name -> BSSN <> "_InitRHS",
- Schedule -> {"AT analysis BEFORE " <> BSSN <> "_evolCalcGroup"},
+ Name -> thorn <> "_InitRHS",
+ Schedule -> {"AT analysis BEFORE " <> thorn <> "_evolCalcGroup"},
Where -> Everywhere,
Equations ->
{
@@ -816,13 +891,14 @@ initRHSCalc =
dot[alpha] -> 0,
dot[A] -> 0,
dot[beta[ua]] -> 0,
- dot[B[ua]] -> 0
+ dot[B[ua]] -> 0,
+ IfCCZ4[dot[Theta] -> 0]
}
};
RHSRadiativeBoundaryCalc =
{
- Name -> BSSN <> "_RHSRadiativeBoundary",
+ Name -> thorn <> "_RHSRadiativeBoundary",
Schedule -> {"IN MoL_CalcRHS"},
ConditionalOnKeyword -> {"my_rhs_boundary_condition", "radiative"},
Where -> Boundary,
@@ -836,7 +912,7 @@ RHSRadiativeBoundaryCalc =
detgt -> 1 (* detgtExpr *),
gtu[ua,ub] -> 1/detgt detgtExpr MatrixInverse [gt[ua,ub]],
- em4phi -> IfThen [conformalMethod, phi^2, Exp[-4 phi]],
+ em4phi -> IfThen[conformalMethod==CMW, phi^2, Exp[-4 phi]],
gu[ua,ub] -> em4phi gtu[ua,ub],
nn[la] -> Euc[la,lb] normal[ub],
@@ -855,13 +931,16 @@ RHSRadiativeBoundaryCalc =
dot[alpha] -> - vg su[uc] PDo[alpha ,lc],
dot[A] -> - vg su[uc] PDo[A ,lc],
dot[beta[ua]] -> - su[uc] PDo[beta[ua] ,lc],
- dot[B[ua]] -> - su[uc] PDo[B[ua] ,lc]
+ dot[B[ua]] -> - su[uc] PDo[B[ua] ,lc],
+ IfCCZ4[
+ dot[Theta] -> - vg su[uc] PDo[Theta ,lc]
+ ]
}
};
enforceCalc =
{
- Name -> BSSN <> "_enforce",
+ Name -> thorn <> "_enforce",
Schedule -> {"IN MoL_PostStepModify"},
Shorthands -> {detgt, gtu[ua,ub], trAt},
Equations ->
@@ -892,13 +971,13 @@ enforceCalc =
boundaryCalc =
{
- Name -> BSSN <> "_boundary",
+ Name -> thorn <> "_boundary",
Schedule -> {"IN MoL_PostStep"},
ConditionalOnKeyword -> {"my_boundary_condition", "Minkowski"},
Where -> BoundaryWithGhosts,
Equations ->
{
- phi -> IfThen [conformalMethod, 1, 0],
+ phi -> IfThen[conformalMethod==CMW, 1, 0],
gt[la,lb] -> KD[la,lb],
trK -> 0,
At[la,lb] -> 0,
@@ -906,7 +985,8 @@ boundaryCalc =
alpha -> 1,
A -> 0,
beta[ua] -> 0,
- B[ua] -> 0
+ B[ua] -> 0,
+ IfCCZ4[Theta -> 0]
}
};
@@ -916,11 +996,11 @@ boundaryCalc =
constraintsCalc =
{
- Name -> BSSN <> "_constraints",
+ Name -> thorn <> "_constraints",
Schedule -> Automatic,
After -> "MoL_PostStep",
Where -> Interior,
- Shorthands -> {detgt, ddetgt[la], gtu[ua,ub],
+ Shorthands -> {detgt, ddetgt[la], gtu[ua,ub], Z[ua],
Gt[ua,lb,lc], Gtl[la,lb,lc], Gtlu[la,lb,uc], Xtn[ua],
e4phi, em4phi,
g[la,lb], detg, gu[ua,ub], ddetg[la], G[ua,lb,lc],
@@ -943,6 +1023,17 @@ constraintsCalc =
used instead of Xt where no derivatives of Xt are taken *)
Xtn[ui] -> gtu[uj,uk] Gt[ui,lj,lk],
+ e4phi -> IfThen[conformalMethod==CMW, 1/phi^2, Exp[4 phi]],
+ em4phi -> 1 / e4phi,
+ g[la,lb] -> e4phi gt[la,lb],
+ detg -> e4phi^3,
+ gu[ua,ub] -> em4phi gtu[ua,ub],
+
+ (* The Z quantities *)
+ IfCCZ4[
+ Z[ud] -> (1/2) gu[ua,ud] (- PD[gt[la,lb],lc] gtu[ub,uc] + gt[la,lc] Xt[uc])
+ ],
+
(* PRD 62, 044034 (2000), eqn. (18) *)
Rt[li,lj] -> - (1/2) gtu[ul,um] PD[gt[li,lj],ll,lm]
+ (1/2) gt[lk,li] PD[Xt[uk],lj]
@@ -975,9 +1066,9 @@ constraintsCalc =
- PD[gt[la,lb],l1,l2] + PD[gt[l2,lb],l1,la]),
*)
- fac1 -> IfThen [conformalMethod, -1/(2 phi), 1],
+ fac1 -> IfThen[conformalMethod==CMW, -1/(2 phi), 1],
cdphi[la] -> fac1 CDt[phi,la],
- fac2 -> IfThen [conformalMethod, 1/(2 phi^2), 0],
+ fac2 -> IfThen[conformalMethod==CMW, 1/(2 phi^2), 0],
cdphi2[la,lb] -> fac1 CDt[phi,la,lb] + fac2 CDt[phi,la] CDt[phi,lb],
(* PRD 62, 044034 (2000), eqn. (15) *)
@@ -986,13 +1077,6 @@ constraintsCalc =
+ 4 cdphi[li] cdphi[lj]
- 4 gt[li,lj] gtu[ul,un] cdphi[ln] cdphi[ll],
- e4phi -> IfThen [conformalMethod, 1/phi^2, Exp[4 phi]],
- em4phi -> 1 / e4phi,
- g[la,lb] -> e4phi gt[la,lb],
- (* detg -> detgExpr, *)
- (* gu[ua,ub] -> 1/detg detgExpr MatrixInverse [g[ua,ub]], *)
- detg -> e4phi^3,
- gu[ua,ub] -> em4phi gtu[ua,ub],
(* ddetg[la] -> PD[e4phi detg,la], *)
ddetg[la] -> e4phi ddetgt[la] + 4 detgt e4phi PD[phi,la],
(* TODO: check this equation, maybe simplify it by omitting ddetg *)
@@ -1000,7 +1084,14 @@ constraintsCalc =
+ 1/(2 detg) (+ KD[ua,lb] ddetg[lc] + KD[ua,lc] ddetg[lb]
- (1/3) g[lb,lc] gu[ua,ud] ddetg[ld]),
- R[la,lb] -> Rt[la,lb] + Rphi[la,lb],
+ R[la,lb] -> + Rt[la,lb] + Rphi[la,lb],
+
+ IfCCZ4[
+ R[la,lb] -> + (2/phi) (+ g[la,lc] Z[uc] PD[phi,lb]
+ + g[lb,lc] Z[uc] PD[phi,la] - g[la,lb] Z[uc] PD[phi,lc])
+ + e4phi Z[uc] PD[gt[la,lb],lc]
+ ],
+
trR -> gu[ua,ub] R[la,lb],
(* K[la,lb] -> e4phi At[la,lb] + (1/3) g[la,lb] trK, *)
@@ -1076,23 +1167,23 @@ extendedKeywordParameters =
{
{
Name -> "ADMBase::evolution_method",
- AllowedValues -> {BSSN}
+ AllowedValues -> {thorn}
},
{
Name -> "ADMBase::lapse_evolution_method",
- AllowedValues -> {BSSN}
+ AllowedValues -> {thorn}
},
{
Name -> "ADMBase::shift_evolution_method",
- AllowedValues -> {BSSN}
+ AllowedValues -> {thorn}
},
{
Name -> "ADMBase::dtlapse_evolution_method",
- AllowedValues -> {BSSN}
+ AllowedValues -> {thorn}
},
{
Name -> "ADMBase::dtshift_evolution_method",
- AllowedValues -> {BSSN}
+ AllowedValues -> {thorn}
}
};
@@ -1162,6 +1253,11 @@ keywordParameters =
intParameters =
{
+ IfCCZ4[{
+ Name -> GammaShift,
+ Description -> "Covariant shift term in Gamma",
+ Default -> 0
+ }],
{
Name -> harmonicN,
Description -> "d/dt alpha = - f alpha^n K (harmonic=2, 1+log=1)",
@@ -1194,6 +1290,16 @@ intParameters =
realParameters =
{
+ IfCCZ4[{
+ Name -> dampk1,
+ Description -> "CCZ4 damping term 1 for Theta and Z",
+ Default -> 0
+ }],
+ IfCCZ4[{
+ Name -> dampk2,
+ Description -> "CCZ4 damping term 2 for Theta and Z",
+ Default -> 0
+ }],
{
Name -> LapseACoeff,
Description -> "Whether to evolve A in time",
@@ -1287,7 +1393,7 @@ Join[
{} (*dissCalcs*)
];
-CreateKrancThornTT [groups, ".", BSSN,
+CreateKrancThornTT [groups, ".", thorn,
Calculations -> calculations,
DeclaredGroups -> declaredGroupNames,
PartialDerivatives -> derivatives,
@@ -1320,9 +1426,11 @@ CreateKrancThornTT [groups, ".", BSSN,
(* matter: 0 or 1
(matter seems cheap; it should be always enabled) *)
-createCode[2, False, True , 3, 1];
-createCode[4, False, True , 3, 1];
-createCode[4, False, False, 3, 1];
-createCode[4, True , True , 3, 1];
-createCode[8, False, True , 3, 1];
-createCode[8, True , True , 3, 1];
+createCode[2, False, True , 3, 1, "BSSN"];
+createCode[4, False, True , 3, 1, "BSSN"];
+createCode[4, False, False, 3, 1, "BSSN"];
+createCode[4, True , True , 3, 1, "BSSN"];
+createCode[8, False, True , 3, 1, "BSSN"];
+createCode[8, True , True , 3, 1, "BSSN"];
+
+createCode[4, False, True , 3, 1, "CCZ4"];
diff --git a/par/CCZ4/bbh_ccz4.par b/par/CCZ4/bbh_ccz4.par
new file mode 100644
index 0000000..e009fd5
--- /dev/null
+++ b/par/CCZ4/bbh_ccz4.par
@@ -0,0 +1,493 @@
+################################################################################
+ Cactus::cctk_run_title = "CCZ4 Binary Black Hole"
+################################################################################
+
+ActiveThorns = "
+ ADMBase
+ ADMCoupling
+ ADMMacros
+ AEILocalInterp
+ AHFinderDirect
+ BLAS
+ Boundary
+ Carpet
+ CarpetInterp
+ CarpetIOASCII
+ CarpetIOBasic
+ CarpetIOHDF5
+ CarpetIOScalar
+ CarpetLib
+ CarpetMask
+ CarpetReduce
+ CarpetRegrid2
+ CarpetSlab
+ CarpetTracker
+ CartGrid3D
+ CoordBase
+ CoordGauge
+ Dissipation
+ Formaline
+ Fortran
+ GenericFD
+ GSL
+ HDF5
+ InitBase
+ IOUtil
+ LAPACK
+ LocalInterp
+ LoopControl
+ ML_ADMConstraints
+ ML_BSSN
+ ML_BSSN_Helper
+ MoL
+ Multipole
+ NaNChecker
+ NewRad
+ PunctureTracker
+ QuasiLocalMeasures
+ ReflectionSymmetry
+ RotatingSymmetry180
+ Slab
+ SpaceMask
+ SphericalSurface
+ StaticConformal
+ SummationByParts
+ SymBase
+ SystemStatistics
+ TerminationTrigger
+ Time
+ TimerReport
+ TmunuBase
+ TwoPunctures
+ Vectors
+ WeylScal4
+"
+
+################################################################################
+# Grid structure
+################################################################################
+
+CartGrid3D::type = "coordbase"
+Carpet::domain_from_coordbase = "yes"
+CoordBase::domainsize = "minmax"
+
+CoordBase::xmin = 0.00
+CoordBase::ymin = -120.00
+CoordBase::zmin = 0.00
+CoordBase::xmax = +120.00
+CoordBase::ymax = +120.00
+CoordBase::zmax = +120.00
+CoordBase::dx = 2.00
+CoordBase::dy = 2.00
+CoordBase::dz = 2.00
+
+Driver::ghost_size = 3
+
+CoordBase::boundary_size_x_lower = 3
+CoordBase::boundary_size_y_lower = 3
+CoordBase::boundary_size_z_lower = 3
+CoordBase::boundary_size_x_upper = 3
+CoordBase::boundary_size_y_upper = 3
+CoordBase::boundary_size_z_upper = 3
+
+CoordBase::boundary_shiftout_x_lower = 1
+CoordBase::boundary_shiftout_z_lower = 1
+
+CarpetRegrid2::symmetry_rotating180 = yes
+
+ReflectionSymmetry::reflection_z = yes
+ReflectionSymmetry::avoid_origin_z = no
+
+Time::dtfac = 0.25
+
+################################################################################
+# Mesh refinement
+################################################################################
+
+Carpet::max_refinement_levels = 7
+CarpetRegrid2::num_centres = 2
+CarpetRegrid2::num_levels_1 = 7
+CarpetRegrid2::position_x_1 = 3
+CarpetRegrid2::radius_1 [1] = 24.0
+CarpetRegrid2::radius_1 [2] = 12.0
+CarpetRegrid2::radius_1 [3] = 6.0
+CarpetRegrid2::radius_1 [4] = 3.0
+CarpetRegrid2::radius_1 [5] = 1.5
+CarpetRegrid2::radius_1 [6] = 0.6
+CarpetRegrid2::num_levels_2 = 7
+CarpetRegrid2::position_x_2 = -3
+CarpetRegrid2::radius_2 [1] = 24.0
+CarpetRegrid2::radius_2 [2] = 12.0
+CarpetRegrid2::radius_2 [3] = 6.0
+CarpetRegrid2::radius_2 [4] = 3.0
+CarpetRegrid2::radius_2 [5] = 1.5
+CarpetRegrid2::radius_2 [6] = 0.6
+
+Carpet::use_buffer_zones = yes
+Carpet::prolongation_order_space = 5
+Carpet::prolongation_order_time = 2
+
+CarpetRegrid2::regrid_every = 64
+CarpetRegrid2::verbose = yes
+Carpet::grid_coordinates_filename = "carpet-grid.asc"
+
+Carpet::time_refinement_factors = "[1,1,2,4,8,16,32,64,128,256]"
+
+###############################################################################
+# Initial Data
+###############################################################################
+
+ADMBase::initial_data = "twopunctures"
+ADMBase::initial_lapse = "twopunctures-averaged"
+ADMBase::initial_shift = "zero"
+ADMBase::initial_dtlapse = "zero"
+ADMBase::initial_dtshift = "zero"
+
+TwoPunctures::target_M_plus = 0.5
+TwoPunctures::target_M_minus = 0.5
+
+TwoPunctures::par_m_plus = 0.476534633024028
+TwoPunctures::par_m_minus = 0.476534633024028
+
+TwoPunctures::par_b = 3
+TwoPunctures::center_offset[0] = 0
+
+TwoPunctures::par_P_plus[0] = -0.0058677669328272
+TwoPunctures::par_P_plus[1] = 0.138357448824906
+TwoPunctures::par_P_plus[2] = 0.
+
+TwoPunctures::par_P_minus[0] = 0.0058677669328272
+TwoPunctures::par_P_minus[1] = -0.138357448824906
+TwoPunctures::par_P_minus[2] = 0.
+
+TwoPunctures::par_S_plus[0] = 0.
+TwoPunctures::par_S_plus[1] = 0.
+TwoPunctures::par_S_plus[2] = 0.
+
+TwoPunctures::par_S_minus[0] = 0.
+TwoPunctures::par_S_minus[1] = 0.
+TwoPunctures::par_S_minus[2] = 0.
+
+TwoPunctures::give_bare_mass = yes
+TwoPunctures::TP_epsilon = 1.0e-6
+
+Carpet::init_fill_timelevels = yes
+InitBase::initial_data_setup_method = "init_single_level"
+
+###############################################################################
+# Evolution
+###############################################################################
+
+ADMBase::evolution_method = "ML_BSSN"
+ADMBase::lapse_evolution_method = "ML_BSSN"
+ADMBase::shift_evolution_method = "ML_BSSN"
+ADMBase::dtlapse_evolution_method = "ML_BSSN"
+ADMBase::dtshift_evolution_method = "ML_BSSN"
+
+ML_BSSN::GammaShift = 1.0
+ML_BSSN::dampk1 = 1.0
+ML_BSSN::harmonicN = 1 # 1+log
+ML_BSSN::harmonicF = 2.0 # 1+log
+ML_BSSN::ShiftGammaCoeff = 0.75
+ML_BSSN::BetaDriver = 1.0
+ML_BSSN::LapseAdvectionCoeff = 1.0
+ML_BSSN::ShiftAdvectionCoeff = 1.0
+
+ML_BSSN::MinimumLapse = 1.0e-8
+ML_BSSN::conformalMethod = 1 # 1 for W
+ML_BSSN::formulation = 1 # 1 for CCZ4
+ML_BSSN::apply_dissipation = never
+ML_BSSN::dt_lapse_shift_method = "noLapseShiftAdvection"
+
+################################################################################
+# Boundary conditions
+################################################################################
+
+ML_BSSN::my_initial_boundary_condition = "extrapolate-gammas"
+ML_BSSN::my_rhs_boundary_condition = "NewRad"
+Boundary::radpower = 2
+
+ML_BSSN::ML_log_confac_bound = "none"
+ML_BSSN::ML_metric_bound = "none"
+ML_BSSN::ML_Gamma_bound = "none"
+ML_BSSN::ML_trace_curv_bound = "none"
+ML_BSSN::ML_curv_bound = "none"
+ML_BSSN::ML_lapse_bound = "none"
+ML_BSSN::ML_dtlapse_bound = "none"
+ML_BSSN::ML_shift_bound = "none"
+ML_BSSN::ML_dtshift_bound = "none"
+ML_BSSN::ML_Theta_bound = "none"
+
+################################################################################
+# BH tracking
+################################################################################
+
+CarpetTracker::surface [0] = 0
+CarpetTracker::surface [1] = 1
+PunctureTracker::track [0] = yes
+PunctureTracker::initial_x [0] = 3
+PunctureTracker::which_surface_to_store_info[0] = 0
+PunctureTracker::track [1] = yes
+PunctureTracker::initial_x [1] = -3
+PunctureTracker::which_surface_to_store_info[1] = 1
+
+###############################################################################
+# Spatial finite differencing
+###############################################################################
+
+SummationByParts::order = 4
+ML_BSSN::fdOrder = 4
+
+Dissipation::order = 5
+Dissipation::vars = "
+ ML_BSSN::ML_log_confac
+ ML_BSSN::ML_metric
+ ML_BSSN::ML_trace_curv
+ ML_BSSN::ML_curv
+ ML_BSSN::ML_Gamma
+ ML_BSSN::ML_lapse
+ ML_BSSN::ML_shift
+ ML_BSSN::ML_dtlapse
+ ML_BSSN::ML_dtshift
+ ML_BSSN::ML_Theta
+"
+
+###############################################################################
+# Time Integration
+###############################################################################
+
+MoL::ODE_Method = "RK4"
+MoL::MoL_Intermediate_Steps = 4
+MoL::MoL_Num_Scratch_Levels = 1
+
+################################################################################
+# Psi4 mode decomposition by Multipole
+################################################################################
+
+WeylScal4::fd_order = "4th"
+
+Multipole::nradii = 4
+Multipole::radius[0] = 30
+Multipole::radius[1] = 50
+Multipole::radius[2] = 80
+Multipole::radius[3] = 100
+Multipole::ntheta = 120
+Multipole::nphi = 240
+Multipole::variables = "
+ WeylScal4::Psi4r{sw=-2 cmplx='WeylScal4::Psi4i' name='psi4'}
+"
+
+Multipole::out_every = 32
+Multipole::l_max = 8
+Multipole::output_hdf5 = yes
+Multipole::output_ascii = no
+
+################################################################################
+# Apparent Horizons
+################################################################################
+
+
+AHFinderDirect::N_horizons = 3
+AHFinderDirect::find_every = 128
+AHFinderDirect::output_h_every = 0
+AHFinderDirect::max_Newton_iterations__initial = 50
+AHFinderDirect::max_Newton_iterations__subsequent = 50
+AHFinderDirect::max_allowable_Theta_growth_iterations = 10
+AHFinderDirect::max_allowable_Theta_nonshrink_iterations = 10
+AHFinderDirect::geometry_interpolator_name = "Lagrange polynomial interpolation"
+AHFinderDirect::geometry_interpolator_pars = "order=4"
+AHFinderDirect::surface_interpolator_name = "Lagrange polynomial interpolation"
+AHFinderDirect::surface_interpolator_pars = "order=4"
+AHFinderDirect::verbose_level = "physics details"
+AHFinderDirect::move_origins = yes
+
+AHFinderDirect::origin_x [1] = 3
+AHFinderDirect::initial_guess__coord_sphere__x_center[1] = 3
+AHFinderDirect::initial_guess__coord_sphere__radius [1] = 0.25
+AHFinderDirect::which_surface_to_store_info [1] = 2
+AHFinderDirect::set_mask_for_individual_horizon [1] = no
+AHFinderDirect::reset_horizon_after_not_finding [1] = no
+AHFinderDirect::track_origin_from_grid_scalar [1] = yes
+AHFinderDirect::track_origin_source_x [1] = "PunctureTracker::pt_loc_x[0]"
+AHFinderDirect::track_origin_source_y [1] = "PunctureTracker::pt_loc_y[0]"
+AHFinderDirect::track_origin_source_z [1] = "PunctureTracker::pt_loc_z[0]"
+AHFinderDirect::max_allowable_horizon_radius [1] = 3
+
+AHFinderDirect::origin_x [2] = -3
+AHFinderDirect::initial_guess__coord_sphere__x_center[2] = -3
+AHFinderDirect::initial_guess__coord_sphere__radius [2] = 0.25
+AHFinderDirect::which_surface_to_store_info [2] = 3
+AHFinderDirect::set_mask_for_individual_horizon [2] = no
+AHFinderDirect::reset_horizon_after_not_finding [2] = no
+AHFinderDirect::track_origin_from_grid_scalar [2] = yes
+AHFinderDirect::track_origin_source_x [2] = "PunctureTracker::pt_loc_x[1]"
+AHFinderDirect::track_origin_source_y [2] = "PunctureTracker::pt_loc_y[1]"
+AHFinderDirect::track_origin_source_z [2] = "PunctureTracker::pt_loc_z[1]"
+AHFinderDirect::max_allowable_horizon_radius [2] = 3
+
+AHFinderDirect::origin_x [3] = 0
+AHFinderDirect::find_after_individual [3] = 0
+AHFinderDirect::initial_guess__coord_sphere__x_center[3] = 0
+AHFinderDirect::initial_guess__coord_sphere__radius [3] = 1.0
+AHFinderDirect::which_surface_to_store_info [3] = 4
+AHFinderDirect::set_mask_for_individual_horizon [3] = no
+AHFinderDirect::max_allowable_horizon_radius [3] = 6
+
+################################################################################
+# Spherical surfaces
+################################################################################
+
+SphericalSurface::nsurfaces = 5
+SphericalSurface::maxntheta = 66
+SphericalSurface::maxnphi = 124
+SphericalSurface::verbose = no
+
+# Surfaces 0 and 1 are used by PunctureTracker
+
+# Horizon 1
+SphericalSurface::ntheta [2] = 41
+SphericalSurface::nphi [2] = 80
+SphericalSurface::nghoststheta [2] = 2
+SphericalSurface::nghostsphi [2] = 2
+
+# Horizon 2
+SphericalSurface::ntheta [3] = 41
+SphericalSurface::nphi [3] = 80
+SphericalSurface::nghoststheta [3] = 2
+SphericalSurface::nghostsphi [3] = 2
+
+# Common horizon
+SphericalSurface::ntheta [4] = 41
+SphericalSurface::nphi [4] = 80
+SphericalSurface::nghoststheta [4] = 2
+SphericalSurface::nghostsphi [4] = 2
+
+################################################################################
+# Isolated Horizons
+################################################################################
+
+QuasiLocalMeasures::verbose = yes
+QuasiLocalMeasures::veryverbose = no
+QuasiLocalMeasures::interpolator = "Lagrange polynomial interpolation"
+QuasiLocalMeasures::interpolator_options = "order=4"
+QuasiLocalMeasures::spatial_order = 4
+QuasiLocalMeasures::num_surfaces = 3
+QuasiLocalMeasures::surface_index [0] = 2
+QuasiLocalMeasures::surface_index [1] = 3
+QuasiLocalMeasures::surface_index [2] = 4
+
+################################################################################
+# Correctness Checking
+################################################################################
+
+Carpet::poison_new_timelevels = yes
+Carpet::poison_value = 100
+CarpetLib::poison_new_memory = yes
+CarpetLib::poison_value = 200
+Carpet::check_for_poison = no
+
+NaNChecker::check_every = 128
+NanChecker::check_after = 0
+NaNChecker::report_max = 10
+NaNChecker::verbose = "all"
+NaNChecker::action_if_found = "terminate"
+NaNChecker::out_NaNmask = yes
+NaNChecker::check_vars = "
+ ML_BSSN::ML_log_confac
+"
+
+################################################################################
+# Timers
+################################################################################
+
+Cactus::cctk_timer_output = full
+TimerReport::out_every = 256
+TimerReport::n_top_timers = 40
+TimerReport::output_all_timers_together = yes
+TimerReport::output_schedule_timers = no
+
+################################################################################
+# Output
+################################################################################
+
+IO::out_dir = $parfile
+IOScalar::one_file_per_group = yes
+IOASCII::one_file_per_group = yes
+
+IOBasic::outInfo_every = 1
+IOBasic::outInfo_reductions = "minimum maximum"
+IOBasic::outInfo_vars = "
+ Carpet::physical_time_per_hour
+ ML_BSSN::ML_log_confac
+ SystemStatistics::maxrss_mb
+"
+
+IOScalar::outScalar_every = 128
+IOScalar::outScalar_reductions = "minimum maximum average"
+IOScalar::outScalar_vars = "SystemStatistics::process_memory_mb"
+
+IOASCII::out0D_every = 32
+IOASCII::out0D_vars = "
+ Carpet::timing
+ PunctureTracker::pt_loc
+ QuasiLocalMeasures::qlm_scalars{out_every = 128}
+"
+
+IOHDF5::out1D_every = 256
+IOHDF5::out1D_d = no
+IOHDF5::out1D_x = yes
+IOHDF5::out1D_y = no
+IOHDF5::out1D_z = no
+IOHDF5::out1D_vars = "
+ ML_BSSN::ML_log_confac
+"
+
+IOHDF5::out2D_every = 1024
+IOHDF5::out2D_xy = yes
+IOHDF5::out2D_xz = no
+IOHDF5::out2D_yz = no
+IOHDF5::out2D_vars = "
+ ML_BSSN::ML_log_confac
+"
+
+IOHDF5::out_every = 8192
+IOHDF5::out_vars = "
+ ML_BSSN::ML_log_confac
+"
+
+Carpet::verbose = no
+Carpet::veryverbose = no
+Carpet::schedule_barriers = no
+Carpet::storage_verbose = no
+Carpet::timers_verbose = no
+CarpetLib::output_bboxes = no
+
+Cactus::cctk_full_warnings = yes
+Cactus::highlight_warning_messages = no
+
+###############################################################################
+# Checkpointing and recovery
+###############################################################################
+
+CarpetIOHDF5::checkpoint = yes
+IO::checkpoint_ID = no
+IO::recover = "autoprobe"
+IO::checkpoint_every_walltime_hours = 3
+IO::out_proc_every = 2
+IO::checkpoint_keep = 1
+IO::checkpoint_on_terminate = yes
+IO::checkpoint_dir = "../checkpoints"
+IO::recover_dir = "../checkpoints"
+IO::abort_on_io_errors = yes
+CarpetIOHDF5::open_one_input_file_at_a_time = yes
+CarpetIOHDF5::compression_level = 9
+
+################################################################################
+# Run termination
+################################################################################
+
+TerminationTrigger::max_walltime = @WALLTIME_HOURS@ # hours
+TerminationTrigger::on_remaining_walltime = 30 # minutes
+TerminationTrigger::output_remtime_every_minutes = 30
+Cactus::terminate = "time"
+Cactus::cctk_final_time = 300.0
diff --git a/par/CCZ4/gw1d_ccz4.par b/par/CCZ4/gw1d_ccz4.par
new file mode 100644
index 0000000..e74f951
--- /dev/null
+++ b/par/CCZ4/gw1d_ccz4.par
@@ -0,0 +1,283 @@
+Cactus::cctk_run_title = "CCZ4 1D Gauge Wave"
+
+ActiveThorns = "
+ ADMBase
+ ADMCoupling
+ ADMMacros
+ Boundary
+ Carpet
+ CarpetInterp
+ CarpetInterp2
+ CarpetIOASCII
+ CarpetIOBasic
+ CarpetIOHDF5
+ CarpetIOScalar
+ CarpetLib
+ CarpetReduce
+ CarpetRegrid
+ CarpetSlab
+ CartGrid3d
+ CoordBase
+ CoordGauge
+ Dissipation
+ Exact
+ GenericFD
+ IOUtil
+ LoopControl
+ ML_BSSN
+ ML_BSSN_Helper
+ MoL
+ NanChecker
+ Periodic
+ Slab
+ SpaceMask
+ SphericalSurface
+ StaticConformal
+ SummationByParts
+ SymBase
+ Time
+ TimerReport
+ TMuNuBase
+"
+
+
+#############################################################
+# Evolution
+#############################################################
+
+ADMBase::evolution_method = "ML_BSSN"
+ADMBase::lapse_evolution_method = "ML_BSSN"
+ADMBase::shift_evolution_method = "ML_BSSN"
+ADMBase::dtlapse_evolution_method = "ML_BSSN"
+ADMBase::dtshift_evolution_method = "ML_BSSN"
+
+ML_BSSN::GammaShift = 0.0
+ML_BSSN::dampk1 = 1.0
+ML_BSSN::harmonicN = 2
+ML_BSSN::harmonicF = 1.0
+ML_BSSN::ShiftGammaCoeff = 0.0 # beta to zero
+ML_BSSN::ShiftBCoeff = 0.0 # B to zero
+ML_BSSN::BetaDriver = 0.0 # damp in beta
+ML_BSSN::LapseACoeff = 0.0 # A to zero
+ML_BSSN::LapseAdvectionCoeff = 0.0 # no advection terms
+ML_BSSN::ShiftAdvectionCoeff = 0.0 # no advection terms
+
+ML_BSSN::MinimumLapse = 1.0e-8
+ML_BSSN::conformalMethod = 1 # 1 for W, 0 for phi
+ML_BSSN::formulation = 1 # 1 for CCZ4
+
+#############################################################
+# Boundary conditions
+#############################################################
+
+Boundary::radpower = 2
+
+ML_BSSN::ML_log_confac_bound = "none"
+ML_BSSN::ML_metric_bound = "none"
+ML_BSSN::ML_Gamma_bound = "none"
+ML_BSSN::ML_trace_curv_bound = "none"
+ML_BSSN::ML_curv_bound = "none"
+ML_BSSN::ML_lapse_bound = "none"
+ML_BSSN::ML_dtlapse_bound = "none"
+ML_BSSN::ML_shift_bound = "none"
+ML_BSSN::ML_dtshift_bound = "none"
+ML_BSSN::ML_Theta_bound = "none"
+
+#############################################################
+# Spatial derivatives
+#############################################################
+
+SummationByParts::order = 4
+SummationByParts::sbp_upwind_deriv = no # Drop order instead, only for
+ # advection derivatives
+SummationByParts::sbp_1st_deriv = no
+SummationByParts::sbp_2nd_deriv = no
+SummationByParts::onesided_interpatch_boundaries = no
+SummationByParts::onesided_outer_boundaries = no
+SummationByParts::use_dissipation = yes
+SummationByParts::scale_with_h = no
+SummationByParts::dissipation_type = "Kreiss-Oliger"
+SummationByParts::epsdis = 0.1
+SummationByParts::vars = "
+ ML_BSSN::ML_log_confac
+ ML_BSSN::ML_metric
+ ML_BSSN::ML_trace_curv
+ ML_BSSN::ML_curv
+ ML_BSSN::ML_Gamma
+ ML_BSSN::ML_lapse
+ ML_BSSN::ML_shift
+ ML_BSSN::ML_dtlapse
+ ML_BSSN::ML_dtshift
+ ML_BSSN::ML_Theta
+"
+
+#############################################################
+# Grid
+#############################################################
+
+CoordBase::domainsize = minmax
+
+CoordBase::boundary_size_x_lower = 3
+CoordBase::boundary_size_y_lower = 3
+CoordBase::boundary_size_z_lower = 3
+CoordBase::boundary_shiftout_x_lower = 1
+CoordBase::boundary_shiftout_y_lower = 1
+CoordBase::boundary_shiftout_z_lower = 1
+
+CoordBase::boundary_size_x_upper = 3
+CoordBase::boundary_size_y_upper = 3
+CoordBase::boundary_size_z_upper = 3
+CoordBase::boundary_shiftout_x_upper = 0
+CoordBase::boundary_shiftout_y_upper = 0
+CoordBase::boundary_shiftout_z_upper = 0
+
+CartGrid3D::type = "coordbase"
+CartGrid3D::domain = "full"
+CartGrid3D::avoid_origin = "no"
+
+Periodic::periodic = "yes"
+
+CoordBase::xmin = -0.5
+CoordBase::ymin = -0.5
+CoordBase::zmin = -0.5
+
+CoordBase::xmax = 0.5
+CoordBase::ymax = 0.5
+CoordBase::zmax = 0.5
+
+CoordBase::dx = 0.005
+CoordBase::dy = 0.1
+CoordBase::dz = 0.1
+
+#############################################################
+# CarpetRegrid
+#############################################################
+
+CarpetRegrid::refinement_levels = 1
+CarpetRegrid::refined_regions = "manual-coordinate-list"
+CarpetRegrid::smart_outer_boundaries = yes
+CarpetRegrid::keep_same_grid_structure = "yes"
+
+#############################################################
+# Carpet
+#############################################################
+
+Carpet::ghost_size = 3
+Carpet::domain_from_coordbase = "yes"
+Carpet::max_refinement_levels = 1
+Carpet::init_3_timelevels = "no"
+Carpet::prolongation_order_space = 3
+Carpet::prolongation_order_time = 2
+Carpet::use_buffer_zones = yes
+Carpet::num_integrator_substeps = 4
+
+#############################################################
+# CarpetLib
+#############################################################
+
+#############################################################
+# Time integration
+#############################################################
+
+Cactus::terminate = "time"
+Cactus::cctk_final_time = 1000
+# Use 0.5 for RK4 and 0.25 for ICN
+Time::dtfac = 0.5
+MethodOfLines::ode_method = "RK4"
+MethodOfLines::MoL_Intermediate_Steps = 4
+MethodOfLines::MoL_Num_Scratch_Levels = 1
+
+MethodOfLines::MoL_NaN_Check = "yes"
+MethodOfLines::initial_data_is_crap = "no"
+
+#############################################################
+# Initial data
+#############################################################
+
+ADMBase::initial_data = "exact"
+ADMBase::initial_lapse = "exact"
+ADMBase::initial_shift = "exact"
+
+Exact::exact_model = "Minkowski/gauge wave"
+Exact::Minkowski_gauge_wave__what_fn = "sin"
+Exact::Minkowski_gauge_wave__amplitude = 0.1
+Exact::Minkowski_gauge_wave__omega = 1
+Exact::Minkowski_gauge_wave__lambda = 1
+Exact::Minkowski_gauge_wave__diagonal = "no"
+
+################################################################################
+# Constraints
+################################################################################
+
+################################################################################
+# Timers
+################################################################################
+
+Cactus::cctk_timer_output = full
+TimerReport::out_every = 4000
+TimerReport::n_top_timers = 40
+TimerReport::out_filename = "TimerReport"
+TimerReport::output_all_timers = yes
+
+#############################################################
+# Output
+#############################################################
+
+IO::out_dir = $parfile
+IO::out_fileinfo = "none"
+
+CarpetIOScalar::outScalar_every = 100
+CarpetIOScalar::outScalar_reductions = "norm_inf norm2"
+CarpetIOScalar::outScalar_vars = "
+ ADMBase::alp
+ ADMBase::shift
+ ADMBase::metric
+ ADMBase::curv
+ ML_BSSN::ML_log_confac
+ ML_BSSN::ML_metric
+ ML_BSSN::ML_trace_curv
+ ML_BSSN::ML_curv
+ ML_BSSN::ML_Gamma
+ ML_BSSN::ML_lapse
+ ML_BSSN::ML_dtlapse
+ ML_BSSN::ML_dtshift
+ ML_BSSN::ML_shift
+ ML_BSSN::ML_Theta
+ ML_BSSN::ML_Ham
+ ML_BSSN::ML_mom
+ ML_BSSN::ML_cons_detg
+ ML_BSSN::ML_cons_traceA
+ ML_BSSN::ML_cons_Gamma
+"
+
+CarpetIOBasic::outInfo_every = 1
+CarpetIOBasic::outInfo_vars = "
+ ADMBase::alp
+"
+
+IOASCII::out1D_every = 4000
+IOASCII::out1D_x = "yes"
+IOASCII::out1D_y = "yes"
+IOASCII::out1D_z = "yes"
+IOASCII::out1D_d = "no"
+IOASCII::out1D_vars = "
+ ADMBase::alp
+ ADMBase::metric
+ ADMBase::curv
+ ML_BSSN::ML_log_confac
+ ML_BSSN::ML_metric
+ ML_BSSN::ML_trace_curv
+ ML_BSSN::ML_curv
+ ML_BSSN::ML_Gamma
+ ML_BSSN::ML_lapse
+ ML_BSSN::ML_dtlapse
+ ML_BSSN::ML_Theta
+ ML_BSSN::ML_Ham
+ ML_BSSN::ML_mom
+ ML_BSSN::ML_cons_detg
+ ML_BSSN::ML_cons_traceA
+ ML_BSSN::ML_cons_Gamma
+"
+
+CarpetIOASCII::out_precision = 19
+
diff --git a/par/CCZ4/rbst_ccz4.par b/par/CCZ4/rbst_ccz4.par
new file mode 100644
index 0000000..3801ba4
--- /dev/null
+++ b/par/CCZ4/rbst_ccz4.par
@@ -0,0 +1,230 @@
+Cactus::cctk_run_title = "CCZ4 Robust Stability Test"
+
+ActiveThorns = "
+ ADMBase
+ ADMCoupling
+ ADMMacros
+ Boundary
+ Carpet
+ CarpetInterp
+ CarpetIOASCII
+ CarpetIOBasic
+ CarpetIOHDF5
+ CarpetIOScalar
+ CarpetLib
+ CarpetReduce
+ CarpetRegrid
+ CarpetSlab
+ CartGrid3d
+ CoordBase
+ CoordGauge
+ Exact
+ GenericFD
+ IOUtil
+ LoopControl
+ ML_BSSN
+ ML_BSSN_Helper
+ MoL
+ NanChecker
+ Noise
+ Periodic
+ Slab
+ SpaceMask
+ SphericalSurface
+ StaticConformal
+ SymBase
+ Time
+ TimerReport
+ TMuNuBase
+"
+
+ADMBase::evolution_method = "ML_BSSN"
+ADMBase::lapse_evolution_method = "ML_BSSN"
+ADMBase::shift_evolution_method = "ML_BSSN"
+ADMBase::dtlapse_evolution_method = "ML_BSSN"
+ADMBase::dtshift_evolution_method = "ML_BSSN"
+
+ML_BSSN::GammaShift = 0.0
+ML_BSSN::dampk1 = 0.0
+ML_BSSN::harmonicN = 2
+ML_BSSN::harmonicF = 1.0
+ML_BSSN::ShiftGammaCoeff = 0.0
+ML_BSSN::ShiftBCoeff = 0.0 # B to zero
+ML_BSSN::BetaDriver = 0.0
+ML_BSSN::LapseACoeff = 0.0 # A to zero
+ML_BSSN::LapseAdvectionCoeff = 0.0
+ML_BSSN::ShiftAdvectionCoeff = 0.0
+
+ML_BSSN::conformalMethod = 1 # 1 for W
+ML_BSSN::formulation = 1 # 1 for CCZ4
+
+Boundary::radpower = 2
+
+ML_BSSN::ML_log_confac_bound = "none"
+ML_BSSN::ML_metric_bound = "none"
+ML_BSSN::ML_Gamma_bound = "none"
+ML_BSSN::ML_trace_curv_bound = "none"
+ML_BSSN::ML_curv_bound = "none"
+ML_BSSN::ML_lapse_bound = "none"
+ML_BSSN::ML_dtlapse_bound = "none"
+ML_BSSN::ML_shift_bound = "none"
+ML_BSSN::ML_dtshift_bound = "none"
+ML_BSSN::ML_Theta_bound = "none"
+
+#############################################################
+# Grid
+#############################################################
+
+CoordBase::domainsize = minmax
+
+CoordBase::boundary_size_x_lower = 5
+CoordBase::boundary_size_y_lower = 5
+CoordBase::boundary_size_z_lower = 5
+CoordBase::boundary_shiftout_x_lower = 1
+CoordBase::boundary_shiftout_y_lower = 1
+CoordBase::boundary_shiftout_z_lower = 1
+
+CoordBase::boundary_size_x_upper = 5
+CoordBase::boundary_size_y_upper = 5
+CoordBase::boundary_size_z_upper = 5
+CoordBase::boundary_shiftout_x_upper = 0
+CoordBase::boundary_shiftout_y_upper = 0
+CoordBase::boundary_shiftout_z_upper = 0
+
+CartGrid3D::type = "coordbase"
+CartGrid3D::domain = "full"
+CartGrid3D::avoid_origin = "no"
+
+Periodic::periodic = "yes"
+
+CoordBase::xmin = -0.5
+CoordBase::ymin = -0.5
+CoordBase::zmin = -0.5
+
+CoordBase::xmax = 0.5
+CoordBase::ymax = 0.5
+CoordBase::zmax = 0.5
+
+CoordBase::dx = 0.02
+CoordBase::dy = 0.02
+CoordBase::dz = 0.02
+
+#############################################################
+# CarpetRegrid
+#############################################################
+
+CarpetRegrid::refinement_levels = 1
+CarpetRegrid::refined_regions = "manual-coordinate-list"
+CarpetRegrid::smart_outer_boundaries = yes
+CarpetRegrid::keep_same_grid_structure = "yes"
+
+#############################################################
+# Carpet
+#############################################################
+
+Carpet::ghost_size = 5
+Carpet::domain_from_coordbase = "yes"
+Carpet::max_refinement_levels = 1
+Carpet::init_3_timelevels = "no"
+Carpet::prolongation_order_space = 3
+Carpet::prolongation_order_time = 2
+Carpet::use_buffer_zones = yes
+Carpet::num_integrator_substeps = 4
+
+#############################################################
+# CarpetLib
+#############################################################
+
+#############################################################
+# Time integration
+#############################################################
+
+Cactus::terminate = "time"
+Cactus::cctk_final_time = 1000
+# Use 0.5 for RK4 and 0.25 for ICN
+Time::dtfac = 0.5
+MethodOfLines::ode_method = "RK4"
+MethodOfLines::MoL_Intermediate_Steps = 4
+MethodOfLines::MoL_Num_Scratch_Levels = 1
+
+MethodOfLines::MoL_NaN_Check = "yes"
+MethodOfLines::initial_data_is_crap = "no"
+
+#############################################################
+# Initial data
+#############################################################
+
+ADMBase::initial_data = "exact"
+ADMBase::initial_lapse = "exact"
+ADMBase::initial_shift = "exact"
+
+Exact::exact_model = "Minkowski"
+
+Noise::apply_id_noise = yes
+Noise::id_vars = "
+ ML_BSSN::ML_log_confac
+ ML_BSSN::ML_metric
+ ML_BSSN::ML_trace_curv
+ ML_BSSN::ML_curv
+ ML_BSSN::ML_Gamma
+ ML_BSSN::ML_lapse
+ ML_BSSN::ML_Theta
+"
+Noise::Amplitude = 1e-10
+
+#############################################################
+# Output
+#############################################################
+
+IO::out_dir = $parfile
+IO::out_fileinfo = "none"
+
+CarpetIOScalar::outScalar_every = 100
+CarpetIOScalar::outScalar_reductions = "norm_inf norm2"
+CarpetIOScalar::outScalar_vars = "
+ ADMBase::alp
+ ADMBase::shift
+ ADMBase::metric
+ ADMBase::curv
+ ML_BSSN::ML_log_confac
+ ML_BSSN::ML_metric
+ ML_BSSN::ML_trace_curv
+ ML_BSSN::ML_curv
+ ML_BSSN::ML_Gamma
+ ML_BSSN::ML_lapse
+ ML_BSSN::ML_dtlapse
+ ML_BSSN::ML_dtshift
+ ML_BSSN::ML_shift
+ ML_BSSN::ML_Theta
+ ML_BSSN::ML_Ham
+ ML_BSSN::ML_mom
+ ML_BSSN::ML_cons_detg
+ ML_BSSN::ML_cons_traceA
+ ML_BSSN::ML_cons_Gamma
+"
+
+CarpetIOBasic::outInfo_every = 100
+CarpetIOBasic::outInfo_vars = "ADMBase::alp"
+
+IOASCII::out1D_every = 1000
+IOASCII::out1D_x = "yes"
+IOASCII::out1D_y = "yes"
+IOASCII::out1D_z = "yes"
+IOASCII::out1D_d = "no"
+IOASCII::out1D_vars = "
+ ADMBase::metric
+ ADMBase::curv
+ ADMBase::alp
+ ADMBase::shift
+ ML_BSSN::ML_log_confac
+ ML_BSSN::ML_metric
+ ML_BSSN::ML_trace_curv
+ ML_BSSN::ML_curv
+ ML_BSSN::ML_Gamma
+ ML_BSSN::ML_lapse
+ ML_BSSN::ML_dtlapse
+ ML_BSSN::ML_Theta
+"
+
+CarpetIOASCII::out_precision = 19
+