aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ML_ADM/configuration.ccl1
-rw-r--r--ML_ADM/interface.ccl3
-rw-r--r--ML_ADM/param.ccl16
-rw-r--r--ML_ADM/src/Differencing.h555
-rw-r--r--ML_ADM/src/ML_ADM_Minkowski.cc348
-rw-r--r--ML_ADM/src/ML_ADM_RHS.cc1876
-rw-r--r--ML_ADM/src/ML_ADM_boundary.cc348
-rw-r--r--ML_ADM/src/ML_ADM_constraints.cc1501
-rw-r--r--ML_ADM/src/ML_ADM_constraints_boundary.cc264
-rw-r--r--ML_ADM/src/ML_ADM_convertFromADMBase.cc380
-rw-r--r--ML_ADM/src/ML_ADM_convertToADMBase.cc408
-rw-r--r--ML_ADM/src/RegisterMoL.cc2
-rw-r--r--ML_ADMConstraints/param.ccl7
-rw-r--r--ML_ADMConstraints/schedule.ccl13
-rw-r--r--ML_ADMConstraints/src/Differencing.h48
-rw-r--r--ML_ADMConstraints/src/ML_ADMConstraints.cc218
-rw-r--r--ML_ADMConstraints/src/RegisterMoL.cc2
-rw-r--r--ML_ADMConstraints_MP/param.ccl7
-rw-r--r--ML_ADMConstraints_MP/schedule.ccl13
-rw-r--r--ML_ADMConstraints_MP/src/Differencing.h48
-rw-r--r--ML_ADMConstraints_MP/src/ML_ADMConstraints_MP.cc243
-rw-r--r--ML_ADMConstraints_MP/src/RegisterMoL.cc2
-rw-r--r--ML_ADMConstraints_O2/param.ccl7
-rw-r--r--ML_ADMConstraints_O2/schedule.ccl13
-rw-r--r--ML_ADMConstraints_O2/src/Differencing.h48
-rw-r--r--ML_ADMConstraints_O2/src/ML_ADMConstraints_O2.cc218
-rw-r--r--ML_ADMConstraints_O2/src/RegisterMoL.cc2
-rw-r--r--ML_ADMQuantities/param.ccl7
-rw-r--r--ML_ADMQuantities/schedule.ccl13
-rw-r--r--ML_ADMQuantities/src/Differencing.h72
-rw-r--r--ML_ADMQuantities/src/ML_ADMQuantities.cc49
-rw-r--r--ML_ADMQuantities/src/RegisterMoL.cc2
-rw-r--r--ML_ADMQuantities_MP/param.ccl7
-rw-r--r--ML_ADMQuantities_MP/schedule.ccl13
-rw-r--r--ML_ADMQuantities_MP/src/Differencing.h72
-rw-r--r--ML_ADMQuantities_MP/src/ML_ADMQuantities_MP.cc49
-rw-r--r--ML_ADMQuantities_MP/src/RegisterMoL.cc2
-rw-r--r--ML_ADMQuantities_O2/param.ccl7
-rw-r--r--ML_ADMQuantities_O2/schedule.ccl13
-rw-r--r--ML_ADMQuantities_O2/src/Differencing.h72
-rw-r--r--ML_ADMQuantities_O2/src/ML_ADMQuantities_O2.cc49
-rw-r--r--ML_ADMQuantities_O2/src/RegisterMoL.cc2
-rw-r--r--ML_BSSN/configuration.ccl1
-rw-r--r--ML_BSSN/interface.ccl1
-rw-r--r--ML_BSSN/param.ccl22
-rw-r--r--ML_BSSN/schedule.ccl20
-rw-r--r--ML_BSSN/src/Differencing.h1092
-rw-r--r--ML_BSSN/src/ML_BSSN_Advect.cc2550
-rw-r--r--ML_BSSN/src/ML_BSSN_Dissipation.cc1548
-rw-r--r--ML_BSSN/src/ML_BSSN_InitGamma.cc332
-rw-r--r--ML_BSSN/src/ML_BSSN_InitRHS.cc462
-rw-r--r--ML_BSSN/src/ML_BSSN_Minkowski.cc462
-rw-r--r--ML_BSSN/src/ML_BSSN_RHS1.cc1746
-rw-r--r--ML_BSSN/src/ML_BSSN_RHS2.cc2186
-rw-r--r--ML_BSSN/src/ML_BSSN_RHSStaticBoundary.cc462
-rw-r--r--ML_BSSN/src/ML_BSSN_boundary.cc462
-rw-r--r--ML_BSSN/src/ML_BSSN_constraints1.cc1853
-rw-r--r--ML_BSSN/src/ML_BSSN_constraints2.cc1148
-rw-r--r--ML_BSSN/src/ML_BSSN_convertFromADMBase.cc497
-rw-r--r--ML_BSSN/src/ML_BSSN_convertFromADMBaseGamma.cc1051
-rw-r--r--ML_BSSN/src/ML_BSSN_convertToADMBase.cc462
-rw-r--r--ML_BSSN/src/ML_BSSN_convertToADMBaseDtLapseShift.cc991
-rw-r--r--ML_BSSN/src/ML_BSSN_convertToADMBaseDtLapseShiftBoundary.cc378
-rw-r--r--ML_BSSN/src/ML_BSSN_convertToADMBaseFakeDtLapseShift.cc378
-rw-r--r--ML_BSSN/src/ML_BSSN_enforce.cc389
-rw-r--r--ML_BSSN/src/RegisterMoL.cc2
-rw-r--r--ML_BSSN_Helper/src/SetGroupTags.c43
-rw-r--r--ML_BSSN_MP/configuration.ccl1
-rw-r--r--ML_BSSN_MP/interface.ccl1
-rw-r--r--ML_BSSN_MP/param.ccl19
-rw-r--r--ML_BSSN_MP/schedule.ccl20
-rw-r--r--ML_BSSN_MP/src/Differencing.h1092
-rw-r--r--ML_BSSN_MP/src/ML_BSSN_MP_Advect.cc2489
-rw-r--r--ML_BSSN_MP/src/ML_BSSN_MP_Dissipation.cc1510
-rw-r--r--ML_BSSN_MP/src/ML_BSSN_MP_InitGamma.cc286
-rw-r--r--ML_BSSN_MP/src/ML_BSSN_MP_InitRHS.cc446
-rw-r--r--ML_BSSN_MP/src/ML_BSSN_MP_Minkowski.cc446
-rw-r--r--ML_BSSN_MP/src/ML_BSSN_MP_RHS1.cc1948
-rw-r--r--ML_BSSN_MP/src/ML_BSSN_MP_RHS2.cc2592
-rw-r--r--ML_BSSN_MP/src/ML_BSSN_MP_RHSStaticBoundary.cc446
-rw-r--r--ML_BSSN_MP/src/ML_BSSN_MP_boundary.cc446
-rw-r--r--ML_BSSN_MP/src/ML_BSSN_MP_constraints1.cc2215
-rw-r--r--ML_BSSN_MP/src/ML_BSSN_MP_constraints2.cc1105
-rw-r--r--ML_BSSN_MP/src/ML_BSSN_MP_convertFromADMBase.cc451
-rw-r--r--ML_BSSN_MP/src/ML_BSSN_MP_convertFromADMBaseGamma.cc1019
-rw-r--r--ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBase.cc416
-rw-r--r--ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBaseDtLapseShift.cc955
-rw-r--r--ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBaseDtLapseShiftBoundary.cc332
-rw-r--r--ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBaseFakeDtLapseShift.cc332
-rw-r--r--ML_BSSN_MP/src/ML_BSSN_MP_enforce.cc343
-rw-r--r--ML_BSSN_MP/src/RegisterMoL.cc2
-rw-r--r--ML_BSSN_MP_Helper/src/SetGroupTags.c43
-rw-r--r--ML_BSSN_MP_O8/configuration.ccl1
-rw-r--r--ML_BSSN_MP_O8/interface.ccl1
-rw-r--r--ML_BSSN_MP_O8/param.ccl19
-rw-r--r--ML_BSSN_MP_O8/schedule.ccl20
-rw-r--r--ML_BSSN_MP_O8/src/Differencing.h1092
-rw-r--r--ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_Advect.cc2495
-rw-r--r--ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_Dissipation.cc1516
-rw-r--r--ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_InitGamma.cc292
-rw-r--r--ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_InitRHS.cc452
-rw-r--r--ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_Minkowski.cc452
-rw-r--r--ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_RHS1.cc1954
-rw-r--r--ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_RHS2.cc2598
-rw-r--r--ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_RHSStaticBoundary.cc452
-rw-r--r--ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_boundary.cc452
-rw-r--r--ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_constraints1.cc2221
-rw-r--r--ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_constraints2.cc1111
-rw-r--r--ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_convertFromADMBase.cc457
-rw-r--r--ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_convertFromADMBaseGamma.cc1025
-rw-r--r--ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_convertToADMBase.cc422
-rw-r--r--ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_convertToADMBaseDtLapseShift.cc961
-rw-r--r--ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_convertToADMBaseDtLapseShiftBoundary.cc338
-rw-r--r--ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_convertToADMBaseFakeDtLapseShift.cc338
-rw-r--r--ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_enforce.cc349
-rw-r--r--ML_BSSN_MP_O8/src/RegisterMoL.cc2
-rw-r--r--ML_BSSN_MP_O8_Helper/src/SetGroupTags.c43
-rw-r--r--ML_BSSN_O2/configuration.ccl1
-rw-r--r--ML_BSSN_O2/interface.ccl1
-rw-r--r--ML_BSSN_O2/param.ccl22
-rw-r--r--ML_BSSN_O2/schedule.ccl20
-rw-r--r--ML_BSSN_O2/src/Differencing.h1092
-rw-r--r--ML_BSSN_O2/src/ML_BSSN_O2_Advect.cc2556
-rw-r--r--ML_BSSN_O2/src/ML_BSSN_O2_Dissipation.cc1554
-rw-r--r--ML_BSSN_O2/src/ML_BSSN_O2_InitGamma.cc338
-rw-r--r--ML_BSSN_O2/src/ML_BSSN_O2_InitRHS.cc468
-rw-r--r--ML_BSSN_O2/src/ML_BSSN_O2_Minkowski.cc468
-rw-r--r--ML_BSSN_O2/src/ML_BSSN_O2_RHS1.cc1752
-rw-r--r--ML_BSSN_O2/src/ML_BSSN_O2_RHS2.cc2192
-rw-r--r--ML_BSSN_O2/src/ML_BSSN_O2_RHSStaticBoundary.cc468
-rw-r--r--ML_BSSN_O2/src/ML_BSSN_O2_boundary.cc468
-rw-r--r--ML_BSSN_O2/src/ML_BSSN_O2_constraints1.cc1859
-rw-r--r--ML_BSSN_O2/src/ML_BSSN_O2_constraints2.cc1154
-rw-r--r--ML_BSSN_O2/src/ML_BSSN_O2_convertFromADMBase.cc503
-rw-r--r--ML_BSSN_O2/src/ML_BSSN_O2_convertFromADMBaseGamma.cc1057
-rw-r--r--ML_BSSN_O2/src/ML_BSSN_O2_convertToADMBase.cc468
-rw-r--r--ML_BSSN_O2/src/ML_BSSN_O2_convertToADMBaseDtLapseShift.cc997
-rw-r--r--ML_BSSN_O2/src/ML_BSSN_O2_convertToADMBaseDtLapseShiftBoundary.cc384
-rw-r--r--ML_BSSN_O2/src/ML_BSSN_O2_convertToADMBaseFakeDtLapseShift.cc384
-rw-r--r--ML_BSSN_O2/src/ML_BSSN_O2_enforce.cc395
-rw-r--r--ML_BSSN_O2/src/RegisterMoL.cc2
-rw-r--r--ML_BSSN_O2_Helper/src/SetGroupTags.c43
-rw-r--r--ML_BSSN_O8/configuration.ccl1
-rw-r--r--ML_BSSN_O8/interface.ccl1
-rw-r--r--ML_BSSN_O8/param.ccl22
-rw-r--r--ML_BSSN_O8/schedule.ccl20
-rw-r--r--ML_BSSN_O8/src/Differencing.h1092
-rw-r--r--ML_BSSN_O8/src/ML_BSSN_O8_Advect.cc2556
-rw-r--r--ML_BSSN_O8/src/ML_BSSN_O8_Dissipation.cc1554
-rw-r--r--ML_BSSN_O8/src/ML_BSSN_O8_InitGamma.cc338
-rw-r--r--ML_BSSN_O8/src/ML_BSSN_O8_InitRHS.cc468
-rw-r--r--ML_BSSN_O8/src/ML_BSSN_O8_Minkowski.cc468
-rw-r--r--ML_BSSN_O8/src/ML_BSSN_O8_RHS1.cc1752
-rw-r--r--ML_BSSN_O8/src/ML_BSSN_O8_RHS2.cc2192
-rw-r--r--ML_BSSN_O8/src/ML_BSSN_O8_RHSStaticBoundary.cc468
-rw-r--r--ML_BSSN_O8/src/ML_BSSN_O8_boundary.cc468
-rw-r--r--ML_BSSN_O8/src/ML_BSSN_O8_constraints1.cc1859
-rw-r--r--ML_BSSN_O8/src/ML_BSSN_O8_constraints2.cc1154
-rw-r--r--ML_BSSN_O8/src/ML_BSSN_O8_convertFromADMBase.cc503
-rw-r--r--ML_BSSN_O8/src/ML_BSSN_O8_convertFromADMBaseGamma.cc1057
-rw-r--r--ML_BSSN_O8/src/ML_BSSN_O8_convertToADMBase.cc468
-rw-r--r--ML_BSSN_O8/src/ML_BSSN_O8_convertToADMBaseDtLapseShift.cc997
-rw-r--r--ML_BSSN_O8/src/ML_BSSN_O8_convertToADMBaseDtLapseShiftBoundary.cc384
-rw-r--r--ML_BSSN_O8/src/ML_BSSN_O8_convertToADMBaseFakeDtLapseShift.cc384
-rw-r--r--ML_BSSN_O8/src/ML_BSSN_O8_enforce.cc395
-rw-r--r--ML_BSSN_O8/src/RegisterMoL.cc2
-rw-r--r--ML_BSSN_O8_Helper/src/SetGroupTags.c43
-rw-r--r--ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic.par142
-rw-r--r--ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/A.x.asc40
-rw-r--r--ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/At11.x.asc40
-rw-r--r--ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/At12.x.asc40
-rw-r--r--ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/At13.x.asc40
-rw-r--r--ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/At22.x.asc40
-rw-r--r--ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/At23.x.asc40
-rw-r--r--ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/At33.x.asc40
-rw-r--r--ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/B1.x.asc40
-rw-r--r--ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/B2.x.asc40
-rw-r--r--ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/B3.x.asc40
-rw-r--r--ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/Xt1.x.asc40
-rw-r--r--ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/Xt2.x.asc40
-rw-r--r--ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/Xt3.x.asc40
-rw-r--r--ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/alpha.x.asc40
-rw-r--r--ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/beta1.x.asc40
-rw-r--r--ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/beta2.x.asc40
-rw-r--r--ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/beta3.x.asc40
-rw-r--r--ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/cA.x.asc40
-rw-r--r--ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/cS.x.asc40
-rw-r--r--ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/cXt1.x.asc40
-rw-r--r--ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/cXt2.x.asc40
-rw-r--r--ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/cXt3.x.asc40
-rw-r--r--ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/gt11.x.asc40
-rw-r--r--ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/gt12.x.asc40
-rw-r--r--ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/gt13.x.asc40
-rw-r--r--ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/gt22.x.asc40
-rw-r--r--ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/gt23.x.asc40
-rw-r--r--ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/gt33.x.asc40
-rw-r--r--ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/gxx.x.asc40
-rw-r--r--ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/kxx.x.asc40
-rw-r--r--ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/phi.x.asc40
-rw-r--r--ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/trK.x.asc40
-rw-r--r--ML_BSSN_UPW/configuration.ccl1
-rw-r--r--ML_BSSN_UPW/interface.ccl1
-rw-r--r--ML_BSSN_UPW/param.ccl22
-rw-r--r--ML_BSSN_UPW/schedule.ccl20
-rw-r--r--ML_BSSN_UPW/src/Differencing.h1092
-rw-r--r--ML_BSSN_UPW/src/ML_BSSN_UPW_Advect.cc1555
-rw-r--r--ML_BSSN_UPW/src/ML_BSSN_UPW_Dissipation.cc1548
-rw-r--r--ML_BSSN_UPW/src/ML_BSSN_UPW_InitGamma.cc332
-rw-r--r--ML_BSSN_UPW/src/ML_BSSN_UPW_InitRHS.cc462
-rw-r--r--ML_BSSN_UPW/src/ML_BSSN_UPW_Minkowski.cc462
-rw-r--r--ML_BSSN_UPW/src/ML_BSSN_UPW_RHS1.cc1746
-rw-r--r--ML_BSSN_UPW/src/ML_BSSN_UPW_RHS2.cc2186
-rw-r--r--ML_BSSN_UPW/src/ML_BSSN_UPW_RHSStaticBoundary.cc462
-rw-r--r--ML_BSSN_UPW/src/ML_BSSN_UPW_boundary.cc462
-rw-r--r--ML_BSSN_UPW/src/ML_BSSN_UPW_constraints1.cc1853
-rw-r--r--ML_BSSN_UPW/src/ML_BSSN_UPW_constraints2.cc1148
-rw-r--r--ML_BSSN_UPW/src/ML_BSSN_UPW_convertFromADMBase.cc497
-rw-r--r--ML_BSSN_UPW/src/ML_BSSN_UPW_convertFromADMBaseGamma.cc891
-rw-r--r--ML_BSSN_UPW/src/ML_BSSN_UPW_convertToADMBase.cc462
-rw-r--r--ML_BSSN_UPW/src/ML_BSSN_UPW_convertToADMBaseDtLapseShift.cc831
-rw-r--r--ML_BSSN_UPW/src/ML_BSSN_UPW_convertToADMBaseDtLapseShiftBoundary.cc378
-rw-r--r--ML_BSSN_UPW/src/ML_BSSN_UPW_convertToADMBaseFakeDtLapseShift.cc378
-rw-r--r--ML_BSSN_UPW/src/ML_BSSN_UPW_enforce.cc389
-rw-r--r--ML_BSSN_UPW/src/RegisterMoL.cc2
-rw-r--r--ML_BSSN_UPW_Helper/src/SetGroupTags.c43
-rw-r--r--ML_WaveToy/param.ccl7
-rw-r--r--ML_WaveToy/src/Differencing.h48
-rw-r--r--ML_WaveToy/src/RegisterMoL.cc2
-rw-r--r--ML_WaveToy/src/WT_Gaussian.cc47
-rw-r--r--ML_WaveToy/src/WT_RHS.cc49
-rw-r--r--ML_WaveToyFO/param.ccl7
-rw-r--r--ML_WaveToyFO/src/Differencing.h48
-rw-r--r--ML_WaveToyFO/src/RegisterMoL.cc2
-rw-r--r--ML_WaveToyFO/src/WTFO_Gaussian.cc47
-rw-r--r--ML_WaveToyFO/src/WTFO_RHS.cc49
-rw-r--r--ML_WaveToyFO/src/WTFO_constraints.cc49
-rw-r--r--ML_hydro/param.ccl7
-rw-r--r--ML_hydro/src/Differencing.h48
-rw-r--r--ML_hydro/src/RegisterMoL.cc2
-rw-r--r--ML_hydro/src/hydro_RHS.cc49
-rw-r--r--ML_hydro/src/hydro_con2prim.cc47
-rw-r--r--ML_hydro/src/hydro_prim2con.cc47
-rw-r--r--ML_hydro/src/hydro_soundWave.cc47
-rw-r--r--ML_hydro/src/hydro_vacuum.cc47
-rw-r--r--README1
-rw-r--r--m/Makefile36
-rw-r--r--m/McLachlan_ADM.m42
-rw-r--r--m/McLachlan_ADMConstraints.m9
-rw-r--r--m/McLachlan_ADMQuantities.m5
-rw-r--r--m/McLachlan_BSSN.m311
-rw-r--r--m/McLachlan_BSSN_Peter.m4
-rw-r--r--m/McLachlan_WeylScalars.m4
-rw-r--r--m/McLachlantmp.m4
-rw-r--r--m/WaveToy.m4
-rw-r--r--m/WaveToyFO.m4
-rw-r--r--m/WaveToyMP.m271
-rw-r--r--m/hydro.m8
-rw-r--r--m/prototype/ML_BSSN_Helper/src/SetGroupTags.c43
-rwxr-xr-xm/runmath.sh17
259 files changed, 89727 insertions, 31198 deletions
diff --git a/ML_ADM/configuration.ccl b/ML_ADM/configuration.ccl
index 8e2c3c5..bdbc1bd 100644
--- a/ML_ADM/configuration.ccl
+++ b/ML_ADM/configuration.ccl
@@ -2,3 +2,4 @@
REQUIRES GenericFD
REQUIRES LoopControl
+REQUIRES Vectors
diff --git a/ML_ADM/interface.ccl b/ML_ADM/interface.ccl
index d926ad3..d623c1c 100644
--- a/ML_ADM/interface.ccl
+++ b/ML_ADM/interface.ccl
@@ -2,7 +2,7 @@
implements: ML_ADM
-inherits: ADMBase Grid GenericFD Boundary
+inherits: ADMBase TmunuBase Grid GenericFD Boundary
@@ -11,6 +11,7 @@ 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
diff --git a/ML_ADM/param.ccl b/ML_ADM/param.ccl
index 0cd2109..8c9efe8 100644
--- a/ML_ADM/param.ccl
+++ b/ML_ADM/param.ccl
@@ -3,11 +3,15 @@
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
@@ -15,6 +19,12 @@ CCTK_INT verbose "verbose" STEERABLE=ALWAYS
*:* :: ""
} 0
+restricted:
+CCTK_INT fdOrder "fdOrder"
+{
+ *:* :: ""
+} 4
+
private:
KEYWORD my_initial_data "my_initial_data"
{
@@ -36,6 +46,12 @@ CCTK_INT ML_ADM_MaxNumEvolvedVars "Number of evolved variables used by this thor
} 16
restricted:
+CCTK_INT ML_ADM_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 :: ""
diff --git a/ML_ADM/src/Differencing.h b/ML_ADM/src/Differencing.h
index cd495e5..5a60eb5 100644
--- a/ML_ADM/src/Differencing.h
+++ b/ML_ADM/src/Differencing.h
@@ -1,144 +1,579 @@
+#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 PDstandardNth1(u) ((-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]))*p1o12dx)
+# 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 PDstandardNth1(u) (PDstandardNth1_impl(u,p1o12dx,cdj,cdk))
-static CCTK_REAL PDstandardNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]))*p1o12dx;
+ 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 PDstandardNth2(u) ((-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]))*p1o12dy)
+# 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 PDstandardNth2(u) (PDstandardNth2_impl(u,p1o12dy,cdj,cdk))
-static CCTK_REAL PDstandardNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]))*p1o12dy;
+ 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 PDstandardNth3(u) ((-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]))*p1o12dz)
+# 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 PDstandardNth3(u) (PDstandardNth3_impl(u,p1o12dz,cdj,cdk))
-static CCTK_REAL PDstandardNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]))*p1o12dz;
+ 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 PDstandardNth11(u) ((30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]))*pm1o12dx2)
+# 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 PDstandardNth11(u) (PDstandardNth11_impl(u,pm1o12dx2,cdj,cdk))
-static CCTK_REAL PDstandardNth11_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dx2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth11_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dx2, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]))*pm1o12dx2;
+ 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 PDstandardNth22(u) ((30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]))*pm1o12dy2)
+# 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 PDstandardNth22(u) (PDstandardNth22_impl(u,pm1o12dy2,cdj,cdk))
-static CCTK_REAL PDstandardNth22_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dy2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth22_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dy2, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]))*pm1o12dy2;
+ 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 PDstandardNth33(u) ((30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]))*pm1o12dz2)
+# 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 PDstandardNth33(u) (PDstandardNth33_impl(u,pm1o12dz2,cdj,cdk))
-static CCTK_REAL PDstandardNth33_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dz2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth33_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dz2, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]))*pm1o12dz2;
+ 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 PDstandardNth12(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-1)+cdk*(0)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(2)+cdk*(0)]))*p1o144dxdy)
+# 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 PDstandardNth12(u) (PDstandardNth12_impl(u,p1o144dxdy,cdj,cdk))
-static CCTK_REAL PDstandardNth12_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth12_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-1)+cdk*(0)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(2)+cdk*(0)]))*p1o144dxdy;
+ 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 PDstandardNth13(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(2)]))*p1o144dxdz)
+# 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 PDstandardNth13(u) (PDstandardNth13_impl(u,p1o144dxdz,cdj,cdk))
-static CCTK_REAL PDstandardNth13_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth13_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(2)]))*p1o144dxdz;
+ 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 PDstandardNth21(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-1)+cdk*(0)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(2)+cdk*(0)]))*p1o144dxdy)
+# 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 PDstandardNth21(u) (PDstandardNth21_impl(u,p1o144dxdy,cdj,cdk))
-static CCTK_REAL PDstandardNth21_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth21_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-1)+cdk*(0)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(2)+cdk*(0)]))*p1o144dxdy;
+ 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 PDstandardNth23(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(2)]))*p1o144dydz)
+# 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 PDstandardNth23(u) (PDstandardNth23_impl(u,p1o144dydz,cdj,cdk))
-static CCTK_REAL PDstandardNth23_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dydz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth23_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dydz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(2)]))*p1o144dydz;
+ 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 PDstandardNth31(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(2)]))*p1o144dxdz)
+# 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 PDstandardNth31(u) (PDstandardNth31_impl(u,p1o144dxdz,cdj,cdk))
-static CCTK_REAL PDstandardNth31_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth31_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(2)]))*p1o144dxdz;
+ 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 PDstandardNth32(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(2)]))*p1o144dydz)
+# 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 PDstandardNth32(u) (PDstandardNth32_impl(u,p1o144dydz,cdj,cdk))
-static CCTK_REAL PDstandardNth32_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dydz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth32_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dydz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(2)]))*p1o144dydz;
+ 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
diff --git a/ML_ADM/src/ML_ADM_Minkowski.cc b/ML_ADM/src/ML_ADM_Minkowski.cc
index a180058..52b8daa 100644
--- a/ML_ADM/src/ML_ADM_Minkowski.cc
+++ b/ML_ADM/src/ML_ADM_Minkowski.cc
@@ -13,15 +13,16 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
-static void ML_ADM_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_ADM_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;
@@ -29,20 +30,6 @@ static void ML_ADM_Minkowski_Body(cGH const * restrict const cctkGH, int const d
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_ADM_Minkowski_Body");
- }
-
- if (cctk_iteration % ML_ADM_Minkowski_calc_every != ML_ADM_Minkowski_calc_offset)
- {
- return;
- }
-
- const char *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);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -52,38 +39,120 @@ static void ML_ADM_Minkowski_Body(cGH const * restrict const cctkGH, int const d
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ CCTK_REAL_VEC const p1o12dx = kmul(INV(dx),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dy = kmul(INV(dy),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dz = kmul(INV(dz),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o144dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(0.00694444444444444444444444444444)));
+ CCTK_REAL_VEC const p1o144dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(0.00694444444444444444444444444444)));
+ CCTK_REAL_VEC const p1o144dydz = kmul(INV(dy),kmul(INV(dz),ToReal(0.00694444444444444444444444444444)));
+ CCTK_REAL_VEC const p1o180dx2 = kmul(INV(SQR(dx)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o180dy2 = kmul(INV(SQR(dy)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o180dz2 = kmul(INV(SQR(dz)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o2dx = kmul(INV(dx),ToReal(0.5));
+ CCTK_REAL_VEC const p1o2dy = kmul(INV(dy),ToReal(0.5));
+ CCTK_REAL_VEC const p1o2dz = kmul(INV(dz),ToReal(0.5));
+ CCTK_REAL_VEC const p1o3600dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(0.000277777777777777777777777777778)));
+ CCTK_REAL_VEC const p1o3600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(0.000277777777777777777777777777778)));
+ CCTK_REAL_VEC const p1o3600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(0.000277777777777777777777777777778)));
+ CCTK_REAL_VEC const p1o4dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(0.25)));
+ CCTK_REAL_VEC const p1o4dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(0.25)));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(dz),ToReal(0.25)));
+ CCTK_REAL_VEC const p1o5040dx2 = kmul(INV(SQR(dx)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o5040dy2 = kmul(INV(SQR(dy)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o5040dz2 = kmul(INV(SQR(dz)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o60dx = kmul(INV(dx),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o60dy = kmul(INV(dy),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o60dz = kmul(INV(dz),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o705600dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1odx2 = INV(SQR(dx));
+ CCTK_REAL_VEC const p1ody2 = INV(SQR(dy));
+ CCTK_REAL_VEC const p1odz2 = INV(SQR(dz));
+ CCTK_REAL_VEC const pm1o12dx2 = kmul(INV(SQR(dx)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dy2 = kmul(INV(SQR(dy)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dz2 = kmul(INV(SQR(dz)),ToReal(-0.0833333333333333333333333333333));
+
+ /* Jacobian variable pointers */
+ bool const use_jacobian = (!CCTK_IsFunctionAliased("MultiPatch_GetMap") || MultiPatch_GetMap(cctkGH) != jacobian_identity_map)
+ && strlen(jacobian_group) > 0;
+ if (use_jacobian && strlen(jacobian_derivative_group) == 0)
+ {
+ CCTK_WARN (1, "GenericFD::jacobian_group and GenericFD::jacobian_derivative_group must both be set to valid group names");
+ }
+
+ CCTK_REAL const *restrict jacobian_ptrs[9];
+ if (use_jacobian) GenericFD_GroupDataPointers(cctkGH, jacobian_group,
+ 9, jacobian_ptrs);
+
+ CCTK_REAL const *restrict const J11 = use_jacobian ? jacobian_ptrs[0] : 0;
+ CCTK_REAL const *restrict const J12 = use_jacobian ? jacobian_ptrs[1] : 0;
+ CCTK_REAL const *restrict const J13 = use_jacobian ? jacobian_ptrs[2] : 0;
+ CCTK_REAL const *restrict const J21 = use_jacobian ? jacobian_ptrs[3] : 0;
+ CCTK_REAL const *restrict const J22 = use_jacobian ? jacobian_ptrs[4] : 0;
+ CCTK_REAL const *restrict const J23 = use_jacobian ? jacobian_ptrs[5] : 0;
+ CCTK_REAL const *restrict const J31 = use_jacobian ? jacobian_ptrs[6] : 0;
+ CCTK_REAL const *restrict const J32 = use_jacobian ? jacobian_ptrs[7] : 0;
+ CCTK_REAL const *restrict const J33 = use_jacobian ? jacobian_ptrs[8] : 0;
+
+ CCTK_REAL const *restrict jacobian_derivative_ptrs[18];
+ if (use_jacobian) GenericFD_GroupDataPointers(cctkGH, jacobian_derivative_group,
+ 18, jacobian_derivative_ptrs);
+
+ CCTK_REAL const *restrict const dJ111 = use_jacobian ? jacobian_derivative_ptrs[0] : 0;
+ CCTK_REAL const *restrict const dJ112 = use_jacobian ? jacobian_derivative_ptrs[1] : 0;
+ CCTK_REAL const *restrict const dJ113 = use_jacobian ? jacobian_derivative_ptrs[2] : 0;
+ CCTK_REAL const *restrict const dJ122 = use_jacobian ? jacobian_derivative_ptrs[3] : 0;
+ CCTK_REAL const *restrict const dJ123 = use_jacobian ? jacobian_derivative_ptrs[4] : 0;
+ CCTK_REAL const *restrict const dJ133 = use_jacobian ? jacobian_derivative_ptrs[5] : 0;
+ CCTK_REAL const *restrict const dJ211 = use_jacobian ? jacobian_derivative_ptrs[6] : 0;
+ CCTK_REAL const *restrict const dJ212 = use_jacobian ? jacobian_derivative_ptrs[7] : 0;
+ CCTK_REAL const *restrict const dJ213 = use_jacobian ? jacobian_derivative_ptrs[8] : 0;
+ CCTK_REAL const *restrict const dJ222 = use_jacobian ? jacobian_derivative_ptrs[9] : 0;
+ CCTK_REAL const *restrict const dJ223 = use_jacobian ? jacobian_derivative_ptrs[10] : 0;
+ CCTK_REAL const *restrict const dJ233 = use_jacobian ? jacobian_derivative_ptrs[11] : 0;
+ CCTK_REAL const *restrict const dJ311 = use_jacobian ? jacobian_derivative_ptrs[12] : 0;
+ CCTK_REAL const *restrict const dJ312 = use_jacobian ? jacobian_derivative_ptrs[13] : 0;
+ CCTK_REAL const *restrict const dJ313 = use_jacobian ? jacobian_derivative_ptrs[14] : 0;
+ CCTK_REAL const *restrict const dJ322 = use_jacobian ? jacobian_derivative_ptrs[15] : 0;
+ CCTK_REAL const *restrict const dJ323 = use_jacobian ? jacobian_derivative_ptrs[16] : 0;
+ CCTK_REAL const *restrict const dJ333 = use_jacobian ? jacobian_derivative_ptrs[17] : 0;
+
+ /* 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_LOOP3 (ML_ADM_Minkowski,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ 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)
{
ptrdiff_t const index = di*i + dj*j + dk*k;
@@ -91,62 +160,149 @@ static void ML_ADM_Minkowski_Body(cGH const * restrict const cctkGH, int const d
+
/* 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 g11L = 1;
+ CCTK_REAL_VEC g11L = ToReal(1);
+
+ CCTK_REAL_VEC g12L = ToReal(0);
- CCTK_REAL g12L = 0;
+ CCTK_REAL_VEC g13L = ToReal(0);
- CCTK_REAL g13L = 0;
+ CCTK_REAL_VEC g22L = ToReal(1);
- CCTK_REAL g22L = 1;
+ CCTK_REAL_VEC g23L = ToReal(0);
- CCTK_REAL g23L = 0;
+ CCTK_REAL_VEC g33L = ToReal(1);
- CCTK_REAL g33L = 1;
+ CCTK_REAL_VEC K11L = ToReal(0);
- CCTK_REAL K11L = 0;
+ CCTK_REAL_VEC K12L = ToReal(0);
- CCTK_REAL K12L = 0;
+ CCTK_REAL_VEC K13L = ToReal(0);
- CCTK_REAL K13L = 0;
+ CCTK_REAL_VEC K22L = ToReal(0);
- CCTK_REAL K22L = 0;
+ CCTK_REAL_VEC K23L = ToReal(0);
- CCTK_REAL K23L = 0;
+ CCTK_REAL_VEC K33L = ToReal(0);
- CCTK_REAL K33L = 0;
+ CCTK_REAL_VEC alphaL = ToReal(1);
- CCTK_REAL alphaL = 1;
+ CCTK_REAL_VEC beta1L = ToReal(0);
- CCTK_REAL beta1L = 0;
+ CCTK_REAL_VEC beta2L = ToReal(0);
- CCTK_REAL beta2L = 0;
+ CCTK_REAL_VEC beta3L = ToReal(0);
- CCTK_REAL beta3L = 0;
+ /* If necessary, store only partial vectors after the first iteration */
- /* Copy local copies back to grid functions */
- alpha[index] = alphaL;
- beta1[index] = beta1L;
- beta2[index] = beta2L;
- beta3[index] = beta3L;
- g11[index] = g11L;
- g12[index] = g12L;
- g13[index] = g13L;
- g22[index] = g22L;
- g23[index] = g23L;
- g33[index] = g33L;
- K11[index] = K11L;
- K12[index] = K12L;
- K13[index] = K13L;
- K22[index] = K22L;
- K23[index] = K23L;
- K33[index] = K33L;
+ 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);
}
- LC_ENDLOOP3 (ML_ADM_Minkowski);
+ LC_ENDLOOP3VEC (ML_ADM_Minkowski);
}
extern "C" void ML_ADM_Minkowski(CCTK_ARGUMENTS)
@@ -154,5 +310,39 @@ extern "C" void ML_ADM_Minkowski(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_ADM_Minkowski_Body");
+ }
+
+ if (cctk_iteration % ML_ADM_Minkowski_calc_every != ML_ADM_Minkowski_calc_offset)
+ {
+ return;
+ }
+
+ const char *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)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverEverything(cctkGH, &ML_ADM_Minkowski_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_ADM_Minkowski_Body");
+ }
}
diff --git a/ML_ADM/src/ML_ADM_RHS.cc b/ML_ADM/src/ML_ADM_RHS.cc
index 06cd46c..7e180d3 100644
--- a/ML_ADM/src/ML_ADM_RHS.cc
+++ b/ML_ADM/src/ML_ADM_RHS.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_ADM_RHS_SelectBCs(CCTK_ARGUMENTS)
{
@@ -42,7 +43,7 @@ extern "C" void ML_ADM_RHS_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_ADM_RHS_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_ADM_RHS_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;
@@ -50,21 +51,6 @@ static void ML_ADM_RHS_Body(cGH const * restrict const cctkGH, int const dir, in
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_ADM_RHS_Body");
- }
-
- if (cctk_iteration % ML_ADM_RHS_calc_every != ML_ADM_RHS_calc_offset)
- {
- 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"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_ADM_RHS", 8, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "ML_ADM_RHS", 2, 2, 2);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -74,412 +60,1502 @@ static void ML_ADM_RHS_Body(cGH const * restrict const cctkGH, int const dir, in
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ CCTK_REAL_VEC const p1o12dx = kmul(INV(dx),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dy = kmul(INV(dy),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dz = kmul(INV(dz),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o144dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(0.00694444444444444444444444444444)));
+ CCTK_REAL_VEC const p1o144dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(0.00694444444444444444444444444444)));
+ CCTK_REAL_VEC const p1o144dydz = kmul(INV(dy),kmul(INV(dz),ToReal(0.00694444444444444444444444444444)));
+ CCTK_REAL_VEC const p1o180dx2 = kmul(INV(SQR(dx)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o180dy2 = kmul(INV(SQR(dy)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o180dz2 = kmul(INV(SQR(dz)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o2dx = kmul(INV(dx),ToReal(0.5));
+ CCTK_REAL_VEC const p1o2dy = kmul(INV(dy),ToReal(0.5));
+ CCTK_REAL_VEC const p1o2dz = kmul(INV(dz),ToReal(0.5));
+ CCTK_REAL_VEC const p1o3600dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(0.000277777777777777777777777777778)));
+ CCTK_REAL_VEC const p1o3600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(0.000277777777777777777777777777778)));
+ CCTK_REAL_VEC const p1o3600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(0.000277777777777777777777777777778)));
+ CCTK_REAL_VEC const p1o4dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(0.25)));
+ CCTK_REAL_VEC const p1o4dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(0.25)));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(dz),ToReal(0.25)));
+ CCTK_REAL_VEC const p1o5040dx2 = kmul(INV(SQR(dx)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o5040dy2 = kmul(INV(SQR(dy)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o5040dz2 = kmul(INV(SQR(dz)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o60dx = kmul(INV(dx),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o60dy = kmul(INV(dy),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o60dz = kmul(INV(dz),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o705600dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1odx2 = INV(SQR(dx));
+ CCTK_REAL_VEC const p1ody2 = INV(SQR(dy));
+ CCTK_REAL_VEC const p1odz2 = INV(SQR(dz));
+ CCTK_REAL_VEC const pm1o12dx2 = kmul(INV(SQR(dx)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dy2 = kmul(INV(SQR(dy)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dz2 = kmul(INV(SQR(dz)),ToReal(-0.0833333333333333333333333333333));
+
+ /* Jacobian variable pointers */
+ bool const use_jacobian = (!CCTK_IsFunctionAliased("MultiPatch_GetMap") || MultiPatch_GetMap(cctkGH) != jacobian_identity_map)
+ && strlen(jacobian_group) > 0;
+ if (use_jacobian && strlen(jacobian_derivative_group) == 0)
+ {
+ CCTK_WARN (1, "GenericFD::jacobian_group and GenericFD::jacobian_derivative_group must both be set to valid group names");
+ }
+
+ CCTK_REAL const *restrict jacobian_ptrs[9];
+ if (use_jacobian) GenericFD_GroupDataPointers(cctkGH, jacobian_group,
+ 9, jacobian_ptrs);
+
+ CCTK_REAL const *restrict const J11 = use_jacobian ? jacobian_ptrs[0] : 0;
+ CCTK_REAL const *restrict const J12 = use_jacobian ? jacobian_ptrs[1] : 0;
+ CCTK_REAL const *restrict const J13 = use_jacobian ? jacobian_ptrs[2] : 0;
+ CCTK_REAL const *restrict const J21 = use_jacobian ? jacobian_ptrs[3] : 0;
+ CCTK_REAL const *restrict const J22 = use_jacobian ? jacobian_ptrs[4] : 0;
+ CCTK_REAL const *restrict const J23 = use_jacobian ? jacobian_ptrs[5] : 0;
+ CCTK_REAL const *restrict const J31 = use_jacobian ? jacobian_ptrs[6] : 0;
+ CCTK_REAL const *restrict const J32 = use_jacobian ? jacobian_ptrs[7] : 0;
+ CCTK_REAL const *restrict const J33 = use_jacobian ? jacobian_ptrs[8] : 0;
+
+ CCTK_REAL const *restrict jacobian_derivative_ptrs[18];
+ if (use_jacobian) GenericFD_GroupDataPointers(cctkGH, jacobian_derivative_group,
+ 18, jacobian_derivative_ptrs);
+
+ CCTK_REAL const *restrict const dJ111 = use_jacobian ? jacobian_derivative_ptrs[0] : 0;
+ CCTK_REAL const *restrict const dJ112 = use_jacobian ? jacobian_derivative_ptrs[1] : 0;
+ CCTK_REAL const *restrict const dJ113 = use_jacobian ? jacobian_derivative_ptrs[2] : 0;
+ CCTK_REAL const *restrict const dJ122 = use_jacobian ? jacobian_derivative_ptrs[3] : 0;
+ CCTK_REAL const *restrict const dJ123 = use_jacobian ? jacobian_derivative_ptrs[4] : 0;
+ CCTK_REAL const *restrict const dJ133 = use_jacobian ? jacobian_derivative_ptrs[5] : 0;
+ CCTK_REAL const *restrict const dJ211 = use_jacobian ? jacobian_derivative_ptrs[6] : 0;
+ CCTK_REAL const *restrict const dJ212 = use_jacobian ? jacobian_derivative_ptrs[7] : 0;
+ CCTK_REAL const *restrict const dJ213 = use_jacobian ? jacobian_derivative_ptrs[8] : 0;
+ CCTK_REAL const *restrict const dJ222 = use_jacobian ? jacobian_derivative_ptrs[9] : 0;
+ CCTK_REAL const *restrict const dJ223 = use_jacobian ? jacobian_derivative_ptrs[10] : 0;
+ CCTK_REAL const *restrict const dJ233 = use_jacobian ? jacobian_derivative_ptrs[11] : 0;
+ CCTK_REAL const *restrict const dJ311 = use_jacobian ? jacobian_derivative_ptrs[12] : 0;
+ CCTK_REAL const *restrict const dJ312 = use_jacobian ? jacobian_derivative_ptrs[13] : 0;
+ CCTK_REAL const *restrict const dJ313 = use_jacobian ? jacobian_derivative_ptrs[14] : 0;
+ CCTK_REAL const *restrict const dJ322 = use_jacobian ? jacobian_derivative_ptrs[15] : 0;
+ CCTK_REAL const *restrict const dJ323 = use_jacobian ? jacobian_derivative_ptrs[16] : 0;
+ CCTK_REAL const *restrict const dJ333 = use_jacobian ? jacobian_derivative_ptrs[17] : 0;
+
+ /* 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_LOOP3 (ML_ADM_RHS,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ 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)
{
ptrdiff_t const index = di*i + dj*j + dk*k;
/* Assign local copies of grid functions */
- CCTK_REAL alphaL = alpha[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL g11L = g11[index];
- CCTK_REAL g12L = g12[index];
- CCTK_REAL g13L = g13[index];
- CCTK_REAL g22L = g22[index];
- CCTK_REAL g23L = g23[index];
- CCTK_REAL g33L = g33[index];
- CCTK_REAL K11L = K11[index];
- CCTK_REAL K12L = K12[index];
- CCTK_REAL K13L = K13[index];
- CCTK_REAL K22L = K22[index];
- CCTK_REAL K23L = K23[index];
- CCTK_REAL K33L = K33[index];
-
+ CCTK_REAL_VEC 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 g11L = vec_load(g11[index]);
+ CCTK_REAL_VEC g12L = vec_load(g12[index]);
+ CCTK_REAL_VEC g13L = vec_load(g13[index]);
+ CCTK_REAL_VEC g22L = vec_load(g22[index]);
+ CCTK_REAL_VEC g23L = vec_load(g23[index]);
+ CCTK_REAL_VEC g33L = vec_load(g33[index]);
+ CCTK_REAL_VEC K11L = vec_load(K11[index]);
+ CCTK_REAL_VEC K12L = vec_load(K12[index]);
+ CCTK_REAL_VEC K13L = vec_load(K13[index]);
+ CCTK_REAL_VEC K22L = vec_load(K22[index]);
+ CCTK_REAL_VEC K23L = vec_load(K23[index]);
+ CCTK_REAL_VEC K33L = vec_load(K33[index]);
+
+
+ CCTK_REAL_VEC dJ111L, dJ112L, dJ113L, dJ122L, dJ123L, dJ133L, dJ211L, dJ212L, dJ213L, dJ222L, dJ223L, dJ233L, dJ311L, dJ312L, dJ313L, dJ322L, dJ323L, dJ333L, J11L, J12L, J13L, J21L, J22L, J23L, J31L, J32L, J33L;
+
+ if (use_jacobian)
+ {
+ dJ111L = vec_load(dJ111[index]);
+ dJ112L = vec_load(dJ112[index]);
+ dJ113L = vec_load(dJ113[index]);
+ dJ122L = vec_load(dJ122[index]);
+ dJ123L = vec_load(dJ123[index]);
+ dJ133L = vec_load(dJ133[index]);
+ dJ211L = vec_load(dJ211[index]);
+ dJ212L = vec_load(dJ212[index]);
+ dJ213L = vec_load(dJ213[index]);
+ dJ222L = vec_load(dJ222[index]);
+ dJ223L = vec_load(dJ223[index]);
+ dJ233L = vec_load(dJ233[index]);
+ dJ311L = vec_load(dJ311[index]);
+ dJ312L = vec_load(dJ312[index]);
+ dJ313L = vec_load(dJ313[index]);
+ dJ322L = vec_load(dJ322[index]);
+ dJ323L = vec_load(dJ323[index]);
+ dJ333L = vec_load(dJ333[index]);
+ J11L = vec_load(J11[index]);
+ J12L = vec_load(J12[index]);
+ J13L = vec_load(J13[index]);
+ J21L = vec_load(J21[index]);
+ J22L = vec_load(J22[index]);
+ J23L = vec_load(J23[index]);
+ J31L = vec_load(J31[index]);
+ J32L = vec_load(J32[index]);
+ J33L = vec_load(J33[index]);
+ }
/* Include user supplied include files */
/* Precompute derivatives */
- CCTK_REAL const PDstandardNth1alpha = PDstandardNth1(&alpha[index]);
- CCTK_REAL const PDstandardNth2alpha = PDstandardNth2(&alpha[index]);
- CCTK_REAL const PDstandardNth3alpha = PDstandardNth3(&alpha[index]);
- CCTK_REAL const PDstandardNth11alpha = PDstandardNth11(&alpha[index]);
- CCTK_REAL const PDstandardNth22alpha = PDstandardNth22(&alpha[index]);
- CCTK_REAL const PDstandardNth33alpha = PDstandardNth33(&alpha[index]);
- CCTK_REAL const PDstandardNth12alpha = PDstandardNth12(&alpha[index]);
- CCTK_REAL const PDstandardNth13alpha = PDstandardNth13(&alpha[index]);
- CCTK_REAL const PDstandardNth23alpha = PDstandardNth23(&alpha[index]);
- CCTK_REAL const PDstandardNth1beta1 = PDstandardNth1(&beta1[index]);
- CCTK_REAL const PDstandardNth2beta1 = PDstandardNth2(&beta1[index]);
- CCTK_REAL const PDstandardNth3beta1 = PDstandardNth3(&beta1[index]);
- CCTK_REAL const PDstandardNth1beta2 = PDstandardNth1(&beta2[index]);
- CCTK_REAL const PDstandardNth2beta2 = PDstandardNth2(&beta2[index]);
- CCTK_REAL const PDstandardNth3beta2 = PDstandardNth3(&beta2[index]);
- CCTK_REAL const PDstandardNth1beta3 = PDstandardNth1(&beta3[index]);
- CCTK_REAL const PDstandardNth2beta3 = PDstandardNth2(&beta3[index]);
- CCTK_REAL const PDstandardNth3beta3 = PDstandardNth3(&beta3[index]);
- CCTK_REAL const PDstandardNth1g11 = PDstandardNth1(&g11[index]);
- CCTK_REAL const PDstandardNth2g11 = PDstandardNth2(&g11[index]);
- CCTK_REAL const PDstandardNth3g11 = PDstandardNth3(&g11[index]);
- CCTK_REAL const PDstandardNth22g11 = PDstandardNth22(&g11[index]);
- CCTK_REAL const PDstandardNth33g11 = PDstandardNth33(&g11[index]);
- CCTK_REAL const PDstandardNth23g11 = PDstandardNth23(&g11[index]);
- CCTK_REAL const PDstandardNth1g12 = PDstandardNth1(&g12[index]);
- CCTK_REAL const PDstandardNth2g12 = PDstandardNth2(&g12[index]);
- CCTK_REAL const PDstandardNth3g12 = PDstandardNth3(&g12[index]);
- CCTK_REAL const PDstandardNth33g12 = PDstandardNth33(&g12[index]);
- CCTK_REAL const PDstandardNth12g12 = PDstandardNth12(&g12[index]);
- CCTK_REAL const PDstandardNth13g12 = PDstandardNth13(&g12[index]);
- CCTK_REAL const PDstandardNth23g12 = PDstandardNth23(&g12[index]);
- CCTK_REAL const PDstandardNth1g13 = PDstandardNth1(&g13[index]);
- CCTK_REAL const PDstandardNth2g13 = PDstandardNth2(&g13[index]);
- CCTK_REAL const PDstandardNth3g13 = PDstandardNth3(&g13[index]);
- CCTK_REAL const PDstandardNth22g13 = PDstandardNth22(&g13[index]);
- CCTK_REAL const PDstandardNth12g13 = PDstandardNth12(&g13[index]);
- CCTK_REAL const PDstandardNth13g13 = PDstandardNth13(&g13[index]);
- CCTK_REAL const PDstandardNth23g13 = PDstandardNth23(&g13[index]);
- CCTK_REAL const PDstandardNth1g22 = PDstandardNth1(&g22[index]);
- CCTK_REAL const PDstandardNth2g22 = PDstandardNth2(&g22[index]);
- CCTK_REAL const PDstandardNth3g22 = PDstandardNth3(&g22[index]);
- CCTK_REAL const PDstandardNth11g22 = PDstandardNth11(&g22[index]);
- CCTK_REAL const PDstandardNth33g22 = PDstandardNth33(&g22[index]);
- CCTK_REAL const PDstandardNth13g22 = PDstandardNth13(&g22[index]);
- CCTK_REAL const PDstandardNth1g23 = PDstandardNth1(&g23[index]);
- CCTK_REAL const PDstandardNth2g23 = PDstandardNth2(&g23[index]);
- CCTK_REAL const PDstandardNth3g23 = PDstandardNth3(&g23[index]);
- CCTK_REAL const PDstandardNth11g23 = PDstandardNth11(&g23[index]);
- CCTK_REAL const PDstandardNth12g23 = PDstandardNth12(&g23[index]);
- CCTK_REAL const PDstandardNth13g23 = PDstandardNth13(&g23[index]);
- CCTK_REAL const PDstandardNth23g23 = PDstandardNth23(&g23[index]);
- CCTK_REAL const PDstandardNth1g33 = PDstandardNth1(&g33[index]);
- CCTK_REAL const PDstandardNth2g33 = PDstandardNth2(&g33[index]);
- CCTK_REAL const PDstandardNth3g33 = PDstandardNth3(&g33[index]);
- CCTK_REAL const PDstandardNth11g33 = PDstandardNth11(&g33[index]);
- CCTK_REAL const PDstandardNth22g33 = PDstandardNth22(&g33[index]);
- CCTK_REAL const PDstandardNth12g33 = PDstandardNth12(&g33[index]);
- CCTK_REAL const PDstandardNth1K11 = PDstandardNth1(&K11[index]);
- CCTK_REAL const PDstandardNth2K11 = PDstandardNth2(&K11[index]);
- CCTK_REAL const PDstandardNth3K11 = PDstandardNth3(&K11[index]);
- CCTK_REAL const PDstandardNth1K12 = PDstandardNth1(&K12[index]);
- CCTK_REAL const PDstandardNth2K12 = PDstandardNth2(&K12[index]);
- CCTK_REAL const PDstandardNth3K12 = PDstandardNth3(&K12[index]);
- CCTK_REAL const PDstandardNth1K13 = PDstandardNth1(&K13[index]);
- CCTK_REAL const PDstandardNth2K13 = PDstandardNth2(&K13[index]);
- CCTK_REAL const PDstandardNth3K13 = PDstandardNth3(&K13[index]);
- CCTK_REAL const PDstandardNth1K22 = PDstandardNth1(&K22[index]);
- CCTK_REAL const PDstandardNth2K22 = PDstandardNth2(&K22[index]);
- CCTK_REAL const PDstandardNth3K22 = PDstandardNth3(&K22[index]);
- CCTK_REAL const PDstandardNth1K23 = PDstandardNth1(&K23[index]);
- CCTK_REAL const PDstandardNth2K23 = PDstandardNth2(&K23[index]);
- CCTK_REAL const PDstandardNth3K23 = PDstandardNth3(&K23[index]);
- CCTK_REAL const PDstandardNth1K33 = PDstandardNth1(&K33[index]);
- CCTK_REAL const PDstandardNth2K33 = PDstandardNth2(&K33[index]);
- CCTK_REAL const PDstandardNth3K33 = PDstandardNth3(&K33[index]);
+ 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 PDstandardNth1g11;
+ CCTK_REAL_VEC PDstandardNth2g11;
+ CCTK_REAL_VEC PDstandardNth3g11;
+ CCTK_REAL_VEC PDstandardNth11g11;
+ CCTK_REAL_VEC PDstandardNth22g11;
+ CCTK_REAL_VEC PDstandardNth33g11;
+ CCTK_REAL_VEC PDstandardNth12g11;
+ CCTK_REAL_VEC PDstandardNth13g11;
+ CCTK_REAL_VEC PDstandardNth23g11;
+ CCTK_REAL_VEC PDstandardNth1g12;
+ CCTK_REAL_VEC PDstandardNth2g12;
+ CCTK_REAL_VEC PDstandardNth3g12;
+ CCTK_REAL_VEC PDstandardNth11g12;
+ CCTK_REAL_VEC PDstandardNth22g12;
+ CCTK_REAL_VEC PDstandardNth33g12;
+ CCTK_REAL_VEC PDstandardNth12g12;
+ CCTK_REAL_VEC PDstandardNth13g12;
+ CCTK_REAL_VEC PDstandardNth23g12;
+ CCTK_REAL_VEC PDstandardNth1g13;
+ CCTK_REAL_VEC PDstandardNth2g13;
+ CCTK_REAL_VEC PDstandardNth3g13;
+ CCTK_REAL_VEC PDstandardNth11g13;
+ CCTK_REAL_VEC PDstandardNth22g13;
+ CCTK_REAL_VEC PDstandardNth33g13;
+ CCTK_REAL_VEC PDstandardNth12g13;
+ CCTK_REAL_VEC PDstandardNth13g13;
+ CCTK_REAL_VEC PDstandardNth23g13;
+ CCTK_REAL_VEC PDstandardNth1g22;
+ CCTK_REAL_VEC PDstandardNth2g22;
+ CCTK_REAL_VEC PDstandardNth3g22;
+ CCTK_REAL_VEC PDstandardNth11g22;
+ CCTK_REAL_VEC PDstandardNth22g22;
+ CCTK_REAL_VEC PDstandardNth33g22;
+ CCTK_REAL_VEC PDstandardNth12g22;
+ CCTK_REAL_VEC PDstandardNth13g22;
+ CCTK_REAL_VEC PDstandardNth23g22;
+ CCTK_REAL_VEC PDstandardNth1g23;
+ CCTK_REAL_VEC PDstandardNth2g23;
+ CCTK_REAL_VEC PDstandardNth3g23;
+ CCTK_REAL_VEC PDstandardNth11g23;
+ CCTK_REAL_VEC PDstandardNth22g23;
+ CCTK_REAL_VEC PDstandardNth33g23;
+ CCTK_REAL_VEC PDstandardNth12g23;
+ CCTK_REAL_VEC PDstandardNth13g23;
+ CCTK_REAL_VEC PDstandardNth23g23;
+ CCTK_REAL_VEC PDstandardNth1g33;
+ CCTK_REAL_VEC PDstandardNth2g33;
+ CCTK_REAL_VEC PDstandardNth3g33;
+ CCTK_REAL_VEC PDstandardNth11g33;
+ CCTK_REAL_VEC PDstandardNth22g33;
+ CCTK_REAL_VEC PDstandardNth33g33;
+ CCTK_REAL_VEC PDstandardNth12g33;
+ CCTK_REAL_VEC PDstandardNth13g33;
+ CCTK_REAL_VEC PDstandardNth23g33;
+ CCTK_REAL_VEC PDstandardNth1K11;
+ CCTK_REAL_VEC PDstandardNth2K11;
+ CCTK_REAL_VEC PDstandardNth3K11;
+ CCTK_REAL_VEC PDstandardNth1K12;
+ CCTK_REAL_VEC PDstandardNth2K12;
+ CCTK_REAL_VEC PDstandardNth3K12;
+ CCTK_REAL_VEC PDstandardNth1K13;
+ CCTK_REAL_VEC PDstandardNth2K13;
+ CCTK_REAL_VEC PDstandardNth3K13;
+ CCTK_REAL_VEC PDstandardNth1K22;
+ CCTK_REAL_VEC PDstandardNth2K22;
+ CCTK_REAL_VEC PDstandardNth3K22;
+ CCTK_REAL_VEC PDstandardNth1K23;
+ CCTK_REAL_VEC PDstandardNth2K23;
+ CCTK_REAL_VEC PDstandardNth3K23;
+ CCTK_REAL_VEC PDstandardNth1K33;
+ CCTK_REAL_VEC PDstandardNth2K33;
+ CCTK_REAL_VEC PDstandardNth3K33;
+
+ switch(fdOrder)
+ {
+ case 2:
+ 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]);
+ PDstandardNth1g11 = PDstandardNthfdOrder21(&g11[index]);
+ PDstandardNth2g11 = PDstandardNthfdOrder22(&g11[index]);
+ PDstandardNth3g11 = PDstandardNthfdOrder23(&g11[index]);
+ PDstandardNth11g11 = PDstandardNthfdOrder211(&g11[index]);
+ PDstandardNth22g11 = PDstandardNthfdOrder222(&g11[index]);
+ PDstandardNth33g11 = PDstandardNthfdOrder233(&g11[index]);
+ PDstandardNth12g11 = PDstandardNthfdOrder212(&g11[index]);
+ PDstandardNth13g11 = PDstandardNthfdOrder213(&g11[index]);
+ PDstandardNth23g11 = PDstandardNthfdOrder223(&g11[index]);
+ PDstandardNth1g12 = PDstandardNthfdOrder21(&g12[index]);
+ PDstandardNth2g12 = PDstandardNthfdOrder22(&g12[index]);
+ PDstandardNth3g12 = PDstandardNthfdOrder23(&g12[index]);
+ PDstandardNth11g12 = PDstandardNthfdOrder211(&g12[index]);
+ PDstandardNth22g12 = PDstandardNthfdOrder222(&g12[index]);
+ PDstandardNth33g12 = PDstandardNthfdOrder233(&g12[index]);
+ PDstandardNth12g12 = PDstandardNthfdOrder212(&g12[index]);
+ PDstandardNth13g12 = PDstandardNthfdOrder213(&g12[index]);
+ PDstandardNth23g12 = PDstandardNthfdOrder223(&g12[index]);
+ PDstandardNth1g13 = PDstandardNthfdOrder21(&g13[index]);
+ PDstandardNth2g13 = PDstandardNthfdOrder22(&g13[index]);
+ PDstandardNth3g13 = PDstandardNthfdOrder23(&g13[index]);
+ PDstandardNth11g13 = PDstandardNthfdOrder211(&g13[index]);
+ PDstandardNth22g13 = PDstandardNthfdOrder222(&g13[index]);
+ PDstandardNth33g13 = PDstandardNthfdOrder233(&g13[index]);
+ PDstandardNth12g13 = PDstandardNthfdOrder212(&g13[index]);
+ PDstandardNth13g13 = PDstandardNthfdOrder213(&g13[index]);
+ PDstandardNth23g13 = PDstandardNthfdOrder223(&g13[index]);
+ PDstandardNth1g22 = PDstandardNthfdOrder21(&g22[index]);
+ PDstandardNth2g22 = PDstandardNthfdOrder22(&g22[index]);
+ PDstandardNth3g22 = PDstandardNthfdOrder23(&g22[index]);
+ PDstandardNth11g22 = PDstandardNthfdOrder211(&g22[index]);
+ PDstandardNth22g22 = PDstandardNthfdOrder222(&g22[index]);
+ PDstandardNth33g22 = PDstandardNthfdOrder233(&g22[index]);
+ PDstandardNth12g22 = PDstandardNthfdOrder212(&g22[index]);
+ PDstandardNth13g22 = PDstandardNthfdOrder213(&g22[index]);
+ PDstandardNth23g22 = PDstandardNthfdOrder223(&g22[index]);
+ PDstandardNth1g23 = PDstandardNthfdOrder21(&g23[index]);
+ PDstandardNth2g23 = PDstandardNthfdOrder22(&g23[index]);
+ PDstandardNth3g23 = PDstandardNthfdOrder23(&g23[index]);
+ PDstandardNth11g23 = PDstandardNthfdOrder211(&g23[index]);
+ PDstandardNth22g23 = PDstandardNthfdOrder222(&g23[index]);
+ PDstandardNth33g23 = PDstandardNthfdOrder233(&g23[index]);
+ PDstandardNth12g23 = PDstandardNthfdOrder212(&g23[index]);
+ PDstandardNth13g23 = PDstandardNthfdOrder213(&g23[index]);
+ PDstandardNth23g23 = PDstandardNthfdOrder223(&g23[index]);
+ PDstandardNth1g33 = PDstandardNthfdOrder21(&g33[index]);
+ PDstandardNth2g33 = PDstandardNthfdOrder22(&g33[index]);
+ PDstandardNth3g33 = PDstandardNthfdOrder23(&g33[index]);
+ PDstandardNth11g33 = PDstandardNthfdOrder211(&g33[index]);
+ PDstandardNth22g33 = PDstandardNthfdOrder222(&g33[index]);
+ PDstandardNth33g33 = PDstandardNthfdOrder233(&g33[index]);
+ PDstandardNth12g33 = PDstandardNthfdOrder212(&g33[index]);
+ PDstandardNth13g33 = PDstandardNthfdOrder213(&g33[index]);
+ PDstandardNth23g33 = PDstandardNthfdOrder223(&g33[index]);
+ PDstandardNth1K11 = PDstandardNthfdOrder21(&K11[index]);
+ PDstandardNth2K11 = PDstandardNthfdOrder22(&K11[index]);
+ PDstandardNth3K11 = PDstandardNthfdOrder23(&K11[index]);
+ PDstandardNth1K12 = PDstandardNthfdOrder21(&K12[index]);
+ PDstandardNth2K12 = PDstandardNthfdOrder22(&K12[index]);
+ PDstandardNth3K12 = PDstandardNthfdOrder23(&K12[index]);
+ PDstandardNth1K13 = PDstandardNthfdOrder21(&K13[index]);
+ PDstandardNth2K13 = PDstandardNthfdOrder22(&K13[index]);
+ PDstandardNth3K13 = PDstandardNthfdOrder23(&K13[index]);
+ PDstandardNth1K22 = PDstandardNthfdOrder21(&K22[index]);
+ PDstandardNth2K22 = PDstandardNthfdOrder22(&K22[index]);
+ PDstandardNth3K22 = PDstandardNthfdOrder23(&K22[index]);
+ PDstandardNth1K23 = PDstandardNthfdOrder21(&K23[index]);
+ PDstandardNth2K23 = PDstandardNthfdOrder22(&K23[index]);
+ PDstandardNth3K23 = PDstandardNthfdOrder23(&K23[index]);
+ PDstandardNth1K33 = PDstandardNthfdOrder21(&K33[index]);
+ PDstandardNth2K33 = PDstandardNthfdOrder22(&K33[index]);
+ PDstandardNth3K33 = PDstandardNthfdOrder23(&K33[index]);
+ break;
+
+ case 4:
+ 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]);
+ PDstandardNth1g11 = PDstandardNthfdOrder41(&g11[index]);
+ PDstandardNth2g11 = PDstandardNthfdOrder42(&g11[index]);
+ PDstandardNth3g11 = PDstandardNthfdOrder43(&g11[index]);
+ PDstandardNth11g11 = PDstandardNthfdOrder411(&g11[index]);
+ PDstandardNth22g11 = PDstandardNthfdOrder422(&g11[index]);
+ PDstandardNth33g11 = PDstandardNthfdOrder433(&g11[index]);
+ PDstandardNth12g11 = PDstandardNthfdOrder412(&g11[index]);
+ PDstandardNth13g11 = PDstandardNthfdOrder413(&g11[index]);
+ PDstandardNth23g11 = PDstandardNthfdOrder423(&g11[index]);
+ PDstandardNth1g12 = PDstandardNthfdOrder41(&g12[index]);
+ PDstandardNth2g12 = PDstandardNthfdOrder42(&g12[index]);
+ PDstandardNth3g12 = PDstandardNthfdOrder43(&g12[index]);
+ PDstandardNth11g12 = PDstandardNthfdOrder411(&g12[index]);
+ PDstandardNth22g12 = PDstandardNthfdOrder422(&g12[index]);
+ PDstandardNth33g12 = PDstandardNthfdOrder433(&g12[index]);
+ PDstandardNth12g12 = PDstandardNthfdOrder412(&g12[index]);
+ PDstandardNth13g12 = PDstandardNthfdOrder413(&g12[index]);
+ PDstandardNth23g12 = PDstandardNthfdOrder423(&g12[index]);
+ PDstandardNth1g13 = PDstandardNthfdOrder41(&g13[index]);
+ PDstandardNth2g13 = PDstandardNthfdOrder42(&g13[index]);
+ PDstandardNth3g13 = PDstandardNthfdOrder43(&g13[index]);
+ PDstandardNth11g13 = PDstandardNthfdOrder411(&g13[index]);
+ PDstandardNth22g13 = PDstandardNthfdOrder422(&g13[index]);
+ PDstandardNth33g13 = PDstandardNthfdOrder433(&g13[index]);
+ PDstandardNth12g13 = PDstandardNthfdOrder412(&g13[index]);
+ PDstandardNth13g13 = PDstandardNthfdOrder413(&g13[index]);
+ PDstandardNth23g13 = PDstandardNthfdOrder423(&g13[index]);
+ PDstandardNth1g22 = PDstandardNthfdOrder41(&g22[index]);
+ PDstandardNth2g22 = PDstandardNthfdOrder42(&g22[index]);
+ PDstandardNth3g22 = PDstandardNthfdOrder43(&g22[index]);
+ PDstandardNth11g22 = PDstandardNthfdOrder411(&g22[index]);
+ PDstandardNth22g22 = PDstandardNthfdOrder422(&g22[index]);
+ PDstandardNth33g22 = PDstandardNthfdOrder433(&g22[index]);
+ PDstandardNth12g22 = PDstandardNthfdOrder412(&g22[index]);
+ PDstandardNth13g22 = PDstandardNthfdOrder413(&g22[index]);
+ PDstandardNth23g22 = PDstandardNthfdOrder423(&g22[index]);
+ PDstandardNth1g23 = PDstandardNthfdOrder41(&g23[index]);
+ PDstandardNth2g23 = PDstandardNthfdOrder42(&g23[index]);
+ PDstandardNth3g23 = PDstandardNthfdOrder43(&g23[index]);
+ PDstandardNth11g23 = PDstandardNthfdOrder411(&g23[index]);
+ PDstandardNth22g23 = PDstandardNthfdOrder422(&g23[index]);
+ PDstandardNth33g23 = PDstandardNthfdOrder433(&g23[index]);
+ PDstandardNth12g23 = PDstandardNthfdOrder412(&g23[index]);
+ PDstandardNth13g23 = PDstandardNthfdOrder413(&g23[index]);
+ PDstandardNth23g23 = PDstandardNthfdOrder423(&g23[index]);
+ PDstandardNth1g33 = PDstandardNthfdOrder41(&g33[index]);
+ PDstandardNth2g33 = PDstandardNthfdOrder42(&g33[index]);
+ PDstandardNth3g33 = PDstandardNthfdOrder43(&g33[index]);
+ PDstandardNth11g33 = PDstandardNthfdOrder411(&g33[index]);
+ PDstandardNth22g33 = PDstandardNthfdOrder422(&g33[index]);
+ PDstandardNth33g33 = PDstandardNthfdOrder433(&g33[index]);
+ PDstandardNth12g33 = PDstandardNthfdOrder412(&g33[index]);
+ PDstandardNth13g33 = PDstandardNthfdOrder413(&g33[index]);
+ PDstandardNth23g33 = PDstandardNthfdOrder423(&g33[index]);
+ PDstandardNth1K11 = PDstandardNthfdOrder41(&K11[index]);
+ PDstandardNth2K11 = PDstandardNthfdOrder42(&K11[index]);
+ PDstandardNth3K11 = PDstandardNthfdOrder43(&K11[index]);
+ PDstandardNth1K12 = PDstandardNthfdOrder41(&K12[index]);
+ PDstandardNth2K12 = PDstandardNthfdOrder42(&K12[index]);
+ PDstandardNth3K12 = PDstandardNthfdOrder43(&K12[index]);
+ PDstandardNth1K13 = PDstandardNthfdOrder41(&K13[index]);
+ PDstandardNth2K13 = PDstandardNthfdOrder42(&K13[index]);
+ PDstandardNth3K13 = PDstandardNthfdOrder43(&K13[index]);
+ PDstandardNth1K22 = PDstandardNthfdOrder41(&K22[index]);
+ PDstandardNth2K22 = PDstandardNthfdOrder42(&K22[index]);
+ PDstandardNth3K22 = PDstandardNthfdOrder43(&K22[index]);
+ PDstandardNth1K23 = PDstandardNthfdOrder41(&K23[index]);
+ PDstandardNth2K23 = PDstandardNthfdOrder42(&K23[index]);
+ PDstandardNth3K23 = PDstandardNthfdOrder43(&K23[index]);
+ PDstandardNth1K33 = PDstandardNthfdOrder41(&K33[index]);
+ PDstandardNth2K33 = PDstandardNthfdOrder42(&K33[index]);
+ PDstandardNth3K33 = PDstandardNthfdOrder43(&K33[index]);
+ break;
+
+ case 6:
+ 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]);
+ PDstandardNth1g11 = PDstandardNthfdOrder61(&g11[index]);
+ PDstandardNth2g11 = PDstandardNthfdOrder62(&g11[index]);
+ PDstandardNth3g11 = PDstandardNthfdOrder63(&g11[index]);
+ PDstandardNth11g11 = PDstandardNthfdOrder611(&g11[index]);
+ PDstandardNth22g11 = PDstandardNthfdOrder622(&g11[index]);
+ PDstandardNth33g11 = PDstandardNthfdOrder633(&g11[index]);
+ PDstandardNth12g11 = PDstandardNthfdOrder612(&g11[index]);
+ PDstandardNth13g11 = PDstandardNthfdOrder613(&g11[index]);
+ PDstandardNth23g11 = PDstandardNthfdOrder623(&g11[index]);
+ PDstandardNth1g12 = PDstandardNthfdOrder61(&g12[index]);
+ PDstandardNth2g12 = PDstandardNthfdOrder62(&g12[index]);
+ PDstandardNth3g12 = PDstandardNthfdOrder63(&g12[index]);
+ PDstandardNth11g12 = PDstandardNthfdOrder611(&g12[index]);
+ PDstandardNth22g12 = PDstandardNthfdOrder622(&g12[index]);
+ PDstandardNth33g12 = PDstandardNthfdOrder633(&g12[index]);
+ PDstandardNth12g12 = PDstandardNthfdOrder612(&g12[index]);
+ PDstandardNth13g12 = PDstandardNthfdOrder613(&g12[index]);
+ PDstandardNth23g12 = PDstandardNthfdOrder623(&g12[index]);
+ PDstandardNth1g13 = PDstandardNthfdOrder61(&g13[index]);
+ PDstandardNth2g13 = PDstandardNthfdOrder62(&g13[index]);
+ PDstandardNth3g13 = PDstandardNthfdOrder63(&g13[index]);
+ PDstandardNth11g13 = PDstandardNthfdOrder611(&g13[index]);
+ PDstandardNth22g13 = PDstandardNthfdOrder622(&g13[index]);
+ PDstandardNth33g13 = PDstandardNthfdOrder633(&g13[index]);
+ PDstandardNth12g13 = PDstandardNthfdOrder612(&g13[index]);
+ PDstandardNth13g13 = PDstandardNthfdOrder613(&g13[index]);
+ PDstandardNth23g13 = PDstandardNthfdOrder623(&g13[index]);
+ PDstandardNth1g22 = PDstandardNthfdOrder61(&g22[index]);
+ PDstandardNth2g22 = PDstandardNthfdOrder62(&g22[index]);
+ PDstandardNth3g22 = PDstandardNthfdOrder63(&g22[index]);
+ PDstandardNth11g22 = PDstandardNthfdOrder611(&g22[index]);
+ PDstandardNth22g22 = PDstandardNthfdOrder622(&g22[index]);
+ PDstandardNth33g22 = PDstandardNthfdOrder633(&g22[index]);
+ PDstandardNth12g22 = PDstandardNthfdOrder612(&g22[index]);
+ PDstandardNth13g22 = PDstandardNthfdOrder613(&g22[index]);
+ PDstandardNth23g22 = PDstandardNthfdOrder623(&g22[index]);
+ PDstandardNth1g23 = PDstandardNthfdOrder61(&g23[index]);
+ PDstandardNth2g23 = PDstandardNthfdOrder62(&g23[index]);
+ PDstandardNth3g23 = PDstandardNthfdOrder63(&g23[index]);
+ PDstandardNth11g23 = PDstandardNthfdOrder611(&g23[index]);
+ PDstandardNth22g23 = PDstandardNthfdOrder622(&g23[index]);
+ PDstandardNth33g23 = PDstandardNthfdOrder633(&g23[index]);
+ PDstandardNth12g23 = PDstandardNthfdOrder612(&g23[index]);
+ PDstandardNth13g23 = PDstandardNthfdOrder613(&g23[index]);
+ PDstandardNth23g23 = PDstandardNthfdOrder623(&g23[index]);
+ PDstandardNth1g33 = PDstandardNthfdOrder61(&g33[index]);
+ PDstandardNth2g33 = PDstandardNthfdOrder62(&g33[index]);
+ PDstandardNth3g33 = PDstandardNthfdOrder63(&g33[index]);
+ PDstandardNth11g33 = PDstandardNthfdOrder611(&g33[index]);
+ PDstandardNth22g33 = PDstandardNthfdOrder622(&g33[index]);
+ PDstandardNth33g33 = PDstandardNthfdOrder633(&g33[index]);
+ PDstandardNth12g33 = PDstandardNthfdOrder612(&g33[index]);
+ PDstandardNth13g33 = PDstandardNthfdOrder613(&g33[index]);
+ PDstandardNth23g33 = PDstandardNthfdOrder623(&g33[index]);
+ PDstandardNth1K11 = PDstandardNthfdOrder61(&K11[index]);
+ PDstandardNth2K11 = PDstandardNthfdOrder62(&K11[index]);
+ PDstandardNth3K11 = PDstandardNthfdOrder63(&K11[index]);
+ PDstandardNth1K12 = PDstandardNthfdOrder61(&K12[index]);
+ PDstandardNth2K12 = PDstandardNthfdOrder62(&K12[index]);
+ PDstandardNth3K12 = PDstandardNthfdOrder63(&K12[index]);
+ PDstandardNth1K13 = PDstandardNthfdOrder61(&K13[index]);
+ PDstandardNth2K13 = PDstandardNthfdOrder62(&K13[index]);
+ PDstandardNth3K13 = PDstandardNthfdOrder63(&K13[index]);
+ PDstandardNth1K22 = PDstandardNthfdOrder61(&K22[index]);
+ PDstandardNth2K22 = PDstandardNthfdOrder62(&K22[index]);
+ PDstandardNth3K22 = PDstandardNthfdOrder63(&K22[index]);
+ PDstandardNth1K23 = PDstandardNthfdOrder61(&K23[index]);
+ PDstandardNth2K23 = PDstandardNthfdOrder62(&K23[index]);
+ PDstandardNth3K23 = PDstandardNthfdOrder63(&K23[index]);
+ PDstandardNth1K33 = PDstandardNthfdOrder61(&K33[index]);
+ PDstandardNth2K33 = PDstandardNthfdOrder62(&K33[index]);
+ PDstandardNth3K33 = PDstandardNthfdOrder63(&K33[index]);
+ break;
+
+ case 8:
+ 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]);
+ PDstandardNth1g11 = PDstandardNthfdOrder81(&g11[index]);
+ PDstandardNth2g11 = PDstandardNthfdOrder82(&g11[index]);
+ PDstandardNth3g11 = PDstandardNthfdOrder83(&g11[index]);
+ PDstandardNth11g11 = PDstandardNthfdOrder811(&g11[index]);
+ PDstandardNth22g11 = PDstandardNthfdOrder822(&g11[index]);
+ PDstandardNth33g11 = PDstandardNthfdOrder833(&g11[index]);
+ PDstandardNth12g11 = PDstandardNthfdOrder812(&g11[index]);
+ PDstandardNth13g11 = PDstandardNthfdOrder813(&g11[index]);
+ PDstandardNth23g11 = PDstandardNthfdOrder823(&g11[index]);
+ PDstandardNth1g12 = PDstandardNthfdOrder81(&g12[index]);
+ PDstandardNth2g12 = PDstandardNthfdOrder82(&g12[index]);
+ PDstandardNth3g12 = PDstandardNthfdOrder83(&g12[index]);
+ PDstandardNth11g12 = PDstandardNthfdOrder811(&g12[index]);
+ PDstandardNth22g12 = PDstandardNthfdOrder822(&g12[index]);
+ PDstandardNth33g12 = PDstandardNthfdOrder833(&g12[index]);
+ PDstandardNth12g12 = PDstandardNthfdOrder812(&g12[index]);
+ PDstandardNth13g12 = PDstandardNthfdOrder813(&g12[index]);
+ PDstandardNth23g12 = PDstandardNthfdOrder823(&g12[index]);
+ PDstandardNth1g13 = PDstandardNthfdOrder81(&g13[index]);
+ PDstandardNth2g13 = PDstandardNthfdOrder82(&g13[index]);
+ PDstandardNth3g13 = PDstandardNthfdOrder83(&g13[index]);
+ PDstandardNth11g13 = PDstandardNthfdOrder811(&g13[index]);
+ PDstandardNth22g13 = PDstandardNthfdOrder822(&g13[index]);
+ PDstandardNth33g13 = PDstandardNthfdOrder833(&g13[index]);
+ PDstandardNth12g13 = PDstandardNthfdOrder812(&g13[index]);
+ PDstandardNth13g13 = PDstandardNthfdOrder813(&g13[index]);
+ PDstandardNth23g13 = PDstandardNthfdOrder823(&g13[index]);
+ PDstandardNth1g22 = PDstandardNthfdOrder81(&g22[index]);
+ PDstandardNth2g22 = PDstandardNthfdOrder82(&g22[index]);
+ PDstandardNth3g22 = PDstandardNthfdOrder83(&g22[index]);
+ PDstandardNth11g22 = PDstandardNthfdOrder811(&g22[index]);
+ PDstandardNth22g22 = PDstandardNthfdOrder822(&g22[index]);
+ PDstandardNth33g22 = PDstandardNthfdOrder833(&g22[index]);
+ PDstandardNth12g22 = PDstandardNthfdOrder812(&g22[index]);
+ PDstandardNth13g22 = PDstandardNthfdOrder813(&g22[index]);
+ PDstandardNth23g22 = PDstandardNthfdOrder823(&g22[index]);
+ PDstandardNth1g23 = PDstandardNthfdOrder81(&g23[index]);
+ PDstandardNth2g23 = PDstandardNthfdOrder82(&g23[index]);
+ PDstandardNth3g23 = PDstandardNthfdOrder83(&g23[index]);
+ PDstandardNth11g23 = PDstandardNthfdOrder811(&g23[index]);
+ PDstandardNth22g23 = PDstandardNthfdOrder822(&g23[index]);
+ PDstandardNth33g23 = PDstandardNthfdOrder833(&g23[index]);
+ PDstandardNth12g23 = PDstandardNthfdOrder812(&g23[index]);
+ PDstandardNth13g23 = PDstandardNthfdOrder813(&g23[index]);
+ PDstandardNth23g23 = PDstandardNthfdOrder823(&g23[index]);
+ PDstandardNth1g33 = PDstandardNthfdOrder81(&g33[index]);
+ PDstandardNth2g33 = PDstandardNthfdOrder82(&g33[index]);
+ PDstandardNth3g33 = PDstandardNthfdOrder83(&g33[index]);
+ PDstandardNth11g33 = PDstandardNthfdOrder811(&g33[index]);
+ PDstandardNth22g33 = PDstandardNthfdOrder822(&g33[index]);
+ PDstandardNth33g33 = PDstandardNthfdOrder833(&g33[index]);
+ PDstandardNth12g33 = PDstandardNthfdOrder812(&g33[index]);
+ PDstandardNth13g33 = PDstandardNthfdOrder813(&g33[index]);
+ PDstandardNth23g33 = PDstandardNthfdOrder823(&g33[index]);
+ PDstandardNth1K11 = PDstandardNthfdOrder81(&K11[index]);
+ PDstandardNth2K11 = PDstandardNthfdOrder82(&K11[index]);
+ PDstandardNth3K11 = PDstandardNthfdOrder83(&K11[index]);
+ PDstandardNth1K12 = PDstandardNthfdOrder81(&K12[index]);
+ PDstandardNth2K12 = PDstandardNthfdOrder82(&K12[index]);
+ PDstandardNth3K12 = PDstandardNthfdOrder83(&K12[index]);
+ PDstandardNth1K13 = PDstandardNthfdOrder81(&K13[index]);
+ PDstandardNth2K13 = PDstandardNthfdOrder82(&K13[index]);
+ PDstandardNth3K13 = PDstandardNthfdOrder83(&K13[index]);
+ PDstandardNth1K22 = PDstandardNthfdOrder81(&K22[index]);
+ PDstandardNth2K22 = PDstandardNthfdOrder82(&K22[index]);
+ PDstandardNth3K22 = PDstandardNthfdOrder83(&K22[index]);
+ PDstandardNth1K23 = PDstandardNthfdOrder81(&K23[index]);
+ PDstandardNth2K23 = PDstandardNthfdOrder82(&K23[index]);
+ PDstandardNth3K23 = PDstandardNthfdOrder83(&K23[index]);
+ PDstandardNth1K33 = PDstandardNthfdOrder81(&K33[index]);
+ PDstandardNth2K33 = PDstandardNthfdOrder82(&K33[index]);
+ PDstandardNth3K33 = PDstandardNthfdOrder83(&K33[index]);
+ break;
+ }
/* Calculate temporaries and grid functions */
- CCTK_REAL detg = 2*g12L*g13L*g23L + g33L*(g11L*g22L - SQR(g12L)) -
- g22L*SQR(g13L) - g11L*SQR(g23L);
+ CCTK_REAL_VEC JacPDstandardNth11alpha;
+ CCTK_REAL_VEC JacPDstandardNth11g22;
+ CCTK_REAL_VEC JacPDstandardNth11g23;
+ CCTK_REAL_VEC JacPDstandardNth11g33;
+ CCTK_REAL_VEC JacPDstandardNth12alpha;
+ CCTK_REAL_VEC JacPDstandardNth12g11;
+ CCTK_REAL_VEC JacPDstandardNth12g12;
+ CCTK_REAL_VEC JacPDstandardNth12g13;
+ CCTK_REAL_VEC JacPDstandardNth12g22;
+ CCTK_REAL_VEC JacPDstandardNth12g23;
+ CCTK_REAL_VEC JacPDstandardNth12g33;
+ CCTK_REAL_VEC JacPDstandardNth13alpha;
+ CCTK_REAL_VEC JacPDstandardNth13g11;
+ CCTK_REAL_VEC JacPDstandardNth13g12;
+ CCTK_REAL_VEC JacPDstandardNth13g13;
+ CCTK_REAL_VEC JacPDstandardNth13g22;
+ CCTK_REAL_VEC JacPDstandardNth13g23;
+ CCTK_REAL_VEC JacPDstandardNth13g33;
+ CCTK_REAL_VEC JacPDstandardNth1alpha;
+ CCTK_REAL_VEC JacPDstandardNth1beta1;
+ CCTK_REAL_VEC JacPDstandardNth1beta2;
+ CCTK_REAL_VEC JacPDstandardNth1beta3;
+ CCTK_REAL_VEC JacPDstandardNth1g11;
+ CCTK_REAL_VEC JacPDstandardNth1g12;
+ CCTK_REAL_VEC JacPDstandardNth1g13;
+ CCTK_REAL_VEC JacPDstandardNth1g22;
+ CCTK_REAL_VEC JacPDstandardNth1g23;
+ CCTK_REAL_VEC JacPDstandardNth1g33;
+ CCTK_REAL_VEC JacPDstandardNth1K11;
+ CCTK_REAL_VEC JacPDstandardNth1K12;
+ CCTK_REAL_VEC JacPDstandardNth1K13;
+ CCTK_REAL_VEC JacPDstandardNth1K22;
+ CCTK_REAL_VEC JacPDstandardNth1K23;
+ CCTK_REAL_VEC JacPDstandardNth1K33;
+ CCTK_REAL_VEC JacPDstandardNth21g11;
+ CCTK_REAL_VEC JacPDstandardNth21g12;
+ CCTK_REAL_VEC JacPDstandardNth21g13;
+ CCTK_REAL_VEC JacPDstandardNth21g22;
+ CCTK_REAL_VEC JacPDstandardNth21g23;
+ CCTK_REAL_VEC JacPDstandardNth21g33;
+ CCTK_REAL_VEC JacPDstandardNth22alpha;
+ CCTK_REAL_VEC JacPDstandardNth22g11;
+ CCTK_REAL_VEC JacPDstandardNth22g13;
+ CCTK_REAL_VEC JacPDstandardNth22g33;
+ CCTK_REAL_VEC JacPDstandardNth23alpha;
+ CCTK_REAL_VEC JacPDstandardNth23g11;
+ CCTK_REAL_VEC JacPDstandardNth23g12;
+ CCTK_REAL_VEC JacPDstandardNth23g13;
+ CCTK_REAL_VEC JacPDstandardNth23g22;
+ CCTK_REAL_VEC JacPDstandardNth23g23;
+ CCTK_REAL_VEC JacPDstandardNth23g33;
+ CCTK_REAL_VEC JacPDstandardNth2alpha;
+ CCTK_REAL_VEC JacPDstandardNth2beta1;
+ CCTK_REAL_VEC JacPDstandardNth2beta2;
+ CCTK_REAL_VEC JacPDstandardNth2beta3;
+ CCTK_REAL_VEC JacPDstandardNth2g11;
+ CCTK_REAL_VEC JacPDstandardNth2g12;
+ CCTK_REAL_VEC JacPDstandardNth2g13;
+ CCTK_REAL_VEC JacPDstandardNth2g22;
+ CCTK_REAL_VEC JacPDstandardNth2g23;
+ CCTK_REAL_VEC JacPDstandardNth2g33;
+ CCTK_REAL_VEC JacPDstandardNth2K11;
+ CCTK_REAL_VEC JacPDstandardNth2K12;
+ CCTK_REAL_VEC JacPDstandardNth2K13;
+ CCTK_REAL_VEC JacPDstandardNth2K22;
+ CCTK_REAL_VEC JacPDstandardNth2K23;
+ CCTK_REAL_VEC JacPDstandardNth2K33;
+ CCTK_REAL_VEC JacPDstandardNth31g11;
+ CCTK_REAL_VEC JacPDstandardNth31g12;
+ CCTK_REAL_VEC JacPDstandardNth31g13;
+ CCTK_REAL_VEC JacPDstandardNth31g22;
+ CCTK_REAL_VEC JacPDstandardNth31g23;
+ CCTK_REAL_VEC JacPDstandardNth31g33;
+ CCTK_REAL_VEC JacPDstandardNth32g11;
+ CCTK_REAL_VEC JacPDstandardNth32g12;
+ CCTK_REAL_VEC JacPDstandardNth32g13;
+ CCTK_REAL_VEC JacPDstandardNth32g22;
+ CCTK_REAL_VEC JacPDstandardNth32g23;
+ CCTK_REAL_VEC JacPDstandardNth32g33;
+ CCTK_REAL_VEC JacPDstandardNth33alpha;
+ CCTK_REAL_VEC JacPDstandardNth33g11;
+ CCTK_REAL_VEC JacPDstandardNth33g12;
+ CCTK_REAL_VEC JacPDstandardNth33g22;
+ CCTK_REAL_VEC JacPDstandardNth3alpha;
+ CCTK_REAL_VEC JacPDstandardNth3beta1;
+ CCTK_REAL_VEC JacPDstandardNth3beta2;
+ CCTK_REAL_VEC JacPDstandardNth3beta3;
+ CCTK_REAL_VEC JacPDstandardNth3g11;
+ CCTK_REAL_VEC JacPDstandardNth3g12;
+ CCTK_REAL_VEC JacPDstandardNth3g13;
+ CCTK_REAL_VEC JacPDstandardNth3g22;
+ CCTK_REAL_VEC JacPDstandardNth3g23;
+ CCTK_REAL_VEC JacPDstandardNth3g33;
+ CCTK_REAL_VEC JacPDstandardNth3K11;
+ CCTK_REAL_VEC JacPDstandardNth3K12;
+ CCTK_REAL_VEC JacPDstandardNth3K13;
+ CCTK_REAL_VEC JacPDstandardNth3K22;
+ CCTK_REAL_VEC JacPDstandardNth3K23;
+ CCTK_REAL_VEC JacPDstandardNth3K33;
+
+ 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)));
+
+ JacPDstandardNth1g11 =
+ kmadd(J11L,PDstandardNth1g11,kmadd(J21L,PDstandardNth2g11,kmul(J31L,PDstandardNth3g11)));
+
+ JacPDstandardNth1g12 =
+ kmadd(J11L,PDstandardNth1g12,kmadd(J21L,PDstandardNth2g12,kmul(J31L,PDstandardNth3g12)));
+
+ JacPDstandardNth1g13 =
+ kmadd(J11L,PDstandardNth1g13,kmadd(J21L,PDstandardNth2g13,kmul(J31L,PDstandardNth3g13)));
+
+ JacPDstandardNth1g22 =
+ kmadd(J11L,PDstandardNth1g22,kmadd(J21L,PDstandardNth2g22,kmul(J31L,PDstandardNth3g22)));
+
+ JacPDstandardNth1g23 =
+ kmadd(J11L,PDstandardNth1g23,kmadd(J21L,PDstandardNth2g23,kmul(J31L,PDstandardNth3g23)));
+
+ JacPDstandardNth1g33 =
+ kmadd(J11L,PDstandardNth1g33,kmadd(J21L,PDstandardNth2g33,kmul(J31L,PDstandardNth3g33)));
+
+ JacPDstandardNth1K11 =
+ kmadd(J11L,PDstandardNth1K11,kmadd(J21L,PDstandardNth2K11,kmul(J31L,PDstandardNth3K11)));
+
+ JacPDstandardNth1K12 =
+ kmadd(J11L,PDstandardNth1K12,kmadd(J21L,PDstandardNth2K12,kmul(J31L,PDstandardNth3K12)));
+
+ JacPDstandardNth1K13 =
+ kmadd(J11L,PDstandardNth1K13,kmadd(J21L,PDstandardNth2K13,kmul(J31L,PDstandardNth3K13)));
+
+ JacPDstandardNth1K22 =
+ kmadd(J11L,PDstandardNth1K22,kmadd(J21L,PDstandardNth2K22,kmul(J31L,PDstandardNth3K22)));
+
+ JacPDstandardNth1K23 =
+ kmadd(J11L,PDstandardNth1K23,kmadd(J21L,PDstandardNth2K23,kmul(J31L,PDstandardNth3K23)));
+
+ JacPDstandardNth1K33 =
+ kmadd(J11L,PDstandardNth1K33,kmadd(J21L,PDstandardNth2K33,kmul(J31L,PDstandardNth3K33)));
+
+ 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)));
+
+ JacPDstandardNth2g11 =
+ kmadd(J12L,PDstandardNth1g11,kmadd(J22L,PDstandardNth2g11,kmul(J32L,PDstandardNth3g11)));
+
+ JacPDstandardNth2g12 =
+ kmadd(J12L,PDstandardNth1g12,kmadd(J22L,PDstandardNth2g12,kmul(J32L,PDstandardNth3g12)));
+
+ JacPDstandardNth2g13 =
+ kmadd(J12L,PDstandardNth1g13,kmadd(J22L,PDstandardNth2g13,kmul(J32L,PDstandardNth3g13)));
+
+ JacPDstandardNth2g22 =
+ kmadd(J12L,PDstandardNth1g22,kmadd(J22L,PDstandardNth2g22,kmul(J32L,PDstandardNth3g22)));
+
+ JacPDstandardNth2g23 =
+ kmadd(J12L,PDstandardNth1g23,kmadd(J22L,PDstandardNth2g23,kmul(J32L,PDstandardNth3g23)));
+
+ JacPDstandardNth2g33 =
+ kmadd(J12L,PDstandardNth1g33,kmadd(J22L,PDstandardNth2g33,kmul(J32L,PDstandardNth3g33)));
+
+ JacPDstandardNth2K11 =
+ kmadd(J12L,PDstandardNth1K11,kmadd(J22L,PDstandardNth2K11,kmul(J32L,PDstandardNth3K11)));
+
+ JacPDstandardNth2K12 =
+ kmadd(J12L,PDstandardNth1K12,kmadd(J22L,PDstandardNth2K12,kmul(J32L,PDstandardNth3K12)));
+
+ JacPDstandardNth2K13 =
+ kmadd(J12L,PDstandardNth1K13,kmadd(J22L,PDstandardNth2K13,kmul(J32L,PDstandardNth3K13)));
+
+ JacPDstandardNth2K22 =
+ kmadd(J12L,PDstandardNth1K22,kmadd(J22L,PDstandardNth2K22,kmul(J32L,PDstandardNth3K22)));
+
+ JacPDstandardNth2K23 =
+ kmadd(J12L,PDstandardNth1K23,kmadd(J22L,PDstandardNth2K23,kmul(J32L,PDstandardNth3K23)));
+
+ JacPDstandardNth2K33 =
+ kmadd(J12L,PDstandardNth1K33,kmadd(J22L,PDstandardNth2K33,kmul(J32L,PDstandardNth3K33)));
+
+ 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)));
+
+ JacPDstandardNth3g11 =
+ kmadd(J13L,PDstandardNth1g11,kmadd(J23L,PDstandardNth2g11,kmul(J33L,PDstandardNth3g11)));
+
+ JacPDstandardNth3g12 =
+ kmadd(J13L,PDstandardNth1g12,kmadd(J23L,PDstandardNth2g12,kmul(J33L,PDstandardNth3g12)));
+
+ JacPDstandardNth3g13 =
+ kmadd(J13L,PDstandardNth1g13,kmadd(J23L,PDstandardNth2g13,kmul(J33L,PDstandardNth3g13)));
+
+ JacPDstandardNth3g22 =
+ kmadd(J13L,PDstandardNth1g22,kmadd(J23L,PDstandardNth2g22,kmul(J33L,PDstandardNth3g22)));
+
+ JacPDstandardNth3g23 =
+ kmadd(J13L,PDstandardNth1g23,kmadd(J23L,PDstandardNth2g23,kmul(J33L,PDstandardNth3g23)));
+
+ JacPDstandardNth3g33 =
+ kmadd(J13L,PDstandardNth1g33,kmadd(J23L,PDstandardNth2g33,kmul(J33L,PDstandardNth3g33)));
+
+ JacPDstandardNth3K11 =
+ kmadd(J13L,PDstandardNth1K11,kmadd(J23L,PDstandardNth2K11,kmul(J33L,PDstandardNth3K11)));
+
+ JacPDstandardNth3K12 =
+ kmadd(J13L,PDstandardNth1K12,kmadd(J23L,PDstandardNth2K12,kmul(J33L,PDstandardNth3K12)));
+
+ JacPDstandardNth3K13 =
+ kmadd(J13L,PDstandardNth1K13,kmadd(J23L,PDstandardNth2K13,kmul(J33L,PDstandardNth3K13)));
+
+ JacPDstandardNth3K22 =
+ kmadd(J13L,PDstandardNth1K22,kmadd(J23L,PDstandardNth2K22,kmul(J33L,PDstandardNth3K22)));
+
+ JacPDstandardNth3K23 =
+ kmadd(J13L,PDstandardNth1K23,kmadd(J23L,PDstandardNth2K23,kmul(J33L,PDstandardNth3K23)));
+
+ JacPDstandardNth3K33 =
+ kmadd(J13L,PDstandardNth1K33,kmadd(J23L,PDstandardNth2K33,kmul(J33L,PDstandardNth3K33)));
+
+ 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))))))));
+
+ JacPDstandardNth11g22 =
+ kmadd(dJ111L,PDstandardNth1g22,kmadd(dJ211L,PDstandardNth2g22,kmadd(dJ311L,PDstandardNth3g22,kmadd(PDstandardNth11g22,SQR(J11L),kmadd(PDstandardNth22g22,SQR(J21L),kmadd(PDstandardNth33g22,SQR(J31L),kmul(kmadd(J11L,kmadd(J21L,PDstandardNth12g22,kmul(J31L,PDstandardNth13g22)),kmul(J21L,kmul(J31L,PDstandardNth23g22))),ToReal(2))))))));
+
+ JacPDstandardNth11g23 =
+ kmadd(dJ111L,PDstandardNth1g23,kmadd(dJ211L,PDstandardNth2g23,kmadd(dJ311L,PDstandardNth3g23,kmadd(PDstandardNth11g23,SQR(J11L),kmadd(PDstandardNth22g23,SQR(J21L),kmadd(PDstandardNth33g23,SQR(J31L),kmul(kmadd(J11L,kmadd(J21L,PDstandardNth12g23,kmul(J31L,PDstandardNth13g23)),kmul(J21L,kmul(J31L,PDstandardNth23g23))),ToReal(2))))))));
+
+ JacPDstandardNth11g33 =
+ kmadd(dJ111L,PDstandardNth1g33,kmadd(dJ211L,PDstandardNth2g33,kmadd(dJ311L,PDstandardNth3g33,kmadd(PDstandardNth11g33,SQR(J11L),kmadd(PDstandardNth22g33,SQR(J21L),kmadd(PDstandardNth33g33,SQR(J31L),kmul(kmadd(J11L,kmadd(J21L,PDstandardNth12g33,kmul(J31L,PDstandardNth13g33)),kmul(J21L,kmul(J31L,PDstandardNth23g33))),ToReal(2))))))));
+
+ 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))))))));
+
+ JacPDstandardNth22g11 =
+ kmadd(dJ122L,PDstandardNth1g11,kmadd(dJ222L,PDstandardNth2g11,kmadd(dJ322L,PDstandardNth3g11,kmadd(PDstandardNth11g11,SQR(J12L),kmadd(PDstandardNth22g11,SQR(J22L),kmadd(PDstandardNth33g11,SQR(J32L),kmul(kmadd(J12L,kmadd(J22L,PDstandardNth12g11,kmul(J32L,PDstandardNth13g11)),kmul(J22L,kmul(J32L,PDstandardNth23g11))),ToReal(2))))))));
+
+ JacPDstandardNth22g13 =
+ kmadd(dJ122L,PDstandardNth1g13,kmadd(dJ222L,PDstandardNth2g13,kmadd(dJ322L,PDstandardNth3g13,kmadd(PDstandardNth11g13,SQR(J12L),kmadd(PDstandardNth22g13,SQR(J22L),kmadd(PDstandardNth33g13,SQR(J32L),kmul(kmadd(J12L,kmadd(J22L,PDstandardNth12g13,kmul(J32L,PDstandardNth13g13)),kmul(J22L,kmul(J32L,PDstandardNth23g13))),ToReal(2))))))));
+
+ JacPDstandardNth22g33 =
+ kmadd(dJ122L,PDstandardNth1g33,kmadd(dJ222L,PDstandardNth2g33,kmadd(dJ322L,PDstandardNth3g33,kmadd(PDstandardNth11g33,SQR(J12L),kmadd(PDstandardNth22g33,SQR(J22L),kmadd(PDstandardNth33g33,SQR(J32L),kmul(kmadd(J12L,kmadd(J22L,PDstandardNth12g33,kmul(J32L,PDstandardNth13g33)),kmul(J22L,kmul(J32L,PDstandardNth23g33))),ToReal(2))))))));
+
+ 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))))))));
+
+ JacPDstandardNth33g11 =
+ kmadd(dJ133L,PDstandardNth1g11,kmadd(dJ233L,PDstandardNth2g11,kmadd(dJ333L,PDstandardNth3g11,kmadd(PDstandardNth11g11,SQR(J13L),kmadd(PDstandardNth22g11,SQR(J23L),kmadd(PDstandardNth33g11,SQR(J33L),kmul(kmadd(J13L,kmadd(J23L,PDstandardNth12g11,kmul(J33L,PDstandardNth13g11)),kmul(J23L,kmul(J33L,PDstandardNth23g11))),ToReal(2))))))));
+
+ JacPDstandardNth33g12 =
+ kmadd(dJ133L,PDstandardNth1g12,kmadd(dJ233L,PDstandardNth2g12,kmadd(dJ333L,PDstandardNth3g12,kmadd(PDstandardNth11g12,SQR(J13L),kmadd(PDstandardNth22g12,SQR(J23L),kmadd(PDstandardNth33g12,SQR(J33L),kmul(kmadd(J13L,kmadd(J23L,PDstandardNth12g12,kmul(J33L,PDstandardNth13g12)),kmul(J23L,kmul(J33L,PDstandardNth23g12))),ToReal(2))))))));
+
+ JacPDstandardNth33g22 =
+ kmadd(dJ133L,PDstandardNth1g22,kmadd(dJ233L,PDstandardNth2g22,kmadd(dJ333L,PDstandardNth3g22,kmadd(PDstandardNth11g22,SQR(J13L),kmadd(PDstandardNth22g22,SQR(J23L),kmadd(PDstandardNth33g22,SQR(J33L),kmul(kmadd(J13L,kmadd(J23L,PDstandardNth12g22,kmul(J33L,PDstandardNth13g22)),kmul(J23L,kmul(J33L,PDstandardNth23g22))),ToReal(2))))))));
+
+ 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)))))));
+
+ JacPDstandardNth12g11 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11g11,kmadd(J21L,PDstandardNth12g11,kmul(J31L,PDstandardNth13g11))),kmadd(J11L,kmadd(J22L,PDstandardNth12g11,kmul(J32L,PDstandardNth13g11)),kmadd(dJ112L,PDstandardNth1g11,kmadd(J22L,kmadd(J21L,PDstandardNth22g11,kmul(J31L,PDstandardNth23g11)),kmadd(dJ212L,PDstandardNth2g11,kmadd(J32L,kmadd(J21L,PDstandardNth23g11,kmul(J31L,PDstandardNth33g11)),kmul(dJ312L,PDstandardNth3g11)))))));
+
+ JacPDstandardNth12g12 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11g12,kmadd(J21L,PDstandardNth12g12,kmul(J31L,PDstandardNth13g12))),kmadd(J11L,kmadd(J22L,PDstandardNth12g12,kmul(J32L,PDstandardNth13g12)),kmadd(dJ112L,PDstandardNth1g12,kmadd(J22L,kmadd(J21L,PDstandardNth22g12,kmul(J31L,PDstandardNth23g12)),kmadd(dJ212L,PDstandardNth2g12,kmadd(J32L,kmadd(J21L,PDstandardNth23g12,kmul(J31L,PDstandardNth33g12)),kmul(dJ312L,PDstandardNth3g12)))))));
+
+ JacPDstandardNth12g13 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11g13,kmadd(J21L,PDstandardNth12g13,kmul(J31L,PDstandardNth13g13))),kmadd(J11L,kmadd(J22L,PDstandardNth12g13,kmul(J32L,PDstandardNth13g13)),kmadd(dJ112L,PDstandardNth1g13,kmadd(J22L,kmadd(J21L,PDstandardNth22g13,kmul(J31L,PDstandardNth23g13)),kmadd(dJ212L,PDstandardNth2g13,kmadd(J32L,kmadd(J21L,PDstandardNth23g13,kmul(J31L,PDstandardNth33g13)),kmul(dJ312L,PDstandardNth3g13)))))));
+
+ JacPDstandardNth12g22 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11g22,kmadd(J21L,PDstandardNth12g22,kmul(J31L,PDstandardNth13g22))),kmadd(J11L,kmadd(J22L,PDstandardNth12g22,kmul(J32L,PDstandardNth13g22)),kmadd(dJ112L,PDstandardNth1g22,kmadd(J22L,kmadd(J21L,PDstandardNth22g22,kmul(J31L,PDstandardNth23g22)),kmadd(dJ212L,PDstandardNth2g22,kmadd(J32L,kmadd(J21L,PDstandardNth23g22,kmul(J31L,PDstandardNth33g22)),kmul(dJ312L,PDstandardNth3g22)))))));
+
+ JacPDstandardNth12g23 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11g23,kmadd(J21L,PDstandardNth12g23,kmul(J31L,PDstandardNth13g23))),kmadd(J11L,kmadd(J22L,PDstandardNth12g23,kmul(J32L,PDstandardNth13g23)),kmadd(dJ112L,PDstandardNth1g23,kmadd(J22L,kmadd(J21L,PDstandardNth22g23,kmul(J31L,PDstandardNth23g23)),kmadd(dJ212L,PDstandardNth2g23,kmadd(J32L,kmadd(J21L,PDstandardNth23g23,kmul(J31L,PDstandardNth33g23)),kmul(dJ312L,PDstandardNth3g23)))))));
+
+ JacPDstandardNth12g33 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11g33,kmadd(J21L,PDstandardNth12g33,kmul(J31L,PDstandardNth13g33))),kmadd(J11L,kmadd(J22L,PDstandardNth12g33,kmul(J32L,PDstandardNth13g33)),kmadd(dJ112L,PDstandardNth1g33,kmadd(J22L,kmadd(J21L,PDstandardNth22g33,kmul(J31L,PDstandardNth23g33)),kmadd(dJ212L,PDstandardNth2g33,kmadd(J32L,kmadd(J21L,PDstandardNth23g33,kmul(J31L,PDstandardNth33g33)),kmul(dJ312L,PDstandardNth3g33)))))));
+
+ 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)))))));
+
+ JacPDstandardNth13g11 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11g11,kmadd(J21L,PDstandardNth12g11,kmul(J31L,PDstandardNth13g11))),kmadd(J11L,kmadd(J23L,PDstandardNth12g11,kmul(J33L,PDstandardNth13g11)),kmadd(dJ113L,PDstandardNth1g11,kmadd(J23L,kmadd(J21L,PDstandardNth22g11,kmul(J31L,PDstandardNth23g11)),kmadd(dJ213L,PDstandardNth2g11,kmadd(J33L,kmadd(J21L,PDstandardNth23g11,kmul(J31L,PDstandardNth33g11)),kmul(dJ313L,PDstandardNth3g11)))))));
+
+ JacPDstandardNth13g12 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11g12,kmadd(J21L,PDstandardNth12g12,kmul(J31L,PDstandardNth13g12))),kmadd(J11L,kmadd(J23L,PDstandardNth12g12,kmul(J33L,PDstandardNth13g12)),kmadd(dJ113L,PDstandardNth1g12,kmadd(J23L,kmadd(J21L,PDstandardNth22g12,kmul(J31L,PDstandardNth23g12)),kmadd(dJ213L,PDstandardNth2g12,kmadd(J33L,kmadd(J21L,PDstandardNth23g12,kmul(J31L,PDstandardNth33g12)),kmul(dJ313L,PDstandardNth3g12)))))));
+
+ JacPDstandardNth13g13 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11g13,kmadd(J21L,PDstandardNth12g13,kmul(J31L,PDstandardNth13g13))),kmadd(J11L,kmadd(J23L,PDstandardNth12g13,kmul(J33L,PDstandardNth13g13)),kmadd(dJ113L,PDstandardNth1g13,kmadd(J23L,kmadd(J21L,PDstandardNth22g13,kmul(J31L,PDstandardNth23g13)),kmadd(dJ213L,PDstandardNth2g13,kmadd(J33L,kmadd(J21L,PDstandardNth23g13,kmul(J31L,PDstandardNth33g13)),kmul(dJ313L,PDstandardNth3g13)))))));
+
+ JacPDstandardNth13g22 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11g22,kmadd(J21L,PDstandardNth12g22,kmul(J31L,PDstandardNth13g22))),kmadd(J11L,kmadd(J23L,PDstandardNth12g22,kmul(J33L,PDstandardNth13g22)),kmadd(dJ113L,PDstandardNth1g22,kmadd(J23L,kmadd(J21L,PDstandardNth22g22,kmul(J31L,PDstandardNth23g22)),kmadd(dJ213L,PDstandardNth2g22,kmadd(J33L,kmadd(J21L,PDstandardNth23g22,kmul(J31L,PDstandardNth33g22)),kmul(dJ313L,PDstandardNth3g22)))))));
+
+ JacPDstandardNth13g23 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11g23,kmadd(J21L,PDstandardNth12g23,kmul(J31L,PDstandardNth13g23))),kmadd(J11L,kmadd(J23L,PDstandardNth12g23,kmul(J33L,PDstandardNth13g23)),kmadd(dJ113L,PDstandardNth1g23,kmadd(J23L,kmadd(J21L,PDstandardNth22g23,kmul(J31L,PDstandardNth23g23)),kmadd(dJ213L,PDstandardNth2g23,kmadd(J33L,kmadd(J21L,PDstandardNth23g23,kmul(J31L,PDstandardNth33g23)),kmul(dJ313L,PDstandardNth3g23)))))));
+
+ JacPDstandardNth13g33 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11g33,kmadd(J21L,PDstandardNth12g33,kmul(J31L,PDstandardNth13g33))),kmadd(J11L,kmadd(J23L,PDstandardNth12g33,kmul(J33L,PDstandardNth13g33)),kmadd(dJ113L,PDstandardNth1g33,kmadd(J23L,kmadd(J21L,PDstandardNth22g33,kmul(J31L,PDstandardNth23g33)),kmadd(dJ213L,PDstandardNth2g33,kmadd(J33L,kmadd(J21L,PDstandardNth23g33,kmul(J31L,PDstandardNth33g33)),kmul(dJ313L,PDstandardNth3g33)))))));
+
+ JacPDstandardNth21g11 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11g11,kmadd(J21L,PDstandardNth12g11,kmul(J31L,PDstandardNth13g11))),kmadd(J11L,kmadd(J22L,PDstandardNth12g11,kmul(J32L,PDstandardNth13g11)),kmadd(dJ112L,PDstandardNth1g11,kmadd(J22L,kmadd(J21L,PDstandardNth22g11,kmul(J31L,PDstandardNth23g11)),kmadd(dJ212L,PDstandardNth2g11,kmadd(J32L,kmadd(J21L,PDstandardNth23g11,kmul(J31L,PDstandardNth33g11)),kmul(dJ312L,PDstandardNth3g11)))))));
+
+ JacPDstandardNth21g12 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11g12,kmadd(J21L,PDstandardNth12g12,kmul(J31L,PDstandardNth13g12))),kmadd(J11L,kmadd(J22L,PDstandardNth12g12,kmul(J32L,PDstandardNth13g12)),kmadd(dJ112L,PDstandardNth1g12,kmadd(J22L,kmadd(J21L,PDstandardNth22g12,kmul(J31L,PDstandardNth23g12)),kmadd(dJ212L,PDstandardNth2g12,kmadd(J32L,kmadd(J21L,PDstandardNth23g12,kmul(J31L,PDstandardNth33g12)),kmul(dJ312L,PDstandardNth3g12)))))));
+
+ JacPDstandardNth21g13 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11g13,kmadd(J21L,PDstandardNth12g13,kmul(J31L,PDstandardNth13g13))),kmadd(J11L,kmadd(J22L,PDstandardNth12g13,kmul(J32L,PDstandardNth13g13)),kmadd(dJ112L,PDstandardNth1g13,kmadd(J22L,kmadd(J21L,PDstandardNth22g13,kmul(J31L,PDstandardNth23g13)),kmadd(dJ212L,PDstandardNth2g13,kmadd(J32L,kmadd(J21L,PDstandardNth23g13,kmul(J31L,PDstandardNth33g13)),kmul(dJ312L,PDstandardNth3g13)))))));
+
+ JacPDstandardNth21g22 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11g22,kmadd(J21L,PDstandardNth12g22,kmul(J31L,PDstandardNth13g22))),kmadd(J11L,kmadd(J22L,PDstandardNth12g22,kmul(J32L,PDstandardNth13g22)),kmadd(dJ112L,PDstandardNth1g22,kmadd(J22L,kmadd(J21L,PDstandardNth22g22,kmul(J31L,PDstandardNth23g22)),kmadd(dJ212L,PDstandardNth2g22,kmadd(J32L,kmadd(J21L,PDstandardNth23g22,kmul(J31L,PDstandardNth33g22)),kmul(dJ312L,PDstandardNth3g22)))))));
+
+ JacPDstandardNth21g23 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11g23,kmadd(J21L,PDstandardNth12g23,kmul(J31L,PDstandardNth13g23))),kmadd(J11L,kmadd(J22L,PDstandardNth12g23,kmul(J32L,PDstandardNth13g23)),kmadd(dJ112L,PDstandardNth1g23,kmadd(J22L,kmadd(J21L,PDstandardNth22g23,kmul(J31L,PDstandardNth23g23)),kmadd(dJ212L,PDstandardNth2g23,kmadd(J32L,kmadd(J21L,PDstandardNth23g23,kmul(J31L,PDstandardNth33g23)),kmul(dJ312L,PDstandardNth3g23)))))));
+
+ JacPDstandardNth21g33 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11g33,kmadd(J21L,PDstandardNth12g33,kmul(J31L,PDstandardNth13g33))),kmadd(J11L,kmadd(J22L,PDstandardNth12g33,kmul(J32L,PDstandardNth13g33)),kmadd(dJ112L,PDstandardNth1g33,kmadd(J22L,kmadd(J21L,PDstandardNth22g33,kmul(J31L,PDstandardNth23g33)),kmadd(dJ212L,PDstandardNth2g33,kmadd(J32L,kmadd(J21L,PDstandardNth23g33,kmul(J31L,PDstandardNth33g33)),kmul(dJ312L,PDstandardNth3g33)))))));
+
+ 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)))))));
+
+ JacPDstandardNth23g11 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11g11,kmadd(J22L,PDstandardNth12g11,kmul(J32L,PDstandardNth13g11))),kmadd(J12L,kmadd(J23L,PDstandardNth12g11,kmul(J33L,PDstandardNth13g11)),kmadd(dJ123L,PDstandardNth1g11,kmadd(J23L,kmadd(J22L,PDstandardNth22g11,kmul(J32L,PDstandardNth23g11)),kmadd(dJ223L,PDstandardNth2g11,kmadd(J33L,kmadd(J22L,PDstandardNth23g11,kmul(J32L,PDstandardNth33g11)),kmul(dJ323L,PDstandardNth3g11)))))));
+
+ JacPDstandardNth23g12 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11g12,kmadd(J22L,PDstandardNth12g12,kmul(J32L,PDstandardNth13g12))),kmadd(J12L,kmadd(J23L,PDstandardNth12g12,kmul(J33L,PDstandardNth13g12)),kmadd(dJ123L,PDstandardNth1g12,kmadd(J23L,kmadd(J22L,PDstandardNth22g12,kmul(J32L,PDstandardNth23g12)),kmadd(dJ223L,PDstandardNth2g12,kmadd(J33L,kmadd(J22L,PDstandardNth23g12,kmul(J32L,PDstandardNth33g12)),kmul(dJ323L,PDstandardNth3g12)))))));
+
+ JacPDstandardNth23g13 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11g13,kmadd(J22L,PDstandardNth12g13,kmul(J32L,PDstandardNth13g13))),kmadd(J12L,kmadd(J23L,PDstandardNth12g13,kmul(J33L,PDstandardNth13g13)),kmadd(dJ123L,PDstandardNth1g13,kmadd(J23L,kmadd(J22L,PDstandardNth22g13,kmul(J32L,PDstandardNth23g13)),kmadd(dJ223L,PDstandardNth2g13,kmadd(J33L,kmadd(J22L,PDstandardNth23g13,kmul(J32L,PDstandardNth33g13)),kmul(dJ323L,PDstandardNth3g13)))))));
+
+ JacPDstandardNth23g22 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11g22,kmadd(J22L,PDstandardNth12g22,kmul(J32L,PDstandardNth13g22))),kmadd(J12L,kmadd(J23L,PDstandardNth12g22,kmul(J33L,PDstandardNth13g22)),kmadd(dJ123L,PDstandardNth1g22,kmadd(J23L,kmadd(J22L,PDstandardNth22g22,kmul(J32L,PDstandardNth23g22)),kmadd(dJ223L,PDstandardNth2g22,kmadd(J33L,kmadd(J22L,PDstandardNth23g22,kmul(J32L,PDstandardNth33g22)),kmul(dJ323L,PDstandardNth3g22)))))));
+
+ JacPDstandardNth23g23 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11g23,kmadd(J22L,PDstandardNth12g23,kmul(J32L,PDstandardNth13g23))),kmadd(J12L,kmadd(J23L,PDstandardNth12g23,kmul(J33L,PDstandardNth13g23)),kmadd(dJ123L,PDstandardNth1g23,kmadd(J23L,kmadd(J22L,PDstandardNth22g23,kmul(J32L,PDstandardNth23g23)),kmadd(dJ223L,PDstandardNth2g23,kmadd(J33L,kmadd(J22L,PDstandardNth23g23,kmul(J32L,PDstandardNth33g23)),kmul(dJ323L,PDstandardNth3g23)))))));
+
+ JacPDstandardNth23g33 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11g33,kmadd(J22L,PDstandardNth12g33,kmul(J32L,PDstandardNth13g33))),kmadd(J12L,kmadd(J23L,PDstandardNth12g33,kmul(J33L,PDstandardNth13g33)),kmadd(dJ123L,PDstandardNth1g33,kmadd(J23L,kmadd(J22L,PDstandardNth22g33,kmul(J32L,PDstandardNth23g33)),kmadd(dJ223L,PDstandardNth2g33,kmadd(J33L,kmadd(J22L,PDstandardNth23g33,kmul(J32L,PDstandardNth33g33)),kmul(dJ323L,PDstandardNth3g33)))))));
+
+ JacPDstandardNth31g11 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11g11,kmadd(J21L,PDstandardNth12g11,kmul(J31L,PDstandardNth13g11))),kmadd(J11L,kmadd(J23L,PDstandardNth12g11,kmul(J33L,PDstandardNth13g11)),kmadd(dJ113L,PDstandardNth1g11,kmadd(J23L,kmadd(J21L,PDstandardNth22g11,kmul(J31L,PDstandardNth23g11)),kmadd(dJ213L,PDstandardNth2g11,kmadd(J33L,kmadd(J21L,PDstandardNth23g11,kmul(J31L,PDstandardNth33g11)),kmul(dJ313L,PDstandardNth3g11)))))));
+
+ JacPDstandardNth31g12 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11g12,kmadd(J21L,PDstandardNth12g12,kmul(J31L,PDstandardNth13g12))),kmadd(J11L,kmadd(J23L,PDstandardNth12g12,kmul(J33L,PDstandardNth13g12)),kmadd(dJ113L,PDstandardNth1g12,kmadd(J23L,kmadd(J21L,PDstandardNth22g12,kmul(J31L,PDstandardNth23g12)),kmadd(dJ213L,PDstandardNth2g12,kmadd(J33L,kmadd(J21L,PDstandardNth23g12,kmul(J31L,PDstandardNth33g12)),kmul(dJ313L,PDstandardNth3g12)))))));
+
+ JacPDstandardNth31g13 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11g13,kmadd(J21L,PDstandardNth12g13,kmul(J31L,PDstandardNth13g13))),kmadd(J11L,kmadd(J23L,PDstandardNth12g13,kmul(J33L,PDstandardNth13g13)),kmadd(dJ113L,PDstandardNth1g13,kmadd(J23L,kmadd(J21L,PDstandardNth22g13,kmul(J31L,PDstandardNth23g13)),kmadd(dJ213L,PDstandardNth2g13,kmadd(J33L,kmadd(J21L,PDstandardNth23g13,kmul(J31L,PDstandardNth33g13)),kmul(dJ313L,PDstandardNth3g13)))))));
+
+ JacPDstandardNth31g22 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11g22,kmadd(J21L,PDstandardNth12g22,kmul(J31L,PDstandardNth13g22))),kmadd(J11L,kmadd(J23L,PDstandardNth12g22,kmul(J33L,PDstandardNth13g22)),kmadd(dJ113L,PDstandardNth1g22,kmadd(J23L,kmadd(J21L,PDstandardNth22g22,kmul(J31L,PDstandardNth23g22)),kmadd(dJ213L,PDstandardNth2g22,kmadd(J33L,kmadd(J21L,PDstandardNth23g22,kmul(J31L,PDstandardNth33g22)),kmul(dJ313L,PDstandardNth3g22)))))));
+
+ JacPDstandardNth31g23 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11g23,kmadd(J21L,PDstandardNth12g23,kmul(J31L,PDstandardNth13g23))),kmadd(J11L,kmadd(J23L,PDstandardNth12g23,kmul(J33L,PDstandardNth13g23)),kmadd(dJ113L,PDstandardNth1g23,kmadd(J23L,kmadd(J21L,PDstandardNth22g23,kmul(J31L,PDstandardNth23g23)),kmadd(dJ213L,PDstandardNth2g23,kmadd(J33L,kmadd(J21L,PDstandardNth23g23,kmul(J31L,PDstandardNth33g23)),kmul(dJ313L,PDstandardNth3g23)))))));
+
+ JacPDstandardNth31g33 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11g33,kmadd(J21L,PDstandardNth12g33,kmul(J31L,PDstandardNth13g33))),kmadd(J11L,kmadd(J23L,PDstandardNth12g33,kmul(J33L,PDstandardNth13g33)),kmadd(dJ113L,PDstandardNth1g33,kmadd(J23L,kmadd(J21L,PDstandardNth22g33,kmul(J31L,PDstandardNth23g33)),kmadd(dJ213L,PDstandardNth2g33,kmadd(J33L,kmadd(J21L,PDstandardNth23g33,kmul(J31L,PDstandardNth33g33)),kmul(dJ313L,PDstandardNth3g33)))))));
+
+ JacPDstandardNth32g11 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11g11,kmadd(J22L,PDstandardNth12g11,kmul(J32L,PDstandardNth13g11))),kmadd(J12L,kmadd(J23L,PDstandardNth12g11,kmul(J33L,PDstandardNth13g11)),kmadd(dJ123L,PDstandardNth1g11,kmadd(J23L,kmadd(J22L,PDstandardNth22g11,kmul(J32L,PDstandardNth23g11)),kmadd(dJ223L,PDstandardNth2g11,kmadd(J33L,kmadd(J22L,PDstandardNth23g11,kmul(J32L,PDstandardNth33g11)),kmul(dJ323L,PDstandardNth3g11)))))));
+
+ JacPDstandardNth32g12 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11g12,kmadd(J22L,PDstandardNth12g12,kmul(J32L,PDstandardNth13g12))),kmadd(J12L,kmadd(J23L,PDstandardNth12g12,kmul(J33L,PDstandardNth13g12)),kmadd(dJ123L,PDstandardNth1g12,kmadd(J23L,kmadd(J22L,PDstandardNth22g12,kmul(J32L,PDstandardNth23g12)),kmadd(dJ223L,PDstandardNth2g12,kmadd(J33L,kmadd(J22L,PDstandardNth23g12,kmul(J32L,PDstandardNth33g12)),kmul(dJ323L,PDstandardNth3g12)))))));
+
+ JacPDstandardNth32g13 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11g13,kmadd(J22L,PDstandardNth12g13,kmul(J32L,PDstandardNth13g13))),kmadd(J12L,kmadd(J23L,PDstandardNth12g13,kmul(J33L,PDstandardNth13g13)),kmadd(dJ123L,PDstandardNth1g13,kmadd(J23L,kmadd(J22L,PDstandardNth22g13,kmul(J32L,PDstandardNth23g13)),kmadd(dJ223L,PDstandardNth2g13,kmadd(J33L,kmadd(J22L,PDstandardNth23g13,kmul(J32L,PDstandardNth33g13)),kmul(dJ323L,PDstandardNth3g13)))))));
+
+ JacPDstandardNth32g22 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11g22,kmadd(J22L,PDstandardNth12g22,kmul(J32L,PDstandardNth13g22))),kmadd(J12L,kmadd(J23L,PDstandardNth12g22,kmul(J33L,PDstandardNth13g22)),kmadd(dJ123L,PDstandardNth1g22,kmadd(J23L,kmadd(J22L,PDstandardNth22g22,kmul(J32L,PDstandardNth23g22)),kmadd(dJ223L,PDstandardNth2g22,kmadd(J33L,kmadd(J22L,PDstandardNth23g22,kmul(J32L,PDstandardNth33g22)),kmul(dJ323L,PDstandardNth3g22)))))));
+
+ JacPDstandardNth32g23 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11g23,kmadd(J22L,PDstandardNth12g23,kmul(J32L,PDstandardNth13g23))),kmadd(J12L,kmadd(J23L,PDstandardNth12g23,kmul(J33L,PDstandardNth13g23)),kmadd(dJ123L,PDstandardNth1g23,kmadd(J23L,kmadd(J22L,PDstandardNth22g23,kmul(J32L,PDstandardNth23g23)),kmadd(dJ223L,PDstandardNth2g23,kmadd(J33L,kmadd(J22L,PDstandardNth23g23,kmul(J32L,PDstandardNth33g23)),kmul(dJ323L,PDstandardNth3g23)))))));
+
+ JacPDstandardNth32g33 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11g33,kmadd(J22L,PDstandardNth12g33,kmul(J32L,PDstandardNth13g33))),kmadd(J12L,kmadd(J23L,PDstandardNth12g33,kmul(J33L,PDstandardNth13g33)),kmadd(dJ123L,PDstandardNth1g33,kmadd(J23L,kmadd(J22L,PDstandardNth22g33,kmul(J32L,PDstandardNth23g33)),kmadd(dJ223L,PDstandardNth2g33,kmadd(J33L,kmadd(J22L,PDstandardNth23g33,kmul(J32L,PDstandardNth33g33)),kmul(dJ323L,PDstandardNth3g33)))))));
+ }
+ else
+ {
+ JacPDstandardNth1alpha = PDstandardNth1alpha;
+
+ JacPDstandardNth1beta1 = PDstandardNth1beta1;
+
+ JacPDstandardNth1beta2 = PDstandardNth1beta2;
+
+ JacPDstandardNth1beta3 = PDstandardNth1beta3;
+
+ JacPDstandardNth1g11 = PDstandardNth1g11;
+
+ JacPDstandardNth1g12 = PDstandardNth1g12;
+
+ JacPDstandardNth1g13 = PDstandardNth1g13;
+
+ JacPDstandardNth1g22 = PDstandardNth1g22;
+
+ JacPDstandardNth1g23 = PDstandardNth1g23;
+
+ JacPDstandardNth1g33 = PDstandardNth1g33;
+
+ JacPDstandardNth1K11 = PDstandardNth1K11;
+
+ JacPDstandardNth1K12 = PDstandardNth1K12;
+
+ JacPDstandardNth1K13 = PDstandardNth1K13;
+
+ JacPDstandardNth1K22 = PDstandardNth1K22;
+
+ JacPDstandardNth1K23 = PDstandardNth1K23;
+
+ JacPDstandardNth1K33 = PDstandardNth1K33;
+
+ JacPDstandardNth2alpha = PDstandardNth2alpha;
+
+ JacPDstandardNth2beta1 = PDstandardNth2beta1;
+
+ JacPDstandardNth2beta2 = PDstandardNth2beta2;
+
+ JacPDstandardNth2beta3 = PDstandardNth2beta3;
+
+ JacPDstandardNth2g11 = PDstandardNth2g11;
+
+ JacPDstandardNth2g12 = PDstandardNth2g12;
+
+ JacPDstandardNth2g13 = PDstandardNth2g13;
+
+ JacPDstandardNth2g22 = PDstandardNth2g22;
+
+ JacPDstandardNth2g23 = PDstandardNth2g23;
+
+ JacPDstandardNth2g33 = PDstandardNth2g33;
+
+ JacPDstandardNth2K11 = PDstandardNth2K11;
+
+ JacPDstandardNth2K12 = PDstandardNth2K12;
+
+ JacPDstandardNth2K13 = PDstandardNth2K13;
+
+ JacPDstandardNth2K22 = PDstandardNth2K22;
+
+ JacPDstandardNth2K23 = PDstandardNth2K23;
+
+ JacPDstandardNth2K33 = PDstandardNth2K33;
+
+ JacPDstandardNth3alpha = PDstandardNth3alpha;
+
+ JacPDstandardNth3beta1 = PDstandardNth3beta1;
+
+ JacPDstandardNth3beta2 = PDstandardNth3beta2;
+
+ JacPDstandardNth3beta3 = PDstandardNth3beta3;
+
+ JacPDstandardNth3g11 = PDstandardNth3g11;
+
+ JacPDstandardNth3g12 = PDstandardNth3g12;
+
+ JacPDstandardNth3g13 = PDstandardNth3g13;
+
+ JacPDstandardNth3g22 = PDstandardNth3g22;
+
+ JacPDstandardNth3g23 = PDstandardNth3g23;
+
+ JacPDstandardNth3g33 = PDstandardNth3g33;
+
+ JacPDstandardNth3K11 = PDstandardNth3K11;
+
+ JacPDstandardNth3K12 = PDstandardNth3K12;
+
+ JacPDstandardNth3K13 = PDstandardNth3K13;
+
+ JacPDstandardNth3K22 = PDstandardNth3K22;
+
+ JacPDstandardNth3K23 = PDstandardNth3K23;
+
+ JacPDstandardNth3K33 = PDstandardNth3K33;
+
+ JacPDstandardNth11alpha = PDstandardNth11alpha;
+
+ JacPDstandardNth11g22 = PDstandardNth11g22;
+
+ JacPDstandardNth11g23 = PDstandardNth11g23;
+
+ JacPDstandardNth11g33 = PDstandardNth11g33;
+
+ JacPDstandardNth22alpha = PDstandardNth22alpha;
+
+ JacPDstandardNth22g11 = PDstandardNth22g11;
+
+ JacPDstandardNth22g13 = PDstandardNth22g13;
+
+ JacPDstandardNth22g33 = PDstandardNth22g33;
+
+ JacPDstandardNth33alpha = PDstandardNth33alpha;
+
+ JacPDstandardNth33g11 = PDstandardNth33g11;
+
+ JacPDstandardNth33g12 = PDstandardNth33g12;
+
+ JacPDstandardNth33g22 = PDstandardNth33g22;
+
+ JacPDstandardNth12alpha = PDstandardNth12alpha;
+
+ JacPDstandardNth12g11 = PDstandardNth12g11;
+
+ JacPDstandardNth12g12 = PDstandardNth12g12;
+
+ JacPDstandardNth12g13 = PDstandardNth12g13;
+
+ JacPDstandardNth12g22 = PDstandardNth12g22;
+
+ JacPDstandardNth12g23 = PDstandardNth12g23;
+
+ JacPDstandardNth12g33 = PDstandardNth12g33;
+
+ JacPDstandardNth13alpha = PDstandardNth13alpha;
+
+ JacPDstandardNth13g11 = PDstandardNth13g11;
+
+ JacPDstandardNth13g12 = PDstandardNth13g12;
+
+ JacPDstandardNth13g13 = PDstandardNth13g13;
+
+ JacPDstandardNth13g22 = PDstandardNth13g22;
+
+ JacPDstandardNth13g23 = PDstandardNth13g23;
+
+ JacPDstandardNth13g33 = PDstandardNth13g33;
+
+ JacPDstandardNth21g11 = PDstandardNth12g11;
+
+ JacPDstandardNth21g12 = PDstandardNth12g12;
+
+ JacPDstandardNth21g13 = PDstandardNth12g13;
+
+ JacPDstandardNth21g22 = PDstandardNth12g22;
+
+ JacPDstandardNth21g23 = PDstandardNth12g23;
+
+ JacPDstandardNth21g33 = PDstandardNth12g33;
+
+ JacPDstandardNth23alpha = PDstandardNth23alpha;
+
+ JacPDstandardNth23g11 = PDstandardNth23g11;
+
+ JacPDstandardNth23g12 = PDstandardNth23g12;
+
+ JacPDstandardNth23g13 = PDstandardNth23g13;
+
+ JacPDstandardNth23g22 = PDstandardNth23g22;
+
+ JacPDstandardNth23g23 = PDstandardNth23g23;
+
+ JacPDstandardNth23g33 = PDstandardNth23g33;
+
+ JacPDstandardNth31g11 = PDstandardNth13g11;
+
+ JacPDstandardNth31g12 = PDstandardNth13g12;
+
+ JacPDstandardNth31g13 = PDstandardNth13g13;
+
+ JacPDstandardNth31g22 = PDstandardNth13g22;
+
+ JacPDstandardNth31g23 = PDstandardNth13g23;
+
+ JacPDstandardNth31g33 = PDstandardNth13g33;
+
+ JacPDstandardNth32g11 = PDstandardNth23g11;
+
+ JacPDstandardNth32g12 = PDstandardNth23g12;
+
+ JacPDstandardNth32g13 = PDstandardNth23g13;
+
+ JacPDstandardNth32g22 = PDstandardNth23g22;
+
+ JacPDstandardNth32g23 = PDstandardNth23g23;
+
+ JacPDstandardNth32g33 = PDstandardNth23g33;
+ }
+
+ CCTK_REAL_VEC detg =
+ knmsub(g22L,SQR(g13L),knmsub(g11L,SQR(g23L),kmadd(g33L,kmsub(g11L,g22L,SQR(g12L)),kmul(g12L,kmul(g13L,kmul(g23L,ToReal(2)))))));
+
+ CCTK_REAL_VEC gu11 = kmul(INV(detg),kmsub(g22L,g33L,SQR(g23L)));
+
+ CCTK_REAL_VEC gu12 = kmul(INV(detg),kmsub(g13L,g23L,kmul(g12L,g33L)));
+
+ CCTK_REAL_VEC gu13 = kmul(INV(detg),kmsub(g12L,g23L,kmul(g13L,g22L)));
+
+ CCTK_REAL_VEC gu21 = kmul(INV(detg),kmsub(g13L,g23L,kmul(g12L,g33L)));
+
+ CCTK_REAL_VEC gu22 = kmul(INV(detg),kmsub(g11L,g33L,SQR(g13L)));
+
+ CCTK_REAL_VEC gu23 = kmul(INV(detg),kmsub(g12L,g13L,kmul(g11L,g23L)));
+
+ CCTK_REAL_VEC gu31 = kmul(INV(detg),kmsub(g12L,g23L,kmul(g13L,g22L)));
+
+ CCTK_REAL_VEC gu32 = kmul(INV(detg),kmsub(g12L,g13L,kmul(g11L,g23L)));
+
+ CCTK_REAL_VEC gu33 = kmul(INV(detg),kmsub(g11L,g22L,SQR(g12L)));
+
+ CCTK_REAL_VEC G111 =
+ kmul(ToReal(0.5),kmadd(gu11,JacPDstandardNth1g11,knmsub(gu12,JacPDstandardNth2g11,kmsub(kmadd(gu12,JacPDstandardNth1g12,kmul(gu13,JacPDstandardNth1g13)),ToReal(2),kmul(gu13,JacPDstandardNth3g11)))));
+
+ CCTK_REAL_VEC G211 =
+ kmul(ToReal(0.5),kmadd(gu21,JacPDstandardNth1g11,knmsub(gu22,JacPDstandardNth2g11,kmsub(kmadd(gu22,JacPDstandardNth1g12,kmul(gu23,JacPDstandardNth1g13)),ToReal(2),kmul(gu23,JacPDstandardNth3g11)))));
+
+ CCTK_REAL_VEC G311 =
+ kmul(ToReal(0.5),kmadd(gu31,JacPDstandardNth1g11,knmsub(gu32,JacPDstandardNth2g11,kmsub(kmadd(gu32,JacPDstandardNth1g12,kmul(gu33,JacPDstandardNth1g13)),ToReal(2),kmul(gu33,JacPDstandardNth3g11)))));
+
+ CCTK_REAL_VEC G112 =
+ kmul(kmadd(gu12,JacPDstandardNth1g22,kmadd(gu11,JacPDstandardNth2g11,kmul(gu13,kadd(JacPDstandardNth1g23,ksub(JacPDstandardNth2g13,JacPDstandardNth3g12))))),ToReal(0.5));
+
+ CCTK_REAL_VEC G212 =
+ kmul(kmadd(gu22,JacPDstandardNth1g22,kmadd(gu21,JacPDstandardNth2g11,kmul(gu23,kadd(JacPDstandardNth1g23,ksub(JacPDstandardNth2g13,JacPDstandardNth3g12))))),ToReal(0.5));
+
+ CCTK_REAL_VEC G312 =
+ kmul(kmadd(gu32,JacPDstandardNth1g22,kmadd(gu31,JacPDstandardNth2g11,kmul(gu33,kadd(JacPDstandardNth1g23,ksub(JacPDstandardNth2g13,JacPDstandardNth3g12))))),ToReal(0.5));
+
+ CCTK_REAL_VEC G113 =
+ kmul(kmadd(gu13,JacPDstandardNth1g33,kmadd(gu11,JacPDstandardNth3g11,kmul(gu12,kadd(JacPDstandardNth1g23,ksub(JacPDstandardNth3g12,JacPDstandardNth2g13))))),ToReal(0.5));
+
+ CCTK_REAL_VEC G213 =
+ kmul(kmadd(gu23,JacPDstandardNth1g33,kmadd(gu21,JacPDstandardNth3g11,kmul(gu22,kadd(JacPDstandardNth1g23,ksub(JacPDstandardNth3g12,JacPDstandardNth2g13))))),ToReal(0.5));
- CCTK_REAL gu11 = INV(detg)*(g22L*g33L - SQR(g23L));
+ CCTK_REAL_VEC G313 =
+ kmul(kmadd(gu33,JacPDstandardNth1g33,kmadd(gu31,JacPDstandardNth3g11,kmul(gu32,kadd(JacPDstandardNth1g23,ksub(JacPDstandardNth3g12,JacPDstandardNth2g13))))),ToReal(0.5));
- CCTK_REAL gu12 = (g13L*g23L - g12L*g33L)*INV(detg);
+ CCTK_REAL_VEC G122 =
+ kmul(ToReal(0.5),kmadd(gu12,JacPDstandardNth2g22,kmadd(gu11,kmsub(JacPDstandardNth2g12,ToReal(2),JacPDstandardNth1g22),kmul(gu13,kmsub(JacPDstandardNth2g23,ToReal(2),JacPDstandardNth3g22)))));
- CCTK_REAL gu13 = (-(g13L*g22L) + g12L*g23L)*INV(detg);
+ CCTK_REAL_VEC G222 =
+ kmul(ToReal(0.5),kmadd(gu22,JacPDstandardNth2g22,kmadd(gu21,kmsub(JacPDstandardNth2g12,ToReal(2),JacPDstandardNth1g22),kmul(gu23,kmsub(JacPDstandardNth2g23,ToReal(2),JacPDstandardNth3g22)))));
- CCTK_REAL gu21 = (g13L*g23L - g12L*g33L)*INV(detg);
+ CCTK_REAL_VEC G322 =
+ kmul(ToReal(0.5),kmadd(gu32,JacPDstandardNth2g22,kmadd(gu31,kmsub(JacPDstandardNth2g12,ToReal(2),JacPDstandardNth1g22),kmul(gu33,kmsub(JacPDstandardNth2g23,ToReal(2),JacPDstandardNth3g22)))));
- CCTK_REAL gu22 = INV(detg)*(g11L*g33L - SQR(g13L));
+ CCTK_REAL_VEC G123 =
+ kmul(kmadd(gu13,JacPDstandardNth2g33,kmadd(gu12,JacPDstandardNth3g22,kmul(gu11,kadd(JacPDstandardNth2g13,ksub(JacPDstandardNth3g12,JacPDstandardNth1g23))))),ToReal(0.5));
- CCTK_REAL gu23 = (g12L*g13L - g11L*g23L)*INV(detg);
+ CCTK_REAL_VEC G223 =
+ kmul(kmadd(gu23,JacPDstandardNth2g33,kmadd(gu22,JacPDstandardNth3g22,kmul(gu21,kadd(JacPDstandardNth2g13,ksub(JacPDstandardNth3g12,JacPDstandardNth1g23))))),ToReal(0.5));
- CCTK_REAL gu31 = (-(g13L*g22L) + g12L*g23L)*INV(detg);
+ CCTK_REAL_VEC G323 =
+ kmul(kmadd(gu33,JacPDstandardNth2g33,kmadd(gu32,JacPDstandardNth3g22,kmul(gu31,kadd(JacPDstandardNth2g13,ksub(JacPDstandardNth3g12,JacPDstandardNth1g23))))),ToReal(0.5));
- CCTK_REAL gu32 = (g12L*g13L - g11L*g23L)*INV(detg);
+ CCTK_REAL_VEC G133 =
+ kmul(ToReal(0.5),kmadd(gu13,JacPDstandardNth3g33,kmadd(gu11,kmsub(JacPDstandardNth3g13,ToReal(2),JacPDstandardNth1g33),kmul(gu12,kmsub(JacPDstandardNth3g23,ToReal(2),JacPDstandardNth2g33)))));
- CCTK_REAL gu33 = INV(detg)*(g11L*g22L - SQR(g12L));
+ CCTK_REAL_VEC G233 =
+ kmul(ToReal(0.5),kmadd(gu23,JacPDstandardNth3g33,kmadd(gu21,kmsub(JacPDstandardNth3g13,ToReal(2),JacPDstandardNth1g33),kmul(gu22,kmsub(JacPDstandardNth3g23,ToReal(2),JacPDstandardNth2g33)))));
- CCTK_REAL G111 = 0.5*(gu11*PDstandardNth1g11 +
- 2*(gu12*PDstandardNth1g12 + gu13*PDstandardNth1g13) -
- gu12*PDstandardNth2g11 - gu13*PDstandardNth3g11);
+ CCTK_REAL_VEC G333 =
+ kmul(ToReal(0.5),kmadd(gu33,JacPDstandardNth3g33,kmadd(gu31,kmsub(JacPDstandardNth3g13,ToReal(2),JacPDstandardNth1g33),kmul(gu32,kmsub(JacPDstandardNth3g23,ToReal(2),JacPDstandardNth2g33)))));
- CCTK_REAL G211 = 0.5*(gu21*PDstandardNth1g11 +
- 2*(gu22*PDstandardNth1g12 + gu23*PDstandardNth1g13) -
- gu22*PDstandardNth2g11 - gu23*PDstandardNth3g11);
+ CCTK_REAL_VEC R11 =
+ kmul(ToReal(0.5),kmadd(gu23,JacPDstandardNth31g12,kmadd(gu32,JacPDstandardNth31g12,kmadd(G111,kmul(kadd(G212,G313),ToReal(-2)),knmsub(JacPDstandardNth11g23,kadd(gu32,gu23),kmadd(gu12,ksub(JacPDstandardNth21g11,JacPDstandardNth12g11),kmadd(gu13,ksub(JacPDstandardNth31g11,JacPDstandardNth13g11),kmadd(gu23,ksub(JacPDstandardNth21g13,JacPDstandardNth23g11),kmadd(gu32,ksub(JacPDstandardNth21g13,JacPDstandardNth32g11),kmadd(SQR(G212),ToReal(2),kmadd(SQR(G313),ToReal(2),kmadd(G211,kmadd(G222,ToReal(-2),kmadd(G323,ToReal(-2),kmul(G112,ToReal(2)))),kmadd(G311,kmadd(G223,ToReal(-2),kmadd(G333,ToReal(-2),kmul(G113,ToReal(2)))),kmadd(gu22,ksub(kmsub(JacPDstandardNth21g12,ToReal(2),JacPDstandardNth22g11),JacPDstandardNth11g22),kmadd(gu33,ksub(kmsub(JacPDstandardNth31g13,ToReal(2),JacPDstandardNth33g11),JacPDstandardNth11g33),kmul(G213,kmul(G312,ToReal(4))))))))))))))))));
- CCTK_REAL G311 = 0.5*(gu31*PDstandardNth1g11 +
- 2*(gu32*PDstandardNth1g12 + gu33*PDstandardNth1g13) -
- gu32*PDstandardNth2g11 - gu33*PDstandardNth3g11);
+ CCTK_REAL_VEC R12 =
+ kmul(ToReal(0.5),kmadd(gu12,kadd(JacPDstandardNth11g22,JacPDstandardNth22g11),kmadd(gu32,JacPDstandardNth31g22,kmadd(gu13,JacPDstandardNth32g11,kmadd(gu23,JacPDstandardNth32g12,kmadd(gu33,JacPDstandardNth32g13,kmadd(kmadd(G112,kadd(G212,G313),kmadd(G212,G323,kmadd(G312,G333,kmul(gu12,JacPDstandardNth12g12)))),ToReal(-2),knmsub(JacPDstandardNth12g23,kadd(gu32,gu23),kmadd(gu22,ksub(JacPDstandardNth21g22,JacPDstandardNth12g22),kmadd(gu13,ksub(JacPDstandardNth11g23,kadd(JacPDstandardNth13g12,JacPDstandardNth12g13)),kmadd(gu23,ksub(JacPDstandardNth21g23,JacPDstandardNth23g12),kmadd(gu32,ksub(JacPDstandardNth22g13,JacPDstandardNth32g12),kmadd(gu33,ksub(JacPDstandardNth31g23,kadd(JacPDstandardNth33g12,JacPDstandardNth12g33)),kmul(kmadd(G122,G211,kmadd(G123,G311,kmadd(G213,G322,kmul(G313,G323)))),ToReal(2)))))))))))))));
- CCTK_REAL G112 = 0.5*(gu12*PDstandardNth1g22 + gu11*PDstandardNth2g11
- + gu13*(PDstandardNth1g23 + PDstandardNth2g13 - PDstandardNth3g12));
-
- CCTK_REAL G212 = 0.5*(gu22*PDstandardNth1g22 + gu21*PDstandardNth2g11
- + gu23*(PDstandardNth1g23 + PDstandardNth2g13 - PDstandardNth3g12));
-
- CCTK_REAL G312 = 0.5*(gu32*PDstandardNth1g22 + gu31*PDstandardNth2g11
- + gu33*(PDstandardNth1g23 + PDstandardNth2g13 - PDstandardNth3g12));
-
- CCTK_REAL G113 = 0.5*(gu13*PDstandardNth1g33 + gu11*PDstandardNth3g11
- + gu12*(PDstandardNth1g23 - PDstandardNth2g13 + PDstandardNth3g12));
+ CCTK_REAL_VEC R13 =
+ kmul(ToReal(0.5),kmadd(gu22,JacPDstandardNth23g12,kmadd(gu32,JacPDstandardNth31g23,kmadd(gu13,kadd(JacPDstandardNth11g33,JacPDstandardNth33g11),kmadd(gu23,JacPDstandardNth33g12,kmadd(kmadd(G213,G222,kmadd(G223,G313,kmadd(G113,kadd(G212,G313),kmul(gu13,JacPDstandardNth13g13)))),ToReal(-2),knmsub(JacPDstandardNth13g23,kadd(gu32,gu23),kmadd(gu12,kadd(JacPDstandardNth11g23,ksub(JacPDstandardNth23g11,kadd(JacPDstandardNth13g12,JacPDstandardNth12g13))),kmadd(gu33,ksub(JacPDstandardNth31g33,JacPDstandardNth13g33),kmadd(gu22,ksub(JacPDstandardNth21g23,kadd(JacPDstandardNth22g13,JacPDstandardNth13g22)),kmadd(gu23,ksub(JacPDstandardNth21g33,JacPDstandardNth23g13),kmadd(gu32,ksub(JacPDstandardNth23g13,JacPDstandardNth32g13),kmul(kmadd(G123,G211,kmadd(G212,G223,kmadd(G133,G311,kmul(G233,G312)))),ToReal(2))))))))))))));
- CCTK_REAL G213 = 0.5*(gu23*PDstandardNth1g33 + gu21*PDstandardNth3g11
- + gu22*(PDstandardNth1g23 - PDstandardNth2g13 + PDstandardNth3g12));
+ CCTK_REAL_VEC R22 =
+ kmul(ToReal(0.5),kmadd(kadd(gu13,gu31),JacPDstandardNth12g23,kmadd(gu13,JacPDstandardNth32g12,kmadd(gu31,JacPDstandardNth32g12,kmadd(kmadd(G112,G222,kmadd(G113,G322,kmul(G222,G323))),ToReal(-2),kmadd(gu21,ksub(JacPDstandardNth12g22,JacPDstandardNth21g22),knmsub(gu13,kadd(JacPDstandardNth22g13,JacPDstandardNth13g22),kmadd(gu23,ksub(JacPDstandardNth32g22,JacPDstandardNth23g22),knmsub(gu31,kadd(JacPDstandardNth31g22,JacPDstandardNth22g13),kmadd(SQR(G112),ToReal(2),kmadd(SQR(G323),ToReal(2),kmadd(G122,kmadd(G111,ToReal(-2),kmadd(G313,ToReal(-2),kmul(G212,ToReal(2)))),kmadd(G322,kmadd(G333,ToReal(-2),kmul(G223,ToReal(2))),kmadd(gu11,ksub(kmsub(JacPDstandardNth12g12,ToReal(2),JacPDstandardNth22g11),JacPDstandardNth11g22),kmadd(gu33,ksub(kmsub(JacPDstandardNth32g23,ToReal(2),JacPDstandardNth33g22),JacPDstandardNth22g33),kmul(G123,kmul(G312,ToReal(4))))))))))))))))));
- CCTK_REAL G313 = 0.5*(gu33*PDstandardNth1g33 + gu31*PDstandardNth3g11
- + gu32*(PDstandardNth1g23 - PDstandardNth2g13 + PDstandardNth3g12));
+ CCTK_REAL_VEC R23 =
+ kmul(ToReal(0.5),kmadd(gu23,kadd(JacPDstandardNth22g33,JacPDstandardNth33g22),kmadd(kmadd(G111,G123,kmadd(kadd(G113,G223),G323,kmul(gu23,JacPDstandardNth23g23))),ToReal(-2),kmadd(gu11,kadd(JacPDstandardNth12g13,ksub(JacPDstandardNth13g12,kadd(JacPDstandardNth23g11,JacPDstandardNth11g23))),kmadd(gu21,kadd(JacPDstandardNth13g22,ksub(JacPDstandardNth22g13,kadd(JacPDstandardNth23g12,JacPDstandardNth21g23))),kmadd(gu13,kadd(JacPDstandardNth12g33,ksub(JacPDstandardNth33g12,kadd(JacPDstandardNth23g13,JacPDstandardNth13g23))),kmadd(gu33,ksub(JacPDstandardNth32g33,JacPDstandardNth23g33),kmadd(gu31,kadd(JacPDstandardNth13g23,ksub(JacPDstandardNth32g13,kadd(JacPDstandardNth31g23,JacPDstandardNth23g13))),kmul(kmadd(G122,G213,kmadd(G133,G312,kmadd(G233,G322,kmul(G112,ksub(G113,G223))))),ToReal(2))))))))));
- CCTK_REAL G122 = 0.5*(gu11*(-PDstandardNth1g22 + 2*PDstandardNth2g12)
- + gu12*PDstandardNth2g22 + gu13*(2*PDstandardNth2g23 -
- PDstandardNth3g22));
+ CCTK_REAL_VEC R33 =
+ kmul(ToReal(0.5),kmadd(gu12,JacPDstandardNth23g13,kmadd(gu21,JacPDstandardNth23g13,kmadd(kmadd(G111,G133,kmadd(G133,G212,kmadd(G112,G233,kmadd(G222,G233,kmadd(G113,G333,kmul(G223,G333)))))),ToReal(-2),kmadd(gu31,ksub(JacPDstandardNth13g33,JacPDstandardNth31g33),kmadd(gu32,ksub(JacPDstandardNth23g33,JacPDstandardNth32g33),knmsub(gu11,kadd(JacPDstandardNth33g11,JacPDstandardNth11g33),kmadd(gu12,ksub(JacPDstandardNth13g23,kadd(JacPDstandardNth33g12,JacPDstandardNth12g33)),kmadd(gu21,ksub(JacPDstandardNth13g23,kadd(JacPDstandardNth33g12,JacPDstandardNth21g33)),kmadd(kmadd(G133,G313,kmadd(G233,G323,kmul(gu11,JacPDstandardNth13g13))),ToReal(2),kmadd(SQR(G113),ToReal(2),kmadd(SQR(G223),ToReal(2),kmadd(gu22,ksub(kmsub(JacPDstandardNth23g23,ToReal(2),JacPDstandardNth33g22),JacPDstandardNth22g33),kmul(G123,kmul(G213,ToReal(4))))))))))))))));
- CCTK_REAL G222 = 0.5*(gu21*(-PDstandardNth1g22 + 2*PDstandardNth2g12)
- + gu22*PDstandardNth2g22 + gu23*(2*PDstandardNth2g23 -
- PDstandardNth3g22));
+ CCTK_REAL_VEC Km11 =
+ kmadd(gu11,K11L,kmadd(gu12,K12L,kmul(gu13,K13L)));
- CCTK_REAL G322 = 0.5*(gu31*(-PDstandardNth1g22 + 2*PDstandardNth2g12)
- + gu32*PDstandardNth2g22 + gu33*(2*PDstandardNth2g23 -
- PDstandardNth3g22));
+ CCTK_REAL_VEC Km21 =
+ kmadd(gu21,K11L,kmadd(gu22,K12L,kmul(gu23,K13L)));
- CCTK_REAL G123 = 0.5*(gu13*PDstandardNth2g33 +
- gu11*(-PDstandardNth1g23 + PDstandardNth2g13 + PDstandardNth3g12) +
- gu12*PDstandardNth3g22);
+ CCTK_REAL_VEC Km31 =
+ kmadd(gu31,K11L,kmadd(gu32,K12L,kmul(gu33,K13L)));
- CCTK_REAL G223 = 0.5*(gu23*PDstandardNth2g33 +
- gu21*(-PDstandardNth1g23 + PDstandardNth2g13 + PDstandardNth3g12) +
- gu22*PDstandardNth3g22);
+ CCTK_REAL_VEC Km12 =
+ kmadd(gu11,K12L,kmadd(gu12,K22L,kmul(gu13,K23L)));
- CCTK_REAL G323 = 0.5*(gu33*PDstandardNth2g33 +
- gu31*(-PDstandardNth1g23 + PDstandardNth2g13 + PDstandardNth3g12) +
- gu32*PDstandardNth3g22);
+ CCTK_REAL_VEC Km22 =
+ kmadd(gu21,K12L,kmadd(gu22,K22L,kmul(gu23,K23L)));
- CCTK_REAL G133 = 0.5*(gu11*(-PDstandardNth1g33 + 2*PDstandardNth3g13)
- + gu12*(-PDstandardNth2g33 + 2*PDstandardNth3g23) +
- gu13*PDstandardNth3g33);
+ CCTK_REAL_VEC Km32 =
+ kmadd(gu31,K12L,kmadd(gu32,K22L,kmul(gu33,K23L)));
- CCTK_REAL G233 = 0.5*(gu21*(-PDstandardNth1g33 + 2*PDstandardNth3g13)
- + gu22*(-PDstandardNth2g33 + 2*PDstandardNth3g23) +
- gu23*PDstandardNth3g33);
+ CCTK_REAL_VEC Km13 =
+ kmadd(gu11,K13L,kmadd(gu12,K23L,kmul(gu13,K33L)));
- CCTK_REAL G333 = 0.5*(gu31*(-PDstandardNth1g33 + 2*PDstandardNth3g13)
- + gu32*(-PDstandardNth2g33 + 2*PDstandardNth3g23) +
- gu33*PDstandardNth3g33);
+ CCTK_REAL_VEC Km23 =
+ kmadd(gu21,K13L,kmadd(gu22,K23L,kmul(gu23,K33L)));
- CCTK_REAL R11 = 0.5*(4*G213*G312 - 2*(G111*G212 + G223*G311 +
- G111*G313) + G211*(2*G112 - 2*G222 - 2*G323) + G311*(2*G113 - 2*G333) +
- (-gu23 - gu32)*PDstandardNth11g23 + gu23*PDstandardNth13g12 +
- gu32*PDstandardNth13g12 + gu22*(-PDstandardNth11g22 +
- 2*PDstandardNth12g12 - PDstandardNth22g11) + gu23*(PDstandardNth12g13 -
- PDstandardNth23g11) + gu32*(PDstandardNth12g13 - PDstandardNth23g11) +
- gu33*(-PDstandardNth11g33 + 2*PDstandardNth13g13 - PDstandardNth33g11)
- + 2*SQR(G212) + 2*SQR(G313));
+ CCTK_REAL_VEC Km33 =
+ kmadd(gu31,K13L,kmadd(gu32,K23L,kmul(gu33,K33L)));
- CCTK_REAL R12 = 0.5*(2*(G122*G211 + G123*G311 + G213*G322 + G313*G323)
- - 2*(G112*G212 + G112*G313 + G212*G323 + G312*G333 +
- gu12*PDstandardNth12g12) + gu13*(PDstandardNth11g23 -
- PDstandardNth12g13 - PDstandardNth13g12) + gu12*(PDstandardNth11g22 +
- PDstandardNth22g11) + gu32*PDstandardNth22g13 + gu13*PDstandardNth23g11
- + gu32*(-PDstandardNth12g23 + PDstandardNth13g22 - PDstandardNth23g12)
- + gu33*PDstandardNth23g13 + gu33*(-PDstandardNth12g33 +
- PDstandardNth13g23 - PDstandardNth33g12));
+ CCTK_REAL_VEC trK = kadd(Km11,kadd(Km22,Km33));
- CCTK_REAL R13 = 0.5*(2*(G123*G211 + G212*G223 + G133*G311 + G233*G312)
- - 2*(G213*G222 + G223*G313 + G113*(G212 + G313) +
- gu13*PDstandardNth13g13) + gu12*(PDstandardNth11g23 -
- PDstandardNth12g13 - PDstandardNth13g12 + PDstandardNth23g11) +
- gu22*(PDstandardNth12g23 - PDstandardNth13g22 - PDstandardNth22g13 +
- PDstandardNth23g12) + gu13*(PDstandardNth11g33 + PDstandardNth33g11) +
- gu23*(PDstandardNth12g33 - PDstandardNth13g23 - PDstandardNth23g13 +
- PDstandardNth33g12));
-
- CCTK_REAL R22 = 0.5*(4*G123*G312 + G122*(-2*G111 + 2*G212 - 2*G313) -
- 2*(G112*G222 + G113*G322 + G222*G323) + G322*(2*G223 - 2*G333) + (gu13
- + gu31)*PDstandardNth12g23 + (-gu13 - gu31)*PDstandardNth13g22 +
- gu11*(-PDstandardNth11g22 + 2*PDstandardNth12g12 - PDstandardNth22g11)
- + (-gu13 - gu31)*PDstandardNth22g13 + gu13*PDstandardNth23g12 +
- gu31*PDstandardNth23g12 + gu33*(-PDstandardNth22g33 +
- 2*PDstandardNth23g23 - PDstandardNth33g22) + 2*SQR(G112) +
- 2*SQR(G323));
-
- CCTK_REAL R23 = 0.5*(2*(G112*G113 + G122*G213 + G133*G312 + G233*G322)
- + gu11*(-PDstandardNth11g23 + PDstandardNth12g13 + PDstandardNth13g12 -
- PDstandardNth23g11) + gu21*(-PDstandardNth12g23 + PDstandardNth13g22 +
- PDstandardNth22g13 - PDstandardNth23g12) - 2*(G111*G123 + G113*G323 +
- G223*(G112 + G323) + gu23*PDstandardNth23g23) +
- gu13*(PDstandardNth12g33 - PDstandardNth13g23 - PDstandardNth23g13 +
- PDstandardNth33g12) + gu23*(PDstandardNth22g33 + PDstandardNth33g22));
-
- CCTK_REAL R33 = 0.5*(4*G123*G213 - 2*(G111*G133 + G133*G212 +
- G112*G233 + G222*G233 + G113*G333 + G223*G333) + (-gu12 -
- gu21)*PDstandardNth12g33 + 2*(G133*G313 + G233*G323 +
- gu11*PDstandardNth13g13) + gu12*PDstandardNth13g23 +
- gu21*PDstandardNth13g23 + gu12*PDstandardNth23g13 +
- gu21*PDstandardNth23g13 + gu11*(-PDstandardNth11g33 -
- PDstandardNth33g11) - (gu12 + gu21)*PDstandardNth33g12 +
- gu22*(-PDstandardNth22g33 + 2*PDstandardNth23g23 - PDstandardNth33g22)
- + 2*SQR(G113) + 2*SQR(G223));
-
- CCTK_REAL Km11 = gu11*K11L + gu12*K12L + gu13*K13L;
-
- CCTK_REAL Km21 = gu21*K11L + gu22*K12L + gu23*K13L;
-
- CCTK_REAL Km31 = gu31*K11L + gu32*K12L + gu33*K13L;
-
- CCTK_REAL Km12 = gu11*K12L + gu12*K22L + gu13*K23L;
-
- CCTK_REAL Km22 = gu21*K12L + gu22*K22L + gu23*K23L;
-
- CCTK_REAL Km32 = gu31*K12L + gu32*K22L + gu33*K23L;
-
- CCTK_REAL Km13 = gu11*K13L + gu12*K23L + gu13*K33L;
-
- CCTK_REAL Km23 = gu21*K13L + gu22*K23L + gu23*K33L;
-
- CCTK_REAL Km33 = gu31*K13L + gu32*K23L + gu33*K33L;
-
- CCTK_REAL trK = Km11 + Km22 + Km33;
-
- CCTK_REAL g11rhsL = -2*alphaL*K11L + 2*(g11L*PDstandardNth1beta1 +
- g12L*PDstandardNth1beta2 + g13L*PDstandardNth1beta3) +
- beta1L*PDstandardNth1g11 + beta2L*PDstandardNth2g11 +
- beta3L*PDstandardNth3g11;
-
- CCTK_REAL g12rhsL = -2*alphaL*K12L + g22L*PDstandardNth1beta2 +
- g23L*PDstandardNth1beta3 + beta1L*PDstandardNth1g12 +
- g11L*PDstandardNth2beta1 + g12L*(PDstandardNth1beta1 +
- PDstandardNth2beta2) + g13L*PDstandardNth2beta3 +
- beta2L*PDstandardNth2g12 + beta3L*PDstandardNth3g12;
-
- CCTK_REAL g13rhsL = -2*alphaL*K13L + g23L*PDstandardNth1beta2 +
- g33L*PDstandardNth1beta3 + beta1L*PDstandardNth1g13 +
- beta2L*PDstandardNth2g13 + g11L*PDstandardNth3beta1 +
- g12L*PDstandardNth3beta2 + g13L*(PDstandardNth1beta1 +
- PDstandardNth3beta3) + beta3L*PDstandardNth3g13;
-
- CCTK_REAL g22rhsL = -2*alphaL*K22L + beta1L*PDstandardNth1g22 +
- 2*(g12L*PDstandardNth2beta1 + g22L*PDstandardNth2beta2 +
- g23L*PDstandardNth2beta3) + beta2L*PDstandardNth2g22 +
- beta3L*PDstandardNth3g22;
-
- CCTK_REAL g23rhsL = -2*alphaL*K23L + beta1L*PDstandardNth1g23 +
- g13L*PDstandardNth2beta1 + g33L*PDstandardNth2beta3 +
- beta2L*PDstandardNth2g23 + g12L*PDstandardNth3beta1 +
- g22L*PDstandardNth3beta2 + g23L*(PDstandardNth2beta2 +
- PDstandardNth3beta3) + beta3L*PDstandardNth3g23;
-
- CCTK_REAL g33rhsL = -2*alphaL*K33L + beta1L*PDstandardNth1g33 +
- beta2L*PDstandardNth2g33 + 2*(g13L*PDstandardNth3beta1 +
- g23L*PDstandardNth3beta2 + g33L*PDstandardNth3beta3) +
- beta3L*PDstandardNth3g33;
-
- CCTK_REAL K11rhsL = -PDstandardNth11alpha + G111*PDstandardNth1alpha +
- 2*(K11L*PDstandardNth1beta1 + K12L*PDstandardNth1beta2 +
- K13L*PDstandardNth1beta3) + beta1L*PDstandardNth1K11 +
- G211*PDstandardNth2alpha + beta2L*PDstandardNth2K11 +
- G311*PDstandardNth3alpha + beta3L*PDstandardNth3K11 +
- alphaL*(-2*(K12L*Km21 + K13L*Km31) + R11 + K11L*(-2*Km11 + trK));
-
- CCTK_REAL K12rhsL = -PDstandardNth12alpha + G112*PDstandardNth1alpha +
- K22L*PDstandardNth1beta2 + K23L*PDstandardNth1beta3 +
- beta1L*PDstandardNth1K12 + G212*PDstandardNth2alpha +
- K11L*PDstandardNth2beta1 + K12L*(PDstandardNth1beta1 +
- PDstandardNth2beta2) + K13L*PDstandardNth2beta3 +
- beta2L*PDstandardNth2K12 + G312*PDstandardNth3alpha +
- beta3L*PDstandardNth3K12 + alphaL*(-2*(K11L*Km12 + K13L*Km32) + R12 +
- K12L*(-2*Km22 + trK));
-
- CCTK_REAL K13rhsL = -PDstandardNth13alpha + G113*PDstandardNth1alpha +
- K23L*PDstandardNth1beta2 + K33L*PDstandardNth1beta3 +
- beta1L*PDstandardNth1K13 + G213*PDstandardNth2alpha +
- beta2L*PDstandardNth2K13 + G313*PDstandardNth3alpha +
- K11L*PDstandardNth3beta1 + K12L*PDstandardNth3beta2 +
- K13L*(PDstandardNth1beta1 + PDstandardNth3beta3) +
- beta3L*PDstandardNth3K13 + alphaL*(-2*(K11L*Km13 + K12L*Km23 +
- K13L*Km33) + R13 + K13L*trK);
-
- CCTK_REAL K22rhsL = G122*PDstandardNth1alpha +
- beta1L*PDstandardNth1K22 - PDstandardNth22alpha +
- G222*PDstandardNth2alpha + 2*(K12L*PDstandardNth2beta1 +
- K22L*PDstandardNth2beta2 + K23L*PDstandardNth2beta3) +
- beta2L*PDstandardNth2K22 + G322*PDstandardNth3alpha +
- beta3L*PDstandardNth3K22 + alphaL*(-2*(K12L*Km12 + K23L*Km32) + R22 +
- K22L*(-2*Km22 + trK));
-
- CCTK_REAL K23rhsL = G123*PDstandardNth1alpha +
- beta1L*PDstandardNth1K23 - PDstandardNth23alpha +
- G223*PDstandardNth2alpha + K13L*PDstandardNth2beta1 +
- K33L*PDstandardNth2beta3 + beta2L*PDstandardNth2K23 +
- G323*PDstandardNth3alpha + K12L*PDstandardNth3beta1 +
- K22L*PDstandardNth3beta2 + K23L*(PDstandardNth2beta2 +
- PDstandardNth3beta3) + beta3L*PDstandardNth3K23 + alphaL*(-2*(K12L*Km13
- + K22L*Km23 + K23L*Km33) + R23 + K23L*trK);
-
- CCTK_REAL K33rhsL = G133*PDstandardNth1alpha +
- beta1L*PDstandardNth1K33 + G233*PDstandardNth2alpha +
- beta2L*PDstandardNth2K33 - PDstandardNth33alpha +
- G333*PDstandardNth3alpha + 2*(K13L*PDstandardNth3beta1 +
- K23L*PDstandardNth3beta2 + K33L*PDstandardNth3beta3) +
- beta3L*PDstandardNth3K33 + alphaL*(-2*(K13L*Km13 + K23L*Km23 +
- K33L*Km33) + R33 + K33L*trK);
-
- CCTK_REAL alpharhsL = 0;
-
- CCTK_REAL beta1rhsL = 0;
-
- CCTK_REAL beta2rhsL = 0;
-
- CCTK_REAL beta3rhsL = 0;
-
- /* Copy local copies back to grid functions */
- alpharhs[index] = alpharhsL;
- beta1rhs[index] = beta1rhsL;
- beta2rhs[index] = beta2rhsL;
- beta3rhs[index] = beta3rhsL;
- g11rhs[index] = g11rhsL;
- g12rhs[index] = g12rhsL;
- g13rhs[index] = g13rhsL;
- g22rhs[index] = g22rhsL;
- g23rhs[index] = g23rhsL;
- g33rhs[index] = g33rhsL;
- K11rhs[index] = K11rhsL;
- K12rhs[index] = K12rhsL;
- K13rhs[index] = K13rhsL;
- K22rhs[index] = K22rhsL;
- K23rhs[index] = K23rhsL;
- K33rhs[index] = K33rhsL;
+ CCTK_REAL_VEC g11rhsL =
+ kmadd(beta1L,JacPDstandardNth1g11,kmadd(beta2L,JacPDstandardNth2g11,kmadd(beta3L,JacPDstandardNth3g11,kmadd(alphaL,kmul(K11L,ToReal(-2)),kmul(kmadd(g11L,JacPDstandardNth1beta1,kmadd(g12L,JacPDstandardNth1beta2,kmul(g13L,JacPDstandardNth1beta3))),ToReal(2))))));
+
+ CCTK_REAL_VEC g12rhsL =
+ kmadd(g22L,JacPDstandardNth1beta2,kmadd(g23L,JacPDstandardNth1beta3,kmadd(beta1L,JacPDstandardNth1g12,kmadd(g11L,JacPDstandardNth2beta1,kmadd(g12L,kadd(JacPDstandardNth1beta1,JacPDstandardNth2beta2),kmadd(g13L,JacPDstandardNth2beta3,kmadd(beta2L,JacPDstandardNth2g12,kmadd(beta3L,JacPDstandardNth3g12,kmul(alphaL,kmul(K12L,ToReal(-2)))))))))));
+
+ CCTK_REAL_VEC g13rhsL =
+ kmadd(g23L,JacPDstandardNth1beta2,kmadd(g33L,JacPDstandardNth1beta3,kmadd(beta1L,JacPDstandardNth1g13,kmadd(beta2L,JacPDstandardNth2g13,kmadd(g11L,JacPDstandardNth3beta1,kmadd(g12L,JacPDstandardNth3beta2,kmadd(g13L,kadd(JacPDstandardNth1beta1,JacPDstandardNth3beta3),kmadd(beta3L,JacPDstandardNth3g13,kmul(alphaL,kmul(K13L,ToReal(-2)))))))))));
+
+ CCTK_REAL_VEC g22rhsL =
+ kmadd(beta1L,JacPDstandardNth1g22,kmadd(beta2L,JacPDstandardNth2g22,kmadd(beta3L,JacPDstandardNth3g22,kmadd(alphaL,kmul(K22L,ToReal(-2)),kmul(kmadd(g12L,JacPDstandardNth2beta1,kmadd(g22L,JacPDstandardNth2beta2,kmul(g23L,JacPDstandardNth2beta3))),ToReal(2))))));
+
+ CCTK_REAL_VEC g23rhsL =
+ kmadd(beta1L,JacPDstandardNth1g23,kmadd(g13L,JacPDstandardNth2beta1,kmadd(g33L,JacPDstandardNth2beta3,kmadd(beta2L,JacPDstandardNth2g23,kmadd(g12L,JacPDstandardNth3beta1,kmadd(g22L,JacPDstandardNth3beta2,kmadd(g23L,kadd(JacPDstandardNth2beta2,JacPDstandardNth3beta3),kmadd(beta3L,JacPDstandardNth3g23,kmul(alphaL,kmul(K23L,ToReal(-2)))))))))));
+
+ CCTK_REAL_VEC g33rhsL =
+ kmadd(beta1L,JacPDstandardNth1g33,kmadd(beta2L,JacPDstandardNth2g33,kmadd(beta3L,JacPDstandardNth3g33,kmadd(alphaL,kmul(K33L,ToReal(-2)),kmul(kmadd(g13L,JacPDstandardNth3beta1,kmadd(g23L,JacPDstandardNth3beta2,kmul(g33L,JacPDstandardNth3beta3))),ToReal(2))))));
+
+ CCTK_REAL_VEC K11rhsL =
+ kmadd(G111,JacPDstandardNth1alpha,kmadd(beta1L,JacPDstandardNth1K11,kmadd(G211,JacPDstandardNth2alpha,kmadd(beta2L,JacPDstandardNth2K11,kmadd(G311,JacPDstandardNth3alpha,kmadd(beta3L,JacPDstandardNth3K11,kmadd(alphaL,kadd(R11,kmadd(kmadd(K12L,Km21,kmul(K13L,Km31)),ToReal(-2),kmul(K11L,kmadd(Km11,ToReal(-2),trK)))),kmsub(kmadd(JacPDstandardNth1beta1,K11L,kmadd(JacPDstandardNth1beta2,K12L,kmul(JacPDstandardNth1beta3,K13L))),ToReal(2),JacPDstandardNth11alpha))))))));
+
+ CCTK_REAL_VEC K12rhsL =
+ kmadd(G112,JacPDstandardNth1alpha,kmadd(beta1L,JacPDstandardNth1K12,kmadd(G212,JacPDstandardNth2alpha,kmadd(beta2L,JacPDstandardNth2K12,kmadd(G312,JacPDstandardNth3alpha,kmadd(beta3L,JacPDstandardNth3K12,kmadd(JacPDstandardNth2beta1,K11L,kmadd(kadd(JacPDstandardNth1beta1,JacPDstandardNth2beta2),K12L,kmadd(JacPDstandardNth2beta3,K13L,kmadd(JacPDstandardNth1beta2,K22L,kmadd(JacPDstandardNth1beta3,K23L,kmsub(alphaL,kadd(R12,kmadd(kmadd(K11L,Km12,kmul(K13L,Km32)),ToReal(-2),kmul(K12L,kmadd(Km22,ToReal(-2),trK)))),JacPDstandardNth12alpha))))))))))));
+
+ CCTK_REAL_VEC K13rhsL =
+ kmadd(G113,JacPDstandardNth1alpha,kmadd(beta1L,JacPDstandardNth1K13,kmadd(G213,JacPDstandardNth2alpha,kmadd(beta2L,JacPDstandardNth2K13,kmadd(G313,JacPDstandardNth3alpha,kmadd(beta3L,JacPDstandardNth3K13,kmadd(JacPDstandardNth3beta1,K11L,kmadd(JacPDstandardNth3beta2,K12L,kmadd(kadd(JacPDstandardNth1beta1,JacPDstandardNth3beta3),K13L,kmadd(JacPDstandardNth1beta2,K23L,kmadd(JacPDstandardNth1beta3,K33L,kmsub(alphaL,kadd(R13,kmadd(K13L,trK,kmul(kmadd(K11L,Km13,kmadd(K12L,Km23,kmul(K13L,Km33))),ToReal(-2)))),JacPDstandardNth13alpha))))))))))));
+
+ CCTK_REAL_VEC K22rhsL =
+ kmadd(G122,JacPDstandardNth1alpha,kmadd(beta1L,JacPDstandardNth1K22,kmadd(G222,JacPDstandardNth2alpha,kmadd(beta2L,JacPDstandardNth2K22,kmadd(G322,JacPDstandardNth3alpha,kmadd(beta3L,JacPDstandardNth3K22,kmadd(alphaL,kadd(R22,kmadd(kmadd(K12L,Km12,kmul(K23L,Km32)),ToReal(-2),kmul(K22L,kmadd(Km22,ToReal(-2),trK)))),kmsub(kmadd(JacPDstandardNth2beta1,K12L,kmadd(JacPDstandardNth2beta2,K22L,kmul(JacPDstandardNth2beta3,K23L))),ToReal(2),JacPDstandardNth22alpha))))))));
+
+ CCTK_REAL_VEC K23rhsL =
+ kmadd(G123,JacPDstandardNth1alpha,kmadd(beta1L,JacPDstandardNth1K23,kmadd(G223,JacPDstandardNth2alpha,kmadd(beta2L,JacPDstandardNth2K23,kmadd(G323,JacPDstandardNth3alpha,kmadd(beta3L,JacPDstandardNth3K23,kmadd(JacPDstandardNth3beta1,K12L,kmadd(JacPDstandardNth2beta1,K13L,kmadd(JacPDstandardNth3beta2,K22L,kmadd(kadd(JacPDstandardNth2beta2,JacPDstandardNth3beta3),K23L,kmadd(JacPDstandardNth2beta3,K33L,kmsub(alphaL,kadd(R23,kmadd(K23L,trK,kmul(kmadd(K12L,Km13,kmadd(K22L,Km23,kmul(K23L,Km33))),ToReal(-2)))),JacPDstandardNth23alpha))))))))))));
+
+ CCTK_REAL_VEC K33rhsL =
+ kmadd(G133,JacPDstandardNth1alpha,kmadd(beta1L,JacPDstandardNth1K33,kmadd(G233,JacPDstandardNth2alpha,kmadd(beta2L,JacPDstandardNth2K33,kmadd(G333,JacPDstandardNth3alpha,kmadd(beta3L,JacPDstandardNth3K33,kmadd(alphaL,kadd(R33,kmadd(K33L,trK,kmul(kmadd(K13L,Km13,kmadd(K23L,Km23,kmul(K33L,Km33))),ToReal(-2)))),kmsub(kmadd(JacPDstandardNth3beta1,K13L,kmadd(JacPDstandardNth3beta2,K23L,kmul(JacPDstandardNth3beta3,K33L))),ToReal(2),JacPDstandardNth33alpha))))))));
+
+ CCTK_REAL_VEC alpharhsL = ToReal(0);
+
+ CCTK_REAL_VEC beta1rhsL = ToReal(0);
+
+ CCTK_REAL_VEC beta2rhsL = ToReal(0);
+
+ 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);
}
- LC_ENDLOOP3 (ML_ADM_RHS);
+ LC_ENDLOOP3VEC (ML_ADM_RHS);
}
extern "C" void ML_ADM_RHS(CCTK_ARGUMENTS)
@@ -487,5 +1563,43 @@ extern "C" void ML_ADM_RHS(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_ADM_RHS_Body");
+ }
+
+ if (cctk_iteration % ML_ADM_RHS_calc_every != ML_ADM_RHS_calc_offset)
+ {
+ 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"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_ADM_RHS", 8, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_ADM_RHS", 1, 1, 1);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_ADM_RHS", 2, 2, 2);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_ADM_RHS", 3, 3, 3);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_ADM_RHS", 4, 4, 4);
+ break;
+ }
+
GenericFD_LoopOverInterior(cctkGH, &ML_ADM_RHS_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_ADM_RHS_Body");
+ }
}
diff --git a/ML_ADM/src/ML_ADM_boundary.cc b/ML_ADM/src/ML_ADM_boundary.cc
index bc59bfa..a205016 100644
--- a/ML_ADM/src/ML_ADM_boundary.cc
+++ b/ML_ADM/src/ML_ADM_boundary.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_ADM_boundary_SelectBCs(CCTK_ARGUMENTS)
{
@@ -42,7 +43,7 @@ extern "C" void ML_ADM_boundary_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_ADM_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_ADM_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;
@@ -50,20 +51,6 @@ static void ML_ADM_boundary_Body(cGH const * restrict const cctkGH, int const di
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_ADM_boundary_Body");
- }
-
- if (cctk_iteration % ML_ADM_boundary_calc_every != ML_ADM_boundary_calc_offset)
- {
- return;
- }
-
- const char *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);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -73,38 +60,120 @@ static void ML_ADM_boundary_Body(cGH const * restrict const cctkGH, int const di
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ CCTK_REAL_VEC const p1o12dx = kmul(INV(dx),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dy = kmul(INV(dy),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dz = kmul(INV(dz),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o144dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(0.00694444444444444444444444444444)));
+ CCTK_REAL_VEC const p1o144dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(0.00694444444444444444444444444444)));
+ CCTK_REAL_VEC const p1o144dydz = kmul(INV(dy),kmul(INV(dz),ToReal(0.00694444444444444444444444444444)));
+ CCTK_REAL_VEC const p1o180dx2 = kmul(INV(SQR(dx)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o180dy2 = kmul(INV(SQR(dy)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o180dz2 = kmul(INV(SQR(dz)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o2dx = kmul(INV(dx),ToReal(0.5));
+ CCTK_REAL_VEC const p1o2dy = kmul(INV(dy),ToReal(0.5));
+ CCTK_REAL_VEC const p1o2dz = kmul(INV(dz),ToReal(0.5));
+ CCTK_REAL_VEC const p1o3600dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(0.000277777777777777777777777777778)));
+ CCTK_REAL_VEC const p1o3600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(0.000277777777777777777777777777778)));
+ CCTK_REAL_VEC const p1o3600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(0.000277777777777777777777777777778)));
+ CCTK_REAL_VEC const p1o4dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(0.25)));
+ CCTK_REAL_VEC const p1o4dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(0.25)));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(dz),ToReal(0.25)));
+ CCTK_REAL_VEC const p1o5040dx2 = kmul(INV(SQR(dx)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o5040dy2 = kmul(INV(SQR(dy)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o5040dz2 = kmul(INV(SQR(dz)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o60dx = kmul(INV(dx),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o60dy = kmul(INV(dy),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o60dz = kmul(INV(dz),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o705600dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1odx2 = INV(SQR(dx));
+ CCTK_REAL_VEC const p1ody2 = INV(SQR(dy));
+ CCTK_REAL_VEC const p1odz2 = INV(SQR(dz));
+ CCTK_REAL_VEC const pm1o12dx2 = kmul(INV(SQR(dx)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dy2 = kmul(INV(SQR(dy)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dz2 = kmul(INV(SQR(dz)),ToReal(-0.0833333333333333333333333333333));
+
+ /* Jacobian variable pointers */
+ bool const use_jacobian = (!CCTK_IsFunctionAliased("MultiPatch_GetMap") || MultiPatch_GetMap(cctkGH) != jacobian_identity_map)
+ && strlen(jacobian_group) > 0;
+ if (use_jacobian && strlen(jacobian_derivative_group) == 0)
+ {
+ CCTK_WARN (1, "GenericFD::jacobian_group and GenericFD::jacobian_derivative_group must both be set to valid group names");
+ }
+
+ CCTK_REAL const *restrict jacobian_ptrs[9];
+ if (use_jacobian) GenericFD_GroupDataPointers(cctkGH, jacobian_group,
+ 9, jacobian_ptrs);
+
+ CCTK_REAL const *restrict const J11 = use_jacobian ? jacobian_ptrs[0] : 0;
+ CCTK_REAL const *restrict const J12 = use_jacobian ? jacobian_ptrs[1] : 0;
+ CCTK_REAL const *restrict const J13 = use_jacobian ? jacobian_ptrs[2] : 0;
+ CCTK_REAL const *restrict const J21 = use_jacobian ? jacobian_ptrs[3] : 0;
+ CCTK_REAL const *restrict const J22 = use_jacobian ? jacobian_ptrs[4] : 0;
+ CCTK_REAL const *restrict const J23 = use_jacobian ? jacobian_ptrs[5] : 0;
+ CCTK_REAL const *restrict const J31 = use_jacobian ? jacobian_ptrs[6] : 0;
+ CCTK_REAL const *restrict const J32 = use_jacobian ? jacobian_ptrs[7] : 0;
+ CCTK_REAL const *restrict const J33 = use_jacobian ? jacobian_ptrs[8] : 0;
+
+ CCTK_REAL const *restrict jacobian_derivative_ptrs[18];
+ if (use_jacobian) GenericFD_GroupDataPointers(cctkGH, jacobian_derivative_group,
+ 18, jacobian_derivative_ptrs);
+
+ CCTK_REAL const *restrict const dJ111 = use_jacobian ? jacobian_derivative_ptrs[0] : 0;
+ CCTK_REAL const *restrict const dJ112 = use_jacobian ? jacobian_derivative_ptrs[1] : 0;
+ CCTK_REAL const *restrict const dJ113 = use_jacobian ? jacobian_derivative_ptrs[2] : 0;
+ CCTK_REAL const *restrict const dJ122 = use_jacobian ? jacobian_derivative_ptrs[3] : 0;
+ CCTK_REAL const *restrict const dJ123 = use_jacobian ? jacobian_derivative_ptrs[4] : 0;
+ CCTK_REAL const *restrict const dJ133 = use_jacobian ? jacobian_derivative_ptrs[5] : 0;
+ CCTK_REAL const *restrict const dJ211 = use_jacobian ? jacobian_derivative_ptrs[6] : 0;
+ CCTK_REAL const *restrict const dJ212 = use_jacobian ? jacobian_derivative_ptrs[7] : 0;
+ CCTK_REAL const *restrict const dJ213 = use_jacobian ? jacobian_derivative_ptrs[8] : 0;
+ CCTK_REAL const *restrict const dJ222 = use_jacobian ? jacobian_derivative_ptrs[9] : 0;
+ CCTK_REAL const *restrict const dJ223 = use_jacobian ? jacobian_derivative_ptrs[10] : 0;
+ CCTK_REAL const *restrict const dJ233 = use_jacobian ? jacobian_derivative_ptrs[11] : 0;
+ CCTK_REAL const *restrict const dJ311 = use_jacobian ? jacobian_derivative_ptrs[12] : 0;
+ CCTK_REAL const *restrict const dJ312 = use_jacobian ? jacobian_derivative_ptrs[13] : 0;
+ CCTK_REAL const *restrict const dJ313 = use_jacobian ? jacobian_derivative_ptrs[14] : 0;
+ CCTK_REAL const *restrict const dJ322 = use_jacobian ? jacobian_derivative_ptrs[15] : 0;
+ CCTK_REAL const *restrict const dJ323 = use_jacobian ? jacobian_derivative_ptrs[16] : 0;
+ CCTK_REAL const *restrict const dJ333 = use_jacobian ? jacobian_derivative_ptrs[17] : 0;
+
+ /* 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_LOOP3 (ML_ADM_boundary,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ 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)
{
ptrdiff_t const index = di*i + dj*j + dk*k;
@@ -112,62 +181,149 @@ static void ML_ADM_boundary_Body(cGH const * restrict const cctkGH, int const di
+
/* 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 g11L = 1;
+ CCTK_REAL_VEC g11L = ToReal(1);
+
+ CCTK_REAL_VEC g12L = ToReal(0);
- CCTK_REAL g12L = 0;
+ CCTK_REAL_VEC g13L = ToReal(0);
- CCTK_REAL g13L = 0;
+ CCTK_REAL_VEC g22L = ToReal(1);
- CCTK_REAL g22L = 1;
+ CCTK_REAL_VEC g23L = ToReal(0);
- CCTK_REAL g23L = 0;
+ CCTK_REAL_VEC g33L = ToReal(1);
- CCTK_REAL g33L = 1;
+ CCTK_REAL_VEC K11L = ToReal(0);
- CCTK_REAL K11L = 0;
+ CCTK_REAL_VEC K12L = ToReal(0);
- CCTK_REAL K12L = 0;
+ CCTK_REAL_VEC K13L = ToReal(0);
- CCTK_REAL K13L = 0;
+ CCTK_REAL_VEC K22L = ToReal(0);
- CCTK_REAL K22L = 0;
+ CCTK_REAL_VEC K23L = ToReal(0);
- CCTK_REAL K23L = 0;
+ CCTK_REAL_VEC K33L = ToReal(0);
- CCTK_REAL K33L = 0;
+ CCTK_REAL_VEC alphaL = ToReal(1);
- CCTK_REAL alphaL = 1;
+ CCTK_REAL_VEC beta1L = ToReal(0);
- CCTK_REAL beta1L = 0;
+ CCTK_REAL_VEC beta2L = ToReal(0);
- CCTK_REAL beta2L = 0;
+ CCTK_REAL_VEC beta3L = ToReal(0);
- CCTK_REAL beta3L = 0;
+ /* If necessary, store only partial vectors after the first iteration */
- /* Copy local copies back to grid functions */
- alpha[index] = alphaL;
- beta1[index] = beta1L;
- beta2[index] = beta2L;
- beta3[index] = beta3L;
- g11[index] = g11L;
- g12[index] = g12L;
- g13[index] = g13L;
- g22[index] = g22L;
- g23[index] = g23L;
- g33[index] = g33L;
- K11[index] = K11L;
- K12[index] = K12L;
- K13[index] = K13L;
- K22[index] = K22L;
- K23[index] = K23L;
- K33[index] = K33L;
+ 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);
}
- LC_ENDLOOP3 (ML_ADM_boundary);
+ LC_ENDLOOP3VEC (ML_ADM_boundary);
}
extern "C" void ML_ADM_boundary(CCTK_ARGUMENTS)
@@ -175,5 +331,39 @@ extern "C" void ML_ADM_boundary(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_ADM_boundary_Body");
+ }
+
+ if (cctk_iteration % ML_ADM_boundary_calc_every != ML_ADM_boundary_calc_offset)
+ {
+ return;
+ }
+
+ const char *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)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverBoundaryWithGhosts(cctkGH, &ML_ADM_boundary_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_ADM_boundary_Body");
+ }
}
diff --git a/ML_ADM/src/ML_ADM_constraints.cc b/ML_ADM/src/ML_ADM_constraints.cc
index efca3d3..8385163 100644
--- a/ML_ADM/src/ML_ADM_constraints.cc
+++ b/ML_ADM/src/ML_ADM_constraints.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_ADM_constraints_SelectBCs(CCTK_ARGUMENTS)
{
@@ -36,7 +37,7 @@ extern "C" void ML_ADM_constraints_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_ADM_constraints_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_ADM_constraints_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;
@@ -44,21 +45,6 @@ static void ML_ADM_constraints_Body(cGH const * restrict const cctkGH, int const
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_ADM_constraints_Body");
- }
-
- if (cctk_iteration % ML_ADM_constraints_calc_every != ML_ADM_constraints_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_ADM::ML_curv","ML_ADM::ML_Ham","ML_ADM::ML_metric","ML_ADM::ML_mom"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_ADM_constraints", 4, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "ML_ADM_constraints", 2, 2, 2);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -68,328 +54,1205 @@ static void ML_ADM_constraints_Body(cGH const * restrict const cctkGH, int const
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ CCTK_REAL_VEC const p1o12dx = kmul(INV(dx),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dy = kmul(INV(dy),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dz = kmul(INV(dz),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o144dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(0.00694444444444444444444444444444)));
+ CCTK_REAL_VEC const p1o144dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(0.00694444444444444444444444444444)));
+ CCTK_REAL_VEC const p1o144dydz = kmul(INV(dy),kmul(INV(dz),ToReal(0.00694444444444444444444444444444)));
+ CCTK_REAL_VEC const p1o180dx2 = kmul(INV(SQR(dx)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o180dy2 = kmul(INV(SQR(dy)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o180dz2 = kmul(INV(SQR(dz)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o2dx = kmul(INV(dx),ToReal(0.5));
+ CCTK_REAL_VEC const p1o2dy = kmul(INV(dy),ToReal(0.5));
+ CCTK_REAL_VEC const p1o2dz = kmul(INV(dz),ToReal(0.5));
+ CCTK_REAL_VEC const p1o3600dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(0.000277777777777777777777777777778)));
+ CCTK_REAL_VEC const p1o3600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(0.000277777777777777777777777777778)));
+ CCTK_REAL_VEC const p1o3600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(0.000277777777777777777777777777778)));
+ CCTK_REAL_VEC const p1o4dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(0.25)));
+ CCTK_REAL_VEC const p1o4dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(0.25)));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(dz),ToReal(0.25)));
+ CCTK_REAL_VEC const p1o5040dx2 = kmul(INV(SQR(dx)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o5040dy2 = kmul(INV(SQR(dy)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o5040dz2 = kmul(INV(SQR(dz)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o60dx = kmul(INV(dx),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o60dy = kmul(INV(dy),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o60dz = kmul(INV(dz),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o705600dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1odx2 = INV(SQR(dx));
+ CCTK_REAL_VEC const p1ody2 = INV(SQR(dy));
+ CCTK_REAL_VEC const p1odz2 = INV(SQR(dz));
+ CCTK_REAL_VEC const pm1o12dx2 = kmul(INV(SQR(dx)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dy2 = kmul(INV(SQR(dy)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dz2 = kmul(INV(SQR(dz)),ToReal(-0.0833333333333333333333333333333));
+
+ /* Jacobian variable pointers */
+ bool const use_jacobian = (!CCTK_IsFunctionAliased("MultiPatch_GetMap") || MultiPatch_GetMap(cctkGH) != jacobian_identity_map)
+ && strlen(jacobian_group) > 0;
+ if (use_jacobian && strlen(jacobian_derivative_group) == 0)
+ {
+ CCTK_WARN (1, "GenericFD::jacobian_group and GenericFD::jacobian_derivative_group must both be set to valid group names");
+ }
+
+ CCTK_REAL const *restrict jacobian_ptrs[9];
+ if (use_jacobian) GenericFD_GroupDataPointers(cctkGH, jacobian_group,
+ 9, jacobian_ptrs);
+
+ CCTK_REAL const *restrict const J11 = use_jacobian ? jacobian_ptrs[0] : 0;
+ CCTK_REAL const *restrict const J12 = use_jacobian ? jacobian_ptrs[1] : 0;
+ CCTK_REAL const *restrict const J13 = use_jacobian ? jacobian_ptrs[2] : 0;
+ CCTK_REAL const *restrict const J21 = use_jacobian ? jacobian_ptrs[3] : 0;
+ CCTK_REAL const *restrict const J22 = use_jacobian ? jacobian_ptrs[4] : 0;
+ CCTK_REAL const *restrict const J23 = use_jacobian ? jacobian_ptrs[5] : 0;
+ CCTK_REAL const *restrict const J31 = use_jacobian ? jacobian_ptrs[6] : 0;
+ CCTK_REAL const *restrict const J32 = use_jacobian ? jacobian_ptrs[7] : 0;
+ CCTK_REAL const *restrict const J33 = use_jacobian ? jacobian_ptrs[8] : 0;
+
+ CCTK_REAL const *restrict jacobian_derivative_ptrs[18];
+ if (use_jacobian) GenericFD_GroupDataPointers(cctkGH, jacobian_derivative_group,
+ 18, jacobian_derivative_ptrs);
+
+ CCTK_REAL const *restrict const dJ111 = use_jacobian ? jacobian_derivative_ptrs[0] : 0;
+ CCTK_REAL const *restrict const dJ112 = use_jacobian ? jacobian_derivative_ptrs[1] : 0;
+ CCTK_REAL const *restrict const dJ113 = use_jacobian ? jacobian_derivative_ptrs[2] : 0;
+ CCTK_REAL const *restrict const dJ122 = use_jacobian ? jacobian_derivative_ptrs[3] : 0;
+ CCTK_REAL const *restrict const dJ123 = use_jacobian ? jacobian_derivative_ptrs[4] : 0;
+ CCTK_REAL const *restrict const dJ133 = use_jacobian ? jacobian_derivative_ptrs[5] : 0;
+ CCTK_REAL const *restrict const dJ211 = use_jacobian ? jacobian_derivative_ptrs[6] : 0;
+ CCTK_REAL const *restrict const dJ212 = use_jacobian ? jacobian_derivative_ptrs[7] : 0;
+ CCTK_REAL const *restrict const dJ213 = use_jacobian ? jacobian_derivative_ptrs[8] : 0;
+ CCTK_REAL const *restrict const dJ222 = use_jacobian ? jacobian_derivative_ptrs[9] : 0;
+ CCTK_REAL const *restrict const dJ223 = use_jacobian ? jacobian_derivative_ptrs[10] : 0;
+ CCTK_REAL const *restrict const dJ233 = use_jacobian ? jacobian_derivative_ptrs[11] : 0;
+ CCTK_REAL const *restrict const dJ311 = use_jacobian ? jacobian_derivative_ptrs[12] : 0;
+ CCTK_REAL const *restrict const dJ312 = use_jacobian ? jacobian_derivative_ptrs[13] : 0;
+ CCTK_REAL const *restrict const dJ313 = use_jacobian ? jacobian_derivative_ptrs[14] : 0;
+ CCTK_REAL const *restrict const dJ322 = use_jacobian ? jacobian_derivative_ptrs[15] : 0;
+ CCTK_REAL const *restrict const dJ323 = use_jacobian ? jacobian_derivative_ptrs[16] : 0;
+ CCTK_REAL const *restrict const dJ333 = use_jacobian ? jacobian_derivative_ptrs[17] : 0;
+
+ /* 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_LOOP3 (ML_ADM_constraints,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ 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)
{
ptrdiff_t const index = di*i + dj*j + dk*k;
/* Assign local copies of grid functions */
- CCTK_REAL g11L = g11[index];
- CCTK_REAL g12L = g12[index];
- CCTK_REAL g13L = g13[index];
- CCTK_REAL g22L = g22[index];
- CCTK_REAL g23L = g23[index];
- CCTK_REAL g33L = g33[index];
- CCTK_REAL K11L = K11[index];
- CCTK_REAL K12L = K12[index];
- CCTK_REAL K13L = K13[index];
- CCTK_REAL K22L = K22[index];
- CCTK_REAL K23L = K23[index];
- CCTK_REAL K33L = K33[index];
+ CCTK_REAL_VEC g11L = vec_load(g11[index]);
+ CCTK_REAL_VEC g12L = vec_load(g12[index]);
+ CCTK_REAL_VEC g13L = vec_load(g13[index]);
+ CCTK_REAL_VEC g22L = vec_load(g22[index]);
+ CCTK_REAL_VEC g23L = vec_load(g23[index]);
+ CCTK_REAL_VEC g33L = vec_load(g33[index]);
+ CCTK_REAL_VEC K11L = vec_load(K11[index]);
+ CCTK_REAL_VEC K12L = vec_load(K12[index]);
+ CCTK_REAL_VEC K13L = vec_load(K13[index]);
+ CCTK_REAL_VEC K22L = vec_load(K22[index]);
+ CCTK_REAL_VEC K23L = vec_load(K23[index]);
+ CCTK_REAL_VEC K33L = vec_load(K33[index]);
+
+
+ CCTK_REAL_VEC dJ111L, dJ112L, dJ113L, dJ122L, dJ123L, dJ133L, dJ211L, dJ212L, dJ213L, dJ222L, dJ223L, dJ233L, dJ311L, dJ312L, dJ313L, dJ322L, dJ323L, dJ333L, J11L, J12L, J13L, J21L, J22L, J23L, J31L, J32L, J33L;
+ if (use_jacobian)
+ {
+ dJ111L = vec_load(dJ111[index]);
+ dJ112L = vec_load(dJ112[index]);
+ dJ113L = vec_load(dJ113[index]);
+ dJ122L = vec_load(dJ122[index]);
+ dJ123L = vec_load(dJ123[index]);
+ dJ133L = vec_load(dJ133[index]);
+ dJ211L = vec_load(dJ211[index]);
+ dJ212L = vec_load(dJ212[index]);
+ dJ213L = vec_load(dJ213[index]);
+ dJ222L = vec_load(dJ222[index]);
+ dJ223L = vec_load(dJ223[index]);
+ dJ233L = vec_load(dJ233[index]);
+ dJ311L = vec_load(dJ311[index]);
+ dJ312L = vec_load(dJ312[index]);
+ dJ313L = vec_load(dJ313[index]);
+ dJ322L = vec_load(dJ322[index]);
+ dJ323L = vec_load(dJ323[index]);
+ dJ333L = vec_load(dJ333[index]);
+ J11L = vec_load(J11[index]);
+ J12L = vec_load(J12[index]);
+ J13L = vec_load(J13[index]);
+ J21L = vec_load(J21[index]);
+ J22L = vec_load(J22[index]);
+ J23L = vec_load(J23[index]);
+ J31L = vec_load(J31[index]);
+ J32L = vec_load(J32[index]);
+ J33L = vec_load(J33[index]);
+ }
/* Include user supplied include files */
/* Precompute derivatives */
- CCTK_REAL const PDstandardNth1g11 = PDstandardNth1(&g11[index]);
- CCTK_REAL const PDstandardNth2g11 = PDstandardNth2(&g11[index]);
- CCTK_REAL const PDstandardNth3g11 = PDstandardNth3(&g11[index]);
- CCTK_REAL const PDstandardNth22g11 = PDstandardNth22(&g11[index]);
- CCTK_REAL const PDstandardNth33g11 = PDstandardNth33(&g11[index]);
- CCTK_REAL const PDstandardNth23g11 = PDstandardNth23(&g11[index]);
- CCTK_REAL const PDstandardNth1g12 = PDstandardNth1(&g12[index]);
- CCTK_REAL const PDstandardNth2g12 = PDstandardNth2(&g12[index]);
- CCTK_REAL const PDstandardNth3g12 = PDstandardNth3(&g12[index]);
- CCTK_REAL const PDstandardNth33g12 = PDstandardNth33(&g12[index]);
- CCTK_REAL const PDstandardNth12g12 = PDstandardNth12(&g12[index]);
- CCTK_REAL const PDstandardNth13g12 = PDstandardNth13(&g12[index]);
- CCTK_REAL const PDstandardNth23g12 = PDstandardNth23(&g12[index]);
- CCTK_REAL const PDstandardNth1g13 = PDstandardNth1(&g13[index]);
- CCTK_REAL const PDstandardNth2g13 = PDstandardNth2(&g13[index]);
- CCTK_REAL const PDstandardNth3g13 = PDstandardNth3(&g13[index]);
- CCTK_REAL const PDstandardNth22g13 = PDstandardNth22(&g13[index]);
- CCTK_REAL const PDstandardNth12g13 = PDstandardNth12(&g13[index]);
- CCTK_REAL const PDstandardNth13g13 = PDstandardNth13(&g13[index]);
- CCTK_REAL const PDstandardNth23g13 = PDstandardNth23(&g13[index]);
- CCTK_REAL const PDstandardNth1g22 = PDstandardNth1(&g22[index]);
- CCTK_REAL const PDstandardNth2g22 = PDstandardNth2(&g22[index]);
- CCTK_REAL const PDstandardNth3g22 = PDstandardNth3(&g22[index]);
- CCTK_REAL const PDstandardNth11g22 = PDstandardNth11(&g22[index]);
- CCTK_REAL const PDstandardNth33g22 = PDstandardNth33(&g22[index]);
- CCTK_REAL const PDstandardNth13g22 = PDstandardNth13(&g22[index]);
- CCTK_REAL const PDstandardNth1g23 = PDstandardNth1(&g23[index]);
- CCTK_REAL const PDstandardNth2g23 = PDstandardNth2(&g23[index]);
- CCTK_REAL const PDstandardNth3g23 = PDstandardNth3(&g23[index]);
- CCTK_REAL const PDstandardNth11g23 = PDstandardNth11(&g23[index]);
- CCTK_REAL const PDstandardNth12g23 = PDstandardNth12(&g23[index]);
- CCTK_REAL const PDstandardNth13g23 = PDstandardNth13(&g23[index]);
- CCTK_REAL const PDstandardNth23g23 = PDstandardNth23(&g23[index]);
- CCTK_REAL const PDstandardNth1g33 = PDstandardNth1(&g33[index]);
- CCTK_REAL const PDstandardNth2g33 = PDstandardNth2(&g33[index]);
- CCTK_REAL const PDstandardNth3g33 = PDstandardNth3(&g33[index]);
- CCTK_REAL const PDstandardNth11g33 = PDstandardNth11(&g33[index]);
- CCTK_REAL const PDstandardNth22g33 = PDstandardNth22(&g33[index]);
- CCTK_REAL const PDstandardNth12g33 = PDstandardNth12(&g33[index]);
- CCTK_REAL const PDstandardNth2K11 = PDstandardNth2(&K11[index]);
- CCTK_REAL const PDstandardNth3K11 = PDstandardNth3(&K11[index]);
- CCTK_REAL const PDstandardNth1K12 = PDstandardNth1(&K12[index]);
- CCTK_REAL const PDstandardNth2K12 = PDstandardNth2(&K12[index]);
- CCTK_REAL const PDstandardNth3K12 = PDstandardNth3(&K12[index]);
- CCTK_REAL const PDstandardNth1K13 = PDstandardNth1(&K13[index]);
- CCTK_REAL const PDstandardNth2K13 = PDstandardNth2(&K13[index]);
- CCTK_REAL const PDstandardNth3K13 = PDstandardNth3(&K13[index]);
- CCTK_REAL const PDstandardNth1K22 = PDstandardNth1(&K22[index]);
- CCTK_REAL const PDstandardNth3K22 = PDstandardNth3(&K22[index]);
- CCTK_REAL const PDstandardNth1K23 = PDstandardNth1(&K23[index]);
- CCTK_REAL const PDstandardNth2K23 = PDstandardNth2(&K23[index]);
- CCTK_REAL const PDstandardNth3K23 = PDstandardNth3(&K23[index]);
- CCTK_REAL const PDstandardNth1K33 = PDstandardNth1(&K33[index]);
- CCTK_REAL const PDstandardNth2K33 = PDstandardNth2(&K33[index]);
+ CCTK_REAL_VEC PDstandardNth1g11;
+ CCTK_REAL_VEC PDstandardNth2g11;
+ CCTK_REAL_VEC PDstandardNth3g11;
+ CCTK_REAL_VEC PDstandardNth11g11;
+ CCTK_REAL_VEC PDstandardNth22g11;
+ CCTK_REAL_VEC PDstandardNth33g11;
+ CCTK_REAL_VEC PDstandardNth12g11;
+ CCTK_REAL_VEC PDstandardNth13g11;
+ CCTK_REAL_VEC PDstandardNth23g11;
+ CCTK_REAL_VEC PDstandardNth1g12;
+ CCTK_REAL_VEC PDstandardNth2g12;
+ CCTK_REAL_VEC PDstandardNth3g12;
+ CCTK_REAL_VEC PDstandardNth11g12;
+ CCTK_REAL_VEC PDstandardNth22g12;
+ CCTK_REAL_VEC PDstandardNth33g12;
+ CCTK_REAL_VEC PDstandardNth12g12;
+ CCTK_REAL_VEC PDstandardNth13g12;
+ CCTK_REAL_VEC PDstandardNth23g12;
+ CCTK_REAL_VEC PDstandardNth1g13;
+ CCTK_REAL_VEC PDstandardNth2g13;
+ CCTK_REAL_VEC PDstandardNth3g13;
+ CCTK_REAL_VEC PDstandardNth11g13;
+ CCTK_REAL_VEC PDstandardNth22g13;
+ CCTK_REAL_VEC PDstandardNth33g13;
+ CCTK_REAL_VEC PDstandardNth12g13;
+ CCTK_REAL_VEC PDstandardNth13g13;
+ CCTK_REAL_VEC PDstandardNth23g13;
+ CCTK_REAL_VEC PDstandardNth1g22;
+ CCTK_REAL_VEC PDstandardNth2g22;
+ CCTK_REAL_VEC PDstandardNth3g22;
+ CCTK_REAL_VEC PDstandardNth11g22;
+ CCTK_REAL_VEC PDstandardNth22g22;
+ CCTK_REAL_VEC PDstandardNth33g22;
+ CCTK_REAL_VEC PDstandardNth12g22;
+ CCTK_REAL_VEC PDstandardNth13g22;
+ CCTK_REAL_VEC PDstandardNth23g22;
+ CCTK_REAL_VEC PDstandardNth1g23;
+ CCTK_REAL_VEC PDstandardNth2g23;
+ CCTK_REAL_VEC PDstandardNth3g23;
+ CCTK_REAL_VEC PDstandardNth11g23;
+ CCTK_REAL_VEC PDstandardNth22g23;
+ CCTK_REAL_VEC PDstandardNth33g23;
+ CCTK_REAL_VEC PDstandardNth12g23;
+ CCTK_REAL_VEC PDstandardNth13g23;
+ CCTK_REAL_VEC PDstandardNth23g23;
+ CCTK_REAL_VEC PDstandardNth1g33;
+ CCTK_REAL_VEC PDstandardNth2g33;
+ CCTK_REAL_VEC PDstandardNth3g33;
+ CCTK_REAL_VEC PDstandardNth11g33;
+ CCTK_REAL_VEC PDstandardNth22g33;
+ CCTK_REAL_VEC PDstandardNth33g33;
+ CCTK_REAL_VEC PDstandardNth12g33;
+ CCTK_REAL_VEC PDstandardNth13g33;
+ CCTK_REAL_VEC PDstandardNth23g33;
+ CCTK_REAL_VEC PDstandardNth1K11;
+ CCTK_REAL_VEC PDstandardNth2K11;
+ CCTK_REAL_VEC PDstandardNth3K11;
+ CCTK_REAL_VEC PDstandardNth1K12;
+ CCTK_REAL_VEC PDstandardNth2K12;
+ CCTK_REAL_VEC PDstandardNth3K12;
+ CCTK_REAL_VEC PDstandardNth1K13;
+ CCTK_REAL_VEC PDstandardNth2K13;
+ CCTK_REAL_VEC PDstandardNth3K13;
+ CCTK_REAL_VEC PDstandardNth1K22;
+ CCTK_REAL_VEC PDstandardNth2K22;
+ CCTK_REAL_VEC PDstandardNth3K22;
+ CCTK_REAL_VEC PDstandardNth1K23;
+ CCTK_REAL_VEC PDstandardNth2K23;
+ CCTK_REAL_VEC PDstandardNth3K23;
+ CCTK_REAL_VEC PDstandardNth1K33;
+ CCTK_REAL_VEC PDstandardNth2K33;
+ CCTK_REAL_VEC PDstandardNth3K33;
+
+ switch(fdOrder)
+ {
+ case 2:
+ PDstandardNth1g11 = PDstandardNthfdOrder21(&g11[index]);
+ PDstandardNth2g11 = PDstandardNthfdOrder22(&g11[index]);
+ PDstandardNth3g11 = PDstandardNthfdOrder23(&g11[index]);
+ PDstandardNth11g11 = PDstandardNthfdOrder211(&g11[index]);
+ PDstandardNth22g11 = PDstandardNthfdOrder222(&g11[index]);
+ PDstandardNth33g11 = PDstandardNthfdOrder233(&g11[index]);
+ PDstandardNth12g11 = PDstandardNthfdOrder212(&g11[index]);
+ PDstandardNth13g11 = PDstandardNthfdOrder213(&g11[index]);
+ PDstandardNth23g11 = PDstandardNthfdOrder223(&g11[index]);
+ PDstandardNth1g12 = PDstandardNthfdOrder21(&g12[index]);
+ PDstandardNth2g12 = PDstandardNthfdOrder22(&g12[index]);
+ PDstandardNth3g12 = PDstandardNthfdOrder23(&g12[index]);
+ PDstandardNth11g12 = PDstandardNthfdOrder211(&g12[index]);
+ PDstandardNth22g12 = PDstandardNthfdOrder222(&g12[index]);
+ PDstandardNth33g12 = PDstandardNthfdOrder233(&g12[index]);
+ PDstandardNth12g12 = PDstandardNthfdOrder212(&g12[index]);
+ PDstandardNth13g12 = PDstandardNthfdOrder213(&g12[index]);
+ PDstandardNth23g12 = PDstandardNthfdOrder223(&g12[index]);
+ PDstandardNth1g13 = PDstandardNthfdOrder21(&g13[index]);
+ PDstandardNth2g13 = PDstandardNthfdOrder22(&g13[index]);
+ PDstandardNth3g13 = PDstandardNthfdOrder23(&g13[index]);
+ PDstandardNth11g13 = PDstandardNthfdOrder211(&g13[index]);
+ PDstandardNth22g13 = PDstandardNthfdOrder222(&g13[index]);
+ PDstandardNth33g13 = PDstandardNthfdOrder233(&g13[index]);
+ PDstandardNth12g13 = PDstandardNthfdOrder212(&g13[index]);
+ PDstandardNth13g13 = PDstandardNthfdOrder213(&g13[index]);
+ PDstandardNth23g13 = PDstandardNthfdOrder223(&g13[index]);
+ PDstandardNth1g22 = PDstandardNthfdOrder21(&g22[index]);
+ PDstandardNth2g22 = PDstandardNthfdOrder22(&g22[index]);
+ PDstandardNth3g22 = PDstandardNthfdOrder23(&g22[index]);
+ PDstandardNth11g22 = PDstandardNthfdOrder211(&g22[index]);
+ PDstandardNth22g22 = PDstandardNthfdOrder222(&g22[index]);
+ PDstandardNth33g22 = PDstandardNthfdOrder233(&g22[index]);
+ PDstandardNth12g22 = PDstandardNthfdOrder212(&g22[index]);
+ PDstandardNth13g22 = PDstandardNthfdOrder213(&g22[index]);
+ PDstandardNth23g22 = PDstandardNthfdOrder223(&g22[index]);
+ PDstandardNth1g23 = PDstandardNthfdOrder21(&g23[index]);
+ PDstandardNth2g23 = PDstandardNthfdOrder22(&g23[index]);
+ PDstandardNth3g23 = PDstandardNthfdOrder23(&g23[index]);
+ PDstandardNth11g23 = PDstandardNthfdOrder211(&g23[index]);
+ PDstandardNth22g23 = PDstandardNthfdOrder222(&g23[index]);
+ PDstandardNth33g23 = PDstandardNthfdOrder233(&g23[index]);
+ PDstandardNth12g23 = PDstandardNthfdOrder212(&g23[index]);
+ PDstandardNth13g23 = PDstandardNthfdOrder213(&g23[index]);
+ PDstandardNth23g23 = PDstandardNthfdOrder223(&g23[index]);
+ PDstandardNth1g33 = PDstandardNthfdOrder21(&g33[index]);
+ PDstandardNth2g33 = PDstandardNthfdOrder22(&g33[index]);
+ PDstandardNth3g33 = PDstandardNthfdOrder23(&g33[index]);
+ PDstandardNth11g33 = PDstandardNthfdOrder211(&g33[index]);
+ PDstandardNth22g33 = PDstandardNthfdOrder222(&g33[index]);
+ PDstandardNth33g33 = PDstandardNthfdOrder233(&g33[index]);
+ PDstandardNth12g33 = PDstandardNthfdOrder212(&g33[index]);
+ PDstandardNth13g33 = PDstandardNthfdOrder213(&g33[index]);
+ PDstandardNth23g33 = PDstandardNthfdOrder223(&g33[index]);
+ PDstandardNth1K11 = PDstandardNthfdOrder21(&K11[index]);
+ PDstandardNth2K11 = PDstandardNthfdOrder22(&K11[index]);
+ PDstandardNth3K11 = PDstandardNthfdOrder23(&K11[index]);
+ PDstandardNth1K12 = PDstandardNthfdOrder21(&K12[index]);
+ PDstandardNth2K12 = PDstandardNthfdOrder22(&K12[index]);
+ PDstandardNth3K12 = PDstandardNthfdOrder23(&K12[index]);
+ PDstandardNth1K13 = PDstandardNthfdOrder21(&K13[index]);
+ PDstandardNth2K13 = PDstandardNthfdOrder22(&K13[index]);
+ PDstandardNth3K13 = PDstandardNthfdOrder23(&K13[index]);
+ PDstandardNth1K22 = PDstandardNthfdOrder21(&K22[index]);
+ PDstandardNth2K22 = PDstandardNthfdOrder22(&K22[index]);
+ PDstandardNth3K22 = PDstandardNthfdOrder23(&K22[index]);
+ PDstandardNth1K23 = PDstandardNthfdOrder21(&K23[index]);
+ PDstandardNth2K23 = PDstandardNthfdOrder22(&K23[index]);
+ PDstandardNth3K23 = PDstandardNthfdOrder23(&K23[index]);
+ PDstandardNth1K33 = PDstandardNthfdOrder21(&K33[index]);
+ PDstandardNth2K33 = PDstandardNthfdOrder22(&K33[index]);
+ PDstandardNth3K33 = PDstandardNthfdOrder23(&K33[index]);
+ break;
+
+ case 4:
+ PDstandardNth1g11 = PDstandardNthfdOrder41(&g11[index]);
+ PDstandardNth2g11 = PDstandardNthfdOrder42(&g11[index]);
+ PDstandardNth3g11 = PDstandardNthfdOrder43(&g11[index]);
+ PDstandardNth11g11 = PDstandardNthfdOrder411(&g11[index]);
+ PDstandardNth22g11 = PDstandardNthfdOrder422(&g11[index]);
+ PDstandardNth33g11 = PDstandardNthfdOrder433(&g11[index]);
+ PDstandardNth12g11 = PDstandardNthfdOrder412(&g11[index]);
+ PDstandardNth13g11 = PDstandardNthfdOrder413(&g11[index]);
+ PDstandardNth23g11 = PDstandardNthfdOrder423(&g11[index]);
+ PDstandardNth1g12 = PDstandardNthfdOrder41(&g12[index]);
+ PDstandardNth2g12 = PDstandardNthfdOrder42(&g12[index]);
+ PDstandardNth3g12 = PDstandardNthfdOrder43(&g12[index]);
+ PDstandardNth11g12 = PDstandardNthfdOrder411(&g12[index]);
+ PDstandardNth22g12 = PDstandardNthfdOrder422(&g12[index]);
+ PDstandardNth33g12 = PDstandardNthfdOrder433(&g12[index]);
+ PDstandardNth12g12 = PDstandardNthfdOrder412(&g12[index]);
+ PDstandardNth13g12 = PDstandardNthfdOrder413(&g12[index]);
+ PDstandardNth23g12 = PDstandardNthfdOrder423(&g12[index]);
+ PDstandardNth1g13 = PDstandardNthfdOrder41(&g13[index]);
+ PDstandardNth2g13 = PDstandardNthfdOrder42(&g13[index]);
+ PDstandardNth3g13 = PDstandardNthfdOrder43(&g13[index]);
+ PDstandardNth11g13 = PDstandardNthfdOrder411(&g13[index]);
+ PDstandardNth22g13 = PDstandardNthfdOrder422(&g13[index]);
+ PDstandardNth33g13 = PDstandardNthfdOrder433(&g13[index]);
+ PDstandardNth12g13 = PDstandardNthfdOrder412(&g13[index]);
+ PDstandardNth13g13 = PDstandardNthfdOrder413(&g13[index]);
+ PDstandardNth23g13 = PDstandardNthfdOrder423(&g13[index]);
+ PDstandardNth1g22 = PDstandardNthfdOrder41(&g22[index]);
+ PDstandardNth2g22 = PDstandardNthfdOrder42(&g22[index]);
+ PDstandardNth3g22 = PDstandardNthfdOrder43(&g22[index]);
+ PDstandardNth11g22 = PDstandardNthfdOrder411(&g22[index]);
+ PDstandardNth22g22 = PDstandardNthfdOrder422(&g22[index]);
+ PDstandardNth33g22 = PDstandardNthfdOrder433(&g22[index]);
+ PDstandardNth12g22 = PDstandardNthfdOrder412(&g22[index]);
+ PDstandardNth13g22 = PDstandardNthfdOrder413(&g22[index]);
+ PDstandardNth23g22 = PDstandardNthfdOrder423(&g22[index]);
+ PDstandardNth1g23 = PDstandardNthfdOrder41(&g23[index]);
+ PDstandardNth2g23 = PDstandardNthfdOrder42(&g23[index]);
+ PDstandardNth3g23 = PDstandardNthfdOrder43(&g23[index]);
+ PDstandardNth11g23 = PDstandardNthfdOrder411(&g23[index]);
+ PDstandardNth22g23 = PDstandardNthfdOrder422(&g23[index]);
+ PDstandardNth33g23 = PDstandardNthfdOrder433(&g23[index]);
+ PDstandardNth12g23 = PDstandardNthfdOrder412(&g23[index]);
+ PDstandardNth13g23 = PDstandardNthfdOrder413(&g23[index]);
+ PDstandardNth23g23 = PDstandardNthfdOrder423(&g23[index]);
+ PDstandardNth1g33 = PDstandardNthfdOrder41(&g33[index]);
+ PDstandardNth2g33 = PDstandardNthfdOrder42(&g33[index]);
+ PDstandardNth3g33 = PDstandardNthfdOrder43(&g33[index]);
+ PDstandardNth11g33 = PDstandardNthfdOrder411(&g33[index]);
+ PDstandardNth22g33 = PDstandardNthfdOrder422(&g33[index]);
+ PDstandardNth33g33 = PDstandardNthfdOrder433(&g33[index]);
+ PDstandardNth12g33 = PDstandardNthfdOrder412(&g33[index]);
+ PDstandardNth13g33 = PDstandardNthfdOrder413(&g33[index]);
+ PDstandardNth23g33 = PDstandardNthfdOrder423(&g33[index]);
+ PDstandardNth1K11 = PDstandardNthfdOrder41(&K11[index]);
+ PDstandardNth2K11 = PDstandardNthfdOrder42(&K11[index]);
+ PDstandardNth3K11 = PDstandardNthfdOrder43(&K11[index]);
+ PDstandardNth1K12 = PDstandardNthfdOrder41(&K12[index]);
+ PDstandardNth2K12 = PDstandardNthfdOrder42(&K12[index]);
+ PDstandardNth3K12 = PDstandardNthfdOrder43(&K12[index]);
+ PDstandardNth1K13 = PDstandardNthfdOrder41(&K13[index]);
+ PDstandardNth2K13 = PDstandardNthfdOrder42(&K13[index]);
+ PDstandardNth3K13 = PDstandardNthfdOrder43(&K13[index]);
+ PDstandardNth1K22 = PDstandardNthfdOrder41(&K22[index]);
+ PDstandardNth2K22 = PDstandardNthfdOrder42(&K22[index]);
+ PDstandardNth3K22 = PDstandardNthfdOrder43(&K22[index]);
+ PDstandardNth1K23 = PDstandardNthfdOrder41(&K23[index]);
+ PDstandardNth2K23 = PDstandardNthfdOrder42(&K23[index]);
+ PDstandardNth3K23 = PDstandardNthfdOrder43(&K23[index]);
+ PDstandardNth1K33 = PDstandardNthfdOrder41(&K33[index]);
+ PDstandardNth2K33 = PDstandardNthfdOrder42(&K33[index]);
+ PDstandardNth3K33 = PDstandardNthfdOrder43(&K33[index]);
+ break;
+
+ case 6:
+ PDstandardNth1g11 = PDstandardNthfdOrder61(&g11[index]);
+ PDstandardNth2g11 = PDstandardNthfdOrder62(&g11[index]);
+ PDstandardNth3g11 = PDstandardNthfdOrder63(&g11[index]);
+ PDstandardNth11g11 = PDstandardNthfdOrder611(&g11[index]);
+ PDstandardNth22g11 = PDstandardNthfdOrder622(&g11[index]);
+ PDstandardNth33g11 = PDstandardNthfdOrder633(&g11[index]);
+ PDstandardNth12g11 = PDstandardNthfdOrder612(&g11[index]);
+ PDstandardNth13g11 = PDstandardNthfdOrder613(&g11[index]);
+ PDstandardNth23g11 = PDstandardNthfdOrder623(&g11[index]);
+ PDstandardNth1g12 = PDstandardNthfdOrder61(&g12[index]);
+ PDstandardNth2g12 = PDstandardNthfdOrder62(&g12[index]);
+ PDstandardNth3g12 = PDstandardNthfdOrder63(&g12[index]);
+ PDstandardNth11g12 = PDstandardNthfdOrder611(&g12[index]);
+ PDstandardNth22g12 = PDstandardNthfdOrder622(&g12[index]);
+ PDstandardNth33g12 = PDstandardNthfdOrder633(&g12[index]);
+ PDstandardNth12g12 = PDstandardNthfdOrder612(&g12[index]);
+ PDstandardNth13g12 = PDstandardNthfdOrder613(&g12[index]);
+ PDstandardNth23g12 = PDstandardNthfdOrder623(&g12[index]);
+ PDstandardNth1g13 = PDstandardNthfdOrder61(&g13[index]);
+ PDstandardNth2g13 = PDstandardNthfdOrder62(&g13[index]);
+ PDstandardNth3g13 = PDstandardNthfdOrder63(&g13[index]);
+ PDstandardNth11g13 = PDstandardNthfdOrder611(&g13[index]);
+ PDstandardNth22g13 = PDstandardNthfdOrder622(&g13[index]);
+ PDstandardNth33g13 = PDstandardNthfdOrder633(&g13[index]);
+ PDstandardNth12g13 = PDstandardNthfdOrder612(&g13[index]);
+ PDstandardNth13g13 = PDstandardNthfdOrder613(&g13[index]);
+ PDstandardNth23g13 = PDstandardNthfdOrder623(&g13[index]);
+ PDstandardNth1g22 = PDstandardNthfdOrder61(&g22[index]);
+ PDstandardNth2g22 = PDstandardNthfdOrder62(&g22[index]);
+ PDstandardNth3g22 = PDstandardNthfdOrder63(&g22[index]);
+ PDstandardNth11g22 = PDstandardNthfdOrder611(&g22[index]);
+ PDstandardNth22g22 = PDstandardNthfdOrder622(&g22[index]);
+ PDstandardNth33g22 = PDstandardNthfdOrder633(&g22[index]);
+ PDstandardNth12g22 = PDstandardNthfdOrder612(&g22[index]);
+ PDstandardNth13g22 = PDstandardNthfdOrder613(&g22[index]);
+ PDstandardNth23g22 = PDstandardNthfdOrder623(&g22[index]);
+ PDstandardNth1g23 = PDstandardNthfdOrder61(&g23[index]);
+ PDstandardNth2g23 = PDstandardNthfdOrder62(&g23[index]);
+ PDstandardNth3g23 = PDstandardNthfdOrder63(&g23[index]);
+ PDstandardNth11g23 = PDstandardNthfdOrder611(&g23[index]);
+ PDstandardNth22g23 = PDstandardNthfdOrder622(&g23[index]);
+ PDstandardNth33g23 = PDstandardNthfdOrder633(&g23[index]);
+ PDstandardNth12g23 = PDstandardNthfdOrder612(&g23[index]);
+ PDstandardNth13g23 = PDstandardNthfdOrder613(&g23[index]);
+ PDstandardNth23g23 = PDstandardNthfdOrder623(&g23[index]);
+ PDstandardNth1g33 = PDstandardNthfdOrder61(&g33[index]);
+ PDstandardNth2g33 = PDstandardNthfdOrder62(&g33[index]);
+ PDstandardNth3g33 = PDstandardNthfdOrder63(&g33[index]);
+ PDstandardNth11g33 = PDstandardNthfdOrder611(&g33[index]);
+ PDstandardNth22g33 = PDstandardNthfdOrder622(&g33[index]);
+ PDstandardNth33g33 = PDstandardNthfdOrder633(&g33[index]);
+ PDstandardNth12g33 = PDstandardNthfdOrder612(&g33[index]);
+ PDstandardNth13g33 = PDstandardNthfdOrder613(&g33[index]);
+ PDstandardNth23g33 = PDstandardNthfdOrder623(&g33[index]);
+ PDstandardNth1K11 = PDstandardNthfdOrder61(&K11[index]);
+ PDstandardNth2K11 = PDstandardNthfdOrder62(&K11[index]);
+ PDstandardNth3K11 = PDstandardNthfdOrder63(&K11[index]);
+ PDstandardNth1K12 = PDstandardNthfdOrder61(&K12[index]);
+ PDstandardNth2K12 = PDstandardNthfdOrder62(&K12[index]);
+ PDstandardNth3K12 = PDstandardNthfdOrder63(&K12[index]);
+ PDstandardNth1K13 = PDstandardNthfdOrder61(&K13[index]);
+ PDstandardNth2K13 = PDstandardNthfdOrder62(&K13[index]);
+ PDstandardNth3K13 = PDstandardNthfdOrder63(&K13[index]);
+ PDstandardNth1K22 = PDstandardNthfdOrder61(&K22[index]);
+ PDstandardNth2K22 = PDstandardNthfdOrder62(&K22[index]);
+ PDstandardNth3K22 = PDstandardNthfdOrder63(&K22[index]);
+ PDstandardNth1K23 = PDstandardNthfdOrder61(&K23[index]);
+ PDstandardNth2K23 = PDstandardNthfdOrder62(&K23[index]);
+ PDstandardNth3K23 = PDstandardNthfdOrder63(&K23[index]);
+ PDstandardNth1K33 = PDstandardNthfdOrder61(&K33[index]);
+ PDstandardNth2K33 = PDstandardNthfdOrder62(&K33[index]);
+ PDstandardNth3K33 = PDstandardNthfdOrder63(&K33[index]);
+ break;
+
+ case 8:
+ PDstandardNth1g11 = PDstandardNthfdOrder81(&g11[index]);
+ PDstandardNth2g11 = PDstandardNthfdOrder82(&g11[index]);
+ PDstandardNth3g11 = PDstandardNthfdOrder83(&g11[index]);
+ PDstandardNth11g11 = PDstandardNthfdOrder811(&g11[index]);
+ PDstandardNth22g11 = PDstandardNthfdOrder822(&g11[index]);
+ PDstandardNth33g11 = PDstandardNthfdOrder833(&g11[index]);
+ PDstandardNth12g11 = PDstandardNthfdOrder812(&g11[index]);
+ PDstandardNth13g11 = PDstandardNthfdOrder813(&g11[index]);
+ PDstandardNth23g11 = PDstandardNthfdOrder823(&g11[index]);
+ PDstandardNth1g12 = PDstandardNthfdOrder81(&g12[index]);
+ PDstandardNth2g12 = PDstandardNthfdOrder82(&g12[index]);
+ PDstandardNth3g12 = PDstandardNthfdOrder83(&g12[index]);
+ PDstandardNth11g12 = PDstandardNthfdOrder811(&g12[index]);
+ PDstandardNth22g12 = PDstandardNthfdOrder822(&g12[index]);
+ PDstandardNth33g12 = PDstandardNthfdOrder833(&g12[index]);
+ PDstandardNth12g12 = PDstandardNthfdOrder812(&g12[index]);
+ PDstandardNth13g12 = PDstandardNthfdOrder813(&g12[index]);
+ PDstandardNth23g12 = PDstandardNthfdOrder823(&g12[index]);
+ PDstandardNth1g13 = PDstandardNthfdOrder81(&g13[index]);
+ PDstandardNth2g13 = PDstandardNthfdOrder82(&g13[index]);
+ PDstandardNth3g13 = PDstandardNthfdOrder83(&g13[index]);
+ PDstandardNth11g13 = PDstandardNthfdOrder811(&g13[index]);
+ PDstandardNth22g13 = PDstandardNthfdOrder822(&g13[index]);
+ PDstandardNth33g13 = PDstandardNthfdOrder833(&g13[index]);
+ PDstandardNth12g13 = PDstandardNthfdOrder812(&g13[index]);
+ PDstandardNth13g13 = PDstandardNthfdOrder813(&g13[index]);
+ PDstandardNth23g13 = PDstandardNthfdOrder823(&g13[index]);
+ PDstandardNth1g22 = PDstandardNthfdOrder81(&g22[index]);
+ PDstandardNth2g22 = PDstandardNthfdOrder82(&g22[index]);
+ PDstandardNth3g22 = PDstandardNthfdOrder83(&g22[index]);
+ PDstandardNth11g22 = PDstandardNthfdOrder811(&g22[index]);
+ PDstandardNth22g22 = PDstandardNthfdOrder822(&g22[index]);
+ PDstandardNth33g22 = PDstandardNthfdOrder833(&g22[index]);
+ PDstandardNth12g22 = PDstandardNthfdOrder812(&g22[index]);
+ PDstandardNth13g22 = PDstandardNthfdOrder813(&g22[index]);
+ PDstandardNth23g22 = PDstandardNthfdOrder823(&g22[index]);
+ PDstandardNth1g23 = PDstandardNthfdOrder81(&g23[index]);
+ PDstandardNth2g23 = PDstandardNthfdOrder82(&g23[index]);
+ PDstandardNth3g23 = PDstandardNthfdOrder83(&g23[index]);
+ PDstandardNth11g23 = PDstandardNthfdOrder811(&g23[index]);
+ PDstandardNth22g23 = PDstandardNthfdOrder822(&g23[index]);
+ PDstandardNth33g23 = PDstandardNthfdOrder833(&g23[index]);
+ PDstandardNth12g23 = PDstandardNthfdOrder812(&g23[index]);
+ PDstandardNth13g23 = PDstandardNthfdOrder813(&g23[index]);
+ PDstandardNth23g23 = PDstandardNthfdOrder823(&g23[index]);
+ PDstandardNth1g33 = PDstandardNthfdOrder81(&g33[index]);
+ PDstandardNth2g33 = PDstandardNthfdOrder82(&g33[index]);
+ PDstandardNth3g33 = PDstandardNthfdOrder83(&g33[index]);
+ PDstandardNth11g33 = PDstandardNthfdOrder811(&g33[index]);
+ PDstandardNth22g33 = PDstandardNthfdOrder822(&g33[index]);
+ PDstandardNth33g33 = PDstandardNthfdOrder833(&g33[index]);
+ PDstandardNth12g33 = PDstandardNthfdOrder812(&g33[index]);
+ PDstandardNth13g33 = PDstandardNthfdOrder813(&g33[index]);
+ PDstandardNth23g33 = PDstandardNthfdOrder823(&g33[index]);
+ PDstandardNth1K11 = PDstandardNthfdOrder81(&K11[index]);
+ PDstandardNth2K11 = PDstandardNthfdOrder82(&K11[index]);
+ PDstandardNth3K11 = PDstandardNthfdOrder83(&K11[index]);
+ PDstandardNth1K12 = PDstandardNthfdOrder81(&K12[index]);
+ PDstandardNth2K12 = PDstandardNthfdOrder82(&K12[index]);
+ PDstandardNth3K12 = PDstandardNthfdOrder83(&K12[index]);
+ PDstandardNth1K13 = PDstandardNthfdOrder81(&K13[index]);
+ PDstandardNth2K13 = PDstandardNthfdOrder82(&K13[index]);
+ PDstandardNth3K13 = PDstandardNthfdOrder83(&K13[index]);
+ PDstandardNth1K22 = PDstandardNthfdOrder81(&K22[index]);
+ PDstandardNth2K22 = PDstandardNthfdOrder82(&K22[index]);
+ PDstandardNth3K22 = PDstandardNthfdOrder83(&K22[index]);
+ PDstandardNth1K23 = PDstandardNthfdOrder81(&K23[index]);
+ PDstandardNth2K23 = PDstandardNthfdOrder82(&K23[index]);
+ PDstandardNth3K23 = PDstandardNthfdOrder83(&K23[index]);
+ PDstandardNth1K33 = PDstandardNthfdOrder81(&K33[index]);
+ PDstandardNth2K33 = PDstandardNthfdOrder82(&K33[index]);
+ PDstandardNth3K33 = PDstandardNthfdOrder83(&K33[index]);
+ break;
+ }
/* Calculate temporaries and grid functions */
- CCTK_REAL detg = 2*g12L*g13L*g23L + g33L*(g11L*g22L - SQR(g12L)) -
- g22L*SQR(g13L) - g11L*SQR(g23L);
+ CCTK_REAL_VEC JacPDstandardNth11g22;
+ CCTK_REAL_VEC JacPDstandardNth11g23;
+ CCTK_REAL_VEC JacPDstandardNth11g33;
+ CCTK_REAL_VEC JacPDstandardNth12g11;
+ CCTK_REAL_VEC JacPDstandardNth12g12;
+ CCTK_REAL_VEC JacPDstandardNth12g13;
+ CCTK_REAL_VEC JacPDstandardNth12g22;
+ CCTK_REAL_VEC JacPDstandardNth12g23;
+ CCTK_REAL_VEC JacPDstandardNth12g33;
+ CCTK_REAL_VEC JacPDstandardNth13g11;
+ CCTK_REAL_VEC JacPDstandardNth13g12;
+ CCTK_REAL_VEC JacPDstandardNth13g13;
+ CCTK_REAL_VEC JacPDstandardNth13g22;
+ CCTK_REAL_VEC JacPDstandardNth13g23;
+ CCTK_REAL_VEC JacPDstandardNth13g33;
+ CCTK_REAL_VEC JacPDstandardNth1g11;
+ CCTK_REAL_VEC JacPDstandardNth1g12;
+ CCTK_REAL_VEC JacPDstandardNth1g13;
+ CCTK_REAL_VEC JacPDstandardNth1g22;
+ CCTK_REAL_VEC JacPDstandardNth1g23;
+ CCTK_REAL_VEC JacPDstandardNth1g33;
+ CCTK_REAL_VEC JacPDstandardNth1K12;
+ CCTK_REAL_VEC JacPDstandardNth1K13;
+ CCTK_REAL_VEC JacPDstandardNth1K22;
+ CCTK_REAL_VEC JacPDstandardNth1K23;
+ CCTK_REAL_VEC JacPDstandardNth1K33;
+ CCTK_REAL_VEC JacPDstandardNth21g11;
+ CCTK_REAL_VEC JacPDstandardNth21g12;
+ CCTK_REAL_VEC JacPDstandardNth21g13;
+ CCTK_REAL_VEC JacPDstandardNth21g22;
+ CCTK_REAL_VEC JacPDstandardNth21g23;
+ CCTK_REAL_VEC JacPDstandardNth21g33;
+ CCTK_REAL_VEC JacPDstandardNth22g11;
+ CCTK_REAL_VEC JacPDstandardNth22g13;
+ CCTK_REAL_VEC JacPDstandardNth22g33;
+ CCTK_REAL_VEC JacPDstandardNth23g11;
+ CCTK_REAL_VEC JacPDstandardNth23g12;
+ CCTK_REAL_VEC JacPDstandardNth23g13;
+ CCTK_REAL_VEC JacPDstandardNth23g22;
+ CCTK_REAL_VEC JacPDstandardNth23g23;
+ CCTK_REAL_VEC JacPDstandardNth23g33;
+ CCTK_REAL_VEC JacPDstandardNth2g11;
+ CCTK_REAL_VEC JacPDstandardNth2g12;
+ CCTK_REAL_VEC JacPDstandardNth2g13;
+ CCTK_REAL_VEC JacPDstandardNth2g22;
+ CCTK_REAL_VEC JacPDstandardNth2g23;
+ CCTK_REAL_VEC JacPDstandardNth2g33;
+ CCTK_REAL_VEC JacPDstandardNth2K11;
+ CCTK_REAL_VEC JacPDstandardNth2K12;
+ CCTK_REAL_VEC JacPDstandardNth2K13;
+ CCTK_REAL_VEC JacPDstandardNth2K23;
+ CCTK_REAL_VEC JacPDstandardNth2K33;
+ CCTK_REAL_VEC JacPDstandardNth31g11;
+ CCTK_REAL_VEC JacPDstandardNth31g12;
+ CCTK_REAL_VEC JacPDstandardNth31g13;
+ CCTK_REAL_VEC JacPDstandardNth31g22;
+ CCTK_REAL_VEC JacPDstandardNth31g23;
+ CCTK_REAL_VEC JacPDstandardNth31g33;
+ CCTK_REAL_VEC JacPDstandardNth32g11;
+ CCTK_REAL_VEC JacPDstandardNth32g12;
+ CCTK_REAL_VEC JacPDstandardNth32g13;
+ CCTK_REAL_VEC JacPDstandardNth32g22;
+ CCTK_REAL_VEC JacPDstandardNth32g23;
+ CCTK_REAL_VEC JacPDstandardNth32g33;
+ CCTK_REAL_VEC JacPDstandardNth33g11;
+ CCTK_REAL_VEC JacPDstandardNth33g12;
+ CCTK_REAL_VEC JacPDstandardNth33g22;
+ CCTK_REAL_VEC JacPDstandardNth3g11;
+ CCTK_REAL_VEC JacPDstandardNth3g12;
+ CCTK_REAL_VEC JacPDstandardNth3g13;
+ CCTK_REAL_VEC JacPDstandardNth3g22;
+ CCTK_REAL_VEC JacPDstandardNth3g23;
+ CCTK_REAL_VEC JacPDstandardNth3g33;
+ CCTK_REAL_VEC JacPDstandardNth3K11;
+ CCTK_REAL_VEC JacPDstandardNth3K12;
+ CCTK_REAL_VEC JacPDstandardNth3K13;
+ CCTK_REAL_VEC JacPDstandardNth3K22;
+ CCTK_REAL_VEC JacPDstandardNth3K23;
+
+ if (use_jacobian)
+ {
+ JacPDstandardNth1g11 =
+ kmadd(J11L,PDstandardNth1g11,kmadd(J21L,PDstandardNth2g11,kmul(J31L,PDstandardNth3g11)));
+
+ JacPDstandardNth1g12 =
+ kmadd(J11L,PDstandardNth1g12,kmadd(J21L,PDstandardNth2g12,kmul(J31L,PDstandardNth3g12)));
+
+ JacPDstandardNth1g13 =
+ kmadd(J11L,PDstandardNth1g13,kmadd(J21L,PDstandardNth2g13,kmul(J31L,PDstandardNth3g13)));
+
+ JacPDstandardNth1g22 =
+ kmadd(J11L,PDstandardNth1g22,kmadd(J21L,PDstandardNth2g22,kmul(J31L,PDstandardNth3g22)));
+
+ JacPDstandardNth1g23 =
+ kmadd(J11L,PDstandardNth1g23,kmadd(J21L,PDstandardNth2g23,kmul(J31L,PDstandardNth3g23)));
+
+ JacPDstandardNth1g33 =
+ kmadd(J11L,PDstandardNth1g33,kmadd(J21L,PDstandardNth2g33,kmul(J31L,PDstandardNth3g33)));
+
+ JacPDstandardNth1K12 =
+ kmadd(J11L,PDstandardNth1K12,kmadd(J21L,PDstandardNth2K12,kmul(J31L,PDstandardNth3K12)));
+
+ JacPDstandardNth1K13 =
+ kmadd(J11L,PDstandardNth1K13,kmadd(J21L,PDstandardNth2K13,kmul(J31L,PDstandardNth3K13)));
+
+ JacPDstandardNth1K22 =
+ kmadd(J11L,PDstandardNth1K22,kmadd(J21L,PDstandardNth2K22,kmul(J31L,PDstandardNth3K22)));
+
+ JacPDstandardNth1K23 =
+ kmadd(J11L,PDstandardNth1K23,kmadd(J21L,PDstandardNth2K23,kmul(J31L,PDstandardNth3K23)));
+
+ JacPDstandardNth1K33 =
+ kmadd(J11L,PDstandardNth1K33,kmadd(J21L,PDstandardNth2K33,kmul(J31L,PDstandardNth3K33)));
+
+ JacPDstandardNth2g11 =
+ kmadd(J12L,PDstandardNth1g11,kmadd(J22L,PDstandardNth2g11,kmul(J32L,PDstandardNth3g11)));
+
+ JacPDstandardNth2g12 =
+ kmadd(J12L,PDstandardNth1g12,kmadd(J22L,PDstandardNth2g12,kmul(J32L,PDstandardNth3g12)));
+
+ JacPDstandardNth2g13 =
+ kmadd(J12L,PDstandardNth1g13,kmadd(J22L,PDstandardNth2g13,kmul(J32L,PDstandardNth3g13)));
+
+ JacPDstandardNth2g22 =
+ kmadd(J12L,PDstandardNth1g22,kmadd(J22L,PDstandardNth2g22,kmul(J32L,PDstandardNth3g22)));
+
+ JacPDstandardNth2g23 =
+ kmadd(J12L,PDstandardNth1g23,kmadd(J22L,PDstandardNth2g23,kmul(J32L,PDstandardNth3g23)));
+
+ JacPDstandardNth2g33 =
+ kmadd(J12L,PDstandardNth1g33,kmadd(J22L,PDstandardNth2g33,kmul(J32L,PDstandardNth3g33)));
+
+ JacPDstandardNth2K11 =
+ kmadd(J12L,PDstandardNth1K11,kmadd(J22L,PDstandardNth2K11,kmul(J32L,PDstandardNth3K11)));
+
+ JacPDstandardNth2K12 =
+ kmadd(J12L,PDstandardNth1K12,kmadd(J22L,PDstandardNth2K12,kmul(J32L,PDstandardNth3K12)));
+
+ JacPDstandardNth2K13 =
+ kmadd(J12L,PDstandardNth1K13,kmadd(J22L,PDstandardNth2K13,kmul(J32L,PDstandardNth3K13)));
+
+ JacPDstandardNth2K23 =
+ kmadd(J12L,PDstandardNth1K23,kmadd(J22L,PDstandardNth2K23,kmul(J32L,PDstandardNth3K23)));
+
+ JacPDstandardNth2K33 =
+ kmadd(J12L,PDstandardNth1K33,kmadd(J22L,PDstandardNth2K33,kmul(J32L,PDstandardNth3K33)));
+
+ JacPDstandardNth3g11 =
+ kmadd(J13L,PDstandardNth1g11,kmadd(J23L,PDstandardNth2g11,kmul(J33L,PDstandardNth3g11)));
+
+ JacPDstandardNth3g12 =
+ kmadd(J13L,PDstandardNth1g12,kmadd(J23L,PDstandardNth2g12,kmul(J33L,PDstandardNth3g12)));
+
+ JacPDstandardNth3g13 =
+ kmadd(J13L,PDstandardNth1g13,kmadd(J23L,PDstandardNth2g13,kmul(J33L,PDstandardNth3g13)));
+
+ JacPDstandardNth3g22 =
+ kmadd(J13L,PDstandardNth1g22,kmadd(J23L,PDstandardNth2g22,kmul(J33L,PDstandardNth3g22)));
+
+ JacPDstandardNth3g23 =
+ kmadd(J13L,PDstandardNth1g23,kmadd(J23L,PDstandardNth2g23,kmul(J33L,PDstandardNth3g23)));
+
+ JacPDstandardNth3g33 =
+ kmadd(J13L,PDstandardNth1g33,kmadd(J23L,PDstandardNth2g33,kmul(J33L,PDstandardNth3g33)));
+
+ JacPDstandardNth3K11 =
+ kmadd(J13L,PDstandardNth1K11,kmadd(J23L,PDstandardNth2K11,kmul(J33L,PDstandardNth3K11)));
+
+ JacPDstandardNth3K12 =
+ kmadd(J13L,PDstandardNth1K12,kmadd(J23L,PDstandardNth2K12,kmul(J33L,PDstandardNth3K12)));
+
+ JacPDstandardNth3K13 =
+ kmadd(J13L,PDstandardNth1K13,kmadd(J23L,PDstandardNth2K13,kmul(J33L,PDstandardNth3K13)));
+
+ JacPDstandardNth3K22 =
+ kmadd(J13L,PDstandardNth1K22,kmadd(J23L,PDstandardNth2K22,kmul(J33L,PDstandardNth3K22)));
+
+ JacPDstandardNth3K23 =
+ kmadd(J13L,PDstandardNth1K23,kmadd(J23L,PDstandardNth2K23,kmul(J33L,PDstandardNth3K23)));
+
+ JacPDstandardNth11g22 =
+ kmadd(dJ111L,PDstandardNth1g22,kmadd(dJ211L,PDstandardNth2g22,kmadd(dJ311L,PDstandardNth3g22,kmadd(PDstandardNth11g22,SQR(J11L),kmadd(PDstandardNth22g22,SQR(J21L),kmadd(PDstandardNth33g22,SQR(J31L),kmul(kmadd(J11L,kmadd(J21L,PDstandardNth12g22,kmul(J31L,PDstandardNth13g22)),kmul(J21L,kmul(J31L,PDstandardNth23g22))),ToReal(2))))))));
+
+ JacPDstandardNth11g23 =
+ kmadd(dJ111L,PDstandardNth1g23,kmadd(dJ211L,PDstandardNth2g23,kmadd(dJ311L,PDstandardNth3g23,kmadd(PDstandardNth11g23,SQR(J11L),kmadd(PDstandardNth22g23,SQR(J21L),kmadd(PDstandardNth33g23,SQR(J31L),kmul(kmadd(J11L,kmadd(J21L,PDstandardNth12g23,kmul(J31L,PDstandardNth13g23)),kmul(J21L,kmul(J31L,PDstandardNth23g23))),ToReal(2))))))));
+
+ JacPDstandardNth11g33 =
+ kmadd(dJ111L,PDstandardNth1g33,kmadd(dJ211L,PDstandardNth2g33,kmadd(dJ311L,PDstandardNth3g33,kmadd(PDstandardNth11g33,SQR(J11L),kmadd(PDstandardNth22g33,SQR(J21L),kmadd(PDstandardNth33g33,SQR(J31L),kmul(kmadd(J11L,kmadd(J21L,PDstandardNth12g33,kmul(J31L,PDstandardNth13g33)),kmul(J21L,kmul(J31L,PDstandardNth23g33))),ToReal(2))))))));
+
+ JacPDstandardNth22g11 =
+ kmadd(dJ122L,PDstandardNth1g11,kmadd(dJ222L,PDstandardNth2g11,kmadd(dJ322L,PDstandardNth3g11,kmadd(PDstandardNth11g11,SQR(J12L),kmadd(PDstandardNth22g11,SQR(J22L),kmadd(PDstandardNth33g11,SQR(J32L),kmul(kmadd(J12L,kmadd(J22L,PDstandardNth12g11,kmul(J32L,PDstandardNth13g11)),kmul(J22L,kmul(J32L,PDstandardNth23g11))),ToReal(2))))))));
+
+ JacPDstandardNth22g13 =
+ kmadd(dJ122L,PDstandardNth1g13,kmadd(dJ222L,PDstandardNth2g13,kmadd(dJ322L,PDstandardNth3g13,kmadd(PDstandardNth11g13,SQR(J12L),kmadd(PDstandardNth22g13,SQR(J22L),kmadd(PDstandardNth33g13,SQR(J32L),kmul(kmadd(J12L,kmadd(J22L,PDstandardNth12g13,kmul(J32L,PDstandardNth13g13)),kmul(J22L,kmul(J32L,PDstandardNth23g13))),ToReal(2))))))));
+
+ JacPDstandardNth22g33 =
+ kmadd(dJ122L,PDstandardNth1g33,kmadd(dJ222L,PDstandardNth2g33,kmadd(dJ322L,PDstandardNth3g33,kmadd(PDstandardNth11g33,SQR(J12L),kmadd(PDstandardNth22g33,SQR(J22L),kmadd(PDstandardNth33g33,SQR(J32L),kmul(kmadd(J12L,kmadd(J22L,PDstandardNth12g33,kmul(J32L,PDstandardNth13g33)),kmul(J22L,kmul(J32L,PDstandardNth23g33))),ToReal(2))))))));
+
+ JacPDstandardNth33g11 =
+ kmadd(dJ133L,PDstandardNth1g11,kmadd(dJ233L,PDstandardNth2g11,kmadd(dJ333L,PDstandardNth3g11,kmadd(PDstandardNth11g11,SQR(J13L),kmadd(PDstandardNth22g11,SQR(J23L),kmadd(PDstandardNth33g11,SQR(J33L),kmul(kmadd(J13L,kmadd(J23L,PDstandardNth12g11,kmul(J33L,PDstandardNth13g11)),kmul(J23L,kmul(J33L,PDstandardNth23g11))),ToReal(2))))))));
+
+ JacPDstandardNth33g12 =
+ kmadd(dJ133L,PDstandardNth1g12,kmadd(dJ233L,PDstandardNth2g12,kmadd(dJ333L,PDstandardNth3g12,kmadd(PDstandardNth11g12,SQR(J13L),kmadd(PDstandardNth22g12,SQR(J23L),kmadd(PDstandardNth33g12,SQR(J33L),kmul(kmadd(J13L,kmadd(J23L,PDstandardNth12g12,kmul(J33L,PDstandardNth13g12)),kmul(J23L,kmul(J33L,PDstandardNth23g12))),ToReal(2))))))));
+
+ JacPDstandardNth33g22 =
+ kmadd(dJ133L,PDstandardNth1g22,kmadd(dJ233L,PDstandardNth2g22,kmadd(dJ333L,PDstandardNth3g22,kmadd(PDstandardNth11g22,SQR(J13L),kmadd(PDstandardNth22g22,SQR(J23L),kmadd(PDstandardNth33g22,SQR(J33L),kmul(kmadd(J13L,kmadd(J23L,PDstandardNth12g22,kmul(J33L,PDstandardNth13g22)),kmul(J23L,kmul(J33L,PDstandardNth23g22))),ToReal(2))))))));
+
+ JacPDstandardNth12g11 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11g11,kmadd(J21L,PDstandardNth12g11,kmul(J31L,PDstandardNth13g11))),kmadd(J11L,kmadd(J22L,PDstandardNth12g11,kmul(J32L,PDstandardNth13g11)),kmadd(dJ112L,PDstandardNth1g11,kmadd(J22L,kmadd(J21L,PDstandardNth22g11,kmul(J31L,PDstandardNth23g11)),kmadd(dJ212L,PDstandardNth2g11,kmadd(J32L,kmadd(J21L,PDstandardNth23g11,kmul(J31L,PDstandardNth33g11)),kmul(dJ312L,PDstandardNth3g11)))))));
+
+ JacPDstandardNth12g12 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11g12,kmadd(J21L,PDstandardNth12g12,kmul(J31L,PDstandardNth13g12))),kmadd(J11L,kmadd(J22L,PDstandardNth12g12,kmul(J32L,PDstandardNth13g12)),kmadd(dJ112L,PDstandardNth1g12,kmadd(J22L,kmadd(J21L,PDstandardNth22g12,kmul(J31L,PDstandardNth23g12)),kmadd(dJ212L,PDstandardNth2g12,kmadd(J32L,kmadd(J21L,PDstandardNth23g12,kmul(J31L,PDstandardNth33g12)),kmul(dJ312L,PDstandardNth3g12)))))));
+
+ JacPDstandardNth12g13 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11g13,kmadd(J21L,PDstandardNth12g13,kmul(J31L,PDstandardNth13g13))),kmadd(J11L,kmadd(J22L,PDstandardNth12g13,kmul(J32L,PDstandardNth13g13)),kmadd(dJ112L,PDstandardNth1g13,kmadd(J22L,kmadd(J21L,PDstandardNth22g13,kmul(J31L,PDstandardNth23g13)),kmadd(dJ212L,PDstandardNth2g13,kmadd(J32L,kmadd(J21L,PDstandardNth23g13,kmul(J31L,PDstandardNth33g13)),kmul(dJ312L,PDstandardNth3g13)))))));
+
+ JacPDstandardNth12g22 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11g22,kmadd(J21L,PDstandardNth12g22,kmul(J31L,PDstandardNth13g22))),kmadd(J11L,kmadd(J22L,PDstandardNth12g22,kmul(J32L,PDstandardNth13g22)),kmadd(dJ112L,PDstandardNth1g22,kmadd(J22L,kmadd(J21L,PDstandardNth22g22,kmul(J31L,PDstandardNth23g22)),kmadd(dJ212L,PDstandardNth2g22,kmadd(J32L,kmadd(J21L,PDstandardNth23g22,kmul(J31L,PDstandardNth33g22)),kmul(dJ312L,PDstandardNth3g22)))))));
+
+ JacPDstandardNth12g23 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11g23,kmadd(J21L,PDstandardNth12g23,kmul(J31L,PDstandardNth13g23))),kmadd(J11L,kmadd(J22L,PDstandardNth12g23,kmul(J32L,PDstandardNth13g23)),kmadd(dJ112L,PDstandardNth1g23,kmadd(J22L,kmadd(J21L,PDstandardNth22g23,kmul(J31L,PDstandardNth23g23)),kmadd(dJ212L,PDstandardNth2g23,kmadd(J32L,kmadd(J21L,PDstandardNth23g23,kmul(J31L,PDstandardNth33g23)),kmul(dJ312L,PDstandardNth3g23)))))));
+
+ JacPDstandardNth12g33 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11g33,kmadd(J21L,PDstandardNth12g33,kmul(J31L,PDstandardNth13g33))),kmadd(J11L,kmadd(J22L,PDstandardNth12g33,kmul(J32L,PDstandardNth13g33)),kmadd(dJ112L,PDstandardNth1g33,kmadd(J22L,kmadd(J21L,PDstandardNth22g33,kmul(J31L,PDstandardNth23g33)),kmadd(dJ212L,PDstandardNth2g33,kmadd(J32L,kmadd(J21L,PDstandardNth23g33,kmul(J31L,PDstandardNth33g33)),kmul(dJ312L,PDstandardNth3g33)))))));
+
+ JacPDstandardNth13g11 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11g11,kmadd(J21L,PDstandardNth12g11,kmul(J31L,PDstandardNth13g11))),kmadd(J11L,kmadd(J23L,PDstandardNth12g11,kmul(J33L,PDstandardNth13g11)),kmadd(dJ113L,PDstandardNth1g11,kmadd(J23L,kmadd(J21L,PDstandardNth22g11,kmul(J31L,PDstandardNth23g11)),kmadd(dJ213L,PDstandardNth2g11,kmadd(J33L,kmadd(J21L,PDstandardNth23g11,kmul(J31L,PDstandardNth33g11)),kmul(dJ313L,PDstandardNth3g11)))))));
+
+ JacPDstandardNth13g12 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11g12,kmadd(J21L,PDstandardNth12g12,kmul(J31L,PDstandardNth13g12))),kmadd(J11L,kmadd(J23L,PDstandardNth12g12,kmul(J33L,PDstandardNth13g12)),kmadd(dJ113L,PDstandardNth1g12,kmadd(J23L,kmadd(J21L,PDstandardNth22g12,kmul(J31L,PDstandardNth23g12)),kmadd(dJ213L,PDstandardNth2g12,kmadd(J33L,kmadd(J21L,PDstandardNth23g12,kmul(J31L,PDstandardNth33g12)),kmul(dJ313L,PDstandardNth3g12)))))));
+
+ JacPDstandardNth13g13 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11g13,kmadd(J21L,PDstandardNth12g13,kmul(J31L,PDstandardNth13g13))),kmadd(J11L,kmadd(J23L,PDstandardNth12g13,kmul(J33L,PDstandardNth13g13)),kmadd(dJ113L,PDstandardNth1g13,kmadd(J23L,kmadd(J21L,PDstandardNth22g13,kmul(J31L,PDstandardNth23g13)),kmadd(dJ213L,PDstandardNth2g13,kmadd(J33L,kmadd(J21L,PDstandardNth23g13,kmul(J31L,PDstandardNth33g13)),kmul(dJ313L,PDstandardNth3g13)))))));
+
+ JacPDstandardNth13g22 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11g22,kmadd(J21L,PDstandardNth12g22,kmul(J31L,PDstandardNth13g22))),kmadd(J11L,kmadd(J23L,PDstandardNth12g22,kmul(J33L,PDstandardNth13g22)),kmadd(dJ113L,PDstandardNth1g22,kmadd(J23L,kmadd(J21L,PDstandardNth22g22,kmul(J31L,PDstandardNth23g22)),kmadd(dJ213L,PDstandardNth2g22,kmadd(J33L,kmadd(J21L,PDstandardNth23g22,kmul(J31L,PDstandardNth33g22)),kmul(dJ313L,PDstandardNth3g22)))))));
+
+ JacPDstandardNth13g23 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11g23,kmadd(J21L,PDstandardNth12g23,kmul(J31L,PDstandardNth13g23))),kmadd(J11L,kmadd(J23L,PDstandardNth12g23,kmul(J33L,PDstandardNth13g23)),kmadd(dJ113L,PDstandardNth1g23,kmadd(J23L,kmadd(J21L,PDstandardNth22g23,kmul(J31L,PDstandardNth23g23)),kmadd(dJ213L,PDstandardNth2g23,kmadd(J33L,kmadd(J21L,PDstandardNth23g23,kmul(J31L,PDstandardNth33g23)),kmul(dJ313L,PDstandardNth3g23)))))));
+
+ JacPDstandardNth13g33 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11g33,kmadd(J21L,PDstandardNth12g33,kmul(J31L,PDstandardNth13g33))),kmadd(J11L,kmadd(J23L,PDstandardNth12g33,kmul(J33L,PDstandardNth13g33)),kmadd(dJ113L,PDstandardNth1g33,kmadd(J23L,kmadd(J21L,PDstandardNth22g33,kmul(J31L,PDstandardNth23g33)),kmadd(dJ213L,PDstandardNth2g33,kmadd(J33L,kmadd(J21L,PDstandardNth23g33,kmul(J31L,PDstandardNth33g33)),kmul(dJ313L,PDstandardNth3g33)))))));
+
+ JacPDstandardNth21g11 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11g11,kmadd(J21L,PDstandardNth12g11,kmul(J31L,PDstandardNth13g11))),kmadd(J11L,kmadd(J22L,PDstandardNth12g11,kmul(J32L,PDstandardNth13g11)),kmadd(dJ112L,PDstandardNth1g11,kmadd(J22L,kmadd(J21L,PDstandardNth22g11,kmul(J31L,PDstandardNth23g11)),kmadd(dJ212L,PDstandardNth2g11,kmadd(J32L,kmadd(J21L,PDstandardNth23g11,kmul(J31L,PDstandardNth33g11)),kmul(dJ312L,PDstandardNth3g11)))))));
+
+ JacPDstandardNth21g12 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11g12,kmadd(J21L,PDstandardNth12g12,kmul(J31L,PDstandardNth13g12))),kmadd(J11L,kmadd(J22L,PDstandardNth12g12,kmul(J32L,PDstandardNth13g12)),kmadd(dJ112L,PDstandardNth1g12,kmadd(J22L,kmadd(J21L,PDstandardNth22g12,kmul(J31L,PDstandardNth23g12)),kmadd(dJ212L,PDstandardNth2g12,kmadd(J32L,kmadd(J21L,PDstandardNth23g12,kmul(J31L,PDstandardNth33g12)),kmul(dJ312L,PDstandardNth3g12)))))));
+
+ JacPDstandardNth21g13 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11g13,kmadd(J21L,PDstandardNth12g13,kmul(J31L,PDstandardNth13g13))),kmadd(J11L,kmadd(J22L,PDstandardNth12g13,kmul(J32L,PDstandardNth13g13)),kmadd(dJ112L,PDstandardNth1g13,kmadd(J22L,kmadd(J21L,PDstandardNth22g13,kmul(J31L,PDstandardNth23g13)),kmadd(dJ212L,PDstandardNth2g13,kmadd(J32L,kmadd(J21L,PDstandardNth23g13,kmul(J31L,PDstandardNth33g13)),kmul(dJ312L,PDstandardNth3g13)))))));
+
+ JacPDstandardNth21g22 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11g22,kmadd(J21L,PDstandardNth12g22,kmul(J31L,PDstandardNth13g22))),kmadd(J11L,kmadd(J22L,PDstandardNth12g22,kmul(J32L,PDstandardNth13g22)),kmadd(dJ112L,PDstandardNth1g22,kmadd(J22L,kmadd(J21L,PDstandardNth22g22,kmul(J31L,PDstandardNth23g22)),kmadd(dJ212L,PDstandardNth2g22,kmadd(J32L,kmadd(J21L,PDstandardNth23g22,kmul(J31L,PDstandardNth33g22)),kmul(dJ312L,PDstandardNth3g22)))))));
+
+ JacPDstandardNth21g23 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11g23,kmadd(J21L,PDstandardNth12g23,kmul(J31L,PDstandardNth13g23))),kmadd(J11L,kmadd(J22L,PDstandardNth12g23,kmul(J32L,PDstandardNth13g23)),kmadd(dJ112L,PDstandardNth1g23,kmadd(J22L,kmadd(J21L,PDstandardNth22g23,kmul(J31L,PDstandardNth23g23)),kmadd(dJ212L,PDstandardNth2g23,kmadd(J32L,kmadd(J21L,PDstandardNth23g23,kmul(J31L,PDstandardNth33g23)),kmul(dJ312L,PDstandardNth3g23)))))));
+
+ JacPDstandardNth21g33 =
+ kmadd(J12L,kmadd(J11L,PDstandardNth11g33,kmadd(J21L,PDstandardNth12g33,kmul(J31L,PDstandardNth13g33))),kmadd(J11L,kmadd(J22L,PDstandardNth12g33,kmul(J32L,PDstandardNth13g33)),kmadd(dJ112L,PDstandardNth1g33,kmadd(J22L,kmadd(J21L,PDstandardNth22g33,kmul(J31L,PDstandardNth23g33)),kmadd(dJ212L,PDstandardNth2g33,kmadd(J32L,kmadd(J21L,PDstandardNth23g33,kmul(J31L,PDstandardNth33g33)),kmul(dJ312L,PDstandardNth3g33)))))));
+
+ JacPDstandardNth23g11 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11g11,kmadd(J22L,PDstandardNth12g11,kmul(J32L,PDstandardNth13g11))),kmadd(J12L,kmadd(J23L,PDstandardNth12g11,kmul(J33L,PDstandardNth13g11)),kmadd(dJ123L,PDstandardNth1g11,kmadd(J23L,kmadd(J22L,PDstandardNth22g11,kmul(J32L,PDstandardNth23g11)),kmadd(dJ223L,PDstandardNth2g11,kmadd(J33L,kmadd(J22L,PDstandardNth23g11,kmul(J32L,PDstandardNth33g11)),kmul(dJ323L,PDstandardNth3g11)))))));
+
+ JacPDstandardNth23g12 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11g12,kmadd(J22L,PDstandardNth12g12,kmul(J32L,PDstandardNth13g12))),kmadd(J12L,kmadd(J23L,PDstandardNth12g12,kmul(J33L,PDstandardNth13g12)),kmadd(dJ123L,PDstandardNth1g12,kmadd(J23L,kmadd(J22L,PDstandardNth22g12,kmul(J32L,PDstandardNth23g12)),kmadd(dJ223L,PDstandardNth2g12,kmadd(J33L,kmadd(J22L,PDstandardNth23g12,kmul(J32L,PDstandardNth33g12)),kmul(dJ323L,PDstandardNth3g12)))))));
+
+ JacPDstandardNth23g13 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11g13,kmadd(J22L,PDstandardNth12g13,kmul(J32L,PDstandardNth13g13))),kmadd(J12L,kmadd(J23L,PDstandardNth12g13,kmul(J33L,PDstandardNth13g13)),kmadd(dJ123L,PDstandardNth1g13,kmadd(J23L,kmadd(J22L,PDstandardNth22g13,kmul(J32L,PDstandardNth23g13)),kmadd(dJ223L,PDstandardNth2g13,kmadd(J33L,kmadd(J22L,PDstandardNth23g13,kmul(J32L,PDstandardNth33g13)),kmul(dJ323L,PDstandardNth3g13)))))));
+
+ JacPDstandardNth23g22 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11g22,kmadd(J22L,PDstandardNth12g22,kmul(J32L,PDstandardNth13g22))),kmadd(J12L,kmadd(J23L,PDstandardNth12g22,kmul(J33L,PDstandardNth13g22)),kmadd(dJ123L,PDstandardNth1g22,kmadd(J23L,kmadd(J22L,PDstandardNth22g22,kmul(J32L,PDstandardNth23g22)),kmadd(dJ223L,PDstandardNth2g22,kmadd(J33L,kmadd(J22L,PDstandardNth23g22,kmul(J32L,PDstandardNth33g22)),kmul(dJ323L,PDstandardNth3g22)))))));
+
+ JacPDstandardNth23g23 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11g23,kmadd(J22L,PDstandardNth12g23,kmul(J32L,PDstandardNth13g23))),kmadd(J12L,kmadd(J23L,PDstandardNth12g23,kmul(J33L,PDstandardNth13g23)),kmadd(dJ123L,PDstandardNth1g23,kmadd(J23L,kmadd(J22L,PDstandardNth22g23,kmul(J32L,PDstandardNth23g23)),kmadd(dJ223L,PDstandardNth2g23,kmadd(J33L,kmadd(J22L,PDstandardNth23g23,kmul(J32L,PDstandardNth33g23)),kmul(dJ323L,PDstandardNth3g23)))))));
+
+ JacPDstandardNth23g33 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11g33,kmadd(J22L,PDstandardNth12g33,kmul(J32L,PDstandardNth13g33))),kmadd(J12L,kmadd(J23L,PDstandardNth12g33,kmul(J33L,PDstandardNth13g33)),kmadd(dJ123L,PDstandardNth1g33,kmadd(J23L,kmadd(J22L,PDstandardNth22g33,kmul(J32L,PDstandardNth23g33)),kmadd(dJ223L,PDstandardNth2g33,kmadd(J33L,kmadd(J22L,PDstandardNth23g33,kmul(J32L,PDstandardNth33g33)),kmul(dJ323L,PDstandardNth3g33)))))));
+
+ JacPDstandardNth31g11 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11g11,kmadd(J21L,PDstandardNth12g11,kmul(J31L,PDstandardNth13g11))),kmadd(J11L,kmadd(J23L,PDstandardNth12g11,kmul(J33L,PDstandardNth13g11)),kmadd(dJ113L,PDstandardNth1g11,kmadd(J23L,kmadd(J21L,PDstandardNth22g11,kmul(J31L,PDstandardNth23g11)),kmadd(dJ213L,PDstandardNth2g11,kmadd(J33L,kmadd(J21L,PDstandardNth23g11,kmul(J31L,PDstandardNth33g11)),kmul(dJ313L,PDstandardNth3g11)))))));
+
+ JacPDstandardNth31g12 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11g12,kmadd(J21L,PDstandardNth12g12,kmul(J31L,PDstandardNth13g12))),kmadd(J11L,kmadd(J23L,PDstandardNth12g12,kmul(J33L,PDstandardNth13g12)),kmadd(dJ113L,PDstandardNth1g12,kmadd(J23L,kmadd(J21L,PDstandardNth22g12,kmul(J31L,PDstandardNth23g12)),kmadd(dJ213L,PDstandardNth2g12,kmadd(J33L,kmadd(J21L,PDstandardNth23g12,kmul(J31L,PDstandardNth33g12)),kmul(dJ313L,PDstandardNth3g12)))))));
+
+ JacPDstandardNth31g13 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11g13,kmadd(J21L,PDstandardNth12g13,kmul(J31L,PDstandardNth13g13))),kmadd(J11L,kmadd(J23L,PDstandardNth12g13,kmul(J33L,PDstandardNth13g13)),kmadd(dJ113L,PDstandardNth1g13,kmadd(J23L,kmadd(J21L,PDstandardNth22g13,kmul(J31L,PDstandardNth23g13)),kmadd(dJ213L,PDstandardNth2g13,kmadd(J33L,kmadd(J21L,PDstandardNth23g13,kmul(J31L,PDstandardNth33g13)),kmul(dJ313L,PDstandardNth3g13)))))));
+
+ JacPDstandardNth31g22 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11g22,kmadd(J21L,PDstandardNth12g22,kmul(J31L,PDstandardNth13g22))),kmadd(J11L,kmadd(J23L,PDstandardNth12g22,kmul(J33L,PDstandardNth13g22)),kmadd(dJ113L,PDstandardNth1g22,kmadd(J23L,kmadd(J21L,PDstandardNth22g22,kmul(J31L,PDstandardNth23g22)),kmadd(dJ213L,PDstandardNth2g22,kmadd(J33L,kmadd(J21L,PDstandardNth23g22,kmul(J31L,PDstandardNth33g22)),kmul(dJ313L,PDstandardNth3g22)))))));
+
+ JacPDstandardNth31g23 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11g23,kmadd(J21L,PDstandardNth12g23,kmul(J31L,PDstandardNth13g23))),kmadd(J11L,kmadd(J23L,PDstandardNth12g23,kmul(J33L,PDstandardNth13g23)),kmadd(dJ113L,PDstandardNth1g23,kmadd(J23L,kmadd(J21L,PDstandardNth22g23,kmul(J31L,PDstandardNth23g23)),kmadd(dJ213L,PDstandardNth2g23,kmadd(J33L,kmadd(J21L,PDstandardNth23g23,kmul(J31L,PDstandardNth33g23)),kmul(dJ313L,PDstandardNth3g23)))))));
+
+ JacPDstandardNth31g33 =
+ kmadd(J13L,kmadd(J11L,PDstandardNth11g33,kmadd(J21L,PDstandardNth12g33,kmul(J31L,PDstandardNth13g33))),kmadd(J11L,kmadd(J23L,PDstandardNth12g33,kmul(J33L,PDstandardNth13g33)),kmadd(dJ113L,PDstandardNth1g33,kmadd(J23L,kmadd(J21L,PDstandardNth22g33,kmul(J31L,PDstandardNth23g33)),kmadd(dJ213L,PDstandardNth2g33,kmadd(J33L,kmadd(J21L,PDstandardNth23g33,kmul(J31L,PDstandardNth33g33)),kmul(dJ313L,PDstandardNth3g33)))))));
+
+ JacPDstandardNth32g11 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11g11,kmadd(J22L,PDstandardNth12g11,kmul(J32L,PDstandardNth13g11))),kmadd(J12L,kmadd(J23L,PDstandardNth12g11,kmul(J33L,PDstandardNth13g11)),kmadd(dJ123L,PDstandardNth1g11,kmadd(J23L,kmadd(J22L,PDstandardNth22g11,kmul(J32L,PDstandardNth23g11)),kmadd(dJ223L,PDstandardNth2g11,kmadd(J33L,kmadd(J22L,PDstandardNth23g11,kmul(J32L,PDstandardNth33g11)),kmul(dJ323L,PDstandardNth3g11)))))));
+
+ JacPDstandardNth32g12 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11g12,kmadd(J22L,PDstandardNth12g12,kmul(J32L,PDstandardNth13g12))),kmadd(J12L,kmadd(J23L,PDstandardNth12g12,kmul(J33L,PDstandardNth13g12)),kmadd(dJ123L,PDstandardNth1g12,kmadd(J23L,kmadd(J22L,PDstandardNth22g12,kmul(J32L,PDstandardNth23g12)),kmadd(dJ223L,PDstandardNth2g12,kmadd(J33L,kmadd(J22L,PDstandardNth23g12,kmul(J32L,PDstandardNth33g12)),kmul(dJ323L,PDstandardNth3g12)))))));
+
+ JacPDstandardNth32g13 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11g13,kmadd(J22L,PDstandardNth12g13,kmul(J32L,PDstandardNth13g13))),kmadd(J12L,kmadd(J23L,PDstandardNth12g13,kmul(J33L,PDstandardNth13g13)),kmadd(dJ123L,PDstandardNth1g13,kmadd(J23L,kmadd(J22L,PDstandardNth22g13,kmul(J32L,PDstandardNth23g13)),kmadd(dJ223L,PDstandardNth2g13,kmadd(J33L,kmadd(J22L,PDstandardNth23g13,kmul(J32L,PDstandardNth33g13)),kmul(dJ323L,PDstandardNth3g13)))))));
+
+ JacPDstandardNth32g22 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11g22,kmadd(J22L,PDstandardNth12g22,kmul(J32L,PDstandardNth13g22))),kmadd(J12L,kmadd(J23L,PDstandardNth12g22,kmul(J33L,PDstandardNth13g22)),kmadd(dJ123L,PDstandardNth1g22,kmadd(J23L,kmadd(J22L,PDstandardNth22g22,kmul(J32L,PDstandardNth23g22)),kmadd(dJ223L,PDstandardNth2g22,kmadd(J33L,kmadd(J22L,PDstandardNth23g22,kmul(J32L,PDstandardNth33g22)),kmul(dJ323L,PDstandardNth3g22)))))));
+
+ JacPDstandardNth32g23 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11g23,kmadd(J22L,PDstandardNth12g23,kmul(J32L,PDstandardNth13g23))),kmadd(J12L,kmadd(J23L,PDstandardNth12g23,kmul(J33L,PDstandardNth13g23)),kmadd(dJ123L,PDstandardNth1g23,kmadd(J23L,kmadd(J22L,PDstandardNth22g23,kmul(J32L,PDstandardNth23g23)),kmadd(dJ223L,PDstandardNth2g23,kmadd(J33L,kmadd(J22L,PDstandardNth23g23,kmul(J32L,PDstandardNth33g23)),kmul(dJ323L,PDstandardNth3g23)))))));
+
+ JacPDstandardNth32g33 =
+ kmadd(J13L,kmadd(J12L,PDstandardNth11g33,kmadd(J22L,PDstandardNth12g33,kmul(J32L,PDstandardNth13g33))),kmadd(J12L,kmadd(J23L,PDstandardNth12g33,kmul(J33L,PDstandardNth13g33)),kmadd(dJ123L,PDstandardNth1g33,kmadd(J23L,kmadd(J22L,PDstandardNth22g33,kmul(J32L,PDstandardNth23g33)),kmadd(dJ223L,PDstandardNth2g33,kmadd(J33L,kmadd(J22L,PDstandardNth23g33,kmul(J32L,PDstandardNth33g33)),kmul(dJ323L,PDstandardNth3g33)))))));
+ }
+ else
+ {
+ JacPDstandardNth1g11 = PDstandardNth1g11;
+
+ JacPDstandardNth1g12 = PDstandardNth1g12;
+
+ JacPDstandardNth1g13 = PDstandardNth1g13;
+
+ JacPDstandardNth1g22 = PDstandardNth1g22;
+
+ JacPDstandardNth1g23 = PDstandardNth1g23;
+
+ JacPDstandardNth1g33 = PDstandardNth1g33;
+
+ JacPDstandardNth1K12 = PDstandardNth1K12;
+
+ JacPDstandardNth1K13 = PDstandardNth1K13;
+
+ JacPDstandardNth1K22 = PDstandardNth1K22;
+
+ JacPDstandardNth1K23 = PDstandardNth1K23;
+
+ JacPDstandardNth1K33 = PDstandardNth1K33;
+
+ JacPDstandardNth2g11 = PDstandardNth2g11;
+
+ JacPDstandardNth2g12 = PDstandardNth2g12;
+
+ JacPDstandardNth2g13 = PDstandardNth2g13;
+
+ JacPDstandardNth2g22 = PDstandardNth2g22;
+
+ JacPDstandardNth2g23 = PDstandardNth2g23;
+
+ JacPDstandardNth2g33 = PDstandardNth2g33;
+
+ JacPDstandardNth2K11 = PDstandardNth2K11;
+
+ JacPDstandardNth2K12 = PDstandardNth2K12;
+
+ JacPDstandardNth2K13 = PDstandardNth2K13;
+
+ JacPDstandardNth2K23 = PDstandardNth2K23;
+
+ JacPDstandardNth2K33 = PDstandardNth2K33;
+
+ JacPDstandardNth3g11 = PDstandardNth3g11;
+
+ JacPDstandardNth3g12 = PDstandardNth3g12;
+
+ JacPDstandardNth3g13 = PDstandardNth3g13;
+
+ JacPDstandardNth3g22 = PDstandardNth3g22;
+
+ JacPDstandardNth3g23 = PDstandardNth3g23;
+
+ JacPDstandardNth3g33 = PDstandardNth3g33;
+
+ JacPDstandardNth3K11 = PDstandardNth3K11;
+
+ JacPDstandardNth3K12 = PDstandardNth3K12;
+
+ JacPDstandardNth3K13 = PDstandardNth3K13;
+
+ JacPDstandardNth3K22 = PDstandardNth3K22;
+
+ JacPDstandardNth3K23 = PDstandardNth3K23;
+
+ JacPDstandardNth11g22 = PDstandardNth11g22;
+
+ JacPDstandardNth11g23 = PDstandardNth11g23;
+
+ JacPDstandardNth11g33 = PDstandardNth11g33;
+
+ JacPDstandardNth22g11 = PDstandardNth22g11;
+
+ JacPDstandardNth22g13 = PDstandardNth22g13;
+
+ JacPDstandardNth22g33 = PDstandardNth22g33;
+
+ JacPDstandardNth33g11 = PDstandardNth33g11;
+
+ JacPDstandardNth33g12 = PDstandardNth33g12;
+
+ JacPDstandardNth33g22 = PDstandardNth33g22;
+
+ JacPDstandardNth12g11 = PDstandardNth12g11;
+
+ JacPDstandardNth12g12 = PDstandardNth12g12;
+
+ JacPDstandardNth12g13 = PDstandardNth12g13;
+
+ JacPDstandardNth12g22 = PDstandardNth12g22;
+
+ JacPDstandardNth12g23 = PDstandardNth12g23;
+
+ JacPDstandardNth12g33 = PDstandardNth12g33;
+
+ JacPDstandardNth13g11 = PDstandardNth13g11;
+
+ JacPDstandardNth13g12 = PDstandardNth13g12;
+
+ JacPDstandardNth13g13 = PDstandardNth13g13;
+
+ JacPDstandardNth13g22 = PDstandardNth13g22;
+
+ JacPDstandardNth13g23 = PDstandardNth13g23;
+
+ JacPDstandardNth13g33 = PDstandardNth13g33;
+
+ JacPDstandardNth21g11 = PDstandardNth12g11;
+
+ JacPDstandardNth21g12 = PDstandardNth12g12;
+
+ JacPDstandardNth21g13 = PDstandardNth12g13;
+
+ JacPDstandardNth21g22 = PDstandardNth12g22;
+
+ JacPDstandardNth21g23 = PDstandardNth12g23;
+
+ JacPDstandardNth21g33 = PDstandardNth12g33;
+
+ JacPDstandardNth23g11 = PDstandardNth23g11;
+
+ JacPDstandardNth23g12 = PDstandardNth23g12;
+
+ JacPDstandardNth23g13 = PDstandardNth23g13;
+
+ JacPDstandardNth23g22 = PDstandardNth23g22;
+
+ JacPDstandardNth23g23 = PDstandardNth23g23;
+
+ JacPDstandardNth23g33 = PDstandardNth23g33;
+
+ JacPDstandardNth31g11 = PDstandardNth13g11;
+
+ JacPDstandardNth31g12 = PDstandardNth13g12;
+
+ JacPDstandardNth31g13 = PDstandardNth13g13;
+
+ JacPDstandardNth31g22 = PDstandardNth13g22;
+
+ JacPDstandardNth31g23 = PDstandardNth13g23;
+
+ JacPDstandardNth31g33 = PDstandardNth13g33;
+
+ JacPDstandardNth32g11 = PDstandardNth23g11;
+
+ JacPDstandardNth32g12 = PDstandardNth23g12;
+
+ JacPDstandardNth32g13 = PDstandardNth23g13;
+
+ JacPDstandardNth32g22 = PDstandardNth23g22;
+
+ JacPDstandardNth32g23 = PDstandardNth23g23;
+
+ JacPDstandardNth32g33 = PDstandardNth23g33;
+ }
+
+ CCTK_REAL_VEC detg =
+ knmsub(g22L,SQR(g13L),knmsub(g11L,SQR(g23L),kmadd(g33L,kmsub(g11L,g22L,SQR(g12L)),kmul(g12L,kmul(g13L,kmul(g23L,ToReal(2)))))));
+
+ CCTK_REAL_VEC gu11 = kmul(INV(detg),kmsub(g22L,g33L,SQR(g23L)));
+
+ CCTK_REAL_VEC gu12 = kmul(INV(detg),kmsub(g13L,g23L,kmul(g12L,g33L)));
+
+ CCTK_REAL_VEC gu13 = kmul(INV(detg),kmsub(g12L,g23L,kmul(g13L,g22L)));
+
+ CCTK_REAL_VEC gu21 = kmul(INV(detg),kmsub(g13L,g23L,kmul(g12L,g33L)));
+
+ CCTK_REAL_VEC gu22 = kmul(INV(detg),kmsub(g11L,g33L,SQR(g13L)));
+
+ CCTK_REAL_VEC gu23 = kmul(INV(detg),kmsub(g12L,g13L,kmul(g11L,g23L)));
+
+ CCTK_REAL_VEC gu31 = kmul(INV(detg),kmsub(g12L,g23L,kmul(g13L,g22L)));
+
+ CCTK_REAL_VEC gu32 = kmul(INV(detg),kmsub(g12L,g13L,kmul(g11L,g23L)));
+
+ CCTK_REAL_VEC gu33 = kmul(INV(detg),kmsub(g11L,g22L,SQR(g12L)));
+
+ CCTK_REAL_VEC G111 =
+ kmul(ToReal(0.5),kmadd(gu11,JacPDstandardNth1g11,knmsub(gu12,JacPDstandardNth2g11,kmsub(kmadd(gu12,JacPDstandardNth1g12,kmul(gu13,JacPDstandardNth1g13)),ToReal(2),kmul(gu13,JacPDstandardNth3g11)))));
+
+ CCTK_REAL_VEC G211 =
+ kmul(ToReal(0.5),kmadd(gu21,JacPDstandardNth1g11,knmsub(gu22,JacPDstandardNth2g11,kmsub(kmadd(gu22,JacPDstandardNth1g12,kmul(gu23,JacPDstandardNth1g13)),ToReal(2),kmul(gu23,JacPDstandardNth3g11)))));
+
+ CCTK_REAL_VEC G311 =
+ kmul(ToReal(0.5),kmadd(gu31,JacPDstandardNth1g11,knmsub(gu32,JacPDstandardNth2g11,kmsub(kmadd(gu32,JacPDstandardNth1g12,kmul(gu33,JacPDstandardNth1g13)),ToReal(2),kmul(gu33,JacPDstandardNth3g11)))));
- CCTK_REAL gu11 = INV(detg)*(g22L*g33L - SQR(g23L));
+ CCTK_REAL_VEC G112 =
+ kmul(kmadd(gu12,JacPDstandardNth1g22,kmadd(gu11,JacPDstandardNth2g11,kmul(gu13,kadd(JacPDstandardNth1g23,ksub(JacPDstandardNth2g13,JacPDstandardNth3g12))))),ToReal(0.5));
- CCTK_REAL gu12 = (g13L*g23L - g12L*g33L)*INV(detg);
+ CCTK_REAL_VEC G212 =
+ kmul(kmadd(gu22,JacPDstandardNth1g22,kmadd(gu21,JacPDstandardNth2g11,kmul(gu23,kadd(JacPDstandardNth1g23,ksub(JacPDstandardNth2g13,JacPDstandardNth3g12))))),ToReal(0.5));
- CCTK_REAL gu13 = (-(g13L*g22L) + g12L*g23L)*INV(detg);
+ CCTK_REAL_VEC G312 =
+ kmul(kmadd(gu32,JacPDstandardNth1g22,kmadd(gu31,JacPDstandardNth2g11,kmul(gu33,kadd(JacPDstandardNth1g23,ksub(JacPDstandardNth2g13,JacPDstandardNth3g12))))),ToReal(0.5));
- CCTK_REAL gu21 = (g13L*g23L - g12L*g33L)*INV(detg);
+ CCTK_REAL_VEC G113 =
+ kmul(kmadd(gu13,JacPDstandardNth1g33,kmadd(gu11,JacPDstandardNth3g11,kmul(gu12,kadd(JacPDstandardNth1g23,ksub(JacPDstandardNth3g12,JacPDstandardNth2g13))))),ToReal(0.5));
- CCTK_REAL gu22 = INV(detg)*(g11L*g33L - SQR(g13L));
+ CCTK_REAL_VEC G213 =
+ kmul(kmadd(gu23,JacPDstandardNth1g33,kmadd(gu21,JacPDstandardNth3g11,kmul(gu22,kadd(JacPDstandardNth1g23,ksub(JacPDstandardNth3g12,JacPDstandardNth2g13))))),ToReal(0.5));
- CCTK_REAL gu23 = (g12L*g13L - g11L*g23L)*INV(detg);
+ CCTK_REAL_VEC G313 =
+ kmul(kmadd(gu33,JacPDstandardNth1g33,kmadd(gu31,JacPDstandardNth3g11,kmul(gu32,kadd(JacPDstandardNth1g23,ksub(JacPDstandardNth3g12,JacPDstandardNth2g13))))),ToReal(0.5));
- CCTK_REAL gu31 = (-(g13L*g22L) + g12L*g23L)*INV(detg);
+ CCTK_REAL_VEC G122 =
+ kmul(ToReal(0.5),kmadd(gu12,JacPDstandardNth2g22,kmadd(gu11,kmsub(JacPDstandardNth2g12,ToReal(2),JacPDstandardNth1g22),kmul(gu13,kmsub(JacPDstandardNth2g23,ToReal(2),JacPDstandardNth3g22)))));
- CCTK_REAL gu32 = (g12L*g13L - g11L*g23L)*INV(detg);
+ CCTK_REAL_VEC G222 =
+ kmul(ToReal(0.5),kmadd(gu22,JacPDstandardNth2g22,kmadd(gu21,kmsub(JacPDstandardNth2g12,ToReal(2),JacPDstandardNth1g22),kmul(gu23,kmsub(JacPDstandardNth2g23,ToReal(2),JacPDstandardNth3g22)))));
- CCTK_REAL gu33 = INV(detg)*(g11L*g22L - SQR(g12L));
+ CCTK_REAL_VEC G322 =
+ kmul(ToReal(0.5),kmadd(gu32,JacPDstandardNth2g22,kmadd(gu31,kmsub(JacPDstandardNth2g12,ToReal(2),JacPDstandardNth1g22),kmul(gu33,kmsub(JacPDstandardNth2g23,ToReal(2),JacPDstandardNth3g22)))));
- CCTK_REAL G111 = 0.5*(gu11*PDstandardNth1g11 +
- 2*(gu12*PDstandardNth1g12 + gu13*PDstandardNth1g13) -
- gu12*PDstandardNth2g11 - gu13*PDstandardNth3g11);
+ CCTK_REAL_VEC G123 =
+ kmul(kmadd(gu13,JacPDstandardNth2g33,kmadd(gu12,JacPDstandardNth3g22,kmul(gu11,kadd(JacPDstandardNth2g13,ksub(JacPDstandardNth3g12,JacPDstandardNth1g23))))),ToReal(0.5));
- CCTK_REAL G211 = 0.5*(gu21*PDstandardNth1g11 +
- 2*(gu22*PDstandardNth1g12 + gu23*PDstandardNth1g13) -
- gu22*PDstandardNth2g11 - gu23*PDstandardNth3g11);
+ CCTK_REAL_VEC G223 =
+ kmul(kmadd(gu23,JacPDstandardNth2g33,kmadd(gu22,JacPDstandardNth3g22,kmul(gu21,kadd(JacPDstandardNth2g13,ksub(JacPDstandardNth3g12,JacPDstandardNth1g23))))),ToReal(0.5));
- CCTK_REAL G311 = 0.5*(gu31*PDstandardNth1g11 +
- 2*(gu32*PDstandardNth1g12 + gu33*PDstandardNth1g13) -
- gu32*PDstandardNth2g11 - gu33*PDstandardNth3g11);
+ CCTK_REAL_VEC G323 =
+ kmul(kmadd(gu33,JacPDstandardNth2g33,kmadd(gu32,JacPDstandardNth3g22,kmul(gu31,kadd(JacPDstandardNth2g13,ksub(JacPDstandardNth3g12,JacPDstandardNth1g23))))),ToReal(0.5));
- CCTK_REAL G112 = 0.5*(gu12*PDstandardNth1g22 + gu11*PDstandardNth2g11
- + gu13*(PDstandardNth1g23 + PDstandardNth2g13 - PDstandardNth3g12));
-
- CCTK_REAL G212 = 0.5*(gu22*PDstandardNth1g22 + gu21*PDstandardNth2g11
- + gu23*(PDstandardNth1g23 + PDstandardNth2g13 - PDstandardNth3g12));
-
- CCTK_REAL G312 = 0.5*(gu32*PDstandardNth1g22 + gu31*PDstandardNth2g11
- + gu33*(PDstandardNth1g23 + PDstandardNth2g13 - PDstandardNth3g12));
-
- CCTK_REAL G113 = 0.5*(gu13*PDstandardNth1g33 + gu11*PDstandardNth3g11
- + gu12*(PDstandardNth1g23 - PDstandardNth2g13 + PDstandardNth3g12));
-
- CCTK_REAL G213 = 0.5*(gu23*PDstandardNth1g33 + gu21*PDstandardNth3g11
- + gu22*(PDstandardNth1g23 - PDstandardNth2g13 + PDstandardNth3g12));
-
- CCTK_REAL G313 = 0.5*(gu33*PDstandardNth1g33 + gu31*PDstandardNth3g11
- + gu32*(PDstandardNth1g23 - PDstandardNth2g13 + PDstandardNth3g12));
+ CCTK_REAL_VEC G133 =
+ kmul(ToReal(0.5),kmadd(gu13,JacPDstandardNth3g33,kmadd(gu11,kmsub(JacPDstandardNth3g13,ToReal(2),JacPDstandardNth1g33),kmul(gu12,kmsub(JacPDstandardNth3g23,ToReal(2),JacPDstandardNth2g33)))));
- CCTK_REAL G122 = 0.5*(gu11*(-PDstandardNth1g22 + 2*PDstandardNth2g12)
- + gu12*PDstandardNth2g22 + gu13*(2*PDstandardNth2g23 -
- PDstandardNth3g22));
+ CCTK_REAL_VEC G233 =
+ kmul(ToReal(0.5),kmadd(gu23,JacPDstandardNth3g33,kmadd(gu21,kmsub(JacPDstandardNth3g13,ToReal(2),JacPDstandardNth1g33),kmul(gu22,kmsub(JacPDstandardNth3g23,ToReal(2),JacPDstandardNth2g33)))));
- CCTK_REAL G222 = 0.5*(gu21*(-PDstandardNth1g22 + 2*PDstandardNth2g12)
- + gu22*PDstandardNth2g22 + gu23*(2*PDstandardNth2g23 -
- PDstandardNth3g22));
+ CCTK_REAL_VEC G333 =
+ kmul(ToReal(0.5),kmadd(gu33,JacPDstandardNth3g33,kmadd(gu31,kmsub(JacPDstandardNth3g13,ToReal(2),JacPDstandardNth1g33),kmul(gu32,kmsub(JacPDstandardNth3g23,ToReal(2),JacPDstandardNth2g33)))));
- CCTK_REAL G322 = 0.5*(gu31*(-PDstandardNth1g22 + 2*PDstandardNth2g12)
- + gu32*PDstandardNth2g22 + gu33*(2*PDstandardNth2g23 -
- PDstandardNth3g22));
+ CCTK_REAL_VEC R11 =
+ kmul(ToReal(0.5),knmsub(gu22,kadd(JacPDstandardNth11g22,kmadd(JacPDstandardNth21g12,ToReal(-2),JacPDstandardNth22g11)),kmadd(gu12,ksub(JacPDstandardNth21g11,JacPDstandardNth12g11),kmadd(gu13,ksub(JacPDstandardNth31g11,JacPDstandardNth13g11),kmadd(gu23,kadd(JacPDstandardNth21g13,ksub(JacPDstandardNth31g12,kadd(JacPDstandardNth23g11,JacPDstandardNth11g23))),kmadd(gu32,kadd(JacPDstandardNth21g13,ksub(JacPDstandardNth31g12,kadd(JacPDstandardNth32g11,JacPDstandardNth11g23))),kmadd(ToReal(2),kmadd(gu23,kmadd(G112,kmul(g13L,G313),kmadd(G212,kmul(g23L,G313),kmadd(G312,kmul(G313,g33L),kmadd(g11L,kmsub(G112,G113,kmul(G111,G123)),kmadd(g12L,kmadd(G113,G212,kmsub(G112,G213,kmadd(G111,G223,kmul(G123,G211)))),kmadd(g22L,kmsub(G212,G213,kmul(G211,G223)),kmadd(g13L,kmsub(G113,G312,kmul(G111,G323)),kmsub(g23L,kmsub(G213,G312,kmul(G211,G323)),kmul(G311,kmadd(G123,g13L,kmadd(G323,g33L,kmul(G223,g23L)))))))))))),kmadd(gu32,kmadd(G112,kmul(g13L,G313),kmadd(G212,kmul(g23L,G313),kmadd(G312,kmul(G313,g33L),kmadd(g11L,kmsub(G112,G113,kmul(G111,G123)),kmadd(g12L,kmadd(G113,G212,kmsub(G112,G213,kmadd(G111,G223,kmul(G123,G211)))),kmadd(g22L,kmsub(G212,G213,kmul(G211,G223)),kmadd(g13L,kmsub(G113,G312,kmul(G111,G323)),kmsub(g23L,kmsub(G213,G312,kmul(G211,G323)),kmul(G311,kmadd(G123,g13L,kmadd(G323,g33L,kmul(G223,g23L)))))))))))),kmul(gu22,kmadd(g22L,SQR(G212),knmsub(g12L,kmadd(G122,G211,kmadd(G111,G222,kmul(G112,kmul(G212,ToReal(-2))))),kmadd(g11L,knmsub(G111,G122,SQR(G112)),knmsub(G222,kmadd(g23L,G311,kmul(G211,g22L)),kmadd(g33L,knmsub(G311,G322,SQR(G312)),kmadd(g13L,knmsub(G122,G311,kmsub(G112,kmul(G312,ToReal(2)),kmul(G111,G322))),kmul(g23L,kmsub(G212,kmul(G312,ToReal(2)),kmul(G211,G322)))))))))))),kmul(gu33,ksub(ksub(kmadd(JacPDstandardNth31g13,ToReal(2),kmul(ToReal(2),kmadd(g22L,SQR(G213),knmsub(g12L,kmadd(G133,G211,kmadd(G111,G233,kmul(G113,kmul(G213,ToReal(-2))))),kmadd(g11L,knmsub(G111,G133,SQR(G113)),knmsub(G233,kmadd(g23L,G311,kmul(G211,g22L)),kmadd(g33L,knmsub(G311,G333,SQR(G313)),kmadd(g13L,knmsub(G133,G311,kmsub(G113,kmul(G313,ToReal(2)),kmul(G111,G333))),kmul(g23L,kmsub(G213,kmul(G313,ToReal(2)),kmul(G211,G333))))))))))),JacPDstandardNth33g11),JacPDstandardNth11g33)))))))));
- CCTK_REAL G123 = 0.5*(gu13*PDstandardNth2g33 +
- gu11*(-PDstandardNth1g23 + PDstandardNth2g13 + PDstandardNth3g12) +
- gu12*PDstandardNth3g22);
+ CCTK_REAL_VEC R12 =
+ kmul(ToReal(0.5),kmadd(gu12,kadd(JacPDstandardNth11g22,kmadd(JacPDstandardNth12g12,ToReal(-2),JacPDstandardNth22g11)),kmadd(gu22,ksub(JacPDstandardNth21g22,JacPDstandardNth12g22),kmadd(gu13,kadd(JacPDstandardNth11g23,ksub(JacPDstandardNth32g11,kadd(JacPDstandardNth13g12,JacPDstandardNth12g13))),kmadd(gu23,kadd(JacPDstandardNth21g23,ksub(JacPDstandardNth32g12,kadd(JacPDstandardNth23g12,JacPDstandardNth12g23))),kmadd(gu32,kadd(JacPDstandardNth22g13,ksub(JacPDstandardNth31g22,kadd(JacPDstandardNth32g12,JacPDstandardNth12g23))),kmadd(gu33,kadd(JacPDstandardNth31g23,ksub(JacPDstandardNth32g13,kadd(JacPDstandardNth33g12,JacPDstandardNth12g33))),kmul(kmadd(gu21,kmadd(G122,kmadd(G111,g11L,kmadd(g12L,G211,kmul(g13L,G311))),kmadd(G222,kmadd(G211,g22L,kmul(g23L,G311)),kmadd(G322,kmadd(G111,g13L,kmadd(G211,g23L,kmul(G311,g33L))),kmadd(kmadd(G112,kmul(g13L,G312),kmul(G212,kmul(g23L,G312))),ToReal(-2),kmsub(g12L,kmadd(G111,G222,kmul(G112,kmul(G212,ToReal(-2)))),kmadd(g11L,SQR(G112),kmadd(g33L,SQR(G312),kmul(g22L,SQR(G212))))))))),kmadd(gu31,kmadd(G111,kmul(g13L,G323),kmadd(G211,kmul(g23L,G323),kmadd(G311,kmadd(G123,g13L,kmadd(G223,g23L,kmul(G323,g33L))),kmadd(g11L,kmsub(G111,G123,kmul(G112,G113)),kmadd(g12L,kmadd(G123,G211,kmsub(G111,G223,kmadd(G112,G213,kmul(G113,G212)))),kmsub(g22L,kmsub(G211,G223,kmul(G212,G213)),kmadd(G312,kmadd(G113,g13L,kmadd(G313,g33L,kmul(G213,g23L))),kmul(G313,kmadd(G212,g23L,kmul(G112,g13L)))))))))),kmadd(gu23,kmadd(G113,kmul(g13L,G322),kmadd(G213,kmul(g23L,G322),kmadd(G313,kmul(G322,g33L),kmadd(g11L,kmsub(G113,G122,kmul(G112,G123)),kmadd(g12L,kmadd(G122,G213,kmsub(G113,G222,kmadd(G112,G223,kmul(G123,G212)))),kmadd(g22L,kmsub(G213,G222,kmul(G212,G223)),kmadd(g13L,kmsub(G122,G313,kmul(G112,G323)),kmsub(g23L,kmsub(G222,G313,kmul(G212,G323)),kmul(G312,kmadd(G123,g13L,kmadd(G323,g33L,kmul(G223,g23L)))))))))))),kmul(gu33,kmadd(G113,kmul(g13L,G323),kmadd(G213,kmul(g23L,G323),kmadd(G313,kmul(G323,g33L),kmadd(g11L,kmsub(G113,G123,kmul(G112,G133)),kmadd(g12L,kmadd(G123,G213,kmsub(G113,G223,kmadd(G112,G233,kmul(G133,G212)))),kmadd(g22L,kmsub(G213,G223,kmul(G212,G233)),kmadd(g13L,kmsub(G123,G313,kmul(G112,G333)),kmsub(g23L,kmsub(G223,G313,kmul(G212,G333)),kmul(G312,kmadd(G133,g13L,kmadd(G333,g33L,kmul(G233,g23L)))))))))))))))),ToReal(2)))))))));
- CCTK_REAL G223 = 0.5*(gu23*PDstandardNth2g33 +
- gu21*(-PDstandardNth1g23 + PDstandardNth2g13 + PDstandardNth3g12) +
- gu22*PDstandardNth3g22);
+ CCTK_REAL_VEC R13 =
+ kmul(ToReal(0.5),kmadd(gu13,kadd(JacPDstandardNth11g33,kmadd(JacPDstandardNth13g13,ToReal(-2),JacPDstandardNth33g11)),kmadd(gu12,kadd(JacPDstandardNth11g23,ksub(JacPDstandardNth23g11,kadd(JacPDstandardNth13g12,JacPDstandardNth12g13))),kmadd(gu33,ksub(JacPDstandardNth31g33,JacPDstandardNth13g33),kmadd(gu22,kadd(JacPDstandardNth21g23,ksub(JacPDstandardNth23g12,kadd(JacPDstandardNth22g13,JacPDstandardNth13g22))),kmadd(gu23,kadd(JacPDstandardNth21g33,ksub(JacPDstandardNth33g12,kadd(JacPDstandardNth23g13,JacPDstandardNth13g23))),kmadd(gu32,kadd(JacPDstandardNth23g13,ksub(JacPDstandardNth31g23,kadd(JacPDstandardNth32g13,JacPDstandardNth13g23))),kmul(kmadd(gu31,kmadd(G133,kmadd(G111,g11L,kmadd(g12L,G211,kmul(g13L,G311))),kmadd(G233,kmadd(G211,g22L,kmul(g23L,G311)),kmadd(G333,kmadd(G111,g13L,kmadd(G211,g23L,kmul(G311,g33L))),kmadd(kmadd(G113,kmul(g13L,G313),kmul(G213,kmul(g23L,G313))),ToReal(-2),kmsub(g12L,kmadd(G111,G233,kmul(G113,kmul(G213,ToReal(-2)))),kmadd(g11L,SQR(G113),kmadd(g33L,SQR(G313),kmul(g22L,SQR(G213))))))))),kmadd(gu21,kmadd(G111,kmul(g13L,G323),kmadd(G211,kmul(g23L,G323),kmadd(G311,kmadd(G123,g13L,kmadd(G223,g23L,kmul(G323,g33L))),kmadd(g11L,kmsub(G111,G123,kmul(G112,G113)),kmadd(g12L,kmadd(G123,G211,kmsub(G111,G223,kmadd(G112,G213,kmul(G113,G212)))),kmsub(g22L,kmsub(G211,G223,kmul(G212,G213)),kmadd(G312,kmadd(G113,g13L,kmadd(G313,g33L,kmul(G213,g23L))),kmul(G313,kmadd(G212,g23L,kmul(G112,g13L)))))))))),kmadd(gu22,kmadd(G112,kmul(g13L,G323),kmadd(G212,kmul(g23L,G323),kmadd(G312,kmadd(G123,g13L,kmadd(G223,g23L,kmul(G323,g33L))),kmadd(g11L,kmsub(G112,G123,kmul(G113,G122)),kmadd(g12L,kmadd(G123,G212,kmsub(G112,G223,kmadd(G113,G222,kmul(G122,G213)))),kmsub(g22L,kmsub(G212,G223,kmul(G213,G222)),kmadd(G313,kmadd(G122,g13L,kmadd(G322,g33L,kmul(G222,g23L))),kmul(G322,kmadd(G213,g23L,kmul(G113,g13L)))))))))),kmul(gu32,kmadd(G112,kmul(g13L,G333),kmadd(G212,kmul(g23L,G333),kmadd(G312,kmadd(G133,g13L,kmadd(G233,g23L,kmul(G333,g33L))),kmadd(g11L,kmsub(G112,G133,kmul(G113,G123)),kmadd(g12L,kmadd(G133,G212,kmsub(G112,G233,kmadd(G113,G223,kmul(G123,G213)))),kmsub(g22L,kmsub(G212,G233,kmul(G213,G223)),kmadd(G313,kmadd(G123,g13L,kmadd(G323,g33L,kmul(G223,g23L))),kmul(G323,kmadd(G213,g23L,kmul(G113,g13L)))))))))))))),ToReal(2)))))))));
- CCTK_REAL G323 = 0.5*(gu33*PDstandardNth2g33 +
- gu31*(-PDstandardNth1g23 + PDstandardNth2g13 + PDstandardNth3g12) +
- gu32*PDstandardNth3g22);
+ CCTK_REAL_VEC R22 =
+ kmul(ToReal(0.5),knmsub(gu11,kadd(JacPDstandardNth11g22,kmadd(JacPDstandardNth12g12,ToReal(-2),JacPDstandardNth22g11)),kmadd(gu21,ksub(JacPDstandardNth12g22,JacPDstandardNth21g22),kmadd(gu13,kadd(JacPDstandardNth12g23,ksub(JacPDstandardNth32g12,kadd(JacPDstandardNth22g13,JacPDstandardNth13g22))),kmadd(gu23,ksub(JacPDstandardNth32g22,JacPDstandardNth23g22),kmadd(gu31,kadd(JacPDstandardNth12g23,ksub(JacPDstandardNth32g12,kadd(JacPDstandardNth31g22,JacPDstandardNth22g13))),kmadd(ToReal(2),kmadd(gu13,kmadd(G112,kmul(g13L,G323),kmadd(G212,kmul(g23L,G323),kmadd(g11L,kmsub(G112,G123,kmul(G113,G122)),kmadd(g12L,kmadd(G123,G212,kmsub(G112,G223,kmadd(G113,G222,kmul(G122,G213)))),kmadd(g22L,kmsub(G212,G223,kmul(G213,G222)),kmadd(g13L,kmsub(G123,G312,kmadd(G113,G322,kmul(G122,G313))),kmadd(g23L,kmsub(G223,G312,kmadd(G213,G322,kmul(G222,G313))),kmul(g33L,kmsub(G312,G323,kmul(G313,G322)))))))))),kmadd(gu31,kmadd(G112,kmul(g13L,G323),kmadd(G212,kmul(g23L,G323),kmadd(g11L,kmsub(G112,G123,kmul(G113,G122)),kmadd(g12L,kmadd(G123,G212,kmsub(G112,G223,kmadd(G113,G222,kmul(G122,G213)))),kmadd(g22L,kmsub(G212,G223,kmul(G213,G222)),kmadd(g13L,kmsub(G123,G312,kmadd(G113,G322,kmul(G122,G313))),kmadd(g23L,kmsub(G223,G312,kmadd(G213,G322,kmul(G222,G313))),kmul(g33L,kmsub(G312,G323,kmul(G313,G322)))))))))),kmul(gu11,kmadd(g22L,SQR(G212),knmsub(g12L,kmadd(G122,G211,kmadd(G111,G222,kmul(G112,kmul(G212,ToReal(-2))))),kmadd(g11L,knmsub(G111,G122,SQR(G112)),knmsub(G222,kmadd(g23L,G311,kmul(G211,g22L)),kmadd(g33L,knmsub(G311,G322,SQR(G312)),kmadd(g13L,knmsub(G122,G311,kmsub(G112,kmul(G312,ToReal(2)),kmul(G111,G322))),kmul(g23L,kmsub(G212,kmul(G312,ToReal(2)),kmul(G211,G322)))))))))))),kmul(gu33,ksub(ksub(kmadd(JacPDstandardNth32g23,ToReal(2),kmul(ToReal(2),kmadd(g22L,SQR(G223),knmsub(g12L,kmadd(G133,G222,kmadd(G122,G233,kmul(G123,kmul(G223,ToReal(-2))))),kmadd(g11L,knmsub(G122,G133,SQR(G123)),knmsub(G233,kmadd(g23L,G322,kmul(G222,g22L)),kmadd(g33L,knmsub(G322,G333,SQR(G323)),kmadd(g13L,knmsub(G133,G322,kmsub(G123,kmul(G323,ToReal(2)),kmul(G122,G333))),kmul(g23L,kmsub(G223,kmul(G323,ToReal(2)),kmul(G222,G333))))))))))),JacPDstandardNth33g22),JacPDstandardNth22g33)))))))));
- CCTK_REAL G133 = 0.5*(gu11*(-PDstandardNth1g33 + 2*PDstandardNth3g13)
- + gu12*(-PDstandardNth2g33 + 2*PDstandardNth3g23) +
- gu13*PDstandardNth3g33);
+ CCTK_REAL_VEC R23 =
+ kmul(ToReal(0.5),kmadd(gu23,kadd(JacPDstandardNth22g33,kmadd(JacPDstandardNth23g23,ToReal(-2),JacPDstandardNth33g22)),kmadd(gu11,kadd(JacPDstandardNth12g13,ksub(JacPDstandardNth13g12,kadd(JacPDstandardNth23g11,JacPDstandardNth11g23))),kmadd(gu21,kadd(JacPDstandardNth13g22,ksub(JacPDstandardNth22g13,kadd(JacPDstandardNth23g12,JacPDstandardNth21g23))),kmadd(gu13,kadd(JacPDstandardNth12g33,ksub(JacPDstandardNth33g12,kadd(JacPDstandardNth23g13,JacPDstandardNth13g23))),kmadd(gu33,ksub(JacPDstandardNth32g33,JacPDstandardNth23g33),kmadd(gu31,kadd(JacPDstandardNth13g23,ksub(JacPDstandardNth32g13,kadd(JacPDstandardNth31g23,JacPDstandardNth23g13))),kmul(kmadd(gu32,kmadd(G133,kmadd(g11L,G122,kmadd(g12L,G222,kmul(g13L,G322))),kmadd(G233,kmadd(G222,g22L,kmul(g23L,G322)),kmadd(G333,kmadd(G122,g13L,kmadd(G222,g23L,kmul(G322,g33L))),kmadd(kmadd(G123,kmul(g13L,G323),kmul(G223,kmul(g23L,G323))),ToReal(-2),kmsub(g12L,kmadd(G122,G233,kmul(G123,kmul(G223,ToReal(-2)))),kmadd(g11L,SQR(G123),kmadd(g33L,SQR(G323),kmul(g22L,SQR(G223))))))))),kmadd(gu11,kmadd(G112,kmul(g13L,G313),kmadd(G212,kmul(g23L,G313),kmadd(G312,kmul(G313,g33L),kmadd(g11L,kmsub(G112,G113,kmul(G111,G123)),kmadd(g12L,kmadd(G113,G212,kmsub(G112,G213,kmadd(G111,G223,kmul(G123,G211)))),kmadd(g22L,kmsub(G212,G213,kmul(G211,G223)),kmadd(g13L,kmsub(G113,G312,kmul(G111,G323)),kmsub(g23L,kmsub(G213,G312,kmul(G211,G323)),kmul(G311,kmadd(G123,g13L,kmadd(G323,g33L,kmul(G223,g23L)))))))))))),kmadd(gu12,kmadd(G113,kmul(g13L,G322),kmadd(G213,kmul(g23L,G322),kmadd(G313,kmul(G322,g33L),kmadd(g11L,kmsub(G113,G122,kmul(G112,G123)),kmadd(g12L,kmadd(G122,G213,kmsub(G113,G222,kmadd(G112,G223,kmul(G123,G212)))),kmadd(g22L,kmsub(G213,G222,kmul(G212,G223)),kmadd(g13L,kmsub(G122,G313,kmul(G112,G323)),kmsub(g23L,kmsub(G222,G313,kmul(G212,G323)),kmul(G312,kmadd(G123,g13L,kmadd(G323,g33L,kmul(G223,g23L)))))))))))),kmul(gu31,kmadd(G112,kmul(g13L,G333),kmadd(G212,kmul(g23L,G333),kmadd(G312,kmadd(G133,g13L,kmadd(G233,g23L,kmul(G333,g33L))),kmadd(g11L,kmsub(G112,G133,kmul(G113,G123)),kmadd(g12L,kmadd(G133,G212,kmsub(G112,G233,kmadd(G113,G223,kmul(G123,G213)))),kmsub(g22L,kmsub(G212,G233,kmul(G213,G223)),kmadd(G313,kmadd(G123,g13L,kmadd(G323,g33L,kmul(G223,g23L))),kmul(G323,kmadd(G213,g23L,kmul(G113,g13L)))))))))))))),ToReal(2)))))))));
- CCTK_REAL G233 = 0.5*(gu21*(-PDstandardNth1g33 + 2*PDstandardNth3g13)
- + gu22*(-PDstandardNth2g33 + 2*PDstandardNth3g23) +
- gu23*PDstandardNth3g33);
+ CCTK_REAL_VEC R33 =
+ kmul(ToReal(0.5),knmsub(gu11,kadd(JacPDstandardNth11g33,kmadd(JacPDstandardNth13g13,ToReal(-2),JacPDstandardNth33g11)),kmadd(gu31,ksub(JacPDstandardNth13g33,JacPDstandardNth31g33),kmadd(gu32,ksub(JacPDstandardNth23g33,JacPDstandardNth32g33),kmadd(gu12,kadd(JacPDstandardNth13g23,ksub(JacPDstandardNth23g13,kadd(JacPDstandardNth33g12,JacPDstandardNth12g33))),kmadd(gu21,kadd(JacPDstandardNth13g23,ksub(JacPDstandardNth23g13,kadd(JacPDstandardNth33g12,JacPDstandardNth21g33))),kmadd(ToReal(2),kmadd(gu12,kmadd(G113,kmul(g13L,G323),kmadd(G213,kmul(g23L,G323),kmadd(G313,kmul(G323,g33L),kmadd(g11L,kmsub(G113,G123,kmul(G112,G133)),kmadd(g12L,kmadd(G123,G213,kmsub(G113,G223,kmadd(G112,G233,kmul(G133,G212)))),kmadd(g22L,kmsub(G213,G223,kmul(G212,G233)),kmadd(g13L,kmsub(G123,G313,kmul(G112,G333)),kmsub(g23L,kmsub(G223,G313,kmul(G212,G333)),kmul(G312,kmadd(G133,g13L,kmadd(G333,g33L,kmul(G233,g23L)))))))))))),kmadd(gu21,kmadd(G113,kmul(g13L,G323),kmadd(G213,kmul(g23L,G323),kmadd(G313,kmul(G323,g33L),kmadd(g11L,kmsub(G113,G123,kmul(G112,G133)),kmadd(g12L,kmadd(G123,G213,kmsub(G113,G223,kmadd(G112,G233,kmul(G133,G212)))),kmadd(g22L,kmsub(G213,G223,kmul(G212,G233)),kmadd(g13L,kmsub(G123,G313,kmul(G112,G333)),kmsub(g23L,kmsub(G223,G313,kmul(G212,G333)),kmul(G312,kmadd(G133,g13L,kmadd(G333,g33L,kmul(G233,g23L)))))))))))),kmul(gu11,kmadd(g22L,SQR(G213),knmsub(g12L,kmadd(G133,G211,kmadd(G111,G233,kmul(G113,kmul(G213,ToReal(-2))))),kmadd(g11L,knmsub(G111,G133,SQR(G113)),knmsub(G233,kmadd(g23L,G311,kmul(G211,g22L)),kmadd(g33L,knmsub(G311,G333,SQR(G313)),kmadd(g13L,knmsub(G133,G311,kmsub(G113,kmul(G313,ToReal(2)),kmul(G111,G333))),kmul(g23L,kmsub(G213,kmul(G313,ToReal(2)),kmul(G211,G333)))))))))))),kmul(gu22,ksub(ksub(kmadd(JacPDstandardNth23g23,ToReal(2),kmul(ToReal(2),kmadd(g22L,SQR(G223),knmsub(g12L,kmadd(G133,G222,kmadd(G122,G233,kmul(G123,kmul(G223,ToReal(-2))))),kmadd(g11L,knmsub(G122,G133,SQR(G123)),knmsub(G233,kmadd(g23L,G322,kmul(G222,g22L)),kmadd(g33L,knmsub(G322,G333,SQR(G323)),kmadd(g13L,knmsub(G133,G322,kmsub(G123,kmul(G323,ToReal(2)),kmul(G122,G333))),kmul(g23L,kmsub(G223,kmul(G323,ToReal(2)),kmul(G222,G333))))))))))),JacPDstandardNth33g22),JacPDstandardNth22g33)))))))));
- CCTK_REAL G333 = 0.5*(gu31*(-PDstandardNth1g33 + 2*PDstandardNth3g13)
- + gu32*(-PDstandardNth2g33 + 2*PDstandardNth3g23) +
- gu33*PDstandardNth3g33);
+ CCTK_REAL_VEC trR =
+ kmadd(gu11,R11,kmadd(kadd(gu12,gu21),R12,kmadd(kadd(gu13,gu31),R13,kmadd(gu22,R22,kmadd(kadd(gu23,gu32),R23,kmul(gu33,R33))))));
- CCTK_REAL R11 = -(G111*(G111 + G122 + G133)) - G211*(G211 + G222 +
- G233) - G311*(G311 + G322 + G333) - 0.5*gu22*(PDstandardNth11g22 -
- 2*PDstandardNth12g12 + PDstandardNth22g11) +
- 0.5*gu23*(-PDstandardNth11g23 + PDstandardNth12g13 + PDstandardNth13g12
- - PDstandardNth23g11) + 0.5*gu32*(-PDstandardNth11g23 +
- PDstandardNth12g13 + PDstandardNth13g12 - PDstandardNth23g11) -
- 0.5*gu33*(PDstandardNth11g33 - 2*PDstandardNth13g13 +
- PDstandardNth33g11) + SQR(G111) + SQR(G112) + SQR(G113) + SQR(G211) +
- SQR(G212) + SQR(G213) + SQR(G311) + SQR(G312) + SQR(G313);
-
- CCTK_REAL R12 = 0.5*(2*(G113*G123 + G213*G223 + G313*G323) -
- 2*(G112*G133 + G212*G233 + G312*G333 + gu12*PDstandardNth12g12) +
- gu13*(PDstandardNth11g23 - PDstandardNth12g13 - PDstandardNth13g12) +
- gu12*(PDstandardNth11g22 + PDstandardNth22g11) +
- gu32*PDstandardNth22g13 + gu13*PDstandardNth23g11 +
- gu32*(-PDstandardNth12g23 + PDstandardNth13g22 - PDstandardNth23g12) +
- gu33*PDstandardNth23g13 + gu33*(-PDstandardNth12g33 +
- PDstandardNth13g23 - PDstandardNth33g12));
-
- CCTK_REAL R13 = 0.5*(2*(G112*G123 + G212*G223 + G312*G323) -
- 2*(G113*G122 + G213*G222 + G313*G322 + gu13*PDstandardNth13g13) +
- gu12*(PDstandardNth11g23 - PDstandardNth12g13 - PDstandardNth13g12 +
- PDstandardNth23g11) + gu22*(PDstandardNth12g23 - PDstandardNth13g22 -
- PDstandardNth22g13 + PDstandardNth23g12) + gu13*(PDstandardNth11g33 +
- PDstandardNth33g11) + gu23*(PDstandardNth12g33 - PDstandardNth13g23 -
- PDstandardNth23g13 + PDstandardNth33g12));
-
- CCTK_REAL R22 = -(G122*(G111 + G122 + G133)) - G222*(G211 + G222 +
- G233) - G322*(G311 + G322 + G333) - 0.5*gu11*(PDstandardNth11g22 -
- 2*PDstandardNth12g12 + PDstandardNth22g11) +
- 0.5*gu13*(PDstandardNth12g23 - PDstandardNth13g22 - PDstandardNth22g13
- + PDstandardNth23g12) + 0.5*gu31*(PDstandardNth12g23 -
- PDstandardNth13g22 - PDstandardNth22g13 + PDstandardNth23g12) -
- 0.5*gu33*(PDstandardNth22g33 - 2*PDstandardNth23g23 +
- PDstandardNth33g22) + SQR(G112) + SQR(G122) + SQR(G123) + SQR(G212) +
- SQR(G222) + SQR(G223) + SQR(G312) + SQR(G322) + SQR(G323);
-
- CCTK_REAL R23 = 0.5*(2*(G112*G113 + G212*G213 + G312*G313) +
- gu11*(-PDstandardNth11g23 + PDstandardNth12g13 + PDstandardNth13g12 -
- PDstandardNth23g11) + gu21*(-PDstandardNth12g23 + PDstandardNth13g22 +
- PDstandardNth22g13 - PDstandardNth23g12) - 2*(G111*G123 + G211*G223 +
- G311*G323 + gu23*PDstandardNth23g23) + gu13*(PDstandardNth12g33 -
- PDstandardNth13g23 - PDstandardNth23g13 + PDstandardNth33g12) +
- gu23*(PDstandardNth22g33 + PDstandardNth33g22));
-
- CCTK_REAL R33 = -(G133*(G111 + G122 + G133)) - G233*(G211 + G222 +
- G233) - G333*(G311 + G322 + G333) - 0.5*gu11*(PDstandardNth11g33 -
- 2*PDstandardNth13g13 + PDstandardNth33g11) +
- 0.5*gu12*(-PDstandardNth12g33 + PDstandardNth13g23 + PDstandardNth23g13
- - PDstandardNth33g12) + 0.5*gu21*(-PDstandardNth12g33 +
- PDstandardNth13g23 + PDstandardNth23g13 - PDstandardNth33g12) -
- 0.5*gu22*(PDstandardNth22g33 - 2*PDstandardNth23g23 +
- PDstandardNth33g22) + SQR(G113) + SQR(G123) + SQR(G133) + SQR(G213) +
- SQR(G223) + SQR(G233) + SQR(G313) + SQR(G323) + SQR(G333);
-
- CCTK_REAL trR = gu11*R11 + (gu12 + gu21)*R12 + (gu13 + gu31)*R13 +
- gu22*R22 + (gu23 + gu32)*R23 + gu33*R33;
-
- CCTK_REAL Km11 = gu11*K11L + gu12*K12L + gu13*K13L;
-
- CCTK_REAL Km21 = gu21*K11L + gu22*K12L + gu23*K13L;
-
- CCTK_REAL Km31 = gu31*K11L + gu32*K12L + gu33*K13L;
-
- CCTK_REAL Km12 = gu11*K12L + gu12*K22L + gu13*K23L;
-
- CCTK_REAL Km22 = gu21*K12L + gu22*K22L + gu23*K23L;
-
- CCTK_REAL Km32 = gu31*K12L + gu32*K22L + gu33*K23L;
-
- CCTK_REAL Km13 = gu11*K13L + gu12*K23L + gu13*K33L;
-
- CCTK_REAL Km23 = gu21*K13L + gu22*K23L + gu23*K33L;
-
- CCTK_REAL Km33 = gu31*K13L + gu32*K23L + gu33*K33L;
-
- CCTK_REAL trK = Km11 + Km22 + Km33;
-
- CCTK_REAL HL = -2*(Km12*Km21 + Km13*Km31 + Km23*Km32) + trR -
- SQR(Km11) - SQR(Km22) - SQR(Km33) + SQR(trK);
-
- CCTK_REAL M1L = gu21*(-(G112*K11L) + (G111 - G212)*K12L - G312*K13L +
- G211*K22L + G311*K23L - PDstandardNth1K12 + PDstandardNth2K11) +
- gu22*(-(G122*K11L) + (G112 - G222)*K12L - G322*K13L + G212*K22L +
- G312*K23L - PDstandardNth1K22 + PDstandardNth2K12) + gu23*(-(G123*K11L)
- + (G113 - G223)*K12L - G323*K13L + G213*K22L + G313*K23L -
- PDstandardNth1K23 + PDstandardNth2K13) + gu31*(-(G113*K11L) - G213*K12L
- + (G111 - G313)*K13L + G211*K23L + G311*K33L - PDstandardNth1K13 +
- PDstandardNth3K11) + gu32*(-(G123*K11L) - G223*K12L + (G112 -
- G323)*K13L + G212*K23L + G312*K33L - PDstandardNth1K23 +
- PDstandardNth3K12) + gu33*(-(G133*K11L) - G233*K12L + (G113 -
- G333)*K13L + G213*K23L + G313*K33L - PDstandardNth1K33 +
- PDstandardNth3K13);
-
- CCTK_REAL M2L = gu11*(G112*K11L + (-G111 + G212)*K12L + G312*K13L -
- G211*K22L - G311*K23L + PDstandardNth1K12 - PDstandardNth2K11) +
- gu12*(G122*K11L + (-G112 + G222)*K12L + G322*K13L - G212*K22L -
- G312*K23L + PDstandardNth1K22 - PDstandardNth2K12) + gu13*(G123*K11L +
- (-G113 + G223)*K12L + G323*K13L - G213*K22L - G313*K23L +
- PDstandardNth1K23 - PDstandardNth2K13) + gu31*(-(G113*K12L) + G112*K13L
- - G213*K22L + (G212 - G313)*K23L + G312*K33L - PDstandardNth2K13 +
- PDstandardNth3K12) + gu32*(-(G123*K12L) + G122*K13L - G223*K22L + (G222
- - G323)*K23L + G322*K33L - PDstandardNth2K23 + PDstandardNth3K22) +
- gu33*(-(G133*K12L) + G123*K13L - G233*K22L + (G223 - G333)*K23L +
- G323*K33L - PDstandardNth2K33 + PDstandardNth3K23);
-
- CCTK_REAL M3L = gu11*(G113*K11L + G213*K12L + (-G111 + G313)*K13L -
- G211*K23L - G311*K33L + PDstandardNth1K13 - PDstandardNth3K11) +
- gu12*(G123*K11L + G223*K12L + (-G112 + G323)*K13L - G212*K23L -
- G312*K33L + PDstandardNth1K23 - PDstandardNth3K12) + gu21*(G113*K12L -
- G112*K13L + G213*K22L + (-G212 + G313)*K23L - G312*K33L +
- PDstandardNth2K13 - PDstandardNth3K12) + gu13*(G133*K11L + G233*K12L +
- (-G113 + G333)*K13L - G213*K23L - G313*K33L + PDstandardNth1K33 -
- PDstandardNth3K13) + gu22*(G123*K12L - G122*K13L + G223*K22L + (-G222 +
- G323)*K23L - G322*K33L + PDstandardNth2K23 - PDstandardNth3K22) +
- gu23*(G133*K12L - G123*K13L + G233*K22L + (-G223 + G333)*K23L -
- G323*K33L + PDstandardNth2K33 - PDstandardNth3K23);
-
- /* Copy local copies back to grid functions */
- H[index] = HL;
- M1[index] = M1L;
- M2[index] = M2L;
- M3[index] = M3L;
+ CCTK_REAL_VEC Km11 =
+ kmadd(gu11,K11L,kmadd(gu12,K12L,kmul(gu13,K13L)));
+
+ CCTK_REAL_VEC Km21 =
+ kmadd(gu21,K11L,kmadd(gu22,K12L,kmul(gu23,K13L)));
+
+ CCTK_REAL_VEC Km31 =
+ kmadd(gu31,K11L,kmadd(gu32,K12L,kmul(gu33,K13L)));
+
+ CCTK_REAL_VEC Km12 =
+ kmadd(gu11,K12L,kmadd(gu12,K22L,kmul(gu13,K23L)));
+
+ CCTK_REAL_VEC Km22 =
+ kmadd(gu21,K12L,kmadd(gu22,K22L,kmul(gu23,K23L)));
+
+ CCTK_REAL_VEC Km32 =
+ kmadd(gu31,K12L,kmadd(gu32,K22L,kmul(gu33,K23L)));
+
+ CCTK_REAL_VEC Km13 =
+ kmadd(gu11,K13L,kmadd(gu12,K23L,kmul(gu13,K33L)));
+
+ CCTK_REAL_VEC Km23 =
+ kmadd(gu21,K13L,kmadd(gu22,K23L,kmul(gu23,K33L)));
+
+ CCTK_REAL_VEC Km33 =
+ kmadd(gu31,K13L,kmadd(gu32,K23L,kmul(gu33,K33L)));
+
+ CCTK_REAL_VEC trK = kadd(Km11,kadd(Km22,Km33));
+
+ CCTK_REAL_VEC HL =
+ kadd(trR,kadd(SQR(trK),kmsub(kmadd(Km12,Km21,kmadd(Km13,Km31,kmul(Km23,Km32))),ToReal(-2),kadd(kadd(SQR(Km33),SQR(Km22)),SQR(Km11)))));
+
+ CCTK_REAL_VEC M1L =
+ kmadd(gu21,kadd(JacPDstandardNth2K11,kmadd(G211,K22L,kmadd(G311,K23L,ksub(knmsub(G112,K11L,kmsub(K12L,ksub(G111,G212),kmul(G312,K13L))),JacPDstandardNth1K12)))),kmadd(gu22,kadd(JacPDstandardNth2K12,kmadd(G212,K22L,kmadd(G312,K23L,ksub(knmsub(G122,K11L,kmsub(K12L,ksub(G112,G222),kmul(G322,K13L))),JacPDstandardNth1K22)))),kmadd(gu23,kadd(JacPDstandardNth2K13,kmadd(G213,K22L,kmadd(G313,K23L,ksub(knmsub(G123,K11L,kmsub(K12L,ksub(G113,G223),kmul(G323,K13L))),JacPDstandardNth1K23)))),kmadd(gu31,kadd(JacPDstandardNth3K11,kmadd(G211,K23L,kmadd(G311,K33L,ksub(knmsub(G113,K11L,kmsub(K13L,ksub(G111,G313),kmul(G213,K12L))),JacPDstandardNth1K13)))),kmadd(gu32,kadd(JacPDstandardNth3K12,kmadd(G212,K23L,kmadd(G312,K33L,ksub(knmsub(G123,K11L,kmsub(K13L,ksub(G112,G323),kmul(G223,K12L))),JacPDstandardNth1K23)))),kmul(gu33,kadd(JacPDstandardNth3K13,kmadd(G213,K23L,kmadd(G313,K33L,ksub(knmsub(G133,K11L,kmsub(K13L,ksub(G113,G333),kmul(G233,K12L))),JacPDstandardNth1K33))))))))));
+
+ CCTK_REAL_VEC M2L =
+ kmadd(gu11,kadd(JacPDstandardNth1K12,kmadd(G112,K11L,kmadd(G312,K13L,ksub(knmsub(G211,K22L,kmsub(K12L,ksub(G212,G111),kmul(G311,K23L))),JacPDstandardNth2K11)))),kmadd(gu12,kadd(JacPDstandardNth1K22,kmadd(G122,K11L,kmadd(G322,K13L,ksub(knmsub(G212,K22L,kmsub(K12L,ksub(G222,G112),kmul(G312,K23L))),JacPDstandardNth2K12)))),kmadd(gu13,kadd(JacPDstandardNth1K23,kmadd(G123,K11L,kmadd(G323,K13L,ksub(knmsub(G213,K22L,kmsub(K12L,ksub(G223,G113),kmul(G313,K23L))),JacPDstandardNth2K13)))),kmadd(gu31,kadd(JacPDstandardNth3K12,kmadd(G112,K13L,kmadd(G312,K33L,ksub(knmsub(G113,K12L,kmsub(K23L,ksub(G212,G313),kmul(G213,K22L))),JacPDstandardNth2K13)))),kmadd(gu32,kadd(JacPDstandardNth3K22,kmadd(G122,K13L,kmadd(G322,K33L,ksub(knmsub(G123,K12L,kmsub(K23L,ksub(G222,G323),kmul(G223,K22L))),JacPDstandardNth2K23)))),kmul(gu33,kadd(JacPDstandardNth3K23,kmadd(G123,K13L,kmadd(G323,K33L,ksub(knmsub(G133,K12L,kmsub(K23L,ksub(G223,G333),kmul(G233,K22L))),JacPDstandardNth2K33))))))))));
+
+ CCTK_REAL_VEC M3L =
+ kmadd(gu11,kadd(JacPDstandardNth1K13,kmadd(G113,K11L,kmadd(G213,K12L,ksub(knmsub(G211,K23L,kmsub(K13L,ksub(G313,G111),kmul(G311,K33L))),JacPDstandardNth3K11)))),kmadd(gu12,kadd(JacPDstandardNth1K23,kmadd(G123,K11L,kmadd(G223,K12L,ksub(knmsub(G212,K23L,kmsub(K13L,ksub(G323,G112),kmul(G312,K33L))),JacPDstandardNth3K12)))),kmadd(gu13,kadd(JacPDstandardNth1K33,kmadd(G133,K11L,kmadd(G233,K12L,ksub(knmsub(G213,K23L,kmsub(K13L,ksub(G333,G113),kmul(G313,K33L))),JacPDstandardNth3K13)))),kmadd(gu21,kadd(JacPDstandardNth2K13,kmadd(G113,K12L,kmadd(G213,K22L,ksub(knmsub(G112,K13L,kmsub(K23L,ksub(G313,G212),kmul(G312,K33L))),JacPDstandardNth3K12)))),kmadd(gu22,kadd(JacPDstandardNth2K23,kmadd(G123,K12L,kmadd(G223,K22L,ksub(knmsub(G122,K13L,kmsub(K23L,ksub(G323,G222),kmul(G322,K33L))),JacPDstandardNth3K22)))),kmul(gu23,kadd(JacPDstandardNth2K33,kmadd(G133,K12L,kmadd(G233,K22L,ksub(knmsub(G123,K13L,kmsub(K23L,ksub(G333,G223),kmul(G323,K33L))),JacPDstandardNth3K23))))))))));
+
+ /* 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);
}
- LC_ENDLOOP3 (ML_ADM_constraints);
+ LC_ENDLOOP3VEC (ML_ADM_constraints);
}
extern "C" void ML_ADM_constraints(CCTK_ARGUMENTS)
@@ -397,5 +1260,43 @@ extern "C" void ML_ADM_constraints(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_ADM_constraints_Body");
+ }
+
+ if (cctk_iteration % ML_ADM_constraints_calc_every != ML_ADM_constraints_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_ADM::ML_curv","ML_ADM::ML_Ham","ML_ADM::ML_metric","ML_ADM::ML_mom"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_ADM_constraints", 4, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_ADM_constraints", 1, 1, 1);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_ADM_constraints", 2, 2, 2);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_ADM_constraints", 3, 3, 3);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_ADM_constraints", 4, 4, 4);
+ break;
+ }
+
GenericFD_LoopOverInterior(cctkGH, &ML_ADM_constraints_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_ADM_constraints_Body");
+ }
}
diff --git a/ML_ADM/src/ML_ADM_constraints_boundary.cc b/ML_ADM/src/ML_ADM_constraints_boundary.cc
index b5322c5..12367e2 100644
--- a/ML_ADM/src/ML_ADM_constraints_boundary.cc
+++ b/ML_ADM/src/ML_ADM_constraints_boundary.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_ADM_constraints_boundary_SelectBCs(CCTK_ARGUMENTS)
{
@@ -36,7 +37,7 @@ extern "C" void ML_ADM_constraints_boundary_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_ADM_constraints_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_ADM_constraints_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;
@@ -44,20 +45,6 @@ static void ML_ADM_constraints_boundary_Body(cGH const * restrict const cctkGH,
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_ADM_constraints_boundary_Body");
- }
-
- if (cctk_iteration % ML_ADM_constraints_boundary_calc_every != ML_ADM_constraints_boundary_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_ADM::ML_Ham","ML_ADM::ML_mom"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_ADM_constraints_boundary", 2, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -67,38 +54,120 @@ static void ML_ADM_constraints_boundary_Body(cGH const * restrict const cctkGH,
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ CCTK_REAL_VEC const p1o12dx = kmul(INV(dx),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dy = kmul(INV(dy),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dz = kmul(INV(dz),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o144dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(0.00694444444444444444444444444444)));
+ CCTK_REAL_VEC const p1o144dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(0.00694444444444444444444444444444)));
+ CCTK_REAL_VEC const p1o144dydz = kmul(INV(dy),kmul(INV(dz),ToReal(0.00694444444444444444444444444444)));
+ CCTK_REAL_VEC const p1o180dx2 = kmul(INV(SQR(dx)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o180dy2 = kmul(INV(SQR(dy)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o180dz2 = kmul(INV(SQR(dz)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o2dx = kmul(INV(dx),ToReal(0.5));
+ CCTK_REAL_VEC const p1o2dy = kmul(INV(dy),ToReal(0.5));
+ CCTK_REAL_VEC const p1o2dz = kmul(INV(dz),ToReal(0.5));
+ CCTK_REAL_VEC const p1o3600dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(0.000277777777777777777777777777778)));
+ CCTK_REAL_VEC const p1o3600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(0.000277777777777777777777777777778)));
+ CCTK_REAL_VEC const p1o3600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(0.000277777777777777777777777777778)));
+ CCTK_REAL_VEC const p1o4dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(0.25)));
+ CCTK_REAL_VEC const p1o4dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(0.25)));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(dz),ToReal(0.25)));
+ CCTK_REAL_VEC const p1o5040dx2 = kmul(INV(SQR(dx)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o5040dy2 = kmul(INV(SQR(dy)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o5040dz2 = kmul(INV(SQR(dz)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o60dx = kmul(INV(dx),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o60dy = kmul(INV(dy),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o60dz = kmul(INV(dz),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o705600dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1odx2 = INV(SQR(dx));
+ CCTK_REAL_VEC const p1ody2 = INV(SQR(dy));
+ CCTK_REAL_VEC const p1odz2 = INV(SQR(dz));
+ CCTK_REAL_VEC const pm1o12dx2 = kmul(INV(SQR(dx)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dy2 = kmul(INV(SQR(dy)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dz2 = kmul(INV(SQR(dz)),ToReal(-0.0833333333333333333333333333333));
+
+ /* Jacobian variable pointers */
+ bool const use_jacobian = (!CCTK_IsFunctionAliased("MultiPatch_GetMap") || MultiPatch_GetMap(cctkGH) != jacobian_identity_map)
+ && strlen(jacobian_group) > 0;
+ if (use_jacobian && strlen(jacobian_derivative_group) == 0)
+ {
+ CCTK_WARN (1, "GenericFD::jacobian_group and GenericFD::jacobian_derivative_group must both be set to valid group names");
+ }
+
+ CCTK_REAL const *restrict jacobian_ptrs[9];
+ if (use_jacobian) GenericFD_GroupDataPointers(cctkGH, jacobian_group,
+ 9, jacobian_ptrs);
+
+ CCTK_REAL const *restrict const J11 = use_jacobian ? jacobian_ptrs[0] : 0;
+ CCTK_REAL const *restrict const J12 = use_jacobian ? jacobian_ptrs[1] : 0;
+ CCTK_REAL const *restrict const J13 = use_jacobian ? jacobian_ptrs[2] : 0;
+ CCTK_REAL const *restrict const J21 = use_jacobian ? jacobian_ptrs[3] : 0;
+ CCTK_REAL const *restrict const J22 = use_jacobian ? jacobian_ptrs[4] : 0;
+ CCTK_REAL const *restrict const J23 = use_jacobian ? jacobian_ptrs[5] : 0;
+ CCTK_REAL const *restrict const J31 = use_jacobian ? jacobian_ptrs[6] : 0;
+ CCTK_REAL const *restrict const J32 = use_jacobian ? jacobian_ptrs[7] : 0;
+ CCTK_REAL const *restrict const J33 = use_jacobian ? jacobian_ptrs[8] : 0;
+
+ CCTK_REAL const *restrict jacobian_derivative_ptrs[18];
+ if (use_jacobian) GenericFD_GroupDataPointers(cctkGH, jacobian_derivative_group,
+ 18, jacobian_derivative_ptrs);
+
+ CCTK_REAL const *restrict const dJ111 = use_jacobian ? jacobian_derivative_ptrs[0] : 0;
+ CCTK_REAL const *restrict const dJ112 = use_jacobian ? jacobian_derivative_ptrs[1] : 0;
+ CCTK_REAL const *restrict const dJ113 = use_jacobian ? jacobian_derivative_ptrs[2] : 0;
+ CCTK_REAL const *restrict const dJ122 = use_jacobian ? jacobian_derivative_ptrs[3] : 0;
+ CCTK_REAL const *restrict const dJ123 = use_jacobian ? jacobian_derivative_ptrs[4] : 0;
+ CCTK_REAL const *restrict const dJ133 = use_jacobian ? jacobian_derivative_ptrs[5] : 0;
+ CCTK_REAL const *restrict const dJ211 = use_jacobian ? jacobian_derivative_ptrs[6] : 0;
+ CCTK_REAL const *restrict const dJ212 = use_jacobian ? jacobian_derivative_ptrs[7] : 0;
+ CCTK_REAL const *restrict const dJ213 = use_jacobian ? jacobian_derivative_ptrs[8] : 0;
+ CCTK_REAL const *restrict const dJ222 = use_jacobian ? jacobian_derivative_ptrs[9] : 0;
+ CCTK_REAL const *restrict const dJ223 = use_jacobian ? jacobian_derivative_ptrs[10] : 0;
+ CCTK_REAL const *restrict const dJ233 = use_jacobian ? jacobian_derivative_ptrs[11] : 0;
+ CCTK_REAL const *restrict const dJ311 = use_jacobian ? jacobian_derivative_ptrs[12] : 0;
+ CCTK_REAL const *restrict const dJ312 = use_jacobian ? jacobian_derivative_ptrs[13] : 0;
+ CCTK_REAL const *restrict const dJ313 = use_jacobian ? jacobian_derivative_ptrs[14] : 0;
+ CCTK_REAL const *restrict const dJ322 = use_jacobian ? jacobian_derivative_ptrs[15] : 0;
+ CCTK_REAL const *restrict const dJ323 = use_jacobian ? jacobian_derivative_ptrs[16] : 0;
+ CCTK_REAL const *restrict const dJ333 = use_jacobian ? jacobian_derivative_ptrs[17] : 0;
+
+ /* 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_LOOP3 (ML_ADM_constraints_boundary,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ 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)
{
ptrdiff_t const index = di*i + dj*j + dk*k;
@@ -106,26 +175,77 @@ static void ML_ADM_constraints_boundary_Body(cGH const * restrict const cctkGH,
+
/* 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 HL = 0;
+ CCTK_REAL_VEC HL = ToReal(0);
+
+ CCTK_REAL_VEC M1L = ToReal(0);
- CCTK_REAL M1L = 0;
+ CCTK_REAL_VEC M2L = ToReal(0);
- CCTK_REAL M2L = 0;
+ CCTK_REAL_VEC M3L = ToReal(0);
- CCTK_REAL M3L = 0;
+ /* If necessary, store only partial vectors after the first iteration */
- /* Copy local copies back to grid functions */
- H[index] = HL;
- M1[index] = M1L;
- M2[index] = M2L;
- M3[index] = M3L;
+ 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);
}
- LC_ENDLOOP3 (ML_ADM_constraints_boundary);
+ LC_ENDLOOP3VEC (ML_ADM_constraints_boundary);
}
extern "C" void ML_ADM_constraints_boundary(CCTK_ARGUMENTS)
@@ -133,5 +253,39 @@ extern "C" void ML_ADM_constraints_boundary(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_ADM_constraints_boundary_Body");
+ }
+
+ if (cctk_iteration % ML_ADM_constraints_boundary_calc_every != ML_ADM_constraints_boundary_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_ADM::ML_Ham","ML_ADM::ML_mom"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_ADM_constraints_boundary", 2, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverBoundaryWithGhosts(cctkGH, &ML_ADM_constraints_boundary_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_ADM_constraints_boundary_Body");
+ }
}
diff --git a/ML_ADM/src/ML_ADM_convertFromADMBase.cc b/ML_ADM/src/ML_ADM_convertFromADMBase.cc
index 8c67661..0ed6049 100644
--- a/ML_ADM/src/ML_ADM_convertFromADMBase.cc
+++ b/ML_ADM/src/ML_ADM_convertFromADMBase.cc
@@ -13,15 +13,16 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
-static void ML_ADM_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_ADM_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;
@@ -29,20 +30,6 @@ static void ML_ADM_convertFromADMBase_Body(cGH const * restrict const cctkGH, in
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_ADM_convertFromADMBase_Body");
- }
-
- if (cctk_iteration % ML_ADM_convertFromADMBase_calc_every != ML_ADM_convertFromADMBase_calc_offset)
- {
- 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"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_ADM_convertFromADMBase", 8, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -52,117 +39,286 @@ static void ML_ADM_convertFromADMBase_Body(cGH const * restrict const cctkGH, in
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ CCTK_REAL_VEC const p1o12dx = kmul(INV(dx),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dy = kmul(INV(dy),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dz = kmul(INV(dz),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o144dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(0.00694444444444444444444444444444)));
+ CCTK_REAL_VEC const p1o144dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(0.00694444444444444444444444444444)));
+ CCTK_REAL_VEC const p1o144dydz = kmul(INV(dy),kmul(INV(dz),ToReal(0.00694444444444444444444444444444)));
+ CCTK_REAL_VEC const p1o180dx2 = kmul(INV(SQR(dx)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o180dy2 = kmul(INV(SQR(dy)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o180dz2 = kmul(INV(SQR(dz)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o2dx = kmul(INV(dx),ToReal(0.5));
+ CCTK_REAL_VEC const p1o2dy = kmul(INV(dy),ToReal(0.5));
+ CCTK_REAL_VEC const p1o2dz = kmul(INV(dz),ToReal(0.5));
+ CCTK_REAL_VEC const p1o3600dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(0.000277777777777777777777777777778)));
+ CCTK_REAL_VEC const p1o3600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(0.000277777777777777777777777777778)));
+ CCTK_REAL_VEC const p1o3600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(0.000277777777777777777777777777778)));
+ CCTK_REAL_VEC const p1o4dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(0.25)));
+ CCTK_REAL_VEC const p1o4dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(0.25)));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(dz),ToReal(0.25)));
+ CCTK_REAL_VEC const p1o5040dx2 = kmul(INV(SQR(dx)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o5040dy2 = kmul(INV(SQR(dy)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o5040dz2 = kmul(INV(SQR(dz)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o60dx = kmul(INV(dx),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o60dy = kmul(INV(dy),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o60dz = kmul(INV(dz),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o705600dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1odx2 = INV(SQR(dx));
+ CCTK_REAL_VEC const p1ody2 = INV(SQR(dy));
+ CCTK_REAL_VEC const p1odz2 = INV(SQR(dz));
+ CCTK_REAL_VEC const pm1o12dx2 = kmul(INV(SQR(dx)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dy2 = kmul(INV(SQR(dy)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dz2 = kmul(INV(SQR(dz)),ToReal(-0.0833333333333333333333333333333));
+
+ /* Jacobian variable pointers */
+ bool const use_jacobian = (!CCTK_IsFunctionAliased("MultiPatch_GetMap") || MultiPatch_GetMap(cctkGH) != jacobian_identity_map)
+ && strlen(jacobian_group) > 0;
+ if (use_jacobian && strlen(jacobian_derivative_group) == 0)
+ {
+ CCTK_WARN (1, "GenericFD::jacobian_group and GenericFD::jacobian_derivative_group must both be set to valid group names");
+ }
+
+ CCTK_REAL const *restrict jacobian_ptrs[9];
+ if (use_jacobian) GenericFD_GroupDataPointers(cctkGH, jacobian_group,
+ 9, jacobian_ptrs);
+
+ CCTK_REAL const *restrict const J11 = use_jacobian ? jacobian_ptrs[0] : 0;
+ CCTK_REAL const *restrict const J12 = use_jacobian ? jacobian_ptrs[1] : 0;
+ CCTK_REAL const *restrict const J13 = use_jacobian ? jacobian_ptrs[2] : 0;
+ CCTK_REAL const *restrict const J21 = use_jacobian ? jacobian_ptrs[3] : 0;
+ CCTK_REAL const *restrict const J22 = use_jacobian ? jacobian_ptrs[4] : 0;
+ CCTK_REAL const *restrict const J23 = use_jacobian ? jacobian_ptrs[5] : 0;
+ CCTK_REAL const *restrict const J31 = use_jacobian ? jacobian_ptrs[6] : 0;
+ CCTK_REAL const *restrict const J32 = use_jacobian ? jacobian_ptrs[7] : 0;
+ CCTK_REAL const *restrict const J33 = use_jacobian ? jacobian_ptrs[8] : 0;
+
+ CCTK_REAL const *restrict jacobian_derivative_ptrs[18];
+ if (use_jacobian) GenericFD_GroupDataPointers(cctkGH, jacobian_derivative_group,
+ 18, jacobian_derivative_ptrs);
+
+ CCTK_REAL const *restrict const dJ111 = use_jacobian ? jacobian_derivative_ptrs[0] : 0;
+ CCTK_REAL const *restrict const dJ112 = use_jacobian ? jacobian_derivative_ptrs[1] : 0;
+ CCTK_REAL const *restrict const dJ113 = use_jacobian ? jacobian_derivative_ptrs[2] : 0;
+ CCTK_REAL const *restrict const dJ122 = use_jacobian ? jacobian_derivative_ptrs[3] : 0;
+ CCTK_REAL const *restrict const dJ123 = use_jacobian ? jacobian_derivative_ptrs[4] : 0;
+ CCTK_REAL const *restrict const dJ133 = use_jacobian ? jacobian_derivative_ptrs[5] : 0;
+ CCTK_REAL const *restrict const dJ211 = use_jacobian ? jacobian_derivative_ptrs[6] : 0;
+ CCTK_REAL const *restrict const dJ212 = use_jacobian ? jacobian_derivative_ptrs[7] : 0;
+ CCTK_REAL const *restrict const dJ213 = use_jacobian ? jacobian_derivative_ptrs[8] : 0;
+ CCTK_REAL const *restrict const dJ222 = use_jacobian ? jacobian_derivative_ptrs[9] : 0;
+ CCTK_REAL const *restrict const dJ223 = use_jacobian ? jacobian_derivative_ptrs[10] : 0;
+ CCTK_REAL const *restrict const dJ233 = use_jacobian ? jacobian_derivative_ptrs[11] : 0;
+ CCTK_REAL const *restrict const dJ311 = use_jacobian ? jacobian_derivative_ptrs[12] : 0;
+ CCTK_REAL const *restrict const dJ312 = use_jacobian ? jacobian_derivative_ptrs[13] : 0;
+ CCTK_REAL const *restrict const dJ313 = use_jacobian ? jacobian_derivative_ptrs[14] : 0;
+ CCTK_REAL const *restrict const dJ322 = use_jacobian ? jacobian_derivative_ptrs[15] : 0;
+ CCTK_REAL const *restrict const dJ323 = use_jacobian ? jacobian_derivative_ptrs[16] : 0;
+ CCTK_REAL const *restrict const dJ333 = use_jacobian ? jacobian_derivative_ptrs[17] : 0;
+
+ /* 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_LOOP3 (ML_ADM_convertFromADMBase,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ 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)
{
ptrdiff_t const index = di*i + dj*j + dk*k;
/* Assign local copies of grid functions */
- CCTK_REAL alpL = alp[index];
- CCTK_REAL betaxL = betax[index];
- CCTK_REAL betayL = betay[index];
- CCTK_REAL betazL = betaz[index];
- CCTK_REAL gxxL = gxx[index];
- CCTK_REAL gxyL = gxy[index];
- CCTK_REAL gxzL = gxz[index];
- CCTK_REAL gyyL = gyy[index];
- CCTK_REAL gyzL = gyz[index];
- CCTK_REAL gzzL = gzz[index];
- CCTK_REAL kxxL = kxx[index];
- CCTK_REAL kxyL = kxy[index];
- CCTK_REAL kxzL = kxz[index];
- CCTK_REAL kyyL = kyy[index];
- CCTK_REAL kyzL = kyz[index];
- CCTK_REAL kzzL = kzz[index];
+ 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]);
+
/* 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 g11L = gxxL;
+ CCTK_REAL_VEC g11L = gxxL;
+
+ CCTK_REAL_VEC g12L = gxyL;
- CCTK_REAL g12L = gxyL;
+ CCTK_REAL_VEC g13L = gxzL;
- CCTK_REAL g13L = gxzL;
+ CCTK_REAL_VEC g22L = gyyL;
- CCTK_REAL g22L = gyyL;
+ CCTK_REAL_VEC g23L = gyzL;
- CCTK_REAL g23L = gyzL;
+ CCTK_REAL_VEC g33L = gzzL;
- CCTK_REAL g33L = gzzL;
+ CCTK_REAL_VEC K11L = kxxL;
- CCTK_REAL K11L = kxxL;
+ CCTK_REAL_VEC K12L = kxyL;
- CCTK_REAL K12L = kxyL;
+ CCTK_REAL_VEC K13L = kxzL;
- CCTK_REAL K13L = kxzL;
+ CCTK_REAL_VEC K22L = kyyL;
- CCTK_REAL K22L = kyyL;
+ CCTK_REAL_VEC K23L = kyzL;
- CCTK_REAL K23L = kyzL;
+ CCTK_REAL_VEC K33L = kzzL;
- CCTK_REAL K33L = kzzL;
+ CCTK_REAL_VEC alphaL = alpL;
- CCTK_REAL alphaL = alpL;
+ CCTK_REAL_VEC beta1L = betaxL;
- CCTK_REAL beta1L = betaxL;
+ CCTK_REAL_VEC beta2L = betayL;
- CCTK_REAL beta2L = betayL;
+ CCTK_REAL_VEC beta3L = betazL;
- CCTK_REAL beta3L = betazL;
+ /* If necessary, store only partial vectors after the first iteration */
- /* Copy local copies back to grid functions */
- alpha[index] = alphaL;
- beta1[index] = beta1L;
- beta2[index] = beta2L;
- beta3[index] = beta3L;
- g11[index] = g11L;
- g12[index] = g12L;
- g13[index] = g13L;
- g22[index] = g22L;
- g23[index] = g23L;
- g33[index] = g33L;
- K11[index] = K11L;
- K12[index] = K12L;
- K13[index] = K13L;
- K22[index] = K22L;
- K23[index] = K23L;
- K33[index] = K33L;
+ 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);
}
- LC_ENDLOOP3 (ML_ADM_convertFromADMBase);
+ LC_ENDLOOP3VEC (ML_ADM_convertFromADMBase);
}
extern "C" void ML_ADM_convertFromADMBase(CCTK_ARGUMENTS)
@@ -170,5 +326,39 @@ extern "C" void ML_ADM_convertFromADMBase(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_ADM_convertFromADMBase_Body");
+ }
+
+ if (cctk_iteration % ML_ADM_convertFromADMBase_calc_every != ML_ADM_convertFromADMBase_calc_offset)
+ {
+ 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"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_ADM_convertFromADMBase", 8, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverEverything(cctkGH, &ML_ADM_convertFromADMBase_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_ADM_convertFromADMBase_Body");
+ }
}
diff --git a/ML_ADM/src/ML_ADM_convertToADMBase.cc b/ML_ADM/src/ML_ADM_convertToADMBase.cc
index d6a8e73..02358a2 100644
--- a/ML_ADM/src/ML_ADM_convertToADMBase.cc
+++ b/ML_ADM/src/ML_ADM_convertToADMBase.cc
@@ -13,15 +13,16 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
-static void ML_ADM_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_ADM_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;
@@ -29,20 +30,6 @@ static void ML_ADM_convertToADMBase_Body(cGH const * restrict const cctkGH, int
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_ADM_convertToADMBase_Body");
- }
-
- if (cctk_iteration % ML_ADM_convertToADMBase_calc_every != ML_ADM_convertToADMBase_calc_offset)
- {
- 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"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_ADM_convertToADMBase", 10, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -52,129 +39,310 @@ static void ML_ADM_convertToADMBase_Body(cGH const * restrict const cctkGH, int
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ CCTK_REAL_VEC const p1o12dx = kmul(INV(dx),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dy = kmul(INV(dy),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o12dz = kmul(INV(dz),ToReal(0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o144dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(0.00694444444444444444444444444444)));
+ CCTK_REAL_VEC const p1o144dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(0.00694444444444444444444444444444)));
+ CCTK_REAL_VEC const p1o144dydz = kmul(INV(dy),kmul(INV(dz),ToReal(0.00694444444444444444444444444444)));
+ CCTK_REAL_VEC const p1o180dx2 = kmul(INV(SQR(dx)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o180dy2 = kmul(INV(SQR(dy)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o180dz2 = kmul(INV(SQR(dz)),ToReal(0.00555555555555555555555555555556));
+ CCTK_REAL_VEC const p1o2dx = kmul(INV(dx),ToReal(0.5));
+ CCTK_REAL_VEC const p1o2dy = kmul(INV(dy),ToReal(0.5));
+ CCTK_REAL_VEC const p1o2dz = kmul(INV(dz),ToReal(0.5));
+ CCTK_REAL_VEC const p1o3600dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(0.000277777777777777777777777777778)));
+ CCTK_REAL_VEC const p1o3600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(0.000277777777777777777777777777778)));
+ CCTK_REAL_VEC const p1o3600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(0.000277777777777777777777777777778)));
+ CCTK_REAL_VEC const p1o4dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(0.25)));
+ CCTK_REAL_VEC const p1o4dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(0.25)));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(dz),ToReal(0.25)));
+ CCTK_REAL_VEC const p1o5040dx2 = kmul(INV(SQR(dx)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o5040dy2 = kmul(INV(SQR(dy)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o5040dz2 = kmul(INV(SQR(dz)),ToReal(0.000198412698412698412698412698413));
+ CCTK_REAL_VEC const p1o60dx = kmul(INV(dx),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o60dy = kmul(INV(dy),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o60dz = kmul(INV(dz),ToReal(0.0166666666666666666666666666667));
+ CCTK_REAL_VEC const p1o705600dxdy = kmul(INV(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1odx2 = INV(SQR(dx));
+ CCTK_REAL_VEC const p1ody2 = INV(SQR(dy));
+ CCTK_REAL_VEC const p1odz2 = INV(SQR(dz));
+ CCTK_REAL_VEC const pm1o12dx2 = kmul(INV(SQR(dx)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dy2 = kmul(INV(SQR(dy)),ToReal(-0.0833333333333333333333333333333));
+ CCTK_REAL_VEC const pm1o12dz2 = kmul(INV(SQR(dz)),ToReal(-0.0833333333333333333333333333333));
+
+ /* Jacobian variable pointers */
+ bool const use_jacobian = (!CCTK_IsFunctionAliased("MultiPatch_GetMap") || MultiPatch_GetMap(cctkGH) != jacobian_identity_map)
+ && strlen(jacobian_group) > 0;
+ if (use_jacobian && strlen(jacobian_derivative_group) == 0)
+ {
+ CCTK_WARN (1, "GenericFD::jacobian_group and GenericFD::jacobian_derivative_group must both be set to valid group names");
+ }
+
+ CCTK_REAL const *restrict jacobian_ptrs[9];
+ if (use_jacobian) GenericFD_GroupDataPointers(cctkGH, jacobian_group,
+ 9, jacobian_ptrs);
+
+ CCTK_REAL const *restrict const J11 = use_jacobian ? jacobian_ptrs[0] : 0;
+ CCTK_REAL const *restrict const J12 = use_jacobian ? jacobian_ptrs[1] : 0;
+ CCTK_REAL const *restrict const J13 = use_jacobian ? jacobian_ptrs[2] : 0;
+ CCTK_REAL const *restrict const J21 = use_jacobian ? jacobian_ptrs[3] : 0;
+ CCTK_REAL const *restrict const J22 = use_jacobian ? jacobian_ptrs[4] : 0;
+ CCTK_REAL const *restrict const J23 = use_jacobian ? jacobian_ptrs[5] : 0;
+ CCTK_REAL const *restrict const J31 = use_jacobian ? jacobian_ptrs[6] : 0;
+ CCTK_REAL const *restrict const J32 = use_jacobian ? jacobian_ptrs[7] : 0;
+ CCTK_REAL const *restrict const J33 = use_jacobian ? jacobian_ptrs[8] : 0;
+
+ CCTK_REAL const *restrict jacobian_derivative_ptrs[18];
+ if (use_jacobian) GenericFD_GroupDataPointers(cctkGH, jacobian_derivative_group,
+ 18, jacobian_derivative_ptrs);
+
+ CCTK_REAL const *restrict const dJ111 = use_jacobian ? jacobian_derivative_ptrs[0] : 0;
+ CCTK_REAL const *restrict const dJ112 = use_jacobian ? jacobian_derivative_ptrs[1] : 0;
+ CCTK_REAL const *restrict const dJ113 = use_jacobian ? jacobian_derivative_ptrs[2] : 0;
+ CCTK_REAL const *restrict const dJ122 = use_jacobian ? jacobian_derivative_ptrs[3] : 0;
+ CCTK_REAL const *restrict const dJ123 = use_jacobian ? jacobian_derivative_ptrs[4] : 0;
+ CCTK_REAL const *restrict const dJ133 = use_jacobian ? jacobian_derivative_ptrs[5] : 0;
+ CCTK_REAL const *restrict const dJ211 = use_jacobian ? jacobian_derivative_ptrs[6] : 0;
+ CCTK_REAL const *restrict const dJ212 = use_jacobian ? jacobian_derivative_ptrs[7] : 0;
+ CCTK_REAL const *restrict const dJ213 = use_jacobian ? jacobian_derivative_ptrs[8] : 0;
+ CCTK_REAL const *restrict const dJ222 = use_jacobian ? jacobian_derivative_ptrs[9] : 0;
+ CCTK_REAL const *restrict const dJ223 = use_jacobian ? jacobian_derivative_ptrs[10] : 0;
+ CCTK_REAL const *restrict const dJ233 = use_jacobian ? jacobian_derivative_ptrs[11] : 0;
+ CCTK_REAL const *restrict const dJ311 = use_jacobian ? jacobian_derivative_ptrs[12] : 0;
+ CCTK_REAL const *restrict const dJ312 = use_jacobian ? jacobian_derivative_ptrs[13] : 0;
+ CCTK_REAL const *restrict const dJ313 = use_jacobian ? jacobian_derivative_ptrs[14] : 0;
+ CCTK_REAL const *restrict const dJ322 = use_jacobian ? jacobian_derivative_ptrs[15] : 0;
+ CCTK_REAL const *restrict const dJ323 = use_jacobian ? jacobian_derivative_ptrs[16] : 0;
+ CCTK_REAL const *restrict const dJ333 = use_jacobian ? jacobian_derivative_ptrs[17] : 0;
+
+ /* 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_LOOP3 (ML_ADM_convertToADMBase,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ 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)
{
ptrdiff_t const index = di*i + dj*j + dk*k;
/* Assign local copies of grid functions */
- CCTK_REAL alphaL = alpha[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL g11L = g11[index];
- CCTK_REAL g12L = g12[index];
- CCTK_REAL g13L = g13[index];
- CCTK_REAL g22L = g22[index];
- CCTK_REAL g23L = g23[index];
- CCTK_REAL g33L = g33[index];
- CCTK_REAL K11L = K11[index];
- CCTK_REAL K12L = K12[index];
- CCTK_REAL K13L = K13[index];
- CCTK_REAL K22L = K22[index];
- CCTK_REAL K23L = K23[index];
- CCTK_REAL K33L = K33[index];
+ CCTK_REAL_VEC 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 g11L = vec_load(g11[index]);
+ CCTK_REAL_VEC g12L = vec_load(g12[index]);
+ CCTK_REAL_VEC g13L = vec_load(g13[index]);
+ CCTK_REAL_VEC g22L = vec_load(g22[index]);
+ CCTK_REAL_VEC g23L = vec_load(g23[index]);
+ CCTK_REAL_VEC g33L = vec_load(g33[index]);
+ CCTK_REAL_VEC K11L = vec_load(K11[index]);
+ CCTK_REAL_VEC K12L = vec_load(K12[index]);
+ CCTK_REAL_VEC K13L = vec_load(K13[index]);
+ CCTK_REAL_VEC K22L = vec_load(K22[index]);
+ CCTK_REAL_VEC K23L = vec_load(K23[index]);
+ CCTK_REAL_VEC K33L = vec_load(K33[index]);
+
/* 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 gxxL = g11L;
+ CCTK_REAL_VEC gxxL = g11L;
+
+ CCTK_REAL_VEC gxyL = g12L;
- CCTK_REAL gxyL = g12L;
+ CCTK_REAL_VEC gxzL = g13L;
- CCTK_REAL gxzL = g13L;
+ CCTK_REAL_VEC gyyL = g22L;
- CCTK_REAL gyyL = g22L;
+ CCTK_REAL_VEC gyzL = g23L;
- CCTK_REAL gyzL = g23L;
+ CCTK_REAL_VEC gzzL = g33L;
- CCTK_REAL gzzL = g33L;
+ CCTK_REAL_VEC kxxL = K11L;
- CCTK_REAL kxxL = K11L;
+ CCTK_REAL_VEC kxyL = K12L;
- CCTK_REAL kxyL = K12L;
+ CCTK_REAL_VEC kxzL = K13L;
- CCTK_REAL kxzL = K13L;
+ CCTK_REAL_VEC kyyL = K22L;
- CCTK_REAL kyyL = K22L;
+ CCTK_REAL_VEC kyzL = K23L;
- CCTK_REAL kyzL = K23L;
+ CCTK_REAL_VEC kzzL = K33L;
- CCTK_REAL kzzL = K33L;
+ CCTK_REAL_VEC alpL = alphaL;
- CCTK_REAL alpL = alphaL;
+ CCTK_REAL_VEC dtalpL = ToReal(0);
- CCTK_REAL dtalpL = 0;
+ CCTK_REAL_VEC betaxL = beta1L;
- CCTK_REAL betaxL = beta1L;
+ CCTK_REAL_VEC betayL = beta2L;
- CCTK_REAL betayL = beta2L;
+ CCTK_REAL_VEC betazL = beta3L;
- CCTK_REAL betazL = beta3L;
+ CCTK_REAL_VEC dtbetaxL = ToReal(0);
- CCTK_REAL dtbetaxL = 0;
+ CCTK_REAL_VEC dtbetayL = ToReal(0);
- CCTK_REAL dtbetayL = 0;
+ CCTK_REAL_VEC dtbetazL = ToReal(0);
- CCTK_REAL dtbetazL = 0;
+ /* If necessary, store only partial vectors after the first iteration */
- /* Copy local copies back to grid functions */
- alp[index] = alpL;
- betax[index] = betaxL;
- betay[index] = betayL;
- betaz[index] = betazL;
- dtalp[index] = dtalpL;
- dtbetax[index] = dtbetaxL;
- dtbetay[index] = dtbetayL;
- dtbetaz[index] = dtbetazL;
- gxx[index] = gxxL;
- gxy[index] = gxyL;
- gxz[index] = gxzL;
- gyy[index] = gyyL;
- gyz[index] = gyzL;
- gzz[index] = gzzL;
- kxx[index] = kxxL;
- kxy[index] = kxyL;
- kxz[index] = kxzL;
- kyy[index] = kyyL;
- kyz[index] = kyzL;
- kzz[index] = kzzL;
+ 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);
}
- LC_ENDLOOP3 (ML_ADM_convertToADMBase);
+ LC_ENDLOOP3VEC (ML_ADM_convertToADMBase);
}
extern "C" void ML_ADM_convertToADMBase(CCTK_ARGUMENTS)
@@ -182,5 +350,39 @@ extern "C" void ML_ADM_convertToADMBase(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_ADM_convertToADMBase_Body");
+ }
+
+ if (cctk_iteration % ML_ADM_convertToADMBase_calc_every != ML_ADM_convertToADMBase_calc_offset)
+ {
+ 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"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_ADM_convertToADMBase", 10, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverEverything(cctkGH, &ML_ADM_convertToADMBase_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_ADM_convertToADMBase_Body");
+ }
}
diff --git a/ML_ADM/src/RegisterMoL.cc b/ML_ADM/src/RegisterMoL.cc
index 55605d7..10b8371 100644
--- a/ML_ADM/src/RegisterMoL.cc
+++ b/ML_ADM/src/RegisterMoL.cc
@@ -28,5 +28,7 @@ extern "C" void ML_ADM_RegisterVars(CCTK_ARGUMENTS)
ierr += MoLRegisterEvolved(CCTK_VarIndex("ML_ADM::beta1"), CCTK_VarIndex("ML_ADM::beta1rhs"));
ierr += MoLRegisterEvolved(CCTK_VarIndex("ML_ADM::beta2"), CCTK_VarIndex("ML_ADM::beta2rhs"));
ierr += MoLRegisterEvolved(CCTK_VarIndex("ML_ADM::beta3"), CCTK_VarIndex("ML_ADM::beta3rhs"));
+
+ /* Register all the evolved Array functions with MoL */
return;
}
diff --git a/ML_ADMConstraints/param.ccl b/ML_ADMConstraints/param.ccl
index 460ea74..edc0502 100644
--- a/ML_ADMConstraints/param.ccl
+++ b/ML_ADMConstraints/param.ccl
@@ -8,6 +8,7 @@ shares: GenericFD
shares: MethodOfLines
USES CCTK_INT MoL_Num_Evolved_Vars
+USES CCTK_INT MoL_Num_ArrayEvolved_Vars
restricted:
CCTK_INT verbose "verbose" STEERABLE=ALWAYS
@@ -22,6 +23,12 @@ CCTK_INT ML_ADMConstraints_MaxNumEvolvedVars "Number of evolved variables used b
} 0
restricted:
+CCTK_INT ML_ADMConstraints_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 :: ""
diff --git a/ML_ADMConstraints/schedule.ccl b/ML_ADMConstraints/schedule.ccl
index 74b3d66..9840015 100644
--- a/ML_ADMConstraints/schedule.ccl
+++ b/ML_ADMConstraints/schedule.ccl
@@ -23,7 +23,7 @@ schedule ML_ADMConstraints_RegisterSymmetries in SymmetryRegister
OPTIONS: meta
} "register symmetries"
-schedule group ML_ADMConstraints_group in MoL_PseudoEvolution
+schedule group ML_ADMConstraints_group in MoL_PseudoEvolution after MoL_PostStep
{
# no language specified
} "ML_ADMConstraints"
@@ -51,17 +51,12 @@ schedule group ML_ADMConstraints_bc_group in ML_ADMConstraints_group after ML_AD
# no language specified
} "ML_ADMConstraints"
-schedule group ML_ADMConstraints_bc_group at CCTK_POSTRESTRICT
+schedule group ML_ADMConstraints_bc_group in MoL_PseudoEvolutionBoundaries after MoL_PostStep
{
# no language specified
} "ML_ADMConstraints"
-schedule group ML_ADMConstraints_bc_group at CCTK_POSTRESTRICTINITIAL
-{
- # no language specified
-} "ML_ADMConstraints"
-
-schedule ML_ADMConstraints_SelectBoundConds in MoL_PseudoEvolution
+schedule ML_ADMConstraints_SelectBoundConds in MoL_PostStep
{
LANG: C
OPTIONS: level
@@ -73,7 +68,7 @@ schedule ML_ADMConstraints_CheckBoundaries at BASEGRID
OPTIONS: meta
} "check boundaries treatment"
-schedule group ApplyBCs as ML_ADMConstraints_ApplyBCs in MoL_PseudoEvolution after ML_ADMConstraints_SelectBoundConds
+schedule group ApplyBCs as ML_ADMConstraints_ApplyBCs in MoL_PostStep after ML_ADMConstraints_SelectBoundConds
{
# no language specified
} "Apply boundary conditions controlled by thorn Boundary"
diff --git a/ML_ADMConstraints/src/Differencing.h b/ML_ADMConstraints/src/Differencing.h
index cd495e5..b27ce50 100644
--- a/ML_ADMConstraints/src/Differencing.h
+++ b/ML_ADMConstraints/src/Differencing.h
@@ -1,144 +1,144 @@
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth1(u) ((-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]))*p1o12dx)
+# define PDstandardNth1(u) ((-8*KRANC_GFOFFSET3D(u,-1,0,0) + 8*KRANC_GFOFFSET3D(u,1,0,0) + KRANC_GFOFFSET3D(u,-2,0,0) - KRANC_GFOFFSET3D(u,2,0,0))*p1o12dx)
#else
# define PDstandardNth1(u) (PDstandardNth1_impl(u,p1o12dx,cdj,cdk))
static CCTK_REAL PDstandardNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]))*p1o12dx;
+ return (-8*KRANC_GFOFFSET3D(u,-1,0,0) + 8*KRANC_GFOFFSET3D(u,1,0,0) + KRANC_GFOFFSET3D(u,-2,0,0) - KRANC_GFOFFSET3D(u,2,0,0))*p1o12dx;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth2(u) ((-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]))*p1o12dy)
+# define PDstandardNth2(u) ((-8*KRANC_GFOFFSET3D(u,0,-1,0) + 8*KRANC_GFOFFSET3D(u,0,1,0) + KRANC_GFOFFSET3D(u,0,-2,0) - KRANC_GFOFFSET3D(u,0,2,0))*p1o12dy)
#else
# define PDstandardNth2(u) (PDstandardNth2_impl(u,p1o12dy,cdj,cdk))
static CCTK_REAL PDstandardNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]))*p1o12dy;
+ return (-8*KRANC_GFOFFSET3D(u,0,-1,0) + 8*KRANC_GFOFFSET3D(u,0,1,0) + KRANC_GFOFFSET3D(u,0,-2,0) - KRANC_GFOFFSET3D(u,0,2,0))*p1o12dy;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth3(u) ((-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]))*p1o12dz)
+# define PDstandardNth3(u) ((-8*KRANC_GFOFFSET3D(u,0,0,-1) + 8*KRANC_GFOFFSET3D(u,0,0,1) + KRANC_GFOFFSET3D(u,0,0,-2) - KRANC_GFOFFSET3D(u,0,0,2))*p1o12dz)
#else
# define PDstandardNth3(u) (PDstandardNth3_impl(u,p1o12dz,cdj,cdk))
static CCTK_REAL PDstandardNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]))*p1o12dz;
+ return (-8*KRANC_GFOFFSET3D(u,0,0,-1) + 8*KRANC_GFOFFSET3D(u,0,0,1) + KRANC_GFOFFSET3D(u,0,0,-2) - KRANC_GFOFFSET3D(u,0,0,2))*p1o12dz;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth11(u) ((30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]))*pm1o12dx2)
+# define PDstandardNth11(u) ((30*KRANC_GFOFFSET3D(u,0,0,0) - 16*(KRANC_GFOFFSET3D(u,-1,0,0) + KRANC_GFOFFSET3D(u,1,0,0)) + KRANC_GFOFFSET3D(u,-2,0,0) + KRANC_GFOFFSET3D(u,2,0,0))*pm1o12dx2)
#else
# define PDstandardNth11(u) (PDstandardNth11_impl(u,pm1o12dx2,cdj,cdk))
static CCTK_REAL PDstandardNth11_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dx2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth11_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dx2, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]))*pm1o12dx2;
+ return (30*KRANC_GFOFFSET3D(u,0,0,0) - 16*(KRANC_GFOFFSET3D(u,-1,0,0) + KRANC_GFOFFSET3D(u,1,0,0)) + KRANC_GFOFFSET3D(u,-2,0,0) + KRANC_GFOFFSET3D(u,2,0,0))*pm1o12dx2;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth22(u) ((30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]))*pm1o12dy2)
+# define PDstandardNth22(u) ((30*KRANC_GFOFFSET3D(u,0,0,0) - 16*(KRANC_GFOFFSET3D(u,0,-1,0) + KRANC_GFOFFSET3D(u,0,1,0)) + KRANC_GFOFFSET3D(u,0,-2,0) + KRANC_GFOFFSET3D(u,0,2,0))*pm1o12dy2)
#else
# define PDstandardNth22(u) (PDstandardNth22_impl(u,pm1o12dy2,cdj,cdk))
static CCTK_REAL PDstandardNth22_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dy2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth22_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dy2, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]))*pm1o12dy2;
+ return (30*KRANC_GFOFFSET3D(u,0,0,0) - 16*(KRANC_GFOFFSET3D(u,0,-1,0) + KRANC_GFOFFSET3D(u,0,1,0)) + KRANC_GFOFFSET3D(u,0,-2,0) + KRANC_GFOFFSET3D(u,0,2,0))*pm1o12dy2;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth33(u) ((30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]))*pm1o12dz2)
+# define PDstandardNth33(u) ((30*KRANC_GFOFFSET3D(u,0,0,0) - 16*(KRANC_GFOFFSET3D(u,0,0,-1) + KRANC_GFOFFSET3D(u,0,0,1)) + KRANC_GFOFFSET3D(u,0,0,-2) + KRANC_GFOFFSET3D(u,0,0,2))*pm1o12dz2)
#else
# define PDstandardNth33(u) (PDstandardNth33_impl(u,pm1o12dz2,cdj,cdk))
static CCTK_REAL PDstandardNth33_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dz2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth33_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dz2, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]))*pm1o12dz2;
+ return (30*KRANC_GFOFFSET3D(u,0,0,0) - 16*(KRANC_GFOFFSET3D(u,0,0,-1) + KRANC_GFOFFSET3D(u,0,0,1)) + KRANC_GFOFFSET3D(u,0,0,-2) + KRANC_GFOFFSET3D(u,0,0,2))*pm1o12dz2;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth12(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-1)+cdk*(0)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(2)+cdk*(0)]))*p1o144dxdy)
+# define PDstandardNth12(u) ((-64*(KRANC_GFOFFSET3D(u,-1,1,0) + KRANC_GFOFFSET3D(u,1,-1,0)) + 64*(KRANC_GFOFFSET3D(u,-1,-1,0) + KRANC_GFOFFSET3D(u,1,1,0)) + 8*(KRANC_GFOFFSET3D(u,-1,2,0) + KRANC_GFOFFSET3D(u,1,-2,0) + KRANC_GFOFFSET3D(u,-2,1,0) + KRANC_GFOFFSET3D(u,2,-1,0)) - 8*(KRANC_GFOFFSET3D(u,-1,-2,0) + KRANC_GFOFFSET3D(u,1,2,0) + KRANC_GFOFFSET3D(u,-2,-1,0) + KRANC_GFOFFSET3D(u,2,1,0)) + KRANC_GFOFFSET3D(u,-2,-2,0) - KRANC_GFOFFSET3D(u,-2,2,0) - KRANC_GFOFFSET3D(u,2,-2,0) + KRANC_GFOFFSET3D(u,2,2,0))*p1o144dxdy)
#else
# define PDstandardNth12(u) (PDstandardNth12_impl(u,p1o144dxdy,cdj,cdk))
static CCTK_REAL PDstandardNth12_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth12_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-1)+cdk*(0)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(2)+cdk*(0)]))*p1o144dxdy;
+ return (-64*(KRANC_GFOFFSET3D(u,-1,1,0) + KRANC_GFOFFSET3D(u,1,-1,0)) + 64*(KRANC_GFOFFSET3D(u,-1,-1,0) + KRANC_GFOFFSET3D(u,1,1,0)) + 8*(KRANC_GFOFFSET3D(u,-1,2,0) + KRANC_GFOFFSET3D(u,1,-2,0) + KRANC_GFOFFSET3D(u,-2,1,0) + KRANC_GFOFFSET3D(u,2,-1,0)) - 8*(KRANC_GFOFFSET3D(u,-1,-2,0) + KRANC_GFOFFSET3D(u,1,2,0) + KRANC_GFOFFSET3D(u,-2,-1,0) + KRANC_GFOFFSET3D(u,2,1,0)) + KRANC_GFOFFSET3D(u,-2,-2,0) - KRANC_GFOFFSET3D(u,-2,2,0) - KRANC_GFOFFSET3D(u,2,-2,0) + KRANC_GFOFFSET3D(u,2,2,0))*p1o144dxdy;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth13(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(2)]))*p1o144dxdz)
+# define PDstandardNth13(u) ((-64*(KRANC_GFOFFSET3D(u,-1,0,1) + KRANC_GFOFFSET3D(u,1,0,-1)) + 64*(KRANC_GFOFFSET3D(u,-1,0,-1) + KRANC_GFOFFSET3D(u,1,0,1)) + 8*(KRANC_GFOFFSET3D(u,-1,0,2) + KRANC_GFOFFSET3D(u,1,0,-2) + KRANC_GFOFFSET3D(u,-2,0,1) + KRANC_GFOFFSET3D(u,2,0,-1)) - 8*(KRANC_GFOFFSET3D(u,-1,0,-2) + KRANC_GFOFFSET3D(u,1,0,2) + KRANC_GFOFFSET3D(u,-2,0,-1) + KRANC_GFOFFSET3D(u,2,0,1)) + KRANC_GFOFFSET3D(u,-2,0,-2) - KRANC_GFOFFSET3D(u,-2,0,2) - KRANC_GFOFFSET3D(u,2,0,-2) + KRANC_GFOFFSET3D(u,2,0,2))*p1o144dxdz)
#else
# define PDstandardNth13(u) (PDstandardNth13_impl(u,p1o144dxdz,cdj,cdk))
static CCTK_REAL PDstandardNth13_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth13_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(2)]))*p1o144dxdz;
+ return (-64*(KRANC_GFOFFSET3D(u,-1,0,1) + KRANC_GFOFFSET3D(u,1,0,-1)) + 64*(KRANC_GFOFFSET3D(u,-1,0,-1) + KRANC_GFOFFSET3D(u,1,0,1)) + 8*(KRANC_GFOFFSET3D(u,-1,0,2) + KRANC_GFOFFSET3D(u,1,0,-2) + KRANC_GFOFFSET3D(u,-2,0,1) + KRANC_GFOFFSET3D(u,2,0,-1)) - 8*(KRANC_GFOFFSET3D(u,-1,0,-2) + KRANC_GFOFFSET3D(u,1,0,2) + KRANC_GFOFFSET3D(u,-2,0,-1) + KRANC_GFOFFSET3D(u,2,0,1)) + KRANC_GFOFFSET3D(u,-2,0,-2) - KRANC_GFOFFSET3D(u,-2,0,2) - KRANC_GFOFFSET3D(u,2,0,-2) + KRANC_GFOFFSET3D(u,2,0,2))*p1o144dxdz;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth21(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-1)+cdk*(0)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(2)+cdk*(0)]))*p1o144dxdy)
+# define PDstandardNth21(u) ((-64*(KRANC_GFOFFSET3D(u,-1,1,0) + KRANC_GFOFFSET3D(u,1,-1,0)) + 64*(KRANC_GFOFFSET3D(u,-1,-1,0) + KRANC_GFOFFSET3D(u,1,1,0)) + 8*(KRANC_GFOFFSET3D(u,-1,2,0) + KRANC_GFOFFSET3D(u,1,-2,0) + KRANC_GFOFFSET3D(u,-2,1,0) + KRANC_GFOFFSET3D(u,2,-1,0)) - 8*(KRANC_GFOFFSET3D(u,-1,-2,0) + KRANC_GFOFFSET3D(u,1,2,0) + KRANC_GFOFFSET3D(u,-2,-1,0) + KRANC_GFOFFSET3D(u,2,1,0)) + KRANC_GFOFFSET3D(u,-2,-2,0) - KRANC_GFOFFSET3D(u,-2,2,0) - KRANC_GFOFFSET3D(u,2,-2,0) + KRANC_GFOFFSET3D(u,2,2,0))*p1o144dxdy)
#else
# define PDstandardNth21(u) (PDstandardNth21_impl(u,p1o144dxdy,cdj,cdk))
static CCTK_REAL PDstandardNth21_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth21_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-1)+cdk*(0)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(2)+cdk*(0)]))*p1o144dxdy;
+ return (-64*(KRANC_GFOFFSET3D(u,-1,1,0) + KRANC_GFOFFSET3D(u,1,-1,0)) + 64*(KRANC_GFOFFSET3D(u,-1,-1,0) + KRANC_GFOFFSET3D(u,1,1,0)) + 8*(KRANC_GFOFFSET3D(u,-1,2,0) + KRANC_GFOFFSET3D(u,1,-2,0) + KRANC_GFOFFSET3D(u,-2,1,0) + KRANC_GFOFFSET3D(u,2,-1,0)) - 8*(KRANC_GFOFFSET3D(u,-1,-2,0) + KRANC_GFOFFSET3D(u,1,2,0) + KRANC_GFOFFSET3D(u,-2,-1,0) + KRANC_GFOFFSET3D(u,2,1,0)) + KRANC_GFOFFSET3D(u,-2,-2,0) - KRANC_GFOFFSET3D(u,-2,2,0) - KRANC_GFOFFSET3D(u,2,-2,0) + KRANC_GFOFFSET3D(u,2,2,0))*p1o144dxdy;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth23(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(2)]))*p1o144dydz)
+# define PDstandardNth23(u) ((-64*(KRANC_GFOFFSET3D(u,0,-1,1) + KRANC_GFOFFSET3D(u,0,1,-1)) + 64*(KRANC_GFOFFSET3D(u,0,-1,-1) + KRANC_GFOFFSET3D(u,0,1,1)) + 8*(KRANC_GFOFFSET3D(u,0,-1,2) + KRANC_GFOFFSET3D(u,0,1,-2) + KRANC_GFOFFSET3D(u,0,-2,1) + KRANC_GFOFFSET3D(u,0,2,-1)) - 8*(KRANC_GFOFFSET3D(u,0,-1,-2) + KRANC_GFOFFSET3D(u,0,1,2) + KRANC_GFOFFSET3D(u,0,-2,-1) + KRANC_GFOFFSET3D(u,0,2,1)) + KRANC_GFOFFSET3D(u,0,-2,-2) - KRANC_GFOFFSET3D(u,0,-2,2) - KRANC_GFOFFSET3D(u,0,2,-2) + KRANC_GFOFFSET3D(u,0,2,2))*p1o144dydz)
#else
# define PDstandardNth23(u) (PDstandardNth23_impl(u,p1o144dydz,cdj,cdk))
static CCTK_REAL PDstandardNth23_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dydz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth23_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dydz, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(2)]))*p1o144dydz;
+ return (-64*(KRANC_GFOFFSET3D(u,0,-1,1) + KRANC_GFOFFSET3D(u,0,1,-1)) + 64*(KRANC_GFOFFSET3D(u,0,-1,-1) + KRANC_GFOFFSET3D(u,0,1,1)) + 8*(KRANC_GFOFFSET3D(u,0,-1,2) + KRANC_GFOFFSET3D(u,0,1,-2) + KRANC_GFOFFSET3D(u,0,-2,1) + KRANC_GFOFFSET3D(u,0,2,-1)) - 8*(KRANC_GFOFFSET3D(u,0,-1,-2) + KRANC_GFOFFSET3D(u,0,1,2) + KRANC_GFOFFSET3D(u,0,-2,-1) + KRANC_GFOFFSET3D(u,0,2,1)) + KRANC_GFOFFSET3D(u,0,-2,-2) - KRANC_GFOFFSET3D(u,0,-2,2) - KRANC_GFOFFSET3D(u,0,2,-2) + KRANC_GFOFFSET3D(u,0,2,2))*p1o144dydz;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth31(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(2)]))*p1o144dxdz)
+# define PDstandardNth31(u) ((-64*(KRANC_GFOFFSET3D(u,-1,0,1) + KRANC_GFOFFSET3D(u,1,0,-1)) + 64*(KRANC_GFOFFSET3D(u,-1,0,-1) + KRANC_GFOFFSET3D(u,1,0,1)) + 8*(KRANC_GFOFFSET3D(u,-1,0,2) + KRANC_GFOFFSET3D(u,1,0,-2) + KRANC_GFOFFSET3D(u,-2,0,1) + KRANC_GFOFFSET3D(u,2,0,-1)) - 8*(KRANC_GFOFFSET3D(u,-1,0,-2) + KRANC_GFOFFSET3D(u,1,0,2) + KRANC_GFOFFSET3D(u,-2,0,-1) + KRANC_GFOFFSET3D(u,2,0,1)) + KRANC_GFOFFSET3D(u,-2,0,-2) - KRANC_GFOFFSET3D(u,-2,0,2) - KRANC_GFOFFSET3D(u,2,0,-2) + KRANC_GFOFFSET3D(u,2,0,2))*p1o144dxdz)
#else
# define PDstandardNth31(u) (PDstandardNth31_impl(u,p1o144dxdz,cdj,cdk))
static CCTK_REAL PDstandardNth31_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth31_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(2)]))*p1o144dxdz;
+ return (-64*(KRANC_GFOFFSET3D(u,-1,0,1) + KRANC_GFOFFSET3D(u,1,0,-1)) + 64*(KRANC_GFOFFSET3D(u,-1,0,-1) + KRANC_GFOFFSET3D(u,1,0,1)) + 8*(KRANC_GFOFFSET3D(u,-1,0,2) + KRANC_GFOFFSET3D(u,1,0,-2) + KRANC_GFOFFSET3D(u,-2,0,1) + KRANC_GFOFFSET3D(u,2,0,-1)) - 8*(KRANC_GFOFFSET3D(u,-1,0,-2) + KRANC_GFOFFSET3D(u,1,0,2) + KRANC_GFOFFSET3D(u,-2,0,-1) + KRANC_GFOFFSET3D(u,2,0,1)) + KRANC_GFOFFSET3D(u,-2,0,-2) - KRANC_GFOFFSET3D(u,-2,0,2) - KRANC_GFOFFSET3D(u,2,0,-2) + KRANC_GFOFFSET3D(u,2,0,2))*p1o144dxdz;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth32(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(2)]))*p1o144dydz)
+# define PDstandardNth32(u) ((-64*(KRANC_GFOFFSET3D(u,0,-1,1) + KRANC_GFOFFSET3D(u,0,1,-1)) + 64*(KRANC_GFOFFSET3D(u,0,-1,-1) + KRANC_GFOFFSET3D(u,0,1,1)) + 8*(KRANC_GFOFFSET3D(u,0,-1,2) + KRANC_GFOFFSET3D(u,0,1,-2) + KRANC_GFOFFSET3D(u,0,-2,1) + KRANC_GFOFFSET3D(u,0,2,-1)) - 8*(KRANC_GFOFFSET3D(u,0,-1,-2) + KRANC_GFOFFSET3D(u,0,1,2) + KRANC_GFOFFSET3D(u,0,-2,-1) + KRANC_GFOFFSET3D(u,0,2,1)) + KRANC_GFOFFSET3D(u,0,-2,-2) - KRANC_GFOFFSET3D(u,0,-2,2) - KRANC_GFOFFSET3D(u,0,2,-2) + KRANC_GFOFFSET3D(u,0,2,2))*p1o144dydz)
#else
# define PDstandardNth32(u) (PDstandardNth32_impl(u,p1o144dydz,cdj,cdk))
static CCTK_REAL PDstandardNth32_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dydz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth32_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dydz, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(2)]))*p1o144dydz;
+ return (-64*(KRANC_GFOFFSET3D(u,0,-1,1) + KRANC_GFOFFSET3D(u,0,1,-1)) + 64*(KRANC_GFOFFSET3D(u,0,-1,-1) + KRANC_GFOFFSET3D(u,0,1,1)) + 8*(KRANC_GFOFFSET3D(u,0,-1,2) + KRANC_GFOFFSET3D(u,0,1,-2) + KRANC_GFOFFSET3D(u,0,-2,1) + KRANC_GFOFFSET3D(u,0,2,-1)) - 8*(KRANC_GFOFFSET3D(u,0,-1,-2) + KRANC_GFOFFSET3D(u,0,1,2) + KRANC_GFOFFSET3D(u,0,-2,-1) + KRANC_GFOFFSET3D(u,0,2,1)) + KRANC_GFOFFSET3D(u,0,-2,-2) - KRANC_GFOFFSET3D(u,0,-2,2) - KRANC_GFOFFSET3D(u,0,2,-2) + KRANC_GFOFFSET3D(u,0,2,2))*p1o144dydz;
}
#endif
diff --git a/ML_ADMConstraints/src/ML_ADMConstraints.cc b/ML_ADMConstraints/src/ML_ADMConstraints.cc
index 0db2890..54f0864 100644
--- a/ML_ADMConstraints/src/ML_ADMConstraints.cc
+++ b/ML_ADMConstraints/src/ML_ADMConstraints.cc
@@ -36,7 +36,7 @@ extern "C" void ML_ADMConstraints_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_ADMConstraints_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_ADMConstraints_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;
@@ -44,21 +44,6 @@ static void ML_ADMConstraints_Body(cGH const * restrict const cctkGH, int const
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_ADMConstraints_Body");
- }
-
- if (cctk_iteration % ML_ADMConstraints_calc_every != ML_ADMConstraints_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ADMBase::curv","ADMBase::lapse","ADMBase::metric","ADMBase::shift","ML_ADMConstraints::ML_Ham","ML_ADMConstraints::ML_mom"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_ADMConstraints", 6, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "ML_ADMConstraints", 2, 2, 2);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -72,6 +57,7 @@ static void ML_ADMConstraints_Body(cGH const * restrict const cctkGH, int const
CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL const t = ToReal(cctk_time);
CCTK_REAL const dxi = INV(dx);
CCTK_REAL const dyi = INV(dy);
CCTK_REAL const dzi = INV(dz);
@@ -95,10 +81,18 @@ static void ML_ADMConstraints_Body(cGH const * restrict const cctkGH, int const
CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ /* 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_LOOP3 (ML_ADMConstraints,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
+ i,j,k, imin[0],imin[1],imin[2], imax[0],imax[1],imax[2],
cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
{
ptrdiff_t const index = di*i + dj*j + dk*k;
@@ -291,53 +285,128 @@ static void ML_ADMConstraints_Body(cGH const * restrict const cctkGH, int const
+ gu32*(-PDstandardNth2gzz + 2*PDstandardNth3gyz) +
gu33*PDstandardNth3gzz);
- CCTK_REAL R11 = 0.5*(-2*(G111*G122 + G111*G133 + G211*G222 + G211*G233
- + G311*G322 + G311*G333 + gu32*PDstandardNth11gyz) +
- 2*gu32*PDstandardNth12gxz + 2*gu32*PDstandardNth13gxy +
- gu22*(-PDstandardNth11gyy + 2*PDstandardNth12gxy - PDstandardNth22gxx)
- - 2*gu32*PDstandardNth23gxx + gu33*(-PDstandardNth11gzz +
- 2*PDstandardNth13gxz - PDstandardNth33gxx) + 2*SQR(G112) + 2*SQR(G113)
- + 2*SQR(G212) + 2*SQR(G213) + 2*SQR(G312) + 2*SQR(G313));
-
- CCTK_REAL R12 = 0.5*(2*(G113*G123 + G213*G223 + G313*G323) -
- 2*(G112*G133 + G212*G233 + G312*G333 + gu21*PDstandardNth12gxy) +
- gu31*(PDstandardNth11gyz - PDstandardNth12gxz - PDstandardNth13gxy) +
- gu21*(PDstandardNth11gyy + PDstandardNth22gxx) +
- gu32*PDstandardNth22gxz + gu31*PDstandardNth23gxx +
- gu32*(-PDstandardNth12gyz + PDstandardNth13gyy - PDstandardNth23gxy) +
- gu33*PDstandardNth23gxz + gu33*(-PDstandardNth12gzz +
- PDstandardNth13gyz - PDstandardNth33gxy));
-
- CCTK_REAL R13 = 0.5*(2*(G112*G123 + G212*G223 + G312*G323) -
- 2*(G113*G122 + G213*G222 + G313*G322 + gu31*PDstandardNth13gxz) +
- gu21*(PDstandardNth11gyz - PDstandardNth12gxz - PDstandardNth13gxy +
- PDstandardNth23gxx) + gu22*(PDstandardNth12gyz - PDstandardNth13gyy -
- PDstandardNth22gxz + PDstandardNth23gxy) + gu31*(PDstandardNth11gzz +
- PDstandardNth33gxx) + gu32*(PDstandardNth12gzz - PDstandardNth13gyz -
- PDstandardNth23gxz + PDstandardNth33gxy));
-
- CCTK_REAL R22 = 0.5*(-2*(G122*(G111 + G133) + G222*(G211 + G233) +
- G322*(G311 + G333) + gu31*PDstandardNth13gyy) +
- gu11*(-PDstandardNth11gyy + 2*PDstandardNth12gxy - PDstandardNth22gxx)
- + gu31*(-2*PDstandardNth22gxz + 2*(PDstandardNth12gyz +
- PDstandardNth23gxy)) + gu33*(-PDstandardNth22gzz + 2*PDstandardNth23gyz
- - PDstandardNth33gyy) + 2*(SQR(G112) + SQR(G123) + SQR(G212) +
- SQR(G223) + SQR(G312) + SQR(G323)));
-
- CCTK_REAL R23 = 0.5*(2*(G112*G113 + G212*G213 + G312*G313) +
- gu11*(-PDstandardNth11gyz + PDstandardNth12gxz + PDstandardNth13gxy -
- PDstandardNth23gxx) + gu21*(-PDstandardNth12gyz + PDstandardNth13gyy +
- PDstandardNth22gxz - PDstandardNth23gxy) - 2*(G111*G123 + G211*G223 +
- G311*G323 + gu32*PDstandardNth23gyz) + gu31*(PDstandardNth12gzz -
- PDstandardNth13gyz - PDstandardNth23gxz + PDstandardNth33gxy) +
- gu32*(PDstandardNth22gzz + PDstandardNth33gyy));
-
- CCTK_REAL R33 = 0.5*(gu11*(-PDstandardNth11gzz + 2*PDstandardNth13gxz
- - PDstandardNth33gxx) - 2*((G111 + G122)*G133 + (G211 + G222)*G233 +
- (G311 + G322)*G333 + gu21*(PDstandardNth12gzz + PDstandardNth33gxy)) +
- gu22*(-PDstandardNth22gzz + 2*PDstandardNth23gyz - PDstandardNth33gyy)
- + 2*(gu21*(PDstandardNth13gyz + PDstandardNth23gxz) + SQR(G113) +
- SQR(G123) + SQR(G213) + SQR(G223) + SQR(G313) + SQR(G323)));
+ CCTK_REAL R11 = 0.5*(gu32*(4*((-(G123*G211) + G113*G212)*gxyL +
+ (-(G123*G311) + G113*G312)*gxzL + G112*(G113*gxxL + G213*gxyL +
+ G313*gxzL) - G111*(G123*gxxL + G223*gxyL + G323*gxzL) + (G212*G213 -
+ G211*G223)*gyyL + G212*G313*gyzL + (-(G223*G311) + G213*G312 -
+ G211*G323)*gyzL + (G312*G313 - G311*G323)*gzzL) +
+ 2*(-PDstandardNth11gyz + PDstandardNth12gxz + PDstandardNth13gxy -
+ PDstandardNth23gxx)) + gu22*(-PDstandardNth11gyy + 2*PDstandardNth12gxy
+ - PDstandardNth22gxx + 2*(G122*(-(G211*gxyL) - G311*gxzL) +
+ 2*G112*(G212*gxyL + G312*gxzL) - G111*(G122*gxxL + G222*gxyL +
+ G322*gxzL) + (2*G212*G312 - G211*G322)*gyzL + G222*(-(G211*gyyL) -
+ G311*gyzL) + gxxL*SQR(G112) + gyyL*SQR(G212) + gzzL*(-(G311*G322) +
+ SQR(G312)))) + gu33*(-PDstandardNth11gzz + 2*PDstandardNth13gxz -
+ PDstandardNth33gxx + 2*(G133*(-(G211*gxyL) - G311*gxzL) +
+ 2*G113*(G213*gxyL + G313*gxzL) - G111*(G133*gxxL + G233*gxyL +
+ G333*gxzL) + (2*G213*G313 - G211*G333)*gyzL + G233*(-(G211*gyyL) -
+ G311*gyzL) + gxxL*SQR(G113) + gyyL*SQR(G213) + gzzL*(-(G311*G333) +
+ SQR(G313)))));
+
+ CCTK_REAL R12 = 0.5*(gu21*(PDstandardNth11gyy - 2*PDstandardNth12gxy +
+ PDstandardNth22gxx) + gu31*(PDstandardNth11gyz - PDstandardNth12gxz -
+ PDstandardNth13gxy + PDstandardNth23gxx) + gu32*(-PDstandardNth12gyz +
+ PDstandardNth13gyy + PDstandardNth22gxz - PDstandardNth23gxy) +
+ gu33*(-PDstandardNth12gzz + PDstandardNth13gyz + PDstandardNth23gxz -
+ PDstandardNth33gxy) + 2*(gu31*((G123*G211 - G113*G212)*gxyL +
+ (G123*G311 - G113*G312)*gxzL - G112*(G113*gxxL + G213*gxyL + G313*gxzL)
+ + G111*(G123*gxxL + G223*gxyL + G323*gxzL) + (-(G212*G213) +
+ G211*G223)*gyyL + (G223*G311 - G213*G312 - G212*G313)*gyzL +
+ G211*G323*gyzL + (-(G312*G313) + G311*G323)*gzzL) + gu32*((-(G123*G212)
+ + G122*G213)*gxyL + (-(G123*G312) + G122*G313)*gxzL + G113*(G122*gxxL +
+ G222*gxyL + G322*gxzL) - G112*(G123*gxxL + G223*gxyL + G323*gxzL) +
+ (G213*G222 - G212*G223)*gyyL + G213*G322*gyzL + (-(G223*G312) +
+ G222*G313 - G212*G323)*gyzL + (G313*G322 - G312*G323)*gzzL) +
+ gu33*((-(G133*G212) + G123*G213)*gxyL + (-(G133*G312) + G123*G313)*gxzL
+ + G113*(G123*gxxL + G223*gxyL + G323*gxzL) - G112*(G133*gxxL +
+ G233*gxyL + G333*gxzL) + (G213*G223 - G212*G233)*gyyL + G213*G323*gyzL
+ + (-(G233*G312) + G223*G313 - G212*G333)*gyzL + (G313*G323 -
+ G312*G333)*gzzL) + gu21*(G122*(G211*gxyL + G311*gxzL) + G111*(G122*gxxL
+ + G222*gxyL + G322*gxzL) + G222*(G211*gyyL + G311*gyzL) -
+ 2*(G112*(G212*gxyL + G312*gxzL) + G212*G312*gyzL) + G322*(G211*gyzL +
+ G311*gzzL) - gxxL*SQR(G112) - gyyL*SQR(G212) - gzzL*SQR(G312))));
+
+ CCTK_REAL R13 = 0.5*(gu21*(PDstandardNth11gyz - PDstandardNth12gxz -
+ PDstandardNth13gxy + PDstandardNth23gxx) + gu22*(PDstandardNth12gyz -
+ PDstandardNth13gyy - PDstandardNth22gxz + PDstandardNth23gxy) +
+ gu31*(PDstandardNth11gzz - 2*PDstandardNth13gxz + PDstandardNth33gxx) +
+ gu32*(PDstandardNth12gzz - PDstandardNth13gyz - PDstandardNth23gxz +
+ PDstandardNth33gxy) + 2*(gu21*((G123*G211 - G113*G212)*gxyL +
+ (G123*G311 - G113*G312)*gxzL - G112*(G113*gxxL + G213*gxyL + G313*gxzL)
+ + G111*(G123*gxxL + G223*gxyL + G323*gxzL) + (-(G212*G213) +
+ G211*G223)*gyyL + (G223*G311 - G213*G312 - G212*G313)*gyzL +
+ G211*G323*gyzL + (-(G312*G313) + G311*G323)*gzzL) + gu22*((G123*G212 -
+ G122*G213)*gxyL + (G123*G312 - G122*G313)*gxzL - G113*(G122*gxxL +
+ G222*gxyL + G322*gxzL) + G112*(G123*gxxL + G223*gxyL + G323*gxzL) +
+ (-(G213*G222) + G212*G223)*gyyL + (G223*G312 - G222*G313 -
+ G213*G322)*gyzL + G212*G323*gyzL + (-(G313*G322) + G312*G323)*gzzL) +
+ gu32*((G133*G212 - G123*G213)*gxyL + (G133*G312 - G123*G313)*gxzL -
+ G113*(G123*gxxL + G223*gxyL + G323*gxzL) + G112*(G133*gxxL + G233*gxyL
+ + G333*gxzL) + (-(G213*G223) + G212*G233)*gyyL + (G233*G312 - G223*G313
+ - G213*G323)*gyzL + G212*G333*gyzL + (-(G313*G323) + G312*G333)*gzzL) +
+ gu31*(G133*(G211*gxyL + G311*gxzL) + G111*(G133*gxxL + G233*gxyL +
+ G333*gxzL) + G233*(G211*gyyL + G311*gyzL) - 2*(G113*(G213*gxyL +
+ G313*gxzL) + G213*G313*gyzL) + G333*(G211*gyzL + G311*gzzL) -
+ gxxL*SQR(G113) - gyyL*SQR(G213) - gzzL*SQR(G313))));
+
+ CCTK_REAL R22 = 0.5*(gu31*(4*((G123*G212 - G122*G213)*gxyL +
+ (G123*G312 - G122*G313)*gxzL - G113*(G122*gxxL + G222*gxyL + G322*gxzL)
+ + G112*(G123*gxxL + G223*gxyL + G323*gxzL) + (-(G213*G222) +
+ G212*G223)*gyyL + (G223*G312 - G222*G313 - G213*G322)*gyzL +
+ G212*G323*gyzL + (-(G313*G322) + G312*G323)*gzzL) +
+ 2*(PDstandardNth12gyz - PDstandardNth13gyy - PDstandardNth22gxz +
+ PDstandardNth23gxy)) + gu11*(-PDstandardNth11gyy + 2*PDstandardNth12gxy
+ - PDstandardNth22gxx + 2*(G122*(-(G211*gxyL) - G311*gxzL) +
+ 2*G112*(G212*gxyL + G312*gxzL) - G111*(G122*gxxL + G222*gxyL +
+ G322*gxzL) + (2*G212*G312 - G211*G322)*gyzL + G222*(-(G211*gyyL) -
+ G311*gyzL) + gxxL*SQR(G112) + gyyL*SQR(G212) + gzzL*(-(G311*G322) +
+ SQR(G312)))) + gu33*(-PDstandardNth22gzz + 2*PDstandardNth23gyz -
+ PDstandardNth33gyy + 2*(G133*(-(G222*gxyL) - G322*gxzL) +
+ 2*G123*(G223*gxyL + G323*gxzL) - G122*(G133*gxxL + G233*gxyL +
+ G333*gxzL) + (2*G223*G323 - G222*G333)*gyzL + G233*(-(G222*gyyL) -
+ G322*gyzL) + gxxL*SQR(G123) + gyyL*SQR(G223) + gzzL*(-(G322*G333) +
+ SQR(G323)))));
+
+ CCTK_REAL R23 = 0.5*(gu11*(-PDstandardNth11gyz + PDstandardNth12gxz +
+ PDstandardNth13gxy - PDstandardNth23gxx) + gu21*(-PDstandardNth12gyz +
+ PDstandardNth13gyy + PDstandardNth22gxz - PDstandardNth23gxy) +
+ gu31*(PDstandardNth12gzz - PDstandardNth13gyz - PDstandardNth23gxz +
+ PDstandardNth33gxy) + gu32*(PDstandardNth22gzz - 2*PDstandardNth23gyz +
+ PDstandardNth33gyy) + 2*(gu11*((-(G123*G211) + G113*G212)*gxyL +
+ (-(G123*G311) + G113*G312)*gxzL + G112*(G113*gxxL + G213*gxyL +
+ G313*gxzL) - G111*(G123*gxxL + G223*gxyL + G323*gxzL) + (G212*G213 -
+ G211*G223)*gyyL + G212*G313*gyzL + (-(G223*G311) + G213*G312 -
+ G211*G323)*gyzL + (G312*G313 - G311*G323)*gzzL) + gu21*((-(G123*G212) +
+ G122*G213)*gxyL + (-(G123*G312) + G122*G313)*gxzL + G113*(G122*gxxL +
+ G222*gxyL + G322*gxzL) - G112*(G123*gxxL + G223*gxyL + G323*gxzL) +
+ (G213*G222 - G212*G223)*gyyL + G213*G322*gyzL + (-(G223*G312) +
+ G222*G313 - G212*G323)*gyzL + (G313*G322 - G312*G323)*gzzL) +
+ gu31*((G133*G212 - G123*G213)*gxyL + (G133*G312 - G123*G313)*gxzL -
+ G113*(G123*gxxL + G223*gxyL + G323*gxzL) + G112*(G133*gxxL + G233*gxyL
+ + G333*gxzL) + (-(G213*G223) + G212*G233)*gyyL + (G233*G312 - G223*G313
+ - G213*G323)*gyzL + G212*G333*gyzL + (-(G313*G323) + G312*G333)*gzzL) +
+ gu32*(G133*(G222*gxyL + G322*gxzL) + G122*(G133*gxxL + G233*gxyL +
+ G333*gxzL) + G233*(G222*gyyL + G322*gyzL) - 2*(G123*(G223*gxyL +
+ G323*gxzL) + G223*G323*gyzL) + G333*(G222*gyzL + G322*gzzL) -
+ gxxL*SQR(G123) - gyyL*SQR(G223) - gzzL*SQR(G323))));
+
+ CCTK_REAL R33 = 0.5*(gu21*(4*((-(G133*G212) + G123*G213)*gxyL +
+ (-(G133*G312) + G123*G313)*gxzL + G113*(G123*gxxL + G223*gxyL +
+ G323*gxzL) - G112*(G133*gxxL + G233*gxyL + G333*gxzL) + (G213*G223 -
+ G212*G233)*gyyL + G213*G323*gyzL + (-(G233*G312) + G223*G313 -
+ G212*G333)*gyzL + (G313*G323 - G312*G333)*gzzL) +
+ 2*(-PDstandardNth12gzz + PDstandardNth13gyz + PDstandardNth23gxz -
+ PDstandardNth33gxy)) + gu11*(-PDstandardNth11gzz + 2*PDstandardNth13gxz
+ - PDstandardNth33gxx + 2*(G133*(-(G211*gxyL) - G311*gxzL) +
+ 2*G113*(G213*gxyL + G313*gxzL) - G111*(G133*gxxL + G233*gxyL +
+ G333*gxzL) + (2*G213*G313 - G211*G333)*gyzL + G233*(-(G211*gyyL) -
+ G311*gyzL) + gxxL*SQR(G113) + gyyL*SQR(G213) + gzzL*(-(G311*G333) +
+ SQR(G313)))) + gu22*(-PDstandardNth22gzz + 2*PDstandardNth23gyz -
+ PDstandardNth33gyy + 2*(G133*(-(G222*gxyL) - G322*gxzL) +
+ 2*G123*(G223*gxyL + G323*gxzL) - G122*(G133*gxxL + G233*gxyL +
+ G333*gxzL) + (2*G223*G323 - G222*G333)*gyzL + G233*(-(G222*gyyL) -
+ G322*gyzL) + gxxL*SQR(G123) + gyyL*SQR(G223) + gzzL*(-(G322*G333) +
+ SQR(G323)))));
CCTK_REAL trR = gu11*R11 + gu22*R22 + 2*(gu21*R12 + gu31*R13 +
gu32*R23) + gu33*R33;
@@ -430,5 +499,26 @@ extern "C" void ML_ADMConstraints(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_ADMConstraints_Body");
+ }
+
+ if (cctk_iteration % ML_ADMConstraints_calc_every != ML_ADMConstraints_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ADMBase::curv","ADMBase::lapse","ADMBase::metric","ADMBase::shift","ML_ADMConstraints::ML_Ham","ML_ADMConstraints::ML_mom"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_ADMConstraints", 6, groups);
+
+ GenericFD_EnsureStencilFits(cctkGH, "ML_ADMConstraints", 2, 2, 2);
+
GenericFD_LoopOverInterior(cctkGH, &ML_ADMConstraints_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_ADMConstraints_Body");
+ }
}
diff --git a/ML_ADMConstraints/src/RegisterMoL.cc b/ML_ADMConstraints/src/RegisterMoL.cc
index a44af7e..b582abe 100644
--- a/ML_ADMConstraints/src/RegisterMoL.cc
+++ b/ML_ADMConstraints/src/RegisterMoL.cc
@@ -12,5 +12,7 @@ extern "C" void ML_ADMConstraints_RegisterVars(CCTK_ARGUMENTS)
CCTK_INT ierr = 0;
/* Register all the evolved grid functions with MoL */
+
+ /* Register all the evolved Array functions with MoL */
return;
}
diff --git a/ML_ADMConstraints_MP/param.ccl b/ML_ADMConstraints_MP/param.ccl
index aa9cbb7..4acc5aa 100644
--- a/ML_ADMConstraints_MP/param.ccl
+++ b/ML_ADMConstraints_MP/param.ccl
@@ -11,6 +11,7 @@ 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
@@ -25,6 +26,12 @@ CCTK_INT ML_ADMConstraints_MP_MaxNumEvolvedVars "Number of evolved variables use
} 0
restricted:
+CCTK_INT ML_ADMConstraints_MP_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 :: ""
diff --git a/ML_ADMConstraints_MP/schedule.ccl b/ML_ADMConstraints_MP/schedule.ccl
index 28964ab..08dbab9 100644
--- a/ML_ADMConstraints_MP/schedule.ccl
+++ b/ML_ADMConstraints_MP/schedule.ccl
@@ -23,7 +23,7 @@ schedule ML_ADMConstraints_MP_RegisterSymmetries in SymmetryRegister
OPTIONS: meta
} "register symmetries"
-schedule group ML_ADMConstraints_MP_group in MoL_PseudoEvolution
+schedule group ML_ADMConstraints_MP_group in MoL_PseudoEvolution after MoL_PostStep
{
# no language specified
} "ML_ADMConstraints_MP"
@@ -51,17 +51,12 @@ schedule group ML_ADMConstraints_MP_bc_group in ML_ADMConstraints_MP_group after
# no language specified
} "ML_ADMConstraints_MP"
-schedule group ML_ADMConstraints_MP_bc_group at CCTK_POSTRESTRICT
+schedule group ML_ADMConstraints_MP_bc_group in MoL_PseudoEvolutionBoundaries after MoL_PostStep
{
# no language specified
} "ML_ADMConstraints_MP"
-schedule group ML_ADMConstraints_MP_bc_group at CCTK_POSTRESTRICTINITIAL
-{
- # no language specified
-} "ML_ADMConstraints_MP"
-
-schedule ML_ADMConstraints_MP_SelectBoundConds in MoL_PseudoEvolution
+schedule ML_ADMConstraints_MP_SelectBoundConds in MoL_PostStep
{
LANG: C
OPTIONS: level
@@ -73,7 +68,7 @@ schedule ML_ADMConstraints_MP_CheckBoundaries at BASEGRID
OPTIONS: meta
} "check boundaries treatment"
-schedule group ApplyBCs as ML_ADMConstraints_MP_ApplyBCs in MoL_PseudoEvolution after ML_ADMConstraints_MP_SelectBoundConds
+schedule group ApplyBCs as ML_ADMConstraints_MP_ApplyBCs in MoL_PostStep after ML_ADMConstraints_MP_SelectBoundConds
{
# no language specified
} "Apply boundary conditions controlled by thorn Boundary"
diff --git a/ML_ADMConstraints_MP/src/Differencing.h b/ML_ADMConstraints_MP/src/Differencing.h
index cd495e5..b27ce50 100644
--- a/ML_ADMConstraints_MP/src/Differencing.h
+++ b/ML_ADMConstraints_MP/src/Differencing.h
@@ -1,144 +1,144 @@
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth1(u) ((-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]))*p1o12dx)
+# define PDstandardNth1(u) ((-8*KRANC_GFOFFSET3D(u,-1,0,0) + 8*KRANC_GFOFFSET3D(u,1,0,0) + KRANC_GFOFFSET3D(u,-2,0,0) - KRANC_GFOFFSET3D(u,2,0,0))*p1o12dx)
#else
# define PDstandardNth1(u) (PDstandardNth1_impl(u,p1o12dx,cdj,cdk))
static CCTK_REAL PDstandardNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]))*p1o12dx;
+ return (-8*KRANC_GFOFFSET3D(u,-1,0,0) + 8*KRANC_GFOFFSET3D(u,1,0,0) + KRANC_GFOFFSET3D(u,-2,0,0) - KRANC_GFOFFSET3D(u,2,0,0))*p1o12dx;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth2(u) ((-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]))*p1o12dy)
+# define PDstandardNth2(u) ((-8*KRANC_GFOFFSET3D(u,0,-1,0) + 8*KRANC_GFOFFSET3D(u,0,1,0) + KRANC_GFOFFSET3D(u,0,-2,0) - KRANC_GFOFFSET3D(u,0,2,0))*p1o12dy)
#else
# define PDstandardNth2(u) (PDstandardNth2_impl(u,p1o12dy,cdj,cdk))
static CCTK_REAL PDstandardNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]))*p1o12dy;
+ return (-8*KRANC_GFOFFSET3D(u,0,-1,0) + 8*KRANC_GFOFFSET3D(u,0,1,0) + KRANC_GFOFFSET3D(u,0,-2,0) - KRANC_GFOFFSET3D(u,0,2,0))*p1o12dy;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth3(u) ((-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]))*p1o12dz)
+# define PDstandardNth3(u) ((-8*KRANC_GFOFFSET3D(u,0,0,-1) + 8*KRANC_GFOFFSET3D(u,0,0,1) + KRANC_GFOFFSET3D(u,0,0,-2) - KRANC_GFOFFSET3D(u,0,0,2))*p1o12dz)
#else
# define PDstandardNth3(u) (PDstandardNth3_impl(u,p1o12dz,cdj,cdk))
static CCTK_REAL PDstandardNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]))*p1o12dz;
+ return (-8*KRANC_GFOFFSET3D(u,0,0,-1) + 8*KRANC_GFOFFSET3D(u,0,0,1) + KRANC_GFOFFSET3D(u,0,0,-2) - KRANC_GFOFFSET3D(u,0,0,2))*p1o12dz;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth11(u) ((30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]))*pm1o12dx2)
+# define PDstandardNth11(u) ((30*KRANC_GFOFFSET3D(u,0,0,0) - 16*(KRANC_GFOFFSET3D(u,-1,0,0) + KRANC_GFOFFSET3D(u,1,0,0)) + KRANC_GFOFFSET3D(u,-2,0,0) + KRANC_GFOFFSET3D(u,2,0,0))*pm1o12dx2)
#else
# define PDstandardNth11(u) (PDstandardNth11_impl(u,pm1o12dx2,cdj,cdk))
static CCTK_REAL PDstandardNth11_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dx2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth11_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dx2, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]))*pm1o12dx2;
+ return (30*KRANC_GFOFFSET3D(u,0,0,0) - 16*(KRANC_GFOFFSET3D(u,-1,0,0) + KRANC_GFOFFSET3D(u,1,0,0)) + KRANC_GFOFFSET3D(u,-2,0,0) + KRANC_GFOFFSET3D(u,2,0,0))*pm1o12dx2;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth22(u) ((30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]))*pm1o12dy2)
+# define PDstandardNth22(u) ((30*KRANC_GFOFFSET3D(u,0,0,0) - 16*(KRANC_GFOFFSET3D(u,0,-1,0) + KRANC_GFOFFSET3D(u,0,1,0)) + KRANC_GFOFFSET3D(u,0,-2,0) + KRANC_GFOFFSET3D(u,0,2,0))*pm1o12dy2)
#else
# define PDstandardNth22(u) (PDstandardNth22_impl(u,pm1o12dy2,cdj,cdk))
static CCTK_REAL PDstandardNth22_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dy2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth22_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dy2, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]))*pm1o12dy2;
+ return (30*KRANC_GFOFFSET3D(u,0,0,0) - 16*(KRANC_GFOFFSET3D(u,0,-1,0) + KRANC_GFOFFSET3D(u,0,1,0)) + KRANC_GFOFFSET3D(u,0,-2,0) + KRANC_GFOFFSET3D(u,0,2,0))*pm1o12dy2;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth33(u) ((30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]))*pm1o12dz2)
+# define PDstandardNth33(u) ((30*KRANC_GFOFFSET3D(u,0,0,0) - 16*(KRANC_GFOFFSET3D(u,0,0,-1) + KRANC_GFOFFSET3D(u,0,0,1)) + KRANC_GFOFFSET3D(u,0,0,-2) + KRANC_GFOFFSET3D(u,0,0,2))*pm1o12dz2)
#else
# define PDstandardNth33(u) (PDstandardNth33_impl(u,pm1o12dz2,cdj,cdk))
static CCTK_REAL PDstandardNth33_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dz2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth33_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dz2, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]))*pm1o12dz2;
+ return (30*KRANC_GFOFFSET3D(u,0,0,0) - 16*(KRANC_GFOFFSET3D(u,0,0,-1) + KRANC_GFOFFSET3D(u,0,0,1)) + KRANC_GFOFFSET3D(u,0,0,-2) + KRANC_GFOFFSET3D(u,0,0,2))*pm1o12dz2;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth12(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-1)+cdk*(0)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(2)+cdk*(0)]))*p1o144dxdy)
+# define PDstandardNth12(u) ((-64*(KRANC_GFOFFSET3D(u,-1,1,0) + KRANC_GFOFFSET3D(u,1,-1,0)) + 64*(KRANC_GFOFFSET3D(u,-1,-1,0) + KRANC_GFOFFSET3D(u,1,1,0)) + 8*(KRANC_GFOFFSET3D(u,-1,2,0) + KRANC_GFOFFSET3D(u,1,-2,0) + KRANC_GFOFFSET3D(u,-2,1,0) + KRANC_GFOFFSET3D(u,2,-1,0)) - 8*(KRANC_GFOFFSET3D(u,-1,-2,0) + KRANC_GFOFFSET3D(u,1,2,0) + KRANC_GFOFFSET3D(u,-2,-1,0) + KRANC_GFOFFSET3D(u,2,1,0)) + KRANC_GFOFFSET3D(u,-2,-2,0) - KRANC_GFOFFSET3D(u,-2,2,0) - KRANC_GFOFFSET3D(u,2,-2,0) + KRANC_GFOFFSET3D(u,2,2,0))*p1o144dxdy)
#else
# define PDstandardNth12(u) (PDstandardNth12_impl(u,p1o144dxdy,cdj,cdk))
static CCTK_REAL PDstandardNth12_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth12_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-1)+cdk*(0)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(2)+cdk*(0)]))*p1o144dxdy;
+ return (-64*(KRANC_GFOFFSET3D(u,-1,1,0) + KRANC_GFOFFSET3D(u,1,-1,0)) + 64*(KRANC_GFOFFSET3D(u,-1,-1,0) + KRANC_GFOFFSET3D(u,1,1,0)) + 8*(KRANC_GFOFFSET3D(u,-1,2,0) + KRANC_GFOFFSET3D(u,1,-2,0) + KRANC_GFOFFSET3D(u,-2,1,0) + KRANC_GFOFFSET3D(u,2,-1,0)) - 8*(KRANC_GFOFFSET3D(u,-1,-2,0) + KRANC_GFOFFSET3D(u,1,2,0) + KRANC_GFOFFSET3D(u,-2,-1,0) + KRANC_GFOFFSET3D(u,2,1,0)) + KRANC_GFOFFSET3D(u,-2,-2,0) - KRANC_GFOFFSET3D(u,-2,2,0) - KRANC_GFOFFSET3D(u,2,-2,0) + KRANC_GFOFFSET3D(u,2,2,0))*p1o144dxdy;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth13(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(2)]))*p1o144dxdz)
+# define PDstandardNth13(u) ((-64*(KRANC_GFOFFSET3D(u,-1,0,1) + KRANC_GFOFFSET3D(u,1,0,-1)) + 64*(KRANC_GFOFFSET3D(u,-1,0,-1) + KRANC_GFOFFSET3D(u,1,0,1)) + 8*(KRANC_GFOFFSET3D(u,-1,0,2) + KRANC_GFOFFSET3D(u,1,0,-2) + KRANC_GFOFFSET3D(u,-2,0,1) + KRANC_GFOFFSET3D(u,2,0,-1)) - 8*(KRANC_GFOFFSET3D(u,-1,0,-2) + KRANC_GFOFFSET3D(u,1,0,2) + KRANC_GFOFFSET3D(u,-2,0,-1) + KRANC_GFOFFSET3D(u,2,0,1)) + KRANC_GFOFFSET3D(u,-2,0,-2) - KRANC_GFOFFSET3D(u,-2,0,2) - KRANC_GFOFFSET3D(u,2,0,-2) + KRANC_GFOFFSET3D(u,2,0,2))*p1o144dxdz)
#else
# define PDstandardNth13(u) (PDstandardNth13_impl(u,p1o144dxdz,cdj,cdk))
static CCTK_REAL PDstandardNth13_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth13_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(2)]))*p1o144dxdz;
+ return (-64*(KRANC_GFOFFSET3D(u,-1,0,1) + KRANC_GFOFFSET3D(u,1,0,-1)) + 64*(KRANC_GFOFFSET3D(u,-1,0,-1) + KRANC_GFOFFSET3D(u,1,0,1)) + 8*(KRANC_GFOFFSET3D(u,-1,0,2) + KRANC_GFOFFSET3D(u,1,0,-2) + KRANC_GFOFFSET3D(u,-2,0,1) + KRANC_GFOFFSET3D(u,2,0,-1)) - 8*(KRANC_GFOFFSET3D(u,-1,0,-2) + KRANC_GFOFFSET3D(u,1,0,2) + KRANC_GFOFFSET3D(u,-2,0,-1) + KRANC_GFOFFSET3D(u,2,0,1)) + KRANC_GFOFFSET3D(u,-2,0,-2) - KRANC_GFOFFSET3D(u,-2,0,2) - KRANC_GFOFFSET3D(u,2,0,-2) + KRANC_GFOFFSET3D(u,2,0,2))*p1o144dxdz;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth21(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-1)+cdk*(0)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(2)+cdk*(0)]))*p1o144dxdy)
+# define PDstandardNth21(u) ((-64*(KRANC_GFOFFSET3D(u,-1,1,0) + KRANC_GFOFFSET3D(u,1,-1,0)) + 64*(KRANC_GFOFFSET3D(u,-1,-1,0) + KRANC_GFOFFSET3D(u,1,1,0)) + 8*(KRANC_GFOFFSET3D(u,-1,2,0) + KRANC_GFOFFSET3D(u,1,-2,0) + KRANC_GFOFFSET3D(u,-2,1,0) + KRANC_GFOFFSET3D(u,2,-1,0)) - 8*(KRANC_GFOFFSET3D(u,-1,-2,0) + KRANC_GFOFFSET3D(u,1,2,0) + KRANC_GFOFFSET3D(u,-2,-1,0) + KRANC_GFOFFSET3D(u,2,1,0)) + KRANC_GFOFFSET3D(u,-2,-2,0) - KRANC_GFOFFSET3D(u,-2,2,0) - KRANC_GFOFFSET3D(u,2,-2,0) + KRANC_GFOFFSET3D(u,2,2,0))*p1o144dxdy)
#else
# define PDstandardNth21(u) (PDstandardNth21_impl(u,p1o144dxdy,cdj,cdk))
static CCTK_REAL PDstandardNth21_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth21_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-1)+cdk*(0)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(2)+cdk*(0)]))*p1o144dxdy;
+ return (-64*(KRANC_GFOFFSET3D(u,-1,1,0) + KRANC_GFOFFSET3D(u,1,-1,0)) + 64*(KRANC_GFOFFSET3D(u,-1,-1,0) + KRANC_GFOFFSET3D(u,1,1,0)) + 8*(KRANC_GFOFFSET3D(u,-1,2,0) + KRANC_GFOFFSET3D(u,1,-2,0) + KRANC_GFOFFSET3D(u,-2,1,0) + KRANC_GFOFFSET3D(u,2,-1,0)) - 8*(KRANC_GFOFFSET3D(u,-1,-2,0) + KRANC_GFOFFSET3D(u,1,2,0) + KRANC_GFOFFSET3D(u,-2,-1,0) + KRANC_GFOFFSET3D(u,2,1,0)) + KRANC_GFOFFSET3D(u,-2,-2,0) - KRANC_GFOFFSET3D(u,-2,2,0) - KRANC_GFOFFSET3D(u,2,-2,0) + KRANC_GFOFFSET3D(u,2,2,0))*p1o144dxdy;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth23(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(2)]))*p1o144dydz)
+# define PDstandardNth23(u) ((-64*(KRANC_GFOFFSET3D(u,0,-1,1) + KRANC_GFOFFSET3D(u,0,1,-1)) + 64*(KRANC_GFOFFSET3D(u,0,-1,-1) + KRANC_GFOFFSET3D(u,0,1,1)) + 8*(KRANC_GFOFFSET3D(u,0,-1,2) + KRANC_GFOFFSET3D(u,0,1,-2) + KRANC_GFOFFSET3D(u,0,-2,1) + KRANC_GFOFFSET3D(u,0,2,-1)) - 8*(KRANC_GFOFFSET3D(u,0,-1,-2) + KRANC_GFOFFSET3D(u,0,1,2) + KRANC_GFOFFSET3D(u,0,-2,-1) + KRANC_GFOFFSET3D(u,0,2,1)) + KRANC_GFOFFSET3D(u,0,-2,-2) - KRANC_GFOFFSET3D(u,0,-2,2) - KRANC_GFOFFSET3D(u,0,2,-2) + KRANC_GFOFFSET3D(u,0,2,2))*p1o144dydz)
#else
# define PDstandardNth23(u) (PDstandardNth23_impl(u,p1o144dydz,cdj,cdk))
static CCTK_REAL PDstandardNth23_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dydz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth23_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dydz, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(2)]))*p1o144dydz;
+ return (-64*(KRANC_GFOFFSET3D(u,0,-1,1) + KRANC_GFOFFSET3D(u,0,1,-1)) + 64*(KRANC_GFOFFSET3D(u,0,-1,-1) + KRANC_GFOFFSET3D(u,0,1,1)) + 8*(KRANC_GFOFFSET3D(u,0,-1,2) + KRANC_GFOFFSET3D(u,0,1,-2) + KRANC_GFOFFSET3D(u,0,-2,1) + KRANC_GFOFFSET3D(u,0,2,-1)) - 8*(KRANC_GFOFFSET3D(u,0,-1,-2) + KRANC_GFOFFSET3D(u,0,1,2) + KRANC_GFOFFSET3D(u,0,-2,-1) + KRANC_GFOFFSET3D(u,0,2,1)) + KRANC_GFOFFSET3D(u,0,-2,-2) - KRANC_GFOFFSET3D(u,0,-2,2) - KRANC_GFOFFSET3D(u,0,2,-2) + KRANC_GFOFFSET3D(u,0,2,2))*p1o144dydz;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth31(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(2)]))*p1o144dxdz)
+# define PDstandardNth31(u) ((-64*(KRANC_GFOFFSET3D(u,-1,0,1) + KRANC_GFOFFSET3D(u,1,0,-1)) + 64*(KRANC_GFOFFSET3D(u,-1,0,-1) + KRANC_GFOFFSET3D(u,1,0,1)) + 8*(KRANC_GFOFFSET3D(u,-1,0,2) + KRANC_GFOFFSET3D(u,1,0,-2) + KRANC_GFOFFSET3D(u,-2,0,1) + KRANC_GFOFFSET3D(u,2,0,-1)) - 8*(KRANC_GFOFFSET3D(u,-1,0,-2) + KRANC_GFOFFSET3D(u,1,0,2) + KRANC_GFOFFSET3D(u,-2,0,-1) + KRANC_GFOFFSET3D(u,2,0,1)) + KRANC_GFOFFSET3D(u,-2,0,-2) - KRANC_GFOFFSET3D(u,-2,0,2) - KRANC_GFOFFSET3D(u,2,0,-2) + KRANC_GFOFFSET3D(u,2,0,2))*p1o144dxdz)
#else
# define PDstandardNth31(u) (PDstandardNth31_impl(u,p1o144dxdz,cdj,cdk))
static CCTK_REAL PDstandardNth31_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth31_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(2)]))*p1o144dxdz;
+ return (-64*(KRANC_GFOFFSET3D(u,-1,0,1) + KRANC_GFOFFSET3D(u,1,0,-1)) + 64*(KRANC_GFOFFSET3D(u,-1,0,-1) + KRANC_GFOFFSET3D(u,1,0,1)) + 8*(KRANC_GFOFFSET3D(u,-1,0,2) + KRANC_GFOFFSET3D(u,1,0,-2) + KRANC_GFOFFSET3D(u,-2,0,1) + KRANC_GFOFFSET3D(u,2,0,-1)) - 8*(KRANC_GFOFFSET3D(u,-1,0,-2) + KRANC_GFOFFSET3D(u,1,0,2) + KRANC_GFOFFSET3D(u,-2,0,-1) + KRANC_GFOFFSET3D(u,2,0,1)) + KRANC_GFOFFSET3D(u,-2,0,-2) - KRANC_GFOFFSET3D(u,-2,0,2) - KRANC_GFOFFSET3D(u,2,0,-2) + KRANC_GFOFFSET3D(u,2,0,2))*p1o144dxdz;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth32(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(2)]))*p1o144dydz)
+# define PDstandardNth32(u) ((-64*(KRANC_GFOFFSET3D(u,0,-1,1) + KRANC_GFOFFSET3D(u,0,1,-1)) + 64*(KRANC_GFOFFSET3D(u,0,-1,-1) + KRANC_GFOFFSET3D(u,0,1,1)) + 8*(KRANC_GFOFFSET3D(u,0,-1,2) + KRANC_GFOFFSET3D(u,0,1,-2) + KRANC_GFOFFSET3D(u,0,-2,1) + KRANC_GFOFFSET3D(u,0,2,-1)) - 8*(KRANC_GFOFFSET3D(u,0,-1,-2) + KRANC_GFOFFSET3D(u,0,1,2) + KRANC_GFOFFSET3D(u,0,-2,-1) + KRANC_GFOFFSET3D(u,0,2,1)) + KRANC_GFOFFSET3D(u,0,-2,-2) - KRANC_GFOFFSET3D(u,0,-2,2) - KRANC_GFOFFSET3D(u,0,2,-2) + KRANC_GFOFFSET3D(u,0,2,2))*p1o144dydz)
#else
# define PDstandardNth32(u) (PDstandardNth32_impl(u,p1o144dydz,cdj,cdk))
static CCTK_REAL PDstandardNth32_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dydz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth32_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dydz, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(2)]))*p1o144dydz;
+ return (-64*(KRANC_GFOFFSET3D(u,0,-1,1) + KRANC_GFOFFSET3D(u,0,1,-1)) + 64*(KRANC_GFOFFSET3D(u,0,-1,-1) + KRANC_GFOFFSET3D(u,0,1,1)) + 8*(KRANC_GFOFFSET3D(u,0,-1,2) + KRANC_GFOFFSET3D(u,0,1,-2) + KRANC_GFOFFSET3D(u,0,-2,1) + KRANC_GFOFFSET3D(u,0,2,-1)) - 8*(KRANC_GFOFFSET3D(u,0,-1,-2) + KRANC_GFOFFSET3D(u,0,1,2) + KRANC_GFOFFSET3D(u,0,-2,-1) + KRANC_GFOFFSET3D(u,0,2,1)) + KRANC_GFOFFSET3D(u,0,-2,-2) - KRANC_GFOFFSET3D(u,0,-2,2) - KRANC_GFOFFSET3D(u,0,2,-2) + KRANC_GFOFFSET3D(u,0,2,2))*p1o144dydz;
}
#endif
diff --git a/ML_ADMConstraints_MP/src/ML_ADMConstraints_MP.cc b/ML_ADMConstraints_MP/src/ML_ADMConstraints_MP.cc
index 7abd09c..572a0d2 100644
--- a/ML_ADMConstraints_MP/src/ML_ADMConstraints_MP.cc
+++ b/ML_ADMConstraints_MP/src/ML_ADMConstraints_MP.cc
@@ -36,7 +36,7 @@ extern "C" void ML_ADMConstraints_MP_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_ADMConstraints_MP_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_ADMConstraints_MP_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;
@@ -44,21 +44,6 @@ static void ML_ADMConstraints_MP_Body(cGH const * restrict const cctkGH, int con
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_ADMConstraints_MP_Body");
- }
-
- if (cctk_iteration % ML_ADMConstraints_MP_calc_every != ML_ADMConstraints_MP_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ADMBase::curv","ADMBase::lapse","ADMBase::metric","ADMBase::shift","ML_ADMConstraints_MP::ML_Ham","ML_ADMConstraints_MP::ML_mom"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_ADMConstraints_MP", 6, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "ML_ADMConstraints_MP", 2, 2, 2);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -72,6 +57,7 @@ static void ML_ADMConstraints_MP_Body(cGH const * restrict const cctkGH, int con
CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL const t = ToReal(cctk_time);
CCTK_REAL const dxi = INV(dx);
CCTK_REAL const dyi = INV(dy);
CCTK_REAL const dzi = INV(dz);
@@ -140,10 +126,18 @@ static void ML_ADMConstraints_MP_Body(cGH const * restrict const cctkGH, int con
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_LOOP3 (ML_ADMConstraints_MP,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
+ i,j,k, imin[0],imin[1],imin[2], imax[0],imax[1],imax[2],
cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
{
ptrdiff_t const index = di*i + dj*j + dk*k;
@@ -1074,74 +1068,150 @@ static void ML_ADMConstraints_MP_Body(cGH const * restrict const cctkGH, int con
2*JacPDstandardNth3gxz) + gu32*(-JacPDstandardNth2gzz +
2*JacPDstandardNth3gyz) + gu33*JacPDstandardNth3gzz);
- CCTK_REAL R11 = 0.5*(-2*(G111*G122 + G111*G133 + G211*G222 + G211*G233
- + G311*G322 + G311*G333 + gu32*JacPDstandardNth11gyz) +
- gu21*(-JacPDstandardNth12gxx + JacPDstandardNth21gxx) +
- gu22*(-JacPDstandardNth11gyy + 2*JacPDstandardNth21gxy -
- JacPDstandardNth22gxx) + gu31*(-JacPDstandardNth13gxx +
- JacPDstandardNth31gxx) + 2*gu32*JacPDstandardNth31gxy +
- gu32*(2*JacPDstandardNth21gxz - JacPDstandardNth23gxx -
- JacPDstandardNth32gxx) + gu33*(-JacPDstandardNth11gzz +
- 2*JacPDstandardNth31gxz - JacPDstandardNth33gxx) + 2*SQR(G112) +
- 2*SQR(G113) + 2*SQR(G212) + 2*SQR(G213) + 2*SQR(G312) + 2*SQR(G313));
+ CCTK_REAL R11 = 0.5*(gu21*(-JacPDstandardNth12gxx +
+ JacPDstandardNth21gxx) + gu31*(-JacPDstandardNth13gxx +
+ JacPDstandardNth31gxx) + gu32*(4*((-(G123*G211) + G113*G212)*gxyL +
+ (-(G123*G311) + G113*G312)*gxzL + G112*(G113*gxxL + G213*gxyL +
+ G313*gxzL) - G111*(G123*gxxL + G223*gxyL + G323*gxzL) + (G212*G213 -
+ G211*G223)*gyyL + G212*G313*gyzL + (-(G223*G311) + G213*G312 -
+ G211*G323)*gyzL + (G312*G313 - G311*G323)*gzzL) - JacPDstandardNth11gyz
+ + JacPDstandardNth21gxz - JacPDstandardNth23gxx +
+ JacPDstandardNth31gxy) + gu32*(-JacPDstandardNth11gyz +
+ JacPDstandardNth21gxz + JacPDstandardNth31gxy - JacPDstandardNth32gxx)
+ + gu22*(-JacPDstandardNth11gyy + 2*JacPDstandardNth21gxy -
+ JacPDstandardNth22gxx + 2*(G122*(-(G211*gxyL) - G311*gxzL) +
+ 2*G112*(G212*gxyL + G312*gxzL) - G111*(G122*gxxL + G222*gxyL +
+ G322*gxzL) + (2*G212*G312 - G211*G322)*gyzL + G222*(-(G211*gyyL) -
+ G311*gyzL) + gxxL*SQR(G112) + gyyL*SQR(G212) + gzzL*(-(G311*G322) +
+ SQR(G312)))) + gu33*(-JacPDstandardNth11gzz + 2*JacPDstandardNth31gxz -
+ JacPDstandardNth33gxx + 2*(G133*(-(G211*gxyL) - G311*gxzL) +
+ 2*G113*(G213*gxyL + G313*gxzL) - G111*(G133*gxxL + G233*gxyL +
+ G333*gxzL) + (2*G213*G313 - G211*G333)*gyzL + G233*(-(G211*gyyL) -
+ G311*gyzL) + gxxL*SQR(G113) + gyyL*SQR(G213) + gzzL*(-(G311*G333) +
+ SQR(G313)))));
- CCTK_REAL R12 = 0.5*(2*(G113*G123 + G213*G223 + G313*G323) -
- 2*(G112*G133 + G212*G233 + G312*G333 + gu21*JacPDstandardNth12gxy +
- gu32*JacPDstandardNth12gyz) + gu31*(JacPDstandardNth11gyz -
- JacPDstandardNth12gxz - JacPDstandardNth13gxy) +
- gu22*(-JacPDstandardNth12gyy + JacPDstandardNth21gyy) +
- gu21*(JacPDstandardNth11gyy + JacPDstandardNth22gxx) +
- gu32*JacPDstandardNth22gxz + gu32*(JacPDstandardNth21gyz -
- JacPDstandardNth23gxy) + gu32*JacPDstandardNth31gyy +
- gu31*JacPDstandardNth32gxx + gu33*JacPDstandardNth32gxz +
- gu33*(-JacPDstandardNth12gzz + JacPDstandardNth31gyz -
- JacPDstandardNth33gxy));
+ CCTK_REAL R12 = 0.5*(gu22*(-JacPDstandardNth12gyy +
+ JacPDstandardNth21gyy) + gu21*(JacPDstandardNth11gyy -
+ 2*JacPDstandardNth12gxy + JacPDstandardNth22gxx) +
+ gu32*(-2*JacPDstandardNth12gyz + JacPDstandardNth21gyz +
+ JacPDstandardNth22gxz - JacPDstandardNth23gxy + JacPDstandardNth31gyy)
+ + gu31*(JacPDstandardNth11gyz - JacPDstandardNth12gxz -
+ JacPDstandardNth13gxy + JacPDstandardNth32gxx) +
+ gu33*(-JacPDstandardNth12gzz + JacPDstandardNth31gyz +
+ JacPDstandardNth32gxz - JacPDstandardNth33gxy) + 2*(gu31*((G123*G211 -
+ G113*G212)*gxyL + (G123*G311 - G113*G312)*gxzL - G112*(G113*gxxL +
+ G213*gxyL + G313*gxzL) + G111*(G123*gxxL + G223*gxyL + G323*gxzL) +
+ (-(G212*G213) + G211*G223)*gyyL + (G223*G311 - G213*G312 -
+ G212*G313)*gyzL + G211*G323*gyzL + (-(G312*G313) + G311*G323)*gzzL) +
+ gu32*((-(G123*G212) + G122*G213)*gxyL + (-(G123*G312) + G122*G313)*gxzL
+ + G113*(G122*gxxL + G222*gxyL + G322*gxzL) - G112*(G123*gxxL +
+ G223*gxyL + G323*gxzL) + (G213*G222 - G212*G223)*gyyL + G213*G322*gyzL
+ + (-(G223*G312) + G222*G313 - G212*G323)*gyzL + (G313*G322 -
+ G312*G323)*gzzL) + gu33*((-(G133*G212) + G123*G213)*gxyL +
+ (-(G133*G312) + G123*G313)*gxzL + G113*(G123*gxxL + G223*gxyL +
+ G323*gxzL) - G112*(G133*gxxL + G233*gxyL + G333*gxzL) + (G213*G223 -
+ G212*G233)*gyyL + G213*G323*gyzL + (-(G233*G312) + G223*G313 -
+ G212*G333)*gyzL + (G313*G323 - G312*G333)*gzzL) + gu21*(G122*(G211*gxyL
+ + G311*gxzL) + G111*(G122*gxxL + G222*gxyL + G322*gxzL) +
+ G222*(G211*gyyL + G311*gyzL) - 2*(G112*(G212*gxyL + G312*gxzL) +
+ G212*G312*gyzL) + G322*(G211*gyzL + G311*gzzL) - gxxL*SQR(G112) -
+ gyyL*SQR(G212) - gzzL*SQR(G312))));
- CCTK_REAL R13 = 0.5*(2*(G112*G123 + G212*G223 + G312*G323) -
- 2*(G113*G122 + G213*G222 + G313*G322 + gu31*JacPDstandardNth13gxz +
- gu32*JacPDstandardNth13gyz) + gu22*(-JacPDstandardNth13gyy +
- JacPDstandardNth21gyz - JacPDstandardNth22gxz) +
- gu21*(JacPDstandardNth11gyz - JacPDstandardNth12gxz -
- JacPDstandardNth13gxy + JacPDstandardNth23gxx) +
- gu22*JacPDstandardNth23gxy + gu32*JacPDstandardNth31gyz +
+ CCTK_REAL R13 = 0.5*(gu21*(JacPDstandardNth11gyz -
+ JacPDstandardNth12gxz - JacPDstandardNth13gxy + JacPDstandardNth23gxx)
+ + gu22*(-JacPDstandardNth13gyy + JacPDstandardNth21gyz -
+ JacPDstandardNth22gxz + JacPDstandardNth23gxy) +
gu33*(-JacPDstandardNth13gzz + JacPDstandardNth31gzz) +
- gu32*(JacPDstandardNth21gzz - JacPDstandardNth32gxz) +
- gu31*(JacPDstandardNth11gzz + JacPDstandardNth33gxx) +
- gu32*JacPDstandardNth33gxy);
+ gu31*(JacPDstandardNth11gzz - 2*JacPDstandardNth13gxz +
+ JacPDstandardNth33gxx) + gu32*(-2*JacPDstandardNth13gyz +
+ JacPDstandardNth21gzz + JacPDstandardNth31gyz - JacPDstandardNth32gxz +
+ JacPDstandardNth33gxy) + 2*(gu21*((G123*G211 - G113*G212)*gxyL +
+ (G123*G311 - G113*G312)*gxzL - G112*(G113*gxxL + G213*gxyL + G313*gxzL)
+ + G111*(G123*gxxL + G223*gxyL + G323*gxzL) + (-(G212*G213) +
+ G211*G223)*gyyL + (G223*G311 - G213*G312 - G212*G313)*gyzL +
+ G211*G323*gyzL + (-(G312*G313) + G311*G323)*gzzL) + gu22*((G123*G212 -
+ G122*G213)*gxyL + (G123*G312 - G122*G313)*gxzL - G113*(G122*gxxL +
+ G222*gxyL + G322*gxzL) + G112*(G123*gxxL + G223*gxyL + G323*gxzL) +
+ (-(G213*G222) + G212*G223)*gyyL + (G223*G312 - G222*G313 -
+ G213*G322)*gyzL + G212*G323*gyzL + (-(G313*G322) + G312*G323)*gzzL) +
+ gu32*((G133*G212 - G123*G213)*gxyL + (G133*G312 - G123*G313)*gxzL -
+ G113*(G123*gxxL + G223*gxyL + G323*gxzL) + G112*(G133*gxxL + G233*gxyL
+ + G333*gxzL) + (-(G213*G223) + G212*G233)*gyyL + (G233*G312 - G223*G313
+ - G213*G323)*gyzL + G212*G333*gyzL + (-(G313*G323) + G312*G333)*gzzL) +
+ gu31*(G133*(G211*gxyL + G311*gxzL) + G111*(G133*gxxL + G233*gxyL +
+ G333*gxzL) + G233*(G211*gyyL + G311*gyzL) - 2*(G113*(G213*gxyL +
+ G313*gxzL) + G213*G313*gyzL) + G333*(G211*gyzL + G311*gzzL) -
+ gxxL*SQR(G113) - gyyL*SQR(G213) - gzzL*SQR(G313))));
CCTK_REAL R22 = 0.5*(gu21*(JacPDstandardNth12gyy -
- JacPDstandardNth21gyy) + gu11*(-JacPDstandardNth11gyy +
- 2*JacPDstandardNth12gxy - JacPDstandardNth22gxx) - 2*(G111*G122 +
- G122*G133 + G211*G222 + G222*G233 + G311*G322 + G322*G333 +
- gu31*JacPDstandardNth22gxz) + gu31*(2*JacPDstandardNth12gyz -
- JacPDstandardNth13gyy - JacPDstandardNth31gyy) +
- 2*gu31*JacPDstandardNth32gxy + gu32*(-JacPDstandardNth23gyy +
- JacPDstandardNth32gyy) + gu33*(-JacPDstandardNth22gzz +
- 2*JacPDstandardNth32gyz - JacPDstandardNth33gyy) + 2*SQR(G112) +
- 2*SQR(G123) + 2*SQR(G212) + 2*SQR(G223) + 2*SQR(G312) + 2*SQR(G323));
+ JacPDstandardNth21gyy) + gu31*(4*((G123*G212 - G122*G213)*gxyL +
+ (G123*G312 - G122*G313)*gxzL - G113*(G122*gxxL + G222*gxyL + G322*gxzL)
+ + G112*(G123*gxxL + G223*gxyL + G323*gxzL) + (-(G213*G222) +
+ G212*G223)*gyyL + (G223*G312 - G222*G313 - G213*G322)*gyzL +
+ G212*G323*gyzL + (-(G313*G322) + G312*G323)*gzzL) +
+ JacPDstandardNth12gyz - JacPDstandardNth13gyy - JacPDstandardNth22gxz +
+ JacPDstandardNth32gxy) + gu31*(JacPDstandardNth12gyz -
+ JacPDstandardNth22gxz - JacPDstandardNth31gyy + JacPDstandardNth32gxy)
+ + gu32*(-JacPDstandardNth23gyy + JacPDstandardNth32gyy) +
+ gu11*(-JacPDstandardNth11gyy + 2*JacPDstandardNth12gxy -
+ JacPDstandardNth22gxx + 2*(G122*(-(G211*gxyL) - G311*gxzL) +
+ 2*G112*(G212*gxyL + G312*gxzL) - G111*(G122*gxxL + G222*gxyL +
+ G322*gxzL) + (2*G212*G312 - G211*G322)*gyzL + G222*(-(G211*gyyL) -
+ G311*gyzL) + gxxL*SQR(G112) + gyyL*SQR(G212) + gzzL*(-(G311*G322) +
+ SQR(G312)))) + gu33*(-JacPDstandardNth22gzz + 2*JacPDstandardNth32gyz -
+ JacPDstandardNth33gyy + 2*(G133*(-(G222*gxyL) - G322*gxzL) +
+ 2*G123*(G223*gxyL + G323*gxzL) - G122*(G133*gxxL + G233*gxyL +
+ G333*gxzL) + (2*G223*G323 - G222*G333)*gyzL + G233*(-(G222*gyyL) -
+ G322*gyzL) + gxxL*SQR(G123) + gyyL*SQR(G223) + gzzL*(-(G322*G333) +
+ SQR(G323)))));
- CCTK_REAL R23 = 0.5*(2*(G112*G113 + G212*G213 + G312*G313) +
- gu11*(-JacPDstandardNth11gyz + JacPDstandardNth12gxz +
- JacPDstandardNth13gxy - JacPDstandardNth23gxx) +
- gu21*(JacPDstandardNth13gyy - JacPDstandardNth21gyz +
- JacPDstandardNth22gxz - JacPDstandardNth23gxy) - 2*(G111*G123 +
- G211*G223 + G311*G323 + gu31*JacPDstandardNth23gxz) +
+ CCTK_REAL R23 = 0.5*(gu11*(-JacPDstandardNth11gyz +
+ JacPDstandardNth12gxz + JacPDstandardNth13gxy - JacPDstandardNth23gxx)
+ + gu21*(JacPDstandardNth13gyy - JacPDstandardNth21gyz +
+ JacPDstandardNth22gxz - JacPDstandardNth23gxy) +
gu33*(-JacPDstandardNth23gzz + JacPDstandardNth32gzz) +
- gu31*(JacPDstandardNth12gzz - JacPDstandardNth31gyz +
- JacPDstandardNth32gxz + JacPDstandardNth33gxy) +
- gu32*(JacPDstandardNth22gzz - 2*JacPDstandardNth23gyz +
- JacPDstandardNth33gyy));
+ gu31*(JacPDstandardNth12gzz - 2*JacPDstandardNth23gxz -
+ JacPDstandardNth31gyz + JacPDstandardNth32gxz + JacPDstandardNth33gxy)
+ + gu32*(JacPDstandardNth22gzz - 2*JacPDstandardNth23gyz +
+ JacPDstandardNth33gyy) + 2*(gu11*((-(G123*G211) + G113*G212)*gxyL +
+ (-(G123*G311) + G113*G312)*gxzL + G112*(G113*gxxL + G213*gxyL +
+ G313*gxzL) - G111*(G123*gxxL + G223*gxyL + G323*gxzL) + (G212*G213 -
+ G211*G223)*gyyL + G212*G313*gyzL + (-(G223*G311) + G213*G312 -
+ G211*G323)*gyzL + (G312*G313 - G311*G323)*gzzL) + gu21*((-(G123*G212) +
+ G122*G213)*gxyL + (-(G123*G312) + G122*G313)*gxzL + G113*(G122*gxxL +
+ G222*gxyL + G322*gxzL) - G112*(G123*gxxL + G223*gxyL + G323*gxzL) +
+ (G213*G222 - G212*G223)*gyyL + G213*G322*gyzL + (-(G223*G312) +
+ G222*G313 - G212*G323)*gyzL + (G313*G322 - G312*G323)*gzzL) +
+ gu31*((G133*G212 - G123*G213)*gxyL + (G133*G312 - G123*G313)*gxzL -
+ G113*(G123*gxxL + G223*gxyL + G323*gxzL) + G112*(G133*gxxL + G233*gxyL
+ + G333*gxzL) + (-(G213*G223) + G212*G233)*gyyL + (G233*G312 - G223*G313
+ - G213*G323)*gyzL + G212*G333*gyzL + (-(G313*G323) + G312*G333)*gzzL) +
+ gu32*(G133*(G222*gxyL + G322*gxzL) + G122*(G133*gxxL + G233*gxyL +
+ G333*gxzL) + G233*(G222*gyyL + G322*gyzL) - 2*(G123*(G223*gxyL +
+ G323*gxzL) + G223*G323*gyzL) + G333*(G222*gyzL + G322*gzzL) -
+ gxxL*SQR(G123) - gyyL*SQR(G223) - gzzL*SQR(G323))));
- CCTK_REAL R33 = 0.5*(gu21*(-JacPDstandardNth12gzz +
- 2*JacPDstandardNth13gyz - JacPDstandardNth21gzz) +
- 2*gu21*JacPDstandardNth23gxz + gu31*(JacPDstandardNth13gzz -
+ CCTK_REAL R33 = 0.5*(gu31*(JacPDstandardNth13gzz -
JacPDstandardNth31gzz) + gu32*(JacPDstandardNth23gzz -
- JacPDstandardNth32gzz) + gu11*(-JacPDstandardNth11gzz +
- 2*JacPDstandardNth13gxz - JacPDstandardNth33gxx) - 2*(G111*G133 +
- G122*G133 + G211*G233 + G222*G233 + G311*G333 + G322*G333 +
- gu21*JacPDstandardNth33gxy) + gu22*(-JacPDstandardNth22gzz +
- 2*JacPDstandardNth23gyz - JacPDstandardNth33gyy) + 2*SQR(G113) +
- 2*SQR(G123) + 2*SQR(G213) + 2*SQR(G223) + 2*SQR(G313) + 2*SQR(G323));
+ JacPDstandardNth32gzz) + gu21*(4*((-(G133*G212) + G123*G213)*gxyL +
+ (-(G133*G312) + G123*G313)*gxzL + G113*(G123*gxxL + G223*gxyL +
+ G323*gxzL) - G112*(G133*gxxL + G233*gxyL + G333*gxzL) + (G213*G223 -
+ G212*G233)*gyyL + G213*G323*gyzL + (-(G233*G312) + G223*G313 -
+ G212*G333)*gyzL + (G313*G323 - G312*G333)*gzzL) - JacPDstandardNth12gzz
+ + JacPDstandardNth13gyz + JacPDstandardNth23gxz -
+ JacPDstandardNth33gxy) + gu21*(JacPDstandardNth13gyz -
+ JacPDstandardNth21gzz + JacPDstandardNth23gxz - JacPDstandardNth33gxy)
+ + gu11*(-JacPDstandardNth11gzz + 2*JacPDstandardNth13gxz -
+ JacPDstandardNth33gxx + 2*(G133*(-(G211*gxyL) - G311*gxzL) +
+ 2*G113*(G213*gxyL + G313*gxzL) - G111*(G133*gxxL + G233*gxyL +
+ G333*gxzL) + (2*G213*G313 - G211*G333)*gyzL + G233*(-(G211*gyyL) -
+ G311*gyzL) + gxxL*SQR(G113) + gyyL*SQR(G213) + gzzL*(-(G311*G333) +
+ SQR(G313)))) + gu22*(-JacPDstandardNth22gzz + 2*JacPDstandardNth23gyz -
+ JacPDstandardNth33gyy + 2*(G133*(-(G222*gxyL) - G322*gxzL) +
+ 2*G123*(G223*gxyL + G323*gxzL) - G122*(G133*gxxL + G233*gxyL +
+ G333*gxzL) + (2*G223*G323 - G222*G333)*gyzL + G233*(-(G222*gyyL) -
+ G322*gyzL) + gxxL*SQR(G123) + gyyL*SQR(G223) + gzzL*(-(G322*G333) +
+ SQR(G323)))));
CCTK_REAL trR = gu11*R11 + gu22*R22 + 2*(gu21*R12 + gu31*R13 +
gu32*R23) + gu33*R33;
@@ -1238,5 +1308,26 @@ extern "C" void ML_ADMConstraints_MP(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_ADMConstraints_MP_Body");
+ }
+
+ if (cctk_iteration % ML_ADMConstraints_MP_calc_every != ML_ADMConstraints_MP_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ADMBase::curv","ADMBase::lapse","ADMBase::metric","ADMBase::shift","ML_ADMConstraints_MP::ML_Ham","ML_ADMConstraints_MP::ML_mom"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_ADMConstraints_MP", 6, groups);
+
+ GenericFD_EnsureStencilFits(cctkGH, "ML_ADMConstraints_MP", 2, 2, 2);
+
GenericFD_LoopOverInterior(cctkGH, &ML_ADMConstraints_MP_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_ADMConstraints_MP_Body");
+ }
}
diff --git a/ML_ADMConstraints_MP/src/RegisterMoL.cc b/ML_ADMConstraints_MP/src/RegisterMoL.cc
index 9d0e767..383b3db 100644
--- a/ML_ADMConstraints_MP/src/RegisterMoL.cc
+++ b/ML_ADMConstraints_MP/src/RegisterMoL.cc
@@ -12,5 +12,7 @@ extern "C" void ML_ADMConstraints_MP_RegisterVars(CCTK_ARGUMENTS)
CCTK_INT ierr = 0;
/* Register all the evolved grid functions with MoL */
+
+ /* Register all the evolved Array functions with MoL */
return;
}
diff --git a/ML_ADMConstraints_O2/param.ccl b/ML_ADMConstraints_O2/param.ccl
index 1215702..79cb59b 100644
--- a/ML_ADMConstraints_O2/param.ccl
+++ b/ML_ADMConstraints_O2/param.ccl
@@ -8,6 +8,7 @@ shares: GenericFD
shares: MethodOfLines
USES CCTK_INT MoL_Num_Evolved_Vars
+USES CCTK_INT MoL_Num_ArrayEvolved_Vars
restricted:
CCTK_INT verbose "verbose" STEERABLE=ALWAYS
@@ -22,6 +23,12 @@ CCTK_INT ML_ADMConstraints_O2_MaxNumEvolvedVars "Number of evolved variables use
} 0
restricted:
+CCTK_INT ML_ADMConstraints_O2_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 :: ""
diff --git a/ML_ADMConstraints_O2/schedule.ccl b/ML_ADMConstraints_O2/schedule.ccl
index f89b3cd..f7f2fd9 100644
--- a/ML_ADMConstraints_O2/schedule.ccl
+++ b/ML_ADMConstraints_O2/schedule.ccl
@@ -23,7 +23,7 @@ schedule ML_ADMConstraints_O2_RegisterSymmetries in SymmetryRegister
OPTIONS: meta
} "register symmetries"
-schedule group ML_ADMConstraints_O2_group in MoL_PseudoEvolution
+schedule group ML_ADMConstraints_O2_group in MoL_PseudoEvolution after MoL_PostStep
{
# no language specified
} "ML_ADMConstraints_O2"
@@ -51,17 +51,12 @@ schedule group ML_ADMConstraints_O2_bc_group in ML_ADMConstraints_O2_group after
# no language specified
} "ML_ADMConstraints_O2"
-schedule group ML_ADMConstraints_O2_bc_group at CCTK_POSTRESTRICT
+schedule group ML_ADMConstraints_O2_bc_group in MoL_PseudoEvolutionBoundaries after MoL_PostStep
{
# no language specified
} "ML_ADMConstraints_O2"
-schedule group ML_ADMConstraints_O2_bc_group at CCTK_POSTRESTRICTINITIAL
-{
- # no language specified
-} "ML_ADMConstraints_O2"
-
-schedule ML_ADMConstraints_O2_SelectBoundConds in MoL_PseudoEvolution
+schedule ML_ADMConstraints_O2_SelectBoundConds in MoL_PostStep
{
LANG: C
OPTIONS: level
@@ -73,7 +68,7 @@ schedule ML_ADMConstraints_O2_CheckBoundaries at BASEGRID
OPTIONS: meta
} "check boundaries treatment"
-schedule group ApplyBCs as ML_ADMConstraints_O2_ApplyBCs in MoL_PseudoEvolution after ML_ADMConstraints_O2_SelectBoundConds
+schedule group ApplyBCs as ML_ADMConstraints_O2_ApplyBCs in MoL_PostStep after ML_ADMConstraints_O2_SelectBoundConds
{
# no language specified
} "Apply boundary conditions controlled by thorn Boundary"
diff --git a/ML_ADMConstraints_O2/src/Differencing.h b/ML_ADMConstraints_O2/src/Differencing.h
index 63cadac..6e7b849 100644
--- a/ML_ADMConstraints_O2/src/Differencing.h
+++ b/ML_ADMConstraints_O2/src/Differencing.h
@@ -1,144 +1,144 @@
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth1(u) ((-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)]))*p1o2dx)
+# define PDstandardNth1(u) ((-KRANC_GFOFFSET3D(u,-1,0,0) + KRANC_GFOFFSET3D(u,1,0,0))*p1o2dx)
#else
# define PDstandardNth1(u) (PDstandardNth1_impl(u,p1o2dx,cdj,cdk))
static CCTK_REAL PDstandardNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o2dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o2dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)]))*p1o2dx;
+ return (-KRANC_GFOFFSET3D(u,-1,0,0) + KRANC_GFOFFSET3D(u,1,0,0))*p1o2dx;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth2(u) ((-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)]))*p1o2dy)
+# define PDstandardNth2(u) ((-KRANC_GFOFFSET3D(u,0,-1,0) + KRANC_GFOFFSET3D(u,0,1,0))*p1o2dy)
#else
# define PDstandardNth2(u) (PDstandardNth2_impl(u,p1o2dy,cdj,cdk))
static CCTK_REAL PDstandardNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o2dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o2dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)]))*p1o2dy;
+ return (-KRANC_GFOFFSET3D(u,0,-1,0) + KRANC_GFOFFSET3D(u,0,1,0))*p1o2dy;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth3(u) ((-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)]))*p1o2dz)
+# define PDstandardNth3(u) ((-KRANC_GFOFFSET3D(u,0,0,-1) + KRANC_GFOFFSET3D(u,0,0,1))*p1o2dz)
#else
# define PDstandardNth3(u) (PDstandardNth3_impl(u,p1o2dz,cdj,cdk))
static CCTK_REAL PDstandardNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o2dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o2dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)]))*p1o2dz;
+ return (-KRANC_GFOFFSET3D(u,0,0,-1) + KRANC_GFOFFSET3D(u,0,0,1))*p1o2dz;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth11(u) ((-2*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)]))*p1odx2)
+# define PDstandardNth11(u) ((-2*KRANC_GFOFFSET3D(u,0,0,0) + KRANC_GFOFFSET3D(u,-1,0,0) + KRANC_GFOFFSET3D(u,1,0,0))*p1odx2)
#else
# define PDstandardNth11(u) (PDstandardNth11_impl(u,p1odx2,cdj,cdk))
static CCTK_REAL PDstandardNth11_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1odx2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth11_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1odx2, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-2*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)]))*p1odx2;
+ return (-2*KRANC_GFOFFSET3D(u,0,0,0) + KRANC_GFOFFSET3D(u,-1,0,0) + KRANC_GFOFFSET3D(u,1,0,0))*p1odx2;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth22(u) ((-2*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)]))*p1ody2)
+# define PDstandardNth22(u) ((-2*KRANC_GFOFFSET3D(u,0,0,0) + KRANC_GFOFFSET3D(u,0,-1,0) + KRANC_GFOFFSET3D(u,0,1,0))*p1ody2)
#else
# define PDstandardNth22(u) (PDstandardNth22_impl(u,p1ody2,cdj,cdk))
static CCTK_REAL PDstandardNth22_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1ody2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth22_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1ody2, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-2*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)]))*p1ody2;
+ return (-2*KRANC_GFOFFSET3D(u,0,0,0) + KRANC_GFOFFSET3D(u,0,-1,0) + KRANC_GFOFFSET3D(u,0,1,0))*p1ody2;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth33(u) ((-2*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)]))*p1odz2)
+# define PDstandardNth33(u) ((-2*KRANC_GFOFFSET3D(u,0,0,0) + KRANC_GFOFFSET3D(u,0,0,-1) + KRANC_GFOFFSET3D(u,0,0,1))*p1odz2)
#else
# define PDstandardNth33(u) (PDstandardNth33_impl(u,p1odz2,cdj,cdk))
static CCTK_REAL PDstandardNth33_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1odz2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth33_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1odz2, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-2*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)]))*p1odz2;
+ return (-2*KRANC_GFOFFSET3D(u,0,0,0) + KRANC_GFOFFSET3D(u,0,0,-1) + KRANC_GFOFFSET3D(u,0,0,1))*p1odz2;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth12(u) (((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)]))*p1o4dxdy)
+# define PDstandardNth12(u) ((KRANC_GFOFFSET3D(u,-1,-1,0) - KRANC_GFOFFSET3D(u,-1,1,0) - KRANC_GFOFFSET3D(u,1,-1,0) + KRANC_GFOFFSET3D(u,1,1,0))*p1o4dxdy)
#else
# define PDstandardNth12(u) (PDstandardNth12_impl(u,p1o4dxdy,cdj,cdk))
static CCTK_REAL PDstandardNth12_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o4dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth12_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o4dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return ((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)]))*p1o4dxdy;
+ return (KRANC_GFOFFSET3D(u,-1,-1,0) - KRANC_GFOFFSET3D(u,-1,1,0) - KRANC_GFOFFSET3D(u,1,-1,0) + KRANC_GFOFFSET3D(u,1,1,0))*p1o4dxdy;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth13(u) (((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)]))*p1o4dxdz)
+# define PDstandardNth13(u) ((KRANC_GFOFFSET3D(u,-1,0,-1) - KRANC_GFOFFSET3D(u,-1,0,1) - KRANC_GFOFFSET3D(u,1,0,-1) + KRANC_GFOFFSET3D(u,1,0,1))*p1o4dxdz)
#else
# define PDstandardNth13(u) (PDstandardNth13_impl(u,p1o4dxdz,cdj,cdk))
static CCTK_REAL PDstandardNth13_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o4dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth13_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o4dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return ((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)]))*p1o4dxdz;
+ return (KRANC_GFOFFSET3D(u,-1,0,-1) - KRANC_GFOFFSET3D(u,-1,0,1) - KRANC_GFOFFSET3D(u,1,0,-1) + KRANC_GFOFFSET3D(u,1,0,1))*p1o4dxdz;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth21(u) (((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)]))*p1o4dxdy)
+# define PDstandardNth21(u) ((KRANC_GFOFFSET3D(u,-1,-1,0) - KRANC_GFOFFSET3D(u,-1,1,0) - KRANC_GFOFFSET3D(u,1,-1,0) + KRANC_GFOFFSET3D(u,1,1,0))*p1o4dxdy)
#else
# define PDstandardNth21(u) (PDstandardNth21_impl(u,p1o4dxdy,cdj,cdk))
static CCTK_REAL PDstandardNth21_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o4dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth21_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o4dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return ((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)]))*p1o4dxdy;
+ return (KRANC_GFOFFSET3D(u,-1,-1,0) - KRANC_GFOFFSET3D(u,-1,1,0) - KRANC_GFOFFSET3D(u,1,-1,0) + KRANC_GFOFFSET3D(u,1,1,0))*p1o4dxdy;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth23(u) (((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)]))*p1o4dydz)
+# define PDstandardNth23(u) ((KRANC_GFOFFSET3D(u,0,-1,-1) - KRANC_GFOFFSET3D(u,0,-1,1) - KRANC_GFOFFSET3D(u,0,1,-1) + KRANC_GFOFFSET3D(u,0,1,1))*p1o4dydz)
#else
# define PDstandardNth23(u) (PDstandardNth23_impl(u,p1o4dydz,cdj,cdk))
static CCTK_REAL PDstandardNth23_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o4dydz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth23_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o4dydz, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return ((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)]))*p1o4dydz;
+ return (KRANC_GFOFFSET3D(u,0,-1,-1) - KRANC_GFOFFSET3D(u,0,-1,1) - KRANC_GFOFFSET3D(u,0,1,-1) + KRANC_GFOFFSET3D(u,0,1,1))*p1o4dydz;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth31(u) (((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)]))*p1o4dxdz)
+# define PDstandardNth31(u) ((KRANC_GFOFFSET3D(u,-1,0,-1) - KRANC_GFOFFSET3D(u,-1,0,1) - KRANC_GFOFFSET3D(u,1,0,-1) + KRANC_GFOFFSET3D(u,1,0,1))*p1o4dxdz)
#else
# define PDstandardNth31(u) (PDstandardNth31_impl(u,p1o4dxdz,cdj,cdk))
static CCTK_REAL PDstandardNth31_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o4dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth31_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o4dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return ((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)]))*p1o4dxdz;
+ return (KRANC_GFOFFSET3D(u,-1,0,-1) - KRANC_GFOFFSET3D(u,-1,0,1) - KRANC_GFOFFSET3D(u,1,0,-1) + KRANC_GFOFFSET3D(u,1,0,1))*p1o4dxdz;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth32(u) (((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)]))*p1o4dydz)
+# define PDstandardNth32(u) ((KRANC_GFOFFSET3D(u,0,-1,-1) - KRANC_GFOFFSET3D(u,0,-1,1) - KRANC_GFOFFSET3D(u,0,1,-1) + KRANC_GFOFFSET3D(u,0,1,1))*p1o4dydz)
#else
# define PDstandardNth32(u) (PDstandardNth32_impl(u,p1o4dydz,cdj,cdk))
static CCTK_REAL PDstandardNth32_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o4dydz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth32_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o4dydz, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return ((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)]))*p1o4dydz;
+ return (KRANC_GFOFFSET3D(u,0,-1,-1) - KRANC_GFOFFSET3D(u,0,-1,1) - KRANC_GFOFFSET3D(u,0,1,-1) + KRANC_GFOFFSET3D(u,0,1,1))*p1o4dydz;
}
#endif
diff --git a/ML_ADMConstraints_O2/src/ML_ADMConstraints_O2.cc b/ML_ADMConstraints_O2/src/ML_ADMConstraints_O2.cc
index dfe412f..1542371 100644
--- a/ML_ADMConstraints_O2/src/ML_ADMConstraints_O2.cc
+++ b/ML_ADMConstraints_O2/src/ML_ADMConstraints_O2.cc
@@ -36,7 +36,7 @@ extern "C" void ML_ADMConstraints_O2_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_ADMConstraints_O2_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_ADMConstraints_O2_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;
@@ -44,21 +44,6 @@ static void ML_ADMConstraints_O2_Body(cGH const * restrict const cctkGH, int con
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_ADMConstraints_O2_Body");
- }
-
- if (cctk_iteration % ML_ADMConstraints_O2_calc_every != ML_ADMConstraints_O2_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ADMBase::curv","ADMBase::lapse","ADMBase::metric","ADMBase::shift","ML_ADMConstraints_O2::ML_Ham","ML_ADMConstraints_O2::ML_mom"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_ADMConstraints_O2", 6, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "ML_ADMConstraints_O2", 1, 1, 1);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -72,6 +57,7 @@ static void ML_ADMConstraints_O2_Body(cGH const * restrict const cctkGH, int con
CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL const t = ToReal(cctk_time);
CCTK_REAL const dxi = INV(dx);
CCTK_REAL const dyi = INV(dy);
CCTK_REAL const dzi = INV(dz);
@@ -95,10 +81,18 @@ static void ML_ADMConstraints_O2_Body(cGH const * restrict const cctkGH, int con
CCTK_REAL const p1ody2 = INV(SQR(dy));
CCTK_REAL const p1odz2 = INV(SQR(dz));
+ /* 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_LOOP3 (ML_ADMConstraints_O2,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
+ i,j,k, imin[0],imin[1],imin[2], imax[0],imax[1],imax[2],
cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
{
ptrdiff_t const index = di*i + dj*j + dk*k;
@@ -291,53 +285,128 @@ static void ML_ADMConstraints_O2_Body(cGH const * restrict const cctkGH, int con
+ gu32*(-PDstandardNth2gzz + 2*PDstandardNth3gyz) +
gu33*PDstandardNth3gzz);
- CCTK_REAL R11 = 0.5*(-2*(G111*G122 + G111*G133 + G211*G222 + G211*G233
- + G311*G322 + G311*G333 + gu32*PDstandardNth11gyz) +
- 2*gu32*PDstandardNth12gxz + 2*gu32*PDstandardNth13gxy +
- gu22*(-PDstandardNth11gyy + 2*PDstandardNth12gxy - PDstandardNth22gxx)
- - 2*gu32*PDstandardNth23gxx + gu33*(-PDstandardNth11gzz +
- 2*PDstandardNth13gxz - PDstandardNth33gxx) + 2*SQR(G112) + 2*SQR(G113)
- + 2*SQR(G212) + 2*SQR(G213) + 2*SQR(G312) + 2*SQR(G313));
-
- CCTK_REAL R12 = 0.5*(2*(G113*G123 + G213*G223 + G313*G323) -
- 2*(G112*G133 + G212*G233 + G312*G333 + gu21*PDstandardNth12gxy) +
- gu31*(PDstandardNth11gyz - PDstandardNth12gxz - PDstandardNth13gxy) +
- gu21*(PDstandardNth11gyy + PDstandardNth22gxx) +
- gu32*PDstandardNth22gxz + gu31*PDstandardNth23gxx +
- gu32*(-PDstandardNth12gyz + PDstandardNth13gyy - PDstandardNth23gxy) +
- gu33*PDstandardNth23gxz + gu33*(-PDstandardNth12gzz +
- PDstandardNth13gyz - PDstandardNth33gxy));
-
- CCTK_REAL R13 = 0.5*(2*(G112*G123 + G212*G223 + G312*G323) -
- 2*(G113*G122 + G213*G222 + G313*G322 + gu31*PDstandardNth13gxz) +
- gu21*(PDstandardNth11gyz - PDstandardNth12gxz - PDstandardNth13gxy +
- PDstandardNth23gxx) + gu22*(PDstandardNth12gyz - PDstandardNth13gyy -
- PDstandardNth22gxz + PDstandardNth23gxy) + gu31*(PDstandardNth11gzz +
- PDstandardNth33gxx) + gu32*(PDstandardNth12gzz - PDstandardNth13gyz -
- PDstandardNth23gxz + PDstandardNth33gxy));
-
- CCTK_REAL R22 = 0.5*(-2*(G122*(G111 + G133) + G222*(G211 + G233) +
- G322*(G311 + G333) + gu31*PDstandardNth13gyy) +
- gu11*(-PDstandardNth11gyy + 2*PDstandardNth12gxy - PDstandardNth22gxx)
- + gu31*(-2*PDstandardNth22gxz + 2*(PDstandardNth12gyz +
- PDstandardNth23gxy)) + gu33*(-PDstandardNth22gzz + 2*PDstandardNth23gyz
- - PDstandardNth33gyy) + 2*(SQR(G112) + SQR(G123) + SQR(G212) +
- SQR(G223) + SQR(G312) + SQR(G323)));
-
- CCTK_REAL R23 = 0.5*(2*(G112*G113 + G212*G213 + G312*G313) +
- gu11*(-PDstandardNth11gyz + PDstandardNth12gxz + PDstandardNth13gxy -
- PDstandardNth23gxx) + gu21*(-PDstandardNth12gyz + PDstandardNth13gyy +
- PDstandardNth22gxz - PDstandardNth23gxy) - 2*(G111*G123 + G211*G223 +
- G311*G323 + gu32*PDstandardNth23gyz) + gu31*(PDstandardNth12gzz -
- PDstandardNth13gyz - PDstandardNth23gxz + PDstandardNth33gxy) +
- gu32*(PDstandardNth22gzz + PDstandardNth33gyy));
-
- CCTK_REAL R33 = 0.5*(gu11*(-PDstandardNth11gzz + 2*PDstandardNth13gxz
- - PDstandardNth33gxx) - 2*((G111 + G122)*G133 + (G211 + G222)*G233 +
- (G311 + G322)*G333 + gu21*(PDstandardNth12gzz + PDstandardNth33gxy)) +
- gu22*(-PDstandardNth22gzz + 2*PDstandardNth23gyz - PDstandardNth33gyy)
- + 2*(gu21*(PDstandardNth13gyz + PDstandardNth23gxz) + SQR(G113) +
- SQR(G123) + SQR(G213) + SQR(G223) + SQR(G313) + SQR(G323)));
+ CCTK_REAL R11 = 0.5*(gu32*(4*((-(G123*G211) + G113*G212)*gxyL +
+ (-(G123*G311) + G113*G312)*gxzL + G112*(G113*gxxL + G213*gxyL +
+ G313*gxzL) - G111*(G123*gxxL + G223*gxyL + G323*gxzL) + (G212*G213 -
+ G211*G223)*gyyL + G212*G313*gyzL + (-(G223*G311) + G213*G312 -
+ G211*G323)*gyzL + (G312*G313 - G311*G323)*gzzL) +
+ 2*(-PDstandardNth11gyz + PDstandardNth12gxz + PDstandardNth13gxy -
+ PDstandardNth23gxx)) + gu22*(-PDstandardNth11gyy + 2*PDstandardNth12gxy
+ - PDstandardNth22gxx + 2*(G122*(-(G211*gxyL) - G311*gxzL) +
+ 2*G112*(G212*gxyL + G312*gxzL) - G111*(G122*gxxL + G222*gxyL +
+ G322*gxzL) + (2*G212*G312 - G211*G322)*gyzL + G222*(-(G211*gyyL) -
+ G311*gyzL) + gxxL*SQR(G112) + gyyL*SQR(G212) + gzzL*(-(G311*G322) +
+ SQR(G312)))) + gu33*(-PDstandardNth11gzz + 2*PDstandardNth13gxz -
+ PDstandardNth33gxx + 2*(G133*(-(G211*gxyL) - G311*gxzL) +
+ 2*G113*(G213*gxyL + G313*gxzL) - G111*(G133*gxxL + G233*gxyL +
+ G333*gxzL) + (2*G213*G313 - G211*G333)*gyzL + G233*(-(G211*gyyL) -
+ G311*gyzL) + gxxL*SQR(G113) + gyyL*SQR(G213) + gzzL*(-(G311*G333) +
+ SQR(G313)))));
+
+ CCTK_REAL R12 = 0.5*(gu21*(PDstandardNth11gyy - 2*PDstandardNth12gxy +
+ PDstandardNth22gxx) + gu31*(PDstandardNth11gyz - PDstandardNth12gxz -
+ PDstandardNth13gxy + PDstandardNth23gxx) + gu32*(-PDstandardNth12gyz +
+ PDstandardNth13gyy + PDstandardNth22gxz - PDstandardNth23gxy) +
+ gu33*(-PDstandardNth12gzz + PDstandardNth13gyz + PDstandardNth23gxz -
+ PDstandardNth33gxy) + 2*(gu31*((G123*G211 - G113*G212)*gxyL +
+ (G123*G311 - G113*G312)*gxzL - G112*(G113*gxxL + G213*gxyL + G313*gxzL)
+ + G111*(G123*gxxL + G223*gxyL + G323*gxzL) + (-(G212*G213) +
+ G211*G223)*gyyL + (G223*G311 - G213*G312 - G212*G313)*gyzL +
+ G211*G323*gyzL + (-(G312*G313) + G311*G323)*gzzL) + gu32*((-(G123*G212)
+ + G122*G213)*gxyL + (-(G123*G312) + G122*G313)*gxzL + G113*(G122*gxxL +
+ G222*gxyL + G322*gxzL) - G112*(G123*gxxL + G223*gxyL + G323*gxzL) +
+ (G213*G222 - G212*G223)*gyyL + G213*G322*gyzL + (-(G223*G312) +
+ G222*G313 - G212*G323)*gyzL + (G313*G322 - G312*G323)*gzzL) +
+ gu33*((-(G133*G212) + G123*G213)*gxyL + (-(G133*G312) + G123*G313)*gxzL
+ + G113*(G123*gxxL + G223*gxyL + G323*gxzL) - G112*(G133*gxxL +
+ G233*gxyL + G333*gxzL) + (G213*G223 - G212*G233)*gyyL + G213*G323*gyzL
+ + (-(G233*G312) + G223*G313 - G212*G333)*gyzL + (G313*G323 -
+ G312*G333)*gzzL) + gu21*(G122*(G211*gxyL + G311*gxzL) + G111*(G122*gxxL
+ + G222*gxyL + G322*gxzL) + G222*(G211*gyyL + G311*gyzL) -
+ 2*(G112*(G212*gxyL + G312*gxzL) + G212*G312*gyzL) + G322*(G211*gyzL +
+ G311*gzzL) - gxxL*SQR(G112) - gyyL*SQR(G212) - gzzL*SQR(G312))));
+
+ CCTK_REAL R13 = 0.5*(gu21*(PDstandardNth11gyz - PDstandardNth12gxz -
+ PDstandardNth13gxy + PDstandardNth23gxx) + gu22*(PDstandardNth12gyz -
+ PDstandardNth13gyy - PDstandardNth22gxz + PDstandardNth23gxy) +
+ gu31*(PDstandardNth11gzz - 2*PDstandardNth13gxz + PDstandardNth33gxx) +
+ gu32*(PDstandardNth12gzz - PDstandardNth13gyz - PDstandardNth23gxz +
+ PDstandardNth33gxy) + 2*(gu21*((G123*G211 - G113*G212)*gxyL +
+ (G123*G311 - G113*G312)*gxzL - G112*(G113*gxxL + G213*gxyL + G313*gxzL)
+ + G111*(G123*gxxL + G223*gxyL + G323*gxzL) + (-(G212*G213) +
+ G211*G223)*gyyL + (G223*G311 - G213*G312 - G212*G313)*gyzL +
+ G211*G323*gyzL + (-(G312*G313) + G311*G323)*gzzL) + gu22*((G123*G212 -
+ G122*G213)*gxyL + (G123*G312 - G122*G313)*gxzL - G113*(G122*gxxL +
+ G222*gxyL + G322*gxzL) + G112*(G123*gxxL + G223*gxyL + G323*gxzL) +
+ (-(G213*G222) + G212*G223)*gyyL + (G223*G312 - G222*G313 -
+ G213*G322)*gyzL + G212*G323*gyzL + (-(G313*G322) + G312*G323)*gzzL) +
+ gu32*((G133*G212 - G123*G213)*gxyL + (G133*G312 - G123*G313)*gxzL -
+ G113*(G123*gxxL + G223*gxyL + G323*gxzL) + G112*(G133*gxxL + G233*gxyL
+ + G333*gxzL) + (-(G213*G223) + G212*G233)*gyyL + (G233*G312 - G223*G313
+ - G213*G323)*gyzL + G212*G333*gyzL + (-(G313*G323) + G312*G333)*gzzL) +
+ gu31*(G133*(G211*gxyL + G311*gxzL) + G111*(G133*gxxL + G233*gxyL +
+ G333*gxzL) + G233*(G211*gyyL + G311*gyzL) - 2*(G113*(G213*gxyL +
+ G313*gxzL) + G213*G313*gyzL) + G333*(G211*gyzL + G311*gzzL) -
+ gxxL*SQR(G113) - gyyL*SQR(G213) - gzzL*SQR(G313))));
+
+ CCTK_REAL R22 = 0.5*(gu31*(4*((G123*G212 - G122*G213)*gxyL +
+ (G123*G312 - G122*G313)*gxzL - G113*(G122*gxxL + G222*gxyL + G322*gxzL)
+ + G112*(G123*gxxL + G223*gxyL + G323*gxzL) + (-(G213*G222) +
+ G212*G223)*gyyL + (G223*G312 - G222*G313 - G213*G322)*gyzL +
+ G212*G323*gyzL + (-(G313*G322) + G312*G323)*gzzL) +
+ 2*(PDstandardNth12gyz - PDstandardNth13gyy - PDstandardNth22gxz +
+ PDstandardNth23gxy)) + gu11*(-PDstandardNth11gyy + 2*PDstandardNth12gxy
+ - PDstandardNth22gxx + 2*(G122*(-(G211*gxyL) - G311*gxzL) +
+ 2*G112*(G212*gxyL + G312*gxzL) - G111*(G122*gxxL + G222*gxyL +
+ G322*gxzL) + (2*G212*G312 - G211*G322)*gyzL + G222*(-(G211*gyyL) -
+ G311*gyzL) + gxxL*SQR(G112) + gyyL*SQR(G212) + gzzL*(-(G311*G322) +
+ SQR(G312)))) + gu33*(-PDstandardNth22gzz + 2*PDstandardNth23gyz -
+ PDstandardNth33gyy + 2*(G133*(-(G222*gxyL) - G322*gxzL) +
+ 2*G123*(G223*gxyL + G323*gxzL) - G122*(G133*gxxL + G233*gxyL +
+ G333*gxzL) + (2*G223*G323 - G222*G333)*gyzL + G233*(-(G222*gyyL) -
+ G322*gyzL) + gxxL*SQR(G123) + gyyL*SQR(G223) + gzzL*(-(G322*G333) +
+ SQR(G323)))));
+
+ CCTK_REAL R23 = 0.5*(gu11*(-PDstandardNth11gyz + PDstandardNth12gxz +
+ PDstandardNth13gxy - PDstandardNth23gxx) + gu21*(-PDstandardNth12gyz +
+ PDstandardNth13gyy + PDstandardNth22gxz - PDstandardNth23gxy) +
+ gu31*(PDstandardNth12gzz - PDstandardNth13gyz - PDstandardNth23gxz +
+ PDstandardNth33gxy) + gu32*(PDstandardNth22gzz - 2*PDstandardNth23gyz +
+ PDstandardNth33gyy) + 2*(gu11*((-(G123*G211) + G113*G212)*gxyL +
+ (-(G123*G311) + G113*G312)*gxzL + G112*(G113*gxxL + G213*gxyL +
+ G313*gxzL) - G111*(G123*gxxL + G223*gxyL + G323*gxzL) + (G212*G213 -
+ G211*G223)*gyyL + G212*G313*gyzL + (-(G223*G311) + G213*G312 -
+ G211*G323)*gyzL + (G312*G313 - G311*G323)*gzzL) + gu21*((-(G123*G212) +
+ G122*G213)*gxyL + (-(G123*G312) + G122*G313)*gxzL + G113*(G122*gxxL +
+ G222*gxyL + G322*gxzL) - G112*(G123*gxxL + G223*gxyL + G323*gxzL) +
+ (G213*G222 - G212*G223)*gyyL + G213*G322*gyzL + (-(G223*G312) +
+ G222*G313 - G212*G323)*gyzL + (G313*G322 - G312*G323)*gzzL) +
+ gu31*((G133*G212 - G123*G213)*gxyL + (G133*G312 - G123*G313)*gxzL -
+ G113*(G123*gxxL + G223*gxyL + G323*gxzL) + G112*(G133*gxxL + G233*gxyL
+ + G333*gxzL) + (-(G213*G223) + G212*G233)*gyyL + (G233*G312 - G223*G313
+ - G213*G323)*gyzL + G212*G333*gyzL + (-(G313*G323) + G312*G333)*gzzL) +
+ gu32*(G133*(G222*gxyL + G322*gxzL) + G122*(G133*gxxL + G233*gxyL +
+ G333*gxzL) + G233*(G222*gyyL + G322*gyzL) - 2*(G123*(G223*gxyL +
+ G323*gxzL) + G223*G323*gyzL) + G333*(G222*gyzL + G322*gzzL) -
+ gxxL*SQR(G123) - gyyL*SQR(G223) - gzzL*SQR(G323))));
+
+ CCTK_REAL R33 = 0.5*(gu21*(4*((-(G133*G212) + G123*G213)*gxyL +
+ (-(G133*G312) + G123*G313)*gxzL + G113*(G123*gxxL + G223*gxyL +
+ G323*gxzL) - G112*(G133*gxxL + G233*gxyL + G333*gxzL) + (G213*G223 -
+ G212*G233)*gyyL + G213*G323*gyzL + (-(G233*G312) + G223*G313 -
+ G212*G333)*gyzL + (G313*G323 - G312*G333)*gzzL) +
+ 2*(-PDstandardNth12gzz + PDstandardNth13gyz + PDstandardNth23gxz -
+ PDstandardNth33gxy)) + gu11*(-PDstandardNth11gzz + 2*PDstandardNth13gxz
+ - PDstandardNth33gxx + 2*(G133*(-(G211*gxyL) - G311*gxzL) +
+ 2*G113*(G213*gxyL + G313*gxzL) - G111*(G133*gxxL + G233*gxyL +
+ G333*gxzL) + (2*G213*G313 - G211*G333)*gyzL + G233*(-(G211*gyyL) -
+ G311*gyzL) + gxxL*SQR(G113) + gyyL*SQR(G213) + gzzL*(-(G311*G333) +
+ SQR(G313)))) + gu22*(-PDstandardNth22gzz + 2*PDstandardNth23gyz -
+ PDstandardNth33gyy + 2*(G133*(-(G222*gxyL) - G322*gxzL) +
+ 2*G123*(G223*gxyL + G323*gxzL) - G122*(G133*gxxL + G233*gxyL +
+ G333*gxzL) + (2*G223*G323 - G222*G333)*gyzL + G233*(-(G222*gyyL) -
+ G322*gyzL) + gxxL*SQR(G123) + gyyL*SQR(G223) + gzzL*(-(G322*G333) +
+ SQR(G323)))));
CCTK_REAL trR = gu11*R11 + gu22*R22 + 2*(gu21*R12 + gu31*R13 +
gu32*R23) + gu33*R33;
@@ -430,5 +499,26 @@ extern "C" void ML_ADMConstraints_O2(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_ADMConstraints_O2_Body");
+ }
+
+ if (cctk_iteration % ML_ADMConstraints_O2_calc_every != ML_ADMConstraints_O2_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ADMBase::curv","ADMBase::lapse","ADMBase::metric","ADMBase::shift","ML_ADMConstraints_O2::ML_Ham","ML_ADMConstraints_O2::ML_mom"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_ADMConstraints_O2", 6, groups);
+
+ GenericFD_EnsureStencilFits(cctkGH, "ML_ADMConstraints_O2", 1, 1, 1);
+
GenericFD_LoopOverInterior(cctkGH, &ML_ADMConstraints_O2_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_ADMConstraints_O2_Body");
+ }
}
diff --git a/ML_ADMConstraints_O2/src/RegisterMoL.cc b/ML_ADMConstraints_O2/src/RegisterMoL.cc
index 076ead3..a65c77b 100644
--- a/ML_ADMConstraints_O2/src/RegisterMoL.cc
+++ b/ML_ADMConstraints_O2/src/RegisterMoL.cc
@@ -12,5 +12,7 @@ extern "C" void ML_ADMConstraints_O2_RegisterVars(CCTK_ARGUMENTS)
CCTK_INT ierr = 0;
/* Register all the evolved grid functions with MoL */
+
+ /* Register all the evolved Array functions with MoL */
return;
}
diff --git a/ML_ADMQuantities/param.ccl b/ML_ADMQuantities/param.ccl
index 09afed3..f9a063c 100644
--- a/ML_ADMQuantities/param.ccl
+++ b/ML_ADMQuantities/param.ccl
@@ -8,6 +8,7 @@ shares: GenericFD
shares: MethodOfLines
USES CCTK_INT MoL_Num_Evolved_Vars
+USES CCTK_INT MoL_Num_ArrayEvolved_Vars
restricted:
CCTK_INT verbose "verbose" STEERABLE=ALWAYS
@@ -28,6 +29,12 @@ CCTK_INT ML_ADMQuantities_MaxNumEvolvedVars "Number of evolved variables used by
} 0
restricted:
+CCTK_INT ML_ADMQuantities_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 :: ""
diff --git a/ML_ADMQuantities/schedule.ccl b/ML_ADMQuantities/schedule.ccl
index 76e5a43..273f2d7 100644
--- a/ML_ADMQuantities/schedule.ccl
+++ b/ML_ADMQuantities/schedule.ccl
@@ -23,7 +23,7 @@ schedule ML_ADMQuantities_RegisterSymmetries in SymmetryRegister
OPTIONS: meta
} "register symmetries"
-schedule group ML_ADMQuantities_group in MoL_PseudoEvolution
+schedule group ML_ADMQuantities_group in MoL_PseudoEvolution after MoL_PostStep
{
# no language specified
} "ML_ADMQuantities"
@@ -51,17 +51,12 @@ schedule group ML_ADMQuantities_bc_group in ML_ADMQuantities_group after ML_ADMQ
# no language specified
} "ML_ADMQuantities"
-schedule group ML_ADMQuantities_bc_group at CCTK_POSTRESTRICT
+schedule group ML_ADMQuantities_bc_group in MoL_PseudoEvolutionBoundaries after MoL_PostStep
{
# no language specified
} "ML_ADMQuantities"
-schedule group ML_ADMQuantities_bc_group at CCTK_POSTRESTRICTINITIAL
-{
- # no language specified
-} "ML_ADMQuantities"
-
-schedule ML_ADMQuantities_SelectBoundConds in MoL_PseudoEvolution
+schedule ML_ADMQuantities_SelectBoundConds in MoL_PostStep
{
LANG: C
OPTIONS: level
@@ -73,7 +68,7 @@ schedule ML_ADMQuantities_CheckBoundaries at BASEGRID
OPTIONS: meta
} "check boundaries treatment"
-schedule group ApplyBCs as ML_ADMQuantities_ApplyBCs in MoL_PseudoEvolution after ML_ADMQuantities_SelectBoundConds
+schedule group ApplyBCs as ML_ADMQuantities_ApplyBCs in MoL_PostStep after ML_ADMQuantities_SelectBoundConds
{
# no language specified
} "Apply boundary conditions controlled by thorn Boundary"
diff --git a/ML_ADMQuantities/src/Differencing.h b/ML_ADMQuantities/src/Differencing.h
index 2073bae..ba75ffa 100644
--- a/ML_ADMQuantities/src/Differencing.h
+++ b/ML_ADMQuantities/src/Differencing.h
@@ -1,216 +1,216 @@
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth1(u) ((-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]))*p1o12dx)
+# define PDstandardNth1(u) ((-8*KRANC_GFOFFSET3D(u,-1,0,0) + 8*KRANC_GFOFFSET3D(u,1,0,0) + KRANC_GFOFFSET3D(u,-2,0,0) - KRANC_GFOFFSET3D(u,2,0,0))*p1o12dx)
#else
# define PDstandardNth1(u) (PDstandardNth1_impl(u,p1o12dx,cdj,cdk))
static CCTK_REAL PDstandardNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]))*p1o12dx;
+ return (-8*KRANC_GFOFFSET3D(u,-1,0,0) + 8*KRANC_GFOFFSET3D(u,1,0,0) + KRANC_GFOFFSET3D(u,-2,0,0) - KRANC_GFOFFSET3D(u,2,0,0))*p1o12dx;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth2(u) ((-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]))*p1o12dy)
+# define PDstandardNth2(u) ((-8*KRANC_GFOFFSET3D(u,0,-1,0) + 8*KRANC_GFOFFSET3D(u,0,1,0) + KRANC_GFOFFSET3D(u,0,-2,0) - KRANC_GFOFFSET3D(u,0,2,0))*p1o12dy)
#else
# define PDstandardNth2(u) (PDstandardNth2_impl(u,p1o12dy,cdj,cdk))
static CCTK_REAL PDstandardNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]))*p1o12dy;
+ return (-8*KRANC_GFOFFSET3D(u,0,-1,0) + 8*KRANC_GFOFFSET3D(u,0,1,0) + KRANC_GFOFFSET3D(u,0,-2,0) - KRANC_GFOFFSET3D(u,0,2,0))*p1o12dy;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth3(u) ((-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]))*p1o12dz)
+# define PDstandardNth3(u) ((-8*KRANC_GFOFFSET3D(u,0,0,-1) + 8*KRANC_GFOFFSET3D(u,0,0,1) + KRANC_GFOFFSET3D(u,0,0,-2) - KRANC_GFOFFSET3D(u,0,0,2))*p1o12dz)
#else
# define PDstandardNth3(u) (PDstandardNth3_impl(u,p1o12dz,cdj,cdk))
static CCTK_REAL PDstandardNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]))*p1o12dz;
+ return (-8*KRANC_GFOFFSET3D(u,0,0,-1) + 8*KRANC_GFOFFSET3D(u,0,0,1) + KRANC_GFOFFSET3D(u,0,0,-2) - KRANC_GFOFFSET3D(u,0,0,2))*p1o12dz;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth11(u) ((30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]))*pm1o12dx2)
+# define PDstandardNth11(u) ((30*KRANC_GFOFFSET3D(u,0,0,0) - 16*(KRANC_GFOFFSET3D(u,-1,0,0) + KRANC_GFOFFSET3D(u,1,0,0)) + KRANC_GFOFFSET3D(u,-2,0,0) + KRANC_GFOFFSET3D(u,2,0,0))*pm1o12dx2)
#else
# define PDstandardNth11(u) (PDstandardNth11_impl(u,pm1o12dx2,cdj,cdk))
static CCTK_REAL PDstandardNth11_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dx2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth11_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dx2, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]))*pm1o12dx2;
+ return (30*KRANC_GFOFFSET3D(u,0,0,0) - 16*(KRANC_GFOFFSET3D(u,-1,0,0) + KRANC_GFOFFSET3D(u,1,0,0)) + KRANC_GFOFFSET3D(u,-2,0,0) + KRANC_GFOFFSET3D(u,2,0,0))*pm1o12dx2;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth22(u) ((30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]))*pm1o12dy2)
+# define PDstandardNth22(u) ((30*KRANC_GFOFFSET3D(u,0,0,0) - 16*(KRANC_GFOFFSET3D(u,0,-1,0) + KRANC_GFOFFSET3D(u,0,1,0)) + KRANC_GFOFFSET3D(u,0,-2,0) + KRANC_GFOFFSET3D(u,0,2,0))*pm1o12dy2)
#else
# define PDstandardNth22(u) (PDstandardNth22_impl(u,pm1o12dy2,cdj,cdk))
static CCTK_REAL PDstandardNth22_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dy2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth22_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dy2, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]))*pm1o12dy2;
+ return (30*KRANC_GFOFFSET3D(u,0,0,0) - 16*(KRANC_GFOFFSET3D(u,0,-1,0) + KRANC_GFOFFSET3D(u,0,1,0)) + KRANC_GFOFFSET3D(u,0,-2,0) + KRANC_GFOFFSET3D(u,0,2,0))*pm1o12dy2;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth33(u) ((30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]))*pm1o12dz2)
+# define PDstandardNth33(u) ((30*KRANC_GFOFFSET3D(u,0,0,0) - 16*(KRANC_GFOFFSET3D(u,0,0,-1) + KRANC_GFOFFSET3D(u,0,0,1)) + KRANC_GFOFFSET3D(u,0,0,-2) + KRANC_GFOFFSET3D(u,0,0,2))*pm1o12dz2)
#else
# define PDstandardNth33(u) (PDstandardNth33_impl(u,pm1o12dz2,cdj,cdk))
static CCTK_REAL PDstandardNth33_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dz2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth33_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dz2, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]))*pm1o12dz2;
+ return (30*KRANC_GFOFFSET3D(u,0,0,0) - 16*(KRANC_GFOFFSET3D(u,0,0,-1) + KRANC_GFOFFSET3D(u,0,0,1)) + KRANC_GFOFFSET3D(u,0,0,-2) + KRANC_GFOFFSET3D(u,0,0,2))*pm1o12dz2;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth12(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-1)+cdk*(0)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(2)+cdk*(0)]))*p1o144dxdy)
+# define PDstandardNth12(u) ((-64*(KRANC_GFOFFSET3D(u,-1,1,0) + KRANC_GFOFFSET3D(u,1,-1,0)) + 64*(KRANC_GFOFFSET3D(u,-1,-1,0) + KRANC_GFOFFSET3D(u,1,1,0)) + 8*(KRANC_GFOFFSET3D(u,-1,2,0) + KRANC_GFOFFSET3D(u,1,-2,0) + KRANC_GFOFFSET3D(u,-2,1,0) + KRANC_GFOFFSET3D(u,2,-1,0)) - 8*(KRANC_GFOFFSET3D(u,-1,-2,0) + KRANC_GFOFFSET3D(u,1,2,0) + KRANC_GFOFFSET3D(u,-2,-1,0) + KRANC_GFOFFSET3D(u,2,1,0)) + KRANC_GFOFFSET3D(u,-2,-2,0) - KRANC_GFOFFSET3D(u,-2,2,0) - KRANC_GFOFFSET3D(u,2,-2,0) + KRANC_GFOFFSET3D(u,2,2,0))*p1o144dxdy)
#else
# define PDstandardNth12(u) (PDstandardNth12_impl(u,p1o144dxdy,cdj,cdk))
static CCTK_REAL PDstandardNth12_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth12_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-1)+cdk*(0)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(2)+cdk*(0)]))*p1o144dxdy;
+ return (-64*(KRANC_GFOFFSET3D(u,-1,1,0) + KRANC_GFOFFSET3D(u,1,-1,0)) + 64*(KRANC_GFOFFSET3D(u,-1,-1,0) + KRANC_GFOFFSET3D(u,1,1,0)) + 8*(KRANC_GFOFFSET3D(u,-1,2,0) + KRANC_GFOFFSET3D(u,1,-2,0) + KRANC_GFOFFSET3D(u,-2,1,0) + KRANC_GFOFFSET3D(u,2,-1,0)) - 8*(KRANC_GFOFFSET3D(u,-1,-2,0) + KRANC_GFOFFSET3D(u,1,2,0) + KRANC_GFOFFSET3D(u,-2,-1,0) + KRANC_GFOFFSET3D(u,2,1,0)) + KRANC_GFOFFSET3D(u,-2,-2,0) - KRANC_GFOFFSET3D(u,-2,2,0) - KRANC_GFOFFSET3D(u,2,-2,0) + KRANC_GFOFFSET3D(u,2,2,0))*p1o144dxdy;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth13(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(2)]))*p1o144dxdz)
+# define PDstandardNth13(u) ((-64*(KRANC_GFOFFSET3D(u,-1,0,1) + KRANC_GFOFFSET3D(u,1,0,-1)) + 64*(KRANC_GFOFFSET3D(u,-1,0,-1) + KRANC_GFOFFSET3D(u,1,0,1)) + 8*(KRANC_GFOFFSET3D(u,-1,0,2) + KRANC_GFOFFSET3D(u,1,0,-2) + KRANC_GFOFFSET3D(u,-2,0,1) + KRANC_GFOFFSET3D(u,2,0,-1)) - 8*(KRANC_GFOFFSET3D(u,-1,0,-2) + KRANC_GFOFFSET3D(u,1,0,2) + KRANC_GFOFFSET3D(u,-2,0,-1) + KRANC_GFOFFSET3D(u,2,0,1)) + KRANC_GFOFFSET3D(u,-2,0,-2) - KRANC_GFOFFSET3D(u,-2,0,2) - KRANC_GFOFFSET3D(u,2,0,-2) + KRANC_GFOFFSET3D(u,2,0,2))*p1o144dxdz)
#else
# define PDstandardNth13(u) (PDstandardNth13_impl(u,p1o144dxdz,cdj,cdk))
static CCTK_REAL PDstandardNth13_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth13_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(2)]))*p1o144dxdz;
+ return (-64*(KRANC_GFOFFSET3D(u,-1,0,1) + KRANC_GFOFFSET3D(u,1,0,-1)) + 64*(KRANC_GFOFFSET3D(u,-1,0,-1) + KRANC_GFOFFSET3D(u,1,0,1)) + 8*(KRANC_GFOFFSET3D(u,-1,0,2) + KRANC_GFOFFSET3D(u,1,0,-2) + KRANC_GFOFFSET3D(u,-2,0,1) + KRANC_GFOFFSET3D(u,2,0,-1)) - 8*(KRANC_GFOFFSET3D(u,-1,0,-2) + KRANC_GFOFFSET3D(u,1,0,2) + KRANC_GFOFFSET3D(u,-2,0,-1) + KRANC_GFOFFSET3D(u,2,0,1)) + KRANC_GFOFFSET3D(u,-2,0,-2) - KRANC_GFOFFSET3D(u,-2,0,2) - KRANC_GFOFFSET3D(u,2,0,-2) + KRANC_GFOFFSET3D(u,2,0,2))*p1o144dxdz;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth21(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-1)+cdk*(0)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(2)+cdk*(0)]))*p1o144dxdy)
+# define PDstandardNth21(u) ((-64*(KRANC_GFOFFSET3D(u,-1,1,0) + KRANC_GFOFFSET3D(u,1,-1,0)) + 64*(KRANC_GFOFFSET3D(u,-1,-1,0) + KRANC_GFOFFSET3D(u,1,1,0)) + 8*(KRANC_GFOFFSET3D(u,-1,2,0) + KRANC_GFOFFSET3D(u,1,-2,0) + KRANC_GFOFFSET3D(u,-2,1,0) + KRANC_GFOFFSET3D(u,2,-1,0)) - 8*(KRANC_GFOFFSET3D(u,-1,-2,0) + KRANC_GFOFFSET3D(u,1,2,0) + KRANC_GFOFFSET3D(u,-2,-1,0) + KRANC_GFOFFSET3D(u,2,1,0)) + KRANC_GFOFFSET3D(u,-2,-2,0) - KRANC_GFOFFSET3D(u,-2,2,0) - KRANC_GFOFFSET3D(u,2,-2,0) + KRANC_GFOFFSET3D(u,2,2,0))*p1o144dxdy)
#else
# define PDstandardNth21(u) (PDstandardNth21_impl(u,p1o144dxdy,cdj,cdk))
static CCTK_REAL PDstandardNth21_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth21_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-1)+cdk*(0)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(2)+cdk*(0)]))*p1o144dxdy;
+ return (-64*(KRANC_GFOFFSET3D(u,-1,1,0) + KRANC_GFOFFSET3D(u,1,-1,0)) + 64*(KRANC_GFOFFSET3D(u,-1,-1,0) + KRANC_GFOFFSET3D(u,1,1,0)) + 8*(KRANC_GFOFFSET3D(u,-1,2,0) + KRANC_GFOFFSET3D(u,1,-2,0) + KRANC_GFOFFSET3D(u,-2,1,0) + KRANC_GFOFFSET3D(u,2,-1,0)) - 8*(KRANC_GFOFFSET3D(u,-1,-2,0) + KRANC_GFOFFSET3D(u,1,2,0) + KRANC_GFOFFSET3D(u,-2,-1,0) + KRANC_GFOFFSET3D(u,2,1,0)) + KRANC_GFOFFSET3D(u,-2,-2,0) - KRANC_GFOFFSET3D(u,-2,2,0) - KRANC_GFOFFSET3D(u,2,-2,0) + KRANC_GFOFFSET3D(u,2,2,0))*p1o144dxdy;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth23(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(2)]))*p1o144dydz)
+# define PDstandardNth23(u) ((-64*(KRANC_GFOFFSET3D(u,0,-1,1) + KRANC_GFOFFSET3D(u,0,1,-1)) + 64*(KRANC_GFOFFSET3D(u,0,-1,-1) + KRANC_GFOFFSET3D(u,0,1,1)) + 8*(KRANC_GFOFFSET3D(u,0,-1,2) + KRANC_GFOFFSET3D(u,0,1,-2) + KRANC_GFOFFSET3D(u,0,-2,1) + KRANC_GFOFFSET3D(u,0,2,-1)) - 8*(KRANC_GFOFFSET3D(u,0,-1,-2) + KRANC_GFOFFSET3D(u,0,1,2) + KRANC_GFOFFSET3D(u,0,-2,-1) + KRANC_GFOFFSET3D(u,0,2,1)) + KRANC_GFOFFSET3D(u,0,-2,-2) - KRANC_GFOFFSET3D(u,0,-2,2) - KRANC_GFOFFSET3D(u,0,2,-2) + KRANC_GFOFFSET3D(u,0,2,2))*p1o144dydz)
#else
# define PDstandardNth23(u) (PDstandardNth23_impl(u,p1o144dydz,cdj,cdk))
static CCTK_REAL PDstandardNth23_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dydz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth23_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dydz, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(2)]))*p1o144dydz;
+ return (-64*(KRANC_GFOFFSET3D(u,0,-1,1) + KRANC_GFOFFSET3D(u,0,1,-1)) + 64*(KRANC_GFOFFSET3D(u,0,-1,-1) + KRANC_GFOFFSET3D(u,0,1,1)) + 8*(KRANC_GFOFFSET3D(u,0,-1,2) + KRANC_GFOFFSET3D(u,0,1,-2) + KRANC_GFOFFSET3D(u,0,-2,1) + KRANC_GFOFFSET3D(u,0,2,-1)) - 8*(KRANC_GFOFFSET3D(u,0,-1,-2) + KRANC_GFOFFSET3D(u,0,1,2) + KRANC_GFOFFSET3D(u,0,-2,-1) + KRANC_GFOFFSET3D(u,0,2,1)) + KRANC_GFOFFSET3D(u,0,-2,-2) - KRANC_GFOFFSET3D(u,0,-2,2) - KRANC_GFOFFSET3D(u,0,2,-2) + KRANC_GFOFFSET3D(u,0,2,2))*p1o144dydz;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth31(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(2)]))*p1o144dxdz)
+# define PDstandardNth31(u) ((-64*(KRANC_GFOFFSET3D(u,-1,0,1) + KRANC_GFOFFSET3D(u,1,0,-1)) + 64*(KRANC_GFOFFSET3D(u,-1,0,-1) + KRANC_GFOFFSET3D(u,1,0,1)) + 8*(KRANC_GFOFFSET3D(u,-1,0,2) + KRANC_GFOFFSET3D(u,1,0,-2) + KRANC_GFOFFSET3D(u,-2,0,1) + KRANC_GFOFFSET3D(u,2,0,-1)) - 8*(KRANC_GFOFFSET3D(u,-1,0,-2) + KRANC_GFOFFSET3D(u,1,0,2) + KRANC_GFOFFSET3D(u,-2,0,-1) + KRANC_GFOFFSET3D(u,2,0,1)) + KRANC_GFOFFSET3D(u,-2,0,-2) - KRANC_GFOFFSET3D(u,-2,0,2) - KRANC_GFOFFSET3D(u,2,0,-2) + KRANC_GFOFFSET3D(u,2,0,2))*p1o144dxdz)
#else
# define PDstandardNth31(u) (PDstandardNth31_impl(u,p1o144dxdz,cdj,cdk))
static CCTK_REAL PDstandardNth31_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth31_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(2)]))*p1o144dxdz;
+ return (-64*(KRANC_GFOFFSET3D(u,-1,0,1) + KRANC_GFOFFSET3D(u,1,0,-1)) + 64*(KRANC_GFOFFSET3D(u,-1,0,-1) + KRANC_GFOFFSET3D(u,1,0,1)) + 8*(KRANC_GFOFFSET3D(u,-1,0,2) + KRANC_GFOFFSET3D(u,1,0,-2) + KRANC_GFOFFSET3D(u,-2,0,1) + KRANC_GFOFFSET3D(u,2,0,-1)) - 8*(KRANC_GFOFFSET3D(u,-1,0,-2) + KRANC_GFOFFSET3D(u,1,0,2) + KRANC_GFOFFSET3D(u,-2,0,-1) + KRANC_GFOFFSET3D(u,2,0,1)) + KRANC_GFOFFSET3D(u,-2,0,-2) - KRANC_GFOFFSET3D(u,-2,0,2) - KRANC_GFOFFSET3D(u,2,0,-2) + KRANC_GFOFFSET3D(u,2,0,2))*p1o144dxdz;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth32(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(2)]))*p1o144dydz)
+# define PDstandardNth32(u) ((-64*(KRANC_GFOFFSET3D(u,0,-1,1) + KRANC_GFOFFSET3D(u,0,1,-1)) + 64*(KRANC_GFOFFSET3D(u,0,-1,-1) + KRANC_GFOFFSET3D(u,0,1,1)) + 8*(KRANC_GFOFFSET3D(u,0,-1,2) + KRANC_GFOFFSET3D(u,0,1,-2) + KRANC_GFOFFSET3D(u,0,-2,1) + KRANC_GFOFFSET3D(u,0,2,-1)) - 8*(KRANC_GFOFFSET3D(u,0,-1,-2) + KRANC_GFOFFSET3D(u,0,1,2) + KRANC_GFOFFSET3D(u,0,-2,-1) + KRANC_GFOFFSET3D(u,0,2,1)) + KRANC_GFOFFSET3D(u,0,-2,-2) - KRANC_GFOFFSET3D(u,0,-2,2) - KRANC_GFOFFSET3D(u,0,2,-2) + KRANC_GFOFFSET3D(u,0,2,2))*p1o144dydz)
#else
# define PDstandardNth32(u) (PDstandardNth32_impl(u,p1o144dydz,cdj,cdk))
static CCTK_REAL PDstandardNth32_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dydz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth32_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dydz, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(2)]))*p1o144dydz;
+ return (-64*(KRANC_GFOFFSET3D(u,0,-1,1) + KRANC_GFOFFSET3D(u,0,1,-1)) + 64*(KRANC_GFOFFSET3D(u,0,-1,-1) + KRANC_GFOFFSET3D(u,0,1,1)) + 8*(KRANC_GFOFFSET3D(u,0,-1,2) + KRANC_GFOFFSET3D(u,0,1,-2) + KRANC_GFOFFSET3D(u,0,-2,1) + KRANC_GFOFFSET3D(u,0,2,-1)) - 8*(KRANC_GFOFFSET3D(u,0,-1,-2) + KRANC_GFOFFSET3D(u,0,1,2) + KRANC_GFOFFSET3D(u,0,-2,-1) + KRANC_GFOFFSET3D(u,0,2,1)) + KRANC_GFOFFSET3D(u,0,-2,-2) - KRANC_GFOFFSET3D(u,0,-2,2) - KRANC_GFOFFSET3D(u,0,2,-2) + KRANC_GFOFFSET3D(u,0,2,2))*p1o144dydz;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDupwindNth1(u) ((-10*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(2*dir1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3*dir1)+cdj*(0)+cdk*(0)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-dir1)+cdj*(0)+cdk*(0)]) + 18*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(dir1)+cdj*(0)+cdk*(0)]))*p1o12dx*dir1)
+# define PDupwindNth1(u) ((-10*KRANC_GFOFFSET3D(u,0,0,0) - 6*KRANC_GFOFFSET3D(u,2*dir1,0,0) + KRANC_GFOFFSET3D(u,3*dir1,0,0) - 3*KRANC_GFOFFSET3D(u,-dir1,0,0) + 18*KRANC_GFOFFSET3D(u,dir1,0,0))*p1o12dx*dir1)
#else
# define PDupwindNth1(u) (PDupwindNth1_impl(u,p1o12dx,cdj,cdk,dir1,dir2,dir3))
static CCTK_REAL PDupwindNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dx, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDupwindNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dx, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-10*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(2*dir1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3*dir1)+cdj*(0)+cdk*(0)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-dir1)+cdj*(0)+cdk*(0)]) + 18*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(dir1)+cdj*(0)+cdk*(0)]))*p1o12dx*dir1;
+ return (-10*KRANC_GFOFFSET3D(u,0,0,0) - 6*KRANC_GFOFFSET3D(u,2*dir1,0,0) + KRANC_GFOFFSET3D(u,3*dir1,0,0) - 3*KRANC_GFOFFSET3D(u,-dir1,0,0) + 18*KRANC_GFOFFSET3D(u,dir1,0,0))*p1o12dx*dir1;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDupwindNth2(u) ((-10*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2*dir2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3*dir2)+cdk*(0)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-dir2)+cdk*(0)]) + 18*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(dir2)+cdk*(0)]))*p1o12dy*dir2)
+# define PDupwindNth2(u) ((-10*KRANC_GFOFFSET3D(u,0,0,0) - 6*KRANC_GFOFFSET3D(u,0,2*dir2,0) + KRANC_GFOFFSET3D(u,0,3*dir2,0) - 3*KRANC_GFOFFSET3D(u,0,-dir2,0) + 18*KRANC_GFOFFSET3D(u,0,dir2,0))*p1o12dy*dir2)
#else
# define PDupwindNth2(u) (PDupwindNth2_impl(u,p1o12dy,cdj,cdk,dir1,dir2,dir3))
static CCTK_REAL PDupwindNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dy, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDupwindNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dy, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-10*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2*dir2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3*dir2)+cdk*(0)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-dir2)+cdk*(0)]) + 18*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(dir2)+cdk*(0)]))*p1o12dy*dir2;
+ return (-10*KRANC_GFOFFSET3D(u,0,0,0) - 6*KRANC_GFOFFSET3D(u,0,2*dir2,0) + KRANC_GFOFFSET3D(u,0,3*dir2,0) - 3*KRANC_GFOFFSET3D(u,0,-dir2,0) + 18*KRANC_GFOFFSET3D(u,0,dir2,0))*p1o12dy*dir2;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDupwindNth3(u) ((-10*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2*dir3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(3*dir3)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-dir3)]) + 18*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(dir3)]))*p1o12dz*dir3)
+# define PDupwindNth3(u) ((-10*KRANC_GFOFFSET3D(u,0,0,0) - 6*KRANC_GFOFFSET3D(u,0,0,2*dir3) + KRANC_GFOFFSET3D(u,0,0,3*dir3) - 3*KRANC_GFOFFSET3D(u,0,0,-dir3) + 18*KRANC_GFOFFSET3D(u,0,0,dir3))*p1o12dz*dir3)
#else
# define PDupwindNth3(u) (PDupwindNth3_impl(u,p1o12dz,cdj,cdk,dir1,dir2,dir3))
static CCTK_REAL PDupwindNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dz, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDupwindNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dz, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-10*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2*dir3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(3*dir3)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-dir3)]) + 18*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(dir3)]))*p1o12dz*dir3;
+ return (-10*KRANC_GFOFFSET3D(u,0,0,0) - 6*KRANC_GFOFFSET3D(u,0,0,2*dir3) + KRANC_GFOFFSET3D(u,0,0,3*dir3) - 3*KRANC_GFOFFSET3D(u,0,0,-dir3) + 18*KRANC_GFOFFSET3D(u,0,0,dir3))*p1o12dz*dir3;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDonesided1(u) ((-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(dir1)+cdj*(0)+cdk*(0)]))*p1odx*dir1)
+# define PDonesided1(u) ((-KRANC_GFOFFSET3D(u,0,0,0) + KRANC_GFOFFSET3D(u,dir1,0,0))*p1odx*dir1)
#else
# define PDonesided1(u) (PDonesided1_impl(u,p1odx,cdj,cdk,dir1,dir2,dir3))
static CCTK_REAL PDonesided1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1odx, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDonesided1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1odx, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(dir1)+cdj*(0)+cdk*(0)]))*p1odx*dir1;
+ return (-KRANC_GFOFFSET3D(u,0,0,0) + KRANC_GFOFFSET3D(u,dir1,0,0))*p1odx*dir1;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDonesided2(u) ((-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(dir2)+cdk*(0)]))*p1ody*dir2)
+# define PDonesided2(u) ((-KRANC_GFOFFSET3D(u,0,0,0) + KRANC_GFOFFSET3D(u,0,dir2,0))*p1ody*dir2)
#else
# define PDonesided2(u) (PDonesided2_impl(u,p1ody,cdj,cdk,dir1,dir2,dir3))
static CCTK_REAL PDonesided2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1ody, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDonesided2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1ody, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(dir2)+cdk*(0)]))*p1ody*dir2;
+ return (-KRANC_GFOFFSET3D(u,0,0,0) + KRANC_GFOFFSET3D(u,0,dir2,0))*p1ody*dir2;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDonesided3(u) ((-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(dir3)]))*p1odz*dir3)
+# define PDonesided3(u) ((-KRANC_GFOFFSET3D(u,0,0,0) + KRANC_GFOFFSET3D(u,0,0,dir3))*p1odz*dir3)
#else
# define PDonesided3(u) (PDonesided3_impl(u,p1odz,cdj,cdk,dir1,dir2,dir3))
static CCTK_REAL PDonesided3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1odz, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDonesided3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1odz, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(dir3)]))*p1odz*dir3;
+ return (-KRANC_GFOFFSET3D(u,0,0,0) + KRANC_GFOFFSET3D(u,0,0,dir3))*p1odz*dir3;
}
#endif
diff --git a/ML_ADMQuantities/src/ML_ADMQuantities.cc b/ML_ADMQuantities/src/ML_ADMQuantities.cc
index 7f3aa62..af799ea 100644
--- a/ML_ADMQuantities/src/ML_ADMQuantities.cc
+++ b/ML_ADMQuantities/src/ML_ADMQuantities.cc
@@ -36,7 +36,7 @@ extern "C" void ML_ADMQuantities_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_ADMQuantities_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_ADMQuantities_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;
@@ -44,21 +44,6 @@ static void ML_ADMQuantities_Body(cGH const * restrict const cctkGH, int const d
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_ADMQuantities_Body");
- }
-
- if (cctk_iteration % ML_ADMQuantities_calc_every != ML_ADMQuantities_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"grid::coordinates","Grid::coordinates","ML_BSSN::ML_curv","ML_BSSN::ML_Gamma","ML_BSSN::ML_lapse","ML_BSSN::ML_log_confac","ML_BSSN::ML_metric","ML_BSSN::ML_shift","ML_BSSN::ML_trace_curv","ML_ADMQuantities::ML_Jadm","ML_ADMQuantities::ML_Madm"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_ADMQuantities", 11, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "ML_ADMQuantities", 2, 2, 2);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -72,6 +57,7 @@ static void ML_ADMQuantities_Body(cGH const * restrict const cctkGH, int const d
CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL const t = ToReal(cctk_time);
CCTK_REAL const dxi = INV(dx);
CCTK_REAL const dyi = INV(dy);
CCTK_REAL const dzi = INV(dz);
@@ -98,10 +84,18 @@ static void ML_ADMQuantities_Body(cGH const * restrict const cctkGH, int const d
CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ /* 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_LOOP3 (ML_ADMQuantities,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
+ i,j,k, imin[0],imin[1],imin[2], imax[0],imax[1],imax[2],
cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
{
ptrdiff_t const index = di*i + dj*j + dk*k;
@@ -676,5 +670,26 @@ extern "C" void ML_ADMQuantities(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_ADMQuantities_Body");
+ }
+
+ if (cctk_iteration % ML_ADMQuantities_calc_every != ML_ADMQuantities_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"grid::coordinates","Grid::coordinates","ML_BSSN::ML_curv","ML_BSSN::ML_Gamma","ML_BSSN::ML_lapse","ML_BSSN::ML_log_confac","ML_BSSN::ML_metric","ML_BSSN::ML_shift","ML_BSSN::ML_trace_curv","ML_ADMQuantities::ML_Jadm","ML_ADMQuantities::ML_Madm"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_ADMQuantities", 11, groups);
+
+ GenericFD_EnsureStencilFits(cctkGH, "ML_ADMQuantities", 2, 2, 2);
+
GenericFD_LoopOverInterior(cctkGH, &ML_ADMQuantities_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_ADMQuantities_Body");
+ }
}
diff --git a/ML_ADMQuantities/src/RegisterMoL.cc b/ML_ADMQuantities/src/RegisterMoL.cc
index 9a145b1..ef70595 100644
--- a/ML_ADMQuantities/src/RegisterMoL.cc
+++ b/ML_ADMQuantities/src/RegisterMoL.cc
@@ -12,5 +12,7 @@ extern "C" void ML_ADMQuantities_RegisterVars(CCTK_ARGUMENTS)
CCTK_INT ierr = 0;
/* Register all the evolved grid functions with MoL */
+
+ /* Register all the evolved Array functions with MoL */
return;
}
diff --git a/ML_ADMQuantities_MP/param.ccl b/ML_ADMQuantities_MP/param.ccl
index cdcbf9f..62fb349 100644
--- a/ML_ADMQuantities_MP/param.ccl
+++ b/ML_ADMQuantities_MP/param.ccl
@@ -11,6 +11,7 @@ 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
@@ -31,6 +32,12 @@ CCTK_INT ML_ADMQuantities_MP_MaxNumEvolvedVars "Number of evolved variables used
} 0
restricted:
+CCTK_INT ML_ADMQuantities_MP_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 :: ""
diff --git a/ML_ADMQuantities_MP/schedule.ccl b/ML_ADMQuantities_MP/schedule.ccl
index 1a66d54..f764cba 100644
--- a/ML_ADMQuantities_MP/schedule.ccl
+++ b/ML_ADMQuantities_MP/schedule.ccl
@@ -23,7 +23,7 @@ schedule ML_ADMQuantities_MP_RegisterSymmetries in SymmetryRegister
OPTIONS: meta
} "register symmetries"
-schedule group ML_ADMQuantities_MP_group in MoL_PseudoEvolution
+schedule group ML_ADMQuantities_MP_group in MoL_PseudoEvolution after MoL_PostStep
{
# no language specified
} "ML_ADMQuantities_MP"
@@ -51,17 +51,12 @@ schedule group ML_ADMQuantities_MP_bc_group in ML_ADMQuantities_MP_group after M
# no language specified
} "ML_ADMQuantities_MP"
-schedule group ML_ADMQuantities_MP_bc_group at CCTK_POSTRESTRICT
+schedule group ML_ADMQuantities_MP_bc_group in MoL_PseudoEvolutionBoundaries after MoL_PostStep
{
# no language specified
} "ML_ADMQuantities_MP"
-schedule group ML_ADMQuantities_MP_bc_group at CCTK_POSTRESTRICTINITIAL
-{
- # no language specified
-} "ML_ADMQuantities_MP"
-
-schedule ML_ADMQuantities_MP_SelectBoundConds in MoL_PseudoEvolution
+schedule ML_ADMQuantities_MP_SelectBoundConds in MoL_PostStep
{
LANG: C
OPTIONS: level
@@ -73,7 +68,7 @@ schedule ML_ADMQuantities_MP_CheckBoundaries at BASEGRID
OPTIONS: meta
} "check boundaries treatment"
-schedule group ApplyBCs as ML_ADMQuantities_MP_ApplyBCs in MoL_PseudoEvolution after ML_ADMQuantities_MP_SelectBoundConds
+schedule group ApplyBCs as ML_ADMQuantities_MP_ApplyBCs in MoL_PostStep after ML_ADMQuantities_MP_SelectBoundConds
{
# no language specified
} "Apply boundary conditions controlled by thorn Boundary"
diff --git a/ML_ADMQuantities_MP/src/Differencing.h b/ML_ADMQuantities_MP/src/Differencing.h
index 2073bae..ba75ffa 100644
--- a/ML_ADMQuantities_MP/src/Differencing.h
+++ b/ML_ADMQuantities_MP/src/Differencing.h
@@ -1,216 +1,216 @@
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth1(u) ((-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]))*p1o12dx)
+# define PDstandardNth1(u) ((-8*KRANC_GFOFFSET3D(u,-1,0,0) + 8*KRANC_GFOFFSET3D(u,1,0,0) + KRANC_GFOFFSET3D(u,-2,0,0) - KRANC_GFOFFSET3D(u,2,0,0))*p1o12dx)
#else
# define PDstandardNth1(u) (PDstandardNth1_impl(u,p1o12dx,cdj,cdk))
static CCTK_REAL PDstandardNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]))*p1o12dx;
+ return (-8*KRANC_GFOFFSET3D(u,-1,0,0) + 8*KRANC_GFOFFSET3D(u,1,0,0) + KRANC_GFOFFSET3D(u,-2,0,0) - KRANC_GFOFFSET3D(u,2,0,0))*p1o12dx;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth2(u) ((-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]))*p1o12dy)
+# define PDstandardNth2(u) ((-8*KRANC_GFOFFSET3D(u,0,-1,0) + 8*KRANC_GFOFFSET3D(u,0,1,0) + KRANC_GFOFFSET3D(u,0,-2,0) - KRANC_GFOFFSET3D(u,0,2,0))*p1o12dy)
#else
# define PDstandardNth2(u) (PDstandardNth2_impl(u,p1o12dy,cdj,cdk))
static CCTK_REAL PDstandardNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]))*p1o12dy;
+ return (-8*KRANC_GFOFFSET3D(u,0,-1,0) + 8*KRANC_GFOFFSET3D(u,0,1,0) + KRANC_GFOFFSET3D(u,0,-2,0) - KRANC_GFOFFSET3D(u,0,2,0))*p1o12dy;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth3(u) ((-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]))*p1o12dz)
+# define PDstandardNth3(u) ((-8*KRANC_GFOFFSET3D(u,0,0,-1) + 8*KRANC_GFOFFSET3D(u,0,0,1) + KRANC_GFOFFSET3D(u,0,0,-2) - KRANC_GFOFFSET3D(u,0,0,2))*p1o12dz)
#else
# define PDstandardNth3(u) (PDstandardNth3_impl(u,p1o12dz,cdj,cdk))
static CCTK_REAL PDstandardNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]))*p1o12dz;
+ return (-8*KRANC_GFOFFSET3D(u,0,0,-1) + 8*KRANC_GFOFFSET3D(u,0,0,1) + KRANC_GFOFFSET3D(u,0,0,-2) - KRANC_GFOFFSET3D(u,0,0,2))*p1o12dz;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth11(u) ((30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]))*pm1o12dx2)
+# define PDstandardNth11(u) ((30*KRANC_GFOFFSET3D(u,0,0,0) - 16*(KRANC_GFOFFSET3D(u,-1,0,0) + KRANC_GFOFFSET3D(u,1,0,0)) + KRANC_GFOFFSET3D(u,-2,0,0) + KRANC_GFOFFSET3D(u,2,0,0))*pm1o12dx2)
#else
# define PDstandardNth11(u) (PDstandardNth11_impl(u,pm1o12dx2,cdj,cdk))
static CCTK_REAL PDstandardNth11_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dx2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth11_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dx2, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]))*pm1o12dx2;
+ return (30*KRANC_GFOFFSET3D(u,0,0,0) - 16*(KRANC_GFOFFSET3D(u,-1,0,0) + KRANC_GFOFFSET3D(u,1,0,0)) + KRANC_GFOFFSET3D(u,-2,0,0) + KRANC_GFOFFSET3D(u,2,0,0))*pm1o12dx2;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth22(u) ((30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]))*pm1o12dy2)
+# define PDstandardNth22(u) ((30*KRANC_GFOFFSET3D(u,0,0,0) - 16*(KRANC_GFOFFSET3D(u,0,-1,0) + KRANC_GFOFFSET3D(u,0,1,0)) + KRANC_GFOFFSET3D(u,0,-2,0) + KRANC_GFOFFSET3D(u,0,2,0))*pm1o12dy2)
#else
# define PDstandardNth22(u) (PDstandardNth22_impl(u,pm1o12dy2,cdj,cdk))
static CCTK_REAL PDstandardNth22_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dy2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth22_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dy2, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]))*pm1o12dy2;
+ return (30*KRANC_GFOFFSET3D(u,0,0,0) - 16*(KRANC_GFOFFSET3D(u,0,-1,0) + KRANC_GFOFFSET3D(u,0,1,0)) + KRANC_GFOFFSET3D(u,0,-2,0) + KRANC_GFOFFSET3D(u,0,2,0))*pm1o12dy2;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth33(u) ((30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]))*pm1o12dz2)
+# define PDstandardNth33(u) ((30*KRANC_GFOFFSET3D(u,0,0,0) - 16*(KRANC_GFOFFSET3D(u,0,0,-1) + KRANC_GFOFFSET3D(u,0,0,1)) + KRANC_GFOFFSET3D(u,0,0,-2) + KRANC_GFOFFSET3D(u,0,0,2))*pm1o12dz2)
#else
# define PDstandardNth33(u) (PDstandardNth33_impl(u,pm1o12dz2,cdj,cdk))
static CCTK_REAL PDstandardNth33_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dz2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth33_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dz2, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]))*pm1o12dz2;
+ return (30*KRANC_GFOFFSET3D(u,0,0,0) - 16*(KRANC_GFOFFSET3D(u,0,0,-1) + KRANC_GFOFFSET3D(u,0,0,1)) + KRANC_GFOFFSET3D(u,0,0,-2) + KRANC_GFOFFSET3D(u,0,0,2))*pm1o12dz2;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth12(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-1)+cdk*(0)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(2)+cdk*(0)]))*p1o144dxdy)
+# define PDstandardNth12(u) ((-64*(KRANC_GFOFFSET3D(u,-1,1,0) + KRANC_GFOFFSET3D(u,1,-1,0)) + 64*(KRANC_GFOFFSET3D(u,-1,-1,0) + KRANC_GFOFFSET3D(u,1,1,0)) + 8*(KRANC_GFOFFSET3D(u,-1,2,0) + KRANC_GFOFFSET3D(u,1,-2,0) + KRANC_GFOFFSET3D(u,-2,1,0) + KRANC_GFOFFSET3D(u,2,-1,0)) - 8*(KRANC_GFOFFSET3D(u,-1,-2,0) + KRANC_GFOFFSET3D(u,1,2,0) + KRANC_GFOFFSET3D(u,-2,-1,0) + KRANC_GFOFFSET3D(u,2,1,0)) + KRANC_GFOFFSET3D(u,-2,-2,0) - KRANC_GFOFFSET3D(u,-2,2,0) - KRANC_GFOFFSET3D(u,2,-2,0) + KRANC_GFOFFSET3D(u,2,2,0))*p1o144dxdy)
#else
# define PDstandardNth12(u) (PDstandardNth12_impl(u,p1o144dxdy,cdj,cdk))
static CCTK_REAL PDstandardNth12_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth12_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-1)+cdk*(0)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(2)+cdk*(0)]))*p1o144dxdy;
+ return (-64*(KRANC_GFOFFSET3D(u,-1,1,0) + KRANC_GFOFFSET3D(u,1,-1,0)) + 64*(KRANC_GFOFFSET3D(u,-1,-1,0) + KRANC_GFOFFSET3D(u,1,1,0)) + 8*(KRANC_GFOFFSET3D(u,-1,2,0) + KRANC_GFOFFSET3D(u,1,-2,0) + KRANC_GFOFFSET3D(u,-2,1,0) + KRANC_GFOFFSET3D(u,2,-1,0)) - 8*(KRANC_GFOFFSET3D(u,-1,-2,0) + KRANC_GFOFFSET3D(u,1,2,0) + KRANC_GFOFFSET3D(u,-2,-1,0) + KRANC_GFOFFSET3D(u,2,1,0)) + KRANC_GFOFFSET3D(u,-2,-2,0) - KRANC_GFOFFSET3D(u,-2,2,0) - KRANC_GFOFFSET3D(u,2,-2,0) + KRANC_GFOFFSET3D(u,2,2,0))*p1o144dxdy;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth13(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(2)]))*p1o144dxdz)
+# define PDstandardNth13(u) ((-64*(KRANC_GFOFFSET3D(u,-1,0,1) + KRANC_GFOFFSET3D(u,1,0,-1)) + 64*(KRANC_GFOFFSET3D(u,-1,0,-1) + KRANC_GFOFFSET3D(u,1,0,1)) + 8*(KRANC_GFOFFSET3D(u,-1,0,2) + KRANC_GFOFFSET3D(u,1,0,-2) + KRANC_GFOFFSET3D(u,-2,0,1) + KRANC_GFOFFSET3D(u,2,0,-1)) - 8*(KRANC_GFOFFSET3D(u,-1,0,-2) + KRANC_GFOFFSET3D(u,1,0,2) + KRANC_GFOFFSET3D(u,-2,0,-1) + KRANC_GFOFFSET3D(u,2,0,1)) + KRANC_GFOFFSET3D(u,-2,0,-2) - KRANC_GFOFFSET3D(u,-2,0,2) - KRANC_GFOFFSET3D(u,2,0,-2) + KRANC_GFOFFSET3D(u,2,0,2))*p1o144dxdz)
#else
# define PDstandardNth13(u) (PDstandardNth13_impl(u,p1o144dxdz,cdj,cdk))
static CCTK_REAL PDstandardNth13_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth13_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(2)]))*p1o144dxdz;
+ return (-64*(KRANC_GFOFFSET3D(u,-1,0,1) + KRANC_GFOFFSET3D(u,1,0,-1)) + 64*(KRANC_GFOFFSET3D(u,-1,0,-1) + KRANC_GFOFFSET3D(u,1,0,1)) + 8*(KRANC_GFOFFSET3D(u,-1,0,2) + KRANC_GFOFFSET3D(u,1,0,-2) + KRANC_GFOFFSET3D(u,-2,0,1) + KRANC_GFOFFSET3D(u,2,0,-1)) - 8*(KRANC_GFOFFSET3D(u,-1,0,-2) + KRANC_GFOFFSET3D(u,1,0,2) + KRANC_GFOFFSET3D(u,-2,0,-1) + KRANC_GFOFFSET3D(u,2,0,1)) + KRANC_GFOFFSET3D(u,-2,0,-2) - KRANC_GFOFFSET3D(u,-2,0,2) - KRANC_GFOFFSET3D(u,2,0,-2) + KRANC_GFOFFSET3D(u,2,0,2))*p1o144dxdz;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth21(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-1)+cdk*(0)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(2)+cdk*(0)]))*p1o144dxdy)
+# define PDstandardNth21(u) ((-64*(KRANC_GFOFFSET3D(u,-1,1,0) + KRANC_GFOFFSET3D(u,1,-1,0)) + 64*(KRANC_GFOFFSET3D(u,-1,-1,0) + KRANC_GFOFFSET3D(u,1,1,0)) + 8*(KRANC_GFOFFSET3D(u,-1,2,0) + KRANC_GFOFFSET3D(u,1,-2,0) + KRANC_GFOFFSET3D(u,-2,1,0) + KRANC_GFOFFSET3D(u,2,-1,0)) - 8*(KRANC_GFOFFSET3D(u,-1,-2,0) + KRANC_GFOFFSET3D(u,1,2,0) + KRANC_GFOFFSET3D(u,-2,-1,0) + KRANC_GFOFFSET3D(u,2,1,0)) + KRANC_GFOFFSET3D(u,-2,-2,0) - KRANC_GFOFFSET3D(u,-2,2,0) - KRANC_GFOFFSET3D(u,2,-2,0) + KRANC_GFOFFSET3D(u,2,2,0))*p1o144dxdy)
#else
# define PDstandardNth21(u) (PDstandardNth21_impl(u,p1o144dxdy,cdj,cdk))
static CCTK_REAL PDstandardNth21_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth21_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-1)+cdk*(0)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(2)+cdk*(0)]))*p1o144dxdy;
+ return (-64*(KRANC_GFOFFSET3D(u,-1,1,0) + KRANC_GFOFFSET3D(u,1,-1,0)) + 64*(KRANC_GFOFFSET3D(u,-1,-1,0) + KRANC_GFOFFSET3D(u,1,1,0)) + 8*(KRANC_GFOFFSET3D(u,-1,2,0) + KRANC_GFOFFSET3D(u,1,-2,0) + KRANC_GFOFFSET3D(u,-2,1,0) + KRANC_GFOFFSET3D(u,2,-1,0)) - 8*(KRANC_GFOFFSET3D(u,-1,-2,0) + KRANC_GFOFFSET3D(u,1,2,0) + KRANC_GFOFFSET3D(u,-2,-1,0) + KRANC_GFOFFSET3D(u,2,1,0)) + KRANC_GFOFFSET3D(u,-2,-2,0) - KRANC_GFOFFSET3D(u,-2,2,0) - KRANC_GFOFFSET3D(u,2,-2,0) + KRANC_GFOFFSET3D(u,2,2,0))*p1o144dxdy;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth23(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(2)]))*p1o144dydz)
+# define PDstandardNth23(u) ((-64*(KRANC_GFOFFSET3D(u,0,-1,1) + KRANC_GFOFFSET3D(u,0,1,-1)) + 64*(KRANC_GFOFFSET3D(u,0,-1,-1) + KRANC_GFOFFSET3D(u,0,1,1)) + 8*(KRANC_GFOFFSET3D(u,0,-1,2) + KRANC_GFOFFSET3D(u,0,1,-2) + KRANC_GFOFFSET3D(u,0,-2,1) + KRANC_GFOFFSET3D(u,0,2,-1)) - 8*(KRANC_GFOFFSET3D(u,0,-1,-2) + KRANC_GFOFFSET3D(u,0,1,2) + KRANC_GFOFFSET3D(u,0,-2,-1) + KRANC_GFOFFSET3D(u,0,2,1)) + KRANC_GFOFFSET3D(u,0,-2,-2) - KRANC_GFOFFSET3D(u,0,-2,2) - KRANC_GFOFFSET3D(u,0,2,-2) + KRANC_GFOFFSET3D(u,0,2,2))*p1o144dydz)
#else
# define PDstandardNth23(u) (PDstandardNth23_impl(u,p1o144dydz,cdj,cdk))
static CCTK_REAL PDstandardNth23_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dydz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth23_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dydz, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(2)]))*p1o144dydz;
+ return (-64*(KRANC_GFOFFSET3D(u,0,-1,1) + KRANC_GFOFFSET3D(u,0,1,-1)) + 64*(KRANC_GFOFFSET3D(u,0,-1,-1) + KRANC_GFOFFSET3D(u,0,1,1)) + 8*(KRANC_GFOFFSET3D(u,0,-1,2) + KRANC_GFOFFSET3D(u,0,1,-2) + KRANC_GFOFFSET3D(u,0,-2,1) + KRANC_GFOFFSET3D(u,0,2,-1)) - 8*(KRANC_GFOFFSET3D(u,0,-1,-2) + KRANC_GFOFFSET3D(u,0,1,2) + KRANC_GFOFFSET3D(u,0,-2,-1) + KRANC_GFOFFSET3D(u,0,2,1)) + KRANC_GFOFFSET3D(u,0,-2,-2) - KRANC_GFOFFSET3D(u,0,-2,2) - KRANC_GFOFFSET3D(u,0,2,-2) + KRANC_GFOFFSET3D(u,0,2,2))*p1o144dydz;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth31(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(2)]))*p1o144dxdz)
+# define PDstandardNth31(u) ((-64*(KRANC_GFOFFSET3D(u,-1,0,1) + KRANC_GFOFFSET3D(u,1,0,-1)) + 64*(KRANC_GFOFFSET3D(u,-1,0,-1) + KRANC_GFOFFSET3D(u,1,0,1)) + 8*(KRANC_GFOFFSET3D(u,-1,0,2) + KRANC_GFOFFSET3D(u,1,0,-2) + KRANC_GFOFFSET3D(u,-2,0,1) + KRANC_GFOFFSET3D(u,2,0,-1)) - 8*(KRANC_GFOFFSET3D(u,-1,0,-2) + KRANC_GFOFFSET3D(u,1,0,2) + KRANC_GFOFFSET3D(u,-2,0,-1) + KRANC_GFOFFSET3D(u,2,0,1)) + KRANC_GFOFFSET3D(u,-2,0,-2) - KRANC_GFOFFSET3D(u,-2,0,2) - KRANC_GFOFFSET3D(u,2,0,-2) + KRANC_GFOFFSET3D(u,2,0,2))*p1o144dxdz)
#else
# define PDstandardNth31(u) (PDstandardNth31_impl(u,p1o144dxdz,cdj,cdk))
static CCTK_REAL PDstandardNth31_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth31_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(2)]))*p1o144dxdz;
+ return (-64*(KRANC_GFOFFSET3D(u,-1,0,1) + KRANC_GFOFFSET3D(u,1,0,-1)) + 64*(KRANC_GFOFFSET3D(u,-1,0,-1) + KRANC_GFOFFSET3D(u,1,0,1)) + 8*(KRANC_GFOFFSET3D(u,-1,0,2) + KRANC_GFOFFSET3D(u,1,0,-2) + KRANC_GFOFFSET3D(u,-2,0,1) + KRANC_GFOFFSET3D(u,2,0,-1)) - 8*(KRANC_GFOFFSET3D(u,-1,0,-2) + KRANC_GFOFFSET3D(u,1,0,2) + KRANC_GFOFFSET3D(u,-2,0,-1) + KRANC_GFOFFSET3D(u,2,0,1)) + KRANC_GFOFFSET3D(u,-2,0,-2) - KRANC_GFOFFSET3D(u,-2,0,2) - KRANC_GFOFFSET3D(u,2,0,-2) + KRANC_GFOFFSET3D(u,2,0,2))*p1o144dxdz;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth32(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(2)]))*p1o144dydz)
+# define PDstandardNth32(u) ((-64*(KRANC_GFOFFSET3D(u,0,-1,1) + KRANC_GFOFFSET3D(u,0,1,-1)) + 64*(KRANC_GFOFFSET3D(u,0,-1,-1) + KRANC_GFOFFSET3D(u,0,1,1)) + 8*(KRANC_GFOFFSET3D(u,0,-1,2) + KRANC_GFOFFSET3D(u,0,1,-2) + KRANC_GFOFFSET3D(u,0,-2,1) + KRANC_GFOFFSET3D(u,0,2,-1)) - 8*(KRANC_GFOFFSET3D(u,0,-1,-2) + KRANC_GFOFFSET3D(u,0,1,2) + KRANC_GFOFFSET3D(u,0,-2,-1) + KRANC_GFOFFSET3D(u,0,2,1)) + KRANC_GFOFFSET3D(u,0,-2,-2) - KRANC_GFOFFSET3D(u,0,-2,2) - KRANC_GFOFFSET3D(u,0,2,-2) + KRANC_GFOFFSET3D(u,0,2,2))*p1o144dydz)
#else
# define PDstandardNth32(u) (PDstandardNth32_impl(u,p1o144dydz,cdj,cdk))
static CCTK_REAL PDstandardNth32_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dydz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth32_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dydz, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(2)]))*p1o144dydz;
+ return (-64*(KRANC_GFOFFSET3D(u,0,-1,1) + KRANC_GFOFFSET3D(u,0,1,-1)) + 64*(KRANC_GFOFFSET3D(u,0,-1,-1) + KRANC_GFOFFSET3D(u,0,1,1)) + 8*(KRANC_GFOFFSET3D(u,0,-1,2) + KRANC_GFOFFSET3D(u,0,1,-2) + KRANC_GFOFFSET3D(u,0,-2,1) + KRANC_GFOFFSET3D(u,0,2,-1)) - 8*(KRANC_GFOFFSET3D(u,0,-1,-2) + KRANC_GFOFFSET3D(u,0,1,2) + KRANC_GFOFFSET3D(u,0,-2,-1) + KRANC_GFOFFSET3D(u,0,2,1)) + KRANC_GFOFFSET3D(u,0,-2,-2) - KRANC_GFOFFSET3D(u,0,-2,2) - KRANC_GFOFFSET3D(u,0,2,-2) + KRANC_GFOFFSET3D(u,0,2,2))*p1o144dydz;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDupwindNth1(u) ((-10*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(2*dir1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3*dir1)+cdj*(0)+cdk*(0)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-dir1)+cdj*(0)+cdk*(0)]) + 18*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(dir1)+cdj*(0)+cdk*(0)]))*p1o12dx*dir1)
+# define PDupwindNth1(u) ((-10*KRANC_GFOFFSET3D(u,0,0,0) - 6*KRANC_GFOFFSET3D(u,2*dir1,0,0) + KRANC_GFOFFSET3D(u,3*dir1,0,0) - 3*KRANC_GFOFFSET3D(u,-dir1,0,0) + 18*KRANC_GFOFFSET3D(u,dir1,0,0))*p1o12dx*dir1)
#else
# define PDupwindNth1(u) (PDupwindNth1_impl(u,p1o12dx,cdj,cdk,dir1,dir2,dir3))
static CCTK_REAL PDupwindNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dx, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDupwindNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dx, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-10*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(2*dir1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3*dir1)+cdj*(0)+cdk*(0)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-dir1)+cdj*(0)+cdk*(0)]) + 18*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(dir1)+cdj*(0)+cdk*(0)]))*p1o12dx*dir1;
+ return (-10*KRANC_GFOFFSET3D(u,0,0,0) - 6*KRANC_GFOFFSET3D(u,2*dir1,0,0) + KRANC_GFOFFSET3D(u,3*dir1,0,0) - 3*KRANC_GFOFFSET3D(u,-dir1,0,0) + 18*KRANC_GFOFFSET3D(u,dir1,0,0))*p1o12dx*dir1;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDupwindNth2(u) ((-10*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2*dir2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3*dir2)+cdk*(0)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-dir2)+cdk*(0)]) + 18*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(dir2)+cdk*(0)]))*p1o12dy*dir2)
+# define PDupwindNth2(u) ((-10*KRANC_GFOFFSET3D(u,0,0,0) - 6*KRANC_GFOFFSET3D(u,0,2*dir2,0) + KRANC_GFOFFSET3D(u,0,3*dir2,0) - 3*KRANC_GFOFFSET3D(u,0,-dir2,0) + 18*KRANC_GFOFFSET3D(u,0,dir2,0))*p1o12dy*dir2)
#else
# define PDupwindNth2(u) (PDupwindNth2_impl(u,p1o12dy,cdj,cdk,dir1,dir2,dir3))
static CCTK_REAL PDupwindNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dy, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDupwindNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dy, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-10*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2*dir2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3*dir2)+cdk*(0)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-dir2)+cdk*(0)]) + 18*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(dir2)+cdk*(0)]))*p1o12dy*dir2;
+ return (-10*KRANC_GFOFFSET3D(u,0,0,0) - 6*KRANC_GFOFFSET3D(u,0,2*dir2,0) + KRANC_GFOFFSET3D(u,0,3*dir2,0) - 3*KRANC_GFOFFSET3D(u,0,-dir2,0) + 18*KRANC_GFOFFSET3D(u,0,dir2,0))*p1o12dy*dir2;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDupwindNth3(u) ((-10*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2*dir3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(3*dir3)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-dir3)]) + 18*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(dir3)]))*p1o12dz*dir3)
+# define PDupwindNth3(u) ((-10*KRANC_GFOFFSET3D(u,0,0,0) - 6*KRANC_GFOFFSET3D(u,0,0,2*dir3) + KRANC_GFOFFSET3D(u,0,0,3*dir3) - 3*KRANC_GFOFFSET3D(u,0,0,-dir3) + 18*KRANC_GFOFFSET3D(u,0,0,dir3))*p1o12dz*dir3)
#else
# define PDupwindNth3(u) (PDupwindNth3_impl(u,p1o12dz,cdj,cdk,dir1,dir2,dir3))
static CCTK_REAL PDupwindNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dz, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDupwindNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dz, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-10*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2*dir3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(3*dir3)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-dir3)]) + 18*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(dir3)]))*p1o12dz*dir3;
+ return (-10*KRANC_GFOFFSET3D(u,0,0,0) - 6*KRANC_GFOFFSET3D(u,0,0,2*dir3) + KRANC_GFOFFSET3D(u,0,0,3*dir3) - 3*KRANC_GFOFFSET3D(u,0,0,-dir3) + 18*KRANC_GFOFFSET3D(u,0,0,dir3))*p1o12dz*dir3;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDonesided1(u) ((-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(dir1)+cdj*(0)+cdk*(0)]))*p1odx*dir1)
+# define PDonesided1(u) ((-KRANC_GFOFFSET3D(u,0,0,0) + KRANC_GFOFFSET3D(u,dir1,0,0))*p1odx*dir1)
#else
# define PDonesided1(u) (PDonesided1_impl(u,p1odx,cdj,cdk,dir1,dir2,dir3))
static CCTK_REAL PDonesided1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1odx, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDonesided1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1odx, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(dir1)+cdj*(0)+cdk*(0)]))*p1odx*dir1;
+ return (-KRANC_GFOFFSET3D(u,0,0,0) + KRANC_GFOFFSET3D(u,dir1,0,0))*p1odx*dir1;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDonesided2(u) ((-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(dir2)+cdk*(0)]))*p1ody*dir2)
+# define PDonesided2(u) ((-KRANC_GFOFFSET3D(u,0,0,0) + KRANC_GFOFFSET3D(u,0,dir2,0))*p1ody*dir2)
#else
# define PDonesided2(u) (PDonesided2_impl(u,p1ody,cdj,cdk,dir1,dir2,dir3))
static CCTK_REAL PDonesided2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1ody, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDonesided2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1ody, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(dir2)+cdk*(0)]))*p1ody*dir2;
+ return (-KRANC_GFOFFSET3D(u,0,0,0) + KRANC_GFOFFSET3D(u,0,dir2,0))*p1ody*dir2;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDonesided3(u) ((-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(dir3)]))*p1odz*dir3)
+# define PDonesided3(u) ((-KRANC_GFOFFSET3D(u,0,0,0) + KRANC_GFOFFSET3D(u,0,0,dir3))*p1odz*dir3)
#else
# define PDonesided3(u) (PDonesided3_impl(u,p1odz,cdj,cdk,dir1,dir2,dir3))
static CCTK_REAL PDonesided3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1odz, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDonesided3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1odz, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(dir3)]))*p1odz*dir3;
+ return (-KRANC_GFOFFSET3D(u,0,0,0) + KRANC_GFOFFSET3D(u,0,0,dir3))*p1odz*dir3;
}
#endif
diff --git a/ML_ADMQuantities_MP/src/ML_ADMQuantities_MP.cc b/ML_ADMQuantities_MP/src/ML_ADMQuantities_MP.cc
index bbe04b9..7ae000d 100644
--- a/ML_ADMQuantities_MP/src/ML_ADMQuantities_MP.cc
+++ b/ML_ADMQuantities_MP/src/ML_ADMQuantities_MP.cc
@@ -36,7 +36,7 @@ extern "C" void ML_ADMQuantities_MP_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_ADMQuantities_MP_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_ADMQuantities_MP_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;
@@ -44,21 +44,6 @@ static void ML_ADMQuantities_MP_Body(cGH const * restrict const cctkGH, int cons
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_ADMQuantities_MP_Body");
- }
-
- if (cctk_iteration % ML_ADMQuantities_MP_calc_every != ML_ADMQuantities_MP_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"grid::coordinates","Grid::coordinates","ML_BSSN::ML_curv","ML_BSSN::ML_Gamma","ML_BSSN::ML_lapse","ML_BSSN::ML_log_confac","ML_BSSN::ML_metric","ML_BSSN::ML_shift","ML_BSSN::ML_trace_curv","ML_ADMQuantities_MP::ML_Jadm","ML_ADMQuantities_MP::ML_Madm"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_ADMQuantities_MP", 11, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "ML_ADMQuantities_MP", 2, 2, 2);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -72,6 +57,7 @@ static void ML_ADMQuantities_MP_Body(cGH const * restrict const cctkGH, int cons
CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL const t = ToReal(cctk_time);
CCTK_REAL const dxi = INV(dx);
CCTK_REAL const dyi = INV(dy);
CCTK_REAL const dzi = INV(dz);
@@ -143,10 +129,18 @@ static void ML_ADMQuantities_MP_Body(cGH const * restrict const cctkGH, int cons
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_LOOP3 (ML_ADMQuantities_MP,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
+ i,j,k, imin[0],imin[1],imin[2], imax[0],imax[1],imax[2],
cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
{
ptrdiff_t const index = di*i + dj*j + dk*k;
@@ -1506,5 +1500,26 @@ extern "C" void ML_ADMQuantities_MP(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_ADMQuantities_MP_Body");
+ }
+
+ if (cctk_iteration % ML_ADMQuantities_MP_calc_every != ML_ADMQuantities_MP_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"grid::coordinates","Grid::coordinates","ML_BSSN::ML_curv","ML_BSSN::ML_Gamma","ML_BSSN::ML_lapse","ML_BSSN::ML_log_confac","ML_BSSN::ML_metric","ML_BSSN::ML_shift","ML_BSSN::ML_trace_curv","ML_ADMQuantities_MP::ML_Jadm","ML_ADMQuantities_MP::ML_Madm"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_ADMQuantities_MP", 11, groups);
+
+ GenericFD_EnsureStencilFits(cctkGH, "ML_ADMQuantities_MP", 2, 2, 2);
+
GenericFD_LoopOverInterior(cctkGH, &ML_ADMQuantities_MP_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_ADMQuantities_MP_Body");
+ }
}
diff --git a/ML_ADMQuantities_MP/src/RegisterMoL.cc b/ML_ADMQuantities_MP/src/RegisterMoL.cc
index 0a2771a..b6ae448 100644
--- a/ML_ADMQuantities_MP/src/RegisterMoL.cc
+++ b/ML_ADMQuantities_MP/src/RegisterMoL.cc
@@ -12,5 +12,7 @@ extern "C" void ML_ADMQuantities_MP_RegisterVars(CCTK_ARGUMENTS)
CCTK_INT ierr = 0;
/* Register all the evolved grid functions with MoL */
+
+ /* Register all the evolved Array functions with MoL */
return;
}
diff --git a/ML_ADMQuantities_O2/param.ccl b/ML_ADMQuantities_O2/param.ccl
index 62595cd..063c99c 100644
--- a/ML_ADMQuantities_O2/param.ccl
+++ b/ML_ADMQuantities_O2/param.ccl
@@ -8,6 +8,7 @@ shares: GenericFD
shares: MethodOfLines
USES CCTK_INT MoL_Num_Evolved_Vars
+USES CCTK_INT MoL_Num_ArrayEvolved_Vars
restricted:
CCTK_INT verbose "verbose" STEERABLE=ALWAYS
@@ -28,6 +29,12 @@ CCTK_INT ML_ADMQuantities_O2_MaxNumEvolvedVars "Number of evolved variables used
} 0
restricted:
+CCTK_INT ML_ADMQuantities_O2_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 :: ""
diff --git a/ML_ADMQuantities_O2/schedule.ccl b/ML_ADMQuantities_O2/schedule.ccl
index 449cc06..fe37d31 100644
--- a/ML_ADMQuantities_O2/schedule.ccl
+++ b/ML_ADMQuantities_O2/schedule.ccl
@@ -23,7 +23,7 @@ schedule ML_ADMQuantities_O2_RegisterSymmetries in SymmetryRegister
OPTIONS: meta
} "register symmetries"
-schedule group ML_ADMQuantities_O2_group in MoL_PseudoEvolution
+schedule group ML_ADMQuantities_O2_group in MoL_PseudoEvolution after MoL_PostStep
{
# no language specified
} "ML_ADMQuantities_O2"
@@ -51,17 +51,12 @@ schedule group ML_ADMQuantities_O2_bc_group in ML_ADMQuantities_O2_group after M
# no language specified
} "ML_ADMQuantities_O2"
-schedule group ML_ADMQuantities_O2_bc_group at CCTK_POSTRESTRICT
+schedule group ML_ADMQuantities_O2_bc_group in MoL_PseudoEvolutionBoundaries after MoL_PostStep
{
# no language specified
} "ML_ADMQuantities_O2"
-schedule group ML_ADMQuantities_O2_bc_group at CCTK_POSTRESTRICTINITIAL
-{
- # no language specified
-} "ML_ADMQuantities_O2"
-
-schedule ML_ADMQuantities_O2_SelectBoundConds in MoL_PseudoEvolution
+schedule ML_ADMQuantities_O2_SelectBoundConds in MoL_PostStep
{
LANG: C
OPTIONS: level
@@ -73,7 +68,7 @@ schedule ML_ADMQuantities_O2_CheckBoundaries at BASEGRID
OPTIONS: meta
} "check boundaries treatment"
-schedule group ApplyBCs as ML_ADMQuantities_O2_ApplyBCs in MoL_PseudoEvolution after ML_ADMQuantities_O2_SelectBoundConds
+schedule group ApplyBCs as ML_ADMQuantities_O2_ApplyBCs in MoL_PostStep after ML_ADMQuantities_O2_SelectBoundConds
{
# no language specified
} "Apply boundary conditions controlled by thorn Boundary"
diff --git a/ML_ADMQuantities_O2/src/Differencing.h b/ML_ADMQuantities_O2/src/Differencing.h
index aa40fc5..b5f4be2 100644
--- a/ML_ADMQuantities_O2/src/Differencing.h
+++ b/ML_ADMQuantities_O2/src/Differencing.h
@@ -1,216 +1,216 @@
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth1(u) ((-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)]))*p1o2dx)
+# define PDstandardNth1(u) ((-KRANC_GFOFFSET3D(u,-1,0,0) + KRANC_GFOFFSET3D(u,1,0,0))*p1o2dx)
#else
# define PDstandardNth1(u) (PDstandardNth1_impl(u,p1o2dx,cdj,cdk))
static CCTK_REAL PDstandardNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o2dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o2dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)]))*p1o2dx;
+ return (-KRANC_GFOFFSET3D(u,-1,0,0) + KRANC_GFOFFSET3D(u,1,0,0))*p1o2dx;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth2(u) ((-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)]))*p1o2dy)
+# define PDstandardNth2(u) ((-KRANC_GFOFFSET3D(u,0,-1,0) + KRANC_GFOFFSET3D(u,0,1,0))*p1o2dy)
#else
# define PDstandardNth2(u) (PDstandardNth2_impl(u,p1o2dy,cdj,cdk))
static CCTK_REAL PDstandardNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o2dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o2dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)]))*p1o2dy;
+ return (-KRANC_GFOFFSET3D(u,0,-1,0) + KRANC_GFOFFSET3D(u,0,1,0))*p1o2dy;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth3(u) ((-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)]))*p1o2dz)
+# define PDstandardNth3(u) ((-KRANC_GFOFFSET3D(u,0,0,-1) + KRANC_GFOFFSET3D(u,0,0,1))*p1o2dz)
#else
# define PDstandardNth3(u) (PDstandardNth3_impl(u,p1o2dz,cdj,cdk))
static CCTK_REAL PDstandardNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o2dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o2dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)]))*p1o2dz;
+ return (-KRANC_GFOFFSET3D(u,0,0,-1) + KRANC_GFOFFSET3D(u,0,0,1))*p1o2dz;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth11(u) ((-2*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)]))*p1odx2)
+# define PDstandardNth11(u) ((-2*KRANC_GFOFFSET3D(u,0,0,0) + KRANC_GFOFFSET3D(u,-1,0,0) + KRANC_GFOFFSET3D(u,1,0,0))*p1odx2)
#else
# define PDstandardNth11(u) (PDstandardNth11_impl(u,p1odx2,cdj,cdk))
static CCTK_REAL PDstandardNth11_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1odx2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth11_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1odx2, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-2*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)]))*p1odx2;
+ return (-2*KRANC_GFOFFSET3D(u,0,0,0) + KRANC_GFOFFSET3D(u,-1,0,0) + KRANC_GFOFFSET3D(u,1,0,0))*p1odx2;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth22(u) ((-2*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)]))*p1ody2)
+# define PDstandardNth22(u) ((-2*KRANC_GFOFFSET3D(u,0,0,0) + KRANC_GFOFFSET3D(u,0,-1,0) + KRANC_GFOFFSET3D(u,0,1,0))*p1ody2)
#else
# define PDstandardNth22(u) (PDstandardNth22_impl(u,p1ody2,cdj,cdk))
static CCTK_REAL PDstandardNth22_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1ody2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth22_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1ody2, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-2*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)]))*p1ody2;
+ return (-2*KRANC_GFOFFSET3D(u,0,0,0) + KRANC_GFOFFSET3D(u,0,-1,0) + KRANC_GFOFFSET3D(u,0,1,0))*p1ody2;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth33(u) ((-2*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)]))*p1odz2)
+# define PDstandardNth33(u) ((-2*KRANC_GFOFFSET3D(u,0,0,0) + KRANC_GFOFFSET3D(u,0,0,-1) + KRANC_GFOFFSET3D(u,0,0,1))*p1odz2)
#else
# define PDstandardNth33(u) (PDstandardNth33_impl(u,p1odz2,cdj,cdk))
static CCTK_REAL PDstandardNth33_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1odz2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth33_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1odz2, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-2*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)]))*p1odz2;
+ return (-2*KRANC_GFOFFSET3D(u,0,0,0) + KRANC_GFOFFSET3D(u,0,0,-1) + KRANC_GFOFFSET3D(u,0,0,1))*p1odz2;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth12(u) (((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)]))*p1o4dxdy)
+# define PDstandardNth12(u) ((KRANC_GFOFFSET3D(u,-1,-1,0) - KRANC_GFOFFSET3D(u,-1,1,0) - KRANC_GFOFFSET3D(u,1,-1,0) + KRANC_GFOFFSET3D(u,1,1,0))*p1o4dxdy)
#else
# define PDstandardNth12(u) (PDstandardNth12_impl(u,p1o4dxdy,cdj,cdk))
static CCTK_REAL PDstandardNth12_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o4dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth12_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o4dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return ((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)]))*p1o4dxdy;
+ return (KRANC_GFOFFSET3D(u,-1,-1,0) - KRANC_GFOFFSET3D(u,-1,1,0) - KRANC_GFOFFSET3D(u,1,-1,0) + KRANC_GFOFFSET3D(u,1,1,0))*p1o4dxdy;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth13(u) (((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)]))*p1o4dxdz)
+# define PDstandardNth13(u) ((KRANC_GFOFFSET3D(u,-1,0,-1) - KRANC_GFOFFSET3D(u,-1,0,1) - KRANC_GFOFFSET3D(u,1,0,-1) + KRANC_GFOFFSET3D(u,1,0,1))*p1o4dxdz)
#else
# define PDstandardNth13(u) (PDstandardNth13_impl(u,p1o4dxdz,cdj,cdk))
static CCTK_REAL PDstandardNth13_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o4dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth13_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o4dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return ((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)]))*p1o4dxdz;
+ return (KRANC_GFOFFSET3D(u,-1,0,-1) - KRANC_GFOFFSET3D(u,-1,0,1) - KRANC_GFOFFSET3D(u,1,0,-1) + KRANC_GFOFFSET3D(u,1,0,1))*p1o4dxdz;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth21(u) (((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)]))*p1o4dxdy)
+# define PDstandardNth21(u) ((KRANC_GFOFFSET3D(u,-1,-1,0) - KRANC_GFOFFSET3D(u,-1,1,0) - KRANC_GFOFFSET3D(u,1,-1,0) + KRANC_GFOFFSET3D(u,1,1,0))*p1o4dxdy)
#else
# define PDstandardNth21(u) (PDstandardNth21_impl(u,p1o4dxdy,cdj,cdk))
static CCTK_REAL PDstandardNth21_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o4dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth21_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o4dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return ((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)]))*p1o4dxdy;
+ return (KRANC_GFOFFSET3D(u,-1,-1,0) - KRANC_GFOFFSET3D(u,-1,1,0) - KRANC_GFOFFSET3D(u,1,-1,0) + KRANC_GFOFFSET3D(u,1,1,0))*p1o4dxdy;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth23(u) (((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)]))*p1o4dydz)
+# define PDstandardNth23(u) ((KRANC_GFOFFSET3D(u,0,-1,-1) - KRANC_GFOFFSET3D(u,0,-1,1) - KRANC_GFOFFSET3D(u,0,1,-1) + KRANC_GFOFFSET3D(u,0,1,1))*p1o4dydz)
#else
# define PDstandardNth23(u) (PDstandardNth23_impl(u,p1o4dydz,cdj,cdk))
static CCTK_REAL PDstandardNth23_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o4dydz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth23_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o4dydz, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return ((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)]))*p1o4dydz;
+ return (KRANC_GFOFFSET3D(u,0,-1,-1) - KRANC_GFOFFSET3D(u,0,-1,1) - KRANC_GFOFFSET3D(u,0,1,-1) + KRANC_GFOFFSET3D(u,0,1,1))*p1o4dydz;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth31(u) (((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)]))*p1o4dxdz)
+# define PDstandardNth31(u) ((KRANC_GFOFFSET3D(u,-1,0,-1) - KRANC_GFOFFSET3D(u,-1,0,1) - KRANC_GFOFFSET3D(u,1,0,-1) + KRANC_GFOFFSET3D(u,1,0,1))*p1o4dxdz)
#else
# define PDstandardNth31(u) (PDstandardNth31_impl(u,p1o4dxdz,cdj,cdk))
static CCTK_REAL PDstandardNth31_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o4dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth31_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o4dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return ((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)]))*p1o4dxdz;
+ return (KRANC_GFOFFSET3D(u,-1,0,-1) - KRANC_GFOFFSET3D(u,-1,0,1) - KRANC_GFOFFSET3D(u,1,0,-1) + KRANC_GFOFFSET3D(u,1,0,1))*p1o4dxdz;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth32(u) (((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)]))*p1o4dydz)
+# define PDstandardNth32(u) ((KRANC_GFOFFSET3D(u,0,-1,-1) - KRANC_GFOFFSET3D(u,0,-1,1) - KRANC_GFOFFSET3D(u,0,1,-1) + KRANC_GFOFFSET3D(u,0,1,1))*p1o4dydz)
#else
# define PDstandardNth32(u) (PDstandardNth32_impl(u,p1o4dydz,cdj,cdk))
static CCTK_REAL PDstandardNth32_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o4dydz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth32_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o4dydz, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return ((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)]))*p1o4dydz;
+ return (KRANC_GFOFFSET3D(u,0,-1,-1) - KRANC_GFOFFSET3D(u,0,-1,1) - KRANC_GFOFFSET3D(u,0,1,-1) + KRANC_GFOFFSET3D(u,0,1,1))*p1o4dydz;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDupwindNth1(u) ((3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2*dir1)+cdj*(0)+cdk*(0)]) - 4*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(dir1)+cdj*(0)+cdk*(0)]))*pm1o2dx*dir1)
+# define PDupwindNth1(u) ((3*KRANC_GFOFFSET3D(u,0,0,0) + KRANC_GFOFFSET3D(u,2*dir1,0,0) - 4*KRANC_GFOFFSET3D(u,dir1,0,0))*pm1o2dx*dir1)
#else
# define PDupwindNth1(u) (PDupwindNth1_impl(u,pm1o2dx,cdj,cdk,dir1,dir2,dir3))
static CCTK_REAL PDupwindNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o2dx, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDupwindNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o2dx, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2*dir1)+cdj*(0)+cdk*(0)]) - 4*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(dir1)+cdj*(0)+cdk*(0)]))*pm1o2dx*dir1;
+ return (3*KRANC_GFOFFSET3D(u,0,0,0) + KRANC_GFOFFSET3D(u,2*dir1,0,0) - 4*KRANC_GFOFFSET3D(u,dir1,0,0))*pm1o2dx*dir1;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDupwindNth2(u) ((3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2*dir2)+cdk*(0)]) - 4*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(dir2)+cdk*(0)]))*pm1o2dy*dir2)
+# define PDupwindNth2(u) ((3*KRANC_GFOFFSET3D(u,0,0,0) + KRANC_GFOFFSET3D(u,0,2*dir2,0) - 4*KRANC_GFOFFSET3D(u,0,dir2,0))*pm1o2dy*dir2)
#else
# define PDupwindNth2(u) (PDupwindNth2_impl(u,pm1o2dy,cdj,cdk,dir1,dir2,dir3))
static CCTK_REAL PDupwindNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o2dy, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDupwindNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o2dy, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2*dir2)+cdk*(0)]) - 4*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(dir2)+cdk*(0)]))*pm1o2dy*dir2;
+ return (3*KRANC_GFOFFSET3D(u,0,0,0) + KRANC_GFOFFSET3D(u,0,2*dir2,0) - 4*KRANC_GFOFFSET3D(u,0,dir2,0))*pm1o2dy*dir2;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDupwindNth3(u) ((3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2*dir3)]) - 4*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(dir3)]))*pm1o2dz*dir3)
+# define PDupwindNth3(u) ((3*KRANC_GFOFFSET3D(u,0,0,0) + KRANC_GFOFFSET3D(u,0,0,2*dir3) - 4*KRANC_GFOFFSET3D(u,0,0,dir3))*pm1o2dz*dir3)
#else
# define PDupwindNth3(u) (PDupwindNth3_impl(u,pm1o2dz,cdj,cdk,dir1,dir2,dir3))
static CCTK_REAL PDupwindNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o2dz, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDupwindNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o2dz, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2*dir3)]) - 4*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(dir3)]))*pm1o2dz*dir3;
+ return (3*KRANC_GFOFFSET3D(u,0,0,0) + KRANC_GFOFFSET3D(u,0,0,2*dir3) - 4*KRANC_GFOFFSET3D(u,0,0,dir3))*pm1o2dz*dir3;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDonesided1(u) ((-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(dir1)+cdj*(0)+cdk*(0)]))*p1odx*dir1)
+# define PDonesided1(u) ((-KRANC_GFOFFSET3D(u,0,0,0) + KRANC_GFOFFSET3D(u,dir1,0,0))*p1odx*dir1)
#else
# define PDonesided1(u) (PDonesided1_impl(u,p1odx,cdj,cdk,dir1,dir2,dir3))
static CCTK_REAL PDonesided1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1odx, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDonesided1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1odx, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(dir1)+cdj*(0)+cdk*(0)]))*p1odx*dir1;
+ return (-KRANC_GFOFFSET3D(u,0,0,0) + KRANC_GFOFFSET3D(u,dir1,0,0))*p1odx*dir1;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDonesided2(u) ((-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(dir2)+cdk*(0)]))*p1ody*dir2)
+# define PDonesided2(u) ((-KRANC_GFOFFSET3D(u,0,0,0) + KRANC_GFOFFSET3D(u,0,dir2,0))*p1ody*dir2)
#else
# define PDonesided2(u) (PDonesided2_impl(u,p1ody,cdj,cdk,dir1,dir2,dir3))
static CCTK_REAL PDonesided2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1ody, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDonesided2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1ody, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(dir2)+cdk*(0)]))*p1ody*dir2;
+ return (-KRANC_GFOFFSET3D(u,0,0,0) + KRANC_GFOFFSET3D(u,0,dir2,0))*p1ody*dir2;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDonesided3(u) ((-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(dir3)]))*p1odz*dir3)
+# define PDonesided3(u) ((-KRANC_GFOFFSET3D(u,0,0,0) + KRANC_GFOFFSET3D(u,0,0,dir3))*p1odz*dir3)
#else
# define PDonesided3(u) (PDonesided3_impl(u,p1odz,cdj,cdk,dir1,dir2,dir3))
static CCTK_REAL PDonesided3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1odz, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDonesided3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1odz, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(dir3)]))*p1odz*dir3;
+ return (-KRANC_GFOFFSET3D(u,0,0,0) + KRANC_GFOFFSET3D(u,0,0,dir3))*p1odz*dir3;
}
#endif
diff --git a/ML_ADMQuantities_O2/src/ML_ADMQuantities_O2.cc b/ML_ADMQuantities_O2/src/ML_ADMQuantities_O2.cc
index 132be5e..3d0042e 100644
--- a/ML_ADMQuantities_O2/src/ML_ADMQuantities_O2.cc
+++ b/ML_ADMQuantities_O2/src/ML_ADMQuantities_O2.cc
@@ -36,7 +36,7 @@ extern "C" void ML_ADMQuantities_O2_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_ADMQuantities_O2_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_ADMQuantities_O2_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;
@@ -44,21 +44,6 @@ static void ML_ADMQuantities_O2_Body(cGH const * restrict const cctkGH, int cons
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_ADMQuantities_O2_Body");
- }
-
- if (cctk_iteration % ML_ADMQuantities_O2_calc_every != ML_ADMQuantities_O2_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"grid::coordinates","Grid::coordinates","ML_BSSN::ML_curv","ML_BSSN::ML_Gamma","ML_BSSN::ML_lapse","ML_BSSN::ML_log_confac","ML_BSSN::ML_metric","ML_BSSN::ML_shift","ML_BSSN::ML_trace_curv","ML_ADMQuantities_O2::ML_Jadm","ML_ADMQuantities_O2::ML_Madm"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_ADMQuantities_O2", 11, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "ML_ADMQuantities_O2", 1, 1, 1);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -72,6 +57,7 @@ static void ML_ADMQuantities_O2_Body(cGH const * restrict const cctkGH, int cons
CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL const t = ToReal(cctk_time);
CCTK_REAL const dxi = INV(dx);
CCTK_REAL const dyi = INV(dy);
CCTK_REAL const dzi = INV(dz);
@@ -101,10 +87,18 @@ static void ML_ADMQuantities_O2_Body(cGH const * restrict const cctkGH, int cons
CCTK_REAL const pm1o2dy = -0.5*INV(dy);
CCTK_REAL const pm1o2dz = -0.5*INV(dz);
+ /* 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_LOOP3 (ML_ADMQuantities_O2,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
+ i,j,k, imin[0],imin[1],imin[2], imax[0],imax[1],imax[2],
cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
{
ptrdiff_t const index = di*i + dj*j + dk*k;
@@ -679,5 +673,26 @@ extern "C" void ML_ADMQuantities_O2(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_ADMQuantities_O2_Body");
+ }
+
+ if (cctk_iteration % ML_ADMQuantities_O2_calc_every != ML_ADMQuantities_O2_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"grid::coordinates","Grid::coordinates","ML_BSSN::ML_curv","ML_BSSN::ML_Gamma","ML_BSSN::ML_lapse","ML_BSSN::ML_log_confac","ML_BSSN::ML_metric","ML_BSSN::ML_shift","ML_BSSN::ML_trace_curv","ML_ADMQuantities_O2::ML_Jadm","ML_ADMQuantities_O2::ML_Madm"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_ADMQuantities_O2", 11, groups);
+
+ GenericFD_EnsureStencilFits(cctkGH, "ML_ADMQuantities_O2", 1, 1, 1);
+
GenericFD_LoopOverInterior(cctkGH, &ML_ADMQuantities_O2_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_ADMQuantities_O2_Body");
+ }
}
diff --git a/ML_ADMQuantities_O2/src/RegisterMoL.cc b/ML_ADMQuantities_O2/src/RegisterMoL.cc
index c61f3f8..16276a7 100644
--- a/ML_ADMQuantities_O2/src/RegisterMoL.cc
+++ b/ML_ADMQuantities_O2/src/RegisterMoL.cc
@@ -12,5 +12,7 @@ extern "C" void ML_ADMQuantities_O2_RegisterVars(CCTK_ARGUMENTS)
CCTK_INT ierr = 0;
/* Register all the evolved grid functions with MoL */
+
+ /* Register all the evolved Array functions with MoL */
return;
}
diff --git a/ML_BSSN/configuration.ccl b/ML_BSSN/configuration.ccl
index 8e2c3c5..bdbc1bd 100644
--- a/ML_BSSN/configuration.ccl
+++ b/ML_BSSN/configuration.ccl
@@ -2,3 +2,4 @@
REQUIRES GenericFD
REQUIRES LoopControl
+REQUIRES Vectors
diff --git a/ML_BSSN/interface.ccl b/ML_BSSN/interface.ccl
index 91b6696..cf4a371 100644
--- a/ML_BSSN/interface.ccl
+++ b/ML_BSSN/interface.ccl
@@ -11,6 +11,7 @@ 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
diff --git a/ML_BSSN/param.ccl b/ML_BSSN/param.ccl
index 3d1cb43..acf1f14 100644
--- a/ML_BSSN/param.ccl
+++ b/ML_BSSN/param.ccl
@@ -37,11 +37,15 @@ EXTENDS CCTK_KEYWORD dtshift_evolution_method "dtshift_evolution_method"
shares: GenericFD
+USES CCTK_STRING jacobian_group
+USES CCTK_STRING jacobian_derivative_group
+USES CCTK_INT jacobian_identity_map
shares: MethodOfLines
USES CCTK_INT MoL_Num_Evolved_Vars
+USES CCTK_INT MoL_Num_ArrayEvolved_Vars
restricted:
CCTK_INT verbose "verbose" STEERABLE=ALWAYS
@@ -139,6 +143,18 @@ 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"
{
@@ -203,6 +219,12 @@ CCTK_INT ML_BSSN_MaxNumEvolvedVars "Number of evolved variables used by this tho
} 25
restricted:
+CCTK_INT ML_BSSN_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 :: ""
diff --git a/ML_BSSN/schedule.ccl b/ML_BSSN/schedule.ccl
index 9477f4a..9c0fddb 100644
--- a/ML_BSSN/schedule.ccl
+++ b/ML_BSSN/schedule.ccl
@@ -340,7 +340,7 @@ if (CCTK_EQUALS(my_rhs_boundary_condition, "static"))
} "ML_BSSN_RHSStaticBoundary"
}
-schedule ML_BSSN_enforce IN MoL_PostStep BEFORE ML_BSSN_SelectBoundConds
+schedule ML_BSSN_enforce IN MoL_PostStepModify
{
LANG: C
} "ML_BSSN_enforce"
@@ -388,7 +388,7 @@ if (CCTK_EQUALS(dt_lapse_shift_method, "noLapseShiftAdvection"))
} "ML_BSSN_convertToADMBaseFakeDtLapseShift"
}
-schedule group ML_BSSN_constraints1_group in MoL_PseudoEvolution
+schedule group ML_BSSN_constraints1_group in MoL_PseudoEvolution after MoL_PostStep
{
# no language specified
} "ML_BSSN_constraints1"
@@ -415,17 +415,12 @@ schedule group ML_BSSN_constraints1_bc_group in ML_BSSN_constraints1_group after
# no language specified
} "ML_BSSN_constraints1"
-schedule group ML_BSSN_constraints1_bc_group at CCTK_POSTRESTRICT
+schedule group ML_BSSN_constraints1_bc_group in MoL_PseudoEvolutionBoundaries after MoL_PostStep
{
# no language specified
} "ML_BSSN_constraints1"
-schedule group ML_BSSN_constraints1_bc_group at CCTK_POSTRESTRICTINITIAL
-{
- # no language specified
-} "ML_BSSN_constraints1"
-
-schedule group ML_BSSN_constraints2_group in MoL_PseudoEvolution
+schedule group ML_BSSN_constraints2_group in MoL_PseudoEvolution after MoL_PostStep
{
# no language specified
} "ML_BSSN_constraints2"
@@ -455,12 +450,7 @@ schedule group ML_BSSN_constraints2_bc_group in ML_BSSN_constraints2_group after
# no language specified
} "ML_BSSN_constraints2"
-schedule group ML_BSSN_constraints2_bc_group at CCTK_POSTRESTRICT
-{
- # no language specified
-} "ML_BSSN_constraints2"
-
-schedule group ML_BSSN_constraints2_bc_group at CCTK_POSTRESTRICTINITIAL
+schedule group ML_BSSN_constraints2_bc_group in MoL_PseudoEvolutionBoundaries after MoL_PostStep
{
# no language specified
} "ML_BSSN_constraints2"
diff --git a/ML_BSSN/src/Differencing.h b/ML_BSSN/src/Differencing.h
index 23a98cd..96a0554 100644
--- a/ML_BSSN/src/Differencing.h
+++ b/ML_BSSN/src/Differencing.h
@@ -1,324 +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 PDstandardNth1(u) ((-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]))*p1o12dx)
+# 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 PDstandardNth1(u) (PDstandardNth1_impl(u,p1o12dx,cdj,cdk))
-static CCTK_REAL PDstandardNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]))*p1o12dx;
+ 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 PDstandardNth2(u) ((-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]))*p1o12dy)
+# 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 PDstandardNth2(u) (PDstandardNth2_impl(u,p1o12dy,cdj,cdk))
-static CCTK_REAL PDstandardNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]))*p1o12dy;
+ 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 PDstandardNth3(u) ((-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]))*p1o12dz)
+# 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 PDstandardNth3(u) (PDstandardNth3_impl(u,p1o12dz,cdj,cdk))
-static CCTK_REAL PDstandardNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]))*p1o12dz;
+ 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 PDstandardNth11(u) ((30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]))*pm1o12dx2)
+# 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 PDstandardNth11(u) (PDstandardNth11_impl(u,pm1o12dx2,cdj,cdk))
-static CCTK_REAL PDstandardNth11_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dx2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth11_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dx2, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]))*pm1o12dx2;
+ 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 PDstandardNth22(u) ((30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]))*pm1o12dy2)
+# 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 PDstandardNth22(u) (PDstandardNth22_impl(u,pm1o12dy2,cdj,cdk))
-static CCTK_REAL PDstandardNth22_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dy2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth22_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dy2, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]))*pm1o12dy2;
+ 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 PDstandardNth33(u) ((30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]))*pm1o12dz2)
+# 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 PDstandardNth33(u) (PDstandardNth33_impl(u,pm1o12dz2,cdj,cdk))
-static CCTK_REAL PDstandardNth33_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dz2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth33_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dz2, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]))*pm1o12dz2;
+ 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 PDstandardNth12(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-1)+cdk*(0)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(2)+cdk*(0)]))*p1o144dxdy)
+# 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 PDstandardNth12(u) (PDstandardNth12_impl(u,p1o144dxdy,cdj,cdk))
-static CCTK_REAL PDstandardNth12_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth12_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-1)+cdk*(0)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(2)+cdk*(0)]))*p1o144dxdy;
+ 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 PDstandardNth13(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(2)]))*p1o144dxdz)
+# 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 PDstandardNth13(u) (PDstandardNth13_impl(u,p1o144dxdz,cdj,cdk))
-static CCTK_REAL PDstandardNth13_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth13_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(2)]))*p1o144dxdz;
+ 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 PDstandardNth21(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-1)+cdk*(0)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(2)+cdk*(0)]))*p1o144dxdy)
+# 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 PDstandardNth21(u) (PDstandardNth21_impl(u,p1o144dxdy,cdj,cdk))
-static CCTK_REAL PDstandardNth21_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth21_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-1)+cdk*(0)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(2)+cdk*(0)]))*p1o144dxdy;
+ 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 PDstandardNth23(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(2)]))*p1o144dydz)
+# 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 PDstandardNth23(u) (PDstandardNth23_impl(u,p1o144dydz,cdj,cdk))
-static CCTK_REAL PDstandardNth23_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dydz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth23_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dydz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(2)]))*p1o144dydz;
+ 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 PDstandardNth31(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(2)]))*p1o144dxdz)
+# 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 PDstandardNth31(u) (PDstandardNth31_impl(u,p1o144dxdz,cdj,cdk))
-static CCTK_REAL PDstandardNth31_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth31_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(2)]))*p1o144dxdz;
+ 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 PDstandardNth32(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(2)]))*p1o144dydz)
+# 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 PDstandardNth32(u) (PDstandardNth32_impl(u,p1o144dydz,cdj,cdk))
-static CCTK_REAL PDstandardNth32_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dydz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth32_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dydz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(2)]))*p1o144dydz;
+ 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 PDdissipationNth1(u) ((-20*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 15*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)])) - 6*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(0)]))*p1o64dx)
+# 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 PDdissipationNth1(u) (PDdissipationNth1_impl(u,p1o64dx,cdj,cdk))
-static CCTK_REAL PDdissipationNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o64dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDdissipationNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o64dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-20*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 15*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)])) - 6*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(0)]))*p1o64dx;
+ 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 PDdissipationNth2(u) ((-20*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 15*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)])) - 6*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(0)]))*p1o64dy)
+# 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 PDdissipationNth2(u) (PDdissipationNth2_impl(u,p1o64dy,cdj,cdk))
-static CCTK_REAL PDdissipationNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o64dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDdissipationNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o64dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-20*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 15*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)])) - 6*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(0)]))*p1o64dy;
+ 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 PDdissipationNth3(u) ((-20*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 15*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)])) - 6*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(3)]))*p1o64dz)
+# 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 PDdissipationNth3(u) (PDdissipationNth3_impl(u,p1o64dz,cdj,cdk))
-static CCTK_REAL PDdissipationNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o64dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDdissipationNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o64dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-20*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 15*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)])) - 6*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(3)]))*p1o64dz;
+ 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 PDupwindNth1(u) ((-10*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(2*dir1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3*dir1)+cdj*(0)+cdk*(0)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-dir1)+cdj*(0)+cdk*(0)]) + 18*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(dir1)+cdj*(0)+cdk*(0)]))*p1o12dx*dir1)
+# 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 PDupwindNth1(u) (PDupwindNth1_impl(u,p1o12dx,cdj,cdk,dir1,dir2,dir3))
-static CCTK_REAL PDupwindNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dx, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDupwindNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dx, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3)
+# 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 (-10*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(2*dir1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3*dir1)+cdj*(0)+cdk*(0)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-dir1)+cdj*(0)+cdk*(0)]) + 18*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(dir1)+cdj*(0)+cdk*(0)]))*p1o12dx*dir1;
+ 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 PDupwindNth2(u) ((-10*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2*dir2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3*dir2)+cdk*(0)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-dir2)+cdk*(0)]) + 18*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(dir2)+cdk*(0)]))*p1o12dy*dir2)
+# 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 PDupwindNth2(u) (PDupwindNth2_impl(u,p1o12dy,cdj,cdk,dir1,dir2,dir3))
-static CCTK_REAL PDupwindNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dy, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDupwindNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dy, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3)
+# 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 (-10*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2*dir2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3*dir2)+cdk*(0)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-dir2)+cdk*(0)]) + 18*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(dir2)+cdk*(0)]))*p1o12dy*dir2;
+ 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 PDupwindNth3(u) ((-10*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2*dir3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(3*dir3)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-dir3)]) + 18*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(dir3)]))*p1o12dz*dir3)
+# 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 PDupwindNth3(u) (PDupwindNth3_impl(u,p1o12dz,cdj,cdk,dir1,dir2,dir3))
-static CCTK_REAL PDupwindNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dz, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDupwindNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dz, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3)
+# 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 (-10*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2*dir3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(3*dir3)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-dir3)]) + 18*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(dir3)]))*p1o12dz*dir3;
+ 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) ((-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(dir1)+cdj*(0)+cdk*(0)]))*p1odx*dir1)
+# 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 PDonesided1(u) (PDonesided1_impl(u,p1odx,cdj,cdk,dir1,dir2,dir3))
-static CCTK_REAL PDonesided1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1odx, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDonesided1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1odx, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3)
+# 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 (-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(dir1)+cdj*(0)+cdk*(0)]))*p1odx*dir1;
+ 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 PDonesided2(u) ((-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(dir2)+cdk*(0)]))*p1ody*dir2)
+# 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 PDonesided2(u) (PDonesided2_impl(u,p1ody,cdj,cdk,dir1,dir2,dir3))
-static CCTK_REAL PDonesided2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1ody, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDonesided2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1ody, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3)
+# 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 (-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(dir2)+cdk*(0)]))*p1ody*dir2;
+ 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 PDonesided3(u) ((-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(dir3)]))*p1odz*dir3)
+# 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 PDonesided3(u) (PDonesided3_impl(u,p1odz,cdj,cdk,dir1,dir2,dir3))
-static CCTK_REAL PDonesided3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1odz, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDonesided3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1odz, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3)
+# 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 (-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(dir3)]))*p1odz*dir3;
+ 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 PDupwindNthAnti1(u) ((-21*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + 21*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)]) + 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) - 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(0)]))*p1o24dx)
+# 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 PDupwindNthAnti1(u) (PDupwindNthAnti1_impl(u,p1o24dx,cdj,cdk))
-static CCTK_REAL PDupwindNthAnti1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o24dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDupwindNthAnti1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o24dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-21*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + 21*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)]) + 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) - 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(0)]))*p1o24dx;
+ 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 PDupwindNthSymm1(u) ((-20*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 15*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)])) - 6*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(0)]))*p1o24dx)
+# 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 PDupwindNthSymm1(u) (PDupwindNthSymm1_impl(u,p1o24dx,cdj,cdk))
-static CCTK_REAL PDupwindNthSymm1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o24dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDupwindNthSymm1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o24dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-20*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 15*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)])) - 6*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(0)]))*p1o24dx;
+ 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 PDupwindNthAnti2(u) ((-21*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + 21*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)]) + 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) - 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(0)]))*p1o24dy)
+# 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 PDupwindNthAnti2(u) (PDupwindNthAnti2_impl(u,p1o24dy,cdj,cdk))
-static CCTK_REAL PDupwindNthAnti2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o24dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDupwindNthAnti2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o24dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-21*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + 21*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)]) + 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) - 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(0)]))*p1o24dy;
+ 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 PDupwindNthSymm2(u) ((-20*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 15*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)])) - 6*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(0)]))*p1o24dy)
+# 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 PDupwindNthSymm2(u) (PDupwindNthSymm2_impl(u,p1o24dy,cdj,cdk))
-static CCTK_REAL PDupwindNthSymm2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o24dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDupwindNthSymm2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o24dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-20*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 15*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)])) - 6*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(0)]))*p1o24dy;
+ 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 PDupwindNthAnti3(u) ((-21*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + 21*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)]) + 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) - 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(3)]))*p1o24dz)
+# 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 PDupwindNthAnti3(u) (PDupwindNthAnti3_impl(u,p1o24dz,cdj,cdk))
-static CCTK_REAL PDupwindNthAnti3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o24dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDupwindNthAnti3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o24dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-21*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + 21*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)]) + 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) - 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(3)]))*p1o24dz;
+ 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 PDupwindNthSymm3(u) ((-20*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 15*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)])) - 6*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(3)]))*p1o24dz)
+# 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 PDupwindNthSymm3(u) (PDupwindNthSymm3_impl(u,p1o24dz,cdj,cdk))
-static CCTK_REAL PDupwindNthSymm3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o24dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDupwindNthSymm3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o24dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-20*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 15*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)])) - 6*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(3)]))*p1o24dz;
+ 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_BSSN/src/ML_BSSN_Advect.cc b/ML_BSSN/src/ML_BSSN_Advect.cc
index fef62d8..a34660b 100644
--- a/ML_BSSN/src/ML_BSSN_Advect.cc
+++ b/ML_BSSN/src/ML_BSSN_Advect.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_Advect_SelectBCs(CCTK_ARGUMENTS)
{
@@ -57,7 +58,7 @@ extern "C" void ML_BSSN_Advect_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_BSSN_Advect_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_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;
@@ -65,21 +66,6 @@ static void ML_BSSN_Advect_Body(cGH const * restrict const cctkGH, int const dir
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_Advect_Body");
- }
-
- if (cctk_iteration % ML_BSSN_Advect_calc_every != ML_BSSN_Advect_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN::ML_curv","ML_BSSN::ML_curvrhs","ML_BSSN::ML_dtlapse","ML_BSSN::ML_dtlapserhs","ML_BSSN::ML_dtshift","ML_BSSN::ML_dtshiftrhs","ML_BSSN::ML_Gamma","ML_BSSN::ML_Gammarhs","ML_BSSN::ML_lapse","ML_BSSN::ML_lapserhs","ML_BSSN::ML_log_confac","ML_BSSN::ML_log_confacrhs","ML_BSSN::ML_metric","ML_BSSN::ML_metricrhs","ML_BSSN::ML_shift","ML_BSSN::ML_shiftrhs","ML_BSSN::ML_trace_curv","ML_BSSN::ML_trace_curvrhs"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_Advect", 18, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_Advect", 3, 3, 3);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -89,257 +75,1002 @@ static void ML_BSSN_Advect_Body(cGH const * restrict const cctkGH, int const dir
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const p1o24dx = 0.0416666666666666666666666666667*INV(dx);
- CCTK_REAL const p1o24dy = 0.0416666666666666666666666666667*INV(dy);
- CCTK_REAL const p1o24dz = 0.0416666666666666666666666666667*INV(dz);
- CCTK_REAL const p1o64dx = 0.015625*INV(dx);
- CCTK_REAL const p1o64dy = 0.015625*INV(dy);
- CCTK_REAL const p1o64dz = 0.015625*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_Advect,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_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 AL = A[index];
- CCTK_REAL alphaL = alpha[index];
- CCTK_REAL alpharhsL = alpharhs[index];
- CCTK_REAL ArhsL = Arhs[index];
- CCTK_REAL At11L = At11[index];
- CCTK_REAL At11rhsL = At11rhs[index];
- CCTK_REAL At12L = At12[index];
- CCTK_REAL At12rhsL = At12rhs[index];
- CCTK_REAL At13L = At13[index];
- CCTK_REAL At13rhsL = At13rhs[index];
- CCTK_REAL At22L = At22[index];
- CCTK_REAL At22rhsL = At22rhs[index];
- CCTK_REAL At23L = At23[index];
- CCTK_REAL At23rhsL = At23rhs[index];
- CCTK_REAL At33L = At33[index];
- CCTK_REAL At33rhsL = At33rhs[index];
- CCTK_REAL B1L = B1[index];
- CCTK_REAL B1rhsL = B1rhs[index];
- CCTK_REAL B2L = B2[index];
- CCTK_REAL B2rhsL = B2rhs[index];
- CCTK_REAL B3L = B3[index];
- CCTK_REAL B3rhsL = B3rhs[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta1rhsL = beta1rhs[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta2rhsL = beta2rhs[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL beta3rhsL = beta3rhs[index];
- CCTK_REAL gt11L = gt11[index];
- CCTK_REAL gt11rhsL = gt11rhs[index];
- CCTK_REAL gt12L = gt12[index];
- CCTK_REAL gt12rhsL = gt12rhs[index];
- CCTK_REAL gt13L = gt13[index];
- CCTK_REAL gt13rhsL = gt13rhs[index];
- CCTK_REAL gt22L = gt22[index];
- CCTK_REAL gt22rhsL = gt22rhs[index];
- CCTK_REAL gt23L = gt23[index];
- CCTK_REAL gt23rhsL = gt23rhs[index];
- CCTK_REAL gt33L = gt33[index];
- CCTK_REAL gt33rhsL = gt33rhs[index];
- CCTK_REAL phiL = phi[index];
- CCTK_REAL phirhsL = phirhs[index];
- CCTK_REAL trKL = trK[index];
- CCTK_REAL trKrhsL = trKrhs[index];
- CCTK_REAL Xt1L = Xt1[index];
- CCTK_REAL Xt1rhsL = Xt1rhs[index];
- CCTK_REAL Xt2L = Xt2[index];
- CCTK_REAL Xt2rhsL = Xt2rhs[index];
- CCTK_REAL Xt3L = Xt3[index];
- CCTK_REAL Xt3rhsL = Xt3rhs[index];
+ CCTK_REAL_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 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 const PDupwindNthAnti1A = PDupwindNthAnti1(&A[index]);
- CCTK_REAL const PDupwindNthSymm1A = PDupwindNthSymm1(&A[index]);
- CCTK_REAL const PDupwindNthAnti2A = PDupwindNthAnti2(&A[index]);
- CCTK_REAL const PDupwindNthSymm2A = PDupwindNthSymm2(&A[index]);
- CCTK_REAL const PDupwindNthAnti3A = PDupwindNthAnti3(&A[index]);
- CCTK_REAL const PDupwindNthSymm3A = PDupwindNthSymm3(&A[index]);
- CCTK_REAL const PDupwindNthAnti1alpha = PDupwindNthAnti1(&alpha[index]);
- CCTK_REAL const PDupwindNthSymm1alpha = PDupwindNthSymm1(&alpha[index]);
- CCTK_REAL const PDupwindNthAnti2alpha = PDupwindNthAnti2(&alpha[index]);
- CCTK_REAL const PDupwindNthSymm2alpha = PDupwindNthSymm2(&alpha[index]);
- CCTK_REAL const PDupwindNthAnti3alpha = PDupwindNthAnti3(&alpha[index]);
- CCTK_REAL const PDupwindNthSymm3alpha = PDupwindNthSymm3(&alpha[index]);
- CCTK_REAL const PDupwindNthAnti1At11 = PDupwindNthAnti1(&At11[index]);
- CCTK_REAL const PDupwindNthSymm1At11 = PDupwindNthSymm1(&At11[index]);
- CCTK_REAL const PDupwindNthAnti2At11 = PDupwindNthAnti2(&At11[index]);
- CCTK_REAL const PDupwindNthSymm2At11 = PDupwindNthSymm2(&At11[index]);
- CCTK_REAL const PDupwindNthAnti3At11 = PDupwindNthAnti3(&At11[index]);
- CCTK_REAL const PDupwindNthSymm3At11 = PDupwindNthSymm3(&At11[index]);
- CCTK_REAL const PDupwindNthAnti1At12 = PDupwindNthAnti1(&At12[index]);
- CCTK_REAL const PDupwindNthSymm1At12 = PDupwindNthSymm1(&At12[index]);
- CCTK_REAL const PDupwindNthAnti2At12 = PDupwindNthAnti2(&At12[index]);
- CCTK_REAL const PDupwindNthSymm2At12 = PDupwindNthSymm2(&At12[index]);
- CCTK_REAL const PDupwindNthAnti3At12 = PDupwindNthAnti3(&At12[index]);
- CCTK_REAL const PDupwindNthSymm3At12 = PDupwindNthSymm3(&At12[index]);
- CCTK_REAL const PDupwindNthAnti1At13 = PDupwindNthAnti1(&At13[index]);
- CCTK_REAL const PDupwindNthSymm1At13 = PDupwindNthSymm1(&At13[index]);
- CCTK_REAL const PDupwindNthAnti2At13 = PDupwindNthAnti2(&At13[index]);
- CCTK_REAL const PDupwindNthSymm2At13 = PDupwindNthSymm2(&At13[index]);
- CCTK_REAL const PDupwindNthAnti3At13 = PDupwindNthAnti3(&At13[index]);
- CCTK_REAL const PDupwindNthSymm3At13 = PDupwindNthSymm3(&At13[index]);
- CCTK_REAL const PDupwindNthAnti1At22 = PDupwindNthAnti1(&At22[index]);
- CCTK_REAL const PDupwindNthSymm1At22 = PDupwindNthSymm1(&At22[index]);
- CCTK_REAL const PDupwindNthAnti2At22 = PDupwindNthAnti2(&At22[index]);
- CCTK_REAL const PDupwindNthSymm2At22 = PDupwindNthSymm2(&At22[index]);
- CCTK_REAL const PDupwindNthAnti3At22 = PDupwindNthAnti3(&At22[index]);
- CCTK_REAL const PDupwindNthSymm3At22 = PDupwindNthSymm3(&At22[index]);
- CCTK_REAL const PDupwindNthAnti1At23 = PDupwindNthAnti1(&At23[index]);
- CCTK_REAL const PDupwindNthSymm1At23 = PDupwindNthSymm1(&At23[index]);
- CCTK_REAL const PDupwindNthAnti2At23 = PDupwindNthAnti2(&At23[index]);
- CCTK_REAL const PDupwindNthSymm2At23 = PDupwindNthSymm2(&At23[index]);
- CCTK_REAL const PDupwindNthAnti3At23 = PDupwindNthAnti3(&At23[index]);
- CCTK_REAL const PDupwindNthSymm3At23 = PDupwindNthSymm3(&At23[index]);
- CCTK_REAL const PDupwindNthAnti1At33 = PDupwindNthAnti1(&At33[index]);
- CCTK_REAL const PDupwindNthSymm1At33 = PDupwindNthSymm1(&At33[index]);
- CCTK_REAL const PDupwindNthAnti2At33 = PDupwindNthAnti2(&At33[index]);
- CCTK_REAL const PDupwindNthSymm2At33 = PDupwindNthSymm2(&At33[index]);
- CCTK_REAL const PDupwindNthAnti3At33 = PDupwindNthAnti3(&At33[index]);
- CCTK_REAL const PDupwindNthSymm3At33 = PDupwindNthSymm3(&At33[index]);
- CCTK_REAL const PDupwindNthAnti1B1 = PDupwindNthAnti1(&B1[index]);
- CCTK_REAL const PDupwindNthSymm1B1 = PDupwindNthSymm1(&B1[index]);
- CCTK_REAL const PDupwindNthAnti2B1 = PDupwindNthAnti2(&B1[index]);
- CCTK_REAL const PDupwindNthSymm2B1 = PDupwindNthSymm2(&B1[index]);
- CCTK_REAL const PDupwindNthAnti3B1 = PDupwindNthAnti3(&B1[index]);
- CCTK_REAL const PDupwindNthSymm3B1 = PDupwindNthSymm3(&B1[index]);
- CCTK_REAL const PDupwindNthAnti1B2 = PDupwindNthAnti1(&B2[index]);
- CCTK_REAL const PDupwindNthSymm1B2 = PDupwindNthSymm1(&B2[index]);
- CCTK_REAL const PDupwindNthAnti2B2 = PDupwindNthAnti2(&B2[index]);
- CCTK_REAL const PDupwindNthSymm2B2 = PDupwindNthSymm2(&B2[index]);
- CCTK_REAL const PDupwindNthAnti3B2 = PDupwindNthAnti3(&B2[index]);
- CCTK_REAL const PDupwindNthSymm3B2 = PDupwindNthSymm3(&B2[index]);
- CCTK_REAL const PDupwindNthAnti1B3 = PDupwindNthAnti1(&B3[index]);
- CCTK_REAL const PDupwindNthSymm1B3 = PDupwindNthSymm1(&B3[index]);
- CCTK_REAL const PDupwindNthAnti2B3 = PDupwindNthAnti2(&B3[index]);
- CCTK_REAL const PDupwindNthSymm2B3 = PDupwindNthSymm2(&B3[index]);
- CCTK_REAL const PDupwindNthAnti3B3 = PDupwindNthAnti3(&B3[index]);
- CCTK_REAL const PDupwindNthSymm3B3 = PDupwindNthSymm3(&B3[index]);
- CCTK_REAL const PDupwindNthAnti1beta1 = PDupwindNthAnti1(&beta1[index]);
- CCTK_REAL const PDupwindNthSymm1beta1 = PDupwindNthSymm1(&beta1[index]);
- CCTK_REAL const PDupwindNthAnti2beta1 = PDupwindNthAnti2(&beta1[index]);
- CCTK_REAL const PDupwindNthSymm2beta1 = PDupwindNthSymm2(&beta1[index]);
- CCTK_REAL const PDupwindNthAnti3beta1 = PDupwindNthAnti3(&beta1[index]);
- CCTK_REAL const PDupwindNthSymm3beta1 = PDupwindNthSymm3(&beta1[index]);
- CCTK_REAL const PDupwindNthAnti1beta2 = PDupwindNthAnti1(&beta2[index]);
- CCTK_REAL const PDupwindNthSymm1beta2 = PDupwindNthSymm1(&beta2[index]);
- CCTK_REAL const PDupwindNthAnti2beta2 = PDupwindNthAnti2(&beta2[index]);
- CCTK_REAL const PDupwindNthSymm2beta2 = PDupwindNthSymm2(&beta2[index]);
- CCTK_REAL const PDupwindNthAnti3beta2 = PDupwindNthAnti3(&beta2[index]);
- CCTK_REAL const PDupwindNthSymm3beta2 = PDupwindNthSymm3(&beta2[index]);
- CCTK_REAL const PDupwindNthAnti1beta3 = PDupwindNthAnti1(&beta3[index]);
- CCTK_REAL const PDupwindNthSymm1beta3 = PDupwindNthSymm1(&beta3[index]);
- CCTK_REAL const PDupwindNthAnti2beta3 = PDupwindNthAnti2(&beta3[index]);
- CCTK_REAL const PDupwindNthSymm2beta3 = PDupwindNthSymm2(&beta3[index]);
- CCTK_REAL const PDupwindNthAnti3beta3 = PDupwindNthAnti3(&beta3[index]);
- CCTK_REAL const PDupwindNthSymm3beta3 = PDupwindNthSymm3(&beta3[index]);
- CCTK_REAL const PDupwindNthAnti1gt11 = PDupwindNthAnti1(&gt11[index]);
- CCTK_REAL const PDupwindNthSymm1gt11 = PDupwindNthSymm1(&gt11[index]);
- CCTK_REAL const PDupwindNthAnti2gt11 = PDupwindNthAnti2(&gt11[index]);
- CCTK_REAL const PDupwindNthSymm2gt11 = PDupwindNthSymm2(&gt11[index]);
- CCTK_REAL const PDupwindNthAnti3gt11 = PDupwindNthAnti3(&gt11[index]);
- CCTK_REAL const PDupwindNthSymm3gt11 = PDupwindNthSymm3(&gt11[index]);
- CCTK_REAL const PDupwindNthAnti1gt12 = PDupwindNthAnti1(&gt12[index]);
- CCTK_REAL const PDupwindNthSymm1gt12 = PDupwindNthSymm1(&gt12[index]);
- CCTK_REAL const PDupwindNthAnti2gt12 = PDupwindNthAnti2(&gt12[index]);
- CCTK_REAL const PDupwindNthSymm2gt12 = PDupwindNthSymm2(&gt12[index]);
- CCTK_REAL const PDupwindNthAnti3gt12 = PDupwindNthAnti3(&gt12[index]);
- CCTK_REAL const PDupwindNthSymm3gt12 = PDupwindNthSymm3(&gt12[index]);
- CCTK_REAL const PDupwindNthAnti1gt13 = PDupwindNthAnti1(&gt13[index]);
- CCTK_REAL const PDupwindNthSymm1gt13 = PDupwindNthSymm1(&gt13[index]);
- CCTK_REAL const PDupwindNthAnti2gt13 = PDupwindNthAnti2(&gt13[index]);
- CCTK_REAL const PDupwindNthSymm2gt13 = PDupwindNthSymm2(&gt13[index]);
- CCTK_REAL const PDupwindNthAnti3gt13 = PDupwindNthAnti3(&gt13[index]);
- CCTK_REAL const PDupwindNthSymm3gt13 = PDupwindNthSymm3(&gt13[index]);
- CCTK_REAL const PDupwindNthAnti1gt22 = PDupwindNthAnti1(&gt22[index]);
- CCTK_REAL const PDupwindNthSymm1gt22 = PDupwindNthSymm1(&gt22[index]);
- CCTK_REAL const PDupwindNthAnti2gt22 = PDupwindNthAnti2(&gt22[index]);
- CCTK_REAL const PDupwindNthSymm2gt22 = PDupwindNthSymm2(&gt22[index]);
- CCTK_REAL const PDupwindNthAnti3gt22 = PDupwindNthAnti3(&gt22[index]);
- CCTK_REAL const PDupwindNthSymm3gt22 = PDupwindNthSymm3(&gt22[index]);
- CCTK_REAL const PDupwindNthAnti1gt23 = PDupwindNthAnti1(&gt23[index]);
- CCTK_REAL const PDupwindNthSymm1gt23 = PDupwindNthSymm1(&gt23[index]);
- CCTK_REAL const PDupwindNthAnti2gt23 = PDupwindNthAnti2(&gt23[index]);
- CCTK_REAL const PDupwindNthSymm2gt23 = PDupwindNthSymm2(&gt23[index]);
- CCTK_REAL const PDupwindNthAnti3gt23 = PDupwindNthAnti3(&gt23[index]);
- CCTK_REAL const PDupwindNthSymm3gt23 = PDupwindNthSymm3(&gt23[index]);
- CCTK_REAL const PDupwindNthAnti1gt33 = PDupwindNthAnti1(&gt33[index]);
- CCTK_REAL const PDupwindNthSymm1gt33 = PDupwindNthSymm1(&gt33[index]);
- CCTK_REAL const PDupwindNthAnti2gt33 = PDupwindNthAnti2(&gt33[index]);
- CCTK_REAL const PDupwindNthSymm2gt33 = PDupwindNthSymm2(&gt33[index]);
- CCTK_REAL const PDupwindNthAnti3gt33 = PDupwindNthAnti3(&gt33[index]);
- CCTK_REAL const PDupwindNthSymm3gt33 = PDupwindNthSymm3(&gt33[index]);
- CCTK_REAL const PDupwindNthAnti1phi = PDupwindNthAnti1(&phi[index]);
- CCTK_REAL const PDupwindNthSymm1phi = PDupwindNthSymm1(&phi[index]);
- CCTK_REAL const PDupwindNthAnti2phi = PDupwindNthAnti2(&phi[index]);
- CCTK_REAL const PDupwindNthSymm2phi = PDupwindNthSymm2(&phi[index]);
- CCTK_REAL const PDupwindNthAnti3phi = PDupwindNthAnti3(&phi[index]);
- CCTK_REAL const PDupwindNthSymm3phi = PDupwindNthSymm3(&phi[index]);
- CCTK_REAL const PDupwindNthAnti1trK = PDupwindNthAnti1(&trK[index]);
- CCTK_REAL const PDupwindNthSymm1trK = PDupwindNthSymm1(&trK[index]);
- CCTK_REAL const PDupwindNthAnti2trK = PDupwindNthAnti2(&trK[index]);
- CCTK_REAL const PDupwindNthSymm2trK = PDupwindNthSymm2(&trK[index]);
- CCTK_REAL const PDupwindNthAnti3trK = PDupwindNthAnti3(&trK[index]);
- CCTK_REAL const PDupwindNthSymm3trK = PDupwindNthSymm3(&trK[index]);
- CCTK_REAL const PDupwindNthAnti1Xt1 = PDupwindNthAnti1(&Xt1[index]);
- CCTK_REAL const PDupwindNthSymm1Xt1 = PDupwindNthSymm1(&Xt1[index]);
- CCTK_REAL const PDupwindNthAnti2Xt1 = PDupwindNthAnti2(&Xt1[index]);
- CCTK_REAL const PDupwindNthSymm2Xt1 = PDupwindNthSymm2(&Xt1[index]);
- CCTK_REAL const PDupwindNthAnti3Xt1 = PDupwindNthAnti3(&Xt1[index]);
- CCTK_REAL const PDupwindNthSymm3Xt1 = PDupwindNthSymm3(&Xt1[index]);
- CCTK_REAL const PDupwindNthAnti1Xt2 = PDupwindNthAnti1(&Xt2[index]);
- CCTK_REAL const PDupwindNthSymm1Xt2 = PDupwindNthSymm1(&Xt2[index]);
- CCTK_REAL const PDupwindNthAnti2Xt2 = PDupwindNthAnti2(&Xt2[index]);
- CCTK_REAL const PDupwindNthSymm2Xt2 = PDupwindNthSymm2(&Xt2[index]);
- CCTK_REAL const PDupwindNthAnti3Xt2 = PDupwindNthAnti3(&Xt2[index]);
- CCTK_REAL const PDupwindNthSymm3Xt2 = PDupwindNthSymm3(&Xt2[index]);
- CCTK_REAL const PDupwindNthAnti1Xt3 = PDupwindNthAnti1(&Xt3[index]);
- CCTK_REAL const PDupwindNthSymm1Xt3 = PDupwindNthSymm1(&Xt3[index]);
- CCTK_REAL const PDupwindNthAnti2Xt3 = PDupwindNthAnti2(&Xt3[index]);
- CCTK_REAL const PDupwindNthSymm2Xt3 = PDupwindNthSymm2(&Xt3[index]);
- CCTK_REAL const PDupwindNthAnti3Xt3 = PDupwindNthAnti3(&Xt3[index]);
- CCTK_REAL const PDupwindNthSymm3Xt3 = PDupwindNthSymm3(&Xt3[index]);
+ 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 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]);
+ 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]);
+ 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]);
+ 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]);
+ 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);
@@ -348,172 +1079,1113 @@ static void ML_BSSN_Advect_Body(cGH const * restrict const cctkGH, int const dir
ptrdiff_t dir3 = Sign(beta3L);
- phirhsL = beta1L*PDupwindNthAnti1phi + beta2L*PDupwindNthAnti2phi +
- beta3L*PDupwindNthAnti3phi + phirhsL + PDupwindNthSymm1phi*Abs(beta1L)
- + PDupwindNthSymm2phi*Abs(beta2L) + PDupwindNthSymm3phi*Abs(beta3L);
-
- gt11rhsL = gt11rhsL + beta1L*PDupwindNthAnti1gt11 +
- beta2L*PDupwindNthAnti2gt11 + beta3L*PDupwindNthAnti3gt11 +
- PDupwindNthSymm1gt11*Abs(beta1L) + PDupwindNthSymm2gt11*Abs(beta2L) +
- PDupwindNthSymm3gt11*Abs(beta3L);
-
- gt12rhsL = gt12rhsL + beta1L*PDupwindNthAnti1gt12 +
- beta2L*PDupwindNthAnti2gt12 + beta3L*PDupwindNthAnti3gt12 +
- PDupwindNthSymm1gt12*Abs(beta1L) + PDupwindNthSymm2gt12*Abs(beta2L) +
- PDupwindNthSymm3gt12*Abs(beta3L);
-
- gt13rhsL = gt13rhsL + beta1L*PDupwindNthAnti1gt13 +
- beta2L*PDupwindNthAnti2gt13 + beta3L*PDupwindNthAnti3gt13 +
- PDupwindNthSymm1gt13*Abs(beta1L) + PDupwindNthSymm2gt13*Abs(beta2L) +
- PDupwindNthSymm3gt13*Abs(beta3L);
-
- gt22rhsL = gt22rhsL + beta1L*PDupwindNthAnti1gt22 +
- beta2L*PDupwindNthAnti2gt22 + beta3L*PDupwindNthAnti3gt22 +
- PDupwindNthSymm1gt22*Abs(beta1L) + PDupwindNthSymm2gt22*Abs(beta2L) +
- PDupwindNthSymm3gt22*Abs(beta3L);
-
- gt23rhsL = gt23rhsL + beta1L*PDupwindNthAnti1gt23 +
- beta2L*PDupwindNthAnti2gt23 + beta3L*PDupwindNthAnti3gt23 +
- PDupwindNthSymm1gt23*Abs(beta1L) + PDupwindNthSymm2gt23*Abs(beta2L) +
- PDupwindNthSymm3gt23*Abs(beta3L);
-
- gt33rhsL = gt33rhsL + beta1L*PDupwindNthAnti1gt33 +
- beta2L*PDupwindNthAnti2gt33 + beta3L*PDupwindNthAnti3gt33 +
- PDupwindNthSymm1gt33*Abs(beta1L) + PDupwindNthSymm2gt33*Abs(beta2L) +
- PDupwindNthSymm3gt33*Abs(beta3L);
-
- Xt1rhsL = beta1L*PDupwindNthAnti1Xt1 + beta2L*PDupwindNthAnti2Xt1 +
- beta3L*PDupwindNthAnti3Xt1 + Xt1rhsL + PDupwindNthSymm1Xt1*Abs(beta1L)
- + PDupwindNthSymm2Xt1*Abs(beta2L) + PDupwindNthSymm3Xt1*Abs(beta3L);
-
- Xt2rhsL = beta1L*PDupwindNthAnti1Xt2 + beta2L*PDupwindNthAnti2Xt2 +
- beta3L*PDupwindNthAnti3Xt2 + Xt2rhsL + PDupwindNthSymm1Xt2*Abs(beta1L)
- + PDupwindNthSymm2Xt2*Abs(beta2L) + PDupwindNthSymm3Xt2*Abs(beta3L);
-
- Xt3rhsL = beta1L*PDupwindNthAnti1Xt3 + beta2L*PDupwindNthAnti2Xt3 +
- beta3L*PDupwindNthAnti3Xt3 + Xt3rhsL + PDupwindNthSymm1Xt3*Abs(beta1L)
- + PDupwindNthSymm2Xt3*Abs(beta2L) + PDupwindNthSymm3Xt3*Abs(beta3L);
-
- trKrhsL = beta1L*PDupwindNthAnti1trK + beta2L*PDupwindNthAnti2trK +
- beta3L*PDupwindNthAnti3trK + trKrhsL + PDupwindNthSymm1trK*Abs(beta1L)
- + PDupwindNthSymm2trK*Abs(beta2L) + PDupwindNthSymm3trK*Abs(beta3L);
-
- At11rhsL = At11rhsL + beta1L*PDupwindNthAnti1At11 +
- beta2L*PDupwindNthAnti2At11 + beta3L*PDupwindNthAnti3At11 +
- PDupwindNthSymm1At11*Abs(beta1L) + PDupwindNthSymm2At11*Abs(beta2L) +
- PDupwindNthSymm3At11*Abs(beta3L);
-
- At12rhsL = At12rhsL + beta1L*PDupwindNthAnti1At12 +
- beta2L*PDupwindNthAnti2At12 + beta3L*PDupwindNthAnti3At12 +
- PDupwindNthSymm1At12*Abs(beta1L) + PDupwindNthSymm2At12*Abs(beta2L) +
- PDupwindNthSymm3At12*Abs(beta3L);
-
- At13rhsL = At13rhsL + beta1L*PDupwindNthAnti1At13 +
- beta2L*PDupwindNthAnti2At13 + beta3L*PDupwindNthAnti3At13 +
- PDupwindNthSymm1At13*Abs(beta1L) + PDupwindNthSymm2At13*Abs(beta2L) +
- PDupwindNthSymm3At13*Abs(beta3L);
-
- At22rhsL = At22rhsL + beta1L*PDupwindNthAnti1At22 +
- beta2L*PDupwindNthAnti2At22 + beta3L*PDupwindNthAnti3At22 +
- PDupwindNthSymm1At22*Abs(beta1L) + PDupwindNthSymm2At22*Abs(beta2L) +
- PDupwindNthSymm3At22*Abs(beta3L);
-
- At23rhsL = At23rhsL + beta1L*PDupwindNthAnti1At23 +
- beta2L*PDupwindNthAnti2At23 + beta3L*PDupwindNthAnti3At23 +
- PDupwindNthSymm1At23*Abs(beta1L) + PDupwindNthSymm2At23*Abs(beta2L) +
- PDupwindNthSymm3At23*Abs(beta3L);
-
- At33rhsL = At33rhsL + beta1L*PDupwindNthAnti1At33 +
- beta2L*PDupwindNthAnti2At33 + beta3L*PDupwindNthAnti3At33 +
- PDupwindNthSymm1At33*Abs(beta1L) + PDupwindNthSymm2At33*Abs(beta2L) +
- PDupwindNthSymm3At33*Abs(beta3L);
-
- alpharhsL = alpharhsL + (beta1L*PDupwindNthAnti1alpha +
- beta2L*PDupwindNthAnti2alpha + beta3L*PDupwindNthAnti3alpha +
- PDupwindNthSymm1alpha*Abs(beta1L) + PDupwindNthSymm2alpha*Abs(beta2L) +
- PDupwindNthSymm3alpha*Abs(beta3L))*ToReal(LapseAdvectionCoeff);
-
- ArhsL = ArhsL + (beta1L*PDupwindNthAnti1A + beta2L*PDupwindNthAnti2A +
- beta3L*PDupwindNthAnti3A + PDupwindNthSymm1A*Abs(beta1L) +
- PDupwindNthSymm2A*Abs(beta2L) +
- PDupwindNthSymm3A*Abs(beta3L))*ToReal(LapseAdvectionCoeff);
-
- beta1rhsL = beta1rhsL + (beta1L*PDupwindNthAnti1beta1 +
- beta2L*PDupwindNthAnti2beta1 + beta3L*PDupwindNthAnti3beta1 +
- PDupwindNthSymm1beta1*Abs(beta1L) + PDupwindNthSymm2beta1*Abs(beta2L) +
- PDupwindNthSymm3beta1*Abs(beta3L))*ToReal(ShiftAdvectionCoeff);
-
- beta2rhsL = beta2rhsL + (beta1L*PDupwindNthAnti1beta2 +
- beta2L*PDupwindNthAnti2beta2 + beta3L*PDupwindNthAnti3beta2 +
- PDupwindNthSymm1beta2*Abs(beta1L) + PDupwindNthSymm2beta2*Abs(beta2L) +
- PDupwindNthSymm3beta2*Abs(beta3L))*ToReal(ShiftAdvectionCoeff);
-
- beta3rhsL = beta3rhsL + (beta1L*PDupwindNthAnti1beta3 +
- beta2L*PDupwindNthAnti2beta3 + beta3L*PDupwindNthAnti3beta3 +
- PDupwindNthSymm1beta3*Abs(beta1L) + PDupwindNthSymm2beta3*Abs(beta2L) +
- PDupwindNthSymm3beta3*Abs(beta3L))*ToReal(ShiftAdvectionCoeff);
-
- B1rhsL = B1rhsL + (beta1L*(PDupwindNthAnti1B1 - PDupwindNthAnti1Xt1) +
- beta2L*(PDupwindNthAnti2B1 - PDupwindNthAnti2Xt1) +
- beta3L*(PDupwindNthAnti3B1 - PDupwindNthAnti3Xt1) + (PDupwindNthSymm1B1
- - PDupwindNthSymm1Xt1)*Abs(beta1L) + (PDupwindNthSymm2B1 -
- PDupwindNthSymm2Xt1)*Abs(beta2L) + (PDupwindNthSymm3B1 -
- PDupwindNthSymm3Xt1)*Abs(beta3L))*ToReal(ShiftAdvectionCoeff) +
- (beta1L*PDupwindNthAnti1Xt1 + beta2L*PDupwindNthAnti2Xt1 +
- beta3L*PDupwindNthAnti3Xt1 + PDupwindNthSymm1Xt1*Abs(beta1L) +
- PDupwindNthSymm2Xt1*Abs(beta2L) +
- PDupwindNthSymm3Xt1*Abs(beta3L))*ToReal(ShiftBCoeff);
-
- B2rhsL = B2rhsL + (beta1L*(PDupwindNthAnti1B2 - PDupwindNthAnti1Xt2) +
- beta2L*(PDupwindNthAnti2B2 - PDupwindNthAnti2Xt2) +
- beta3L*(PDupwindNthAnti3B2 - PDupwindNthAnti3Xt2) + (PDupwindNthSymm1B2
- - PDupwindNthSymm1Xt2)*Abs(beta1L) + (PDupwindNthSymm2B2 -
- PDupwindNthSymm2Xt2)*Abs(beta2L) + (PDupwindNthSymm3B2 -
- PDupwindNthSymm3Xt2)*Abs(beta3L))*ToReal(ShiftAdvectionCoeff) +
- (beta1L*PDupwindNthAnti1Xt2 + beta2L*PDupwindNthAnti2Xt2 +
- beta3L*PDupwindNthAnti3Xt2 + PDupwindNthSymm1Xt2*Abs(beta1L) +
- PDupwindNthSymm2Xt2*Abs(beta2L) +
- PDupwindNthSymm3Xt2*Abs(beta3L))*ToReal(ShiftBCoeff);
-
- B3rhsL = B3rhsL + (beta1L*(PDupwindNthAnti1B3 - PDupwindNthAnti1Xt3) +
- beta2L*(PDupwindNthAnti2B3 - PDupwindNthAnti2Xt3) +
- beta3L*(PDupwindNthAnti3B3 - PDupwindNthAnti3Xt3) + (PDupwindNthSymm1B3
- - PDupwindNthSymm1Xt3)*Abs(beta1L) + (PDupwindNthSymm2B3 -
- PDupwindNthSymm2Xt3)*Abs(beta2L) + (PDupwindNthSymm3B3 -
- PDupwindNthSymm3Xt3)*Abs(beta3L))*ToReal(ShiftAdvectionCoeff) +
- (beta1L*PDupwindNthAnti1Xt3 + beta2L*PDupwindNthAnti2Xt3 +
- beta3L*PDupwindNthAnti3Xt3 + PDupwindNthSymm1Xt3*Abs(beta1L) +
- PDupwindNthSymm2Xt3*Abs(beta2L) +
- PDupwindNthSymm3Xt3*Abs(beta3L))*ToReal(ShiftBCoeff);
-
- /* Copy local copies back to grid functions */
- alpharhs[index] = alpharhsL;
- Arhs[index] = ArhsL;
- At11rhs[index] = At11rhsL;
- At12rhs[index] = At12rhsL;
- At13rhs[index] = At13rhsL;
- At22rhs[index] = At22rhsL;
- At23rhs[index] = At23rhsL;
- At33rhs[index] = At33rhsL;
- B1rhs[index] = B1rhsL;
- B2rhs[index] = B2rhsL;
- B3rhs[index] = B3rhsL;
- beta1rhs[index] = beta1rhsL;
- beta2rhs[index] = beta2rhsL;
- beta3rhs[index] = beta3rhsL;
- gt11rhs[index] = gt11rhsL;
- gt12rhs[index] = gt12rhsL;
- gt13rhs[index] = gt13rhsL;
- gt22rhs[index] = gt22rhsL;
- gt23rhs[index] = gt23rhsL;
- gt33rhs[index] = gt33rhsL;
- phirhs[index] = phirhsL;
- trKrhs[index] = trKrhsL;
- Xt1rhs[index] = Xt1rhsL;
- Xt2rhs[index] = Xt2rhsL;
- Xt3rhs[index] = Xt3rhsL;
+ 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 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 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 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 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 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 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)));
+
+ 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)));
+
+ 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)));
+
+ 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)));
+
+ 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)));
+
+ 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)));
+
+ 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;
+
+ JacPDupwindNthAnti1trK = PDupwindNthAnti1trK;
+
+ JacPDupwindNthAnti1Xt1 = PDupwindNthAnti1Xt1;
+
+ JacPDupwindNthAnti1Xt2 = PDupwindNthAnti1Xt2;
+
+ JacPDupwindNthAnti1Xt3 = PDupwindNthAnti1Xt3;
+
+ JacPDupwindNthSymm1A = PDupwindNthSymm1A;
+
+ JacPDupwindNthSymm1alpha = PDupwindNthSymm1alpha;
+
+ JacPDupwindNthSymm1At11 = PDupwindNthSymm1At11;
+
+ JacPDupwindNthSymm1At12 = PDupwindNthSymm1At12;
+
+ JacPDupwindNthSymm1At13 = PDupwindNthSymm1At13;
+
+ JacPDupwindNthSymm1At22 = PDupwindNthSymm1At22;
+
+ JacPDupwindNthSymm1At23 = PDupwindNthSymm1At23;
+
+ JacPDupwindNthSymm1At33 = PDupwindNthSymm1At33;
+
+ JacPDupwindNthSymm1B1 = PDupwindNthSymm1B1;
+
+ JacPDupwindNthSymm1B2 = PDupwindNthSymm1B2;
+
+ JacPDupwindNthSymm1B3 = PDupwindNthSymm1B3;
+
+ JacPDupwindNthSymm1beta1 = PDupwindNthSymm1beta1;
+
+ JacPDupwindNthSymm1beta2 = PDupwindNthSymm1beta2;
+
+ JacPDupwindNthSymm1beta3 = PDupwindNthSymm1beta3;
+
+ JacPDupwindNthSymm1gt11 = PDupwindNthSymm1gt11;
+
+ JacPDupwindNthSymm1gt12 = PDupwindNthSymm1gt12;
+
+ JacPDupwindNthSymm1gt13 = PDupwindNthSymm1gt13;
+
+ JacPDupwindNthSymm1gt22 = PDupwindNthSymm1gt22;
+
+ JacPDupwindNthSymm1gt23 = PDupwindNthSymm1gt23;
+
+ JacPDupwindNthSymm1gt33 = PDupwindNthSymm1gt33;
+
+ JacPDupwindNthSymm1phi = PDupwindNthSymm1phi;
+
+ JacPDupwindNthSymm1trK = PDupwindNthSymm1trK;
+
+ JacPDupwindNthSymm1Xt1 = PDupwindNthSymm1Xt1;
+
+ JacPDupwindNthSymm1Xt2 = PDupwindNthSymm1Xt2;
+
+ JacPDupwindNthSymm1Xt3 = PDupwindNthSymm1Xt3;
+
+ JacPDupwindNthAnti2A = PDupwindNthAnti2A;
+
+ JacPDupwindNthAnti2alpha = PDupwindNthAnti2alpha;
+
+ JacPDupwindNthAnti2At11 = PDupwindNthAnti2At11;
+
+ JacPDupwindNthAnti2At12 = PDupwindNthAnti2At12;
+
+ JacPDupwindNthAnti2At13 = PDupwindNthAnti2At13;
+
+ JacPDupwindNthAnti2At22 = PDupwindNthAnti2At22;
+
+ JacPDupwindNthAnti2At23 = PDupwindNthAnti2At23;
+
+ JacPDupwindNthAnti2At33 = PDupwindNthAnti2At33;
+
+ JacPDupwindNthAnti2B1 = PDupwindNthAnti2B1;
+
+ JacPDupwindNthAnti2B2 = PDupwindNthAnti2B2;
+
+ JacPDupwindNthAnti2B3 = PDupwindNthAnti2B3;
+
+ JacPDupwindNthAnti2beta1 = PDupwindNthAnti2beta1;
+
+ JacPDupwindNthAnti2beta2 = PDupwindNthAnti2beta2;
+
+ JacPDupwindNthAnti2beta3 = PDupwindNthAnti2beta3;
+
+ JacPDupwindNthAnti2gt11 = PDupwindNthAnti2gt11;
+
+ JacPDupwindNthAnti2gt12 = PDupwindNthAnti2gt12;
+
+ JacPDupwindNthAnti2gt13 = PDupwindNthAnti2gt13;
+
+ JacPDupwindNthAnti2gt22 = PDupwindNthAnti2gt22;
+
+ JacPDupwindNthAnti2gt23 = PDupwindNthAnti2gt23;
+
+ JacPDupwindNthAnti2gt33 = PDupwindNthAnti2gt33;
+
+ JacPDupwindNthAnti2phi = PDupwindNthAnti2phi;
+
+ JacPDupwindNthAnti2trK = PDupwindNthAnti2trK;
+
+ JacPDupwindNthAnti2Xt1 = PDupwindNthAnti2Xt1;
+
+ JacPDupwindNthAnti2Xt2 = PDupwindNthAnti2Xt2;
+
+ JacPDupwindNthAnti2Xt3 = PDupwindNthAnti2Xt3;
+
+ JacPDupwindNthSymm2A = PDupwindNthSymm2A;
+
+ JacPDupwindNthSymm2alpha = PDupwindNthSymm2alpha;
+
+ JacPDupwindNthSymm2At11 = PDupwindNthSymm2At11;
+
+ JacPDupwindNthSymm2At12 = PDupwindNthSymm2At12;
+
+ JacPDupwindNthSymm2At13 = PDupwindNthSymm2At13;
+
+ JacPDupwindNthSymm2At22 = PDupwindNthSymm2At22;
+
+ JacPDupwindNthSymm2At23 = PDupwindNthSymm2At23;
+
+ JacPDupwindNthSymm2At33 = PDupwindNthSymm2At33;
+
+ JacPDupwindNthSymm2B1 = PDupwindNthSymm2B1;
+
+ JacPDupwindNthSymm2B2 = PDupwindNthSymm2B2;
+
+ JacPDupwindNthSymm2B3 = PDupwindNthSymm2B3;
+
+ JacPDupwindNthSymm2beta1 = PDupwindNthSymm2beta1;
+
+ JacPDupwindNthSymm2beta2 = PDupwindNthSymm2beta2;
+
+ JacPDupwindNthSymm2beta3 = PDupwindNthSymm2beta3;
+
+ JacPDupwindNthSymm2gt11 = PDupwindNthSymm2gt11;
+
+ JacPDupwindNthSymm2gt12 = PDupwindNthSymm2gt12;
+
+ JacPDupwindNthSymm2gt13 = PDupwindNthSymm2gt13;
+
+ JacPDupwindNthSymm2gt22 = PDupwindNthSymm2gt22;
+
+ JacPDupwindNthSymm2gt23 = PDupwindNthSymm2gt23;
+
+ JacPDupwindNthSymm2gt33 = PDupwindNthSymm2gt33;
+
+ JacPDupwindNthSymm2phi = PDupwindNthSymm2phi;
+
+ JacPDupwindNthSymm2trK = PDupwindNthSymm2trK;
+
+ JacPDupwindNthSymm2Xt1 = PDupwindNthSymm2Xt1;
+
+ JacPDupwindNthSymm2Xt2 = PDupwindNthSymm2Xt2;
+
+ JacPDupwindNthSymm2Xt3 = PDupwindNthSymm2Xt3;
+
+ JacPDupwindNthAnti3A = PDupwindNthAnti3A;
+
+ JacPDupwindNthAnti3alpha = PDupwindNthAnti3alpha;
+
+ JacPDupwindNthAnti3At11 = PDupwindNthAnti3At11;
+
+ JacPDupwindNthAnti3At12 = PDupwindNthAnti3At12;
+
+ JacPDupwindNthAnti3At13 = PDupwindNthAnti3At13;
+
+ JacPDupwindNthAnti3At22 = PDupwindNthAnti3At22;
+
+ JacPDupwindNthAnti3At23 = PDupwindNthAnti3At23;
+
+ JacPDupwindNthAnti3At33 = PDupwindNthAnti3At33;
+
+ JacPDupwindNthAnti3B1 = PDupwindNthAnti3B1;
+
+ JacPDupwindNthAnti3B2 = PDupwindNthAnti3B2;
+
+ JacPDupwindNthAnti3B3 = PDupwindNthAnti3B3;
+
+ JacPDupwindNthAnti3beta1 = PDupwindNthAnti3beta1;
+
+ JacPDupwindNthAnti3beta2 = PDupwindNthAnti3beta2;
+
+ JacPDupwindNthAnti3beta3 = PDupwindNthAnti3beta3;
+
+ JacPDupwindNthAnti3gt11 = PDupwindNthAnti3gt11;
+
+ JacPDupwindNthAnti3gt12 = PDupwindNthAnti3gt12;
+
+ JacPDupwindNthAnti3gt13 = PDupwindNthAnti3gt13;
+
+ JacPDupwindNthAnti3gt22 = PDupwindNthAnti3gt22;
+
+ JacPDupwindNthAnti3gt23 = PDupwindNthAnti3gt23;
+
+ JacPDupwindNthAnti3gt33 = PDupwindNthAnti3gt33;
+
+ JacPDupwindNthAnti3phi = PDupwindNthAnti3phi;
+
+ JacPDupwindNthAnti3trK = PDupwindNthAnti3trK;
+
+ JacPDupwindNthAnti3Xt1 = PDupwindNthAnti3Xt1;
+
+ JacPDupwindNthAnti3Xt2 = PDupwindNthAnti3Xt2;
+
+ JacPDupwindNthAnti3Xt3 = PDupwindNthAnti3Xt3;
+
+ JacPDupwindNthSymm3A = PDupwindNthSymm3A;
+
+ JacPDupwindNthSymm3alpha = PDupwindNthSymm3alpha;
+
+ JacPDupwindNthSymm3At11 = PDupwindNthSymm3At11;
+
+ JacPDupwindNthSymm3At12 = PDupwindNthSymm3At12;
+
+ JacPDupwindNthSymm3At13 = PDupwindNthSymm3At13;
+
+ JacPDupwindNthSymm3At22 = PDupwindNthSymm3At22;
+
+ JacPDupwindNthSymm3At23 = PDupwindNthSymm3At23;
+
+ JacPDupwindNthSymm3At33 = PDupwindNthSymm3At33;
+
+ JacPDupwindNthSymm3B1 = PDupwindNthSymm3B1;
+
+ JacPDupwindNthSymm3B2 = PDupwindNthSymm3B2;
+
+ JacPDupwindNthSymm3B3 = PDupwindNthSymm3B3;
+
+ JacPDupwindNthSymm3beta1 = PDupwindNthSymm3beta1;
+
+ JacPDupwindNthSymm3beta2 = PDupwindNthSymm3beta2;
+
+ JacPDupwindNthSymm3beta3 = PDupwindNthSymm3beta3;
+
+ JacPDupwindNthSymm3gt11 = PDupwindNthSymm3gt11;
+
+ JacPDupwindNthSymm3gt12 = PDupwindNthSymm3gt12;
+
+ JacPDupwindNthSymm3gt13 = PDupwindNthSymm3gt13;
+
+ JacPDupwindNthSymm3gt22 = PDupwindNthSymm3gt22;
+
+ JacPDupwindNthSymm3gt23 = PDupwindNthSymm3gt23;
+
+ JacPDupwindNthSymm3gt33 = PDupwindNthSymm3gt33;
+
+ JacPDupwindNthSymm3phi = PDupwindNthSymm3phi;
+
+ JacPDupwindNthSymm3trK = PDupwindNthSymm3trK;
+
+ JacPDupwindNthSymm3Xt1 = PDupwindNthSymm3Xt1;
+
+ JacPDupwindNthSymm3Xt2 = PDupwindNthSymm3Xt2;
+
+ JacPDupwindNthSymm3Xt3 = PDupwindNthSymm3Xt3;
+ }
+
+ phirhsL =
+ kmadd(beta1L,JacPDupwindNthAnti1phi,kmadd(beta2L,JacPDupwindNthAnti2phi,kmadd(beta3L,JacPDupwindNthAnti3phi,kadd(phirhsL,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 =
+ kmadd(beta1L,JacPDupwindNthAnti1Xt1,kmadd(beta2L,JacPDupwindNthAnti2Xt1,kmadd(beta3L,JacPDupwindNthAnti3Xt1,kadd(Xt1rhsL,kmadd(JacPDupwindNthSymm1Xt1,kfabs(beta1L),kmadd(JacPDupwindNthSymm2Xt1,kfabs(beta2L),kmul(JacPDupwindNthSymm3Xt1,kfabs(beta3L))))))));
+
+ Xt2rhsL =
+ kmadd(beta1L,JacPDupwindNthAnti1Xt2,kmadd(beta2L,JacPDupwindNthAnti2Xt2,kmadd(beta3L,JacPDupwindNthAnti3Xt2,kadd(Xt2rhsL,kmadd(JacPDupwindNthSymm1Xt2,kfabs(beta1L),kmadd(JacPDupwindNthSymm2Xt2,kfabs(beta2L),kmul(JacPDupwindNthSymm3Xt2,kfabs(beta3L))))))));
+
+ Xt3rhsL =
+ kmadd(beta1L,JacPDupwindNthAnti1Xt3,kmadd(beta2L,JacPDupwindNthAnti2Xt3,kmadd(beta3L,JacPDupwindNthAnti3Xt3,kadd(Xt3rhsL,kmadd(JacPDupwindNthSymm1Xt3,kfabs(beta1L),kmadd(JacPDupwindNthSymm2Xt3,kfabs(beta2L),kmul(JacPDupwindNthSymm3Xt3,kfabs(beta3L))))))));
+
+ trKrhsL =
+ kmadd(beta1L,JacPDupwindNthAnti1trK,kmadd(beta2L,JacPDupwindNthAnti2trK,kmadd(beta3L,JacPDupwindNthAnti3trK,kadd(trKrhsL,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(kmadd(beta1L,JacPDupwindNthAnti1A,kmadd(beta2L,JacPDupwindNthAnti2A,kmadd(beta3L,JacPDupwindNthAnti3A,kmadd(JacPDupwindNthSymm1A,kfabs(beta1L),kmadd(JacPDupwindNthSymm2A,kfabs(beta2L),kmul(JacPDupwindNthSymm3A,kfabs(beta3L))))))),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 =
+ kadd(B1rhsL,kmadd(kmadd(beta1L,ksub(JacPDupwindNthAnti1B1,JacPDupwindNthAnti1Xt1),kmadd(beta2L,ksub(JacPDupwindNthAnti2B1,JacPDupwindNthAnti2Xt1),kmadd(beta3L,ksub(JacPDupwindNthAnti3B1,JacPDupwindNthAnti3Xt1),kmadd(kfabs(beta1L),ksub(JacPDupwindNthSymm1B1,JacPDupwindNthSymm1Xt1),kmadd(kfabs(beta2L),ksub(JacPDupwindNthSymm2B1,JacPDupwindNthSymm2Xt1),kmul(kfabs(beta3L),ksub(JacPDupwindNthSymm3B1,JacPDupwindNthSymm3Xt1))))))),ToReal(ShiftAdvectionCoeff),kmul(kmadd(beta1L,JacPDupwindNthAnti1Xt1,kmadd(beta2L,JacPDupwindNthAnti2Xt1,kmadd(beta3L,JacPDupwindNthAnti3Xt1,kmadd(JacPDupwindNthSymm1Xt1,kfabs(beta1L),kmadd(JacPDupwindNthSymm2Xt1,kfabs(beta2L),kmul(JacPDupwindNthSymm3Xt1,kfabs(beta3L))))))),ToReal(ShiftBCoeff))));
+
+ B2rhsL =
+ kadd(B2rhsL,kmadd(kmadd(beta1L,ksub(JacPDupwindNthAnti1B2,JacPDupwindNthAnti1Xt2),kmadd(beta2L,ksub(JacPDupwindNthAnti2B2,JacPDupwindNthAnti2Xt2),kmadd(beta3L,ksub(JacPDupwindNthAnti3B2,JacPDupwindNthAnti3Xt2),kmadd(kfabs(beta1L),ksub(JacPDupwindNthSymm1B2,JacPDupwindNthSymm1Xt2),kmadd(kfabs(beta2L),ksub(JacPDupwindNthSymm2B2,JacPDupwindNthSymm2Xt2),kmul(kfabs(beta3L),ksub(JacPDupwindNthSymm3B2,JacPDupwindNthSymm3Xt2))))))),ToReal(ShiftAdvectionCoeff),kmul(kmadd(beta1L,JacPDupwindNthAnti1Xt2,kmadd(beta2L,JacPDupwindNthAnti2Xt2,kmadd(beta3L,JacPDupwindNthAnti3Xt2,kmadd(JacPDupwindNthSymm1Xt2,kfabs(beta1L),kmadd(JacPDupwindNthSymm2Xt2,kfabs(beta2L),kmul(JacPDupwindNthSymm3Xt2,kfabs(beta3L))))))),ToReal(ShiftBCoeff))));
+
+ B3rhsL =
+ kadd(B3rhsL,kmadd(kmadd(beta1L,ksub(JacPDupwindNthAnti1B3,JacPDupwindNthAnti1Xt3),kmadd(beta2L,ksub(JacPDupwindNthAnti2B3,JacPDupwindNthAnti2Xt3),kmadd(beta3L,ksub(JacPDupwindNthAnti3B3,JacPDupwindNthAnti3Xt3),kmadd(kfabs(beta1L),ksub(JacPDupwindNthSymm1B3,JacPDupwindNthSymm1Xt3),kmadd(kfabs(beta2L),ksub(JacPDupwindNthSymm2B3,JacPDupwindNthSymm2Xt3),kmul(kfabs(beta3L),ksub(JacPDupwindNthSymm3B3,JacPDupwindNthSymm3Xt3))))))),ToReal(ShiftAdvectionCoeff),kmul(kmadd(beta1L,JacPDupwindNthAnti1Xt3,kmadd(beta2L,JacPDupwindNthAnti2Xt3,kmadd(beta3L,JacPDupwindNthAnti3Xt3,kmadd(JacPDupwindNthSymm1Xt3,kfabs(beta1L),kmadd(JacPDupwindNthSymm2Xt3,kfabs(beta2L),kmul(JacPDupwindNthSymm3Xt3,kfabs(beta3L))))))),ToReal(ShiftBCoeff))));
+
+ /* 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(Arhs[index],ArhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At11rhs[index],At11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At12rhs[index],At12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At13rhs[index],At13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At22rhs[index],At22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At23rhs[index],At23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At33rhs[index],At33rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B1rhs[index],B1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B2rhs[index],B2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt12rhs[index],gt12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt13rhs[index],gt13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt22rhs[index],gt22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt23rhs[index],gt23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt33rhs[index],gt33rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(phirhs[index],phirhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(trKrhs[index],trKrhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt1rhs[index],Xt1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt2rhs[index],Xt2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt3rhs[index],Xt3rhsL,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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_hi(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_hi(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_hi(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_hi(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_hi(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_hi(At33rhs[index],At33rhsL,elt_count);
+ vec_store_nta_partial_hi(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_hi(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_hi(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_hi(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_hi(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_hi(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_hi(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_hi(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_hi(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_hi(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_hi(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt3rhs[index],Xt3rhsL,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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_lo(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_lo(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_lo(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_lo(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_lo(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_lo(At33rhs[index],At33rhsL,elt_count);
+ vec_store_nta_partial_lo(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_lo(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_lo(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_lo(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_lo(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_lo(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_lo(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_lo(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_lo(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_lo(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_lo(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt3rhs[index],Xt3rhsL,elt_count);
+ break;
+ }
+ vec_store_nta(alpharhs[index],alpharhsL);
+ vec_store_nta(Arhs[index],ArhsL);
+ vec_store_nta(At11rhs[index],At11rhsL);
+ vec_store_nta(At12rhs[index],At12rhsL);
+ vec_store_nta(At13rhs[index],At13rhsL);
+ vec_store_nta(At22rhs[index],At22rhsL);
+ vec_store_nta(At23rhs[index],At23rhsL);
+ vec_store_nta(At33rhs[index],At33rhsL);
+ vec_store_nta(B1rhs[index],B1rhsL);
+ vec_store_nta(B2rhs[index],B2rhsL);
+ vec_store_nta(B3rhs[index],B3rhsL);
+ vec_store_nta(beta1rhs[index],beta1rhsL);
+ vec_store_nta(beta2rhs[index],beta2rhsL);
+ vec_store_nta(beta3rhs[index],beta3rhsL);
+ vec_store_nta(gt11rhs[index],gt11rhsL);
+ vec_store_nta(gt12rhs[index],gt12rhsL);
+ vec_store_nta(gt13rhs[index],gt13rhsL);
+ vec_store_nta(gt22rhs[index],gt22rhsL);
+ vec_store_nta(gt23rhs[index],gt23rhsL);
+ vec_store_nta(gt33rhs[index],gt33rhsL);
+ vec_store_nta(phirhs[index],phirhsL);
+ vec_store_nta(trKrhs[index],trKrhsL);
+ vec_store_nta(Xt1rhs[index],Xt1rhsL);
+ vec_store_nta(Xt2rhs[index],Xt2rhsL);
+ vec_store_nta(Xt3rhs[index],Xt3rhsL);
}
- LC_ENDLOOP3 (ML_BSSN_Advect);
+ LC_ENDLOOP3VEC (ML_BSSN_Advect);
}
extern "C" void ML_BSSN_Advect(CCTK_ARGUMENTS)
@@ -521,5 +2193,43 @@ extern "C" void ML_BSSN_Advect(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_Advect_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_Advect_calc_every != ML_BSSN_Advect_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN::ML_curv","ML_BSSN::ML_curvrhs","ML_BSSN::ML_dtlapse","ML_BSSN::ML_dtlapserhs","ML_BSSN::ML_dtshift","ML_BSSN::ML_dtshiftrhs","ML_BSSN::ML_Gamma","ML_BSSN::ML_Gammarhs","ML_BSSN::ML_lapse","ML_BSSN::ML_lapserhs","ML_BSSN::ML_log_confac","ML_BSSN::ML_log_confacrhs","ML_BSSN::ML_metric","ML_BSSN::ML_metricrhs","ML_BSSN::ML_shift","ML_BSSN::ML_shiftrhs","ML_BSSN::ML_trace_curv","ML_BSSN::ML_trace_curvrhs"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_Advect", 18, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_Advect", 2, 2, 2);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_Advect", 3, 3, 3);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_Advect", 4, 4, 4);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_Advect", 5, 5, 5);
+ break;
+ }
+
GenericFD_LoopOverInterior(cctkGH, &ML_BSSN_Advect_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_Advect_Body");
+ }
}
diff --git a/ML_BSSN/src/ML_BSSN_Dissipation.cc b/ML_BSSN/src/ML_BSSN_Dissipation.cc
index 110c5bb..12b950e 100644
--- a/ML_BSSN/src/ML_BSSN_Dissipation.cc
+++ b/ML_BSSN/src/ML_BSSN_Dissipation.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_Dissipation_SelectBCs(CCTK_ARGUMENTS)
{
@@ -57,7 +58,7 @@ extern "C" void ML_BSSN_Dissipation_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_BSSN_Dissipation_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_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;
@@ -65,21 +66,6 @@ static void ML_BSSN_Dissipation_Body(cGH const * restrict const cctkGH, int cons
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_Dissipation_Body");
- }
-
- if (cctk_iteration % ML_BSSN_Dissipation_calc_every != ML_BSSN_Dissipation_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN::ML_curv","ML_BSSN::ML_curvrhs","ML_BSSN::ML_dtlapse","ML_BSSN::ML_dtlapserhs","ML_BSSN::ML_dtshift","ML_BSSN::ML_dtshiftrhs","ML_BSSN::ML_Gamma","ML_BSSN::ML_Gammarhs","ML_BSSN::ML_lapse","ML_BSSN::ML_lapserhs","ML_BSSN::ML_log_confac","ML_BSSN::ML_log_confacrhs","ML_BSSN::ML_metric","ML_BSSN::ML_metricrhs","ML_BSSN::ML_shift","ML_BSSN::ML_shiftrhs","ML_BSSN::ML_trace_curv","ML_BSSN::ML_trace_curvrhs"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_Dissipation", 18, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_Dissipation", 3, 3, 3);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -89,298 +75,1292 @@ static void ML_BSSN_Dissipation_Body(cGH const * restrict const cctkGH, int cons
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const p1o24dx = 0.0416666666666666666666666666667*INV(dx);
- CCTK_REAL const p1o24dy = 0.0416666666666666666666666666667*INV(dy);
- CCTK_REAL const p1o24dz = 0.0416666666666666666666666666667*INV(dz);
- CCTK_REAL const p1o64dx = 0.015625*INV(dx);
- CCTK_REAL const p1o64dy = 0.015625*INV(dy);
- CCTK_REAL const p1o64dz = 0.015625*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_Dissipation,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_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 AL = A[index];
- CCTK_REAL alphaL = alpha[index];
- CCTK_REAL alpharhsL = alpharhs[index];
- CCTK_REAL ArhsL = Arhs[index];
- CCTK_REAL At11L = At11[index];
- CCTK_REAL At11rhsL = At11rhs[index];
- CCTK_REAL At12L = At12[index];
- CCTK_REAL At12rhsL = At12rhs[index];
- CCTK_REAL At13L = At13[index];
- CCTK_REAL At13rhsL = At13rhs[index];
- CCTK_REAL At22L = At22[index];
- CCTK_REAL At22rhsL = At22rhs[index];
- CCTK_REAL At23L = At23[index];
- CCTK_REAL At23rhsL = At23rhs[index];
- CCTK_REAL At33L = At33[index];
- CCTK_REAL At33rhsL = At33rhs[index];
- CCTK_REAL B1L = B1[index];
- CCTK_REAL B1rhsL = B1rhs[index];
- CCTK_REAL B2L = B2[index];
- CCTK_REAL B2rhsL = B2rhs[index];
- CCTK_REAL B3L = B3[index];
- CCTK_REAL B3rhsL = B3rhs[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta1rhsL = beta1rhs[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta2rhsL = beta2rhs[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL beta3rhsL = beta3rhs[index];
- CCTK_REAL gt11L = gt11[index];
- CCTK_REAL gt11rhsL = gt11rhs[index];
- CCTK_REAL gt12L = gt12[index];
- CCTK_REAL gt12rhsL = gt12rhs[index];
- CCTK_REAL gt13L = gt13[index];
- CCTK_REAL gt13rhsL = gt13rhs[index];
- CCTK_REAL gt22L = gt22[index];
- CCTK_REAL gt22rhsL = gt22rhs[index];
- CCTK_REAL gt23L = gt23[index];
- CCTK_REAL gt23rhsL = gt23rhs[index];
- CCTK_REAL gt33L = gt33[index];
- CCTK_REAL gt33rhsL = gt33rhs[index];
- CCTK_REAL phiL = phi[index];
- CCTK_REAL phirhsL = phirhs[index];
- CCTK_REAL trKL = trK[index];
- CCTK_REAL trKrhsL = trKrhs[index];
- CCTK_REAL Xt1L = Xt1[index];
- CCTK_REAL Xt1rhsL = Xt1rhs[index];
- CCTK_REAL Xt2L = Xt2[index];
- CCTK_REAL Xt2rhsL = Xt2rhs[index];
- CCTK_REAL Xt3L = Xt3[index];
- CCTK_REAL Xt3rhsL = Xt3rhs[index];
+ CCTK_REAL_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 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 const PDdissipationNth1A = PDdissipationNth1(&A[index]);
- CCTK_REAL const PDdissipationNth2A = PDdissipationNth2(&A[index]);
- CCTK_REAL const PDdissipationNth3A = PDdissipationNth3(&A[index]);
- CCTK_REAL const PDdissipationNth1alpha = PDdissipationNth1(&alpha[index]);
- CCTK_REAL const PDdissipationNth2alpha = PDdissipationNth2(&alpha[index]);
- CCTK_REAL const PDdissipationNth3alpha = PDdissipationNth3(&alpha[index]);
- CCTK_REAL const PDdissipationNth1At11 = PDdissipationNth1(&At11[index]);
- CCTK_REAL const PDdissipationNth2At11 = PDdissipationNth2(&At11[index]);
- CCTK_REAL const PDdissipationNth3At11 = PDdissipationNth3(&At11[index]);
- CCTK_REAL const PDdissipationNth1At12 = PDdissipationNth1(&At12[index]);
- CCTK_REAL const PDdissipationNth2At12 = PDdissipationNth2(&At12[index]);
- CCTK_REAL const PDdissipationNth3At12 = PDdissipationNth3(&At12[index]);
- CCTK_REAL const PDdissipationNth1At13 = PDdissipationNth1(&At13[index]);
- CCTK_REAL const PDdissipationNth2At13 = PDdissipationNth2(&At13[index]);
- CCTK_REAL const PDdissipationNth3At13 = PDdissipationNth3(&At13[index]);
- CCTK_REAL const PDdissipationNth1At22 = PDdissipationNth1(&At22[index]);
- CCTK_REAL const PDdissipationNth2At22 = PDdissipationNth2(&At22[index]);
- CCTK_REAL const PDdissipationNth3At22 = PDdissipationNth3(&At22[index]);
- CCTK_REAL const PDdissipationNth1At23 = PDdissipationNth1(&At23[index]);
- CCTK_REAL const PDdissipationNth2At23 = PDdissipationNth2(&At23[index]);
- CCTK_REAL const PDdissipationNth3At23 = PDdissipationNth3(&At23[index]);
- CCTK_REAL const PDdissipationNth1At33 = PDdissipationNth1(&At33[index]);
- CCTK_REAL const PDdissipationNth2At33 = PDdissipationNth2(&At33[index]);
- CCTK_REAL const PDdissipationNth3At33 = PDdissipationNth3(&At33[index]);
- CCTK_REAL const PDdissipationNth1B1 = PDdissipationNth1(&B1[index]);
- CCTK_REAL const PDdissipationNth2B1 = PDdissipationNth2(&B1[index]);
- CCTK_REAL const PDdissipationNth3B1 = PDdissipationNth3(&B1[index]);
- CCTK_REAL const PDdissipationNth1B2 = PDdissipationNth1(&B2[index]);
- CCTK_REAL const PDdissipationNth2B2 = PDdissipationNth2(&B2[index]);
- CCTK_REAL const PDdissipationNth3B2 = PDdissipationNth3(&B2[index]);
- CCTK_REAL const PDdissipationNth1B3 = PDdissipationNth1(&B3[index]);
- CCTK_REAL const PDdissipationNth2B3 = PDdissipationNth2(&B3[index]);
- CCTK_REAL const PDdissipationNth3B3 = PDdissipationNth3(&B3[index]);
- CCTK_REAL const PDdissipationNth1beta1 = PDdissipationNth1(&beta1[index]);
- CCTK_REAL const PDdissipationNth2beta1 = PDdissipationNth2(&beta1[index]);
- CCTK_REAL const PDdissipationNth3beta1 = PDdissipationNth3(&beta1[index]);
- CCTK_REAL const PDdissipationNth1beta2 = PDdissipationNth1(&beta2[index]);
- CCTK_REAL const PDdissipationNth2beta2 = PDdissipationNth2(&beta2[index]);
- CCTK_REAL const PDdissipationNth3beta2 = PDdissipationNth3(&beta2[index]);
- CCTK_REAL const PDdissipationNth1beta3 = PDdissipationNth1(&beta3[index]);
- CCTK_REAL const PDdissipationNth2beta3 = PDdissipationNth2(&beta3[index]);
- CCTK_REAL const PDdissipationNth3beta3 = PDdissipationNth3(&beta3[index]);
- CCTK_REAL const PDdissipationNth1gt11 = PDdissipationNth1(&gt11[index]);
- CCTK_REAL const PDdissipationNth2gt11 = PDdissipationNth2(&gt11[index]);
- CCTK_REAL const PDdissipationNth3gt11 = PDdissipationNth3(&gt11[index]);
- CCTK_REAL const PDdissipationNth1gt12 = PDdissipationNth1(&gt12[index]);
- CCTK_REAL const PDdissipationNth2gt12 = PDdissipationNth2(&gt12[index]);
- CCTK_REAL const PDdissipationNth3gt12 = PDdissipationNth3(&gt12[index]);
- CCTK_REAL const PDdissipationNth1gt13 = PDdissipationNth1(&gt13[index]);
- CCTK_REAL const PDdissipationNth2gt13 = PDdissipationNth2(&gt13[index]);
- CCTK_REAL const PDdissipationNth3gt13 = PDdissipationNth3(&gt13[index]);
- CCTK_REAL const PDdissipationNth1gt22 = PDdissipationNth1(&gt22[index]);
- CCTK_REAL const PDdissipationNth2gt22 = PDdissipationNth2(&gt22[index]);
- CCTK_REAL const PDdissipationNth3gt22 = PDdissipationNth3(&gt22[index]);
- CCTK_REAL const PDdissipationNth1gt23 = PDdissipationNth1(&gt23[index]);
- CCTK_REAL const PDdissipationNth2gt23 = PDdissipationNth2(&gt23[index]);
- CCTK_REAL const PDdissipationNth3gt23 = PDdissipationNth3(&gt23[index]);
- CCTK_REAL const PDdissipationNth1gt33 = PDdissipationNth1(&gt33[index]);
- CCTK_REAL const PDdissipationNth2gt33 = PDdissipationNth2(&gt33[index]);
- CCTK_REAL const PDdissipationNth3gt33 = PDdissipationNth3(&gt33[index]);
- CCTK_REAL const PDdissipationNth1phi = PDdissipationNth1(&phi[index]);
- CCTK_REAL const PDdissipationNth2phi = PDdissipationNth2(&phi[index]);
- CCTK_REAL const PDdissipationNth3phi = PDdissipationNth3(&phi[index]);
- CCTK_REAL const PDdissipationNth1trK = PDdissipationNth1(&trK[index]);
- CCTK_REAL const PDdissipationNth2trK = PDdissipationNth2(&trK[index]);
- CCTK_REAL const PDdissipationNth3trK = PDdissipationNth3(&trK[index]);
- CCTK_REAL const PDdissipationNth1Xt1 = PDdissipationNth1(&Xt1[index]);
- CCTK_REAL const PDdissipationNth2Xt1 = PDdissipationNth2(&Xt1[index]);
- CCTK_REAL const PDdissipationNth3Xt1 = PDdissipationNth3(&Xt1[index]);
- CCTK_REAL const PDdissipationNth1Xt2 = PDdissipationNth1(&Xt2[index]);
- CCTK_REAL const PDdissipationNth2Xt2 = PDdissipationNth2(&Xt2[index]);
- CCTK_REAL const PDdissipationNth3Xt2 = PDdissipationNth3(&Xt2[index]);
- CCTK_REAL const PDdissipationNth1Xt3 = PDdissipationNth1(&Xt3[index]);
- CCTK_REAL const PDdissipationNth2Xt3 = PDdissipationNth2(&Xt3[index]);
- CCTK_REAL const PDdissipationNth3Xt3 = PDdissipationNth3(&Xt3[index]);
+ 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 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]);
+ 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]);
+ 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]);
+ 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]);
+ 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 epsdiss1 = ToReal(EpsDiss);
+ 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 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 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 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)));
+
+ 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)));
+
+ 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)));
+
+ 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;
+
+ JacPDdissipationNth1trK = PDdissipationNth1trK;
+
+ JacPDdissipationNth1Xt1 = PDdissipationNth1Xt1;
+
+ JacPDdissipationNth1Xt2 = PDdissipationNth1Xt2;
+
+ JacPDdissipationNth1Xt3 = PDdissipationNth1Xt3;
+
+ JacPDdissipationNth2A = PDdissipationNth2A;
+
+ JacPDdissipationNth2alpha = PDdissipationNth2alpha;
+
+ JacPDdissipationNth2At11 = PDdissipationNth2At11;
+
+ JacPDdissipationNth2At12 = PDdissipationNth2At12;
+
+ JacPDdissipationNth2At13 = PDdissipationNth2At13;
+
+ JacPDdissipationNth2At22 = PDdissipationNth2At22;
+
+ JacPDdissipationNth2At23 = PDdissipationNth2At23;
+
+ JacPDdissipationNth2At33 = PDdissipationNth2At33;
+
+ JacPDdissipationNth2B1 = PDdissipationNth2B1;
+
+ JacPDdissipationNth2B2 = PDdissipationNth2B2;
+
+ JacPDdissipationNth2B3 = PDdissipationNth2B3;
+
+ JacPDdissipationNth2beta1 = PDdissipationNth2beta1;
+
+ JacPDdissipationNth2beta2 = PDdissipationNth2beta2;
+
+ JacPDdissipationNth2beta3 = PDdissipationNth2beta3;
+
+ JacPDdissipationNth2gt11 = PDdissipationNth2gt11;
+
+ JacPDdissipationNth2gt12 = PDdissipationNth2gt12;
+
+ JacPDdissipationNth2gt13 = PDdissipationNth2gt13;
+
+ JacPDdissipationNth2gt22 = PDdissipationNth2gt22;
+
+ JacPDdissipationNth2gt23 = PDdissipationNth2gt23;
+
+ JacPDdissipationNth2gt33 = PDdissipationNth2gt33;
+
+ JacPDdissipationNth2phi = PDdissipationNth2phi;
+
+ JacPDdissipationNth2trK = PDdissipationNth2trK;
+
+ JacPDdissipationNth2Xt1 = PDdissipationNth2Xt1;
+
+ JacPDdissipationNth2Xt2 = PDdissipationNth2Xt2;
+
+ JacPDdissipationNth2Xt3 = PDdissipationNth2Xt3;
+
+ JacPDdissipationNth3A = PDdissipationNth3A;
+
+ JacPDdissipationNth3alpha = PDdissipationNth3alpha;
+
+ JacPDdissipationNth3At11 = PDdissipationNth3At11;
+
+ JacPDdissipationNth3At12 = PDdissipationNth3At12;
+
+ JacPDdissipationNth3At13 = PDdissipationNth3At13;
+
+ JacPDdissipationNth3At22 = PDdissipationNth3At22;
+
+ JacPDdissipationNth3At23 = PDdissipationNth3At23;
+
+ JacPDdissipationNth3At33 = PDdissipationNth3At33;
+
+ JacPDdissipationNth3B1 = PDdissipationNth3B1;
+
+ JacPDdissipationNth3B2 = PDdissipationNth3B2;
+
+ JacPDdissipationNth3B3 = PDdissipationNth3B3;
+
+ JacPDdissipationNth3beta1 = PDdissipationNth3beta1;
+
+ JacPDdissipationNth3beta2 = PDdissipationNth3beta2;
+
+ JacPDdissipationNth3beta3 = PDdissipationNth3beta3;
+
+ JacPDdissipationNth3gt11 = PDdissipationNth3gt11;
+
+ JacPDdissipationNth3gt12 = PDdissipationNth3gt12;
+
+ JacPDdissipationNth3gt13 = PDdissipationNth3gt13;
+
+ JacPDdissipationNth3gt22 = PDdissipationNth3gt22;
+
+ JacPDdissipationNth3gt23 = PDdissipationNth3gt23;
+
+ JacPDdissipationNth3gt33 = PDdissipationNth3gt33;
+
+ JacPDdissipationNth3phi = PDdissipationNth3phi;
+
+ JacPDdissipationNth3trK = PDdissipationNth3trK;
+
+ JacPDdissipationNth3Xt1 = PDdissipationNth3Xt1;
+
+ JacPDdissipationNth3Xt2 = PDdissipationNth3Xt2;
+
+ JacPDdissipationNth3Xt3 = PDdissipationNth3Xt3;
+ }
- CCTK_REAL epsdiss2 = ToReal(EpsDiss);
+ CCTK_REAL_VEC epsdiss1 = ToReal(EpsDiss);
- CCTK_REAL epsdiss3 = ToReal(EpsDiss);
+ CCTK_REAL_VEC epsdiss2 = ToReal(EpsDiss);
- phirhsL = epsdiss1*PDdissipationNth1phi +
- epsdiss2*PDdissipationNth2phi + epsdiss3*PDdissipationNth3phi +
- phirhsL;
+ CCTK_REAL_VEC epsdiss3 = ToReal(EpsDiss);
- gt11rhsL = gt11rhsL + epsdiss1*PDdissipationNth1gt11 +
- epsdiss2*PDdissipationNth2gt11 + epsdiss3*PDdissipationNth3gt11;
+ phirhsL =
+ kmadd(epsdiss1,JacPDdissipationNth1phi,kmadd(epsdiss2,JacPDdissipationNth2phi,kmadd(epsdiss3,JacPDdissipationNth3phi,phirhsL)));
- gt12rhsL = gt12rhsL + epsdiss1*PDdissipationNth1gt12 +
- epsdiss2*PDdissipationNth2gt12 + epsdiss3*PDdissipationNth3gt12;
+ gt11rhsL =
+ kadd(gt11rhsL,kmadd(epsdiss1,JacPDdissipationNth1gt11,kmadd(epsdiss2,JacPDdissipationNth2gt11,kmul(epsdiss3,JacPDdissipationNth3gt11))));
- gt13rhsL = gt13rhsL + epsdiss1*PDdissipationNth1gt13 +
- epsdiss2*PDdissipationNth2gt13 + epsdiss3*PDdissipationNth3gt13;
+ gt12rhsL =
+ kadd(gt12rhsL,kmadd(epsdiss1,JacPDdissipationNth1gt12,kmadd(epsdiss2,JacPDdissipationNth2gt12,kmul(epsdiss3,JacPDdissipationNth3gt12))));
- gt22rhsL = gt22rhsL + epsdiss1*PDdissipationNth1gt22 +
- epsdiss2*PDdissipationNth2gt22 + epsdiss3*PDdissipationNth3gt22;
+ gt13rhsL =
+ kadd(gt13rhsL,kmadd(epsdiss1,JacPDdissipationNth1gt13,kmadd(epsdiss2,JacPDdissipationNth2gt13,kmul(epsdiss3,JacPDdissipationNth3gt13))));
- gt23rhsL = gt23rhsL + epsdiss1*PDdissipationNth1gt23 +
- epsdiss2*PDdissipationNth2gt23 + epsdiss3*PDdissipationNth3gt23;
+ gt22rhsL =
+ kadd(gt22rhsL,kmadd(epsdiss1,JacPDdissipationNth1gt22,kmadd(epsdiss2,JacPDdissipationNth2gt22,kmul(epsdiss3,JacPDdissipationNth3gt22))));
- gt33rhsL = gt33rhsL + epsdiss1*PDdissipationNth1gt33 +
- epsdiss2*PDdissipationNth2gt33 + epsdiss3*PDdissipationNth3gt33;
+ gt23rhsL =
+ kadd(gt23rhsL,kmadd(epsdiss1,JacPDdissipationNth1gt23,kmadd(epsdiss2,JacPDdissipationNth2gt23,kmul(epsdiss3,JacPDdissipationNth3gt23))));
- Xt1rhsL = epsdiss1*PDdissipationNth1Xt1 +
- epsdiss2*PDdissipationNth2Xt1 + epsdiss3*PDdissipationNth3Xt1 +
- Xt1rhsL;
+ gt33rhsL =
+ kadd(gt33rhsL,kmadd(epsdiss1,JacPDdissipationNth1gt33,kmadd(epsdiss2,JacPDdissipationNth2gt33,kmul(epsdiss3,JacPDdissipationNth3gt33))));
- Xt2rhsL = epsdiss1*PDdissipationNth1Xt2 +
- epsdiss2*PDdissipationNth2Xt2 + epsdiss3*PDdissipationNth3Xt2 +
- Xt2rhsL;
+ Xt1rhsL =
+ kmadd(epsdiss1,JacPDdissipationNth1Xt1,kmadd(epsdiss2,JacPDdissipationNth2Xt1,kmadd(epsdiss3,JacPDdissipationNth3Xt1,Xt1rhsL)));
- Xt3rhsL = epsdiss1*PDdissipationNth1Xt3 +
- epsdiss2*PDdissipationNth2Xt3 + epsdiss3*PDdissipationNth3Xt3 +
- Xt3rhsL;
+ Xt2rhsL =
+ kmadd(epsdiss1,JacPDdissipationNth1Xt2,kmadd(epsdiss2,JacPDdissipationNth2Xt2,kmadd(epsdiss3,JacPDdissipationNth3Xt2,Xt2rhsL)));
- trKrhsL = epsdiss1*PDdissipationNth1trK +
- epsdiss2*PDdissipationNth2trK + epsdiss3*PDdissipationNth3trK +
- trKrhsL;
+ Xt3rhsL =
+ kmadd(epsdiss1,JacPDdissipationNth1Xt3,kmadd(epsdiss2,JacPDdissipationNth2Xt3,kmadd(epsdiss3,JacPDdissipationNth3Xt3,Xt3rhsL)));
- At11rhsL = At11rhsL + epsdiss1*PDdissipationNth1At11 +
- epsdiss2*PDdissipationNth2At11 + epsdiss3*PDdissipationNth3At11;
+ trKrhsL =
+ kmadd(epsdiss1,JacPDdissipationNth1trK,kmadd(epsdiss2,JacPDdissipationNth2trK,kmadd(epsdiss3,JacPDdissipationNth3trK,trKrhsL)));
- At12rhsL = At12rhsL + epsdiss1*PDdissipationNth1At12 +
- epsdiss2*PDdissipationNth2At12 + epsdiss3*PDdissipationNth3At12;
+ At11rhsL =
+ kadd(At11rhsL,kmadd(epsdiss1,JacPDdissipationNth1At11,kmadd(epsdiss2,JacPDdissipationNth2At11,kmul(epsdiss3,JacPDdissipationNth3At11))));
- At13rhsL = At13rhsL + epsdiss1*PDdissipationNth1At13 +
- epsdiss2*PDdissipationNth2At13 + epsdiss3*PDdissipationNth3At13;
+ At12rhsL =
+ kadd(At12rhsL,kmadd(epsdiss1,JacPDdissipationNth1At12,kmadd(epsdiss2,JacPDdissipationNth2At12,kmul(epsdiss3,JacPDdissipationNth3At12))));
- At22rhsL = At22rhsL + epsdiss1*PDdissipationNth1At22 +
- epsdiss2*PDdissipationNth2At22 + epsdiss3*PDdissipationNth3At22;
+ At13rhsL =
+ kadd(At13rhsL,kmadd(epsdiss1,JacPDdissipationNth1At13,kmadd(epsdiss2,JacPDdissipationNth2At13,kmul(epsdiss3,JacPDdissipationNth3At13))));
- At23rhsL = At23rhsL + epsdiss1*PDdissipationNth1At23 +
- epsdiss2*PDdissipationNth2At23 + epsdiss3*PDdissipationNth3At23;
+ At22rhsL =
+ kadd(At22rhsL,kmadd(epsdiss1,JacPDdissipationNth1At22,kmadd(epsdiss2,JacPDdissipationNth2At22,kmul(epsdiss3,JacPDdissipationNth3At22))));
- At33rhsL = At33rhsL + epsdiss1*PDdissipationNth1At33 +
- epsdiss2*PDdissipationNth2At33 + epsdiss3*PDdissipationNth3At33;
+ At23rhsL =
+ kadd(At23rhsL,kmadd(epsdiss1,JacPDdissipationNth1At23,kmadd(epsdiss2,JacPDdissipationNth2At23,kmul(epsdiss3,JacPDdissipationNth3At23))));
- alpharhsL = alpharhsL + epsdiss1*PDdissipationNth1alpha +
- epsdiss2*PDdissipationNth2alpha + epsdiss3*PDdissipationNth3alpha;
+ At33rhsL =
+ kadd(At33rhsL,kmadd(epsdiss1,JacPDdissipationNth1At33,kmadd(epsdiss2,JacPDdissipationNth2At33,kmul(epsdiss3,JacPDdissipationNth3At33))));
- ArhsL = ArhsL + epsdiss1*PDdissipationNth1A +
- epsdiss2*PDdissipationNth2A + epsdiss3*PDdissipationNth3A;
+ alpharhsL =
+ kadd(alpharhsL,kmadd(epsdiss1,JacPDdissipationNth1alpha,kmadd(epsdiss2,JacPDdissipationNth2alpha,kmul(epsdiss3,JacPDdissipationNth3alpha))));
- beta1rhsL = beta1rhsL + epsdiss1*PDdissipationNth1beta1 +
- epsdiss2*PDdissipationNth2beta1 + epsdiss3*PDdissipationNth3beta1;
+ ArhsL =
+ kadd(ArhsL,kmadd(epsdiss1,JacPDdissipationNth1A,kmadd(epsdiss2,JacPDdissipationNth2A,kmul(epsdiss3,JacPDdissipationNth3A))));
- beta2rhsL = beta2rhsL + epsdiss1*PDdissipationNth1beta2 +
- epsdiss2*PDdissipationNth2beta2 + epsdiss3*PDdissipationNth3beta2;
+ beta1rhsL =
+ kadd(beta1rhsL,kmadd(epsdiss1,JacPDdissipationNth1beta1,kmadd(epsdiss2,JacPDdissipationNth2beta1,kmul(epsdiss3,JacPDdissipationNth3beta1))));
- beta3rhsL = beta3rhsL + epsdiss1*PDdissipationNth1beta3 +
- epsdiss2*PDdissipationNth2beta3 + epsdiss3*PDdissipationNth3beta3;
+ beta2rhsL =
+ kadd(beta2rhsL,kmadd(epsdiss1,JacPDdissipationNth1beta2,kmadd(epsdiss2,JacPDdissipationNth2beta2,kmul(epsdiss3,JacPDdissipationNth3beta2))));
- B1rhsL = B1rhsL + epsdiss1*PDdissipationNth1B1 +
- epsdiss2*PDdissipationNth2B1 + epsdiss3*PDdissipationNth3B1;
+ beta3rhsL =
+ kadd(beta3rhsL,kmadd(epsdiss1,JacPDdissipationNth1beta3,kmadd(epsdiss2,JacPDdissipationNth2beta3,kmul(epsdiss3,JacPDdissipationNth3beta3))));
- B2rhsL = B2rhsL + epsdiss1*PDdissipationNth1B2 +
- epsdiss2*PDdissipationNth2B2 + epsdiss3*PDdissipationNth3B2;
+ B1rhsL =
+ kadd(B1rhsL,kmadd(epsdiss1,JacPDdissipationNth1B1,kmadd(epsdiss2,JacPDdissipationNth2B1,kmul(epsdiss3,JacPDdissipationNth3B1))));
- B3rhsL = B3rhsL + epsdiss1*PDdissipationNth1B3 +
- epsdiss2*PDdissipationNth2B3 + epsdiss3*PDdissipationNth3B3;
+ B2rhsL =
+ kadd(B2rhsL,kmadd(epsdiss1,JacPDdissipationNth1B2,kmadd(epsdiss2,JacPDdissipationNth2B2,kmul(epsdiss3,JacPDdissipationNth3B2))));
- /* Copy local copies back to grid functions */
- alpharhs[index] = alpharhsL;
- Arhs[index] = ArhsL;
- At11rhs[index] = At11rhsL;
- At12rhs[index] = At12rhsL;
- At13rhs[index] = At13rhsL;
- At22rhs[index] = At22rhsL;
- At23rhs[index] = At23rhsL;
- At33rhs[index] = At33rhsL;
- B1rhs[index] = B1rhsL;
- B2rhs[index] = B2rhsL;
- B3rhs[index] = B3rhsL;
- beta1rhs[index] = beta1rhsL;
- beta2rhs[index] = beta2rhsL;
- beta3rhs[index] = beta3rhsL;
- gt11rhs[index] = gt11rhsL;
- gt12rhs[index] = gt12rhsL;
- gt13rhs[index] = gt13rhsL;
- gt22rhs[index] = gt22rhsL;
- gt23rhs[index] = gt23rhsL;
- gt33rhs[index] = gt33rhsL;
- phirhs[index] = phirhsL;
- trKrhs[index] = trKrhsL;
- Xt1rhs[index] = Xt1rhsL;
- Xt2rhs[index] = Xt2rhsL;
- Xt3rhs[index] = Xt3rhsL;
+ B3rhsL =
+ kadd(B3rhsL,kmadd(epsdiss1,JacPDdissipationNth1B3,kmadd(epsdiss2,JacPDdissipationNth2B3,kmul(epsdiss3,JacPDdissipationNth3B3))));
+
+ /* 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(Arhs[index],ArhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At11rhs[index],At11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At12rhs[index],At12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At13rhs[index],At13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At22rhs[index],At22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At23rhs[index],At23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At33rhs[index],At33rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B1rhs[index],B1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B2rhs[index],B2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt12rhs[index],gt12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt13rhs[index],gt13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt22rhs[index],gt22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt23rhs[index],gt23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt33rhs[index],gt33rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(phirhs[index],phirhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(trKrhs[index],trKrhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt1rhs[index],Xt1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt2rhs[index],Xt2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt3rhs[index],Xt3rhsL,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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_hi(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_hi(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_hi(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_hi(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_hi(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_hi(At33rhs[index],At33rhsL,elt_count);
+ vec_store_nta_partial_hi(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_hi(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_hi(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_hi(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_hi(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_hi(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_hi(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_hi(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_hi(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_hi(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_hi(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt3rhs[index],Xt3rhsL,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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_lo(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_lo(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_lo(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_lo(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_lo(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_lo(At33rhs[index],At33rhsL,elt_count);
+ vec_store_nta_partial_lo(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_lo(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_lo(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_lo(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_lo(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_lo(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_lo(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_lo(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_lo(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_lo(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_lo(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt3rhs[index],Xt3rhsL,elt_count);
+ break;
+ }
+ vec_store_nta(alpharhs[index],alpharhsL);
+ vec_store_nta(Arhs[index],ArhsL);
+ vec_store_nta(At11rhs[index],At11rhsL);
+ vec_store_nta(At12rhs[index],At12rhsL);
+ vec_store_nta(At13rhs[index],At13rhsL);
+ vec_store_nta(At22rhs[index],At22rhsL);
+ vec_store_nta(At23rhs[index],At23rhsL);
+ vec_store_nta(At33rhs[index],At33rhsL);
+ vec_store_nta(B1rhs[index],B1rhsL);
+ vec_store_nta(B2rhs[index],B2rhsL);
+ vec_store_nta(B3rhs[index],B3rhsL);
+ vec_store_nta(beta1rhs[index],beta1rhsL);
+ vec_store_nta(beta2rhs[index],beta2rhsL);
+ vec_store_nta(beta3rhs[index],beta3rhsL);
+ vec_store_nta(gt11rhs[index],gt11rhsL);
+ vec_store_nta(gt12rhs[index],gt12rhsL);
+ vec_store_nta(gt13rhs[index],gt13rhsL);
+ vec_store_nta(gt22rhs[index],gt22rhsL);
+ vec_store_nta(gt23rhs[index],gt23rhsL);
+ vec_store_nta(gt33rhs[index],gt33rhsL);
+ vec_store_nta(phirhs[index],phirhsL);
+ vec_store_nta(trKrhs[index],trKrhsL);
+ vec_store_nta(Xt1rhs[index],Xt1rhsL);
+ vec_store_nta(Xt2rhs[index],Xt2rhsL);
+ vec_store_nta(Xt3rhs[index],Xt3rhsL);
}
- LC_ENDLOOP3 (ML_BSSN_Dissipation);
+ LC_ENDLOOP3VEC (ML_BSSN_Dissipation);
}
extern "C" void ML_BSSN_Dissipation(CCTK_ARGUMENTS)
@@ -388,5 +1368,43 @@ extern "C" void ML_BSSN_Dissipation(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_Dissipation_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_Dissipation_calc_every != ML_BSSN_Dissipation_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN::ML_curv","ML_BSSN::ML_curvrhs","ML_BSSN::ML_dtlapse","ML_BSSN::ML_dtlapserhs","ML_BSSN::ML_dtshift","ML_BSSN::ML_dtshiftrhs","ML_BSSN::ML_Gamma","ML_BSSN::ML_Gammarhs","ML_BSSN::ML_lapse","ML_BSSN::ML_lapserhs","ML_BSSN::ML_log_confac","ML_BSSN::ML_log_confacrhs","ML_BSSN::ML_metric","ML_BSSN::ML_metricrhs","ML_BSSN::ML_shift","ML_BSSN::ML_shiftrhs","ML_BSSN::ML_trace_curv","ML_BSSN::ML_trace_curvrhs"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_Dissipation", 18, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_Dissipation", 2, 2, 2);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_Dissipation", 3, 3, 3);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_Dissipation", 4, 4, 4);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_Dissipation", 5, 5, 5);
+ break;
+ }
+
GenericFD_LoopOverInterior(cctkGH, &ML_BSSN_Dissipation_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_Dissipation_Body");
+ }
}
diff --git a/ML_BSSN/src/ML_BSSN_InitGamma.cc b/ML_BSSN/src/ML_BSSN_InitGamma.cc
index 18a9b97..8c3057b 100644
--- a/ML_BSSN/src/ML_BSSN_InitGamma.cc
+++ b/ML_BSSN/src/ML_BSSN_InitGamma.cc
@@ -13,15 +13,16 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
-static void ML_BSSN_InitGamma_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_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;
@@ -29,20 +30,6 @@ static void ML_BSSN_InitGamma_Body(cGH const * restrict const cctkGH, int const
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_InitGamma_Body");
- }
-
- if (cctk_iteration % ML_BSSN_InitGamma_calc_every != ML_BSSN_InitGamma_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN::ML_Gamma"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_InitGamma", 1, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -52,47 +39,162 @@ static void ML_BSSN_InitGamma_Body(cGH const * restrict const cctkGH, int const
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const p1o24dx = 0.0416666666666666666666666666667*INV(dx);
- CCTK_REAL const p1o24dy = 0.0416666666666666666666666666667*INV(dy);
- CCTK_REAL const p1o24dz = 0.0416666666666666666666666666667*INV(dz);
- CCTK_REAL const p1o64dx = 0.015625*INV(dx);
- CCTK_REAL const p1o64dy = 0.015625*INV(dy);
- CCTK_REAL const p1o64dz = 0.015625*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_InitGamma,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_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;
@@ -100,23 +202,95 @@ static void ML_BSSN_InitGamma_Body(cGH const * restrict const cctkGH, int const
+
/* 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 Xt1L = 0;
+ 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 Xt2L = 0;
+ CCTK_REAL_VEC B1L = ToReal(0);
- CCTK_REAL Xt3L = 0;
+ CCTK_REAL_VEC B2L = ToReal(0);
- /* Copy local copies back to grid functions */
- Xt1[index] = Xt1L;
- Xt2[index] = Xt2L;
- Xt3[index] = Xt3L;
+ CCTK_REAL_VEC B3L = 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(A[index],AL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B1[index],B1L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B2[index],B2L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B3[index],B3L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt1[index],Xt1L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt2[index],Xt2L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt3[index],Xt3L,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(A[index],AL,elt_count);
+ vec_store_nta_partial_hi(B1[index],B1L,elt_count);
+ vec_store_nta_partial_hi(B2[index],B2L,elt_count);
+ vec_store_nta_partial_hi(B3[index],B3L,elt_count);
+ vec_store_nta_partial_hi(Xt1[index],Xt1L,elt_count);
+ vec_store_nta_partial_hi(Xt2[index],Xt2L,elt_count);
+ vec_store_nta_partial_hi(Xt3[index],Xt3L,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(A[index],AL,elt_count);
+ vec_store_nta_partial_lo(B1[index],B1L,elt_count);
+ vec_store_nta_partial_lo(B2[index],B2L,elt_count);
+ vec_store_nta_partial_lo(B3[index],B3L,elt_count);
+ vec_store_nta_partial_lo(Xt1[index],Xt1L,elt_count);
+ vec_store_nta_partial_lo(Xt2[index],Xt2L,elt_count);
+ vec_store_nta_partial_lo(Xt3[index],Xt3L,elt_count);
+ break;
+ }
+ vec_store_nta(A[index],AL);
+ vec_store_nta(B1[index],B1L);
+ vec_store_nta(B2[index],B2L);
+ vec_store_nta(B3[index],B3L);
+ vec_store_nta(Xt1[index],Xt1L);
+ vec_store_nta(Xt2[index],Xt2L);
+ vec_store_nta(Xt3[index],Xt3L);
}
- LC_ENDLOOP3 (ML_BSSN_InitGamma);
+ LC_ENDLOOP3VEC (ML_BSSN_InitGamma);
}
extern "C" void ML_BSSN_InitGamma(CCTK_ARGUMENTS)
@@ -124,5 +298,39 @@ extern "C" void ML_BSSN_InitGamma(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_InitGamma_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_InitGamma_calc_every != ML_BSSN_InitGamma_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN::ML_dtlapse","ML_BSSN::ML_dtshift","ML_BSSN::ML_Gamma"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_InitGamma", 3, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverEverything(cctkGH, &ML_BSSN_InitGamma_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_InitGamma_Body");
+ }
}
diff --git a/ML_BSSN/src/ML_BSSN_InitRHS.cc b/ML_BSSN/src/ML_BSSN_InitRHS.cc
index 24f5ae8..d895b38 100644
--- a/ML_BSSN/src/ML_BSSN_InitRHS.cc
+++ b/ML_BSSN/src/ML_BSSN_InitRHS.cc
@@ -13,15 +13,16 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
-static void ML_BSSN_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_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;
@@ -29,20 +30,6 @@ static void ML_BSSN_InitRHS_Body(cGH const * restrict const cctkGH, int const di
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_InitRHS_Body");
- }
-
- if (cctk_iteration % ML_BSSN_InitRHS_calc_every != ML_BSSN_InitRHS_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN::ML_curvrhs","ML_BSSN::ML_dtlapserhs","ML_BSSN::ML_dtshiftrhs","ML_BSSN::ML_Gammarhs","ML_BSSN::ML_lapserhs","ML_BSSN::ML_log_confacrhs","ML_BSSN::ML_metricrhs","ML_BSSN::ML_shiftrhs","ML_BSSN::ML_trace_curvrhs"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_InitRHS", 9, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -52,47 +39,162 @@ static void ML_BSSN_InitRHS_Body(cGH const * restrict const cctkGH, int const di
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const p1o24dx = 0.0416666666666666666666666666667*INV(dx);
- CCTK_REAL const p1o24dy = 0.0416666666666666666666666666667*INV(dy);
- CCTK_REAL const p1o24dz = 0.0416666666666666666666666666667*INV(dz);
- CCTK_REAL const p1o64dx = 0.015625*INV(dx);
- CCTK_REAL const p1o64dy = 0.015625*INV(dy);
- CCTK_REAL const p1o64dz = 0.015625*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_InitRHS,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_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;
@@ -100,89 +202,203 @@ static void ML_BSSN_InitRHS_Body(cGH const * restrict const cctkGH, int const di
+
/* 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 phirhsL = 0;
+ CCTK_REAL_VEC phirhsL = ToReal(0);
+
+ CCTK_REAL_VEC gt11rhsL = ToReal(0);
- CCTK_REAL gt11rhsL = 0;
+ CCTK_REAL_VEC gt12rhsL = ToReal(0);
- CCTK_REAL gt12rhsL = 0;
+ CCTK_REAL_VEC gt13rhsL = ToReal(0);
- CCTK_REAL gt13rhsL = 0;
+ CCTK_REAL_VEC gt22rhsL = ToReal(0);
- CCTK_REAL gt22rhsL = 0;
+ CCTK_REAL_VEC gt23rhsL = ToReal(0);
- CCTK_REAL gt23rhsL = 0;
+ CCTK_REAL_VEC gt33rhsL = ToReal(0);
- CCTK_REAL gt33rhsL = 0;
+ CCTK_REAL_VEC trKrhsL = ToReal(0);
- CCTK_REAL trKrhsL = 0;
+ CCTK_REAL_VEC At11rhsL = ToReal(0);
- CCTK_REAL At11rhsL = 0;
+ CCTK_REAL_VEC At12rhsL = ToReal(0);
- CCTK_REAL At12rhsL = 0;
+ CCTK_REAL_VEC At13rhsL = ToReal(0);
- CCTK_REAL At13rhsL = 0;
+ CCTK_REAL_VEC At22rhsL = ToReal(0);
- CCTK_REAL At22rhsL = 0;
+ CCTK_REAL_VEC At23rhsL = ToReal(0);
- CCTK_REAL At23rhsL = 0;
+ CCTK_REAL_VEC At33rhsL = ToReal(0);
- CCTK_REAL At33rhsL = 0;
+ CCTK_REAL_VEC Xt1rhsL = ToReal(0);
- CCTK_REAL Xt1rhsL = 0;
+ CCTK_REAL_VEC Xt2rhsL = ToReal(0);
- CCTK_REAL Xt2rhsL = 0;
+ CCTK_REAL_VEC Xt3rhsL = ToReal(0);
- CCTK_REAL Xt3rhsL = 0;
+ CCTK_REAL_VEC alpharhsL = ToReal(0);
- CCTK_REAL alpharhsL = 0;
+ CCTK_REAL_VEC ArhsL = ToReal(0);
- CCTK_REAL ArhsL = 0;
+ CCTK_REAL_VEC beta1rhsL = ToReal(0);
- CCTK_REAL beta1rhsL = 0;
+ CCTK_REAL_VEC beta2rhsL = ToReal(0);
- CCTK_REAL beta2rhsL = 0;
+ CCTK_REAL_VEC beta3rhsL = ToReal(0);
- CCTK_REAL beta3rhsL = 0;
+ CCTK_REAL_VEC B1rhsL = ToReal(0);
- CCTK_REAL B1rhsL = 0;
+ CCTK_REAL_VEC B2rhsL = ToReal(0);
- CCTK_REAL B2rhsL = 0;
+ CCTK_REAL_VEC B3rhsL = ToReal(0);
- CCTK_REAL B3rhsL = 0;
+ /* If necessary, store only partial vectors after the first iteration */
- /* Copy local copies back to grid functions */
- alpharhs[index] = alpharhsL;
- Arhs[index] = ArhsL;
- At11rhs[index] = At11rhsL;
- At12rhs[index] = At12rhsL;
- At13rhs[index] = At13rhsL;
- At22rhs[index] = At22rhsL;
- At23rhs[index] = At23rhsL;
- At33rhs[index] = At33rhsL;
- B1rhs[index] = B1rhsL;
- B2rhs[index] = B2rhsL;
- B3rhs[index] = B3rhsL;
- beta1rhs[index] = beta1rhsL;
- beta2rhs[index] = beta2rhsL;
- beta3rhs[index] = beta3rhsL;
- gt11rhs[index] = gt11rhsL;
- gt12rhs[index] = gt12rhsL;
- gt13rhs[index] = gt13rhsL;
- gt22rhs[index] = gt22rhsL;
- gt23rhs[index] = gt23rhsL;
- gt33rhs[index] = gt33rhsL;
- phirhs[index] = phirhsL;
- trKrhs[index] = trKrhsL;
- Xt1rhs[index] = Xt1rhsL;
- Xt2rhs[index] = Xt2rhsL;
- Xt3rhs[index] = Xt3rhsL;
+ 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(Arhs[index],ArhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At11rhs[index],At11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At12rhs[index],At12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At13rhs[index],At13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At22rhs[index],At22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At23rhs[index],At23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At33rhs[index],At33rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B1rhs[index],B1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B2rhs[index],B2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt12rhs[index],gt12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt13rhs[index],gt13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt22rhs[index],gt22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt23rhs[index],gt23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt33rhs[index],gt33rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(phirhs[index],phirhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(trKrhs[index],trKrhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt1rhs[index],Xt1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt2rhs[index],Xt2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt3rhs[index],Xt3rhsL,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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_hi(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_hi(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_hi(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_hi(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_hi(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_hi(At33rhs[index],At33rhsL,elt_count);
+ vec_store_nta_partial_hi(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_hi(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_hi(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_hi(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_hi(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_hi(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_hi(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_hi(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_hi(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_hi(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_hi(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt3rhs[index],Xt3rhsL,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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_lo(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_lo(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_lo(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_lo(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_lo(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_lo(At33rhs[index],At33rhsL,elt_count);
+ vec_store_nta_partial_lo(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_lo(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_lo(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_lo(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_lo(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_lo(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_lo(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_lo(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_lo(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_lo(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_lo(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt3rhs[index],Xt3rhsL,elt_count);
+ break;
+ }
+ vec_store_nta(alpharhs[index],alpharhsL);
+ vec_store_nta(Arhs[index],ArhsL);
+ vec_store_nta(At11rhs[index],At11rhsL);
+ vec_store_nta(At12rhs[index],At12rhsL);
+ vec_store_nta(At13rhs[index],At13rhsL);
+ vec_store_nta(At22rhs[index],At22rhsL);
+ vec_store_nta(At23rhs[index],At23rhsL);
+ vec_store_nta(At33rhs[index],At33rhsL);
+ vec_store_nta(B1rhs[index],B1rhsL);
+ vec_store_nta(B2rhs[index],B2rhsL);
+ vec_store_nta(B3rhs[index],B3rhsL);
+ vec_store_nta(beta1rhs[index],beta1rhsL);
+ vec_store_nta(beta2rhs[index],beta2rhsL);
+ vec_store_nta(beta3rhs[index],beta3rhsL);
+ vec_store_nta(gt11rhs[index],gt11rhsL);
+ vec_store_nta(gt12rhs[index],gt12rhsL);
+ vec_store_nta(gt13rhs[index],gt13rhsL);
+ vec_store_nta(gt22rhs[index],gt22rhsL);
+ vec_store_nta(gt23rhs[index],gt23rhsL);
+ vec_store_nta(gt33rhs[index],gt33rhsL);
+ vec_store_nta(phirhs[index],phirhsL);
+ vec_store_nta(trKrhs[index],trKrhsL);
+ vec_store_nta(Xt1rhs[index],Xt1rhsL);
+ vec_store_nta(Xt2rhs[index],Xt2rhsL);
+ vec_store_nta(Xt3rhs[index],Xt3rhsL);
}
- LC_ENDLOOP3 (ML_BSSN_InitRHS);
+ LC_ENDLOOP3VEC (ML_BSSN_InitRHS);
}
extern "C" void ML_BSSN_InitRHS(CCTK_ARGUMENTS)
@@ -190,5 +406,39 @@ extern "C" void ML_BSSN_InitRHS(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_InitRHS_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_InitRHS_calc_every != ML_BSSN_InitRHS_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN::ML_curvrhs","ML_BSSN::ML_dtlapserhs","ML_BSSN::ML_dtshiftrhs","ML_BSSN::ML_Gammarhs","ML_BSSN::ML_lapserhs","ML_BSSN::ML_log_confacrhs","ML_BSSN::ML_metricrhs","ML_BSSN::ML_shiftrhs","ML_BSSN::ML_trace_curvrhs"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_InitRHS", 9, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverEverything(cctkGH, &ML_BSSN_InitRHS_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_InitRHS_Body");
+ }
}
diff --git a/ML_BSSN/src/ML_BSSN_Minkowski.cc b/ML_BSSN/src/ML_BSSN_Minkowski.cc
index 77b7e2d..906fe72 100644
--- a/ML_BSSN/src/ML_BSSN_Minkowski.cc
+++ b/ML_BSSN/src/ML_BSSN_Minkowski.cc
@@ -13,15 +13,16 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
-static void ML_BSSN_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_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;
@@ -29,20 +30,6 @@ static void ML_BSSN_Minkowski_Body(cGH const * restrict const cctkGH, int const
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_Minkowski_Body");
- }
-
- if (cctk_iteration % ML_BSSN_Minkowski_calc_every != ML_BSSN_Minkowski_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN::ML_curv","ML_BSSN::ML_dtlapse","ML_BSSN::ML_dtshift","ML_BSSN::ML_Gamma","ML_BSSN::ML_lapse","ML_BSSN::ML_log_confac","ML_BSSN::ML_metric","ML_BSSN::ML_shift","ML_BSSN::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_Minkowski", 9, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -52,47 +39,162 @@ static void ML_BSSN_Minkowski_Body(cGH const * restrict const cctkGH, int const
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const p1o24dx = 0.0416666666666666666666666666667*INV(dx);
- CCTK_REAL const p1o24dy = 0.0416666666666666666666666666667*INV(dy);
- CCTK_REAL const p1o24dz = 0.0416666666666666666666666666667*INV(dz);
- CCTK_REAL const p1o64dx = 0.015625*INV(dx);
- CCTK_REAL const p1o64dy = 0.015625*INV(dy);
- CCTK_REAL const p1o64dz = 0.015625*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_Minkowski,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_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;
@@ -100,89 +202,203 @@ static void ML_BSSN_Minkowski_Body(cGH const * restrict const cctkGH, int const
+
/* 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 phiL = IfThen(conformalMethod,1,0);
+ CCTK_REAL_VEC phiL = IfThen(conformalMethod,ToReal(1),ToReal(0));
+
+ CCTK_REAL_VEC gt11L = ToReal(1);
- CCTK_REAL gt11L = 1;
+ CCTK_REAL_VEC gt12L = ToReal(0);
- CCTK_REAL gt12L = 0;
+ CCTK_REAL_VEC gt13L = ToReal(0);
- CCTK_REAL gt13L = 0;
+ CCTK_REAL_VEC gt22L = ToReal(1);
- CCTK_REAL gt22L = 1;
+ CCTK_REAL_VEC gt23L = ToReal(0);
- CCTK_REAL gt23L = 0;
+ CCTK_REAL_VEC gt33L = ToReal(1);
- CCTK_REAL gt33L = 1;
+ CCTK_REAL_VEC trKL = ToReal(0);
- CCTK_REAL trKL = 0;
+ CCTK_REAL_VEC At11L = ToReal(0);
- CCTK_REAL At11L = 0;
+ CCTK_REAL_VEC At12L = ToReal(0);
- CCTK_REAL At12L = 0;
+ CCTK_REAL_VEC At13L = ToReal(0);
- CCTK_REAL At13L = 0;
+ CCTK_REAL_VEC At22L = ToReal(0);
- CCTK_REAL At22L = 0;
+ CCTK_REAL_VEC At23L = ToReal(0);
- CCTK_REAL At23L = 0;
+ CCTK_REAL_VEC At33L = ToReal(0);
- CCTK_REAL At33L = 0;
+ CCTK_REAL_VEC Xt1L = ToReal(0);
- CCTK_REAL Xt1L = 0;
+ CCTK_REAL_VEC Xt2L = ToReal(0);
- CCTK_REAL Xt2L = 0;
+ CCTK_REAL_VEC Xt3L = ToReal(0);
- CCTK_REAL Xt3L = 0;
+ CCTK_REAL_VEC alphaL = ToReal(1);
- CCTK_REAL alphaL = 1;
+ CCTK_REAL_VEC AL = ToReal(0);
- CCTK_REAL AL = 0;
+ CCTK_REAL_VEC beta1L = ToReal(0);
- CCTK_REAL beta1L = 0;
+ CCTK_REAL_VEC beta2L = ToReal(0);
- CCTK_REAL beta2L = 0;
+ CCTK_REAL_VEC beta3L = ToReal(0);
- CCTK_REAL beta3L = 0;
+ CCTK_REAL_VEC B1L = ToReal(0);
- CCTK_REAL B1L = 0;
+ CCTK_REAL_VEC B2L = ToReal(0);
- CCTK_REAL B2L = 0;
+ CCTK_REAL_VEC B3L = ToReal(0);
- CCTK_REAL B3L = 0;
+ /* If necessary, store only partial vectors after the first iteration */
- /* Copy local copies back to grid functions */
- A[index] = AL;
- alpha[index] = alphaL;
- At11[index] = At11L;
- At12[index] = At12L;
- At13[index] = At13L;
- At22[index] = At22L;
- At23[index] = At23L;
- At33[index] = At33L;
- B1[index] = B1L;
- B2[index] = B2L;
- B3[index] = B3L;
- beta1[index] = beta1L;
- beta2[index] = beta2L;
- beta3[index] = beta3L;
- gt11[index] = gt11L;
- gt12[index] = gt12L;
- gt13[index] = gt13L;
- gt22[index] = gt22L;
- gt23[index] = gt23L;
- gt33[index] = gt33L;
- phi[index] = phiL;
- trK[index] = trKL;
- Xt1[index] = Xt1L;
- Xt2[index] = Xt2L;
- Xt3[index] = Xt3L;
+ 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(A[index],AL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(alpha[index],alphaL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At11[index],At11L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At12[index],At12L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At13[index],At13L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At22[index],At22L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At23[index],At23L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At33[index],At33L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B1[index],B1L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B2[index],B2L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B3[index],B3L,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(gt11[index],gt11L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt12[index],gt12L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt13[index],gt13L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt22[index],gt22L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt23[index],gt23L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt33[index],gt33L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(phi[index],phiL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(trK[index],trKL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt1[index],Xt1L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt2[index],Xt2L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt3[index],Xt3L,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(A[index],AL,elt_count);
+ vec_store_nta_partial_hi(alpha[index],alphaL,elt_count);
+ vec_store_nta_partial_hi(At11[index],At11L,elt_count);
+ vec_store_nta_partial_hi(At12[index],At12L,elt_count);
+ vec_store_nta_partial_hi(At13[index],At13L,elt_count);
+ vec_store_nta_partial_hi(At22[index],At22L,elt_count);
+ vec_store_nta_partial_hi(At23[index],At23L,elt_count);
+ vec_store_nta_partial_hi(At33[index],At33L,elt_count);
+ vec_store_nta_partial_hi(B1[index],B1L,elt_count);
+ vec_store_nta_partial_hi(B2[index],B2L,elt_count);
+ vec_store_nta_partial_hi(B3[index],B3L,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(gt11[index],gt11L,elt_count);
+ vec_store_nta_partial_hi(gt12[index],gt12L,elt_count);
+ vec_store_nta_partial_hi(gt13[index],gt13L,elt_count);
+ vec_store_nta_partial_hi(gt22[index],gt22L,elt_count);
+ vec_store_nta_partial_hi(gt23[index],gt23L,elt_count);
+ vec_store_nta_partial_hi(gt33[index],gt33L,elt_count);
+ vec_store_nta_partial_hi(phi[index],phiL,elt_count);
+ vec_store_nta_partial_hi(trK[index],trKL,elt_count);
+ vec_store_nta_partial_hi(Xt1[index],Xt1L,elt_count);
+ vec_store_nta_partial_hi(Xt2[index],Xt2L,elt_count);
+ vec_store_nta_partial_hi(Xt3[index],Xt3L,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(A[index],AL,elt_count);
+ vec_store_nta_partial_lo(alpha[index],alphaL,elt_count);
+ vec_store_nta_partial_lo(At11[index],At11L,elt_count);
+ vec_store_nta_partial_lo(At12[index],At12L,elt_count);
+ vec_store_nta_partial_lo(At13[index],At13L,elt_count);
+ vec_store_nta_partial_lo(At22[index],At22L,elt_count);
+ vec_store_nta_partial_lo(At23[index],At23L,elt_count);
+ vec_store_nta_partial_lo(At33[index],At33L,elt_count);
+ vec_store_nta_partial_lo(B1[index],B1L,elt_count);
+ vec_store_nta_partial_lo(B2[index],B2L,elt_count);
+ vec_store_nta_partial_lo(B3[index],B3L,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(gt11[index],gt11L,elt_count);
+ vec_store_nta_partial_lo(gt12[index],gt12L,elt_count);
+ vec_store_nta_partial_lo(gt13[index],gt13L,elt_count);
+ vec_store_nta_partial_lo(gt22[index],gt22L,elt_count);
+ vec_store_nta_partial_lo(gt23[index],gt23L,elt_count);
+ vec_store_nta_partial_lo(gt33[index],gt33L,elt_count);
+ vec_store_nta_partial_lo(phi[index],phiL,elt_count);
+ vec_store_nta_partial_lo(trK[index],trKL,elt_count);
+ vec_store_nta_partial_lo(Xt1[index],Xt1L,elt_count);
+ vec_store_nta_partial_lo(Xt2[index],Xt2L,elt_count);
+ vec_store_nta_partial_lo(Xt3[index],Xt3L,elt_count);
+ break;
+ }
+ vec_store_nta(A[index],AL);
+ vec_store_nta(alpha[index],alphaL);
+ vec_store_nta(At11[index],At11L);
+ vec_store_nta(At12[index],At12L);
+ vec_store_nta(At13[index],At13L);
+ vec_store_nta(At22[index],At22L);
+ vec_store_nta(At23[index],At23L);
+ vec_store_nta(At33[index],At33L);
+ vec_store_nta(B1[index],B1L);
+ vec_store_nta(B2[index],B2L);
+ vec_store_nta(B3[index],B3L);
+ vec_store_nta(beta1[index],beta1L);
+ vec_store_nta(beta2[index],beta2L);
+ vec_store_nta(beta3[index],beta3L);
+ vec_store_nta(gt11[index],gt11L);
+ vec_store_nta(gt12[index],gt12L);
+ vec_store_nta(gt13[index],gt13L);
+ vec_store_nta(gt22[index],gt22L);
+ vec_store_nta(gt23[index],gt23L);
+ vec_store_nta(gt33[index],gt33L);
+ vec_store_nta(phi[index],phiL);
+ vec_store_nta(trK[index],trKL);
+ vec_store_nta(Xt1[index],Xt1L);
+ vec_store_nta(Xt2[index],Xt2L);
+ vec_store_nta(Xt3[index],Xt3L);
}
- LC_ENDLOOP3 (ML_BSSN_Minkowski);
+ LC_ENDLOOP3VEC (ML_BSSN_Minkowski);
}
extern "C" void ML_BSSN_Minkowski(CCTK_ARGUMENTS)
@@ -190,5 +406,39 @@ extern "C" void ML_BSSN_Minkowski(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_Minkowski_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_Minkowski_calc_every != ML_BSSN_Minkowski_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN::ML_curv","ML_BSSN::ML_dtlapse","ML_BSSN::ML_dtshift","ML_BSSN::ML_Gamma","ML_BSSN::ML_lapse","ML_BSSN::ML_log_confac","ML_BSSN::ML_metric","ML_BSSN::ML_shift","ML_BSSN::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_Minkowski", 9, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverEverything(cctkGH, &ML_BSSN_Minkowski_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_Minkowski_Body");
+ }
}
diff --git a/ML_BSSN/src/ML_BSSN_RHS1.cc b/ML_BSSN/src/ML_BSSN_RHS1.cc
index 1c2e051..5b5f80a 100644
--- a/ML_BSSN/src/ML_BSSN_RHS1.cc
+++ b/ML_BSSN/src/ML_BSSN_RHS1.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_RHS1_SelectBCs(CCTK_ARGUMENTS)
{
@@ -54,7 +55,7 @@ extern "C" void ML_BSSN_RHS1_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_BSSN_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_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;
@@ -62,21 +63,6 @@ static void ML_BSSN_RHS1_Body(cGH const * restrict const cctkGH, int const dir,
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_RHS1_Body");
- }
-
- if (cctk_iteration % ML_BSSN_RHS1_calc_every != ML_BSSN_RHS1_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"grid::coordinates","Grid::coordinates","ML_BSSN::ML_curv","ML_BSSN::ML_dtlapse","ML_BSSN::ML_dtlapserhs","ML_BSSN::ML_dtshift","ML_BSSN::ML_dtshiftrhs","ML_BSSN::ML_Gamma","ML_BSSN::ML_Gammarhs","ML_BSSN::ML_lapse","ML_BSSN::ML_lapserhs","ML_BSSN::ML_log_confac","ML_BSSN::ML_log_confacrhs","ML_BSSN::ML_metric","ML_BSSN::ML_metricrhs","ML_BSSN::ML_shift","ML_BSSN::ML_shiftrhs","ML_BSSN::ML_trace_curv","ML_BSSN::ML_trace_curvrhs"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_RHS1", 19, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_RHS1", 2, 2, 2);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -86,93 +72,208 @@ static void ML_BSSN_RHS1_Body(cGH const * restrict const cctkGH, int const dir,
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const p1o24dx = 0.0416666666666666666666666666667*INV(dx);
- CCTK_REAL const p1o24dy = 0.0416666666666666666666666666667*INV(dy);
- CCTK_REAL const p1o24dz = 0.0416666666666666666666666666667*INV(dz);
- CCTK_REAL const p1o64dx = 0.015625*INV(dx);
- CCTK_REAL const p1o64dy = 0.015625*INV(dy);
- CCTK_REAL const p1o64dz = 0.015625*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_RHS1,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_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 AL = A[index];
- CCTK_REAL alphaL = alpha[index];
- CCTK_REAL At11L = At11[index];
- CCTK_REAL At12L = At12[index];
- CCTK_REAL At13L = At13[index];
- CCTK_REAL At22L = At22[index];
- CCTK_REAL At23L = At23[index];
- CCTK_REAL At33L = At33[index];
- CCTK_REAL B1L = B1[index];
- CCTK_REAL B2L = B2[index];
- CCTK_REAL B3L = B3[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL gt11L = gt11[index];
- CCTK_REAL gt12L = gt12[index];
- CCTK_REAL gt13L = gt13[index];
- CCTK_REAL gt22L = gt22[index];
- CCTK_REAL gt23L = gt23[index];
- CCTK_REAL gt33L = gt33[index];
- CCTK_REAL phiL = phi[index];
- CCTK_REAL rL = r[index];
- CCTK_REAL trKL = trK[index];
- CCTK_REAL Xt1L = Xt1[index];
- CCTK_REAL Xt2L = Xt2[index];
- CCTK_REAL Xt3L = Xt3[index];
-
- CCTK_REAL eTttL, eTtxL, eTtyL, eTtzL, eTxxL, eTxyL, eTxzL, eTyyL, eTyzL, eTzzL;
+ 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 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 = eTtt[index];
- eTtxL = eTtx[index];
- eTtyL = eTty[index];
- eTtzL = eTtz[index];
- eTxxL = eTxx[index];
- eTxyL = eTxy[index];
- eTxzL = eTxz[index];
- eTyyL = eTyy[index];
- eTyzL = eTyz[index];
- eTzzL = eTzz[index];
+ 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
{
@@ -188,69 +289,357 @@ static void ML_BSSN_RHS1_Body(cGH const * restrict const cctkGH, int const dir,
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 const PDstandardNth1alpha = PDstandardNth1(&alpha[index]);
- CCTK_REAL const PDstandardNth2alpha = PDstandardNth2(&alpha[index]);
- CCTK_REAL const PDstandardNth3alpha = PDstandardNth3(&alpha[index]);
- CCTK_REAL const PDstandardNth11alpha = PDstandardNth11(&alpha[index]);
- CCTK_REAL const PDstandardNth22alpha = PDstandardNth22(&alpha[index]);
- CCTK_REAL const PDstandardNth33alpha = PDstandardNth33(&alpha[index]);
- CCTK_REAL const PDstandardNth12alpha = PDstandardNth12(&alpha[index]);
- CCTK_REAL const PDstandardNth13alpha = PDstandardNth13(&alpha[index]);
- CCTK_REAL const PDstandardNth23alpha = PDstandardNth23(&alpha[index]);
- CCTK_REAL const PDstandardNth1beta1 = PDstandardNth1(&beta1[index]);
- CCTK_REAL const PDstandardNth2beta1 = PDstandardNth2(&beta1[index]);
- CCTK_REAL const PDstandardNth3beta1 = PDstandardNth3(&beta1[index]);
- CCTK_REAL const PDstandardNth11beta1 = PDstandardNth11(&beta1[index]);
- CCTK_REAL const PDstandardNth22beta1 = PDstandardNth22(&beta1[index]);
- CCTK_REAL const PDstandardNth33beta1 = PDstandardNth33(&beta1[index]);
- CCTK_REAL const PDstandardNth12beta1 = PDstandardNth12(&beta1[index]);
- CCTK_REAL const PDstandardNth13beta1 = PDstandardNth13(&beta1[index]);
- CCTK_REAL const PDstandardNth23beta1 = PDstandardNth23(&beta1[index]);
- CCTK_REAL const PDstandardNth1beta2 = PDstandardNth1(&beta2[index]);
- CCTK_REAL const PDstandardNth2beta2 = PDstandardNth2(&beta2[index]);
- CCTK_REAL const PDstandardNth3beta2 = PDstandardNth3(&beta2[index]);
- CCTK_REAL const PDstandardNth11beta2 = PDstandardNth11(&beta2[index]);
- CCTK_REAL const PDstandardNth22beta2 = PDstandardNth22(&beta2[index]);
- CCTK_REAL const PDstandardNth33beta2 = PDstandardNth33(&beta2[index]);
- CCTK_REAL const PDstandardNth12beta2 = PDstandardNth12(&beta2[index]);
- CCTK_REAL const PDstandardNth13beta2 = PDstandardNth13(&beta2[index]);
- CCTK_REAL const PDstandardNth23beta2 = PDstandardNth23(&beta2[index]);
- CCTK_REAL const PDstandardNth1beta3 = PDstandardNth1(&beta3[index]);
- CCTK_REAL const PDstandardNth2beta3 = PDstandardNth2(&beta3[index]);
- CCTK_REAL const PDstandardNth3beta3 = PDstandardNth3(&beta3[index]);
- CCTK_REAL const PDstandardNth11beta3 = PDstandardNth11(&beta3[index]);
- CCTK_REAL const PDstandardNth22beta3 = PDstandardNth22(&beta3[index]);
- CCTK_REAL const PDstandardNth33beta3 = PDstandardNth33(&beta3[index]);
- CCTK_REAL const PDstandardNth12beta3 = PDstandardNth12(&beta3[index]);
- CCTK_REAL const PDstandardNth13beta3 = PDstandardNth13(&beta3[index]);
- CCTK_REAL const PDstandardNth23beta3 = PDstandardNth23(&beta3[index]);
- CCTK_REAL const PDstandardNth1gt11 = PDstandardNth1(&gt11[index]);
- CCTK_REAL const PDstandardNth2gt11 = PDstandardNth2(&gt11[index]);
- CCTK_REAL const PDstandardNth3gt11 = PDstandardNth3(&gt11[index]);
- CCTK_REAL const PDstandardNth1gt12 = PDstandardNth1(&gt12[index]);
- CCTK_REAL const PDstandardNth2gt12 = PDstandardNth2(&gt12[index]);
- CCTK_REAL const PDstandardNth3gt12 = PDstandardNth3(&gt12[index]);
- CCTK_REAL const PDstandardNth1gt13 = PDstandardNth1(&gt13[index]);
- CCTK_REAL const PDstandardNth2gt13 = PDstandardNth2(&gt13[index]);
- CCTK_REAL const PDstandardNth3gt13 = PDstandardNth3(&gt13[index]);
- CCTK_REAL const PDstandardNth1gt22 = PDstandardNth1(&gt22[index]);
- CCTK_REAL const PDstandardNth2gt22 = PDstandardNth2(&gt22[index]);
- CCTK_REAL const PDstandardNth3gt22 = PDstandardNth3(&gt22[index]);
- CCTK_REAL const PDstandardNth1gt23 = PDstandardNth1(&gt23[index]);
- CCTK_REAL const PDstandardNth2gt23 = PDstandardNth2(&gt23[index]);
- CCTK_REAL const PDstandardNth3gt23 = PDstandardNth3(&gt23[index]);
- CCTK_REAL const PDstandardNth1gt33 = PDstandardNth1(&gt33[index]);
- CCTK_REAL const PDstandardNth2gt33 = PDstandardNth2(&gt33[index]);
- CCTK_REAL const PDstandardNth3gt33 = PDstandardNth3(&gt33[index]);
- CCTK_REAL const PDstandardNth1phi = PDstandardNth1(&phi[index]);
- CCTK_REAL const PDstandardNth2phi = PDstandardNth2(&phi[index]);
- CCTK_REAL const PDstandardNth3phi = PDstandardNth3(&phi[index]);
- CCTK_REAL const PDstandardNth1trK = PDstandardNth1(&trK[index]);
- CCTK_REAL const PDstandardNth2trK = PDstandardNth2(&trK[index]);
- CCTK_REAL const PDstandardNth3trK = PDstandardNth3(&trK[index]);
+ 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 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:
+ 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]);
+ 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:
+ 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]);
+ 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:
+ 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]);
+ 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:
+ 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]);
+ 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 */
ptrdiff_t dir1 = Sign(beta1L);
@@ -259,340 +648,837 @@ static void ML_BSSN_RHS1_Body(cGH const * restrict const cctkGH, int const dir,
ptrdiff_t dir3 = Sign(beta3L);
- CCTK_REAL detgt = 1;
+ CCTK_REAL_VEC JacPDstandardNth11alpha;
+ CCTK_REAL_VEC JacPDstandardNth11beta1;
+ CCTK_REAL_VEC JacPDstandardNth11beta2;
+ CCTK_REAL_VEC JacPDstandardNth11beta3;
+ CCTK_REAL_VEC JacPDstandardNth12alpha;
+ CCTK_REAL_VEC JacPDstandardNth12beta1;
+ CCTK_REAL_VEC JacPDstandardNth12beta2;
+ CCTK_REAL_VEC JacPDstandardNth12beta3;
+ CCTK_REAL_VEC JacPDstandardNth13alpha;
+ CCTK_REAL_VEC JacPDstandardNth13beta1;
+ CCTK_REAL_VEC JacPDstandardNth13beta2;
+ CCTK_REAL_VEC JacPDstandardNth13beta3;
+ 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 JacPDstandardNth1trK;
+ CCTK_REAL_VEC JacPDstandardNth21alpha;
+ CCTK_REAL_VEC JacPDstandardNth21beta1;
+ CCTK_REAL_VEC JacPDstandardNth21beta2;
+ CCTK_REAL_VEC JacPDstandardNth21beta3;
+ CCTK_REAL_VEC JacPDstandardNth22alpha;
+ CCTK_REAL_VEC JacPDstandardNth22beta1;
+ CCTK_REAL_VEC JacPDstandardNth22beta2;
+ CCTK_REAL_VEC JacPDstandardNth22beta3;
+ CCTK_REAL_VEC JacPDstandardNth23alpha;
+ CCTK_REAL_VEC JacPDstandardNth23beta1;
+ CCTK_REAL_VEC JacPDstandardNth23beta2;
+ CCTK_REAL_VEC JacPDstandardNth23beta3;
+ 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 JacPDstandardNth2trK;
+ CCTK_REAL_VEC JacPDstandardNth31alpha;
+ CCTK_REAL_VEC JacPDstandardNth31beta1;
+ CCTK_REAL_VEC JacPDstandardNth31beta2;
+ CCTK_REAL_VEC JacPDstandardNth31beta3;
+ CCTK_REAL_VEC JacPDstandardNth32alpha;
+ CCTK_REAL_VEC JacPDstandardNth32beta1;
+ CCTK_REAL_VEC JacPDstandardNth32beta2;
+ CCTK_REAL_VEC JacPDstandardNth32beta3;
+ CCTK_REAL_VEC JacPDstandardNth33alpha;
+ CCTK_REAL_VEC JacPDstandardNth33beta1;
+ CCTK_REAL_VEC JacPDstandardNth33beta2;
+ CCTK_REAL_VEC JacPDstandardNth33beta3;
+ 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 JacPDstandardNth3trK;
+
+ 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)));
+
+ JacPDstandardNth1trK =
+ kmadd(J11L,PDstandardNth1trK,kmadd(J21L,PDstandardNth2trK,kmul(J31L,PDstandardNth3trK)));
+
+ 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)));
+
+ JacPDstandardNth2trK =
+ kmadd(J12L,PDstandardNth1trK,kmadd(J22L,PDstandardNth2trK,kmul(J32L,PDstandardNth3trK)));
+
+ 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)));
+
+ JacPDstandardNth3trK =
+ kmadd(J13L,PDstandardNth1trK,kmadd(J23L,PDstandardNth2trK,kmul(J33L,PDstandardNth3trK)));
+
+ 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))))))));
+
+ 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))))))));
+
+ 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))))))));
+
+ 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)))))));
+
+ 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)))))));
+
+ 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)))))));
+
+ 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)))))));
+
+ 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)))))));
+
+ 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)))))));
+ }
+ else
+ {
+ JacPDstandardNth1alpha = PDstandardNth1alpha;
+
+ JacPDstandardNth1beta1 = PDstandardNth1beta1;
+
+ JacPDstandardNth1beta2 = PDstandardNth1beta2;
+
+ JacPDstandardNth1beta3 = PDstandardNth1beta3;
+
+ JacPDstandardNth1gt11 = PDstandardNth1gt11;
+
+ JacPDstandardNth1gt12 = PDstandardNth1gt12;
+
+ JacPDstandardNth1gt13 = PDstandardNth1gt13;
+
+ JacPDstandardNth1gt22 = PDstandardNth1gt22;
+
+ JacPDstandardNth1gt23 = PDstandardNth1gt23;
+
+ JacPDstandardNth1gt33 = PDstandardNth1gt33;
+
+ JacPDstandardNth1phi = PDstandardNth1phi;
+
+ JacPDstandardNth1trK = PDstandardNth1trK;
+
+ JacPDstandardNth2alpha = PDstandardNth2alpha;
+
+ JacPDstandardNth2beta1 = PDstandardNth2beta1;
+
+ JacPDstandardNth2beta2 = PDstandardNth2beta2;
+
+ JacPDstandardNth2beta3 = PDstandardNth2beta3;
+
+ JacPDstandardNth2gt11 = PDstandardNth2gt11;
+
+ JacPDstandardNth2gt12 = PDstandardNth2gt12;
+
+ JacPDstandardNth2gt13 = PDstandardNth2gt13;
+
+ JacPDstandardNth2gt22 = PDstandardNth2gt22;
+
+ JacPDstandardNth2gt23 = PDstandardNth2gt23;
+
+ JacPDstandardNth2gt33 = PDstandardNth2gt33;
+
+ JacPDstandardNth2phi = PDstandardNth2phi;
+
+ JacPDstandardNth2trK = PDstandardNth2trK;
+
+ JacPDstandardNth3alpha = PDstandardNth3alpha;
+
+ JacPDstandardNth3beta1 = PDstandardNth3beta1;
+
+ JacPDstandardNth3beta2 = PDstandardNth3beta2;
+
+ JacPDstandardNth3beta3 = PDstandardNth3beta3;
+
+ JacPDstandardNth3gt11 = PDstandardNth3gt11;
+
+ JacPDstandardNth3gt12 = PDstandardNth3gt12;
+
+ JacPDstandardNth3gt13 = PDstandardNth3gt13;
+
+ JacPDstandardNth3gt22 = PDstandardNth3gt22;
+
+ JacPDstandardNth3gt23 = PDstandardNth3gt23;
+
+ JacPDstandardNth3gt33 = PDstandardNth3gt33;
+
+ JacPDstandardNth3phi = PDstandardNth3phi;
+
+ JacPDstandardNth3trK = PDstandardNth3trK;
+
+ JacPDstandardNth11alpha = PDstandardNth11alpha;
+
+ JacPDstandardNth11beta1 = PDstandardNth11beta1;
+
+ JacPDstandardNth11beta2 = PDstandardNth11beta2;
+
+ JacPDstandardNth11beta3 = PDstandardNth11beta3;
+
+ JacPDstandardNth22alpha = PDstandardNth22alpha;
+
+ JacPDstandardNth22beta1 = PDstandardNth22beta1;
+
+ JacPDstandardNth22beta2 = PDstandardNth22beta2;
+
+ JacPDstandardNth22beta3 = PDstandardNth22beta3;
+
+ JacPDstandardNth33alpha = PDstandardNth33alpha;
+
+ JacPDstandardNth33beta1 = PDstandardNth33beta1;
+
+ JacPDstandardNth33beta2 = PDstandardNth33beta2;
+
+ JacPDstandardNth33beta3 = PDstandardNth33beta3;
+
+ JacPDstandardNth12alpha = PDstandardNth12alpha;
+
+ JacPDstandardNth12beta1 = PDstandardNth12beta1;
+
+ JacPDstandardNth12beta2 = PDstandardNth12beta2;
+
+ JacPDstandardNth12beta3 = PDstandardNth12beta3;
+
+ JacPDstandardNth13alpha = PDstandardNth13alpha;
+
+ JacPDstandardNth13beta1 = PDstandardNth13beta1;
+
+ JacPDstandardNth13beta2 = PDstandardNth13beta2;
+
+ JacPDstandardNth13beta3 = PDstandardNth13beta3;
+
+ JacPDstandardNth21alpha = PDstandardNth12alpha;
+
+ JacPDstandardNth21beta1 = PDstandardNth12beta1;
+
+ JacPDstandardNth21beta2 = PDstandardNth12beta2;
+
+ JacPDstandardNth21beta3 = PDstandardNth12beta3;
+
+ JacPDstandardNth23alpha = PDstandardNth23alpha;
+
+ JacPDstandardNth23beta1 = PDstandardNth23beta1;
+
+ JacPDstandardNth23beta2 = PDstandardNth23beta2;
+
+ JacPDstandardNth23beta3 = PDstandardNth23beta3;
+
+ JacPDstandardNth31alpha = PDstandardNth13alpha;
+
+ JacPDstandardNth31beta1 = PDstandardNth13beta1;
+
+ JacPDstandardNth31beta2 = PDstandardNth13beta2;
+
+ JacPDstandardNth31beta3 = PDstandardNth13beta3;
+
+ JacPDstandardNth32alpha = PDstandardNth23alpha;
+
+ JacPDstandardNth32beta1 = PDstandardNth23beta1;
+
+ JacPDstandardNth32beta2 = PDstandardNth23beta2;
+
+ JacPDstandardNth32beta3 = PDstandardNth23beta3;
+ }
+
+ 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 gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L));
+ CCTK_REAL_VEC Gtl211 =
+ kmadd(JacPDstandardNth2gt11,ToReal(-0.5),JacPDstandardNth1gt12);
- CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt);
+ CCTK_REAL_VEC Gtl212 = kmul(JacPDstandardNth1gt22,ToReal(0.5));
- CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC Gtl213 =
+ kmul(kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth3gt12,JacPDstandardNth2gt13)),ToReal(0.5));
- CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L));
+ CCTK_REAL_VEC Gtl222 = kmul(JacPDstandardNth2gt22,ToReal(0.5));
- CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC Gtl223 = kmul(JacPDstandardNth3gt22,ToReal(0.5));
- CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L));
+ CCTK_REAL_VEC Gtl233 =
+ kmadd(JacPDstandardNth2gt33,ToReal(-0.5),JacPDstandardNth3gt23);
- CCTK_REAL Gtl111 = 0.5*PDstandardNth1gt11;
+ CCTK_REAL_VEC Gtl311 =
+ kmadd(JacPDstandardNth3gt11,ToReal(-0.5),JacPDstandardNth1gt13);
- CCTK_REAL Gtl112 = 0.5*PDstandardNth2gt11;
+ CCTK_REAL_VEC Gtl312 =
+ kmul(kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth2gt13,JacPDstandardNth3gt12)),ToReal(0.5));
- CCTK_REAL Gtl113 = 0.5*PDstandardNth3gt11;
+ CCTK_REAL_VEC Gtl313 = kmul(JacPDstandardNth1gt33,ToReal(0.5));
- CCTK_REAL Gtl122 = -0.5*PDstandardNth1gt22 + PDstandardNth2gt12;
+ CCTK_REAL_VEC Gtl322 =
+ kmadd(JacPDstandardNth3gt22,ToReal(-0.5),JacPDstandardNth2gt23);
- CCTK_REAL Gtl123 = 0.5*(-PDstandardNth1gt23 + PDstandardNth2gt13 +
- PDstandardNth3gt12);
+ CCTK_REAL_VEC Gtl323 = kmul(JacPDstandardNth2gt33,ToReal(0.5));
- CCTK_REAL Gtl133 = -0.5*PDstandardNth1gt33 + PDstandardNth3gt13;
+ CCTK_REAL_VEC Gtl333 = kmul(JacPDstandardNth3gt33,ToReal(0.5));
- CCTK_REAL Gtl211 = PDstandardNth1gt12 - 0.5*PDstandardNth2gt11;
+ CCTK_REAL_VEC Gt111 =
+ kmadd(Gtl111,gtu11,kmadd(Gtl211,gtu12,kmul(Gtl311,gtu13)));
- CCTK_REAL Gtl212 = 0.5*PDstandardNth1gt22;
+ CCTK_REAL_VEC Gt211 =
+ kmadd(Gtl111,gtu12,kmadd(Gtl211,gtu22,kmul(Gtl311,gtu23)));
- CCTK_REAL Gtl213 = 0.5*(PDstandardNth1gt23 - PDstandardNth2gt13 +
- PDstandardNth3gt12);
+ CCTK_REAL_VEC Gt311 =
+ kmadd(Gtl111,gtu13,kmadd(Gtl211,gtu23,kmul(Gtl311,gtu33)));
- CCTK_REAL Gtl222 = 0.5*PDstandardNth2gt22;
+ CCTK_REAL_VEC Gt112 =
+ kmadd(Gtl112,gtu11,kmadd(Gtl212,gtu12,kmul(Gtl312,gtu13)));
- CCTK_REAL Gtl223 = 0.5*PDstandardNth3gt22;
+ CCTK_REAL_VEC Gt212 =
+ kmadd(Gtl112,gtu12,kmadd(Gtl212,gtu22,kmul(Gtl312,gtu23)));
- CCTK_REAL Gtl233 = -0.5*PDstandardNth2gt33 + PDstandardNth3gt23;
+ CCTK_REAL_VEC Gt312 =
+ kmadd(Gtl112,gtu13,kmadd(Gtl212,gtu23,kmul(Gtl312,gtu33)));
- CCTK_REAL Gtl311 = PDstandardNth1gt13 - 0.5*PDstandardNth3gt11;
+ CCTK_REAL_VEC Gt113 =
+ kmadd(Gtl113,gtu11,kmadd(Gtl213,gtu12,kmul(Gtl313,gtu13)));
- CCTK_REAL Gtl312 = 0.5*(PDstandardNth1gt23 + PDstandardNth2gt13 -
- PDstandardNth3gt12);
+ CCTK_REAL_VEC Gt213 =
+ kmadd(Gtl113,gtu12,kmadd(Gtl213,gtu22,kmul(Gtl313,gtu23)));
- CCTK_REAL Gtl313 = 0.5*PDstandardNth1gt33;
+ CCTK_REAL_VEC Gt313 =
+ kmadd(Gtl113,gtu13,kmadd(Gtl213,gtu23,kmul(Gtl313,gtu33)));
- CCTK_REAL Gtl322 = PDstandardNth2gt23 - 0.5*PDstandardNth3gt22;
+ CCTK_REAL_VEC Gt122 =
+ kmadd(Gtl122,gtu11,kmadd(Gtl222,gtu12,kmul(Gtl322,gtu13)));
- CCTK_REAL Gtl323 = 0.5*PDstandardNth2gt33;
+ CCTK_REAL_VEC Gt222 =
+ kmadd(Gtl122,gtu12,kmadd(Gtl222,gtu22,kmul(Gtl322,gtu23)));
- CCTK_REAL Gtl333 = 0.5*PDstandardNth3gt33;
+ CCTK_REAL_VEC Gt322 =
+ kmadd(Gtl122,gtu13,kmadd(Gtl222,gtu23,kmul(Gtl322,gtu33)));
- CCTK_REAL Gt111 = Gtl111*gtu11 + Gtl211*gtu12 + Gtl311*gtu13;
+ CCTK_REAL_VEC Gt123 =
+ kmadd(Gtl123,gtu11,kmadd(Gtl223,gtu12,kmul(Gtl323,gtu13)));
- CCTK_REAL Gt211 = Gtl111*gtu12 + Gtl211*gtu22 + Gtl311*gtu23;
+ CCTK_REAL_VEC Gt223 =
+ kmadd(Gtl123,gtu12,kmadd(Gtl223,gtu22,kmul(Gtl323,gtu23)));
- CCTK_REAL Gt311 = Gtl111*gtu13 + Gtl211*gtu23 + Gtl311*gtu33;
+ CCTK_REAL_VEC Gt323 =
+ kmadd(Gtl123,gtu13,kmadd(Gtl223,gtu23,kmul(Gtl323,gtu33)));
- CCTK_REAL Gt112 = Gtl112*gtu11 + Gtl212*gtu12 + Gtl312*gtu13;
+ CCTK_REAL_VEC Gt133 =
+ kmadd(Gtl133,gtu11,kmadd(Gtl233,gtu12,kmul(Gtl333,gtu13)));
- CCTK_REAL Gt212 = Gtl112*gtu12 + Gtl212*gtu22 + Gtl312*gtu23;
+ CCTK_REAL_VEC Gt233 =
+ kmadd(Gtl133,gtu12,kmadd(Gtl233,gtu22,kmul(Gtl333,gtu23)));
- CCTK_REAL Gt312 = Gtl112*gtu13 + Gtl212*gtu23 + Gtl312*gtu33;
+ CCTK_REAL_VEC Gt333 =
+ kmadd(Gtl133,gtu13,kmadd(Gtl233,gtu23,kmul(Gtl333,gtu33)));
- CCTK_REAL Gt113 = Gtl113*gtu11 + Gtl213*gtu12 + Gtl313*gtu13;
+ 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 Gt213 = Gtl113*gtu12 + Gtl213*gtu22 + Gtl313*gtu23;
+ 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 Gt313 = Gtl113*gtu13 + Gtl213*gtu23 + Gtl313*gtu33;
+ 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 Gt122 = Gtl122*gtu11 + Gtl222*gtu12 + Gtl322*gtu13;
+ CCTK_REAL_VEC fac1 =
+ IfThen(conformalMethod,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
- CCTK_REAL Gt222 = Gtl122*gtu12 + Gtl222*gtu22 + Gtl322*gtu23;
+ CCTK_REAL_VEC cdphi1 = kmul(fac1,JacPDstandardNth1phi);
- CCTK_REAL Gt322 = Gtl122*gtu13 + Gtl222*gtu23 + Gtl322*gtu33;
+ CCTK_REAL_VEC cdphi2 = kmul(fac1,JacPDstandardNth2phi);
- CCTK_REAL Gt123 = Gtl123*gtu11 + Gtl223*gtu12 + Gtl323*gtu13;
+ CCTK_REAL_VEC cdphi3 = kmul(fac1,JacPDstandardNth3phi);
- CCTK_REAL Gt223 = Gtl123*gtu12 + Gtl223*gtu22 + Gtl323*gtu23;
+ CCTK_REAL_VEC Atm11 =
+ kmadd(At11L,gtu11,kmadd(At12L,gtu12,kmul(At13L,gtu13)));
- CCTK_REAL Gt323 = Gtl123*gtu13 + Gtl223*gtu23 + Gtl323*gtu33;
+ CCTK_REAL_VEC Atm21 =
+ kmadd(At11L,gtu12,kmadd(At12L,gtu22,kmul(At13L,gtu23)));
- CCTK_REAL Gt133 = Gtl133*gtu11 + Gtl233*gtu12 + Gtl333*gtu13;
+ CCTK_REAL_VEC Atm31 =
+ kmadd(At11L,gtu13,kmadd(At12L,gtu23,kmul(At13L,gtu33)));
- CCTK_REAL Gt233 = Gtl133*gtu12 + Gtl233*gtu22 + Gtl333*gtu23;
+ CCTK_REAL_VEC Atm12 =
+ kmadd(At12L,gtu11,kmadd(At22L,gtu12,kmul(At23L,gtu13)));
- CCTK_REAL Gt333 = Gtl133*gtu13 + Gtl233*gtu23 + Gtl333*gtu33;
+ CCTK_REAL_VEC Atm22 =
+ kmadd(At12L,gtu12,kmadd(At22L,gtu22,kmul(At23L,gtu23)));
- CCTK_REAL Xtn1 = Gt111*gtu11 + Gt122*gtu22 + 2*(Gt112*gtu12 +
- Gt113*gtu13 + Gt123*gtu23) + Gt133*gtu33;
+ CCTK_REAL_VEC Atm32 =
+ kmadd(At12L,gtu13,kmadd(At22L,gtu23,kmul(At23L,gtu33)));
- CCTK_REAL Xtn2 = Gt211*gtu11 + Gt222*gtu22 + 2*(Gt212*gtu12 +
- Gt213*gtu13 + Gt223*gtu23) + Gt233*gtu33;
+ CCTK_REAL_VEC Atm13 =
+ kmadd(At13L,gtu11,kmadd(At23L,gtu12,kmul(At33L,gtu13)));
- CCTK_REAL Xtn3 = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu12 +
- Gt313*gtu13 + Gt323*gtu23) + Gt333*gtu33;
+ CCTK_REAL_VEC Atm23 =
+ kmadd(At13L,gtu12,kmadd(At23L,gtu22,kmul(At33L,gtu23)));
- CCTK_REAL fac1 = IfThen(conformalMethod,-0.5*INV(phiL),1);
+ CCTK_REAL_VEC Atm33 =
+ kmadd(At13L,gtu13,kmadd(At23L,gtu23,kmul(At33L,gtu33)));
- CCTK_REAL cdphi1 = fac1*PDstandardNth1phi;
+ CCTK_REAL_VEC Atu11 =
+ kmadd(Atm11,gtu11,kmadd(Atm12,gtu12,kmul(Atm13,gtu13)));
- CCTK_REAL cdphi2 = fac1*PDstandardNth2phi;
+ CCTK_REAL_VEC Atu12 =
+ kmadd(Atm11,gtu12,kmadd(Atm12,gtu22,kmul(Atm13,gtu23)));
- CCTK_REAL cdphi3 = fac1*PDstandardNth3phi;
+ CCTK_REAL_VEC Atu13 =
+ kmadd(Atm11,gtu13,kmadd(Atm12,gtu23,kmul(Atm13,gtu33)));
- CCTK_REAL Atm11 = At11L*gtu11 + At12L*gtu12 + At13L*gtu13;
+ CCTK_REAL_VEC Atu22 =
+ kmadd(Atm21,gtu12,kmadd(Atm22,gtu22,kmul(Atm23,gtu23)));
- CCTK_REAL Atm21 = At11L*gtu12 + At12L*gtu22 + At13L*gtu23;
+ CCTK_REAL_VEC Atu23 =
+ kmadd(Atm21,gtu13,kmadd(Atm22,gtu23,kmul(Atm23,gtu33)));
- CCTK_REAL Atm31 = At11L*gtu13 + At12L*gtu23 + At13L*gtu33;
+ CCTK_REAL_VEC Atu33 =
+ kmadd(Atm31,gtu13,kmadd(Atm32,gtu23,kmul(Atm33,gtu33)));
- CCTK_REAL Atm12 = At12L*gtu11 + At22L*gtu12 + At23L*gtu13;
+ CCTK_REAL_VEC e4phi =
+ IfThen(conformalMethod,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
- CCTK_REAL Atm22 = At12L*gtu12 + At22L*gtu22 + At23L*gtu23;
+ CCTK_REAL_VEC em4phi = INV(e4phi);
- CCTK_REAL Atm32 = At12L*gtu13 + At22L*gtu23 + At23L*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 Atm13 = At13L*gtu11 + At23L*gtu12 + At33L*gtu13;
+ CCTK_REAL_VEC S1 =
+ kmul(INV(alphaL),kmadd(beta1L,eTxxL,kmadd(beta2L,eTxyL,kmsub(beta3L,eTxzL,eTtxL))));
- CCTK_REAL Atm23 = At13L*gtu12 + At23L*gtu22 + At33L*gtu23;
+ CCTK_REAL_VEC S2 =
+ kmul(INV(alphaL),kmadd(beta1L,eTxyL,kmadd(beta2L,eTyyL,kmsub(beta3L,eTyzL,eTtyL))));
- CCTK_REAL Atm33 = At13L*gtu13 + At23L*gtu23 + At33L*gtu33;
+ CCTK_REAL_VEC S3 =
+ kmul(INV(alphaL),kmadd(beta1L,eTxzL,kmadd(beta2L,eTyzL,kmsub(beta3L,eTzzL,eTtzL))));
- CCTK_REAL Atu11 = Atm11*gtu11 + Atm12*gtu12 + Atm13*gtu13;
+ 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 Atu12 = Atm11*gtu12 + Atm12*gtu22 + Atm13*gtu23;
+ 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 Atu13 = Atm11*gtu13 + Atm12*gtu23 + Atm13*gtu33;
+ 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))))));
- CCTK_REAL Atu22 = Atm21*gtu12 + Atm22*gtu22 + Atm23*gtu23;
+ CCTK_REAL_VEC gt12rhsL =
+ kmul(ToReal(0.333333333333333333333333333333),kmadd(alphaL,kmul(At12L,ToReal(-6)),kmadd(gt12L,kadd(JacPDstandardNth1beta1,kmadd(JacPDstandardNth3beta3,ToReal(-2),JacPDstandardNth2beta2)),kmul(kmadd(gt22L,JacPDstandardNth1beta2,kmadd(gt23L,JacPDstandardNth1beta3,kmadd(gt11L,JacPDstandardNth2beta1,kmul(gt13L,JacPDstandardNth2beta3)))),ToReal(3)))));
- CCTK_REAL Atu23 = Atm21*gtu13 + Atm22*gtu23 + Atm23*gtu33;
+ CCTK_REAL_VEC gt13rhsL =
+ kmul(ToReal(0.333333333333333333333333333333),kmadd(alphaL,kmul(At13L,ToReal(-6)),kmadd(gt13L,kadd(JacPDstandardNth1beta1,kmadd(JacPDstandardNth2beta2,ToReal(-2),JacPDstandardNth3beta3)),kmul(kmadd(gt23L,JacPDstandardNth1beta2,kmadd(gt33L,JacPDstandardNth1beta3,kmadd(gt11L,JacPDstandardNth3beta1,kmul(gt12L,JacPDstandardNth3beta2)))),ToReal(3)))));
- CCTK_REAL Atu33 = Atm31*gtu13 + Atm32*gtu23 + Atm33*gtu33;
+ CCTK_REAL_VEC gt22rhsL =
+ kmul(ToReal(-0.666666666666666666666666666667),kmadd(kmadd(gt12L,JacPDstandardNth2beta1,kmul(gt23L,JacPDstandardNth2beta3)),ToReal(-3),kmadd(gt22L,kadd(JacPDstandardNth1beta1,kmadd(JacPDstandardNth2beta2,ToReal(-2),JacPDstandardNth3beta3)),kmul(alphaL,kmul(At22L,ToReal(3))))));
- CCTK_REAL e4phi = IfThen(conformalMethod,INV(SQR(phiL)),exp(4*phiL));
+ CCTK_REAL_VEC gt23rhsL =
+ kmul(ToReal(0.333333333333333333333333333333),kmadd(alphaL,kmul(At23L,ToReal(-6)),kmadd(gt23L,kadd(JacPDstandardNth2beta2,kmadd(JacPDstandardNth1beta1,ToReal(-2),JacPDstandardNth3beta3)),kmul(kmadd(gt13L,JacPDstandardNth2beta1,kmadd(gt33L,JacPDstandardNth2beta3,kmadd(gt12L,JacPDstandardNth3beta1,kmul(gt22L,JacPDstandardNth3beta2)))),ToReal(3)))));
- CCTK_REAL em4phi = INV(e4phi);
+ CCTK_REAL_VEC gt33rhsL =
+ kmul(ToReal(-0.666666666666666666666666666667),kmadd(kmadd(gt13L,JacPDstandardNth3beta1,kmul(gt23L,JacPDstandardNth3beta2)),ToReal(-3),kmadd(gt33L,kadd(JacPDstandardNth1beta1,kmadd(JacPDstandardNth3beta3,ToReal(-2),JacPDstandardNth2beta2)),kmul(alphaL,kmul(At33L,ToReal(3))))));
- CCTK_REAL rho = INV(SQR(alphaL))*(eTttL - 2*(beta2L*eTtyL +
- beta3L*eTtzL) + 2*(beta1L*(-eTtxL + beta2L*eTxyL + beta3L*eTxzL) +
- beta2L*beta3L*eTyzL) + eTxxL*SQR(beta1L) + eTyyL*SQR(beta2L) +
- eTzzL*SQR(beta3L));
+ 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),kmul(gtu33,JacPDstandardNth33beta1))))),ToReal(3),kmadd(gtu11,kadd(JacPDstandardNth12beta2,kmadd(JacPDstandardNth11beta1,ToReal(4),JacPDstandardNth13beta3)),kmadd(gtu12,kadd(JacPDstandardNth22beta2,kmadd(JacPDstandardNth21beta1,ToReal(4),JacPDstandardNth23beta3)),kmadd(gtu13,kadd(JacPDstandardNth32beta2,kmadd(JacPDstandardNth31beta1,ToReal(4),JacPDstandardNth33beta3)),kmul(alphaL,kmadd(kmadd(gtu11,S1,kmadd(gtu12,S2,kmul(gtu13,S3))),ToReal(-150.7964473723100754462068823974161384415),kmadd(kmadd(gtu11,JacPDstandardNth1trK,kmadd(gtu12,JacPDstandardNth2trK,kmul(gtu13,JacPDstandardNth3trK))),ToReal(-4),kmadd(ToReal(6),kmadd(Atu22,Gt122,kmadd(Atu33,Gt133,kmul(Atu11,kmadd(cdphi1,ToReal(6),Gt111)))),kmadd(kmadd(Atu23,Gt123,kmul(Atu12,kmadd(cdphi2,ToReal(3),Gt112))),ToReal(12),kmul(Atu13,kmadd(Gt113,ToReal(12),kmul(cdphi3,ToReal(36)))))))))))))))));
- CCTK_REAL S1 = (-eTtxL + beta1L*eTxxL + beta2L*eTxyL +
- beta3L*eTxzL)*INV(alphaL);
+ 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(gtu23,JacPDstandardNth23beta2,kmadd(gtu13,kadd(JacPDstandardNth13beta2,JacPDstandardNth31beta2),kmul(gtu33,JacPDstandardNth33beta2)))),ToReal(3),kmadd(gtu12,kadd(JacPDstandardNth11beta1,kadd(JacPDstandardNth13beta3,kmadd(JacPDstandardNth21beta2,ToReal(3),kmul(JacPDstandardNth12beta2,ToReal(4))))),kmadd(gtu22,kadd(JacPDstandardNth21beta1,kmadd(JacPDstandardNth22beta2,ToReal(4),JacPDstandardNth23beta3)),kmadd(gtu23,kadd(JacPDstandardNth31beta1,kmadd(JacPDstandardNth32beta2,ToReal(4),JacPDstandardNth33beta3)),kmul(alphaL,kmadd(kmadd(gtu12,S1,kmadd(gtu22,S2,kmul(gtu23,S3))),ToReal(-150.7964473723100754462068823974161384415),kmadd(kmadd(gtu12,JacPDstandardNth1trK,kmadd(gtu22,JacPDstandardNth2trK,kmul(gtu23,JacPDstandardNth3trK))),ToReal(-4),kmadd(ToReal(6),kmadd(Atu11,Gt211,kmadd(Atu33,Gt233,kmul(Atu22,kmadd(cdphi2,ToReal(6),Gt222)))),kmadd(kmadd(Atu13,Gt213,kmul(Atu12,kmadd(cdphi1,ToReal(3),Gt212))),ToReal(12),kmul(Atu23,kmadd(Gt223,ToReal(12),kmul(cdphi3,ToReal(36)))))))))))))))));
- CCTK_REAL S2 = (-eTtyL + beta1L*eTxyL + beta2L*eTyyL +
- beta3L*eTyzL)*INV(alphaL);
+ 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),kmadd(Xtn3,kmsub(kadd(JacPDstandardNth1beta1,JacPDstandardNth2beta2),ToReal(2),JacPDstandardNth3beta3),kmadd(kmadd(gtu11,JacPDstandardNth11beta3,kmadd(gtu12,kadd(JacPDstandardNth12beta3,JacPDstandardNth21beta3),kmadd(gtu22,JacPDstandardNth22beta3,kmul(gtu23,JacPDstandardNth32beta3)))),ToReal(3),kmadd(gtu13,kadd(JacPDstandardNth11beta1,kadd(JacPDstandardNth12beta2,kmadd(JacPDstandardNth31beta3,ToReal(3),kmul(JacPDstandardNth13beta3,ToReal(4))))),kmadd(gtu23,kadd(JacPDstandardNth21beta1,kmadd(JacPDstandardNth23beta3,ToReal(4),JacPDstandardNth22beta2)),kmadd(gtu33,kadd(JacPDstandardNth31beta1,kmadd(JacPDstandardNth33beta3,ToReal(4),JacPDstandardNth32beta2)),kmul(alphaL,kmadd(kmadd(gtu13,S1,kmadd(gtu23,S2,kmul(gtu33,S3))),ToReal(-150.7964473723100754462068823974161384415),kmadd(kmadd(gtu13,JacPDstandardNth1trK,kmadd(gtu23,JacPDstandardNth2trK,kmul(gtu33,JacPDstandardNth3trK))),ToReal(-4),kmadd(kmadd(Atu11,Gt311,kmul(Atu22,Gt322)),ToReal(6),kmadd(kmadd(Atu12,Gt312,kmadd(Atu13,kmadd(cdphi1,ToReal(3),Gt313),kmul(Atu23,kmadd(cdphi2,ToReal(3),Gt323)))),ToReal(12),kmul(Atu33,kmadd(Gt333,ToReal(6),kmul(cdphi3,ToReal(36)))))))))))))))));
- CCTK_REAL S3 = (-eTtzL + beta1L*eTxzL + beta2L*eTyzL +
- beta3L*eTzzL)*INV(alphaL);
+ CCTK_REAL_VEC Xt1rhsL = dotXt1;
- CCTK_REAL trS = em4phi*(eTxxL*gtu11 + eTyyL*gtu22 + 2*(eTxyL*gtu12 +
- eTxzL*gtu13 + eTyzL*gtu23) + eTzzL*gtu33);
+ CCTK_REAL_VEC Xt2rhsL = dotXt2;
- CCTK_REAL phirhsL =
- IfThen(conformalMethod,phiL*(-0.333333333333333333333333333333*(PDstandardNth1beta1
- + PDstandardNth2beta2 + PDstandardNth3beta3) +
- 0.333333333333333333333333333333*alphaL*trKL),0.166666666666666666666666666667*(PDstandardNth1beta1
- + PDstandardNth2beta2 + PDstandardNth3beta3) -
- 0.166666666666666666666666666667*alphaL*trKL);
+ CCTK_REAL_VEC Xt3rhsL = dotXt3;
- CCTK_REAL gt11rhsL = -0.666666666666666666666666666667*(3*alphaL*At11L
- - 3*(gt12L*PDstandardNth1beta2 + gt13L*PDstandardNth1beta3) +
- gt11L*(-2*PDstandardNth1beta1 + PDstandardNth2beta2 +
- PDstandardNth3beta3));
+ CCTK_REAL_VEC dottrK =
+ kmsub(alphaL,kadd(SQR(Atm11),kadd(SQR(Atm22),kadd(SQR(Atm33),kmadd(SQR(trKL),ToReal(0.333333333333333333333333333333),kmadd(kmadd(Atm12,Atm21,kmadd(Atm13,Atm31,kmul(Atm23,Atm32))),ToReal(2),kmul(kadd(rho,trS),ToReal(12.56637061435917295385057353311801153679))))))),kmul(em4phi,knmsub(JacPDstandardNth1alpha,Xtn1,knmsub(JacPDstandardNth2alpha,Xtn2,knmsub(JacPDstandardNth3alpha,Xtn3,kmadd(gtu11,kmadd(cdphi1,kmul(JacPDstandardNth1alpha,ToReal(2)),JacPDstandardNth11alpha),kmadd(gtu12,kadd(JacPDstandardNth12alpha,kadd(JacPDstandardNth21alpha,kmadd(cdphi2,kmul(JacPDstandardNth1alpha,ToReal(2)),kmul(cdphi1,kmul(JacPDstandardNth2alpha,ToReal(2)))))),kmadd(gtu22,kmadd(cdphi2,kmul(JacPDstandardNth2alpha,ToReal(2)),JacPDstandardNth22alpha),kmadd(gtu13,kadd(JacPDstandardNth13alpha,kadd(JacPDstandardNth31alpha,kmadd(cdphi3,kmul(JacPDstandardNth1alpha,ToReal(2)),kmul(cdphi1,kmul(JacPDstandardNth3alpha,ToReal(2)))))),kmadd(gtu23,kadd(JacPDstandardNth23alpha,kadd(JacPDstandardNth32alpha,kmadd(cdphi3,kmul(JacPDstandardNth2alpha,ToReal(2)),kmul(cdphi2,kmul(JacPDstandardNth3alpha,ToReal(2)))))),kmul(gtu33,kmadd(cdphi3,kmul(JacPDstandardNth3alpha,ToReal(2)),JacPDstandardNth33alpha))))))))))));
- CCTK_REAL gt12rhsL = 0.333333333333333333333333333333*(-6*alphaL*At12L
- + 3*(gt22L*PDstandardNth1beta2 + gt23L*PDstandardNth1beta3 +
- gt11L*PDstandardNth2beta1 + gt13L*PDstandardNth2beta3) +
- gt12L*(PDstandardNth1beta1 + PDstandardNth2beta2 -
- 2*PDstandardNth3beta3));
+ CCTK_REAL_VEC trKrhsL = dottrK;
- CCTK_REAL gt13rhsL = 0.333333333333333333333333333333*(-6*alphaL*At13L
- + 3*(gt23L*PDstandardNth1beta2 + gt33L*PDstandardNth1beta3 +
- gt11L*PDstandardNth3beta1 + gt12L*PDstandardNth3beta2) +
- gt13L*(PDstandardNth1beta1 - 2*PDstandardNth2beta2 +
- PDstandardNth3beta3));
-
- CCTK_REAL gt22rhsL = -0.666666666666666666666666666667*(3*alphaL*At22L
- - 3*(gt12L*PDstandardNth2beta1 + gt23L*PDstandardNth2beta3) +
- gt22L*(PDstandardNth1beta1 - 2*PDstandardNth2beta2 +
- PDstandardNth3beta3));
-
- CCTK_REAL gt23rhsL = 0.333333333333333333333333333333*(-6*alphaL*At23L
- + 3*(gt13L*PDstandardNth2beta1 + gt33L*PDstandardNth2beta3 +
- gt12L*PDstandardNth3beta1 + gt22L*PDstandardNth3beta2) +
- gt23L*(-2*PDstandardNth1beta1 + PDstandardNth2beta2 +
- PDstandardNth3beta3));
-
- CCTK_REAL gt33rhsL = -0.666666666666666666666666666667*(3*alphaL*At33L
- - 3*(gt13L*PDstandardNth3beta1 + gt23L*PDstandardNth3beta2) +
- gt33L*(PDstandardNth1beta1 + PDstandardNth2beta2 -
- 2*PDstandardNth3beta3));
-
- CCTK_REAL dotXt1 =
- 0.333333333333333333333333333333*(7*(gtu12*PDstandardNth12beta1 +
- gtu13*PDstandardNth13beta1) + 6*gtu23*PDstandardNth23beta1 +
- 3*(gtu22*PDstandardNth22beta1 + gtu33*PDstandardNth33beta1) -
- 6*(Atu11*PDstandardNth1alpha + Atu12*PDstandardNth2alpha +
- Atu13*PDstandardNth3alpha) + gtu11*(4*PDstandardNth11beta1 +
- PDstandardNth12beta2 + PDstandardNth13beta3 -
- 150.7964473723100754462068823974161384415*alphaL*S1) +
- gtu12*(PDstandardNth22beta2 + PDstandardNth23beta3 -
- 150.7964473723100754462068823974161384415*alphaL*S2) +
- gtu13*(PDstandardNth23beta2 + PDstandardNth33beta3 -
- 150.7964473723100754462068823974161384415*alphaL*S3) +
- (-PDstandardNth1beta1 + 2*PDstandardNth3beta3)*Xtn1 +
- 2*(alphaL*(18*(Atu11*cdphi1 + Atu12*cdphi2 + Atu13*cdphi3) +
- 6*(Atu12*Gt112 + Atu13*Gt113 + Atu23*Gt123) + 3*(Atu11*Gt111 +
- Atu22*Gt122 + Atu33*Gt133) - 2*(gtu11*PDstandardNth1trK +
- gtu12*PDstandardNth2trK + gtu13*PDstandardNth3trK)) +
- PDstandardNth2beta2*Xtn1) - 3*(PDstandardNth2beta1*Xtn2 +
- PDstandardNth3beta1*Xtn3));
-
- CCTK_REAL dotXt2 =
- 0.333333333333333333333333333333*(6*gtu13*PDstandardNth13beta2 +
- 3*(gtu11*PDstandardNth11beta2 + gtu33*PDstandardNth33beta2) -
- 6*(Atu12*PDstandardNth1alpha + Atu22*PDstandardNth2alpha +
- Atu23*PDstandardNth3alpha) + gtu12*(PDstandardNth11beta1 +
- 7*PDstandardNth12beta2 + PDstandardNth13beta3 -
- 150.7964473723100754462068823974161384415*alphaL*S1) +
- gtu22*(PDstandardNth12beta1 + 4*PDstandardNth22beta2 +
- PDstandardNth23beta3 -
- 150.7964473723100754462068823974161384415*alphaL*S2) +
- gtu23*(PDstandardNth13beta1 + 7*PDstandardNth23beta2 +
- PDstandardNth33beta3 -
- 150.7964473723100754462068823974161384415*alphaL*S3) +
- (-PDstandardNth2beta2 + 2*PDstandardNth3beta3)*Xtn2 +
- 2*(alphaL*(18*(Atu12*cdphi1 + Atu22*cdphi2 + Atu23*cdphi3) +
- 6*(Atu12*Gt212 + Atu13*Gt213 + Atu23*Gt223) + 3*(Atu11*Gt211 +
- Atu22*Gt222 + Atu33*Gt233) - 2*(gtu12*PDstandardNth1trK +
- gtu22*PDstandardNth2trK + gtu23*PDstandardNth3trK)) +
- PDstandardNth1beta1*Xtn2) - 3*(PDstandardNth1beta2*Xtn1 +
- PDstandardNth3beta2*Xtn3));
-
- CCTK_REAL dotXt3 =
- 0.333333333333333333333333333333*(6*gtu12*PDstandardNth12beta3 +
- 3*(gtu11*PDstandardNth11beta3 + gtu22*PDstandardNth22beta3) -
- 6*(Atu13*PDstandardNth1alpha + Atu23*PDstandardNth2alpha +
- Atu33*PDstandardNth3alpha) + gtu13*(PDstandardNth11beta1 +
- PDstandardNth12beta2 + 7*PDstandardNth13beta3 -
- 150.7964473723100754462068823974161384415*alphaL*S1) +
- gtu23*(PDstandardNth12beta1 + PDstandardNth22beta2 +
- 7*PDstandardNth23beta3 -
- 150.7964473723100754462068823974161384415*alphaL*S2) +
- gtu33*(PDstandardNth13beta1 + PDstandardNth23beta2 +
- 4*PDstandardNth33beta3 -
- 150.7964473723100754462068823974161384415*alphaL*S3) -
- 3*(PDstandardNth1beta3*Xtn1 + PDstandardNth2beta3*Xtn2) +
- (2*PDstandardNth2beta2 - PDstandardNth3beta3)*Xtn3 +
- 2*(alphaL*(18*(Atu13*cdphi1 + Atu23*cdphi2 + Atu33*cdphi3) +
- 6*(Atu12*Gt312 + Atu13*Gt313 + Atu23*Gt323) + 3*(Atu11*Gt311 +
- Atu22*Gt322 + Atu33*Gt333) - 2*(gtu13*PDstandardNth1trK +
- gtu23*PDstandardNth2trK + gtu33*PDstandardNth3trK)) +
- PDstandardNth1beta1*Xtn3));
-
- CCTK_REAL Xt1rhsL = dotXt1;
-
- CCTK_REAL Xt2rhsL = dotXt2;
-
- CCTK_REAL Xt3rhsL = dotXt3;
-
- CCTK_REAL dottrK = -(em4phi*(gtu11*PDstandardNth11alpha +
- gtu22*PDstandardNth22alpha + gtu33*(PDstandardNth33alpha +
- 2*cdphi3*PDstandardNth3alpha) + 2*(gtu12*PDstandardNth12alpha +
- gtu13*(PDstandardNth13alpha + cdphi1*PDstandardNth3alpha) +
- gtu23*(PDstandardNth23alpha + cdphi2*PDstandardNth3alpha)) +
- PDstandardNth1alpha*(2*(cdphi1*gtu11 + cdphi2*gtu12 + cdphi3*gtu13) -
- Xtn1) + PDstandardNth2alpha*(2*(cdphi1*gtu12 + cdphi2*gtu22 +
- cdphi3*gtu23) - Xtn2) - PDstandardNth3alpha*Xtn3)) +
- alphaL*(2*(Atm12*Atm21 + Atm13*Atm31 + Atm23*Atm32) +
- 12.56637061435917295385057353311801153679*(rho + trS) + SQR(Atm11) +
- SQR(Atm22) + SQR(Atm33) + 0.333333333333333333333333333333*SQR(trKL));
-
- CCTK_REAL trKrhsL = dottrK;
-
- CCTK_REAL alpharhsL =
- -(pow(alphaL,ToReal(harmonicN))*ToReal(harmonicF)*(trKL + (AL -
- trKL)*ToReal(LapseACoeff)));
-
- CCTK_REAL ArhsL = (dottrK -
- AL*ToReal(AlphaDriver))*ToReal(LapseACoeff);
-
- CCTK_REAL eta = fmin(1,INV(rL)*ToReal(SpatialBetaDriverRadius));
-
- CCTK_REAL theta = fmin(1,exp(1 -
- rL*INV(ToReal(SpatialShiftGammaCoeffRadius))));
-
- CCTK_REAL beta1rhsL = theta*(Xt1L + beta1L*eta*ToReal(BetaDriver)*(-1
- + ToReal(ShiftBCoeff)) + (B1L -
- Xt1L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
-
- CCTK_REAL beta2rhsL = theta*(Xt2L + beta2L*eta*ToReal(BetaDriver)*(-1
- + ToReal(ShiftBCoeff)) + (B2L -
- Xt2L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
-
- CCTK_REAL beta3rhsL = theta*(Xt3L + beta3L*eta*ToReal(BetaDriver)*(-1
- + ToReal(ShiftBCoeff)) + (B3L -
- Xt3L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
-
- CCTK_REAL B1rhsL = (dotXt1 -
- B1L*eta*ToReal(BetaDriver))*ToReal(ShiftBCoeff);
-
- CCTK_REAL B2rhsL = (dotXt2 -
- B2L*eta*ToReal(BetaDriver))*ToReal(ShiftBCoeff);
-
- CCTK_REAL B3rhsL = (dotXt3 -
- B3L*eta*ToReal(BetaDriver))*ToReal(ShiftBCoeff);
-
- /* Copy local copies back to grid functions */
- alpharhs[index] = alpharhsL;
- Arhs[index] = ArhsL;
- B1rhs[index] = B1rhsL;
- B2rhs[index] = B2rhsL;
- B3rhs[index] = B3rhsL;
- beta1rhs[index] = beta1rhsL;
- beta2rhs[index] = beta2rhsL;
- beta3rhs[index] = beta3rhsL;
- gt11rhs[index] = gt11rhsL;
- gt12rhs[index] = gt12rhsL;
- gt13rhs[index] = gt13rhsL;
- gt22rhs[index] = gt22rhsL;
- gt23rhs[index] = gt23rhsL;
- gt33rhs[index] = gt33rhsL;
- phirhs[index] = phirhsL;
- trKrhs[index] = trKrhsL;
- Xt1rhs[index] = Xt1rhsL;
- Xt2rhs[index] = Xt2rhsL;
- Xt3rhs[index] = Xt3rhsL;
+ CCTK_REAL_VEC alpharhsL =
+ kneg(kmul(kpow(alphaL,harmonicN),kmul(ToReal(harmonicF),kmadd(ksub(AL,trKL),ToReal(LapseACoeff),trKL))));
+
+ CCTK_REAL_VEC ArhsL =
+ kmul(knmsub(AL,ToReal(AlphaDriver),dottrK),ToReal(LapseACoeff));
+
+ CCTK_REAL_VEC eta =
+ kfmin(ToReal(1),kmul(INV(rL),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(kmadd(gtu11,JacPDstandardNth1alpha,kmadd(gtu12,JacPDstandardNth2alpha,kmul(gtu13,JacPDstandardNth3alpha))),kmul(phiL,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(kmadd(gtu12,JacPDstandardNth1alpha,kmadd(gtu22,JacPDstandardNth2alpha,kmul(gtu23,JacPDstandardNth3alpha))),kmul(phiL,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(kmadd(gtu13,JacPDstandardNth1alpha,kmadd(gtu23,JacPDstandardNth2alpha,kmul(gtu33,JacPDstandardNth3alpha))),kmul(phiL,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(beta1L,kmul(eta,ToReal(BetaDriver*(-1 +
+ ShiftBCoeff))),kmul(ksub(B1L,Xt1L),ToReal(ShiftBCoeff)))),ToReal(ShiftGammaCoeff)));
+
+ beta2rhsL =
+ kmul(theta,kmul(kadd(Xt2L,kmadd(beta2L,kmul(eta,ToReal(BetaDriver*(-1 +
+ ShiftBCoeff))),kmul(ksub(B2L,Xt2L),ToReal(ShiftBCoeff)))),ToReal(ShiftGammaCoeff)));
+
+ beta3rhsL =
+ kmul(theta,kmul(kadd(Xt3L,kmadd(beta3L,kmul(eta,ToReal(BetaDriver*(-1 +
+ ShiftBCoeff))),kmul(ksub(B3L,Xt3L),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));
+
+ /* 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(Arhs[index],ArhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B1rhs[index],B1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B2rhs[index],B2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt12rhs[index],gt12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt13rhs[index],gt13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt22rhs[index],gt22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt23rhs[index],gt23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt33rhs[index],gt33rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(phirhs[index],phirhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(trKrhs[index],trKrhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt1rhs[index],Xt1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt2rhs[index],Xt2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt3rhs[index],Xt3rhsL,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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_hi(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_hi(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_hi(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_hi(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_hi(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_hi(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_hi(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_hi(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_hi(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_hi(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_hi(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt3rhs[index],Xt3rhsL,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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_lo(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_lo(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_lo(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_lo(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_lo(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_lo(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_lo(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_lo(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_lo(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_lo(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_lo(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt3rhs[index],Xt3rhsL,elt_count);
+ break;
+ }
+ vec_store_nta(alpharhs[index],alpharhsL);
+ vec_store_nta(Arhs[index],ArhsL);
+ vec_store_nta(B1rhs[index],B1rhsL);
+ vec_store_nta(B2rhs[index],B2rhsL);
+ vec_store_nta(B3rhs[index],B3rhsL);
+ vec_store_nta(beta1rhs[index],beta1rhsL);
+ vec_store_nta(beta2rhs[index],beta2rhsL);
+ vec_store_nta(beta3rhs[index],beta3rhsL);
+ vec_store_nta(gt11rhs[index],gt11rhsL);
+ vec_store_nta(gt12rhs[index],gt12rhsL);
+ vec_store_nta(gt13rhs[index],gt13rhsL);
+ vec_store_nta(gt22rhs[index],gt22rhsL);
+ vec_store_nta(gt23rhs[index],gt23rhsL);
+ vec_store_nta(gt33rhs[index],gt33rhsL);
+ vec_store_nta(phirhs[index],phirhsL);
+ vec_store_nta(trKrhs[index],trKrhsL);
+ vec_store_nta(Xt1rhs[index],Xt1rhsL);
+ vec_store_nta(Xt2rhs[index],Xt2rhsL);
+ vec_store_nta(Xt3rhs[index],Xt3rhsL);
}
- LC_ENDLOOP3 (ML_BSSN_RHS1);
+ LC_ENDLOOP3VEC (ML_BSSN_RHS1);
}
extern "C" void ML_BSSN_RHS1(CCTK_ARGUMENTS)
@@ -600,5 +1486,43 @@ extern "C" void ML_BSSN_RHS1(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_RHS1_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_RHS1_calc_every != ML_BSSN_RHS1_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"grid::coordinates","Grid::coordinates","ML_BSSN::ML_curv","ML_BSSN::ML_dtlapse","ML_BSSN::ML_dtlapserhs","ML_BSSN::ML_dtshift","ML_BSSN::ML_dtshiftrhs","ML_BSSN::ML_Gamma","ML_BSSN::ML_Gammarhs","ML_BSSN::ML_lapse","ML_BSSN::ML_lapserhs","ML_BSSN::ML_log_confac","ML_BSSN::ML_log_confacrhs","ML_BSSN::ML_metric","ML_BSSN::ML_metricrhs","ML_BSSN::ML_shift","ML_BSSN::ML_shiftrhs","ML_BSSN::ML_trace_curv","ML_BSSN::ML_trace_curvrhs"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_RHS1", 19, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_RHS1", 1, 1, 1);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_RHS1", 2, 2, 2);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_RHS1", 3, 3, 3);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_RHS1", 4, 4, 4);
+ break;
+ }
+
GenericFD_LoopOverInterior(cctkGH, &ML_BSSN_RHS1_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_RHS1_Body");
+ }
}
diff --git a/ML_BSSN/src/ML_BSSN_RHS2.cc b/ML_BSSN/src/ML_BSSN_RHS2.cc
index e78e16c..32a0097 100644
--- a/ML_BSSN/src/ML_BSSN_RHS2.cc
+++ b/ML_BSSN/src/ML_BSSN_RHS2.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_RHS2_SelectBCs(CCTK_ARGUMENTS)
{
@@ -33,7 +34,7 @@ extern "C" void ML_BSSN_RHS2_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_BSSN_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_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;
@@ -41,21 +42,6 @@ static void ML_BSSN_RHS2_Body(cGH const * restrict const cctkGH, int const dir,
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_RHS2_Body");
- }
-
- if (cctk_iteration % ML_BSSN_RHS2_calc_every != ML_BSSN_RHS2_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN::ML_curv","ML_BSSN::ML_curvrhs","ML_BSSN::ML_Gamma","ML_BSSN::ML_lapse","ML_BSSN::ML_log_confac","ML_BSSN::ML_metric","ML_BSSN::ML_shift","ML_BSSN::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_RHS2", 8, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_RHS2", 2, 2, 2);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -65,84 +51,199 @@ static void ML_BSSN_RHS2_Body(cGH const * restrict const cctkGH, int const dir,
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const p1o24dx = 0.0416666666666666666666666666667*INV(dx);
- CCTK_REAL const p1o24dy = 0.0416666666666666666666666666667*INV(dy);
- CCTK_REAL const p1o24dz = 0.0416666666666666666666666666667*INV(dz);
- CCTK_REAL const p1o64dx = 0.015625*INV(dx);
- CCTK_REAL const p1o64dy = 0.015625*INV(dy);
- CCTK_REAL const p1o64dz = 0.015625*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_RHS2,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_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 alphaL = alpha[index];
- CCTK_REAL At11L = At11[index];
- CCTK_REAL At12L = At12[index];
- CCTK_REAL At13L = At13[index];
- CCTK_REAL At22L = At22[index];
- CCTK_REAL At23L = At23[index];
- CCTK_REAL At33L = At33[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL gt11L = gt11[index];
- CCTK_REAL gt12L = gt12[index];
- CCTK_REAL gt13L = gt13[index];
- CCTK_REAL gt22L = gt22[index];
- CCTK_REAL gt23L = gt23[index];
- CCTK_REAL gt33L = gt33[index];
- CCTK_REAL phiL = phi[index];
- CCTK_REAL trKL = trK[index];
- CCTK_REAL Xt1L = Xt1[index];
- CCTK_REAL Xt2L = Xt2[index];
- CCTK_REAL Xt3L = Xt3[index];
-
- CCTK_REAL eTxxL, eTxyL, eTxzL, eTyyL, eTyzL, eTzzL;
+ 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 eTxxL, eTxyL, eTxzL, eTyyL, eTyzL, eTzzL;
if (*stress_energy_state)
{
- eTxxL = eTxx[index];
- eTxyL = eTxy[index];
- eTxzL = eTxz[index];
- eTyyL = eTyy[index];
- eTyzL = eTyz[index];
- eTzzL = eTzz[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
{
@@ -154,99 +255,507 @@ static void ML_BSSN_RHS2_Body(cGH const * restrict const cctkGH, int const dir,
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 const PDstandardNth1alpha = PDstandardNth1(&alpha[index]);
- CCTK_REAL const PDstandardNth2alpha = PDstandardNth2(&alpha[index]);
- CCTK_REAL const PDstandardNth3alpha = PDstandardNth3(&alpha[index]);
- CCTK_REAL const PDstandardNth11alpha = PDstandardNth11(&alpha[index]);
- CCTK_REAL const PDstandardNth22alpha = PDstandardNth22(&alpha[index]);
- CCTK_REAL const PDstandardNth33alpha = PDstandardNth33(&alpha[index]);
- CCTK_REAL const PDstandardNth12alpha = PDstandardNth12(&alpha[index]);
- CCTK_REAL const PDstandardNth13alpha = PDstandardNth13(&alpha[index]);
- CCTK_REAL const PDstandardNth23alpha = PDstandardNth23(&alpha[index]);
- CCTK_REAL const PDstandardNth1beta1 = PDstandardNth1(&beta1[index]);
- CCTK_REAL const PDstandardNth2beta1 = PDstandardNth2(&beta1[index]);
- CCTK_REAL const PDstandardNth3beta1 = PDstandardNth3(&beta1[index]);
- CCTK_REAL const PDstandardNth1beta2 = PDstandardNth1(&beta2[index]);
- CCTK_REAL const PDstandardNth2beta2 = PDstandardNth2(&beta2[index]);
- CCTK_REAL const PDstandardNth3beta2 = PDstandardNth3(&beta2[index]);
- CCTK_REAL const PDstandardNth1beta3 = PDstandardNth1(&beta3[index]);
- CCTK_REAL const PDstandardNth2beta3 = PDstandardNth2(&beta3[index]);
- CCTK_REAL const PDstandardNth3beta3 = PDstandardNth3(&beta3[index]);
- CCTK_REAL const PDstandardNth1gt11 = PDstandardNth1(&gt11[index]);
- CCTK_REAL const PDstandardNth2gt11 = PDstandardNth2(&gt11[index]);
- CCTK_REAL const PDstandardNth3gt11 = PDstandardNth3(&gt11[index]);
- CCTK_REAL const PDstandardNth11gt11 = PDstandardNth11(&gt11[index]);
- CCTK_REAL const PDstandardNth22gt11 = PDstandardNth22(&gt11[index]);
- CCTK_REAL const PDstandardNth33gt11 = PDstandardNth33(&gt11[index]);
- CCTK_REAL const PDstandardNth12gt11 = PDstandardNth12(&gt11[index]);
- CCTK_REAL const PDstandardNth13gt11 = PDstandardNth13(&gt11[index]);
- CCTK_REAL const PDstandardNth23gt11 = PDstandardNth23(&gt11[index]);
- CCTK_REAL const PDstandardNth1gt12 = PDstandardNth1(&gt12[index]);
- CCTK_REAL const PDstandardNth2gt12 = PDstandardNth2(&gt12[index]);
- CCTK_REAL const PDstandardNth3gt12 = PDstandardNth3(&gt12[index]);
- CCTK_REAL const PDstandardNth11gt12 = PDstandardNth11(&gt12[index]);
- CCTK_REAL const PDstandardNth22gt12 = PDstandardNth22(&gt12[index]);
- CCTK_REAL const PDstandardNth33gt12 = PDstandardNth33(&gt12[index]);
- CCTK_REAL const PDstandardNth12gt12 = PDstandardNth12(&gt12[index]);
- CCTK_REAL const PDstandardNth13gt12 = PDstandardNth13(&gt12[index]);
- CCTK_REAL const PDstandardNth23gt12 = PDstandardNth23(&gt12[index]);
- CCTK_REAL const PDstandardNth1gt13 = PDstandardNth1(&gt13[index]);
- CCTK_REAL const PDstandardNth2gt13 = PDstandardNth2(&gt13[index]);
- CCTK_REAL const PDstandardNth3gt13 = PDstandardNth3(&gt13[index]);
- CCTK_REAL const PDstandardNth11gt13 = PDstandardNth11(&gt13[index]);
- CCTK_REAL const PDstandardNth22gt13 = PDstandardNth22(&gt13[index]);
- CCTK_REAL const PDstandardNth33gt13 = PDstandardNth33(&gt13[index]);
- CCTK_REAL const PDstandardNth12gt13 = PDstandardNth12(&gt13[index]);
- CCTK_REAL const PDstandardNth13gt13 = PDstandardNth13(&gt13[index]);
- CCTK_REAL const PDstandardNth23gt13 = PDstandardNth23(&gt13[index]);
- CCTK_REAL const PDstandardNth1gt22 = PDstandardNth1(&gt22[index]);
- CCTK_REAL const PDstandardNth2gt22 = PDstandardNth2(&gt22[index]);
- CCTK_REAL const PDstandardNth3gt22 = PDstandardNth3(&gt22[index]);
- CCTK_REAL const PDstandardNth11gt22 = PDstandardNth11(&gt22[index]);
- CCTK_REAL const PDstandardNth22gt22 = PDstandardNth22(&gt22[index]);
- CCTK_REAL const PDstandardNth33gt22 = PDstandardNth33(&gt22[index]);
- CCTK_REAL const PDstandardNth12gt22 = PDstandardNth12(&gt22[index]);
- CCTK_REAL const PDstandardNth13gt22 = PDstandardNth13(&gt22[index]);
- CCTK_REAL const PDstandardNth23gt22 = PDstandardNth23(&gt22[index]);
- CCTK_REAL const PDstandardNth1gt23 = PDstandardNth1(&gt23[index]);
- CCTK_REAL const PDstandardNth2gt23 = PDstandardNth2(&gt23[index]);
- CCTK_REAL const PDstandardNth3gt23 = PDstandardNth3(&gt23[index]);
- CCTK_REAL const PDstandardNth11gt23 = PDstandardNth11(&gt23[index]);
- CCTK_REAL const PDstandardNth22gt23 = PDstandardNth22(&gt23[index]);
- CCTK_REAL const PDstandardNth33gt23 = PDstandardNth33(&gt23[index]);
- CCTK_REAL const PDstandardNth12gt23 = PDstandardNth12(&gt23[index]);
- CCTK_REAL const PDstandardNth13gt23 = PDstandardNth13(&gt23[index]);
- CCTK_REAL const PDstandardNth23gt23 = PDstandardNth23(&gt23[index]);
- CCTK_REAL const PDstandardNth1gt33 = PDstandardNth1(&gt33[index]);
- CCTK_REAL const PDstandardNth2gt33 = PDstandardNth2(&gt33[index]);
- CCTK_REAL const PDstandardNth3gt33 = PDstandardNth3(&gt33[index]);
- CCTK_REAL const PDstandardNth11gt33 = PDstandardNth11(&gt33[index]);
- CCTK_REAL const PDstandardNth22gt33 = PDstandardNth22(&gt33[index]);
- CCTK_REAL const PDstandardNth33gt33 = PDstandardNth33(&gt33[index]);
- CCTK_REAL const PDstandardNth12gt33 = PDstandardNth12(&gt33[index]);
- CCTK_REAL const PDstandardNth13gt33 = PDstandardNth13(&gt33[index]);
- CCTK_REAL const PDstandardNth23gt33 = PDstandardNth23(&gt33[index]);
- CCTK_REAL const PDstandardNth1phi = PDstandardNth1(&phi[index]);
- CCTK_REAL const PDstandardNth2phi = PDstandardNth2(&phi[index]);
- CCTK_REAL const PDstandardNth3phi = PDstandardNth3(&phi[index]);
- CCTK_REAL const PDstandardNth11phi = PDstandardNth11(&phi[index]);
- CCTK_REAL const PDstandardNth22phi = PDstandardNth22(&phi[index]);
- CCTK_REAL const PDstandardNth33phi = PDstandardNth33(&phi[index]);
- CCTK_REAL const PDstandardNth12phi = PDstandardNth12(&phi[index]);
- CCTK_REAL const PDstandardNth13phi = PDstandardNth13(&phi[index]);
- CCTK_REAL const PDstandardNth23phi = PDstandardNth23(&phi[index]);
- CCTK_REAL const PDstandardNth1Xt1 = PDstandardNth1(&Xt1[index]);
- CCTK_REAL const PDstandardNth2Xt1 = PDstandardNth2(&Xt1[index]);
- CCTK_REAL const PDstandardNth3Xt1 = PDstandardNth3(&Xt1[index]);
- CCTK_REAL const PDstandardNth1Xt2 = PDstandardNth1(&Xt2[index]);
- CCTK_REAL const PDstandardNth2Xt2 = PDstandardNth2(&Xt2[index]);
- CCTK_REAL const PDstandardNth3Xt2 = PDstandardNth3(&Xt2[index]);
- CCTK_REAL const PDstandardNth1Xt3 = PDstandardNth1(&Xt3[index]);
- CCTK_REAL const PDstandardNth2Xt3 = PDstandardNth2(&Xt3[index]);
- CCTK_REAL const PDstandardNth3Xt3 = PDstandardNth3(&Xt3[index]);
+ 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);
@@ -255,465 +764,1092 @@ static void ML_BSSN_RHS2_Body(cGH const * restrict const cctkGH, int const dir,
ptrdiff_t dir3 = Sign(beta3L);
- CCTK_REAL detgt = 1;
+ 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 gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L));
+ CCTK_REAL_VEC gtu33 = kmul(INV(detgt),kmsub(gt11L,gt22L,SQR(gt12L)));
- CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt);
+ CCTK_REAL_VEC Gtl111 = kmul(JacPDstandardNth1gt11,ToReal(0.5));
- CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC Gtl112 = kmul(JacPDstandardNth2gt11,ToReal(0.5));
- CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L));
+ CCTK_REAL_VEC Gtl113 = kmul(JacPDstandardNth3gt11,ToReal(0.5));
- CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC Gtl122 =
+ kmadd(JacPDstandardNth1gt22,ToReal(-0.5),JacPDstandardNth2gt12);
- CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L));
+ CCTK_REAL_VEC Gtl123 =
+ kmul(kadd(JacPDstandardNth2gt13,ksub(JacPDstandardNth3gt12,JacPDstandardNth1gt23)),ToReal(0.5));
- CCTK_REAL Gtl111 = 0.5*PDstandardNth1gt11;
+ CCTK_REAL_VEC Gtl133 =
+ kmadd(JacPDstandardNth1gt33,ToReal(-0.5),JacPDstandardNth3gt13);
- CCTK_REAL Gtl112 = 0.5*PDstandardNth2gt11;
+ CCTK_REAL_VEC Gtl211 =
+ kmadd(JacPDstandardNth2gt11,ToReal(-0.5),JacPDstandardNth1gt12);
- CCTK_REAL Gtl113 = 0.5*PDstandardNth3gt11;
+ CCTK_REAL_VEC Gtl212 = kmul(JacPDstandardNth1gt22,ToReal(0.5));
- CCTK_REAL Gtl122 = -0.5*PDstandardNth1gt22 + PDstandardNth2gt12;
+ CCTK_REAL_VEC Gtl213 =
+ kmul(kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth3gt12,JacPDstandardNth2gt13)),ToReal(0.5));
- CCTK_REAL Gtl123 = 0.5*(-PDstandardNth1gt23 + PDstandardNth2gt13 +
- PDstandardNth3gt12);
+ CCTK_REAL_VEC Gtl222 = kmul(JacPDstandardNth2gt22,ToReal(0.5));
- CCTK_REAL Gtl133 = -0.5*PDstandardNth1gt33 + PDstandardNth3gt13;
+ CCTK_REAL_VEC Gtl223 = kmul(JacPDstandardNth3gt22,ToReal(0.5));
- CCTK_REAL Gtl211 = PDstandardNth1gt12 - 0.5*PDstandardNth2gt11;
+ CCTK_REAL_VEC Gtl233 =
+ kmadd(JacPDstandardNth2gt33,ToReal(-0.5),JacPDstandardNth3gt23);
- CCTK_REAL Gtl212 = 0.5*PDstandardNth1gt22;
+ CCTK_REAL_VEC Gtl311 =
+ kmadd(JacPDstandardNth3gt11,ToReal(-0.5),JacPDstandardNth1gt13);
- CCTK_REAL Gtl213 = 0.5*(PDstandardNth1gt23 - PDstandardNth2gt13 +
- PDstandardNth3gt12);
+ CCTK_REAL_VEC Gtl312 =
+ kmul(kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth2gt13,JacPDstandardNth3gt12)),ToReal(0.5));
- CCTK_REAL Gtl222 = 0.5*PDstandardNth2gt22;
+ CCTK_REAL_VEC Gtl313 = kmul(JacPDstandardNth1gt33,ToReal(0.5));
- CCTK_REAL Gtl223 = 0.5*PDstandardNth3gt22;
+ CCTK_REAL_VEC Gtl322 =
+ kmadd(JacPDstandardNth3gt22,ToReal(-0.5),JacPDstandardNth2gt23);
- CCTK_REAL Gtl233 = -0.5*PDstandardNth2gt33 + PDstandardNth3gt23;
+ CCTK_REAL_VEC Gtl323 = kmul(JacPDstandardNth2gt33,ToReal(0.5));
- CCTK_REAL Gtl311 = PDstandardNth1gt13 - 0.5*PDstandardNth3gt11;
+ CCTK_REAL_VEC Gtl333 = kmul(JacPDstandardNth3gt33,ToReal(0.5));
- CCTK_REAL Gtl312 = 0.5*(PDstandardNth1gt23 + PDstandardNth2gt13 -
- PDstandardNth3gt12);
+ CCTK_REAL_VEC Gtlu111 =
+ kmadd(Gtl111,gtu11,kmadd(Gtl112,gtu12,kmul(Gtl113,gtu13)));
- CCTK_REAL Gtl313 = 0.5*PDstandardNth1gt33;
+ CCTK_REAL_VEC Gtlu112 =
+ kmadd(Gtl111,gtu12,kmadd(Gtl112,gtu22,kmul(Gtl113,gtu23)));
- CCTK_REAL Gtl322 = PDstandardNth2gt23 - 0.5*PDstandardNth3gt22;
+ CCTK_REAL_VEC Gtlu113 =
+ kmadd(Gtl111,gtu13,kmadd(Gtl112,gtu23,kmul(Gtl113,gtu33)));
- CCTK_REAL Gtl323 = 0.5*PDstandardNth2gt33;
+ CCTK_REAL_VEC Gtlu121 =
+ kmadd(Gtl112,gtu11,kmadd(Gtl122,gtu12,kmul(Gtl123,gtu13)));
- CCTK_REAL Gtl333 = 0.5*PDstandardNth3gt33;
+ CCTK_REAL_VEC Gtlu122 =
+ kmadd(Gtl112,gtu12,kmadd(Gtl122,gtu22,kmul(Gtl123,gtu23)));
- CCTK_REAL Gtlu111 = Gtl111*gtu11 + Gtl112*gtu12 + Gtl113*gtu13;
+ CCTK_REAL_VEC Gtlu123 =
+ kmadd(Gtl112,gtu13,kmadd(Gtl122,gtu23,kmul(Gtl123,gtu33)));
- CCTK_REAL Gtlu112 = Gtl111*gtu12 + Gtl112*gtu22 + Gtl113*gtu23;
+ CCTK_REAL_VEC Gtlu131 =
+ kmadd(Gtl113,gtu11,kmadd(Gtl123,gtu12,kmul(Gtl133,gtu13)));
- CCTK_REAL Gtlu113 = Gtl111*gtu13 + Gtl112*gtu23 + Gtl113*gtu33;
+ CCTK_REAL_VEC Gtlu132 =
+ kmadd(Gtl113,gtu12,kmadd(Gtl123,gtu22,kmul(Gtl133,gtu23)));
- CCTK_REAL Gtlu121 = Gtl112*gtu11 + Gtl122*gtu12 + Gtl123*gtu13;
+ CCTK_REAL_VEC Gtlu133 =
+ kmadd(Gtl113,gtu13,kmadd(Gtl123,gtu23,kmul(Gtl133,gtu33)));
- CCTK_REAL Gtlu122 = Gtl112*gtu12 + Gtl122*gtu22 + Gtl123*gtu23;
+ CCTK_REAL_VEC Gtlu211 =
+ kmadd(Gtl211,gtu11,kmadd(Gtl212,gtu12,kmul(Gtl213,gtu13)));
- CCTK_REAL Gtlu123 = Gtl112*gtu13 + Gtl122*gtu23 + Gtl123*gtu33;
+ CCTK_REAL_VEC Gtlu212 =
+ kmadd(Gtl211,gtu12,kmadd(Gtl212,gtu22,kmul(Gtl213,gtu23)));
- CCTK_REAL Gtlu131 = Gtl113*gtu11 + Gtl123*gtu12 + Gtl133*gtu13;
+ CCTK_REAL_VEC Gtlu213 =
+ kmadd(Gtl211,gtu13,kmadd(Gtl212,gtu23,kmul(Gtl213,gtu33)));
- CCTK_REAL Gtlu132 = Gtl113*gtu12 + Gtl123*gtu22 + Gtl133*gtu23;
+ CCTK_REAL_VEC Gtlu221 =
+ kmadd(Gtl212,gtu11,kmadd(Gtl222,gtu12,kmul(Gtl223,gtu13)));
- CCTK_REAL Gtlu133 = Gtl113*gtu13 + Gtl123*gtu23 + Gtl133*gtu33;
+ CCTK_REAL_VEC Gtlu222 =
+ kmadd(Gtl212,gtu12,kmadd(Gtl222,gtu22,kmul(Gtl223,gtu23)));
- CCTK_REAL Gtlu211 = Gtl211*gtu11 + Gtl212*gtu12 + Gtl213*gtu13;
+ CCTK_REAL_VEC Gtlu223 =
+ kmadd(Gtl212,gtu13,kmadd(Gtl222,gtu23,kmul(Gtl223,gtu33)));
- CCTK_REAL Gtlu212 = Gtl211*gtu12 + Gtl212*gtu22 + Gtl213*gtu23;
+ CCTK_REAL_VEC Gtlu231 =
+ kmadd(Gtl213,gtu11,kmadd(Gtl223,gtu12,kmul(Gtl233,gtu13)));
- CCTK_REAL Gtlu213 = Gtl211*gtu13 + Gtl212*gtu23 + Gtl213*gtu33;
+ CCTK_REAL_VEC Gtlu232 =
+ kmadd(Gtl213,gtu12,kmadd(Gtl223,gtu22,kmul(Gtl233,gtu23)));
- CCTK_REAL Gtlu221 = Gtl212*gtu11 + Gtl222*gtu12 + Gtl223*gtu13;
+ CCTK_REAL_VEC Gtlu233 =
+ kmadd(Gtl213,gtu13,kmadd(Gtl223,gtu23,kmul(Gtl233,gtu33)));
- CCTK_REAL Gtlu222 = Gtl212*gtu12 + Gtl222*gtu22 + Gtl223*gtu23;
+ CCTK_REAL_VEC Gtlu311 =
+ kmadd(Gtl311,gtu11,kmadd(Gtl312,gtu12,kmul(Gtl313,gtu13)));
- CCTK_REAL Gtlu223 = Gtl212*gtu13 + Gtl222*gtu23 + Gtl223*gtu33;
+ CCTK_REAL_VEC Gtlu312 =
+ kmadd(Gtl311,gtu12,kmadd(Gtl312,gtu22,kmul(Gtl313,gtu23)));
- CCTK_REAL Gtlu231 = Gtl213*gtu11 + Gtl223*gtu12 + Gtl233*gtu13;
+ CCTK_REAL_VEC Gtlu313 =
+ kmadd(Gtl311,gtu13,kmadd(Gtl312,gtu23,kmul(Gtl313,gtu33)));
- CCTK_REAL Gtlu232 = Gtl213*gtu12 + Gtl223*gtu22 + Gtl233*gtu23;
+ CCTK_REAL_VEC Gtlu321 =
+ kmadd(Gtl312,gtu11,kmadd(Gtl322,gtu12,kmul(Gtl323,gtu13)));
- CCTK_REAL Gtlu233 = Gtl213*gtu13 + Gtl223*gtu23 + Gtl233*gtu33;
+ CCTK_REAL_VEC Gtlu322 =
+ kmadd(Gtl312,gtu12,kmadd(Gtl322,gtu22,kmul(Gtl323,gtu23)));
- CCTK_REAL Gtlu311 = Gtl311*gtu11 + Gtl312*gtu12 + Gtl313*gtu13;
+ CCTK_REAL_VEC Gtlu323 =
+ kmadd(Gtl312,gtu13,kmadd(Gtl322,gtu23,kmul(Gtl323,gtu33)));
- CCTK_REAL Gtlu312 = Gtl311*gtu12 + Gtl312*gtu22 + Gtl313*gtu23;
+ CCTK_REAL_VEC Gtlu331 =
+ kmadd(Gtl313,gtu11,kmadd(Gtl323,gtu12,kmul(Gtl333,gtu13)));
- CCTK_REAL Gtlu313 = Gtl311*gtu13 + Gtl312*gtu23 + Gtl313*gtu33;
+ CCTK_REAL_VEC Gtlu332 =
+ kmadd(Gtl313,gtu12,kmadd(Gtl323,gtu22,kmul(Gtl333,gtu23)));
- CCTK_REAL Gtlu321 = Gtl312*gtu11 + Gtl322*gtu12 + Gtl323*gtu13;
+ CCTK_REAL_VEC Gtlu333 =
+ kmadd(Gtl313,gtu13,kmadd(Gtl323,gtu23,kmul(Gtl333,gtu33)));
- CCTK_REAL Gtlu322 = Gtl312*gtu12 + Gtl322*gtu22 + Gtl323*gtu23;
+ CCTK_REAL_VEC Gt111 =
+ kmadd(Gtl111,gtu11,kmadd(Gtl211,gtu12,kmul(Gtl311,gtu13)));
- CCTK_REAL Gtlu323 = Gtl312*gtu13 + Gtl322*gtu23 + Gtl323*gtu33;
+ CCTK_REAL_VEC Gt211 =
+ kmadd(Gtl111,gtu12,kmadd(Gtl211,gtu22,kmul(Gtl311,gtu23)));
- CCTK_REAL Gtlu331 = Gtl313*gtu11 + Gtl323*gtu12 + Gtl333*gtu13;
+ CCTK_REAL_VEC Gt311 =
+ kmadd(Gtl111,gtu13,kmadd(Gtl211,gtu23,kmul(Gtl311,gtu33)));
- CCTK_REAL Gtlu332 = Gtl313*gtu12 + Gtl323*gtu22 + Gtl333*gtu23;
+ CCTK_REAL_VEC Gt112 =
+ kmadd(Gtl112,gtu11,kmadd(Gtl212,gtu12,kmul(Gtl312,gtu13)));
- CCTK_REAL Gtlu333 = Gtl313*gtu13 + Gtl323*gtu23 + Gtl333*gtu33;
+ CCTK_REAL_VEC Gt212 =
+ kmadd(Gtl112,gtu12,kmadd(Gtl212,gtu22,kmul(Gtl312,gtu23)));
- CCTK_REAL Gt111 = Gtl111*gtu11 + Gtl211*gtu12 + Gtl311*gtu13;
+ CCTK_REAL_VEC Gt312 =
+ kmadd(Gtl112,gtu13,kmadd(Gtl212,gtu23,kmul(Gtl312,gtu33)));
- CCTK_REAL Gt211 = Gtl111*gtu12 + Gtl211*gtu22 + Gtl311*gtu23;
+ CCTK_REAL_VEC Gt113 =
+ kmadd(Gtl113,gtu11,kmadd(Gtl213,gtu12,kmul(Gtl313,gtu13)));
- CCTK_REAL Gt311 = Gtl111*gtu13 + Gtl211*gtu23 + Gtl311*gtu33;
+ CCTK_REAL_VEC Gt213 =
+ kmadd(Gtl113,gtu12,kmadd(Gtl213,gtu22,kmul(Gtl313,gtu23)));
- CCTK_REAL Gt112 = Gtl112*gtu11 + Gtl212*gtu12 + Gtl312*gtu13;
+ CCTK_REAL_VEC Gt313 =
+ kmadd(Gtl113,gtu13,kmadd(Gtl213,gtu23,kmul(Gtl313,gtu33)));
- CCTK_REAL Gt212 = Gtl112*gtu12 + Gtl212*gtu22 + Gtl312*gtu23;
+ CCTK_REAL_VEC Gt122 =
+ kmadd(Gtl122,gtu11,kmadd(Gtl222,gtu12,kmul(Gtl322,gtu13)));
- CCTK_REAL Gt312 = Gtl112*gtu13 + Gtl212*gtu23 + Gtl312*gtu33;
+ CCTK_REAL_VEC Gt222 =
+ kmadd(Gtl122,gtu12,kmadd(Gtl222,gtu22,kmul(Gtl322,gtu23)));
- CCTK_REAL Gt113 = Gtl113*gtu11 + Gtl213*gtu12 + Gtl313*gtu13;
+ CCTK_REAL_VEC Gt322 =
+ kmadd(Gtl122,gtu13,kmadd(Gtl222,gtu23,kmul(Gtl322,gtu33)));
- CCTK_REAL Gt213 = Gtl113*gtu12 + Gtl213*gtu22 + Gtl313*gtu23;
+ CCTK_REAL_VEC Gt123 =
+ kmadd(Gtl123,gtu11,kmadd(Gtl223,gtu12,kmul(Gtl323,gtu13)));
- CCTK_REAL Gt313 = Gtl113*gtu13 + Gtl213*gtu23 + Gtl313*gtu33;
+ CCTK_REAL_VEC Gt223 =
+ kmadd(Gtl123,gtu12,kmadd(Gtl223,gtu22,kmul(Gtl323,gtu23)));
- CCTK_REAL Gt122 = Gtl122*gtu11 + Gtl222*gtu12 + Gtl322*gtu13;
+ CCTK_REAL_VEC Gt323 =
+ kmadd(Gtl123,gtu13,kmadd(Gtl223,gtu23,kmul(Gtl323,gtu33)));
- CCTK_REAL Gt222 = Gtl122*gtu12 + Gtl222*gtu22 + Gtl322*gtu23;
+ CCTK_REAL_VEC Gt133 =
+ kmadd(Gtl133,gtu11,kmadd(Gtl233,gtu12,kmul(Gtl333,gtu13)));
- CCTK_REAL Gt322 = Gtl122*gtu13 + Gtl222*gtu23 + Gtl322*gtu33;
+ CCTK_REAL_VEC Gt233 =
+ kmadd(Gtl133,gtu12,kmadd(Gtl233,gtu22,kmul(Gtl333,gtu23)));
- CCTK_REAL Gt123 = Gtl123*gtu11 + Gtl223*gtu12 + Gtl323*gtu13;
+ CCTK_REAL_VEC Gt333 =
+ kmadd(Gtl133,gtu13,kmadd(Gtl233,gtu23,kmul(Gtl333,gtu33)));
- CCTK_REAL Gt223 = Gtl123*gtu12 + Gtl223*gtu22 + Gtl323*gtu23;
+ 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 Gt323 = Gtl123*gtu13 + Gtl223*gtu23 + Gtl323*gtu33;
+ 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 Gt133 = Gtl133*gtu11 + Gtl233*gtu12 + Gtl333*gtu13;
+ 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 Gt233 = Gtl133*gtu12 + Gtl233*gtu22 + Gtl333*gtu23;
+ 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 Gt333 = Gtl133*gtu13 + Gtl233*gtu23 + Gtl333*gtu33;
+ 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 Xtn1 = Gt111*gtu11 + Gt122*gtu22 + 2*(Gt112*gtu12 +
- Gt113*gtu13 + Gt123*gtu23) + Gt133*gtu33;
+ 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 Xtn2 = Gt211*gtu11 + Gt222*gtu22 + 2*(Gt212*gtu12 +
- Gt213*gtu13 + Gt223*gtu23) + Gt233*gtu33;
+ 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 Xtn3 = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu12 +
- Gt313*gtu13 + Gt323*gtu23) + Gt333*gtu33;
+ 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 Rt11 = 0.5*(6*(Gt111*Gtlu111 + Gt112*Gtlu112 +
- Gt113*Gtlu113) + 4*(Gt211*Gtlu121 + Gt212*Gtlu122 + Gt213*Gtlu123 +
- Gt311*Gtlu131 + Gt312*Gtlu132 + Gt313*Gtlu133) -
- gtu11*PDstandardNth11gt11 - 2*gtu12*PDstandardNth12gt11 -
- 2*gtu13*PDstandardNth13gt11 + 2*(Gt211*Gtlu211 + Gt212*Gtlu212 +
- Gt213*Gtlu213 + Gt311*Gtlu311 + Gt312*Gtlu312 + Gt313*Gtlu313 +
- gt11L*PDstandardNth1Xt1) + 2*gt12L*PDstandardNth1Xt2 +
- 2*gt13L*PDstandardNth1Xt3 - gtu22*PDstandardNth22gt11 -
- 2*gtu23*PDstandardNth23gt11 - gtu33*PDstandardNth33gt11 + 2*Gtl111*Xtn1
- + 2*Gtl112*Xtn2 + 2*Gtl113*Xtn3);
+ 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 Rt12 = 0.5*(4*(Gt211*Gtlu221 + Gt212*Gtlu222 +
- Gt213*Gtlu223) + 2*(Gt112*Gtlu111 + Gt122*Gtlu112 + Gt123*Gtlu113 +
- Gt111*Gtlu121 + Gt212*Gtlu121 + Gt112*Gtlu122 + Gt222*Gtlu122 +
- Gt113*Gtlu123 + Gt223*Gtlu123 + Gt312*Gtlu131 + Gt322*Gtlu132 +
- Gt323*Gtlu133 + Gt111*Gtlu211 + Gt112*Gtlu212 + Gt113*Gtlu213 +
- Gt311*Gtlu231 + Gt312*Gtlu232 + Gt313*Gtlu233 + Gt311*Gtlu321 +
- Gt312*Gtlu322 + Gt313*Gtlu323) - gtu11*PDstandardNth11gt12 -
- 2*gtu12*PDstandardNth12gt12 - 2*gtu13*PDstandardNth13gt12 +
- gt12L*PDstandardNth1Xt1 + gt22L*PDstandardNth1Xt2 +
- gt23L*PDstandardNth1Xt3 - gtu22*PDstandardNth22gt12 -
- 2*gtu23*PDstandardNth23gt12 + gt11L*PDstandardNth2Xt1 +
- gt12L*PDstandardNth2Xt2 + gt13L*PDstandardNth2Xt3 -
- gtu33*PDstandardNth33gt12 + Gtl112*Xtn1 + Gtl211*Xtn1 + Gtl122*Xtn2 +
- Gtl212*Xtn2 + Gtl123*Xtn3 + Gtl213*Xtn3);
+ CCTK_REAL_VEC fac1 =
+ IfThen(conformalMethod,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
- CCTK_REAL Rt13 = 0.5*(2*(Gt113*Gtlu111 + Gt123*Gtlu112 + Gt133*Gtlu113
- + Gt213*Gtlu121 + Gt223*Gtlu122 + Gt233*Gtlu123 + Gt111*Gtlu131 +
- Gt313*Gtlu131 + Gt112*Gtlu132 + Gt323*Gtlu132 + Gt113*Gtlu133 +
- Gt333*Gtlu133 + Gt211*Gtlu231 + Gt212*Gtlu232 + Gt213*Gtlu233 +
- Gt111*Gtlu311 + Gt112*Gtlu312 + Gt113*Gtlu313 + Gt211*Gtlu321 +
- Gt212*Gtlu322 + Gt213*Gtlu323) + 4*(Gt311*Gtlu331 + Gt312*Gtlu332 +
- Gt313*Gtlu333) - gtu11*PDstandardNth11gt13 -
- 2*gtu12*PDstandardNth12gt13 - 2*gtu13*PDstandardNth13gt13 +
- gt13L*PDstandardNth1Xt1 + gt23L*PDstandardNth1Xt2 +
- gt33L*PDstandardNth1Xt3 - gtu22*PDstandardNth22gt13 -
- 2*gtu23*PDstandardNth23gt13 - gtu33*PDstandardNth33gt13 +
- gt11L*PDstandardNth3Xt1 + gt12L*PDstandardNth3Xt2 +
- gt13L*PDstandardNth3Xt3 + Gtl113*Xtn1 + Gtl311*Xtn1 + Gtl123*Xtn2 +
- Gtl312*Xtn2 + Gtl133*Xtn3 + Gtl313*Xtn3);
+ CCTK_REAL_VEC cdphi1 = kmul(fac1,JacPDstandardNth1phi);
- CCTK_REAL Rt22 = 0.5*(6*(Gt212*Gtlu221 + Gt222*Gtlu222 +
- Gt223*Gtlu223) + 4*(Gt112*Gtlu211 + Gt122*Gtlu212 + Gt123*Gtlu213 +
- Gt312*Gtlu231 + Gt322*Gtlu232 + Gt323*Gtlu233) -
- gtu11*PDstandardNth11gt22 - 2*gtu12*PDstandardNth12gt22 -
- 2*gtu13*PDstandardNth13gt22 - gtu22*PDstandardNth22gt22 -
- 2*gtu23*PDstandardNth23gt22 + 2*(Gt112*Gtlu121 + Gt122*Gtlu122 +
- Gt123*Gtlu123 + Gt312*Gtlu321 + Gt322*Gtlu322 + Gt323*Gtlu323 +
- gt12L*PDstandardNth2Xt1) + 2*gt22L*PDstandardNth2Xt2 +
- 2*gt23L*PDstandardNth2Xt3 - gtu33*PDstandardNth33gt22 + 2*Gtl212*Xtn1 +
- 2*Gtl222*Xtn2 + 2*Gtl223*Xtn3);
-
- CCTK_REAL Rt23 = 0.5*(2*(Gt112*Gtlu131 + Gt122*Gtlu132 + Gt123*Gtlu133
- + Gt113*Gtlu211 + Gt123*Gtlu212 + Gt133*Gtlu213 + Gt213*Gtlu221 +
- Gt223*Gtlu222 + Gt233*Gtlu223 + Gt212*Gtlu231 + Gt313*Gtlu231 +
- Gt222*Gtlu232 + Gt323*Gtlu232 + Gt223*Gtlu233 + Gt333*Gtlu233 +
- Gt112*Gtlu311 + Gt122*Gtlu312 + Gt123*Gtlu313 + Gt212*Gtlu321 +
- Gt222*Gtlu322 + Gt223*Gtlu323) + 4*(Gt312*Gtlu331 + Gt322*Gtlu332 +
- Gt323*Gtlu333) - gtu11*PDstandardNth11gt23 -
- 2*gtu12*PDstandardNth12gt23 - 2*gtu13*PDstandardNth13gt23 -
- gtu22*PDstandardNth22gt23 - 2*gtu23*PDstandardNth23gt23 +
- gt13L*PDstandardNth2Xt1 + gt23L*PDstandardNth2Xt2 +
- gt33L*PDstandardNth2Xt3 - gtu33*PDstandardNth33gt23 +
- gt12L*PDstandardNth3Xt1 + gt22L*PDstandardNth3Xt2 +
- gt23L*PDstandardNth3Xt3 + Gtl213*Xtn1 + Gtl312*Xtn1 + Gtl223*Xtn2 +
- Gtl322*Xtn2 + Gtl233*Xtn3 + Gtl323*Xtn3);
-
- CCTK_REAL Rt33 = 0.5*(4*(Gt113*Gtlu311 + Gt123*Gtlu312 + Gt133*Gtlu313
- + Gt213*Gtlu321 + Gt223*Gtlu322 + Gt233*Gtlu323) + 6*(Gt313*Gtlu331 +
- Gt323*Gtlu332 + Gt333*Gtlu333) - gtu11*PDstandardNth11gt33 -
- 2*gtu12*PDstandardNth12gt33 - 2*gtu13*PDstandardNth13gt33 -
- gtu22*PDstandardNth22gt33 - 2*gtu23*PDstandardNth23gt33 -
- gtu33*PDstandardNth33gt33 + 2*(Gt113*Gtlu131 + Gt123*Gtlu132 +
- Gt133*Gtlu133 + Gt213*Gtlu231 + Gt223*Gtlu232 + Gt233*Gtlu233 +
- gt13L*PDstandardNth3Xt1) + 2*gt23L*PDstandardNth3Xt2 +
- 2*gt33L*PDstandardNth3Xt3 + 2*Gtl313*Xtn1 + 2*Gtl323*Xtn2 +
- 2*Gtl333*Xtn3);
-
- CCTK_REAL fac1 = IfThen(conformalMethod,-0.5*INV(phiL),1);
-
- CCTK_REAL cdphi1 = fac1*PDstandardNth1phi;
-
- CCTK_REAL cdphi2 = fac1*PDstandardNth2phi;
-
- CCTK_REAL cdphi3 = fac1*PDstandardNth3phi;
-
- CCTK_REAL fac2 = IfThen(conformalMethod,0.5*INV(SQR(phiL)),0);
-
- CCTK_REAL cdphi211 = -(fac1*(-PDstandardNth11phi +
- Gt111*PDstandardNth1phi + Gt211*PDstandardNth2phi +
- Gt311*PDstandardNth3phi)) + fac2*SQR(PDstandardNth1phi);
-
- CCTK_REAL cdphi212 = fac2*PDstandardNth1phi*PDstandardNth2phi -
- fac1*(-PDstandardNth12phi + Gt112*PDstandardNth1phi +
- Gt212*PDstandardNth2phi + Gt312*PDstandardNth3phi);
-
- CCTK_REAL cdphi213 = fac2*PDstandardNth1phi*PDstandardNth3phi -
- fac1*(-PDstandardNth13phi + Gt113*PDstandardNth1phi +
- Gt213*PDstandardNth2phi + Gt313*PDstandardNth3phi);
+ CCTK_REAL_VEC cdphi2 = kmul(fac1,JacPDstandardNth2phi);
- CCTK_REAL cdphi222 = -(fac1*(Gt122*PDstandardNth1phi -
- PDstandardNth22phi + Gt222*PDstandardNth2phi +
- Gt322*PDstandardNth3phi)) + fac2*SQR(PDstandardNth2phi);
+ CCTK_REAL_VEC cdphi3 = kmul(fac1,JacPDstandardNth3phi);
- CCTK_REAL cdphi223 = fac2*PDstandardNth2phi*PDstandardNth3phi -
- fac1*(Gt123*PDstandardNth1phi - PDstandardNth23phi +
- Gt223*PDstandardNth2phi + Gt323*PDstandardNth3phi);
+ CCTK_REAL_VEC fac2 =
+ IfThen(conformalMethod,kmul(INV(SQR(phiL)),ToReal(0.5)),ToReal(0));
- CCTK_REAL cdphi233 = -(fac1*(Gt133*PDstandardNth1phi +
- Gt233*PDstandardNth2phi - PDstandardNth33phi +
- Gt333*PDstandardNth3phi)) + fac2*SQR(PDstandardNth3phi);
+ CCTK_REAL_VEC cdphi211 =
+ kmadd(fac2,SQR(JacPDstandardNth1phi),kmul(fac1,ksub(JacPDstandardNth11phi,kmadd(Gt111,JacPDstandardNth1phi,kmadd(Gt311,JacPDstandardNth3phi,kmul(Gt211,JacPDstandardNth2phi))))));
- CCTK_REAL Rphi11 = -2*(cdphi211 + 2*(-1 + gt11L*gtu11)*SQR(cdphi1) +
- gt11L*(cdphi211*gtu11 + 4*(cdphi1*(cdphi2*gtu12 + cdphi3*gtu13) +
- cdphi2*cdphi3*gtu23) + cdphi233*gtu33 + gtu22*(cdphi222 +
- 2*SQR(cdphi2)) + 2*(cdphi212*gtu12 + cdphi213*gtu13 + cdphi223*gtu23 +
- gtu33*SQR(cdphi3))));
+ CCTK_REAL_VEC cdphi212 =
+ kmadd(fac2,kmul(JacPDstandardNth1phi,JacPDstandardNth2phi),kmul(fac1,ksub(JacPDstandardNth12phi,kmadd(Gt112,JacPDstandardNth1phi,kmadd(Gt312,JacPDstandardNth3phi,kmul(Gt212,JacPDstandardNth2phi))))));
- CCTK_REAL Rphi12 = -2*(cdphi212 + cdphi1*(cdphi2*(-2 + 4*gt12L*gtu12)
- + 4*cdphi3*gt12L*gtu13) + gt12L*(cdphi211*gtu11 + 4*cdphi2*cdphi3*gtu23
- + 2*(cdphi212*gtu12 + cdphi213*gtu13 + cdphi223*gtu23 +
- gtu11*SQR(cdphi1)) + gtu22*(cdphi222 + 2*SQR(cdphi2)) + gtu33*(cdphi233
- + 2*SQR(cdphi3))));
+ CCTK_REAL_VEC cdphi213 =
+ kmadd(fac2,kmul(JacPDstandardNth1phi,JacPDstandardNth3phi),kmul(fac1,ksub(JacPDstandardNth13phi,kmadd(Gt113,JacPDstandardNth1phi,kmadd(Gt313,JacPDstandardNth3phi,kmul(Gt213,JacPDstandardNth2phi))))));
- CCTK_REAL Rphi13 = -2*(cdphi213 + cdphi1*(4*cdphi2*gt13L*gtu12 +
- cdphi3*(-2 + 4*gt13L*gtu13)) + gt13L*(cdphi211*gtu11 +
- 4*cdphi2*cdphi3*gtu23 + 2*(cdphi212*gtu12 + cdphi213*gtu13 +
- cdphi223*gtu23 + gtu11*SQR(cdphi1)) + gtu22*(cdphi222 + 2*SQR(cdphi2))
- + gtu33*(cdphi233 + 2*SQR(cdphi3))));
+ CCTK_REAL_VEC cdphi222 =
+ kmsub(fac2,SQR(JacPDstandardNth2phi),kmul(fac1,kmadd(Gt122,JacPDstandardNth1phi,kmadd(Gt222,JacPDstandardNth2phi,kmsub(Gt322,JacPDstandardNth3phi,JacPDstandardNth22phi)))));
- CCTK_REAL Rphi22 = -2*(cdphi222 + 2*(-1 + gt22L*gtu22)*SQR(cdphi2) +
- gt22L*(cdphi222*gtu22 + 4*(cdphi1*cdphi3*gtu13 + cdphi2*(cdphi1*gtu12 +
- cdphi3*gtu23)) + cdphi233*gtu33 + gtu11*(cdphi211 + 2*SQR(cdphi1)) +
- 2*(cdphi212*gtu12 + cdphi213*gtu13 + cdphi223*gtu23 +
- gtu33*SQR(cdphi3))));
+ CCTK_REAL_VEC cdphi223 =
+ kmsub(fac2,kmul(JacPDstandardNth2phi,JacPDstandardNth3phi),kmul(fac1,kmadd(Gt123,JacPDstandardNth1phi,kmadd(Gt223,JacPDstandardNth2phi,kmsub(Gt323,JacPDstandardNth3phi,JacPDstandardNth23phi)))));
- CCTK_REAL Rphi23 = -2*(cdphi223 + cdphi2*(4*cdphi1*gt23L*gtu12 +
- cdphi3*(-2 + 4*gt23L*gtu23)) + gt23L*(4*cdphi1*cdphi3*gtu13 +
- cdphi222*gtu22 + gtu11*(cdphi211 + 2*SQR(cdphi1)) + 2*(cdphi212*gtu12 +
- cdphi213*gtu13 + cdphi223*gtu23 + gtu22*SQR(cdphi2)) + gtu33*(cdphi233
- + 2*SQR(cdphi3))));
+ CCTK_REAL_VEC cdphi233 =
+ kmsub(fac2,SQR(JacPDstandardNth3phi),kmul(fac1,kmadd(Gt133,JacPDstandardNth1phi,kmadd(Gt233,JacPDstandardNth2phi,kmsub(Gt333,JacPDstandardNth3phi,JacPDstandardNth33phi)))));
- CCTK_REAL Rphi33 = -2*(cdphi233 + gt33L*((4*cdphi1*cdphi2 +
- 2*cdphi212)*gtu12 + 4*cdphi3*(cdphi1*gtu13 + cdphi2*gtu23) +
- 2*(cdphi213*gtu13 + cdphi223*gtu23) + cdphi233*gtu33 + gtu11*(cdphi211
- + 2*SQR(cdphi1)) + gtu22*(cdphi222 + 2*SQR(cdphi2))) + 2*(-1 +
- gt33L*gtu33)*SQR(cdphi3));
+ 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 Atm11 = At11L*gtu11 + At12L*gtu12 + At13L*gtu13;
+ 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(cdphi3,kmul(gt12L,kmul(gtu13,ToReal(4))),kmul(cdphi2,kmadd(gt12L,kmul(gtu12,ToReal(4)),ToReal(-2))))))));
- CCTK_REAL Atm21 = At11L*gtu12 + At12L*gtu22 + At13L*gtu23;
+ 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(cdphi2,kmul(gt13L,kmul(gtu12,ToReal(4))),kmul(cdphi3,kmadd(gt13L,kmul(gtu13,ToReal(4)),ToReal(-2))))))));
- CCTK_REAL Atm31 = At11L*gtu13 + At12L*gtu23 + At13L*gtu33;
+ 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 Atm12 = At12L*gtu11 + At22L*gtu12 + At23L*gtu13;
+ 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(cdphi1,kmul(gt23L,kmul(gtu12,ToReal(4))),kmul(cdphi3,kmadd(gt23L,kmul(gtu23,ToReal(4)),ToReal(-2))))))));
- CCTK_REAL Atm22 = At12L*gtu12 + At22L*gtu22 + At23L*gtu23;
+ 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 Atm32 = At12L*gtu13 + At22L*gtu23 + At23L*gtu33;
+ CCTK_REAL_VEC Atm11 =
+ kmadd(At11L,gtu11,kmadd(At12L,gtu12,kmul(At13L,gtu13)));
- CCTK_REAL Atm13 = At13L*gtu11 + At23L*gtu12 + At33L*gtu13;
+ CCTK_REAL_VEC Atm21 =
+ kmadd(At11L,gtu12,kmadd(At12L,gtu22,kmul(At13L,gtu23)));
- CCTK_REAL Atm23 = At13L*gtu12 + At23L*gtu22 + At33L*gtu23;
+ CCTK_REAL_VEC Atm31 =
+ kmadd(At11L,gtu13,kmadd(At12L,gtu23,kmul(At13L,gtu33)));
- CCTK_REAL Atm33 = At13L*gtu13 + At23L*gtu23 + At33L*gtu33;
+ CCTK_REAL_VEC Atm12 =
+ kmadd(At12L,gtu11,kmadd(At22L,gtu12,kmul(At23L,gtu13)));
- CCTK_REAL e4phi = IfThen(conformalMethod,INV(SQR(phiL)),exp(4*phiL));
+ CCTK_REAL_VEC Atm22 =
+ kmadd(At12L,gtu12,kmadd(At22L,gtu22,kmul(At23L,gtu23)));
- CCTK_REAL em4phi = INV(e4phi);
+ CCTK_REAL_VEC Atm32 =
+ kmadd(At12L,gtu13,kmadd(At22L,gtu23,kmul(At23L,gtu33)));
- CCTK_REAL g11 = e4phi*gt11L;
+ CCTK_REAL_VEC Atm13 =
+ kmadd(At13L,gtu11,kmadd(At23L,gtu12,kmul(At33L,gtu13)));
- CCTK_REAL g12 = e4phi*gt12L;
+ CCTK_REAL_VEC Atm23 =
+ kmadd(At13L,gtu12,kmadd(At23L,gtu22,kmul(At33L,gtu23)));
- CCTK_REAL g13 = e4phi*gt13L;
+ CCTK_REAL_VEC Atm33 =
+ kmadd(At13L,gtu13,kmadd(At23L,gtu23,kmul(At33L,gtu33)));
- CCTK_REAL g22 = e4phi*gt22L;
+ CCTK_REAL_VEC e4phi =
+ IfThen(conformalMethod,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
- CCTK_REAL g23 = e4phi*gt23L;
+ CCTK_REAL_VEC em4phi = INV(e4phi);
- CCTK_REAL g33 = e4phi*gt33L;
+ CCTK_REAL_VEC g11 = kmul(e4phi,gt11L);
- CCTK_REAL gu11 = em4phi*gtu11;
+ CCTK_REAL_VEC g12 = kmul(e4phi,gt12L);
- CCTK_REAL gu12 = em4phi*gtu12;
+ CCTK_REAL_VEC g13 = kmul(e4phi,gt13L);
- CCTK_REAL gu13 = em4phi*gtu13;
+ CCTK_REAL_VEC g22 = kmul(e4phi,gt22L);
- CCTK_REAL gu22 = em4phi*gtu22;
+ CCTK_REAL_VEC g23 = kmul(e4phi,gt23L);
- CCTK_REAL gu23 = em4phi*gtu23;
+ CCTK_REAL_VEC g33 = kmul(e4phi,gt33L);
- CCTK_REAL gu33 = em4phi*gtu33;
+ CCTK_REAL_VEC gu11 = kmul(em4phi,gtu11);
- CCTK_REAL R11 = Rphi11 + Rt11;
+ CCTK_REAL_VEC gu12 = kmul(em4phi,gtu12);
- CCTK_REAL R12 = Rphi12 + Rt12;
+ CCTK_REAL_VEC gu13 = kmul(em4phi,gtu13);
- CCTK_REAL R13 = Rphi13 + Rt13;
+ CCTK_REAL_VEC gu22 = kmul(em4phi,gtu22);
- CCTK_REAL R22 = Rphi22 + Rt22;
+ CCTK_REAL_VEC gu23 = kmul(em4phi,gtu23);
- CCTK_REAL R23 = Rphi23 + Rt23;
+ CCTK_REAL_VEC gu33 = kmul(em4phi,gtu33);
- CCTK_REAL R33 = Rphi33 + Rt33;
+ CCTK_REAL_VEC R11 = kadd(Rphi11,Rt11);
- CCTK_REAL trS = em4phi*(eTxxL*gtu11 + eTyyL*gtu22 + 2*(eTxyL*gtu12 +
- eTxzL*gtu13 + eTyzL*gtu23) + eTzzL*gtu33);
+ CCTK_REAL_VEC R12 = kadd(Rphi12,Rt12);
- CCTK_REAL Ats11 = -PDstandardNth11alpha + (4*cdphi1 +
- Gt111)*PDstandardNth1alpha + Gt211*PDstandardNth2alpha +
- Gt311*PDstandardNth3alpha + alphaL*R11;
+ CCTK_REAL_VEC R13 = kadd(Rphi13,Rt13);
- CCTK_REAL Ats12 = -PDstandardNth12alpha + (2*cdphi2 +
- Gt112)*PDstandardNth1alpha + (2*cdphi1 + Gt212)*PDstandardNth2alpha +
- Gt312*PDstandardNth3alpha + alphaL*R12;
+ CCTK_REAL_VEC R22 = kadd(Rphi22,Rt22);
- CCTK_REAL Ats13 = -PDstandardNth13alpha + (2*cdphi3 +
- Gt113)*PDstandardNth1alpha + Gt213*PDstandardNth2alpha + (2*cdphi1 +
- Gt313)*PDstandardNth3alpha + alphaL*R13;
+ CCTK_REAL_VEC R23 = kadd(Rphi23,Rt23);
- CCTK_REAL Ats22 = Gt122*PDstandardNth1alpha - PDstandardNth22alpha +
- (4*cdphi2 + Gt222)*PDstandardNth2alpha + Gt322*PDstandardNth3alpha +
- alphaL*R22;
+ CCTK_REAL_VEC R33 = kadd(Rphi33,Rt33);
- CCTK_REAL Ats23 = Gt123*PDstandardNth1alpha - PDstandardNth23alpha +
- (2*cdphi3 + Gt223)*PDstandardNth2alpha + (2*cdphi2 +
- Gt323)*PDstandardNth3alpha + alphaL*R23;
+ 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 Ats33 = Gt133*PDstandardNth1alpha +
- Gt233*PDstandardNth2alpha - PDstandardNth33alpha + (4*cdphi3 +
- Gt333)*PDstandardNth3alpha + alphaL*R33;
+ CCTK_REAL_VEC Ats11 =
+ kmadd(Gt211,JacPDstandardNth2alpha,kmadd(Gt311,JacPDstandardNth3alpha,kmadd(alphaL,R11,kmsub(JacPDstandardNth1alpha,kmadd(cdphi1,ToReal(4),Gt111),JacPDstandardNth11alpha))));
- CCTK_REAL trAts = Ats11*gu11 + Ats22*gu22 + 2*(Ats12*gu12 + Ats13*gu13
- + Ats23*gu23) + Ats33*gu33;
+ 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 At11rhsL = -2.*alphaL*(At11L*Atm11 + At12L*Atm21 +
- At13L*Atm31) + 2.*(At12L*PDstandardNth1beta2 +
- At13L*PDstandardNth1beta3) +
- At11L*(1.333333333333333333333333333333333333333*PDstandardNth1beta1 -
- 0.6666666666666666666666666666666666666667*(PDstandardNth2beta2 +
- PDstandardNth3beta3) + alphaL*trKL) + em4phi*(Ats11 -
- 0.3333333333333333333333333333333333333333*g11*trAts +
- alphaL*(-25.13274122871834590770114706623602307358*eTxxL +
- 8.377580409572781969233715688745341024526*g11*trS));
+ 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 At12rhsL = -2.*alphaL*(At11L*Atm12 + At12L*Atm22 +
- At13L*Atm32) + At22L*PDstandardNth1beta2 + At23L*PDstandardNth1beta3 +
- At11L*PDstandardNth2beta1 + At13L*PDstandardNth2beta3 +
- At12L*(0.3333333333333333333333333333333333333333*(PDstandardNth1beta1
- + PDstandardNth2beta2) -
- 0.6666666666666666666666666666666666666667*PDstandardNth3beta3 +
- alphaL*trKL) + em4phi*(Ats12 -
- 0.3333333333333333333333333333333333333333*g12*trAts +
- alphaL*(-25.13274122871834590770114706623602307358*eTxyL +
- 8.377580409572781969233715688745341024526*g12*trS));
+ CCTK_REAL_VEC Ats22 =
+ kmadd(Gt122,JacPDstandardNth1alpha,kmadd(Gt322,JacPDstandardNth3alpha,kmadd(alphaL,R22,kmsub(JacPDstandardNth2alpha,kmadd(cdphi2,ToReal(4),Gt222),JacPDstandardNth22alpha))));
- CCTK_REAL At13rhsL = -2.*alphaL*(At11L*Atm13 + At12L*Atm23 +
- At13L*Atm33) + At23L*PDstandardNth1beta2 + At33L*PDstandardNth1beta3 +
- At11L*PDstandardNth3beta1 + At12L*PDstandardNth3beta2 +
- At13L*(-0.6666666666666666666666666666666666666667*PDstandardNth2beta2
- + 0.3333333333333333333333333333333333333333*(PDstandardNth1beta1 +
- PDstandardNth3beta3) + alphaL*trKL) + em4phi*(Ats13 -
- 0.3333333333333333333333333333333333333333*g13*trAts +
- alphaL*(-25.13274122871834590770114706623602307358*eTxzL +
- 8.377580409572781969233715688745341024526*g13*trS));
+ 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 At22rhsL = -2.*alphaL*(At12L*Atm12 + At22L*Atm22 +
- At23L*Atm32) + 2.*(At12L*PDstandardNth2beta1 +
- At23L*PDstandardNth2beta3) +
- At22L*(1.333333333333333333333333333333333333333*PDstandardNth2beta2 -
- 0.6666666666666666666666666666666666666667*(PDstandardNth1beta1 +
- PDstandardNth3beta3) + alphaL*trKL) + em4phi*(Ats22 -
- 0.3333333333333333333333333333333333333333*g22*trAts +
- alphaL*(-25.13274122871834590770114706623602307358*eTyyL +
- 8.377580409572781969233715688745341024526*g22*trS));
-
- CCTK_REAL At23rhsL = -2.*alphaL*(At12L*Atm13 + At22L*Atm23 +
- At23L*Atm33) + At13L*PDstandardNth2beta1 + At33L*PDstandardNth2beta3 +
- At12L*PDstandardNth3beta1 + At22L*PDstandardNth3beta2 +
- At23L*(-0.6666666666666666666666666666666666666667*PDstandardNth1beta1
- + 0.3333333333333333333333333333333333333333*(PDstandardNth2beta2 +
- PDstandardNth3beta3) + alphaL*trKL) + em4phi*(Ats23 -
- 0.3333333333333333333333333333333333333333*g23*trAts +
- alphaL*(-25.13274122871834590770114706623602307358*eTyzL +
- 8.377580409572781969233715688745341024526*g23*trS));
-
- CCTK_REAL At33rhsL = -2.*alphaL*(At13L*Atm13 + At23L*Atm23 +
- At33L*Atm33) + 2.*(At13L*PDstandardNth3beta1 +
- At23L*PDstandardNth3beta2) +
- At33L*(-0.6666666666666666666666666666666666666667*(PDstandardNth1beta1
- + PDstandardNth2beta2) +
- 1.333333333333333333333333333333333333333*PDstandardNth3beta3 +
- alphaL*trKL) + em4phi*(Ats33 -
- 0.3333333333333333333333333333333333333333*g33*trAts +
- alphaL*(-25.13274122871834590770114706623602307358*eTzzL +
- 8.377580409572781969233715688745341024526*g33*trS));
-
- /* Copy local copies back to grid functions */
- At11rhs[index] = At11rhsL;
- At12rhs[index] = At12rhsL;
- At13rhs[index] = At13rhsL;
- At22rhs[index] = At22rhsL;
- At23rhs[index] = At23rhsL;
- At33rhs[index] = At33rhsL;
+ 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 =
+ kmadd(em4phi,kmadd(g11,kmul(trAts,ToReal(-0.3333333333333333333333333333333333333333)),Ats11),kmadd(At11L,kmadd(kadd(JacPDstandardNth2beta2,JacPDstandardNth3beta3),ToReal(-0.6666666666666666666666666666666666666667),kmul(JacPDstandardNth1beta1,ToReal(1.333333333333333333333333333333333333333))),kmadd(kmadd(At12L,JacPDstandardNth1beta2,kmul(At13L,JacPDstandardNth1beta3)),ToReal(2.),kmul(alphaL,kmadd(kmadd(At12L,Atm21,kmul(At13L,Atm31)),ToReal(-2.),kmadd(At11L,kmadd(Atm11,ToReal(-2.),trKL),kmul(em4phi,kmadd(eTxxL,ToReal(-25.13274122871834590770114706623602307358),kmul(g11,kmul(trS,ToReal(8.377580409572781969233715688745341024526)))))))))));
+
+ CCTK_REAL_VEC At12rhsL =
+ kmadd(At22L,JacPDstandardNth1beta2,kmadd(At23L,JacPDstandardNth1beta3,kmadd(At11L,JacPDstandardNth2beta1,kmadd(At13L,JacPDstandardNth2beta3,kmadd(em4phi,kmadd(g12,kmul(trAts,ToReal(-0.3333333333333333333333333333333333333333)),Ats12),kmadd(At12L,kmadd(JacPDstandardNth3beta3,ToReal(-0.6666666666666666666666666666666666666667),kmul(kadd(JacPDstandardNth1beta1,JacPDstandardNth2beta2),ToReal(0.3333333333333333333333333333333333333333))),kmul(alphaL,kmadd(At12L,trKL,kmadd(kmadd(At11L,Atm12,kmadd(At12L,Atm22,kmul(At13L,Atm32))),ToReal(-2.),kmul(em4phi,kmadd(eTxyL,ToReal(-25.13274122871834590770114706623602307358),kmul(g12,kmul(trS,ToReal(8.377580409572781969233715688745341024526))))))))))))));
+
+ CCTK_REAL_VEC At13rhsL =
+ kmadd(At23L,JacPDstandardNth1beta2,kmadd(At33L,JacPDstandardNth1beta3,kmadd(At11L,JacPDstandardNth3beta1,kmadd(At12L,JacPDstandardNth3beta2,kmadd(em4phi,kmadd(g13,kmul(trAts,ToReal(-0.3333333333333333333333333333333333333333)),Ats13),kmadd(At13L,kmadd(JacPDstandardNth2beta2,ToReal(-0.6666666666666666666666666666666666666667),kmul(kadd(JacPDstandardNth1beta1,JacPDstandardNth3beta3),ToReal(0.3333333333333333333333333333333333333333))),kmul(alphaL,kmadd(At13L,trKL,kmadd(kmadd(At11L,Atm13,kmadd(At12L,Atm23,kmul(At13L,Atm33))),ToReal(-2.),kmul(em4phi,kmadd(eTxzL,ToReal(-25.13274122871834590770114706623602307358),kmul(g13,kmul(trS,ToReal(8.377580409572781969233715688745341024526))))))))))))));
+
+ CCTK_REAL_VEC At22rhsL =
+ kmadd(em4phi,kmadd(g22,kmul(trAts,ToReal(-0.3333333333333333333333333333333333333333)),Ats22),kmadd(At22L,kmadd(kadd(JacPDstandardNth1beta1,JacPDstandardNth3beta3),ToReal(-0.6666666666666666666666666666666666666667),kmul(JacPDstandardNth2beta2,ToReal(1.333333333333333333333333333333333333333))),kmadd(kmadd(At12L,JacPDstandardNth2beta1,kmul(At23L,JacPDstandardNth2beta3)),ToReal(2.),kmul(alphaL,kmadd(At22L,trKL,kmadd(kmadd(At12L,Atm12,kmadd(At22L,Atm22,kmul(At23L,Atm32))),ToReal(-2.),kmul(em4phi,kmadd(eTyyL,ToReal(-25.13274122871834590770114706623602307358),kmul(g22,kmul(trS,ToReal(8.377580409572781969233715688745341024526)))))))))));
+
+ CCTK_REAL_VEC At23rhsL =
+ kmadd(At13L,JacPDstandardNth2beta1,kmadd(At33L,JacPDstandardNth2beta3,kmadd(At12L,JacPDstandardNth3beta1,kmadd(At22L,JacPDstandardNth3beta2,kmadd(em4phi,kmadd(g23,kmul(trAts,ToReal(-0.3333333333333333333333333333333333333333)),Ats23),kmadd(At23L,kmadd(JacPDstandardNth1beta1,ToReal(-0.6666666666666666666666666666666666666667),kmul(kadd(JacPDstandardNth2beta2,JacPDstandardNth3beta3),ToReal(0.3333333333333333333333333333333333333333))),kmul(alphaL,kmadd(At23L,trKL,kmadd(kmadd(At12L,Atm13,kmadd(At22L,Atm23,kmul(At23L,Atm33))),ToReal(-2.),kmul(em4phi,kmadd(eTyzL,ToReal(-25.13274122871834590770114706623602307358),kmul(g23,kmul(trS,ToReal(8.377580409572781969233715688745341024526))))))))))))));
+
+ CCTK_REAL_VEC At33rhsL =
+ kmadd(em4phi,kmadd(g33,kmul(trAts,ToReal(-0.3333333333333333333333333333333333333333)),Ats33),kmadd(At33L,kmadd(kadd(JacPDstandardNth1beta1,JacPDstandardNth2beta2),ToReal(-0.6666666666666666666666666666666666666667),kmul(JacPDstandardNth3beta3,ToReal(1.333333333333333333333333333333333333333))),kmadd(kmadd(At13L,JacPDstandardNth3beta1,kmul(At23L,JacPDstandardNth3beta2)),ToReal(2.),kmul(alphaL,kmadd(At33L,trKL,kmadd(kmadd(At13L,Atm13,kmadd(At23L,Atm23,kmul(At33L,Atm33))),ToReal(-2.),kmul(em4phi,kmadd(eTzzL,ToReal(-25.13274122871834590770114706623602307358),kmul(g33,kmul(trS,ToReal(8.377580409572781969233715688745341024526)))))))))));
+
+ /* 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(At11rhs[index],At11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At12rhs[index],At12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At13rhs[index],At13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At22rhs[index],At22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At23rhs[index],At23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At33rhs[index],At33rhsL,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(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_hi(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_hi(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_hi(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_hi(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_hi(At33rhs[index],At33rhsL,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(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_lo(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_lo(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_lo(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_lo(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_lo(At33rhs[index],At33rhsL,elt_count);
+ break;
+ }
+ vec_store_nta(At11rhs[index],At11rhsL);
+ vec_store_nta(At12rhs[index],At12rhsL);
+ vec_store_nta(At13rhs[index],At13rhsL);
+ vec_store_nta(At22rhs[index],At22rhsL);
+ vec_store_nta(At23rhs[index],At23rhsL);
+ vec_store_nta(At33rhs[index],At33rhsL);
}
- LC_ENDLOOP3 (ML_BSSN_RHS2);
+ LC_ENDLOOP3VEC (ML_BSSN_RHS2);
}
extern "C" void ML_BSSN_RHS2(CCTK_ARGUMENTS)
@@ -721,5 +1857,43 @@ extern "C" void ML_BSSN_RHS2(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_RHS2_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_RHS2_calc_every != ML_BSSN_RHS2_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN::ML_curv","ML_BSSN::ML_curvrhs","ML_BSSN::ML_Gamma","ML_BSSN::ML_lapse","ML_BSSN::ML_log_confac","ML_BSSN::ML_metric","ML_BSSN::ML_shift","ML_BSSN::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_RHS2", 8, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_RHS2", 1, 1, 1);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_RHS2", 2, 2, 2);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_RHS2", 3, 3, 3);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_RHS2", 4, 4, 4);
+ break;
+ }
+
GenericFD_LoopOverInterior(cctkGH, &ML_BSSN_RHS2_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_RHS2_Body");
+ }
}
diff --git a/ML_BSSN/src/ML_BSSN_RHSStaticBoundary.cc b/ML_BSSN/src/ML_BSSN_RHSStaticBoundary.cc
index d5809e7..5bc0579 100644
--- a/ML_BSSN/src/ML_BSSN_RHSStaticBoundary.cc
+++ b/ML_BSSN/src/ML_BSSN_RHSStaticBoundary.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_RHSStaticBoundary_SelectBCs(CCTK_ARGUMENTS)
{
@@ -57,7 +58,7 @@ extern "C" void ML_BSSN_RHSStaticBoundary_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_BSSN_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_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;
@@ -65,20 +66,6 @@ static void ML_BSSN_RHSStaticBoundary_Body(cGH const * restrict const cctkGH, in
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_RHSStaticBoundary_Body");
- }
-
- if (cctk_iteration % ML_BSSN_RHSStaticBoundary_calc_every != ML_BSSN_RHSStaticBoundary_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN::ML_curvrhs","ML_BSSN::ML_dtlapserhs","ML_BSSN::ML_dtshiftrhs","ML_BSSN::ML_Gammarhs","ML_BSSN::ML_lapserhs","ML_BSSN::ML_log_confacrhs","ML_BSSN::ML_metricrhs","ML_BSSN::ML_shiftrhs","ML_BSSN::ML_trace_curvrhs"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_RHSStaticBoundary", 9, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -88,47 +75,162 @@ static void ML_BSSN_RHSStaticBoundary_Body(cGH const * restrict const cctkGH, in
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const p1o24dx = 0.0416666666666666666666666666667*INV(dx);
- CCTK_REAL const p1o24dy = 0.0416666666666666666666666666667*INV(dy);
- CCTK_REAL const p1o24dz = 0.0416666666666666666666666666667*INV(dz);
- CCTK_REAL const p1o64dx = 0.015625*INV(dx);
- CCTK_REAL const p1o64dy = 0.015625*INV(dy);
- CCTK_REAL const p1o64dz = 0.015625*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_RHSStaticBoundary,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_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;
@@ -136,89 +238,203 @@ static void ML_BSSN_RHSStaticBoundary_Body(cGH const * restrict const cctkGH, in
+
/* 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 phirhsL = 0;
+ CCTK_REAL_VEC phirhsL = ToReal(0);
+
+ CCTK_REAL_VEC gt11rhsL = ToReal(0);
- CCTK_REAL gt11rhsL = 0;
+ CCTK_REAL_VEC gt12rhsL = ToReal(0);
- CCTK_REAL gt12rhsL = 0;
+ CCTK_REAL_VEC gt13rhsL = ToReal(0);
- CCTK_REAL gt13rhsL = 0;
+ CCTK_REAL_VEC gt22rhsL = ToReal(0);
- CCTK_REAL gt22rhsL = 0;
+ CCTK_REAL_VEC gt23rhsL = ToReal(0);
- CCTK_REAL gt23rhsL = 0;
+ CCTK_REAL_VEC gt33rhsL = ToReal(0);
- CCTK_REAL gt33rhsL = 0;
+ CCTK_REAL_VEC trKrhsL = ToReal(0);
- CCTK_REAL trKrhsL = 0;
+ CCTK_REAL_VEC At11rhsL = ToReal(0);
- CCTK_REAL At11rhsL = 0;
+ CCTK_REAL_VEC At12rhsL = ToReal(0);
- CCTK_REAL At12rhsL = 0;
+ CCTK_REAL_VEC At13rhsL = ToReal(0);
- CCTK_REAL At13rhsL = 0;
+ CCTK_REAL_VEC At22rhsL = ToReal(0);
- CCTK_REAL At22rhsL = 0;
+ CCTK_REAL_VEC At23rhsL = ToReal(0);
- CCTK_REAL At23rhsL = 0;
+ CCTK_REAL_VEC At33rhsL = ToReal(0);
- CCTK_REAL At33rhsL = 0;
+ CCTK_REAL_VEC Xt1rhsL = ToReal(0);
- CCTK_REAL Xt1rhsL = 0;
+ CCTK_REAL_VEC Xt2rhsL = ToReal(0);
- CCTK_REAL Xt2rhsL = 0;
+ CCTK_REAL_VEC Xt3rhsL = ToReal(0);
- CCTK_REAL Xt3rhsL = 0;
+ CCTK_REAL_VEC alpharhsL = ToReal(0);
- CCTK_REAL alpharhsL = 0;
+ CCTK_REAL_VEC ArhsL = ToReal(0);
- CCTK_REAL ArhsL = 0;
+ CCTK_REAL_VEC beta1rhsL = ToReal(0);
- CCTK_REAL beta1rhsL = 0;
+ CCTK_REAL_VEC beta2rhsL = ToReal(0);
- CCTK_REAL beta2rhsL = 0;
+ CCTK_REAL_VEC beta3rhsL = ToReal(0);
- CCTK_REAL beta3rhsL = 0;
+ CCTK_REAL_VEC B1rhsL = ToReal(0);
- CCTK_REAL B1rhsL = 0;
+ CCTK_REAL_VEC B2rhsL = ToReal(0);
- CCTK_REAL B2rhsL = 0;
+ CCTK_REAL_VEC B3rhsL = ToReal(0);
- CCTK_REAL B3rhsL = 0;
+ /* If necessary, store only partial vectors after the first iteration */
- /* Copy local copies back to grid functions */
- alpharhs[index] = alpharhsL;
- Arhs[index] = ArhsL;
- At11rhs[index] = At11rhsL;
- At12rhs[index] = At12rhsL;
- At13rhs[index] = At13rhsL;
- At22rhs[index] = At22rhsL;
- At23rhs[index] = At23rhsL;
- At33rhs[index] = At33rhsL;
- B1rhs[index] = B1rhsL;
- B2rhs[index] = B2rhsL;
- B3rhs[index] = B3rhsL;
- beta1rhs[index] = beta1rhsL;
- beta2rhs[index] = beta2rhsL;
- beta3rhs[index] = beta3rhsL;
- gt11rhs[index] = gt11rhsL;
- gt12rhs[index] = gt12rhsL;
- gt13rhs[index] = gt13rhsL;
- gt22rhs[index] = gt22rhsL;
- gt23rhs[index] = gt23rhsL;
- gt33rhs[index] = gt33rhsL;
- phirhs[index] = phirhsL;
- trKrhs[index] = trKrhsL;
- Xt1rhs[index] = Xt1rhsL;
- Xt2rhs[index] = Xt2rhsL;
- Xt3rhs[index] = Xt3rhsL;
+ 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(Arhs[index],ArhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At11rhs[index],At11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At12rhs[index],At12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At13rhs[index],At13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At22rhs[index],At22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At23rhs[index],At23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At33rhs[index],At33rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B1rhs[index],B1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B2rhs[index],B2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt12rhs[index],gt12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt13rhs[index],gt13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt22rhs[index],gt22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt23rhs[index],gt23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt33rhs[index],gt33rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(phirhs[index],phirhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(trKrhs[index],trKrhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt1rhs[index],Xt1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt2rhs[index],Xt2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt3rhs[index],Xt3rhsL,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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_hi(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_hi(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_hi(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_hi(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_hi(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_hi(At33rhs[index],At33rhsL,elt_count);
+ vec_store_nta_partial_hi(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_hi(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_hi(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_hi(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_hi(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_hi(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_hi(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_hi(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_hi(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_hi(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_hi(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt3rhs[index],Xt3rhsL,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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_lo(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_lo(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_lo(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_lo(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_lo(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_lo(At33rhs[index],At33rhsL,elt_count);
+ vec_store_nta_partial_lo(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_lo(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_lo(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_lo(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_lo(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_lo(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_lo(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_lo(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_lo(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_lo(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_lo(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt3rhs[index],Xt3rhsL,elt_count);
+ break;
+ }
+ vec_store_nta(alpharhs[index],alpharhsL);
+ vec_store_nta(Arhs[index],ArhsL);
+ vec_store_nta(At11rhs[index],At11rhsL);
+ vec_store_nta(At12rhs[index],At12rhsL);
+ vec_store_nta(At13rhs[index],At13rhsL);
+ vec_store_nta(At22rhs[index],At22rhsL);
+ vec_store_nta(At23rhs[index],At23rhsL);
+ vec_store_nta(At33rhs[index],At33rhsL);
+ vec_store_nta(B1rhs[index],B1rhsL);
+ vec_store_nta(B2rhs[index],B2rhsL);
+ vec_store_nta(B3rhs[index],B3rhsL);
+ vec_store_nta(beta1rhs[index],beta1rhsL);
+ vec_store_nta(beta2rhs[index],beta2rhsL);
+ vec_store_nta(beta3rhs[index],beta3rhsL);
+ vec_store_nta(gt11rhs[index],gt11rhsL);
+ vec_store_nta(gt12rhs[index],gt12rhsL);
+ vec_store_nta(gt13rhs[index],gt13rhsL);
+ vec_store_nta(gt22rhs[index],gt22rhsL);
+ vec_store_nta(gt23rhs[index],gt23rhsL);
+ vec_store_nta(gt33rhs[index],gt33rhsL);
+ vec_store_nta(phirhs[index],phirhsL);
+ vec_store_nta(trKrhs[index],trKrhsL);
+ vec_store_nta(Xt1rhs[index],Xt1rhsL);
+ vec_store_nta(Xt2rhs[index],Xt2rhsL);
+ vec_store_nta(Xt3rhs[index],Xt3rhsL);
}
- LC_ENDLOOP3 (ML_BSSN_RHSStaticBoundary);
+ LC_ENDLOOP3VEC (ML_BSSN_RHSStaticBoundary);
}
extern "C" void ML_BSSN_RHSStaticBoundary(CCTK_ARGUMENTS)
@@ -226,5 +442,39 @@ extern "C" void ML_BSSN_RHSStaticBoundary(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_RHSStaticBoundary_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_RHSStaticBoundary_calc_every != ML_BSSN_RHSStaticBoundary_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN::ML_curvrhs","ML_BSSN::ML_dtlapserhs","ML_BSSN::ML_dtshiftrhs","ML_BSSN::ML_Gammarhs","ML_BSSN::ML_lapserhs","ML_BSSN::ML_log_confacrhs","ML_BSSN::ML_metricrhs","ML_BSSN::ML_shiftrhs","ML_BSSN::ML_trace_curvrhs"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_RHSStaticBoundary", 9, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverBoundary(cctkGH, &ML_BSSN_RHSStaticBoundary_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_RHSStaticBoundary_Body");
+ }
}
diff --git a/ML_BSSN/src/ML_BSSN_boundary.cc b/ML_BSSN/src/ML_BSSN_boundary.cc
index ac1e90f..af2287a 100644
--- a/ML_BSSN/src/ML_BSSN_boundary.cc
+++ b/ML_BSSN/src/ML_BSSN_boundary.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_boundary_SelectBCs(CCTK_ARGUMENTS)
{
@@ -57,7 +58,7 @@ extern "C" void ML_BSSN_boundary_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_BSSN_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_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;
@@ -65,20 +66,6 @@ static void ML_BSSN_boundary_Body(cGH const * restrict const cctkGH, int const d
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_boundary_Body");
- }
-
- if (cctk_iteration % ML_BSSN_boundary_calc_every != ML_BSSN_boundary_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN::ML_curv","ML_BSSN::ML_dtlapse","ML_BSSN::ML_dtshift","ML_BSSN::ML_Gamma","ML_BSSN::ML_lapse","ML_BSSN::ML_log_confac","ML_BSSN::ML_metric","ML_BSSN::ML_shift","ML_BSSN::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_boundary", 9, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -88,47 +75,162 @@ static void ML_BSSN_boundary_Body(cGH const * restrict const cctkGH, int const d
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const p1o24dx = 0.0416666666666666666666666666667*INV(dx);
- CCTK_REAL const p1o24dy = 0.0416666666666666666666666666667*INV(dy);
- CCTK_REAL const p1o24dz = 0.0416666666666666666666666666667*INV(dz);
- CCTK_REAL const p1o64dx = 0.015625*INV(dx);
- CCTK_REAL const p1o64dy = 0.015625*INV(dy);
- CCTK_REAL const p1o64dz = 0.015625*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_boundary,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_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;
@@ -136,89 +238,203 @@ static void ML_BSSN_boundary_Body(cGH const * restrict const cctkGH, int const d
+
/* 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 phiL = IfThen(conformalMethod,1,0);
+ CCTK_REAL_VEC phiL = IfThen(conformalMethod,ToReal(1),ToReal(0));
+
+ CCTK_REAL_VEC gt11L = ToReal(1);
- CCTK_REAL gt11L = 1;
+ CCTK_REAL_VEC gt12L = ToReal(0);
- CCTK_REAL gt12L = 0;
+ CCTK_REAL_VEC gt13L = ToReal(0);
- CCTK_REAL gt13L = 0;
+ CCTK_REAL_VEC gt22L = ToReal(1);
- CCTK_REAL gt22L = 1;
+ CCTK_REAL_VEC gt23L = ToReal(0);
- CCTK_REAL gt23L = 0;
+ CCTK_REAL_VEC gt33L = ToReal(1);
- CCTK_REAL gt33L = 1;
+ CCTK_REAL_VEC trKL = ToReal(0);
- CCTK_REAL trKL = 0;
+ CCTK_REAL_VEC At11L = ToReal(0);
- CCTK_REAL At11L = 0;
+ CCTK_REAL_VEC At12L = ToReal(0);
- CCTK_REAL At12L = 0;
+ CCTK_REAL_VEC At13L = ToReal(0);
- CCTK_REAL At13L = 0;
+ CCTK_REAL_VEC At22L = ToReal(0);
- CCTK_REAL At22L = 0;
+ CCTK_REAL_VEC At23L = ToReal(0);
- CCTK_REAL At23L = 0;
+ CCTK_REAL_VEC At33L = ToReal(0);
- CCTK_REAL At33L = 0;
+ CCTK_REAL_VEC Xt1L = ToReal(0);
- CCTK_REAL Xt1L = 0;
+ CCTK_REAL_VEC Xt2L = ToReal(0);
- CCTK_REAL Xt2L = 0;
+ CCTK_REAL_VEC Xt3L = ToReal(0);
- CCTK_REAL Xt3L = 0;
+ CCTK_REAL_VEC alphaL = ToReal(1);
- CCTK_REAL alphaL = 1;
+ CCTK_REAL_VEC AL = ToReal(0);
- CCTK_REAL AL = 0;
+ CCTK_REAL_VEC beta1L = ToReal(0);
- CCTK_REAL beta1L = 0;
+ CCTK_REAL_VEC beta2L = ToReal(0);
- CCTK_REAL beta2L = 0;
+ CCTK_REAL_VEC beta3L = ToReal(0);
- CCTK_REAL beta3L = 0;
+ CCTK_REAL_VEC B1L = ToReal(0);
- CCTK_REAL B1L = 0;
+ CCTK_REAL_VEC B2L = ToReal(0);
- CCTK_REAL B2L = 0;
+ CCTK_REAL_VEC B3L = ToReal(0);
- CCTK_REAL B3L = 0;
+ /* If necessary, store only partial vectors after the first iteration */
- /* Copy local copies back to grid functions */
- A[index] = AL;
- alpha[index] = alphaL;
- At11[index] = At11L;
- At12[index] = At12L;
- At13[index] = At13L;
- At22[index] = At22L;
- At23[index] = At23L;
- At33[index] = At33L;
- B1[index] = B1L;
- B2[index] = B2L;
- B3[index] = B3L;
- beta1[index] = beta1L;
- beta2[index] = beta2L;
- beta3[index] = beta3L;
- gt11[index] = gt11L;
- gt12[index] = gt12L;
- gt13[index] = gt13L;
- gt22[index] = gt22L;
- gt23[index] = gt23L;
- gt33[index] = gt33L;
- phi[index] = phiL;
- trK[index] = trKL;
- Xt1[index] = Xt1L;
- Xt2[index] = Xt2L;
- Xt3[index] = Xt3L;
+ 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(A[index],AL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(alpha[index],alphaL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At11[index],At11L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At12[index],At12L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At13[index],At13L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At22[index],At22L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At23[index],At23L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At33[index],At33L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B1[index],B1L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B2[index],B2L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B3[index],B3L,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(gt11[index],gt11L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt12[index],gt12L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt13[index],gt13L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt22[index],gt22L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt23[index],gt23L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt33[index],gt33L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(phi[index],phiL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(trK[index],trKL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt1[index],Xt1L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt2[index],Xt2L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt3[index],Xt3L,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(A[index],AL,elt_count);
+ vec_store_nta_partial_hi(alpha[index],alphaL,elt_count);
+ vec_store_nta_partial_hi(At11[index],At11L,elt_count);
+ vec_store_nta_partial_hi(At12[index],At12L,elt_count);
+ vec_store_nta_partial_hi(At13[index],At13L,elt_count);
+ vec_store_nta_partial_hi(At22[index],At22L,elt_count);
+ vec_store_nta_partial_hi(At23[index],At23L,elt_count);
+ vec_store_nta_partial_hi(At33[index],At33L,elt_count);
+ vec_store_nta_partial_hi(B1[index],B1L,elt_count);
+ vec_store_nta_partial_hi(B2[index],B2L,elt_count);
+ vec_store_nta_partial_hi(B3[index],B3L,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(gt11[index],gt11L,elt_count);
+ vec_store_nta_partial_hi(gt12[index],gt12L,elt_count);
+ vec_store_nta_partial_hi(gt13[index],gt13L,elt_count);
+ vec_store_nta_partial_hi(gt22[index],gt22L,elt_count);
+ vec_store_nta_partial_hi(gt23[index],gt23L,elt_count);
+ vec_store_nta_partial_hi(gt33[index],gt33L,elt_count);
+ vec_store_nta_partial_hi(phi[index],phiL,elt_count);
+ vec_store_nta_partial_hi(trK[index],trKL,elt_count);
+ vec_store_nta_partial_hi(Xt1[index],Xt1L,elt_count);
+ vec_store_nta_partial_hi(Xt2[index],Xt2L,elt_count);
+ vec_store_nta_partial_hi(Xt3[index],Xt3L,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(A[index],AL,elt_count);
+ vec_store_nta_partial_lo(alpha[index],alphaL,elt_count);
+ vec_store_nta_partial_lo(At11[index],At11L,elt_count);
+ vec_store_nta_partial_lo(At12[index],At12L,elt_count);
+ vec_store_nta_partial_lo(At13[index],At13L,elt_count);
+ vec_store_nta_partial_lo(At22[index],At22L,elt_count);
+ vec_store_nta_partial_lo(At23[index],At23L,elt_count);
+ vec_store_nta_partial_lo(At33[index],At33L,elt_count);
+ vec_store_nta_partial_lo(B1[index],B1L,elt_count);
+ vec_store_nta_partial_lo(B2[index],B2L,elt_count);
+ vec_store_nta_partial_lo(B3[index],B3L,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(gt11[index],gt11L,elt_count);
+ vec_store_nta_partial_lo(gt12[index],gt12L,elt_count);
+ vec_store_nta_partial_lo(gt13[index],gt13L,elt_count);
+ vec_store_nta_partial_lo(gt22[index],gt22L,elt_count);
+ vec_store_nta_partial_lo(gt23[index],gt23L,elt_count);
+ vec_store_nta_partial_lo(gt33[index],gt33L,elt_count);
+ vec_store_nta_partial_lo(phi[index],phiL,elt_count);
+ vec_store_nta_partial_lo(trK[index],trKL,elt_count);
+ vec_store_nta_partial_lo(Xt1[index],Xt1L,elt_count);
+ vec_store_nta_partial_lo(Xt2[index],Xt2L,elt_count);
+ vec_store_nta_partial_lo(Xt3[index],Xt3L,elt_count);
+ break;
+ }
+ vec_store_nta(A[index],AL);
+ vec_store_nta(alpha[index],alphaL);
+ vec_store_nta(At11[index],At11L);
+ vec_store_nta(At12[index],At12L);
+ vec_store_nta(At13[index],At13L);
+ vec_store_nta(At22[index],At22L);
+ vec_store_nta(At23[index],At23L);
+ vec_store_nta(At33[index],At33L);
+ vec_store_nta(B1[index],B1L);
+ vec_store_nta(B2[index],B2L);
+ vec_store_nta(B3[index],B3L);
+ vec_store_nta(beta1[index],beta1L);
+ vec_store_nta(beta2[index],beta2L);
+ vec_store_nta(beta3[index],beta3L);
+ vec_store_nta(gt11[index],gt11L);
+ vec_store_nta(gt12[index],gt12L);
+ vec_store_nta(gt13[index],gt13L);
+ vec_store_nta(gt22[index],gt22L);
+ vec_store_nta(gt23[index],gt23L);
+ vec_store_nta(gt33[index],gt33L);
+ vec_store_nta(phi[index],phiL);
+ vec_store_nta(trK[index],trKL);
+ vec_store_nta(Xt1[index],Xt1L);
+ vec_store_nta(Xt2[index],Xt2L);
+ vec_store_nta(Xt3[index],Xt3L);
}
- LC_ENDLOOP3 (ML_BSSN_boundary);
+ LC_ENDLOOP3VEC (ML_BSSN_boundary);
}
extern "C" void ML_BSSN_boundary(CCTK_ARGUMENTS)
@@ -226,5 +442,39 @@ extern "C" void ML_BSSN_boundary(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_boundary_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_boundary_calc_every != ML_BSSN_boundary_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN::ML_curv","ML_BSSN::ML_dtlapse","ML_BSSN::ML_dtshift","ML_BSSN::ML_Gamma","ML_BSSN::ML_lapse","ML_BSSN::ML_log_confac","ML_BSSN::ML_metric","ML_BSSN::ML_shift","ML_BSSN::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_boundary", 9, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverBoundaryWithGhosts(cctkGH, &ML_BSSN_boundary_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_boundary_Body");
+ }
}
diff --git a/ML_BSSN/src/ML_BSSN_constraints1.cc b/ML_BSSN/src/ML_BSSN_constraints1.cc
index 77156fc..85c3acd 100644
--- a/ML_BSSN/src/ML_BSSN_constraints1.cc
+++ b/ML_BSSN/src/ML_BSSN_constraints1.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_constraints1_SelectBCs(CCTK_ARGUMENTS)
{
@@ -33,7 +34,7 @@ extern "C" void ML_BSSN_constraints1_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_BSSN_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_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;
@@ -41,21 +42,6 @@ static void ML_BSSN_constraints1_Body(cGH const * restrict const cctkGH, int con
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_constraints1_Body");
- }
-
- if (cctk_iteration % ML_BSSN_constraints1_calc_every != ML_BSSN_constraints1_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN::ML_curv","ML_BSSN::ML_Gamma","ML_BSSN::ML_Ham","ML_BSSN::ML_lapse","ML_BSSN::ML_log_confac","ML_BSSN::ML_metric","ML_BSSN::ML_shift","ML_BSSN::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_constraints1", 8, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_constraints1", 2, 2, 2);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -65,88 +51,203 @@ static void ML_BSSN_constraints1_Body(cGH const * restrict const cctkGH, int con
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const p1o24dx = 0.0416666666666666666666666666667*INV(dx);
- CCTK_REAL const p1o24dy = 0.0416666666666666666666666666667*INV(dy);
- CCTK_REAL const p1o24dz = 0.0416666666666666666666666666667*INV(dz);
- CCTK_REAL const p1o64dx = 0.015625*INV(dx);
- CCTK_REAL const p1o64dy = 0.015625*INV(dy);
- CCTK_REAL const p1o64dz = 0.015625*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_constraints1,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_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 alphaL = alpha[index];
- CCTK_REAL At11L = At11[index];
- CCTK_REAL At12L = At12[index];
- CCTK_REAL At13L = At13[index];
- CCTK_REAL At22L = At22[index];
- CCTK_REAL At23L = At23[index];
- CCTK_REAL At33L = At33[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL gt11L = gt11[index];
- CCTK_REAL gt12L = gt12[index];
- CCTK_REAL gt13L = gt13[index];
- CCTK_REAL gt22L = gt22[index];
- CCTK_REAL gt23L = gt23[index];
- CCTK_REAL gt33L = gt33[index];
- CCTK_REAL phiL = phi[index];
- CCTK_REAL trKL = trK[index];
- CCTK_REAL Xt1L = Xt1[index];
- CCTK_REAL Xt2L = Xt2[index];
- CCTK_REAL Xt3L = Xt3[index];
-
- CCTK_REAL eTttL, eTtxL, eTtyL, eTtzL, eTxxL, eTxyL, eTxzL, eTyyL, eTyzL, eTzzL;
+ 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 = eTtt[index];
- eTtxL = eTtx[index];
- eTtyL = eTty[index];
- eTtzL = eTtz[index];
- eTxxL = eTxx[index];
- eTxyL = eTxy[index];
- eTxzL = eTxz[index];
- eTyyL = eTyy[index];
- eTyzL = eTyz[index];
- eTzzL = eTzz[index];
+ 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
{
@@ -162,446 +263,1332 @@ static void ML_BSSN_constraints1_Body(cGH const * restrict const cctkGH, int con
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 const PDstandardNth1gt11 = PDstandardNth1(&gt11[index]);
- CCTK_REAL const PDstandardNth2gt11 = PDstandardNth2(&gt11[index]);
- CCTK_REAL const PDstandardNth3gt11 = PDstandardNth3(&gt11[index]);
- CCTK_REAL const PDstandardNth11gt11 = PDstandardNth11(&gt11[index]);
- CCTK_REAL const PDstandardNth22gt11 = PDstandardNth22(&gt11[index]);
- CCTK_REAL const PDstandardNth33gt11 = PDstandardNth33(&gt11[index]);
- CCTK_REAL const PDstandardNth12gt11 = PDstandardNth12(&gt11[index]);
- CCTK_REAL const PDstandardNth13gt11 = PDstandardNth13(&gt11[index]);
- CCTK_REAL const PDstandardNth23gt11 = PDstandardNth23(&gt11[index]);
- CCTK_REAL const PDstandardNth1gt12 = PDstandardNth1(&gt12[index]);
- CCTK_REAL const PDstandardNth2gt12 = PDstandardNth2(&gt12[index]);
- CCTK_REAL const PDstandardNth3gt12 = PDstandardNth3(&gt12[index]);
- CCTK_REAL const PDstandardNth11gt12 = PDstandardNth11(&gt12[index]);
- CCTK_REAL const PDstandardNth22gt12 = PDstandardNth22(&gt12[index]);
- CCTK_REAL const PDstandardNth33gt12 = PDstandardNth33(&gt12[index]);
- CCTK_REAL const PDstandardNth12gt12 = PDstandardNth12(&gt12[index]);
- CCTK_REAL const PDstandardNth13gt12 = PDstandardNth13(&gt12[index]);
- CCTK_REAL const PDstandardNth23gt12 = PDstandardNth23(&gt12[index]);
- CCTK_REAL const PDstandardNth1gt13 = PDstandardNth1(&gt13[index]);
- CCTK_REAL const PDstandardNth2gt13 = PDstandardNth2(&gt13[index]);
- CCTK_REAL const PDstandardNth3gt13 = PDstandardNth3(&gt13[index]);
- CCTK_REAL const PDstandardNth11gt13 = PDstandardNth11(&gt13[index]);
- CCTK_REAL const PDstandardNth22gt13 = PDstandardNth22(&gt13[index]);
- CCTK_REAL const PDstandardNth33gt13 = PDstandardNth33(&gt13[index]);
- CCTK_REAL const PDstandardNth12gt13 = PDstandardNth12(&gt13[index]);
- CCTK_REAL const PDstandardNth13gt13 = PDstandardNth13(&gt13[index]);
- CCTK_REAL const PDstandardNth23gt13 = PDstandardNth23(&gt13[index]);
- CCTK_REAL const PDstandardNth1gt22 = PDstandardNth1(&gt22[index]);
- CCTK_REAL const PDstandardNth2gt22 = PDstandardNth2(&gt22[index]);
- CCTK_REAL const PDstandardNth3gt22 = PDstandardNth3(&gt22[index]);
- CCTK_REAL const PDstandardNth11gt22 = PDstandardNth11(&gt22[index]);
- CCTK_REAL const PDstandardNth22gt22 = PDstandardNth22(&gt22[index]);
- CCTK_REAL const PDstandardNth33gt22 = PDstandardNth33(&gt22[index]);
- CCTK_REAL const PDstandardNth12gt22 = PDstandardNth12(&gt22[index]);
- CCTK_REAL const PDstandardNth13gt22 = PDstandardNth13(&gt22[index]);
- CCTK_REAL const PDstandardNth23gt22 = PDstandardNth23(&gt22[index]);
- CCTK_REAL const PDstandardNth1gt23 = PDstandardNth1(&gt23[index]);
- CCTK_REAL const PDstandardNth2gt23 = PDstandardNth2(&gt23[index]);
- CCTK_REAL const PDstandardNth3gt23 = PDstandardNth3(&gt23[index]);
- CCTK_REAL const PDstandardNth11gt23 = PDstandardNth11(&gt23[index]);
- CCTK_REAL const PDstandardNth22gt23 = PDstandardNth22(&gt23[index]);
- CCTK_REAL const PDstandardNth33gt23 = PDstandardNth33(&gt23[index]);
- CCTK_REAL const PDstandardNth12gt23 = PDstandardNth12(&gt23[index]);
- CCTK_REAL const PDstandardNth13gt23 = PDstandardNth13(&gt23[index]);
- CCTK_REAL const PDstandardNth23gt23 = PDstandardNth23(&gt23[index]);
- CCTK_REAL const PDstandardNth1gt33 = PDstandardNth1(&gt33[index]);
- CCTK_REAL const PDstandardNth2gt33 = PDstandardNth2(&gt33[index]);
- CCTK_REAL const PDstandardNth3gt33 = PDstandardNth3(&gt33[index]);
- CCTK_REAL const PDstandardNth11gt33 = PDstandardNth11(&gt33[index]);
- CCTK_REAL const PDstandardNth22gt33 = PDstandardNth22(&gt33[index]);
- CCTK_REAL const PDstandardNth33gt33 = PDstandardNth33(&gt33[index]);
- CCTK_REAL const PDstandardNth12gt33 = PDstandardNth12(&gt33[index]);
- CCTK_REAL const PDstandardNth13gt33 = PDstandardNth13(&gt33[index]);
- CCTK_REAL const PDstandardNth23gt33 = PDstandardNth23(&gt33[index]);
- CCTK_REAL const PDstandardNth1phi = PDstandardNth1(&phi[index]);
- CCTK_REAL const PDstandardNth2phi = PDstandardNth2(&phi[index]);
- CCTK_REAL const PDstandardNth3phi = PDstandardNth3(&phi[index]);
- CCTK_REAL const PDstandardNth11phi = PDstandardNth11(&phi[index]);
- CCTK_REAL const PDstandardNth22phi = PDstandardNth22(&phi[index]);
- CCTK_REAL const PDstandardNth33phi = PDstandardNth33(&phi[index]);
- CCTK_REAL const PDstandardNth12phi = PDstandardNth12(&phi[index]);
- CCTK_REAL const PDstandardNth13phi = PDstandardNth13(&phi[index]);
- CCTK_REAL const PDstandardNth23phi = PDstandardNth23(&phi[index]);
- CCTK_REAL const PDstandardNth1Xt1 = PDstandardNth1(&Xt1[index]);
- CCTK_REAL const PDstandardNth2Xt1 = PDstandardNth2(&Xt1[index]);
- CCTK_REAL const PDstandardNth3Xt1 = PDstandardNth3(&Xt1[index]);
- CCTK_REAL const PDstandardNth1Xt2 = PDstandardNth1(&Xt2[index]);
- CCTK_REAL const PDstandardNth2Xt2 = PDstandardNth2(&Xt2[index]);
- CCTK_REAL const PDstandardNth3Xt2 = PDstandardNth3(&Xt2[index]);
- CCTK_REAL const PDstandardNth1Xt3 = PDstandardNth1(&Xt3[index]);
- CCTK_REAL const PDstandardNth2Xt3 = PDstandardNth2(&Xt3[index]);
- CCTK_REAL const PDstandardNth3Xt3 = PDstandardNth3(&Xt3[index]);
+ 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 detgt = 1;
+ 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 gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L));
+ CCTK_REAL_VEC Gtl111 = kmul(JacPDstandardNth1gt11,ToReal(0.5));
- CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt);
+ CCTK_REAL_VEC Gtl112 = kmul(JacPDstandardNth2gt11,ToReal(0.5));
- CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC Gtl113 = kmul(JacPDstandardNth3gt11,ToReal(0.5));
- CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L));
+ CCTK_REAL_VEC Gtl122 =
+ kmadd(JacPDstandardNth1gt22,ToReal(-0.5),JacPDstandardNth2gt12);
- CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC Gtl123 =
+ kmul(kadd(JacPDstandardNth2gt13,ksub(JacPDstandardNth3gt12,JacPDstandardNth1gt23)),ToReal(0.5));
- CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L));
+ CCTK_REAL_VEC Gtl133 =
+ kmadd(JacPDstandardNth1gt33,ToReal(-0.5),JacPDstandardNth3gt13);
- CCTK_REAL Gtl111 = 0.5*PDstandardNth1gt11;
+ CCTK_REAL_VEC Gtl211 =
+ kmadd(JacPDstandardNth2gt11,ToReal(-0.5),JacPDstandardNth1gt12);
- CCTK_REAL Gtl112 = 0.5*PDstandardNth2gt11;
+ CCTK_REAL_VEC Gtl212 = kmul(JacPDstandardNth1gt22,ToReal(0.5));
- CCTK_REAL Gtl113 = 0.5*PDstandardNth3gt11;
+ CCTK_REAL_VEC Gtl213 =
+ kmul(kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth3gt12,JacPDstandardNth2gt13)),ToReal(0.5));
- CCTK_REAL Gtl122 = -0.5*PDstandardNth1gt22 + PDstandardNth2gt12;
+ CCTK_REAL_VEC Gtl222 = kmul(JacPDstandardNth2gt22,ToReal(0.5));
- CCTK_REAL Gtl123 = 0.5*(-PDstandardNth1gt23 + PDstandardNth2gt13 +
- PDstandardNth3gt12);
+ CCTK_REAL_VEC Gtl223 = kmul(JacPDstandardNth3gt22,ToReal(0.5));
- CCTK_REAL Gtl133 = -0.5*PDstandardNth1gt33 + PDstandardNth3gt13;
+ CCTK_REAL_VEC Gtl233 =
+ kmadd(JacPDstandardNth2gt33,ToReal(-0.5),JacPDstandardNth3gt23);
- CCTK_REAL Gtl211 = PDstandardNth1gt12 - 0.5*PDstandardNth2gt11;
+ CCTK_REAL_VEC Gtl311 =
+ kmadd(JacPDstandardNth3gt11,ToReal(-0.5),JacPDstandardNth1gt13);
- CCTK_REAL Gtl212 = 0.5*PDstandardNth1gt22;
+ CCTK_REAL_VEC Gtl312 =
+ kmul(kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth2gt13,JacPDstandardNth3gt12)),ToReal(0.5));
- CCTK_REAL Gtl213 = 0.5*(PDstandardNth1gt23 - PDstandardNth2gt13 +
- PDstandardNth3gt12);
+ CCTK_REAL_VEC Gtl313 = kmul(JacPDstandardNth1gt33,ToReal(0.5));
- CCTK_REAL Gtl222 = 0.5*PDstandardNth2gt22;
+ CCTK_REAL_VEC Gtl322 =
+ kmadd(JacPDstandardNth3gt22,ToReal(-0.5),JacPDstandardNth2gt23);
- CCTK_REAL Gtl223 = 0.5*PDstandardNth3gt22;
+ CCTK_REAL_VEC Gtl323 = kmul(JacPDstandardNth2gt33,ToReal(0.5));
- CCTK_REAL Gtl233 = -0.5*PDstandardNth2gt33 + PDstandardNth3gt23;
+ CCTK_REAL_VEC Gtl333 = kmul(JacPDstandardNth3gt33,ToReal(0.5));
- CCTK_REAL Gtl311 = PDstandardNth1gt13 - 0.5*PDstandardNth3gt11;
+ CCTK_REAL_VEC Gtlu111 =
+ kmadd(Gtl111,gtu11,kmadd(Gtl112,gtu12,kmul(Gtl113,gtu13)));
- CCTK_REAL Gtl312 = 0.5*(PDstandardNth1gt23 + PDstandardNth2gt13 -
- PDstandardNth3gt12);
+ CCTK_REAL_VEC Gtlu112 =
+ kmadd(Gtl111,gtu12,kmadd(Gtl112,gtu22,kmul(Gtl113,gtu23)));
- CCTK_REAL Gtl313 = 0.5*PDstandardNth1gt33;
+ CCTK_REAL_VEC Gtlu113 =
+ kmadd(Gtl111,gtu13,kmadd(Gtl112,gtu23,kmul(Gtl113,gtu33)));
- CCTK_REAL Gtl322 = PDstandardNth2gt23 - 0.5*PDstandardNth3gt22;
+ CCTK_REAL_VEC Gtlu121 =
+ kmadd(Gtl112,gtu11,kmadd(Gtl122,gtu12,kmul(Gtl123,gtu13)));
- CCTK_REAL Gtl323 = 0.5*PDstandardNth2gt33;
+ CCTK_REAL_VEC Gtlu122 =
+ kmadd(Gtl112,gtu12,kmadd(Gtl122,gtu22,kmul(Gtl123,gtu23)));
- CCTK_REAL Gtl333 = 0.5*PDstandardNth3gt33;
+ CCTK_REAL_VEC Gtlu123 =
+ kmadd(Gtl112,gtu13,kmadd(Gtl122,gtu23,kmul(Gtl123,gtu33)));
- CCTK_REAL Gtlu111 = Gtl111*gtu11 + Gtl112*gtu12 + Gtl113*gtu13;
+ CCTK_REAL_VEC Gtlu131 =
+ kmadd(Gtl113,gtu11,kmadd(Gtl123,gtu12,kmul(Gtl133,gtu13)));
- CCTK_REAL Gtlu112 = Gtl111*gtu12 + Gtl112*gtu22 + Gtl113*gtu23;
+ CCTK_REAL_VEC Gtlu132 =
+ kmadd(Gtl113,gtu12,kmadd(Gtl123,gtu22,kmul(Gtl133,gtu23)));
- CCTK_REAL Gtlu113 = Gtl111*gtu13 + Gtl112*gtu23 + Gtl113*gtu33;
+ CCTK_REAL_VEC Gtlu133 =
+ kmadd(Gtl113,gtu13,kmadd(Gtl123,gtu23,kmul(Gtl133,gtu33)));
- CCTK_REAL Gtlu121 = Gtl112*gtu11 + Gtl122*gtu12 + Gtl123*gtu13;
+ CCTK_REAL_VEC Gtlu211 =
+ kmadd(Gtl211,gtu11,kmadd(Gtl212,gtu12,kmul(Gtl213,gtu13)));
- CCTK_REAL Gtlu122 = Gtl112*gtu12 + Gtl122*gtu22 + Gtl123*gtu23;
+ CCTK_REAL_VEC Gtlu212 =
+ kmadd(Gtl211,gtu12,kmadd(Gtl212,gtu22,kmul(Gtl213,gtu23)));
- CCTK_REAL Gtlu123 = Gtl112*gtu13 + Gtl122*gtu23 + Gtl123*gtu33;
+ CCTK_REAL_VEC Gtlu213 =
+ kmadd(Gtl211,gtu13,kmadd(Gtl212,gtu23,kmul(Gtl213,gtu33)));
- CCTK_REAL Gtlu131 = Gtl113*gtu11 + Gtl123*gtu12 + Gtl133*gtu13;
+ CCTK_REAL_VEC Gtlu221 =
+ kmadd(Gtl212,gtu11,kmadd(Gtl222,gtu12,kmul(Gtl223,gtu13)));
- CCTK_REAL Gtlu132 = Gtl113*gtu12 + Gtl123*gtu22 + Gtl133*gtu23;
+ CCTK_REAL_VEC Gtlu222 =
+ kmadd(Gtl212,gtu12,kmadd(Gtl222,gtu22,kmul(Gtl223,gtu23)));
- CCTK_REAL Gtlu133 = Gtl113*gtu13 + Gtl123*gtu23 + Gtl133*gtu33;
+ CCTK_REAL_VEC Gtlu223 =
+ kmadd(Gtl212,gtu13,kmadd(Gtl222,gtu23,kmul(Gtl223,gtu33)));
- CCTK_REAL Gtlu211 = Gtl211*gtu11 + Gtl212*gtu12 + Gtl213*gtu13;
+ CCTK_REAL_VEC Gtlu231 =
+ kmadd(Gtl213,gtu11,kmadd(Gtl223,gtu12,kmul(Gtl233,gtu13)));
- CCTK_REAL Gtlu212 = Gtl211*gtu12 + Gtl212*gtu22 + Gtl213*gtu23;
+ CCTK_REAL_VEC Gtlu232 =
+ kmadd(Gtl213,gtu12,kmadd(Gtl223,gtu22,kmul(Gtl233,gtu23)));
- CCTK_REAL Gtlu213 = Gtl211*gtu13 + Gtl212*gtu23 + Gtl213*gtu33;
+ CCTK_REAL_VEC Gtlu233 =
+ kmadd(Gtl213,gtu13,kmadd(Gtl223,gtu23,kmul(Gtl233,gtu33)));
- CCTK_REAL Gtlu221 = Gtl212*gtu11 + Gtl222*gtu12 + Gtl223*gtu13;
+ CCTK_REAL_VEC Gtlu311 =
+ kmadd(Gtl311,gtu11,kmadd(Gtl312,gtu12,kmul(Gtl313,gtu13)));
- CCTK_REAL Gtlu222 = Gtl212*gtu12 + Gtl222*gtu22 + Gtl223*gtu23;
+ CCTK_REAL_VEC Gtlu312 =
+ kmadd(Gtl311,gtu12,kmadd(Gtl312,gtu22,kmul(Gtl313,gtu23)));
- CCTK_REAL Gtlu223 = Gtl212*gtu13 + Gtl222*gtu23 + Gtl223*gtu33;
+ CCTK_REAL_VEC Gtlu313 =
+ kmadd(Gtl311,gtu13,kmadd(Gtl312,gtu23,kmul(Gtl313,gtu33)));
- CCTK_REAL Gtlu231 = Gtl213*gtu11 + Gtl223*gtu12 + Gtl233*gtu13;
+ CCTK_REAL_VEC Gtlu321 =
+ kmadd(Gtl312,gtu11,kmadd(Gtl322,gtu12,kmul(Gtl323,gtu13)));
- CCTK_REAL Gtlu232 = Gtl213*gtu12 + Gtl223*gtu22 + Gtl233*gtu23;
+ CCTK_REAL_VEC Gtlu322 =
+ kmadd(Gtl312,gtu12,kmadd(Gtl322,gtu22,kmul(Gtl323,gtu23)));
- CCTK_REAL Gtlu233 = Gtl213*gtu13 + Gtl223*gtu23 + Gtl233*gtu33;
+ CCTK_REAL_VEC Gtlu323 =
+ kmadd(Gtl312,gtu13,kmadd(Gtl322,gtu23,kmul(Gtl323,gtu33)));
- CCTK_REAL Gtlu311 = Gtl311*gtu11 + Gtl312*gtu12 + Gtl313*gtu13;
+ CCTK_REAL_VEC Gtlu331 =
+ kmadd(Gtl313,gtu11,kmadd(Gtl323,gtu12,kmul(Gtl333,gtu13)));
- CCTK_REAL Gtlu312 = Gtl311*gtu12 + Gtl312*gtu22 + Gtl313*gtu23;
+ CCTK_REAL_VEC Gtlu332 =
+ kmadd(Gtl313,gtu12,kmadd(Gtl323,gtu22,kmul(Gtl333,gtu23)));
- CCTK_REAL Gtlu313 = Gtl311*gtu13 + Gtl312*gtu23 + Gtl313*gtu33;
+ CCTK_REAL_VEC Gtlu333 =
+ kmadd(Gtl313,gtu13,kmadd(Gtl323,gtu23,kmul(Gtl333,gtu33)));
- CCTK_REAL Gtlu321 = Gtl312*gtu11 + Gtl322*gtu12 + Gtl323*gtu13;
+ CCTK_REAL_VEC Gt111 =
+ kmadd(Gtl111,gtu11,kmadd(Gtl211,gtu12,kmul(Gtl311,gtu13)));
- CCTK_REAL Gtlu322 = Gtl312*gtu12 + Gtl322*gtu22 + Gtl323*gtu23;
+ CCTK_REAL_VEC Gt211 =
+ kmadd(Gtl111,gtu12,kmadd(Gtl211,gtu22,kmul(Gtl311,gtu23)));
- CCTK_REAL Gtlu323 = Gtl312*gtu13 + Gtl322*gtu23 + Gtl323*gtu33;
+ CCTK_REAL_VEC Gt311 =
+ kmadd(Gtl111,gtu13,kmadd(Gtl211,gtu23,kmul(Gtl311,gtu33)));
- CCTK_REAL Gtlu331 = Gtl313*gtu11 + Gtl323*gtu12 + Gtl333*gtu13;
+ CCTK_REAL_VEC Gt112 =
+ kmadd(Gtl112,gtu11,kmadd(Gtl212,gtu12,kmul(Gtl312,gtu13)));
- CCTK_REAL Gtlu332 = Gtl313*gtu12 + Gtl323*gtu22 + Gtl333*gtu23;
+ CCTK_REAL_VEC Gt212 =
+ kmadd(Gtl112,gtu12,kmadd(Gtl212,gtu22,kmul(Gtl312,gtu23)));
- CCTK_REAL Gtlu333 = Gtl313*gtu13 + Gtl323*gtu23 + Gtl333*gtu33;
+ CCTK_REAL_VEC Gt312 =
+ kmadd(Gtl112,gtu13,kmadd(Gtl212,gtu23,kmul(Gtl312,gtu33)));
- CCTK_REAL Gt111 = Gtl111*gtu11 + Gtl211*gtu12 + Gtl311*gtu13;
+ CCTK_REAL_VEC Gt113 =
+ kmadd(Gtl113,gtu11,kmadd(Gtl213,gtu12,kmul(Gtl313,gtu13)));
- CCTK_REAL Gt211 = Gtl111*gtu12 + Gtl211*gtu22 + Gtl311*gtu23;
+ CCTK_REAL_VEC Gt213 =
+ kmadd(Gtl113,gtu12,kmadd(Gtl213,gtu22,kmul(Gtl313,gtu23)));
- CCTK_REAL Gt311 = Gtl111*gtu13 + Gtl211*gtu23 + Gtl311*gtu33;
+ CCTK_REAL_VEC Gt313 =
+ kmadd(Gtl113,gtu13,kmadd(Gtl213,gtu23,kmul(Gtl313,gtu33)));
- CCTK_REAL Gt112 = Gtl112*gtu11 + Gtl212*gtu12 + Gtl312*gtu13;
+ CCTK_REAL_VEC Gt122 =
+ kmadd(Gtl122,gtu11,kmadd(Gtl222,gtu12,kmul(Gtl322,gtu13)));
- CCTK_REAL Gt212 = Gtl112*gtu12 + Gtl212*gtu22 + Gtl312*gtu23;
+ CCTK_REAL_VEC Gt222 =
+ kmadd(Gtl122,gtu12,kmadd(Gtl222,gtu22,kmul(Gtl322,gtu23)));
- CCTK_REAL Gt312 = Gtl112*gtu13 + Gtl212*gtu23 + Gtl312*gtu33;
+ CCTK_REAL_VEC Gt322 =
+ kmadd(Gtl122,gtu13,kmadd(Gtl222,gtu23,kmul(Gtl322,gtu33)));
- CCTK_REAL Gt113 = Gtl113*gtu11 + Gtl213*gtu12 + Gtl313*gtu13;
+ CCTK_REAL_VEC Gt123 =
+ kmadd(Gtl123,gtu11,kmadd(Gtl223,gtu12,kmul(Gtl323,gtu13)));
- CCTK_REAL Gt213 = Gtl113*gtu12 + Gtl213*gtu22 + Gtl313*gtu23;
+ CCTK_REAL_VEC Gt223 =
+ kmadd(Gtl123,gtu12,kmadd(Gtl223,gtu22,kmul(Gtl323,gtu23)));
- CCTK_REAL Gt313 = Gtl113*gtu13 + Gtl213*gtu23 + Gtl313*gtu33;
+ CCTK_REAL_VEC Gt323 =
+ kmadd(Gtl123,gtu13,kmadd(Gtl223,gtu23,kmul(Gtl323,gtu33)));
- CCTK_REAL Gt122 = Gtl122*gtu11 + Gtl222*gtu12 + Gtl322*gtu13;
+ CCTK_REAL_VEC Gt133 =
+ kmadd(Gtl133,gtu11,kmadd(Gtl233,gtu12,kmul(Gtl333,gtu13)));
- CCTK_REAL Gt222 = Gtl122*gtu12 + Gtl222*gtu22 + Gtl322*gtu23;
+ CCTK_REAL_VEC Gt233 =
+ kmadd(Gtl133,gtu12,kmadd(Gtl233,gtu22,kmul(Gtl333,gtu23)));
- CCTK_REAL Gt322 = Gtl122*gtu13 + Gtl222*gtu23 + Gtl322*gtu33;
+ CCTK_REAL_VEC Gt333 =
+ kmadd(Gtl133,gtu13,kmadd(Gtl233,gtu23,kmul(Gtl333,gtu33)));
- CCTK_REAL Gt123 = Gtl123*gtu11 + Gtl223*gtu12 + Gtl323*gtu13;
+ 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 Gt223 = Gtl123*gtu12 + Gtl223*gtu22 + Gtl323*gtu23;
+ 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 Gt323 = Gtl123*gtu13 + Gtl223*gtu23 + Gtl323*gtu33;
+ 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 Gt133 = Gtl133*gtu11 + Gtl233*gtu12 + Gtl333*gtu13;
+ 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 Gt233 = Gtl133*gtu12 + Gtl233*gtu22 + Gtl333*gtu23;
+ 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 Gt333 = Gtl133*gtu13 + Gtl233*gtu23 + Gtl333*gtu33;
+ 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 Xtn1 = Gt111*gtu11 + Gt122*gtu22 + 2*(Gt112*gtu12 +
- Gt113*gtu13 + Gt123*gtu23) + Gt133*gtu33;
+ 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 Xtn2 = Gt211*gtu11 + Gt222*gtu22 + 2*(Gt212*gtu12 +
- Gt213*gtu13 + Gt223*gtu23) + Gt233*gtu33;
+ 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 Xtn3 = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu12 +
- Gt313*gtu13 + Gt323*gtu23) + Gt333*gtu33;
+ 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 Rt11 = 0.5*(6*(Gt111*Gtlu111 + Gt112*Gtlu112 +
- Gt113*Gtlu113) + 4*(Gt211*Gtlu121 + Gt212*Gtlu122 + Gt213*Gtlu123 +
- Gt311*Gtlu131 + Gt312*Gtlu132 + Gt313*Gtlu133) -
- gtu11*PDstandardNth11gt11 - 2*gtu12*PDstandardNth12gt11 -
- 2*gtu13*PDstandardNth13gt11 + 2*(Gt211*Gtlu211 + Gt212*Gtlu212 +
- Gt213*Gtlu213 + Gt311*Gtlu311 + Gt312*Gtlu312 + Gt313*Gtlu313 +
- gt11L*PDstandardNth1Xt1) + 2*gt12L*PDstandardNth1Xt2 +
- 2*gt13L*PDstandardNth1Xt3 - gtu22*PDstandardNth22gt11 -
- 2*gtu23*PDstandardNth23gt11 - gtu33*PDstandardNth33gt11 + 2*Gtl111*Xtn1
- + 2*Gtl112*Xtn2 + 2*Gtl113*Xtn3);
+ CCTK_REAL_VEC fac1 =
+ IfThen(conformalMethod,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
- CCTK_REAL Rt12 = 0.5*(4*(Gt211*Gtlu221 + Gt212*Gtlu222 +
- Gt213*Gtlu223) + 2*(Gt112*Gtlu111 + Gt122*Gtlu112 + Gt123*Gtlu113 +
- Gt111*Gtlu121 + Gt212*Gtlu121 + Gt112*Gtlu122 + Gt222*Gtlu122 +
- Gt113*Gtlu123 + Gt223*Gtlu123 + Gt312*Gtlu131 + Gt322*Gtlu132 +
- Gt323*Gtlu133 + Gt111*Gtlu211 + Gt112*Gtlu212 + Gt113*Gtlu213 +
- Gt311*Gtlu231 + Gt312*Gtlu232 + Gt313*Gtlu233 + Gt311*Gtlu321 +
- Gt312*Gtlu322 + Gt313*Gtlu323) - gtu11*PDstandardNth11gt12 -
- 2*gtu12*PDstandardNth12gt12 - 2*gtu13*PDstandardNth13gt12 +
- gt12L*PDstandardNth1Xt1 + gt22L*PDstandardNth1Xt2 +
- gt23L*PDstandardNth1Xt3 - gtu22*PDstandardNth22gt12 -
- 2*gtu23*PDstandardNth23gt12 + gt11L*PDstandardNth2Xt1 +
- gt12L*PDstandardNth2Xt2 + gt13L*PDstandardNth2Xt3 -
- gtu33*PDstandardNth33gt12 + Gtl112*Xtn1 + Gtl211*Xtn1 + Gtl122*Xtn2 +
- Gtl212*Xtn2 + Gtl123*Xtn3 + Gtl213*Xtn3);
+ CCTK_REAL_VEC cdphi1 = kmul(fac1,JacPDstandardNth1phi);
- CCTK_REAL Rt13 = 0.5*(2*(Gt113*Gtlu111 + Gt123*Gtlu112 + Gt133*Gtlu113
- + Gt213*Gtlu121 + Gt223*Gtlu122 + Gt233*Gtlu123 + Gt111*Gtlu131 +
- Gt313*Gtlu131 + Gt112*Gtlu132 + Gt323*Gtlu132 + Gt113*Gtlu133 +
- Gt333*Gtlu133 + Gt211*Gtlu231 + Gt212*Gtlu232 + Gt213*Gtlu233 +
- Gt111*Gtlu311 + Gt112*Gtlu312 + Gt113*Gtlu313 + Gt211*Gtlu321 +
- Gt212*Gtlu322 + Gt213*Gtlu323) + 4*(Gt311*Gtlu331 + Gt312*Gtlu332 +
- Gt313*Gtlu333) - gtu11*PDstandardNth11gt13 -
- 2*gtu12*PDstandardNth12gt13 - 2*gtu13*PDstandardNth13gt13 +
- gt13L*PDstandardNth1Xt1 + gt23L*PDstandardNth1Xt2 +
- gt33L*PDstandardNth1Xt3 - gtu22*PDstandardNth22gt13 -
- 2*gtu23*PDstandardNth23gt13 - gtu33*PDstandardNth33gt13 +
- gt11L*PDstandardNth3Xt1 + gt12L*PDstandardNth3Xt2 +
- gt13L*PDstandardNth3Xt3 + Gtl113*Xtn1 + Gtl311*Xtn1 + Gtl123*Xtn2 +
- Gtl312*Xtn2 + Gtl133*Xtn3 + Gtl313*Xtn3);
+ CCTK_REAL_VEC cdphi2 = kmul(fac1,JacPDstandardNth2phi);
- CCTK_REAL Rt22 = 0.5*(6*(Gt212*Gtlu221 + Gt222*Gtlu222 +
- Gt223*Gtlu223) + 4*(Gt112*Gtlu211 + Gt122*Gtlu212 + Gt123*Gtlu213 +
- Gt312*Gtlu231 + Gt322*Gtlu232 + Gt323*Gtlu233) -
- gtu11*PDstandardNth11gt22 - 2*gtu12*PDstandardNth12gt22 -
- 2*gtu13*PDstandardNth13gt22 - gtu22*PDstandardNth22gt22 -
- 2*gtu23*PDstandardNth23gt22 + 2*(Gt112*Gtlu121 + Gt122*Gtlu122 +
- Gt123*Gtlu123 + Gt312*Gtlu321 + Gt322*Gtlu322 + Gt323*Gtlu323 +
- gt12L*PDstandardNth2Xt1) + 2*gt22L*PDstandardNth2Xt2 +
- 2*gt23L*PDstandardNth2Xt3 - gtu33*PDstandardNth33gt22 + 2*Gtl212*Xtn1 +
- 2*Gtl222*Xtn2 + 2*Gtl223*Xtn3);
-
- CCTK_REAL Rt23 = 0.5*(2*(Gt112*Gtlu131 + Gt122*Gtlu132 + Gt123*Gtlu133
- + Gt113*Gtlu211 + Gt123*Gtlu212 + Gt133*Gtlu213 + Gt213*Gtlu221 +
- Gt223*Gtlu222 + Gt233*Gtlu223 + Gt212*Gtlu231 + Gt313*Gtlu231 +
- Gt222*Gtlu232 + Gt323*Gtlu232 + Gt223*Gtlu233 + Gt333*Gtlu233 +
- Gt112*Gtlu311 + Gt122*Gtlu312 + Gt123*Gtlu313 + Gt212*Gtlu321 +
- Gt222*Gtlu322 + Gt223*Gtlu323) + 4*(Gt312*Gtlu331 + Gt322*Gtlu332 +
- Gt323*Gtlu333) - gtu11*PDstandardNth11gt23 -
- 2*gtu12*PDstandardNth12gt23 - 2*gtu13*PDstandardNth13gt23 -
- gtu22*PDstandardNth22gt23 - 2*gtu23*PDstandardNth23gt23 +
- gt13L*PDstandardNth2Xt1 + gt23L*PDstandardNth2Xt2 +
- gt33L*PDstandardNth2Xt3 - gtu33*PDstandardNth33gt23 +
- gt12L*PDstandardNth3Xt1 + gt22L*PDstandardNth3Xt2 +
- gt23L*PDstandardNth3Xt3 + Gtl213*Xtn1 + Gtl312*Xtn1 + Gtl223*Xtn2 +
- Gtl322*Xtn2 + Gtl233*Xtn3 + Gtl323*Xtn3);
-
- CCTK_REAL Rt33 = 0.5*(4*(Gt113*Gtlu311 + Gt123*Gtlu312 + Gt133*Gtlu313
- + Gt213*Gtlu321 + Gt223*Gtlu322 + Gt233*Gtlu323) + 6*(Gt313*Gtlu331 +
- Gt323*Gtlu332 + Gt333*Gtlu333) - gtu11*PDstandardNth11gt33 -
- 2*gtu12*PDstandardNth12gt33 - 2*gtu13*PDstandardNth13gt33 -
- gtu22*PDstandardNth22gt33 - 2*gtu23*PDstandardNth23gt33 -
- gtu33*PDstandardNth33gt33 + 2*(Gt113*Gtlu131 + Gt123*Gtlu132 +
- Gt133*Gtlu133 + Gt213*Gtlu231 + Gt223*Gtlu232 + Gt233*Gtlu233 +
- gt13L*PDstandardNth3Xt1) + 2*gt23L*PDstandardNth3Xt2 +
- 2*gt33L*PDstandardNth3Xt3 + 2*Gtl313*Xtn1 + 2*Gtl323*Xtn2 +
- 2*Gtl333*Xtn3);
-
- CCTK_REAL fac1 = IfThen(conformalMethod,-0.5*INV(phiL),1);
-
- CCTK_REAL cdphi1 = fac1*PDstandardNth1phi;
-
- CCTK_REAL cdphi2 = fac1*PDstandardNth2phi;
-
- CCTK_REAL cdphi3 = fac1*PDstandardNth3phi;
-
- CCTK_REAL fac2 = IfThen(conformalMethod,0.5*INV(SQR(phiL)),0);
-
- CCTK_REAL cdphi211 = -(fac1*(-PDstandardNth11phi +
- Gt111*PDstandardNth1phi + Gt211*PDstandardNth2phi +
- Gt311*PDstandardNth3phi)) + fac2*SQR(PDstandardNth1phi);
-
- CCTK_REAL cdphi212 = fac2*PDstandardNth1phi*PDstandardNth2phi -
- fac1*(-PDstandardNth12phi + Gt112*PDstandardNth1phi +
- Gt212*PDstandardNth2phi + Gt312*PDstandardNth3phi);
-
- CCTK_REAL cdphi213 = fac2*PDstandardNth1phi*PDstandardNth3phi -
- fac1*(-PDstandardNth13phi + Gt113*PDstandardNth1phi +
- Gt213*PDstandardNth2phi + Gt313*PDstandardNth3phi);
-
- CCTK_REAL cdphi222 = -(fac1*(Gt122*PDstandardNth1phi -
- PDstandardNth22phi + Gt222*PDstandardNth2phi +
- Gt322*PDstandardNth3phi)) + fac2*SQR(PDstandardNth2phi);
-
- CCTK_REAL cdphi223 = fac2*PDstandardNth2phi*PDstandardNth3phi -
- fac1*(Gt123*PDstandardNth1phi - PDstandardNth23phi +
- Gt223*PDstandardNth2phi + Gt323*PDstandardNth3phi);
-
- CCTK_REAL cdphi233 = -(fac1*(Gt133*PDstandardNth1phi +
- Gt233*PDstandardNth2phi - PDstandardNth33phi +
- Gt333*PDstandardNth3phi)) + fac2*SQR(PDstandardNth3phi);
-
- CCTK_REAL Rphi11 = -2*(cdphi211 + 2*(-1 + gt11L*gtu11)*SQR(cdphi1) +
- gt11L*(cdphi211*gtu11 + 4*(cdphi1*(cdphi2*gtu12 + cdphi3*gtu13) +
- cdphi2*cdphi3*gtu23) + cdphi233*gtu33 + gtu22*(cdphi222 +
- 2*SQR(cdphi2)) + 2*(cdphi212*gtu12 + cdphi213*gtu13 + cdphi223*gtu23 +
- gtu33*SQR(cdphi3))));
+ CCTK_REAL_VEC cdphi3 = kmul(fac1,JacPDstandardNth3phi);
- CCTK_REAL Rphi12 = -2*(cdphi212 + cdphi1*(cdphi2*(-2 + 4*gt12L*gtu12)
- + 4*cdphi3*gt12L*gtu13) + gt12L*(cdphi211*gtu11 + 4*cdphi2*cdphi3*gtu23
- + 2*(cdphi212*gtu12 + cdphi213*gtu13 + cdphi223*gtu23 +
- gtu11*SQR(cdphi1)) + gtu22*(cdphi222 + 2*SQR(cdphi2)) + gtu33*(cdphi233
- + 2*SQR(cdphi3))));
+ CCTK_REAL_VEC fac2 =
+ IfThen(conformalMethod,kmul(INV(SQR(phiL)),ToReal(0.5)),ToReal(0));
- CCTK_REAL Rphi13 = -2*(cdphi213 + cdphi1*(4*cdphi2*gt13L*gtu12 +
- cdphi3*(-2 + 4*gt13L*gtu13)) + gt13L*(cdphi211*gtu11 +
- 4*cdphi2*cdphi3*gtu23 + 2*(cdphi212*gtu12 + cdphi213*gtu13 +
- cdphi223*gtu23 + gtu11*SQR(cdphi1)) + gtu22*(cdphi222 + 2*SQR(cdphi2))
- + gtu33*(cdphi233 + 2*SQR(cdphi3))));
+ CCTK_REAL_VEC cdphi211 =
+ kmadd(fac2,SQR(JacPDstandardNth1phi),kmul(fac1,ksub(JacPDstandardNth11phi,kmadd(Gt111,JacPDstandardNth1phi,kmadd(Gt311,JacPDstandardNth3phi,kmul(Gt211,JacPDstandardNth2phi))))));
- CCTK_REAL Rphi22 = -2*(cdphi222 + 2*(-1 + gt22L*gtu22)*SQR(cdphi2) +
- gt22L*(cdphi222*gtu22 + 4*(cdphi1*cdphi3*gtu13 + cdphi2*(cdphi1*gtu12 +
- cdphi3*gtu23)) + cdphi233*gtu33 + gtu11*(cdphi211 + 2*SQR(cdphi1)) +
- 2*(cdphi212*gtu12 + cdphi213*gtu13 + cdphi223*gtu23 +
- gtu33*SQR(cdphi3))));
+ CCTK_REAL_VEC cdphi212 =
+ kmadd(fac2,kmul(JacPDstandardNth1phi,JacPDstandardNth2phi),kmul(fac1,ksub(JacPDstandardNth12phi,kmadd(Gt112,JacPDstandardNth1phi,kmadd(Gt312,JacPDstandardNth3phi,kmul(Gt212,JacPDstandardNth2phi))))));
- CCTK_REAL Rphi23 = -2*(cdphi223 + cdphi2*(4*cdphi1*gt23L*gtu12 +
- cdphi3*(-2 + 4*gt23L*gtu23)) + gt23L*(4*cdphi1*cdphi3*gtu13 +
- cdphi222*gtu22 + gtu11*(cdphi211 + 2*SQR(cdphi1)) + 2*(cdphi212*gtu12 +
- cdphi213*gtu13 + cdphi223*gtu23 + gtu22*SQR(cdphi2)) + gtu33*(cdphi233
- + 2*SQR(cdphi3))));
+ CCTK_REAL_VEC cdphi213 =
+ kmadd(fac2,kmul(JacPDstandardNth1phi,JacPDstandardNth3phi),kmul(fac1,ksub(JacPDstandardNth13phi,kmadd(Gt113,JacPDstandardNth1phi,kmadd(Gt313,JacPDstandardNth3phi,kmul(Gt213,JacPDstandardNth2phi))))));
- CCTK_REAL Rphi33 = -2*(cdphi233 + gt33L*((4*cdphi1*cdphi2 +
- 2*cdphi212)*gtu12 + 4*cdphi3*(cdphi1*gtu13 + cdphi2*gtu23) +
- 2*(cdphi213*gtu13 + cdphi223*gtu23) + cdphi233*gtu33 + gtu11*(cdphi211
- + 2*SQR(cdphi1)) + gtu22*(cdphi222 + 2*SQR(cdphi2))) + 2*(-1 +
- gt33L*gtu33)*SQR(cdphi3));
+ CCTK_REAL_VEC cdphi222 =
+ kmsub(fac2,SQR(JacPDstandardNth2phi),kmul(fac1,kmadd(Gt122,JacPDstandardNth1phi,kmadd(Gt222,JacPDstandardNth2phi,kmsub(Gt322,JacPDstandardNth3phi,JacPDstandardNth22phi)))));
- CCTK_REAL e4phi = IfThen(conformalMethod,INV(SQR(phiL)),exp(4*phiL));
+ CCTK_REAL_VEC cdphi223 =
+ kmsub(fac2,kmul(JacPDstandardNth2phi,JacPDstandardNth3phi),kmul(fac1,kmadd(Gt123,JacPDstandardNth1phi,kmadd(Gt223,JacPDstandardNth2phi,kmsub(Gt323,JacPDstandardNth3phi,JacPDstandardNth23phi)))));
- CCTK_REAL em4phi = INV(e4phi);
+ CCTK_REAL_VEC cdphi233 =
+ kmsub(fac2,SQR(JacPDstandardNth3phi),kmul(fac1,kmadd(Gt133,JacPDstandardNth1phi,kmadd(Gt233,JacPDstandardNth2phi,kmsub(Gt333,JacPDstandardNth3phi,JacPDstandardNth33phi)))));
- CCTK_REAL gu11 = em4phi*gtu11;
+ 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 gu12 = em4phi*gtu12;
+ 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(cdphi3,kmul(gt12L,kmul(gtu13,ToReal(4))),kmul(cdphi2,kmadd(gt12L,kmul(gtu12,ToReal(4)),ToReal(-2))))))));
- CCTK_REAL gu13 = em4phi*gtu13;
+ 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(cdphi2,kmul(gt13L,kmul(gtu12,ToReal(4))),kmul(cdphi3,kmadd(gt13L,kmul(gtu13,ToReal(4)),ToReal(-2))))))));
- CCTK_REAL gu22 = em4phi*gtu22;
+ 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 gu23 = em4phi*gtu23;
+ 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(cdphi1,kmul(gt23L,kmul(gtu12,ToReal(4))),kmul(cdphi3,kmadd(gt23L,kmul(gtu23,ToReal(4)),ToReal(-2))))))));
- CCTK_REAL gu33 = em4phi*gtu33;
+ 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 R11 = Rphi11 + Rt11;
+ CCTK_REAL_VEC e4phi =
+ IfThen(conformalMethod,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
- CCTK_REAL R12 = Rphi12 + Rt12;
+ CCTK_REAL_VEC em4phi = INV(e4phi);
- CCTK_REAL R13 = Rphi13 + Rt13;
+ CCTK_REAL_VEC gu11 = kmul(em4phi,gtu11);
- CCTK_REAL R22 = Rphi22 + Rt22;
+ CCTK_REAL_VEC gu12 = kmul(em4phi,gtu12);
- CCTK_REAL R23 = Rphi23 + Rt23;
+ CCTK_REAL_VEC gu13 = kmul(em4phi,gtu13);
- CCTK_REAL R33 = Rphi33 + Rt33;
+ CCTK_REAL_VEC gu22 = kmul(em4phi,gtu22);
- CCTK_REAL trR = gu11*R11 + gu22*R22 + 2*(gu12*R12 + gu13*R13 +
- gu23*R23) + gu33*R33;
+ CCTK_REAL_VEC gu23 = kmul(em4phi,gtu23);
- CCTK_REAL Atm11 = At11L*gtu11 + At12L*gtu12 + At13L*gtu13;
+ CCTK_REAL_VEC gu33 = kmul(em4phi,gtu33);
- CCTK_REAL Atm21 = At11L*gtu12 + At12L*gtu22 + At13L*gtu23;
+ CCTK_REAL_VEC R11 = kadd(Rphi11,Rt11);
- CCTK_REAL Atm31 = At11L*gtu13 + At12L*gtu23 + At13L*gtu33;
+ CCTK_REAL_VEC R12 = kadd(Rphi12,Rt12);
- CCTK_REAL Atm12 = At12L*gtu11 + At22L*gtu12 + At23L*gtu13;
+ CCTK_REAL_VEC R13 = kadd(Rphi13,Rt13);
- CCTK_REAL Atm22 = At12L*gtu12 + At22L*gtu22 + At23L*gtu23;
+ CCTK_REAL_VEC R22 = kadd(Rphi22,Rt22);
- CCTK_REAL Atm32 = At12L*gtu13 + At22L*gtu23 + At23L*gtu33;
+ CCTK_REAL_VEC R23 = kadd(Rphi23,Rt23);
- CCTK_REAL Atm13 = At13L*gtu11 + At23L*gtu12 + At33L*gtu13;
+ CCTK_REAL_VEC R33 = kadd(Rphi33,Rt33);
- CCTK_REAL Atm23 = At13L*gtu12 + At23L*gtu22 + At33L*gtu23;
+ 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 Atm33 = At13L*gtu13 + At23L*gtu23 + At33L*gtu33;
+ CCTK_REAL_VEC Atm11 =
+ kmadd(At11L,gtu11,kmadd(At12L,gtu12,kmul(At13L,gtu13)));
- CCTK_REAL rho = INV(SQR(alphaL))*(eTttL - 2*(beta2L*eTtyL +
- beta3L*eTtzL) + 2*(beta1L*(-eTtxL + beta2L*eTxyL + beta3L*eTxzL) +
- beta2L*beta3L*eTyzL) + eTxxL*SQR(beta1L) + eTyyL*SQR(beta2L) +
- eTzzL*SQR(beta3L));
+ CCTK_REAL_VEC Atm21 =
+ kmadd(At11L,gtu12,kmadd(At12L,gtu22,kmul(At13L,gtu23)));
- CCTK_REAL HL = -2.*(Atm12*Atm21 + Atm13*Atm31 + Atm23*Atm32) -
- 50.26548245743669181540229413247204614715*rho + trR - 1.*(SQR(Atm11) +
- SQR(Atm22) + SQR(Atm33)) +
- 0.6666666666666666666666666666666666666667*SQR(trKL);
+ CCTK_REAL_VEC Atm31 =
+ kmadd(At11L,gtu13,kmadd(At12L,gtu23,kmul(At13L,gtu33)));
- /* Copy local copies back to grid functions */
- H[index] = HL;
+ 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(rho,ToReal(-50.26548245743669181540229413247204614715),kmadd(kmadd(Atm12,Atm21,kmadd(Atm13,Atm31,kmul(Atm23,Atm32))),ToReal(-2.),kmadd(kadd(SQR(Atm11),kadd(SQR(Atm22),SQR(Atm33))),ToReal(-1.),kmul(SQR(trKL),ToReal(0.6666666666666666666666666666666666666667))))));
+
+ /* 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);
+ 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);
+ 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);
+ break;
+ }
+ vec_store_nta(H[index],HL);
}
- LC_ENDLOOP3 (ML_BSSN_constraints1);
+ LC_ENDLOOP3VEC (ML_BSSN_constraints1);
}
extern "C" void ML_BSSN_constraints1(CCTK_ARGUMENTS)
@@ -609,5 +1596,43 @@ extern "C" void ML_BSSN_constraints1(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_constraints1_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_constraints1_calc_every != ML_BSSN_constraints1_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN::ML_curv","ML_BSSN::ML_Gamma","ML_BSSN::ML_Ham","ML_BSSN::ML_lapse","ML_BSSN::ML_log_confac","ML_BSSN::ML_metric","ML_BSSN::ML_shift","ML_BSSN::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_constraints1", 8, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_constraints1", 1, 1, 1);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_constraints1", 2, 2, 2);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_constraints1", 3, 3, 3);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_constraints1", 4, 4, 4);
+ break;
+ }
+
GenericFD_LoopOverInterior(cctkGH, &ML_BSSN_constraints1_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_constraints1_Body");
+ }
}
diff --git a/ML_BSSN/src/ML_BSSN_constraints2.cc b/ML_BSSN/src/ML_BSSN_constraints2.cc
index bc123f0..45b63e4 100644
--- a/ML_BSSN/src/ML_BSSN_constraints2.cc
+++ b/ML_BSSN/src/ML_BSSN_constraints2.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_constraints2_SelectBCs(CCTK_ARGUMENTS)
{
@@ -42,7 +43,7 @@ extern "C" void ML_BSSN_constraints2_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_BSSN_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_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;
@@ -50,21 +51,6 @@ static void ML_BSSN_constraints2_Body(cGH const * restrict const cctkGH, int con
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_constraints2_Body");
- }
-
- if (cctk_iteration % ML_BSSN_constraints2_calc_every != ML_BSSN_constraints2_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN::ML_cons_detg","ML_BSSN::ML_cons_Gamma","ML_BSSN::ML_cons_traceA","ML_BSSN::ML_curv","ML_BSSN::ML_Gamma","ML_BSSN::ML_lapse","ML_BSSN::ML_log_confac","ML_BSSN::ML_metric","ML_BSSN::ML_mom","ML_BSSN::ML_shift","ML_BSSN::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_constraints2", 11, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_constraints2", 2, 2, 2);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -74,87 +60,202 @@ static void ML_BSSN_constraints2_Body(cGH const * restrict const cctkGH, int con
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const p1o24dx = 0.0416666666666666666666666666667*INV(dx);
- CCTK_REAL const p1o24dy = 0.0416666666666666666666666666667*INV(dy);
- CCTK_REAL const p1o24dz = 0.0416666666666666666666666666667*INV(dz);
- CCTK_REAL const p1o64dx = 0.015625*INV(dx);
- CCTK_REAL const p1o64dy = 0.015625*INV(dy);
- CCTK_REAL const p1o64dz = 0.015625*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_constraints2,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_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 alphaL = alpha[index];
- CCTK_REAL At11L = At11[index];
- CCTK_REAL At12L = At12[index];
- CCTK_REAL At13L = At13[index];
- CCTK_REAL At22L = At22[index];
- CCTK_REAL At23L = At23[index];
- CCTK_REAL At33L = At33[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL gt11L = gt11[index];
- CCTK_REAL gt12L = gt12[index];
- CCTK_REAL gt13L = gt13[index];
- CCTK_REAL gt22L = gt22[index];
- CCTK_REAL gt23L = gt23[index];
- CCTK_REAL gt33L = gt33[index];
- CCTK_REAL phiL = phi[index];
- CCTK_REAL trKL = trK[index];
- CCTK_REAL Xt1L = Xt1[index];
- CCTK_REAL Xt2L = Xt2[index];
- CCTK_REAL Xt3L = Xt3[index];
-
- CCTK_REAL eTtxL, eTtyL, eTtzL, eTxxL, eTxyL, eTxzL, eTyyL, eTyzL, eTzzL;
+ 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 = eTtx[index];
- eTtyL = eTty[index];
- eTtzL = eTtz[index];
- eTxxL = eTxx[index];
- eTxyL = eTxy[index];
- eTxzL = eTxz[index];
- eTyyL = eTyy[index];
- eTyzL = eTyz[index];
- eTzzL = eTzz[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
{
@@ -169,239 +270,724 @@ static void ML_BSSN_constraints2_Body(cGH const * restrict const cctkGH, int con
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 const PDstandardNth1At11 = PDstandardNth1(&At11[index]);
- CCTK_REAL const PDstandardNth2At11 = PDstandardNth2(&At11[index]);
- CCTK_REAL const PDstandardNth3At11 = PDstandardNth3(&At11[index]);
- CCTK_REAL const PDstandardNth1At12 = PDstandardNth1(&At12[index]);
- CCTK_REAL const PDstandardNth2At12 = PDstandardNth2(&At12[index]);
- CCTK_REAL const PDstandardNth3At12 = PDstandardNth3(&At12[index]);
- CCTK_REAL const PDstandardNth1At13 = PDstandardNth1(&At13[index]);
- CCTK_REAL const PDstandardNth2At13 = PDstandardNth2(&At13[index]);
- CCTK_REAL const PDstandardNth3At13 = PDstandardNth3(&At13[index]);
- CCTK_REAL const PDstandardNth1At22 = PDstandardNth1(&At22[index]);
- CCTK_REAL const PDstandardNth2At22 = PDstandardNth2(&At22[index]);
- CCTK_REAL const PDstandardNth3At22 = PDstandardNth3(&At22[index]);
- CCTK_REAL const PDstandardNth1At23 = PDstandardNth1(&At23[index]);
- CCTK_REAL const PDstandardNth2At23 = PDstandardNth2(&At23[index]);
- CCTK_REAL const PDstandardNth3At23 = PDstandardNth3(&At23[index]);
- CCTK_REAL const PDstandardNth1At33 = PDstandardNth1(&At33[index]);
- CCTK_REAL const PDstandardNth2At33 = PDstandardNth2(&At33[index]);
- CCTK_REAL const PDstandardNth3At33 = PDstandardNth3(&At33[index]);
- CCTK_REAL const PDstandardNth1gt11 = PDstandardNth1(&gt11[index]);
- CCTK_REAL const PDstandardNth2gt11 = PDstandardNth2(&gt11[index]);
- CCTK_REAL const PDstandardNth3gt11 = PDstandardNth3(&gt11[index]);
- CCTK_REAL const PDstandardNth1gt12 = PDstandardNth1(&gt12[index]);
- CCTK_REAL const PDstandardNth2gt12 = PDstandardNth2(&gt12[index]);
- CCTK_REAL const PDstandardNth3gt12 = PDstandardNth3(&gt12[index]);
- CCTK_REAL const PDstandardNth1gt13 = PDstandardNth1(&gt13[index]);
- CCTK_REAL const PDstandardNth2gt13 = PDstandardNth2(&gt13[index]);
- CCTK_REAL const PDstandardNth3gt13 = PDstandardNth3(&gt13[index]);
- CCTK_REAL const PDstandardNth1gt22 = PDstandardNth1(&gt22[index]);
- CCTK_REAL const PDstandardNth2gt22 = PDstandardNth2(&gt22[index]);
- CCTK_REAL const PDstandardNth3gt22 = PDstandardNth3(&gt22[index]);
- CCTK_REAL const PDstandardNth1gt23 = PDstandardNth1(&gt23[index]);
- CCTK_REAL const PDstandardNth2gt23 = PDstandardNth2(&gt23[index]);
- CCTK_REAL const PDstandardNth3gt23 = PDstandardNth3(&gt23[index]);
- CCTK_REAL const PDstandardNth1gt33 = PDstandardNth1(&gt33[index]);
- CCTK_REAL const PDstandardNth2gt33 = PDstandardNth2(&gt33[index]);
- CCTK_REAL const PDstandardNth3gt33 = PDstandardNth3(&gt33[index]);
- CCTK_REAL const PDstandardNth1phi = PDstandardNth1(&phi[index]);
- CCTK_REAL const PDstandardNth2phi = PDstandardNth2(&phi[index]);
- CCTK_REAL const PDstandardNth3phi = PDstandardNth3(&phi[index]);
- CCTK_REAL const PDstandardNth1trK = PDstandardNth1(&trK[index]);
- CCTK_REAL const PDstandardNth2trK = PDstandardNth2(&trK[index]);
- CCTK_REAL const PDstandardNth3trK = PDstandardNth3(&trK[index]);
+ 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 detgt = 1;
+ 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 gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L));
+ CCTK_REAL_VEC gtu13 =
+ kmul(INV(detgt),kmsub(gt12L,gt23L,kmul(gt13L,gt22L)));
- CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt);
+ CCTK_REAL_VEC gtu22 = kmul(INV(detgt),kmsub(gt11L,gt33L,SQR(gt13L)));
- CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC gtu23 =
+ kmul(INV(detgt),kmsub(gt12L,gt13L,kmul(gt11L,gt23L)));
- CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L));
+ CCTK_REAL_VEC gtu33 = kmul(INV(detgt),kmsub(gt11L,gt22L,SQR(gt12L)));
- CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC Gtl111 = kmul(JacPDstandardNth1gt11,ToReal(0.5));
- CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L));
+ CCTK_REAL_VEC Gtl112 = kmul(JacPDstandardNth2gt11,ToReal(0.5));
- CCTK_REAL Gtl111 = 0.5*PDstandardNth1gt11;
+ CCTK_REAL_VEC Gtl113 = kmul(JacPDstandardNth3gt11,ToReal(0.5));
- CCTK_REAL Gtl112 = 0.5*PDstandardNth2gt11;
+ CCTK_REAL_VEC Gtl122 =
+ kmadd(JacPDstandardNth1gt22,ToReal(-0.5),JacPDstandardNth2gt12);
- CCTK_REAL Gtl113 = 0.5*PDstandardNth3gt11;
+ CCTK_REAL_VEC Gtl123 =
+ kmul(kadd(JacPDstandardNth2gt13,ksub(JacPDstandardNth3gt12,JacPDstandardNth1gt23)),ToReal(0.5));
- CCTK_REAL Gtl122 = -0.5*PDstandardNth1gt22 + PDstandardNth2gt12;
+ CCTK_REAL_VEC Gtl133 =
+ kmadd(JacPDstandardNth1gt33,ToReal(-0.5),JacPDstandardNth3gt13);
- CCTK_REAL Gtl123 = 0.5*(-PDstandardNth1gt23 + PDstandardNth2gt13 +
- PDstandardNth3gt12);
+ CCTK_REAL_VEC Gtl211 =
+ kmadd(JacPDstandardNth2gt11,ToReal(-0.5),JacPDstandardNth1gt12);
- CCTK_REAL Gtl133 = -0.5*PDstandardNth1gt33 + PDstandardNth3gt13;
+ CCTK_REAL_VEC Gtl212 = kmul(JacPDstandardNth1gt22,ToReal(0.5));
- CCTK_REAL Gtl211 = PDstandardNth1gt12 - 0.5*PDstandardNth2gt11;
+ CCTK_REAL_VEC Gtl213 =
+ kmul(kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth3gt12,JacPDstandardNth2gt13)),ToReal(0.5));
- CCTK_REAL Gtl212 = 0.5*PDstandardNth1gt22;
+ CCTK_REAL_VEC Gtl222 = kmul(JacPDstandardNth2gt22,ToReal(0.5));
- CCTK_REAL Gtl213 = 0.5*(PDstandardNth1gt23 - PDstandardNth2gt13 +
- PDstandardNth3gt12);
+ CCTK_REAL_VEC Gtl223 = kmul(JacPDstandardNth3gt22,ToReal(0.5));
- CCTK_REAL Gtl222 = 0.5*PDstandardNth2gt22;
+ CCTK_REAL_VEC Gtl233 =
+ kmadd(JacPDstandardNth2gt33,ToReal(-0.5),JacPDstandardNth3gt23);
- CCTK_REAL Gtl223 = 0.5*PDstandardNth3gt22;
+ CCTK_REAL_VEC Gtl311 =
+ kmadd(JacPDstandardNth3gt11,ToReal(-0.5),JacPDstandardNth1gt13);
- CCTK_REAL Gtl233 = -0.5*PDstandardNth2gt33 + PDstandardNth3gt23;
+ CCTK_REAL_VEC Gtl312 =
+ kmul(kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth2gt13,JacPDstandardNth3gt12)),ToReal(0.5));
- CCTK_REAL Gtl311 = PDstandardNth1gt13 - 0.5*PDstandardNth3gt11;
+ CCTK_REAL_VEC Gtl313 = kmul(JacPDstandardNth1gt33,ToReal(0.5));
- CCTK_REAL Gtl312 = 0.5*(PDstandardNth1gt23 + PDstandardNth2gt13 -
- PDstandardNth3gt12);
+ CCTK_REAL_VEC Gtl322 =
+ kmadd(JacPDstandardNth3gt22,ToReal(-0.5),JacPDstandardNth2gt23);
- CCTK_REAL Gtl313 = 0.5*PDstandardNth1gt33;
+ CCTK_REAL_VEC Gtl323 = kmul(JacPDstandardNth2gt33,ToReal(0.5));
- CCTK_REAL Gtl322 = PDstandardNth2gt23 - 0.5*PDstandardNth3gt22;
+ CCTK_REAL_VEC Gtl333 = kmul(JacPDstandardNth3gt33,ToReal(0.5));
- CCTK_REAL Gtl323 = 0.5*PDstandardNth2gt33;
+ CCTK_REAL_VEC Gt111 =
+ kmadd(Gtl111,gtu11,kmadd(Gtl211,gtu12,kmul(Gtl311,gtu13)));
- CCTK_REAL Gtl333 = 0.5*PDstandardNth3gt33;
+ CCTK_REAL_VEC Gt211 =
+ kmadd(Gtl111,gtu12,kmadd(Gtl211,gtu22,kmul(Gtl311,gtu23)));
- CCTK_REAL Gt111 = Gtl111*gtu11 + Gtl211*gtu12 + Gtl311*gtu13;
+ CCTK_REAL_VEC Gt311 =
+ kmadd(Gtl111,gtu13,kmadd(Gtl211,gtu23,kmul(Gtl311,gtu33)));
- CCTK_REAL Gt211 = Gtl111*gtu12 + Gtl211*gtu22 + Gtl311*gtu23;
+ CCTK_REAL_VEC Gt112 =
+ kmadd(Gtl112,gtu11,kmadd(Gtl212,gtu12,kmul(Gtl312,gtu13)));
- CCTK_REAL Gt311 = Gtl111*gtu13 + Gtl211*gtu23 + Gtl311*gtu33;
+ CCTK_REAL_VEC Gt212 =
+ kmadd(Gtl112,gtu12,kmadd(Gtl212,gtu22,kmul(Gtl312,gtu23)));
- CCTK_REAL Gt112 = Gtl112*gtu11 + Gtl212*gtu12 + Gtl312*gtu13;
+ CCTK_REAL_VEC Gt312 =
+ kmadd(Gtl112,gtu13,kmadd(Gtl212,gtu23,kmul(Gtl312,gtu33)));
- CCTK_REAL Gt212 = Gtl112*gtu12 + Gtl212*gtu22 + Gtl312*gtu23;
+ CCTK_REAL_VEC Gt113 =
+ kmadd(Gtl113,gtu11,kmadd(Gtl213,gtu12,kmul(Gtl313,gtu13)));
- CCTK_REAL Gt312 = Gtl112*gtu13 + Gtl212*gtu23 + Gtl312*gtu33;
+ CCTK_REAL_VEC Gt213 =
+ kmadd(Gtl113,gtu12,kmadd(Gtl213,gtu22,kmul(Gtl313,gtu23)));
- CCTK_REAL Gt113 = Gtl113*gtu11 + Gtl213*gtu12 + Gtl313*gtu13;
+ CCTK_REAL_VEC Gt313 =
+ kmadd(Gtl113,gtu13,kmadd(Gtl213,gtu23,kmul(Gtl313,gtu33)));
- CCTK_REAL Gt213 = Gtl113*gtu12 + Gtl213*gtu22 + Gtl313*gtu23;
+ CCTK_REAL_VEC Gt122 =
+ kmadd(Gtl122,gtu11,kmadd(Gtl222,gtu12,kmul(Gtl322,gtu13)));
- CCTK_REAL Gt313 = Gtl113*gtu13 + Gtl213*gtu23 + Gtl313*gtu33;
+ CCTK_REAL_VEC Gt222 =
+ kmadd(Gtl122,gtu12,kmadd(Gtl222,gtu22,kmul(Gtl322,gtu23)));
- CCTK_REAL Gt122 = Gtl122*gtu11 + Gtl222*gtu12 + Gtl322*gtu13;
+ CCTK_REAL_VEC Gt322 =
+ kmadd(Gtl122,gtu13,kmadd(Gtl222,gtu23,kmul(Gtl322,gtu33)));
- CCTK_REAL Gt222 = Gtl122*gtu12 + Gtl222*gtu22 + Gtl322*gtu23;
+ CCTK_REAL_VEC Gt123 =
+ kmadd(Gtl123,gtu11,kmadd(Gtl223,gtu12,kmul(Gtl323,gtu13)));
- CCTK_REAL Gt322 = Gtl122*gtu13 + Gtl222*gtu23 + Gtl322*gtu33;
+ CCTK_REAL_VEC Gt223 =
+ kmadd(Gtl123,gtu12,kmadd(Gtl223,gtu22,kmul(Gtl323,gtu23)));
- CCTK_REAL Gt123 = Gtl123*gtu11 + Gtl223*gtu12 + Gtl323*gtu13;
+ CCTK_REAL_VEC Gt323 =
+ kmadd(Gtl123,gtu13,kmadd(Gtl223,gtu23,kmul(Gtl323,gtu33)));
- CCTK_REAL Gt223 = Gtl123*gtu12 + Gtl223*gtu22 + Gtl323*gtu23;
+ CCTK_REAL_VEC Gt133 =
+ kmadd(Gtl133,gtu11,kmadd(Gtl233,gtu12,kmul(Gtl333,gtu13)));
- CCTK_REAL Gt323 = Gtl123*gtu13 + Gtl223*gtu23 + Gtl323*gtu33;
+ CCTK_REAL_VEC Gt233 =
+ kmadd(Gtl133,gtu12,kmadd(Gtl233,gtu22,kmul(Gtl333,gtu23)));
- CCTK_REAL Gt133 = Gtl133*gtu11 + Gtl233*gtu12 + Gtl333*gtu13;
+ CCTK_REAL_VEC Gt333 =
+ kmadd(Gtl133,gtu13,kmadd(Gtl233,gtu23,kmul(Gtl333,gtu33)));
- CCTK_REAL Gt233 = Gtl133*gtu12 + Gtl233*gtu22 + Gtl333*gtu23;
+ CCTK_REAL_VEC fac1 =
+ IfThen(conformalMethod,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
- CCTK_REAL Gt333 = Gtl133*gtu13 + Gtl233*gtu23 + Gtl333*gtu33;
+ CCTK_REAL_VEC cdphi1 = kmul(fac1,JacPDstandardNth1phi);
- CCTK_REAL fac1 = IfThen(conformalMethod,-0.5*INV(phiL),1);
+ CCTK_REAL_VEC cdphi2 = kmul(fac1,JacPDstandardNth2phi);
- CCTK_REAL cdphi1 = fac1*PDstandardNth1phi;
+ CCTK_REAL_VEC cdphi3 = kmul(fac1,JacPDstandardNth3phi);
- CCTK_REAL cdphi2 = fac1*PDstandardNth2phi;
+ CCTK_REAL_VEC S1 =
+ kmul(INV(alphaL),kmadd(beta1L,eTxxL,kmadd(beta2L,eTxyL,kmsub(beta3L,eTxzL,eTtxL))));
- CCTK_REAL cdphi3 = fac1*PDstandardNth3phi;
+ CCTK_REAL_VEC S2 =
+ kmul(INV(alphaL),kmadd(beta1L,eTxyL,kmadd(beta2L,eTyyL,kmsub(beta3L,eTyzL,eTtyL))));
- CCTK_REAL S1 = (-eTtxL + beta1L*eTxxL + beta2L*eTxyL +
- beta3L*eTxzL)*INV(alphaL);
+ CCTK_REAL_VEC S3 =
+ kmul(INV(alphaL),kmadd(beta1L,eTxzL,kmadd(beta2L,eTyzL,kmsub(beta3L,eTzzL,eTtzL))));
- CCTK_REAL S2 = (-eTtyL + beta1L*eTxyL + beta2L*eTyyL +
- beta3L*eTyzL)*INV(alphaL);
+ CCTK_REAL_VEC M1L =
+ kmadd(gtu11,JacPDstandardNth1At11,kmadd(gtu22,JacPDstandardNth2At12,kmadd(gtu23,kadd(JacPDstandardNth2At13,JacPDstandardNth3At12),kmadd(gtu33,JacPDstandardNth3At13,kmadd(S1,ToReal(-25.13274122871834590770114706623602307358),kmadd(kmadd(kmadd(At22L,Gt212,kmul(At23L,Gt312)),gtu22,kmadd(kmadd(At13L,Gt112,kmadd(At22L,Gt213,kmadd(At33L,Gt312,kmul(At23L,kadd(Gt212,Gt313))))),gtu23,kmul(kmadd(At13L,Gt113,kmadd(At23L,Gt213,kmul(At33L,Gt313))),gtu33))),ToReal(-1.),kmadd(gtu12,kadd(JacPDstandardNth1At12,kadd(JacPDstandardNth2At11,kmadd(At13L,kmul(Gt312,ToReal(-3.)),kmul(At22L,kmul(Gt211,ToReal(-1.)))))),kmadd(gtu13,kadd(JacPDstandardNth1At13,kadd(JacPDstandardNth3At11,kmadd(At13L,kmul(Gt313,ToReal(-3.)),kmul(At23L,kmul(Gt211,ToReal(-1.)))))),kmadd(Gt311,kmadd(At13L,kmul(gtu11,ToReal(-2.)),kmul(kmadd(At23L,gtu12,kmul(At33L,gtu13)),ToReal(-1.))),kmadd(JacPDstandardNth1trK,ToReal(-0.6666666666666666666666666666666666666667),kmadd(At13L,kmadd(kmadd(Gt322,gtu22,kmul(Gt333,gtu33)),ToReal(-1.),kmadd(cdphi3,kmul(gtu33,ToReal(6.)),kmadd(gtu13,kmadd(Gt111,ToReal(-1.),kmul(cdphi1,ToReal(6.))),kmul(gtu23,kmadd(Gt323,ToReal(-2.),kmul(cdphi2,ToReal(6.))))))),kmadd(At11L,kmadd(Gt123,kmul(gtu23,ToReal(-2.)),kmadd(kmadd(Gt122,gtu22,kmul(Gt133,gtu33)),ToReal(-1.),kmadd(gtu11,kmadd(Gt111,ToReal(-2.),kmul(cdphi1,ToReal(6.))),kmadd(gtu12,kmadd(Gt112,ToReal(-3.),kmul(cdphi2,ToReal(6.))),kmul(gtu13,kmadd(Gt113,ToReal(-3.),kmul(cdphi3,ToReal(6.)))))))),kmul(At12L,kmadd(Gt213,kmul(gtu13,ToReal(-3.)),kmadd(kmadd(Gt211,gtu11,kmul(Gt223,gtu23)),ToReal(-2.),kmadd(Gt233,kmul(gtu33,ToReal(-1.)),kmadd(gtu12,kmadd(Gt212,ToReal(-3.),kmadd(Gt111,ToReal(-1.),kmul(cdphi1,ToReal(6.)))),kmadd(gtu22,kmadd(kadd(Gt112,Gt222),ToReal(-1.),kmul(cdphi2,ToReal(6.))),kmul(gtu23,kmadd(Gt113,ToReal(-1.),kmul(cdphi3,ToReal(6.))))))))))))))))))))));
- CCTK_REAL S3 = (-eTtzL + beta1L*eTxzL + beta2L*eTyzL +
- beta3L*eTzzL)*INV(alphaL);
+ CCTK_REAL_VEC M2L =
+ kmadd(gtu11,JacPDstandardNth1At12,kmadd(gtu12,kadd(JacPDstandardNth1At22,JacPDstandardNth2At12),kmadd(gtu22,JacPDstandardNth2At22,kmadd(gtu33,JacPDstandardNth3At23,kmadd(S2,ToReal(-25.13274122871834590770114706623602307358),kmadd(kmadd(kmadd(At22L,Gt211,kmadd(At23L,Gt311,kmul(At13L,Gt312))),gtu11,kmadd(kmadd(At23L,Gt212,kmul(At33L,Gt312)),gtu13,kmadd(At11L,kmadd(Gt112,gtu11,kmadd(Gt122,gtu12,kmul(Gt123,gtu13))),kmadd(kmadd(At23L,Gt223,kmul(At33L,Gt323)),gtu33,kmul(At13L,kmadd(Gt322,gtu12,kmadd(Gt112,gtu13,kmadd(Gt122,gtu23,kmul(Gt123,gtu33))))))))),ToReal(-1.),kmadd(gtu23,kadd(JacPDstandardNth2At23,kadd(JacPDstandardNth3At22,kmadd(kmadd(At22L,Gt223,kmul(At23L,Gt323)),ToReal(-3.),kmul(kmadd(At23L,Gt222,kmul(At33L,Gt322)),ToReal(-1.))))),kmadd(gtu13,kadd(JacPDstandardNth1At23,kadd(JacPDstandardNth3At12,kmadd(At23L,kmul(Gt313,ToReal(-2.)),kmul(At13L,kmul(Gt323,ToReal(-1.)))))),kmadd(JacPDstandardNth2trK,ToReal(-0.6666666666666666666666666666666666666667),kmadd(At23L,kmadd(Gt312,kmul(gtu12,ToReal(-3.)),kmadd(Gt322,kmul(gtu22,ToReal(-2.)),kmadd(Gt333,kmul(gtu33,ToReal(-1.)),kmul(kmadd(cdphi1,gtu13,kmadd(cdphi2,gtu23,kmul(cdphi3,gtu33))),ToReal(6.))))),kmadd(At22L,kmadd(kmadd(Gt213,gtu13,kmul(Gt222,gtu22)),ToReal(-2.),kmadd(Gt233,kmul(gtu33,ToReal(-1.)),kmadd(kmadd(cdphi2,gtu22,kmul(cdphi3,gtu23)),ToReal(6.),kmul(gtu12,kmadd(Gt212,ToReal(-3.),kmul(cdphi1,ToReal(6.))))))),kmul(At12L,kmadd(Gt123,kmul(gtu23,ToReal(-3.)),kmadd(Gt122,kmul(gtu22,ToReal(-2.)),kmadd(Gt133,kmul(gtu33,ToReal(-1.)),kmadd(gtu11,kmadd(kadd(Gt111,Gt212),ToReal(-1.),kmul(cdphi1,ToReal(6.))),kmadd(gtu12,kmadd(Gt112,ToReal(-3.),kmadd(Gt222,ToReal(-1.),kmul(cdphi2,ToReal(6.)))),kmul(gtu13,kmadd(Gt113,ToReal(-2.),kmadd(Gt223,ToReal(-1.),kmul(cdphi3,ToReal(6.))))))))))))))))))))));
- CCTK_REAL M1L = -2.*((At12L*Gt211 + At13L*Gt311)*gtu11 +
- At11L*Gt123*gtu23) + At12L*((6.*cdphi1 - 1.*Gt111)*gtu12 -
- 3.*Gt213*gtu13 + 6.*(cdphi2*gtu22 + cdphi3*gtu23) - 1.*Gt233*gtu33) -
- 1.*((At22L*Gt212 + At12L*(Gt112 + Gt222) + At23L*Gt312)*gtu22 +
- (At13L*Gt112 + At12L*Gt113 + At23L*Gt212)*gtu23 + (At13L*Gt113 +
- At23L*Gt213 + At33L*Gt313)*gtu33) + At11L*((6.*cdphi1 - 2.*Gt111)*gtu11
- + 6.*(cdphi2*gtu12 + cdphi3*gtu13) - 1.*(Gt122*gtu22 + Gt133*gtu33)) +
- At13L*((6.*cdphi1 - 1.*Gt111)*gtu13 + 6.*(cdphi2*gtu23 + cdphi3*gtu33)
- - 1.*(Gt322*gtu22 + Gt333*gtu33)) + gtu11*PDstandardNth1At11 -
- 0.6666666666666666666666666666666666666667*PDstandardNth1trK +
- gtu12*(-1.*(At22L*Gt211 + At23L*Gt311) - 3.*(At11L*Gt112 + At12L*Gt212
- + At13L*Gt312) + PDstandardNth1At12 + PDstandardNth2At11) +
- gtu22*PDstandardNth2At12 + gtu13*(-1.*(At23L*Gt211 + At33L*Gt311) -
- 3.*(At11L*Gt113 + At13L*Gt313) + PDstandardNth1At13 +
- PDstandardNth3At11) + gtu23*(-1.*(At22L*Gt213 + At33L*Gt312 +
- At23L*Gt313) - 2.*(At12L*Gt223 + At13L*Gt323) + PDstandardNth2At13 +
- PDstandardNth3At12) + gtu33*PDstandardNth3At13 -
- 25.13274122871834590770114706623602307358*S1;
+ CCTK_REAL_VEC M3L =
+ kmadd(gtu11,JacPDstandardNth1At13,kmadd(gtu22,JacPDstandardNth2At23,kmadd(gtu13,kadd(JacPDstandardNth1At33,JacPDstandardNth3At13),kmadd(gtu33,JacPDstandardNth3At33,kmadd(S3,ToReal(-25.13274122871834590770114706623602307358),kmadd(kmadd(kmadd(At23L,Gt211,kmadd(At12L,Gt213,kmul(At33L,Gt311))),gtu11,kmadd(kmadd(At22L,Gt213,kmul(At12L,kadd(Gt113,Gt223))),gtu12,kmadd(At11L,kmadd(Gt113,gtu11,kmadd(Gt123,gtu12,kmul(Gt133,gtu13))),kmadd(kmadd(At23L,Gt222,kmul(At22L,Gt223)),gtu22,kmul(At12L,kmadd(Gt233,gtu13,kmadd(Gt123,gtu22,kmul(Gt133,gtu23)))))))),ToReal(-1.),kmadd(gtu12,kadd(JacPDstandardNth1At23,kadd(JacPDstandardNth2At13,kmadd(At33L,kmul(Gt312,ToReal(-2.)),kmul(At23L,kmul(Gt313,ToReal(-1.)))))),kmadd(gtu23,kadd(JacPDstandardNth2At33,kadd(JacPDstandardNth3At23,kmadd(kmadd(At23L,Gt223,kmul(At33L,Gt323)),ToReal(-3.),kmul(kmadd(At22L,Gt233,kmul(At23L,Gt333)),ToReal(-1.))))),kmadd(JacPDstandardNth3trK,ToReal(-0.6666666666666666666666666666666666666667),kmadd(At33L,kmadd(Gt333,kmul(gtu33,ToReal(-2.)),kmadd(Gt322,kmul(gtu22,ToReal(-1.)),kmadd(kmadd(cdphi2,gtu23,kmul(cdphi3,gtu33)),ToReal(6.),kmul(gtu13,kmadd(Gt313,ToReal(-3.),kmul(cdphi1,ToReal(6.))))))),kmadd(At23L,kmadd(Gt213,kmul(gtu13,ToReal(-3.)),kmadd(Gt233,kmul(gtu33,ToReal(-2.)),kmadd(cdphi3,kmul(gtu23,ToReal(6.)),kmadd(gtu12,kmadd(Gt212,ToReal(-2.),kmul(cdphi1,ToReal(6.))),kmul(gtu22,kmadd(Gt323,ToReal(-1.),kmul(cdphi2,ToReal(6.)))))))),kmul(At13L,kmadd(Gt123,kmul(gtu23,ToReal(-3.)),kmadd(Gt133,kmul(gtu33,ToReal(-2.)),kmadd(Gt122,kmul(gtu22,ToReal(-1.)),kmadd(gtu11,kmadd(kadd(Gt111,Gt313),ToReal(-1.),kmul(cdphi1,ToReal(6.))),kmadd(gtu12,kmadd(Gt112,ToReal(-2.),kmadd(Gt323,ToReal(-1.),kmul(cdphi2,ToReal(6.)))),kmul(gtu13,kmadd(Gt113,ToReal(-3.),kmadd(Gt333,ToReal(-1.),kmul(cdphi3,ToReal(6.))))))))))))))))))))));
- CCTK_REAL M2L = At12L*((6.*cdphi1 - 1.*Gt111)*gtu11 + 6.*(cdphi2*gtu12
- + cdphi3*gtu13) - 2.*Gt122*gtu22 - 3.*Gt123*gtu23 - 1.*Gt133*gtu33) +
- At22L*((6.*cdphi2 - 2.*Gt222)*gtu22 + 6.*cdphi3*gtu23 - 1.*Gt233*gtu33)
- + At23L*(-2.*Gt322*gtu22 - 1.*Gt333*gtu33 + 6.*(cdphi2*gtu23 +
- cdphi3*gtu33)) - 1.*((At11L*Gt112 + At22L*Gt211 + At12L*Gt212 +
- At23L*Gt311 + At13L*Gt312)*gtu11 + Gt122*(At11L*gtu12 + At13L*gtu23) +
- (At23L*Gt223 + At33L*Gt323)*gtu33 + At13L*(Gt112*gtu13 + Gt123*gtu33))
- + gtu11*PDstandardNth1At12 + gtu12*(At22L*(6.*cdphi1 - 3.*Gt212) +
- At12L*(-3.*Gt112 - 1.*Gt222) - 3.*At23L*Gt312 - 1.*At13L*Gt322 +
- PDstandardNth1At22 + PDstandardNth2At12) + gtu22*PDstandardNth2At22 -
- 0.6666666666666666666666666666666666666667*PDstandardNth2trK +
- gtu13*(-2.*(At12L*Gt113 + At22L*Gt213) + At23L*(6.*cdphi1 - 1.*Gt212 -
- 2.*Gt313) - 1.*(At11L*Gt123 + At12L*Gt223 + At33L*Gt312 + At13L*Gt323)
- + PDstandardNth1At23 + PDstandardNth3At12) + gtu23*(-1.*(At23L*Gt222 +
- At33L*Gt322) - 3.*(At22L*Gt223 + At23L*Gt323) + PDstandardNth2At23 +
- PDstandardNth3At22) + gtu33*PDstandardNth3At23 -
- 25.13274122871834590770114706623602307358*S2;
+ CCTK_REAL_VEC cSL = klog(detgt);
- CCTK_REAL M3L = -1.*((At11L*Gt113 + At23L*Gt211 + At12L*Gt213 +
- At33L*Gt311)*gtu11 + (At22L*Gt223 + At33L*Gt322 + At23L*Gt323)*gtu22 +
- At12L*(Gt113*gtu12 + Gt123*gtu22) + Gt133*(At11L*gtu13 + At12L*gtu23))
- + At13L*((6.*cdphi1 - 1.*(Gt111 + Gt313))*gtu11 + 6.*(cdphi2*gtu12 +
- cdphi3*gtu13) - 1.*Gt122*gtu22 - 3.*Gt123*gtu23 - 2.*Gt133*gtu33) +
- At23L*((6.*cdphi2 - 1.*Gt222)*gtu22 + 6.*cdphi3*gtu23 - 2.*Gt233*gtu33)
- + gtu11*PDstandardNth1At13 + gtu12*(-2.*(At13L*Gt112 + At33L*Gt312) +
- At23L*(6.*cdphi1 - 2.*Gt212 - 1.*Gt313) - 1.*(At11L*Gt123 + At22L*Gt213
- + At12L*Gt223 + At13L*Gt323) + PDstandardNth1At23 + PDstandardNth2At13)
- + gtu22*PDstandardNth2At23 + gtu13*(-3.*(At13L*Gt113 + At23L*Gt213) +
- At33L*(6.*cdphi1 - 3.*Gt313) - 1.*(At12L*Gt233 + At13L*Gt333) +
- PDstandardNth1At33 + PDstandardNth3At13) + gtu23*(-1.*At22L*Gt233 +
- At33L*(6.*cdphi2 - 3.*Gt323) + At23L*(-3.*Gt223 - 1.*Gt333) +
- PDstandardNth2At33 + PDstandardNth3At23) + gtu33*(At33L*(6.*cdphi3 -
- 2.*Gt333) + PDstandardNth3At33) -
- 0.6666666666666666666666666666666666666667*PDstandardNth3trK -
- 25.13274122871834590770114706623602307358*S3;
-
- CCTK_REAL cSL = Log(detgt);
-
- CCTK_REAL cXt1L = Gt111*gtu11 + Gt122*gtu22 + 2*(Gt112*gtu12 +
- Gt113*gtu13 + Gt123*gtu23) + Gt133*gtu33 - Xt1L;
-
- CCTK_REAL cXt2L = Gt211*gtu11 + Gt222*gtu22 + 2*(Gt212*gtu12 +
- Gt213*gtu13 + Gt223*gtu23) + Gt233*gtu33 - Xt2L;
-
- CCTK_REAL cXt3L = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu12 +
- Gt313*gtu13 + Gt323*gtu23) + Gt333*gtu33 - Xt3L;
-
- CCTK_REAL cAL = At11L*gtu11 + At22L*gtu22 + 2*(At12L*gtu12 +
- At13L*gtu13 + At23L*gtu23) + At33L*gtu33;
-
- /* Copy local copies back to grid functions */
- cA[index] = cAL;
- cS[index] = cSL;
- cXt1[index] = cXt1L;
- cXt2[index] = cXt2L;
- cXt3[index] = cXt3L;
- M1[index] = M1L;
- M2[index] = M2L;
- M3[index] = M3L;
+ 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)))));
+
+ /* 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(cA[index],cAL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(cS[index],cSL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(cXt1[index],cXt1L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(cXt2[index],cXt2L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(cXt3[index],cXt3L,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(cA[index],cAL,elt_count);
+ vec_store_nta_partial_hi(cS[index],cSL,elt_count);
+ vec_store_nta_partial_hi(cXt1[index],cXt1L,elt_count);
+ vec_store_nta_partial_hi(cXt2[index],cXt2L,elt_count);
+ vec_store_nta_partial_hi(cXt3[index],cXt3L,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(cA[index],cAL,elt_count);
+ vec_store_nta_partial_lo(cS[index],cSL,elt_count);
+ vec_store_nta_partial_lo(cXt1[index],cXt1L,elt_count);
+ vec_store_nta_partial_lo(cXt2[index],cXt2L,elt_count);
+ vec_store_nta_partial_lo(cXt3[index],cXt3L,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(cA[index],cAL);
+ vec_store_nta(cS[index],cSL);
+ vec_store_nta(cXt1[index],cXt1L);
+ vec_store_nta(cXt2[index],cXt2L);
+ vec_store_nta(cXt3[index],cXt3L);
+ vec_store_nta(M1[index],M1L);
+ vec_store_nta(M2[index],M2L);
+ vec_store_nta(M3[index],M3L);
}
- LC_ENDLOOP3 (ML_BSSN_constraints2);
+ LC_ENDLOOP3VEC (ML_BSSN_constraints2);
}
extern "C" void ML_BSSN_constraints2(CCTK_ARGUMENTS)
@@ -409,5 +995,43 @@ extern "C" void ML_BSSN_constraints2(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_constraints2_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_constraints2_calc_every != ML_BSSN_constraints2_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN::ML_cons_detg","ML_BSSN::ML_cons_Gamma","ML_BSSN::ML_cons_traceA","ML_BSSN::ML_curv","ML_BSSN::ML_Gamma","ML_BSSN::ML_lapse","ML_BSSN::ML_log_confac","ML_BSSN::ML_metric","ML_BSSN::ML_mom","ML_BSSN::ML_shift","ML_BSSN::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_constraints2", 11, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_constraints2", 1, 1, 1);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_constraints2", 2, 2, 2);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_constraints2", 3, 3, 3);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_constraints2", 4, 4, 4);
+ break;
+ }
+
GenericFD_LoopOverInterior(cctkGH, &ML_BSSN_constraints2_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_constraints2_Body");
+ }
}
diff --git a/ML_BSSN/src/ML_BSSN_convertFromADMBase.cc b/ML_BSSN/src/ML_BSSN_convertFromADMBase.cc
index 500c6b2..b4da07f 100644
--- a/ML_BSSN/src/ML_BSSN_convertFromADMBase.cc
+++ b/ML_BSSN/src/ML_BSSN_convertFromADMBase.cc
@@ -13,15 +13,16 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
-static void ML_BSSN_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_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;
@@ -29,20 +30,6 @@ static void ML_BSSN_convertFromADMBase_Body(cGH const * restrict const cctkGH, i
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_convertFromADMBase_Body");
- }
-
- if (cctk_iteration % ML_BSSN_convertFromADMBase_calc_every != ML_BSSN_convertFromADMBase_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ADMBase::curv","ADMBase::lapse","ADMBase::metric","ADMBase::shift","ML_BSSN::ML_curv","ML_BSSN::ML_lapse","ML_BSSN::ML_log_confac","ML_BSSN::ML_metric","ML_BSSN::ML_shift","ML_BSSN::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_convertFromADMBase", 10, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -52,181 +39,389 @@ static void ML_BSSN_convertFromADMBase_Body(cGH const * restrict const cctkGH, i
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const p1o24dx = 0.0416666666666666666666666666667*INV(dx);
- CCTK_REAL const p1o24dy = 0.0416666666666666666666666666667*INV(dy);
- CCTK_REAL const p1o24dz = 0.0416666666666666666666666666667*INV(dz);
- CCTK_REAL const p1o64dx = 0.015625*INV(dx);
- CCTK_REAL const p1o64dy = 0.015625*INV(dy);
- CCTK_REAL const p1o64dz = 0.015625*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_convertFromADMBase,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_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 alpL = alp[index];
- CCTK_REAL betaxL = betax[index];
- CCTK_REAL betayL = betay[index];
- CCTK_REAL betazL = betaz[index];
- CCTK_REAL gxxL = gxx[index];
- CCTK_REAL gxyL = gxy[index];
- CCTK_REAL gxzL = gxz[index];
- CCTK_REAL gyyL = gyy[index];
- CCTK_REAL gyzL = gyz[index];
- CCTK_REAL gzzL = gzz[index];
- CCTK_REAL kxxL = kxx[index];
- CCTK_REAL kxyL = kxy[index];
- CCTK_REAL kxzL = kxz[index];
- CCTK_REAL kyyL = kyy[index];
- CCTK_REAL kyzL = kyz[index];
- CCTK_REAL kzzL = kzz[index];
- CCTK_REAL phiL = phi[index];
- CCTK_REAL trKL = trK[index];
+ 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 g11 = gxxL;
+ CCTK_REAL_VEC g11 = gxxL;
- CCTK_REAL g12 = gxyL;
+ CCTK_REAL_VEC g12 = gxyL;
- CCTK_REAL g13 = gxzL;
+ CCTK_REAL_VEC g13 = gxzL;
- CCTK_REAL g22 = gyyL;
+ CCTK_REAL_VEC g22 = gyyL;
- CCTK_REAL g23 = gyzL;
+ CCTK_REAL_VEC g23 = gyzL;
- CCTK_REAL g33 = gzzL;
+ CCTK_REAL_VEC g33 = gzzL;
- CCTK_REAL detg = 2*g12*g13*g23 + g33*(g11*g22 - SQR(g12)) -
- g22*SQR(g13) - g11*SQR(g23);
+ 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 gu11 = INV(detg)*(g22*g33 - SQR(g23));
+ CCTK_REAL_VEC gu11 = kmul(INV(detg),kmsub(g22,g33,SQR(g23)));
- CCTK_REAL gu12 = (g13*g23 - g12*g33)*INV(detg);
+ CCTK_REAL_VEC gu12 = kmul(INV(detg),kmsub(g13,g23,kmul(g12,g33)));
- CCTK_REAL gu13 = (-(g13*g22) + g12*g23)*INV(detg);
+ CCTK_REAL_VEC gu13 = kmul(INV(detg),kmsub(g12,g23,kmul(g13,g22)));
- CCTK_REAL gu22 = INV(detg)*(g11*g33 - SQR(g13));
+ CCTK_REAL_VEC gu22 = kmul(INV(detg),kmsub(g11,g33,SQR(g13)));
- CCTK_REAL gu23 = (g12*g13 - g11*g23)*INV(detg);
+ CCTK_REAL_VEC gu23 = kmul(INV(detg),kmsub(g12,g13,kmul(g11,g23)));
- CCTK_REAL gu33 = INV(detg)*(g11*g22 - SQR(g12));
+ CCTK_REAL_VEC gu33 = kmul(INV(detg),kmsub(g11,g22,SQR(g12)));
- CCTK_REAL em4phi;
+ CCTK_REAL_VEC em4phi;
if (conformalMethod)
{
- phiL = pow(detg,-0.166666666666666666666666666667);
+ phiL = kpow(detg,-0.166666666666666666666666666667);
em4phi = SQR(phiL);
}
else
{
- phiL = 0.0833333333333333333333333333333*Log(detg);
+ phiL = kmul(klog(detg),ToReal(0.0833333333333333333333333333333));
- em4phi = exp(-4*phiL);
+ em4phi = kexp(kmul(phiL,ToReal(-4)));
}
- CCTK_REAL gt11L = em4phi*g11;
+ CCTK_REAL_VEC gt11L = kmul(em4phi,g11);
+
+ CCTK_REAL_VEC gt12L = kmul(em4phi,g12);
- CCTK_REAL gt12L = em4phi*g12;
+ CCTK_REAL_VEC gt13L = kmul(em4phi,g13);
- CCTK_REAL gt13L = em4phi*g13;
+ CCTK_REAL_VEC gt22L = kmul(em4phi,g22);
- CCTK_REAL gt22L = em4phi*g22;
+ CCTK_REAL_VEC gt23L = kmul(em4phi,g23);
- CCTK_REAL gt23L = em4phi*g23;
+ CCTK_REAL_VEC gt33L = kmul(em4phi,g33);
- CCTK_REAL gt33L = em4phi*g33;
+ trKL =
+ kmadd(gu11,kxxL,kmadd(gu22,kyyL,kmadd(gu33,kzzL,kmul(kmadd(gu12,kxyL,kmadd(gu13,kxzL,kmul(gu23,kyzL))),ToReal(2)))));
- trKL = gu11*kxxL + gu22*kyyL + 2*(gu12*kxyL + gu13*kxzL + gu23*kyzL) +
- gu33*kzzL;
+ CCTK_REAL_VEC At11L =
+ kmul(em4phi,kmadd(g11,kmul(trKL,ToReal(-0.333333333333333333333333333333)),kxxL));
- CCTK_REAL At11L = em4phi*(kxxL -
- 0.333333333333333333333333333333*g11*trKL);
+ CCTK_REAL_VEC At12L =
+ kmul(em4phi,kmadd(g12,kmul(trKL,ToReal(-0.333333333333333333333333333333)),kxyL));
- CCTK_REAL At12L = em4phi*(kxyL -
- 0.333333333333333333333333333333*g12*trKL);
+ CCTK_REAL_VEC At13L =
+ kmul(em4phi,kmadd(g13,kmul(trKL,ToReal(-0.333333333333333333333333333333)),kxzL));
- CCTK_REAL At13L = em4phi*(kxzL -
- 0.333333333333333333333333333333*g13*trKL);
+ CCTK_REAL_VEC At22L =
+ kmul(em4phi,kmadd(g22,kmul(trKL,ToReal(-0.333333333333333333333333333333)),kyyL));
- CCTK_REAL At22L = em4phi*(kyyL -
- 0.333333333333333333333333333333*g22*trKL);
+ CCTK_REAL_VEC At23L =
+ kmul(em4phi,kmadd(g23,kmul(trKL,ToReal(-0.333333333333333333333333333333)),kyzL));
- CCTK_REAL At23L = em4phi*(kyzL -
- 0.333333333333333333333333333333*g23*trKL);
+ CCTK_REAL_VEC At33L =
+ kmul(em4phi,kmadd(g33,kmul(trKL,ToReal(-0.333333333333333333333333333333)),kzzL));
- CCTK_REAL At33L = em4phi*(kzzL -
- 0.333333333333333333333333333333*g33*trKL);
+ CCTK_REAL_VEC alphaL = alpL;
- CCTK_REAL alphaL = alpL;
+ CCTK_REAL_VEC beta1L = betaxL;
- CCTK_REAL beta1L = betaxL;
+ CCTK_REAL_VEC beta2L = betayL;
- CCTK_REAL beta2L = betayL;
+ CCTK_REAL_VEC beta3L = betazL;
- CCTK_REAL beta3L = betazL;
+ /* If necessary, store only partial vectors after the first iteration */
- /* Copy local copies back to grid functions */
- alpha[index] = alphaL;
- At11[index] = At11L;
- At12[index] = At12L;
- At13[index] = At13L;
- At22[index] = At22L;
- At23[index] = At23L;
- At33[index] = At33L;
- beta1[index] = beta1L;
- beta2[index] = beta2L;
- beta3[index] = beta3L;
- gt11[index] = gt11L;
- gt12[index] = gt12L;
- gt13[index] = gt13L;
- gt22[index] = gt22L;
- gt23[index] = gt23L;
- gt33[index] = gt33L;
- phi[index] = phiL;
- trK[index] = trKL;
+ 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(At11[index],At11L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At12[index],At12L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At13[index],At13L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At22[index],At22L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At23[index],At23L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At33[index],At33L,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(gt11[index],gt11L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt12[index],gt12L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt13[index],gt13L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt22[index],gt22L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt23[index],gt23L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt33[index],gt33L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(phi[index],phiL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(trK[index],trKL,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(At11[index],At11L,elt_count);
+ vec_store_nta_partial_hi(At12[index],At12L,elt_count);
+ vec_store_nta_partial_hi(At13[index],At13L,elt_count);
+ vec_store_nta_partial_hi(At22[index],At22L,elt_count);
+ vec_store_nta_partial_hi(At23[index],At23L,elt_count);
+ vec_store_nta_partial_hi(At33[index],At33L,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(gt11[index],gt11L,elt_count);
+ vec_store_nta_partial_hi(gt12[index],gt12L,elt_count);
+ vec_store_nta_partial_hi(gt13[index],gt13L,elt_count);
+ vec_store_nta_partial_hi(gt22[index],gt22L,elt_count);
+ vec_store_nta_partial_hi(gt23[index],gt23L,elt_count);
+ vec_store_nta_partial_hi(gt33[index],gt33L,elt_count);
+ vec_store_nta_partial_hi(phi[index],phiL,elt_count);
+ vec_store_nta_partial_hi(trK[index],trKL,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(At11[index],At11L,elt_count);
+ vec_store_nta_partial_lo(At12[index],At12L,elt_count);
+ vec_store_nta_partial_lo(At13[index],At13L,elt_count);
+ vec_store_nta_partial_lo(At22[index],At22L,elt_count);
+ vec_store_nta_partial_lo(At23[index],At23L,elt_count);
+ vec_store_nta_partial_lo(At33[index],At33L,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(gt11[index],gt11L,elt_count);
+ vec_store_nta_partial_lo(gt12[index],gt12L,elt_count);
+ vec_store_nta_partial_lo(gt13[index],gt13L,elt_count);
+ vec_store_nta_partial_lo(gt22[index],gt22L,elt_count);
+ vec_store_nta_partial_lo(gt23[index],gt23L,elt_count);
+ vec_store_nta_partial_lo(gt33[index],gt33L,elt_count);
+ vec_store_nta_partial_lo(phi[index],phiL,elt_count);
+ vec_store_nta_partial_lo(trK[index],trKL,elt_count);
+ break;
+ }
+ vec_store_nta(alpha[index],alphaL);
+ vec_store_nta(At11[index],At11L);
+ vec_store_nta(At12[index],At12L);
+ vec_store_nta(At13[index],At13L);
+ vec_store_nta(At22[index],At22L);
+ vec_store_nta(At23[index],At23L);
+ vec_store_nta(At33[index],At33L);
+ vec_store_nta(beta1[index],beta1L);
+ vec_store_nta(beta2[index],beta2L);
+ vec_store_nta(beta3[index],beta3L);
+ vec_store_nta(gt11[index],gt11L);
+ vec_store_nta(gt12[index],gt12L);
+ vec_store_nta(gt13[index],gt13L);
+ vec_store_nta(gt22[index],gt22L);
+ vec_store_nta(gt23[index],gt23L);
+ vec_store_nta(gt33[index],gt33L);
+ vec_store_nta(phi[index],phiL);
+ vec_store_nta(trK[index],trKL);
}
- LC_ENDLOOP3 (ML_BSSN_convertFromADMBase);
+ LC_ENDLOOP3VEC (ML_BSSN_convertFromADMBase);
}
extern "C" void ML_BSSN_convertFromADMBase(CCTK_ARGUMENTS)
@@ -234,5 +429,39 @@ extern "C" void ML_BSSN_convertFromADMBase(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_convertFromADMBase_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_convertFromADMBase_calc_every != ML_BSSN_convertFromADMBase_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ADMBase::curv","ADMBase::lapse","ADMBase::metric","ADMBase::shift","ML_BSSN::ML_curv","ML_BSSN::ML_lapse","ML_BSSN::ML_log_confac","ML_BSSN::ML_metric","ML_BSSN::ML_shift","ML_BSSN::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_convertFromADMBase", 10, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverEverything(cctkGH, &ML_BSSN_convertFromADMBase_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_convertFromADMBase_Body");
+ }
}
diff --git a/ML_BSSN/src/ML_BSSN_convertFromADMBaseGamma.cc b/ML_BSSN/src/ML_BSSN_convertFromADMBaseGamma.cc
index 2eebecc..04c86f5 100644
--- a/ML_BSSN/src/ML_BSSN_convertFromADMBaseGamma.cc
+++ b/ML_BSSN/src/ML_BSSN_convertFromADMBaseGamma.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_convertFromADMBaseGamma_SelectBCs(CCTK_ARGUMENTS)
{
@@ -39,7 +40,7 @@ extern "C" void ML_BSSN_convertFromADMBaseGamma_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_BSSN_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_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;
@@ -47,21 +48,6 @@ static void ML_BSSN_convertFromADMBaseGamma_Body(cGH const * restrict const cctk
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_convertFromADMBaseGamma_Body");
- }
-
- if (cctk_iteration % ML_BSSN_convertFromADMBaseGamma_calc_every != ML_BSSN_convertFromADMBaseGamma_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ADMBase::dtlapse","ADMBase::dtshift","grid::coordinates","Grid::coordinates","ML_BSSN::ML_dtlapse","ML_BSSN::ML_dtshift","ML_BSSN::ML_Gamma","ML_BSSN::ML_lapse","ML_BSSN::ML_metric","ML_BSSN::ML_shift"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_convertFromADMBaseGamma", 10, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_convertFromADMBaseGamma", 3, 3, 3);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -71,114 +57,427 @@ static void ML_BSSN_convertFromADMBaseGamma_Body(cGH const * restrict const cctk
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const p1o24dx = 0.0416666666666666666666666666667*INV(dx);
- CCTK_REAL const p1o24dy = 0.0416666666666666666666666666667*INV(dy);
- CCTK_REAL const p1o24dz = 0.0416666666666666666666666666667*INV(dz);
- CCTK_REAL const p1o64dx = 0.015625*INV(dx);
- CCTK_REAL const p1o64dy = 0.015625*INV(dy);
- CCTK_REAL const p1o64dz = 0.015625*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_convertFromADMBaseGamma,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_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 alphaL = alpha[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL dtalpL = dtalp[index];
- CCTK_REAL dtbetaxL = dtbetax[index];
- CCTK_REAL dtbetayL = dtbetay[index];
- CCTK_REAL dtbetazL = dtbetaz[index];
- CCTK_REAL gt11L = gt11[index];
- CCTK_REAL gt12L = gt12[index];
- CCTK_REAL gt13L = gt13[index];
- CCTK_REAL gt22L = gt22[index];
- CCTK_REAL gt23L = gt23[index];
- CCTK_REAL gt33L = gt33[index];
- CCTK_REAL rL = r[index];
-
+ 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 const PDupwindNthAnti1alpha = PDupwindNthAnti1(&alpha[index]);
- CCTK_REAL const PDupwindNthSymm1alpha = PDupwindNthSymm1(&alpha[index]);
- CCTK_REAL const PDupwindNthAnti2alpha = PDupwindNthAnti2(&alpha[index]);
- CCTK_REAL const PDupwindNthSymm2alpha = PDupwindNthSymm2(&alpha[index]);
- CCTK_REAL const PDupwindNthAnti3alpha = PDupwindNthAnti3(&alpha[index]);
- CCTK_REAL const PDupwindNthSymm3alpha = PDupwindNthSymm3(&alpha[index]);
- CCTK_REAL const PDupwindNthAnti1beta1 = PDupwindNthAnti1(&beta1[index]);
- CCTK_REAL const PDupwindNthSymm1beta1 = PDupwindNthSymm1(&beta1[index]);
- CCTK_REAL const PDupwindNthAnti2beta1 = PDupwindNthAnti2(&beta1[index]);
- CCTK_REAL const PDupwindNthSymm2beta1 = PDupwindNthSymm2(&beta1[index]);
- CCTK_REAL const PDupwindNthAnti3beta1 = PDupwindNthAnti3(&beta1[index]);
- CCTK_REAL const PDupwindNthSymm3beta1 = PDupwindNthSymm3(&beta1[index]);
- CCTK_REAL const PDupwindNthAnti1beta2 = PDupwindNthAnti1(&beta2[index]);
- CCTK_REAL const PDupwindNthSymm1beta2 = PDupwindNthSymm1(&beta2[index]);
- CCTK_REAL const PDupwindNthAnti2beta2 = PDupwindNthAnti2(&beta2[index]);
- CCTK_REAL const PDupwindNthSymm2beta2 = PDupwindNthSymm2(&beta2[index]);
- CCTK_REAL const PDupwindNthAnti3beta2 = PDupwindNthAnti3(&beta2[index]);
- CCTK_REAL const PDupwindNthSymm3beta2 = PDupwindNthSymm3(&beta2[index]);
- CCTK_REAL const PDupwindNthAnti1beta3 = PDupwindNthAnti1(&beta3[index]);
- CCTK_REAL const PDupwindNthSymm1beta3 = PDupwindNthSymm1(&beta3[index]);
- CCTK_REAL const PDupwindNthAnti2beta3 = PDupwindNthAnti2(&beta3[index]);
- CCTK_REAL const PDupwindNthSymm2beta3 = PDupwindNthSymm2(&beta3[index]);
- CCTK_REAL const PDupwindNthAnti3beta3 = PDupwindNthAnti3(&beta3[index]);
- CCTK_REAL const PDupwindNthSymm3beta3 = PDupwindNthSymm3(&beta3[index]);
- CCTK_REAL const PDstandardNth1gt11 = PDstandardNth1(&gt11[index]);
- CCTK_REAL const PDstandardNth2gt11 = PDstandardNth2(&gt11[index]);
- CCTK_REAL const PDstandardNth3gt11 = PDstandardNth3(&gt11[index]);
- CCTK_REAL const PDstandardNth1gt12 = PDstandardNth1(&gt12[index]);
- CCTK_REAL const PDstandardNth2gt12 = PDstandardNth2(&gt12[index]);
- CCTK_REAL const PDstandardNth3gt12 = PDstandardNth3(&gt12[index]);
- CCTK_REAL const PDstandardNth1gt13 = PDstandardNth1(&gt13[index]);
- CCTK_REAL const PDstandardNth2gt13 = PDstandardNth2(&gt13[index]);
- CCTK_REAL const PDstandardNth3gt13 = PDstandardNth3(&gt13[index]);
- CCTK_REAL const PDstandardNth1gt22 = PDstandardNth1(&gt22[index]);
- CCTK_REAL const PDstandardNth2gt22 = PDstandardNth2(&gt22[index]);
- CCTK_REAL const PDstandardNth3gt22 = PDstandardNth3(&gt22[index]);
- CCTK_REAL const PDstandardNth1gt23 = PDstandardNth1(&gt23[index]);
- CCTK_REAL const PDstandardNth2gt23 = PDstandardNth2(&gt23[index]);
- CCTK_REAL const PDstandardNth3gt23 = PDstandardNth3(&gt23[index]);
- CCTK_REAL const PDstandardNth1gt33 = PDstandardNth1(&gt33[index]);
- CCTK_REAL const PDstandardNth2gt33 = PDstandardNth2(&gt33[index]);
- CCTK_REAL const PDstandardNth3gt33 = PDstandardNth3(&gt33[index]);
+ 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);
@@ -187,154 +486,428 @@ static void ML_BSSN_convertFromADMBaseGamma_Body(cGH const * restrict const cctk
ptrdiff_t dir3 = Sign(beta3L);
- CCTK_REAL detgt = 1;
+ 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 gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L));
+ CCTK_REAL_VEC gtu11 = kmul(INV(detgt),kmsub(gt22L,gt33L,SQR(gt23L)));
- CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt);
+ CCTK_REAL_VEC gtu12 =
+ kmul(INV(detgt),kmsub(gt13L,gt23L,kmul(gt12L,gt33L)));
- CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC gtu13 =
+ kmul(INV(detgt),kmsub(gt12L,gt23L,kmul(gt13L,gt22L)));
- CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L));
+ CCTK_REAL_VEC gtu22 = kmul(INV(detgt),kmsub(gt11L,gt33L,SQR(gt13L)));
- CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC gtu23 =
+ kmul(INV(detgt),kmsub(gt12L,gt13L,kmul(gt11L,gt23L)));
- CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L));
+ CCTK_REAL_VEC gtu33 = kmul(INV(detgt),kmsub(gt11L,gt22L,SQR(gt12L)));
- CCTK_REAL Gt111 = 0.5*(gtu11*PDstandardNth1gt11 +
- 2*(gtu12*PDstandardNth1gt12 + gtu13*PDstandardNth1gt13) -
- gtu12*PDstandardNth2gt11 - gtu13*PDstandardNth3gt11);
+ 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 Gt211 = 0.5*(gtu12*PDstandardNth1gt11 +
- 2*(gtu22*PDstandardNth1gt12 + gtu23*PDstandardNth1gt13) -
- gtu22*PDstandardNth2gt11 - gtu23*PDstandardNth3gt11);
+ 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 Gt311 = 0.5*(gtu13*PDstandardNth1gt11 +
- 2*(gtu23*PDstandardNth1gt12 + gtu33*PDstandardNth1gt13) -
- gtu23*PDstandardNth2gt11 - gtu33*PDstandardNth3gt11);
+ 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 Gt112 = 0.5*(gtu12*PDstandardNth1gt22 +
- gtu11*PDstandardNth2gt11 + gtu13*(PDstandardNth1gt23 +
- PDstandardNth2gt13 - PDstandardNth3gt12));
+ CCTK_REAL_VEC Gt112 =
+ kmul(kmadd(gtu12,JacPDstandardNth1gt22,kmadd(gtu11,JacPDstandardNth2gt11,kmul(gtu13,kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth2gt13,JacPDstandardNth3gt12))))),ToReal(0.5));
- CCTK_REAL Gt212 = 0.5*(gtu22*PDstandardNth1gt22 +
- gtu12*PDstandardNth2gt11 + gtu23*(PDstandardNth1gt23 +
- PDstandardNth2gt13 - PDstandardNth3gt12));
+ CCTK_REAL_VEC Gt212 =
+ kmul(kmadd(gtu22,JacPDstandardNth1gt22,kmadd(gtu12,JacPDstandardNth2gt11,kmul(gtu23,kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth2gt13,JacPDstandardNth3gt12))))),ToReal(0.5));
- CCTK_REAL Gt312 = 0.5*(gtu23*PDstandardNth1gt22 +
- gtu13*PDstandardNth2gt11 + gtu33*(PDstandardNth1gt23 +
- PDstandardNth2gt13 - PDstandardNth3gt12));
+ CCTK_REAL_VEC Gt312 =
+ kmul(kmadd(gtu23,JacPDstandardNth1gt22,kmadd(gtu13,JacPDstandardNth2gt11,kmul(gtu33,kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth2gt13,JacPDstandardNth3gt12))))),ToReal(0.5));
- CCTK_REAL Gt113 = 0.5*(gtu13*PDstandardNth1gt33 +
- gtu11*PDstandardNth3gt11 + gtu12*(PDstandardNth1gt23 -
- PDstandardNth2gt13 + PDstandardNth3gt12));
+ CCTK_REAL_VEC Gt113 =
+ kmul(kmadd(gtu13,JacPDstandardNth1gt33,kmadd(gtu11,JacPDstandardNth3gt11,kmul(gtu12,kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth3gt12,JacPDstandardNth2gt13))))),ToReal(0.5));
- CCTK_REAL Gt213 = 0.5*(gtu23*PDstandardNth1gt33 +
- gtu12*PDstandardNth3gt11 + gtu22*(PDstandardNth1gt23 -
- PDstandardNth2gt13 + PDstandardNth3gt12));
+ CCTK_REAL_VEC Gt213 =
+ kmul(kmadd(gtu23,JacPDstandardNth1gt33,kmadd(gtu12,JacPDstandardNth3gt11,kmul(gtu22,kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth3gt12,JacPDstandardNth2gt13))))),ToReal(0.5));
- CCTK_REAL Gt313 = 0.5*(gtu33*PDstandardNth1gt33 +
- gtu13*PDstandardNth3gt11 + gtu23*(PDstandardNth1gt23 -
- PDstandardNth2gt13 + PDstandardNth3gt12));
+ CCTK_REAL_VEC Gt313 =
+ kmul(kmadd(gtu33,JacPDstandardNth1gt33,kmadd(gtu13,JacPDstandardNth3gt11,kmul(gtu23,kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth3gt12,JacPDstandardNth2gt13))))),ToReal(0.5));
- CCTK_REAL Gt122 = 0.5*(gtu11*(-PDstandardNth1gt22 +
- 2*PDstandardNth2gt12) + gtu12*PDstandardNth2gt22 +
- gtu13*(2*PDstandardNth2gt23 - PDstandardNth3gt22));
+ 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 Gt222 = 0.5*(gtu12*(-PDstandardNth1gt22 +
- 2*PDstandardNth2gt12) + gtu22*PDstandardNth2gt22 +
- gtu23*(2*PDstandardNth2gt23 - PDstandardNth3gt22));
+ 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 Gt322 = 0.5*(gtu13*(-PDstandardNth1gt22 +
- 2*PDstandardNth2gt12) + gtu23*PDstandardNth2gt22 +
- gtu33*(2*PDstandardNth2gt23 - PDstandardNth3gt22));
+ 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 Gt123 = 0.5*(gtu13*PDstandardNth2gt33 +
- gtu11*(-PDstandardNth1gt23 + PDstandardNth2gt13 + PDstandardNth3gt12) +
- gtu12*PDstandardNth3gt22);
+ CCTK_REAL_VEC Gt123 =
+ kmul(kmadd(gtu13,JacPDstandardNth2gt33,kmadd(gtu12,JacPDstandardNth3gt22,kmul(gtu11,kadd(JacPDstandardNth2gt13,ksub(JacPDstandardNth3gt12,JacPDstandardNth1gt23))))),ToReal(0.5));
- CCTK_REAL Gt223 = 0.5*(gtu23*PDstandardNth2gt33 +
- gtu12*(-PDstandardNth1gt23 + PDstandardNth2gt13 + PDstandardNth3gt12) +
- gtu22*PDstandardNth3gt22);
+ CCTK_REAL_VEC Gt223 =
+ kmul(kmadd(gtu23,JacPDstandardNth2gt33,kmadd(gtu22,JacPDstandardNth3gt22,kmul(gtu12,kadd(JacPDstandardNth2gt13,ksub(JacPDstandardNth3gt12,JacPDstandardNth1gt23))))),ToReal(0.5));
- CCTK_REAL Gt323 = 0.5*(gtu33*PDstandardNth2gt33 +
- gtu13*(-PDstandardNth1gt23 + PDstandardNth2gt13 + PDstandardNth3gt12) +
- gtu23*PDstandardNth3gt22);
+ CCTK_REAL_VEC Gt323 =
+ kmul(kmadd(gtu33,JacPDstandardNth2gt33,kmadd(gtu23,JacPDstandardNth3gt22,kmul(gtu13,kadd(JacPDstandardNth2gt13,ksub(JacPDstandardNth3gt12,JacPDstandardNth1gt23))))),ToReal(0.5));
- CCTK_REAL Gt133 = 0.5*(gtu11*(-PDstandardNth1gt33 +
- 2*PDstandardNth3gt13) + gtu12*(-PDstandardNth2gt33 +
- 2*PDstandardNth3gt23) + gtu13*PDstandardNth3gt33);
+ 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 Gt233 = 0.5*(gtu12*(-PDstandardNth1gt33 +
- 2*PDstandardNth3gt13) + gtu22*(-PDstandardNth2gt33 +
- 2*PDstandardNth3gt23) + gtu23*PDstandardNth3gt33);
+ 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 Gt333 = 0.5*(gtu13*(-PDstandardNth1gt33 +
- 2*PDstandardNth3gt13) + gtu23*(-PDstandardNth2gt33 +
- 2*PDstandardNth3gt23) + gtu33*PDstandardNth3gt33);
+ 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 Xt1L = Gt111*gtu11 + Gt122*gtu22 + 2*(Gt112*gtu12 +
- Gt113*gtu13 + Gt123*gtu23) + Gt133*gtu33;
+ 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 Xt2L = Gt211*gtu11 + Gt222*gtu22 + 2*(Gt212*gtu12 +
- Gt213*gtu13 + Gt223*gtu23) + Gt233*gtu33;
+ 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 Xt3L = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu12 +
- Gt313*gtu13 + Gt323*gtu23) + Gt333*gtu33;
+ 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 AL = IfThen(LapseACoeff !=
- 0,-(INV(ToReal(harmonicF))*pow(alphaL,-ToReal(harmonicN))*(dtalpL -
- (beta1L*PDupwindNthAnti1alpha + beta2L*PDupwindNthAnti2alpha +
- beta3L*PDupwindNthAnti3alpha + PDupwindNthSymm1alpha*Abs(beta1L) +
- PDupwindNthSymm2alpha*Abs(beta2L) +
- PDupwindNthSymm3alpha*Abs(beta3L))*ToReal(LapseAdvectionCoeff))),0);
+ 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 theta = fmin(1,exp(1 -
- rL*INV(ToReal(SpatialShiftGammaCoeffRadius))));
+ CCTK_REAL_VEC theta =
+ kfmin(ToReal(1),kexp(knmsub(rL,INV(ToReal(SpatialShiftGammaCoeffRadius)),ToReal(1))));
- CCTK_REAL B1L;
- CCTK_REAL B2L;
- CCTK_REAL B3L;
+ CCTK_REAL_VEC B1L;
+ CCTK_REAL_VEC B2L;
+ CCTK_REAL_VEC B3L;
if (ShiftBCoeff*ShiftGammaCoeff != 0)
{
- B1L = INV(theta)*INV(ToReal(ShiftGammaCoeff))*(dtbetaxL -
- (beta1L*PDupwindNthAnti1beta1 + beta2L*PDupwindNthAnti2beta1 +
- beta3L*PDupwindNthAnti3beta1 + PDupwindNthSymm1beta1*Abs(beta1L) +
- PDupwindNthSymm2beta1*Abs(beta2L) +
- PDupwindNthSymm3beta1*Abs(beta3L))*ToReal(ShiftAdvectionCoeff));
-
- B2L = INV(theta)*INV(ToReal(ShiftGammaCoeff))*(dtbetayL -
- (beta1L*PDupwindNthAnti1beta2 + beta2L*PDupwindNthAnti2beta2 +
- beta3L*PDupwindNthAnti3beta2 + PDupwindNthSymm1beta2*Abs(beta1L) +
- PDupwindNthSymm2beta2*Abs(beta2L) +
- PDupwindNthSymm3beta2*Abs(beta3L))*ToReal(ShiftAdvectionCoeff));
-
- B3L = INV(theta)*INV(ToReal(ShiftGammaCoeff))*(dtbetazL -
- (beta1L*PDupwindNthAnti1beta3 + beta2L*PDupwindNthAnti2beta3 +
- beta3L*PDupwindNthAnti3beta3 + PDupwindNthSymm1beta3*Abs(beta1L) +
- PDupwindNthSymm2beta3*Abs(beta2L) +
- PDupwindNthSymm3beta3*Abs(beta3L))*ToReal(ShiftAdvectionCoeff));
+ B1L =
+ kmul(INV(theta),kmul(INV(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(theta),kmul(INV(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(theta),kmul(INV(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 = 0;
+ B1L = ToReal(0);
- B2L = 0;
+ B2L = ToReal(0);
- B3L = 0;
+ B3L = 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(A[index],AL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B1[index],B1L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B2[index],B2L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B3[index],B3L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt1[index],Xt1L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt2[index],Xt2L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt3[index],Xt3L,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(A[index],AL,elt_count);
+ vec_store_nta_partial_hi(B1[index],B1L,elt_count);
+ vec_store_nta_partial_hi(B2[index],B2L,elt_count);
+ vec_store_nta_partial_hi(B3[index],B3L,elt_count);
+ vec_store_nta_partial_hi(Xt1[index],Xt1L,elt_count);
+ vec_store_nta_partial_hi(Xt2[index],Xt2L,elt_count);
+ vec_store_nta_partial_hi(Xt3[index],Xt3L,elt_count);
+ continue;
}
- /* Copy local copies back to grid functions */
- A[index] = AL;
- B1[index] = B1L;
- B2[index] = B2L;
- B3[index] = B3L;
- Xt1[index] = Xt1L;
- Xt2[index] = Xt2L;
- Xt3[index] = Xt3L;
+ /* 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(A[index],AL,elt_count);
+ vec_store_nta_partial_lo(B1[index],B1L,elt_count);
+ vec_store_nta_partial_lo(B2[index],B2L,elt_count);
+ vec_store_nta_partial_lo(B3[index],B3L,elt_count);
+ vec_store_nta_partial_lo(Xt1[index],Xt1L,elt_count);
+ vec_store_nta_partial_lo(Xt2[index],Xt2L,elt_count);
+ vec_store_nta_partial_lo(Xt3[index],Xt3L,elt_count);
+ break;
+ }
+ vec_store_nta(A[index],AL);
+ vec_store_nta(B1[index],B1L);
+ vec_store_nta(B2[index],B2L);
+ vec_store_nta(B3[index],B3L);
+ vec_store_nta(Xt1[index],Xt1L);
+ vec_store_nta(Xt2[index],Xt2L);
+ vec_store_nta(Xt3[index],Xt3L);
}
- LC_ENDLOOP3 (ML_BSSN_convertFromADMBaseGamma);
+ LC_ENDLOOP3VEC (ML_BSSN_convertFromADMBaseGamma);
}
extern "C" void ML_BSSN_convertFromADMBaseGamma(CCTK_ARGUMENTS)
@@ -342,5 +915,43 @@ extern "C" void ML_BSSN_convertFromADMBaseGamma(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_convertFromADMBaseGamma_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_convertFromADMBaseGamma_calc_every != ML_BSSN_convertFromADMBaseGamma_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ADMBase::dtlapse","ADMBase::dtshift","grid::coordinates","Grid::coordinates","ML_BSSN::ML_dtlapse","ML_BSSN::ML_dtshift","ML_BSSN::ML_Gamma","ML_BSSN::ML_lapse","ML_BSSN::ML_metric","ML_BSSN::ML_shift"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_convertFromADMBaseGamma", 10, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_convertFromADMBaseGamma", 2, 2, 2);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_convertFromADMBaseGamma", 3, 3, 3);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_convertFromADMBaseGamma", 4, 4, 4);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_convertFromADMBaseGamma", 5, 5, 5);
+ break;
+ }
+
GenericFD_LoopOverInterior(cctkGH, &ML_BSSN_convertFromADMBaseGamma_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_convertFromADMBaseGamma_Body");
+ }
}
diff --git a/ML_BSSN/src/ML_BSSN_convertToADMBase.cc b/ML_BSSN/src/ML_BSSN_convertToADMBase.cc
index 589ccc2..726085e 100644
--- a/ML_BSSN/src/ML_BSSN_convertToADMBase.cc
+++ b/ML_BSSN/src/ML_BSSN_convertToADMBase.cc
@@ -13,15 +13,16 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
-static void ML_BSSN_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_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;
@@ -29,20 +30,6 @@ static void ML_BSSN_convertToADMBase_Body(cGH const * restrict const cctkGH, int
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_convertToADMBase_Body");
- }
-
- if (cctk_iteration % ML_BSSN_convertToADMBase_calc_every != ML_BSSN_convertToADMBase_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ADMBase::curv","ADMBase::lapse","ADMBase::metric","ADMBase::shift","ML_BSSN::ML_curv","ML_BSSN::ML_lapse","ML_BSSN::ML_log_confac","ML_BSSN::ML_metric","ML_BSSN::ML_shift","ML_BSSN::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_convertToADMBase", 10, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -52,142 +39,345 @@ static void ML_BSSN_convertToADMBase_Body(cGH const * restrict const cctkGH, int
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const p1o24dx = 0.0416666666666666666666666666667*INV(dx);
- CCTK_REAL const p1o24dy = 0.0416666666666666666666666666667*INV(dy);
- CCTK_REAL const p1o24dz = 0.0416666666666666666666666666667*INV(dz);
- CCTK_REAL const p1o64dx = 0.015625*INV(dx);
- CCTK_REAL const p1o64dy = 0.015625*INV(dy);
- CCTK_REAL const p1o64dz = 0.015625*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_convertToADMBase,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_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 alphaL = alpha[index];
- CCTK_REAL At11L = At11[index];
- CCTK_REAL At12L = At12[index];
- CCTK_REAL At13L = At13[index];
- CCTK_REAL At22L = At22[index];
- CCTK_REAL At23L = At23[index];
- CCTK_REAL At33L = At33[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL gt11L = gt11[index];
- CCTK_REAL gt12L = gt12[index];
- CCTK_REAL gt13L = gt13[index];
- CCTK_REAL gt22L = gt22[index];
- CCTK_REAL gt23L = gt23[index];
- CCTK_REAL gt33L = gt33[index];
- CCTK_REAL gxxL = gxx[index];
- CCTK_REAL gxyL = gxy[index];
- CCTK_REAL gxzL = gxz[index];
- CCTK_REAL gyyL = gyy[index];
- CCTK_REAL gyzL = gyz[index];
- CCTK_REAL gzzL = gzz[index];
- CCTK_REAL phiL = phi[index];
- CCTK_REAL trKL = trK[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 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 e4phi = IfThen(conformalMethod,INV(SQR(phiL)),exp(4*phiL));
+ CCTK_REAL_VEC e4phi =
+ IfThen(conformalMethod,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
+
+ gxxL = kmul(e4phi,gt11L);
- gxxL = e4phi*gt11L;
+ gxyL = kmul(e4phi,gt12L);
- gxyL = e4phi*gt12L;
+ gxzL = kmul(e4phi,gt13L);
- gxzL = e4phi*gt13L;
+ gyyL = kmul(e4phi,gt22L);
- gyyL = e4phi*gt22L;
+ gyzL = kmul(e4phi,gt23L);
- gyzL = e4phi*gt23L;
+ gzzL = kmul(e4phi,gt33L);
- gzzL = e4phi*gt33L;
+ CCTK_REAL_VEC kxxL =
+ kmadd(At11L,e4phi,kmul(gxxL,kmul(trKL,ToReal(0.333333333333333333333333333333))));
- CCTK_REAL kxxL = At11L*e4phi +
- 0.333333333333333333333333333333*gxxL*trKL;
+ CCTK_REAL_VEC kxyL =
+ kmadd(At12L,e4phi,kmul(gxyL,kmul(trKL,ToReal(0.333333333333333333333333333333))));
- CCTK_REAL kxyL = At12L*e4phi +
- 0.333333333333333333333333333333*gxyL*trKL;
+ CCTK_REAL_VEC kxzL =
+ kmadd(At13L,e4phi,kmul(gxzL,kmul(trKL,ToReal(0.333333333333333333333333333333))));
- CCTK_REAL kxzL = At13L*e4phi +
- 0.333333333333333333333333333333*gxzL*trKL;
+ CCTK_REAL_VEC kyyL =
+ kmadd(At22L,e4phi,kmul(gyyL,kmul(trKL,ToReal(0.333333333333333333333333333333))));
- CCTK_REAL kyyL = At22L*e4phi +
- 0.333333333333333333333333333333*gyyL*trKL;
+ CCTK_REAL_VEC kyzL =
+ kmadd(At23L,e4phi,kmul(gyzL,kmul(trKL,ToReal(0.333333333333333333333333333333))));
- CCTK_REAL kyzL = At23L*e4phi +
- 0.333333333333333333333333333333*gyzL*trKL;
+ CCTK_REAL_VEC kzzL =
+ kmadd(At33L,e4phi,kmul(gzzL,kmul(trKL,ToReal(0.333333333333333333333333333333))));
- CCTK_REAL kzzL = At33L*e4phi +
- 0.333333333333333333333333333333*gzzL*trKL;
+ CCTK_REAL_VEC alpL = alphaL;
- CCTK_REAL alpL = alphaL;
+ CCTK_REAL_VEC betaxL = beta1L;
- CCTK_REAL betaxL = beta1L;
+ CCTK_REAL_VEC betayL = beta2L;
- CCTK_REAL betayL = beta2L;
+ CCTK_REAL_VEC betazL = beta3L;
- CCTK_REAL betazL = beta3L;
+ /* If necessary, store only partial vectors after the first iteration */
- /* Copy local copies back to grid functions */
- alp[index] = alpL;
- betax[index] = betaxL;
- betay[index] = betayL;
- betaz[index] = betazL;
- gxx[index] = gxxL;
- gxy[index] = gxyL;
- gxz[index] = gxzL;
- gyy[index] = gyyL;
- gyz[index] = gyzL;
- gzz[index] = gzzL;
- kxx[index] = kxxL;
- kxy[index] = kxyL;
- kxz[index] = kxzL;
- kyy[index] = kyyL;
- kyz[index] = kyzL;
- kzz[index] = kzzL;
+ 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(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(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(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(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);
}
- LC_ENDLOOP3 (ML_BSSN_convertToADMBase);
+ LC_ENDLOOP3VEC (ML_BSSN_convertToADMBase);
}
extern "C" void ML_BSSN_convertToADMBase(CCTK_ARGUMENTS)
@@ -195,5 +385,39 @@ extern "C" void ML_BSSN_convertToADMBase(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_convertToADMBase_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_convertToADMBase_calc_every != ML_BSSN_convertToADMBase_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ADMBase::curv","ADMBase::lapse","ADMBase::metric","ADMBase::shift","ML_BSSN::ML_curv","ML_BSSN::ML_lapse","ML_BSSN::ML_log_confac","ML_BSSN::ML_metric","ML_BSSN::ML_shift","ML_BSSN::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_convertToADMBase", 10, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverEverything(cctkGH, &ML_BSSN_convertToADMBase_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_convertToADMBase_Body");
+ }
}
diff --git a/ML_BSSN/src/ML_BSSN_convertToADMBaseDtLapseShift.cc b/ML_BSSN/src/ML_BSSN_convertToADMBaseDtLapseShift.cc
index 53b6067..2abc29e 100644
--- a/ML_BSSN/src/ML_BSSN_convertToADMBaseDtLapseShift.cc
+++ b/ML_BSSN/src/ML_BSSN_convertToADMBaseDtLapseShift.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_convertToADMBaseDtLapseShift_SelectBCs(CCTK_ARGUMENTS)
{
@@ -36,7 +37,7 @@ extern "C" void ML_BSSN_convertToADMBaseDtLapseShift_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_BSSN_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_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;
@@ -44,21 +45,6 @@ static void ML_BSSN_convertToADMBaseDtLapseShift_Body(cGH const * restrict const
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_convertToADMBaseDtLapseShift_Body");
- }
-
- if (cctk_iteration % ML_BSSN_convertToADMBaseDtLapseShift_calc_every != ML_BSSN_convertToADMBaseDtLapseShift_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ADMBase::dtlapse","ADMBase::dtshift","grid::coordinates","Grid::coordinates","ML_BSSN::ML_dtlapse","ML_BSSN::ML_dtshift","ML_BSSN::ML_Gamma","ML_BSSN::ML_lapse","ML_BSSN::ML_shift","ML_BSSN::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_convertToADMBaseDtLapseShift", 10, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_convertToADMBaseDtLapseShift", 3, 3, 3);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -68,94 +54,462 @@ static void ML_BSSN_convertToADMBaseDtLapseShift_Body(cGH const * restrict const
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const p1o24dx = 0.0416666666666666666666666666667*INV(dx);
- CCTK_REAL const p1o24dy = 0.0416666666666666666666666666667*INV(dy);
- CCTK_REAL const p1o24dz = 0.0416666666666666666666666666667*INV(dz);
- CCTK_REAL const p1o64dx = 0.015625*INV(dx);
- CCTK_REAL const p1o64dy = 0.015625*INV(dy);
- CCTK_REAL const p1o64dz = 0.015625*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_convertToADMBaseDtLapseShift,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_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 AL = A[index];
- CCTK_REAL alphaL = alpha[index];
- CCTK_REAL B1L = B1[index];
- CCTK_REAL B2L = B2[index];
- CCTK_REAL B3L = B3[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL rL = r[index];
- CCTK_REAL trKL = trK[index];
- CCTK_REAL Xt1L = Xt1[index];
- CCTK_REAL Xt2L = Xt2[index];
- CCTK_REAL Xt3L = Xt3[index];
+ 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 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 const PDupwindNthAnti1alpha = PDupwindNthAnti1(&alpha[index]);
- CCTK_REAL const PDupwindNthSymm1alpha = PDupwindNthSymm1(&alpha[index]);
- CCTK_REAL const PDupwindNthAnti2alpha = PDupwindNthAnti2(&alpha[index]);
- CCTK_REAL const PDupwindNthSymm2alpha = PDupwindNthSymm2(&alpha[index]);
- CCTK_REAL const PDupwindNthAnti3alpha = PDupwindNthAnti3(&alpha[index]);
- CCTK_REAL const PDupwindNthSymm3alpha = PDupwindNthSymm3(&alpha[index]);
- CCTK_REAL const PDupwindNthAnti1beta1 = PDupwindNthAnti1(&beta1[index]);
- CCTK_REAL const PDupwindNthSymm1beta1 = PDupwindNthSymm1(&beta1[index]);
- CCTK_REAL const PDupwindNthAnti2beta1 = PDupwindNthAnti2(&beta1[index]);
- CCTK_REAL const PDupwindNthSymm2beta1 = PDupwindNthSymm2(&beta1[index]);
- CCTK_REAL const PDupwindNthAnti3beta1 = PDupwindNthAnti3(&beta1[index]);
- CCTK_REAL const PDupwindNthSymm3beta1 = PDupwindNthSymm3(&beta1[index]);
- CCTK_REAL const PDupwindNthAnti1beta2 = PDupwindNthAnti1(&beta2[index]);
- CCTK_REAL const PDupwindNthSymm1beta2 = PDupwindNthSymm1(&beta2[index]);
- CCTK_REAL const PDupwindNthAnti2beta2 = PDupwindNthAnti2(&beta2[index]);
- CCTK_REAL const PDupwindNthSymm2beta2 = PDupwindNthSymm2(&beta2[index]);
- CCTK_REAL const PDupwindNthAnti3beta2 = PDupwindNthAnti3(&beta2[index]);
- CCTK_REAL const PDupwindNthSymm3beta2 = PDupwindNthSymm3(&beta2[index]);
- CCTK_REAL const PDupwindNthAnti1beta3 = PDupwindNthAnti1(&beta3[index]);
- CCTK_REAL const PDupwindNthSymm1beta3 = PDupwindNthSymm1(&beta3[index]);
- CCTK_REAL const PDupwindNthAnti2beta3 = PDupwindNthAnti2(&beta3[index]);
- CCTK_REAL const PDupwindNthSymm2beta3 = PDupwindNthSymm2(&beta3[index]);
- CCTK_REAL const PDupwindNthAnti3beta3 = PDupwindNthAnti3(&beta3[index]);
- CCTK_REAL const PDupwindNthSymm3beta3 = PDupwindNthSymm3(&beta3[index]);
+ CCTK_REAL_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);
@@ -164,46 +518,383 @@ static void ML_BSSN_convertToADMBaseDtLapseShift_Body(cGH const * restrict const
ptrdiff_t dir3 = Sign(beta3L);
- CCTK_REAL eta = fmin(1,INV(rL)*ToReal(SpatialBetaDriverRadius));
-
- CCTK_REAL theta = fmin(1,exp(1 -
- rL*INV(ToReal(SpatialShiftGammaCoeffRadius))));
-
- CCTK_REAL dtalpL =
- -(pow(alphaL,ToReal(harmonicN))*ToReal(harmonicF)*(trKL + (AL -
- trKL)*ToReal(LapseACoeff))) + (beta1L*PDupwindNthAnti1alpha +
- beta2L*PDupwindNthAnti2alpha + beta3L*PDupwindNthAnti3alpha +
- PDupwindNthSymm1alpha*Abs(beta1L) + PDupwindNthSymm2alpha*Abs(beta2L) +
- PDupwindNthSymm3alpha*Abs(beta3L))*ToReal(LapseAdvectionCoeff);
-
- CCTK_REAL dtbetaxL = (beta1L*PDupwindNthAnti1beta1 +
- beta2L*PDupwindNthAnti2beta1 + beta3L*PDupwindNthAnti3beta1 +
- PDupwindNthSymm1beta1*Abs(beta1L) + PDupwindNthSymm2beta1*Abs(beta2L) +
- PDupwindNthSymm3beta1*Abs(beta3L))*ToReal(ShiftAdvectionCoeff) +
- theta*(Xt1L + beta1L*eta*ToReal(BetaDriver)*(-1 + ToReal(ShiftBCoeff))
- + (B1L - Xt1L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
-
- CCTK_REAL dtbetayL = (beta1L*PDupwindNthAnti1beta2 +
- beta2L*PDupwindNthAnti2beta2 + beta3L*PDupwindNthAnti3beta2 +
- PDupwindNthSymm1beta2*Abs(beta1L) + PDupwindNthSymm2beta2*Abs(beta2L) +
- PDupwindNthSymm3beta2*Abs(beta3L))*ToReal(ShiftAdvectionCoeff) +
- theta*(Xt2L + beta2L*eta*ToReal(BetaDriver)*(-1 + ToReal(ShiftBCoeff))
- + (B2L - Xt2L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
-
- CCTK_REAL dtbetazL = (beta1L*PDupwindNthAnti1beta3 +
- beta2L*PDupwindNthAnti2beta3 + beta3L*PDupwindNthAnti3beta3 +
- PDupwindNthSymm1beta3*Abs(beta1L) + PDupwindNthSymm2beta3*Abs(beta2L) +
- PDupwindNthSymm3beta3*Abs(beta3L))*ToReal(ShiftAdvectionCoeff) +
- theta*(Xt3L + beta3L*eta*ToReal(BetaDriver)*(-1 + ToReal(ShiftBCoeff))
- + (B3L - Xt3L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
-
- /* Copy local copies back to grid functions */
- dtalp[index] = dtalpL;
- dtbetax[index] = dtbetaxL;
- dtbetay[index] = dtbetayL;
- dtbetaz[index] = dtbetazL;
+ 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 =
+ kfmin(ToReal(1),kmul(INV(rL),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(ksub(AL,trKL),ToReal(LapseACoeff),trKL))));
+
+ 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(kmadd(gtu11,JacPDstandardNth1alpha,kmadd(gtu12,JacPDstandardNth2alpha,kmul(gtu13,JacPDstandardNth3alpha))),kmul(phiL,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(beta1L,kmul(eta,ToReal(BetaDriver*(-1
+ +
+ ShiftBCoeff))),kmul(ksub(B1L,Xt1L),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(kmadd(gtu12,JacPDstandardNth1alpha,kmadd(gtu22,JacPDstandardNth2alpha,kmul(gtu23,JacPDstandardNth3alpha))),kmul(phiL,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(beta2L,kmul(eta,ToReal(BetaDriver*(-1
+ +
+ ShiftBCoeff))),kmul(ksub(B2L,Xt2L),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(kmadd(gtu13,JacPDstandardNth1alpha,kmadd(gtu23,JacPDstandardNth2alpha,kmul(gtu33,JacPDstandardNth3alpha))),kmul(phiL,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(beta3L,kmul(eta,ToReal(BetaDriver*(-1
+ +
+ ShiftBCoeff))),kmul(ksub(B3L,Xt3L),ToReal(ShiftBCoeff)))),ToReal(ShiftGammaCoeff)))));
+
+ /* 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(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);
+ 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(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);
+ 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(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);
+ break;
+ }
+ vec_store_nta(dtalp[index],dtalpL);
+ vec_store_nta(dtbetax[index],dtbetaxL);
+ vec_store_nta(dtbetay[index],dtbetayL);
+ vec_store_nta(dtbetaz[index],dtbetazL);
}
- LC_ENDLOOP3 (ML_BSSN_convertToADMBaseDtLapseShift);
+ LC_ENDLOOP3VEC (ML_BSSN_convertToADMBaseDtLapseShift);
}
extern "C" void ML_BSSN_convertToADMBaseDtLapseShift(CCTK_ARGUMENTS)
@@ -211,5 +902,43 @@ extern "C" void ML_BSSN_convertToADMBaseDtLapseShift(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_convertToADMBaseDtLapseShift_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_convertToADMBaseDtLapseShift_calc_every != ML_BSSN_convertToADMBaseDtLapseShift_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ADMBase::dtlapse","ADMBase::dtshift","grid::coordinates","Grid::coordinates","ML_BSSN::ML_dtlapse","ML_BSSN::ML_dtshift","ML_BSSN::ML_Gamma","ML_BSSN::ML_lapse","ML_BSSN::ML_log_confac","ML_BSSN::ML_metric","ML_BSSN::ML_shift","ML_BSSN::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_convertToADMBaseDtLapseShift", 12, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_convertToADMBaseDtLapseShift", 2, 2, 2);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_convertToADMBaseDtLapseShift", 3, 3, 3);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_convertToADMBaseDtLapseShift", 4, 4, 4);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_convertToADMBaseDtLapseShift", 5, 5, 5);
+ break;
+ }
+
GenericFD_LoopOverInterior(cctkGH, &ML_BSSN_convertToADMBaseDtLapseShift_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_convertToADMBaseDtLapseShift_Body");
+ }
}
diff --git a/ML_BSSN/src/ML_BSSN_convertToADMBaseDtLapseShiftBoundary.cc b/ML_BSSN/src/ML_BSSN_convertToADMBaseDtLapseShiftBoundary.cc
index 0742cd4..a957b55 100644
--- a/ML_BSSN/src/ML_BSSN_convertToADMBaseDtLapseShiftBoundary.cc
+++ b/ML_BSSN/src/ML_BSSN_convertToADMBaseDtLapseShiftBoundary.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_convertToADMBaseDtLapseShiftBoundary_SelectBCs(CCTK_ARGUMENTS)
{
@@ -36,7 +37,7 @@ extern "C" void ML_BSSN_convertToADMBaseDtLapseShiftBoundary_SelectBCs(CCTK_ARGU
return;
}
-static void ML_BSSN_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_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;
@@ -44,20 +45,6 @@ static void ML_BSSN_convertToADMBaseDtLapseShiftBoundary_Body(cGH const * restri
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_convertToADMBaseDtLapseShiftBoundary_Body");
- }
-
- if (cctk_iteration % ML_BSSN_convertToADMBaseDtLapseShiftBoundary_calc_every != ML_BSSN_convertToADMBaseDtLapseShiftBoundary_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ADMBase::dtlapse","ADMBase::dtshift","grid::coordinates","Grid::coordinates","ML_BSSN::ML_dtlapse","ML_BSSN::ML_dtshift","ML_BSSN::ML_Gamma","ML_BSSN::ML_lapse","ML_BSSN::ML_shift","ML_BSSN::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_convertToADMBaseDtLapseShiftBoundary", 10, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -67,100 +54,281 @@ static void ML_BSSN_convertToADMBaseDtLapseShiftBoundary_Body(cGH const * restri
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const p1o24dx = 0.0416666666666666666666666666667*INV(dx);
- CCTK_REAL const p1o24dy = 0.0416666666666666666666666666667*INV(dy);
- CCTK_REAL const p1o24dz = 0.0416666666666666666666666666667*INV(dz);
- CCTK_REAL const p1o64dx = 0.015625*INV(dx);
- CCTK_REAL const p1o64dy = 0.015625*INV(dy);
- CCTK_REAL const p1o64dz = 0.015625*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_convertToADMBaseDtLapseShiftBoundary,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_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 AL = A[index];
- CCTK_REAL alphaL = alpha[index];
- CCTK_REAL B1L = B1[index];
- CCTK_REAL B2L = B2[index];
- CCTK_REAL B3L = B3[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL rL = r[index];
- CCTK_REAL trKL = trK[index];
- CCTK_REAL Xt1L = Xt1[index];
- CCTK_REAL Xt2L = Xt2[index];
- CCTK_REAL Xt3L = Xt3[index];
+ 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 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 eta = fmin(1,INV(rL)*ToReal(SpatialBetaDriverRadius));
+ CCTK_REAL_VEC eta =
+ kfmin(ToReal(1),kmul(INV(rL),ToReal(SpatialBetaDriverRadius)));
- CCTK_REAL theta = fmin(1,exp(1 -
- rL*INV(ToReal(SpatialShiftGammaCoeffRadius))));
+ CCTK_REAL_VEC theta =
+ kfmin(ToReal(1),kexp(knmsub(rL,INV(ToReal(SpatialShiftGammaCoeffRadius)),ToReal(1))));
- CCTK_REAL dtalpL =
- -(pow(alphaL,ToReal(harmonicN))*ToReal(harmonicF)*(trKL + (AL -
- trKL)*ToReal(LapseACoeff)));
+ CCTK_REAL_VEC dtalpL =
+ kneg(kmul(kpow(alphaL,harmonicN),kmul(ToReal(harmonicF),kmadd(ksub(AL,trKL),ToReal(LapseACoeff),trKL))));
- CCTK_REAL dtbetaxL = theta*(Xt1L + beta1L*eta*ToReal(BetaDriver)*(-1 +
- ToReal(ShiftBCoeff)) + (B1L -
- Xt1L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
+ CCTK_REAL_VEC dtbetaxL;
+ CCTK_REAL_VEC dtbetayL;
+ CCTK_REAL_VEC dtbetazL;
- CCTK_REAL dtbetayL = theta*(Xt2L + beta2L*eta*ToReal(BetaDriver)*(-1 +
- ToReal(ShiftBCoeff)) + (B2L -
- Xt2L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
+ if (harmonicShift)
+ {
+ dtbetaxL = ToReal(0);
+
+ dtbetayL = ToReal(0);
+
+ dtbetazL = ToReal(0);
+ }
+ else
+ {
+ dtbetaxL =
+ kmul(theta,kmul(kadd(Xt1L,kmadd(beta1L,kmul(eta,ToReal(BetaDriver*(-1 +
+ ShiftBCoeff))),kmul(ksub(B1L,Xt1L),ToReal(ShiftBCoeff)))),ToReal(ShiftGammaCoeff)));
+
+ dtbetayL =
+ kmul(theta,kmul(kadd(Xt2L,kmadd(beta2L,kmul(eta,ToReal(BetaDriver*(-1 +
+ ShiftBCoeff))),kmul(ksub(B2L,Xt2L),ToReal(ShiftBCoeff)))),ToReal(ShiftGammaCoeff)));
+
+ dtbetazL =
+ kmul(theta,kmul(kadd(Xt3L,kmadd(beta3L,kmul(eta,ToReal(BetaDriver*(-1 +
+ ShiftBCoeff))),kmul(ksub(B3L,Xt3L),ToReal(ShiftBCoeff)))),ToReal(ShiftGammaCoeff)));
+ }
- CCTK_REAL dtbetazL = theta*(Xt3L + beta3L*eta*ToReal(BetaDriver)*(-1 +
- ToReal(ShiftBCoeff)) + (B3L -
- Xt3L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
+ /* If necessary, store only partial vectors after the first iteration */
- /* Copy local copies back to grid functions */
- dtalp[index] = dtalpL;
- dtbetax[index] = dtbetaxL;
- dtbetay[index] = dtbetayL;
- dtbetaz[index] = dtbetazL;
+ 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(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);
+ 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(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);
+ 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(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);
+ break;
+ }
+ vec_store_nta(dtalp[index],dtalpL);
+ vec_store_nta(dtbetax[index],dtbetaxL);
+ vec_store_nta(dtbetay[index],dtbetayL);
+ vec_store_nta(dtbetaz[index],dtbetazL);
}
- LC_ENDLOOP3 (ML_BSSN_convertToADMBaseDtLapseShiftBoundary);
+ LC_ENDLOOP3VEC (ML_BSSN_convertToADMBaseDtLapseShiftBoundary);
}
extern "C" void ML_BSSN_convertToADMBaseDtLapseShiftBoundary(CCTK_ARGUMENTS)
@@ -168,5 +336,39 @@ extern "C" void ML_BSSN_convertToADMBaseDtLapseShiftBoundary(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_convertToADMBaseDtLapseShiftBoundary_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_convertToADMBaseDtLapseShiftBoundary_calc_every != ML_BSSN_convertToADMBaseDtLapseShiftBoundary_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ADMBase::dtlapse","ADMBase::dtshift","grid::coordinates","Grid::coordinates","ML_BSSN::ML_dtlapse","ML_BSSN::ML_dtshift","ML_BSSN::ML_Gamma","ML_BSSN::ML_lapse","ML_BSSN::ML_shift","ML_BSSN::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_convertToADMBaseDtLapseShiftBoundary", 10, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverBoundaryWithGhosts(cctkGH, &ML_BSSN_convertToADMBaseDtLapseShiftBoundary_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_convertToADMBaseDtLapseShiftBoundary_Body");
+ }
}
diff --git a/ML_BSSN/src/ML_BSSN_convertToADMBaseFakeDtLapseShift.cc b/ML_BSSN/src/ML_BSSN_convertToADMBaseFakeDtLapseShift.cc
index 5190707..0d8065d 100644
--- a/ML_BSSN/src/ML_BSSN_convertToADMBaseFakeDtLapseShift.cc
+++ b/ML_BSSN/src/ML_BSSN_convertToADMBaseFakeDtLapseShift.cc
@@ -13,15 +13,16 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
-static void ML_BSSN_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_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;
@@ -29,20 +30,6 @@ static void ML_BSSN_convertToADMBaseFakeDtLapseShift_Body(cGH const * restrict c
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_convertToADMBaseFakeDtLapseShift_Body");
- }
-
- if (cctk_iteration % ML_BSSN_convertToADMBaseFakeDtLapseShift_calc_every != ML_BSSN_convertToADMBaseFakeDtLapseShift_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ADMBase::dtlapse","ADMBase::dtshift","grid::coordinates","Grid::coordinates","ML_BSSN::ML_dtlapse","ML_BSSN::ML_dtshift","ML_BSSN::ML_Gamma","ML_BSSN::ML_lapse","ML_BSSN::ML_shift","ML_BSSN::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_convertToADMBaseFakeDtLapseShift", 10, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -52,100 +39,281 @@ static void ML_BSSN_convertToADMBaseFakeDtLapseShift_Body(cGH const * restrict c
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const p1o24dx = 0.0416666666666666666666666666667*INV(dx);
- CCTK_REAL const p1o24dy = 0.0416666666666666666666666666667*INV(dy);
- CCTK_REAL const p1o24dz = 0.0416666666666666666666666666667*INV(dz);
- CCTK_REAL const p1o64dx = 0.015625*INV(dx);
- CCTK_REAL const p1o64dy = 0.015625*INV(dy);
- CCTK_REAL const p1o64dz = 0.015625*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_convertToADMBaseFakeDtLapseShift,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_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 AL = A[index];
- CCTK_REAL alphaL = alpha[index];
- CCTK_REAL B1L = B1[index];
- CCTK_REAL B2L = B2[index];
- CCTK_REAL B3L = B3[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL rL = r[index];
- CCTK_REAL trKL = trK[index];
- CCTK_REAL Xt1L = Xt1[index];
- CCTK_REAL Xt2L = Xt2[index];
- CCTK_REAL Xt3L = Xt3[index];
+ 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 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 eta = fmin(1,INV(rL)*ToReal(SpatialBetaDriverRadius));
+ CCTK_REAL_VEC eta =
+ kfmin(ToReal(1),kmul(INV(rL),ToReal(SpatialBetaDriverRadius)));
- CCTK_REAL theta = fmin(1,exp(1 -
- rL*INV(ToReal(SpatialShiftGammaCoeffRadius))));
+ CCTK_REAL_VEC theta =
+ kfmin(ToReal(1),kexp(knmsub(rL,INV(ToReal(SpatialShiftGammaCoeffRadius)),ToReal(1))));
- CCTK_REAL dtalpL =
- -(pow(alphaL,ToReal(harmonicN))*ToReal(harmonicF)*(trKL + (AL -
- trKL)*ToReal(LapseACoeff)));
+ CCTK_REAL_VEC dtalpL =
+ kneg(kmul(kpow(alphaL,harmonicN),kmul(ToReal(harmonicF),kmadd(ksub(AL,trKL),ToReal(LapseACoeff),trKL))));
- CCTK_REAL dtbetaxL = theta*(Xt1L + beta1L*eta*ToReal(BetaDriver)*(-1 +
- ToReal(ShiftBCoeff)) + (B1L -
- Xt1L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
+ CCTK_REAL_VEC dtbetaxL;
+ CCTK_REAL_VEC dtbetayL;
+ CCTK_REAL_VEC dtbetazL;
- CCTK_REAL dtbetayL = theta*(Xt2L + beta2L*eta*ToReal(BetaDriver)*(-1 +
- ToReal(ShiftBCoeff)) + (B2L -
- Xt2L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
+ if (harmonicShift)
+ {
+ dtbetaxL = ToReal(0);
+
+ dtbetayL = ToReal(0);
+
+ dtbetazL = ToReal(0);
+ }
+ else
+ {
+ dtbetaxL =
+ kmul(theta,kmul(kadd(Xt1L,kmadd(beta1L,kmul(eta,ToReal(BetaDriver*(-1 +
+ ShiftBCoeff))),kmul(ksub(B1L,Xt1L),ToReal(ShiftBCoeff)))),ToReal(ShiftGammaCoeff)));
+
+ dtbetayL =
+ kmul(theta,kmul(kadd(Xt2L,kmadd(beta2L,kmul(eta,ToReal(BetaDriver*(-1 +
+ ShiftBCoeff))),kmul(ksub(B2L,Xt2L),ToReal(ShiftBCoeff)))),ToReal(ShiftGammaCoeff)));
+
+ dtbetazL =
+ kmul(theta,kmul(kadd(Xt3L,kmadd(beta3L,kmul(eta,ToReal(BetaDriver*(-1 +
+ ShiftBCoeff))),kmul(ksub(B3L,Xt3L),ToReal(ShiftBCoeff)))),ToReal(ShiftGammaCoeff)));
+ }
- CCTK_REAL dtbetazL = theta*(Xt3L + beta3L*eta*ToReal(BetaDriver)*(-1 +
- ToReal(ShiftBCoeff)) + (B3L -
- Xt3L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
+ /* If necessary, store only partial vectors after the first iteration */
- /* Copy local copies back to grid functions */
- dtalp[index] = dtalpL;
- dtbetax[index] = dtbetaxL;
- dtbetay[index] = dtbetayL;
- dtbetaz[index] = dtbetazL;
+ 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(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);
+ 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(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);
+ 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(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);
+ break;
+ }
+ vec_store_nta(dtalp[index],dtalpL);
+ vec_store_nta(dtbetax[index],dtbetaxL);
+ vec_store_nta(dtbetay[index],dtbetayL);
+ vec_store_nta(dtbetaz[index],dtbetazL);
}
- LC_ENDLOOP3 (ML_BSSN_convertToADMBaseFakeDtLapseShift);
+ LC_ENDLOOP3VEC (ML_BSSN_convertToADMBaseFakeDtLapseShift);
}
extern "C" void ML_BSSN_convertToADMBaseFakeDtLapseShift(CCTK_ARGUMENTS)
@@ -153,5 +321,39 @@ extern "C" void ML_BSSN_convertToADMBaseFakeDtLapseShift(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_convertToADMBaseFakeDtLapseShift_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_convertToADMBaseFakeDtLapseShift_calc_every != ML_BSSN_convertToADMBaseFakeDtLapseShift_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ADMBase::dtlapse","ADMBase::dtshift","grid::coordinates","Grid::coordinates","ML_BSSN::ML_dtlapse","ML_BSSN::ML_dtshift","ML_BSSN::ML_Gamma","ML_BSSN::ML_lapse","ML_BSSN::ML_shift","ML_BSSN::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_convertToADMBaseFakeDtLapseShift", 10, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverEverything(cctkGH, &ML_BSSN_convertToADMBaseFakeDtLapseShift_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_convertToADMBaseFakeDtLapseShift_Body");
+ }
}
diff --git a/ML_BSSN/src/ML_BSSN_enforce.cc b/ML_BSSN/src/ML_BSSN_enforce.cc
index 485b834..c9817d9 100644
--- a/ML_BSSN/src/ML_BSSN_enforce.cc
+++ b/ML_BSSN/src/ML_BSSN_enforce.cc
@@ -13,15 +13,16 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
-static void ML_BSSN_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_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;
@@ -29,20 +30,6 @@ static void ML_BSSN_enforce_Body(cGH const * restrict const cctkGH, int const di
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_enforce_Body");
- }
-
- if (cctk_iteration % ML_BSSN_enforce_calc_every != ML_BSSN_enforce_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN::ML_curv","ML_BSSN::ML_lapse","ML_BSSN::ML_metric"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_enforce", 3, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -52,113 +39,297 @@ static void ML_BSSN_enforce_Body(cGH const * restrict const cctkGH, int const di
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const p1o24dx = 0.0416666666666666666666666666667*INV(dx);
- CCTK_REAL const p1o24dy = 0.0416666666666666666666666666667*INV(dy);
- CCTK_REAL const p1o24dz = 0.0416666666666666666666666666667*INV(dz);
- CCTK_REAL const p1o64dx = 0.015625*INV(dx);
- CCTK_REAL const p1o64dy = 0.015625*INV(dy);
- CCTK_REAL const p1o64dz = 0.015625*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_enforce,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_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 alphaL = alpha[index];
- CCTK_REAL At11L = At11[index];
- CCTK_REAL At12L = At12[index];
- CCTK_REAL At13L = At13[index];
- CCTK_REAL At22L = At22[index];
- CCTK_REAL At23L = At23[index];
- CCTK_REAL At33L = At33[index];
- CCTK_REAL gt11L = gt11[index];
- CCTK_REAL gt12L = gt12[index];
- CCTK_REAL gt13L = gt13[index];
- CCTK_REAL gt22L = gt22[index];
- CCTK_REAL gt23L = gt23[index];
- CCTK_REAL gt33L = gt33[index];
+ CCTK_REAL_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 detgt = 1;
+ CCTK_REAL_VEC detgt = ToReal(1);
+
+ CCTK_REAL_VEC gtu11 = kmul(INV(detgt),kmsub(gt22L,gt33L,SQR(gt23L)));
- CCTK_REAL gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L));
+ CCTK_REAL_VEC gtu12 =
+ kmul(INV(detgt),kmsub(gt13L,gt23L,kmul(gt12L,gt33L)));
- CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt);
+ CCTK_REAL_VEC gtu13 =
+ kmul(INV(detgt),kmsub(gt12L,gt23L,kmul(gt13L,gt22L)));
- CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC gtu22 = kmul(INV(detgt),kmsub(gt11L,gt33L,SQR(gt13L)));
- CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L));
+ CCTK_REAL_VEC gtu23 =
+ kmul(INV(detgt),kmsub(gt12L,gt13L,kmul(gt11L,gt23L)));
- CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC gtu33 = kmul(INV(detgt),kmsub(gt11L,gt22L,SQR(gt12L)));
- CCTK_REAL gtu33 = INV(detgt)*(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)))));
- CCTK_REAL trAt = At11L*gtu11 + At22L*gtu22 + 2*(At12L*gtu12 +
- At13L*gtu13 + At23L*gtu23) + At33L*gtu33;
+ At11L =
+ kmadd(gt11L,kmul(trAt,ToReal(-0.333333333333333333333333333333)),At11L);
- At11L = At11L - 0.333333333333333333333333333333*gt11L*trAt;
+ At12L =
+ kmadd(gt12L,kmul(trAt,ToReal(-0.333333333333333333333333333333)),At12L);
- At12L = At12L - 0.333333333333333333333333333333*gt12L*trAt;
+ At13L =
+ kmadd(gt13L,kmul(trAt,ToReal(-0.333333333333333333333333333333)),At13L);
- At13L = At13L - 0.333333333333333333333333333333*gt13L*trAt;
+ At22L =
+ kmadd(gt22L,kmul(trAt,ToReal(-0.333333333333333333333333333333)),At22L);
- At22L = At22L - 0.333333333333333333333333333333*gt22L*trAt;
+ At23L =
+ kmadd(gt23L,kmul(trAt,ToReal(-0.333333333333333333333333333333)),At23L);
- At23L = At23L - 0.333333333333333333333333333333*gt23L*trAt;
+ At33L =
+ kmadd(gt33L,kmul(trAt,ToReal(-0.333333333333333333333333333333)),At33L);
- At33L = At33L - 0.333333333333333333333333333333*gt33L*trAt;
+ alphaL = kfmax(alphaL,ToReal(MinimumLapse));
- alphaL = fmax(alphaL,ToReal(MinimumLapse));
+ /* If necessary, store only partial vectors after the first iteration */
- /* Copy local copies back to grid functions */
- alpha[index] = alphaL;
- At11[index] = At11L;
- At12[index] = At12L;
- At13[index] = At13L;
- At22[index] = At22L;
- At23[index] = At23L;
- At33[index] = At33L;
+ 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(At11[index],At11L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At12[index],At12L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At13[index],At13L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At22[index],At22L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At23[index],At23L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At33[index],At33L,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(At11[index],At11L,elt_count);
+ vec_store_nta_partial_hi(At12[index],At12L,elt_count);
+ vec_store_nta_partial_hi(At13[index],At13L,elt_count);
+ vec_store_nta_partial_hi(At22[index],At22L,elt_count);
+ vec_store_nta_partial_hi(At23[index],At23L,elt_count);
+ vec_store_nta_partial_hi(At33[index],At33L,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(At11[index],At11L,elt_count);
+ vec_store_nta_partial_lo(At12[index],At12L,elt_count);
+ vec_store_nta_partial_lo(At13[index],At13L,elt_count);
+ vec_store_nta_partial_lo(At22[index],At22L,elt_count);
+ vec_store_nta_partial_lo(At23[index],At23L,elt_count);
+ vec_store_nta_partial_lo(At33[index],At33L,elt_count);
+ break;
+ }
+ vec_store_nta(alpha[index],alphaL);
+ vec_store_nta(At11[index],At11L);
+ vec_store_nta(At12[index],At12L);
+ vec_store_nta(At13[index],At13L);
+ vec_store_nta(At22[index],At22L);
+ vec_store_nta(At23[index],At23L);
+ vec_store_nta(At33[index],At33L);
}
- LC_ENDLOOP3 (ML_BSSN_enforce);
+ LC_ENDLOOP3VEC (ML_BSSN_enforce);
}
extern "C" void ML_BSSN_enforce(CCTK_ARGUMENTS)
@@ -166,5 +337,39 @@ extern "C" void ML_BSSN_enforce(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_enforce_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_enforce_calc_every != ML_BSSN_enforce_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN::ML_curv","ML_BSSN::ML_lapse","ML_BSSN::ML_metric"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_enforce", 3, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverEverything(cctkGH, &ML_BSSN_enforce_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_enforce_Body");
+ }
}
diff --git a/ML_BSSN/src/RegisterMoL.cc b/ML_BSSN/src/RegisterMoL.cc
index 79b1811..30ae282 100644
--- a/ML_BSSN/src/RegisterMoL.cc
+++ b/ML_BSSN/src/RegisterMoL.cc
@@ -37,5 +37,7 @@ extern "C" void ML_BSSN_RegisterVars(CCTK_ARGUMENTS)
ierr += MoLRegisterEvolved(CCTK_VarIndex("ML_BSSN::beta2"), CCTK_VarIndex("ML_BSSN::beta2rhs"));
ierr += MoLRegisterEvolved(CCTK_VarIndex("ML_BSSN::beta3"), CCTK_VarIndex("ML_BSSN::beta3rhs"));
ierr += MoLRegisterEvolved(CCTK_VarIndex("ML_BSSN::trK"), CCTK_VarIndex("ML_BSSN::trKrhs"));
+
+ /* Register all the evolved Array functions with MoL */
return;
}
diff --git a/ML_BSSN_Helper/src/SetGroupTags.c b/ML_BSSN_Helper/src/SetGroupTags.c
index 4b24e56..7ae24bb 100644
--- a/ML_BSSN_Helper/src/SetGroupTags.c
+++ b/ML_BSSN_Helper/src/SetGroupTags.c
@@ -15,29 +15,30 @@ ML_BSSN_SetGroupTags (void)
{
DECLARE_CCTK_PARAMETERS;
- set_group_tags (0, 0, 1, "ADMBase::metric");
- set_group_tags (0, 0, 1, "ADMBase::curv");
- set_group_tags (0, 0, 1, "ADMBase::lapse");
- set_group_tags (0, 0, 1, "ADMBase::shift");
- set_group_tags (0, 0, 1, "ADMBase::dtlapse");
- set_group_tags (0, 0, 1, "ADMBase::dtshift");
+ 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 (0, 0, 0, "ML_BSSN::ML_cons_detg");
- set_group_tags (0, 0, 0, "ML_BSSN::ML_cons_Gamma");
- set_group_tags (0, 0, 0, "ML_BSSN::ML_cons_traceA");
- set_group_tags (0, 0, 0, "ML_BSSN::ML_Ham");
- set_group_tags (0, 0, 0, "ML_BSSN::ML_mom");
+ set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN::ML_cons_detg");
+ set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN::ML_cons_Gamma");
+ set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN::ML_cons_traceA");
+ set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN::ML_Ham");
+ set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN::ML_mom");
- int const checkpoint = rhs_timelevels > 1;
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN::ML_log_confacrhs");
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN::ML_metricrhs");
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN::ML_Gammarhs");
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN::ML_trace_curvrhs");
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN::ML_curvrhs");
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN::ML_lapserhs");
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN::ML_dtlapserhs");
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN::ML_shiftrhs");
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN::ML_dtshiftrhs");
+ int const rhs_checkpoint = rhs_timelevels > 1;
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN::ML_log_confacrhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN::ML_metricrhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN::ML_Gammarhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN::ML_trace_curvrhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN::ML_curvrhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN::ML_lapserhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN::ML_dtlapserhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN::ML_shiftrhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN::ML_dtshiftrhs");
return 0;
}
diff --git a/ML_BSSN_MP/configuration.ccl b/ML_BSSN_MP/configuration.ccl
index 8e2c3c5..bdbc1bd 100644
--- a/ML_BSSN_MP/configuration.ccl
+++ b/ML_BSSN_MP/configuration.ccl
@@ -2,3 +2,4 @@
REQUIRES GenericFD
REQUIRES LoopControl
+REQUIRES Vectors
diff --git a/ML_BSSN_MP/interface.ccl b/ML_BSSN_MP/interface.ccl
index 8d7a1ba..d6f77d4 100644
--- a/ML_BSSN_MP/interface.ccl
+++ b/ML_BSSN_MP/interface.ccl
@@ -11,6 +11,7 @@ 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
diff --git a/ML_BSSN_MP/param.ccl b/ML_BSSN_MP/param.ccl
index 80d0e00..17c2d9d 100644
--- a/ML_BSSN_MP/param.ccl
+++ b/ML_BSSN_MP/param.ccl
@@ -45,6 +45,7 @@ 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
@@ -142,6 +143,18 @@ 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"
{
@@ -206,6 +219,12 @@ CCTK_INT ML_BSSN_MP_MaxNumEvolvedVars "Number of evolved variables used by this
} 25
restricted:
+CCTK_INT ML_BSSN_MP_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 :: ""
diff --git a/ML_BSSN_MP/schedule.ccl b/ML_BSSN_MP/schedule.ccl
index 1ee8181..bc9b072 100644
--- a/ML_BSSN_MP/schedule.ccl
+++ b/ML_BSSN_MP/schedule.ccl
@@ -340,7 +340,7 @@ if (CCTK_EQUALS(my_rhs_boundary_condition, "static"))
} "ML_BSSN_MP_RHSStaticBoundary"
}
-schedule ML_BSSN_MP_enforce IN MoL_PostStep BEFORE ML_BSSN_MP_SelectBoundConds
+schedule ML_BSSN_MP_enforce IN MoL_PostStepModify
{
LANG: C
} "ML_BSSN_MP_enforce"
@@ -388,7 +388,7 @@ if (CCTK_EQUALS(dt_lapse_shift_method, "noLapseShiftAdvection"))
} "ML_BSSN_MP_convertToADMBaseFakeDtLapseShift"
}
-schedule group ML_BSSN_MP_constraints1_group in MoL_PseudoEvolution
+schedule group ML_BSSN_MP_constraints1_group in MoL_PseudoEvolution after MoL_PostStep
{
# no language specified
} "ML_BSSN_MP_constraints1"
@@ -415,17 +415,12 @@ schedule group ML_BSSN_MP_constraints1_bc_group in ML_BSSN_MP_constraints1_group
# no language specified
} "ML_BSSN_MP_constraints1"
-schedule group ML_BSSN_MP_constraints1_bc_group at CCTK_POSTRESTRICT
+schedule group ML_BSSN_MP_constraints1_bc_group in MoL_PseudoEvolutionBoundaries after MoL_PostStep
{
# no language specified
} "ML_BSSN_MP_constraints1"
-schedule group ML_BSSN_MP_constraints1_bc_group at CCTK_POSTRESTRICTINITIAL
-{
- # no language specified
-} "ML_BSSN_MP_constraints1"
-
-schedule group ML_BSSN_MP_constraints2_group in MoL_PseudoEvolution
+schedule group ML_BSSN_MP_constraints2_group in MoL_PseudoEvolution after MoL_PostStep
{
# no language specified
} "ML_BSSN_MP_constraints2"
@@ -455,12 +450,7 @@ schedule group ML_BSSN_MP_constraints2_bc_group in ML_BSSN_MP_constraints2_group
# no language specified
} "ML_BSSN_MP_constraints2"
-schedule group ML_BSSN_MP_constraints2_bc_group at CCTK_POSTRESTRICT
-{
- # no language specified
-} "ML_BSSN_MP_constraints2"
-
-schedule group ML_BSSN_MP_constraints2_bc_group at CCTK_POSTRESTRICTINITIAL
+schedule group ML_BSSN_MP_constraints2_bc_group in MoL_PseudoEvolutionBoundaries after MoL_PostStep
{
# no language specified
} "ML_BSSN_MP_constraints2"
diff --git a/ML_BSSN_MP/src/Differencing.h b/ML_BSSN_MP/src/Differencing.h
index 23a98cd..96a0554 100644
--- a/ML_BSSN_MP/src/Differencing.h
+++ b/ML_BSSN_MP/src/Differencing.h
@@ -1,324 +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 PDstandardNth1(u) ((-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]))*p1o12dx)
+# 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 PDstandardNth1(u) (PDstandardNth1_impl(u,p1o12dx,cdj,cdk))
-static CCTK_REAL PDstandardNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]))*p1o12dx;
+ 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 PDstandardNth2(u) ((-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]))*p1o12dy)
+# 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 PDstandardNth2(u) (PDstandardNth2_impl(u,p1o12dy,cdj,cdk))
-static CCTK_REAL PDstandardNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]))*p1o12dy;
+ 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 PDstandardNth3(u) ((-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]))*p1o12dz)
+# 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 PDstandardNth3(u) (PDstandardNth3_impl(u,p1o12dz,cdj,cdk))
-static CCTK_REAL PDstandardNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]))*p1o12dz;
+ 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 PDstandardNth11(u) ((30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]))*pm1o12dx2)
+# 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 PDstandardNth11(u) (PDstandardNth11_impl(u,pm1o12dx2,cdj,cdk))
-static CCTK_REAL PDstandardNth11_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dx2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth11_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dx2, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]))*pm1o12dx2;
+ 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 PDstandardNth22(u) ((30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]))*pm1o12dy2)
+# 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 PDstandardNth22(u) (PDstandardNth22_impl(u,pm1o12dy2,cdj,cdk))
-static CCTK_REAL PDstandardNth22_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dy2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth22_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dy2, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]))*pm1o12dy2;
+ 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 PDstandardNth33(u) ((30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]))*pm1o12dz2)
+# 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 PDstandardNth33(u) (PDstandardNth33_impl(u,pm1o12dz2,cdj,cdk))
-static CCTK_REAL PDstandardNth33_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dz2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth33_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dz2, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]))*pm1o12dz2;
+ 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 PDstandardNth12(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-1)+cdk*(0)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(2)+cdk*(0)]))*p1o144dxdy)
+# 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 PDstandardNth12(u) (PDstandardNth12_impl(u,p1o144dxdy,cdj,cdk))
-static CCTK_REAL PDstandardNth12_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth12_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-1)+cdk*(0)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(2)+cdk*(0)]))*p1o144dxdy;
+ 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 PDstandardNth13(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(2)]))*p1o144dxdz)
+# 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 PDstandardNth13(u) (PDstandardNth13_impl(u,p1o144dxdz,cdj,cdk))
-static CCTK_REAL PDstandardNth13_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth13_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(2)]))*p1o144dxdz;
+ 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 PDstandardNth21(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-1)+cdk*(0)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(2)+cdk*(0)]))*p1o144dxdy)
+# 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 PDstandardNth21(u) (PDstandardNth21_impl(u,p1o144dxdy,cdj,cdk))
-static CCTK_REAL PDstandardNth21_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth21_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-1)+cdk*(0)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(2)+cdk*(0)]))*p1o144dxdy;
+ 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 PDstandardNth23(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(2)]))*p1o144dydz)
+# 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 PDstandardNth23(u) (PDstandardNth23_impl(u,p1o144dydz,cdj,cdk))
-static CCTK_REAL PDstandardNth23_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dydz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth23_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dydz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(2)]))*p1o144dydz;
+ 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 PDstandardNth31(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(2)]))*p1o144dxdz)
+# 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 PDstandardNth31(u) (PDstandardNth31_impl(u,p1o144dxdz,cdj,cdk))
-static CCTK_REAL PDstandardNth31_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth31_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(2)]))*p1o144dxdz;
+ 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 PDstandardNth32(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(2)]))*p1o144dydz)
+# 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 PDstandardNth32(u) (PDstandardNth32_impl(u,p1o144dydz,cdj,cdk))
-static CCTK_REAL PDstandardNth32_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dydz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth32_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dydz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(2)]))*p1o144dydz;
+ 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 PDdissipationNth1(u) ((-20*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 15*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)])) - 6*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(0)]))*p1o64dx)
+# 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 PDdissipationNth1(u) (PDdissipationNth1_impl(u,p1o64dx,cdj,cdk))
-static CCTK_REAL PDdissipationNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o64dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDdissipationNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o64dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-20*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 15*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)])) - 6*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(0)]))*p1o64dx;
+ 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 PDdissipationNth2(u) ((-20*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 15*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)])) - 6*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(0)]))*p1o64dy)
+# 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 PDdissipationNth2(u) (PDdissipationNth2_impl(u,p1o64dy,cdj,cdk))
-static CCTK_REAL PDdissipationNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o64dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDdissipationNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o64dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-20*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 15*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)])) - 6*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(0)]))*p1o64dy;
+ 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 PDdissipationNth3(u) ((-20*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 15*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)])) - 6*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(3)]))*p1o64dz)
+# 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 PDdissipationNth3(u) (PDdissipationNth3_impl(u,p1o64dz,cdj,cdk))
-static CCTK_REAL PDdissipationNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o64dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDdissipationNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o64dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-20*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 15*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)])) - 6*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(3)]))*p1o64dz;
+ 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 PDupwindNth1(u) ((-10*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(2*dir1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3*dir1)+cdj*(0)+cdk*(0)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-dir1)+cdj*(0)+cdk*(0)]) + 18*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(dir1)+cdj*(0)+cdk*(0)]))*p1o12dx*dir1)
+# 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 PDupwindNth1(u) (PDupwindNth1_impl(u,p1o12dx,cdj,cdk,dir1,dir2,dir3))
-static CCTK_REAL PDupwindNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dx, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDupwindNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dx, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3)
+# 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 (-10*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(2*dir1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3*dir1)+cdj*(0)+cdk*(0)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-dir1)+cdj*(0)+cdk*(0)]) + 18*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(dir1)+cdj*(0)+cdk*(0)]))*p1o12dx*dir1;
+ 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 PDupwindNth2(u) ((-10*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2*dir2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3*dir2)+cdk*(0)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-dir2)+cdk*(0)]) + 18*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(dir2)+cdk*(0)]))*p1o12dy*dir2)
+# 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 PDupwindNth2(u) (PDupwindNth2_impl(u,p1o12dy,cdj,cdk,dir1,dir2,dir3))
-static CCTK_REAL PDupwindNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dy, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDupwindNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dy, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3)
+# 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 (-10*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2*dir2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3*dir2)+cdk*(0)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-dir2)+cdk*(0)]) + 18*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(dir2)+cdk*(0)]))*p1o12dy*dir2;
+ 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 PDupwindNth3(u) ((-10*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2*dir3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(3*dir3)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-dir3)]) + 18*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(dir3)]))*p1o12dz*dir3)
+# 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 PDupwindNth3(u) (PDupwindNth3_impl(u,p1o12dz,cdj,cdk,dir1,dir2,dir3))
-static CCTK_REAL PDupwindNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dz, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDupwindNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dz, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3)
+# 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 (-10*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2*dir3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(3*dir3)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-dir3)]) + 18*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(dir3)]))*p1o12dz*dir3;
+ 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) ((-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(dir1)+cdj*(0)+cdk*(0)]))*p1odx*dir1)
+# 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 PDonesided1(u) (PDonesided1_impl(u,p1odx,cdj,cdk,dir1,dir2,dir3))
-static CCTK_REAL PDonesided1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1odx, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDonesided1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1odx, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3)
+# 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 (-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(dir1)+cdj*(0)+cdk*(0)]))*p1odx*dir1;
+ 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 PDonesided2(u) ((-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(dir2)+cdk*(0)]))*p1ody*dir2)
+# 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 PDonesided2(u) (PDonesided2_impl(u,p1ody,cdj,cdk,dir1,dir2,dir3))
-static CCTK_REAL PDonesided2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1ody, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDonesided2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1ody, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3)
+# 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 (-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(dir2)+cdk*(0)]))*p1ody*dir2;
+ 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 PDonesided3(u) ((-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(dir3)]))*p1odz*dir3)
+# 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 PDonesided3(u) (PDonesided3_impl(u,p1odz,cdj,cdk,dir1,dir2,dir3))
-static CCTK_REAL PDonesided3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1odz, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDonesided3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1odz, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3)
+# 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 (-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(dir3)]))*p1odz*dir3;
+ 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 PDupwindNthAnti1(u) ((-21*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + 21*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)]) + 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) - 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(0)]))*p1o24dx)
+# 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 PDupwindNthAnti1(u) (PDupwindNthAnti1_impl(u,p1o24dx,cdj,cdk))
-static CCTK_REAL PDupwindNthAnti1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o24dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDupwindNthAnti1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o24dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-21*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + 21*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)]) + 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) - 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(0)]))*p1o24dx;
+ 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 PDupwindNthSymm1(u) ((-20*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 15*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)])) - 6*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(0)]))*p1o24dx)
+# 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 PDupwindNthSymm1(u) (PDupwindNthSymm1_impl(u,p1o24dx,cdj,cdk))
-static CCTK_REAL PDupwindNthSymm1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o24dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDupwindNthSymm1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o24dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-20*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 15*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)])) - 6*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(0)]))*p1o24dx;
+ 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 PDupwindNthAnti2(u) ((-21*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + 21*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)]) + 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) - 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(0)]))*p1o24dy)
+# 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 PDupwindNthAnti2(u) (PDupwindNthAnti2_impl(u,p1o24dy,cdj,cdk))
-static CCTK_REAL PDupwindNthAnti2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o24dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDupwindNthAnti2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o24dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-21*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + 21*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)]) + 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) - 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(0)]))*p1o24dy;
+ 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 PDupwindNthSymm2(u) ((-20*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 15*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)])) - 6*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(0)]))*p1o24dy)
+# 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 PDupwindNthSymm2(u) (PDupwindNthSymm2_impl(u,p1o24dy,cdj,cdk))
-static CCTK_REAL PDupwindNthSymm2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o24dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDupwindNthSymm2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o24dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-20*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 15*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)])) - 6*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(0)]))*p1o24dy;
+ 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 PDupwindNthAnti3(u) ((-21*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + 21*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)]) + 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) - 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(3)]))*p1o24dz)
+# 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 PDupwindNthAnti3(u) (PDupwindNthAnti3_impl(u,p1o24dz,cdj,cdk))
-static CCTK_REAL PDupwindNthAnti3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o24dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDupwindNthAnti3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o24dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-21*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + 21*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)]) + 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) - 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(3)]))*p1o24dz;
+ 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 PDupwindNthSymm3(u) ((-20*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 15*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)])) - 6*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(3)]))*p1o24dz)
+# 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 PDupwindNthSymm3(u) (PDupwindNthSymm3_impl(u,p1o24dz,cdj,cdk))
-static CCTK_REAL PDupwindNthSymm3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o24dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDupwindNthSymm3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o24dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-20*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 15*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)])) - 6*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(3)]))*p1o24dz;
+ 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_BSSN_MP/src/ML_BSSN_MP_Advect.cc b/ML_BSSN_MP/src/ML_BSSN_MP_Advect.cc
index caae9af..129b1be 100644
--- a/ML_BSSN_MP/src/ML_BSSN_MP_Advect.cc
+++ b/ML_BSSN_MP/src/ML_BSSN_MP_Advect.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_MP_Advect_SelectBCs(CCTK_ARGUMENTS)
{
@@ -57,7 +58,7 @@ extern "C" void ML_BSSN_MP_Advect_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_BSSN_MP_Advect_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_MP_Advect_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const imin[3], int const imax[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
{
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
@@ -65,21 +66,6 @@ static void ML_BSSN_MP_Advect_Body(cGH const * restrict const cctkGH, int const
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_Advect_Body");
- }
-
- if (cctk_iteration % ML_BSSN_MP_Advect_calc_every != ML_BSSN_MP_Advect_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN_MP::ML_curv","ML_BSSN_MP::ML_curvrhs","ML_BSSN_MP::ML_dtlapse","ML_BSSN_MP::ML_dtlapserhs","ML_BSSN_MP::ML_dtshift","ML_BSSN_MP::ML_dtshiftrhs","ML_BSSN_MP::ML_Gamma","ML_BSSN_MP::ML_Gammarhs","ML_BSSN_MP::ML_lapse","ML_BSSN_MP::ML_lapserhs","ML_BSSN_MP::ML_log_confac","ML_BSSN_MP::ML_log_confacrhs","ML_BSSN_MP::ML_metric","ML_BSSN_MP::ML_metricrhs","ML_BSSN_MP::ML_shift","ML_BSSN_MP::ML_shiftrhs","ML_BSSN_MP::ML_trace_curv","ML_BSSN_MP::ML_trace_curvrhs"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_Advect", 18, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_Advect", 3, 3, 3);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -89,41 +75,102 @@ static void ML_BSSN_MP_Advect_Body(cGH const * restrict const cctkGH, int const
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const p1o24dx = 0.0416666666666666666666666666667*INV(dx);
- CCTK_REAL const p1o24dy = 0.0416666666666666666666666666667*INV(dy);
- CCTK_REAL const p1o24dz = 0.0416666666666666666666666666667*INV(dz);
- CCTK_REAL const p1o64dx = 0.015625*INV(dx);
- CCTK_REAL const p1o64dy = 0.015625*INV(dy);
- CCTK_REAL const p1o64dz = 0.015625*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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)
@@ -170,840 +217,1470 @@ static void ML_BSSN_MP_Advect_Body(cGH const * restrict const cctkGH, int const
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_LOOP3 (ML_BSSN_MP_Advect,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_MP_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 AL = A[index];
- CCTK_REAL alphaL = alpha[index];
- CCTK_REAL alpharhsL = alpharhs[index];
- CCTK_REAL ArhsL = Arhs[index];
- CCTK_REAL At11L = At11[index];
- CCTK_REAL At11rhsL = At11rhs[index];
- CCTK_REAL At12L = At12[index];
- CCTK_REAL At12rhsL = At12rhs[index];
- CCTK_REAL At13L = At13[index];
- CCTK_REAL At13rhsL = At13rhs[index];
- CCTK_REAL At22L = At22[index];
- CCTK_REAL At22rhsL = At22rhs[index];
- CCTK_REAL At23L = At23[index];
- CCTK_REAL At23rhsL = At23rhs[index];
- CCTK_REAL At33L = At33[index];
- CCTK_REAL At33rhsL = At33rhs[index];
- CCTK_REAL B1L = B1[index];
- CCTK_REAL B1rhsL = B1rhs[index];
- CCTK_REAL B2L = B2[index];
- CCTK_REAL B2rhsL = B2rhs[index];
- CCTK_REAL B3L = B3[index];
- CCTK_REAL B3rhsL = B3rhs[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta1rhsL = beta1rhs[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta2rhsL = beta2rhs[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL beta3rhsL = beta3rhs[index];
- CCTK_REAL gt11L = gt11[index];
- CCTK_REAL gt11rhsL = gt11rhs[index];
- CCTK_REAL gt12L = gt12[index];
- CCTK_REAL gt12rhsL = gt12rhs[index];
- CCTK_REAL gt13L = gt13[index];
- CCTK_REAL gt13rhsL = gt13rhs[index];
- CCTK_REAL gt22L = gt22[index];
- CCTK_REAL gt22rhsL = gt22rhs[index];
- CCTK_REAL gt23L = gt23[index];
- CCTK_REAL gt23rhsL = gt23rhs[index];
- CCTK_REAL gt33L = gt33[index];
- CCTK_REAL gt33rhsL = gt33rhs[index];
- CCTK_REAL phiL = phi[index];
- CCTK_REAL phirhsL = phirhs[index];
- CCTK_REAL trKL = trK[index];
- CCTK_REAL trKrhsL = trKrhs[index];
- CCTK_REAL Xt1L = Xt1[index];
- CCTK_REAL Xt1rhsL = Xt1rhs[index];
- CCTK_REAL Xt2L = Xt2[index];
- CCTK_REAL Xt2rhsL = Xt2rhs[index];
- CCTK_REAL Xt3L = Xt3[index];
- CCTK_REAL Xt3rhsL = Xt3rhs[index];
+ CCTK_REAL_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 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 J11L, J12L, J13L, J21L, J22L, J23L, J31L, J32L, J33L;
+ CCTK_REAL_VEC J11L, J12L, J13L, J21L, J22L, J23L, J31L, J32L, J33L;
if (use_jacobian)
{
- J11L = J11[index];
- J12L = J12[index];
- J13L = J13[index];
- J21L = J21[index];
- J22L = J22[index];
- J23L = J23[index];
- J31L = J31[index];
- J32L = J32[index];
- J33L = J33[index];
+ J11L = vec_load(J11[index]);
+ J12L = vec_load(J12[index]);
+ J13L = vec_load(J13[index]);
+ J21L = vec_load(J21[index]);
+ J22L = vec_load(J22[index]);
+ J23L = vec_load(J23[index]);
+ J31L = vec_load(J31[index]);
+ J32L = vec_load(J32[index]);
+ J33L = vec_load(J33[index]);
}
/* Include user supplied include files */
/* Precompute derivatives */
- CCTK_REAL const PDupwindNthAnti1A = PDupwindNthAnti1(&A[index]);
- CCTK_REAL const PDupwindNthSymm1A = PDupwindNthSymm1(&A[index]);
- CCTK_REAL const PDupwindNthAnti2A = PDupwindNthAnti2(&A[index]);
- CCTK_REAL const PDupwindNthSymm2A = PDupwindNthSymm2(&A[index]);
- CCTK_REAL const PDupwindNthAnti3A = PDupwindNthAnti3(&A[index]);
- CCTK_REAL const PDupwindNthSymm3A = PDupwindNthSymm3(&A[index]);
- CCTK_REAL const PDupwindNthAnti1alpha = PDupwindNthAnti1(&alpha[index]);
- CCTK_REAL const PDupwindNthSymm1alpha = PDupwindNthSymm1(&alpha[index]);
- CCTK_REAL const PDupwindNthAnti2alpha = PDupwindNthAnti2(&alpha[index]);
- CCTK_REAL const PDupwindNthSymm2alpha = PDupwindNthSymm2(&alpha[index]);
- CCTK_REAL const PDupwindNthAnti3alpha = PDupwindNthAnti3(&alpha[index]);
- CCTK_REAL const PDupwindNthSymm3alpha = PDupwindNthSymm3(&alpha[index]);
- CCTK_REAL const PDupwindNthAnti1At11 = PDupwindNthAnti1(&At11[index]);
- CCTK_REAL const PDupwindNthSymm1At11 = PDupwindNthSymm1(&At11[index]);
- CCTK_REAL const PDupwindNthAnti2At11 = PDupwindNthAnti2(&At11[index]);
- CCTK_REAL const PDupwindNthSymm2At11 = PDupwindNthSymm2(&At11[index]);
- CCTK_REAL const PDupwindNthAnti3At11 = PDupwindNthAnti3(&At11[index]);
- CCTK_REAL const PDupwindNthSymm3At11 = PDupwindNthSymm3(&At11[index]);
- CCTK_REAL const PDupwindNthAnti1At12 = PDupwindNthAnti1(&At12[index]);
- CCTK_REAL const PDupwindNthSymm1At12 = PDupwindNthSymm1(&At12[index]);
- CCTK_REAL const PDupwindNthAnti2At12 = PDupwindNthAnti2(&At12[index]);
- CCTK_REAL const PDupwindNthSymm2At12 = PDupwindNthSymm2(&At12[index]);
- CCTK_REAL const PDupwindNthAnti3At12 = PDupwindNthAnti3(&At12[index]);
- CCTK_REAL const PDupwindNthSymm3At12 = PDupwindNthSymm3(&At12[index]);
- CCTK_REAL const PDupwindNthAnti1At13 = PDupwindNthAnti1(&At13[index]);
- CCTK_REAL const PDupwindNthSymm1At13 = PDupwindNthSymm1(&At13[index]);
- CCTK_REAL const PDupwindNthAnti2At13 = PDupwindNthAnti2(&At13[index]);
- CCTK_REAL const PDupwindNthSymm2At13 = PDupwindNthSymm2(&At13[index]);
- CCTK_REAL const PDupwindNthAnti3At13 = PDupwindNthAnti3(&At13[index]);
- CCTK_REAL const PDupwindNthSymm3At13 = PDupwindNthSymm3(&At13[index]);
- CCTK_REAL const PDupwindNthAnti1At22 = PDupwindNthAnti1(&At22[index]);
- CCTK_REAL const PDupwindNthSymm1At22 = PDupwindNthSymm1(&At22[index]);
- CCTK_REAL const PDupwindNthAnti2At22 = PDupwindNthAnti2(&At22[index]);
- CCTK_REAL const PDupwindNthSymm2At22 = PDupwindNthSymm2(&At22[index]);
- CCTK_REAL const PDupwindNthAnti3At22 = PDupwindNthAnti3(&At22[index]);
- CCTK_REAL const PDupwindNthSymm3At22 = PDupwindNthSymm3(&At22[index]);
- CCTK_REAL const PDupwindNthAnti1At23 = PDupwindNthAnti1(&At23[index]);
- CCTK_REAL const PDupwindNthSymm1At23 = PDupwindNthSymm1(&At23[index]);
- CCTK_REAL const PDupwindNthAnti2At23 = PDupwindNthAnti2(&At23[index]);
- CCTK_REAL const PDupwindNthSymm2At23 = PDupwindNthSymm2(&At23[index]);
- CCTK_REAL const PDupwindNthAnti3At23 = PDupwindNthAnti3(&At23[index]);
- CCTK_REAL const PDupwindNthSymm3At23 = PDupwindNthSymm3(&At23[index]);
- CCTK_REAL const PDupwindNthAnti1At33 = PDupwindNthAnti1(&At33[index]);
- CCTK_REAL const PDupwindNthSymm1At33 = PDupwindNthSymm1(&At33[index]);
- CCTK_REAL const PDupwindNthAnti2At33 = PDupwindNthAnti2(&At33[index]);
- CCTK_REAL const PDupwindNthSymm2At33 = PDupwindNthSymm2(&At33[index]);
- CCTK_REAL const PDupwindNthAnti3At33 = PDupwindNthAnti3(&At33[index]);
- CCTK_REAL const PDupwindNthSymm3At33 = PDupwindNthSymm3(&At33[index]);
- CCTK_REAL const PDupwindNthAnti1B1 = PDupwindNthAnti1(&B1[index]);
- CCTK_REAL const PDupwindNthSymm1B1 = PDupwindNthSymm1(&B1[index]);
- CCTK_REAL const PDupwindNthAnti2B1 = PDupwindNthAnti2(&B1[index]);
- CCTK_REAL const PDupwindNthSymm2B1 = PDupwindNthSymm2(&B1[index]);
- CCTK_REAL const PDupwindNthAnti3B1 = PDupwindNthAnti3(&B1[index]);
- CCTK_REAL const PDupwindNthSymm3B1 = PDupwindNthSymm3(&B1[index]);
- CCTK_REAL const PDupwindNthAnti1B2 = PDupwindNthAnti1(&B2[index]);
- CCTK_REAL const PDupwindNthSymm1B2 = PDupwindNthSymm1(&B2[index]);
- CCTK_REAL const PDupwindNthAnti2B2 = PDupwindNthAnti2(&B2[index]);
- CCTK_REAL const PDupwindNthSymm2B2 = PDupwindNthSymm2(&B2[index]);
- CCTK_REAL const PDupwindNthAnti3B2 = PDupwindNthAnti3(&B2[index]);
- CCTK_REAL const PDupwindNthSymm3B2 = PDupwindNthSymm3(&B2[index]);
- CCTK_REAL const PDupwindNthAnti1B3 = PDupwindNthAnti1(&B3[index]);
- CCTK_REAL const PDupwindNthSymm1B3 = PDupwindNthSymm1(&B3[index]);
- CCTK_REAL const PDupwindNthAnti2B3 = PDupwindNthAnti2(&B3[index]);
- CCTK_REAL const PDupwindNthSymm2B3 = PDupwindNthSymm2(&B3[index]);
- CCTK_REAL const PDupwindNthAnti3B3 = PDupwindNthAnti3(&B3[index]);
- CCTK_REAL const PDupwindNthSymm3B3 = PDupwindNthSymm3(&B3[index]);
- CCTK_REAL const PDupwindNthAnti1beta1 = PDupwindNthAnti1(&beta1[index]);
- CCTK_REAL const PDupwindNthSymm1beta1 = PDupwindNthSymm1(&beta1[index]);
- CCTK_REAL const PDupwindNthAnti2beta1 = PDupwindNthAnti2(&beta1[index]);
- CCTK_REAL const PDupwindNthSymm2beta1 = PDupwindNthSymm2(&beta1[index]);
- CCTK_REAL const PDupwindNthAnti3beta1 = PDupwindNthAnti3(&beta1[index]);
- CCTK_REAL const PDupwindNthSymm3beta1 = PDupwindNthSymm3(&beta1[index]);
- CCTK_REAL const PDupwindNthAnti1beta2 = PDupwindNthAnti1(&beta2[index]);
- CCTK_REAL const PDupwindNthSymm1beta2 = PDupwindNthSymm1(&beta2[index]);
- CCTK_REAL const PDupwindNthAnti2beta2 = PDupwindNthAnti2(&beta2[index]);
- CCTK_REAL const PDupwindNthSymm2beta2 = PDupwindNthSymm2(&beta2[index]);
- CCTK_REAL const PDupwindNthAnti3beta2 = PDupwindNthAnti3(&beta2[index]);
- CCTK_REAL const PDupwindNthSymm3beta2 = PDupwindNthSymm3(&beta2[index]);
- CCTK_REAL const PDupwindNthAnti1beta3 = PDupwindNthAnti1(&beta3[index]);
- CCTK_REAL const PDupwindNthSymm1beta3 = PDupwindNthSymm1(&beta3[index]);
- CCTK_REAL const PDupwindNthAnti2beta3 = PDupwindNthAnti2(&beta3[index]);
- CCTK_REAL const PDupwindNthSymm2beta3 = PDupwindNthSymm2(&beta3[index]);
- CCTK_REAL const PDupwindNthAnti3beta3 = PDupwindNthAnti3(&beta3[index]);
- CCTK_REAL const PDupwindNthSymm3beta3 = PDupwindNthSymm3(&beta3[index]);
- CCTK_REAL const PDupwindNthAnti1gt11 = PDupwindNthAnti1(&gt11[index]);
- CCTK_REAL const PDupwindNthSymm1gt11 = PDupwindNthSymm1(&gt11[index]);
- CCTK_REAL const PDupwindNthAnti2gt11 = PDupwindNthAnti2(&gt11[index]);
- CCTK_REAL const PDupwindNthSymm2gt11 = PDupwindNthSymm2(&gt11[index]);
- CCTK_REAL const PDupwindNthAnti3gt11 = PDupwindNthAnti3(&gt11[index]);
- CCTK_REAL const PDupwindNthSymm3gt11 = PDupwindNthSymm3(&gt11[index]);
- CCTK_REAL const PDupwindNthAnti1gt12 = PDupwindNthAnti1(&gt12[index]);
- CCTK_REAL const PDupwindNthSymm1gt12 = PDupwindNthSymm1(&gt12[index]);
- CCTK_REAL const PDupwindNthAnti2gt12 = PDupwindNthAnti2(&gt12[index]);
- CCTK_REAL const PDupwindNthSymm2gt12 = PDupwindNthSymm2(&gt12[index]);
- CCTK_REAL const PDupwindNthAnti3gt12 = PDupwindNthAnti3(&gt12[index]);
- CCTK_REAL const PDupwindNthSymm3gt12 = PDupwindNthSymm3(&gt12[index]);
- CCTK_REAL const PDupwindNthAnti1gt13 = PDupwindNthAnti1(&gt13[index]);
- CCTK_REAL const PDupwindNthSymm1gt13 = PDupwindNthSymm1(&gt13[index]);
- CCTK_REAL const PDupwindNthAnti2gt13 = PDupwindNthAnti2(&gt13[index]);
- CCTK_REAL const PDupwindNthSymm2gt13 = PDupwindNthSymm2(&gt13[index]);
- CCTK_REAL const PDupwindNthAnti3gt13 = PDupwindNthAnti3(&gt13[index]);
- CCTK_REAL const PDupwindNthSymm3gt13 = PDupwindNthSymm3(&gt13[index]);
- CCTK_REAL const PDupwindNthAnti1gt22 = PDupwindNthAnti1(&gt22[index]);
- CCTK_REAL const PDupwindNthSymm1gt22 = PDupwindNthSymm1(&gt22[index]);
- CCTK_REAL const PDupwindNthAnti2gt22 = PDupwindNthAnti2(&gt22[index]);
- CCTK_REAL const PDupwindNthSymm2gt22 = PDupwindNthSymm2(&gt22[index]);
- CCTK_REAL const PDupwindNthAnti3gt22 = PDupwindNthAnti3(&gt22[index]);
- CCTK_REAL const PDupwindNthSymm3gt22 = PDupwindNthSymm3(&gt22[index]);
- CCTK_REAL const PDupwindNthAnti1gt23 = PDupwindNthAnti1(&gt23[index]);
- CCTK_REAL const PDupwindNthSymm1gt23 = PDupwindNthSymm1(&gt23[index]);
- CCTK_REAL const PDupwindNthAnti2gt23 = PDupwindNthAnti2(&gt23[index]);
- CCTK_REAL const PDupwindNthSymm2gt23 = PDupwindNthSymm2(&gt23[index]);
- CCTK_REAL const PDupwindNthAnti3gt23 = PDupwindNthAnti3(&gt23[index]);
- CCTK_REAL const PDupwindNthSymm3gt23 = PDupwindNthSymm3(&gt23[index]);
- CCTK_REAL const PDupwindNthAnti1gt33 = PDupwindNthAnti1(&gt33[index]);
- CCTK_REAL const PDupwindNthSymm1gt33 = PDupwindNthSymm1(&gt33[index]);
- CCTK_REAL const PDupwindNthAnti2gt33 = PDupwindNthAnti2(&gt33[index]);
- CCTK_REAL const PDupwindNthSymm2gt33 = PDupwindNthSymm2(&gt33[index]);
- CCTK_REAL const PDupwindNthAnti3gt33 = PDupwindNthAnti3(&gt33[index]);
- CCTK_REAL const PDupwindNthSymm3gt33 = PDupwindNthSymm3(&gt33[index]);
- CCTK_REAL const PDupwindNthAnti1phi = PDupwindNthAnti1(&phi[index]);
- CCTK_REAL const PDupwindNthSymm1phi = PDupwindNthSymm1(&phi[index]);
- CCTK_REAL const PDupwindNthAnti2phi = PDupwindNthAnti2(&phi[index]);
- CCTK_REAL const PDupwindNthSymm2phi = PDupwindNthSymm2(&phi[index]);
- CCTK_REAL const PDupwindNthAnti3phi = PDupwindNthAnti3(&phi[index]);
- CCTK_REAL const PDupwindNthSymm3phi = PDupwindNthSymm3(&phi[index]);
- CCTK_REAL const PDupwindNthAnti1trK = PDupwindNthAnti1(&trK[index]);
- CCTK_REAL const PDupwindNthSymm1trK = PDupwindNthSymm1(&trK[index]);
- CCTK_REAL const PDupwindNthAnti2trK = PDupwindNthAnti2(&trK[index]);
- CCTK_REAL const PDupwindNthSymm2trK = PDupwindNthSymm2(&trK[index]);
- CCTK_REAL const PDupwindNthAnti3trK = PDupwindNthAnti3(&trK[index]);
- CCTK_REAL const PDupwindNthSymm3trK = PDupwindNthSymm3(&trK[index]);
- CCTK_REAL const PDupwindNthAnti1Xt1 = PDupwindNthAnti1(&Xt1[index]);
- CCTK_REAL const PDupwindNthSymm1Xt1 = PDupwindNthSymm1(&Xt1[index]);
- CCTK_REAL const PDupwindNthAnti2Xt1 = PDupwindNthAnti2(&Xt1[index]);
- CCTK_REAL const PDupwindNthSymm2Xt1 = PDupwindNthSymm2(&Xt1[index]);
- CCTK_REAL const PDupwindNthAnti3Xt1 = PDupwindNthAnti3(&Xt1[index]);
- CCTK_REAL const PDupwindNthSymm3Xt1 = PDupwindNthSymm3(&Xt1[index]);
- CCTK_REAL const PDupwindNthAnti1Xt2 = PDupwindNthAnti1(&Xt2[index]);
- CCTK_REAL const PDupwindNthSymm1Xt2 = PDupwindNthSymm1(&Xt2[index]);
- CCTK_REAL const PDupwindNthAnti2Xt2 = PDupwindNthAnti2(&Xt2[index]);
- CCTK_REAL const PDupwindNthSymm2Xt2 = PDupwindNthSymm2(&Xt2[index]);
- CCTK_REAL const PDupwindNthAnti3Xt2 = PDupwindNthAnti3(&Xt2[index]);
- CCTK_REAL const PDupwindNthSymm3Xt2 = PDupwindNthSymm3(&Xt2[index]);
- CCTK_REAL const PDupwindNthAnti1Xt3 = PDupwindNthAnti1(&Xt3[index]);
- CCTK_REAL const PDupwindNthSymm1Xt3 = PDupwindNthSymm1(&Xt3[index]);
- CCTK_REAL const PDupwindNthAnti2Xt3 = PDupwindNthAnti2(&Xt3[index]);
- CCTK_REAL const PDupwindNthSymm2Xt3 = PDupwindNthSymm2(&Xt3[index]);
- CCTK_REAL const PDupwindNthAnti3Xt3 = PDupwindNthAnti3(&Xt3[index]);
- CCTK_REAL const PDupwindNthSymm3Xt3 = PDupwindNthSymm3(&Xt3[index]);
+ 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 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]);
+ 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]);
+ 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]);
+ 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]);
+ 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 */
- CCTK_REAL JacPDupwindNthAnti1A;
- CCTK_REAL JacPDupwindNthAnti1alpha;
- CCTK_REAL JacPDupwindNthAnti1At11;
- CCTK_REAL JacPDupwindNthAnti1At12;
- CCTK_REAL JacPDupwindNthAnti1At13;
- CCTK_REAL JacPDupwindNthAnti1At22;
- CCTK_REAL JacPDupwindNthAnti1At23;
- CCTK_REAL JacPDupwindNthAnti1At33;
- CCTK_REAL JacPDupwindNthAnti1B1;
- CCTK_REAL JacPDupwindNthAnti1B2;
- CCTK_REAL JacPDupwindNthAnti1B3;
- CCTK_REAL JacPDupwindNthAnti1beta1;
- CCTK_REAL JacPDupwindNthAnti1beta2;
- CCTK_REAL JacPDupwindNthAnti1beta3;
- CCTK_REAL JacPDupwindNthAnti1gt11;
- CCTK_REAL JacPDupwindNthAnti1gt12;
- CCTK_REAL JacPDupwindNthAnti1gt13;
- CCTK_REAL JacPDupwindNthAnti1gt22;
- CCTK_REAL JacPDupwindNthAnti1gt23;
- CCTK_REAL JacPDupwindNthAnti1gt33;
- CCTK_REAL JacPDupwindNthAnti1phi;
- CCTK_REAL JacPDupwindNthAnti1trK;
- CCTK_REAL JacPDupwindNthAnti1Xt1;
- CCTK_REAL JacPDupwindNthAnti1Xt2;
- CCTK_REAL JacPDupwindNthAnti1Xt3;
- CCTK_REAL JacPDupwindNthAnti2A;
- CCTK_REAL JacPDupwindNthAnti2alpha;
- CCTK_REAL JacPDupwindNthAnti2At11;
- CCTK_REAL JacPDupwindNthAnti2At12;
- CCTK_REAL JacPDupwindNthAnti2At13;
- CCTK_REAL JacPDupwindNthAnti2At22;
- CCTK_REAL JacPDupwindNthAnti2At23;
- CCTK_REAL JacPDupwindNthAnti2At33;
- CCTK_REAL JacPDupwindNthAnti2B1;
- CCTK_REAL JacPDupwindNthAnti2B2;
- CCTK_REAL JacPDupwindNthAnti2B3;
- CCTK_REAL JacPDupwindNthAnti2beta1;
- CCTK_REAL JacPDupwindNthAnti2beta2;
- CCTK_REAL JacPDupwindNthAnti2beta3;
- CCTK_REAL JacPDupwindNthAnti2gt11;
- CCTK_REAL JacPDupwindNthAnti2gt12;
- CCTK_REAL JacPDupwindNthAnti2gt13;
- CCTK_REAL JacPDupwindNthAnti2gt22;
- CCTK_REAL JacPDupwindNthAnti2gt23;
- CCTK_REAL JacPDupwindNthAnti2gt33;
- CCTK_REAL JacPDupwindNthAnti2phi;
- CCTK_REAL JacPDupwindNthAnti2trK;
- CCTK_REAL JacPDupwindNthAnti2Xt1;
- CCTK_REAL JacPDupwindNthAnti2Xt2;
- CCTK_REAL JacPDupwindNthAnti2Xt3;
- CCTK_REAL JacPDupwindNthAnti3A;
- CCTK_REAL JacPDupwindNthAnti3alpha;
- CCTK_REAL JacPDupwindNthAnti3At11;
- CCTK_REAL JacPDupwindNthAnti3At12;
- CCTK_REAL JacPDupwindNthAnti3At13;
- CCTK_REAL JacPDupwindNthAnti3At22;
- CCTK_REAL JacPDupwindNthAnti3At23;
- CCTK_REAL JacPDupwindNthAnti3At33;
- CCTK_REAL JacPDupwindNthAnti3B1;
- CCTK_REAL JacPDupwindNthAnti3B2;
- CCTK_REAL JacPDupwindNthAnti3B3;
- CCTK_REAL JacPDupwindNthAnti3beta1;
- CCTK_REAL JacPDupwindNthAnti3beta2;
- CCTK_REAL JacPDupwindNthAnti3beta3;
- CCTK_REAL JacPDupwindNthAnti3gt11;
- CCTK_REAL JacPDupwindNthAnti3gt12;
- CCTK_REAL JacPDupwindNthAnti3gt13;
- CCTK_REAL JacPDupwindNthAnti3gt22;
- CCTK_REAL JacPDupwindNthAnti3gt23;
- CCTK_REAL JacPDupwindNthAnti3gt33;
- CCTK_REAL JacPDupwindNthAnti3phi;
- CCTK_REAL JacPDupwindNthAnti3trK;
- CCTK_REAL JacPDupwindNthAnti3Xt1;
- CCTK_REAL JacPDupwindNthAnti3Xt2;
- CCTK_REAL JacPDupwindNthAnti3Xt3;
- CCTK_REAL JacPDupwindNthSymm1A;
- CCTK_REAL JacPDupwindNthSymm1alpha;
- CCTK_REAL JacPDupwindNthSymm1At11;
- CCTK_REAL JacPDupwindNthSymm1At12;
- CCTK_REAL JacPDupwindNthSymm1At13;
- CCTK_REAL JacPDupwindNthSymm1At22;
- CCTK_REAL JacPDupwindNthSymm1At23;
- CCTK_REAL JacPDupwindNthSymm1At33;
- CCTK_REAL JacPDupwindNthSymm1B1;
- CCTK_REAL JacPDupwindNthSymm1B2;
- CCTK_REAL JacPDupwindNthSymm1B3;
- CCTK_REAL JacPDupwindNthSymm1beta1;
- CCTK_REAL JacPDupwindNthSymm1beta2;
- CCTK_REAL JacPDupwindNthSymm1beta3;
- CCTK_REAL JacPDupwindNthSymm1gt11;
- CCTK_REAL JacPDupwindNthSymm1gt12;
- CCTK_REAL JacPDupwindNthSymm1gt13;
- CCTK_REAL JacPDupwindNthSymm1gt22;
- CCTK_REAL JacPDupwindNthSymm1gt23;
- CCTK_REAL JacPDupwindNthSymm1gt33;
- CCTK_REAL JacPDupwindNthSymm1phi;
- CCTK_REAL JacPDupwindNthSymm1trK;
- CCTK_REAL JacPDupwindNthSymm1Xt1;
- CCTK_REAL JacPDupwindNthSymm1Xt2;
- CCTK_REAL JacPDupwindNthSymm1Xt3;
- CCTK_REAL JacPDupwindNthSymm2A;
- CCTK_REAL JacPDupwindNthSymm2alpha;
- CCTK_REAL JacPDupwindNthSymm2At11;
- CCTK_REAL JacPDupwindNthSymm2At12;
- CCTK_REAL JacPDupwindNthSymm2At13;
- CCTK_REAL JacPDupwindNthSymm2At22;
- CCTK_REAL JacPDupwindNthSymm2At23;
- CCTK_REAL JacPDupwindNthSymm2At33;
- CCTK_REAL JacPDupwindNthSymm2B1;
- CCTK_REAL JacPDupwindNthSymm2B2;
- CCTK_REAL JacPDupwindNthSymm2B3;
- CCTK_REAL JacPDupwindNthSymm2beta1;
- CCTK_REAL JacPDupwindNthSymm2beta2;
- CCTK_REAL JacPDupwindNthSymm2beta3;
- CCTK_REAL JacPDupwindNthSymm2gt11;
- CCTK_REAL JacPDupwindNthSymm2gt12;
- CCTK_REAL JacPDupwindNthSymm2gt13;
- CCTK_REAL JacPDupwindNthSymm2gt22;
- CCTK_REAL JacPDupwindNthSymm2gt23;
- CCTK_REAL JacPDupwindNthSymm2gt33;
- CCTK_REAL JacPDupwindNthSymm2phi;
- CCTK_REAL JacPDupwindNthSymm2trK;
- CCTK_REAL JacPDupwindNthSymm2Xt1;
- CCTK_REAL JacPDupwindNthSymm2Xt2;
- CCTK_REAL JacPDupwindNthSymm2Xt3;
- CCTK_REAL JacPDupwindNthSymm3A;
- CCTK_REAL JacPDupwindNthSymm3alpha;
- CCTK_REAL JacPDupwindNthSymm3At11;
- CCTK_REAL JacPDupwindNthSymm3At12;
- CCTK_REAL JacPDupwindNthSymm3At13;
- CCTK_REAL JacPDupwindNthSymm3At22;
- CCTK_REAL JacPDupwindNthSymm3At23;
- CCTK_REAL JacPDupwindNthSymm3At33;
- CCTK_REAL JacPDupwindNthSymm3B1;
- CCTK_REAL JacPDupwindNthSymm3B2;
- CCTK_REAL JacPDupwindNthSymm3B3;
- CCTK_REAL JacPDupwindNthSymm3beta1;
- CCTK_REAL JacPDupwindNthSymm3beta2;
- CCTK_REAL JacPDupwindNthSymm3beta3;
- CCTK_REAL JacPDupwindNthSymm3gt11;
- CCTK_REAL JacPDupwindNthSymm3gt12;
- CCTK_REAL JacPDupwindNthSymm3gt13;
- CCTK_REAL JacPDupwindNthSymm3gt22;
- CCTK_REAL JacPDupwindNthSymm3gt23;
- CCTK_REAL JacPDupwindNthSymm3gt33;
- CCTK_REAL JacPDupwindNthSymm3phi;
- CCTK_REAL JacPDupwindNthSymm3trK;
- CCTK_REAL JacPDupwindNthSymm3Xt1;
- CCTK_REAL JacPDupwindNthSymm3Xt2;
- CCTK_REAL JacPDupwindNthSymm3Xt3;
+ 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 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 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 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 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 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 JacPDupwindNthSymm3trK;
+ CCTK_REAL_VEC JacPDupwindNthSymm3Xt1;
+ CCTK_REAL_VEC JacPDupwindNthSymm3Xt2;
+ CCTK_REAL_VEC JacPDupwindNthSymm3Xt3;
if (use_jacobian)
{
- JacPDupwindNthAnti1A = J11L*PDupwindNthAnti1A + J21L*PDupwindNthAnti2A
- + J31L*PDupwindNthAnti3A;
+ JacPDupwindNthAnti1A =
+ kmadd(J11L,PDupwindNthAnti1A,kmadd(J21L,PDupwindNthAnti2A,kmul(J31L,PDupwindNthAnti3A)));
- JacPDupwindNthAnti1alpha = J11L*PDupwindNthAnti1alpha +
- J21L*PDupwindNthAnti2alpha + J31L*PDupwindNthAnti3alpha;
+ JacPDupwindNthAnti1alpha =
+ kmadd(J11L,PDupwindNthAnti1alpha,kmadd(J21L,PDupwindNthAnti2alpha,kmul(J31L,PDupwindNthAnti3alpha)));
- JacPDupwindNthAnti1At11 = J11L*PDupwindNthAnti1At11 +
- J21L*PDupwindNthAnti2At11 + J31L*PDupwindNthAnti3At11;
+ JacPDupwindNthAnti1At11 =
+ kmadd(J11L,PDupwindNthAnti1At11,kmadd(J21L,PDupwindNthAnti2At11,kmul(J31L,PDupwindNthAnti3At11)));
- JacPDupwindNthAnti1At12 = J11L*PDupwindNthAnti1At12 +
- J21L*PDupwindNthAnti2At12 + J31L*PDupwindNthAnti3At12;
+ JacPDupwindNthAnti1At12 =
+ kmadd(J11L,PDupwindNthAnti1At12,kmadd(J21L,PDupwindNthAnti2At12,kmul(J31L,PDupwindNthAnti3At12)));
- JacPDupwindNthAnti1At13 = J11L*PDupwindNthAnti1At13 +
- J21L*PDupwindNthAnti2At13 + J31L*PDupwindNthAnti3At13;
+ JacPDupwindNthAnti1At13 =
+ kmadd(J11L,PDupwindNthAnti1At13,kmadd(J21L,PDupwindNthAnti2At13,kmul(J31L,PDupwindNthAnti3At13)));
- JacPDupwindNthAnti1At22 = J11L*PDupwindNthAnti1At22 +
- J21L*PDupwindNthAnti2At22 + J31L*PDupwindNthAnti3At22;
+ JacPDupwindNthAnti1At22 =
+ kmadd(J11L,PDupwindNthAnti1At22,kmadd(J21L,PDupwindNthAnti2At22,kmul(J31L,PDupwindNthAnti3At22)));
- JacPDupwindNthAnti1At23 = J11L*PDupwindNthAnti1At23 +
- J21L*PDupwindNthAnti2At23 + J31L*PDupwindNthAnti3At23;
+ JacPDupwindNthAnti1At23 =
+ kmadd(J11L,PDupwindNthAnti1At23,kmadd(J21L,PDupwindNthAnti2At23,kmul(J31L,PDupwindNthAnti3At23)));
- JacPDupwindNthAnti1At33 = J11L*PDupwindNthAnti1At33 +
- J21L*PDupwindNthAnti2At33 + J31L*PDupwindNthAnti3At33;
+ JacPDupwindNthAnti1At33 =
+ kmadd(J11L,PDupwindNthAnti1At33,kmadd(J21L,PDupwindNthAnti2At33,kmul(J31L,PDupwindNthAnti3At33)));
- JacPDupwindNthAnti1B1 = J11L*PDupwindNthAnti1B1 +
- J21L*PDupwindNthAnti2B1 + J31L*PDupwindNthAnti3B1;
+ JacPDupwindNthAnti1B1 =
+ kmadd(J11L,PDupwindNthAnti1B1,kmadd(J21L,PDupwindNthAnti2B1,kmul(J31L,PDupwindNthAnti3B1)));
- JacPDupwindNthAnti1B2 = J11L*PDupwindNthAnti1B2 +
- J21L*PDupwindNthAnti2B2 + J31L*PDupwindNthAnti3B2;
+ JacPDupwindNthAnti1B2 =
+ kmadd(J11L,PDupwindNthAnti1B2,kmadd(J21L,PDupwindNthAnti2B2,kmul(J31L,PDupwindNthAnti3B2)));
- JacPDupwindNthAnti1B3 = J11L*PDupwindNthAnti1B3 +
- J21L*PDupwindNthAnti2B3 + J31L*PDupwindNthAnti3B3;
+ JacPDupwindNthAnti1B3 =
+ kmadd(J11L,PDupwindNthAnti1B3,kmadd(J21L,PDupwindNthAnti2B3,kmul(J31L,PDupwindNthAnti3B3)));
- JacPDupwindNthAnti1beta1 = J11L*PDupwindNthAnti1beta1 +
- J21L*PDupwindNthAnti2beta1 + J31L*PDupwindNthAnti3beta1;
+ JacPDupwindNthAnti1beta1 =
+ kmadd(J11L,PDupwindNthAnti1beta1,kmadd(J21L,PDupwindNthAnti2beta1,kmul(J31L,PDupwindNthAnti3beta1)));
- JacPDupwindNthAnti1beta2 = J11L*PDupwindNthAnti1beta2 +
- J21L*PDupwindNthAnti2beta2 + J31L*PDupwindNthAnti3beta2;
+ JacPDupwindNthAnti1beta2 =
+ kmadd(J11L,PDupwindNthAnti1beta2,kmadd(J21L,PDupwindNthAnti2beta2,kmul(J31L,PDupwindNthAnti3beta2)));
- JacPDupwindNthAnti1beta3 = J11L*PDupwindNthAnti1beta3 +
- J21L*PDupwindNthAnti2beta3 + J31L*PDupwindNthAnti3beta3;
+ JacPDupwindNthAnti1beta3 =
+ kmadd(J11L,PDupwindNthAnti1beta3,kmadd(J21L,PDupwindNthAnti2beta3,kmul(J31L,PDupwindNthAnti3beta3)));
- JacPDupwindNthAnti1gt11 = J11L*PDupwindNthAnti1gt11 +
- J21L*PDupwindNthAnti2gt11 + J31L*PDupwindNthAnti3gt11;
+ JacPDupwindNthAnti1gt11 =
+ kmadd(J11L,PDupwindNthAnti1gt11,kmadd(J21L,PDupwindNthAnti2gt11,kmul(J31L,PDupwindNthAnti3gt11)));
- JacPDupwindNthAnti1gt12 = J11L*PDupwindNthAnti1gt12 +
- J21L*PDupwindNthAnti2gt12 + J31L*PDupwindNthAnti3gt12;
+ JacPDupwindNthAnti1gt12 =
+ kmadd(J11L,PDupwindNthAnti1gt12,kmadd(J21L,PDupwindNthAnti2gt12,kmul(J31L,PDupwindNthAnti3gt12)));
- JacPDupwindNthAnti1gt13 = J11L*PDupwindNthAnti1gt13 +
- J21L*PDupwindNthAnti2gt13 + J31L*PDupwindNthAnti3gt13;
+ JacPDupwindNthAnti1gt13 =
+ kmadd(J11L,PDupwindNthAnti1gt13,kmadd(J21L,PDupwindNthAnti2gt13,kmul(J31L,PDupwindNthAnti3gt13)));
- JacPDupwindNthAnti1gt22 = J11L*PDupwindNthAnti1gt22 +
- J21L*PDupwindNthAnti2gt22 + J31L*PDupwindNthAnti3gt22;
+ JacPDupwindNthAnti1gt22 =
+ kmadd(J11L,PDupwindNthAnti1gt22,kmadd(J21L,PDupwindNthAnti2gt22,kmul(J31L,PDupwindNthAnti3gt22)));
- JacPDupwindNthAnti1gt23 = J11L*PDupwindNthAnti1gt23 +
- J21L*PDupwindNthAnti2gt23 + J31L*PDupwindNthAnti3gt23;
+ JacPDupwindNthAnti1gt23 =
+ kmadd(J11L,PDupwindNthAnti1gt23,kmadd(J21L,PDupwindNthAnti2gt23,kmul(J31L,PDupwindNthAnti3gt23)));
- JacPDupwindNthAnti1gt33 = J11L*PDupwindNthAnti1gt33 +
- J21L*PDupwindNthAnti2gt33 + J31L*PDupwindNthAnti3gt33;
+ JacPDupwindNthAnti1gt33 =
+ kmadd(J11L,PDupwindNthAnti1gt33,kmadd(J21L,PDupwindNthAnti2gt33,kmul(J31L,PDupwindNthAnti3gt33)));
- JacPDupwindNthAnti1phi = J11L*PDupwindNthAnti1phi +
- J21L*PDupwindNthAnti2phi + J31L*PDupwindNthAnti3phi;
+ JacPDupwindNthAnti1phi =
+ kmadd(J11L,PDupwindNthAnti1phi,kmadd(J21L,PDupwindNthAnti2phi,kmul(J31L,PDupwindNthAnti3phi)));
- JacPDupwindNthAnti1trK = J11L*PDupwindNthAnti1trK +
- J21L*PDupwindNthAnti2trK + J31L*PDupwindNthAnti3trK;
+ JacPDupwindNthAnti1trK =
+ kmadd(J11L,PDupwindNthAnti1trK,kmadd(J21L,PDupwindNthAnti2trK,kmul(J31L,PDupwindNthAnti3trK)));
- JacPDupwindNthAnti1Xt1 = J11L*PDupwindNthAnti1Xt1 +
- J21L*PDupwindNthAnti2Xt1 + J31L*PDupwindNthAnti3Xt1;
+ JacPDupwindNthAnti1Xt1 =
+ kmadd(J11L,PDupwindNthAnti1Xt1,kmadd(J21L,PDupwindNthAnti2Xt1,kmul(J31L,PDupwindNthAnti3Xt1)));
- JacPDupwindNthAnti1Xt2 = J11L*PDupwindNthAnti1Xt2 +
- J21L*PDupwindNthAnti2Xt2 + J31L*PDupwindNthAnti3Xt2;
+ JacPDupwindNthAnti1Xt2 =
+ kmadd(J11L,PDupwindNthAnti1Xt2,kmadd(J21L,PDupwindNthAnti2Xt2,kmul(J31L,PDupwindNthAnti3Xt2)));
- JacPDupwindNthAnti1Xt3 = J11L*PDupwindNthAnti1Xt3 +
- J21L*PDupwindNthAnti2Xt3 + J31L*PDupwindNthAnti3Xt3;
+ JacPDupwindNthAnti1Xt3 =
+ kmadd(J11L,PDupwindNthAnti1Xt3,kmadd(J21L,PDupwindNthAnti2Xt3,kmul(J31L,PDupwindNthAnti3Xt3)));
- JacPDupwindNthSymm1A = J11L*PDupwindNthSymm1A + J21L*PDupwindNthSymm2A
- + J31L*PDupwindNthSymm3A;
+ JacPDupwindNthSymm1A =
+ kmadd(J11L,PDupwindNthSymm1A,kmadd(J21L,PDupwindNthSymm2A,kmul(J31L,PDupwindNthSymm3A)));
- JacPDupwindNthSymm1alpha = J11L*PDupwindNthSymm1alpha +
- J21L*PDupwindNthSymm2alpha + J31L*PDupwindNthSymm3alpha;
+ JacPDupwindNthSymm1alpha =
+ kmadd(J11L,PDupwindNthSymm1alpha,kmadd(J21L,PDupwindNthSymm2alpha,kmul(J31L,PDupwindNthSymm3alpha)));
- JacPDupwindNthSymm1At11 = J11L*PDupwindNthSymm1At11 +
- J21L*PDupwindNthSymm2At11 + J31L*PDupwindNthSymm3At11;
+ JacPDupwindNthSymm1At11 =
+ kmadd(J11L,PDupwindNthSymm1At11,kmadd(J21L,PDupwindNthSymm2At11,kmul(J31L,PDupwindNthSymm3At11)));
- JacPDupwindNthSymm1At12 = J11L*PDupwindNthSymm1At12 +
- J21L*PDupwindNthSymm2At12 + J31L*PDupwindNthSymm3At12;
+ JacPDupwindNthSymm1At12 =
+ kmadd(J11L,PDupwindNthSymm1At12,kmadd(J21L,PDupwindNthSymm2At12,kmul(J31L,PDupwindNthSymm3At12)));
- JacPDupwindNthSymm1At13 = J11L*PDupwindNthSymm1At13 +
- J21L*PDupwindNthSymm2At13 + J31L*PDupwindNthSymm3At13;
+ JacPDupwindNthSymm1At13 =
+ kmadd(J11L,PDupwindNthSymm1At13,kmadd(J21L,PDupwindNthSymm2At13,kmul(J31L,PDupwindNthSymm3At13)));
- JacPDupwindNthSymm1At22 = J11L*PDupwindNthSymm1At22 +
- J21L*PDupwindNthSymm2At22 + J31L*PDupwindNthSymm3At22;
+ JacPDupwindNthSymm1At22 =
+ kmadd(J11L,PDupwindNthSymm1At22,kmadd(J21L,PDupwindNthSymm2At22,kmul(J31L,PDupwindNthSymm3At22)));
- JacPDupwindNthSymm1At23 = J11L*PDupwindNthSymm1At23 +
- J21L*PDupwindNthSymm2At23 + J31L*PDupwindNthSymm3At23;
+ JacPDupwindNthSymm1At23 =
+ kmadd(J11L,PDupwindNthSymm1At23,kmadd(J21L,PDupwindNthSymm2At23,kmul(J31L,PDupwindNthSymm3At23)));
- JacPDupwindNthSymm1At33 = J11L*PDupwindNthSymm1At33 +
- J21L*PDupwindNthSymm2At33 + J31L*PDupwindNthSymm3At33;
+ JacPDupwindNthSymm1At33 =
+ kmadd(J11L,PDupwindNthSymm1At33,kmadd(J21L,PDupwindNthSymm2At33,kmul(J31L,PDupwindNthSymm3At33)));
- JacPDupwindNthSymm1B1 = J11L*PDupwindNthSymm1B1 +
- J21L*PDupwindNthSymm2B1 + J31L*PDupwindNthSymm3B1;
+ JacPDupwindNthSymm1B1 =
+ kmadd(J11L,PDupwindNthSymm1B1,kmadd(J21L,PDupwindNthSymm2B1,kmul(J31L,PDupwindNthSymm3B1)));
- JacPDupwindNthSymm1B2 = J11L*PDupwindNthSymm1B2 +
- J21L*PDupwindNthSymm2B2 + J31L*PDupwindNthSymm3B2;
+ JacPDupwindNthSymm1B2 =
+ kmadd(J11L,PDupwindNthSymm1B2,kmadd(J21L,PDupwindNthSymm2B2,kmul(J31L,PDupwindNthSymm3B2)));
- JacPDupwindNthSymm1B3 = J11L*PDupwindNthSymm1B3 +
- J21L*PDupwindNthSymm2B3 + J31L*PDupwindNthSymm3B3;
+ JacPDupwindNthSymm1B3 =
+ kmadd(J11L,PDupwindNthSymm1B3,kmadd(J21L,PDupwindNthSymm2B3,kmul(J31L,PDupwindNthSymm3B3)));
- JacPDupwindNthSymm1beta1 = J11L*PDupwindNthSymm1beta1 +
- J21L*PDupwindNthSymm2beta1 + J31L*PDupwindNthSymm3beta1;
+ JacPDupwindNthSymm1beta1 =
+ kmadd(J11L,PDupwindNthSymm1beta1,kmadd(J21L,PDupwindNthSymm2beta1,kmul(J31L,PDupwindNthSymm3beta1)));
- JacPDupwindNthSymm1beta2 = J11L*PDupwindNthSymm1beta2 +
- J21L*PDupwindNthSymm2beta2 + J31L*PDupwindNthSymm3beta2;
+ JacPDupwindNthSymm1beta2 =
+ kmadd(J11L,PDupwindNthSymm1beta2,kmadd(J21L,PDupwindNthSymm2beta2,kmul(J31L,PDupwindNthSymm3beta2)));
- JacPDupwindNthSymm1beta3 = J11L*PDupwindNthSymm1beta3 +
- J21L*PDupwindNthSymm2beta3 + J31L*PDupwindNthSymm3beta3;
+ JacPDupwindNthSymm1beta3 =
+ kmadd(J11L,PDupwindNthSymm1beta3,kmadd(J21L,PDupwindNthSymm2beta3,kmul(J31L,PDupwindNthSymm3beta3)));
- JacPDupwindNthSymm1gt11 = J11L*PDupwindNthSymm1gt11 +
- J21L*PDupwindNthSymm2gt11 + J31L*PDupwindNthSymm3gt11;
+ JacPDupwindNthSymm1gt11 =
+ kmadd(J11L,PDupwindNthSymm1gt11,kmadd(J21L,PDupwindNthSymm2gt11,kmul(J31L,PDupwindNthSymm3gt11)));
- JacPDupwindNthSymm1gt12 = J11L*PDupwindNthSymm1gt12 +
- J21L*PDupwindNthSymm2gt12 + J31L*PDupwindNthSymm3gt12;
+ JacPDupwindNthSymm1gt12 =
+ kmadd(J11L,PDupwindNthSymm1gt12,kmadd(J21L,PDupwindNthSymm2gt12,kmul(J31L,PDupwindNthSymm3gt12)));
- JacPDupwindNthSymm1gt13 = J11L*PDupwindNthSymm1gt13 +
- J21L*PDupwindNthSymm2gt13 + J31L*PDupwindNthSymm3gt13;
+ JacPDupwindNthSymm1gt13 =
+ kmadd(J11L,PDupwindNthSymm1gt13,kmadd(J21L,PDupwindNthSymm2gt13,kmul(J31L,PDupwindNthSymm3gt13)));
- JacPDupwindNthSymm1gt22 = J11L*PDupwindNthSymm1gt22 +
- J21L*PDupwindNthSymm2gt22 + J31L*PDupwindNthSymm3gt22;
+ JacPDupwindNthSymm1gt22 =
+ kmadd(J11L,PDupwindNthSymm1gt22,kmadd(J21L,PDupwindNthSymm2gt22,kmul(J31L,PDupwindNthSymm3gt22)));
- JacPDupwindNthSymm1gt23 = J11L*PDupwindNthSymm1gt23 +
- J21L*PDupwindNthSymm2gt23 + J31L*PDupwindNthSymm3gt23;
+ JacPDupwindNthSymm1gt23 =
+ kmadd(J11L,PDupwindNthSymm1gt23,kmadd(J21L,PDupwindNthSymm2gt23,kmul(J31L,PDupwindNthSymm3gt23)));
- JacPDupwindNthSymm1gt33 = J11L*PDupwindNthSymm1gt33 +
- J21L*PDupwindNthSymm2gt33 + J31L*PDupwindNthSymm3gt33;
+ JacPDupwindNthSymm1gt33 =
+ kmadd(J11L,PDupwindNthSymm1gt33,kmadd(J21L,PDupwindNthSymm2gt33,kmul(J31L,PDupwindNthSymm3gt33)));
- JacPDupwindNthSymm1phi = J11L*PDupwindNthSymm1phi +
- J21L*PDupwindNthSymm2phi + J31L*PDupwindNthSymm3phi;
+ JacPDupwindNthSymm1phi =
+ kmadd(J11L,PDupwindNthSymm1phi,kmadd(J21L,PDupwindNthSymm2phi,kmul(J31L,PDupwindNthSymm3phi)));
- JacPDupwindNthSymm1trK = J11L*PDupwindNthSymm1trK +
- J21L*PDupwindNthSymm2trK + J31L*PDupwindNthSymm3trK;
+ JacPDupwindNthSymm1trK =
+ kmadd(J11L,PDupwindNthSymm1trK,kmadd(J21L,PDupwindNthSymm2trK,kmul(J31L,PDupwindNthSymm3trK)));
- JacPDupwindNthSymm1Xt1 = J11L*PDupwindNthSymm1Xt1 +
- J21L*PDupwindNthSymm2Xt1 + J31L*PDupwindNthSymm3Xt1;
+ JacPDupwindNthSymm1Xt1 =
+ kmadd(J11L,PDupwindNthSymm1Xt1,kmadd(J21L,PDupwindNthSymm2Xt1,kmul(J31L,PDupwindNthSymm3Xt1)));
- JacPDupwindNthSymm1Xt2 = J11L*PDupwindNthSymm1Xt2 +
- J21L*PDupwindNthSymm2Xt2 + J31L*PDupwindNthSymm3Xt2;
+ JacPDupwindNthSymm1Xt2 =
+ kmadd(J11L,PDupwindNthSymm1Xt2,kmadd(J21L,PDupwindNthSymm2Xt2,kmul(J31L,PDupwindNthSymm3Xt2)));
- JacPDupwindNthSymm1Xt3 = J11L*PDupwindNthSymm1Xt3 +
- J21L*PDupwindNthSymm2Xt3 + J31L*PDupwindNthSymm3Xt3;
+ JacPDupwindNthSymm1Xt3 =
+ kmadd(J11L,PDupwindNthSymm1Xt3,kmadd(J21L,PDupwindNthSymm2Xt3,kmul(J31L,PDupwindNthSymm3Xt3)));
- JacPDupwindNthAnti2A = J12L*PDupwindNthAnti1A + J22L*PDupwindNthAnti2A
- + J32L*PDupwindNthAnti3A;
+ JacPDupwindNthAnti2A =
+ kmadd(J12L,PDupwindNthAnti1A,kmadd(J22L,PDupwindNthAnti2A,kmul(J32L,PDupwindNthAnti3A)));
- JacPDupwindNthAnti2alpha = J12L*PDupwindNthAnti1alpha +
- J22L*PDupwindNthAnti2alpha + J32L*PDupwindNthAnti3alpha;
+ JacPDupwindNthAnti2alpha =
+ kmadd(J12L,PDupwindNthAnti1alpha,kmadd(J22L,PDupwindNthAnti2alpha,kmul(J32L,PDupwindNthAnti3alpha)));
- JacPDupwindNthAnti2At11 = J12L*PDupwindNthAnti1At11 +
- J22L*PDupwindNthAnti2At11 + J32L*PDupwindNthAnti3At11;
+ JacPDupwindNthAnti2At11 =
+ kmadd(J12L,PDupwindNthAnti1At11,kmadd(J22L,PDupwindNthAnti2At11,kmul(J32L,PDupwindNthAnti3At11)));
- JacPDupwindNthAnti2At12 = J12L*PDupwindNthAnti1At12 +
- J22L*PDupwindNthAnti2At12 + J32L*PDupwindNthAnti3At12;
+ JacPDupwindNthAnti2At12 =
+ kmadd(J12L,PDupwindNthAnti1At12,kmadd(J22L,PDupwindNthAnti2At12,kmul(J32L,PDupwindNthAnti3At12)));
- JacPDupwindNthAnti2At13 = J12L*PDupwindNthAnti1At13 +
- J22L*PDupwindNthAnti2At13 + J32L*PDupwindNthAnti3At13;
+ JacPDupwindNthAnti2At13 =
+ kmadd(J12L,PDupwindNthAnti1At13,kmadd(J22L,PDupwindNthAnti2At13,kmul(J32L,PDupwindNthAnti3At13)));
- JacPDupwindNthAnti2At22 = J12L*PDupwindNthAnti1At22 +
- J22L*PDupwindNthAnti2At22 + J32L*PDupwindNthAnti3At22;
+ JacPDupwindNthAnti2At22 =
+ kmadd(J12L,PDupwindNthAnti1At22,kmadd(J22L,PDupwindNthAnti2At22,kmul(J32L,PDupwindNthAnti3At22)));
- JacPDupwindNthAnti2At23 = J12L*PDupwindNthAnti1At23 +
- J22L*PDupwindNthAnti2At23 + J32L*PDupwindNthAnti3At23;
+ JacPDupwindNthAnti2At23 =
+ kmadd(J12L,PDupwindNthAnti1At23,kmadd(J22L,PDupwindNthAnti2At23,kmul(J32L,PDupwindNthAnti3At23)));
- JacPDupwindNthAnti2At33 = J12L*PDupwindNthAnti1At33 +
- J22L*PDupwindNthAnti2At33 + J32L*PDupwindNthAnti3At33;
+ JacPDupwindNthAnti2At33 =
+ kmadd(J12L,PDupwindNthAnti1At33,kmadd(J22L,PDupwindNthAnti2At33,kmul(J32L,PDupwindNthAnti3At33)));
- JacPDupwindNthAnti2B1 = J12L*PDupwindNthAnti1B1 +
- J22L*PDupwindNthAnti2B1 + J32L*PDupwindNthAnti3B1;
+ JacPDupwindNthAnti2B1 =
+ kmadd(J12L,PDupwindNthAnti1B1,kmadd(J22L,PDupwindNthAnti2B1,kmul(J32L,PDupwindNthAnti3B1)));
- JacPDupwindNthAnti2B2 = J12L*PDupwindNthAnti1B2 +
- J22L*PDupwindNthAnti2B2 + J32L*PDupwindNthAnti3B2;
+ JacPDupwindNthAnti2B2 =
+ kmadd(J12L,PDupwindNthAnti1B2,kmadd(J22L,PDupwindNthAnti2B2,kmul(J32L,PDupwindNthAnti3B2)));
- JacPDupwindNthAnti2B3 = J12L*PDupwindNthAnti1B3 +
- J22L*PDupwindNthAnti2B3 + J32L*PDupwindNthAnti3B3;
+ JacPDupwindNthAnti2B3 =
+ kmadd(J12L,PDupwindNthAnti1B3,kmadd(J22L,PDupwindNthAnti2B3,kmul(J32L,PDupwindNthAnti3B3)));
- JacPDupwindNthAnti2beta1 = J12L*PDupwindNthAnti1beta1 +
- J22L*PDupwindNthAnti2beta1 + J32L*PDupwindNthAnti3beta1;
+ JacPDupwindNthAnti2beta1 =
+ kmadd(J12L,PDupwindNthAnti1beta1,kmadd(J22L,PDupwindNthAnti2beta1,kmul(J32L,PDupwindNthAnti3beta1)));
- JacPDupwindNthAnti2beta2 = J12L*PDupwindNthAnti1beta2 +
- J22L*PDupwindNthAnti2beta2 + J32L*PDupwindNthAnti3beta2;
+ JacPDupwindNthAnti2beta2 =
+ kmadd(J12L,PDupwindNthAnti1beta2,kmadd(J22L,PDupwindNthAnti2beta2,kmul(J32L,PDupwindNthAnti3beta2)));
- JacPDupwindNthAnti2beta3 = J12L*PDupwindNthAnti1beta3 +
- J22L*PDupwindNthAnti2beta3 + J32L*PDupwindNthAnti3beta3;
+ JacPDupwindNthAnti2beta3 =
+ kmadd(J12L,PDupwindNthAnti1beta3,kmadd(J22L,PDupwindNthAnti2beta3,kmul(J32L,PDupwindNthAnti3beta3)));
- JacPDupwindNthAnti2gt11 = J12L*PDupwindNthAnti1gt11 +
- J22L*PDupwindNthAnti2gt11 + J32L*PDupwindNthAnti3gt11;
+ JacPDupwindNthAnti2gt11 =
+ kmadd(J12L,PDupwindNthAnti1gt11,kmadd(J22L,PDupwindNthAnti2gt11,kmul(J32L,PDupwindNthAnti3gt11)));
- JacPDupwindNthAnti2gt12 = J12L*PDupwindNthAnti1gt12 +
- J22L*PDupwindNthAnti2gt12 + J32L*PDupwindNthAnti3gt12;
+ JacPDupwindNthAnti2gt12 =
+ kmadd(J12L,PDupwindNthAnti1gt12,kmadd(J22L,PDupwindNthAnti2gt12,kmul(J32L,PDupwindNthAnti3gt12)));
- JacPDupwindNthAnti2gt13 = J12L*PDupwindNthAnti1gt13 +
- J22L*PDupwindNthAnti2gt13 + J32L*PDupwindNthAnti3gt13;
+ JacPDupwindNthAnti2gt13 =
+ kmadd(J12L,PDupwindNthAnti1gt13,kmadd(J22L,PDupwindNthAnti2gt13,kmul(J32L,PDupwindNthAnti3gt13)));
- JacPDupwindNthAnti2gt22 = J12L*PDupwindNthAnti1gt22 +
- J22L*PDupwindNthAnti2gt22 + J32L*PDupwindNthAnti3gt22;
+ JacPDupwindNthAnti2gt22 =
+ kmadd(J12L,PDupwindNthAnti1gt22,kmadd(J22L,PDupwindNthAnti2gt22,kmul(J32L,PDupwindNthAnti3gt22)));
- JacPDupwindNthAnti2gt23 = J12L*PDupwindNthAnti1gt23 +
- J22L*PDupwindNthAnti2gt23 + J32L*PDupwindNthAnti3gt23;
+ JacPDupwindNthAnti2gt23 =
+ kmadd(J12L,PDupwindNthAnti1gt23,kmadd(J22L,PDupwindNthAnti2gt23,kmul(J32L,PDupwindNthAnti3gt23)));
- JacPDupwindNthAnti2gt33 = J12L*PDupwindNthAnti1gt33 +
- J22L*PDupwindNthAnti2gt33 + J32L*PDupwindNthAnti3gt33;
+ JacPDupwindNthAnti2gt33 =
+ kmadd(J12L,PDupwindNthAnti1gt33,kmadd(J22L,PDupwindNthAnti2gt33,kmul(J32L,PDupwindNthAnti3gt33)));
- JacPDupwindNthAnti2phi = J12L*PDupwindNthAnti1phi +
- J22L*PDupwindNthAnti2phi + J32L*PDupwindNthAnti3phi;
+ JacPDupwindNthAnti2phi =
+ kmadd(J12L,PDupwindNthAnti1phi,kmadd(J22L,PDupwindNthAnti2phi,kmul(J32L,PDupwindNthAnti3phi)));
- JacPDupwindNthAnti2trK = J12L*PDupwindNthAnti1trK +
- J22L*PDupwindNthAnti2trK + J32L*PDupwindNthAnti3trK;
+ JacPDupwindNthAnti2trK =
+ kmadd(J12L,PDupwindNthAnti1trK,kmadd(J22L,PDupwindNthAnti2trK,kmul(J32L,PDupwindNthAnti3trK)));
- JacPDupwindNthAnti2Xt1 = J12L*PDupwindNthAnti1Xt1 +
- J22L*PDupwindNthAnti2Xt1 + J32L*PDupwindNthAnti3Xt1;
+ JacPDupwindNthAnti2Xt1 =
+ kmadd(J12L,PDupwindNthAnti1Xt1,kmadd(J22L,PDupwindNthAnti2Xt1,kmul(J32L,PDupwindNthAnti3Xt1)));
- JacPDupwindNthAnti2Xt2 = J12L*PDupwindNthAnti1Xt2 +
- J22L*PDupwindNthAnti2Xt2 + J32L*PDupwindNthAnti3Xt2;
+ JacPDupwindNthAnti2Xt2 =
+ kmadd(J12L,PDupwindNthAnti1Xt2,kmadd(J22L,PDupwindNthAnti2Xt2,kmul(J32L,PDupwindNthAnti3Xt2)));
- JacPDupwindNthAnti2Xt3 = J12L*PDupwindNthAnti1Xt3 +
- J22L*PDupwindNthAnti2Xt3 + J32L*PDupwindNthAnti3Xt3;
+ JacPDupwindNthAnti2Xt3 =
+ kmadd(J12L,PDupwindNthAnti1Xt3,kmadd(J22L,PDupwindNthAnti2Xt3,kmul(J32L,PDupwindNthAnti3Xt3)));
- JacPDupwindNthSymm2A = J12L*PDupwindNthSymm1A + J22L*PDupwindNthSymm2A
- + J32L*PDupwindNthSymm3A;
+ JacPDupwindNthSymm2A =
+ kmadd(J12L,PDupwindNthSymm1A,kmadd(J22L,PDupwindNthSymm2A,kmul(J32L,PDupwindNthSymm3A)));
- JacPDupwindNthSymm2alpha = J12L*PDupwindNthSymm1alpha +
- J22L*PDupwindNthSymm2alpha + J32L*PDupwindNthSymm3alpha;
+ JacPDupwindNthSymm2alpha =
+ kmadd(J12L,PDupwindNthSymm1alpha,kmadd(J22L,PDupwindNthSymm2alpha,kmul(J32L,PDupwindNthSymm3alpha)));
- JacPDupwindNthSymm2At11 = J12L*PDupwindNthSymm1At11 +
- J22L*PDupwindNthSymm2At11 + J32L*PDupwindNthSymm3At11;
+ JacPDupwindNthSymm2At11 =
+ kmadd(J12L,PDupwindNthSymm1At11,kmadd(J22L,PDupwindNthSymm2At11,kmul(J32L,PDupwindNthSymm3At11)));
- JacPDupwindNthSymm2At12 = J12L*PDupwindNthSymm1At12 +
- J22L*PDupwindNthSymm2At12 + J32L*PDupwindNthSymm3At12;
+ JacPDupwindNthSymm2At12 =
+ kmadd(J12L,PDupwindNthSymm1At12,kmadd(J22L,PDupwindNthSymm2At12,kmul(J32L,PDupwindNthSymm3At12)));
- JacPDupwindNthSymm2At13 = J12L*PDupwindNthSymm1At13 +
- J22L*PDupwindNthSymm2At13 + J32L*PDupwindNthSymm3At13;
+ JacPDupwindNthSymm2At13 =
+ kmadd(J12L,PDupwindNthSymm1At13,kmadd(J22L,PDupwindNthSymm2At13,kmul(J32L,PDupwindNthSymm3At13)));
- JacPDupwindNthSymm2At22 = J12L*PDupwindNthSymm1At22 +
- J22L*PDupwindNthSymm2At22 + J32L*PDupwindNthSymm3At22;
+ JacPDupwindNthSymm2At22 =
+ kmadd(J12L,PDupwindNthSymm1At22,kmadd(J22L,PDupwindNthSymm2At22,kmul(J32L,PDupwindNthSymm3At22)));
- JacPDupwindNthSymm2At23 = J12L*PDupwindNthSymm1At23 +
- J22L*PDupwindNthSymm2At23 + J32L*PDupwindNthSymm3At23;
+ JacPDupwindNthSymm2At23 =
+ kmadd(J12L,PDupwindNthSymm1At23,kmadd(J22L,PDupwindNthSymm2At23,kmul(J32L,PDupwindNthSymm3At23)));
- JacPDupwindNthSymm2At33 = J12L*PDupwindNthSymm1At33 +
- J22L*PDupwindNthSymm2At33 + J32L*PDupwindNthSymm3At33;
+ JacPDupwindNthSymm2At33 =
+ kmadd(J12L,PDupwindNthSymm1At33,kmadd(J22L,PDupwindNthSymm2At33,kmul(J32L,PDupwindNthSymm3At33)));
- JacPDupwindNthSymm2B1 = J12L*PDupwindNthSymm1B1 +
- J22L*PDupwindNthSymm2B1 + J32L*PDupwindNthSymm3B1;
+ JacPDupwindNthSymm2B1 =
+ kmadd(J12L,PDupwindNthSymm1B1,kmadd(J22L,PDupwindNthSymm2B1,kmul(J32L,PDupwindNthSymm3B1)));
- JacPDupwindNthSymm2B2 = J12L*PDupwindNthSymm1B2 +
- J22L*PDupwindNthSymm2B2 + J32L*PDupwindNthSymm3B2;
+ JacPDupwindNthSymm2B2 =
+ kmadd(J12L,PDupwindNthSymm1B2,kmadd(J22L,PDupwindNthSymm2B2,kmul(J32L,PDupwindNthSymm3B2)));
- JacPDupwindNthSymm2B3 = J12L*PDupwindNthSymm1B3 +
- J22L*PDupwindNthSymm2B3 + J32L*PDupwindNthSymm3B3;
+ JacPDupwindNthSymm2B3 =
+ kmadd(J12L,PDupwindNthSymm1B3,kmadd(J22L,PDupwindNthSymm2B3,kmul(J32L,PDupwindNthSymm3B3)));
- JacPDupwindNthSymm2beta1 = J12L*PDupwindNthSymm1beta1 +
- J22L*PDupwindNthSymm2beta1 + J32L*PDupwindNthSymm3beta1;
+ JacPDupwindNthSymm2beta1 =
+ kmadd(J12L,PDupwindNthSymm1beta1,kmadd(J22L,PDupwindNthSymm2beta1,kmul(J32L,PDupwindNthSymm3beta1)));
- JacPDupwindNthSymm2beta2 = J12L*PDupwindNthSymm1beta2 +
- J22L*PDupwindNthSymm2beta2 + J32L*PDupwindNthSymm3beta2;
+ JacPDupwindNthSymm2beta2 =
+ kmadd(J12L,PDupwindNthSymm1beta2,kmadd(J22L,PDupwindNthSymm2beta2,kmul(J32L,PDupwindNthSymm3beta2)));
- JacPDupwindNthSymm2beta3 = J12L*PDupwindNthSymm1beta3 +
- J22L*PDupwindNthSymm2beta3 + J32L*PDupwindNthSymm3beta3;
+ JacPDupwindNthSymm2beta3 =
+ kmadd(J12L,PDupwindNthSymm1beta3,kmadd(J22L,PDupwindNthSymm2beta3,kmul(J32L,PDupwindNthSymm3beta3)));
- JacPDupwindNthSymm2gt11 = J12L*PDupwindNthSymm1gt11 +
- J22L*PDupwindNthSymm2gt11 + J32L*PDupwindNthSymm3gt11;
+ JacPDupwindNthSymm2gt11 =
+ kmadd(J12L,PDupwindNthSymm1gt11,kmadd(J22L,PDupwindNthSymm2gt11,kmul(J32L,PDupwindNthSymm3gt11)));
- JacPDupwindNthSymm2gt12 = J12L*PDupwindNthSymm1gt12 +
- J22L*PDupwindNthSymm2gt12 + J32L*PDupwindNthSymm3gt12;
+ JacPDupwindNthSymm2gt12 =
+ kmadd(J12L,PDupwindNthSymm1gt12,kmadd(J22L,PDupwindNthSymm2gt12,kmul(J32L,PDupwindNthSymm3gt12)));
- JacPDupwindNthSymm2gt13 = J12L*PDupwindNthSymm1gt13 +
- J22L*PDupwindNthSymm2gt13 + J32L*PDupwindNthSymm3gt13;
+ JacPDupwindNthSymm2gt13 =
+ kmadd(J12L,PDupwindNthSymm1gt13,kmadd(J22L,PDupwindNthSymm2gt13,kmul(J32L,PDupwindNthSymm3gt13)));
- JacPDupwindNthSymm2gt22 = J12L*PDupwindNthSymm1gt22 +
- J22L*PDupwindNthSymm2gt22 + J32L*PDupwindNthSymm3gt22;
+ JacPDupwindNthSymm2gt22 =
+ kmadd(J12L,PDupwindNthSymm1gt22,kmadd(J22L,PDupwindNthSymm2gt22,kmul(J32L,PDupwindNthSymm3gt22)));
- JacPDupwindNthSymm2gt23 = J12L*PDupwindNthSymm1gt23 +
- J22L*PDupwindNthSymm2gt23 + J32L*PDupwindNthSymm3gt23;
+ JacPDupwindNthSymm2gt23 =
+ kmadd(J12L,PDupwindNthSymm1gt23,kmadd(J22L,PDupwindNthSymm2gt23,kmul(J32L,PDupwindNthSymm3gt23)));
- JacPDupwindNthSymm2gt33 = J12L*PDupwindNthSymm1gt33 +
- J22L*PDupwindNthSymm2gt33 + J32L*PDupwindNthSymm3gt33;
+ JacPDupwindNthSymm2gt33 =
+ kmadd(J12L,PDupwindNthSymm1gt33,kmadd(J22L,PDupwindNthSymm2gt33,kmul(J32L,PDupwindNthSymm3gt33)));
- JacPDupwindNthSymm2phi = J12L*PDupwindNthSymm1phi +
- J22L*PDupwindNthSymm2phi + J32L*PDupwindNthSymm3phi;
+ JacPDupwindNthSymm2phi =
+ kmadd(J12L,PDupwindNthSymm1phi,kmadd(J22L,PDupwindNthSymm2phi,kmul(J32L,PDupwindNthSymm3phi)));
- JacPDupwindNthSymm2trK = J12L*PDupwindNthSymm1trK +
- J22L*PDupwindNthSymm2trK + J32L*PDupwindNthSymm3trK;
+ JacPDupwindNthSymm2trK =
+ kmadd(J12L,PDupwindNthSymm1trK,kmadd(J22L,PDupwindNthSymm2trK,kmul(J32L,PDupwindNthSymm3trK)));
- JacPDupwindNthSymm2Xt1 = J12L*PDupwindNthSymm1Xt1 +
- J22L*PDupwindNthSymm2Xt1 + J32L*PDupwindNthSymm3Xt1;
+ JacPDupwindNthSymm2Xt1 =
+ kmadd(J12L,PDupwindNthSymm1Xt1,kmadd(J22L,PDupwindNthSymm2Xt1,kmul(J32L,PDupwindNthSymm3Xt1)));
- JacPDupwindNthSymm2Xt2 = J12L*PDupwindNthSymm1Xt2 +
- J22L*PDupwindNthSymm2Xt2 + J32L*PDupwindNthSymm3Xt2;
+ JacPDupwindNthSymm2Xt2 =
+ kmadd(J12L,PDupwindNthSymm1Xt2,kmadd(J22L,PDupwindNthSymm2Xt2,kmul(J32L,PDupwindNthSymm3Xt2)));
- JacPDupwindNthSymm2Xt3 = J12L*PDupwindNthSymm1Xt3 +
- J22L*PDupwindNthSymm2Xt3 + J32L*PDupwindNthSymm3Xt3;
+ JacPDupwindNthSymm2Xt3 =
+ kmadd(J12L,PDupwindNthSymm1Xt3,kmadd(J22L,PDupwindNthSymm2Xt3,kmul(J32L,PDupwindNthSymm3Xt3)));
- JacPDupwindNthAnti3A = J13L*PDupwindNthAnti1A + J23L*PDupwindNthAnti2A
- + J33L*PDupwindNthAnti3A;
+ JacPDupwindNthAnti3A =
+ kmadd(J13L,PDupwindNthAnti1A,kmadd(J23L,PDupwindNthAnti2A,kmul(J33L,PDupwindNthAnti3A)));
- JacPDupwindNthAnti3alpha = J13L*PDupwindNthAnti1alpha +
- J23L*PDupwindNthAnti2alpha + J33L*PDupwindNthAnti3alpha;
+ JacPDupwindNthAnti3alpha =
+ kmadd(J13L,PDupwindNthAnti1alpha,kmadd(J23L,PDupwindNthAnti2alpha,kmul(J33L,PDupwindNthAnti3alpha)));
- JacPDupwindNthAnti3At11 = J13L*PDupwindNthAnti1At11 +
- J23L*PDupwindNthAnti2At11 + J33L*PDupwindNthAnti3At11;
+ JacPDupwindNthAnti3At11 =
+ kmadd(J13L,PDupwindNthAnti1At11,kmadd(J23L,PDupwindNthAnti2At11,kmul(J33L,PDupwindNthAnti3At11)));
- JacPDupwindNthAnti3At12 = J13L*PDupwindNthAnti1At12 +
- J23L*PDupwindNthAnti2At12 + J33L*PDupwindNthAnti3At12;
+ JacPDupwindNthAnti3At12 =
+ kmadd(J13L,PDupwindNthAnti1At12,kmadd(J23L,PDupwindNthAnti2At12,kmul(J33L,PDupwindNthAnti3At12)));
- JacPDupwindNthAnti3At13 = J13L*PDupwindNthAnti1At13 +
- J23L*PDupwindNthAnti2At13 + J33L*PDupwindNthAnti3At13;
+ JacPDupwindNthAnti3At13 =
+ kmadd(J13L,PDupwindNthAnti1At13,kmadd(J23L,PDupwindNthAnti2At13,kmul(J33L,PDupwindNthAnti3At13)));
- JacPDupwindNthAnti3At22 = J13L*PDupwindNthAnti1At22 +
- J23L*PDupwindNthAnti2At22 + J33L*PDupwindNthAnti3At22;
+ JacPDupwindNthAnti3At22 =
+ kmadd(J13L,PDupwindNthAnti1At22,kmadd(J23L,PDupwindNthAnti2At22,kmul(J33L,PDupwindNthAnti3At22)));
- JacPDupwindNthAnti3At23 = J13L*PDupwindNthAnti1At23 +
- J23L*PDupwindNthAnti2At23 + J33L*PDupwindNthAnti3At23;
+ JacPDupwindNthAnti3At23 =
+ kmadd(J13L,PDupwindNthAnti1At23,kmadd(J23L,PDupwindNthAnti2At23,kmul(J33L,PDupwindNthAnti3At23)));
- JacPDupwindNthAnti3At33 = J13L*PDupwindNthAnti1At33 +
- J23L*PDupwindNthAnti2At33 + J33L*PDupwindNthAnti3At33;
+ JacPDupwindNthAnti3At33 =
+ kmadd(J13L,PDupwindNthAnti1At33,kmadd(J23L,PDupwindNthAnti2At33,kmul(J33L,PDupwindNthAnti3At33)));
- JacPDupwindNthAnti3B1 = J13L*PDupwindNthAnti1B1 +
- J23L*PDupwindNthAnti2B1 + J33L*PDupwindNthAnti3B1;
+ JacPDupwindNthAnti3B1 =
+ kmadd(J13L,PDupwindNthAnti1B1,kmadd(J23L,PDupwindNthAnti2B1,kmul(J33L,PDupwindNthAnti3B1)));
- JacPDupwindNthAnti3B2 = J13L*PDupwindNthAnti1B2 +
- J23L*PDupwindNthAnti2B2 + J33L*PDupwindNthAnti3B2;
+ JacPDupwindNthAnti3B2 =
+ kmadd(J13L,PDupwindNthAnti1B2,kmadd(J23L,PDupwindNthAnti2B2,kmul(J33L,PDupwindNthAnti3B2)));
- JacPDupwindNthAnti3B3 = J13L*PDupwindNthAnti1B3 +
- J23L*PDupwindNthAnti2B3 + J33L*PDupwindNthAnti3B3;
+ JacPDupwindNthAnti3B3 =
+ kmadd(J13L,PDupwindNthAnti1B3,kmadd(J23L,PDupwindNthAnti2B3,kmul(J33L,PDupwindNthAnti3B3)));
- JacPDupwindNthAnti3beta1 = J13L*PDupwindNthAnti1beta1 +
- J23L*PDupwindNthAnti2beta1 + J33L*PDupwindNthAnti3beta1;
+ JacPDupwindNthAnti3beta1 =
+ kmadd(J13L,PDupwindNthAnti1beta1,kmadd(J23L,PDupwindNthAnti2beta1,kmul(J33L,PDupwindNthAnti3beta1)));
- JacPDupwindNthAnti3beta2 = J13L*PDupwindNthAnti1beta2 +
- J23L*PDupwindNthAnti2beta2 + J33L*PDupwindNthAnti3beta2;
+ JacPDupwindNthAnti3beta2 =
+ kmadd(J13L,PDupwindNthAnti1beta2,kmadd(J23L,PDupwindNthAnti2beta2,kmul(J33L,PDupwindNthAnti3beta2)));
- JacPDupwindNthAnti3beta3 = J13L*PDupwindNthAnti1beta3 +
- J23L*PDupwindNthAnti2beta3 + J33L*PDupwindNthAnti3beta3;
+ JacPDupwindNthAnti3beta3 =
+ kmadd(J13L,PDupwindNthAnti1beta3,kmadd(J23L,PDupwindNthAnti2beta3,kmul(J33L,PDupwindNthAnti3beta3)));
- JacPDupwindNthAnti3gt11 = J13L*PDupwindNthAnti1gt11 +
- J23L*PDupwindNthAnti2gt11 + J33L*PDupwindNthAnti3gt11;
+ JacPDupwindNthAnti3gt11 =
+ kmadd(J13L,PDupwindNthAnti1gt11,kmadd(J23L,PDupwindNthAnti2gt11,kmul(J33L,PDupwindNthAnti3gt11)));
- JacPDupwindNthAnti3gt12 = J13L*PDupwindNthAnti1gt12 +
- J23L*PDupwindNthAnti2gt12 + J33L*PDupwindNthAnti3gt12;
+ JacPDupwindNthAnti3gt12 =
+ kmadd(J13L,PDupwindNthAnti1gt12,kmadd(J23L,PDupwindNthAnti2gt12,kmul(J33L,PDupwindNthAnti3gt12)));
- JacPDupwindNthAnti3gt13 = J13L*PDupwindNthAnti1gt13 +
- J23L*PDupwindNthAnti2gt13 + J33L*PDupwindNthAnti3gt13;
+ JacPDupwindNthAnti3gt13 =
+ kmadd(J13L,PDupwindNthAnti1gt13,kmadd(J23L,PDupwindNthAnti2gt13,kmul(J33L,PDupwindNthAnti3gt13)));
- JacPDupwindNthAnti3gt22 = J13L*PDupwindNthAnti1gt22 +
- J23L*PDupwindNthAnti2gt22 + J33L*PDupwindNthAnti3gt22;
+ JacPDupwindNthAnti3gt22 =
+ kmadd(J13L,PDupwindNthAnti1gt22,kmadd(J23L,PDupwindNthAnti2gt22,kmul(J33L,PDupwindNthAnti3gt22)));
- JacPDupwindNthAnti3gt23 = J13L*PDupwindNthAnti1gt23 +
- J23L*PDupwindNthAnti2gt23 + J33L*PDupwindNthAnti3gt23;
+ JacPDupwindNthAnti3gt23 =
+ kmadd(J13L,PDupwindNthAnti1gt23,kmadd(J23L,PDupwindNthAnti2gt23,kmul(J33L,PDupwindNthAnti3gt23)));
- JacPDupwindNthAnti3gt33 = J13L*PDupwindNthAnti1gt33 +
- J23L*PDupwindNthAnti2gt33 + J33L*PDupwindNthAnti3gt33;
+ JacPDupwindNthAnti3gt33 =
+ kmadd(J13L,PDupwindNthAnti1gt33,kmadd(J23L,PDupwindNthAnti2gt33,kmul(J33L,PDupwindNthAnti3gt33)));
- JacPDupwindNthAnti3phi = J13L*PDupwindNthAnti1phi +
- J23L*PDupwindNthAnti2phi + J33L*PDupwindNthAnti3phi;
+ JacPDupwindNthAnti3phi =
+ kmadd(J13L,PDupwindNthAnti1phi,kmadd(J23L,PDupwindNthAnti2phi,kmul(J33L,PDupwindNthAnti3phi)));
- JacPDupwindNthAnti3trK = J13L*PDupwindNthAnti1trK +
- J23L*PDupwindNthAnti2trK + J33L*PDupwindNthAnti3trK;
+ JacPDupwindNthAnti3trK =
+ kmadd(J13L,PDupwindNthAnti1trK,kmadd(J23L,PDupwindNthAnti2trK,kmul(J33L,PDupwindNthAnti3trK)));
- JacPDupwindNthAnti3Xt1 = J13L*PDupwindNthAnti1Xt1 +
- J23L*PDupwindNthAnti2Xt1 + J33L*PDupwindNthAnti3Xt1;
+ JacPDupwindNthAnti3Xt1 =
+ kmadd(J13L,PDupwindNthAnti1Xt1,kmadd(J23L,PDupwindNthAnti2Xt1,kmul(J33L,PDupwindNthAnti3Xt1)));
- JacPDupwindNthAnti3Xt2 = J13L*PDupwindNthAnti1Xt2 +
- J23L*PDupwindNthAnti2Xt2 + J33L*PDupwindNthAnti3Xt2;
+ JacPDupwindNthAnti3Xt2 =
+ kmadd(J13L,PDupwindNthAnti1Xt2,kmadd(J23L,PDupwindNthAnti2Xt2,kmul(J33L,PDupwindNthAnti3Xt2)));
- JacPDupwindNthAnti3Xt3 = J13L*PDupwindNthAnti1Xt3 +
- J23L*PDupwindNthAnti2Xt3 + J33L*PDupwindNthAnti3Xt3;
+ JacPDupwindNthAnti3Xt3 =
+ kmadd(J13L,PDupwindNthAnti1Xt3,kmadd(J23L,PDupwindNthAnti2Xt3,kmul(J33L,PDupwindNthAnti3Xt3)));
- JacPDupwindNthSymm3A = J13L*PDupwindNthSymm1A + J23L*PDupwindNthSymm2A
- + J33L*PDupwindNthSymm3A;
+ JacPDupwindNthSymm3A =
+ kmadd(J13L,PDupwindNthSymm1A,kmadd(J23L,PDupwindNthSymm2A,kmul(J33L,PDupwindNthSymm3A)));
- JacPDupwindNthSymm3alpha = J13L*PDupwindNthSymm1alpha +
- J23L*PDupwindNthSymm2alpha + J33L*PDupwindNthSymm3alpha;
+ JacPDupwindNthSymm3alpha =
+ kmadd(J13L,PDupwindNthSymm1alpha,kmadd(J23L,PDupwindNthSymm2alpha,kmul(J33L,PDupwindNthSymm3alpha)));
- JacPDupwindNthSymm3At11 = J13L*PDupwindNthSymm1At11 +
- J23L*PDupwindNthSymm2At11 + J33L*PDupwindNthSymm3At11;
+ JacPDupwindNthSymm3At11 =
+ kmadd(J13L,PDupwindNthSymm1At11,kmadd(J23L,PDupwindNthSymm2At11,kmul(J33L,PDupwindNthSymm3At11)));
- JacPDupwindNthSymm3At12 = J13L*PDupwindNthSymm1At12 +
- J23L*PDupwindNthSymm2At12 + J33L*PDupwindNthSymm3At12;
+ JacPDupwindNthSymm3At12 =
+ kmadd(J13L,PDupwindNthSymm1At12,kmadd(J23L,PDupwindNthSymm2At12,kmul(J33L,PDupwindNthSymm3At12)));
- JacPDupwindNthSymm3At13 = J13L*PDupwindNthSymm1At13 +
- J23L*PDupwindNthSymm2At13 + J33L*PDupwindNthSymm3At13;
+ JacPDupwindNthSymm3At13 =
+ kmadd(J13L,PDupwindNthSymm1At13,kmadd(J23L,PDupwindNthSymm2At13,kmul(J33L,PDupwindNthSymm3At13)));
- JacPDupwindNthSymm3At22 = J13L*PDupwindNthSymm1At22 +
- J23L*PDupwindNthSymm2At22 + J33L*PDupwindNthSymm3At22;
+ JacPDupwindNthSymm3At22 =
+ kmadd(J13L,PDupwindNthSymm1At22,kmadd(J23L,PDupwindNthSymm2At22,kmul(J33L,PDupwindNthSymm3At22)));
- JacPDupwindNthSymm3At23 = J13L*PDupwindNthSymm1At23 +
- J23L*PDupwindNthSymm2At23 + J33L*PDupwindNthSymm3At23;
+ JacPDupwindNthSymm3At23 =
+ kmadd(J13L,PDupwindNthSymm1At23,kmadd(J23L,PDupwindNthSymm2At23,kmul(J33L,PDupwindNthSymm3At23)));
- JacPDupwindNthSymm3At33 = J13L*PDupwindNthSymm1At33 +
- J23L*PDupwindNthSymm2At33 + J33L*PDupwindNthSymm3At33;
+ JacPDupwindNthSymm3At33 =
+ kmadd(J13L,PDupwindNthSymm1At33,kmadd(J23L,PDupwindNthSymm2At33,kmul(J33L,PDupwindNthSymm3At33)));
- JacPDupwindNthSymm3B1 = J13L*PDupwindNthSymm1B1 +
- J23L*PDupwindNthSymm2B1 + J33L*PDupwindNthSymm3B1;
+ JacPDupwindNthSymm3B1 =
+ kmadd(J13L,PDupwindNthSymm1B1,kmadd(J23L,PDupwindNthSymm2B1,kmul(J33L,PDupwindNthSymm3B1)));
- JacPDupwindNthSymm3B2 = J13L*PDupwindNthSymm1B2 +
- J23L*PDupwindNthSymm2B2 + J33L*PDupwindNthSymm3B2;
+ JacPDupwindNthSymm3B2 =
+ kmadd(J13L,PDupwindNthSymm1B2,kmadd(J23L,PDupwindNthSymm2B2,kmul(J33L,PDupwindNthSymm3B2)));
- JacPDupwindNthSymm3B3 = J13L*PDupwindNthSymm1B3 +
- J23L*PDupwindNthSymm2B3 + J33L*PDupwindNthSymm3B3;
+ JacPDupwindNthSymm3B3 =
+ kmadd(J13L,PDupwindNthSymm1B3,kmadd(J23L,PDupwindNthSymm2B3,kmul(J33L,PDupwindNthSymm3B3)));
- JacPDupwindNthSymm3beta1 = J13L*PDupwindNthSymm1beta1 +
- J23L*PDupwindNthSymm2beta1 + J33L*PDupwindNthSymm3beta1;
+ JacPDupwindNthSymm3beta1 =
+ kmadd(J13L,PDupwindNthSymm1beta1,kmadd(J23L,PDupwindNthSymm2beta1,kmul(J33L,PDupwindNthSymm3beta1)));
- JacPDupwindNthSymm3beta2 = J13L*PDupwindNthSymm1beta2 +
- J23L*PDupwindNthSymm2beta2 + J33L*PDupwindNthSymm3beta2;
+ JacPDupwindNthSymm3beta2 =
+ kmadd(J13L,PDupwindNthSymm1beta2,kmadd(J23L,PDupwindNthSymm2beta2,kmul(J33L,PDupwindNthSymm3beta2)));
- JacPDupwindNthSymm3beta3 = J13L*PDupwindNthSymm1beta3 +
- J23L*PDupwindNthSymm2beta3 + J33L*PDupwindNthSymm3beta3;
+ JacPDupwindNthSymm3beta3 =
+ kmadd(J13L,PDupwindNthSymm1beta3,kmadd(J23L,PDupwindNthSymm2beta3,kmul(J33L,PDupwindNthSymm3beta3)));
- JacPDupwindNthSymm3gt11 = J13L*PDupwindNthSymm1gt11 +
- J23L*PDupwindNthSymm2gt11 + J33L*PDupwindNthSymm3gt11;
+ JacPDupwindNthSymm3gt11 =
+ kmadd(J13L,PDupwindNthSymm1gt11,kmadd(J23L,PDupwindNthSymm2gt11,kmul(J33L,PDupwindNthSymm3gt11)));
- JacPDupwindNthSymm3gt12 = J13L*PDupwindNthSymm1gt12 +
- J23L*PDupwindNthSymm2gt12 + J33L*PDupwindNthSymm3gt12;
+ JacPDupwindNthSymm3gt12 =
+ kmadd(J13L,PDupwindNthSymm1gt12,kmadd(J23L,PDupwindNthSymm2gt12,kmul(J33L,PDupwindNthSymm3gt12)));
- JacPDupwindNthSymm3gt13 = J13L*PDupwindNthSymm1gt13 +
- J23L*PDupwindNthSymm2gt13 + J33L*PDupwindNthSymm3gt13;
+ JacPDupwindNthSymm3gt13 =
+ kmadd(J13L,PDupwindNthSymm1gt13,kmadd(J23L,PDupwindNthSymm2gt13,kmul(J33L,PDupwindNthSymm3gt13)));
- JacPDupwindNthSymm3gt22 = J13L*PDupwindNthSymm1gt22 +
- J23L*PDupwindNthSymm2gt22 + J33L*PDupwindNthSymm3gt22;
+ JacPDupwindNthSymm3gt22 =
+ kmadd(J13L,PDupwindNthSymm1gt22,kmadd(J23L,PDupwindNthSymm2gt22,kmul(J33L,PDupwindNthSymm3gt22)));
- JacPDupwindNthSymm3gt23 = J13L*PDupwindNthSymm1gt23 +
- J23L*PDupwindNthSymm2gt23 + J33L*PDupwindNthSymm3gt23;
+ JacPDupwindNthSymm3gt23 =
+ kmadd(J13L,PDupwindNthSymm1gt23,kmadd(J23L,PDupwindNthSymm2gt23,kmul(J33L,PDupwindNthSymm3gt23)));
- JacPDupwindNthSymm3gt33 = J13L*PDupwindNthSymm1gt33 +
- J23L*PDupwindNthSymm2gt33 + J33L*PDupwindNthSymm3gt33;
+ JacPDupwindNthSymm3gt33 =
+ kmadd(J13L,PDupwindNthSymm1gt33,kmadd(J23L,PDupwindNthSymm2gt33,kmul(J33L,PDupwindNthSymm3gt33)));
- JacPDupwindNthSymm3phi = J13L*PDupwindNthSymm1phi +
- J23L*PDupwindNthSymm2phi + J33L*PDupwindNthSymm3phi;
+ JacPDupwindNthSymm3phi =
+ kmadd(J13L,PDupwindNthSymm1phi,kmadd(J23L,PDupwindNthSymm2phi,kmul(J33L,PDupwindNthSymm3phi)));
- JacPDupwindNthSymm3trK = J13L*PDupwindNthSymm1trK +
- J23L*PDupwindNthSymm2trK + J33L*PDupwindNthSymm3trK;
+ JacPDupwindNthSymm3trK =
+ kmadd(J13L,PDupwindNthSymm1trK,kmadd(J23L,PDupwindNthSymm2trK,kmul(J33L,PDupwindNthSymm3trK)));
- JacPDupwindNthSymm3Xt1 = J13L*PDupwindNthSymm1Xt1 +
- J23L*PDupwindNthSymm2Xt1 + J33L*PDupwindNthSymm3Xt1;
+ JacPDupwindNthSymm3Xt1 =
+ kmadd(J13L,PDupwindNthSymm1Xt1,kmadd(J23L,PDupwindNthSymm2Xt1,kmul(J33L,PDupwindNthSymm3Xt1)));
- JacPDupwindNthSymm3Xt2 = J13L*PDupwindNthSymm1Xt2 +
- J23L*PDupwindNthSymm2Xt2 + J33L*PDupwindNthSymm3Xt2;
+ JacPDupwindNthSymm3Xt2 =
+ kmadd(J13L,PDupwindNthSymm1Xt2,kmadd(J23L,PDupwindNthSymm2Xt2,kmul(J33L,PDupwindNthSymm3Xt2)));
- JacPDupwindNthSymm3Xt3 = J13L*PDupwindNthSymm1Xt3 +
- J23L*PDupwindNthSymm2Xt3 + J33L*PDupwindNthSymm3Xt3;
+ JacPDupwindNthSymm3Xt3 =
+ kmadd(J13L,PDupwindNthSymm1Xt3,kmadd(J23L,PDupwindNthSymm2Xt3,kmul(J33L,PDupwindNthSymm3Xt3)));
}
else
{
@@ -1308,207 +1985,207 @@ static void ML_BSSN_MP_Advect_Body(cGH const * restrict const cctkGH, int const
JacPDupwindNthSymm3Xt3 = PDupwindNthSymm3Xt3;
}
- ptrdiff_t dir1 = Sign(beta1L);
+ phirhsL =
+ kmadd(beta1L,JacPDupwindNthAnti1phi,kmadd(beta2L,JacPDupwindNthAnti2phi,kmadd(beta3L,JacPDupwindNthAnti3phi,kadd(phirhsL,kmadd(JacPDupwindNthSymm1phi,kfabs(beta1L),kmadd(JacPDupwindNthSymm2phi,kfabs(beta2L),kmul(JacPDupwindNthSymm3phi,kfabs(beta3L))))))));
- ptrdiff_t dir2 = Sign(beta2L);
+ gt11rhsL =
+ kadd(gt11rhsL,kmadd(beta1L,JacPDupwindNthAnti1gt11,kmadd(beta2L,JacPDupwindNthAnti2gt11,kmadd(beta3L,JacPDupwindNthAnti3gt11,kmadd(JacPDupwindNthSymm1gt11,kfabs(beta1L),kmadd(JacPDupwindNthSymm2gt11,kfabs(beta2L),kmul(JacPDupwindNthSymm3gt11,kfabs(beta3L))))))));
- ptrdiff_t dir3 = Sign(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))))))));
- phirhsL = beta1L*JacPDupwindNthAnti1phi +
- beta2L*JacPDupwindNthAnti2phi + beta3L*JacPDupwindNthAnti3phi + phirhsL
- + JacPDupwindNthSymm1phi*Abs(beta1L) +
- JacPDupwindNthSymm2phi*Abs(beta2L) +
- JacPDupwindNthSymm3phi*Abs(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))))))));
- gt11rhsL = gt11rhsL + beta1L*JacPDupwindNthAnti1gt11 +
- beta2L*JacPDupwindNthAnti2gt11 + beta3L*JacPDupwindNthAnti3gt11 +
- JacPDupwindNthSymm1gt11*Abs(beta1L) +
- JacPDupwindNthSymm2gt11*Abs(beta2L) +
- JacPDupwindNthSymm3gt11*Abs(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))))))));
- gt12rhsL = gt12rhsL + beta1L*JacPDupwindNthAnti1gt12 +
- beta2L*JacPDupwindNthAnti2gt12 + beta3L*JacPDupwindNthAnti3gt12 +
- JacPDupwindNthSymm1gt12*Abs(beta1L) +
- JacPDupwindNthSymm2gt12*Abs(beta2L) +
- JacPDupwindNthSymm3gt12*Abs(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))))))));
- gt13rhsL = gt13rhsL + beta1L*JacPDupwindNthAnti1gt13 +
- beta2L*JacPDupwindNthAnti2gt13 + beta3L*JacPDupwindNthAnti3gt13 +
- JacPDupwindNthSymm1gt13*Abs(beta1L) +
- JacPDupwindNthSymm2gt13*Abs(beta2L) +
- JacPDupwindNthSymm3gt13*Abs(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))))))));
- gt22rhsL = gt22rhsL + beta1L*JacPDupwindNthAnti1gt22 +
- beta2L*JacPDupwindNthAnti2gt22 + beta3L*JacPDupwindNthAnti3gt22 +
- JacPDupwindNthSymm1gt22*Abs(beta1L) +
- JacPDupwindNthSymm2gt22*Abs(beta2L) +
- JacPDupwindNthSymm3gt22*Abs(beta3L);
+ Xt1rhsL =
+ kmadd(beta1L,JacPDupwindNthAnti1Xt1,kmadd(beta2L,JacPDupwindNthAnti2Xt1,kmadd(beta3L,JacPDupwindNthAnti3Xt1,kadd(Xt1rhsL,kmadd(JacPDupwindNthSymm1Xt1,kfabs(beta1L),kmadd(JacPDupwindNthSymm2Xt1,kfabs(beta2L),kmul(JacPDupwindNthSymm3Xt1,kfabs(beta3L))))))));
- gt23rhsL = gt23rhsL + beta1L*JacPDupwindNthAnti1gt23 +
- beta2L*JacPDupwindNthAnti2gt23 + beta3L*JacPDupwindNthAnti3gt23 +
- JacPDupwindNthSymm1gt23*Abs(beta1L) +
- JacPDupwindNthSymm2gt23*Abs(beta2L) +
- JacPDupwindNthSymm3gt23*Abs(beta3L);
+ Xt2rhsL =
+ kmadd(beta1L,JacPDupwindNthAnti1Xt2,kmadd(beta2L,JacPDupwindNthAnti2Xt2,kmadd(beta3L,JacPDupwindNthAnti3Xt2,kadd(Xt2rhsL,kmadd(JacPDupwindNthSymm1Xt2,kfabs(beta1L),kmadd(JacPDupwindNthSymm2Xt2,kfabs(beta2L),kmul(JacPDupwindNthSymm3Xt2,kfabs(beta3L))))))));
- gt33rhsL = gt33rhsL + beta1L*JacPDupwindNthAnti1gt33 +
- beta2L*JacPDupwindNthAnti2gt33 + beta3L*JacPDupwindNthAnti3gt33 +
- JacPDupwindNthSymm1gt33*Abs(beta1L) +
- JacPDupwindNthSymm2gt33*Abs(beta2L) +
- JacPDupwindNthSymm3gt33*Abs(beta3L);
+ Xt3rhsL =
+ kmadd(beta1L,JacPDupwindNthAnti1Xt3,kmadd(beta2L,JacPDupwindNthAnti2Xt3,kmadd(beta3L,JacPDupwindNthAnti3Xt3,kadd(Xt3rhsL,kmadd(JacPDupwindNthSymm1Xt3,kfabs(beta1L),kmadd(JacPDupwindNthSymm2Xt3,kfabs(beta2L),kmul(JacPDupwindNthSymm3Xt3,kfabs(beta3L))))))));
- Xt1rhsL = beta1L*JacPDupwindNthAnti1Xt1 +
- beta2L*JacPDupwindNthAnti2Xt1 + beta3L*JacPDupwindNthAnti3Xt1 + Xt1rhsL
- + JacPDupwindNthSymm1Xt1*Abs(beta1L) +
- JacPDupwindNthSymm2Xt1*Abs(beta2L) +
- JacPDupwindNthSymm3Xt1*Abs(beta3L);
+ trKrhsL =
+ kmadd(beta1L,JacPDupwindNthAnti1trK,kmadd(beta2L,JacPDupwindNthAnti2trK,kmadd(beta3L,JacPDupwindNthAnti3trK,kadd(trKrhsL,kmadd(JacPDupwindNthSymm1trK,kfabs(beta1L),kmadd(JacPDupwindNthSymm2trK,kfabs(beta2L),kmul(JacPDupwindNthSymm3trK,kfabs(beta3L))))))));
- Xt2rhsL = beta1L*JacPDupwindNthAnti1Xt2 +
- beta2L*JacPDupwindNthAnti2Xt2 + beta3L*JacPDupwindNthAnti3Xt2 + Xt2rhsL
- + JacPDupwindNthSymm1Xt2*Abs(beta1L) +
- JacPDupwindNthSymm2Xt2*Abs(beta2L) +
- JacPDupwindNthSymm3Xt2*Abs(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))))))));
- Xt3rhsL = beta1L*JacPDupwindNthAnti1Xt3 +
- beta2L*JacPDupwindNthAnti2Xt3 + beta3L*JacPDupwindNthAnti3Xt3 + Xt3rhsL
- + JacPDupwindNthSymm1Xt3*Abs(beta1L) +
- JacPDupwindNthSymm2Xt3*Abs(beta2L) +
- JacPDupwindNthSymm3Xt3*Abs(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))))))));
- trKrhsL = beta1L*JacPDupwindNthAnti1trK +
- beta2L*JacPDupwindNthAnti2trK + beta3L*JacPDupwindNthAnti3trK + trKrhsL
- + JacPDupwindNthSymm1trK*Abs(beta1L) +
- JacPDupwindNthSymm2trK*Abs(beta2L) +
- JacPDupwindNthSymm3trK*Abs(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))))))));
- At11rhsL = At11rhsL + beta1L*JacPDupwindNthAnti1At11 +
- beta2L*JacPDupwindNthAnti2At11 + beta3L*JacPDupwindNthAnti3At11 +
- JacPDupwindNthSymm1At11*Abs(beta1L) +
- JacPDupwindNthSymm2At11*Abs(beta2L) +
- JacPDupwindNthSymm3At11*Abs(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))))))));
- At12rhsL = At12rhsL + beta1L*JacPDupwindNthAnti1At12 +
- beta2L*JacPDupwindNthAnti2At12 + beta3L*JacPDupwindNthAnti3At12 +
- JacPDupwindNthSymm1At12*Abs(beta1L) +
- JacPDupwindNthSymm2At12*Abs(beta2L) +
- JacPDupwindNthSymm3At12*Abs(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))))))));
- At13rhsL = At13rhsL + beta1L*JacPDupwindNthAnti1At13 +
- beta2L*JacPDupwindNthAnti2At13 + beta3L*JacPDupwindNthAnti3At13 +
- JacPDupwindNthSymm1At13*Abs(beta1L) +
- JacPDupwindNthSymm2At13*Abs(beta2L) +
- JacPDupwindNthSymm3At13*Abs(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))))))));
- At22rhsL = At22rhsL + beta1L*JacPDupwindNthAnti1At22 +
- beta2L*JacPDupwindNthAnti2At22 + beta3L*JacPDupwindNthAnti3At22 +
- JacPDupwindNthSymm1At22*Abs(beta1L) +
- JacPDupwindNthSymm2At22*Abs(beta2L) +
- JacPDupwindNthSymm3At22*Abs(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);
- At23rhsL = At23rhsL + beta1L*JacPDupwindNthAnti1At23 +
- beta2L*JacPDupwindNthAnti2At23 + beta3L*JacPDupwindNthAnti3At23 +
- JacPDupwindNthSymm1At23*Abs(beta1L) +
- JacPDupwindNthSymm2At23*Abs(beta2L) +
- JacPDupwindNthSymm3At23*Abs(beta3L);
+ ArhsL =
+ kmadd(kmadd(beta1L,JacPDupwindNthAnti1A,kmadd(beta2L,JacPDupwindNthAnti2A,kmadd(beta3L,JacPDupwindNthAnti3A,kmadd(JacPDupwindNthSymm1A,kfabs(beta1L),kmadd(JacPDupwindNthSymm2A,kfabs(beta2L),kmul(JacPDupwindNthSymm3A,kfabs(beta3L))))))),ToReal(LapseAdvectionCoeff),ArhsL);
- At33rhsL = At33rhsL + beta1L*JacPDupwindNthAnti1At33 +
- beta2L*JacPDupwindNthAnti2At33 + beta3L*JacPDupwindNthAnti3At33 +
- JacPDupwindNthSymm1At33*Abs(beta1L) +
- JacPDupwindNthSymm2At33*Abs(beta2L) +
- JacPDupwindNthSymm3At33*Abs(beta3L);
+ 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);
- alpharhsL = alpharhsL + (beta1L*JacPDupwindNthAnti1alpha +
- beta2L*JacPDupwindNthAnti2alpha + beta3L*JacPDupwindNthAnti3alpha +
- JacPDupwindNthSymm1alpha*Abs(beta1L) +
- JacPDupwindNthSymm2alpha*Abs(beta2L) +
- JacPDupwindNthSymm3alpha*Abs(beta3L))*ToReal(LapseAdvectionCoeff);
+ 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);
- ArhsL = ArhsL + (beta1L*JacPDupwindNthAnti1A +
- beta2L*JacPDupwindNthAnti2A + beta3L*JacPDupwindNthAnti3A +
- JacPDupwindNthSymm1A*Abs(beta1L) + JacPDupwindNthSymm2A*Abs(beta2L) +
- JacPDupwindNthSymm3A*Abs(beta3L))*ToReal(LapseAdvectionCoeff);
+ 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);
- beta1rhsL = beta1rhsL + (beta1L*JacPDupwindNthAnti1beta1 +
- beta2L*JacPDupwindNthAnti2beta1 + beta3L*JacPDupwindNthAnti3beta1 +
- JacPDupwindNthSymm1beta1*Abs(beta1L) +
- JacPDupwindNthSymm2beta1*Abs(beta2L) +
- JacPDupwindNthSymm3beta1*Abs(beta3L))*ToReal(ShiftAdvectionCoeff);
+ B1rhsL =
+ kadd(B1rhsL,kmadd(kmadd(beta1L,ksub(JacPDupwindNthAnti1B1,JacPDupwindNthAnti1Xt1),kmadd(beta2L,ksub(JacPDupwindNthAnti2B1,JacPDupwindNthAnti2Xt1),kmadd(beta3L,ksub(JacPDupwindNthAnti3B1,JacPDupwindNthAnti3Xt1),kmadd(kfabs(beta1L),ksub(JacPDupwindNthSymm1B1,JacPDupwindNthSymm1Xt1),kmadd(kfabs(beta2L),ksub(JacPDupwindNthSymm2B1,JacPDupwindNthSymm2Xt1),kmul(kfabs(beta3L),ksub(JacPDupwindNthSymm3B1,JacPDupwindNthSymm3Xt1))))))),ToReal(ShiftAdvectionCoeff),kmul(kmadd(beta1L,JacPDupwindNthAnti1Xt1,kmadd(beta2L,JacPDupwindNthAnti2Xt1,kmadd(beta3L,JacPDupwindNthAnti3Xt1,kmadd(JacPDupwindNthSymm1Xt1,kfabs(beta1L),kmadd(JacPDupwindNthSymm2Xt1,kfabs(beta2L),kmul(JacPDupwindNthSymm3Xt1,kfabs(beta3L))))))),ToReal(ShiftBCoeff))));
- beta2rhsL = beta2rhsL + (beta1L*JacPDupwindNthAnti1beta2 +
- beta2L*JacPDupwindNthAnti2beta2 + beta3L*JacPDupwindNthAnti3beta2 +
- JacPDupwindNthSymm1beta2*Abs(beta1L) +
- JacPDupwindNthSymm2beta2*Abs(beta2L) +
- JacPDupwindNthSymm3beta2*Abs(beta3L))*ToReal(ShiftAdvectionCoeff);
+ B2rhsL =
+ kadd(B2rhsL,kmadd(kmadd(beta1L,ksub(JacPDupwindNthAnti1B2,JacPDupwindNthAnti1Xt2),kmadd(beta2L,ksub(JacPDupwindNthAnti2B2,JacPDupwindNthAnti2Xt2),kmadd(beta3L,ksub(JacPDupwindNthAnti3B2,JacPDupwindNthAnti3Xt2),kmadd(kfabs(beta1L),ksub(JacPDupwindNthSymm1B2,JacPDupwindNthSymm1Xt2),kmadd(kfabs(beta2L),ksub(JacPDupwindNthSymm2B2,JacPDupwindNthSymm2Xt2),kmul(kfabs(beta3L),ksub(JacPDupwindNthSymm3B2,JacPDupwindNthSymm3Xt2))))))),ToReal(ShiftAdvectionCoeff),kmul(kmadd(beta1L,JacPDupwindNthAnti1Xt2,kmadd(beta2L,JacPDupwindNthAnti2Xt2,kmadd(beta3L,JacPDupwindNthAnti3Xt2,kmadd(JacPDupwindNthSymm1Xt2,kfabs(beta1L),kmadd(JacPDupwindNthSymm2Xt2,kfabs(beta2L),kmul(JacPDupwindNthSymm3Xt2,kfabs(beta3L))))))),ToReal(ShiftBCoeff))));
- beta3rhsL = beta3rhsL + (beta1L*JacPDupwindNthAnti1beta3 +
- beta2L*JacPDupwindNthAnti2beta3 + beta3L*JacPDupwindNthAnti3beta3 +
- JacPDupwindNthSymm1beta3*Abs(beta1L) +
- JacPDupwindNthSymm2beta3*Abs(beta2L) +
- JacPDupwindNthSymm3beta3*Abs(beta3L))*ToReal(ShiftAdvectionCoeff);
+ B3rhsL =
+ kadd(B3rhsL,kmadd(kmadd(beta1L,ksub(JacPDupwindNthAnti1B3,JacPDupwindNthAnti1Xt3),kmadd(beta2L,ksub(JacPDupwindNthAnti2B3,JacPDupwindNthAnti2Xt3),kmadd(beta3L,ksub(JacPDupwindNthAnti3B3,JacPDupwindNthAnti3Xt3),kmadd(kfabs(beta1L),ksub(JacPDupwindNthSymm1B3,JacPDupwindNthSymm1Xt3),kmadd(kfabs(beta2L),ksub(JacPDupwindNthSymm2B3,JacPDupwindNthSymm2Xt3),kmul(kfabs(beta3L),ksub(JacPDupwindNthSymm3B3,JacPDupwindNthSymm3Xt3))))))),ToReal(ShiftAdvectionCoeff),kmul(kmadd(beta1L,JacPDupwindNthAnti1Xt3,kmadd(beta2L,JacPDupwindNthAnti2Xt3,kmadd(beta3L,JacPDupwindNthAnti3Xt3,kmadd(JacPDupwindNthSymm1Xt3,kfabs(beta1L),kmadd(JacPDupwindNthSymm2Xt3,kfabs(beta2L),kmul(JacPDupwindNthSymm3Xt3,kfabs(beta3L))))))),ToReal(ShiftBCoeff))));
- B1rhsL = B1rhsL + (beta1L*(JacPDupwindNthAnti1B1 -
- JacPDupwindNthAnti1Xt1) + beta2L*(JacPDupwindNthAnti2B1 -
- JacPDupwindNthAnti2Xt1) + beta3L*(JacPDupwindNthAnti3B1 -
- JacPDupwindNthAnti3Xt1) + (JacPDupwindNthSymm1B1 -
- JacPDupwindNthSymm1Xt1)*Abs(beta1L) + (JacPDupwindNthSymm2B1 -
- JacPDupwindNthSymm2Xt1)*Abs(beta2L) + (JacPDupwindNthSymm3B1 -
- JacPDupwindNthSymm3Xt1)*Abs(beta3L))*ToReal(ShiftAdvectionCoeff) +
- (beta1L*JacPDupwindNthAnti1Xt1 + beta2L*JacPDupwindNthAnti2Xt1 +
- beta3L*JacPDupwindNthAnti3Xt1 + JacPDupwindNthSymm1Xt1*Abs(beta1L) +
- JacPDupwindNthSymm2Xt1*Abs(beta2L) +
- JacPDupwindNthSymm3Xt1*Abs(beta3L))*ToReal(ShiftBCoeff);
+ /* If necessary, store only partial vectors after the first iteration */
- B2rhsL = B2rhsL + (beta1L*(JacPDupwindNthAnti1B2 -
- JacPDupwindNthAnti1Xt2) + beta2L*(JacPDupwindNthAnti2B2 -
- JacPDupwindNthAnti2Xt2) + beta3L*(JacPDupwindNthAnti3B2 -
- JacPDupwindNthAnti3Xt2) + (JacPDupwindNthSymm1B2 -
- JacPDupwindNthSymm1Xt2)*Abs(beta1L) + (JacPDupwindNthSymm2B2 -
- JacPDupwindNthSymm2Xt2)*Abs(beta2L) + (JacPDupwindNthSymm3B2 -
- JacPDupwindNthSymm3Xt2)*Abs(beta3L))*ToReal(ShiftAdvectionCoeff) +
- (beta1L*JacPDupwindNthAnti1Xt2 + beta2L*JacPDupwindNthAnti2Xt2 +
- beta3L*JacPDupwindNthAnti3Xt2 + JacPDupwindNthSymm1Xt2*Abs(beta1L) +
- JacPDupwindNthSymm2Xt2*Abs(beta2L) +
- JacPDupwindNthSymm3Xt2*Abs(beta3L))*ToReal(ShiftBCoeff);
+ 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(Arhs[index],ArhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At11rhs[index],At11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At12rhs[index],At12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At13rhs[index],At13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At22rhs[index],At22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At23rhs[index],At23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At33rhs[index],At33rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B1rhs[index],B1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B2rhs[index],B2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt12rhs[index],gt12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt13rhs[index],gt13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt22rhs[index],gt22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt23rhs[index],gt23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt33rhs[index],gt33rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(phirhs[index],phirhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(trKrhs[index],trKrhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt1rhs[index],Xt1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt2rhs[index],Xt2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt3rhs[index],Xt3rhsL,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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_hi(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_hi(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_hi(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_hi(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_hi(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_hi(At33rhs[index],At33rhsL,elt_count);
+ vec_store_nta_partial_hi(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_hi(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_hi(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_hi(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_hi(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_hi(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_hi(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_hi(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_hi(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_hi(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_hi(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt3rhs[index],Xt3rhsL,elt_count);
+ continue;
+ }
- B3rhsL = B3rhsL + (beta1L*(JacPDupwindNthAnti1B3 -
- JacPDupwindNthAnti1Xt3) + beta2L*(JacPDupwindNthAnti2B3 -
- JacPDupwindNthAnti2Xt3) + beta3L*(JacPDupwindNthAnti3B3 -
- JacPDupwindNthAnti3Xt3) + (JacPDupwindNthSymm1B3 -
- JacPDupwindNthSymm1Xt3)*Abs(beta1L) + (JacPDupwindNthSymm2B3 -
- JacPDupwindNthSymm2Xt3)*Abs(beta2L) + (JacPDupwindNthSymm3B3 -
- JacPDupwindNthSymm3Xt3)*Abs(beta3L))*ToReal(ShiftAdvectionCoeff) +
- (beta1L*JacPDupwindNthAnti1Xt3 + beta2L*JacPDupwindNthAnti2Xt3 +
- beta3L*JacPDupwindNthAnti3Xt3 + JacPDupwindNthSymm1Xt3*Abs(beta1L) +
- JacPDupwindNthSymm2Xt3*Abs(beta2L) +
- JacPDupwindNthSymm3Xt3*Abs(beta3L))*ToReal(ShiftBCoeff);
+ /* If necessary, store only partial vectors after the last iteration */
- /* Copy local copies back to grid functions */
- alpharhs[index] = alpharhsL;
- Arhs[index] = ArhsL;
- At11rhs[index] = At11rhsL;
- At12rhs[index] = At12rhsL;
- At13rhs[index] = At13rhsL;
- At22rhs[index] = At22rhsL;
- At23rhs[index] = At23rhsL;
- At33rhs[index] = At33rhsL;
- B1rhs[index] = B1rhsL;
- B2rhs[index] = B2rhsL;
- B3rhs[index] = B3rhsL;
- beta1rhs[index] = beta1rhsL;
- beta2rhs[index] = beta2rhsL;
- beta3rhs[index] = beta3rhsL;
- gt11rhs[index] = gt11rhsL;
- gt12rhs[index] = gt12rhsL;
- gt13rhs[index] = gt13rhsL;
- gt22rhs[index] = gt22rhsL;
- gt23rhs[index] = gt23rhsL;
- gt33rhs[index] = gt33rhsL;
- phirhs[index] = phirhsL;
- trKrhs[index] = trKrhsL;
- Xt1rhs[index] = Xt1rhsL;
- Xt2rhs[index] = Xt2rhsL;
- Xt3rhs[index] = Xt3rhsL;
+ 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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_lo(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_lo(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_lo(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_lo(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_lo(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_lo(At33rhs[index],At33rhsL,elt_count);
+ vec_store_nta_partial_lo(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_lo(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_lo(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_lo(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_lo(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_lo(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_lo(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_lo(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_lo(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_lo(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_lo(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt3rhs[index],Xt3rhsL,elt_count);
+ break;
+ }
+ vec_store_nta(alpharhs[index],alpharhsL);
+ vec_store_nta(Arhs[index],ArhsL);
+ vec_store_nta(At11rhs[index],At11rhsL);
+ vec_store_nta(At12rhs[index],At12rhsL);
+ vec_store_nta(At13rhs[index],At13rhsL);
+ vec_store_nta(At22rhs[index],At22rhsL);
+ vec_store_nta(At23rhs[index],At23rhsL);
+ vec_store_nta(At33rhs[index],At33rhsL);
+ vec_store_nta(B1rhs[index],B1rhsL);
+ vec_store_nta(B2rhs[index],B2rhsL);
+ vec_store_nta(B3rhs[index],B3rhsL);
+ vec_store_nta(beta1rhs[index],beta1rhsL);
+ vec_store_nta(beta2rhs[index],beta2rhsL);
+ vec_store_nta(beta3rhs[index],beta3rhsL);
+ vec_store_nta(gt11rhs[index],gt11rhsL);
+ vec_store_nta(gt12rhs[index],gt12rhsL);
+ vec_store_nta(gt13rhs[index],gt13rhsL);
+ vec_store_nta(gt22rhs[index],gt22rhsL);
+ vec_store_nta(gt23rhs[index],gt23rhsL);
+ vec_store_nta(gt33rhs[index],gt33rhsL);
+ vec_store_nta(phirhs[index],phirhsL);
+ vec_store_nta(trKrhs[index],trKrhsL);
+ vec_store_nta(Xt1rhs[index],Xt1rhsL);
+ vec_store_nta(Xt2rhs[index],Xt2rhsL);
+ vec_store_nta(Xt3rhs[index],Xt3rhsL);
}
- LC_ENDLOOP3 (ML_BSSN_MP_Advect);
+ LC_ENDLOOP3VEC (ML_BSSN_MP_Advect);
}
extern "C" void ML_BSSN_MP_Advect(CCTK_ARGUMENTS)
@@ -1516,5 +2193,43 @@ extern "C" void ML_BSSN_MP_Advect(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_Advect_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_MP_Advect_calc_every != ML_BSSN_MP_Advect_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN_MP::ML_curv","ML_BSSN_MP::ML_curvrhs","ML_BSSN_MP::ML_dtlapse","ML_BSSN_MP::ML_dtlapserhs","ML_BSSN_MP::ML_dtshift","ML_BSSN_MP::ML_dtshiftrhs","ML_BSSN_MP::ML_Gamma","ML_BSSN_MP::ML_Gammarhs","ML_BSSN_MP::ML_lapse","ML_BSSN_MP::ML_lapserhs","ML_BSSN_MP::ML_log_confac","ML_BSSN_MP::ML_log_confacrhs","ML_BSSN_MP::ML_metric","ML_BSSN_MP::ML_metricrhs","ML_BSSN_MP::ML_shift","ML_BSSN_MP::ML_shiftrhs","ML_BSSN_MP::ML_trace_curv","ML_BSSN_MP::ML_trace_curvrhs"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_Advect", 18, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_Advect", 2, 2, 2);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_Advect", 3, 3, 3);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_Advect", 4, 4, 4);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_Advect", 5, 5, 5);
+ break;
+ }
+
GenericFD_LoopOverInterior(cctkGH, &ML_BSSN_MP_Advect_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_MP_Advect_Body");
+ }
}
diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_Dissipation.cc b/ML_BSSN_MP/src/ML_BSSN_MP_Dissipation.cc
index f0e2180..43a4907 100644
--- a/ML_BSSN_MP/src/ML_BSSN_MP_Dissipation.cc
+++ b/ML_BSSN_MP/src/ML_BSSN_MP_Dissipation.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_MP_Dissipation_SelectBCs(CCTK_ARGUMENTS)
{
@@ -57,7 +58,7 @@ extern "C" void ML_BSSN_MP_Dissipation_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_BSSN_MP_Dissipation_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_MP_Dissipation_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const imin[3], int const imax[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
{
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
@@ -65,21 +66,6 @@ static void ML_BSSN_MP_Dissipation_Body(cGH const * restrict const cctkGH, int c
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_Dissipation_Body");
- }
-
- if (cctk_iteration % ML_BSSN_MP_Dissipation_calc_every != ML_BSSN_MP_Dissipation_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN_MP::ML_curv","ML_BSSN_MP::ML_curvrhs","ML_BSSN_MP::ML_dtlapse","ML_BSSN_MP::ML_dtlapserhs","ML_BSSN_MP::ML_dtshift","ML_BSSN_MP::ML_dtshiftrhs","ML_BSSN_MP::ML_Gamma","ML_BSSN_MP::ML_Gammarhs","ML_BSSN_MP::ML_lapse","ML_BSSN_MP::ML_lapserhs","ML_BSSN_MP::ML_log_confac","ML_BSSN_MP::ML_log_confacrhs","ML_BSSN_MP::ML_metric","ML_BSSN_MP::ML_metricrhs","ML_BSSN_MP::ML_shift","ML_BSSN_MP::ML_shiftrhs","ML_BSSN_MP::ML_trace_curv","ML_BSSN_MP::ML_trace_curvrhs"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_Dissipation", 18, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_Dissipation", 3, 3, 3);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -89,41 +75,102 @@ static void ML_BSSN_MP_Dissipation_Body(cGH const * restrict const cctkGH, int c
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const p1o24dx = 0.0416666666666666666666666666667*INV(dx);
- CCTK_REAL const p1o24dy = 0.0416666666666666666666666666667*INV(dy);
- CCTK_REAL const p1o24dz = 0.0416666666666666666666666666667*INV(dz);
- CCTK_REAL const p1o64dx = 0.015625*INV(dx);
- CCTK_REAL const p1o64dy = 0.015625*INV(dy);
- CCTK_REAL const p1o64dz = 0.015625*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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)
@@ -170,465 +217,789 @@ static void ML_BSSN_MP_Dissipation_Body(cGH const * restrict const cctkGH, int c
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_LOOP3 (ML_BSSN_MP_Dissipation,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_MP_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 AL = A[index];
- CCTK_REAL alphaL = alpha[index];
- CCTK_REAL alpharhsL = alpharhs[index];
- CCTK_REAL ArhsL = Arhs[index];
- CCTK_REAL At11L = At11[index];
- CCTK_REAL At11rhsL = At11rhs[index];
- CCTK_REAL At12L = At12[index];
- CCTK_REAL At12rhsL = At12rhs[index];
- CCTK_REAL At13L = At13[index];
- CCTK_REAL At13rhsL = At13rhs[index];
- CCTK_REAL At22L = At22[index];
- CCTK_REAL At22rhsL = At22rhs[index];
- CCTK_REAL At23L = At23[index];
- CCTK_REAL At23rhsL = At23rhs[index];
- CCTK_REAL At33L = At33[index];
- CCTK_REAL At33rhsL = At33rhs[index];
- CCTK_REAL B1L = B1[index];
- CCTK_REAL B1rhsL = B1rhs[index];
- CCTK_REAL B2L = B2[index];
- CCTK_REAL B2rhsL = B2rhs[index];
- CCTK_REAL B3L = B3[index];
- CCTK_REAL B3rhsL = B3rhs[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta1rhsL = beta1rhs[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta2rhsL = beta2rhs[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL beta3rhsL = beta3rhs[index];
- CCTK_REAL gt11L = gt11[index];
- CCTK_REAL gt11rhsL = gt11rhs[index];
- CCTK_REAL gt12L = gt12[index];
- CCTK_REAL gt12rhsL = gt12rhs[index];
- CCTK_REAL gt13L = gt13[index];
- CCTK_REAL gt13rhsL = gt13rhs[index];
- CCTK_REAL gt22L = gt22[index];
- CCTK_REAL gt22rhsL = gt22rhs[index];
- CCTK_REAL gt23L = gt23[index];
- CCTK_REAL gt23rhsL = gt23rhs[index];
- CCTK_REAL gt33L = gt33[index];
- CCTK_REAL gt33rhsL = gt33rhs[index];
- CCTK_REAL phiL = phi[index];
- CCTK_REAL phirhsL = phirhs[index];
- CCTK_REAL trKL = trK[index];
- CCTK_REAL trKrhsL = trKrhs[index];
- CCTK_REAL Xt1L = Xt1[index];
- CCTK_REAL Xt1rhsL = Xt1rhs[index];
- CCTK_REAL Xt2L = Xt2[index];
- CCTK_REAL Xt2rhsL = Xt2rhs[index];
- CCTK_REAL Xt3L = Xt3[index];
- CCTK_REAL Xt3rhsL = Xt3rhs[index];
-
-
- CCTK_REAL J11L, J12L, J13L, J21L, J22L, J23L, J31L, J32L, J33L;
+ 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 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 = J11[index];
- J12L = J12[index];
- J13L = J13[index];
- J21L = J21[index];
- J22L = J22[index];
- J23L = J23[index];
- J31L = J31[index];
- J32L = J32[index];
- J33L = J33[index];
+ J11L = vec_load(J11[index]);
+ J12L = vec_load(J12[index]);
+ J13L = vec_load(J13[index]);
+ J21L = vec_load(J21[index]);
+ J22L = vec_load(J22[index]);
+ J23L = vec_load(J23[index]);
+ J31L = vec_load(J31[index]);
+ J32L = vec_load(J32[index]);
+ J33L = vec_load(J33[index]);
}
/* Include user supplied include files */
/* Precompute derivatives */
- CCTK_REAL const PDdissipationNth1A = PDdissipationNth1(&A[index]);
- CCTK_REAL const PDdissipationNth2A = PDdissipationNth2(&A[index]);
- CCTK_REAL const PDdissipationNth3A = PDdissipationNth3(&A[index]);
- CCTK_REAL const PDdissipationNth1alpha = PDdissipationNth1(&alpha[index]);
- CCTK_REAL const PDdissipationNth2alpha = PDdissipationNth2(&alpha[index]);
- CCTK_REAL const PDdissipationNth3alpha = PDdissipationNth3(&alpha[index]);
- CCTK_REAL const PDdissipationNth1At11 = PDdissipationNth1(&At11[index]);
- CCTK_REAL const PDdissipationNth2At11 = PDdissipationNth2(&At11[index]);
- CCTK_REAL const PDdissipationNth3At11 = PDdissipationNth3(&At11[index]);
- CCTK_REAL const PDdissipationNth1At12 = PDdissipationNth1(&At12[index]);
- CCTK_REAL const PDdissipationNth2At12 = PDdissipationNth2(&At12[index]);
- CCTK_REAL const PDdissipationNth3At12 = PDdissipationNth3(&At12[index]);
- CCTK_REAL const PDdissipationNth1At13 = PDdissipationNth1(&At13[index]);
- CCTK_REAL const PDdissipationNth2At13 = PDdissipationNth2(&At13[index]);
- CCTK_REAL const PDdissipationNth3At13 = PDdissipationNth3(&At13[index]);
- CCTK_REAL const PDdissipationNth1At22 = PDdissipationNth1(&At22[index]);
- CCTK_REAL const PDdissipationNth2At22 = PDdissipationNth2(&At22[index]);
- CCTK_REAL const PDdissipationNth3At22 = PDdissipationNth3(&At22[index]);
- CCTK_REAL const PDdissipationNth1At23 = PDdissipationNth1(&At23[index]);
- CCTK_REAL const PDdissipationNth2At23 = PDdissipationNth2(&At23[index]);
- CCTK_REAL const PDdissipationNth3At23 = PDdissipationNth3(&At23[index]);
- CCTK_REAL const PDdissipationNth1At33 = PDdissipationNth1(&At33[index]);
- CCTK_REAL const PDdissipationNth2At33 = PDdissipationNth2(&At33[index]);
- CCTK_REAL const PDdissipationNth3At33 = PDdissipationNth3(&At33[index]);
- CCTK_REAL const PDdissipationNth1B1 = PDdissipationNth1(&B1[index]);
- CCTK_REAL const PDdissipationNth2B1 = PDdissipationNth2(&B1[index]);
- CCTK_REAL const PDdissipationNth3B1 = PDdissipationNth3(&B1[index]);
- CCTK_REAL const PDdissipationNth1B2 = PDdissipationNth1(&B2[index]);
- CCTK_REAL const PDdissipationNth2B2 = PDdissipationNth2(&B2[index]);
- CCTK_REAL const PDdissipationNth3B2 = PDdissipationNth3(&B2[index]);
- CCTK_REAL const PDdissipationNth1B3 = PDdissipationNth1(&B3[index]);
- CCTK_REAL const PDdissipationNth2B3 = PDdissipationNth2(&B3[index]);
- CCTK_REAL const PDdissipationNth3B3 = PDdissipationNth3(&B3[index]);
- CCTK_REAL const PDdissipationNth1beta1 = PDdissipationNth1(&beta1[index]);
- CCTK_REAL const PDdissipationNth2beta1 = PDdissipationNth2(&beta1[index]);
- CCTK_REAL const PDdissipationNth3beta1 = PDdissipationNth3(&beta1[index]);
- CCTK_REAL const PDdissipationNth1beta2 = PDdissipationNth1(&beta2[index]);
- CCTK_REAL const PDdissipationNth2beta2 = PDdissipationNth2(&beta2[index]);
- CCTK_REAL const PDdissipationNth3beta2 = PDdissipationNth3(&beta2[index]);
- CCTK_REAL const PDdissipationNth1beta3 = PDdissipationNth1(&beta3[index]);
- CCTK_REAL const PDdissipationNth2beta3 = PDdissipationNth2(&beta3[index]);
- CCTK_REAL const PDdissipationNth3beta3 = PDdissipationNth3(&beta3[index]);
- CCTK_REAL const PDdissipationNth1gt11 = PDdissipationNth1(&gt11[index]);
- CCTK_REAL const PDdissipationNth2gt11 = PDdissipationNth2(&gt11[index]);
- CCTK_REAL const PDdissipationNth3gt11 = PDdissipationNth3(&gt11[index]);
- CCTK_REAL const PDdissipationNth1gt12 = PDdissipationNth1(&gt12[index]);
- CCTK_REAL const PDdissipationNth2gt12 = PDdissipationNth2(&gt12[index]);
- CCTK_REAL const PDdissipationNth3gt12 = PDdissipationNth3(&gt12[index]);
- CCTK_REAL const PDdissipationNth1gt13 = PDdissipationNth1(&gt13[index]);
- CCTK_REAL const PDdissipationNth2gt13 = PDdissipationNth2(&gt13[index]);
- CCTK_REAL const PDdissipationNth3gt13 = PDdissipationNth3(&gt13[index]);
- CCTK_REAL const PDdissipationNth1gt22 = PDdissipationNth1(&gt22[index]);
- CCTK_REAL const PDdissipationNth2gt22 = PDdissipationNth2(&gt22[index]);
- CCTK_REAL const PDdissipationNth3gt22 = PDdissipationNth3(&gt22[index]);
- CCTK_REAL const PDdissipationNth1gt23 = PDdissipationNth1(&gt23[index]);
- CCTK_REAL const PDdissipationNth2gt23 = PDdissipationNth2(&gt23[index]);
- CCTK_REAL const PDdissipationNth3gt23 = PDdissipationNth3(&gt23[index]);
- CCTK_REAL const PDdissipationNth1gt33 = PDdissipationNth1(&gt33[index]);
- CCTK_REAL const PDdissipationNth2gt33 = PDdissipationNth2(&gt33[index]);
- CCTK_REAL const PDdissipationNth3gt33 = PDdissipationNth3(&gt33[index]);
- CCTK_REAL const PDdissipationNth1phi = PDdissipationNth1(&phi[index]);
- CCTK_REAL const PDdissipationNth2phi = PDdissipationNth2(&phi[index]);
- CCTK_REAL const PDdissipationNth3phi = PDdissipationNth3(&phi[index]);
- CCTK_REAL const PDdissipationNth1trK = PDdissipationNth1(&trK[index]);
- CCTK_REAL const PDdissipationNth2trK = PDdissipationNth2(&trK[index]);
- CCTK_REAL const PDdissipationNth3trK = PDdissipationNth3(&trK[index]);
- CCTK_REAL const PDdissipationNth1Xt1 = PDdissipationNth1(&Xt1[index]);
- CCTK_REAL const PDdissipationNth2Xt1 = PDdissipationNth2(&Xt1[index]);
- CCTK_REAL const PDdissipationNth3Xt1 = PDdissipationNth3(&Xt1[index]);
- CCTK_REAL const PDdissipationNth1Xt2 = PDdissipationNth1(&Xt2[index]);
- CCTK_REAL const PDdissipationNth2Xt2 = PDdissipationNth2(&Xt2[index]);
- CCTK_REAL const PDdissipationNth3Xt2 = PDdissipationNth3(&Xt2[index]);
- CCTK_REAL const PDdissipationNth1Xt3 = PDdissipationNth1(&Xt3[index]);
- CCTK_REAL const PDdissipationNth2Xt3 = PDdissipationNth2(&Xt3[index]);
- CCTK_REAL const PDdissipationNth3Xt3 = PDdissipationNth3(&Xt3[index]);
+ 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 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]);
+ 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]);
+ 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]);
+ 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]);
+ 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 JacPDdissipationNth1A;
- CCTK_REAL JacPDdissipationNth1alpha;
- CCTK_REAL JacPDdissipationNth1At11;
- CCTK_REAL JacPDdissipationNth1At12;
- CCTK_REAL JacPDdissipationNth1At13;
- CCTK_REAL JacPDdissipationNth1At22;
- CCTK_REAL JacPDdissipationNth1At23;
- CCTK_REAL JacPDdissipationNth1At33;
- CCTK_REAL JacPDdissipationNth1B1;
- CCTK_REAL JacPDdissipationNth1B2;
- CCTK_REAL JacPDdissipationNth1B3;
- CCTK_REAL JacPDdissipationNth1beta1;
- CCTK_REAL JacPDdissipationNth1beta2;
- CCTK_REAL JacPDdissipationNth1beta3;
- CCTK_REAL JacPDdissipationNth1gt11;
- CCTK_REAL JacPDdissipationNth1gt12;
- CCTK_REAL JacPDdissipationNth1gt13;
- CCTK_REAL JacPDdissipationNth1gt22;
- CCTK_REAL JacPDdissipationNth1gt23;
- CCTK_REAL JacPDdissipationNth1gt33;
- CCTK_REAL JacPDdissipationNth1phi;
- CCTK_REAL JacPDdissipationNth1trK;
- CCTK_REAL JacPDdissipationNth1Xt1;
- CCTK_REAL JacPDdissipationNth1Xt2;
- CCTK_REAL JacPDdissipationNth1Xt3;
- CCTK_REAL JacPDdissipationNth2A;
- CCTK_REAL JacPDdissipationNth2alpha;
- CCTK_REAL JacPDdissipationNth2At11;
- CCTK_REAL JacPDdissipationNth2At12;
- CCTK_REAL JacPDdissipationNth2At13;
- CCTK_REAL JacPDdissipationNth2At22;
- CCTK_REAL JacPDdissipationNth2At23;
- CCTK_REAL JacPDdissipationNth2At33;
- CCTK_REAL JacPDdissipationNth2B1;
- CCTK_REAL JacPDdissipationNth2B2;
- CCTK_REAL JacPDdissipationNth2B3;
- CCTK_REAL JacPDdissipationNth2beta1;
- CCTK_REAL JacPDdissipationNth2beta2;
- CCTK_REAL JacPDdissipationNth2beta3;
- CCTK_REAL JacPDdissipationNth2gt11;
- CCTK_REAL JacPDdissipationNth2gt12;
- CCTK_REAL JacPDdissipationNth2gt13;
- CCTK_REAL JacPDdissipationNth2gt22;
- CCTK_REAL JacPDdissipationNth2gt23;
- CCTK_REAL JacPDdissipationNth2gt33;
- CCTK_REAL JacPDdissipationNth2phi;
- CCTK_REAL JacPDdissipationNth2trK;
- CCTK_REAL JacPDdissipationNth2Xt1;
- CCTK_REAL JacPDdissipationNth2Xt2;
- CCTK_REAL JacPDdissipationNth2Xt3;
- CCTK_REAL JacPDdissipationNth3A;
- CCTK_REAL JacPDdissipationNth3alpha;
- CCTK_REAL JacPDdissipationNth3At11;
- CCTK_REAL JacPDdissipationNth3At12;
- CCTK_REAL JacPDdissipationNth3At13;
- CCTK_REAL JacPDdissipationNth3At22;
- CCTK_REAL JacPDdissipationNth3At23;
- CCTK_REAL JacPDdissipationNth3At33;
- CCTK_REAL JacPDdissipationNth3B1;
- CCTK_REAL JacPDdissipationNth3B2;
- CCTK_REAL JacPDdissipationNth3B3;
- CCTK_REAL JacPDdissipationNth3beta1;
- CCTK_REAL JacPDdissipationNth3beta2;
- CCTK_REAL JacPDdissipationNth3beta3;
- CCTK_REAL JacPDdissipationNth3gt11;
- CCTK_REAL JacPDdissipationNth3gt12;
- CCTK_REAL JacPDdissipationNth3gt13;
- CCTK_REAL JacPDdissipationNth3gt22;
- CCTK_REAL JacPDdissipationNth3gt23;
- CCTK_REAL JacPDdissipationNth3gt33;
- CCTK_REAL JacPDdissipationNth3phi;
- CCTK_REAL JacPDdissipationNth3trK;
- CCTK_REAL JacPDdissipationNth3Xt1;
- CCTK_REAL JacPDdissipationNth3Xt2;
- CCTK_REAL JacPDdissipationNth3Xt3;
+ 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 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 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 JacPDdissipationNth3trK;
+ CCTK_REAL_VEC JacPDdissipationNth3Xt1;
+ CCTK_REAL_VEC JacPDdissipationNth3Xt2;
+ CCTK_REAL_VEC JacPDdissipationNth3Xt3;
if (use_jacobian)
{
- JacPDdissipationNth1A = J11L*PDdissipationNth1A +
- J21L*PDdissipationNth2A + J31L*PDdissipationNth3A;
+ JacPDdissipationNth1A =
+ kmadd(J11L,PDdissipationNth1A,kmadd(J21L,PDdissipationNth2A,kmul(J31L,PDdissipationNth3A)));
- JacPDdissipationNth1alpha = J11L*PDdissipationNth1alpha +
- J21L*PDdissipationNth2alpha + J31L*PDdissipationNth3alpha;
+ JacPDdissipationNth1alpha =
+ kmadd(J11L,PDdissipationNth1alpha,kmadd(J21L,PDdissipationNth2alpha,kmul(J31L,PDdissipationNth3alpha)));
- JacPDdissipationNth1At11 = J11L*PDdissipationNth1At11 +
- J21L*PDdissipationNth2At11 + J31L*PDdissipationNth3At11;
+ JacPDdissipationNth1At11 =
+ kmadd(J11L,PDdissipationNth1At11,kmadd(J21L,PDdissipationNth2At11,kmul(J31L,PDdissipationNth3At11)));
- JacPDdissipationNth1At12 = J11L*PDdissipationNth1At12 +
- J21L*PDdissipationNth2At12 + J31L*PDdissipationNth3At12;
+ JacPDdissipationNth1At12 =
+ kmadd(J11L,PDdissipationNth1At12,kmadd(J21L,PDdissipationNth2At12,kmul(J31L,PDdissipationNth3At12)));
- JacPDdissipationNth1At13 = J11L*PDdissipationNth1At13 +
- J21L*PDdissipationNth2At13 + J31L*PDdissipationNth3At13;
+ JacPDdissipationNth1At13 =
+ kmadd(J11L,PDdissipationNth1At13,kmadd(J21L,PDdissipationNth2At13,kmul(J31L,PDdissipationNth3At13)));
- JacPDdissipationNth1At22 = J11L*PDdissipationNth1At22 +
- J21L*PDdissipationNth2At22 + J31L*PDdissipationNth3At22;
+ JacPDdissipationNth1At22 =
+ kmadd(J11L,PDdissipationNth1At22,kmadd(J21L,PDdissipationNth2At22,kmul(J31L,PDdissipationNth3At22)));
- JacPDdissipationNth1At23 = J11L*PDdissipationNth1At23 +
- J21L*PDdissipationNth2At23 + J31L*PDdissipationNth3At23;
+ JacPDdissipationNth1At23 =
+ kmadd(J11L,PDdissipationNth1At23,kmadd(J21L,PDdissipationNth2At23,kmul(J31L,PDdissipationNth3At23)));
- JacPDdissipationNth1At33 = J11L*PDdissipationNth1At33 +
- J21L*PDdissipationNth2At33 + J31L*PDdissipationNth3At33;
+ JacPDdissipationNth1At33 =
+ kmadd(J11L,PDdissipationNth1At33,kmadd(J21L,PDdissipationNth2At33,kmul(J31L,PDdissipationNth3At33)));
- JacPDdissipationNth1B1 = J11L*PDdissipationNth1B1 +
- J21L*PDdissipationNth2B1 + J31L*PDdissipationNth3B1;
+ JacPDdissipationNth1B1 =
+ kmadd(J11L,PDdissipationNth1B1,kmadd(J21L,PDdissipationNth2B1,kmul(J31L,PDdissipationNth3B1)));
- JacPDdissipationNth1B2 = J11L*PDdissipationNth1B2 +
- J21L*PDdissipationNth2B2 + J31L*PDdissipationNth3B2;
+ JacPDdissipationNth1B2 =
+ kmadd(J11L,PDdissipationNth1B2,kmadd(J21L,PDdissipationNth2B2,kmul(J31L,PDdissipationNth3B2)));
- JacPDdissipationNth1B3 = J11L*PDdissipationNth1B3 +
- J21L*PDdissipationNth2B3 + J31L*PDdissipationNth3B3;
+ JacPDdissipationNth1B3 =
+ kmadd(J11L,PDdissipationNth1B3,kmadd(J21L,PDdissipationNth2B3,kmul(J31L,PDdissipationNth3B3)));
- JacPDdissipationNth1beta1 = J11L*PDdissipationNth1beta1 +
- J21L*PDdissipationNth2beta1 + J31L*PDdissipationNth3beta1;
+ JacPDdissipationNth1beta1 =
+ kmadd(J11L,PDdissipationNth1beta1,kmadd(J21L,PDdissipationNth2beta1,kmul(J31L,PDdissipationNth3beta1)));
- JacPDdissipationNth1beta2 = J11L*PDdissipationNth1beta2 +
- J21L*PDdissipationNth2beta2 + J31L*PDdissipationNth3beta2;
+ JacPDdissipationNth1beta2 =
+ kmadd(J11L,PDdissipationNth1beta2,kmadd(J21L,PDdissipationNth2beta2,kmul(J31L,PDdissipationNth3beta2)));
- JacPDdissipationNth1beta3 = J11L*PDdissipationNth1beta3 +
- J21L*PDdissipationNth2beta3 + J31L*PDdissipationNth3beta3;
+ JacPDdissipationNth1beta3 =
+ kmadd(J11L,PDdissipationNth1beta3,kmadd(J21L,PDdissipationNth2beta3,kmul(J31L,PDdissipationNth3beta3)));
- JacPDdissipationNth1gt11 = J11L*PDdissipationNth1gt11 +
- J21L*PDdissipationNth2gt11 + J31L*PDdissipationNth3gt11;
+ JacPDdissipationNth1gt11 =
+ kmadd(J11L,PDdissipationNth1gt11,kmadd(J21L,PDdissipationNth2gt11,kmul(J31L,PDdissipationNth3gt11)));
- JacPDdissipationNth1gt12 = J11L*PDdissipationNth1gt12 +
- J21L*PDdissipationNth2gt12 + J31L*PDdissipationNth3gt12;
+ JacPDdissipationNth1gt12 =
+ kmadd(J11L,PDdissipationNth1gt12,kmadd(J21L,PDdissipationNth2gt12,kmul(J31L,PDdissipationNth3gt12)));
- JacPDdissipationNth1gt13 = J11L*PDdissipationNth1gt13 +
- J21L*PDdissipationNth2gt13 + J31L*PDdissipationNth3gt13;
+ JacPDdissipationNth1gt13 =
+ kmadd(J11L,PDdissipationNth1gt13,kmadd(J21L,PDdissipationNth2gt13,kmul(J31L,PDdissipationNth3gt13)));
- JacPDdissipationNth1gt22 = J11L*PDdissipationNth1gt22 +
- J21L*PDdissipationNth2gt22 + J31L*PDdissipationNth3gt22;
+ JacPDdissipationNth1gt22 =
+ kmadd(J11L,PDdissipationNth1gt22,kmadd(J21L,PDdissipationNth2gt22,kmul(J31L,PDdissipationNth3gt22)));
- JacPDdissipationNth1gt23 = J11L*PDdissipationNth1gt23 +
- J21L*PDdissipationNth2gt23 + J31L*PDdissipationNth3gt23;
+ JacPDdissipationNth1gt23 =
+ kmadd(J11L,PDdissipationNth1gt23,kmadd(J21L,PDdissipationNth2gt23,kmul(J31L,PDdissipationNth3gt23)));
- JacPDdissipationNth1gt33 = J11L*PDdissipationNth1gt33 +
- J21L*PDdissipationNth2gt33 + J31L*PDdissipationNth3gt33;
+ JacPDdissipationNth1gt33 =
+ kmadd(J11L,PDdissipationNth1gt33,kmadd(J21L,PDdissipationNth2gt33,kmul(J31L,PDdissipationNth3gt33)));
- JacPDdissipationNth1phi = J11L*PDdissipationNth1phi +
- J21L*PDdissipationNth2phi + J31L*PDdissipationNth3phi;
+ JacPDdissipationNth1phi =
+ kmadd(J11L,PDdissipationNth1phi,kmadd(J21L,PDdissipationNth2phi,kmul(J31L,PDdissipationNth3phi)));
- JacPDdissipationNth1trK = J11L*PDdissipationNth1trK +
- J21L*PDdissipationNth2trK + J31L*PDdissipationNth3trK;
+ JacPDdissipationNth1trK =
+ kmadd(J11L,PDdissipationNth1trK,kmadd(J21L,PDdissipationNth2trK,kmul(J31L,PDdissipationNth3trK)));
- JacPDdissipationNth1Xt1 = J11L*PDdissipationNth1Xt1 +
- J21L*PDdissipationNth2Xt1 + J31L*PDdissipationNth3Xt1;
+ JacPDdissipationNth1Xt1 =
+ kmadd(J11L,PDdissipationNth1Xt1,kmadd(J21L,PDdissipationNth2Xt1,kmul(J31L,PDdissipationNth3Xt1)));
- JacPDdissipationNth1Xt2 = J11L*PDdissipationNth1Xt2 +
- J21L*PDdissipationNth2Xt2 + J31L*PDdissipationNth3Xt2;
+ JacPDdissipationNth1Xt2 =
+ kmadd(J11L,PDdissipationNth1Xt2,kmadd(J21L,PDdissipationNth2Xt2,kmul(J31L,PDdissipationNth3Xt2)));
- JacPDdissipationNth1Xt3 = J11L*PDdissipationNth1Xt3 +
- J21L*PDdissipationNth2Xt3 + J31L*PDdissipationNth3Xt3;
+ JacPDdissipationNth1Xt3 =
+ kmadd(J11L,PDdissipationNth1Xt3,kmadd(J21L,PDdissipationNth2Xt3,kmul(J31L,PDdissipationNth3Xt3)));
- JacPDdissipationNth2A = J12L*PDdissipationNth1A +
- J22L*PDdissipationNth2A + J32L*PDdissipationNth3A;
+ JacPDdissipationNth2A =
+ kmadd(J12L,PDdissipationNth1A,kmadd(J22L,PDdissipationNth2A,kmul(J32L,PDdissipationNth3A)));
- JacPDdissipationNth2alpha = J12L*PDdissipationNth1alpha +
- J22L*PDdissipationNth2alpha + J32L*PDdissipationNth3alpha;
+ JacPDdissipationNth2alpha =
+ kmadd(J12L,PDdissipationNth1alpha,kmadd(J22L,PDdissipationNth2alpha,kmul(J32L,PDdissipationNth3alpha)));
- JacPDdissipationNth2At11 = J12L*PDdissipationNth1At11 +
- J22L*PDdissipationNth2At11 + J32L*PDdissipationNth3At11;
+ JacPDdissipationNth2At11 =
+ kmadd(J12L,PDdissipationNth1At11,kmadd(J22L,PDdissipationNth2At11,kmul(J32L,PDdissipationNth3At11)));
- JacPDdissipationNth2At12 = J12L*PDdissipationNth1At12 +
- J22L*PDdissipationNth2At12 + J32L*PDdissipationNth3At12;
+ JacPDdissipationNth2At12 =
+ kmadd(J12L,PDdissipationNth1At12,kmadd(J22L,PDdissipationNth2At12,kmul(J32L,PDdissipationNth3At12)));
- JacPDdissipationNth2At13 = J12L*PDdissipationNth1At13 +
- J22L*PDdissipationNth2At13 + J32L*PDdissipationNth3At13;
+ JacPDdissipationNth2At13 =
+ kmadd(J12L,PDdissipationNth1At13,kmadd(J22L,PDdissipationNth2At13,kmul(J32L,PDdissipationNth3At13)));
- JacPDdissipationNth2At22 = J12L*PDdissipationNth1At22 +
- J22L*PDdissipationNth2At22 + J32L*PDdissipationNth3At22;
+ JacPDdissipationNth2At22 =
+ kmadd(J12L,PDdissipationNth1At22,kmadd(J22L,PDdissipationNth2At22,kmul(J32L,PDdissipationNth3At22)));
- JacPDdissipationNth2At23 = J12L*PDdissipationNth1At23 +
- J22L*PDdissipationNth2At23 + J32L*PDdissipationNth3At23;
+ JacPDdissipationNth2At23 =
+ kmadd(J12L,PDdissipationNth1At23,kmadd(J22L,PDdissipationNth2At23,kmul(J32L,PDdissipationNth3At23)));
- JacPDdissipationNth2At33 = J12L*PDdissipationNth1At33 +
- J22L*PDdissipationNth2At33 + J32L*PDdissipationNth3At33;
+ JacPDdissipationNth2At33 =
+ kmadd(J12L,PDdissipationNth1At33,kmadd(J22L,PDdissipationNth2At33,kmul(J32L,PDdissipationNth3At33)));
- JacPDdissipationNth2B1 = J12L*PDdissipationNth1B1 +
- J22L*PDdissipationNth2B1 + J32L*PDdissipationNth3B1;
+ JacPDdissipationNth2B1 =
+ kmadd(J12L,PDdissipationNth1B1,kmadd(J22L,PDdissipationNth2B1,kmul(J32L,PDdissipationNth3B1)));
- JacPDdissipationNth2B2 = J12L*PDdissipationNth1B2 +
- J22L*PDdissipationNth2B2 + J32L*PDdissipationNth3B2;
+ JacPDdissipationNth2B2 =
+ kmadd(J12L,PDdissipationNth1B2,kmadd(J22L,PDdissipationNth2B2,kmul(J32L,PDdissipationNth3B2)));
- JacPDdissipationNth2B3 = J12L*PDdissipationNth1B3 +
- J22L*PDdissipationNth2B3 + J32L*PDdissipationNth3B3;
+ JacPDdissipationNth2B3 =
+ kmadd(J12L,PDdissipationNth1B3,kmadd(J22L,PDdissipationNth2B3,kmul(J32L,PDdissipationNth3B3)));
- JacPDdissipationNth2beta1 = J12L*PDdissipationNth1beta1 +
- J22L*PDdissipationNth2beta1 + J32L*PDdissipationNth3beta1;
+ JacPDdissipationNth2beta1 =
+ kmadd(J12L,PDdissipationNth1beta1,kmadd(J22L,PDdissipationNth2beta1,kmul(J32L,PDdissipationNth3beta1)));
- JacPDdissipationNth2beta2 = J12L*PDdissipationNth1beta2 +
- J22L*PDdissipationNth2beta2 + J32L*PDdissipationNth3beta2;
+ JacPDdissipationNth2beta2 =
+ kmadd(J12L,PDdissipationNth1beta2,kmadd(J22L,PDdissipationNth2beta2,kmul(J32L,PDdissipationNth3beta2)));
- JacPDdissipationNth2beta3 = J12L*PDdissipationNth1beta3 +
- J22L*PDdissipationNth2beta3 + J32L*PDdissipationNth3beta3;
+ JacPDdissipationNth2beta3 =
+ kmadd(J12L,PDdissipationNth1beta3,kmadd(J22L,PDdissipationNth2beta3,kmul(J32L,PDdissipationNth3beta3)));
- JacPDdissipationNth2gt11 = J12L*PDdissipationNth1gt11 +
- J22L*PDdissipationNth2gt11 + J32L*PDdissipationNth3gt11;
+ JacPDdissipationNth2gt11 =
+ kmadd(J12L,PDdissipationNth1gt11,kmadd(J22L,PDdissipationNth2gt11,kmul(J32L,PDdissipationNth3gt11)));
- JacPDdissipationNth2gt12 = J12L*PDdissipationNth1gt12 +
- J22L*PDdissipationNth2gt12 + J32L*PDdissipationNth3gt12;
+ JacPDdissipationNth2gt12 =
+ kmadd(J12L,PDdissipationNth1gt12,kmadd(J22L,PDdissipationNth2gt12,kmul(J32L,PDdissipationNth3gt12)));
- JacPDdissipationNth2gt13 = J12L*PDdissipationNth1gt13 +
- J22L*PDdissipationNth2gt13 + J32L*PDdissipationNth3gt13;
+ JacPDdissipationNth2gt13 =
+ kmadd(J12L,PDdissipationNth1gt13,kmadd(J22L,PDdissipationNth2gt13,kmul(J32L,PDdissipationNth3gt13)));
- JacPDdissipationNth2gt22 = J12L*PDdissipationNth1gt22 +
- J22L*PDdissipationNth2gt22 + J32L*PDdissipationNth3gt22;
+ JacPDdissipationNth2gt22 =
+ kmadd(J12L,PDdissipationNth1gt22,kmadd(J22L,PDdissipationNth2gt22,kmul(J32L,PDdissipationNth3gt22)));
- JacPDdissipationNth2gt23 = J12L*PDdissipationNth1gt23 +
- J22L*PDdissipationNth2gt23 + J32L*PDdissipationNth3gt23;
+ JacPDdissipationNth2gt23 =
+ kmadd(J12L,PDdissipationNth1gt23,kmadd(J22L,PDdissipationNth2gt23,kmul(J32L,PDdissipationNth3gt23)));
- JacPDdissipationNth2gt33 = J12L*PDdissipationNth1gt33 +
- J22L*PDdissipationNth2gt33 + J32L*PDdissipationNth3gt33;
+ JacPDdissipationNth2gt33 =
+ kmadd(J12L,PDdissipationNth1gt33,kmadd(J22L,PDdissipationNth2gt33,kmul(J32L,PDdissipationNth3gt33)));
- JacPDdissipationNth2phi = J12L*PDdissipationNth1phi +
- J22L*PDdissipationNth2phi + J32L*PDdissipationNth3phi;
+ JacPDdissipationNth2phi =
+ kmadd(J12L,PDdissipationNth1phi,kmadd(J22L,PDdissipationNth2phi,kmul(J32L,PDdissipationNth3phi)));
- JacPDdissipationNth2trK = J12L*PDdissipationNth1trK +
- J22L*PDdissipationNth2trK + J32L*PDdissipationNth3trK;
+ JacPDdissipationNth2trK =
+ kmadd(J12L,PDdissipationNth1trK,kmadd(J22L,PDdissipationNth2trK,kmul(J32L,PDdissipationNth3trK)));
- JacPDdissipationNth2Xt1 = J12L*PDdissipationNth1Xt1 +
- J22L*PDdissipationNth2Xt1 + J32L*PDdissipationNth3Xt1;
+ JacPDdissipationNth2Xt1 =
+ kmadd(J12L,PDdissipationNth1Xt1,kmadd(J22L,PDdissipationNth2Xt1,kmul(J32L,PDdissipationNth3Xt1)));
- JacPDdissipationNth2Xt2 = J12L*PDdissipationNth1Xt2 +
- J22L*PDdissipationNth2Xt2 + J32L*PDdissipationNth3Xt2;
+ JacPDdissipationNth2Xt2 =
+ kmadd(J12L,PDdissipationNth1Xt2,kmadd(J22L,PDdissipationNth2Xt2,kmul(J32L,PDdissipationNth3Xt2)));
- JacPDdissipationNth2Xt3 = J12L*PDdissipationNth1Xt3 +
- J22L*PDdissipationNth2Xt3 + J32L*PDdissipationNth3Xt3;
+ JacPDdissipationNth2Xt3 =
+ kmadd(J12L,PDdissipationNth1Xt3,kmadd(J22L,PDdissipationNth2Xt3,kmul(J32L,PDdissipationNth3Xt3)));
- JacPDdissipationNth3A = J13L*PDdissipationNth1A +
- J23L*PDdissipationNth2A + J33L*PDdissipationNth3A;
+ JacPDdissipationNth3A =
+ kmadd(J13L,PDdissipationNth1A,kmadd(J23L,PDdissipationNth2A,kmul(J33L,PDdissipationNth3A)));
- JacPDdissipationNth3alpha = J13L*PDdissipationNth1alpha +
- J23L*PDdissipationNth2alpha + J33L*PDdissipationNth3alpha;
+ JacPDdissipationNth3alpha =
+ kmadd(J13L,PDdissipationNth1alpha,kmadd(J23L,PDdissipationNth2alpha,kmul(J33L,PDdissipationNth3alpha)));
- JacPDdissipationNth3At11 = J13L*PDdissipationNth1At11 +
- J23L*PDdissipationNth2At11 + J33L*PDdissipationNth3At11;
+ JacPDdissipationNth3At11 =
+ kmadd(J13L,PDdissipationNth1At11,kmadd(J23L,PDdissipationNth2At11,kmul(J33L,PDdissipationNth3At11)));
- JacPDdissipationNth3At12 = J13L*PDdissipationNth1At12 +
- J23L*PDdissipationNth2At12 + J33L*PDdissipationNth3At12;
+ JacPDdissipationNth3At12 =
+ kmadd(J13L,PDdissipationNth1At12,kmadd(J23L,PDdissipationNth2At12,kmul(J33L,PDdissipationNth3At12)));
- JacPDdissipationNth3At13 = J13L*PDdissipationNth1At13 +
- J23L*PDdissipationNth2At13 + J33L*PDdissipationNth3At13;
+ JacPDdissipationNth3At13 =
+ kmadd(J13L,PDdissipationNth1At13,kmadd(J23L,PDdissipationNth2At13,kmul(J33L,PDdissipationNth3At13)));
- JacPDdissipationNth3At22 = J13L*PDdissipationNth1At22 +
- J23L*PDdissipationNth2At22 + J33L*PDdissipationNth3At22;
+ JacPDdissipationNth3At22 =
+ kmadd(J13L,PDdissipationNth1At22,kmadd(J23L,PDdissipationNth2At22,kmul(J33L,PDdissipationNth3At22)));
- JacPDdissipationNth3At23 = J13L*PDdissipationNth1At23 +
- J23L*PDdissipationNth2At23 + J33L*PDdissipationNth3At23;
+ JacPDdissipationNth3At23 =
+ kmadd(J13L,PDdissipationNth1At23,kmadd(J23L,PDdissipationNth2At23,kmul(J33L,PDdissipationNth3At23)));
- JacPDdissipationNth3At33 = J13L*PDdissipationNth1At33 +
- J23L*PDdissipationNth2At33 + J33L*PDdissipationNth3At33;
+ JacPDdissipationNth3At33 =
+ kmadd(J13L,PDdissipationNth1At33,kmadd(J23L,PDdissipationNth2At33,kmul(J33L,PDdissipationNth3At33)));
- JacPDdissipationNth3B1 = J13L*PDdissipationNth1B1 +
- J23L*PDdissipationNth2B1 + J33L*PDdissipationNth3B1;
+ JacPDdissipationNth3B1 =
+ kmadd(J13L,PDdissipationNth1B1,kmadd(J23L,PDdissipationNth2B1,kmul(J33L,PDdissipationNth3B1)));
- JacPDdissipationNth3B2 = J13L*PDdissipationNth1B2 +
- J23L*PDdissipationNth2B2 + J33L*PDdissipationNth3B2;
+ JacPDdissipationNth3B2 =
+ kmadd(J13L,PDdissipationNth1B2,kmadd(J23L,PDdissipationNth2B2,kmul(J33L,PDdissipationNth3B2)));
- JacPDdissipationNth3B3 = J13L*PDdissipationNth1B3 +
- J23L*PDdissipationNth2B3 + J33L*PDdissipationNth3B3;
+ JacPDdissipationNth3B3 =
+ kmadd(J13L,PDdissipationNth1B3,kmadd(J23L,PDdissipationNth2B3,kmul(J33L,PDdissipationNth3B3)));
- JacPDdissipationNth3beta1 = J13L*PDdissipationNth1beta1 +
- J23L*PDdissipationNth2beta1 + J33L*PDdissipationNth3beta1;
+ JacPDdissipationNth3beta1 =
+ kmadd(J13L,PDdissipationNth1beta1,kmadd(J23L,PDdissipationNth2beta1,kmul(J33L,PDdissipationNth3beta1)));
- JacPDdissipationNth3beta2 = J13L*PDdissipationNth1beta2 +
- J23L*PDdissipationNth2beta2 + J33L*PDdissipationNth3beta2;
+ JacPDdissipationNth3beta2 =
+ kmadd(J13L,PDdissipationNth1beta2,kmadd(J23L,PDdissipationNth2beta2,kmul(J33L,PDdissipationNth3beta2)));
- JacPDdissipationNth3beta3 = J13L*PDdissipationNth1beta3 +
- J23L*PDdissipationNth2beta3 + J33L*PDdissipationNth3beta3;
+ JacPDdissipationNth3beta3 =
+ kmadd(J13L,PDdissipationNth1beta3,kmadd(J23L,PDdissipationNth2beta3,kmul(J33L,PDdissipationNth3beta3)));
- JacPDdissipationNth3gt11 = J13L*PDdissipationNth1gt11 +
- J23L*PDdissipationNth2gt11 + J33L*PDdissipationNth3gt11;
+ JacPDdissipationNth3gt11 =
+ kmadd(J13L,PDdissipationNth1gt11,kmadd(J23L,PDdissipationNth2gt11,kmul(J33L,PDdissipationNth3gt11)));
- JacPDdissipationNth3gt12 = J13L*PDdissipationNth1gt12 +
- J23L*PDdissipationNth2gt12 + J33L*PDdissipationNth3gt12;
+ JacPDdissipationNth3gt12 =
+ kmadd(J13L,PDdissipationNth1gt12,kmadd(J23L,PDdissipationNth2gt12,kmul(J33L,PDdissipationNth3gt12)));
- JacPDdissipationNth3gt13 = J13L*PDdissipationNth1gt13 +
- J23L*PDdissipationNth2gt13 + J33L*PDdissipationNth3gt13;
+ JacPDdissipationNth3gt13 =
+ kmadd(J13L,PDdissipationNth1gt13,kmadd(J23L,PDdissipationNth2gt13,kmul(J33L,PDdissipationNth3gt13)));
- JacPDdissipationNth3gt22 = J13L*PDdissipationNth1gt22 +
- J23L*PDdissipationNth2gt22 + J33L*PDdissipationNth3gt22;
+ JacPDdissipationNth3gt22 =
+ kmadd(J13L,PDdissipationNth1gt22,kmadd(J23L,PDdissipationNth2gt22,kmul(J33L,PDdissipationNth3gt22)));
- JacPDdissipationNth3gt23 = J13L*PDdissipationNth1gt23 +
- J23L*PDdissipationNth2gt23 + J33L*PDdissipationNth3gt23;
+ JacPDdissipationNth3gt23 =
+ kmadd(J13L,PDdissipationNth1gt23,kmadd(J23L,PDdissipationNth2gt23,kmul(J33L,PDdissipationNth3gt23)));
- JacPDdissipationNth3gt33 = J13L*PDdissipationNth1gt33 +
- J23L*PDdissipationNth2gt33 + J33L*PDdissipationNth3gt33;
+ JacPDdissipationNth3gt33 =
+ kmadd(J13L,PDdissipationNth1gt33,kmadd(J23L,PDdissipationNth2gt33,kmul(J33L,PDdissipationNth3gt33)));
- JacPDdissipationNth3phi = J13L*PDdissipationNth1phi +
- J23L*PDdissipationNth2phi + J33L*PDdissipationNth3phi;
+ JacPDdissipationNth3phi =
+ kmadd(J13L,PDdissipationNth1phi,kmadd(J23L,PDdissipationNth2phi,kmul(J33L,PDdissipationNth3phi)));
- JacPDdissipationNth3trK = J13L*PDdissipationNth1trK +
- J23L*PDdissipationNth2trK + J33L*PDdissipationNth3trK;
+ JacPDdissipationNth3trK =
+ kmadd(J13L,PDdissipationNth1trK,kmadd(J23L,PDdissipationNth2trK,kmul(J33L,PDdissipationNth3trK)));
- JacPDdissipationNth3Xt1 = J13L*PDdissipationNth1Xt1 +
- J23L*PDdissipationNth2Xt1 + J33L*PDdissipationNth3Xt1;
+ JacPDdissipationNth3Xt1 =
+ kmadd(J13L,PDdissipationNth1Xt1,kmadd(J23L,PDdissipationNth2Xt1,kmul(J33L,PDdissipationNth3Xt1)));
- JacPDdissipationNth3Xt2 = J13L*PDdissipationNth1Xt2 +
- J23L*PDdissipationNth2Xt2 + J33L*PDdissipationNth3Xt2;
+ JacPDdissipationNth3Xt2 =
+ kmadd(J13L,PDdissipationNth1Xt2,kmadd(J23L,PDdissipationNth2Xt2,kmul(J33L,PDdissipationNth3Xt2)));
- JacPDdissipationNth3Xt3 = J13L*PDdissipationNth1Xt3 +
- J23L*PDdissipationNth2Xt3 + J33L*PDdissipationNth3Xt3;
+ JacPDdissipationNth3Xt3 =
+ kmadd(J13L,PDdissipationNth1Xt3,kmadd(J23L,PDdissipationNth2Xt3,kmul(J33L,PDdissipationNth3Xt3)));
}
else
{
@@ -783,124 +1154,213 @@ static void ML_BSSN_MP_Dissipation_Body(cGH const * restrict const cctkGH, int c
JacPDdissipationNth3Xt3 = PDdissipationNth3Xt3;
}
- CCTK_REAL epsdiss1 = ToReal(EpsDiss);
+ CCTK_REAL_VEC epsdiss1 = ToReal(EpsDiss);
+
+ CCTK_REAL_VEC epsdiss2 = ToReal(EpsDiss);
- CCTK_REAL epsdiss2 = ToReal(EpsDiss);
+ CCTK_REAL_VEC epsdiss3 = ToReal(EpsDiss);
- CCTK_REAL epsdiss3 = ToReal(EpsDiss);
+ phirhsL =
+ kmadd(epsdiss1,JacPDdissipationNth1phi,kmadd(epsdiss2,JacPDdissipationNth2phi,kmadd(epsdiss3,JacPDdissipationNth3phi,phirhsL)));
- phirhsL = epsdiss1*JacPDdissipationNth1phi +
- epsdiss2*JacPDdissipationNth2phi + epsdiss3*JacPDdissipationNth3phi +
- phirhsL;
+ gt11rhsL =
+ kadd(gt11rhsL,kmadd(epsdiss1,JacPDdissipationNth1gt11,kmadd(epsdiss2,JacPDdissipationNth2gt11,kmul(epsdiss3,JacPDdissipationNth3gt11))));
- gt11rhsL = gt11rhsL + epsdiss1*JacPDdissipationNth1gt11 +
- epsdiss2*JacPDdissipationNth2gt11 + epsdiss3*JacPDdissipationNth3gt11;
+ gt12rhsL =
+ kadd(gt12rhsL,kmadd(epsdiss1,JacPDdissipationNth1gt12,kmadd(epsdiss2,JacPDdissipationNth2gt12,kmul(epsdiss3,JacPDdissipationNth3gt12))));
- gt12rhsL = gt12rhsL + epsdiss1*JacPDdissipationNth1gt12 +
- epsdiss2*JacPDdissipationNth2gt12 + epsdiss3*JacPDdissipationNth3gt12;
+ gt13rhsL =
+ kadd(gt13rhsL,kmadd(epsdiss1,JacPDdissipationNth1gt13,kmadd(epsdiss2,JacPDdissipationNth2gt13,kmul(epsdiss3,JacPDdissipationNth3gt13))));
- gt13rhsL = gt13rhsL + epsdiss1*JacPDdissipationNth1gt13 +
- epsdiss2*JacPDdissipationNth2gt13 + epsdiss3*JacPDdissipationNth3gt13;
+ gt22rhsL =
+ kadd(gt22rhsL,kmadd(epsdiss1,JacPDdissipationNth1gt22,kmadd(epsdiss2,JacPDdissipationNth2gt22,kmul(epsdiss3,JacPDdissipationNth3gt22))));
- gt22rhsL = gt22rhsL + epsdiss1*JacPDdissipationNth1gt22 +
- epsdiss2*JacPDdissipationNth2gt22 + epsdiss3*JacPDdissipationNth3gt22;
+ gt23rhsL =
+ kadd(gt23rhsL,kmadd(epsdiss1,JacPDdissipationNth1gt23,kmadd(epsdiss2,JacPDdissipationNth2gt23,kmul(epsdiss3,JacPDdissipationNth3gt23))));
- gt23rhsL = gt23rhsL + epsdiss1*JacPDdissipationNth1gt23 +
- epsdiss2*JacPDdissipationNth2gt23 + epsdiss3*JacPDdissipationNth3gt23;
+ gt33rhsL =
+ kadd(gt33rhsL,kmadd(epsdiss1,JacPDdissipationNth1gt33,kmadd(epsdiss2,JacPDdissipationNth2gt33,kmul(epsdiss3,JacPDdissipationNth3gt33))));
- gt33rhsL = gt33rhsL + epsdiss1*JacPDdissipationNth1gt33 +
- epsdiss2*JacPDdissipationNth2gt33 + epsdiss3*JacPDdissipationNth3gt33;
+ Xt1rhsL =
+ kmadd(epsdiss1,JacPDdissipationNth1Xt1,kmadd(epsdiss2,JacPDdissipationNth2Xt1,kmadd(epsdiss3,JacPDdissipationNth3Xt1,Xt1rhsL)));
- Xt1rhsL = epsdiss1*JacPDdissipationNth1Xt1 +
- epsdiss2*JacPDdissipationNth2Xt1 + epsdiss3*JacPDdissipationNth3Xt1 +
- Xt1rhsL;
+ Xt2rhsL =
+ kmadd(epsdiss1,JacPDdissipationNth1Xt2,kmadd(epsdiss2,JacPDdissipationNth2Xt2,kmadd(epsdiss3,JacPDdissipationNth3Xt2,Xt2rhsL)));
- Xt2rhsL = epsdiss1*JacPDdissipationNth1Xt2 +
- epsdiss2*JacPDdissipationNth2Xt2 + epsdiss3*JacPDdissipationNth3Xt2 +
- Xt2rhsL;
+ Xt3rhsL =
+ kmadd(epsdiss1,JacPDdissipationNth1Xt3,kmadd(epsdiss2,JacPDdissipationNth2Xt3,kmadd(epsdiss3,JacPDdissipationNth3Xt3,Xt3rhsL)));
- Xt3rhsL = epsdiss1*JacPDdissipationNth1Xt3 +
- epsdiss2*JacPDdissipationNth2Xt3 + epsdiss3*JacPDdissipationNth3Xt3 +
- Xt3rhsL;
+ trKrhsL =
+ kmadd(epsdiss1,JacPDdissipationNth1trK,kmadd(epsdiss2,JacPDdissipationNth2trK,kmadd(epsdiss3,JacPDdissipationNth3trK,trKrhsL)));
- trKrhsL = epsdiss1*JacPDdissipationNth1trK +
- epsdiss2*JacPDdissipationNth2trK + epsdiss3*JacPDdissipationNth3trK +
- trKrhsL;
+ At11rhsL =
+ kadd(At11rhsL,kmadd(epsdiss1,JacPDdissipationNth1At11,kmadd(epsdiss2,JacPDdissipationNth2At11,kmul(epsdiss3,JacPDdissipationNth3At11))));
- At11rhsL = At11rhsL + epsdiss1*JacPDdissipationNth1At11 +
- epsdiss2*JacPDdissipationNth2At11 + epsdiss3*JacPDdissipationNth3At11;
+ At12rhsL =
+ kadd(At12rhsL,kmadd(epsdiss1,JacPDdissipationNth1At12,kmadd(epsdiss2,JacPDdissipationNth2At12,kmul(epsdiss3,JacPDdissipationNth3At12))));
- At12rhsL = At12rhsL + epsdiss1*JacPDdissipationNth1At12 +
- epsdiss2*JacPDdissipationNth2At12 + epsdiss3*JacPDdissipationNth3At12;
+ At13rhsL =
+ kadd(At13rhsL,kmadd(epsdiss1,JacPDdissipationNth1At13,kmadd(epsdiss2,JacPDdissipationNth2At13,kmul(epsdiss3,JacPDdissipationNth3At13))));
- At13rhsL = At13rhsL + epsdiss1*JacPDdissipationNth1At13 +
- epsdiss2*JacPDdissipationNth2At13 + epsdiss3*JacPDdissipationNth3At13;
+ At22rhsL =
+ kadd(At22rhsL,kmadd(epsdiss1,JacPDdissipationNth1At22,kmadd(epsdiss2,JacPDdissipationNth2At22,kmul(epsdiss3,JacPDdissipationNth3At22))));
- At22rhsL = At22rhsL + epsdiss1*JacPDdissipationNth1At22 +
- epsdiss2*JacPDdissipationNth2At22 + epsdiss3*JacPDdissipationNth3At22;
+ At23rhsL =
+ kadd(At23rhsL,kmadd(epsdiss1,JacPDdissipationNth1At23,kmadd(epsdiss2,JacPDdissipationNth2At23,kmul(epsdiss3,JacPDdissipationNth3At23))));
- At23rhsL = At23rhsL + epsdiss1*JacPDdissipationNth1At23 +
- epsdiss2*JacPDdissipationNth2At23 + epsdiss3*JacPDdissipationNth3At23;
+ At33rhsL =
+ kadd(At33rhsL,kmadd(epsdiss1,JacPDdissipationNth1At33,kmadd(epsdiss2,JacPDdissipationNth2At33,kmul(epsdiss3,JacPDdissipationNth3At33))));
- At33rhsL = At33rhsL + epsdiss1*JacPDdissipationNth1At33 +
- epsdiss2*JacPDdissipationNth2At33 + epsdiss3*JacPDdissipationNth3At33;
+ alpharhsL =
+ kadd(alpharhsL,kmadd(epsdiss1,JacPDdissipationNth1alpha,kmadd(epsdiss2,JacPDdissipationNth2alpha,kmul(epsdiss3,JacPDdissipationNth3alpha))));
- alpharhsL = alpharhsL + epsdiss1*JacPDdissipationNth1alpha +
- epsdiss2*JacPDdissipationNth2alpha +
- epsdiss3*JacPDdissipationNth3alpha;
+ ArhsL =
+ kadd(ArhsL,kmadd(epsdiss1,JacPDdissipationNth1A,kmadd(epsdiss2,JacPDdissipationNth2A,kmul(epsdiss3,JacPDdissipationNth3A))));
- ArhsL = ArhsL + epsdiss1*JacPDdissipationNth1A +
- epsdiss2*JacPDdissipationNth2A + epsdiss3*JacPDdissipationNth3A;
+ beta1rhsL =
+ kadd(beta1rhsL,kmadd(epsdiss1,JacPDdissipationNth1beta1,kmadd(epsdiss2,JacPDdissipationNth2beta1,kmul(epsdiss3,JacPDdissipationNth3beta1))));
- beta1rhsL = beta1rhsL + epsdiss1*JacPDdissipationNth1beta1 +
- epsdiss2*JacPDdissipationNth2beta1 +
- epsdiss3*JacPDdissipationNth3beta1;
+ beta2rhsL =
+ kadd(beta2rhsL,kmadd(epsdiss1,JacPDdissipationNth1beta2,kmadd(epsdiss2,JacPDdissipationNth2beta2,kmul(epsdiss3,JacPDdissipationNth3beta2))));
- beta2rhsL = beta2rhsL + epsdiss1*JacPDdissipationNth1beta2 +
- epsdiss2*JacPDdissipationNth2beta2 +
- epsdiss3*JacPDdissipationNth3beta2;
+ beta3rhsL =
+ kadd(beta3rhsL,kmadd(epsdiss1,JacPDdissipationNth1beta3,kmadd(epsdiss2,JacPDdissipationNth2beta3,kmul(epsdiss3,JacPDdissipationNth3beta3))));
- beta3rhsL = beta3rhsL + epsdiss1*JacPDdissipationNth1beta3 +
- epsdiss2*JacPDdissipationNth2beta3 +
- epsdiss3*JacPDdissipationNth3beta3;
+ B1rhsL =
+ kadd(B1rhsL,kmadd(epsdiss1,JacPDdissipationNth1B1,kmadd(epsdiss2,JacPDdissipationNth2B1,kmul(epsdiss3,JacPDdissipationNth3B1))));
- B1rhsL = B1rhsL + epsdiss1*JacPDdissipationNth1B1 +
- epsdiss2*JacPDdissipationNth2B1 + epsdiss3*JacPDdissipationNth3B1;
+ B2rhsL =
+ kadd(B2rhsL,kmadd(epsdiss1,JacPDdissipationNth1B2,kmadd(epsdiss2,JacPDdissipationNth2B2,kmul(epsdiss3,JacPDdissipationNth3B2))));
- B2rhsL = B2rhsL + epsdiss1*JacPDdissipationNth1B2 +
- epsdiss2*JacPDdissipationNth2B2 + epsdiss3*JacPDdissipationNth3B2;
+ B3rhsL =
+ kadd(B3rhsL,kmadd(epsdiss1,JacPDdissipationNth1B3,kmadd(epsdiss2,JacPDdissipationNth2B3,kmul(epsdiss3,JacPDdissipationNth3B3))));
- B3rhsL = B3rhsL + epsdiss1*JacPDdissipationNth1B3 +
- epsdiss2*JacPDdissipationNth2B3 + epsdiss3*JacPDdissipationNth3B3;
+ /* If necessary, store only partial vectors after the first iteration */
- /* Copy local copies back to grid functions */
- alpharhs[index] = alpharhsL;
- Arhs[index] = ArhsL;
- At11rhs[index] = At11rhsL;
- At12rhs[index] = At12rhsL;
- At13rhs[index] = At13rhsL;
- At22rhs[index] = At22rhsL;
- At23rhs[index] = At23rhsL;
- At33rhs[index] = At33rhsL;
- B1rhs[index] = B1rhsL;
- B2rhs[index] = B2rhsL;
- B3rhs[index] = B3rhsL;
- beta1rhs[index] = beta1rhsL;
- beta2rhs[index] = beta2rhsL;
- beta3rhs[index] = beta3rhsL;
- gt11rhs[index] = gt11rhsL;
- gt12rhs[index] = gt12rhsL;
- gt13rhs[index] = gt13rhsL;
- gt22rhs[index] = gt22rhsL;
- gt23rhs[index] = gt23rhsL;
- gt33rhs[index] = gt33rhsL;
- phirhs[index] = phirhsL;
- trKrhs[index] = trKrhsL;
- Xt1rhs[index] = Xt1rhsL;
- Xt2rhs[index] = Xt2rhsL;
- Xt3rhs[index] = Xt3rhsL;
+ 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(Arhs[index],ArhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At11rhs[index],At11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At12rhs[index],At12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At13rhs[index],At13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At22rhs[index],At22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At23rhs[index],At23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At33rhs[index],At33rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B1rhs[index],B1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B2rhs[index],B2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt12rhs[index],gt12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt13rhs[index],gt13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt22rhs[index],gt22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt23rhs[index],gt23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt33rhs[index],gt33rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(phirhs[index],phirhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(trKrhs[index],trKrhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt1rhs[index],Xt1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt2rhs[index],Xt2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt3rhs[index],Xt3rhsL,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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_hi(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_hi(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_hi(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_hi(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_hi(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_hi(At33rhs[index],At33rhsL,elt_count);
+ vec_store_nta_partial_hi(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_hi(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_hi(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_hi(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_hi(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_hi(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_hi(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_hi(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_hi(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_hi(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_hi(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt3rhs[index],Xt3rhsL,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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_lo(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_lo(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_lo(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_lo(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_lo(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_lo(At33rhs[index],At33rhsL,elt_count);
+ vec_store_nta_partial_lo(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_lo(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_lo(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_lo(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_lo(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_lo(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_lo(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_lo(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_lo(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_lo(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_lo(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt3rhs[index],Xt3rhsL,elt_count);
+ break;
+ }
+ vec_store_nta(alpharhs[index],alpharhsL);
+ vec_store_nta(Arhs[index],ArhsL);
+ vec_store_nta(At11rhs[index],At11rhsL);
+ vec_store_nta(At12rhs[index],At12rhsL);
+ vec_store_nta(At13rhs[index],At13rhsL);
+ vec_store_nta(At22rhs[index],At22rhsL);
+ vec_store_nta(At23rhs[index],At23rhsL);
+ vec_store_nta(At33rhs[index],At33rhsL);
+ vec_store_nta(B1rhs[index],B1rhsL);
+ vec_store_nta(B2rhs[index],B2rhsL);
+ vec_store_nta(B3rhs[index],B3rhsL);
+ vec_store_nta(beta1rhs[index],beta1rhsL);
+ vec_store_nta(beta2rhs[index],beta2rhsL);
+ vec_store_nta(beta3rhs[index],beta3rhsL);
+ vec_store_nta(gt11rhs[index],gt11rhsL);
+ vec_store_nta(gt12rhs[index],gt12rhsL);
+ vec_store_nta(gt13rhs[index],gt13rhsL);
+ vec_store_nta(gt22rhs[index],gt22rhsL);
+ vec_store_nta(gt23rhs[index],gt23rhsL);
+ vec_store_nta(gt33rhs[index],gt33rhsL);
+ vec_store_nta(phirhs[index],phirhsL);
+ vec_store_nta(trKrhs[index],trKrhsL);
+ vec_store_nta(Xt1rhs[index],Xt1rhsL);
+ vec_store_nta(Xt2rhs[index],Xt2rhsL);
+ vec_store_nta(Xt3rhs[index],Xt3rhsL);
}
- LC_ENDLOOP3 (ML_BSSN_MP_Dissipation);
+ LC_ENDLOOP3VEC (ML_BSSN_MP_Dissipation);
}
extern "C" void ML_BSSN_MP_Dissipation(CCTK_ARGUMENTS)
@@ -908,5 +1368,43 @@ extern "C" void ML_BSSN_MP_Dissipation(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_Dissipation_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_MP_Dissipation_calc_every != ML_BSSN_MP_Dissipation_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN_MP::ML_curv","ML_BSSN_MP::ML_curvrhs","ML_BSSN_MP::ML_dtlapse","ML_BSSN_MP::ML_dtlapserhs","ML_BSSN_MP::ML_dtshift","ML_BSSN_MP::ML_dtshiftrhs","ML_BSSN_MP::ML_Gamma","ML_BSSN_MP::ML_Gammarhs","ML_BSSN_MP::ML_lapse","ML_BSSN_MP::ML_lapserhs","ML_BSSN_MP::ML_log_confac","ML_BSSN_MP::ML_log_confacrhs","ML_BSSN_MP::ML_metric","ML_BSSN_MP::ML_metricrhs","ML_BSSN_MP::ML_shift","ML_BSSN_MP::ML_shiftrhs","ML_BSSN_MP::ML_trace_curv","ML_BSSN_MP::ML_trace_curvrhs"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_Dissipation", 18, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_Dissipation", 2, 2, 2);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_Dissipation", 3, 3, 3);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_Dissipation", 4, 4, 4);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_Dissipation", 5, 5, 5);
+ break;
+ }
+
GenericFD_LoopOverInterior(cctkGH, &ML_BSSN_MP_Dissipation_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_MP_Dissipation_Body");
+ }
}
diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_InitGamma.cc b/ML_BSSN_MP/src/ML_BSSN_MP_InitGamma.cc
index 555be09..3682656 100644
--- a/ML_BSSN_MP/src/ML_BSSN_MP_InitGamma.cc
+++ b/ML_BSSN_MP/src/ML_BSSN_MP_InitGamma.cc
@@ -13,15 +13,16 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
-static void ML_BSSN_MP_InitGamma_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_MP_InitGamma_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const imin[3], int const imax[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
{
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
@@ -29,20 +30,6 @@ static void ML_BSSN_MP_InitGamma_Body(cGH const * restrict const cctkGH, int con
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_InitGamma_Body");
- }
-
- if (cctk_iteration % ML_BSSN_MP_InitGamma_calc_every != ML_BSSN_MP_InitGamma_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN_MP::ML_Gamma"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_InitGamma", 1, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -52,41 +39,102 @@ static void ML_BSSN_MP_InitGamma_Body(cGH const * restrict const cctkGH, int con
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const p1o24dx = 0.0416666666666666666666666666667*INV(dx);
- CCTK_REAL const p1o24dy = 0.0416666666666666666666666666667*INV(dy);
- CCTK_REAL const p1o24dz = 0.0416666666666666666666666666667*INV(dz);
- CCTK_REAL const p1o64dx = 0.015625*INV(dx);
- CCTK_REAL const p1o64dy = 0.015625*INV(dy);
- CCTK_REAL const p1o64dz = 0.015625*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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)
@@ -133,11 +181,20 @@ static void ML_BSSN_MP_InitGamma_Body(cGH const * restrict const cctkGH, int con
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_LOOP3 (ML_BSSN_MP_InitGamma,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_MP_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;
@@ -150,19 +207,90 @@ static void ML_BSSN_MP_InitGamma_Body(cGH const * restrict const cctkGH, int con
/* Precompute derivatives */
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
/* Calculate temporaries and grid functions */
- CCTK_REAL Xt1L = 0;
+ 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);
+
+ /* If necessary, store only partial vectors after the first iteration */
- CCTK_REAL Xt2L = 0;
+ 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(A[index],AL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B1[index],B1L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B2[index],B2L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B3[index],B3L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt1[index],Xt1L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt2[index],Xt2L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt3[index],Xt3L,elt_count_lo,elt_count_hi);
+ break;
+ }
- CCTK_REAL Xt3L = 0;
+ /* If necessary, store only partial vectors after the first iteration */
- /* Copy local copies back to grid functions */
- Xt1[index] = Xt1L;
- Xt2[index] = Xt2L;
- Xt3[index] = Xt3L;
+ 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(A[index],AL,elt_count);
+ vec_store_nta_partial_hi(B1[index],B1L,elt_count);
+ vec_store_nta_partial_hi(B2[index],B2L,elt_count);
+ vec_store_nta_partial_hi(B3[index],B3L,elt_count);
+ vec_store_nta_partial_hi(Xt1[index],Xt1L,elt_count);
+ vec_store_nta_partial_hi(Xt2[index],Xt2L,elt_count);
+ vec_store_nta_partial_hi(Xt3[index],Xt3L,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(A[index],AL,elt_count);
+ vec_store_nta_partial_lo(B1[index],B1L,elt_count);
+ vec_store_nta_partial_lo(B2[index],B2L,elt_count);
+ vec_store_nta_partial_lo(B3[index],B3L,elt_count);
+ vec_store_nta_partial_lo(Xt1[index],Xt1L,elt_count);
+ vec_store_nta_partial_lo(Xt2[index],Xt2L,elt_count);
+ vec_store_nta_partial_lo(Xt3[index],Xt3L,elt_count);
+ break;
+ }
+ vec_store_nta(A[index],AL);
+ vec_store_nta(B1[index],B1L);
+ vec_store_nta(B2[index],B2L);
+ vec_store_nta(B3[index],B3L);
+ vec_store_nta(Xt1[index],Xt1L);
+ vec_store_nta(Xt2[index],Xt2L);
+ vec_store_nta(Xt3[index],Xt3L);
}
- LC_ENDLOOP3 (ML_BSSN_MP_InitGamma);
+ LC_ENDLOOP3VEC (ML_BSSN_MP_InitGamma);
}
extern "C" void ML_BSSN_MP_InitGamma(CCTK_ARGUMENTS)
@@ -170,5 +298,39 @@ extern "C" void ML_BSSN_MP_InitGamma(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_InitGamma_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_MP_InitGamma_calc_every != ML_BSSN_MP_InitGamma_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN_MP::ML_dtlapse","ML_BSSN_MP::ML_dtshift","ML_BSSN_MP::ML_Gamma"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_InitGamma", 3, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverEverything(cctkGH, &ML_BSSN_MP_InitGamma_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_MP_InitGamma_Body");
+ }
}
diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_InitRHS.cc b/ML_BSSN_MP/src/ML_BSSN_MP_InitRHS.cc
index a40c62f..6d682b2 100644
--- a/ML_BSSN_MP/src/ML_BSSN_MP_InitRHS.cc
+++ b/ML_BSSN_MP/src/ML_BSSN_MP_InitRHS.cc
@@ -13,15 +13,16 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
-static void ML_BSSN_MP_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_MP_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;
@@ -29,20 +30,6 @@ static void ML_BSSN_MP_InitRHS_Body(cGH const * restrict const cctkGH, int const
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_InitRHS_Body");
- }
-
- if (cctk_iteration % ML_BSSN_MP_InitRHS_calc_every != ML_BSSN_MP_InitRHS_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN_MP::ML_curvrhs","ML_BSSN_MP::ML_dtlapserhs","ML_BSSN_MP::ML_dtshiftrhs","ML_BSSN_MP::ML_Gammarhs","ML_BSSN_MP::ML_lapserhs","ML_BSSN_MP::ML_log_confacrhs","ML_BSSN_MP::ML_metricrhs","ML_BSSN_MP::ML_shiftrhs","ML_BSSN_MP::ML_trace_curvrhs"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_InitRHS", 9, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -52,41 +39,102 @@ static void ML_BSSN_MP_InitRHS_Body(cGH const * restrict const cctkGH, int const
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const p1o24dx = 0.0416666666666666666666666666667*INV(dx);
- CCTK_REAL const p1o24dy = 0.0416666666666666666666666666667*INV(dy);
- CCTK_REAL const p1o24dz = 0.0416666666666666666666666666667*INV(dz);
- CCTK_REAL const p1o64dx = 0.015625*INV(dx);
- CCTK_REAL const p1o64dy = 0.015625*INV(dy);
- CCTK_REAL const p1o64dz = 0.015625*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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)
@@ -133,11 +181,20 @@ static void ML_BSSN_MP_InitRHS_Body(cGH const * restrict const cctkGH, int const
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_LOOP3 (ML_BSSN_MP_InitRHS,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_MP_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;
@@ -150,85 +207,198 @@ static void ML_BSSN_MP_InitRHS_Body(cGH const * restrict const cctkGH, int const
/* Precompute derivatives */
- /* Calculate temporaries and grid functions */
- CCTK_REAL phirhsL = 0;
-
- CCTK_REAL gt11rhsL = 0;
-
- CCTK_REAL gt12rhsL = 0;
-
- CCTK_REAL gt13rhsL = 0;
-
- CCTK_REAL gt22rhsL = 0;
-
- CCTK_REAL gt23rhsL = 0;
-
- CCTK_REAL gt33rhsL = 0;
-
- CCTK_REAL trKrhsL = 0;
-
- CCTK_REAL At11rhsL = 0;
-
- CCTK_REAL At12rhsL = 0;
-
- CCTK_REAL At13rhsL = 0;
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
- CCTK_REAL At22rhsL = 0;
-
- CCTK_REAL At23rhsL = 0;
-
- CCTK_REAL At33rhsL = 0;
-
- CCTK_REAL Xt1rhsL = 0;
-
- CCTK_REAL Xt2rhsL = 0;
+ /* Calculate temporaries and grid functions */
+ CCTK_REAL_VEC phirhsL = ToReal(0);
- CCTK_REAL Xt3rhsL = 0;
+ CCTK_REAL_VEC gt11rhsL = ToReal(0);
- CCTK_REAL alpharhsL = 0;
+ CCTK_REAL_VEC gt12rhsL = ToReal(0);
- CCTK_REAL ArhsL = 0;
+ CCTK_REAL_VEC gt13rhsL = ToReal(0);
- CCTK_REAL beta1rhsL = 0;
+ CCTK_REAL_VEC gt22rhsL = ToReal(0);
- CCTK_REAL beta2rhsL = 0;
+ CCTK_REAL_VEC gt23rhsL = ToReal(0);
- CCTK_REAL beta3rhsL = 0;
+ CCTK_REAL_VEC gt33rhsL = ToReal(0);
- CCTK_REAL B1rhsL = 0;
+ CCTK_REAL_VEC trKrhsL = ToReal(0);
+
+ CCTK_REAL_VEC At11rhsL = ToReal(0);
- CCTK_REAL B2rhsL = 0;
+ CCTK_REAL_VEC At12rhsL = ToReal(0);
- CCTK_REAL B3rhsL = 0;
+ CCTK_REAL_VEC At13rhsL = ToReal(0);
- /* Copy local copies back to grid functions */
- alpharhs[index] = alpharhsL;
- Arhs[index] = ArhsL;
- At11rhs[index] = At11rhsL;
- At12rhs[index] = At12rhsL;
- At13rhs[index] = At13rhsL;
- At22rhs[index] = At22rhsL;
- At23rhs[index] = At23rhsL;
- At33rhs[index] = At33rhsL;
- B1rhs[index] = B1rhsL;
- B2rhs[index] = B2rhsL;
- B3rhs[index] = B3rhsL;
- beta1rhs[index] = beta1rhsL;
- beta2rhs[index] = beta2rhsL;
- beta3rhs[index] = beta3rhsL;
- gt11rhs[index] = gt11rhsL;
- gt12rhs[index] = gt12rhsL;
- gt13rhs[index] = gt13rhsL;
- gt22rhs[index] = gt22rhsL;
- gt23rhs[index] = gt23rhsL;
- gt33rhs[index] = gt33rhsL;
- phirhs[index] = phirhsL;
- trKrhs[index] = trKrhsL;
- Xt1rhs[index] = Xt1rhsL;
- Xt2rhs[index] = Xt2rhsL;
- Xt3rhs[index] = Xt3rhsL;
+ 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);
+
+ /* 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(Arhs[index],ArhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At11rhs[index],At11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At12rhs[index],At12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At13rhs[index],At13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At22rhs[index],At22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At23rhs[index],At23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At33rhs[index],At33rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B1rhs[index],B1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B2rhs[index],B2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt12rhs[index],gt12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt13rhs[index],gt13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt22rhs[index],gt22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt23rhs[index],gt23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt33rhs[index],gt33rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(phirhs[index],phirhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(trKrhs[index],trKrhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt1rhs[index],Xt1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt2rhs[index],Xt2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt3rhs[index],Xt3rhsL,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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_hi(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_hi(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_hi(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_hi(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_hi(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_hi(At33rhs[index],At33rhsL,elt_count);
+ vec_store_nta_partial_hi(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_hi(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_hi(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_hi(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_hi(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_hi(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_hi(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_hi(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_hi(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_hi(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_hi(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt3rhs[index],Xt3rhsL,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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_lo(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_lo(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_lo(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_lo(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_lo(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_lo(At33rhs[index],At33rhsL,elt_count);
+ vec_store_nta_partial_lo(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_lo(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_lo(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_lo(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_lo(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_lo(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_lo(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_lo(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_lo(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_lo(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_lo(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt3rhs[index],Xt3rhsL,elt_count);
+ break;
+ }
+ vec_store_nta(alpharhs[index],alpharhsL);
+ vec_store_nta(Arhs[index],ArhsL);
+ vec_store_nta(At11rhs[index],At11rhsL);
+ vec_store_nta(At12rhs[index],At12rhsL);
+ vec_store_nta(At13rhs[index],At13rhsL);
+ vec_store_nta(At22rhs[index],At22rhsL);
+ vec_store_nta(At23rhs[index],At23rhsL);
+ vec_store_nta(At33rhs[index],At33rhsL);
+ vec_store_nta(B1rhs[index],B1rhsL);
+ vec_store_nta(B2rhs[index],B2rhsL);
+ vec_store_nta(B3rhs[index],B3rhsL);
+ vec_store_nta(beta1rhs[index],beta1rhsL);
+ vec_store_nta(beta2rhs[index],beta2rhsL);
+ vec_store_nta(beta3rhs[index],beta3rhsL);
+ vec_store_nta(gt11rhs[index],gt11rhsL);
+ vec_store_nta(gt12rhs[index],gt12rhsL);
+ vec_store_nta(gt13rhs[index],gt13rhsL);
+ vec_store_nta(gt22rhs[index],gt22rhsL);
+ vec_store_nta(gt23rhs[index],gt23rhsL);
+ vec_store_nta(gt33rhs[index],gt33rhsL);
+ vec_store_nta(phirhs[index],phirhsL);
+ vec_store_nta(trKrhs[index],trKrhsL);
+ vec_store_nta(Xt1rhs[index],Xt1rhsL);
+ vec_store_nta(Xt2rhs[index],Xt2rhsL);
+ vec_store_nta(Xt3rhs[index],Xt3rhsL);
}
- LC_ENDLOOP3 (ML_BSSN_MP_InitRHS);
+ LC_ENDLOOP3VEC (ML_BSSN_MP_InitRHS);
}
extern "C" void ML_BSSN_MP_InitRHS(CCTK_ARGUMENTS)
@@ -236,5 +406,39 @@ extern "C" void ML_BSSN_MP_InitRHS(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_InitRHS_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_MP_InitRHS_calc_every != ML_BSSN_MP_InitRHS_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN_MP::ML_curvrhs","ML_BSSN_MP::ML_dtlapserhs","ML_BSSN_MP::ML_dtshiftrhs","ML_BSSN_MP::ML_Gammarhs","ML_BSSN_MP::ML_lapserhs","ML_BSSN_MP::ML_log_confacrhs","ML_BSSN_MP::ML_metricrhs","ML_BSSN_MP::ML_shiftrhs","ML_BSSN_MP::ML_trace_curvrhs"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_InitRHS", 9, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverEverything(cctkGH, &ML_BSSN_MP_InitRHS_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_MP_InitRHS_Body");
+ }
}
diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_Minkowski.cc b/ML_BSSN_MP/src/ML_BSSN_MP_Minkowski.cc
index 81e737b..95d3c05 100644
--- a/ML_BSSN_MP/src/ML_BSSN_MP_Minkowski.cc
+++ b/ML_BSSN_MP/src/ML_BSSN_MP_Minkowski.cc
@@ -13,15 +13,16 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
-static void ML_BSSN_MP_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_MP_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;
@@ -29,20 +30,6 @@ static void ML_BSSN_MP_Minkowski_Body(cGH const * restrict const cctkGH, int con
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_Minkowski_Body");
- }
-
- if (cctk_iteration % ML_BSSN_MP_Minkowski_calc_every != ML_BSSN_MP_Minkowski_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN_MP::ML_curv","ML_BSSN_MP::ML_dtlapse","ML_BSSN_MP::ML_dtshift","ML_BSSN_MP::ML_Gamma","ML_BSSN_MP::ML_lapse","ML_BSSN_MP::ML_log_confac","ML_BSSN_MP::ML_metric","ML_BSSN_MP::ML_shift","ML_BSSN_MP::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_Minkowski", 9, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -52,41 +39,102 @@ static void ML_BSSN_MP_Minkowski_Body(cGH const * restrict const cctkGH, int con
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const p1o24dx = 0.0416666666666666666666666666667*INV(dx);
- CCTK_REAL const p1o24dy = 0.0416666666666666666666666666667*INV(dy);
- CCTK_REAL const p1o24dz = 0.0416666666666666666666666666667*INV(dz);
- CCTK_REAL const p1o64dx = 0.015625*INV(dx);
- CCTK_REAL const p1o64dy = 0.015625*INV(dy);
- CCTK_REAL const p1o64dz = 0.015625*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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)
@@ -133,11 +181,20 @@ static void ML_BSSN_MP_Minkowski_Body(cGH const * restrict const cctkGH, int con
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_LOOP3 (ML_BSSN_MP_Minkowski,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_MP_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;
@@ -150,85 +207,198 @@ static void ML_BSSN_MP_Minkowski_Body(cGH const * restrict const cctkGH, int con
/* Precompute derivatives */
- /* Calculate temporaries and grid functions */
- CCTK_REAL phiL = IfThen(conformalMethod,1,0);
-
- CCTK_REAL gt11L = 1;
-
- CCTK_REAL gt12L = 0;
-
- CCTK_REAL gt13L = 0;
-
- CCTK_REAL gt22L = 1;
-
- CCTK_REAL gt23L = 0;
-
- CCTK_REAL gt33L = 1;
-
- CCTK_REAL trKL = 0;
-
- CCTK_REAL At11L = 0;
-
- CCTK_REAL At12L = 0;
-
- CCTK_REAL At13L = 0;
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
- CCTK_REAL At22L = 0;
-
- CCTK_REAL At23L = 0;
-
- CCTK_REAL At33L = 0;
-
- CCTK_REAL Xt1L = 0;
-
- CCTK_REAL Xt2L = 0;
+ /* Calculate temporaries and grid functions */
+ CCTK_REAL_VEC phiL = IfThen(conformalMethod,ToReal(1),ToReal(0));
- CCTK_REAL Xt3L = 0;
+ CCTK_REAL_VEC gt11L = ToReal(1);
- CCTK_REAL alphaL = 1;
+ CCTK_REAL_VEC gt12L = ToReal(0);
- CCTK_REAL AL = 0;
+ CCTK_REAL_VEC gt13L = ToReal(0);
- CCTK_REAL beta1L = 0;
+ CCTK_REAL_VEC gt22L = ToReal(1);
- CCTK_REAL beta2L = 0;
+ CCTK_REAL_VEC gt23L = ToReal(0);
- CCTK_REAL beta3L = 0;
+ CCTK_REAL_VEC gt33L = ToReal(1);
- CCTK_REAL B1L = 0;
+ CCTK_REAL_VEC trKL = ToReal(0);
+
+ CCTK_REAL_VEC At11L = ToReal(0);
- CCTK_REAL B2L = 0;
+ CCTK_REAL_VEC At12L = ToReal(0);
- CCTK_REAL B3L = 0;
+ CCTK_REAL_VEC At13L = ToReal(0);
- /* Copy local copies back to grid functions */
- A[index] = AL;
- alpha[index] = alphaL;
- At11[index] = At11L;
- At12[index] = At12L;
- At13[index] = At13L;
- At22[index] = At22L;
- At23[index] = At23L;
- At33[index] = At33L;
- B1[index] = B1L;
- B2[index] = B2L;
- B3[index] = B3L;
- beta1[index] = beta1L;
- beta2[index] = beta2L;
- beta3[index] = beta3L;
- gt11[index] = gt11L;
- gt12[index] = gt12L;
- gt13[index] = gt13L;
- gt22[index] = gt22L;
- gt23[index] = gt23L;
- gt33[index] = gt33L;
- phi[index] = phiL;
- trK[index] = trKL;
- Xt1[index] = Xt1L;
- Xt2[index] = Xt2L;
- Xt3[index] = Xt3L;
+ 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);
+
+ /* 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(A[index],AL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(alpha[index],alphaL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At11[index],At11L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At12[index],At12L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At13[index],At13L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At22[index],At22L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At23[index],At23L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At33[index],At33L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B1[index],B1L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B2[index],B2L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B3[index],B3L,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(gt11[index],gt11L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt12[index],gt12L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt13[index],gt13L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt22[index],gt22L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt23[index],gt23L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt33[index],gt33L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(phi[index],phiL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(trK[index],trKL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt1[index],Xt1L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt2[index],Xt2L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt3[index],Xt3L,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(A[index],AL,elt_count);
+ vec_store_nta_partial_hi(alpha[index],alphaL,elt_count);
+ vec_store_nta_partial_hi(At11[index],At11L,elt_count);
+ vec_store_nta_partial_hi(At12[index],At12L,elt_count);
+ vec_store_nta_partial_hi(At13[index],At13L,elt_count);
+ vec_store_nta_partial_hi(At22[index],At22L,elt_count);
+ vec_store_nta_partial_hi(At23[index],At23L,elt_count);
+ vec_store_nta_partial_hi(At33[index],At33L,elt_count);
+ vec_store_nta_partial_hi(B1[index],B1L,elt_count);
+ vec_store_nta_partial_hi(B2[index],B2L,elt_count);
+ vec_store_nta_partial_hi(B3[index],B3L,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(gt11[index],gt11L,elt_count);
+ vec_store_nta_partial_hi(gt12[index],gt12L,elt_count);
+ vec_store_nta_partial_hi(gt13[index],gt13L,elt_count);
+ vec_store_nta_partial_hi(gt22[index],gt22L,elt_count);
+ vec_store_nta_partial_hi(gt23[index],gt23L,elt_count);
+ vec_store_nta_partial_hi(gt33[index],gt33L,elt_count);
+ vec_store_nta_partial_hi(phi[index],phiL,elt_count);
+ vec_store_nta_partial_hi(trK[index],trKL,elt_count);
+ vec_store_nta_partial_hi(Xt1[index],Xt1L,elt_count);
+ vec_store_nta_partial_hi(Xt2[index],Xt2L,elt_count);
+ vec_store_nta_partial_hi(Xt3[index],Xt3L,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(A[index],AL,elt_count);
+ vec_store_nta_partial_lo(alpha[index],alphaL,elt_count);
+ vec_store_nta_partial_lo(At11[index],At11L,elt_count);
+ vec_store_nta_partial_lo(At12[index],At12L,elt_count);
+ vec_store_nta_partial_lo(At13[index],At13L,elt_count);
+ vec_store_nta_partial_lo(At22[index],At22L,elt_count);
+ vec_store_nta_partial_lo(At23[index],At23L,elt_count);
+ vec_store_nta_partial_lo(At33[index],At33L,elt_count);
+ vec_store_nta_partial_lo(B1[index],B1L,elt_count);
+ vec_store_nta_partial_lo(B2[index],B2L,elt_count);
+ vec_store_nta_partial_lo(B3[index],B3L,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(gt11[index],gt11L,elt_count);
+ vec_store_nta_partial_lo(gt12[index],gt12L,elt_count);
+ vec_store_nta_partial_lo(gt13[index],gt13L,elt_count);
+ vec_store_nta_partial_lo(gt22[index],gt22L,elt_count);
+ vec_store_nta_partial_lo(gt23[index],gt23L,elt_count);
+ vec_store_nta_partial_lo(gt33[index],gt33L,elt_count);
+ vec_store_nta_partial_lo(phi[index],phiL,elt_count);
+ vec_store_nta_partial_lo(trK[index],trKL,elt_count);
+ vec_store_nta_partial_lo(Xt1[index],Xt1L,elt_count);
+ vec_store_nta_partial_lo(Xt2[index],Xt2L,elt_count);
+ vec_store_nta_partial_lo(Xt3[index],Xt3L,elt_count);
+ break;
+ }
+ vec_store_nta(A[index],AL);
+ vec_store_nta(alpha[index],alphaL);
+ vec_store_nta(At11[index],At11L);
+ vec_store_nta(At12[index],At12L);
+ vec_store_nta(At13[index],At13L);
+ vec_store_nta(At22[index],At22L);
+ vec_store_nta(At23[index],At23L);
+ vec_store_nta(At33[index],At33L);
+ vec_store_nta(B1[index],B1L);
+ vec_store_nta(B2[index],B2L);
+ vec_store_nta(B3[index],B3L);
+ vec_store_nta(beta1[index],beta1L);
+ vec_store_nta(beta2[index],beta2L);
+ vec_store_nta(beta3[index],beta3L);
+ vec_store_nta(gt11[index],gt11L);
+ vec_store_nta(gt12[index],gt12L);
+ vec_store_nta(gt13[index],gt13L);
+ vec_store_nta(gt22[index],gt22L);
+ vec_store_nta(gt23[index],gt23L);
+ vec_store_nta(gt33[index],gt33L);
+ vec_store_nta(phi[index],phiL);
+ vec_store_nta(trK[index],trKL);
+ vec_store_nta(Xt1[index],Xt1L);
+ vec_store_nta(Xt2[index],Xt2L);
+ vec_store_nta(Xt3[index],Xt3L);
}
- LC_ENDLOOP3 (ML_BSSN_MP_Minkowski);
+ LC_ENDLOOP3VEC (ML_BSSN_MP_Minkowski);
}
extern "C" void ML_BSSN_MP_Minkowski(CCTK_ARGUMENTS)
@@ -236,5 +406,39 @@ extern "C" void ML_BSSN_MP_Minkowski(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_Minkowski_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_MP_Minkowski_calc_every != ML_BSSN_MP_Minkowski_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN_MP::ML_curv","ML_BSSN_MP::ML_dtlapse","ML_BSSN_MP::ML_dtshift","ML_BSSN_MP::ML_Gamma","ML_BSSN_MP::ML_lapse","ML_BSSN_MP::ML_log_confac","ML_BSSN_MP::ML_metric","ML_BSSN_MP::ML_shift","ML_BSSN_MP::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_Minkowski", 9, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverEverything(cctkGH, &ML_BSSN_MP_Minkowski_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_MP_Minkowski_Body");
+ }
}
diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_RHS1.cc b/ML_BSSN_MP/src/ML_BSSN_MP_RHS1.cc
index 5b779f3..4254668 100644
--- a/ML_BSSN_MP/src/ML_BSSN_MP_RHS1.cc
+++ b/ML_BSSN_MP/src/ML_BSSN_MP_RHS1.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_MP_RHS1_SelectBCs(CCTK_ARGUMENTS)
{
@@ -54,7 +55,7 @@ extern "C" void ML_BSSN_MP_RHS1_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_BSSN_MP_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_MP_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;
@@ -62,21 +63,6 @@ static void ML_BSSN_MP_RHS1_Body(cGH const * restrict const cctkGH, int const di
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_RHS1_Body");
- }
-
- if (cctk_iteration % ML_BSSN_MP_RHS1_calc_every != ML_BSSN_MP_RHS1_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"grid::coordinates","Grid::coordinates","ML_BSSN_MP::ML_curv","ML_BSSN_MP::ML_dtlapse","ML_BSSN_MP::ML_dtlapserhs","ML_BSSN_MP::ML_dtshift","ML_BSSN_MP::ML_dtshiftrhs","ML_BSSN_MP::ML_Gamma","ML_BSSN_MP::ML_Gammarhs","ML_BSSN_MP::ML_lapse","ML_BSSN_MP::ML_lapserhs","ML_BSSN_MP::ML_log_confac","ML_BSSN_MP::ML_log_confacrhs","ML_BSSN_MP::ML_metric","ML_BSSN_MP::ML_metricrhs","ML_BSSN_MP::ML_shift","ML_BSSN_MP::ML_shiftrhs","ML_BSSN_MP::ML_trace_curv","ML_BSSN_MP::ML_trace_curvrhs"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_RHS1", 19, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_RHS1", 2, 2, 2);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -86,41 +72,102 @@ static void ML_BSSN_MP_RHS1_Body(cGH const * restrict const cctkGH, int const di
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const p1o24dx = 0.0416666666666666666666666666667*INV(dx);
- CCTK_REAL const p1o24dy = 0.0416666666666666666666666666667*INV(dy);
- CCTK_REAL const p1o24dz = 0.0416666666666666666666666666667*INV(dz);
- CCTK_REAL const p1o64dx = 0.015625*INV(dx);
- CCTK_REAL const p1o64dy = 0.015625*INV(dy);
- CCTK_REAL const p1o64dz = 0.015625*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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)
@@ -167,57 +214,66 @@ static void ML_BSSN_MP_RHS1_Body(cGH const * restrict const cctkGH, int const di
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_LOOP3 (ML_BSSN_MP_RHS1,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_MP_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 AL = A[index];
- CCTK_REAL alphaL = alpha[index];
- CCTK_REAL At11L = At11[index];
- CCTK_REAL At12L = At12[index];
- CCTK_REAL At13L = At13[index];
- CCTK_REAL At22L = At22[index];
- CCTK_REAL At23L = At23[index];
- CCTK_REAL At33L = At33[index];
- CCTK_REAL B1L = B1[index];
- CCTK_REAL B2L = B2[index];
- CCTK_REAL B3L = B3[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL gt11L = gt11[index];
- CCTK_REAL gt12L = gt12[index];
- CCTK_REAL gt13L = gt13[index];
- CCTK_REAL gt22L = gt22[index];
- CCTK_REAL gt23L = gt23[index];
- CCTK_REAL gt33L = gt33[index];
- CCTK_REAL phiL = phi[index];
- CCTK_REAL rL = r[index];
- CCTK_REAL trKL = trK[index];
- CCTK_REAL Xt1L = Xt1[index];
- CCTK_REAL Xt2L = Xt2[index];
- CCTK_REAL Xt3L = Xt3[index];
-
- CCTK_REAL eTttL, eTtxL, eTtyL, eTtzL, eTxxL, eTxyL, eTxzL, eTyyL, eTyzL, eTzzL;
+ 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 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 = eTtt[index];
- eTtxL = eTtx[index];
- eTtyL = eTty[index];
- eTtzL = eTtz[index];
- eTxxL = eTxx[index];
- eTxyL = eTxy[index];
- eTxzL = eTxz[index];
- eTyyL = eTyy[index];
- eTyzL = eTyz[index];
- eTzzL = eTzz[index];
+ 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
{
@@ -233,550 +289,655 @@ static void ML_BSSN_MP_RHS1_Body(cGH const * restrict const cctkGH, int const di
eTzzL = ToReal(0.0);
}
- CCTK_REAL dJ111L, dJ112L, dJ113L, dJ122L, dJ123L, dJ133L, dJ211L, dJ212L, dJ213L, dJ222L, dJ223L, dJ233L, dJ311L, dJ312L, dJ313L, dJ322L, dJ323L, dJ333L, J11L, J12L, J13L, J21L, J22L, J23L, J31L, J32L, J33L;
+ 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 = dJ111[index];
- dJ112L = dJ112[index];
- dJ113L = dJ113[index];
- dJ122L = dJ122[index];
- dJ123L = dJ123[index];
- dJ133L = dJ133[index];
- dJ211L = dJ211[index];
- dJ212L = dJ212[index];
- dJ213L = dJ213[index];
- dJ222L = dJ222[index];
- dJ223L = dJ223[index];
- dJ233L = dJ233[index];
- dJ311L = dJ311[index];
- dJ312L = dJ312[index];
- dJ313L = dJ313[index];
- dJ322L = dJ322[index];
- dJ323L = dJ323[index];
- dJ333L = dJ333[index];
- J11L = J11[index];
- J12L = J12[index];
- J13L = J13[index];
- J21L = J21[index];
- J22L = J22[index];
- J23L = J23[index];
- J31L = J31[index];
- J32L = J32[index];
- J33L = J33[index];
+ dJ111L = vec_load(dJ111[index]);
+ dJ112L = vec_load(dJ112[index]);
+ dJ113L = vec_load(dJ113[index]);
+ dJ122L = vec_load(dJ122[index]);
+ dJ123L = vec_load(dJ123[index]);
+ dJ133L = vec_load(dJ133[index]);
+ dJ211L = vec_load(dJ211[index]);
+ dJ212L = vec_load(dJ212[index]);
+ dJ213L = vec_load(dJ213[index]);
+ dJ222L = vec_load(dJ222[index]);
+ dJ223L = vec_load(dJ223[index]);
+ dJ233L = vec_load(dJ233[index]);
+ dJ311L = vec_load(dJ311[index]);
+ dJ312L = vec_load(dJ312[index]);
+ dJ313L = vec_load(dJ313[index]);
+ dJ322L = vec_load(dJ322[index]);
+ dJ323L = vec_load(dJ323[index]);
+ dJ333L = vec_load(dJ333[index]);
+ J11L = vec_load(J11[index]);
+ J12L = vec_load(J12[index]);
+ J13L = vec_load(J13[index]);
+ J21L = vec_load(J21[index]);
+ J22L = vec_load(J22[index]);
+ J23L = vec_load(J23[index]);
+ J31L = vec_load(J31[index]);
+ J32L = vec_load(J32[index]);
+ J33L = vec_load(J33[index]);
}
/* Include user supplied include files */
/* Precompute derivatives */
- CCTK_REAL const PDstandardNth1alpha = PDstandardNth1(&alpha[index]);
- CCTK_REAL const PDstandardNth2alpha = PDstandardNth2(&alpha[index]);
- CCTK_REAL const PDstandardNth3alpha = PDstandardNth3(&alpha[index]);
- CCTK_REAL const PDstandardNth11alpha = PDstandardNth11(&alpha[index]);
- CCTK_REAL const PDstandardNth22alpha = PDstandardNth22(&alpha[index]);
- CCTK_REAL const PDstandardNth33alpha = PDstandardNth33(&alpha[index]);
- CCTK_REAL const PDstandardNth12alpha = PDstandardNth12(&alpha[index]);
- CCTK_REAL const PDstandardNth13alpha = PDstandardNth13(&alpha[index]);
- CCTK_REAL const PDstandardNth23alpha = PDstandardNth23(&alpha[index]);
- CCTK_REAL const PDstandardNth1beta1 = PDstandardNth1(&beta1[index]);
- CCTK_REAL const PDstandardNth2beta1 = PDstandardNth2(&beta1[index]);
- CCTK_REAL const PDstandardNth3beta1 = PDstandardNth3(&beta1[index]);
- CCTK_REAL const PDstandardNth11beta1 = PDstandardNth11(&beta1[index]);
- CCTK_REAL const PDstandardNth22beta1 = PDstandardNth22(&beta1[index]);
- CCTK_REAL const PDstandardNth33beta1 = PDstandardNth33(&beta1[index]);
- CCTK_REAL const PDstandardNth12beta1 = PDstandardNth12(&beta1[index]);
- CCTK_REAL const PDstandardNth13beta1 = PDstandardNth13(&beta1[index]);
- CCTK_REAL const PDstandardNth23beta1 = PDstandardNth23(&beta1[index]);
- CCTK_REAL const PDstandardNth1beta2 = PDstandardNth1(&beta2[index]);
- CCTK_REAL const PDstandardNth2beta2 = PDstandardNth2(&beta2[index]);
- CCTK_REAL const PDstandardNth3beta2 = PDstandardNth3(&beta2[index]);
- CCTK_REAL const PDstandardNth11beta2 = PDstandardNth11(&beta2[index]);
- CCTK_REAL const PDstandardNth22beta2 = PDstandardNth22(&beta2[index]);
- CCTK_REAL const PDstandardNth33beta2 = PDstandardNth33(&beta2[index]);
- CCTK_REAL const PDstandardNth12beta2 = PDstandardNth12(&beta2[index]);
- CCTK_REAL const PDstandardNth13beta2 = PDstandardNth13(&beta2[index]);
- CCTK_REAL const PDstandardNth23beta2 = PDstandardNth23(&beta2[index]);
- CCTK_REAL const PDstandardNth1beta3 = PDstandardNth1(&beta3[index]);
- CCTK_REAL const PDstandardNth2beta3 = PDstandardNth2(&beta3[index]);
- CCTK_REAL const PDstandardNth3beta3 = PDstandardNth3(&beta3[index]);
- CCTK_REAL const PDstandardNth11beta3 = PDstandardNth11(&beta3[index]);
- CCTK_REAL const PDstandardNth22beta3 = PDstandardNth22(&beta3[index]);
- CCTK_REAL const PDstandardNth33beta3 = PDstandardNth33(&beta3[index]);
- CCTK_REAL const PDstandardNth12beta3 = PDstandardNth12(&beta3[index]);
- CCTK_REAL const PDstandardNth13beta3 = PDstandardNth13(&beta3[index]);
- CCTK_REAL const PDstandardNth23beta3 = PDstandardNth23(&beta3[index]);
- CCTK_REAL const PDstandardNth1gt11 = PDstandardNth1(&gt11[index]);
- CCTK_REAL const PDstandardNth2gt11 = PDstandardNth2(&gt11[index]);
- CCTK_REAL const PDstandardNth3gt11 = PDstandardNth3(&gt11[index]);
- CCTK_REAL const PDstandardNth1gt12 = PDstandardNth1(&gt12[index]);
- CCTK_REAL const PDstandardNth2gt12 = PDstandardNth2(&gt12[index]);
- CCTK_REAL const PDstandardNth3gt12 = PDstandardNth3(&gt12[index]);
- CCTK_REAL const PDstandardNth1gt13 = PDstandardNth1(&gt13[index]);
- CCTK_REAL const PDstandardNth2gt13 = PDstandardNth2(&gt13[index]);
- CCTK_REAL const PDstandardNth3gt13 = PDstandardNth3(&gt13[index]);
- CCTK_REAL const PDstandardNth1gt22 = PDstandardNth1(&gt22[index]);
- CCTK_REAL const PDstandardNth2gt22 = PDstandardNth2(&gt22[index]);
- CCTK_REAL const PDstandardNth3gt22 = PDstandardNth3(&gt22[index]);
- CCTK_REAL const PDstandardNth1gt23 = PDstandardNth1(&gt23[index]);
- CCTK_REAL const PDstandardNth2gt23 = PDstandardNth2(&gt23[index]);
- CCTK_REAL const PDstandardNth3gt23 = PDstandardNth3(&gt23[index]);
- CCTK_REAL const PDstandardNth1gt33 = PDstandardNth1(&gt33[index]);
- CCTK_REAL const PDstandardNth2gt33 = PDstandardNth2(&gt33[index]);
- CCTK_REAL const PDstandardNth3gt33 = PDstandardNth3(&gt33[index]);
- CCTK_REAL const PDstandardNth1phi = PDstandardNth1(&phi[index]);
- CCTK_REAL const PDstandardNth2phi = PDstandardNth2(&phi[index]);
- CCTK_REAL const PDstandardNth3phi = PDstandardNth3(&phi[index]);
- CCTK_REAL const PDstandardNth1trK = PDstandardNth1(&trK[index]);
- CCTK_REAL const PDstandardNth2trK = PDstandardNth2(&trK[index]);
- CCTK_REAL const PDstandardNth3trK = PDstandardNth3(&trK[index]);
+ 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 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:
+ 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]);
+ 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:
+ 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]);
+ 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:
+ 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]);
+ 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:
+ 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]);
+ 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 JacPDstandardNth11alpha;
- CCTK_REAL JacPDstandardNth11beta1;
- CCTK_REAL JacPDstandardNth11beta2;
- CCTK_REAL JacPDstandardNth11beta3;
- CCTK_REAL JacPDstandardNth12alpha;
- CCTK_REAL JacPDstandardNth12beta1;
- CCTK_REAL JacPDstandardNth12beta2;
- CCTK_REAL JacPDstandardNth12beta3;
- CCTK_REAL JacPDstandardNth13alpha;
- CCTK_REAL JacPDstandardNth13beta1;
- CCTK_REAL JacPDstandardNth13beta2;
- CCTK_REAL JacPDstandardNth13beta3;
- CCTK_REAL JacPDstandardNth1alpha;
- CCTK_REAL JacPDstandardNth1beta1;
- CCTK_REAL JacPDstandardNth1beta2;
- CCTK_REAL JacPDstandardNth1beta3;
- CCTK_REAL JacPDstandardNth1gt11;
- CCTK_REAL JacPDstandardNth1gt12;
- CCTK_REAL JacPDstandardNth1gt13;
- CCTK_REAL JacPDstandardNth1gt22;
- CCTK_REAL JacPDstandardNth1gt23;
- CCTK_REAL JacPDstandardNth1gt33;
- CCTK_REAL JacPDstandardNth1phi;
- CCTK_REAL JacPDstandardNth1trK;
- CCTK_REAL JacPDstandardNth21alpha;
- CCTK_REAL JacPDstandardNth21beta1;
- CCTK_REAL JacPDstandardNth21beta2;
- CCTK_REAL JacPDstandardNth21beta3;
- CCTK_REAL JacPDstandardNth22alpha;
- CCTK_REAL JacPDstandardNth22beta1;
- CCTK_REAL JacPDstandardNth22beta2;
- CCTK_REAL JacPDstandardNth22beta3;
- CCTK_REAL JacPDstandardNth23alpha;
- CCTK_REAL JacPDstandardNth23beta1;
- CCTK_REAL JacPDstandardNth23beta2;
- CCTK_REAL JacPDstandardNth23beta3;
- CCTK_REAL JacPDstandardNth2alpha;
- CCTK_REAL JacPDstandardNth2beta1;
- CCTK_REAL JacPDstandardNth2beta2;
- CCTK_REAL JacPDstandardNth2beta3;
- CCTK_REAL JacPDstandardNth2gt11;
- CCTK_REAL JacPDstandardNth2gt12;
- CCTK_REAL JacPDstandardNth2gt13;
- CCTK_REAL JacPDstandardNth2gt22;
- CCTK_REAL JacPDstandardNth2gt23;
- CCTK_REAL JacPDstandardNth2gt33;
- CCTK_REAL JacPDstandardNth2phi;
- CCTK_REAL JacPDstandardNth2trK;
- CCTK_REAL JacPDstandardNth31alpha;
- CCTK_REAL JacPDstandardNth31beta1;
- CCTK_REAL JacPDstandardNth31beta2;
- CCTK_REAL JacPDstandardNth31beta3;
- CCTK_REAL JacPDstandardNth32alpha;
- CCTK_REAL JacPDstandardNth32beta1;
- CCTK_REAL JacPDstandardNth32beta2;
- CCTK_REAL JacPDstandardNth32beta3;
- CCTK_REAL JacPDstandardNth33alpha;
- CCTK_REAL JacPDstandardNth33beta1;
- CCTK_REAL JacPDstandardNth33beta2;
- CCTK_REAL JacPDstandardNth33beta3;
- CCTK_REAL JacPDstandardNth3alpha;
- CCTK_REAL JacPDstandardNth3beta1;
- CCTK_REAL JacPDstandardNth3beta2;
- CCTK_REAL JacPDstandardNth3beta3;
- CCTK_REAL JacPDstandardNth3gt11;
- CCTK_REAL JacPDstandardNth3gt12;
- CCTK_REAL JacPDstandardNth3gt13;
- CCTK_REAL JacPDstandardNth3gt22;
- CCTK_REAL JacPDstandardNth3gt23;
- CCTK_REAL JacPDstandardNth3gt33;
- CCTK_REAL JacPDstandardNth3phi;
- CCTK_REAL JacPDstandardNth3trK;
+ 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 JacPDstandardNth12alpha;
+ CCTK_REAL_VEC JacPDstandardNth12beta1;
+ CCTK_REAL_VEC JacPDstandardNth12beta2;
+ CCTK_REAL_VEC JacPDstandardNth12beta3;
+ CCTK_REAL_VEC JacPDstandardNth13alpha;
+ CCTK_REAL_VEC JacPDstandardNth13beta1;
+ CCTK_REAL_VEC JacPDstandardNth13beta2;
+ CCTK_REAL_VEC JacPDstandardNth13beta3;
+ 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 JacPDstandardNth1trK;
+ CCTK_REAL_VEC JacPDstandardNth21alpha;
+ CCTK_REAL_VEC JacPDstandardNth21beta1;
+ CCTK_REAL_VEC JacPDstandardNth21beta2;
+ CCTK_REAL_VEC JacPDstandardNth21beta3;
+ CCTK_REAL_VEC JacPDstandardNth22alpha;
+ CCTK_REAL_VEC JacPDstandardNth22beta1;
+ CCTK_REAL_VEC JacPDstandardNth22beta2;
+ CCTK_REAL_VEC JacPDstandardNth22beta3;
+ CCTK_REAL_VEC JacPDstandardNth23alpha;
+ CCTK_REAL_VEC JacPDstandardNth23beta1;
+ CCTK_REAL_VEC JacPDstandardNth23beta2;
+ CCTK_REAL_VEC JacPDstandardNth23beta3;
+ 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 JacPDstandardNth2trK;
+ CCTK_REAL_VEC JacPDstandardNth31alpha;
+ CCTK_REAL_VEC JacPDstandardNth31beta1;
+ CCTK_REAL_VEC JacPDstandardNth31beta2;
+ CCTK_REAL_VEC JacPDstandardNth31beta3;
+ CCTK_REAL_VEC JacPDstandardNth32alpha;
+ CCTK_REAL_VEC JacPDstandardNth32beta1;
+ CCTK_REAL_VEC JacPDstandardNth32beta2;
+ CCTK_REAL_VEC JacPDstandardNth32beta3;
+ CCTK_REAL_VEC JacPDstandardNth33alpha;
+ CCTK_REAL_VEC JacPDstandardNth33beta1;
+ CCTK_REAL_VEC JacPDstandardNth33beta2;
+ CCTK_REAL_VEC JacPDstandardNth33beta3;
+ 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 JacPDstandardNth3trK;
if (use_jacobian)
{
- JacPDstandardNth1alpha = J11L*PDstandardNth1alpha +
- J21L*PDstandardNth2alpha + J31L*PDstandardNth3alpha;
+ 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)));
- JacPDstandardNth1beta1 = J11L*PDstandardNth1beta1 +
- J21L*PDstandardNth2beta1 + J31L*PDstandardNth3beta1;
+ JacPDstandardNth1gt13 =
+ kmadd(J11L,PDstandardNth1gt13,kmadd(J21L,PDstandardNth2gt13,kmul(J31L,PDstandardNth3gt13)));
- JacPDstandardNth1beta2 = J11L*PDstandardNth1beta2 +
- J21L*PDstandardNth2beta2 + J31L*PDstandardNth3beta2;
+ JacPDstandardNth1gt22 =
+ kmadd(J11L,PDstandardNth1gt22,kmadd(J21L,PDstandardNth2gt22,kmul(J31L,PDstandardNth3gt22)));
- JacPDstandardNth1beta3 = J11L*PDstandardNth1beta3 +
- J21L*PDstandardNth2beta3 + J31L*PDstandardNth3beta3;
+ JacPDstandardNth1gt23 =
+ kmadd(J11L,PDstandardNth1gt23,kmadd(J21L,PDstandardNth2gt23,kmul(J31L,PDstandardNth3gt23)));
- JacPDstandardNth1gt11 = J11L*PDstandardNth1gt11 +
- J21L*PDstandardNth2gt11 + J31L*PDstandardNth3gt11;
+ JacPDstandardNth1gt33 =
+ kmadd(J11L,PDstandardNth1gt33,kmadd(J21L,PDstandardNth2gt33,kmul(J31L,PDstandardNth3gt33)));
- JacPDstandardNth1gt12 = J11L*PDstandardNth1gt12 +
- J21L*PDstandardNth2gt12 + J31L*PDstandardNth3gt12;
+ JacPDstandardNth1phi =
+ kmadd(J11L,PDstandardNth1phi,kmadd(J21L,PDstandardNth2phi,kmul(J31L,PDstandardNth3phi)));
- JacPDstandardNth1gt13 = J11L*PDstandardNth1gt13 +
- J21L*PDstandardNth2gt13 + J31L*PDstandardNth3gt13;
+ JacPDstandardNth1trK =
+ kmadd(J11L,PDstandardNth1trK,kmadd(J21L,PDstandardNth2trK,kmul(J31L,PDstandardNth3trK)));
- JacPDstandardNth1gt22 = J11L*PDstandardNth1gt22 +
- J21L*PDstandardNth2gt22 + J31L*PDstandardNth3gt22;
+ JacPDstandardNth2alpha =
+ kmadd(J12L,PDstandardNth1alpha,kmadd(J22L,PDstandardNth2alpha,kmul(J32L,PDstandardNth3alpha)));
- JacPDstandardNth1gt23 = J11L*PDstandardNth1gt23 +
- J21L*PDstandardNth2gt23 + J31L*PDstandardNth3gt23;
+ JacPDstandardNth2beta1 =
+ kmadd(J12L,PDstandardNth1beta1,kmadd(J22L,PDstandardNth2beta1,kmul(J32L,PDstandardNth3beta1)));
- JacPDstandardNth1gt33 = J11L*PDstandardNth1gt33 +
- J21L*PDstandardNth2gt33 + J31L*PDstandardNth3gt33;
+ JacPDstandardNth2beta2 =
+ kmadd(J12L,PDstandardNth1beta2,kmadd(J22L,PDstandardNth2beta2,kmul(J32L,PDstandardNth3beta2)));
- JacPDstandardNth1phi = J11L*PDstandardNth1phi + J21L*PDstandardNth2phi
- + J31L*PDstandardNth3phi;
+ JacPDstandardNth2beta3 =
+ kmadd(J12L,PDstandardNth1beta3,kmadd(J22L,PDstandardNth2beta3,kmul(J32L,PDstandardNth3beta3)));
- JacPDstandardNth1trK = J11L*PDstandardNth1trK + J21L*PDstandardNth2trK
- + J31L*PDstandardNth3trK;
+ JacPDstandardNth2gt11 =
+ kmadd(J12L,PDstandardNth1gt11,kmadd(J22L,PDstandardNth2gt11,kmul(J32L,PDstandardNth3gt11)));
- JacPDstandardNth2alpha = J12L*PDstandardNth1alpha +
- J22L*PDstandardNth2alpha + J32L*PDstandardNth3alpha;
+ JacPDstandardNth2gt12 =
+ kmadd(J12L,PDstandardNth1gt12,kmadd(J22L,PDstandardNth2gt12,kmul(J32L,PDstandardNth3gt12)));
- JacPDstandardNth2beta1 = J12L*PDstandardNth1beta1 +
- J22L*PDstandardNth2beta1 + J32L*PDstandardNth3beta1;
+ JacPDstandardNth2gt13 =
+ kmadd(J12L,PDstandardNth1gt13,kmadd(J22L,PDstandardNth2gt13,kmul(J32L,PDstandardNth3gt13)));
- JacPDstandardNth2beta2 = J12L*PDstandardNth1beta2 +
- J22L*PDstandardNth2beta2 + J32L*PDstandardNth3beta2;
+ JacPDstandardNth2gt22 =
+ kmadd(J12L,PDstandardNth1gt22,kmadd(J22L,PDstandardNth2gt22,kmul(J32L,PDstandardNth3gt22)));
- JacPDstandardNth2beta3 = J12L*PDstandardNth1beta3 +
- J22L*PDstandardNth2beta3 + J32L*PDstandardNth3beta3;
+ JacPDstandardNth2gt23 =
+ kmadd(J12L,PDstandardNth1gt23,kmadd(J22L,PDstandardNth2gt23,kmul(J32L,PDstandardNth3gt23)));
- JacPDstandardNth2gt11 = J12L*PDstandardNth1gt11 +
- J22L*PDstandardNth2gt11 + J32L*PDstandardNth3gt11;
+ JacPDstandardNth2gt33 =
+ kmadd(J12L,PDstandardNth1gt33,kmadd(J22L,PDstandardNth2gt33,kmul(J32L,PDstandardNth3gt33)));
- JacPDstandardNth2gt12 = J12L*PDstandardNth1gt12 +
- J22L*PDstandardNth2gt12 + J32L*PDstandardNth3gt12;
+ JacPDstandardNth2phi =
+ kmadd(J12L,PDstandardNth1phi,kmadd(J22L,PDstandardNth2phi,kmul(J32L,PDstandardNth3phi)));
- JacPDstandardNth2gt13 = J12L*PDstandardNth1gt13 +
- J22L*PDstandardNth2gt13 + J32L*PDstandardNth3gt13;
+ JacPDstandardNth2trK =
+ kmadd(J12L,PDstandardNth1trK,kmadd(J22L,PDstandardNth2trK,kmul(J32L,PDstandardNth3trK)));
- JacPDstandardNth2gt22 = J12L*PDstandardNth1gt22 +
- J22L*PDstandardNth2gt22 + J32L*PDstandardNth3gt22;
+ JacPDstandardNth3alpha =
+ kmadd(J13L,PDstandardNth1alpha,kmadd(J23L,PDstandardNth2alpha,kmul(J33L,PDstandardNth3alpha)));
- JacPDstandardNth2gt23 = J12L*PDstandardNth1gt23 +
- J22L*PDstandardNth2gt23 + J32L*PDstandardNth3gt23;
+ JacPDstandardNth3beta1 =
+ kmadd(J13L,PDstandardNth1beta1,kmadd(J23L,PDstandardNth2beta1,kmul(J33L,PDstandardNth3beta1)));
- JacPDstandardNth2gt33 = J12L*PDstandardNth1gt33 +
- J22L*PDstandardNth2gt33 + J32L*PDstandardNth3gt33;
+ JacPDstandardNth3beta2 =
+ kmadd(J13L,PDstandardNth1beta2,kmadd(J23L,PDstandardNth2beta2,kmul(J33L,PDstandardNth3beta2)));
- JacPDstandardNth2phi = J12L*PDstandardNth1phi + J22L*PDstandardNth2phi
- + J32L*PDstandardNth3phi;
+ JacPDstandardNth3beta3 =
+ kmadd(J13L,PDstandardNth1beta3,kmadd(J23L,PDstandardNth2beta3,kmul(J33L,PDstandardNth3beta3)));
- JacPDstandardNth2trK = J12L*PDstandardNth1trK + J22L*PDstandardNth2trK
- + J32L*PDstandardNth3trK;
+ JacPDstandardNth3gt11 =
+ kmadd(J13L,PDstandardNth1gt11,kmadd(J23L,PDstandardNth2gt11,kmul(J33L,PDstandardNth3gt11)));
- JacPDstandardNth3alpha = J13L*PDstandardNth1alpha +
- J23L*PDstandardNth2alpha + J33L*PDstandardNth3alpha;
+ JacPDstandardNth3gt12 =
+ kmadd(J13L,PDstandardNth1gt12,kmadd(J23L,PDstandardNth2gt12,kmul(J33L,PDstandardNth3gt12)));
- JacPDstandardNth3beta1 = J13L*PDstandardNth1beta1 +
- J23L*PDstandardNth2beta1 + J33L*PDstandardNth3beta1;
+ JacPDstandardNth3gt13 =
+ kmadd(J13L,PDstandardNth1gt13,kmadd(J23L,PDstandardNth2gt13,kmul(J33L,PDstandardNth3gt13)));
- JacPDstandardNth3beta2 = J13L*PDstandardNth1beta2 +
- J23L*PDstandardNth2beta2 + J33L*PDstandardNth3beta2;
+ JacPDstandardNth3gt22 =
+ kmadd(J13L,PDstandardNth1gt22,kmadd(J23L,PDstandardNth2gt22,kmul(J33L,PDstandardNth3gt22)));
- JacPDstandardNth3beta3 = J13L*PDstandardNth1beta3 +
- J23L*PDstandardNth2beta3 + J33L*PDstandardNth3beta3;
+ JacPDstandardNth3gt23 =
+ kmadd(J13L,PDstandardNth1gt23,kmadd(J23L,PDstandardNth2gt23,kmul(J33L,PDstandardNth3gt23)));
- JacPDstandardNth3gt11 = J13L*PDstandardNth1gt11 +
- J23L*PDstandardNth2gt11 + J33L*PDstandardNth3gt11;
+ JacPDstandardNth3gt33 =
+ kmadd(J13L,PDstandardNth1gt33,kmadd(J23L,PDstandardNth2gt33,kmul(J33L,PDstandardNth3gt33)));
- JacPDstandardNth3gt12 = J13L*PDstandardNth1gt12 +
- J23L*PDstandardNth2gt12 + J33L*PDstandardNth3gt12;
+ JacPDstandardNth3phi =
+ kmadd(J13L,PDstandardNth1phi,kmadd(J23L,PDstandardNth2phi,kmul(J33L,PDstandardNth3phi)));
- JacPDstandardNth3gt13 = J13L*PDstandardNth1gt13 +
- J23L*PDstandardNth2gt13 + J33L*PDstandardNth3gt13;
+ JacPDstandardNth3trK =
+ kmadd(J13L,PDstandardNth1trK,kmadd(J23L,PDstandardNth2trK,kmul(J33L,PDstandardNth3trK)));
- JacPDstandardNth3gt22 = J13L*PDstandardNth1gt22 +
- J23L*PDstandardNth2gt22 + J33L*PDstandardNth3gt22;
+ 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))))))));
- JacPDstandardNth3gt23 = J13L*PDstandardNth1gt23 +
- J23L*PDstandardNth2gt23 + J33L*PDstandardNth3gt23;
+ 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))))))));
- JacPDstandardNth3gt33 = J13L*PDstandardNth1gt33 +
- J23L*PDstandardNth2gt33 + J33L*PDstandardNth3gt33;
+ 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))))))));
- JacPDstandardNth3phi = J13L*PDstandardNth1phi + J23L*PDstandardNth2phi
- + J33L*PDstandardNth3phi;
+ 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))))))));
- JacPDstandardNth3trK = J13L*PDstandardNth1trK + J23L*PDstandardNth2trK
- + J33L*PDstandardNth3trK;
-
- JacPDstandardNth11alpha = dJ111L*PDstandardNth1alpha +
- 2*(J11L*(J21L*PDstandardNth12alpha + J31L*PDstandardNth13alpha) +
- J21L*J31L*PDstandardNth23alpha) + dJ211L*PDstandardNth2alpha +
- dJ311L*PDstandardNth3alpha + PDstandardNth11alpha*SQR(J11L) +
- PDstandardNth22alpha*SQR(J21L) + PDstandardNth33alpha*SQR(J31L);
-
- JacPDstandardNth11beta1 = dJ111L*PDstandardNth1beta1 +
- 2*(J11L*(J21L*PDstandardNth12beta1 + J31L*PDstandardNth13beta1) +
- J21L*J31L*PDstandardNth23beta1) + dJ211L*PDstandardNth2beta1 +
- dJ311L*PDstandardNth3beta1 + PDstandardNth11beta1*SQR(J11L) +
- PDstandardNth22beta1*SQR(J21L) + PDstandardNth33beta1*SQR(J31L);
-
- JacPDstandardNth11beta2 = dJ111L*PDstandardNth1beta2 +
- 2*(J11L*(J21L*PDstandardNth12beta2 + J31L*PDstandardNth13beta2) +
- J21L*J31L*PDstandardNth23beta2) + dJ211L*PDstandardNth2beta2 +
- dJ311L*PDstandardNth3beta2 + PDstandardNth11beta2*SQR(J11L) +
- PDstandardNth22beta2*SQR(J21L) + PDstandardNth33beta2*SQR(J31L);
-
- JacPDstandardNth11beta3 = dJ111L*PDstandardNth1beta3 +
- 2*(J11L*(J21L*PDstandardNth12beta3 + J31L*PDstandardNth13beta3) +
- J21L*J31L*PDstandardNth23beta3) + dJ211L*PDstandardNth2beta3 +
- dJ311L*PDstandardNth3beta3 + PDstandardNth11beta3*SQR(J11L) +
- PDstandardNth22beta3*SQR(J21L) + PDstandardNth33beta3*SQR(J31L);
-
- JacPDstandardNth22alpha = dJ122L*PDstandardNth1alpha +
- 2*(J12L*(J22L*PDstandardNth12alpha + J32L*PDstandardNth13alpha) +
- J22L*J32L*PDstandardNth23alpha) + dJ222L*PDstandardNth2alpha +
- dJ322L*PDstandardNth3alpha + PDstandardNth11alpha*SQR(J12L) +
- PDstandardNth22alpha*SQR(J22L) + PDstandardNth33alpha*SQR(J32L);
-
- JacPDstandardNth22beta1 = dJ122L*PDstandardNth1beta1 +
- 2*(J12L*(J22L*PDstandardNth12beta1 + J32L*PDstandardNth13beta1) +
- J22L*J32L*PDstandardNth23beta1) + dJ222L*PDstandardNth2beta1 +
- dJ322L*PDstandardNth3beta1 + PDstandardNth11beta1*SQR(J12L) +
- PDstandardNth22beta1*SQR(J22L) + PDstandardNth33beta1*SQR(J32L);
-
- JacPDstandardNth22beta2 = dJ122L*PDstandardNth1beta2 +
- 2*(J12L*(J22L*PDstandardNth12beta2 + J32L*PDstandardNth13beta2) +
- J22L*J32L*PDstandardNth23beta2) + dJ222L*PDstandardNth2beta2 +
- dJ322L*PDstandardNth3beta2 + PDstandardNth11beta2*SQR(J12L) +
- PDstandardNth22beta2*SQR(J22L) + PDstandardNth33beta2*SQR(J32L);
-
- JacPDstandardNth22beta3 = dJ122L*PDstandardNth1beta3 +
- 2*(J12L*(J22L*PDstandardNth12beta3 + J32L*PDstandardNth13beta3) +
- J22L*J32L*PDstandardNth23beta3) + dJ222L*PDstandardNth2beta3 +
- dJ322L*PDstandardNth3beta3 + PDstandardNth11beta3*SQR(J12L) +
- PDstandardNth22beta3*SQR(J22L) + PDstandardNth33beta3*SQR(J32L);
-
- JacPDstandardNth33alpha = dJ133L*PDstandardNth1alpha +
- 2*(J13L*(J23L*PDstandardNth12alpha + J33L*PDstandardNth13alpha) +
- J23L*J33L*PDstandardNth23alpha) + dJ233L*PDstandardNth2alpha +
- dJ333L*PDstandardNth3alpha + PDstandardNth11alpha*SQR(J13L) +
- PDstandardNth22alpha*SQR(J23L) + PDstandardNth33alpha*SQR(J33L);
-
- JacPDstandardNth33beta1 = dJ133L*PDstandardNth1beta1 +
- 2*(J13L*(J23L*PDstandardNth12beta1 + J33L*PDstandardNth13beta1) +
- J23L*J33L*PDstandardNth23beta1) + dJ233L*PDstandardNth2beta1 +
- dJ333L*PDstandardNth3beta1 + PDstandardNth11beta1*SQR(J13L) +
- PDstandardNth22beta1*SQR(J23L) + PDstandardNth33beta1*SQR(J33L);
-
- JacPDstandardNth33beta2 = dJ133L*PDstandardNth1beta2 +
- 2*(J13L*(J23L*PDstandardNth12beta2 + J33L*PDstandardNth13beta2) +
- J23L*J33L*PDstandardNth23beta2) + dJ233L*PDstandardNth2beta2 +
- dJ333L*PDstandardNth3beta2 + PDstandardNth11beta2*SQR(J13L) +
- PDstandardNth22beta2*SQR(J23L) + PDstandardNth33beta2*SQR(J33L);
-
- JacPDstandardNth33beta3 = dJ133L*PDstandardNth1beta3 +
- 2*(J13L*(J23L*PDstandardNth12beta3 + J33L*PDstandardNth13beta3) +
- J23L*J33L*PDstandardNth23beta3) + dJ233L*PDstandardNth2beta3 +
- dJ333L*PDstandardNth3beta3 + PDstandardNth11beta3*SQR(J13L) +
- PDstandardNth22beta3*SQR(J23L) + PDstandardNth33beta3*SQR(J33L);
-
- JacPDstandardNth12alpha = J12L*(J11L*PDstandardNth11alpha +
- J21L*PDstandardNth12alpha + J31L*PDstandardNth13alpha) +
- J11L*(J22L*PDstandardNth12alpha + J32L*PDstandardNth13alpha) +
- dJ112L*PDstandardNth1alpha + J22L*(J21L*PDstandardNth22alpha +
- J31L*PDstandardNth23alpha) + dJ212L*PDstandardNth2alpha +
- J32L*(J21L*PDstandardNth23alpha + J31L*PDstandardNth33alpha) +
- dJ312L*PDstandardNth3alpha;
-
- JacPDstandardNth12beta1 = J12L*(J11L*PDstandardNth11beta1 +
- J21L*PDstandardNth12beta1 + J31L*PDstandardNth13beta1) +
- J11L*(J22L*PDstandardNth12beta1 + J32L*PDstandardNth13beta1) +
- dJ112L*PDstandardNth1beta1 + J22L*(J21L*PDstandardNth22beta1 +
- J31L*PDstandardNth23beta1) + dJ212L*PDstandardNth2beta1 +
- J32L*(J21L*PDstandardNth23beta1 + J31L*PDstandardNth33beta1) +
- dJ312L*PDstandardNth3beta1;
-
- JacPDstandardNth12beta2 = J12L*(J11L*PDstandardNth11beta2 +
- J21L*PDstandardNth12beta2 + J31L*PDstandardNth13beta2) +
- J11L*(J22L*PDstandardNth12beta2 + J32L*PDstandardNth13beta2) +
- dJ112L*PDstandardNth1beta2 + J22L*(J21L*PDstandardNth22beta2 +
- J31L*PDstandardNth23beta2) + dJ212L*PDstandardNth2beta2 +
- J32L*(J21L*PDstandardNth23beta2 + J31L*PDstandardNth33beta2) +
- dJ312L*PDstandardNth3beta2;
-
- JacPDstandardNth12beta3 = J12L*(J11L*PDstandardNth11beta3 +
- J21L*PDstandardNth12beta3 + J31L*PDstandardNth13beta3) +
- J11L*(J22L*PDstandardNth12beta3 + J32L*PDstandardNth13beta3) +
- dJ112L*PDstandardNth1beta3 + J22L*(J21L*PDstandardNth22beta3 +
- J31L*PDstandardNth23beta3) + dJ212L*PDstandardNth2beta3 +
- J32L*(J21L*PDstandardNth23beta3 + J31L*PDstandardNth33beta3) +
- dJ312L*PDstandardNth3beta3;
-
- JacPDstandardNth13alpha = J13L*(J11L*PDstandardNth11alpha +
- J21L*PDstandardNth12alpha + J31L*PDstandardNth13alpha) +
- J11L*(J23L*PDstandardNth12alpha + J33L*PDstandardNth13alpha) +
- dJ113L*PDstandardNth1alpha + J23L*(J21L*PDstandardNth22alpha +
- J31L*PDstandardNth23alpha) + dJ213L*PDstandardNth2alpha +
- J33L*(J21L*PDstandardNth23alpha + J31L*PDstandardNth33alpha) +
- dJ313L*PDstandardNth3alpha;
-
- JacPDstandardNth13beta1 = J13L*(J11L*PDstandardNth11beta1 +
- J21L*PDstandardNth12beta1 + J31L*PDstandardNth13beta1) +
- J11L*(J23L*PDstandardNth12beta1 + J33L*PDstandardNth13beta1) +
- dJ113L*PDstandardNth1beta1 + J23L*(J21L*PDstandardNth22beta1 +
- J31L*PDstandardNth23beta1) + dJ213L*PDstandardNth2beta1 +
- J33L*(J21L*PDstandardNth23beta1 + J31L*PDstandardNth33beta1) +
- dJ313L*PDstandardNth3beta1;
-
- JacPDstandardNth13beta2 = J13L*(J11L*PDstandardNth11beta2 +
- J21L*PDstandardNth12beta2 + J31L*PDstandardNth13beta2) +
- J11L*(J23L*PDstandardNth12beta2 + J33L*PDstandardNth13beta2) +
- dJ113L*PDstandardNth1beta2 + J23L*(J21L*PDstandardNth22beta2 +
- J31L*PDstandardNth23beta2) + dJ213L*PDstandardNth2beta2 +
- J33L*(J21L*PDstandardNth23beta2 + J31L*PDstandardNth33beta2) +
- dJ313L*PDstandardNth3beta2;
-
- JacPDstandardNth13beta3 = J13L*(J11L*PDstandardNth11beta3 +
- J21L*PDstandardNth12beta3 + J31L*PDstandardNth13beta3) +
- J11L*(J23L*PDstandardNth12beta3 + J33L*PDstandardNth13beta3) +
- dJ113L*PDstandardNth1beta3 + J23L*(J21L*PDstandardNth22beta3 +
- J31L*PDstandardNth23beta3) + dJ213L*PDstandardNth2beta3 +
- J33L*(J21L*PDstandardNth23beta3 + J31L*PDstandardNth33beta3) +
- dJ313L*PDstandardNth3beta3;
-
- JacPDstandardNth21alpha = J12L*(J11L*PDstandardNth11alpha +
- J21L*PDstandardNth12alpha + J31L*PDstandardNth13alpha) +
- J11L*(J22L*PDstandardNth12alpha + J32L*PDstandardNth13alpha) +
- dJ112L*PDstandardNth1alpha + J22L*(J21L*PDstandardNth22alpha +
- J31L*PDstandardNth23alpha) + dJ212L*PDstandardNth2alpha +
- J32L*(J21L*PDstandardNth23alpha + J31L*PDstandardNth33alpha) +
- dJ312L*PDstandardNth3alpha;
-
- JacPDstandardNth21beta1 = J12L*(J11L*PDstandardNth11beta1 +
- J21L*PDstandardNth12beta1 + J31L*PDstandardNth13beta1) +
- J11L*(J22L*PDstandardNth12beta1 + J32L*PDstandardNth13beta1) +
- dJ112L*PDstandardNth1beta1 + J22L*(J21L*PDstandardNth22beta1 +
- J31L*PDstandardNth23beta1) + dJ212L*PDstandardNth2beta1 +
- J32L*(J21L*PDstandardNth23beta1 + J31L*PDstandardNth33beta1) +
- dJ312L*PDstandardNth3beta1;
-
- JacPDstandardNth21beta2 = J12L*(J11L*PDstandardNth11beta2 +
- J21L*PDstandardNth12beta2 + J31L*PDstandardNth13beta2) +
- J11L*(J22L*PDstandardNth12beta2 + J32L*PDstandardNth13beta2) +
- dJ112L*PDstandardNth1beta2 + J22L*(J21L*PDstandardNth22beta2 +
- J31L*PDstandardNth23beta2) + dJ212L*PDstandardNth2beta2 +
- J32L*(J21L*PDstandardNth23beta2 + J31L*PDstandardNth33beta2) +
- dJ312L*PDstandardNth3beta2;
-
- JacPDstandardNth21beta3 = J12L*(J11L*PDstandardNth11beta3 +
- J21L*PDstandardNth12beta3 + J31L*PDstandardNth13beta3) +
- J11L*(J22L*PDstandardNth12beta3 + J32L*PDstandardNth13beta3) +
- dJ112L*PDstandardNth1beta3 + J22L*(J21L*PDstandardNth22beta3 +
- J31L*PDstandardNth23beta3) + dJ212L*PDstandardNth2beta3 +
- J32L*(J21L*PDstandardNth23beta3 + J31L*PDstandardNth33beta3) +
- dJ312L*PDstandardNth3beta3;
-
- JacPDstandardNth23alpha = J13L*(J12L*PDstandardNth11alpha +
- J22L*PDstandardNth12alpha + J32L*PDstandardNth13alpha) +
- J12L*(J23L*PDstandardNth12alpha + J33L*PDstandardNth13alpha) +
- dJ123L*PDstandardNth1alpha + J23L*(J22L*PDstandardNth22alpha +
- J32L*PDstandardNth23alpha) + dJ223L*PDstandardNth2alpha +
- J33L*(J22L*PDstandardNth23alpha + J32L*PDstandardNth33alpha) +
- dJ323L*PDstandardNth3alpha;
-
- JacPDstandardNth23beta1 = J13L*(J12L*PDstandardNth11beta1 +
- J22L*PDstandardNth12beta1 + J32L*PDstandardNth13beta1) +
- J12L*(J23L*PDstandardNth12beta1 + J33L*PDstandardNth13beta1) +
- dJ123L*PDstandardNth1beta1 + J23L*(J22L*PDstandardNth22beta1 +
- J32L*PDstandardNth23beta1) + dJ223L*PDstandardNth2beta1 +
- J33L*(J22L*PDstandardNth23beta1 + J32L*PDstandardNth33beta1) +
- dJ323L*PDstandardNth3beta1;
-
- JacPDstandardNth23beta2 = J13L*(J12L*PDstandardNth11beta2 +
- J22L*PDstandardNth12beta2 + J32L*PDstandardNth13beta2) +
- J12L*(J23L*PDstandardNth12beta2 + J33L*PDstandardNth13beta2) +
- dJ123L*PDstandardNth1beta2 + J23L*(J22L*PDstandardNth22beta2 +
- J32L*PDstandardNth23beta2) + dJ223L*PDstandardNth2beta2 +
- J33L*(J22L*PDstandardNth23beta2 + J32L*PDstandardNth33beta2) +
- dJ323L*PDstandardNth3beta2;
-
- JacPDstandardNth23beta3 = J13L*(J12L*PDstandardNth11beta3 +
- J22L*PDstandardNth12beta3 + J32L*PDstandardNth13beta3) +
- J12L*(J23L*PDstandardNth12beta3 + J33L*PDstandardNth13beta3) +
- dJ123L*PDstandardNth1beta3 + J23L*(J22L*PDstandardNth22beta3 +
- J32L*PDstandardNth23beta3) + dJ223L*PDstandardNth2beta3 +
- J33L*(J22L*PDstandardNth23beta3 + J32L*PDstandardNth33beta3) +
- dJ323L*PDstandardNth3beta3;
-
- JacPDstandardNth31alpha = J13L*(J11L*PDstandardNth11alpha +
- J21L*PDstandardNth12alpha + J31L*PDstandardNth13alpha) +
- J11L*(J23L*PDstandardNth12alpha + J33L*PDstandardNth13alpha) +
- dJ113L*PDstandardNth1alpha + J23L*(J21L*PDstandardNth22alpha +
- J31L*PDstandardNth23alpha) + dJ213L*PDstandardNth2alpha +
- J33L*(J21L*PDstandardNth23alpha + J31L*PDstandardNth33alpha) +
- dJ313L*PDstandardNth3alpha;
-
- JacPDstandardNth31beta1 = J13L*(J11L*PDstandardNth11beta1 +
- J21L*PDstandardNth12beta1 + J31L*PDstandardNth13beta1) +
- J11L*(J23L*PDstandardNth12beta1 + J33L*PDstandardNth13beta1) +
- dJ113L*PDstandardNth1beta1 + J23L*(J21L*PDstandardNth22beta1 +
- J31L*PDstandardNth23beta1) + dJ213L*PDstandardNth2beta1 +
- J33L*(J21L*PDstandardNth23beta1 + J31L*PDstandardNth33beta1) +
- dJ313L*PDstandardNth3beta1;
-
- JacPDstandardNth31beta2 = J13L*(J11L*PDstandardNth11beta2 +
- J21L*PDstandardNth12beta2 + J31L*PDstandardNth13beta2) +
- J11L*(J23L*PDstandardNth12beta2 + J33L*PDstandardNth13beta2) +
- dJ113L*PDstandardNth1beta2 + J23L*(J21L*PDstandardNth22beta2 +
- J31L*PDstandardNth23beta2) + dJ213L*PDstandardNth2beta2 +
- J33L*(J21L*PDstandardNth23beta2 + J31L*PDstandardNth33beta2) +
- dJ313L*PDstandardNth3beta2;
-
- JacPDstandardNth31beta3 = J13L*(J11L*PDstandardNth11beta3 +
- J21L*PDstandardNth12beta3 + J31L*PDstandardNth13beta3) +
- J11L*(J23L*PDstandardNth12beta3 + J33L*PDstandardNth13beta3) +
- dJ113L*PDstandardNth1beta3 + J23L*(J21L*PDstandardNth22beta3 +
- J31L*PDstandardNth23beta3) + dJ213L*PDstandardNth2beta3 +
- J33L*(J21L*PDstandardNth23beta3 + J31L*PDstandardNth33beta3) +
- dJ313L*PDstandardNth3beta3;
-
- JacPDstandardNth32alpha = J13L*(J12L*PDstandardNth11alpha +
- J22L*PDstandardNth12alpha + J32L*PDstandardNth13alpha) +
- J12L*(J23L*PDstandardNth12alpha + J33L*PDstandardNth13alpha) +
- dJ123L*PDstandardNth1alpha + J23L*(J22L*PDstandardNth22alpha +
- J32L*PDstandardNth23alpha) + dJ223L*PDstandardNth2alpha +
- J33L*(J22L*PDstandardNth23alpha + J32L*PDstandardNth33alpha) +
- dJ323L*PDstandardNth3alpha;
-
- JacPDstandardNth32beta1 = J13L*(J12L*PDstandardNth11beta1 +
- J22L*PDstandardNth12beta1 + J32L*PDstandardNth13beta1) +
- J12L*(J23L*PDstandardNth12beta1 + J33L*PDstandardNth13beta1) +
- dJ123L*PDstandardNth1beta1 + J23L*(J22L*PDstandardNth22beta1 +
- J32L*PDstandardNth23beta1) + dJ223L*PDstandardNth2beta1 +
- J33L*(J22L*PDstandardNth23beta1 + J32L*PDstandardNth33beta1) +
- dJ323L*PDstandardNth3beta1;
-
- JacPDstandardNth32beta2 = J13L*(J12L*PDstandardNth11beta2 +
- J22L*PDstandardNth12beta2 + J32L*PDstandardNth13beta2) +
- J12L*(J23L*PDstandardNth12beta2 + J33L*PDstandardNth13beta2) +
- dJ123L*PDstandardNth1beta2 + J23L*(J22L*PDstandardNth22beta2 +
- J32L*PDstandardNth23beta2) + dJ223L*PDstandardNth2beta2 +
- J33L*(J22L*PDstandardNth23beta2 + J32L*PDstandardNth33beta2) +
- dJ323L*PDstandardNth3beta2;
-
- JacPDstandardNth32beta3 = J13L*(J12L*PDstandardNth11beta3 +
- J22L*PDstandardNth12beta3 + J32L*PDstandardNth13beta3) +
- J12L*(J23L*PDstandardNth12beta3 + J33L*PDstandardNth13beta3) +
- dJ123L*PDstandardNth1beta3 + J23L*(J22L*PDstandardNth22beta3 +
- J32L*PDstandardNth23beta3) + dJ223L*PDstandardNth2beta3 +
- J33L*(J22L*PDstandardNth23beta3 + J32L*PDstandardNth33beta3) +
- dJ323L*PDstandardNth3beta3;
+ 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))))))));
+
+ 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))))))));
+
+ 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)))))));
+
+ 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)))))));
+
+ 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)))))));
+
+ 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)))))));
+
+ 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)))))));
+
+ 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)))))));
}
else
{
@@ -925,344 +1086,399 @@ static void ML_BSSN_MP_RHS1_Body(cGH const * restrict const cctkGH, int const di
JacPDstandardNth32beta3 = PDstandardNth23beta3;
}
- ptrdiff_t dir1 = Sign(beta1L);
+ CCTK_REAL_VEC detgt = ToReal(1);
- ptrdiff_t dir2 = Sign(beta2L);
+ CCTK_REAL_VEC gtu11 = kmul(INV(detgt),kmsub(gt22L,gt33L,SQR(gt23L)));
- ptrdiff_t dir3 = Sign(beta3L);
+ 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 detgt = 1;
+ CCTK_REAL_VEC Gtl223 = kmul(JacPDstandardNth3gt22,ToReal(0.5));
- CCTK_REAL gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L));
+ CCTK_REAL_VEC Gtl233 =
+ kmadd(JacPDstandardNth2gt33,ToReal(-0.5),JacPDstandardNth3gt23);
- CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt);
+ CCTK_REAL_VEC Gtl311 =
+ kmadd(JacPDstandardNth3gt11,ToReal(-0.5),JacPDstandardNth1gt13);
- CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC Gtl312 =
+ kmul(kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth2gt13,JacPDstandardNth3gt12)),ToReal(0.5));
- CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L));
+ CCTK_REAL_VEC Gtl313 = kmul(JacPDstandardNth1gt33,ToReal(0.5));
- CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC Gtl322 =
+ kmadd(JacPDstandardNth3gt22,ToReal(-0.5),JacPDstandardNth2gt23);
- CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L));
+ CCTK_REAL_VEC Gtl323 = kmul(JacPDstandardNth2gt33,ToReal(0.5));
- CCTK_REAL Gtl111 = 0.5*JacPDstandardNth1gt11;
+ CCTK_REAL_VEC Gtl333 = kmul(JacPDstandardNth3gt33,ToReal(0.5));
- CCTK_REAL Gtl112 = 0.5*JacPDstandardNth2gt11;
+ CCTK_REAL_VEC Gt111 =
+ kmadd(Gtl111,gtu11,kmadd(Gtl211,gtu12,kmul(Gtl311,gtu13)));
- CCTK_REAL Gtl113 = 0.5*JacPDstandardNth3gt11;
+ CCTK_REAL_VEC Gt211 =
+ kmadd(Gtl111,gtu12,kmadd(Gtl211,gtu22,kmul(Gtl311,gtu23)));
- CCTK_REAL Gtl122 = -0.5*JacPDstandardNth1gt22 + JacPDstandardNth2gt12;
+ CCTK_REAL_VEC Gt311 =
+ kmadd(Gtl111,gtu13,kmadd(Gtl211,gtu23,kmul(Gtl311,gtu33)));
- CCTK_REAL Gtl123 = 0.5*(-JacPDstandardNth1gt23 + JacPDstandardNth2gt13
- + JacPDstandardNth3gt12);
+ CCTK_REAL_VEC Gt112 =
+ kmadd(Gtl112,gtu11,kmadd(Gtl212,gtu12,kmul(Gtl312,gtu13)));
- CCTK_REAL Gtl133 = -0.5*JacPDstandardNth1gt33 + JacPDstandardNth3gt13;
+ CCTK_REAL_VEC Gt212 =
+ kmadd(Gtl112,gtu12,kmadd(Gtl212,gtu22,kmul(Gtl312,gtu23)));
- CCTK_REAL Gtl211 = JacPDstandardNth1gt12 - 0.5*JacPDstandardNth2gt11;
+ CCTK_REAL_VEC Gt312 =
+ kmadd(Gtl112,gtu13,kmadd(Gtl212,gtu23,kmul(Gtl312,gtu33)));
- CCTK_REAL Gtl212 = 0.5*JacPDstandardNth1gt22;
+ CCTK_REAL_VEC Gt113 =
+ kmadd(Gtl113,gtu11,kmadd(Gtl213,gtu12,kmul(Gtl313,gtu13)));
- CCTK_REAL Gtl213 = 0.5*(JacPDstandardNth1gt23 - JacPDstandardNth2gt13
- + JacPDstandardNth3gt12);
+ CCTK_REAL_VEC Gt213 =
+ kmadd(Gtl113,gtu12,kmadd(Gtl213,gtu22,kmul(Gtl313,gtu23)));
- CCTK_REAL Gtl222 = 0.5*JacPDstandardNth2gt22;
+ CCTK_REAL_VEC Gt313 =
+ kmadd(Gtl113,gtu13,kmadd(Gtl213,gtu23,kmul(Gtl313,gtu33)));
- CCTK_REAL Gtl223 = 0.5*JacPDstandardNth3gt22;
+ CCTK_REAL_VEC Gt122 =
+ kmadd(Gtl122,gtu11,kmadd(Gtl222,gtu12,kmul(Gtl322,gtu13)));
- CCTK_REAL Gtl233 = -0.5*JacPDstandardNth2gt33 + JacPDstandardNth3gt23;
+ CCTK_REAL_VEC Gt222 =
+ kmadd(Gtl122,gtu12,kmadd(Gtl222,gtu22,kmul(Gtl322,gtu23)));
- CCTK_REAL Gtl311 = JacPDstandardNth1gt13 - 0.5*JacPDstandardNth3gt11;
+ CCTK_REAL_VEC Gt322 =
+ kmadd(Gtl122,gtu13,kmadd(Gtl222,gtu23,kmul(Gtl322,gtu33)));
- CCTK_REAL Gtl312 = 0.5*(JacPDstandardNth1gt23 + JacPDstandardNth2gt13
- - JacPDstandardNth3gt12);
+ CCTK_REAL_VEC Gt123 =
+ kmadd(Gtl123,gtu11,kmadd(Gtl223,gtu12,kmul(Gtl323,gtu13)));
- CCTK_REAL Gtl313 = 0.5*JacPDstandardNth1gt33;
+ CCTK_REAL_VEC Gt223 =
+ kmadd(Gtl123,gtu12,kmadd(Gtl223,gtu22,kmul(Gtl323,gtu23)));
- CCTK_REAL Gtl322 = JacPDstandardNth2gt23 - 0.5*JacPDstandardNth3gt22;
+ CCTK_REAL_VEC Gt323 =
+ kmadd(Gtl123,gtu13,kmadd(Gtl223,gtu23,kmul(Gtl323,gtu33)));
- CCTK_REAL Gtl323 = 0.5*JacPDstandardNth2gt33;
+ CCTK_REAL_VEC Gt133 =
+ kmadd(Gtl133,gtu11,kmadd(Gtl233,gtu12,kmul(Gtl333,gtu13)));
- CCTK_REAL Gtl333 = 0.5*JacPDstandardNth3gt33;
+ CCTK_REAL_VEC Gt233 =
+ kmadd(Gtl133,gtu12,kmadd(Gtl233,gtu22,kmul(Gtl333,gtu23)));
- CCTK_REAL Gt111 = Gtl111*gtu11 + Gtl211*gtu12 + Gtl311*gtu13;
+ CCTK_REAL_VEC Gt333 =
+ kmadd(Gtl133,gtu13,kmadd(Gtl233,gtu23,kmul(Gtl333,gtu33)));
- CCTK_REAL Gt211 = Gtl111*gtu12 + Gtl211*gtu22 + Gtl311*gtu23;
+ 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 Gt311 = Gtl111*gtu13 + Gtl211*gtu23 + Gtl311*gtu33;
+ 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 Gt112 = Gtl112*gtu11 + Gtl212*gtu12 + Gtl312*gtu13;
+ 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 Gt212 = Gtl112*gtu12 + Gtl212*gtu22 + Gtl312*gtu23;
+ CCTK_REAL_VEC fac1 =
+ IfThen(conformalMethod,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
- CCTK_REAL Gt312 = Gtl112*gtu13 + Gtl212*gtu23 + Gtl312*gtu33;
+ CCTK_REAL_VEC cdphi1 = kmul(fac1,JacPDstandardNth1phi);
- CCTK_REAL Gt113 = Gtl113*gtu11 + Gtl213*gtu12 + Gtl313*gtu13;
+ CCTK_REAL_VEC cdphi2 = kmul(fac1,JacPDstandardNth2phi);
- CCTK_REAL Gt213 = Gtl113*gtu12 + Gtl213*gtu22 + Gtl313*gtu23;
+ CCTK_REAL_VEC cdphi3 = kmul(fac1,JacPDstandardNth3phi);
- CCTK_REAL Gt313 = Gtl113*gtu13 + Gtl213*gtu23 + Gtl313*gtu33;
+ CCTK_REAL_VEC Atm11 =
+ kmadd(At11L,gtu11,kmadd(At12L,gtu12,kmul(At13L,gtu13)));
- CCTK_REAL Gt122 = Gtl122*gtu11 + Gtl222*gtu12 + Gtl322*gtu13;
+ CCTK_REAL_VEC Atm21 =
+ kmadd(At11L,gtu12,kmadd(At12L,gtu22,kmul(At13L,gtu23)));
- CCTK_REAL Gt222 = Gtl122*gtu12 + Gtl222*gtu22 + Gtl322*gtu23;
+ CCTK_REAL_VEC Atm31 =
+ kmadd(At11L,gtu13,kmadd(At12L,gtu23,kmul(At13L,gtu33)));
- CCTK_REAL Gt322 = Gtl122*gtu13 + Gtl222*gtu23 + Gtl322*gtu33;
+ CCTK_REAL_VEC Atm12 =
+ kmadd(At12L,gtu11,kmadd(At22L,gtu12,kmul(At23L,gtu13)));
- CCTK_REAL Gt123 = Gtl123*gtu11 + Gtl223*gtu12 + Gtl323*gtu13;
+ CCTK_REAL_VEC Atm22 =
+ kmadd(At12L,gtu12,kmadd(At22L,gtu22,kmul(At23L,gtu23)));
- CCTK_REAL Gt223 = Gtl123*gtu12 + Gtl223*gtu22 + Gtl323*gtu23;
+ CCTK_REAL_VEC Atm32 =
+ kmadd(At12L,gtu13,kmadd(At22L,gtu23,kmul(At23L,gtu33)));
- CCTK_REAL Gt323 = Gtl123*gtu13 + Gtl223*gtu23 + Gtl323*gtu33;
+ CCTK_REAL_VEC Atm13 =
+ kmadd(At13L,gtu11,kmadd(At23L,gtu12,kmul(At33L,gtu13)));
- CCTK_REAL Gt133 = Gtl133*gtu11 + Gtl233*gtu12 + Gtl333*gtu13;
+ CCTK_REAL_VEC Atm23 =
+ kmadd(At13L,gtu12,kmadd(At23L,gtu22,kmul(At33L,gtu23)));
- CCTK_REAL Gt233 = Gtl133*gtu12 + Gtl233*gtu22 + Gtl333*gtu23;
+ CCTK_REAL_VEC Atm33 =
+ kmadd(At13L,gtu13,kmadd(At23L,gtu23,kmul(At33L,gtu33)));
- CCTK_REAL Gt333 = Gtl133*gtu13 + Gtl233*gtu23 + Gtl333*gtu33;
+ CCTK_REAL_VEC Atu11 =
+ kmadd(Atm11,gtu11,kmadd(Atm12,gtu12,kmul(Atm13,gtu13)));
- CCTK_REAL Xtn1 = Gt111*gtu11 + Gt122*gtu22 + 2*(Gt112*gtu12 +
- Gt113*gtu13 + Gt123*gtu23) + Gt133*gtu33;
+ CCTK_REAL_VEC Atu12 =
+ kmadd(Atm11,gtu12,kmadd(Atm12,gtu22,kmul(Atm13,gtu23)));
- CCTK_REAL Xtn2 = Gt211*gtu11 + Gt222*gtu22 + 2*(Gt212*gtu12 +
- Gt213*gtu13 + Gt223*gtu23) + Gt233*gtu33;
+ CCTK_REAL_VEC Atu13 =
+ kmadd(Atm11,gtu13,kmadd(Atm12,gtu23,kmul(Atm13,gtu33)));
- CCTK_REAL Xtn3 = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu12 +
- Gt313*gtu13 + Gt323*gtu23) + Gt333*gtu33;
+ CCTK_REAL_VEC Atu22 =
+ kmadd(Atm21,gtu12,kmadd(Atm22,gtu22,kmul(Atm23,gtu23)));
- CCTK_REAL fac1 = IfThen(conformalMethod,-0.5*INV(phiL),1);
+ CCTK_REAL_VEC Atu23 =
+ kmadd(Atm21,gtu13,kmadd(Atm22,gtu23,kmul(Atm23,gtu33)));
- CCTK_REAL cdphi1 = fac1*JacPDstandardNth1phi;
+ CCTK_REAL_VEC Atu33 =
+ kmadd(Atm31,gtu13,kmadd(Atm32,gtu23,kmul(Atm33,gtu33)));
- CCTK_REAL cdphi2 = fac1*JacPDstandardNth2phi;
+ CCTK_REAL_VEC e4phi =
+ IfThen(conformalMethod,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
- CCTK_REAL cdphi3 = fac1*JacPDstandardNth3phi;
+ CCTK_REAL_VEC em4phi = INV(e4phi);
- CCTK_REAL Atm11 = At11L*gtu11 + At12L*gtu12 + At13L*gtu13;
+ 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 Atm21 = At11L*gtu12 + At12L*gtu22 + At13L*gtu23;
+ CCTK_REAL_VEC S1 =
+ kmul(INV(alphaL),kmadd(beta1L,eTxxL,kmadd(beta2L,eTxyL,kmsub(beta3L,eTxzL,eTtxL))));
- CCTK_REAL Atm31 = At11L*gtu13 + At12L*gtu23 + At13L*gtu33;
+ CCTK_REAL_VEC S2 =
+ kmul(INV(alphaL),kmadd(beta1L,eTxyL,kmadd(beta2L,eTyyL,kmsub(beta3L,eTyzL,eTtyL))));
- CCTK_REAL Atm12 = At12L*gtu11 + At22L*gtu12 + At23L*gtu13;
+ CCTK_REAL_VEC S3 =
+ kmul(INV(alphaL),kmadd(beta1L,eTxzL,kmadd(beta2L,eTyzL,kmsub(beta3L,eTzzL,eTtzL))));
- CCTK_REAL Atm22 = At12L*gtu12 + At22L*gtu22 + At23L*gtu23;
+ 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 Atm32 = At12L*gtu13 + At22L*gtu23 + At23L*gtu33;
+ 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 Atm13 = At13L*gtu11 + At23L*gtu12 + At33L*gtu13;
+ 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))))));
- CCTK_REAL Atm23 = At13L*gtu12 + At23L*gtu22 + At33L*gtu23;
+ CCTK_REAL_VEC gt12rhsL =
+ kmul(ToReal(0.333333333333333333333333333333),kmadd(alphaL,kmul(At12L,ToReal(-6)),kmadd(gt12L,kadd(JacPDstandardNth1beta1,kmadd(JacPDstandardNth3beta3,ToReal(-2),JacPDstandardNth2beta2)),kmul(kmadd(gt22L,JacPDstandardNth1beta2,kmadd(gt23L,JacPDstandardNth1beta3,kmadd(gt11L,JacPDstandardNth2beta1,kmul(gt13L,JacPDstandardNth2beta3)))),ToReal(3)))));
- CCTK_REAL Atm33 = At13L*gtu13 + At23L*gtu23 + At33L*gtu33;
+ CCTK_REAL_VEC gt13rhsL =
+ kmul(ToReal(0.333333333333333333333333333333),kmadd(alphaL,kmul(At13L,ToReal(-6)),kmadd(gt13L,kadd(JacPDstandardNth1beta1,kmadd(JacPDstandardNth2beta2,ToReal(-2),JacPDstandardNth3beta3)),kmul(kmadd(gt23L,JacPDstandardNth1beta2,kmadd(gt33L,JacPDstandardNth1beta3,kmadd(gt11L,JacPDstandardNth3beta1,kmul(gt12L,JacPDstandardNth3beta2)))),ToReal(3)))));
- CCTK_REAL Atu11 = Atm11*gtu11 + Atm12*gtu12 + Atm13*gtu13;
+ CCTK_REAL_VEC gt22rhsL =
+ kmul(ToReal(-0.666666666666666666666666666667),kmadd(kmadd(gt12L,JacPDstandardNth2beta1,kmul(gt23L,JacPDstandardNth2beta3)),ToReal(-3),kmadd(gt22L,kadd(JacPDstandardNth1beta1,kmadd(JacPDstandardNth2beta2,ToReal(-2),JacPDstandardNth3beta3)),kmul(alphaL,kmul(At22L,ToReal(3))))));
- CCTK_REAL Atu12 = Atm11*gtu12 + Atm12*gtu22 + Atm13*gtu23;
+ CCTK_REAL_VEC gt23rhsL =
+ kmul(ToReal(0.333333333333333333333333333333),kmadd(alphaL,kmul(At23L,ToReal(-6)),kmadd(gt23L,kadd(JacPDstandardNth2beta2,kmadd(JacPDstandardNth1beta1,ToReal(-2),JacPDstandardNth3beta3)),kmul(kmadd(gt13L,JacPDstandardNth2beta1,kmadd(gt33L,JacPDstandardNth2beta3,kmadd(gt12L,JacPDstandardNth3beta1,kmul(gt22L,JacPDstandardNth3beta2)))),ToReal(3)))));
- CCTK_REAL Atu13 = Atm11*gtu13 + Atm12*gtu23 + Atm13*gtu33;
+ CCTK_REAL_VEC gt33rhsL =
+ kmul(ToReal(-0.666666666666666666666666666667),kmadd(kmadd(gt13L,JacPDstandardNth3beta1,kmul(gt23L,JacPDstandardNth3beta2)),ToReal(-3),kmadd(gt33L,kadd(JacPDstandardNth1beta1,kmadd(JacPDstandardNth3beta3,ToReal(-2),JacPDstandardNth2beta2)),kmul(alphaL,kmul(At33L,ToReal(3))))));
- CCTK_REAL Atu22 = Atm21*gtu12 + Atm22*gtu22 + Atm23*gtu23;
+ 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),kmul(gtu33,JacPDstandardNth33beta1))))),ToReal(3),kmadd(gtu11,kadd(JacPDstandardNth12beta2,kmadd(JacPDstandardNth11beta1,ToReal(4),JacPDstandardNth13beta3)),kmadd(gtu12,kadd(JacPDstandardNth22beta2,kmadd(JacPDstandardNth21beta1,ToReal(4),JacPDstandardNth23beta3)),kmadd(gtu13,kadd(JacPDstandardNth32beta2,kmadd(JacPDstandardNth31beta1,ToReal(4),JacPDstandardNth33beta3)),kmul(alphaL,kmadd(kmadd(gtu11,S1,kmadd(gtu12,S2,kmul(gtu13,S3))),ToReal(-150.7964473723100754462068823974161384415),kmadd(kmadd(gtu11,JacPDstandardNth1trK,kmadd(gtu12,JacPDstandardNth2trK,kmul(gtu13,JacPDstandardNth3trK))),ToReal(-4),kmadd(ToReal(6),kmadd(Atu22,Gt122,kmadd(Atu33,Gt133,kmul(Atu11,kmadd(cdphi1,ToReal(6),Gt111)))),kmadd(kmadd(Atu23,Gt123,kmul(Atu12,kmadd(cdphi2,ToReal(3),Gt112))),ToReal(12),kmul(Atu13,kmadd(Gt113,ToReal(12),kmul(cdphi3,ToReal(36)))))))))))))))));
- CCTK_REAL Atu23 = Atm21*gtu13 + Atm22*gtu23 + Atm23*gtu33;
+ 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(gtu23,JacPDstandardNth23beta2,kmadd(gtu13,kadd(JacPDstandardNth13beta2,JacPDstandardNth31beta2),kmul(gtu33,JacPDstandardNth33beta2)))),ToReal(3),kmadd(gtu12,kadd(JacPDstandardNth11beta1,kadd(JacPDstandardNth13beta3,kmadd(JacPDstandardNth21beta2,ToReal(3),kmul(JacPDstandardNth12beta2,ToReal(4))))),kmadd(gtu22,kadd(JacPDstandardNth21beta1,kmadd(JacPDstandardNth22beta2,ToReal(4),JacPDstandardNth23beta3)),kmadd(gtu23,kadd(JacPDstandardNth31beta1,kmadd(JacPDstandardNth32beta2,ToReal(4),JacPDstandardNth33beta3)),kmul(alphaL,kmadd(kmadd(gtu12,S1,kmadd(gtu22,S2,kmul(gtu23,S3))),ToReal(-150.7964473723100754462068823974161384415),kmadd(kmadd(gtu12,JacPDstandardNth1trK,kmadd(gtu22,JacPDstandardNth2trK,kmul(gtu23,JacPDstandardNth3trK))),ToReal(-4),kmadd(ToReal(6),kmadd(Atu11,Gt211,kmadd(Atu33,Gt233,kmul(Atu22,kmadd(cdphi2,ToReal(6),Gt222)))),kmadd(kmadd(Atu13,Gt213,kmul(Atu12,kmadd(cdphi1,ToReal(3),Gt212))),ToReal(12),kmul(Atu23,kmadd(Gt223,ToReal(12),kmul(cdphi3,ToReal(36)))))))))))))))));
- CCTK_REAL Atu33 = Atm31*gtu13 + Atm32*gtu23 + Atm33*gtu33;
+ 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),kmadd(Xtn3,kmsub(kadd(JacPDstandardNth1beta1,JacPDstandardNth2beta2),ToReal(2),JacPDstandardNth3beta3),kmadd(kmadd(gtu11,JacPDstandardNth11beta3,kmadd(gtu12,kadd(JacPDstandardNth12beta3,JacPDstandardNth21beta3),kmadd(gtu22,JacPDstandardNth22beta3,kmul(gtu23,JacPDstandardNth32beta3)))),ToReal(3),kmadd(gtu13,kadd(JacPDstandardNth11beta1,kadd(JacPDstandardNth12beta2,kmadd(JacPDstandardNth31beta3,ToReal(3),kmul(JacPDstandardNth13beta3,ToReal(4))))),kmadd(gtu23,kadd(JacPDstandardNth21beta1,kmadd(JacPDstandardNth23beta3,ToReal(4),JacPDstandardNth22beta2)),kmadd(gtu33,kadd(JacPDstandardNth31beta1,kmadd(JacPDstandardNth33beta3,ToReal(4),JacPDstandardNth32beta2)),kmul(alphaL,kmadd(kmadd(gtu13,S1,kmadd(gtu23,S2,kmul(gtu33,S3))),ToReal(-150.7964473723100754462068823974161384415),kmadd(kmadd(gtu13,JacPDstandardNth1trK,kmadd(gtu23,JacPDstandardNth2trK,kmul(gtu33,JacPDstandardNth3trK))),ToReal(-4),kmadd(kmadd(Atu11,Gt311,kmul(Atu22,Gt322)),ToReal(6),kmadd(kmadd(Atu12,Gt312,kmadd(Atu13,kmadd(cdphi1,ToReal(3),Gt313),kmul(Atu23,kmadd(cdphi2,ToReal(3),Gt323)))),ToReal(12),kmul(Atu33,kmadd(Gt333,ToReal(6),kmul(cdphi3,ToReal(36)))))))))))))))));
- CCTK_REAL e4phi = IfThen(conformalMethod,INV(SQR(phiL)),exp(4*phiL));
+ CCTK_REAL_VEC Xt1rhsL = dotXt1;
- CCTK_REAL em4phi = INV(e4phi);
+ CCTK_REAL_VEC Xt2rhsL = dotXt2;
- CCTK_REAL rho = INV(SQR(alphaL))*(eTttL - 2*(beta2L*eTtyL +
- beta3L*eTtzL) + 2*(beta1L*(-eTtxL + beta2L*eTxyL + beta3L*eTxzL) +
- beta2L*beta3L*eTyzL) + eTxxL*SQR(beta1L) + eTyyL*SQR(beta2L) +
- eTzzL*SQR(beta3L));
+ CCTK_REAL_VEC Xt3rhsL = dotXt3;
- CCTK_REAL S1 = (-eTtxL + beta1L*eTxxL + beta2L*eTxyL +
- beta3L*eTxzL)*INV(alphaL);
+ CCTK_REAL_VEC dottrK =
+ kmsub(alphaL,kadd(SQR(Atm11),kadd(SQR(Atm22),kadd(SQR(Atm33),kmadd(SQR(trKL),ToReal(0.333333333333333333333333333333),kmadd(kmadd(Atm12,Atm21,kmadd(Atm13,Atm31,kmul(Atm23,Atm32))),ToReal(2),kmul(kadd(rho,trS),ToReal(12.56637061435917295385057353311801153679))))))),kmul(em4phi,knmsub(JacPDstandardNth1alpha,Xtn1,knmsub(JacPDstandardNth2alpha,Xtn2,knmsub(JacPDstandardNth3alpha,Xtn3,kmadd(gtu11,kmadd(cdphi1,kmul(JacPDstandardNth1alpha,ToReal(2)),JacPDstandardNth11alpha),kmadd(gtu12,kadd(JacPDstandardNth12alpha,kadd(JacPDstandardNth21alpha,kmadd(cdphi2,kmul(JacPDstandardNth1alpha,ToReal(2)),kmul(cdphi1,kmul(JacPDstandardNth2alpha,ToReal(2)))))),kmadd(gtu22,kmadd(cdphi2,kmul(JacPDstandardNth2alpha,ToReal(2)),JacPDstandardNth22alpha),kmadd(gtu13,kadd(JacPDstandardNth13alpha,kadd(JacPDstandardNth31alpha,kmadd(cdphi3,kmul(JacPDstandardNth1alpha,ToReal(2)),kmul(cdphi1,kmul(JacPDstandardNth3alpha,ToReal(2)))))),kmadd(gtu23,kadd(JacPDstandardNth23alpha,kadd(JacPDstandardNth32alpha,kmadd(cdphi3,kmul(JacPDstandardNth2alpha,ToReal(2)),kmul(cdphi2,kmul(JacPDstandardNth3alpha,ToReal(2)))))),kmul(gtu33,kmadd(cdphi3,kmul(JacPDstandardNth3alpha,ToReal(2)),JacPDstandardNth33alpha))))))))))));
- CCTK_REAL S2 = (-eTtyL + beta1L*eTxyL + beta2L*eTyyL +
- beta3L*eTyzL)*INV(alphaL);
+ CCTK_REAL_VEC trKrhsL = dottrK;
- CCTK_REAL S3 = (-eTtzL + beta1L*eTxzL + beta2L*eTyzL +
- beta3L*eTzzL)*INV(alphaL);
+ CCTK_REAL_VEC alpharhsL =
+ kneg(kmul(kpow(alphaL,harmonicN),kmul(ToReal(harmonicF),kmadd(ksub(AL,trKL),ToReal(LapseACoeff),trKL))));
- CCTK_REAL trS = em4phi*(eTxxL*gtu11 + eTyyL*gtu22 + 2*(eTxyL*gtu12 +
- eTxzL*gtu13 + eTyzL*gtu23) + eTzzL*gtu33);
+ CCTK_REAL_VEC ArhsL =
+ kmul(knmsub(AL,ToReal(AlphaDriver),dottrK),ToReal(LapseACoeff));
- CCTK_REAL phirhsL =
- IfThen(conformalMethod,phiL*(-0.333333333333333333333333333333*(JacPDstandardNth1beta1
- + JacPDstandardNth2beta2 + JacPDstandardNth3beta3) +
- 0.333333333333333333333333333333*alphaL*trKL),0.166666666666666666666666666667*(JacPDstandardNth1beta1
- + JacPDstandardNth2beta2 + JacPDstandardNth3beta3) -
- 0.166666666666666666666666666667*alphaL*trKL);
+ CCTK_REAL_VEC eta =
+ kfmin(ToReal(1),kmul(INV(rL),ToReal(SpatialBetaDriverRadius)));
- CCTK_REAL gt11rhsL = -0.666666666666666666666666666667*(3*alphaL*At11L
- - 3*(gt12L*JacPDstandardNth1beta2 + gt13L*JacPDstandardNth1beta3) +
- gt11L*(-2*JacPDstandardNth1beta1 + JacPDstandardNth2beta2 +
- JacPDstandardNth3beta3));
+ CCTK_REAL_VEC theta =
+ kfmin(ToReal(1),kexp(knmsub(rL,INV(ToReal(SpatialShiftGammaCoeffRadius)),ToReal(1))));
- CCTK_REAL gt12rhsL = 0.333333333333333333333333333333*(-6*alphaL*At12L
- + 3*(gt22L*JacPDstandardNth1beta2 + gt23L*JacPDstandardNth1beta3 +
- gt11L*JacPDstandardNth2beta1 + gt13L*JacPDstandardNth2beta3) +
- gt12L*(JacPDstandardNth1beta1 + JacPDstandardNth2beta2 -
- 2*JacPDstandardNth3beta3));
+ CCTK_REAL_VEC beta1rhsL;
+ CCTK_REAL_VEC beta2rhsL;
+ CCTK_REAL_VEC beta3rhsL;
- CCTK_REAL gt13rhsL = 0.333333333333333333333333333333*(-6*alphaL*At13L
- + 3*(gt23L*JacPDstandardNth1beta2 + gt33L*JacPDstandardNth1beta3 +
- gt11L*JacPDstandardNth3beta1 + gt12L*JacPDstandardNth3beta2) +
- gt13L*(JacPDstandardNth1beta1 - 2*JacPDstandardNth2beta2 +
- JacPDstandardNth3beta3));
+ if (harmonicShift)
+ {
+ beta1rhsL =
+ kmul(alphaL,kmul(phiL,kmul(ToReal(0.5),kmadd(kmadd(gtu11,JacPDstandardNth1alpha,kmadd(gtu12,JacPDstandardNth2alpha,kmul(gtu13,JacPDstandardNth3alpha))),kmul(phiL,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(kmadd(gtu12,JacPDstandardNth1alpha,kmadd(gtu22,JacPDstandardNth2alpha,kmul(gtu23,JacPDstandardNth3alpha))),kmul(phiL,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(kmadd(gtu13,JacPDstandardNth1alpha,kmadd(gtu23,JacPDstandardNth2alpha,kmul(gtu33,JacPDstandardNth3alpha))),kmul(phiL,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(beta1L,kmul(eta,ToReal(BetaDriver*(-1 +
+ ShiftBCoeff))),kmul(ksub(B1L,Xt1L),ToReal(ShiftBCoeff)))),ToReal(ShiftGammaCoeff)));
+
+ beta2rhsL =
+ kmul(theta,kmul(kadd(Xt2L,kmadd(beta2L,kmul(eta,ToReal(BetaDriver*(-1 +
+ ShiftBCoeff))),kmul(ksub(B2L,Xt2L),ToReal(ShiftBCoeff)))),ToReal(ShiftGammaCoeff)));
+
+ beta3rhsL =
+ kmul(theta,kmul(kadd(Xt3L,kmadd(beta3L,kmul(eta,ToReal(BetaDriver*(-1 +
+ ShiftBCoeff))),kmul(ksub(B3L,Xt3L),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));
+
+ /* 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(Arhs[index],ArhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B1rhs[index],B1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B2rhs[index],B2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt12rhs[index],gt12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt13rhs[index],gt13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt22rhs[index],gt22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt23rhs[index],gt23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt33rhs[index],gt33rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(phirhs[index],phirhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(trKrhs[index],trKrhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt1rhs[index],Xt1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt2rhs[index],Xt2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt3rhs[index],Xt3rhsL,elt_count_lo,elt_count_hi);
+ break;
+ }
- CCTK_REAL gt22rhsL = -0.666666666666666666666666666667*(3*alphaL*At22L
- - 3*(gt12L*JacPDstandardNth2beta1 + gt23L*JacPDstandardNth2beta3) +
- gt22L*(JacPDstandardNth1beta1 - 2*JacPDstandardNth2beta2 +
- JacPDstandardNth3beta3));
-
- CCTK_REAL gt23rhsL = 0.333333333333333333333333333333*(-6*alphaL*At23L
- + 3*(gt13L*JacPDstandardNth2beta1 + gt33L*JacPDstandardNth2beta3 +
- gt12L*JacPDstandardNth3beta1 + gt22L*JacPDstandardNth3beta2) +
- gt23L*(-2*JacPDstandardNth1beta1 + JacPDstandardNth2beta2 +
- JacPDstandardNth3beta3));
-
- CCTK_REAL gt33rhsL = -0.666666666666666666666666666667*(3*alphaL*At33L
- - 3*(gt13L*JacPDstandardNth3beta1 + gt23L*JacPDstandardNth3beta2) +
- gt33L*(JacPDstandardNth1beta1 + JacPDstandardNth2beta2 -
- 2*JacPDstandardNth3beta3));
-
- CCTK_REAL dotXt1 =
- 0.333333333333333333333333333333*(gtu11*(4*JacPDstandardNth11beta1 +
- JacPDstandardNth12beta2 + JacPDstandardNth13beta3) +
- gtu12*(4*JacPDstandardNth21beta1 + JacPDstandardNth22beta2 +
- JacPDstandardNth23beta3) + 3*(gtu12*JacPDstandardNth12beta1 +
- gtu13*JacPDstandardNth13beta1 + gtu22*JacPDstandardNth22beta1 +
- gtu23*(JacPDstandardNth23beta1 + JacPDstandardNth32beta1) +
- gtu33*JacPDstandardNth33beta1) + gtu13*(4*JacPDstandardNth31beta1 +
- JacPDstandardNth32beta2 + JacPDstandardNth33beta3) -
- 6*(Atu11*JacPDstandardNth1alpha + Atu12*JacPDstandardNth2alpha +
- Atu13*JacPDstandardNth3alpha) + alphaL*(Atu13*(36*cdphi3 + 12*Gt113) +
- 12*(Atu12*(3*cdphi2 + Gt112) + Atu23*Gt123) + 6*(Atu11*(6*cdphi1 +
- Gt111) + Atu22*Gt122 + Atu33*Gt133) - 4*(gtu11*JacPDstandardNth1trK +
- gtu12*JacPDstandardNth2trK + gtu13*JacPDstandardNth3trK) -
- 150.7964473723100754462068823974161384415*(gtu11*S1 + gtu12*S2 +
- gtu13*S3)) + (-JacPDstandardNth1beta1 + 2*(JacPDstandardNth2beta2 +
- JacPDstandardNth3beta3))*Xtn1 - 3*(JacPDstandardNth2beta1*Xtn2 +
- JacPDstandardNth3beta1*Xtn3));
-
- CCTK_REAL dotXt2 =
- 0.333333333333333333333333333333*(gtu12*(JacPDstandardNth11beta1 +
- 4*JacPDstandardNth12beta2 + JacPDstandardNth13beta3 +
- 3*JacPDstandardNth21beta2) + gtu22*(JacPDstandardNth21beta1 +
- 4*JacPDstandardNth22beta2 + JacPDstandardNth23beta3) +
- 3*(gtu11*JacPDstandardNth11beta2 + gtu23*JacPDstandardNth23beta2 +
- gtu13*(JacPDstandardNth13beta2 + JacPDstandardNth31beta2) +
- gtu33*JacPDstandardNth33beta2) + gtu23*(JacPDstandardNth31beta1 +
- 4*JacPDstandardNth32beta2 + JacPDstandardNth33beta3) -
- 6*(Atu12*JacPDstandardNth1alpha + Atu22*JacPDstandardNth2alpha +
- Atu23*JacPDstandardNth3alpha) + alphaL*(12*(Atu12*(3*cdphi1 + Gt212) +
- Atu13*Gt213) + Atu23*(36*cdphi3 + 12*Gt223) + 6*(Atu11*Gt211 +
- Atu22*(6*cdphi2 + Gt222) + Atu33*Gt233) - 4*(gtu12*JacPDstandardNth1trK
- + gtu22*JacPDstandardNth2trK + gtu23*JacPDstandardNth3trK) -
- 150.7964473723100754462068823974161384415*(gtu12*S1 + gtu22*S2 +
- gtu23*S3)) + (-JacPDstandardNth2beta2 + 2*(JacPDstandardNth1beta1 +
- JacPDstandardNth3beta3))*Xtn2 - 3*(JacPDstandardNth1beta2*Xtn1 +
- JacPDstandardNth3beta2*Xtn3));
-
- CCTK_REAL dotXt3 =
- 0.333333333333333333333333333333*(gtu23*(JacPDstandardNth21beta1 +
- JacPDstandardNth22beta2 + 4*JacPDstandardNth23beta3) +
- gtu13*(JacPDstandardNth11beta1 + JacPDstandardNth12beta2 +
- 4*JacPDstandardNth13beta3 + 3*JacPDstandardNth31beta3) +
- 3*(gtu11*JacPDstandardNth11beta3 + gtu12*(JacPDstandardNth12beta3 +
- JacPDstandardNth21beta3) + gtu22*JacPDstandardNth22beta3 +
- gtu23*JacPDstandardNth32beta3) + gtu33*(JacPDstandardNth31beta1 +
- JacPDstandardNth32beta2 + 4*JacPDstandardNth33beta3) -
- 6*(Atu13*JacPDstandardNth1alpha + Atu23*JacPDstandardNth2alpha +
- Atu33*JacPDstandardNth3alpha) + alphaL*(6*(Atu11*Gt311 + Atu22*Gt322) +
- 12*(Atu12*Gt312 + Atu13*(3*cdphi1 + Gt313) + Atu23*(3*cdphi2 + Gt323))
- + Atu33*(36*cdphi3 + 6*Gt333) - 4*(gtu13*JacPDstandardNth1trK +
- gtu23*JacPDstandardNth2trK + gtu33*JacPDstandardNth3trK) -
- 150.7964473723100754462068823974161384415*(gtu13*S1 + gtu23*S2 +
- gtu33*S3)) - 3*(JacPDstandardNth1beta3*Xtn1 +
- JacPDstandardNth2beta3*Xtn2) + (2*(JacPDstandardNth1beta1 +
- JacPDstandardNth2beta2) - JacPDstandardNth3beta3)*Xtn3);
-
- CCTK_REAL Xt1rhsL = dotXt1;
-
- CCTK_REAL Xt2rhsL = dotXt2;
-
- CCTK_REAL Xt3rhsL = dotXt3;
-
- CCTK_REAL dottrK = -(em4phi*(gtu11*(JacPDstandardNth11alpha +
- 2*cdphi1*JacPDstandardNth1alpha) + gtu12*(JacPDstandardNth12alpha +
- 2*cdphi2*JacPDstandardNth1alpha + JacPDstandardNth21alpha +
- 2*cdphi1*JacPDstandardNth2alpha) + gtu22*(JacPDstandardNth22alpha +
- 2*cdphi2*JacPDstandardNth2alpha) + gtu13*(JacPDstandardNth13alpha +
- 2*cdphi3*JacPDstandardNth1alpha + JacPDstandardNth31alpha +
- 2*cdphi1*JacPDstandardNth3alpha) + gtu23*(JacPDstandardNth23alpha +
- 2*cdphi3*JacPDstandardNth2alpha + JacPDstandardNth32alpha +
- 2*cdphi2*JacPDstandardNth3alpha) + gtu33*(JacPDstandardNth33alpha +
- 2*cdphi3*JacPDstandardNth3alpha) - JacPDstandardNth1alpha*Xtn1 -
- JacPDstandardNth2alpha*Xtn2 - JacPDstandardNth3alpha*Xtn3)) +
- alphaL*(2*(Atm12*Atm21 + Atm13*Atm31 + Atm23*Atm32) +
- 12.56637061435917295385057353311801153679*(rho + trS) + SQR(Atm11) +
- SQR(Atm22) + SQR(Atm33) + 0.333333333333333333333333333333*SQR(trKL));
-
- CCTK_REAL trKrhsL = dottrK;
-
- CCTK_REAL alpharhsL =
- -(pow(alphaL,ToReal(harmonicN))*ToReal(harmonicF)*(trKL + (AL -
- trKL)*ToReal(LapseACoeff)));
-
- CCTK_REAL ArhsL = (dottrK -
- AL*ToReal(AlphaDriver))*ToReal(LapseACoeff);
-
- CCTK_REAL eta = fmin(1,INV(rL)*ToReal(SpatialBetaDriverRadius));
-
- CCTK_REAL theta = fmin(1,exp(1 -
- rL*INV(ToReal(SpatialShiftGammaCoeffRadius))));
-
- CCTK_REAL beta1rhsL = theta*(Xt1L + beta1L*eta*ToReal(BetaDriver)*(-1
- + ToReal(ShiftBCoeff)) + (B1L -
- Xt1L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
-
- CCTK_REAL beta2rhsL = theta*(Xt2L + beta2L*eta*ToReal(BetaDriver)*(-1
- + ToReal(ShiftBCoeff)) + (B2L -
- Xt2L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
-
- CCTK_REAL beta3rhsL = theta*(Xt3L + beta3L*eta*ToReal(BetaDriver)*(-1
- + ToReal(ShiftBCoeff)) + (B3L -
- Xt3L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
-
- CCTK_REAL B1rhsL = (dotXt1 -
- B1L*eta*ToReal(BetaDriver))*ToReal(ShiftBCoeff);
-
- CCTK_REAL B2rhsL = (dotXt2 -
- B2L*eta*ToReal(BetaDriver))*ToReal(ShiftBCoeff);
-
- CCTK_REAL B3rhsL = (dotXt3 -
- B3L*eta*ToReal(BetaDriver))*ToReal(ShiftBCoeff);
-
- /* Copy local copies back to grid functions */
- alpharhs[index] = alpharhsL;
- Arhs[index] = ArhsL;
- B1rhs[index] = B1rhsL;
- B2rhs[index] = B2rhsL;
- B3rhs[index] = B3rhsL;
- beta1rhs[index] = beta1rhsL;
- beta2rhs[index] = beta2rhsL;
- beta3rhs[index] = beta3rhsL;
- gt11rhs[index] = gt11rhsL;
- gt12rhs[index] = gt12rhsL;
- gt13rhs[index] = gt13rhsL;
- gt22rhs[index] = gt22rhsL;
- gt23rhs[index] = gt23rhsL;
- gt33rhs[index] = gt33rhsL;
- phirhs[index] = phirhsL;
- trKrhs[index] = trKrhsL;
- Xt1rhs[index] = Xt1rhsL;
- Xt2rhs[index] = Xt2rhsL;
- Xt3rhs[index] = Xt3rhsL;
+ /* 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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_hi(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_hi(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_hi(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_hi(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_hi(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_hi(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_hi(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_hi(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_hi(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_hi(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_hi(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt3rhs[index],Xt3rhsL,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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_lo(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_lo(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_lo(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_lo(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_lo(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_lo(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_lo(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_lo(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_lo(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_lo(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_lo(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt3rhs[index],Xt3rhsL,elt_count);
+ break;
+ }
+ vec_store_nta(alpharhs[index],alpharhsL);
+ vec_store_nta(Arhs[index],ArhsL);
+ vec_store_nta(B1rhs[index],B1rhsL);
+ vec_store_nta(B2rhs[index],B2rhsL);
+ vec_store_nta(B3rhs[index],B3rhsL);
+ vec_store_nta(beta1rhs[index],beta1rhsL);
+ vec_store_nta(beta2rhs[index],beta2rhsL);
+ vec_store_nta(beta3rhs[index],beta3rhsL);
+ vec_store_nta(gt11rhs[index],gt11rhsL);
+ vec_store_nta(gt12rhs[index],gt12rhsL);
+ vec_store_nta(gt13rhs[index],gt13rhsL);
+ vec_store_nta(gt22rhs[index],gt22rhsL);
+ vec_store_nta(gt23rhs[index],gt23rhsL);
+ vec_store_nta(gt33rhs[index],gt33rhsL);
+ vec_store_nta(phirhs[index],phirhsL);
+ vec_store_nta(trKrhs[index],trKrhsL);
+ vec_store_nta(Xt1rhs[index],Xt1rhsL);
+ vec_store_nta(Xt2rhs[index],Xt2rhsL);
+ vec_store_nta(Xt3rhs[index],Xt3rhsL);
}
- LC_ENDLOOP3 (ML_BSSN_MP_RHS1);
+ LC_ENDLOOP3VEC (ML_BSSN_MP_RHS1);
}
extern "C" void ML_BSSN_MP_RHS1(CCTK_ARGUMENTS)
@@ -1270,5 +1486,43 @@ extern "C" void ML_BSSN_MP_RHS1(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_RHS1_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_MP_RHS1_calc_every != ML_BSSN_MP_RHS1_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"grid::coordinates","Grid::coordinates","ML_BSSN_MP::ML_curv","ML_BSSN_MP::ML_dtlapse","ML_BSSN_MP::ML_dtlapserhs","ML_BSSN_MP::ML_dtshift","ML_BSSN_MP::ML_dtshiftrhs","ML_BSSN_MP::ML_Gamma","ML_BSSN_MP::ML_Gammarhs","ML_BSSN_MP::ML_lapse","ML_BSSN_MP::ML_lapserhs","ML_BSSN_MP::ML_log_confac","ML_BSSN_MP::ML_log_confacrhs","ML_BSSN_MP::ML_metric","ML_BSSN_MP::ML_metricrhs","ML_BSSN_MP::ML_shift","ML_BSSN_MP::ML_shiftrhs","ML_BSSN_MP::ML_trace_curv","ML_BSSN_MP::ML_trace_curvrhs"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_RHS1", 19, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_RHS1", 1, 1, 1);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_RHS1", 2, 2, 2);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_RHS1", 3, 3, 3);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_RHS1", 4, 4, 4);
+ break;
+ }
+
GenericFD_LoopOverInterior(cctkGH, &ML_BSSN_MP_RHS1_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_MP_RHS1_Body");
+ }
}
diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_RHS2.cc b/ML_BSSN_MP/src/ML_BSSN_MP_RHS2.cc
index ba1086e..b0e6910 100644
--- a/ML_BSSN_MP/src/ML_BSSN_MP_RHS2.cc
+++ b/ML_BSSN_MP/src/ML_BSSN_MP_RHS2.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_MP_RHS2_SelectBCs(CCTK_ARGUMENTS)
{
@@ -33,7 +34,7 @@ extern "C" void ML_BSSN_MP_RHS2_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_BSSN_MP_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_MP_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;
@@ -41,21 +42,6 @@ static void ML_BSSN_MP_RHS2_Body(cGH const * restrict const cctkGH, int const di
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_RHS2_Body");
- }
-
- if (cctk_iteration % ML_BSSN_MP_RHS2_calc_every != ML_BSSN_MP_RHS2_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN_MP::ML_curv","ML_BSSN_MP::ML_curvrhs","ML_BSSN_MP::ML_Gamma","ML_BSSN_MP::ML_lapse","ML_BSSN_MP::ML_log_confac","ML_BSSN_MP::ML_metric","ML_BSSN_MP::ML_shift","ML_BSSN_MP::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_RHS2", 8, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_RHS2", 2, 2, 2);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -65,41 +51,102 @@ static void ML_BSSN_MP_RHS2_Body(cGH const * restrict const cctkGH, int const di
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const p1o24dx = 0.0416666666666666666666666666667*INV(dx);
- CCTK_REAL const p1o24dy = 0.0416666666666666666666666666667*INV(dy);
- CCTK_REAL const p1o24dz = 0.0416666666666666666666666666667*INV(dz);
- CCTK_REAL const p1o64dx = 0.015625*INV(dx);
- CCTK_REAL const p1o64dy = 0.015625*INV(dy);
- CCTK_REAL const p1o64dz = 0.015625*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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)
@@ -146,48 +193,57 @@ static void ML_BSSN_MP_RHS2_Body(cGH const * restrict const cctkGH, int const di
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_LOOP3 (ML_BSSN_MP_RHS2,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_MP_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 alphaL = alpha[index];
- CCTK_REAL At11L = At11[index];
- CCTK_REAL At12L = At12[index];
- CCTK_REAL At13L = At13[index];
- CCTK_REAL At22L = At22[index];
- CCTK_REAL At23L = At23[index];
- CCTK_REAL At33L = At33[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL gt11L = gt11[index];
- CCTK_REAL gt12L = gt12[index];
- CCTK_REAL gt13L = gt13[index];
- CCTK_REAL gt22L = gt22[index];
- CCTK_REAL gt23L = gt23[index];
- CCTK_REAL gt33L = gt33[index];
- CCTK_REAL phiL = phi[index];
- CCTK_REAL trKL = trK[index];
- CCTK_REAL Xt1L = Xt1[index];
- CCTK_REAL Xt2L = Xt2[index];
- CCTK_REAL Xt3L = Xt3[index];
-
- CCTK_REAL eTxxL, eTxyL, eTxzL, eTyyL, eTyzL, eTzzL;
+ 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 eTxxL, eTxyL, eTxzL, eTyyL, eTyzL, eTzzL;
if (*stress_energy_state)
{
- eTxxL = eTxx[index];
- eTxyL = eTxy[index];
- eTxzL = eTxz[index];
- eTyyL = eTyy[index];
- eTyzL = eTyz[index];
- eTzzL = eTzz[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
{
@@ -199,850 +255,949 @@ static void ML_BSSN_MP_RHS2_Body(cGH const * restrict const cctkGH, int const di
eTzzL = ToReal(0.0);
}
- CCTK_REAL dJ111L, dJ112L, dJ113L, dJ122L, dJ123L, dJ133L, dJ211L, dJ212L, dJ213L, dJ222L, dJ223L, dJ233L, dJ311L, dJ312L, dJ313L, dJ322L, dJ323L, dJ333L, J11L, J12L, J13L, J21L, J22L, J23L, J31L, J32L, J33L;
+ 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 = dJ111[index];
- dJ112L = dJ112[index];
- dJ113L = dJ113[index];
- dJ122L = dJ122[index];
- dJ123L = dJ123[index];
- dJ133L = dJ133[index];
- dJ211L = dJ211[index];
- dJ212L = dJ212[index];
- dJ213L = dJ213[index];
- dJ222L = dJ222[index];
- dJ223L = dJ223[index];
- dJ233L = dJ233[index];
- dJ311L = dJ311[index];
- dJ312L = dJ312[index];
- dJ313L = dJ313[index];
- dJ322L = dJ322[index];
- dJ323L = dJ323[index];
- dJ333L = dJ333[index];
- J11L = J11[index];
- J12L = J12[index];
- J13L = J13[index];
- J21L = J21[index];
- J22L = J22[index];
- J23L = J23[index];
- J31L = J31[index];
- J32L = J32[index];
- J33L = J33[index];
+ dJ111L = vec_load(dJ111[index]);
+ dJ112L = vec_load(dJ112[index]);
+ dJ113L = vec_load(dJ113[index]);
+ dJ122L = vec_load(dJ122[index]);
+ dJ123L = vec_load(dJ123[index]);
+ dJ133L = vec_load(dJ133[index]);
+ dJ211L = vec_load(dJ211[index]);
+ dJ212L = vec_load(dJ212[index]);
+ dJ213L = vec_load(dJ213[index]);
+ dJ222L = vec_load(dJ222[index]);
+ dJ223L = vec_load(dJ223[index]);
+ dJ233L = vec_load(dJ233[index]);
+ dJ311L = vec_load(dJ311[index]);
+ dJ312L = vec_load(dJ312[index]);
+ dJ313L = vec_load(dJ313[index]);
+ dJ322L = vec_load(dJ322[index]);
+ dJ323L = vec_load(dJ323[index]);
+ dJ333L = vec_load(dJ333[index]);
+ J11L = vec_load(J11[index]);
+ J12L = vec_load(J12[index]);
+ J13L = vec_load(J13[index]);
+ J21L = vec_load(J21[index]);
+ J22L = vec_load(J22[index]);
+ J23L = vec_load(J23[index]);
+ J31L = vec_load(J31[index]);
+ J32L = vec_load(J32[index]);
+ J33L = vec_load(J33[index]);
}
/* Include user supplied include files */
/* Precompute derivatives */
- CCTK_REAL const PDstandardNth1alpha = PDstandardNth1(&alpha[index]);
- CCTK_REAL const PDstandardNth2alpha = PDstandardNth2(&alpha[index]);
- CCTK_REAL const PDstandardNth3alpha = PDstandardNth3(&alpha[index]);
- CCTK_REAL const PDstandardNth11alpha = PDstandardNth11(&alpha[index]);
- CCTK_REAL const PDstandardNth22alpha = PDstandardNth22(&alpha[index]);
- CCTK_REAL const PDstandardNth33alpha = PDstandardNth33(&alpha[index]);
- CCTK_REAL const PDstandardNth12alpha = PDstandardNth12(&alpha[index]);
- CCTK_REAL const PDstandardNth13alpha = PDstandardNth13(&alpha[index]);
- CCTK_REAL const PDstandardNth23alpha = PDstandardNth23(&alpha[index]);
- CCTK_REAL const PDstandardNth1beta1 = PDstandardNth1(&beta1[index]);
- CCTK_REAL const PDstandardNth2beta1 = PDstandardNth2(&beta1[index]);
- CCTK_REAL const PDstandardNth3beta1 = PDstandardNth3(&beta1[index]);
- CCTK_REAL const PDstandardNth1beta2 = PDstandardNth1(&beta2[index]);
- CCTK_REAL const PDstandardNth2beta2 = PDstandardNth2(&beta2[index]);
- CCTK_REAL const PDstandardNth3beta2 = PDstandardNth3(&beta2[index]);
- CCTK_REAL const PDstandardNth1beta3 = PDstandardNth1(&beta3[index]);
- CCTK_REAL const PDstandardNth2beta3 = PDstandardNth2(&beta3[index]);
- CCTK_REAL const PDstandardNth3beta3 = PDstandardNth3(&beta3[index]);
- CCTK_REAL const PDstandardNth1gt11 = PDstandardNth1(&gt11[index]);
- CCTK_REAL const PDstandardNth2gt11 = PDstandardNth2(&gt11[index]);
- CCTK_REAL const PDstandardNth3gt11 = PDstandardNth3(&gt11[index]);
- CCTK_REAL const PDstandardNth11gt11 = PDstandardNth11(&gt11[index]);
- CCTK_REAL const PDstandardNth22gt11 = PDstandardNth22(&gt11[index]);
- CCTK_REAL const PDstandardNth33gt11 = PDstandardNth33(&gt11[index]);
- CCTK_REAL const PDstandardNth12gt11 = PDstandardNth12(&gt11[index]);
- CCTK_REAL const PDstandardNth13gt11 = PDstandardNth13(&gt11[index]);
- CCTK_REAL const PDstandardNth23gt11 = PDstandardNth23(&gt11[index]);
- CCTK_REAL const PDstandardNth1gt12 = PDstandardNth1(&gt12[index]);
- CCTK_REAL const PDstandardNth2gt12 = PDstandardNth2(&gt12[index]);
- CCTK_REAL const PDstandardNth3gt12 = PDstandardNth3(&gt12[index]);
- CCTK_REAL const PDstandardNth11gt12 = PDstandardNth11(&gt12[index]);
- CCTK_REAL const PDstandardNth22gt12 = PDstandardNth22(&gt12[index]);
- CCTK_REAL const PDstandardNth33gt12 = PDstandardNth33(&gt12[index]);
- CCTK_REAL const PDstandardNth12gt12 = PDstandardNth12(&gt12[index]);
- CCTK_REAL const PDstandardNth13gt12 = PDstandardNth13(&gt12[index]);
- CCTK_REAL const PDstandardNth23gt12 = PDstandardNth23(&gt12[index]);
- CCTK_REAL const PDstandardNth1gt13 = PDstandardNth1(&gt13[index]);
- CCTK_REAL const PDstandardNth2gt13 = PDstandardNth2(&gt13[index]);
- CCTK_REAL const PDstandardNth3gt13 = PDstandardNth3(&gt13[index]);
- CCTK_REAL const PDstandardNth11gt13 = PDstandardNth11(&gt13[index]);
- CCTK_REAL const PDstandardNth22gt13 = PDstandardNth22(&gt13[index]);
- CCTK_REAL const PDstandardNth33gt13 = PDstandardNth33(&gt13[index]);
- CCTK_REAL const PDstandardNth12gt13 = PDstandardNth12(&gt13[index]);
- CCTK_REAL const PDstandardNth13gt13 = PDstandardNth13(&gt13[index]);
- CCTK_REAL const PDstandardNth23gt13 = PDstandardNth23(&gt13[index]);
- CCTK_REAL const PDstandardNth1gt22 = PDstandardNth1(&gt22[index]);
- CCTK_REAL const PDstandardNth2gt22 = PDstandardNth2(&gt22[index]);
- CCTK_REAL const PDstandardNth3gt22 = PDstandardNth3(&gt22[index]);
- CCTK_REAL const PDstandardNth11gt22 = PDstandardNth11(&gt22[index]);
- CCTK_REAL const PDstandardNth22gt22 = PDstandardNth22(&gt22[index]);
- CCTK_REAL const PDstandardNth33gt22 = PDstandardNth33(&gt22[index]);
- CCTK_REAL const PDstandardNth12gt22 = PDstandardNth12(&gt22[index]);
- CCTK_REAL const PDstandardNth13gt22 = PDstandardNth13(&gt22[index]);
- CCTK_REAL const PDstandardNth23gt22 = PDstandardNth23(&gt22[index]);
- CCTK_REAL const PDstandardNth1gt23 = PDstandardNth1(&gt23[index]);
- CCTK_REAL const PDstandardNth2gt23 = PDstandardNth2(&gt23[index]);
- CCTK_REAL const PDstandardNth3gt23 = PDstandardNth3(&gt23[index]);
- CCTK_REAL const PDstandardNth11gt23 = PDstandardNth11(&gt23[index]);
- CCTK_REAL const PDstandardNth22gt23 = PDstandardNth22(&gt23[index]);
- CCTK_REAL const PDstandardNth33gt23 = PDstandardNth33(&gt23[index]);
- CCTK_REAL const PDstandardNth12gt23 = PDstandardNth12(&gt23[index]);
- CCTK_REAL const PDstandardNth13gt23 = PDstandardNth13(&gt23[index]);
- CCTK_REAL const PDstandardNth23gt23 = PDstandardNth23(&gt23[index]);
- CCTK_REAL const PDstandardNth1gt33 = PDstandardNth1(&gt33[index]);
- CCTK_REAL const PDstandardNth2gt33 = PDstandardNth2(&gt33[index]);
- CCTK_REAL const PDstandardNth3gt33 = PDstandardNth3(&gt33[index]);
- CCTK_REAL const PDstandardNth11gt33 = PDstandardNth11(&gt33[index]);
- CCTK_REAL const PDstandardNth22gt33 = PDstandardNth22(&gt33[index]);
- CCTK_REAL const PDstandardNth33gt33 = PDstandardNth33(&gt33[index]);
- CCTK_REAL const PDstandardNth12gt33 = PDstandardNth12(&gt33[index]);
- CCTK_REAL const PDstandardNth13gt33 = PDstandardNth13(&gt33[index]);
- CCTK_REAL const PDstandardNth23gt33 = PDstandardNth23(&gt33[index]);
- CCTK_REAL const PDstandardNth1phi = PDstandardNth1(&phi[index]);
- CCTK_REAL const PDstandardNth2phi = PDstandardNth2(&phi[index]);
- CCTK_REAL const PDstandardNth3phi = PDstandardNth3(&phi[index]);
- CCTK_REAL const PDstandardNth11phi = PDstandardNth11(&phi[index]);
- CCTK_REAL const PDstandardNth22phi = PDstandardNth22(&phi[index]);
- CCTK_REAL const PDstandardNth33phi = PDstandardNth33(&phi[index]);
- CCTK_REAL const PDstandardNth12phi = PDstandardNth12(&phi[index]);
- CCTK_REAL const PDstandardNth13phi = PDstandardNth13(&phi[index]);
- CCTK_REAL const PDstandardNth23phi = PDstandardNth23(&phi[index]);
- CCTK_REAL const PDstandardNth1Xt1 = PDstandardNth1(&Xt1[index]);
- CCTK_REAL const PDstandardNth2Xt1 = PDstandardNth2(&Xt1[index]);
- CCTK_REAL const PDstandardNth3Xt1 = PDstandardNth3(&Xt1[index]);
- CCTK_REAL const PDstandardNth1Xt2 = PDstandardNth1(&Xt2[index]);
- CCTK_REAL const PDstandardNth2Xt2 = PDstandardNth2(&Xt2[index]);
- CCTK_REAL const PDstandardNth3Xt2 = PDstandardNth3(&Xt2[index]);
- CCTK_REAL const PDstandardNth1Xt3 = PDstandardNth1(&Xt3[index]);
- CCTK_REAL const PDstandardNth2Xt3 = PDstandardNth2(&Xt3[index]);
- CCTK_REAL const PDstandardNth3Xt3 = PDstandardNth3(&Xt3[index]);
+ 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 */
- CCTK_REAL JacPDstandardNth11alpha;
- CCTK_REAL JacPDstandardNth11gt11;
- CCTK_REAL JacPDstandardNth11gt12;
- CCTK_REAL JacPDstandardNth11gt13;
- CCTK_REAL JacPDstandardNth11gt22;
- CCTK_REAL JacPDstandardNth11gt23;
- CCTK_REAL JacPDstandardNth11gt33;
- CCTK_REAL JacPDstandardNth11phi;
- CCTK_REAL JacPDstandardNth12alpha;
- CCTK_REAL JacPDstandardNth12gt11;
- CCTK_REAL JacPDstandardNth12gt12;
- CCTK_REAL JacPDstandardNth12gt13;
- CCTK_REAL JacPDstandardNth12gt22;
- CCTK_REAL JacPDstandardNth12gt23;
- CCTK_REAL JacPDstandardNth12gt33;
- CCTK_REAL JacPDstandardNth12phi;
- CCTK_REAL JacPDstandardNth13alpha;
- CCTK_REAL JacPDstandardNth13gt11;
- CCTK_REAL JacPDstandardNth13gt12;
- CCTK_REAL JacPDstandardNth13gt13;
- CCTK_REAL JacPDstandardNth13gt22;
- CCTK_REAL JacPDstandardNth13gt23;
- CCTK_REAL JacPDstandardNth13gt33;
- CCTK_REAL JacPDstandardNth13phi;
- CCTK_REAL JacPDstandardNth1alpha;
- CCTK_REAL JacPDstandardNth1beta1;
- CCTK_REAL JacPDstandardNth1beta2;
- CCTK_REAL JacPDstandardNth1beta3;
- CCTK_REAL JacPDstandardNth1gt11;
- CCTK_REAL JacPDstandardNth1gt12;
- CCTK_REAL JacPDstandardNth1gt13;
- CCTK_REAL JacPDstandardNth1gt22;
- CCTK_REAL JacPDstandardNth1gt23;
- CCTK_REAL JacPDstandardNth1gt33;
- CCTK_REAL JacPDstandardNth1phi;
- CCTK_REAL JacPDstandardNth1Xt1;
- CCTK_REAL JacPDstandardNth1Xt2;
- CCTK_REAL JacPDstandardNth1Xt3;
- CCTK_REAL JacPDstandardNth21gt11;
- CCTK_REAL JacPDstandardNth21gt12;
- CCTK_REAL JacPDstandardNth21gt13;
- CCTK_REAL JacPDstandardNth21gt22;
- CCTK_REAL JacPDstandardNth21gt23;
- CCTK_REAL JacPDstandardNth21gt33;
- CCTK_REAL JacPDstandardNth22alpha;
- CCTK_REAL JacPDstandardNth22gt11;
- CCTK_REAL JacPDstandardNth22gt12;
- CCTK_REAL JacPDstandardNth22gt13;
- CCTK_REAL JacPDstandardNth22gt22;
- CCTK_REAL JacPDstandardNth22gt23;
- CCTK_REAL JacPDstandardNth22gt33;
- CCTK_REAL JacPDstandardNth22phi;
- CCTK_REAL JacPDstandardNth23alpha;
- CCTK_REAL JacPDstandardNth23gt11;
- CCTK_REAL JacPDstandardNth23gt12;
- CCTK_REAL JacPDstandardNth23gt13;
- CCTK_REAL JacPDstandardNth23gt22;
- CCTK_REAL JacPDstandardNth23gt23;
- CCTK_REAL JacPDstandardNth23gt33;
- CCTK_REAL JacPDstandardNth23phi;
- CCTK_REAL JacPDstandardNth2alpha;
- CCTK_REAL JacPDstandardNth2beta1;
- CCTK_REAL JacPDstandardNth2beta2;
- CCTK_REAL JacPDstandardNth2beta3;
- CCTK_REAL JacPDstandardNth2gt11;
- CCTK_REAL JacPDstandardNth2gt12;
- CCTK_REAL JacPDstandardNth2gt13;
- CCTK_REAL JacPDstandardNth2gt22;
- CCTK_REAL JacPDstandardNth2gt23;
- CCTK_REAL JacPDstandardNth2gt33;
- CCTK_REAL JacPDstandardNth2phi;
- CCTK_REAL JacPDstandardNth2Xt1;
- CCTK_REAL JacPDstandardNth2Xt2;
- CCTK_REAL JacPDstandardNth2Xt3;
- CCTK_REAL JacPDstandardNth31gt11;
- CCTK_REAL JacPDstandardNth31gt12;
- CCTK_REAL JacPDstandardNth31gt13;
- CCTK_REAL JacPDstandardNth31gt22;
- CCTK_REAL JacPDstandardNth31gt23;
- CCTK_REAL JacPDstandardNth31gt33;
- CCTK_REAL JacPDstandardNth32gt11;
- CCTK_REAL JacPDstandardNth32gt12;
- CCTK_REAL JacPDstandardNth32gt13;
- CCTK_REAL JacPDstandardNth32gt22;
- CCTK_REAL JacPDstandardNth32gt23;
- CCTK_REAL JacPDstandardNth32gt33;
- CCTK_REAL JacPDstandardNth33alpha;
- CCTK_REAL JacPDstandardNth33gt11;
- CCTK_REAL JacPDstandardNth33gt12;
- CCTK_REAL JacPDstandardNth33gt13;
- CCTK_REAL JacPDstandardNth33gt22;
- CCTK_REAL JacPDstandardNth33gt23;
- CCTK_REAL JacPDstandardNth33gt33;
- CCTK_REAL JacPDstandardNth33phi;
- CCTK_REAL JacPDstandardNth3alpha;
- CCTK_REAL JacPDstandardNth3beta1;
- CCTK_REAL JacPDstandardNth3beta2;
- CCTK_REAL JacPDstandardNth3beta3;
- CCTK_REAL JacPDstandardNth3gt11;
- CCTK_REAL JacPDstandardNth3gt12;
- CCTK_REAL JacPDstandardNth3gt13;
- CCTK_REAL JacPDstandardNth3gt22;
- CCTK_REAL JacPDstandardNth3gt23;
- CCTK_REAL JacPDstandardNth3gt33;
- CCTK_REAL JacPDstandardNth3phi;
- CCTK_REAL JacPDstandardNth3Xt1;
- CCTK_REAL JacPDstandardNth3Xt2;
- CCTK_REAL JacPDstandardNth3Xt3;
+ 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 = J11L*PDstandardNth1alpha +
- J21L*PDstandardNth2alpha + J31L*PDstandardNth3alpha;
+ 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))))))));
- JacPDstandardNth1beta1 = J11L*PDstandardNth1beta1 +
- J21L*PDstandardNth2beta1 + J31L*PDstandardNth3beta1;
+ 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))))))));
- JacPDstandardNth1beta2 = J11L*PDstandardNth1beta2 +
- J21L*PDstandardNth2beta2 + J31L*PDstandardNth3beta2;
+ 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))))))));
- JacPDstandardNth1beta3 = J11L*PDstandardNth1beta3 +
- J21L*PDstandardNth2beta3 + J31L*PDstandardNth3beta3;
+ 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))))))));
- JacPDstandardNth1gt11 = J11L*PDstandardNth1gt11 +
- J21L*PDstandardNth2gt11 + J31L*PDstandardNth3gt11;
+ 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))))))));
- JacPDstandardNth1gt12 = J11L*PDstandardNth1gt12 +
- J21L*PDstandardNth2gt12 + J31L*PDstandardNth3gt12;
+ 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))))))));
- JacPDstandardNth1gt13 = J11L*PDstandardNth1gt13 +
- J21L*PDstandardNth2gt13 + J31L*PDstandardNth3gt13;
+ 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))))))));
- JacPDstandardNth1gt22 = J11L*PDstandardNth1gt22 +
- J21L*PDstandardNth2gt22 + J31L*PDstandardNth3gt22;
+ 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))))))));
- JacPDstandardNth1gt23 = J11L*PDstandardNth1gt23 +
- J21L*PDstandardNth2gt23 + J31L*PDstandardNth3gt23;
+ 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))))))));
- JacPDstandardNth1gt33 = J11L*PDstandardNth1gt33 +
- J21L*PDstandardNth2gt33 + J31L*PDstandardNth3gt33;
+ 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))))))));
- JacPDstandardNth1phi = J11L*PDstandardNth1phi + J21L*PDstandardNth2phi
- + J31L*PDstandardNth3phi;
+ 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))))))));
- JacPDstandardNth1Xt1 = J11L*PDstandardNth1Xt1 + J21L*PDstandardNth2Xt1
- + J31L*PDstandardNth3Xt1;
+ 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))))))));
- JacPDstandardNth1Xt2 = J11L*PDstandardNth1Xt2 + J21L*PDstandardNth2Xt2
- + J31L*PDstandardNth3Xt2;
+ 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))))))));
- JacPDstandardNth1Xt3 = J11L*PDstandardNth1Xt3 + J21L*PDstandardNth2Xt3
- + J31L*PDstandardNth3Xt3;
+ 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))))))));
- JacPDstandardNth2alpha = J12L*PDstandardNth1alpha +
- J22L*PDstandardNth2alpha + J32L*PDstandardNth3alpha;
+ 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))))))));
- JacPDstandardNth2beta1 = J12L*PDstandardNth1beta1 +
- J22L*PDstandardNth2beta1 + J32L*PDstandardNth3beta1;
+ 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))))))));
- JacPDstandardNth2beta2 = J12L*PDstandardNth1beta2 +
- J22L*PDstandardNth2beta2 + J32L*PDstandardNth3beta2;
+ 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))))))));
- JacPDstandardNth2beta3 = J12L*PDstandardNth1beta3 +
- J22L*PDstandardNth2beta3 + J32L*PDstandardNth3beta3;
+ 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))))))));
- JacPDstandardNth2gt11 = J12L*PDstandardNth1gt11 +
- J22L*PDstandardNth2gt11 + J32L*PDstandardNth3gt11;
+ 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))))))));
- JacPDstandardNth2gt12 = J12L*PDstandardNth1gt12 +
- J22L*PDstandardNth2gt12 + J32L*PDstandardNth3gt12;
+ 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))))))));
- JacPDstandardNth2gt13 = J12L*PDstandardNth1gt13 +
- J22L*PDstandardNth2gt13 + J32L*PDstandardNth3gt13;
+ 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))))))));
- JacPDstandardNth2gt22 = J12L*PDstandardNth1gt22 +
- J22L*PDstandardNth2gt22 + J32L*PDstandardNth3gt22;
+ 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)))))));
- JacPDstandardNth2gt23 = J12L*PDstandardNth1gt23 +
- J22L*PDstandardNth2gt23 + J32L*PDstandardNth3gt23;
+ 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)))))));
- JacPDstandardNth2gt33 = J12L*PDstandardNth1gt33 +
- J22L*PDstandardNth2gt33 + J32L*PDstandardNth3gt33;
+ 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)))))));
- JacPDstandardNth2phi = J12L*PDstandardNth1phi + J22L*PDstandardNth2phi
- + J32L*PDstandardNth3phi;
+ 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)))))));
- JacPDstandardNth2Xt1 = J12L*PDstandardNth1Xt1 + J22L*PDstandardNth2Xt1
- + J32L*PDstandardNth3Xt1;
+ 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)))))));
- JacPDstandardNth2Xt2 = J12L*PDstandardNth1Xt2 + J22L*PDstandardNth2Xt2
- + J32L*PDstandardNth3Xt2;
+ 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)))))));
- JacPDstandardNth2Xt3 = J12L*PDstandardNth1Xt3 + J22L*PDstandardNth2Xt3
- + J32L*PDstandardNth3Xt3;
+ 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)))))));
- JacPDstandardNth3alpha = J13L*PDstandardNth1alpha +
- J23L*PDstandardNth2alpha + J33L*PDstandardNth3alpha;
+ 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)))))));
- JacPDstandardNth3beta1 = J13L*PDstandardNth1beta1 +
- J23L*PDstandardNth2beta1 + J33L*PDstandardNth3beta1;
+ 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)))))));
- JacPDstandardNth3beta2 = J13L*PDstandardNth1beta2 +
- J23L*PDstandardNth2beta2 + J33L*PDstandardNth3beta2;
+ 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)))))));
- JacPDstandardNth3beta3 = J13L*PDstandardNth1beta3 +
- J23L*PDstandardNth2beta3 + J33L*PDstandardNth3beta3;
+ 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)))))));
- JacPDstandardNth3gt11 = J13L*PDstandardNth1gt11 +
- J23L*PDstandardNth2gt11 + J33L*PDstandardNth3gt11;
+ 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)))))));
- JacPDstandardNth3gt12 = J13L*PDstandardNth1gt12 +
- J23L*PDstandardNth2gt12 + J33L*PDstandardNth3gt12;
+ 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)))))));
- JacPDstandardNth3gt13 = J13L*PDstandardNth1gt13 +
- J23L*PDstandardNth2gt13 + J33L*PDstandardNth3gt13;
+ 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)))))));
- JacPDstandardNth3gt22 = J13L*PDstandardNth1gt22 +
- J23L*PDstandardNth2gt22 + J33L*PDstandardNth3gt22;
+ 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)))))));
- JacPDstandardNth3gt23 = J13L*PDstandardNth1gt23 +
- J23L*PDstandardNth2gt23 + J33L*PDstandardNth3gt23;
+ 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)))))));
- JacPDstandardNth3gt33 = J13L*PDstandardNth1gt33 +
- J23L*PDstandardNth2gt33 + J33L*PDstandardNth3gt33;
+ 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)))))));
- JacPDstandardNth3phi = J13L*PDstandardNth1phi + J23L*PDstandardNth2phi
- + J33L*PDstandardNth3phi;
+ 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)))))));
- JacPDstandardNth3Xt1 = J13L*PDstandardNth1Xt1 + J23L*PDstandardNth2Xt1
- + J33L*PDstandardNth3Xt1;
+ 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)))))));
- JacPDstandardNth3Xt2 = J13L*PDstandardNth1Xt2 + J23L*PDstandardNth2Xt2
- + J33L*PDstandardNth3Xt2;
+ 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)))))));
- JacPDstandardNth3Xt3 = J13L*PDstandardNth1Xt3 + J23L*PDstandardNth2Xt3
- + J33L*PDstandardNth3Xt3;
+ 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)))))));
- JacPDstandardNth11alpha = dJ111L*PDstandardNth1alpha +
- 2*(J11L*(J21L*PDstandardNth12alpha + J31L*PDstandardNth13alpha) +
- J21L*J31L*PDstandardNth23alpha) + dJ211L*PDstandardNth2alpha +
- dJ311L*PDstandardNth3alpha + PDstandardNth11alpha*SQR(J11L) +
- PDstandardNth22alpha*SQR(J21L) + PDstandardNth33alpha*SQR(J31L);
-
- JacPDstandardNth11gt11 = dJ111L*PDstandardNth1gt11 +
- 2*(J11L*(J21L*PDstandardNth12gt11 + J31L*PDstandardNth13gt11) +
- J21L*J31L*PDstandardNth23gt11) + dJ211L*PDstandardNth2gt11 +
- dJ311L*PDstandardNth3gt11 + PDstandardNth11gt11*SQR(J11L) +
- PDstandardNth22gt11*SQR(J21L) + PDstandardNth33gt11*SQR(J31L);
-
- JacPDstandardNth11gt12 = dJ111L*PDstandardNth1gt12 +
- 2*(J11L*(J21L*PDstandardNth12gt12 + J31L*PDstandardNth13gt12) +
- J21L*J31L*PDstandardNth23gt12) + dJ211L*PDstandardNth2gt12 +
- dJ311L*PDstandardNth3gt12 + PDstandardNth11gt12*SQR(J11L) +
- PDstandardNth22gt12*SQR(J21L) + PDstandardNth33gt12*SQR(J31L);
-
- JacPDstandardNth11gt13 = dJ111L*PDstandardNth1gt13 +
- 2*(J11L*(J21L*PDstandardNth12gt13 + J31L*PDstandardNth13gt13) +
- J21L*J31L*PDstandardNth23gt13) + dJ211L*PDstandardNth2gt13 +
- dJ311L*PDstandardNth3gt13 + PDstandardNth11gt13*SQR(J11L) +
- PDstandardNth22gt13*SQR(J21L) + PDstandardNth33gt13*SQR(J31L);
-
- JacPDstandardNth11gt22 = dJ111L*PDstandardNth1gt22 +
- 2*(J11L*(J21L*PDstandardNth12gt22 + J31L*PDstandardNth13gt22) +
- J21L*J31L*PDstandardNth23gt22) + dJ211L*PDstandardNth2gt22 +
- dJ311L*PDstandardNth3gt22 + PDstandardNth11gt22*SQR(J11L) +
- PDstandardNth22gt22*SQR(J21L) + PDstandardNth33gt22*SQR(J31L);
-
- JacPDstandardNth11gt23 = dJ111L*PDstandardNth1gt23 +
- 2*(J11L*(J21L*PDstandardNth12gt23 + J31L*PDstandardNth13gt23) +
- J21L*J31L*PDstandardNth23gt23) + dJ211L*PDstandardNth2gt23 +
- dJ311L*PDstandardNth3gt23 + PDstandardNth11gt23*SQR(J11L) +
- PDstandardNth22gt23*SQR(J21L) + PDstandardNth33gt23*SQR(J31L);
-
- JacPDstandardNth11gt33 = dJ111L*PDstandardNth1gt33 +
- 2*(J11L*(J21L*PDstandardNth12gt33 + J31L*PDstandardNth13gt33) +
- J21L*J31L*PDstandardNth23gt33) + dJ211L*PDstandardNth2gt33 +
- dJ311L*PDstandardNth3gt33 + PDstandardNth11gt33*SQR(J11L) +
- PDstandardNth22gt33*SQR(J21L) + PDstandardNth33gt33*SQR(J31L);
-
- JacPDstandardNth11phi = dJ111L*PDstandardNth1phi +
- 2*(J11L*(J21L*PDstandardNth12phi + J31L*PDstandardNth13phi) +
- J21L*J31L*PDstandardNth23phi) + dJ211L*PDstandardNth2phi +
- dJ311L*PDstandardNth3phi + PDstandardNth11phi*SQR(J11L) +
- PDstandardNth22phi*SQR(J21L) + PDstandardNth33phi*SQR(J31L);
-
- JacPDstandardNth22alpha = dJ122L*PDstandardNth1alpha +
- 2*(J12L*(J22L*PDstandardNth12alpha + J32L*PDstandardNth13alpha) +
- J22L*J32L*PDstandardNth23alpha) + dJ222L*PDstandardNth2alpha +
- dJ322L*PDstandardNth3alpha + PDstandardNth11alpha*SQR(J12L) +
- PDstandardNth22alpha*SQR(J22L) + PDstandardNth33alpha*SQR(J32L);
-
- JacPDstandardNth22gt11 = dJ122L*PDstandardNth1gt11 +
- 2*(J12L*(J22L*PDstandardNth12gt11 + J32L*PDstandardNth13gt11) +
- J22L*J32L*PDstandardNth23gt11) + dJ222L*PDstandardNth2gt11 +
- dJ322L*PDstandardNth3gt11 + PDstandardNth11gt11*SQR(J12L) +
- PDstandardNth22gt11*SQR(J22L) + PDstandardNth33gt11*SQR(J32L);
-
- JacPDstandardNth22gt12 = dJ122L*PDstandardNth1gt12 +
- 2*(J12L*(J22L*PDstandardNth12gt12 + J32L*PDstandardNth13gt12) +
- J22L*J32L*PDstandardNth23gt12) + dJ222L*PDstandardNth2gt12 +
- dJ322L*PDstandardNth3gt12 + PDstandardNth11gt12*SQR(J12L) +
- PDstandardNth22gt12*SQR(J22L) + PDstandardNth33gt12*SQR(J32L);
-
- JacPDstandardNth22gt13 = dJ122L*PDstandardNth1gt13 +
- 2*(J12L*(J22L*PDstandardNth12gt13 + J32L*PDstandardNth13gt13) +
- J22L*J32L*PDstandardNth23gt13) + dJ222L*PDstandardNth2gt13 +
- dJ322L*PDstandardNth3gt13 + PDstandardNth11gt13*SQR(J12L) +
- PDstandardNth22gt13*SQR(J22L) + PDstandardNth33gt13*SQR(J32L);
-
- JacPDstandardNth22gt22 = dJ122L*PDstandardNth1gt22 +
- 2*(J12L*(J22L*PDstandardNth12gt22 + J32L*PDstandardNth13gt22) +
- J22L*J32L*PDstandardNth23gt22) + dJ222L*PDstandardNth2gt22 +
- dJ322L*PDstandardNth3gt22 + PDstandardNth11gt22*SQR(J12L) +
- PDstandardNth22gt22*SQR(J22L) + PDstandardNth33gt22*SQR(J32L);
-
- JacPDstandardNth22gt23 = dJ122L*PDstandardNth1gt23 +
- 2*(J12L*(J22L*PDstandardNth12gt23 + J32L*PDstandardNth13gt23) +
- J22L*J32L*PDstandardNth23gt23) + dJ222L*PDstandardNth2gt23 +
- dJ322L*PDstandardNth3gt23 + PDstandardNth11gt23*SQR(J12L) +
- PDstandardNth22gt23*SQR(J22L) + PDstandardNth33gt23*SQR(J32L);
-
- JacPDstandardNth22gt33 = dJ122L*PDstandardNth1gt33 +
- 2*(J12L*(J22L*PDstandardNth12gt33 + J32L*PDstandardNth13gt33) +
- J22L*J32L*PDstandardNth23gt33) + dJ222L*PDstandardNth2gt33 +
- dJ322L*PDstandardNth3gt33 + PDstandardNth11gt33*SQR(J12L) +
- PDstandardNth22gt33*SQR(J22L) + PDstandardNth33gt33*SQR(J32L);
-
- JacPDstandardNth22phi = dJ122L*PDstandardNth1phi +
- 2*(J12L*(J22L*PDstandardNth12phi + J32L*PDstandardNth13phi) +
- J22L*J32L*PDstandardNth23phi) + dJ222L*PDstandardNth2phi +
- dJ322L*PDstandardNth3phi + PDstandardNth11phi*SQR(J12L) +
- PDstandardNth22phi*SQR(J22L) + PDstandardNth33phi*SQR(J32L);
-
- JacPDstandardNth33alpha = dJ133L*PDstandardNth1alpha +
- 2*(J13L*(J23L*PDstandardNth12alpha + J33L*PDstandardNth13alpha) +
- J23L*J33L*PDstandardNth23alpha) + dJ233L*PDstandardNth2alpha +
- dJ333L*PDstandardNth3alpha + PDstandardNth11alpha*SQR(J13L) +
- PDstandardNth22alpha*SQR(J23L) + PDstandardNth33alpha*SQR(J33L);
-
- JacPDstandardNth33gt11 = dJ133L*PDstandardNth1gt11 +
- 2*(J13L*(J23L*PDstandardNth12gt11 + J33L*PDstandardNth13gt11) +
- J23L*J33L*PDstandardNth23gt11) + dJ233L*PDstandardNth2gt11 +
- dJ333L*PDstandardNth3gt11 + PDstandardNth11gt11*SQR(J13L) +
- PDstandardNth22gt11*SQR(J23L) + PDstandardNth33gt11*SQR(J33L);
-
- JacPDstandardNth33gt12 = dJ133L*PDstandardNth1gt12 +
- 2*(J13L*(J23L*PDstandardNth12gt12 + J33L*PDstandardNth13gt12) +
- J23L*J33L*PDstandardNth23gt12) + dJ233L*PDstandardNth2gt12 +
- dJ333L*PDstandardNth3gt12 + PDstandardNth11gt12*SQR(J13L) +
- PDstandardNth22gt12*SQR(J23L) + PDstandardNth33gt12*SQR(J33L);
-
- JacPDstandardNth33gt13 = dJ133L*PDstandardNth1gt13 +
- 2*(J13L*(J23L*PDstandardNth12gt13 + J33L*PDstandardNth13gt13) +
- J23L*J33L*PDstandardNth23gt13) + dJ233L*PDstandardNth2gt13 +
- dJ333L*PDstandardNth3gt13 + PDstandardNth11gt13*SQR(J13L) +
- PDstandardNth22gt13*SQR(J23L) + PDstandardNth33gt13*SQR(J33L);
-
- JacPDstandardNth33gt22 = dJ133L*PDstandardNth1gt22 +
- 2*(J13L*(J23L*PDstandardNth12gt22 + J33L*PDstandardNth13gt22) +
- J23L*J33L*PDstandardNth23gt22) + dJ233L*PDstandardNth2gt22 +
- dJ333L*PDstandardNth3gt22 + PDstandardNth11gt22*SQR(J13L) +
- PDstandardNth22gt22*SQR(J23L) + PDstandardNth33gt22*SQR(J33L);
-
- JacPDstandardNth33gt23 = dJ133L*PDstandardNth1gt23 +
- 2*(J13L*(J23L*PDstandardNth12gt23 + J33L*PDstandardNth13gt23) +
- J23L*J33L*PDstandardNth23gt23) + dJ233L*PDstandardNth2gt23 +
- dJ333L*PDstandardNth3gt23 + PDstandardNth11gt23*SQR(J13L) +
- PDstandardNth22gt23*SQR(J23L) + PDstandardNth33gt23*SQR(J33L);
-
- JacPDstandardNth33gt33 = dJ133L*PDstandardNth1gt33 +
- 2*(J13L*(J23L*PDstandardNth12gt33 + J33L*PDstandardNth13gt33) +
- J23L*J33L*PDstandardNth23gt33) + dJ233L*PDstandardNth2gt33 +
- dJ333L*PDstandardNth3gt33 + PDstandardNth11gt33*SQR(J13L) +
- PDstandardNth22gt33*SQR(J23L) + PDstandardNth33gt33*SQR(J33L);
-
- JacPDstandardNth33phi = dJ133L*PDstandardNth1phi +
- 2*(J13L*(J23L*PDstandardNth12phi + J33L*PDstandardNth13phi) +
- J23L*J33L*PDstandardNth23phi) + dJ233L*PDstandardNth2phi +
- dJ333L*PDstandardNth3phi + PDstandardNth11phi*SQR(J13L) +
- PDstandardNth22phi*SQR(J23L) + PDstandardNth33phi*SQR(J33L);
-
- JacPDstandardNth12alpha = J12L*(J11L*PDstandardNth11alpha +
- J21L*PDstandardNth12alpha + J31L*PDstandardNth13alpha) +
- J11L*(J22L*PDstandardNth12alpha + J32L*PDstandardNth13alpha) +
- dJ112L*PDstandardNth1alpha + J22L*(J21L*PDstandardNth22alpha +
- J31L*PDstandardNth23alpha) + dJ212L*PDstandardNth2alpha +
- J32L*(J21L*PDstandardNth23alpha + J31L*PDstandardNth33alpha) +
- dJ312L*PDstandardNth3alpha;
-
- JacPDstandardNth12gt11 = J12L*(J11L*PDstandardNth11gt11 +
- J21L*PDstandardNth12gt11 + J31L*PDstandardNth13gt11) +
- J11L*(J22L*PDstandardNth12gt11 + J32L*PDstandardNth13gt11) +
- dJ112L*PDstandardNth1gt11 + J22L*(J21L*PDstandardNth22gt11 +
- J31L*PDstandardNth23gt11) + dJ212L*PDstandardNth2gt11 +
- J32L*(J21L*PDstandardNth23gt11 + J31L*PDstandardNth33gt11) +
- dJ312L*PDstandardNth3gt11;
-
- JacPDstandardNth12gt12 = J12L*(J11L*PDstandardNth11gt12 +
- J21L*PDstandardNth12gt12 + J31L*PDstandardNth13gt12) +
- J11L*(J22L*PDstandardNth12gt12 + J32L*PDstandardNth13gt12) +
- dJ112L*PDstandardNth1gt12 + J22L*(J21L*PDstandardNth22gt12 +
- J31L*PDstandardNth23gt12) + dJ212L*PDstandardNth2gt12 +
- J32L*(J21L*PDstandardNth23gt12 + J31L*PDstandardNth33gt12) +
- dJ312L*PDstandardNth3gt12;
-
- JacPDstandardNth12gt13 = J12L*(J11L*PDstandardNth11gt13 +
- J21L*PDstandardNth12gt13 + J31L*PDstandardNth13gt13) +
- J11L*(J22L*PDstandardNth12gt13 + J32L*PDstandardNth13gt13) +
- dJ112L*PDstandardNth1gt13 + J22L*(J21L*PDstandardNth22gt13 +
- J31L*PDstandardNth23gt13) + dJ212L*PDstandardNth2gt13 +
- J32L*(J21L*PDstandardNth23gt13 + J31L*PDstandardNth33gt13) +
- dJ312L*PDstandardNth3gt13;
-
- JacPDstandardNth12gt22 = J12L*(J11L*PDstandardNth11gt22 +
- J21L*PDstandardNth12gt22 + J31L*PDstandardNth13gt22) +
- J11L*(J22L*PDstandardNth12gt22 + J32L*PDstandardNth13gt22) +
- dJ112L*PDstandardNth1gt22 + J22L*(J21L*PDstandardNth22gt22 +
- J31L*PDstandardNth23gt22) + dJ212L*PDstandardNth2gt22 +
- J32L*(J21L*PDstandardNth23gt22 + J31L*PDstandardNth33gt22) +
- dJ312L*PDstandardNth3gt22;
-
- JacPDstandardNth12gt23 = J12L*(J11L*PDstandardNth11gt23 +
- J21L*PDstandardNth12gt23 + J31L*PDstandardNth13gt23) +
- J11L*(J22L*PDstandardNth12gt23 + J32L*PDstandardNth13gt23) +
- dJ112L*PDstandardNth1gt23 + J22L*(J21L*PDstandardNth22gt23 +
- J31L*PDstandardNth23gt23) + dJ212L*PDstandardNth2gt23 +
- J32L*(J21L*PDstandardNth23gt23 + J31L*PDstandardNth33gt23) +
- dJ312L*PDstandardNth3gt23;
-
- JacPDstandardNth12gt33 = J12L*(J11L*PDstandardNth11gt33 +
- J21L*PDstandardNth12gt33 + J31L*PDstandardNth13gt33) +
- J11L*(J22L*PDstandardNth12gt33 + J32L*PDstandardNth13gt33) +
- dJ112L*PDstandardNth1gt33 + J22L*(J21L*PDstandardNth22gt33 +
- J31L*PDstandardNth23gt33) + dJ212L*PDstandardNth2gt33 +
- J32L*(J21L*PDstandardNth23gt33 + J31L*PDstandardNth33gt33) +
- dJ312L*PDstandardNth3gt33;
-
- JacPDstandardNth12phi = J12L*(J11L*PDstandardNth11phi +
- J21L*PDstandardNth12phi + J31L*PDstandardNth13phi) +
- J11L*(J22L*PDstandardNth12phi + J32L*PDstandardNth13phi) +
- dJ112L*PDstandardNth1phi + J22L*(J21L*PDstandardNth22phi +
- J31L*PDstandardNth23phi) + dJ212L*PDstandardNth2phi +
- J32L*(J21L*PDstandardNth23phi + J31L*PDstandardNth33phi) +
- dJ312L*PDstandardNth3phi;
-
- JacPDstandardNth13alpha = J13L*(J11L*PDstandardNth11alpha +
- J21L*PDstandardNth12alpha + J31L*PDstandardNth13alpha) +
- J11L*(J23L*PDstandardNth12alpha + J33L*PDstandardNth13alpha) +
- dJ113L*PDstandardNth1alpha + J23L*(J21L*PDstandardNth22alpha +
- J31L*PDstandardNth23alpha) + dJ213L*PDstandardNth2alpha +
- J33L*(J21L*PDstandardNth23alpha + J31L*PDstandardNth33alpha) +
- dJ313L*PDstandardNth3alpha;
-
- JacPDstandardNth13gt11 = J13L*(J11L*PDstandardNth11gt11 +
- J21L*PDstandardNth12gt11 + J31L*PDstandardNth13gt11) +
- J11L*(J23L*PDstandardNth12gt11 + J33L*PDstandardNth13gt11) +
- dJ113L*PDstandardNth1gt11 + J23L*(J21L*PDstandardNth22gt11 +
- J31L*PDstandardNth23gt11) + dJ213L*PDstandardNth2gt11 +
- J33L*(J21L*PDstandardNth23gt11 + J31L*PDstandardNth33gt11) +
- dJ313L*PDstandardNth3gt11;
-
- JacPDstandardNth13gt12 = J13L*(J11L*PDstandardNth11gt12 +
- J21L*PDstandardNth12gt12 + J31L*PDstandardNth13gt12) +
- J11L*(J23L*PDstandardNth12gt12 + J33L*PDstandardNth13gt12) +
- dJ113L*PDstandardNth1gt12 + J23L*(J21L*PDstandardNth22gt12 +
- J31L*PDstandardNth23gt12) + dJ213L*PDstandardNth2gt12 +
- J33L*(J21L*PDstandardNth23gt12 + J31L*PDstandardNth33gt12) +
- dJ313L*PDstandardNth3gt12;
-
- JacPDstandardNth13gt13 = J13L*(J11L*PDstandardNth11gt13 +
- J21L*PDstandardNth12gt13 + J31L*PDstandardNth13gt13) +
- J11L*(J23L*PDstandardNth12gt13 + J33L*PDstandardNth13gt13) +
- dJ113L*PDstandardNth1gt13 + J23L*(J21L*PDstandardNth22gt13 +
- J31L*PDstandardNth23gt13) + dJ213L*PDstandardNth2gt13 +
- J33L*(J21L*PDstandardNth23gt13 + J31L*PDstandardNth33gt13) +
- dJ313L*PDstandardNth3gt13;
-
- JacPDstandardNth13gt22 = J13L*(J11L*PDstandardNth11gt22 +
- J21L*PDstandardNth12gt22 + J31L*PDstandardNth13gt22) +
- J11L*(J23L*PDstandardNth12gt22 + J33L*PDstandardNth13gt22) +
- dJ113L*PDstandardNth1gt22 + J23L*(J21L*PDstandardNth22gt22 +
- J31L*PDstandardNth23gt22) + dJ213L*PDstandardNth2gt22 +
- J33L*(J21L*PDstandardNth23gt22 + J31L*PDstandardNth33gt22) +
- dJ313L*PDstandardNth3gt22;
-
- JacPDstandardNth13gt23 = J13L*(J11L*PDstandardNth11gt23 +
- J21L*PDstandardNth12gt23 + J31L*PDstandardNth13gt23) +
- J11L*(J23L*PDstandardNth12gt23 + J33L*PDstandardNth13gt23) +
- dJ113L*PDstandardNth1gt23 + J23L*(J21L*PDstandardNth22gt23 +
- J31L*PDstandardNth23gt23) + dJ213L*PDstandardNth2gt23 +
- J33L*(J21L*PDstandardNth23gt23 + J31L*PDstandardNth33gt23) +
- dJ313L*PDstandardNth3gt23;
-
- JacPDstandardNth13gt33 = J13L*(J11L*PDstandardNth11gt33 +
- J21L*PDstandardNth12gt33 + J31L*PDstandardNth13gt33) +
- J11L*(J23L*PDstandardNth12gt33 + J33L*PDstandardNth13gt33) +
- dJ113L*PDstandardNth1gt33 + J23L*(J21L*PDstandardNth22gt33 +
- J31L*PDstandardNth23gt33) + dJ213L*PDstandardNth2gt33 +
- J33L*(J21L*PDstandardNth23gt33 + J31L*PDstandardNth33gt33) +
- dJ313L*PDstandardNth3gt33;
-
- JacPDstandardNth13phi = J13L*(J11L*PDstandardNth11phi +
- J21L*PDstandardNth12phi + J31L*PDstandardNth13phi) +
- J11L*(J23L*PDstandardNth12phi + J33L*PDstandardNth13phi) +
- dJ113L*PDstandardNth1phi + J23L*(J21L*PDstandardNth22phi +
- J31L*PDstandardNth23phi) + dJ213L*PDstandardNth2phi +
- J33L*(J21L*PDstandardNth23phi + J31L*PDstandardNth33phi) +
- dJ313L*PDstandardNth3phi;
-
- JacPDstandardNth21gt11 = J12L*(J11L*PDstandardNth11gt11 +
- J21L*PDstandardNth12gt11 + J31L*PDstandardNth13gt11) +
- J11L*(J22L*PDstandardNth12gt11 + J32L*PDstandardNth13gt11) +
- dJ112L*PDstandardNth1gt11 + J22L*(J21L*PDstandardNth22gt11 +
- J31L*PDstandardNth23gt11) + dJ212L*PDstandardNth2gt11 +
- J32L*(J21L*PDstandardNth23gt11 + J31L*PDstandardNth33gt11) +
- dJ312L*PDstandardNth3gt11;
-
- JacPDstandardNth21gt12 = J12L*(J11L*PDstandardNth11gt12 +
- J21L*PDstandardNth12gt12 + J31L*PDstandardNth13gt12) +
- J11L*(J22L*PDstandardNth12gt12 + J32L*PDstandardNth13gt12) +
- dJ112L*PDstandardNth1gt12 + J22L*(J21L*PDstandardNth22gt12 +
- J31L*PDstandardNth23gt12) + dJ212L*PDstandardNth2gt12 +
- J32L*(J21L*PDstandardNth23gt12 + J31L*PDstandardNth33gt12) +
- dJ312L*PDstandardNth3gt12;
-
- JacPDstandardNth21gt13 = J12L*(J11L*PDstandardNth11gt13 +
- J21L*PDstandardNth12gt13 + J31L*PDstandardNth13gt13) +
- J11L*(J22L*PDstandardNth12gt13 + J32L*PDstandardNth13gt13) +
- dJ112L*PDstandardNth1gt13 + J22L*(J21L*PDstandardNth22gt13 +
- J31L*PDstandardNth23gt13) + dJ212L*PDstandardNth2gt13 +
- J32L*(J21L*PDstandardNth23gt13 + J31L*PDstandardNth33gt13) +
- dJ312L*PDstandardNth3gt13;
-
- JacPDstandardNth21gt22 = J12L*(J11L*PDstandardNth11gt22 +
- J21L*PDstandardNth12gt22 + J31L*PDstandardNth13gt22) +
- J11L*(J22L*PDstandardNth12gt22 + J32L*PDstandardNth13gt22) +
- dJ112L*PDstandardNth1gt22 + J22L*(J21L*PDstandardNth22gt22 +
- J31L*PDstandardNth23gt22) + dJ212L*PDstandardNth2gt22 +
- J32L*(J21L*PDstandardNth23gt22 + J31L*PDstandardNth33gt22) +
- dJ312L*PDstandardNth3gt22;
-
- JacPDstandardNth21gt23 = J12L*(J11L*PDstandardNth11gt23 +
- J21L*PDstandardNth12gt23 + J31L*PDstandardNth13gt23) +
- J11L*(J22L*PDstandardNth12gt23 + J32L*PDstandardNth13gt23) +
- dJ112L*PDstandardNth1gt23 + J22L*(J21L*PDstandardNth22gt23 +
- J31L*PDstandardNth23gt23) + dJ212L*PDstandardNth2gt23 +
- J32L*(J21L*PDstandardNth23gt23 + J31L*PDstandardNth33gt23) +
- dJ312L*PDstandardNth3gt23;
-
- JacPDstandardNth21gt33 = J12L*(J11L*PDstandardNth11gt33 +
- J21L*PDstandardNth12gt33 + J31L*PDstandardNth13gt33) +
- J11L*(J22L*PDstandardNth12gt33 + J32L*PDstandardNth13gt33) +
- dJ112L*PDstandardNth1gt33 + J22L*(J21L*PDstandardNth22gt33 +
- J31L*PDstandardNth23gt33) + dJ212L*PDstandardNth2gt33 +
- J32L*(J21L*PDstandardNth23gt33 + J31L*PDstandardNth33gt33) +
- dJ312L*PDstandardNth3gt33;
-
- JacPDstandardNth23alpha = J13L*(J12L*PDstandardNth11alpha +
- J22L*PDstandardNth12alpha + J32L*PDstandardNth13alpha) +
- J12L*(J23L*PDstandardNth12alpha + J33L*PDstandardNth13alpha) +
- dJ123L*PDstandardNth1alpha + J23L*(J22L*PDstandardNth22alpha +
- J32L*PDstandardNth23alpha) + dJ223L*PDstandardNth2alpha +
- J33L*(J22L*PDstandardNth23alpha + J32L*PDstandardNth33alpha) +
- dJ323L*PDstandardNth3alpha;
-
- JacPDstandardNth23gt11 = J13L*(J12L*PDstandardNth11gt11 +
- J22L*PDstandardNth12gt11 + J32L*PDstandardNth13gt11) +
- J12L*(J23L*PDstandardNth12gt11 + J33L*PDstandardNth13gt11) +
- dJ123L*PDstandardNth1gt11 + J23L*(J22L*PDstandardNth22gt11 +
- J32L*PDstandardNth23gt11) + dJ223L*PDstandardNth2gt11 +
- J33L*(J22L*PDstandardNth23gt11 + J32L*PDstandardNth33gt11) +
- dJ323L*PDstandardNth3gt11;
-
- JacPDstandardNth23gt12 = J13L*(J12L*PDstandardNth11gt12 +
- J22L*PDstandardNth12gt12 + J32L*PDstandardNth13gt12) +
- J12L*(J23L*PDstandardNth12gt12 + J33L*PDstandardNth13gt12) +
- dJ123L*PDstandardNth1gt12 + J23L*(J22L*PDstandardNth22gt12 +
- J32L*PDstandardNth23gt12) + dJ223L*PDstandardNth2gt12 +
- J33L*(J22L*PDstandardNth23gt12 + J32L*PDstandardNth33gt12) +
- dJ323L*PDstandardNth3gt12;
-
- JacPDstandardNth23gt13 = J13L*(J12L*PDstandardNth11gt13 +
- J22L*PDstandardNth12gt13 + J32L*PDstandardNth13gt13) +
- J12L*(J23L*PDstandardNth12gt13 + J33L*PDstandardNth13gt13) +
- dJ123L*PDstandardNth1gt13 + J23L*(J22L*PDstandardNth22gt13 +
- J32L*PDstandardNth23gt13) + dJ223L*PDstandardNth2gt13 +
- J33L*(J22L*PDstandardNth23gt13 + J32L*PDstandardNth33gt13) +
- dJ323L*PDstandardNth3gt13;
-
- JacPDstandardNth23gt22 = J13L*(J12L*PDstandardNth11gt22 +
- J22L*PDstandardNth12gt22 + J32L*PDstandardNth13gt22) +
- J12L*(J23L*PDstandardNth12gt22 + J33L*PDstandardNth13gt22) +
- dJ123L*PDstandardNth1gt22 + J23L*(J22L*PDstandardNth22gt22 +
- J32L*PDstandardNth23gt22) + dJ223L*PDstandardNth2gt22 +
- J33L*(J22L*PDstandardNth23gt22 + J32L*PDstandardNth33gt22) +
- dJ323L*PDstandardNth3gt22;
-
- JacPDstandardNth23gt23 = J13L*(J12L*PDstandardNth11gt23 +
- J22L*PDstandardNth12gt23 + J32L*PDstandardNth13gt23) +
- J12L*(J23L*PDstandardNth12gt23 + J33L*PDstandardNth13gt23) +
- dJ123L*PDstandardNth1gt23 + J23L*(J22L*PDstandardNth22gt23 +
- J32L*PDstandardNth23gt23) + dJ223L*PDstandardNth2gt23 +
- J33L*(J22L*PDstandardNth23gt23 + J32L*PDstandardNth33gt23) +
- dJ323L*PDstandardNth3gt23;
-
- JacPDstandardNth23gt33 = J13L*(J12L*PDstandardNth11gt33 +
- J22L*PDstandardNth12gt33 + J32L*PDstandardNth13gt33) +
- J12L*(J23L*PDstandardNth12gt33 + J33L*PDstandardNth13gt33) +
- dJ123L*PDstandardNth1gt33 + J23L*(J22L*PDstandardNth22gt33 +
- J32L*PDstandardNth23gt33) + dJ223L*PDstandardNth2gt33 +
- J33L*(J22L*PDstandardNth23gt33 + J32L*PDstandardNth33gt33) +
- dJ323L*PDstandardNth3gt33;
-
- JacPDstandardNth23phi = J13L*(J12L*PDstandardNth11phi +
- J22L*PDstandardNth12phi + J32L*PDstandardNth13phi) +
- J12L*(J23L*PDstandardNth12phi + J33L*PDstandardNth13phi) +
- dJ123L*PDstandardNth1phi + J23L*(J22L*PDstandardNth22phi +
- J32L*PDstandardNth23phi) + dJ223L*PDstandardNth2phi +
- J33L*(J22L*PDstandardNth23phi + J32L*PDstandardNth33phi) +
- dJ323L*PDstandardNth3phi;
-
- JacPDstandardNth31gt11 = J13L*(J11L*PDstandardNth11gt11 +
- J21L*PDstandardNth12gt11 + J31L*PDstandardNth13gt11) +
- J11L*(J23L*PDstandardNth12gt11 + J33L*PDstandardNth13gt11) +
- dJ113L*PDstandardNth1gt11 + J23L*(J21L*PDstandardNth22gt11 +
- J31L*PDstandardNth23gt11) + dJ213L*PDstandardNth2gt11 +
- J33L*(J21L*PDstandardNth23gt11 + J31L*PDstandardNth33gt11) +
- dJ313L*PDstandardNth3gt11;
-
- JacPDstandardNth31gt12 = J13L*(J11L*PDstandardNth11gt12 +
- J21L*PDstandardNth12gt12 + J31L*PDstandardNth13gt12) +
- J11L*(J23L*PDstandardNth12gt12 + J33L*PDstandardNth13gt12) +
- dJ113L*PDstandardNth1gt12 + J23L*(J21L*PDstandardNth22gt12 +
- J31L*PDstandardNth23gt12) + dJ213L*PDstandardNth2gt12 +
- J33L*(J21L*PDstandardNth23gt12 + J31L*PDstandardNth33gt12) +
- dJ313L*PDstandardNth3gt12;
-
- JacPDstandardNth31gt13 = J13L*(J11L*PDstandardNth11gt13 +
- J21L*PDstandardNth12gt13 + J31L*PDstandardNth13gt13) +
- J11L*(J23L*PDstandardNth12gt13 + J33L*PDstandardNth13gt13) +
- dJ113L*PDstandardNth1gt13 + J23L*(J21L*PDstandardNth22gt13 +
- J31L*PDstandardNth23gt13) + dJ213L*PDstandardNth2gt13 +
- J33L*(J21L*PDstandardNth23gt13 + J31L*PDstandardNth33gt13) +
- dJ313L*PDstandardNth3gt13;
-
- JacPDstandardNth31gt22 = J13L*(J11L*PDstandardNth11gt22 +
- J21L*PDstandardNth12gt22 + J31L*PDstandardNth13gt22) +
- J11L*(J23L*PDstandardNth12gt22 + J33L*PDstandardNth13gt22) +
- dJ113L*PDstandardNth1gt22 + J23L*(J21L*PDstandardNth22gt22 +
- J31L*PDstandardNth23gt22) + dJ213L*PDstandardNth2gt22 +
- J33L*(J21L*PDstandardNth23gt22 + J31L*PDstandardNth33gt22) +
- dJ313L*PDstandardNth3gt22;
-
- JacPDstandardNth31gt23 = J13L*(J11L*PDstandardNth11gt23 +
- J21L*PDstandardNth12gt23 + J31L*PDstandardNth13gt23) +
- J11L*(J23L*PDstandardNth12gt23 + J33L*PDstandardNth13gt23) +
- dJ113L*PDstandardNth1gt23 + J23L*(J21L*PDstandardNth22gt23 +
- J31L*PDstandardNth23gt23) + dJ213L*PDstandardNth2gt23 +
- J33L*(J21L*PDstandardNth23gt23 + J31L*PDstandardNth33gt23) +
- dJ313L*PDstandardNth3gt23;
-
- JacPDstandardNth31gt33 = J13L*(J11L*PDstandardNth11gt33 +
- J21L*PDstandardNth12gt33 + J31L*PDstandardNth13gt33) +
- J11L*(J23L*PDstandardNth12gt33 + J33L*PDstandardNth13gt33) +
- dJ113L*PDstandardNth1gt33 + J23L*(J21L*PDstandardNth22gt33 +
- J31L*PDstandardNth23gt33) + dJ213L*PDstandardNth2gt33 +
- J33L*(J21L*PDstandardNth23gt33 + J31L*PDstandardNth33gt33) +
- dJ313L*PDstandardNth3gt33;
-
- JacPDstandardNth32gt11 = J13L*(J12L*PDstandardNth11gt11 +
- J22L*PDstandardNth12gt11 + J32L*PDstandardNth13gt11) +
- J12L*(J23L*PDstandardNth12gt11 + J33L*PDstandardNth13gt11) +
- dJ123L*PDstandardNth1gt11 + J23L*(J22L*PDstandardNth22gt11 +
- J32L*PDstandardNth23gt11) + dJ223L*PDstandardNth2gt11 +
- J33L*(J22L*PDstandardNth23gt11 + J32L*PDstandardNth33gt11) +
- dJ323L*PDstandardNth3gt11;
-
- JacPDstandardNth32gt12 = J13L*(J12L*PDstandardNth11gt12 +
- J22L*PDstandardNth12gt12 + J32L*PDstandardNth13gt12) +
- J12L*(J23L*PDstandardNth12gt12 + J33L*PDstandardNth13gt12) +
- dJ123L*PDstandardNth1gt12 + J23L*(J22L*PDstandardNth22gt12 +
- J32L*PDstandardNth23gt12) + dJ223L*PDstandardNth2gt12 +
- J33L*(J22L*PDstandardNth23gt12 + J32L*PDstandardNth33gt12) +
- dJ323L*PDstandardNth3gt12;
-
- JacPDstandardNth32gt13 = J13L*(J12L*PDstandardNth11gt13 +
- J22L*PDstandardNth12gt13 + J32L*PDstandardNth13gt13) +
- J12L*(J23L*PDstandardNth12gt13 + J33L*PDstandardNth13gt13) +
- dJ123L*PDstandardNth1gt13 + J23L*(J22L*PDstandardNth22gt13 +
- J32L*PDstandardNth23gt13) + dJ223L*PDstandardNth2gt13 +
- J33L*(J22L*PDstandardNth23gt13 + J32L*PDstandardNth33gt13) +
- dJ323L*PDstandardNth3gt13;
-
- JacPDstandardNth32gt22 = J13L*(J12L*PDstandardNth11gt22 +
- J22L*PDstandardNth12gt22 + J32L*PDstandardNth13gt22) +
- J12L*(J23L*PDstandardNth12gt22 + J33L*PDstandardNth13gt22) +
- dJ123L*PDstandardNth1gt22 + J23L*(J22L*PDstandardNth22gt22 +
- J32L*PDstandardNth23gt22) + dJ223L*PDstandardNth2gt22 +
- J33L*(J22L*PDstandardNth23gt22 + J32L*PDstandardNth33gt22) +
- dJ323L*PDstandardNth3gt22;
-
- JacPDstandardNth32gt23 = J13L*(J12L*PDstandardNth11gt23 +
- J22L*PDstandardNth12gt23 + J32L*PDstandardNth13gt23) +
- J12L*(J23L*PDstandardNth12gt23 + J33L*PDstandardNth13gt23) +
- dJ123L*PDstandardNth1gt23 + J23L*(J22L*PDstandardNth22gt23 +
- J32L*PDstandardNth23gt23) + dJ223L*PDstandardNth2gt23 +
- J33L*(J22L*PDstandardNth23gt23 + J32L*PDstandardNth33gt23) +
- dJ323L*PDstandardNth3gt23;
-
- JacPDstandardNth32gt33 = J13L*(J12L*PDstandardNth11gt33 +
- J22L*PDstandardNth12gt33 + J32L*PDstandardNth13gt33) +
- J12L*(J23L*PDstandardNth12gt33 + J33L*PDstandardNth13gt33) +
- dJ123L*PDstandardNth1gt33 + J23L*(J22L*PDstandardNth22gt33 +
- J32L*PDstandardNth23gt33) + dJ223L*PDstandardNth2gt33 +
- J33L*(J22L*PDstandardNth23gt33 + J32L*PDstandardNth33gt33) +
- dJ323L*PDstandardNth3gt33;
+ 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
{
@@ -1263,481 +1418,438 @@ static void ML_BSSN_MP_RHS2_Body(cGH const * restrict const cctkGH, int const di
JacPDstandardNth32gt33 = PDstandardNth23gt33;
}
- ptrdiff_t dir1 = Sign(beta1L);
+ CCTK_REAL_VEC detgt = ToReal(1);
- ptrdiff_t dir2 = Sign(beta2L);
+ CCTK_REAL_VEC gtu11 = kmul(INV(detgt),kmsub(gt22L,gt33L,SQR(gt23L)));
- ptrdiff_t dir3 = Sign(beta3L);
+ 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 detgt = 1;
+ CCTK_REAL_VEC Gtl222 = kmul(JacPDstandardNth2gt22,ToReal(0.5));
- CCTK_REAL gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L));
+ CCTK_REAL_VEC Gtl223 = kmul(JacPDstandardNth3gt22,ToReal(0.5));
- CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt);
+ CCTK_REAL_VEC Gtl233 =
+ kmadd(JacPDstandardNth2gt33,ToReal(-0.5),JacPDstandardNth3gt23);
- CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC Gtl311 =
+ kmadd(JacPDstandardNth3gt11,ToReal(-0.5),JacPDstandardNth1gt13);
- CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L));
+ CCTK_REAL_VEC Gtl312 =
+ kmul(kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth2gt13,JacPDstandardNth3gt12)),ToReal(0.5));
- CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC Gtl313 = kmul(JacPDstandardNth1gt33,ToReal(0.5));
- CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L));
+ CCTK_REAL_VEC Gtl322 =
+ kmadd(JacPDstandardNth3gt22,ToReal(-0.5),JacPDstandardNth2gt23);
- CCTK_REAL Gtl111 = 0.5*JacPDstandardNth1gt11;
+ CCTK_REAL_VEC Gtl323 = kmul(JacPDstandardNth2gt33,ToReal(0.5));
- CCTK_REAL Gtl112 = 0.5*JacPDstandardNth2gt11;
+ CCTK_REAL_VEC Gtl333 = kmul(JacPDstandardNth3gt33,ToReal(0.5));
- CCTK_REAL Gtl113 = 0.5*JacPDstandardNth3gt11;
+ CCTK_REAL_VEC Gtlu111 =
+ kmadd(Gtl111,gtu11,kmadd(Gtl112,gtu12,kmul(Gtl113,gtu13)));
- CCTK_REAL Gtl122 = -0.5*JacPDstandardNth1gt22 + JacPDstandardNth2gt12;
+ CCTK_REAL_VEC Gtlu112 =
+ kmadd(Gtl111,gtu12,kmadd(Gtl112,gtu22,kmul(Gtl113,gtu23)));
- CCTK_REAL Gtl123 = 0.5*(-JacPDstandardNth1gt23 + JacPDstandardNth2gt13
- + JacPDstandardNth3gt12);
+ CCTK_REAL_VEC Gtlu113 =
+ kmadd(Gtl111,gtu13,kmadd(Gtl112,gtu23,kmul(Gtl113,gtu33)));
- CCTK_REAL Gtl133 = -0.5*JacPDstandardNth1gt33 + JacPDstandardNth3gt13;
+ CCTK_REAL_VEC Gtlu121 =
+ kmadd(Gtl112,gtu11,kmadd(Gtl122,gtu12,kmul(Gtl123,gtu13)));
- CCTK_REAL Gtl211 = JacPDstandardNth1gt12 - 0.5*JacPDstandardNth2gt11;
+ CCTK_REAL_VEC Gtlu122 =
+ kmadd(Gtl112,gtu12,kmadd(Gtl122,gtu22,kmul(Gtl123,gtu23)));
- CCTK_REAL Gtl212 = 0.5*JacPDstandardNth1gt22;
+ CCTK_REAL_VEC Gtlu123 =
+ kmadd(Gtl112,gtu13,kmadd(Gtl122,gtu23,kmul(Gtl123,gtu33)));
- CCTK_REAL Gtl213 = 0.5*(JacPDstandardNth1gt23 - JacPDstandardNth2gt13
- + JacPDstandardNth3gt12);
+ CCTK_REAL_VEC Gtlu131 =
+ kmadd(Gtl113,gtu11,kmadd(Gtl123,gtu12,kmul(Gtl133,gtu13)));
- CCTK_REAL Gtl222 = 0.5*JacPDstandardNth2gt22;
+ CCTK_REAL_VEC Gtlu132 =
+ kmadd(Gtl113,gtu12,kmadd(Gtl123,gtu22,kmul(Gtl133,gtu23)));
- CCTK_REAL Gtl223 = 0.5*JacPDstandardNth3gt22;
+ CCTK_REAL_VEC Gtlu133 =
+ kmadd(Gtl113,gtu13,kmadd(Gtl123,gtu23,kmul(Gtl133,gtu33)));
- CCTK_REAL Gtl233 = -0.5*JacPDstandardNth2gt33 + JacPDstandardNth3gt23;
+ CCTK_REAL_VEC Gtlu211 =
+ kmadd(Gtl211,gtu11,kmadd(Gtl212,gtu12,kmul(Gtl213,gtu13)));
- CCTK_REAL Gtl311 = JacPDstandardNth1gt13 - 0.5*JacPDstandardNth3gt11;
+ CCTK_REAL_VEC Gtlu212 =
+ kmadd(Gtl211,gtu12,kmadd(Gtl212,gtu22,kmul(Gtl213,gtu23)));
- CCTK_REAL Gtl312 = 0.5*(JacPDstandardNth1gt23 + JacPDstandardNth2gt13
- - JacPDstandardNth3gt12);
+ CCTK_REAL_VEC Gtlu213 =
+ kmadd(Gtl211,gtu13,kmadd(Gtl212,gtu23,kmul(Gtl213,gtu33)));
- CCTK_REAL Gtl313 = 0.5*JacPDstandardNth1gt33;
+ CCTK_REAL_VEC Gtlu221 =
+ kmadd(Gtl212,gtu11,kmadd(Gtl222,gtu12,kmul(Gtl223,gtu13)));
- CCTK_REAL Gtl322 = JacPDstandardNth2gt23 - 0.5*JacPDstandardNth3gt22;
+ CCTK_REAL_VEC Gtlu222 =
+ kmadd(Gtl212,gtu12,kmadd(Gtl222,gtu22,kmul(Gtl223,gtu23)));
- CCTK_REAL Gtl323 = 0.5*JacPDstandardNth2gt33;
+ CCTK_REAL_VEC Gtlu223 =
+ kmadd(Gtl212,gtu13,kmadd(Gtl222,gtu23,kmul(Gtl223,gtu33)));
- CCTK_REAL Gtl333 = 0.5*JacPDstandardNth3gt33;
+ CCTK_REAL_VEC Gtlu231 =
+ kmadd(Gtl213,gtu11,kmadd(Gtl223,gtu12,kmul(Gtl233,gtu13)));
- CCTK_REAL Gtlu111 = Gtl111*gtu11 + Gtl112*gtu12 + Gtl113*gtu13;
+ CCTK_REAL_VEC Gtlu232 =
+ kmadd(Gtl213,gtu12,kmadd(Gtl223,gtu22,kmul(Gtl233,gtu23)));
- CCTK_REAL Gtlu112 = Gtl111*gtu12 + Gtl112*gtu22 + Gtl113*gtu23;
+ CCTK_REAL_VEC Gtlu233 =
+ kmadd(Gtl213,gtu13,kmadd(Gtl223,gtu23,kmul(Gtl233,gtu33)));
- CCTK_REAL Gtlu113 = Gtl111*gtu13 + Gtl112*gtu23 + Gtl113*gtu33;
+ CCTK_REAL_VEC Gtlu311 =
+ kmadd(Gtl311,gtu11,kmadd(Gtl312,gtu12,kmul(Gtl313,gtu13)));
- CCTK_REAL Gtlu121 = Gtl112*gtu11 + Gtl122*gtu12 + Gtl123*gtu13;
+ CCTK_REAL_VEC Gtlu312 =
+ kmadd(Gtl311,gtu12,kmadd(Gtl312,gtu22,kmul(Gtl313,gtu23)));
- CCTK_REAL Gtlu122 = Gtl112*gtu12 + Gtl122*gtu22 + Gtl123*gtu23;
+ CCTK_REAL_VEC Gtlu313 =
+ kmadd(Gtl311,gtu13,kmadd(Gtl312,gtu23,kmul(Gtl313,gtu33)));
- CCTK_REAL Gtlu123 = Gtl112*gtu13 + Gtl122*gtu23 + Gtl123*gtu33;
+ CCTK_REAL_VEC Gtlu321 =
+ kmadd(Gtl312,gtu11,kmadd(Gtl322,gtu12,kmul(Gtl323,gtu13)));
- CCTK_REAL Gtlu131 = Gtl113*gtu11 + Gtl123*gtu12 + Gtl133*gtu13;
+ CCTK_REAL_VEC Gtlu322 =
+ kmadd(Gtl312,gtu12,kmadd(Gtl322,gtu22,kmul(Gtl323,gtu23)));
- CCTK_REAL Gtlu132 = Gtl113*gtu12 + Gtl123*gtu22 + Gtl133*gtu23;
+ CCTK_REAL_VEC Gtlu323 =
+ kmadd(Gtl312,gtu13,kmadd(Gtl322,gtu23,kmul(Gtl323,gtu33)));
- CCTK_REAL Gtlu133 = Gtl113*gtu13 + Gtl123*gtu23 + Gtl133*gtu33;
+ CCTK_REAL_VEC Gtlu331 =
+ kmadd(Gtl313,gtu11,kmadd(Gtl323,gtu12,kmul(Gtl333,gtu13)));
- CCTK_REAL Gtlu211 = Gtl211*gtu11 + Gtl212*gtu12 + Gtl213*gtu13;
+ CCTK_REAL_VEC Gtlu332 =
+ kmadd(Gtl313,gtu12,kmadd(Gtl323,gtu22,kmul(Gtl333,gtu23)));
- CCTK_REAL Gtlu212 = Gtl211*gtu12 + Gtl212*gtu22 + Gtl213*gtu23;
+ CCTK_REAL_VEC Gtlu333 =
+ kmadd(Gtl313,gtu13,kmadd(Gtl323,gtu23,kmul(Gtl333,gtu33)));
- CCTK_REAL Gtlu213 = Gtl211*gtu13 + Gtl212*gtu23 + Gtl213*gtu33;
+ CCTK_REAL_VEC Gt111 =
+ kmadd(Gtl111,gtu11,kmadd(Gtl211,gtu12,kmul(Gtl311,gtu13)));
- CCTK_REAL Gtlu221 = Gtl212*gtu11 + Gtl222*gtu12 + Gtl223*gtu13;
+ CCTK_REAL_VEC Gt211 =
+ kmadd(Gtl111,gtu12,kmadd(Gtl211,gtu22,kmul(Gtl311,gtu23)));
- CCTK_REAL Gtlu222 = Gtl212*gtu12 + Gtl222*gtu22 + Gtl223*gtu23;
+ CCTK_REAL_VEC Gt311 =
+ kmadd(Gtl111,gtu13,kmadd(Gtl211,gtu23,kmul(Gtl311,gtu33)));
- CCTK_REAL Gtlu223 = Gtl212*gtu13 + Gtl222*gtu23 + Gtl223*gtu33;
+ CCTK_REAL_VEC Gt112 =
+ kmadd(Gtl112,gtu11,kmadd(Gtl212,gtu12,kmul(Gtl312,gtu13)));
- CCTK_REAL Gtlu231 = Gtl213*gtu11 + Gtl223*gtu12 + Gtl233*gtu13;
+ CCTK_REAL_VEC Gt212 =
+ kmadd(Gtl112,gtu12,kmadd(Gtl212,gtu22,kmul(Gtl312,gtu23)));
- CCTK_REAL Gtlu232 = Gtl213*gtu12 + Gtl223*gtu22 + Gtl233*gtu23;
+ CCTK_REAL_VEC Gt312 =
+ kmadd(Gtl112,gtu13,kmadd(Gtl212,gtu23,kmul(Gtl312,gtu33)));
- CCTK_REAL Gtlu233 = Gtl213*gtu13 + Gtl223*gtu23 + Gtl233*gtu33;
+ CCTK_REAL_VEC Gt113 =
+ kmadd(Gtl113,gtu11,kmadd(Gtl213,gtu12,kmul(Gtl313,gtu13)));
- CCTK_REAL Gtlu311 = Gtl311*gtu11 + Gtl312*gtu12 + Gtl313*gtu13;
+ CCTK_REAL_VEC Gt213 =
+ kmadd(Gtl113,gtu12,kmadd(Gtl213,gtu22,kmul(Gtl313,gtu23)));
- CCTK_REAL Gtlu312 = Gtl311*gtu12 + Gtl312*gtu22 + Gtl313*gtu23;
+ CCTK_REAL_VEC Gt313 =
+ kmadd(Gtl113,gtu13,kmadd(Gtl213,gtu23,kmul(Gtl313,gtu33)));
- CCTK_REAL Gtlu313 = Gtl311*gtu13 + Gtl312*gtu23 + Gtl313*gtu33;
+ CCTK_REAL_VEC Gt122 =
+ kmadd(Gtl122,gtu11,kmadd(Gtl222,gtu12,kmul(Gtl322,gtu13)));
- CCTK_REAL Gtlu321 = Gtl312*gtu11 + Gtl322*gtu12 + Gtl323*gtu13;
+ CCTK_REAL_VEC Gt222 =
+ kmadd(Gtl122,gtu12,kmadd(Gtl222,gtu22,kmul(Gtl322,gtu23)));
- CCTK_REAL Gtlu322 = Gtl312*gtu12 + Gtl322*gtu22 + Gtl323*gtu23;
+ CCTK_REAL_VEC Gt322 =
+ kmadd(Gtl122,gtu13,kmadd(Gtl222,gtu23,kmul(Gtl322,gtu33)));
- CCTK_REAL Gtlu323 = Gtl312*gtu13 + Gtl322*gtu23 + Gtl323*gtu33;
+ CCTK_REAL_VEC Gt123 =
+ kmadd(Gtl123,gtu11,kmadd(Gtl223,gtu12,kmul(Gtl323,gtu13)));
- CCTK_REAL Gtlu331 = Gtl313*gtu11 + Gtl323*gtu12 + Gtl333*gtu13;
+ CCTK_REAL_VEC Gt223 =
+ kmadd(Gtl123,gtu12,kmadd(Gtl223,gtu22,kmul(Gtl323,gtu23)));
- CCTK_REAL Gtlu332 = Gtl313*gtu12 + Gtl323*gtu22 + Gtl333*gtu23;
+ CCTK_REAL_VEC Gt323 =
+ kmadd(Gtl123,gtu13,kmadd(Gtl223,gtu23,kmul(Gtl323,gtu33)));
- CCTK_REAL Gtlu333 = Gtl313*gtu13 + Gtl323*gtu23 + Gtl333*gtu33;
+ CCTK_REAL_VEC Gt133 =
+ kmadd(Gtl133,gtu11,kmadd(Gtl233,gtu12,kmul(Gtl333,gtu13)));
- CCTK_REAL Gt111 = Gtl111*gtu11 + Gtl211*gtu12 + Gtl311*gtu13;
+ CCTK_REAL_VEC Gt233 =
+ kmadd(Gtl133,gtu12,kmadd(Gtl233,gtu22,kmul(Gtl333,gtu23)));
- CCTK_REAL Gt211 = Gtl111*gtu12 + Gtl211*gtu22 + Gtl311*gtu23;
+ CCTK_REAL_VEC Gt333 =
+ kmadd(Gtl133,gtu13,kmadd(Gtl233,gtu23,kmul(Gtl333,gtu33)));
- CCTK_REAL Gt311 = Gtl111*gtu13 + Gtl211*gtu23 + Gtl311*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 Gt112 = Gtl112*gtu11 + Gtl212*gtu12 + Gtl312*gtu13;
+ 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 Gt212 = Gtl112*gtu12 + Gtl212*gtu22 + Gtl312*gtu23;
+ 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 Gt312 = Gtl112*gtu13 + Gtl212*gtu23 + Gtl312*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))))))))))))))));
- CCTK_REAL Gt113 = Gtl113*gtu11 + Gtl213*gtu12 + Gtl313*gtu13;
+ 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 Gt213 = Gtl113*gtu12 + Gtl213*gtu22 + Gtl313*gtu23;
+ 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 Gt313 = Gtl113*gtu13 + Gtl213*gtu23 + Gtl313*gtu33;
+ 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 Gt122 = Gtl122*gtu11 + Gtl222*gtu12 + Gtl322*gtu13;
+ 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 Gt222 = Gtl122*gtu12 + Gtl222*gtu22 + Gtl322*gtu23;
+ 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 Gt322 = Gtl122*gtu13 + Gtl222*gtu23 + Gtl322*gtu33;
+ CCTK_REAL_VEC fac1 =
+ IfThen(conformalMethod,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
- CCTK_REAL Gt123 = Gtl123*gtu11 + Gtl223*gtu12 + Gtl323*gtu13;
+ CCTK_REAL_VEC cdphi1 = kmul(fac1,JacPDstandardNth1phi);
- CCTK_REAL Gt223 = Gtl123*gtu12 + Gtl223*gtu22 + Gtl323*gtu23;
+ CCTK_REAL_VEC cdphi2 = kmul(fac1,JacPDstandardNth2phi);
- CCTK_REAL Gt323 = Gtl123*gtu13 + Gtl223*gtu23 + Gtl323*gtu33;
+ CCTK_REAL_VEC cdphi3 = kmul(fac1,JacPDstandardNth3phi);
- CCTK_REAL Gt133 = Gtl133*gtu11 + Gtl233*gtu12 + Gtl333*gtu13;
+ CCTK_REAL_VEC fac2 =
+ IfThen(conformalMethod,kmul(INV(SQR(phiL)),ToReal(0.5)),ToReal(0));
- CCTK_REAL Gt233 = Gtl133*gtu12 + Gtl233*gtu22 + Gtl333*gtu23;
+ CCTK_REAL_VEC cdphi211 =
+ kmadd(fac2,SQR(JacPDstandardNth1phi),kmul(fac1,ksub(JacPDstandardNth11phi,kmadd(Gt111,JacPDstandardNth1phi,kmadd(Gt311,JacPDstandardNth3phi,kmul(Gt211,JacPDstandardNth2phi))))));
- CCTK_REAL Gt333 = Gtl133*gtu13 + Gtl233*gtu23 + Gtl333*gtu33;
+ CCTK_REAL_VEC cdphi212 =
+ kmadd(fac2,kmul(JacPDstandardNth1phi,JacPDstandardNth2phi),kmul(fac1,ksub(JacPDstandardNth12phi,kmadd(Gt112,JacPDstandardNth1phi,kmadd(Gt312,JacPDstandardNth3phi,kmul(Gt212,JacPDstandardNth2phi))))));
- CCTK_REAL Xtn1 = Gt111*gtu11 + Gt122*gtu22 + 2*(Gt112*gtu12 +
- Gt113*gtu13 + Gt123*gtu23) + Gt133*gtu33;
+ CCTK_REAL_VEC cdphi213 =
+ kmadd(fac2,kmul(JacPDstandardNth1phi,JacPDstandardNth3phi),kmul(fac1,ksub(JacPDstandardNth13phi,kmadd(Gt113,JacPDstandardNth1phi,kmadd(Gt313,JacPDstandardNth3phi,kmul(Gt213,JacPDstandardNth2phi))))));
- CCTK_REAL Xtn2 = Gt211*gtu11 + Gt222*gtu22 + 2*(Gt212*gtu12 +
- Gt213*gtu13 + Gt223*gtu23) + Gt233*gtu33;
+ CCTK_REAL_VEC cdphi222 =
+ kmsub(fac2,SQR(JacPDstandardNth2phi),kmul(fac1,kmadd(Gt122,JacPDstandardNth1phi,kmadd(Gt222,JacPDstandardNth2phi,kmsub(Gt322,JacPDstandardNth3phi,JacPDstandardNth22phi)))));
- CCTK_REAL Xtn3 = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu12 +
- Gt313*gtu13 + Gt323*gtu23) + Gt333*gtu33;
+ CCTK_REAL_VEC cdphi223 =
+ kmsub(fac2,kmul(JacPDstandardNth2phi,JacPDstandardNth3phi),kmul(fac1,kmadd(Gt123,JacPDstandardNth1phi,kmadd(Gt223,JacPDstandardNth2phi,kmsub(Gt323,JacPDstandardNth3phi,JacPDstandardNth23phi)))));
- CCTK_REAL Rt11 = 0.5*(6*(Gt111*Gtlu111 + Gt112*Gtlu112 +
- Gt113*Gtlu113) + 4*(Gt211*Gtlu121 + Gt212*Gtlu122 + Gt213*Gtlu123 +
- Gt311*Gtlu131 + Gt312*Gtlu132 + Gt313*Gtlu133) -
- gtu11*JacPDstandardNth11gt11 + 2*(Gt211*Gtlu211 + Gt212*Gtlu212 +
- Gt213*Gtlu213 + Gt311*Gtlu311 + Gt312*Gtlu312 + Gt313*Gtlu313 +
- gt11L*JacPDstandardNth1Xt1) + 2*gt12L*JacPDstandardNth1Xt2 +
- 2*gt13L*JacPDstandardNth1Xt3 + gtu12*(-JacPDstandardNth12gt11 -
- JacPDstandardNth21gt11) - gtu22*JacPDstandardNth22gt11 +
- gtu13*(-JacPDstandardNth13gt11 - JacPDstandardNth31gt11) +
- gtu23*(-JacPDstandardNth23gt11 - JacPDstandardNth32gt11) -
- gtu33*JacPDstandardNth33gt11 + 2*Gtl111*Xtn1 + 2*Gtl112*Xtn2 +
- 2*Gtl113*Xtn3);
+ CCTK_REAL_VEC cdphi233 =
+ kmsub(fac2,SQR(JacPDstandardNth3phi),kmul(fac1,kmadd(Gt133,JacPDstandardNth1phi,kmadd(Gt233,JacPDstandardNth2phi,kmsub(Gt333,JacPDstandardNth3phi,JacPDstandardNth33phi)))));
- CCTK_REAL Rt12 = 0.5*(4*(Gt211*Gtlu221 + Gt212*Gtlu222 +
- Gt213*Gtlu223) + 2*(Gt122*Gtlu112 + Gt123*Gtlu113 + Gt111*Gtlu121 +
- Gt212*Gtlu121 + Gt222*Gtlu122 + Gt113*Gtlu123 + Gt223*Gtlu123 +
- Gt312*Gtlu131 + Gt322*Gtlu132 + Gt323*Gtlu133 + Gt111*Gtlu211 +
- Gt112*(Gtlu111 + Gtlu122 + Gtlu212) + Gt113*Gtlu213 + Gt311*Gtlu231 +
- Gt312*Gtlu232 + Gt313*Gtlu233 + Gt311*Gtlu321 + Gt312*Gtlu322 +
- Gt313*Gtlu323) - gtu11*JacPDstandardNth11gt12 +
- gt12L*JacPDstandardNth1Xt1 + gt22L*JacPDstandardNth1Xt2 +
- gt23L*JacPDstandardNth1Xt3 + gtu12*(-JacPDstandardNth12gt12 -
- JacPDstandardNth21gt12) - gtu22*JacPDstandardNth22gt12 +
- gt11L*JacPDstandardNth2Xt1 + gt12L*JacPDstandardNth2Xt2 +
- gt13L*JacPDstandardNth2Xt3 + gtu13*(-JacPDstandardNth13gt12 -
- JacPDstandardNth31gt12) + gtu23*(-JacPDstandardNth23gt12 -
- JacPDstandardNth32gt12) - gtu33*JacPDstandardNth33gt12 + Gtl112*Xtn1 +
- Gtl211*Xtn1 + Gtl122*Xtn2 + Gtl212*Xtn2 + Gtl123*Xtn3 + Gtl213*Xtn3);
+ CCTK_REAL_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 Rt13 = 0.5*(2*(Gt123*Gtlu112 + Gt133*Gtlu113 + Gt213*Gtlu121
- + Gt223*Gtlu122 + Gt233*Gtlu123 + Gt111*Gtlu131 + Gt313*Gtlu131 +
- Gt112*Gtlu132 + Gt323*Gtlu132 + Gt333*Gtlu133 + Gt211*Gtlu231 +
- Gt212*Gtlu232 + Gt213*Gtlu233 + Gt111*Gtlu311 + Gt112*Gtlu312 +
- Gt113*(Gtlu111 + Gtlu133 + Gtlu313) + Gt211*Gtlu321 + Gt212*Gtlu322 +
- Gt213*Gtlu323) + 4*(Gt311*Gtlu331 + Gt312*Gtlu332 + Gt313*Gtlu333) -
- gtu11*JacPDstandardNth11gt13 + gt13L*JacPDstandardNth1Xt1 +
- gt23L*JacPDstandardNth1Xt2 + gt33L*JacPDstandardNth1Xt3 +
- gtu12*(-JacPDstandardNth12gt13 - JacPDstandardNth21gt13) -
- gtu22*JacPDstandardNth22gt13 + gtu13*(-JacPDstandardNth13gt13 -
- JacPDstandardNth31gt13) + gtu23*(-JacPDstandardNth23gt13 -
- JacPDstandardNth32gt13) - gtu33*JacPDstandardNth33gt13 +
- gt11L*JacPDstandardNth3Xt1 + gt12L*JacPDstandardNth3Xt2 +
- gt13L*JacPDstandardNth3Xt3 + Gtl113*Xtn1 + Gtl311*Xtn1 + Gtl123*Xtn2 +
- Gtl312*Xtn2 + Gtl133*Xtn3 + Gtl313*Xtn3);
-
- CCTK_REAL Rt22 = 0.5*(6*(Gt212*Gtlu221 + Gt222*Gtlu222 +
- Gt223*Gtlu223) + 4*(Gt123*Gtlu213 + Gt312*Gtlu231 + Gt322*Gtlu232 +
- Gt323*Gtlu233) - gtu11*JacPDstandardNth11gt22 +
- gtu12*(-JacPDstandardNth12gt22 - JacPDstandardNth21gt22) -
- gtu22*JacPDstandardNth22gt22 + 2*(Gt123*Gtlu123 + Gt112*(Gtlu121 +
- 2*Gtlu211) + Gt122*(Gtlu122 + 2*Gtlu212) + Gt312*Gtlu321 +
- Gt322*Gtlu322 + Gt323*Gtlu323 + gt12L*JacPDstandardNth2Xt1) +
- 2*gt22L*JacPDstandardNth2Xt2 + 2*gt23L*JacPDstandardNth2Xt3 +
- gtu13*(-JacPDstandardNth13gt22 - JacPDstandardNth31gt22) +
- gtu23*(-JacPDstandardNth23gt22 - JacPDstandardNth32gt22) -
- gtu33*JacPDstandardNth33gt22 + 2*Gtl212*Xtn1 + 2*Gtl222*Xtn2 +
- 2*Gtl223*Xtn3);
-
- CCTK_REAL Rt23 = 0.5*(2*(Gt123*Gtlu133 + Gt113*Gtlu211 + Gt123*Gtlu212
- + Gt133*Gtlu213 + Gt213*Gtlu221 + Gt223*Gtlu222 + Gt233*Gtlu223 +
- Gt212*Gtlu231 + Gt313*Gtlu231 + Gt222*Gtlu232 + Gt323*Gtlu232 +
- Gt223*Gtlu233 + Gt333*Gtlu233 + Gt112*(Gtlu131 + Gtlu311) +
- Gt122*(Gtlu132 + Gtlu312) + Gt123*Gtlu313 + Gt212*Gtlu321 +
- Gt222*Gtlu322 + Gt223*Gtlu323) + 4*(Gt312*Gtlu331 + Gt322*Gtlu332 +
- Gt323*Gtlu333) - gtu11*JacPDstandardNth11gt23 +
- gtu12*(-JacPDstandardNth12gt23 - JacPDstandardNth21gt23) -
- gtu22*JacPDstandardNth22gt23 + gt13L*JacPDstandardNth2Xt1 +
- gt23L*JacPDstandardNth2Xt2 + gt33L*JacPDstandardNth2Xt3 +
- gtu13*(-JacPDstandardNth13gt23 - JacPDstandardNth31gt23) +
- gtu23*(-JacPDstandardNth23gt23 - JacPDstandardNth32gt23) -
- gtu33*JacPDstandardNth33gt23 + gt12L*JacPDstandardNth3Xt1 +
- gt22L*JacPDstandardNth3Xt2 + gt23L*JacPDstandardNth3Xt3 + Gtl213*Xtn1 +
- Gtl312*Xtn1 + Gtl223*Xtn2 + Gtl322*Xtn2 + Gtl233*Xtn3 + Gtl323*Xtn3);
-
- CCTK_REAL Rt33 = 0.5*(4*(Gt133*Gtlu313 + Gt213*Gtlu321 + Gt223*Gtlu322
- + Gt233*Gtlu323) + 6*(Gt313*Gtlu331 + Gt323*Gtlu332 + Gt333*Gtlu333) -
- gtu11*JacPDstandardNth11gt33 + gtu12*(-JacPDstandardNth12gt33 -
- JacPDstandardNth21gt33) - gtu22*JacPDstandardNth22gt33 +
- gtu13*(-JacPDstandardNth13gt33 - JacPDstandardNth31gt33) +
- gtu23*(-JacPDstandardNth23gt33 - JacPDstandardNth32gt33) -
- gtu33*JacPDstandardNth33gt33 + 2*(Gt133*Gtlu133 + Gt213*Gtlu231 +
- Gt223*Gtlu232 + Gt233*Gtlu233 + Gt113*(Gtlu131 + 2*Gtlu311) +
- Gt123*(Gtlu132 + 2*Gtlu312) + gt13L*JacPDstandardNth3Xt1) +
- 2*gt23L*JacPDstandardNth3Xt2 + 2*gt33L*JacPDstandardNth3Xt3 +
- 2*Gtl313*Xtn1 + 2*Gtl323*Xtn2 + 2*Gtl333*Xtn3);
-
- CCTK_REAL fac1 = IfThen(conformalMethod,-0.5*INV(phiL),1);
-
- CCTK_REAL cdphi1 = fac1*JacPDstandardNth1phi;
-
- CCTK_REAL cdphi2 = fac1*JacPDstandardNth2phi;
-
- CCTK_REAL cdphi3 = fac1*JacPDstandardNth3phi;
-
- CCTK_REAL fac2 = IfThen(conformalMethod,0.5*INV(SQR(phiL)),0);
-
- CCTK_REAL cdphi211 = fac1*(JacPDstandardNth11phi -
- Gt111*JacPDstandardNth1phi - Gt211*JacPDstandardNth2phi -
- Gt311*JacPDstandardNth3phi) + fac2*SQR(JacPDstandardNth1phi);
-
- CCTK_REAL cdphi212 = fac2*JacPDstandardNth1phi*JacPDstandardNth2phi +
- fac1*(JacPDstandardNth12phi - Gt112*JacPDstandardNth1phi -
- Gt212*JacPDstandardNth2phi - Gt312*JacPDstandardNth3phi);
-
- CCTK_REAL cdphi213 = fac2*JacPDstandardNth1phi*JacPDstandardNth3phi +
- fac1*(JacPDstandardNth13phi - Gt113*JacPDstandardNth1phi -
- Gt213*JacPDstandardNth2phi - Gt313*JacPDstandardNth3phi);
-
- CCTK_REAL cdphi222 = -(fac1*(Gt122*JacPDstandardNth1phi -
- JacPDstandardNth22phi + Gt222*JacPDstandardNth2phi +
- Gt322*JacPDstandardNth3phi)) + fac2*SQR(JacPDstandardNth2phi);
+ CCTK_REAL_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(cdphi3,kmul(gt12L,kmul(gtu13,ToReal(4))),kmul(cdphi2,kmadd(gt12L,kmul(gtu12,ToReal(4)),ToReal(-2))))))));
- CCTK_REAL cdphi223 = fac2*JacPDstandardNth2phi*JacPDstandardNth3phi -
- fac1*(Gt123*JacPDstandardNth1phi - JacPDstandardNth23phi +
- Gt223*JacPDstandardNth2phi + Gt323*JacPDstandardNth3phi);
+ 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(cdphi2,kmul(gt13L,kmul(gtu12,ToReal(4))),kmul(cdphi3,kmadd(gt13L,kmul(gtu13,ToReal(4)),ToReal(-2))))))));
- CCTK_REAL cdphi233 = -(fac1*(Gt133*JacPDstandardNth1phi +
- Gt233*JacPDstandardNth2phi - JacPDstandardNth33phi +
- Gt333*JacPDstandardNth3phi)) + fac2*SQR(JacPDstandardNth3phi);
+ 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 Rphi11 = -2*(cdphi211 + 2*(-1 + gt11L*gtu11)*SQR(cdphi1) +
- gt11L*(cdphi211*gtu11 + 4*(cdphi1*(cdphi2*gtu12 + cdphi3*gtu13) +
- cdphi2*cdphi3*gtu23) + cdphi233*gtu33 + gtu22*(cdphi222 +
- 2*SQR(cdphi2)) + 2*(cdphi212*gtu12 + cdphi213*gtu13 + cdphi223*gtu23 +
- gtu33*SQR(cdphi3))));
+ 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(cdphi1,kmul(gt23L,kmul(gtu12,ToReal(4))),kmul(cdphi3,kmadd(gt23L,kmul(gtu23,ToReal(4)),ToReal(-2))))))));
- CCTK_REAL Rphi12 = -2*(cdphi212 + cdphi1*(cdphi2*(-2 + 4*gt12L*gtu12)
- + 4*cdphi3*gt12L*gtu13) + gt12L*(cdphi211*gtu11 + 4*cdphi2*cdphi3*gtu23
- + 2*(cdphi212*gtu12 + cdphi213*gtu13 + cdphi223*gtu23 +
- gtu11*SQR(cdphi1)) + gtu22*(cdphi222 + 2*SQR(cdphi2)) + gtu33*(cdphi233
- + 2*SQR(cdphi3))));
+ 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 Rphi13 = -2*(cdphi213 + cdphi1*(4*cdphi2*gt13L*gtu12 +
- cdphi3*(-2 + 4*gt13L*gtu13)) + gt13L*(cdphi211*gtu11 +
- 4*cdphi2*cdphi3*gtu23 + 2*(cdphi212*gtu12 + cdphi213*gtu13 +
- cdphi223*gtu23 + gtu11*SQR(cdphi1)) + gtu22*(cdphi222 + 2*SQR(cdphi2))
- + gtu33*(cdphi233 + 2*SQR(cdphi3))));
+ CCTK_REAL_VEC Atm11 =
+ kmadd(At11L,gtu11,kmadd(At12L,gtu12,kmul(At13L,gtu13)));
- CCTK_REAL Rphi22 = -2*(cdphi222 + 2*(-1 + gt22L*gtu22)*SQR(cdphi2) +
- gt22L*(cdphi222*gtu22 + 4*(cdphi1*cdphi3*gtu13 + cdphi2*(cdphi1*gtu12 +
- cdphi3*gtu23)) + cdphi233*gtu33 + gtu11*(cdphi211 + 2*SQR(cdphi1)) +
- 2*(cdphi212*gtu12 + cdphi213*gtu13 + cdphi223*gtu23 +
- gtu33*SQR(cdphi3))));
+ CCTK_REAL_VEC Atm21 =
+ kmadd(At11L,gtu12,kmadd(At12L,gtu22,kmul(At13L,gtu23)));
- CCTK_REAL Rphi23 = -2*(cdphi223 + cdphi2*(4*cdphi1*gt23L*gtu12 +
- cdphi3*(-2 + 4*gt23L*gtu23)) + gt23L*(4*cdphi1*cdphi3*gtu13 +
- cdphi222*gtu22 + gtu11*(cdphi211 + 2*SQR(cdphi1)) + 2*(cdphi212*gtu12 +
- cdphi213*gtu13 + cdphi223*gtu23 + gtu22*SQR(cdphi2)) + gtu33*(cdphi233
- + 2*SQR(cdphi3))));
+ CCTK_REAL_VEC Atm31 =
+ kmadd(At11L,gtu13,kmadd(At12L,gtu23,kmul(At13L,gtu33)));
- CCTK_REAL Rphi33 = -2*(cdphi233 + gt33L*((4*cdphi1*cdphi2 +
- 2*cdphi212)*gtu12 + 4*cdphi3*(cdphi1*gtu13 + cdphi2*gtu23) +
- 2*(cdphi213*gtu13 + cdphi223*gtu23) + cdphi233*gtu33 + gtu11*(cdphi211
- + 2*SQR(cdphi1)) + gtu22*(cdphi222 + 2*SQR(cdphi2))) + 2*(-1 +
- gt33L*gtu33)*SQR(cdphi3));
+ CCTK_REAL_VEC Atm12 =
+ kmadd(At12L,gtu11,kmadd(At22L,gtu12,kmul(At23L,gtu13)));
- CCTK_REAL Atm11 = At11L*gtu11 + At12L*gtu12 + At13L*gtu13;
+ CCTK_REAL_VEC Atm22 =
+ kmadd(At12L,gtu12,kmadd(At22L,gtu22,kmul(At23L,gtu23)));
- CCTK_REAL Atm21 = At11L*gtu12 + At12L*gtu22 + At13L*gtu23;
+ CCTK_REAL_VEC Atm32 =
+ kmadd(At12L,gtu13,kmadd(At22L,gtu23,kmul(At23L,gtu33)));
- CCTK_REAL Atm31 = At11L*gtu13 + At12L*gtu23 + At13L*gtu33;
+ CCTK_REAL_VEC Atm13 =
+ kmadd(At13L,gtu11,kmadd(At23L,gtu12,kmul(At33L,gtu13)));
- CCTK_REAL Atm12 = At12L*gtu11 + At22L*gtu12 + At23L*gtu13;
+ CCTK_REAL_VEC Atm23 =
+ kmadd(At13L,gtu12,kmadd(At23L,gtu22,kmul(At33L,gtu23)));
- CCTK_REAL Atm22 = At12L*gtu12 + At22L*gtu22 + At23L*gtu23;
+ CCTK_REAL_VEC Atm33 =
+ kmadd(At13L,gtu13,kmadd(At23L,gtu23,kmul(At33L,gtu33)));
- CCTK_REAL Atm32 = At12L*gtu13 + At22L*gtu23 + At23L*gtu33;
+ CCTK_REAL_VEC e4phi =
+ IfThen(conformalMethod,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
- CCTK_REAL Atm13 = At13L*gtu11 + At23L*gtu12 + At33L*gtu13;
+ CCTK_REAL_VEC em4phi = INV(e4phi);
- CCTK_REAL Atm23 = At13L*gtu12 + At23L*gtu22 + At33L*gtu23;
+ CCTK_REAL_VEC g11 = kmul(e4phi,gt11L);
- CCTK_REAL Atm33 = At13L*gtu13 + At23L*gtu23 + At33L*gtu33;
+ CCTK_REAL_VEC g12 = kmul(e4phi,gt12L);
- CCTK_REAL e4phi = IfThen(conformalMethod,INV(SQR(phiL)),exp(4*phiL));
+ CCTK_REAL_VEC g13 = kmul(e4phi,gt13L);
- CCTK_REAL em4phi = INV(e4phi);
+ CCTK_REAL_VEC g22 = kmul(e4phi,gt22L);
- CCTK_REAL g11 = e4phi*gt11L;
+ CCTK_REAL_VEC g23 = kmul(e4phi,gt23L);
- CCTK_REAL g12 = e4phi*gt12L;
+ CCTK_REAL_VEC g33 = kmul(e4phi,gt33L);
- CCTK_REAL g13 = e4phi*gt13L;
+ CCTK_REAL_VEC gu11 = kmul(em4phi,gtu11);
- CCTK_REAL g22 = e4phi*gt22L;
+ CCTK_REAL_VEC gu12 = kmul(em4phi,gtu12);
- CCTK_REAL g23 = e4phi*gt23L;
+ CCTK_REAL_VEC gu13 = kmul(em4phi,gtu13);
- CCTK_REAL g33 = e4phi*gt33L;
+ CCTK_REAL_VEC gu22 = kmul(em4phi,gtu22);
- CCTK_REAL gu11 = em4phi*gtu11;
+ CCTK_REAL_VEC gu23 = kmul(em4phi,gtu23);
- CCTK_REAL gu12 = em4phi*gtu12;
+ CCTK_REAL_VEC gu33 = kmul(em4phi,gtu33);
- CCTK_REAL gu13 = em4phi*gtu13;
+ CCTK_REAL_VEC R11 = kadd(Rphi11,Rt11);
- CCTK_REAL gu22 = em4phi*gtu22;
+ CCTK_REAL_VEC R12 = kadd(Rphi12,Rt12);
- CCTK_REAL gu23 = em4phi*gtu23;
+ CCTK_REAL_VEC R13 = kadd(Rphi13,Rt13);
- CCTK_REAL gu33 = em4phi*gtu33;
+ CCTK_REAL_VEC R22 = kadd(Rphi22,Rt22);
- CCTK_REAL R11 = Rphi11 + Rt11;
+ CCTK_REAL_VEC R23 = kadd(Rphi23,Rt23);
- CCTK_REAL R12 = Rphi12 + Rt12;
+ CCTK_REAL_VEC R33 = kadd(Rphi33,Rt33);
- CCTK_REAL R13 = Rphi13 + Rt13;
+ 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 R22 = Rphi22 + Rt22;
+ CCTK_REAL_VEC Ats11 =
+ kmadd(Gt211,JacPDstandardNth2alpha,kmadd(Gt311,JacPDstandardNth3alpha,kmadd(alphaL,R11,kmsub(JacPDstandardNth1alpha,kmadd(cdphi1,ToReal(4),Gt111),JacPDstandardNth11alpha))));
- CCTK_REAL R23 = Rphi23 + Rt23;
+ 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 R33 = Rphi33 + Rt33;
+ 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 trS = em4phi*(eTxxL*gtu11 + eTyyL*gtu22 + 2*(eTxyL*gtu12 +
- eTxzL*gtu13 + eTyzL*gtu23) + eTzzL*gtu33);
+ CCTK_REAL_VEC Ats22 =
+ kmadd(Gt122,JacPDstandardNth1alpha,kmadd(Gt322,JacPDstandardNth3alpha,kmadd(alphaL,R22,kmsub(JacPDstandardNth2alpha,kmadd(cdphi2,ToReal(4),Gt222),JacPDstandardNth22alpha))));
- CCTK_REAL Ats11 = -JacPDstandardNth11alpha + (4*cdphi1 +
- Gt111)*JacPDstandardNth1alpha + Gt211*JacPDstandardNth2alpha +
- Gt311*JacPDstandardNth3alpha + alphaL*R11;
+ 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 Ats12 = -JacPDstandardNth12alpha + (2*cdphi2 +
- Gt112)*JacPDstandardNth1alpha + (2*cdphi1 +
- Gt212)*JacPDstandardNth2alpha + Gt312*JacPDstandardNth3alpha +
- alphaL*R12;
+ CCTK_REAL_VEC Ats33 =
+ kmadd(Gt133,JacPDstandardNth1alpha,kmadd(Gt233,JacPDstandardNth2alpha,kmadd(alphaL,R33,kmsub(JacPDstandardNth3alpha,kmadd(cdphi3,ToReal(4),Gt333),JacPDstandardNth33alpha))));
- CCTK_REAL Ats13 = -JacPDstandardNth13alpha + (2*cdphi3 +
- Gt113)*JacPDstandardNth1alpha + Gt213*JacPDstandardNth2alpha +
- (2*cdphi1 + Gt313)*JacPDstandardNth3alpha + alphaL*R13;
+ 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 Ats22 = Gt122*JacPDstandardNth1alpha -
- JacPDstandardNth22alpha + (4*cdphi2 + Gt222)*JacPDstandardNth2alpha +
- Gt322*JacPDstandardNth3alpha + alphaL*R22;
+ CCTK_REAL_VEC At11rhsL =
+ kmadd(em4phi,kmadd(g11,kmul(trAts,ToReal(-0.3333333333333333333333333333333333333333)),Ats11),kmadd(At11L,kmadd(kadd(JacPDstandardNth2beta2,JacPDstandardNth3beta3),ToReal(-0.6666666666666666666666666666666666666667),kmul(JacPDstandardNth1beta1,ToReal(1.333333333333333333333333333333333333333))),kmadd(kmadd(At12L,JacPDstandardNth1beta2,kmul(At13L,JacPDstandardNth1beta3)),ToReal(2.),kmul(alphaL,kmadd(kmadd(At12L,Atm21,kmul(At13L,Atm31)),ToReal(-2.),kmadd(At11L,kmadd(Atm11,ToReal(-2.),trKL),kmul(em4phi,kmadd(eTxxL,ToReal(-25.13274122871834590770114706623602307358),kmul(g11,kmul(trS,ToReal(8.377580409572781969233715688745341024526)))))))))));
- CCTK_REAL Ats23 = Gt123*JacPDstandardNth1alpha -
- JacPDstandardNth23alpha + (2*cdphi3 + Gt223)*JacPDstandardNth2alpha +
- (2*cdphi2 + Gt323)*JacPDstandardNth3alpha + alphaL*R23;
+ CCTK_REAL_VEC At12rhsL =
+ kmadd(At22L,JacPDstandardNth1beta2,kmadd(At23L,JacPDstandardNth1beta3,kmadd(At11L,JacPDstandardNth2beta1,kmadd(At13L,JacPDstandardNth2beta3,kmadd(em4phi,kmadd(g12,kmul(trAts,ToReal(-0.3333333333333333333333333333333333333333)),Ats12),kmadd(At12L,kmadd(JacPDstandardNth3beta3,ToReal(-0.6666666666666666666666666666666666666667),kmul(kadd(JacPDstandardNth1beta1,JacPDstandardNth2beta2),ToReal(0.3333333333333333333333333333333333333333))),kmul(alphaL,kmadd(At12L,trKL,kmadd(kmadd(At11L,Atm12,kmadd(At12L,Atm22,kmul(At13L,Atm32))),ToReal(-2.),kmul(em4phi,kmadd(eTxyL,ToReal(-25.13274122871834590770114706623602307358),kmul(g12,kmul(trS,ToReal(8.377580409572781969233715688745341024526))))))))))))));
- CCTK_REAL Ats33 = Gt133*JacPDstandardNth1alpha +
- Gt233*JacPDstandardNth2alpha - JacPDstandardNth33alpha + (4*cdphi3 +
- Gt333)*JacPDstandardNth3alpha + alphaL*R33;
+ CCTK_REAL_VEC At13rhsL =
+ kmadd(At23L,JacPDstandardNth1beta2,kmadd(At33L,JacPDstandardNth1beta3,kmadd(At11L,JacPDstandardNth3beta1,kmadd(At12L,JacPDstandardNth3beta2,kmadd(em4phi,kmadd(g13,kmul(trAts,ToReal(-0.3333333333333333333333333333333333333333)),Ats13),kmadd(At13L,kmadd(JacPDstandardNth2beta2,ToReal(-0.6666666666666666666666666666666666666667),kmul(kadd(JacPDstandardNth1beta1,JacPDstandardNth3beta3),ToReal(0.3333333333333333333333333333333333333333))),kmul(alphaL,kmadd(At13L,trKL,kmadd(kmadd(At11L,Atm13,kmadd(At12L,Atm23,kmul(At13L,Atm33))),ToReal(-2.),kmul(em4phi,kmadd(eTxzL,ToReal(-25.13274122871834590770114706623602307358),kmul(g13,kmul(trS,ToReal(8.377580409572781969233715688745341024526))))))))))))));
- CCTK_REAL trAts = Ats11*gu11 + Ats22*gu22 + 2*(Ats12*gu12 + Ats13*gu13
- + Ats23*gu23) + Ats33*gu33;
+ CCTK_REAL_VEC At22rhsL =
+ kmadd(em4phi,kmadd(g22,kmul(trAts,ToReal(-0.3333333333333333333333333333333333333333)),Ats22),kmadd(At22L,kmadd(kadd(JacPDstandardNth1beta1,JacPDstandardNth3beta3),ToReal(-0.6666666666666666666666666666666666666667),kmul(JacPDstandardNth2beta2,ToReal(1.333333333333333333333333333333333333333))),kmadd(kmadd(At12L,JacPDstandardNth2beta1,kmul(At23L,JacPDstandardNth2beta3)),ToReal(2.),kmul(alphaL,kmadd(At22L,trKL,kmadd(kmadd(At12L,Atm12,kmadd(At22L,Atm22,kmul(At23L,Atm32))),ToReal(-2.),kmul(em4phi,kmadd(eTyyL,ToReal(-25.13274122871834590770114706623602307358),kmul(g22,kmul(trS,ToReal(8.377580409572781969233715688745341024526)))))))))));
- CCTK_REAL At11rhsL = 2.*(At12L*JacPDstandardNth1beta2 +
- At13L*JacPDstandardNth1beta3) +
- At11L*(1.333333333333333333333333333333333333333*JacPDstandardNth1beta1
- - 0.6666666666666666666666666666666666666667*(JacPDstandardNth2beta2 +
- JacPDstandardNth3beta3)) + em4phi*(Ats11 -
- 0.3333333333333333333333333333333333333333*g11*trAts) +
- alphaL*(-2.*(At12L*Atm21 + At13L*Atm31) + At11L*(-2.*Atm11 + trKL) +
- em4phi*(-25.13274122871834590770114706623602307358*eTxxL +
- 8.377580409572781969233715688745341024526*g11*trS));
+ CCTK_REAL_VEC At23rhsL =
+ kmadd(At13L,JacPDstandardNth2beta1,kmadd(At33L,JacPDstandardNth2beta3,kmadd(At12L,JacPDstandardNth3beta1,kmadd(At22L,JacPDstandardNth3beta2,kmadd(em4phi,kmadd(g23,kmul(trAts,ToReal(-0.3333333333333333333333333333333333333333)),Ats23),kmadd(At23L,kmadd(JacPDstandardNth1beta1,ToReal(-0.6666666666666666666666666666666666666667),kmul(kadd(JacPDstandardNth2beta2,JacPDstandardNth3beta3),ToReal(0.3333333333333333333333333333333333333333))),kmul(alphaL,kmadd(At23L,trKL,kmadd(kmadd(At12L,Atm13,kmadd(At22L,Atm23,kmul(At23L,Atm33))),ToReal(-2.),kmul(em4phi,kmadd(eTyzL,ToReal(-25.13274122871834590770114706623602307358),kmul(g23,kmul(trS,ToReal(8.377580409572781969233715688745341024526))))))))))))));
- CCTK_REAL At12rhsL = At22L*JacPDstandardNth1beta2 +
- At23L*JacPDstandardNth1beta3 + At11L*JacPDstandardNth2beta1 +
- At13L*JacPDstandardNth2beta3 +
- At12L*(0.3333333333333333333333333333333333333333*(JacPDstandardNth1beta1
- + JacPDstandardNth2beta2) -
- 0.6666666666666666666666666666666666666667*JacPDstandardNth3beta3) +
- em4phi*(Ats12 - 0.3333333333333333333333333333333333333333*g12*trAts) +
- alphaL*(-2.*(At11L*Atm12 + At12L*Atm22 + At13L*Atm32) + At12L*trKL +
- em4phi*(-25.13274122871834590770114706623602307358*eTxyL +
- 8.377580409572781969233715688745341024526*g12*trS));
+ CCTK_REAL_VEC At33rhsL =
+ kmadd(em4phi,kmadd(g33,kmul(trAts,ToReal(-0.3333333333333333333333333333333333333333)),Ats33),kmadd(At33L,kmadd(kadd(JacPDstandardNth1beta1,JacPDstandardNth2beta2),ToReal(-0.6666666666666666666666666666666666666667),kmul(JacPDstandardNth3beta3,ToReal(1.333333333333333333333333333333333333333))),kmadd(kmadd(At13L,JacPDstandardNth3beta1,kmul(At23L,JacPDstandardNth3beta2)),ToReal(2.),kmul(alphaL,kmadd(At33L,trKL,kmadd(kmadd(At13L,Atm13,kmadd(At23L,Atm23,kmul(At33L,Atm33))),ToReal(-2.),kmul(em4phi,kmadd(eTzzL,ToReal(-25.13274122871834590770114706623602307358),kmul(g33,kmul(trS,ToReal(8.377580409572781969233715688745341024526)))))))))));
- CCTK_REAL At13rhsL = At23L*JacPDstandardNth1beta2 +
- At33L*JacPDstandardNth1beta3 + At11L*JacPDstandardNth3beta1 +
- At12L*JacPDstandardNth3beta2 +
- At13L*(-0.6666666666666666666666666666666666666667*JacPDstandardNth2beta2
- + 0.3333333333333333333333333333333333333333*(JacPDstandardNth1beta1 +
- JacPDstandardNth3beta3)) + em4phi*(Ats13 -
- 0.3333333333333333333333333333333333333333*g13*trAts) +
- alphaL*(-2.*(At11L*Atm13 + At12L*Atm23 + At13L*Atm33) + At13L*trKL +
- em4phi*(-25.13274122871834590770114706623602307358*eTxzL +
- 8.377580409572781969233715688745341024526*g13*trS));
-
- CCTK_REAL At22rhsL = 2.*(At12L*JacPDstandardNth2beta1 +
- At23L*JacPDstandardNth2beta3) +
- At22L*(1.333333333333333333333333333333333333333*JacPDstandardNth2beta2
- - 0.6666666666666666666666666666666666666667*(JacPDstandardNth1beta1 +
- JacPDstandardNth3beta3)) + em4phi*(Ats22 -
- 0.3333333333333333333333333333333333333333*g22*trAts) +
- alphaL*(-2.*(At12L*Atm12 + At22L*Atm22 + At23L*Atm32) + At22L*trKL +
- em4phi*(-25.13274122871834590770114706623602307358*eTyyL +
- 8.377580409572781969233715688745341024526*g22*trS));
-
- CCTK_REAL At23rhsL = At13L*JacPDstandardNth2beta1 +
- At33L*JacPDstandardNth2beta3 + At12L*JacPDstandardNth3beta1 +
- At22L*JacPDstandardNth3beta2 +
- At23L*(-0.6666666666666666666666666666666666666667*JacPDstandardNth1beta1
- + 0.3333333333333333333333333333333333333333*(JacPDstandardNth2beta2 +
- JacPDstandardNth3beta3)) + em4phi*(Ats23 -
- 0.3333333333333333333333333333333333333333*g23*trAts) +
- alphaL*(-2.*(At12L*Atm13 + At22L*Atm23 + At23L*Atm33) + At23L*trKL +
- em4phi*(-25.13274122871834590770114706623602307358*eTyzL +
- 8.377580409572781969233715688745341024526*g23*trS));
-
- CCTK_REAL At33rhsL = 2.*(At13L*JacPDstandardNth3beta1 +
- At23L*JacPDstandardNth3beta2) +
- At33L*(-0.6666666666666666666666666666666666666667*(JacPDstandardNth1beta1
- + JacPDstandardNth2beta2) +
- 1.333333333333333333333333333333333333333*JacPDstandardNth3beta3) +
- em4phi*(Ats33 - 0.3333333333333333333333333333333333333333*g33*trAts) +
- alphaL*(-2.*(At13L*Atm13 + At23L*Atm23 + At33L*Atm33) + At33L*trKL +
- em4phi*(-25.13274122871834590770114706623602307358*eTzzL +
- 8.377580409572781969233715688745341024526*g33*trS));
-
- /* Copy local copies back to grid functions */
- At11rhs[index] = At11rhsL;
- At12rhs[index] = At12rhsL;
- At13rhs[index] = At13rhsL;
- At22rhs[index] = At22rhsL;
- At23rhs[index] = At23rhsL;
- At33rhs[index] = At33rhsL;
+ /* 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(At11rhs[index],At11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At12rhs[index],At12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At13rhs[index],At13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At22rhs[index],At22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At23rhs[index],At23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At33rhs[index],At33rhsL,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(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_hi(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_hi(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_hi(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_hi(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_hi(At33rhs[index],At33rhsL,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(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_lo(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_lo(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_lo(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_lo(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_lo(At33rhs[index],At33rhsL,elt_count);
+ break;
+ }
+ vec_store_nta(At11rhs[index],At11rhsL);
+ vec_store_nta(At12rhs[index],At12rhsL);
+ vec_store_nta(At13rhs[index],At13rhsL);
+ vec_store_nta(At22rhs[index],At22rhsL);
+ vec_store_nta(At23rhs[index],At23rhsL);
+ vec_store_nta(At33rhs[index],At33rhsL);
}
- LC_ENDLOOP3 (ML_BSSN_MP_RHS2);
+ LC_ENDLOOP3VEC (ML_BSSN_MP_RHS2);
}
extern "C" void ML_BSSN_MP_RHS2(CCTK_ARGUMENTS)
@@ -1745,5 +1857,43 @@ extern "C" void ML_BSSN_MP_RHS2(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_RHS2_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_MP_RHS2_calc_every != ML_BSSN_MP_RHS2_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN_MP::ML_curv","ML_BSSN_MP::ML_curvrhs","ML_BSSN_MP::ML_Gamma","ML_BSSN_MP::ML_lapse","ML_BSSN_MP::ML_log_confac","ML_BSSN_MP::ML_metric","ML_BSSN_MP::ML_shift","ML_BSSN_MP::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_RHS2", 8, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_RHS2", 1, 1, 1);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_RHS2", 2, 2, 2);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_RHS2", 3, 3, 3);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_RHS2", 4, 4, 4);
+ break;
+ }
+
GenericFD_LoopOverInterior(cctkGH, &ML_BSSN_MP_RHS2_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_MP_RHS2_Body");
+ }
}
diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_RHSStaticBoundary.cc b/ML_BSSN_MP/src/ML_BSSN_MP_RHSStaticBoundary.cc
index c5d97c1..88986ad 100644
--- a/ML_BSSN_MP/src/ML_BSSN_MP_RHSStaticBoundary.cc
+++ b/ML_BSSN_MP/src/ML_BSSN_MP_RHSStaticBoundary.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_MP_RHSStaticBoundary_SelectBCs(CCTK_ARGUMENTS)
{
@@ -57,7 +58,7 @@ extern "C" void ML_BSSN_MP_RHSStaticBoundary_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_BSSN_MP_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_MP_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;
@@ -65,20 +66,6 @@ static void ML_BSSN_MP_RHSStaticBoundary_Body(cGH const * restrict const cctkGH,
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_RHSStaticBoundary_Body");
- }
-
- if (cctk_iteration % ML_BSSN_MP_RHSStaticBoundary_calc_every != ML_BSSN_MP_RHSStaticBoundary_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN_MP::ML_curvrhs","ML_BSSN_MP::ML_dtlapserhs","ML_BSSN_MP::ML_dtshiftrhs","ML_BSSN_MP::ML_Gammarhs","ML_BSSN_MP::ML_lapserhs","ML_BSSN_MP::ML_log_confacrhs","ML_BSSN_MP::ML_metricrhs","ML_BSSN_MP::ML_shiftrhs","ML_BSSN_MP::ML_trace_curvrhs"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_RHSStaticBoundary", 9, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -88,41 +75,102 @@ static void ML_BSSN_MP_RHSStaticBoundary_Body(cGH const * restrict const cctkGH,
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const p1o24dx = 0.0416666666666666666666666666667*INV(dx);
- CCTK_REAL const p1o24dy = 0.0416666666666666666666666666667*INV(dy);
- CCTK_REAL const p1o24dz = 0.0416666666666666666666666666667*INV(dz);
- CCTK_REAL const p1o64dx = 0.015625*INV(dx);
- CCTK_REAL const p1o64dy = 0.015625*INV(dy);
- CCTK_REAL const p1o64dz = 0.015625*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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)
@@ -169,11 +217,20 @@ static void ML_BSSN_MP_RHSStaticBoundary_Body(cGH const * restrict const cctkGH,
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_LOOP3 (ML_BSSN_MP_RHSStaticBoundary,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_MP_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;
@@ -186,85 +243,198 @@ static void ML_BSSN_MP_RHSStaticBoundary_Body(cGH const * restrict const cctkGH,
/* Precompute derivatives */
- /* Calculate temporaries and grid functions */
- CCTK_REAL phirhsL = 0;
-
- CCTK_REAL gt11rhsL = 0;
-
- CCTK_REAL gt12rhsL = 0;
-
- CCTK_REAL gt13rhsL = 0;
-
- CCTK_REAL gt22rhsL = 0;
-
- CCTK_REAL gt23rhsL = 0;
-
- CCTK_REAL gt33rhsL = 0;
-
- CCTK_REAL trKrhsL = 0;
-
- CCTK_REAL At11rhsL = 0;
-
- CCTK_REAL At12rhsL = 0;
-
- CCTK_REAL At13rhsL = 0;
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
- CCTK_REAL At22rhsL = 0;
-
- CCTK_REAL At23rhsL = 0;
-
- CCTK_REAL At33rhsL = 0;
-
- CCTK_REAL Xt1rhsL = 0;
-
- CCTK_REAL Xt2rhsL = 0;
+ /* Calculate temporaries and grid functions */
+ CCTK_REAL_VEC phirhsL = ToReal(0);
- CCTK_REAL Xt3rhsL = 0;
+ CCTK_REAL_VEC gt11rhsL = ToReal(0);
- CCTK_REAL alpharhsL = 0;
+ CCTK_REAL_VEC gt12rhsL = ToReal(0);
- CCTK_REAL ArhsL = 0;
+ CCTK_REAL_VEC gt13rhsL = ToReal(0);
- CCTK_REAL beta1rhsL = 0;
+ CCTK_REAL_VEC gt22rhsL = ToReal(0);
- CCTK_REAL beta2rhsL = 0;
+ CCTK_REAL_VEC gt23rhsL = ToReal(0);
- CCTK_REAL beta3rhsL = 0;
+ CCTK_REAL_VEC gt33rhsL = ToReal(0);
- CCTK_REAL B1rhsL = 0;
+ CCTK_REAL_VEC trKrhsL = ToReal(0);
+
+ CCTK_REAL_VEC At11rhsL = ToReal(0);
- CCTK_REAL B2rhsL = 0;
+ CCTK_REAL_VEC At12rhsL = ToReal(0);
- CCTK_REAL B3rhsL = 0;
+ CCTK_REAL_VEC At13rhsL = ToReal(0);
- /* Copy local copies back to grid functions */
- alpharhs[index] = alpharhsL;
- Arhs[index] = ArhsL;
- At11rhs[index] = At11rhsL;
- At12rhs[index] = At12rhsL;
- At13rhs[index] = At13rhsL;
- At22rhs[index] = At22rhsL;
- At23rhs[index] = At23rhsL;
- At33rhs[index] = At33rhsL;
- B1rhs[index] = B1rhsL;
- B2rhs[index] = B2rhsL;
- B3rhs[index] = B3rhsL;
- beta1rhs[index] = beta1rhsL;
- beta2rhs[index] = beta2rhsL;
- beta3rhs[index] = beta3rhsL;
- gt11rhs[index] = gt11rhsL;
- gt12rhs[index] = gt12rhsL;
- gt13rhs[index] = gt13rhsL;
- gt22rhs[index] = gt22rhsL;
- gt23rhs[index] = gt23rhsL;
- gt33rhs[index] = gt33rhsL;
- phirhs[index] = phirhsL;
- trKrhs[index] = trKrhsL;
- Xt1rhs[index] = Xt1rhsL;
- Xt2rhs[index] = Xt2rhsL;
- Xt3rhs[index] = Xt3rhsL;
+ 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);
+
+ /* 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(Arhs[index],ArhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At11rhs[index],At11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At12rhs[index],At12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At13rhs[index],At13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At22rhs[index],At22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At23rhs[index],At23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At33rhs[index],At33rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B1rhs[index],B1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B2rhs[index],B2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt12rhs[index],gt12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt13rhs[index],gt13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt22rhs[index],gt22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt23rhs[index],gt23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt33rhs[index],gt33rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(phirhs[index],phirhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(trKrhs[index],trKrhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt1rhs[index],Xt1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt2rhs[index],Xt2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt3rhs[index],Xt3rhsL,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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_hi(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_hi(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_hi(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_hi(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_hi(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_hi(At33rhs[index],At33rhsL,elt_count);
+ vec_store_nta_partial_hi(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_hi(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_hi(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_hi(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_hi(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_hi(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_hi(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_hi(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_hi(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_hi(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_hi(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt3rhs[index],Xt3rhsL,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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_lo(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_lo(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_lo(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_lo(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_lo(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_lo(At33rhs[index],At33rhsL,elt_count);
+ vec_store_nta_partial_lo(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_lo(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_lo(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_lo(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_lo(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_lo(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_lo(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_lo(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_lo(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_lo(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_lo(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt3rhs[index],Xt3rhsL,elt_count);
+ break;
+ }
+ vec_store_nta(alpharhs[index],alpharhsL);
+ vec_store_nta(Arhs[index],ArhsL);
+ vec_store_nta(At11rhs[index],At11rhsL);
+ vec_store_nta(At12rhs[index],At12rhsL);
+ vec_store_nta(At13rhs[index],At13rhsL);
+ vec_store_nta(At22rhs[index],At22rhsL);
+ vec_store_nta(At23rhs[index],At23rhsL);
+ vec_store_nta(At33rhs[index],At33rhsL);
+ vec_store_nta(B1rhs[index],B1rhsL);
+ vec_store_nta(B2rhs[index],B2rhsL);
+ vec_store_nta(B3rhs[index],B3rhsL);
+ vec_store_nta(beta1rhs[index],beta1rhsL);
+ vec_store_nta(beta2rhs[index],beta2rhsL);
+ vec_store_nta(beta3rhs[index],beta3rhsL);
+ vec_store_nta(gt11rhs[index],gt11rhsL);
+ vec_store_nta(gt12rhs[index],gt12rhsL);
+ vec_store_nta(gt13rhs[index],gt13rhsL);
+ vec_store_nta(gt22rhs[index],gt22rhsL);
+ vec_store_nta(gt23rhs[index],gt23rhsL);
+ vec_store_nta(gt33rhs[index],gt33rhsL);
+ vec_store_nta(phirhs[index],phirhsL);
+ vec_store_nta(trKrhs[index],trKrhsL);
+ vec_store_nta(Xt1rhs[index],Xt1rhsL);
+ vec_store_nta(Xt2rhs[index],Xt2rhsL);
+ vec_store_nta(Xt3rhs[index],Xt3rhsL);
}
- LC_ENDLOOP3 (ML_BSSN_MP_RHSStaticBoundary);
+ LC_ENDLOOP3VEC (ML_BSSN_MP_RHSStaticBoundary);
}
extern "C" void ML_BSSN_MP_RHSStaticBoundary(CCTK_ARGUMENTS)
@@ -272,5 +442,39 @@ extern "C" void ML_BSSN_MP_RHSStaticBoundary(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_RHSStaticBoundary_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_MP_RHSStaticBoundary_calc_every != ML_BSSN_MP_RHSStaticBoundary_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN_MP::ML_curvrhs","ML_BSSN_MP::ML_dtlapserhs","ML_BSSN_MP::ML_dtshiftrhs","ML_BSSN_MP::ML_Gammarhs","ML_BSSN_MP::ML_lapserhs","ML_BSSN_MP::ML_log_confacrhs","ML_BSSN_MP::ML_metricrhs","ML_BSSN_MP::ML_shiftrhs","ML_BSSN_MP::ML_trace_curvrhs"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_RHSStaticBoundary", 9, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverBoundary(cctkGH, &ML_BSSN_MP_RHSStaticBoundary_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_MP_RHSStaticBoundary_Body");
+ }
}
diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_boundary.cc b/ML_BSSN_MP/src/ML_BSSN_MP_boundary.cc
index 13d5e5e..884c4a4 100644
--- a/ML_BSSN_MP/src/ML_BSSN_MP_boundary.cc
+++ b/ML_BSSN_MP/src/ML_BSSN_MP_boundary.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_MP_boundary_SelectBCs(CCTK_ARGUMENTS)
{
@@ -57,7 +58,7 @@ extern "C" void ML_BSSN_MP_boundary_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_BSSN_MP_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_MP_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;
@@ -65,20 +66,6 @@ static void ML_BSSN_MP_boundary_Body(cGH const * restrict const cctkGH, int cons
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_boundary_Body");
- }
-
- if (cctk_iteration % ML_BSSN_MP_boundary_calc_every != ML_BSSN_MP_boundary_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN_MP::ML_curv","ML_BSSN_MP::ML_dtlapse","ML_BSSN_MP::ML_dtshift","ML_BSSN_MP::ML_Gamma","ML_BSSN_MP::ML_lapse","ML_BSSN_MP::ML_log_confac","ML_BSSN_MP::ML_metric","ML_BSSN_MP::ML_shift","ML_BSSN_MP::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_boundary", 9, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -88,41 +75,102 @@ static void ML_BSSN_MP_boundary_Body(cGH const * restrict const cctkGH, int cons
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const p1o24dx = 0.0416666666666666666666666666667*INV(dx);
- CCTK_REAL const p1o24dy = 0.0416666666666666666666666666667*INV(dy);
- CCTK_REAL const p1o24dz = 0.0416666666666666666666666666667*INV(dz);
- CCTK_REAL const p1o64dx = 0.015625*INV(dx);
- CCTK_REAL const p1o64dy = 0.015625*INV(dy);
- CCTK_REAL const p1o64dz = 0.015625*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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)
@@ -169,11 +217,20 @@ static void ML_BSSN_MP_boundary_Body(cGH const * restrict const cctkGH, int cons
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_LOOP3 (ML_BSSN_MP_boundary,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_MP_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;
@@ -186,85 +243,198 @@ static void ML_BSSN_MP_boundary_Body(cGH const * restrict const cctkGH, int cons
/* Precompute derivatives */
- /* Calculate temporaries and grid functions */
- CCTK_REAL phiL = IfThen(conformalMethod,1,0);
-
- CCTK_REAL gt11L = 1;
-
- CCTK_REAL gt12L = 0;
-
- CCTK_REAL gt13L = 0;
-
- CCTK_REAL gt22L = 1;
-
- CCTK_REAL gt23L = 0;
-
- CCTK_REAL gt33L = 1;
-
- CCTK_REAL trKL = 0;
-
- CCTK_REAL At11L = 0;
-
- CCTK_REAL At12L = 0;
-
- CCTK_REAL At13L = 0;
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
- CCTK_REAL At22L = 0;
-
- CCTK_REAL At23L = 0;
-
- CCTK_REAL At33L = 0;
-
- CCTK_REAL Xt1L = 0;
-
- CCTK_REAL Xt2L = 0;
+ /* Calculate temporaries and grid functions */
+ CCTK_REAL_VEC phiL = IfThen(conformalMethod,ToReal(1),ToReal(0));
- CCTK_REAL Xt3L = 0;
+ CCTK_REAL_VEC gt11L = ToReal(1);
- CCTK_REAL alphaL = 1;
+ CCTK_REAL_VEC gt12L = ToReal(0);
- CCTK_REAL AL = 0;
+ CCTK_REAL_VEC gt13L = ToReal(0);
- CCTK_REAL beta1L = 0;
+ CCTK_REAL_VEC gt22L = ToReal(1);
- CCTK_REAL beta2L = 0;
+ CCTK_REAL_VEC gt23L = ToReal(0);
- CCTK_REAL beta3L = 0;
+ CCTK_REAL_VEC gt33L = ToReal(1);
- CCTK_REAL B1L = 0;
+ CCTK_REAL_VEC trKL = ToReal(0);
+
+ CCTK_REAL_VEC At11L = ToReal(0);
- CCTK_REAL B2L = 0;
+ CCTK_REAL_VEC At12L = ToReal(0);
- CCTK_REAL B3L = 0;
+ CCTK_REAL_VEC At13L = ToReal(0);
- /* Copy local copies back to grid functions */
- A[index] = AL;
- alpha[index] = alphaL;
- At11[index] = At11L;
- At12[index] = At12L;
- At13[index] = At13L;
- At22[index] = At22L;
- At23[index] = At23L;
- At33[index] = At33L;
- B1[index] = B1L;
- B2[index] = B2L;
- B3[index] = B3L;
- beta1[index] = beta1L;
- beta2[index] = beta2L;
- beta3[index] = beta3L;
- gt11[index] = gt11L;
- gt12[index] = gt12L;
- gt13[index] = gt13L;
- gt22[index] = gt22L;
- gt23[index] = gt23L;
- gt33[index] = gt33L;
- phi[index] = phiL;
- trK[index] = trKL;
- Xt1[index] = Xt1L;
- Xt2[index] = Xt2L;
- Xt3[index] = Xt3L;
+ 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);
+
+ /* 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(A[index],AL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(alpha[index],alphaL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At11[index],At11L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At12[index],At12L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At13[index],At13L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At22[index],At22L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At23[index],At23L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At33[index],At33L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B1[index],B1L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B2[index],B2L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B3[index],B3L,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(gt11[index],gt11L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt12[index],gt12L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt13[index],gt13L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt22[index],gt22L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt23[index],gt23L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt33[index],gt33L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(phi[index],phiL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(trK[index],trKL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt1[index],Xt1L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt2[index],Xt2L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt3[index],Xt3L,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(A[index],AL,elt_count);
+ vec_store_nta_partial_hi(alpha[index],alphaL,elt_count);
+ vec_store_nta_partial_hi(At11[index],At11L,elt_count);
+ vec_store_nta_partial_hi(At12[index],At12L,elt_count);
+ vec_store_nta_partial_hi(At13[index],At13L,elt_count);
+ vec_store_nta_partial_hi(At22[index],At22L,elt_count);
+ vec_store_nta_partial_hi(At23[index],At23L,elt_count);
+ vec_store_nta_partial_hi(At33[index],At33L,elt_count);
+ vec_store_nta_partial_hi(B1[index],B1L,elt_count);
+ vec_store_nta_partial_hi(B2[index],B2L,elt_count);
+ vec_store_nta_partial_hi(B3[index],B3L,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(gt11[index],gt11L,elt_count);
+ vec_store_nta_partial_hi(gt12[index],gt12L,elt_count);
+ vec_store_nta_partial_hi(gt13[index],gt13L,elt_count);
+ vec_store_nta_partial_hi(gt22[index],gt22L,elt_count);
+ vec_store_nta_partial_hi(gt23[index],gt23L,elt_count);
+ vec_store_nta_partial_hi(gt33[index],gt33L,elt_count);
+ vec_store_nta_partial_hi(phi[index],phiL,elt_count);
+ vec_store_nta_partial_hi(trK[index],trKL,elt_count);
+ vec_store_nta_partial_hi(Xt1[index],Xt1L,elt_count);
+ vec_store_nta_partial_hi(Xt2[index],Xt2L,elt_count);
+ vec_store_nta_partial_hi(Xt3[index],Xt3L,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(A[index],AL,elt_count);
+ vec_store_nta_partial_lo(alpha[index],alphaL,elt_count);
+ vec_store_nta_partial_lo(At11[index],At11L,elt_count);
+ vec_store_nta_partial_lo(At12[index],At12L,elt_count);
+ vec_store_nta_partial_lo(At13[index],At13L,elt_count);
+ vec_store_nta_partial_lo(At22[index],At22L,elt_count);
+ vec_store_nta_partial_lo(At23[index],At23L,elt_count);
+ vec_store_nta_partial_lo(At33[index],At33L,elt_count);
+ vec_store_nta_partial_lo(B1[index],B1L,elt_count);
+ vec_store_nta_partial_lo(B2[index],B2L,elt_count);
+ vec_store_nta_partial_lo(B3[index],B3L,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(gt11[index],gt11L,elt_count);
+ vec_store_nta_partial_lo(gt12[index],gt12L,elt_count);
+ vec_store_nta_partial_lo(gt13[index],gt13L,elt_count);
+ vec_store_nta_partial_lo(gt22[index],gt22L,elt_count);
+ vec_store_nta_partial_lo(gt23[index],gt23L,elt_count);
+ vec_store_nta_partial_lo(gt33[index],gt33L,elt_count);
+ vec_store_nta_partial_lo(phi[index],phiL,elt_count);
+ vec_store_nta_partial_lo(trK[index],trKL,elt_count);
+ vec_store_nta_partial_lo(Xt1[index],Xt1L,elt_count);
+ vec_store_nta_partial_lo(Xt2[index],Xt2L,elt_count);
+ vec_store_nta_partial_lo(Xt3[index],Xt3L,elt_count);
+ break;
+ }
+ vec_store_nta(A[index],AL);
+ vec_store_nta(alpha[index],alphaL);
+ vec_store_nta(At11[index],At11L);
+ vec_store_nta(At12[index],At12L);
+ vec_store_nta(At13[index],At13L);
+ vec_store_nta(At22[index],At22L);
+ vec_store_nta(At23[index],At23L);
+ vec_store_nta(At33[index],At33L);
+ vec_store_nta(B1[index],B1L);
+ vec_store_nta(B2[index],B2L);
+ vec_store_nta(B3[index],B3L);
+ vec_store_nta(beta1[index],beta1L);
+ vec_store_nta(beta2[index],beta2L);
+ vec_store_nta(beta3[index],beta3L);
+ vec_store_nta(gt11[index],gt11L);
+ vec_store_nta(gt12[index],gt12L);
+ vec_store_nta(gt13[index],gt13L);
+ vec_store_nta(gt22[index],gt22L);
+ vec_store_nta(gt23[index],gt23L);
+ vec_store_nta(gt33[index],gt33L);
+ vec_store_nta(phi[index],phiL);
+ vec_store_nta(trK[index],trKL);
+ vec_store_nta(Xt1[index],Xt1L);
+ vec_store_nta(Xt2[index],Xt2L);
+ vec_store_nta(Xt3[index],Xt3L);
}
- LC_ENDLOOP3 (ML_BSSN_MP_boundary);
+ LC_ENDLOOP3VEC (ML_BSSN_MP_boundary);
}
extern "C" void ML_BSSN_MP_boundary(CCTK_ARGUMENTS)
@@ -272,5 +442,39 @@ extern "C" void ML_BSSN_MP_boundary(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_boundary_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_MP_boundary_calc_every != ML_BSSN_MP_boundary_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN_MP::ML_curv","ML_BSSN_MP::ML_dtlapse","ML_BSSN_MP::ML_dtshift","ML_BSSN_MP::ML_Gamma","ML_BSSN_MP::ML_lapse","ML_BSSN_MP::ML_log_confac","ML_BSSN_MP::ML_metric","ML_BSSN_MP::ML_shift","ML_BSSN_MP::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_boundary", 9, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverBoundaryWithGhosts(cctkGH, &ML_BSSN_MP_boundary_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_MP_boundary_Body");
+ }
}
diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_constraints1.cc b/ML_BSSN_MP/src/ML_BSSN_MP_constraints1.cc
index 12e18bb..abfb4bb 100644
--- a/ML_BSSN_MP/src/ML_BSSN_MP_constraints1.cc
+++ b/ML_BSSN_MP/src/ML_BSSN_MP_constraints1.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_MP_constraints1_SelectBCs(CCTK_ARGUMENTS)
{
@@ -33,7 +34,7 @@ extern "C" void ML_BSSN_MP_constraints1_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_BSSN_MP_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_MP_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;
@@ -41,21 +42,6 @@ static void ML_BSSN_MP_constraints1_Body(cGH const * restrict const cctkGH, int
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_constraints1_Body");
- }
-
- if (cctk_iteration % ML_BSSN_MP_constraints1_calc_every != ML_BSSN_MP_constraints1_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN_MP::ML_curv","ML_BSSN_MP::ML_Gamma","ML_BSSN_MP::ML_Ham","ML_BSSN_MP::ML_lapse","ML_BSSN_MP::ML_log_confac","ML_BSSN_MP::ML_metric","ML_BSSN_MP::ML_shift","ML_BSSN_MP::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_constraints1", 8, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_constraints1", 2, 2, 2);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -65,41 +51,102 @@ static void ML_BSSN_MP_constraints1_Body(cGH const * restrict const cctkGH, int
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const p1o24dx = 0.0416666666666666666666666666667*INV(dx);
- CCTK_REAL const p1o24dy = 0.0416666666666666666666666666667*INV(dy);
- CCTK_REAL const p1o24dz = 0.0416666666666666666666666666667*INV(dz);
- CCTK_REAL const p1o64dx = 0.015625*INV(dx);
- CCTK_REAL const p1o64dy = 0.015625*INV(dy);
- CCTK_REAL const p1o64dz = 0.015625*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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)
@@ -146,52 +193,61 @@ static void ML_BSSN_MP_constraints1_Body(cGH const * restrict const cctkGH, int
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_LOOP3 (ML_BSSN_MP_constraints1,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_MP_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 alphaL = alpha[index];
- CCTK_REAL At11L = At11[index];
- CCTK_REAL At12L = At12[index];
- CCTK_REAL At13L = At13[index];
- CCTK_REAL At22L = At22[index];
- CCTK_REAL At23L = At23[index];
- CCTK_REAL At33L = At33[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL gt11L = gt11[index];
- CCTK_REAL gt12L = gt12[index];
- CCTK_REAL gt13L = gt13[index];
- CCTK_REAL gt22L = gt22[index];
- CCTK_REAL gt23L = gt23[index];
- CCTK_REAL gt33L = gt33[index];
- CCTK_REAL phiL = phi[index];
- CCTK_REAL trKL = trK[index];
- CCTK_REAL Xt1L = Xt1[index];
- CCTK_REAL Xt2L = Xt2[index];
- CCTK_REAL Xt3L = Xt3[index];
-
- CCTK_REAL eTttL, eTtxL, eTtyL, eTtzL, eTxxL, eTxyL, eTxzL, eTyyL, eTyzL, eTzzL;
+ 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 = eTtt[index];
- eTtxL = eTtx[index];
- eTtyL = eTty[index];
- eTtzL = eTtz[index];
- eTxxL = eTxx[index];
- eTxyL = eTxy[index];
- eTxzL = eTxz[index];
- eTyyL = eTyy[index];
- eTyzL = eTyz[index];
- eTzzL = eTzz[index];
+ 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
{
@@ -207,736 +263,781 @@ static void ML_BSSN_MP_constraints1_Body(cGH const * restrict const cctkGH, int
eTzzL = ToReal(0.0);
}
- CCTK_REAL dJ111L, dJ112L, dJ113L, dJ122L, dJ123L, dJ133L, dJ211L, dJ212L, dJ213L, dJ222L, dJ223L, dJ233L, dJ311L, dJ312L, dJ313L, dJ322L, dJ323L, dJ333L, J11L, J12L, J13L, J21L, J22L, J23L, J31L, J32L, J33L;
+ 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 = dJ111[index];
- dJ112L = dJ112[index];
- dJ113L = dJ113[index];
- dJ122L = dJ122[index];
- dJ123L = dJ123[index];
- dJ133L = dJ133[index];
- dJ211L = dJ211[index];
- dJ212L = dJ212[index];
- dJ213L = dJ213[index];
- dJ222L = dJ222[index];
- dJ223L = dJ223[index];
- dJ233L = dJ233[index];
- dJ311L = dJ311[index];
- dJ312L = dJ312[index];
- dJ313L = dJ313[index];
- dJ322L = dJ322[index];
- dJ323L = dJ323[index];
- dJ333L = dJ333[index];
- J11L = J11[index];
- J12L = J12[index];
- J13L = J13[index];
- J21L = J21[index];
- J22L = J22[index];
- J23L = J23[index];
- J31L = J31[index];
- J32L = J32[index];
- J33L = J33[index];
+ dJ111L = vec_load(dJ111[index]);
+ dJ112L = vec_load(dJ112[index]);
+ dJ113L = vec_load(dJ113[index]);
+ dJ122L = vec_load(dJ122[index]);
+ dJ123L = vec_load(dJ123[index]);
+ dJ133L = vec_load(dJ133[index]);
+ dJ211L = vec_load(dJ211[index]);
+ dJ212L = vec_load(dJ212[index]);
+ dJ213L = vec_load(dJ213[index]);
+ dJ222L = vec_load(dJ222[index]);
+ dJ223L = vec_load(dJ223[index]);
+ dJ233L = vec_load(dJ233[index]);
+ dJ311L = vec_load(dJ311[index]);
+ dJ312L = vec_load(dJ312[index]);
+ dJ313L = vec_load(dJ313[index]);
+ dJ322L = vec_load(dJ322[index]);
+ dJ323L = vec_load(dJ323[index]);
+ dJ333L = vec_load(dJ333[index]);
+ J11L = vec_load(J11[index]);
+ J12L = vec_load(J12[index]);
+ J13L = vec_load(J13[index]);
+ J21L = vec_load(J21[index]);
+ J22L = vec_load(J22[index]);
+ J23L = vec_load(J23[index]);
+ J31L = vec_load(J31[index]);
+ J32L = vec_load(J32[index]);
+ J33L = vec_load(J33[index]);
}
/* Include user supplied include files */
/* Precompute derivatives */
- CCTK_REAL const PDstandardNth1gt11 = PDstandardNth1(&gt11[index]);
- CCTK_REAL const PDstandardNth2gt11 = PDstandardNth2(&gt11[index]);
- CCTK_REAL const PDstandardNth3gt11 = PDstandardNth3(&gt11[index]);
- CCTK_REAL const PDstandardNth11gt11 = PDstandardNth11(&gt11[index]);
- CCTK_REAL const PDstandardNth22gt11 = PDstandardNth22(&gt11[index]);
- CCTK_REAL const PDstandardNth33gt11 = PDstandardNth33(&gt11[index]);
- CCTK_REAL const PDstandardNth12gt11 = PDstandardNth12(&gt11[index]);
- CCTK_REAL const PDstandardNth13gt11 = PDstandardNth13(&gt11[index]);
- CCTK_REAL const PDstandardNth23gt11 = PDstandardNth23(&gt11[index]);
- CCTK_REAL const PDstandardNth1gt12 = PDstandardNth1(&gt12[index]);
- CCTK_REAL const PDstandardNth2gt12 = PDstandardNth2(&gt12[index]);
- CCTK_REAL const PDstandardNth3gt12 = PDstandardNth3(&gt12[index]);
- CCTK_REAL const PDstandardNth11gt12 = PDstandardNth11(&gt12[index]);
- CCTK_REAL const PDstandardNth22gt12 = PDstandardNth22(&gt12[index]);
- CCTK_REAL const PDstandardNth33gt12 = PDstandardNth33(&gt12[index]);
- CCTK_REAL const PDstandardNth12gt12 = PDstandardNth12(&gt12[index]);
- CCTK_REAL const PDstandardNth13gt12 = PDstandardNth13(&gt12[index]);
- CCTK_REAL const PDstandardNth23gt12 = PDstandardNth23(&gt12[index]);
- CCTK_REAL const PDstandardNth1gt13 = PDstandardNth1(&gt13[index]);
- CCTK_REAL const PDstandardNth2gt13 = PDstandardNth2(&gt13[index]);
- CCTK_REAL const PDstandardNth3gt13 = PDstandardNth3(&gt13[index]);
- CCTK_REAL const PDstandardNth11gt13 = PDstandardNth11(&gt13[index]);
- CCTK_REAL const PDstandardNth22gt13 = PDstandardNth22(&gt13[index]);
- CCTK_REAL const PDstandardNth33gt13 = PDstandardNth33(&gt13[index]);
- CCTK_REAL const PDstandardNth12gt13 = PDstandardNth12(&gt13[index]);
- CCTK_REAL const PDstandardNth13gt13 = PDstandardNth13(&gt13[index]);
- CCTK_REAL const PDstandardNth23gt13 = PDstandardNth23(&gt13[index]);
- CCTK_REAL const PDstandardNth1gt22 = PDstandardNth1(&gt22[index]);
- CCTK_REAL const PDstandardNth2gt22 = PDstandardNth2(&gt22[index]);
- CCTK_REAL const PDstandardNth3gt22 = PDstandardNth3(&gt22[index]);
- CCTK_REAL const PDstandardNth11gt22 = PDstandardNth11(&gt22[index]);
- CCTK_REAL const PDstandardNth22gt22 = PDstandardNth22(&gt22[index]);
- CCTK_REAL const PDstandardNth33gt22 = PDstandardNth33(&gt22[index]);
- CCTK_REAL const PDstandardNth12gt22 = PDstandardNth12(&gt22[index]);
- CCTK_REAL const PDstandardNth13gt22 = PDstandardNth13(&gt22[index]);
- CCTK_REAL const PDstandardNth23gt22 = PDstandardNth23(&gt22[index]);
- CCTK_REAL const PDstandardNth1gt23 = PDstandardNth1(&gt23[index]);
- CCTK_REAL const PDstandardNth2gt23 = PDstandardNth2(&gt23[index]);
- CCTK_REAL const PDstandardNth3gt23 = PDstandardNth3(&gt23[index]);
- CCTK_REAL const PDstandardNth11gt23 = PDstandardNth11(&gt23[index]);
- CCTK_REAL const PDstandardNth22gt23 = PDstandardNth22(&gt23[index]);
- CCTK_REAL const PDstandardNth33gt23 = PDstandardNth33(&gt23[index]);
- CCTK_REAL const PDstandardNth12gt23 = PDstandardNth12(&gt23[index]);
- CCTK_REAL const PDstandardNth13gt23 = PDstandardNth13(&gt23[index]);
- CCTK_REAL const PDstandardNth23gt23 = PDstandardNth23(&gt23[index]);
- CCTK_REAL const PDstandardNth1gt33 = PDstandardNth1(&gt33[index]);
- CCTK_REAL const PDstandardNth2gt33 = PDstandardNth2(&gt33[index]);
- CCTK_REAL const PDstandardNth3gt33 = PDstandardNth3(&gt33[index]);
- CCTK_REAL const PDstandardNth11gt33 = PDstandardNth11(&gt33[index]);
- CCTK_REAL const PDstandardNth22gt33 = PDstandardNth22(&gt33[index]);
- CCTK_REAL const PDstandardNth33gt33 = PDstandardNth33(&gt33[index]);
- CCTK_REAL const PDstandardNth12gt33 = PDstandardNth12(&gt33[index]);
- CCTK_REAL const PDstandardNth13gt33 = PDstandardNth13(&gt33[index]);
- CCTK_REAL const PDstandardNth23gt33 = PDstandardNth23(&gt33[index]);
- CCTK_REAL const PDstandardNth1phi = PDstandardNth1(&phi[index]);
- CCTK_REAL const PDstandardNth2phi = PDstandardNth2(&phi[index]);
- CCTK_REAL const PDstandardNth3phi = PDstandardNth3(&phi[index]);
- CCTK_REAL const PDstandardNth11phi = PDstandardNth11(&phi[index]);
- CCTK_REAL const PDstandardNth22phi = PDstandardNth22(&phi[index]);
- CCTK_REAL const PDstandardNth33phi = PDstandardNth33(&phi[index]);
- CCTK_REAL const PDstandardNth12phi = PDstandardNth12(&phi[index]);
- CCTK_REAL const PDstandardNth13phi = PDstandardNth13(&phi[index]);
- CCTK_REAL const PDstandardNth23phi = PDstandardNth23(&phi[index]);
- CCTK_REAL const PDstandardNth1Xt1 = PDstandardNth1(&Xt1[index]);
- CCTK_REAL const PDstandardNth2Xt1 = PDstandardNth2(&Xt1[index]);
- CCTK_REAL const PDstandardNth3Xt1 = PDstandardNth3(&Xt1[index]);
- CCTK_REAL const PDstandardNth1Xt2 = PDstandardNth1(&Xt2[index]);
- CCTK_REAL const PDstandardNth2Xt2 = PDstandardNth2(&Xt2[index]);
- CCTK_REAL const PDstandardNth3Xt2 = PDstandardNth3(&Xt2[index]);
- CCTK_REAL const PDstandardNth1Xt3 = PDstandardNth1(&Xt3[index]);
- CCTK_REAL const PDstandardNth2Xt3 = PDstandardNth2(&Xt3[index]);
- CCTK_REAL const PDstandardNth3Xt3 = PDstandardNth3(&Xt3[index]);
+ 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 JacPDstandardNth11gt11;
- CCTK_REAL JacPDstandardNth11gt12;
- CCTK_REAL JacPDstandardNth11gt13;
- CCTK_REAL JacPDstandardNth11gt22;
- CCTK_REAL JacPDstandardNth11gt23;
- CCTK_REAL JacPDstandardNth11gt33;
- CCTK_REAL JacPDstandardNth11phi;
- CCTK_REAL JacPDstandardNth12gt11;
- CCTK_REAL JacPDstandardNth12gt12;
- CCTK_REAL JacPDstandardNth12gt13;
- CCTK_REAL JacPDstandardNth12gt22;
- CCTK_REAL JacPDstandardNth12gt23;
- CCTK_REAL JacPDstandardNth12gt33;
- CCTK_REAL JacPDstandardNth12phi;
- CCTK_REAL JacPDstandardNth13gt11;
- CCTK_REAL JacPDstandardNth13gt12;
- CCTK_REAL JacPDstandardNth13gt13;
- CCTK_REAL JacPDstandardNth13gt22;
- CCTK_REAL JacPDstandardNth13gt23;
- CCTK_REAL JacPDstandardNth13gt33;
- CCTK_REAL JacPDstandardNth13phi;
- CCTK_REAL JacPDstandardNth1gt11;
- CCTK_REAL JacPDstandardNth1gt12;
- CCTK_REAL JacPDstandardNth1gt13;
- CCTK_REAL JacPDstandardNth1gt22;
- CCTK_REAL JacPDstandardNth1gt23;
- CCTK_REAL JacPDstandardNth1gt33;
- CCTK_REAL JacPDstandardNth1phi;
- CCTK_REAL JacPDstandardNth1Xt1;
- CCTK_REAL JacPDstandardNth1Xt2;
- CCTK_REAL JacPDstandardNth1Xt3;
- CCTK_REAL JacPDstandardNth21gt11;
- CCTK_REAL JacPDstandardNth21gt12;
- CCTK_REAL JacPDstandardNth21gt13;
- CCTK_REAL JacPDstandardNth21gt22;
- CCTK_REAL JacPDstandardNth21gt23;
- CCTK_REAL JacPDstandardNth21gt33;
- CCTK_REAL JacPDstandardNth22gt11;
- CCTK_REAL JacPDstandardNth22gt12;
- CCTK_REAL JacPDstandardNth22gt13;
- CCTK_REAL JacPDstandardNth22gt22;
- CCTK_REAL JacPDstandardNth22gt23;
- CCTK_REAL JacPDstandardNth22gt33;
- CCTK_REAL JacPDstandardNth22phi;
- CCTK_REAL JacPDstandardNth23gt11;
- CCTK_REAL JacPDstandardNth23gt12;
- CCTK_REAL JacPDstandardNth23gt13;
- CCTK_REAL JacPDstandardNth23gt22;
- CCTK_REAL JacPDstandardNth23gt23;
- CCTK_REAL JacPDstandardNth23gt33;
- CCTK_REAL JacPDstandardNth23phi;
- CCTK_REAL JacPDstandardNth2gt11;
- CCTK_REAL JacPDstandardNth2gt12;
- CCTK_REAL JacPDstandardNth2gt13;
- CCTK_REAL JacPDstandardNth2gt22;
- CCTK_REAL JacPDstandardNth2gt23;
- CCTK_REAL JacPDstandardNth2gt33;
- CCTK_REAL JacPDstandardNth2phi;
- CCTK_REAL JacPDstandardNth2Xt1;
- CCTK_REAL JacPDstandardNth2Xt2;
- CCTK_REAL JacPDstandardNth2Xt3;
- CCTK_REAL JacPDstandardNth31gt11;
- CCTK_REAL JacPDstandardNth31gt12;
- CCTK_REAL JacPDstandardNth31gt13;
- CCTK_REAL JacPDstandardNth31gt22;
- CCTK_REAL JacPDstandardNth31gt23;
- CCTK_REAL JacPDstandardNth31gt33;
- CCTK_REAL JacPDstandardNth32gt11;
- CCTK_REAL JacPDstandardNth32gt12;
- CCTK_REAL JacPDstandardNth32gt13;
- CCTK_REAL JacPDstandardNth32gt22;
- CCTK_REAL JacPDstandardNth32gt23;
- CCTK_REAL JacPDstandardNth32gt33;
- CCTK_REAL JacPDstandardNth33gt11;
- CCTK_REAL JacPDstandardNth33gt12;
- CCTK_REAL JacPDstandardNth33gt13;
- CCTK_REAL JacPDstandardNth33gt22;
- CCTK_REAL JacPDstandardNth33gt23;
- CCTK_REAL JacPDstandardNth33gt33;
- CCTK_REAL JacPDstandardNth33phi;
- CCTK_REAL JacPDstandardNth3gt11;
- CCTK_REAL JacPDstandardNth3gt12;
- CCTK_REAL JacPDstandardNth3gt13;
- CCTK_REAL JacPDstandardNth3gt22;
- CCTK_REAL JacPDstandardNth3gt23;
- CCTK_REAL JacPDstandardNth3gt33;
- CCTK_REAL JacPDstandardNth3phi;
- CCTK_REAL JacPDstandardNth3Xt1;
- CCTK_REAL JacPDstandardNth3Xt2;
- CCTK_REAL JacPDstandardNth3Xt3;
+ 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 = J11L*PDstandardNth1gt11 +
- J21L*PDstandardNth2gt11 + J31L*PDstandardNth3gt11;
+ 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))))))));
- JacPDstandardNth1gt12 = J11L*PDstandardNth1gt12 +
- J21L*PDstandardNth2gt12 + J31L*PDstandardNth3gt12;
+ 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))))))));
- JacPDstandardNth1gt13 = J11L*PDstandardNth1gt13 +
- J21L*PDstandardNth2gt13 + J31L*PDstandardNth3gt13;
+ 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))))))));
- JacPDstandardNth1gt22 = J11L*PDstandardNth1gt22 +
- J21L*PDstandardNth2gt22 + J31L*PDstandardNth3gt22;
+ 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))))))));
- JacPDstandardNth1gt23 = J11L*PDstandardNth1gt23 +
- J21L*PDstandardNth2gt23 + J31L*PDstandardNth3gt23;
+ 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))))))));
- JacPDstandardNth1gt33 = J11L*PDstandardNth1gt33 +
- J21L*PDstandardNth2gt33 + J31L*PDstandardNth3gt33;
+ 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))))))));
- JacPDstandardNth1phi = J11L*PDstandardNth1phi + J21L*PDstandardNth2phi
- + J31L*PDstandardNth3phi;
+ 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)))))));
- JacPDstandardNth1Xt1 = J11L*PDstandardNth1Xt1 + J21L*PDstandardNth2Xt1
- + J31L*PDstandardNth3Xt1;
+ 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)))))));
- JacPDstandardNth1Xt2 = J11L*PDstandardNth1Xt2 + J21L*PDstandardNth2Xt2
- + J31L*PDstandardNth3Xt2;
+ 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)))))));
- JacPDstandardNth1Xt3 = J11L*PDstandardNth1Xt3 + J21L*PDstandardNth2Xt3
- + J31L*PDstandardNth3Xt3;
+ 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)))))));
- JacPDstandardNth2gt11 = J12L*PDstandardNth1gt11 +
- J22L*PDstandardNth2gt11 + J32L*PDstandardNth3gt11;
+ 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)))))));
- JacPDstandardNth2gt12 = J12L*PDstandardNth1gt12 +
- J22L*PDstandardNth2gt12 + J32L*PDstandardNth3gt12;
+ 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)))))));
- JacPDstandardNth2gt13 = J12L*PDstandardNth1gt13 +
- J22L*PDstandardNth2gt13 + J32L*PDstandardNth3gt13;
+ 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)))))));
- JacPDstandardNth2gt22 = J12L*PDstandardNth1gt22 +
- J22L*PDstandardNth2gt22 + J32L*PDstandardNth3gt22;
+ 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)))))));
- JacPDstandardNth2gt23 = J12L*PDstandardNth1gt23 +
- J22L*PDstandardNth2gt23 + J32L*PDstandardNth3gt23;
+ 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)))))));
- JacPDstandardNth2gt33 = J12L*PDstandardNth1gt33 +
- J22L*PDstandardNth2gt33 + J32L*PDstandardNth3gt33;
+ 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)))))));
- JacPDstandardNth2phi = J12L*PDstandardNth1phi + J22L*PDstandardNth2phi
- + J32L*PDstandardNth3phi;
+ 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)))))));
- JacPDstandardNth2Xt1 = J12L*PDstandardNth1Xt1 + J22L*PDstandardNth2Xt1
- + J32L*PDstandardNth3Xt1;
+ 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)))))));
- JacPDstandardNth2Xt2 = J12L*PDstandardNth1Xt2 + J22L*PDstandardNth2Xt2
- + J32L*PDstandardNth3Xt2;
+ 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)))))));
- JacPDstandardNth2Xt3 = J12L*PDstandardNth1Xt3 + J22L*PDstandardNth2Xt3
- + J32L*PDstandardNth3Xt3;
+ 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)))))));
- JacPDstandardNth3gt11 = J13L*PDstandardNth1gt11 +
- J23L*PDstandardNth2gt11 + J33L*PDstandardNth3gt11;
+ 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)))))));
- JacPDstandardNth3gt12 = J13L*PDstandardNth1gt12 +
- J23L*PDstandardNth2gt12 + J33L*PDstandardNth3gt12;
+ 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)))))));
- JacPDstandardNth3gt13 = J13L*PDstandardNth1gt13 +
- J23L*PDstandardNth2gt13 + J33L*PDstandardNth3gt13;
+ 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)))))));
- JacPDstandardNth3gt22 = J13L*PDstandardNth1gt22 +
- J23L*PDstandardNth2gt22 + J33L*PDstandardNth3gt22;
+ 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)))))));
- JacPDstandardNth3gt23 = J13L*PDstandardNth1gt23 +
- J23L*PDstandardNth2gt23 + J33L*PDstandardNth3gt23;
+ 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)))))));
- JacPDstandardNth3gt33 = J13L*PDstandardNth1gt33 +
- J23L*PDstandardNth2gt33 + J33L*PDstandardNth3gt33;
+ 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)))))));
- JacPDstandardNth3phi = J13L*PDstandardNth1phi + J23L*PDstandardNth2phi
- + J33L*PDstandardNth3phi;
+ 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)))))));
- JacPDstandardNth3Xt1 = J13L*PDstandardNth1Xt1 + J23L*PDstandardNth2Xt1
- + J33L*PDstandardNth3Xt1;
-
- JacPDstandardNth3Xt2 = J13L*PDstandardNth1Xt2 + J23L*PDstandardNth2Xt2
- + J33L*PDstandardNth3Xt2;
+ 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)))))));
- JacPDstandardNth3Xt3 = J13L*PDstandardNth1Xt3 + J23L*PDstandardNth2Xt3
- + J33L*PDstandardNth3Xt3;
-
- JacPDstandardNth11gt11 = dJ111L*PDstandardNth1gt11 +
- 2*(J11L*(J21L*PDstandardNth12gt11 + J31L*PDstandardNth13gt11) +
- J21L*J31L*PDstandardNth23gt11) + dJ211L*PDstandardNth2gt11 +
- dJ311L*PDstandardNth3gt11 + PDstandardNth11gt11*SQR(J11L) +
- PDstandardNth22gt11*SQR(J21L) + PDstandardNth33gt11*SQR(J31L);
-
- JacPDstandardNth11gt12 = dJ111L*PDstandardNth1gt12 +
- 2*(J11L*(J21L*PDstandardNth12gt12 + J31L*PDstandardNth13gt12) +
- J21L*J31L*PDstandardNth23gt12) + dJ211L*PDstandardNth2gt12 +
- dJ311L*PDstandardNth3gt12 + PDstandardNth11gt12*SQR(J11L) +
- PDstandardNth22gt12*SQR(J21L) + PDstandardNth33gt12*SQR(J31L);
-
- JacPDstandardNth11gt13 = dJ111L*PDstandardNth1gt13 +
- 2*(J11L*(J21L*PDstandardNth12gt13 + J31L*PDstandardNth13gt13) +
- J21L*J31L*PDstandardNth23gt13) + dJ211L*PDstandardNth2gt13 +
- dJ311L*PDstandardNth3gt13 + PDstandardNth11gt13*SQR(J11L) +
- PDstandardNth22gt13*SQR(J21L) + PDstandardNth33gt13*SQR(J31L);
-
- JacPDstandardNth11gt22 = dJ111L*PDstandardNth1gt22 +
- 2*(J11L*(J21L*PDstandardNth12gt22 + J31L*PDstandardNth13gt22) +
- J21L*J31L*PDstandardNth23gt22) + dJ211L*PDstandardNth2gt22 +
- dJ311L*PDstandardNth3gt22 + PDstandardNth11gt22*SQR(J11L) +
- PDstandardNth22gt22*SQR(J21L) + PDstandardNth33gt22*SQR(J31L);
-
- JacPDstandardNth11gt23 = dJ111L*PDstandardNth1gt23 +
- 2*(J11L*(J21L*PDstandardNth12gt23 + J31L*PDstandardNth13gt23) +
- J21L*J31L*PDstandardNth23gt23) + dJ211L*PDstandardNth2gt23 +
- dJ311L*PDstandardNth3gt23 + PDstandardNth11gt23*SQR(J11L) +
- PDstandardNth22gt23*SQR(J21L) + PDstandardNth33gt23*SQR(J31L);
-
- JacPDstandardNth11gt33 = dJ111L*PDstandardNth1gt33 +
- 2*(J11L*(J21L*PDstandardNth12gt33 + J31L*PDstandardNth13gt33) +
- J21L*J31L*PDstandardNth23gt33) + dJ211L*PDstandardNth2gt33 +
- dJ311L*PDstandardNth3gt33 + PDstandardNth11gt33*SQR(J11L) +
- PDstandardNth22gt33*SQR(J21L) + PDstandardNth33gt33*SQR(J31L);
-
- JacPDstandardNth11phi = dJ111L*PDstandardNth1phi +
- 2*(J11L*(J21L*PDstandardNth12phi + J31L*PDstandardNth13phi) +
- J21L*J31L*PDstandardNth23phi) + dJ211L*PDstandardNth2phi +
- dJ311L*PDstandardNth3phi + PDstandardNth11phi*SQR(J11L) +
- PDstandardNth22phi*SQR(J21L) + PDstandardNth33phi*SQR(J31L);
-
- JacPDstandardNth22gt11 = dJ122L*PDstandardNth1gt11 +
- 2*(J12L*(J22L*PDstandardNth12gt11 + J32L*PDstandardNth13gt11) +
- J22L*J32L*PDstandardNth23gt11) + dJ222L*PDstandardNth2gt11 +
- dJ322L*PDstandardNth3gt11 + PDstandardNth11gt11*SQR(J12L) +
- PDstandardNth22gt11*SQR(J22L) + PDstandardNth33gt11*SQR(J32L);
-
- JacPDstandardNth22gt12 = dJ122L*PDstandardNth1gt12 +
- 2*(J12L*(J22L*PDstandardNth12gt12 + J32L*PDstandardNth13gt12) +
- J22L*J32L*PDstandardNth23gt12) + dJ222L*PDstandardNth2gt12 +
- dJ322L*PDstandardNth3gt12 + PDstandardNth11gt12*SQR(J12L) +
- PDstandardNth22gt12*SQR(J22L) + PDstandardNth33gt12*SQR(J32L);
-
- JacPDstandardNth22gt13 = dJ122L*PDstandardNth1gt13 +
- 2*(J12L*(J22L*PDstandardNth12gt13 + J32L*PDstandardNth13gt13) +
- J22L*J32L*PDstandardNth23gt13) + dJ222L*PDstandardNth2gt13 +
- dJ322L*PDstandardNth3gt13 + PDstandardNth11gt13*SQR(J12L) +
- PDstandardNth22gt13*SQR(J22L) + PDstandardNth33gt13*SQR(J32L);
-
- JacPDstandardNth22gt22 = dJ122L*PDstandardNth1gt22 +
- 2*(J12L*(J22L*PDstandardNth12gt22 + J32L*PDstandardNth13gt22) +
- J22L*J32L*PDstandardNth23gt22) + dJ222L*PDstandardNth2gt22 +
- dJ322L*PDstandardNth3gt22 + PDstandardNth11gt22*SQR(J12L) +
- PDstandardNth22gt22*SQR(J22L) + PDstandardNth33gt22*SQR(J32L);
-
- JacPDstandardNth22gt23 = dJ122L*PDstandardNth1gt23 +
- 2*(J12L*(J22L*PDstandardNth12gt23 + J32L*PDstandardNth13gt23) +
- J22L*J32L*PDstandardNth23gt23) + dJ222L*PDstandardNth2gt23 +
- dJ322L*PDstandardNth3gt23 + PDstandardNth11gt23*SQR(J12L) +
- PDstandardNth22gt23*SQR(J22L) + PDstandardNth33gt23*SQR(J32L);
-
- JacPDstandardNth22gt33 = dJ122L*PDstandardNth1gt33 +
- 2*(J12L*(J22L*PDstandardNth12gt33 + J32L*PDstandardNth13gt33) +
- J22L*J32L*PDstandardNth23gt33) + dJ222L*PDstandardNth2gt33 +
- dJ322L*PDstandardNth3gt33 + PDstandardNth11gt33*SQR(J12L) +
- PDstandardNth22gt33*SQR(J22L) + PDstandardNth33gt33*SQR(J32L);
-
- JacPDstandardNth22phi = dJ122L*PDstandardNth1phi +
- 2*(J12L*(J22L*PDstandardNth12phi + J32L*PDstandardNth13phi) +
- J22L*J32L*PDstandardNth23phi) + dJ222L*PDstandardNth2phi +
- dJ322L*PDstandardNth3phi + PDstandardNth11phi*SQR(J12L) +
- PDstandardNth22phi*SQR(J22L) + PDstandardNth33phi*SQR(J32L);
-
- JacPDstandardNth33gt11 = dJ133L*PDstandardNth1gt11 +
- 2*(J13L*(J23L*PDstandardNth12gt11 + J33L*PDstandardNth13gt11) +
- J23L*J33L*PDstandardNth23gt11) + dJ233L*PDstandardNth2gt11 +
- dJ333L*PDstandardNth3gt11 + PDstandardNth11gt11*SQR(J13L) +
- PDstandardNth22gt11*SQR(J23L) + PDstandardNth33gt11*SQR(J33L);
-
- JacPDstandardNth33gt12 = dJ133L*PDstandardNth1gt12 +
- 2*(J13L*(J23L*PDstandardNth12gt12 + J33L*PDstandardNth13gt12) +
- J23L*J33L*PDstandardNth23gt12) + dJ233L*PDstandardNth2gt12 +
- dJ333L*PDstandardNth3gt12 + PDstandardNth11gt12*SQR(J13L) +
- PDstandardNth22gt12*SQR(J23L) + PDstandardNth33gt12*SQR(J33L);
-
- JacPDstandardNth33gt13 = dJ133L*PDstandardNth1gt13 +
- 2*(J13L*(J23L*PDstandardNth12gt13 + J33L*PDstandardNth13gt13) +
- J23L*J33L*PDstandardNth23gt13) + dJ233L*PDstandardNth2gt13 +
- dJ333L*PDstandardNth3gt13 + PDstandardNth11gt13*SQR(J13L) +
- PDstandardNth22gt13*SQR(J23L) + PDstandardNth33gt13*SQR(J33L);
-
- JacPDstandardNth33gt22 = dJ133L*PDstandardNth1gt22 +
- 2*(J13L*(J23L*PDstandardNth12gt22 + J33L*PDstandardNth13gt22) +
- J23L*J33L*PDstandardNth23gt22) + dJ233L*PDstandardNth2gt22 +
- dJ333L*PDstandardNth3gt22 + PDstandardNth11gt22*SQR(J13L) +
- PDstandardNth22gt22*SQR(J23L) + PDstandardNth33gt22*SQR(J33L);
-
- JacPDstandardNth33gt23 = dJ133L*PDstandardNth1gt23 +
- 2*(J13L*(J23L*PDstandardNth12gt23 + J33L*PDstandardNth13gt23) +
- J23L*J33L*PDstandardNth23gt23) + dJ233L*PDstandardNth2gt23 +
- dJ333L*PDstandardNth3gt23 + PDstandardNth11gt23*SQR(J13L) +
- PDstandardNth22gt23*SQR(J23L) + PDstandardNth33gt23*SQR(J33L);
-
- JacPDstandardNth33gt33 = dJ133L*PDstandardNth1gt33 +
- 2*(J13L*(J23L*PDstandardNth12gt33 + J33L*PDstandardNth13gt33) +
- J23L*J33L*PDstandardNth23gt33) + dJ233L*PDstandardNth2gt33 +
- dJ333L*PDstandardNth3gt33 + PDstandardNth11gt33*SQR(J13L) +
- PDstandardNth22gt33*SQR(J23L) + PDstandardNth33gt33*SQR(J33L);
-
- JacPDstandardNth33phi = dJ133L*PDstandardNth1phi +
- 2*(J13L*(J23L*PDstandardNth12phi + J33L*PDstandardNth13phi) +
- J23L*J33L*PDstandardNth23phi) + dJ233L*PDstandardNth2phi +
- dJ333L*PDstandardNth3phi + PDstandardNth11phi*SQR(J13L) +
- PDstandardNth22phi*SQR(J23L) + PDstandardNth33phi*SQR(J33L);
-
- JacPDstandardNth12gt11 = J12L*(J11L*PDstandardNth11gt11 +
- J21L*PDstandardNth12gt11 + J31L*PDstandardNth13gt11) +
- J11L*(J22L*PDstandardNth12gt11 + J32L*PDstandardNth13gt11) +
- dJ112L*PDstandardNth1gt11 + J22L*(J21L*PDstandardNth22gt11 +
- J31L*PDstandardNth23gt11) + dJ212L*PDstandardNth2gt11 +
- J32L*(J21L*PDstandardNth23gt11 + J31L*PDstandardNth33gt11) +
- dJ312L*PDstandardNth3gt11;
-
- JacPDstandardNth12gt12 = J12L*(J11L*PDstandardNth11gt12 +
- J21L*PDstandardNth12gt12 + J31L*PDstandardNth13gt12) +
- J11L*(J22L*PDstandardNth12gt12 + J32L*PDstandardNth13gt12) +
- dJ112L*PDstandardNth1gt12 + J22L*(J21L*PDstandardNth22gt12 +
- J31L*PDstandardNth23gt12) + dJ212L*PDstandardNth2gt12 +
- J32L*(J21L*PDstandardNth23gt12 + J31L*PDstandardNth33gt12) +
- dJ312L*PDstandardNth3gt12;
-
- JacPDstandardNth12gt13 = J12L*(J11L*PDstandardNth11gt13 +
- J21L*PDstandardNth12gt13 + J31L*PDstandardNth13gt13) +
- J11L*(J22L*PDstandardNth12gt13 + J32L*PDstandardNth13gt13) +
- dJ112L*PDstandardNth1gt13 + J22L*(J21L*PDstandardNth22gt13 +
- J31L*PDstandardNth23gt13) + dJ212L*PDstandardNth2gt13 +
- J32L*(J21L*PDstandardNth23gt13 + J31L*PDstandardNth33gt13) +
- dJ312L*PDstandardNth3gt13;
-
- JacPDstandardNth12gt22 = J12L*(J11L*PDstandardNth11gt22 +
- J21L*PDstandardNth12gt22 + J31L*PDstandardNth13gt22) +
- J11L*(J22L*PDstandardNth12gt22 + J32L*PDstandardNth13gt22) +
- dJ112L*PDstandardNth1gt22 + J22L*(J21L*PDstandardNth22gt22 +
- J31L*PDstandardNth23gt22) + dJ212L*PDstandardNth2gt22 +
- J32L*(J21L*PDstandardNth23gt22 + J31L*PDstandardNth33gt22) +
- dJ312L*PDstandardNth3gt22;
-
- JacPDstandardNth12gt23 = J12L*(J11L*PDstandardNth11gt23 +
- J21L*PDstandardNth12gt23 + J31L*PDstandardNth13gt23) +
- J11L*(J22L*PDstandardNth12gt23 + J32L*PDstandardNth13gt23) +
- dJ112L*PDstandardNth1gt23 + J22L*(J21L*PDstandardNth22gt23 +
- J31L*PDstandardNth23gt23) + dJ212L*PDstandardNth2gt23 +
- J32L*(J21L*PDstandardNth23gt23 + J31L*PDstandardNth33gt23) +
- dJ312L*PDstandardNth3gt23;
-
- JacPDstandardNth12gt33 = J12L*(J11L*PDstandardNth11gt33 +
- J21L*PDstandardNth12gt33 + J31L*PDstandardNth13gt33) +
- J11L*(J22L*PDstandardNth12gt33 + J32L*PDstandardNth13gt33) +
- dJ112L*PDstandardNth1gt33 + J22L*(J21L*PDstandardNth22gt33 +
- J31L*PDstandardNth23gt33) + dJ212L*PDstandardNth2gt33 +
- J32L*(J21L*PDstandardNth23gt33 + J31L*PDstandardNth33gt33) +
- dJ312L*PDstandardNth3gt33;
-
- JacPDstandardNth12phi = J12L*(J11L*PDstandardNth11phi +
- J21L*PDstandardNth12phi + J31L*PDstandardNth13phi) +
- J11L*(J22L*PDstandardNth12phi + J32L*PDstandardNth13phi) +
- dJ112L*PDstandardNth1phi + J22L*(J21L*PDstandardNth22phi +
- J31L*PDstandardNth23phi) + dJ212L*PDstandardNth2phi +
- J32L*(J21L*PDstandardNth23phi + J31L*PDstandardNth33phi) +
- dJ312L*PDstandardNth3phi;
-
- JacPDstandardNth13gt11 = J13L*(J11L*PDstandardNth11gt11 +
- J21L*PDstandardNth12gt11 + J31L*PDstandardNth13gt11) +
- J11L*(J23L*PDstandardNth12gt11 + J33L*PDstandardNth13gt11) +
- dJ113L*PDstandardNth1gt11 + J23L*(J21L*PDstandardNth22gt11 +
- J31L*PDstandardNth23gt11) + dJ213L*PDstandardNth2gt11 +
- J33L*(J21L*PDstandardNth23gt11 + J31L*PDstandardNth33gt11) +
- dJ313L*PDstandardNth3gt11;
-
- JacPDstandardNth13gt12 = J13L*(J11L*PDstandardNth11gt12 +
- J21L*PDstandardNth12gt12 + J31L*PDstandardNth13gt12) +
- J11L*(J23L*PDstandardNth12gt12 + J33L*PDstandardNth13gt12) +
- dJ113L*PDstandardNth1gt12 + J23L*(J21L*PDstandardNth22gt12 +
- J31L*PDstandardNth23gt12) + dJ213L*PDstandardNth2gt12 +
- J33L*(J21L*PDstandardNth23gt12 + J31L*PDstandardNth33gt12) +
- dJ313L*PDstandardNth3gt12;
-
- JacPDstandardNth13gt13 = J13L*(J11L*PDstandardNth11gt13 +
- J21L*PDstandardNth12gt13 + J31L*PDstandardNth13gt13) +
- J11L*(J23L*PDstandardNth12gt13 + J33L*PDstandardNth13gt13) +
- dJ113L*PDstandardNth1gt13 + J23L*(J21L*PDstandardNth22gt13 +
- J31L*PDstandardNth23gt13) + dJ213L*PDstandardNth2gt13 +
- J33L*(J21L*PDstandardNth23gt13 + J31L*PDstandardNth33gt13) +
- dJ313L*PDstandardNth3gt13;
-
- JacPDstandardNth13gt22 = J13L*(J11L*PDstandardNth11gt22 +
- J21L*PDstandardNth12gt22 + J31L*PDstandardNth13gt22) +
- J11L*(J23L*PDstandardNth12gt22 + J33L*PDstandardNth13gt22) +
- dJ113L*PDstandardNth1gt22 + J23L*(J21L*PDstandardNth22gt22 +
- J31L*PDstandardNth23gt22) + dJ213L*PDstandardNth2gt22 +
- J33L*(J21L*PDstandardNth23gt22 + J31L*PDstandardNth33gt22) +
- dJ313L*PDstandardNth3gt22;
-
- JacPDstandardNth13gt23 = J13L*(J11L*PDstandardNth11gt23 +
- J21L*PDstandardNth12gt23 + J31L*PDstandardNth13gt23) +
- J11L*(J23L*PDstandardNth12gt23 + J33L*PDstandardNth13gt23) +
- dJ113L*PDstandardNth1gt23 + J23L*(J21L*PDstandardNth22gt23 +
- J31L*PDstandardNth23gt23) + dJ213L*PDstandardNth2gt23 +
- J33L*(J21L*PDstandardNth23gt23 + J31L*PDstandardNth33gt23) +
- dJ313L*PDstandardNth3gt23;
-
- JacPDstandardNth13gt33 = J13L*(J11L*PDstandardNth11gt33 +
- J21L*PDstandardNth12gt33 + J31L*PDstandardNth13gt33) +
- J11L*(J23L*PDstandardNth12gt33 + J33L*PDstandardNth13gt33) +
- dJ113L*PDstandardNth1gt33 + J23L*(J21L*PDstandardNth22gt33 +
- J31L*PDstandardNth23gt33) + dJ213L*PDstandardNth2gt33 +
- J33L*(J21L*PDstandardNth23gt33 + J31L*PDstandardNth33gt33) +
- dJ313L*PDstandardNth3gt33;
-
- JacPDstandardNth13phi = J13L*(J11L*PDstandardNth11phi +
- J21L*PDstandardNth12phi + J31L*PDstandardNth13phi) +
- J11L*(J23L*PDstandardNth12phi + J33L*PDstandardNth13phi) +
- dJ113L*PDstandardNth1phi + J23L*(J21L*PDstandardNth22phi +
- J31L*PDstandardNth23phi) + dJ213L*PDstandardNth2phi +
- J33L*(J21L*PDstandardNth23phi + J31L*PDstandardNth33phi) +
- dJ313L*PDstandardNth3phi;
-
- JacPDstandardNth21gt11 = J12L*(J11L*PDstandardNth11gt11 +
- J21L*PDstandardNth12gt11 + J31L*PDstandardNth13gt11) +
- J11L*(J22L*PDstandardNth12gt11 + J32L*PDstandardNth13gt11) +
- dJ112L*PDstandardNth1gt11 + J22L*(J21L*PDstandardNth22gt11 +
- J31L*PDstandardNth23gt11) + dJ212L*PDstandardNth2gt11 +
- J32L*(J21L*PDstandardNth23gt11 + J31L*PDstandardNth33gt11) +
- dJ312L*PDstandardNth3gt11;
-
- JacPDstandardNth21gt12 = J12L*(J11L*PDstandardNth11gt12 +
- J21L*PDstandardNth12gt12 + J31L*PDstandardNth13gt12) +
- J11L*(J22L*PDstandardNth12gt12 + J32L*PDstandardNth13gt12) +
- dJ112L*PDstandardNth1gt12 + J22L*(J21L*PDstandardNth22gt12 +
- J31L*PDstandardNth23gt12) + dJ212L*PDstandardNth2gt12 +
- J32L*(J21L*PDstandardNth23gt12 + J31L*PDstandardNth33gt12) +
- dJ312L*PDstandardNth3gt12;
-
- JacPDstandardNth21gt13 = J12L*(J11L*PDstandardNth11gt13 +
- J21L*PDstandardNth12gt13 + J31L*PDstandardNth13gt13) +
- J11L*(J22L*PDstandardNth12gt13 + J32L*PDstandardNth13gt13) +
- dJ112L*PDstandardNth1gt13 + J22L*(J21L*PDstandardNth22gt13 +
- J31L*PDstandardNth23gt13) + dJ212L*PDstandardNth2gt13 +
- J32L*(J21L*PDstandardNth23gt13 + J31L*PDstandardNth33gt13) +
- dJ312L*PDstandardNth3gt13;
-
- JacPDstandardNth21gt22 = J12L*(J11L*PDstandardNth11gt22 +
- J21L*PDstandardNth12gt22 + J31L*PDstandardNth13gt22) +
- J11L*(J22L*PDstandardNth12gt22 + J32L*PDstandardNth13gt22) +
- dJ112L*PDstandardNth1gt22 + J22L*(J21L*PDstandardNth22gt22 +
- J31L*PDstandardNth23gt22) + dJ212L*PDstandardNth2gt22 +
- J32L*(J21L*PDstandardNth23gt22 + J31L*PDstandardNth33gt22) +
- dJ312L*PDstandardNth3gt22;
-
- JacPDstandardNth21gt23 = J12L*(J11L*PDstandardNth11gt23 +
- J21L*PDstandardNth12gt23 + J31L*PDstandardNth13gt23) +
- J11L*(J22L*PDstandardNth12gt23 + J32L*PDstandardNth13gt23) +
- dJ112L*PDstandardNth1gt23 + J22L*(J21L*PDstandardNth22gt23 +
- J31L*PDstandardNth23gt23) + dJ212L*PDstandardNth2gt23 +
- J32L*(J21L*PDstandardNth23gt23 + J31L*PDstandardNth33gt23) +
- dJ312L*PDstandardNth3gt23;
-
- JacPDstandardNth21gt33 = J12L*(J11L*PDstandardNth11gt33 +
- J21L*PDstandardNth12gt33 + J31L*PDstandardNth13gt33) +
- J11L*(J22L*PDstandardNth12gt33 + J32L*PDstandardNth13gt33) +
- dJ112L*PDstandardNth1gt33 + J22L*(J21L*PDstandardNth22gt33 +
- J31L*PDstandardNth23gt33) + dJ212L*PDstandardNth2gt33 +
- J32L*(J21L*PDstandardNth23gt33 + J31L*PDstandardNth33gt33) +
- dJ312L*PDstandardNth3gt33;
-
- JacPDstandardNth23gt11 = J13L*(J12L*PDstandardNth11gt11 +
- J22L*PDstandardNth12gt11 + J32L*PDstandardNth13gt11) +
- J12L*(J23L*PDstandardNth12gt11 + J33L*PDstandardNth13gt11) +
- dJ123L*PDstandardNth1gt11 + J23L*(J22L*PDstandardNth22gt11 +
- J32L*PDstandardNth23gt11) + dJ223L*PDstandardNth2gt11 +
- J33L*(J22L*PDstandardNth23gt11 + J32L*PDstandardNth33gt11) +
- dJ323L*PDstandardNth3gt11;
-
- JacPDstandardNth23gt12 = J13L*(J12L*PDstandardNth11gt12 +
- J22L*PDstandardNth12gt12 + J32L*PDstandardNth13gt12) +
- J12L*(J23L*PDstandardNth12gt12 + J33L*PDstandardNth13gt12) +
- dJ123L*PDstandardNth1gt12 + J23L*(J22L*PDstandardNth22gt12 +
- J32L*PDstandardNth23gt12) + dJ223L*PDstandardNth2gt12 +
- J33L*(J22L*PDstandardNth23gt12 + J32L*PDstandardNth33gt12) +
- dJ323L*PDstandardNth3gt12;
-
- JacPDstandardNth23gt13 = J13L*(J12L*PDstandardNth11gt13 +
- J22L*PDstandardNth12gt13 + J32L*PDstandardNth13gt13) +
- J12L*(J23L*PDstandardNth12gt13 + J33L*PDstandardNth13gt13) +
- dJ123L*PDstandardNth1gt13 + J23L*(J22L*PDstandardNth22gt13 +
- J32L*PDstandardNth23gt13) + dJ223L*PDstandardNth2gt13 +
- J33L*(J22L*PDstandardNth23gt13 + J32L*PDstandardNth33gt13) +
- dJ323L*PDstandardNth3gt13;
-
- JacPDstandardNth23gt22 = J13L*(J12L*PDstandardNth11gt22 +
- J22L*PDstandardNth12gt22 + J32L*PDstandardNth13gt22) +
- J12L*(J23L*PDstandardNth12gt22 + J33L*PDstandardNth13gt22) +
- dJ123L*PDstandardNth1gt22 + J23L*(J22L*PDstandardNth22gt22 +
- J32L*PDstandardNth23gt22) + dJ223L*PDstandardNth2gt22 +
- J33L*(J22L*PDstandardNth23gt22 + J32L*PDstandardNth33gt22) +
- dJ323L*PDstandardNth3gt22;
-
- JacPDstandardNth23gt23 = J13L*(J12L*PDstandardNth11gt23 +
- J22L*PDstandardNth12gt23 + J32L*PDstandardNth13gt23) +
- J12L*(J23L*PDstandardNth12gt23 + J33L*PDstandardNth13gt23) +
- dJ123L*PDstandardNth1gt23 + J23L*(J22L*PDstandardNth22gt23 +
- J32L*PDstandardNth23gt23) + dJ223L*PDstandardNth2gt23 +
- J33L*(J22L*PDstandardNth23gt23 + J32L*PDstandardNth33gt23) +
- dJ323L*PDstandardNth3gt23;
-
- JacPDstandardNth23gt33 = J13L*(J12L*PDstandardNth11gt33 +
- J22L*PDstandardNth12gt33 + J32L*PDstandardNth13gt33) +
- J12L*(J23L*PDstandardNth12gt33 + J33L*PDstandardNth13gt33) +
- dJ123L*PDstandardNth1gt33 + J23L*(J22L*PDstandardNth22gt33 +
- J32L*PDstandardNth23gt33) + dJ223L*PDstandardNth2gt33 +
- J33L*(J22L*PDstandardNth23gt33 + J32L*PDstandardNth33gt33) +
- dJ323L*PDstandardNth3gt33;
-
- JacPDstandardNth23phi = J13L*(J12L*PDstandardNth11phi +
- J22L*PDstandardNth12phi + J32L*PDstandardNth13phi) +
- J12L*(J23L*PDstandardNth12phi + J33L*PDstandardNth13phi) +
- dJ123L*PDstandardNth1phi + J23L*(J22L*PDstandardNth22phi +
- J32L*PDstandardNth23phi) + dJ223L*PDstandardNth2phi +
- J33L*(J22L*PDstandardNth23phi + J32L*PDstandardNth33phi) +
- dJ323L*PDstandardNth3phi;
-
- JacPDstandardNth31gt11 = J13L*(J11L*PDstandardNth11gt11 +
- J21L*PDstandardNth12gt11 + J31L*PDstandardNth13gt11) +
- J11L*(J23L*PDstandardNth12gt11 + J33L*PDstandardNth13gt11) +
- dJ113L*PDstandardNth1gt11 + J23L*(J21L*PDstandardNth22gt11 +
- J31L*PDstandardNth23gt11) + dJ213L*PDstandardNth2gt11 +
- J33L*(J21L*PDstandardNth23gt11 + J31L*PDstandardNth33gt11) +
- dJ313L*PDstandardNth3gt11;
-
- JacPDstandardNth31gt12 = J13L*(J11L*PDstandardNth11gt12 +
- J21L*PDstandardNth12gt12 + J31L*PDstandardNth13gt12) +
- J11L*(J23L*PDstandardNth12gt12 + J33L*PDstandardNth13gt12) +
- dJ113L*PDstandardNth1gt12 + J23L*(J21L*PDstandardNth22gt12 +
- J31L*PDstandardNth23gt12) + dJ213L*PDstandardNth2gt12 +
- J33L*(J21L*PDstandardNth23gt12 + J31L*PDstandardNth33gt12) +
- dJ313L*PDstandardNth3gt12;
-
- JacPDstandardNth31gt13 = J13L*(J11L*PDstandardNth11gt13 +
- J21L*PDstandardNth12gt13 + J31L*PDstandardNth13gt13) +
- J11L*(J23L*PDstandardNth12gt13 + J33L*PDstandardNth13gt13) +
- dJ113L*PDstandardNth1gt13 + J23L*(J21L*PDstandardNth22gt13 +
- J31L*PDstandardNth23gt13) + dJ213L*PDstandardNth2gt13 +
- J33L*(J21L*PDstandardNth23gt13 + J31L*PDstandardNth33gt13) +
- dJ313L*PDstandardNth3gt13;
-
- JacPDstandardNth31gt22 = J13L*(J11L*PDstandardNth11gt22 +
- J21L*PDstandardNth12gt22 + J31L*PDstandardNth13gt22) +
- J11L*(J23L*PDstandardNth12gt22 + J33L*PDstandardNth13gt22) +
- dJ113L*PDstandardNth1gt22 + J23L*(J21L*PDstandardNth22gt22 +
- J31L*PDstandardNth23gt22) + dJ213L*PDstandardNth2gt22 +
- J33L*(J21L*PDstandardNth23gt22 + J31L*PDstandardNth33gt22) +
- dJ313L*PDstandardNth3gt22;
-
- JacPDstandardNth31gt23 = J13L*(J11L*PDstandardNth11gt23 +
- J21L*PDstandardNth12gt23 + J31L*PDstandardNth13gt23) +
- J11L*(J23L*PDstandardNth12gt23 + J33L*PDstandardNth13gt23) +
- dJ113L*PDstandardNth1gt23 + J23L*(J21L*PDstandardNth22gt23 +
- J31L*PDstandardNth23gt23) + dJ213L*PDstandardNth2gt23 +
- J33L*(J21L*PDstandardNth23gt23 + J31L*PDstandardNth33gt23) +
- dJ313L*PDstandardNth3gt23;
-
- JacPDstandardNth31gt33 = J13L*(J11L*PDstandardNth11gt33 +
- J21L*PDstandardNth12gt33 + J31L*PDstandardNth13gt33) +
- J11L*(J23L*PDstandardNth12gt33 + J33L*PDstandardNth13gt33) +
- dJ113L*PDstandardNth1gt33 + J23L*(J21L*PDstandardNth22gt33 +
- J31L*PDstandardNth23gt33) + dJ213L*PDstandardNth2gt33 +
- J33L*(J21L*PDstandardNth23gt33 + J31L*PDstandardNth33gt33) +
- dJ313L*PDstandardNth3gt33;
-
- JacPDstandardNth32gt11 = J13L*(J12L*PDstandardNth11gt11 +
- J22L*PDstandardNth12gt11 + J32L*PDstandardNth13gt11) +
- J12L*(J23L*PDstandardNth12gt11 + J33L*PDstandardNth13gt11) +
- dJ123L*PDstandardNth1gt11 + J23L*(J22L*PDstandardNth22gt11 +
- J32L*PDstandardNth23gt11) + dJ223L*PDstandardNth2gt11 +
- J33L*(J22L*PDstandardNth23gt11 + J32L*PDstandardNth33gt11) +
- dJ323L*PDstandardNth3gt11;
-
- JacPDstandardNth32gt12 = J13L*(J12L*PDstandardNth11gt12 +
- J22L*PDstandardNth12gt12 + J32L*PDstandardNth13gt12) +
- J12L*(J23L*PDstandardNth12gt12 + J33L*PDstandardNth13gt12) +
- dJ123L*PDstandardNth1gt12 + J23L*(J22L*PDstandardNth22gt12 +
- J32L*PDstandardNth23gt12) + dJ223L*PDstandardNth2gt12 +
- J33L*(J22L*PDstandardNth23gt12 + J32L*PDstandardNth33gt12) +
- dJ323L*PDstandardNth3gt12;
-
- JacPDstandardNth32gt13 = J13L*(J12L*PDstandardNth11gt13 +
- J22L*PDstandardNth12gt13 + J32L*PDstandardNth13gt13) +
- J12L*(J23L*PDstandardNth12gt13 + J33L*PDstandardNth13gt13) +
- dJ123L*PDstandardNth1gt13 + J23L*(J22L*PDstandardNth22gt13 +
- J32L*PDstandardNth23gt13) + dJ223L*PDstandardNth2gt13 +
- J33L*(J22L*PDstandardNth23gt13 + J32L*PDstandardNth33gt13) +
- dJ323L*PDstandardNth3gt13;
-
- JacPDstandardNth32gt22 = J13L*(J12L*PDstandardNth11gt22 +
- J22L*PDstandardNth12gt22 + J32L*PDstandardNth13gt22) +
- J12L*(J23L*PDstandardNth12gt22 + J33L*PDstandardNth13gt22) +
- dJ123L*PDstandardNth1gt22 + J23L*(J22L*PDstandardNth22gt22 +
- J32L*PDstandardNth23gt22) + dJ223L*PDstandardNth2gt22 +
- J33L*(J22L*PDstandardNth23gt22 + J32L*PDstandardNth33gt22) +
- dJ323L*PDstandardNth3gt22;
-
- JacPDstandardNth32gt23 = J13L*(J12L*PDstandardNth11gt23 +
- J22L*PDstandardNth12gt23 + J32L*PDstandardNth13gt23) +
- J12L*(J23L*PDstandardNth12gt23 + J33L*PDstandardNth13gt23) +
- dJ123L*PDstandardNth1gt23 + J23L*(J22L*PDstandardNth22gt23 +
- J32L*PDstandardNth23gt23) + dJ223L*PDstandardNth2gt23 +
- J33L*(J22L*PDstandardNth23gt23 + J32L*PDstandardNth33gt23) +
- dJ323L*PDstandardNth3gt23;
-
- JacPDstandardNth32gt33 = J13L*(J12L*PDstandardNth11gt33 +
- J22L*PDstandardNth12gt33 + J32L*PDstandardNth13gt33) +
- J12L*(J23L*PDstandardNth12gt33 + J33L*PDstandardNth13gt33) +
- dJ123L*PDstandardNth1gt33 + J23L*(J22L*PDstandardNth22gt33 +
- J32L*PDstandardNth23gt33) + dJ223L*PDstandardNth2gt33 +
- J33L*(J22L*PDstandardNth23gt33 + J32L*PDstandardNth33gt33) +
- dJ323L*PDstandardNth3gt33;
+ 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
{
@@ -1121,377 +1222,373 @@ static void ML_BSSN_MP_constraints1_Body(cGH const * restrict const cctkGH, int
JacPDstandardNth32gt33 = PDstandardNth23gt33;
}
- CCTK_REAL detgt = 1;
+ 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 gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L));
+ CCTK_REAL_VEC Gtl233 =
+ kmadd(JacPDstandardNth2gt33,ToReal(-0.5),JacPDstandardNth3gt23);
- CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt);
+ CCTK_REAL_VEC Gtl311 =
+ kmadd(JacPDstandardNth3gt11,ToReal(-0.5),JacPDstandardNth1gt13);
- CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC Gtl312 =
+ kmul(kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth2gt13,JacPDstandardNth3gt12)),ToReal(0.5));
- CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L));
+ CCTK_REAL_VEC Gtl313 = kmul(JacPDstandardNth1gt33,ToReal(0.5));
- CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC Gtl322 =
+ kmadd(JacPDstandardNth3gt22,ToReal(-0.5),JacPDstandardNth2gt23);
- CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L));
+ CCTK_REAL_VEC Gtl323 = kmul(JacPDstandardNth2gt33,ToReal(0.5));
- CCTK_REAL Gtl111 = 0.5*JacPDstandardNth1gt11;
+ CCTK_REAL_VEC Gtl333 = kmul(JacPDstandardNth3gt33,ToReal(0.5));
- CCTK_REAL Gtl112 = 0.5*JacPDstandardNth2gt11;
+ CCTK_REAL_VEC Gtlu111 =
+ kmadd(Gtl111,gtu11,kmadd(Gtl112,gtu12,kmul(Gtl113,gtu13)));
- CCTK_REAL Gtl113 = 0.5*JacPDstandardNth3gt11;
+ CCTK_REAL_VEC Gtlu112 =
+ kmadd(Gtl111,gtu12,kmadd(Gtl112,gtu22,kmul(Gtl113,gtu23)));
- CCTK_REAL Gtl122 = -0.5*JacPDstandardNth1gt22 + JacPDstandardNth2gt12;
+ CCTK_REAL_VEC Gtlu113 =
+ kmadd(Gtl111,gtu13,kmadd(Gtl112,gtu23,kmul(Gtl113,gtu33)));
- CCTK_REAL Gtl123 = 0.5*(-JacPDstandardNth1gt23 + JacPDstandardNth2gt13
- + JacPDstandardNth3gt12);
+ CCTK_REAL_VEC Gtlu121 =
+ kmadd(Gtl112,gtu11,kmadd(Gtl122,gtu12,kmul(Gtl123,gtu13)));
- CCTK_REAL Gtl133 = -0.5*JacPDstandardNth1gt33 + JacPDstandardNth3gt13;
+ CCTK_REAL_VEC Gtlu122 =
+ kmadd(Gtl112,gtu12,kmadd(Gtl122,gtu22,kmul(Gtl123,gtu23)));
- CCTK_REAL Gtl211 = JacPDstandardNth1gt12 - 0.5*JacPDstandardNth2gt11;
+ CCTK_REAL_VEC Gtlu123 =
+ kmadd(Gtl112,gtu13,kmadd(Gtl122,gtu23,kmul(Gtl123,gtu33)));
- CCTK_REAL Gtl212 = 0.5*JacPDstandardNth1gt22;
+ CCTK_REAL_VEC Gtlu131 =
+ kmadd(Gtl113,gtu11,kmadd(Gtl123,gtu12,kmul(Gtl133,gtu13)));
- CCTK_REAL Gtl213 = 0.5*(JacPDstandardNth1gt23 - JacPDstandardNth2gt13
- + JacPDstandardNth3gt12);
+ CCTK_REAL_VEC Gtlu132 =
+ kmadd(Gtl113,gtu12,kmadd(Gtl123,gtu22,kmul(Gtl133,gtu23)));
- CCTK_REAL Gtl222 = 0.5*JacPDstandardNth2gt22;
+ CCTK_REAL_VEC Gtlu133 =
+ kmadd(Gtl113,gtu13,kmadd(Gtl123,gtu23,kmul(Gtl133,gtu33)));
- CCTK_REAL Gtl223 = 0.5*JacPDstandardNth3gt22;
+ CCTK_REAL_VEC Gtlu211 =
+ kmadd(Gtl211,gtu11,kmadd(Gtl212,gtu12,kmul(Gtl213,gtu13)));
- CCTK_REAL Gtl233 = -0.5*JacPDstandardNth2gt33 + JacPDstandardNth3gt23;
+ CCTK_REAL_VEC Gtlu212 =
+ kmadd(Gtl211,gtu12,kmadd(Gtl212,gtu22,kmul(Gtl213,gtu23)));
- CCTK_REAL Gtl311 = JacPDstandardNth1gt13 - 0.5*JacPDstandardNth3gt11;
+ CCTK_REAL_VEC Gtlu213 =
+ kmadd(Gtl211,gtu13,kmadd(Gtl212,gtu23,kmul(Gtl213,gtu33)));
- CCTK_REAL Gtl312 = 0.5*(JacPDstandardNth1gt23 + JacPDstandardNth2gt13
- - JacPDstandardNth3gt12);
+ CCTK_REAL_VEC Gtlu221 =
+ kmadd(Gtl212,gtu11,kmadd(Gtl222,gtu12,kmul(Gtl223,gtu13)));
- CCTK_REAL Gtl313 = 0.5*JacPDstandardNth1gt33;
+ CCTK_REAL_VEC Gtlu222 =
+ kmadd(Gtl212,gtu12,kmadd(Gtl222,gtu22,kmul(Gtl223,gtu23)));
- CCTK_REAL Gtl322 = JacPDstandardNth2gt23 - 0.5*JacPDstandardNth3gt22;
+ CCTK_REAL_VEC Gtlu223 =
+ kmadd(Gtl212,gtu13,kmadd(Gtl222,gtu23,kmul(Gtl223,gtu33)));
- CCTK_REAL Gtl323 = 0.5*JacPDstandardNth2gt33;
+ CCTK_REAL_VEC Gtlu231 =
+ kmadd(Gtl213,gtu11,kmadd(Gtl223,gtu12,kmul(Gtl233,gtu13)));
- CCTK_REAL Gtl333 = 0.5*JacPDstandardNth3gt33;
+ CCTK_REAL_VEC Gtlu232 =
+ kmadd(Gtl213,gtu12,kmadd(Gtl223,gtu22,kmul(Gtl233,gtu23)));
- CCTK_REAL Gtlu111 = Gtl111*gtu11 + Gtl112*gtu12 + Gtl113*gtu13;
+ CCTK_REAL_VEC Gtlu233 =
+ kmadd(Gtl213,gtu13,kmadd(Gtl223,gtu23,kmul(Gtl233,gtu33)));
- CCTK_REAL Gtlu112 = Gtl111*gtu12 + Gtl112*gtu22 + Gtl113*gtu23;
+ CCTK_REAL_VEC Gtlu311 =
+ kmadd(Gtl311,gtu11,kmadd(Gtl312,gtu12,kmul(Gtl313,gtu13)));
- CCTK_REAL Gtlu113 = Gtl111*gtu13 + Gtl112*gtu23 + Gtl113*gtu33;
+ CCTK_REAL_VEC Gtlu312 =
+ kmadd(Gtl311,gtu12,kmadd(Gtl312,gtu22,kmul(Gtl313,gtu23)));
- CCTK_REAL Gtlu121 = Gtl112*gtu11 + Gtl122*gtu12 + Gtl123*gtu13;
+ CCTK_REAL_VEC Gtlu313 =
+ kmadd(Gtl311,gtu13,kmadd(Gtl312,gtu23,kmul(Gtl313,gtu33)));
- CCTK_REAL Gtlu122 = Gtl112*gtu12 + Gtl122*gtu22 + Gtl123*gtu23;
+ CCTK_REAL_VEC Gtlu321 =
+ kmadd(Gtl312,gtu11,kmadd(Gtl322,gtu12,kmul(Gtl323,gtu13)));
- CCTK_REAL Gtlu123 = Gtl112*gtu13 + Gtl122*gtu23 + Gtl123*gtu33;
+ CCTK_REAL_VEC Gtlu322 =
+ kmadd(Gtl312,gtu12,kmadd(Gtl322,gtu22,kmul(Gtl323,gtu23)));
- CCTK_REAL Gtlu131 = Gtl113*gtu11 + Gtl123*gtu12 + Gtl133*gtu13;
+ CCTK_REAL_VEC Gtlu323 =
+ kmadd(Gtl312,gtu13,kmadd(Gtl322,gtu23,kmul(Gtl323,gtu33)));
- CCTK_REAL Gtlu132 = Gtl113*gtu12 + Gtl123*gtu22 + Gtl133*gtu23;
+ CCTK_REAL_VEC Gtlu331 =
+ kmadd(Gtl313,gtu11,kmadd(Gtl323,gtu12,kmul(Gtl333,gtu13)));
- CCTK_REAL Gtlu133 = Gtl113*gtu13 + Gtl123*gtu23 + Gtl133*gtu33;
+ CCTK_REAL_VEC Gtlu332 =
+ kmadd(Gtl313,gtu12,kmadd(Gtl323,gtu22,kmul(Gtl333,gtu23)));
- CCTK_REAL Gtlu211 = Gtl211*gtu11 + Gtl212*gtu12 + Gtl213*gtu13;
+ CCTK_REAL_VEC Gtlu333 =
+ kmadd(Gtl313,gtu13,kmadd(Gtl323,gtu23,kmul(Gtl333,gtu33)));
- CCTK_REAL Gtlu212 = Gtl211*gtu12 + Gtl212*gtu22 + Gtl213*gtu23;
+ CCTK_REAL_VEC Gt111 =
+ kmadd(Gtl111,gtu11,kmadd(Gtl211,gtu12,kmul(Gtl311,gtu13)));
- CCTK_REAL Gtlu213 = Gtl211*gtu13 + Gtl212*gtu23 + Gtl213*gtu33;
+ CCTK_REAL_VEC Gt211 =
+ kmadd(Gtl111,gtu12,kmadd(Gtl211,gtu22,kmul(Gtl311,gtu23)));
- CCTK_REAL Gtlu221 = Gtl212*gtu11 + Gtl222*gtu12 + Gtl223*gtu13;
+ CCTK_REAL_VEC Gt311 =
+ kmadd(Gtl111,gtu13,kmadd(Gtl211,gtu23,kmul(Gtl311,gtu33)));
- CCTK_REAL Gtlu222 = Gtl212*gtu12 + Gtl222*gtu22 + Gtl223*gtu23;
+ CCTK_REAL_VEC Gt112 =
+ kmadd(Gtl112,gtu11,kmadd(Gtl212,gtu12,kmul(Gtl312,gtu13)));
- CCTK_REAL Gtlu223 = Gtl212*gtu13 + Gtl222*gtu23 + Gtl223*gtu33;
+ CCTK_REAL_VEC Gt212 =
+ kmadd(Gtl112,gtu12,kmadd(Gtl212,gtu22,kmul(Gtl312,gtu23)));
- CCTK_REAL Gtlu231 = Gtl213*gtu11 + Gtl223*gtu12 + Gtl233*gtu13;
+ CCTK_REAL_VEC Gt312 =
+ kmadd(Gtl112,gtu13,kmadd(Gtl212,gtu23,kmul(Gtl312,gtu33)));
- CCTK_REAL Gtlu232 = Gtl213*gtu12 + Gtl223*gtu22 + Gtl233*gtu23;
+ CCTK_REAL_VEC Gt113 =
+ kmadd(Gtl113,gtu11,kmadd(Gtl213,gtu12,kmul(Gtl313,gtu13)));
- CCTK_REAL Gtlu233 = Gtl213*gtu13 + Gtl223*gtu23 + Gtl233*gtu33;
+ CCTK_REAL_VEC Gt213 =
+ kmadd(Gtl113,gtu12,kmadd(Gtl213,gtu22,kmul(Gtl313,gtu23)));
- CCTK_REAL Gtlu311 = Gtl311*gtu11 + Gtl312*gtu12 + Gtl313*gtu13;
+ CCTK_REAL_VEC Gt313 =
+ kmadd(Gtl113,gtu13,kmadd(Gtl213,gtu23,kmul(Gtl313,gtu33)));
- CCTK_REAL Gtlu312 = Gtl311*gtu12 + Gtl312*gtu22 + Gtl313*gtu23;
+ CCTK_REAL_VEC Gt122 =
+ kmadd(Gtl122,gtu11,kmadd(Gtl222,gtu12,kmul(Gtl322,gtu13)));
- CCTK_REAL Gtlu313 = Gtl311*gtu13 + Gtl312*gtu23 + Gtl313*gtu33;
+ CCTK_REAL_VEC Gt222 =
+ kmadd(Gtl122,gtu12,kmadd(Gtl222,gtu22,kmul(Gtl322,gtu23)));
- CCTK_REAL Gtlu321 = Gtl312*gtu11 + Gtl322*gtu12 + Gtl323*gtu13;
+ CCTK_REAL_VEC Gt322 =
+ kmadd(Gtl122,gtu13,kmadd(Gtl222,gtu23,kmul(Gtl322,gtu33)));
- CCTK_REAL Gtlu322 = Gtl312*gtu12 + Gtl322*gtu22 + Gtl323*gtu23;
+ CCTK_REAL_VEC Gt123 =
+ kmadd(Gtl123,gtu11,kmadd(Gtl223,gtu12,kmul(Gtl323,gtu13)));
- CCTK_REAL Gtlu323 = Gtl312*gtu13 + Gtl322*gtu23 + Gtl323*gtu33;
+ CCTK_REAL_VEC Gt223 =
+ kmadd(Gtl123,gtu12,kmadd(Gtl223,gtu22,kmul(Gtl323,gtu23)));
- CCTK_REAL Gtlu331 = Gtl313*gtu11 + Gtl323*gtu12 + Gtl333*gtu13;
+ CCTK_REAL_VEC Gt323 =
+ kmadd(Gtl123,gtu13,kmadd(Gtl223,gtu23,kmul(Gtl323,gtu33)));
- CCTK_REAL Gtlu332 = Gtl313*gtu12 + Gtl323*gtu22 + Gtl333*gtu23;
+ CCTK_REAL_VEC Gt133 =
+ kmadd(Gtl133,gtu11,kmadd(Gtl233,gtu12,kmul(Gtl333,gtu13)));
- CCTK_REAL Gtlu333 = Gtl313*gtu13 + Gtl323*gtu23 + Gtl333*gtu33;
+ CCTK_REAL_VEC Gt233 =
+ kmadd(Gtl133,gtu12,kmadd(Gtl233,gtu22,kmul(Gtl333,gtu23)));
- CCTK_REAL Gt111 = Gtl111*gtu11 + Gtl211*gtu12 + Gtl311*gtu13;
+ CCTK_REAL_VEC Gt333 =
+ kmadd(Gtl133,gtu13,kmadd(Gtl233,gtu23,kmul(Gtl333,gtu33)));
- CCTK_REAL Gt211 = Gtl111*gtu12 + Gtl211*gtu22 + Gtl311*gtu23;
+ 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 Gt311 = Gtl111*gtu13 + Gtl211*gtu23 + Gtl311*gtu33;
+ 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 Gt112 = Gtl112*gtu11 + Gtl212*gtu12 + Gtl312*gtu13;
+ 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 Gt212 = Gtl112*gtu12 + Gtl212*gtu22 + Gtl312*gtu23;
+ 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 Gt312 = Gtl112*gtu13 + Gtl212*gtu23 + Gtl312*gtu33;
+ 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 Gt113 = Gtl113*gtu11 + Gtl213*gtu12 + Gtl313*gtu13;
+ 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 Gt213 = Gtl113*gtu12 + Gtl213*gtu22 + Gtl313*gtu23;
+ 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 Gt313 = Gtl113*gtu13 + Gtl213*gtu23 + Gtl313*gtu33;
+ 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 Gt122 = Gtl122*gtu11 + Gtl222*gtu12 + Gtl322*gtu13;
+ 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 Gt222 = Gtl122*gtu12 + Gtl222*gtu22 + Gtl322*gtu23;
+ CCTK_REAL_VEC fac1 =
+ IfThen(conformalMethod,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
- CCTK_REAL Gt322 = Gtl122*gtu13 + Gtl222*gtu23 + Gtl322*gtu33;
+ CCTK_REAL_VEC cdphi1 = kmul(fac1,JacPDstandardNth1phi);
- CCTK_REAL Gt123 = Gtl123*gtu11 + Gtl223*gtu12 + Gtl323*gtu13;
+ CCTK_REAL_VEC cdphi2 = kmul(fac1,JacPDstandardNth2phi);
- CCTK_REAL Gt223 = Gtl123*gtu12 + Gtl223*gtu22 + Gtl323*gtu23;
+ CCTK_REAL_VEC cdphi3 = kmul(fac1,JacPDstandardNth3phi);
- CCTK_REAL Gt323 = Gtl123*gtu13 + Gtl223*gtu23 + Gtl323*gtu33;
+ CCTK_REAL_VEC fac2 =
+ IfThen(conformalMethod,kmul(INV(SQR(phiL)),ToReal(0.5)),ToReal(0));
- CCTK_REAL Gt133 = Gtl133*gtu11 + Gtl233*gtu12 + Gtl333*gtu13;
+ CCTK_REAL_VEC cdphi211 =
+ kmadd(fac2,SQR(JacPDstandardNth1phi),kmul(fac1,ksub(JacPDstandardNth11phi,kmadd(Gt111,JacPDstandardNth1phi,kmadd(Gt311,JacPDstandardNth3phi,kmul(Gt211,JacPDstandardNth2phi))))));
- CCTK_REAL Gt233 = Gtl133*gtu12 + Gtl233*gtu22 + Gtl333*gtu23;
+ CCTK_REAL_VEC cdphi212 =
+ kmadd(fac2,kmul(JacPDstandardNth1phi,JacPDstandardNth2phi),kmul(fac1,ksub(JacPDstandardNth12phi,kmadd(Gt112,JacPDstandardNth1phi,kmadd(Gt312,JacPDstandardNth3phi,kmul(Gt212,JacPDstandardNth2phi))))));
- CCTK_REAL Gt333 = Gtl133*gtu13 + Gtl233*gtu23 + Gtl333*gtu33;
+ CCTK_REAL_VEC cdphi213 =
+ kmadd(fac2,kmul(JacPDstandardNth1phi,JacPDstandardNth3phi),kmul(fac1,ksub(JacPDstandardNth13phi,kmadd(Gt113,JacPDstandardNth1phi,kmadd(Gt313,JacPDstandardNth3phi,kmul(Gt213,JacPDstandardNth2phi))))));
- CCTK_REAL Xtn1 = Gt111*gtu11 + Gt122*gtu22 + 2*(Gt112*gtu12 +
- Gt113*gtu13 + Gt123*gtu23) + Gt133*gtu33;
+ CCTK_REAL_VEC cdphi222 =
+ kmsub(fac2,SQR(JacPDstandardNth2phi),kmul(fac1,kmadd(Gt122,JacPDstandardNth1phi,kmadd(Gt222,JacPDstandardNth2phi,kmsub(Gt322,JacPDstandardNth3phi,JacPDstandardNth22phi)))));
- CCTK_REAL Xtn2 = Gt211*gtu11 + Gt222*gtu22 + 2*(Gt212*gtu12 +
- Gt213*gtu13 + Gt223*gtu23) + Gt233*gtu33;
+ CCTK_REAL_VEC cdphi223 =
+ kmsub(fac2,kmul(JacPDstandardNth2phi,JacPDstandardNth3phi),kmul(fac1,kmadd(Gt123,JacPDstandardNth1phi,kmadd(Gt223,JacPDstandardNth2phi,kmsub(Gt323,JacPDstandardNth3phi,JacPDstandardNth23phi)))));
- CCTK_REAL Xtn3 = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu12 +
- Gt313*gtu13 + Gt323*gtu23) + Gt333*gtu33;
+ CCTK_REAL_VEC cdphi233 =
+ kmsub(fac2,SQR(JacPDstandardNth3phi),kmul(fac1,kmadd(Gt133,JacPDstandardNth1phi,kmadd(Gt233,JacPDstandardNth2phi,kmsub(Gt333,JacPDstandardNth3phi,JacPDstandardNth33phi)))));
- CCTK_REAL Rt11 = 0.5*(6*(Gt111*Gtlu111 + Gt112*Gtlu112 +
- Gt113*Gtlu113) + 4*(Gt211*Gtlu121 + Gt212*Gtlu122 + Gt213*Gtlu123 +
- Gt311*Gtlu131 + Gt312*Gtlu132 + Gt313*Gtlu133) -
- gtu11*JacPDstandardNth11gt11 + 2*(Gt211*Gtlu211 + Gt212*Gtlu212 +
- Gt213*Gtlu213 + Gt311*Gtlu311 + Gt312*Gtlu312 + Gt313*Gtlu313 +
- gt11L*JacPDstandardNth1Xt1) + 2*gt12L*JacPDstandardNth1Xt2 +
- 2*gt13L*JacPDstandardNth1Xt3 + gtu12*(-JacPDstandardNth12gt11 -
- JacPDstandardNth21gt11) - gtu22*JacPDstandardNth22gt11 +
- gtu13*(-JacPDstandardNth13gt11 - JacPDstandardNth31gt11) +
- gtu23*(-JacPDstandardNth23gt11 - JacPDstandardNth32gt11) -
- gtu33*JacPDstandardNth33gt11 + 2*Gtl111*Xtn1 + 2*Gtl112*Xtn2 +
- 2*Gtl113*Xtn3);
+ CCTK_REAL_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 Rt12 = 0.5*(4*(Gt211*Gtlu221 + Gt212*Gtlu222 +
- Gt213*Gtlu223) + 2*(Gt122*Gtlu112 + Gt123*Gtlu113 + Gt111*Gtlu121 +
- Gt212*Gtlu121 + Gt222*Gtlu122 + Gt113*Gtlu123 + Gt223*Gtlu123 +
- Gt312*Gtlu131 + Gt322*Gtlu132 + Gt323*Gtlu133 + Gt111*Gtlu211 +
- Gt112*(Gtlu111 + Gtlu122 + Gtlu212) + Gt113*Gtlu213 + Gt311*Gtlu231 +
- Gt312*Gtlu232 + Gt313*Gtlu233 + Gt311*Gtlu321 + Gt312*Gtlu322 +
- Gt313*Gtlu323) - gtu11*JacPDstandardNth11gt12 +
- gt12L*JacPDstandardNth1Xt1 + gt22L*JacPDstandardNth1Xt2 +
- gt23L*JacPDstandardNth1Xt3 + gtu12*(-JacPDstandardNth12gt12 -
- JacPDstandardNth21gt12) - gtu22*JacPDstandardNth22gt12 +
- gt11L*JacPDstandardNth2Xt1 + gt12L*JacPDstandardNth2Xt2 +
- gt13L*JacPDstandardNth2Xt3 + gtu13*(-JacPDstandardNth13gt12 -
- JacPDstandardNth31gt12) + gtu23*(-JacPDstandardNth23gt12 -
- JacPDstandardNth32gt12) - gtu33*JacPDstandardNth33gt12 + Gtl112*Xtn1 +
- Gtl211*Xtn1 + Gtl122*Xtn2 + Gtl212*Xtn2 + Gtl123*Xtn3 + Gtl213*Xtn3);
+ CCTK_REAL_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(cdphi3,kmul(gt12L,kmul(gtu13,ToReal(4))),kmul(cdphi2,kmadd(gt12L,kmul(gtu12,ToReal(4)),ToReal(-2))))))));
- CCTK_REAL Rt13 = 0.5*(2*(Gt123*Gtlu112 + Gt133*Gtlu113 + Gt213*Gtlu121
- + Gt223*Gtlu122 + Gt233*Gtlu123 + Gt111*Gtlu131 + Gt313*Gtlu131 +
- Gt112*Gtlu132 + Gt323*Gtlu132 + Gt333*Gtlu133 + Gt211*Gtlu231 +
- Gt212*Gtlu232 + Gt213*Gtlu233 + Gt111*Gtlu311 + Gt112*Gtlu312 +
- Gt113*(Gtlu111 + Gtlu133 + Gtlu313) + Gt211*Gtlu321 + Gt212*Gtlu322 +
- Gt213*Gtlu323) + 4*(Gt311*Gtlu331 + Gt312*Gtlu332 + Gt313*Gtlu333) -
- gtu11*JacPDstandardNth11gt13 + gt13L*JacPDstandardNth1Xt1 +
- gt23L*JacPDstandardNth1Xt2 + gt33L*JacPDstandardNth1Xt3 +
- gtu12*(-JacPDstandardNth12gt13 - JacPDstandardNth21gt13) -
- gtu22*JacPDstandardNth22gt13 + gtu13*(-JacPDstandardNth13gt13 -
- JacPDstandardNth31gt13) + gtu23*(-JacPDstandardNth23gt13 -
- JacPDstandardNth32gt13) - gtu33*JacPDstandardNth33gt13 +
- gt11L*JacPDstandardNth3Xt1 + gt12L*JacPDstandardNth3Xt2 +
- gt13L*JacPDstandardNth3Xt3 + Gtl113*Xtn1 + Gtl311*Xtn1 + Gtl123*Xtn2 +
- Gtl312*Xtn2 + Gtl133*Xtn3 + Gtl313*Xtn3);
-
- CCTK_REAL Rt22 = 0.5*(6*(Gt212*Gtlu221 + Gt222*Gtlu222 +
- Gt223*Gtlu223) + 4*(Gt123*Gtlu213 + Gt312*Gtlu231 + Gt322*Gtlu232 +
- Gt323*Gtlu233) - gtu11*JacPDstandardNth11gt22 +
- gtu12*(-JacPDstandardNth12gt22 - JacPDstandardNth21gt22) -
- gtu22*JacPDstandardNth22gt22 + 2*(Gt123*Gtlu123 + Gt112*(Gtlu121 +
- 2*Gtlu211) + Gt122*(Gtlu122 + 2*Gtlu212) + Gt312*Gtlu321 +
- Gt322*Gtlu322 + Gt323*Gtlu323 + gt12L*JacPDstandardNth2Xt1) +
- 2*gt22L*JacPDstandardNth2Xt2 + 2*gt23L*JacPDstandardNth2Xt3 +
- gtu13*(-JacPDstandardNth13gt22 - JacPDstandardNth31gt22) +
- gtu23*(-JacPDstandardNth23gt22 - JacPDstandardNth32gt22) -
- gtu33*JacPDstandardNth33gt22 + 2*Gtl212*Xtn1 + 2*Gtl222*Xtn2 +
- 2*Gtl223*Xtn3);
-
- CCTK_REAL Rt23 = 0.5*(2*(Gt123*Gtlu133 + Gt113*Gtlu211 + Gt123*Gtlu212
- + Gt133*Gtlu213 + Gt213*Gtlu221 + Gt223*Gtlu222 + Gt233*Gtlu223 +
- Gt212*Gtlu231 + Gt313*Gtlu231 + Gt222*Gtlu232 + Gt323*Gtlu232 +
- Gt223*Gtlu233 + Gt333*Gtlu233 + Gt112*(Gtlu131 + Gtlu311) +
- Gt122*(Gtlu132 + Gtlu312) + Gt123*Gtlu313 + Gt212*Gtlu321 +
- Gt222*Gtlu322 + Gt223*Gtlu323) + 4*(Gt312*Gtlu331 + Gt322*Gtlu332 +
- Gt323*Gtlu333) - gtu11*JacPDstandardNth11gt23 +
- gtu12*(-JacPDstandardNth12gt23 - JacPDstandardNth21gt23) -
- gtu22*JacPDstandardNth22gt23 + gt13L*JacPDstandardNth2Xt1 +
- gt23L*JacPDstandardNth2Xt2 + gt33L*JacPDstandardNth2Xt3 +
- gtu13*(-JacPDstandardNth13gt23 - JacPDstandardNth31gt23) +
- gtu23*(-JacPDstandardNth23gt23 - JacPDstandardNth32gt23) -
- gtu33*JacPDstandardNth33gt23 + gt12L*JacPDstandardNth3Xt1 +
- gt22L*JacPDstandardNth3Xt2 + gt23L*JacPDstandardNth3Xt3 + Gtl213*Xtn1 +
- Gtl312*Xtn1 + Gtl223*Xtn2 + Gtl322*Xtn2 + Gtl233*Xtn3 + Gtl323*Xtn3);
-
- CCTK_REAL Rt33 = 0.5*(4*(Gt133*Gtlu313 + Gt213*Gtlu321 + Gt223*Gtlu322
- + Gt233*Gtlu323) + 6*(Gt313*Gtlu331 + Gt323*Gtlu332 + Gt333*Gtlu333) -
- gtu11*JacPDstandardNth11gt33 + gtu12*(-JacPDstandardNth12gt33 -
- JacPDstandardNth21gt33) - gtu22*JacPDstandardNth22gt33 +
- gtu13*(-JacPDstandardNth13gt33 - JacPDstandardNth31gt33) +
- gtu23*(-JacPDstandardNth23gt33 - JacPDstandardNth32gt33) -
- gtu33*JacPDstandardNth33gt33 + 2*(Gt133*Gtlu133 + Gt213*Gtlu231 +
- Gt223*Gtlu232 + Gt233*Gtlu233 + Gt113*(Gtlu131 + 2*Gtlu311) +
- Gt123*(Gtlu132 + 2*Gtlu312) + gt13L*JacPDstandardNth3Xt1) +
- 2*gt23L*JacPDstandardNth3Xt2 + 2*gt33L*JacPDstandardNth3Xt3 +
- 2*Gtl313*Xtn1 + 2*Gtl323*Xtn2 + 2*Gtl333*Xtn3);
-
- CCTK_REAL fac1 = IfThen(conformalMethod,-0.5*INV(phiL),1);
-
- CCTK_REAL cdphi1 = fac1*JacPDstandardNth1phi;
-
- CCTK_REAL cdphi2 = fac1*JacPDstandardNth2phi;
-
- CCTK_REAL cdphi3 = fac1*JacPDstandardNth3phi;
-
- CCTK_REAL fac2 = IfThen(conformalMethod,0.5*INV(SQR(phiL)),0);
-
- CCTK_REAL cdphi211 = fac1*(JacPDstandardNth11phi -
- Gt111*JacPDstandardNth1phi - Gt211*JacPDstandardNth2phi -
- Gt311*JacPDstandardNth3phi) + fac2*SQR(JacPDstandardNth1phi);
-
- CCTK_REAL cdphi212 = fac2*JacPDstandardNth1phi*JacPDstandardNth2phi +
- fac1*(JacPDstandardNth12phi - Gt112*JacPDstandardNth1phi -
- Gt212*JacPDstandardNth2phi - Gt312*JacPDstandardNth3phi);
-
- CCTK_REAL cdphi213 = fac2*JacPDstandardNth1phi*JacPDstandardNth3phi +
- fac1*(JacPDstandardNth13phi - Gt113*JacPDstandardNth1phi -
- Gt213*JacPDstandardNth2phi - Gt313*JacPDstandardNth3phi);
-
- CCTK_REAL cdphi222 = -(fac1*(Gt122*JacPDstandardNth1phi -
- JacPDstandardNth22phi + Gt222*JacPDstandardNth2phi +
- Gt322*JacPDstandardNth3phi)) + fac2*SQR(JacPDstandardNth2phi);
-
- CCTK_REAL cdphi223 = fac2*JacPDstandardNth2phi*JacPDstandardNth3phi -
- fac1*(Gt123*JacPDstandardNth1phi - JacPDstandardNth23phi +
- Gt223*JacPDstandardNth2phi + Gt323*JacPDstandardNth3phi);
-
- CCTK_REAL cdphi233 = -(fac1*(Gt133*JacPDstandardNth1phi +
- Gt233*JacPDstandardNth2phi - JacPDstandardNth33phi +
- Gt333*JacPDstandardNth3phi)) + fac2*SQR(JacPDstandardNth3phi);
-
- CCTK_REAL Rphi11 = -2*(cdphi211 + 2*(-1 + gt11L*gtu11)*SQR(cdphi1) +
- gt11L*(cdphi211*gtu11 + 4*(cdphi1*(cdphi2*gtu12 + cdphi3*gtu13) +
- cdphi2*cdphi3*gtu23) + cdphi233*gtu33 + gtu22*(cdphi222 +
- 2*SQR(cdphi2)) + 2*(cdphi212*gtu12 + cdphi213*gtu13 + cdphi223*gtu23 +
- gtu33*SQR(cdphi3))));
+ 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(cdphi2,kmul(gt13L,kmul(gtu12,ToReal(4))),kmul(cdphi3,kmadd(gt13L,kmul(gtu13,ToReal(4)),ToReal(-2))))))));
- CCTK_REAL Rphi12 = -2*(cdphi212 + cdphi1*(cdphi2*(-2 + 4*gt12L*gtu12)
- + 4*cdphi3*gt12L*gtu13) + gt12L*(cdphi211*gtu11 + 4*cdphi2*cdphi3*gtu23
- + 2*(cdphi212*gtu12 + cdphi213*gtu13 + cdphi223*gtu23 +
- gtu11*SQR(cdphi1)) + gtu22*(cdphi222 + 2*SQR(cdphi2)) + gtu33*(cdphi233
- + 2*SQR(cdphi3))));
+ 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 Rphi13 = -2*(cdphi213 + cdphi1*(4*cdphi2*gt13L*gtu12 +
- cdphi3*(-2 + 4*gt13L*gtu13)) + gt13L*(cdphi211*gtu11 +
- 4*cdphi2*cdphi3*gtu23 + 2*(cdphi212*gtu12 + cdphi213*gtu13 +
- cdphi223*gtu23 + gtu11*SQR(cdphi1)) + gtu22*(cdphi222 + 2*SQR(cdphi2))
- + gtu33*(cdphi233 + 2*SQR(cdphi3))));
+ 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(cdphi1,kmul(gt23L,kmul(gtu12,ToReal(4))),kmul(cdphi3,kmadd(gt23L,kmul(gtu23,ToReal(4)),ToReal(-2))))))));
- CCTK_REAL Rphi22 = -2*(cdphi222 + 2*(-1 + gt22L*gtu22)*SQR(cdphi2) +
- gt22L*(cdphi222*gtu22 + 4*(cdphi1*cdphi3*gtu13 + cdphi2*(cdphi1*gtu12 +
- cdphi3*gtu23)) + cdphi233*gtu33 + gtu11*(cdphi211 + 2*SQR(cdphi1)) +
- 2*(cdphi212*gtu12 + cdphi213*gtu13 + cdphi223*gtu23 +
- gtu33*SQR(cdphi3))));
+ 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 Rphi23 = -2*(cdphi223 + cdphi2*(4*cdphi1*gt23L*gtu12 +
- cdphi3*(-2 + 4*gt23L*gtu23)) + gt23L*(4*cdphi1*cdphi3*gtu13 +
- cdphi222*gtu22 + gtu11*(cdphi211 + 2*SQR(cdphi1)) + 2*(cdphi212*gtu12 +
- cdphi213*gtu13 + cdphi223*gtu23 + gtu22*SQR(cdphi2)) + gtu33*(cdphi233
- + 2*SQR(cdphi3))));
+ CCTK_REAL_VEC e4phi =
+ IfThen(conformalMethod,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
- CCTK_REAL Rphi33 = -2*(cdphi233 + gt33L*((4*cdphi1*cdphi2 +
- 2*cdphi212)*gtu12 + 4*cdphi3*(cdphi1*gtu13 + cdphi2*gtu23) +
- 2*(cdphi213*gtu13 + cdphi223*gtu23) + cdphi233*gtu33 + gtu11*(cdphi211
- + 2*SQR(cdphi1)) + gtu22*(cdphi222 + 2*SQR(cdphi2))) + 2*(-1 +
- gt33L*gtu33)*SQR(cdphi3));
+ CCTK_REAL_VEC em4phi = INV(e4phi);
- CCTK_REAL e4phi = IfThen(conformalMethod,INV(SQR(phiL)),exp(4*phiL));
+ CCTK_REAL_VEC gu11 = kmul(em4phi,gtu11);
- CCTK_REAL em4phi = INV(e4phi);
+ CCTK_REAL_VEC gu12 = kmul(em4phi,gtu12);
- CCTK_REAL gu11 = em4phi*gtu11;
+ CCTK_REAL_VEC gu13 = kmul(em4phi,gtu13);
- CCTK_REAL gu12 = em4phi*gtu12;
+ CCTK_REAL_VEC gu22 = kmul(em4phi,gtu22);
- CCTK_REAL gu13 = em4phi*gtu13;
+ CCTK_REAL_VEC gu23 = kmul(em4phi,gtu23);
- CCTK_REAL gu22 = em4phi*gtu22;
+ CCTK_REAL_VEC gu33 = kmul(em4phi,gtu33);
- CCTK_REAL gu23 = em4phi*gtu23;
+ CCTK_REAL_VEC R11 = kadd(Rphi11,Rt11);
- CCTK_REAL gu33 = em4phi*gtu33;
+ CCTK_REAL_VEC R12 = kadd(Rphi12,Rt12);
- CCTK_REAL R11 = Rphi11 + Rt11;
+ CCTK_REAL_VEC R13 = kadd(Rphi13,Rt13);
- CCTK_REAL R12 = Rphi12 + Rt12;
+ CCTK_REAL_VEC R22 = kadd(Rphi22,Rt22);
- CCTK_REAL R13 = Rphi13 + Rt13;
+ CCTK_REAL_VEC R23 = kadd(Rphi23,Rt23);
- CCTK_REAL R22 = Rphi22 + Rt22;
+ CCTK_REAL_VEC R33 = kadd(Rphi33,Rt33);
- CCTK_REAL R23 = Rphi23 + Rt23;
+ 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 R33 = Rphi33 + Rt33;
+ CCTK_REAL_VEC Atm11 =
+ kmadd(At11L,gtu11,kmadd(At12L,gtu12,kmul(At13L,gtu13)));
- CCTK_REAL trR = gu11*R11 + gu22*R22 + 2*(gu12*R12 + gu13*R13 +
- gu23*R23) + gu33*R33;
+ CCTK_REAL_VEC Atm21 =
+ kmadd(At11L,gtu12,kmadd(At12L,gtu22,kmul(At13L,gtu23)));
- CCTK_REAL Atm11 = At11L*gtu11 + At12L*gtu12 + At13L*gtu13;
+ CCTK_REAL_VEC Atm31 =
+ kmadd(At11L,gtu13,kmadd(At12L,gtu23,kmul(At13L,gtu33)));
- CCTK_REAL Atm21 = At11L*gtu12 + At12L*gtu22 + At13L*gtu23;
+ CCTK_REAL_VEC Atm12 =
+ kmadd(At12L,gtu11,kmadd(At22L,gtu12,kmul(At23L,gtu13)));
- CCTK_REAL Atm31 = At11L*gtu13 + At12L*gtu23 + At13L*gtu33;
+ CCTK_REAL_VEC Atm22 =
+ kmadd(At12L,gtu12,kmadd(At22L,gtu22,kmul(At23L,gtu23)));
- CCTK_REAL Atm12 = At12L*gtu11 + At22L*gtu12 + At23L*gtu13;
+ CCTK_REAL_VEC Atm32 =
+ kmadd(At12L,gtu13,kmadd(At22L,gtu23,kmul(At23L,gtu33)));
- CCTK_REAL Atm22 = At12L*gtu12 + At22L*gtu22 + At23L*gtu23;
+ CCTK_REAL_VEC Atm13 =
+ kmadd(At13L,gtu11,kmadd(At23L,gtu12,kmul(At33L,gtu13)));
- CCTK_REAL Atm32 = At12L*gtu13 + At22L*gtu23 + At23L*gtu33;
+ CCTK_REAL_VEC Atm23 =
+ kmadd(At13L,gtu12,kmadd(At23L,gtu22,kmul(At33L,gtu23)));
- CCTK_REAL Atm13 = At13L*gtu11 + At23L*gtu12 + At33L*gtu13;
+ CCTK_REAL_VEC Atm33 =
+ kmadd(At13L,gtu13,kmadd(At23L,gtu23,kmul(At33L,gtu33)));
- CCTK_REAL Atm23 = At13L*gtu12 + At23L*gtu22 + At33L*gtu23;
+ 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 Atm33 = At13L*gtu13 + At23L*gtu23 + At33L*gtu33;
+ CCTK_REAL_VEC HL =
+ kadd(trR,kmadd(rho,ToReal(-50.26548245743669181540229413247204614715),kmadd(kmadd(Atm12,Atm21,kmadd(Atm13,Atm31,kmul(Atm23,Atm32))),ToReal(-2.),kmadd(kadd(SQR(Atm11),kadd(SQR(Atm22),SQR(Atm33))),ToReal(-1.),kmul(SQR(trKL),ToReal(0.6666666666666666666666666666666666666667))))));
- CCTK_REAL rho = INV(SQR(alphaL))*(eTttL - 2*(beta2L*eTtyL +
- beta3L*eTtzL) + 2*(beta1L*(-eTtxL + beta2L*eTxyL + beta3L*eTxzL) +
- beta2L*beta3L*eTyzL) + eTxxL*SQR(beta1L) + eTyyL*SQR(beta2L) +
- eTzzL*SQR(beta3L));
+ /* If necessary, store only partial vectors after the first iteration */
- CCTK_REAL HL = -2.*(Atm12*Atm21 + Atm13*Atm31 + Atm23*Atm32) -
- 50.26548245743669181540229413247204614715*rho + trR - 1.*(SQR(Atm11) +
- SQR(Atm22) + SQR(Atm33)) +
- 0.6666666666666666666666666666666666666667*SQR(trKL);
+ 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);
+ break;
+ }
+
+ /* If necessary, store only partial vectors after the first iteration */
- /* Copy local copies back to grid functions */
- H[index] = HL;
+ 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);
+ 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);
+ break;
+ }
+ vec_store_nta(H[index],HL);
}
- LC_ENDLOOP3 (ML_BSSN_MP_constraints1);
+ LC_ENDLOOP3VEC (ML_BSSN_MP_constraints1);
}
extern "C" void ML_BSSN_MP_constraints1(CCTK_ARGUMENTS)
@@ -1499,5 +1596,43 @@ extern "C" void ML_BSSN_MP_constraints1(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_constraints1_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_MP_constraints1_calc_every != ML_BSSN_MP_constraints1_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN_MP::ML_curv","ML_BSSN_MP::ML_Gamma","ML_BSSN_MP::ML_Ham","ML_BSSN_MP::ML_lapse","ML_BSSN_MP::ML_log_confac","ML_BSSN_MP::ML_metric","ML_BSSN_MP::ML_shift","ML_BSSN_MP::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_constraints1", 8, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_constraints1", 1, 1, 1);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_constraints1", 2, 2, 2);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_constraints1", 3, 3, 3);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_constraints1", 4, 4, 4);
+ break;
+ }
+
GenericFD_LoopOverInterior(cctkGH, &ML_BSSN_MP_constraints1_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_MP_constraints1_Body");
+ }
}
diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_constraints2.cc b/ML_BSSN_MP/src/ML_BSSN_MP_constraints2.cc
index 073944c..083ec42 100644
--- a/ML_BSSN_MP/src/ML_BSSN_MP_constraints2.cc
+++ b/ML_BSSN_MP/src/ML_BSSN_MP_constraints2.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_MP_constraints2_SelectBCs(CCTK_ARGUMENTS)
{
@@ -42,7 +43,7 @@ extern "C" void ML_BSSN_MP_constraints2_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_BSSN_MP_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_MP_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;
@@ -50,21 +51,6 @@ static void ML_BSSN_MP_constraints2_Body(cGH const * restrict const cctkGH, int
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_constraints2_Body");
- }
-
- if (cctk_iteration % ML_BSSN_MP_constraints2_calc_every != ML_BSSN_MP_constraints2_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN_MP::ML_cons_detg","ML_BSSN_MP::ML_cons_Gamma","ML_BSSN_MP::ML_cons_traceA","ML_BSSN_MP::ML_curv","ML_BSSN_MP::ML_Gamma","ML_BSSN_MP::ML_lapse","ML_BSSN_MP::ML_log_confac","ML_BSSN_MP::ML_metric","ML_BSSN_MP::ML_mom","ML_BSSN_MP::ML_shift","ML_BSSN_MP::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_constraints2", 11, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_constraints2", 2, 2, 2);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -74,41 +60,102 @@ static void ML_BSSN_MP_constraints2_Body(cGH const * restrict const cctkGH, int
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const p1o24dx = 0.0416666666666666666666666666667*INV(dx);
- CCTK_REAL const p1o24dy = 0.0416666666666666666666666666667*INV(dy);
- CCTK_REAL const p1o24dz = 0.0416666666666666666666666666667*INV(dz);
- CCTK_REAL const p1o64dx = 0.015625*INV(dx);
- CCTK_REAL const p1o64dy = 0.015625*INV(dy);
- CCTK_REAL const p1o64dz = 0.015625*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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)
@@ -155,51 +202,60 @@ static void ML_BSSN_MP_constraints2_Body(cGH const * restrict const cctkGH, int
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_LOOP3 (ML_BSSN_MP_constraints2,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_MP_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 alphaL = alpha[index];
- CCTK_REAL At11L = At11[index];
- CCTK_REAL At12L = At12[index];
- CCTK_REAL At13L = At13[index];
- CCTK_REAL At22L = At22[index];
- CCTK_REAL At23L = At23[index];
- CCTK_REAL At33L = At33[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL gt11L = gt11[index];
- CCTK_REAL gt12L = gt12[index];
- CCTK_REAL gt13L = gt13[index];
- CCTK_REAL gt22L = gt22[index];
- CCTK_REAL gt23L = gt23[index];
- CCTK_REAL gt33L = gt33[index];
- CCTK_REAL phiL = phi[index];
- CCTK_REAL trKL = trK[index];
- CCTK_REAL Xt1L = Xt1[index];
- CCTK_REAL Xt2L = Xt2[index];
- CCTK_REAL Xt3L = Xt3[index];
-
- CCTK_REAL eTtxL, eTtyL, eTtzL, eTxxL, eTxyL, eTxzL, eTyyL, eTyzL, eTzzL;
+ 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 = eTtx[index];
- eTtyL = eTty[index];
- eTtzL = eTtz[index];
- eTxxL = eTxx[index];
- eTxyL = eTxy[index];
- eTxzL = eTxz[index];
- eTyyL = eTyy[index];
- eTyzL = eTyz[index];
- eTzzL = eTzz[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
{
@@ -214,238 +270,421 @@ static void ML_BSSN_MP_constraints2_Body(cGH const * restrict const cctkGH, int
eTzzL = ToReal(0.0);
}
- CCTK_REAL J11L, J12L, J13L, J21L, J22L, J23L, J31L, J32L, J33L;
+ CCTK_REAL_VEC J11L, J12L, J13L, J21L, J22L, J23L, J31L, J32L, J33L;
if (use_jacobian)
{
- J11L = J11[index];
- J12L = J12[index];
- J13L = J13[index];
- J21L = J21[index];
- J22L = J22[index];
- J23L = J23[index];
- J31L = J31[index];
- J32L = J32[index];
- J33L = J33[index];
+ J11L = vec_load(J11[index]);
+ J12L = vec_load(J12[index]);
+ J13L = vec_load(J13[index]);
+ J21L = vec_load(J21[index]);
+ J22L = vec_load(J22[index]);
+ J23L = vec_load(J23[index]);
+ J31L = vec_load(J31[index]);
+ J32L = vec_load(J32[index]);
+ J33L = vec_load(J33[index]);
}
/* Include user supplied include files */
/* Precompute derivatives */
- CCTK_REAL const PDstandardNth1At11 = PDstandardNth1(&At11[index]);
- CCTK_REAL const PDstandardNth2At11 = PDstandardNth2(&At11[index]);
- CCTK_REAL const PDstandardNth3At11 = PDstandardNth3(&At11[index]);
- CCTK_REAL const PDstandardNth1At12 = PDstandardNth1(&At12[index]);
- CCTK_REAL const PDstandardNth2At12 = PDstandardNth2(&At12[index]);
- CCTK_REAL const PDstandardNth3At12 = PDstandardNth3(&At12[index]);
- CCTK_REAL const PDstandardNth1At13 = PDstandardNth1(&At13[index]);
- CCTK_REAL const PDstandardNth2At13 = PDstandardNth2(&At13[index]);
- CCTK_REAL const PDstandardNth3At13 = PDstandardNth3(&At13[index]);
- CCTK_REAL const PDstandardNth1At22 = PDstandardNth1(&At22[index]);
- CCTK_REAL const PDstandardNth2At22 = PDstandardNth2(&At22[index]);
- CCTK_REAL const PDstandardNth3At22 = PDstandardNth3(&At22[index]);
- CCTK_REAL const PDstandardNth1At23 = PDstandardNth1(&At23[index]);
- CCTK_REAL const PDstandardNth2At23 = PDstandardNth2(&At23[index]);
- CCTK_REAL const PDstandardNth3At23 = PDstandardNth3(&At23[index]);
- CCTK_REAL const PDstandardNth1At33 = PDstandardNth1(&At33[index]);
- CCTK_REAL const PDstandardNth2At33 = PDstandardNth2(&At33[index]);
- CCTK_REAL const PDstandardNth3At33 = PDstandardNth3(&At33[index]);
- CCTK_REAL const PDstandardNth1gt11 = PDstandardNth1(&gt11[index]);
- CCTK_REAL const PDstandardNth2gt11 = PDstandardNth2(&gt11[index]);
- CCTK_REAL const PDstandardNth3gt11 = PDstandardNth3(&gt11[index]);
- CCTK_REAL const PDstandardNth1gt12 = PDstandardNth1(&gt12[index]);
- CCTK_REAL const PDstandardNth2gt12 = PDstandardNth2(&gt12[index]);
- CCTK_REAL const PDstandardNth3gt12 = PDstandardNth3(&gt12[index]);
- CCTK_REAL const PDstandardNth1gt13 = PDstandardNth1(&gt13[index]);
- CCTK_REAL const PDstandardNth2gt13 = PDstandardNth2(&gt13[index]);
- CCTK_REAL const PDstandardNth3gt13 = PDstandardNth3(&gt13[index]);
- CCTK_REAL const PDstandardNth1gt22 = PDstandardNth1(&gt22[index]);
- CCTK_REAL const PDstandardNth2gt22 = PDstandardNth2(&gt22[index]);
- CCTK_REAL const PDstandardNth3gt22 = PDstandardNth3(&gt22[index]);
- CCTK_REAL const PDstandardNth1gt23 = PDstandardNth1(&gt23[index]);
- CCTK_REAL const PDstandardNth2gt23 = PDstandardNth2(&gt23[index]);
- CCTK_REAL const PDstandardNth3gt23 = PDstandardNth3(&gt23[index]);
- CCTK_REAL const PDstandardNth1gt33 = PDstandardNth1(&gt33[index]);
- CCTK_REAL const PDstandardNth2gt33 = PDstandardNth2(&gt33[index]);
- CCTK_REAL const PDstandardNth3gt33 = PDstandardNth3(&gt33[index]);
- CCTK_REAL const PDstandardNth1phi = PDstandardNth1(&phi[index]);
- CCTK_REAL const PDstandardNth2phi = PDstandardNth2(&phi[index]);
- CCTK_REAL const PDstandardNth3phi = PDstandardNth3(&phi[index]);
- CCTK_REAL const PDstandardNth1trK = PDstandardNth1(&trK[index]);
- CCTK_REAL const PDstandardNth2trK = PDstandardNth2(&trK[index]);
- CCTK_REAL const PDstandardNth3trK = PDstandardNth3(&trK[index]);
+ 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 JacPDstandardNth1At11;
- CCTK_REAL JacPDstandardNth1At12;
- CCTK_REAL JacPDstandardNth1At13;
- CCTK_REAL JacPDstandardNth1At22;
- CCTK_REAL JacPDstandardNth1At23;
- CCTK_REAL JacPDstandardNth1At33;
- CCTK_REAL JacPDstandardNth1gt11;
- CCTK_REAL JacPDstandardNth1gt12;
- CCTK_REAL JacPDstandardNth1gt13;
- CCTK_REAL JacPDstandardNth1gt22;
- CCTK_REAL JacPDstandardNth1gt23;
- CCTK_REAL JacPDstandardNth1gt33;
- CCTK_REAL JacPDstandardNth1phi;
- CCTK_REAL JacPDstandardNth1trK;
- CCTK_REAL JacPDstandardNth2At11;
- CCTK_REAL JacPDstandardNth2At12;
- CCTK_REAL JacPDstandardNth2At13;
- CCTK_REAL JacPDstandardNth2At22;
- CCTK_REAL JacPDstandardNth2At23;
- CCTK_REAL JacPDstandardNth2At33;
- CCTK_REAL JacPDstandardNth2gt11;
- CCTK_REAL JacPDstandardNth2gt12;
- CCTK_REAL JacPDstandardNth2gt13;
- CCTK_REAL JacPDstandardNth2gt22;
- CCTK_REAL JacPDstandardNth2gt23;
- CCTK_REAL JacPDstandardNth2gt33;
- CCTK_REAL JacPDstandardNth2phi;
- CCTK_REAL JacPDstandardNth2trK;
- CCTK_REAL JacPDstandardNth3At11;
- CCTK_REAL JacPDstandardNth3At12;
- CCTK_REAL JacPDstandardNth3At13;
- CCTK_REAL JacPDstandardNth3At22;
- CCTK_REAL JacPDstandardNth3At23;
- CCTK_REAL JacPDstandardNth3At33;
- CCTK_REAL JacPDstandardNth3gt11;
- CCTK_REAL JacPDstandardNth3gt12;
- CCTK_REAL JacPDstandardNth3gt13;
- CCTK_REAL JacPDstandardNth3gt22;
- CCTK_REAL JacPDstandardNth3gt23;
- CCTK_REAL JacPDstandardNth3gt33;
- CCTK_REAL JacPDstandardNth3phi;
- CCTK_REAL JacPDstandardNth3trK;
+ 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 = J11L*PDstandardNth1At11 +
- J21L*PDstandardNth2At11 + J31L*PDstandardNth3At11;
+ JacPDstandardNth1At11 =
+ kmadd(J11L,PDstandardNth1At11,kmadd(J21L,PDstandardNth2At11,kmul(J31L,PDstandardNth3At11)));
- JacPDstandardNth1At12 = J11L*PDstandardNth1At12 +
- J21L*PDstandardNth2At12 + J31L*PDstandardNth3At12;
+ JacPDstandardNth1At12 =
+ kmadd(J11L,PDstandardNth1At12,kmadd(J21L,PDstandardNth2At12,kmul(J31L,PDstandardNth3At12)));
- JacPDstandardNth1At13 = J11L*PDstandardNth1At13 +
- J21L*PDstandardNth2At13 + J31L*PDstandardNth3At13;
+ JacPDstandardNth1At13 =
+ kmadd(J11L,PDstandardNth1At13,kmadd(J21L,PDstandardNth2At13,kmul(J31L,PDstandardNth3At13)));
- JacPDstandardNth1At22 = J11L*PDstandardNth1At22 +
- J21L*PDstandardNth2At22 + J31L*PDstandardNth3At22;
+ JacPDstandardNth1At22 =
+ kmadd(J11L,PDstandardNth1At22,kmadd(J21L,PDstandardNth2At22,kmul(J31L,PDstandardNth3At22)));
- JacPDstandardNth1At23 = J11L*PDstandardNth1At23 +
- J21L*PDstandardNth2At23 + J31L*PDstandardNth3At23;
+ JacPDstandardNth1At23 =
+ kmadd(J11L,PDstandardNth1At23,kmadd(J21L,PDstandardNth2At23,kmul(J31L,PDstandardNth3At23)));
- JacPDstandardNth1At33 = J11L*PDstandardNth1At33 +
- J21L*PDstandardNth2At33 + J31L*PDstandardNth3At33;
+ JacPDstandardNth1At33 =
+ kmadd(J11L,PDstandardNth1At33,kmadd(J21L,PDstandardNth2At33,kmul(J31L,PDstandardNth3At33)));
- JacPDstandardNth1gt11 = J11L*PDstandardNth1gt11 +
- J21L*PDstandardNth2gt11 + J31L*PDstandardNth3gt11;
+ JacPDstandardNth1gt11 =
+ kmadd(J11L,PDstandardNth1gt11,kmadd(J21L,PDstandardNth2gt11,kmul(J31L,PDstandardNth3gt11)));
- JacPDstandardNth1gt12 = J11L*PDstandardNth1gt12 +
- J21L*PDstandardNth2gt12 + J31L*PDstandardNth3gt12;
+ JacPDstandardNth1gt12 =
+ kmadd(J11L,PDstandardNth1gt12,kmadd(J21L,PDstandardNth2gt12,kmul(J31L,PDstandardNth3gt12)));
- JacPDstandardNth1gt13 = J11L*PDstandardNth1gt13 +
- J21L*PDstandardNth2gt13 + J31L*PDstandardNth3gt13;
+ JacPDstandardNth1gt13 =
+ kmadd(J11L,PDstandardNth1gt13,kmadd(J21L,PDstandardNth2gt13,kmul(J31L,PDstandardNth3gt13)));
- JacPDstandardNth1gt22 = J11L*PDstandardNth1gt22 +
- J21L*PDstandardNth2gt22 + J31L*PDstandardNth3gt22;
+ JacPDstandardNth1gt22 =
+ kmadd(J11L,PDstandardNth1gt22,kmadd(J21L,PDstandardNth2gt22,kmul(J31L,PDstandardNth3gt22)));
- JacPDstandardNth1gt23 = J11L*PDstandardNth1gt23 +
- J21L*PDstandardNth2gt23 + J31L*PDstandardNth3gt23;
+ JacPDstandardNth1gt23 =
+ kmadd(J11L,PDstandardNth1gt23,kmadd(J21L,PDstandardNth2gt23,kmul(J31L,PDstandardNth3gt23)));
- JacPDstandardNth1gt33 = J11L*PDstandardNth1gt33 +
- J21L*PDstandardNth2gt33 + J31L*PDstandardNth3gt33;
+ JacPDstandardNth1gt33 =
+ kmadd(J11L,PDstandardNth1gt33,kmadd(J21L,PDstandardNth2gt33,kmul(J31L,PDstandardNth3gt33)));
- JacPDstandardNth1phi = J11L*PDstandardNth1phi + J21L*PDstandardNth2phi
- + J31L*PDstandardNth3phi;
+ JacPDstandardNth1phi =
+ kmadd(J11L,PDstandardNth1phi,kmadd(J21L,PDstandardNth2phi,kmul(J31L,PDstandardNth3phi)));
- JacPDstandardNth1trK = J11L*PDstandardNth1trK + J21L*PDstandardNth2trK
- + J31L*PDstandardNth3trK;
+ JacPDstandardNth1trK =
+ kmadd(J11L,PDstandardNth1trK,kmadd(J21L,PDstandardNth2trK,kmul(J31L,PDstandardNth3trK)));
- JacPDstandardNth2At11 = J12L*PDstandardNth1At11 +
- J22L*PDstandardNth2At11 + J32L*PDstandardNth3At11;
+ JacPDstandardNth2At11 =
+ kmadd(J12L,PDstandardNth1At11,kmadd(J22L,PDstandardNth2At11,kmul(J32L,PDstandardNth3At11)));
- JacPDstandardNth2At12 = J12L*PDstandardNth1At12 +
- J22L*PDstandardNth2At12 + J32L*PDstandardNth3At12;
+ JacPDstandardNth2At12 =
+ kmadd(J12L,PDstandardNth1At12,kmadd(J22L,PDstandardNth2At12,kmul(J32L,PDstandardNth3At12)));
- JacPDstandardNth2At13 = J12L*PDstandardNth1At13 +
- J22L*PDstandardNth2At13 + J32L*PDstandardNth3At13;
+ JacPDstandardNth2At13 =
+ kmadd(J12L,PDstandardNth1At13,kmadd(J22L,PDstandardNth2At13,kmul(J32L,PDstandardNth3At13)));
- JacPDstandardNth2At22 = J12L*PDstandardNth1At22 +
- J22L*PDstandardNth2At22 + J32L*PDstandardNth3At22;
+ JacPDstandardNth2At22 =
+ kmadd(J12L,PDstandardNth1At22,kmadd(J22L,PDstandardNth2At22,kmul(J32L,PDstandardNth3At22)));
- JacPDstandardNth2At23 = J12L*PDstandardNth1At23 +
- J22L*PDstandardNth2At23 + J32L*PDstandardNth3At23;
+ JacPDstandardNth2At23 =
+ kmadd(J12L,PDstandardNth1At23,kmadd(J22L,PDstandardNth2At23,kmul(J32L,PDstandardNth3At23)));
- JacPDstandardNth2At33 = J12L*PDstandardNth1At33 +
- J22L*PDstandardNth2At33 + J32L*PDstandardNth3At33;
+ JacPDstandardNth2At33 =
+ kmadd(J12L,PDstandardNth1At33,kmadd(J22L,PDstandardNth2At33,kmul(J32L,PDstandardNth3At33)));
- JacPDstandardNth2gt11 = J12L*PDstandardNth1gt11 +
- J22L*PDstandardNth2gt11 + J32L*PDstandardNth3gt11;
+ JacPDstandardNth2gt11 =
+ kmadd(J12L,PDstandardNth1gt11,kmadd(J22L,PDstandardNth2gt11,kmul(J32L,PDstandardNth3gt11)));
- JacPDstandardNth2gt12 = J12L*PDstandardNth1gt12 +
- J22L*PDstandardNth2gt12 + J32L*PDstandardNth3gt12;
+ JacPDstandardNth2gt12 =
+ kmadd(J12L,PDstandardNth1gt12,kmadd(J22L,PDstandardNth2gt12,kmul(J32L,PDstandardNth3gt12)));
- JacPDstandardNth2gt13 = J12L*PDstandardNth1gt13 +
- J22L*PDstandardNth2gt13 + J32L*PDstandardNth3gt13;
+ JacPDstandardNth2gt13 =
+ kmadd(J12L,PDstandardNth1gt13,kmadd(J22L,PDstandardNth2gt13,kmul(J32L,PDstandardNth3gt13)));
- JacPDstandardNth2gt22 = J12L*PDstandardNth1gt22 +
- J22L*PDstandardNth2gt22 + J32L*PDstandardNth3gt22;
+ JacPDstandardNth2gt22 =
+ kmadd(J12L,PDstandardNth1gt22,kmadd(J22L,PDstandardNth2gt22,kmul(J32L,PDstandardNth3gt22)));
- JacPDstandardNth2gt23 = J12L*PDstandardNth1gt23 +
- J22L*PDstandardNth2gt23 + J32L*PDstandardNth3gt23;
+ JacPDstandardNth2gt23 =
+ kmadd(J12L,PDstandardNth1gt23,kmadd(J22L,PDstandardNth2gt23,kmul(J32L,PDstandardNth3gt23)));
- JacPDstandardNth2gt33 = J12L*PDstandardNth1gt33 +
- J22L*PDstandardNth2gt33 + J32L*PDstandardNth3gt33;
+ JacPDstandardNth2gt33 =
+ kmadd(J12L,PDstandardNth1gt33,kmadd(J22L,PDstandardNth2gt33,kmul(J32L,PDstandardNth3gt33)));
- JacPDstandardNth2phi = J12L*PDstandardNth1phi + J22L*PDstandardNth2phi
- + J32L*PDstandardNth3phi;
+ JacPDstandardNth2phi =
+ kmadd(J12L,PDstandardNth1phi,kmadd(J22L,PDstandardNth2phi,kmul(J32L,PDstandardNth3phi)));
- JacPDstandardNth2trK = J12L*PDstandardNth1trK + J22L*PDstandardNth2trK
- + J32L*PDstandardNth3trK;
+ JacPDstandardNth2trK =
+ kmadd(J12L,PDstandardNth1trK,kmadd(J22L,PDstandardNth2trK,kmul(J32L,PDstandardNth3trK)));
- JacPDstandardNth3At11 = J13L*PDstandardNth1At11 +
- J23L*PDstandardNth2At11 + J33L*PDstandardNth3At11;
+ JacPDstandardNth3At11 =
+ kmadd(J13L,PDstandardNth1At11,kmadd(J23L,PDstandardNth2At11,kmul(J33L,PDstandardNth3At11)));
- JacPDstandardNth3At12 = J13L*PDstandardNth1At12 +
- J23L*PDstandardNth2At12 + J33L*PDstandardNth3At12;
+ JacPDstandardNth3At12 =
+ kmadd(J13L,PDstandardNth1At12,kmadd(J23L,PDstandardNth2At12,kmul(J33L,PDstandardNth3At12)));
- JacPDstandardNth3At13 = J13L*PDstandardNth1At13 +
- J23L*PDstandardNth2At13 + J33L*PDstandardNth3At13;
+ JacPDstandardNth3At13 =
+ kmadd(J13L,PDstandardNth1At13,kmadd(J23L,PDstandardNth2At13,kmul(J33L,PDstandardNth3At13)));
- JacPDstandardNth3At22 = J13L*PDstandardNth1At22 +
- J23L*PDstandardNth2At22 + J33L*PDstandardNth3At22;
+ JacPDstandardNth3At22 =
+ kmadd(J13L,PDstandardNth1At22,kmadd(J23L,PDstandardNth2At22,kmul(J33L,PDstandardNth3At22)));
- JacPDstandardNth3At23 = J13L*PDstandardNth1At23 +
- J23L*PDstandardNth2At23 + J33L*PDstandardNth3At23;
+ JacPDstandardNth3At23 =
+ kmadd(J13L,PDstandardNth1At23,kmadd(J23L,PDstandardNth2At23,kmul(J33L,PDstandardNth3At23)));
- JacPDstandardNth3At33 = J13L*PDstandardNth1At33 +
- J23L*PDstandardNth2At33 + J33L*PDstandardNth3At33;
+ JacPDstandardNth3At33 =
+ kmadd(J13L,PDstandardNth1At33,kmadd(J23L,PDstandardNth2At33,kmul(J33L,PDstandardNth3At33)));
- JacPDstandardNth3gt11 = J13L*PDstandardNth1gt11 +
- J23L*PDstandardNth2gt11 + J33L*PDstandardNth3gt11;
+ JacPDstandardNth3gt11 =
+ kmadd(J13L,PDstandardNth1gt11,kmadd(J23L,PDstandardNth2gt11,kmul(J33L,PDstandardNth3gt11)));
- JacPDstandardNth3gt12 = J13L*PDstandardNth1gt12 +
- J23L*PDstandardNth2gt12 + J33L*PDstandardNth3gt12;
+ JacPDstandardNth3gt12 =
+ kmadd(J13L,PDstandardNth1gt12,kmadd(J23L,PDstandardNth2gt12,kmul(J33L,PDstandardNth3gt12)));
- JacPDstandardNth3gt13 = J13L*PDstandardNth1gt13 +
- J23L*PDstandardNth2gt13 + J33L*PDstandardNth3gt13;
+ JacPDstandardNth3gt13 =
+ kmadd(J13L,PDstandardNth1gt13,kmadd(J23L,PDstandardNth2gt13,kmul(J33L,PDstandardNth3gt13)));
- JacPDstandardNth3gt22 = J13L*PDstandardNth1gt22 +
- J23L*PDstandardNth2gt22 + J33L*PDstandardNth3gt22;
+ JacPDstandardNth3gt22 =
+ kmadd(J13L,PDstandardNth1gt22,kmadd(J23L,PDstandardNth2gt22,kmul(J33L,PDstandardNth3gt22)));
- JacPDstandardNth3gt23 = J13L*PDstandardNth1gt23 +
- J23L*PDstandardNth2gt23 + J33L*PDstandardNth3gt23;
+ JacPDstandardNth3gt23 =
+ kmadd(J13L,PDstandardNth1gt23,kmadd(J23L,PDstandardNth2gt23,kmul(J33L,PDstandardNth3gt23)));
- JacPDstandardNth3gt33 = J13L*PDstandardNth1gt33 +
- J23L*PDstandardNth2gt33 + J33L*PDstandardNth3gt33;
+ JacPDstandardNth3gt33 =
+ kmadd(J13L,PDstandardNth1gt33,kmadd(J23L,PDstandardNth2gt33,kmul(J33L,PDstandardNth3gt33)));
- JacPDstandardNth3phi = J13L*PDstandardNth1phi + J23L*PDstandardNth2phi
- + J33L*PDstandardNth3phi;
+ JacPDstandardNth3phi =
+ kmadd(J13L,PDstandardNth1phi,kmadd(J23L,PDstandardNth2phi,kmul(J33L,PDstandardNth3phi)));
- JacPDstandardNth3trK = J13L*PDstandardNth1trK + J23L*PDstandardNth2trK
- + J33L*PDstandardNth3trK;
+ JacPDstandardNth3trK =
+ kmadd(J13L,PDstandardNth1trK,kmadd(J23L,PDstandardNth2trK,kmul(J33L,PDstandardNth3trK)));
}
else
{
@@ -534,195 +773,221 @@ static void ML_BSSN_MP_constraints2_Body(cGH const * restrict const cctkGH, int
JacPDstandardNth3trK = PDstandardNth3trK;
}
- CCTK_REAL detgt = 1;
+ 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 gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L));
+ CCTK_REAL_VEC Gtl123 =
+ kmul(kadd(JacPDstandardNth2gt13,ksub(JacPDstandardNth3gt12,JacPDstandardNth1gt23)),ToReal(0.5));
- CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt);
+ CCTK_REAL_VEC Gtl133 =
+ kmadd(JacPDstandardNth1gt33,ToReal(-0.5),JacPDstandardNth3gt13);
- CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC Gtl211 =
+ kmadd(JacPDstandardNth2gt11,ToReal(-0.5),JacPDstandardNth1gt12);
- CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L));
+ CCTK_REAL_VEC Gtl212 = kmul(JacPDstandardNth1gt22,ToReal(0.5));
- CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC Gtl213 =
+ kmul(kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth3gt12,JacPDstandardNth2gt13)),ToReal(0.5));
- CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L));
+ CCTK_REAL_VEC Gtl222 = kmul(JacPDstandardNth2gt22,ToReal(0.5));
- CCTK_REAL Gtl111 = 0.5*JacPDstandardNth1gt11;
+ CCTK_REAL_VEC Gtl223 = kmul(JacPDstandardNth3gt22,ToReal(0.5));
- CCTK_REAL Gtl112 = 0.5*JacPDstandardNth2gt11;
+ CCTK_REAL_VEC Gtl233 =
+ kmadd(JacPDstandardNth2gt33,ToReal(-0.5),JacPDstandardNth3gt23);
- CCTK_REAL Gtl113 = 0.5*JacPDstandardNth3gt11;
+ CCTK_REAL_VEC Gtl311 =
+ kmadd(JacPDstandardNth3gt11,ToReal(-0.5),JacPDstandardNth1gt13);
- CCTK_REAL Gtl122 = -0.5*JacPDstandardNth1gt22 + JacPDstandardNth2gt12;
+ CCTK_REAL_VEC Gtl312 =
+ kmul(kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth2gt13,JacPDstandardNth3gt12)),ToReal(0.5));
- CCTK_REAL Gtl123 = 0.5*(-JacPDstandardNth1gt23 + JacPDstandardNth2gt13
- + JacPDstandardNth3gt12);
+ CCTK_REAL_VEC Gtl313 = kmul(JacPDstandardNth1gt33,ToReal(0.5));
- CCTK_REAL Gtl133 = -0.5*JacPDstandardNth1gt33 + JacPDstandardNth3gt13;
+ CCTK_REAL_VEC Gtl322 =
+ kmadd(JacPDstandardNth3gt22,ToReal(-0.5),JacPDstandardNth2gt23);
- CCTK_REAL Gtl211 = JacPDstandardNth1gt12 - 0.5*JacPDstandardNth2gt11;
+ CCTK_REAL_VEC Gtl323 = kmul(JacPDstandardNth2gt33,ToReal(0.5));
- CCTK_REAL Gtl212 = 0.5*JacPDstandardNth1gt22;
+ CCTK_REAL_VEC Gtl333 = kmul(JacPDstandardNth3gt33,ToReal(0.5));
- CCTK_REAL Gtl213 = 0.5*(JacPDstandardNth1gt23 - JacPDstandardNth2gt13
- + JacPDstandardNth3gt12);
+ CCTK_REAL_VEC Gt111 =
+ kmadd(Gtl111,gtu11,kmadd(Gtl211,gtu12,kmul(Gtl311,gtu13)));
- CCTK_REAL Gtl222 = 0.5*JacPDstandardNth2gt22;
+ CCTK_REAL_VEC Gt211 =
+ kmadd(Gtl111,gtu12,kmadd(Gtl211,gtu22,kmul(Gtl311,gtu23)));
- CCTK_REAL Gtl223 = 0.5*JacPDstandardNth3gt22;
+ CCTK_REAL_VEC Gt311 =
+ kmadd(Gtl111,gtu13,kmadd(Gtl211,gtu23,kmul(Gtl311,gtu33)));
- CCTK_REAL Gtl233 = -0.5*JacPDstandardNth2gt33 + JacPDstandardNth3gt23;
+ CCTK_REAL_VEC Gt112 =
+ kmadd(Gtl112,gtu11,kmadd(Gtl212,gtu12,kmul(Gtl312,gtu13)));
- CCTK_REAL Gtl311 = JacPDstandardNth1gt13 - 0.5*JacPDstandardNth3gt11;
+ CCTK_REAL_VEC Gt212 =
+ kmadd(Gtl112,gtu12,kmadd(Gtl212,gtu22,kmul(Gtl312,gtu23)));
- CCTK_REAL Gtl312 = 0.5*(JacPDstandardNth1gt23 + JacPDstandardNth2gt13
- - JacPDstandardNth3gt12);
+ CCTK_REAL_VEC Gt312 =
+ kmadd(Gtl112,gtu13,kmadd(Gtl212,gtu23,kmul(Gtl312,gtu33)));
- CCTK_REAL Gtl313 = 0.5*JacPDstandardNth1gt33;
+ CCTK_REAL_VEC Gt113 =
+ kmadd(Gtl113,gtu11,kmadd(Gtl213,gtu12,kmul(Gtl313,gtu13)));
- CCTK_REAL Gtl322 = JacPDstandardNth2gt23 - 0.5*JacPDstandardNth3gt22;
+ CCTK_REAL_VEC Gt213 =
+ kmadd(Gtl113,gtu12,kmadd(Gtl213,gtu22,kmul(Gtl313,gtu23)));
- CCTK_REAL Gtl323 = 0.5*JacPDstandardNth2gt33;
+ CCTK_REAL_VEC Gt313 =
+ kmadd(Gtl113,gtu13,kmadd(Gtl213,gtu23,kmul(Gtl313,gtu33)));
- CCTK_REAL Gtl333 = 0.5*JacPDstandardNth3gt33;
+ CCTK_REAL_VEC Gt122 =
+ kmadd(Gtl122,gtu11,kmadd(Gtl222,gtu12,kmul(Gtl322,gtu13)));
- CCTK_REAL Gt111 = Gtl111*gtu11 + Gtl211*gtu12 + Gtl311*gtu13;
+ CCTK_REAL_VEC Gt222 =
+ kmadd(Gtl122,gtu12,kmadd(Gtl222,gtu22,kmul(Gtl322,gtu23)));
- CCTK_REAL Gt211 = Gtl111*gtu12 + Gtl211*gtu22 + Gtl311*gtu23;
+ CCTK_REAL_VEC Gt322 =
+ kmadd(Gtl122,gtu13,kmadd(Gtl222,gtu23,kmul(Gtl322,gtu33)));
- CCTK_REAL Gt311 = Gtl111*gtu13 + Gtl211*gtu23 + Gtl311*gtu33;
+ CCTK_REAL_VEC Gt123 =
+ kmadd(Gtl123,gtu11,kmadd(Gtl223,gtu12,kmul(Gtl323,gtu13)));
- CCTK_REAL Gt112 = Gtl112*gtu11 + Gtl212*gtu12 + Gtl312*gtu13;
+ CCTK_REAL_VEC Gt223 =
+ kmadd(Gtl123,gtu12,kmadd(Gtl223,gtu22,kmul(Gtl323,gtu23)));
- CCTK_REAL Gt212 = Gtl112*gtu12 + Gtl212*gtu22 + Gtl312*gtu23;
+ CCTK_REAL_VEC Gt323 =
+ kmadd(Gtl123,gtu13,kmadd(Gtl223,gtu23,kmul(Gtl323,gtu33)));
- CCTK_REAL Gt312 = Gtl112*gtu13 + Gtl212*gtu23 + Gtl312*gtu33;
+ CCTK_REAL_VEC Gt133 =
+ kmadd(Gtl133,gtu11,kmadd(Gtl233,gtu12,kmul(Gtl333,gtu13)));
- CCTK_REAL Gt113 = Gtl113*gtu11 + Gtl213*gtu12 + Gtl313*gtu13;
+ CCTK_REAL_VEC Gt233 =
+ kmadd(Gtl133,gtu12,kmadd(Gtl233,gtu22,kmul(Gtl333,gtu23)));
- CCTK_REAL Gt213 = Gtl113*gtu12 + Gtl213*gtu22 + Gtl313*gtu23;
+ CCTK_REAL_VEC Gt333 =
+ kmadd(Gtl133,gtu13,kmadd(Gtl233,gtu23,kmul(Gtl333,gtu33)));
- CCTK_REAL Gt313 = Gtl113*gtu13 + Gtl213*gtu23 + Gtl313*gtu33;
+ CCTK_REAL_VEC fac1 =
+ IfThen(conformalMethod,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
- CCTK_REAL Gt122 = Gtl122*gtu11 + Gtl222*gtu12 + Gtl322*gtu13;
+ CCTK_REAL_VEC cdphi1 = kmul(fac1,JacPDstandardNth1phi);
- CCTK_REAL Gt222 = Gtl122*gtu12 + Gtl222*gtu22 + Gtl322*gtu23;
+ CCTK_REAL_VEC cdphi2 = kmul(fac1,JacPDstandardNth2phi);
- CCTK_REAL Gt322 = Gtl122*gtu13 + Gtl222*gtu23 + Gtl322*gtu33;
+ CCTK_REAL_VEC cdphi3 = kmul(fac1,JacPDstandardNth3phi);
- CCTK_REAL Gt123 = Gtl123*gtu11 + Gtl223*gtu12 + Gtl323*gtu13;
+ CCTK_REAL_VEC S1 =
+ kmul(INV(alphaL),kmadd(beta1L,eTxxL,kmadd(beta2L,eTxyL,kmsub(beta3L,eTxzL,eTtxL))));
- CCTK_REAL Gt223 = Gtl123*gtu12 + Gtl223*gtu22 + Gtl323*gtu23;
+ CCTK_REAL_VEC S2 =
+ kmul(INV(alphaL),kmadd(beta1L,eTxyL,kmadd(beta2L,eTyyL,kmsub(beta3L,eTyzL,eTtyL))));
- CCTK_REAL Gt323 = Gtl123*gtu13 + Gtl223*gtu23 + Gtl323*gtu33;
+ CCTK_REAL_VEC S3 =
+ kmul(INV(alphaL),kmadd(beta1L,eTxzL,kmadd(beta2L,eTyzL,kmsub(beta3L,eTzzL,eTtzL))));
- CCTK_REAL Gt133 = Gtl133*gtu11 + Gtl233*gtu12 + Gtl333*gtu13;
+ CCTK_REAL_VEC M1L =
+ kmadd(gtu11,JacPDstandardNth1At11,kmadd(gtu22,JacPDstandardNth2At12,kmadd(gtu23,kadd(JacPDstandardNth2At13,JacPDstandardNth3At12),kmadd(gtu33,JacPDstandardNth3At13,kmadd(S1,ToReal(-25.13274122871834590770114706623602307358),kmadd(kmadd(kmadd(At22L,Gt212,kmul(At23L,Gt312)),gtu22,kmadd(kmadd(At13L,Gt112,kmadd(At22L,Gt213,kmadd(At33L,Gt312,kmul(At23L,kadd(Gt212,Gt313))))),gtu23,kmul(kmadd(At13L,Gt113,kmadd(At23L,Gt213,kmul(At33L,Gt313))),gtu33))),ToReal(-1.),kmadd(gtu12,kadd(JacPDstandardNth1At12,kadd(JacPDstandardNth2At11,kmadd(At13L,kmul(Gt312,ToReal(-3.)),kmul(At22L,kmul(Gt211,ToReal(-1.)))))),kmadd(gtu13,kadd(JacPDstandardNth1At13,kadd(JacPDstandardNth3At11,kmadd(At13L,kmul(Gt313,ToReal(-3.)),kmul(At23L,kmul(Gt211,ToReal(-1.)))))),kmadd(Gt311,kmadd(At13L,kmul(gtu11,ToReal(-2.)),kmul(kmadd(At23L,gtu12,kmul(At33L,gtu13)),ToReal(-1.))),kmadd(JacPDstandardNth1trK,ToReal(-0.6666666666666666666666666666666666666667),kmadd(At13L,kmadd(kmadd(Gt322,gtu22,kmul(Gt333,gtu33)),ToReal(-1.),kmadd(cdphi3,kmul(gtu33,ToReal(6.)),kmadd(gtu13,kmadd(Gt111,ToReal(-1.),kmul(cdphi1,ToReal(6.))),kmul(gtu23,kmadd(Gt323,ToReal(-2.),kmul(cdphi2,ToReal(6.))))))),kmadd(At11L,kmadd(Gt123,kmul(gtu23,ToReal(-2.)),kmadd(kmadd(Gt122,gtu22,kmul(Gt133,gtu33)),ToReal(-1.),kmadd(gtu11,kmadd(Gt111,ToReal(-2.),kmul(cdphi1,ToReal(6.))),kmadd(gtu12,kmadd(Gt112,ToReal(-3.),kmul(cdphi2,ToReal(6.))),kmul(gtu13,kmadd(Gt113,ToReal(-3.),kmul(cdphi3,ToReal(6.)))))))),kmul(At12L,kmadd(Gt213,kmul(gtu13,ToReal(-3.)),kmadd(kmadd(Gt211,gtu11,kmul(Gt223,gtu23)),ToReal(-2.),kmadd(Gt233,kmul(gtu33,ToReal(-1.)),kmadd(gtu12,kmadd(Gt212,ToReal(-3.),kmadd(Gt111,ToReal(-1.),kmul(cdphi1,ToReal(6.)))),kmadd(gtu22,kmadd(kadd(Gt112,Gt222),ToReal(-1.),kmul(cdphi2,ToReal(6.))),kmul(gtu23,kmadd(Gt113,ToReal(-1.),kmul(cdphi3,ToReal(6.))))))))))))))))))))));
- CCTK_REAL Gt233 = Gtl133*gtu12 + Gtl233*gtu22 + Gtl333*gtu23;
+ CCTK_REAL_VEC M2L =
+ kmadd(gtu11,JacPDstandardNth1At12,kmadd(gtu12,kadd(JacPDstandardNth1At22,JacPDstandardNth2At12),kmadd(gtu22,JacPDstandardNth2At22,kmadd(gtu33,JacPDstandardNth3At23,kmadd(S2,ToReal(-25.13274122871834590770114706623602307358),kmadd(kmadd(kmadd(At22L,Gt211,kmadd(At23L,Gt311,kmul(At13L,Gt312))),gtu11,kmadd(kmadd(At23L,Gt212,kmul(At33L,Gt312)),gtu13,kmadd(At11L,kmadd(Gt112,gtu11,kmadd(Gt122,gtu12,kmul(Gt123,gtu13))),kmadd(kmadd(At23L,Gt223,kmul(At33L,Gt323)),gtu33,kmul(At13L,kmadd(Gt322,gtu12,kmadd(Gt112,gtu13,kmadd(Gt122,gtu23,kmul(Gt123,gtu33))))))))),ToReal(-1.),kmadd(gtu23,kadd(JacPDstandardNth2At23,kadd(JacPDstandardNth3At22,kmadd(kmadd(At22L,Gt223,kmul(At23L,Gt323)),ToReal(-3.),kmul(kmadd(At23L,Gt222,kmul(At33L,Gt322)),ToReal(-1.))))),kmadd(gtu13,kadd(JacPDstandardNth1At23,kadd(JacPDstandardNth3At12,kmadd(At23L,kmul(Gt313,ToReal(-2.)),kmul(At13L,kmul(Gt323,ToReal(-1.)))))),kmadd(JacPDstandardNth2trK,ToReal(-0.6666666666666666666666666666666666666667),kmadd(At23L,kmadd(Gt312,kmul(gtu12,ToReal(-3.)),kmadd(Gt322,kmul(gtu22,ToReal(-2.)),kmadd(Gt333,kmul(gtu33,ToReal(-1.)),kmul(kmadd(cdphi1,gtu13,kmadd(cdphi2,gtu23,kmul(cdphi3,gtu33))),ToReal(6.))))),kmadd(At22L,kmadd(kmadd(Gt213,gtu13,kmul(Gt222,gtu22)),ToReal(-2.),kmadd(Gt233,kmul(gtu33,ToReal(-1.)),kmadd(kmadd(cdphi2,gtu22,kmul(cdphi3,gtu23)),ToReal(6.),kmul(gtu12,kmadd(Gt212,ToReal(-3.),kmul(cdphi1,ToReal(6.))))))),kmul(At12L,kmadd(Gt123,kmul(gtu23,ToReal(-3.)),kmadd(Gt122,kmul(gtu22,ToReal(-2.)),kmadd(Gt133,kmul(gtu33,ToReal(-1.)),kmadd(gtu11,kmadd(kadd(Gt111,Gt212),ToReal(-1.),kmul(cdphi1,ToReal(6.))),kmadd(gtu12,kmadd(Gt112,ToReal(-3.),kmadd(Gt222,ToReal(-1.),kmul(cdphi2,ToReal(6.)))),kmul(gtu13,kmadd(Gt113,ToReal(-2.),kmadd(Gt223,ToReal(-1.),kmul(cdphi3,ToReal(6.))))))))))))))))))))));
- CCTK_REAL Gt333 = Gtl133*gtu13 + Gtl233*gtu23 + Gtl333*gtu33;
+ CCTK_REAL_VEC M3L =
+ kmadd(gtu11,JacPDstandardNth1At13,kmadd(gtu22,JacPDstandardNth2At23,kmadd(gtu13,kadd(JacPDstandardNth1At33,JacPDstandardNth3At13),kmadd(gtu33,JacPDstandardNth3At33,kmadd(S3,ToReal(-25.13274122871834590770114706623602307358),kmadd(kmadd(kmadd(At23L,Gt211,kmadd(At12L,Gt213,kmul(At33L,Gt311))),gtu11,kmadd(kmadd(At22L,Gt213,kmul(At12L,kadd(Gt113,Gt223))),gtu12,kmadd(At11L,kmadd(Gt113,gtu11,kmadd(Gt123,gtu12,kmul(Gt133,gtu13))),kmadd(kmadd(At23L,Gt222,kmul(At22L,Gt223)),gtu22,kmul(At12L,kmadd(Gt233,gtu13,kmadd(Gt123,gtu22,kmul(Gt133,gtu23)))))))),ToReal(-1.),kmadd(gtu12,kadd(JacPDstandardNth1At23,kadd(JacPDstandardNth2At13,kmadd(At33L,kmul(Gt312,ToReal(-2.)),kmul(At23L,kmul(Gt313,ToReal(-1.)))))),kmadd(gtu23,kadd(JacPDstandardNth2At33,kadd(JacPDstandardNth3At23,kmadd(kmadd(At23L,Gt223,kmul(At33L,Gt323)),ToReal(-3.),kmul(kmadd(At22L,Gt233,kmul(At23L,Gt333)),ToReal(-1.))))),kmadd(JacPDstandardNth3trK,ToReal(-0.6666666666666666666666666666666666666667),kmadd(At33L,kmadd(Gt333,kmul(gtu33,ToReal(-2.)),kmadd(Gt322,kmul(gtu22,ToReal(-1.)),kmadd(kmadd(cdphi2,gtu23,kmul(cdphi3,gtu33)),ToReal(6.),kmul(gtu13,kmadd(Gt313,ToReal(-3.),kmul(cdphi1,ToReal(6.))))))),kmadd(At23L,kmadd(Gt213,kmul(gtu13,ToReal(-3.)),kmadd(Gt233,kmul(gtu33,ToReal(-2.)),kmadd(cdphi3,kmul(gtu23,ToReal(6.)),kmadd(gtu12,kmadd(Gt212,ToReal(-2.),kmul(cdphi1,ToReal(6.))),kmul(gtu22,kmadd(Gt323,ToReal(-1.),kmul(cdphi2,ToReal(6.)))))))),kmul(At13L,kmadd(Gt123,kmul(gtu23,ToReal(-3.)),kmadd(Gt133,kmul(gtu33,ToReal(-2.)),kmadd(Gt122,kmul(gtu22,ToReal(-1.)),kmadd(gtu11,kmadd(kadd(Gt111,Gt313),ToReal(-1.),kmul(cdphi1,ToReal(6.))),kmadd(gtu12,kmadd(Gt112,ToReal(-2.),kmadd(Gt323,ToReal(-1.),kmul(cdphi2,ToReal(6.)))),kmul(gtu13,kmadd(Gt113,ToReal(-3.),kmadd(Gt333,ToReal(-1.),kmul(cdphi3,ToReal(6.))))))))))))))))))))));
- CCTK_REAL fac1 = IfThen(conformalMethod,-0.5*INV(phiL),1);
+ CCTK_REAL_VEC cSL = klog(detgt);
- CCTK_REAL cdphi1 = fac1*JacPDstandardNth1phi;
+ 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 cdphi2 = fac1*JacPDstandardNth2phi;
+ 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 cdphi3 = fac1*JacPDstandardNth3phi;
+ 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 S1 = (-eTtxL + beta1L*eTxxL + beta2L*eTxyL +
- beta3L*eTxzL)*INV(alphaL);
+ 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)))));
- CCTK_REAL S2 = (-eTtyL + beta1L*eTxyL + beta2L*eTyyL +
- beta3L*eTyzL)*INV(alphaL);
+ /* If necessary, store only partial vectors after the first iteration */
- CCTK_REAL S3 = (-eTtzL + beta1L*eTxzL + beta2L*eTyzL +
- beta3L*eTzzL)*INV(alphaL);
+ 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(cA[index],cAL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(cS[index],cSL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(cXt1[index],cXt1L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(cXt2[index],cXt2L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(cXt3[index],cXt3L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(M1[index],M1L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(M2[index],M2L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(M3[index],M3L,elt_count_lo,elt_count_hi);
+ break;
+ }
- CCTK_REAL M1L = Gt311*(-2.*At13L*gtu11 - 1.*(At23L*gtu12 +
- At33L*gtu13)) + At12L*((6.*cdphi1 - 1.*Gt111 - 3.*Gt212)*gtu12 -
- 3.*Gt213*gtu13 + (6.*cdphi2 - 1.*(Gt112 + Gt222))*gtu22 + (6.*cdphi3 -
- 1.*Gt113)*gtu23 - 2.*(Gt211*gtu11 + Gt223*gtu23) - 1.*Gt233*gtu33) -
- 1.*((At22L*Gt212 + At23L*Gt312)*gtu22 + (At13L*Gt112 + At22L*Gt213 +
- At33L*Gt312 + At23L*(Gt212 + Gt313))*gtu23 + (At13L*Gt113 + At23L*Gt213
- + At33L*Gt313)*gtu33) + At11L*((6.*cdphi1 - 2.*Gt111)*gtu11 +
- (6.*cdphi2 - 3.*Gt112)*gtu12 + (6.*cdphi3 - 3.*Gt113)*gtu13 -
- 2.*Gt123*gtu23 - 1.*(Gt122*gtu22 + Gt133*gtu33)) + At13L*((6.*cdphi1 -
- 1.*Gt111)*gtu13 + (6.*cdphi2 - 2.*Gt323)*gtu23 + 6.*cdphi3*gtu33 -
- 1.*(Gt322*gtu22 + Gt333*gtu33)) + gtu11*JacPDstandardNth1At11 -
- 0.6666666666666666666666666666666666666667*JacPDstandardNth1trK +
- gtu12*(-1.*At22L*Gt211 - 3.*At13L*Gt312 + JacPDstandardNth1At12 +
- JacPDstandardNth2At11) + gtu22*JacPDstandardNth2At12 +
- gtu13*(-1.*At23L*Gt211 - 3.*At13L*Gt313 + JacPDstandardNth1At13 +
- JacPDstandardNth3At11) + gtu23*(JacPDstandardNth2At13 +
- JacPDstandardNth3At12) + gtu33*JacPDstandardNth3At13 -
- 25.13274122871834590770114706623602307358*S1;
+ /* 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(cA[index],cAL,elt_count);
+ vec_store_nta_partial_hi(cS[index],cSL,elt_count);
+ vec_store_nta_partial_hi(cXt1[index],cXt1L,elt_count);
+ vec_store_nta_partial_hi(cXt2[index],cXt2L,elt_count);
+ vec_store_nta_partial_hi(cXt3[index],cXt3L,elt_count);
+ vec_store_nta_partial_hi(M1[index],M1L,elt_count);
+ vec_store_nta_partial_hi(M2[index],M2L,elt_count);
+ vec_store_nta_partial_hi(M3[index],M3L,elt_count);
+ continue;
+ }
- CCTK_REAL M2L = At12L*((6.*cdphi1 - 1.*(Gt111 + Gt212))*gtu11 +
- (6.*cdphi2 - 3.*Gt112 - 1.*Gt222)*gtu12 + (6.*cdphi3 - 2.*Gt113 -
- 1.*Gt223)*gtu13 - 2.*Gt122*gtu22 - 3.*Gt123*gtu23 - 1.*Gt133*gtu33) +
- At22L*((6.*cdphi1 - 3.*Gt212)*gtu12 - 2.*(Gt213*gtu13 + Gt222*gtu22) +
- 6.*(cdphi2*gtu22 + cdphi3*gtu23) - 1.*Gt233*gtu33) +
- At23L*(-3.*Gt312*gtu12 - 2.*Gt322*gtu22 - 1.*Gt333*gtu33 +
- 6.*(cdphi1*gtu13 + cdphi2*gtu23 + cdphi3*gtu33)) - 1.*((At22L*Gt211 +
- At23L*Gt311 + At13L*Gt312)*gtu11 + (At23L*Gt212 + At33L*Gt312)*gtu13 +
- At11L*(Gt112*gtu11 + Gt122*gtu12 + Gt123*gtu13) + (At23L*Gt223 +
- At33L*Gt323)*gtu33 + At13L*(Gt322*gtu12 + Gt112*gtu13 + Gt122*gtu23 +
- Gt123*gtu33)) + gtu11*JacPDstandardNth1At12 +
- gtu12*(JacPDstandardNth1At22 + JacPDstandardNth2At12) +
- gtu22*JacPDstandardNth2At22 -
- 0.6666666666666666666666666666666666666667*JacPDstandardNth2trK +
- gtu13*(-2.*At23L*Gt313 - 1.*At13L*Gt323 + JacPDstandardNth1At23 +
- JacPDstandardNth3At12) + gtu23*(-1.*(At23L*Gt222 + At33L*Gt322) -
- 3.*(At22L*Gt223 + At23L*Gt323) + JacPDstandardNth2At23 +
- JacPDstandardNth3At22) + gtu33*JacPDstandardNth3At23 -
- 25.13274122871834590770114706623602307358*S2;
+ /* If necessary, store only partial vectors after the last iteration */
- CCTK_REAL M3L = -1.*((At23L*Gt211 + At12L*Gt213 + At33L*Gt311)*gtu11 +
- (At22L*Gt213 + At12L*(Gt113 + Gt223))*gtu12 + At11L*(Gt113*gtu11 +
- Gt123*gtu12 + Gt133*gtu13) + (At23L*Gt222 + At22L*Gt223)*gtu22 +
- At12L*(Gt233*gtu13 + Gt123*gtu22 + Gt133*gtu23)) + At13L*((6.*cdphi1 -
- 1.*(Gt111 + Gt313))*gtu11 + (6.*cdphi2 - 2.*Gt112 - 1.*Gt323)*gtu12 +
- (6.*cdphi3 - 3.*Gt113 - 1.*Gt333)*gtu13 - 1.*Gt122*gtu22 -
- 3.*Gt123*gtu23 - 2.*Gt133*gtu33) + At23L*((6.*cdphi1 - 2.*Gt212)*gtu12
- - 3.*Gt213*gtu13 + (6.*cdphi2 - 1.*Gt323)*gtu22 + 6.*cdphi3*gtu23 -
- 2.*Gt233*gtu33) + At33L*((6.*cdphi1 - 3.*Gt313)*gtu13 - 1.*Gt322*gtu22
- - 2.*Gt333*gtu33 + 6.*(cdphi2*gtu23 + cdphi3*gtu33)) +
- gtu11*JacPDstandardNth1At13 + gtu12*(-2.*At33L*Gt312 - 1.*At23L*Gt313 +
- JacPDstandardNth1At23 + JacPDstandardNth2At13) +
- gtu22*JacPDstandardNth2At23 + gtu13*(JacPDstandardNth1At33 +
- JacPDstandardNth3At13) + gtu23*(-3.*(At23L*Gt223 + At33L*Gt323) -
- 1.*(At22L*Gt233 + At23L*Gt333) + JacPDstandardNth2At33 +
- JacPDstandardNth3At23) + gtu33*JacPDstandardNth3At33 -
- 0.6666666666666666666666666666666666666667*JacPDstandardNth3trK -
- 25.13274122871834590770114706623602307358*S3;
-
- CCTK_REAL cSL = Log(detgt);
-
- CCTK_REAL cXt1L = Gt111*gtu11 + Gt122*gtu22 + 2*(Gt112*gtu12 +
- Gt113*gtu13 + Gt123*gtu23) + Gt133*gtu33 - Xt1L;
-
- CCTK_REAL cXt2L = Gt211*gtu11 + Gt222*gtu22 + 2*(Gt212*gtu12 +
- Gt213*gtu13 + Gt223*gtu23) + Gt233*gtu33 - Xt2L;
-
- CCTK_REAL cXt3L = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu12 +
- Gt313*gtu13 + Gt323*gtu23) + Gt333*gtu33 - Xt3L;
-
- CCTK_REAL cAL = At11L*gtu11 + At22L*gtu22 + 2*(At12L*gtu12 +
- At13L*gtu13 + At23L*gtu23) + At33L*gtu33;
-
- /* Copy local copies back to grid functions */
- cA[index] = cAL;
- cS[index] = cSL;
- cXt1[index] = cXt1L;
- cXt2[index] = cXt2L;
- cXt3[index] = cXt3L;
- M1[index] = M1L;
- M2[index] = M2L;
- M3[index] = M3L;
+ 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(cA[index],cAL,elt_count);
+ vec_store_nta_partial_lo(cS[index],cSL,elt_count);
+ vec_store_nta_partial_lo(cXt1[index],cXt1L,elt_count);
+ vec_store_nta_partial_lo(cXt2[index],cXt2L,elt_count);
+ vec_store_nta_partial_lo(cXt3[index],cXt3L,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(cA[index],cAL);
+ vec_store_nta(cS[index],cSL);
+ vec_store_nta(cXt1[index],cXt1L);
+ vec_store_nta(cXt2[index],cXt2L);
+ vec_store_nta(cXt3[index],cXt3L);
+ vec_store_nta(M1[index],M1L);
+ vec_store_nta(M2[index],M2L);
+ vec_store_nta(M3[index],M3L);
}
- LC_ENDLOOP3 (ML_BSSN_MP_constraints2);
+ LC_ENDLOOP3VEC (ML_BSSN_MP_constraints2);
}
extern "C" void ML_BSSN_MP_constraints2(CCTK_ARGUMENTS)
@@ -730,5 +995,43 @@ extern "C" void ML_BSSN_MP_constraints2(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_constraints2_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_MP_constraints2_calc_every != ML_BSSN_MP_constraints2_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN_MP::ML_cons_detg","ML_BSSN_MP::ML_cons_Gamma","ML_BSSN_MP::ML_cons_traceA","ML_BSSN_MP::ML_curv","ML_BSSN_MP::ML_Gamma","ML_BSSN_MP::ML_lapse","ML_BSSN_MP::ML_log_confac","ML_BSSN_MP::ML_metric","ML_BSSN_MP::ML_mom","ML_BSSN_MP::ML_shift","ML_BSSN_MP::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_constraints2", 11, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_constraints2", 1, 1, 1);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_constraints2", 2, 2, 2);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_constraints2", 3, 3, 3);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_constraints2", 4, 4, 4);
+ break;
+ }
+
GenericFD_LoopOverInterior(cctkGH, &ML_BSSN_MP_constraints2_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_MP_constraints2_Body");
+ }
}
diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_convertFromADMBase.cc b/ML_BSSN_MP/src/ML_BSSN_MP_convertFromADMBase.cc
index ff4fd8e..10920d8 100644
--- a/ML_BSSN_MP/src/ML_BSSN_MP_convertFromADMBase.cc
+++ b/ML_BSSN_MP/src/ML_BSSN_MP_convertFromADMBase.cc
@@ -13,15 +13,16 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
-static void ML_BSSN_MP_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_MP_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;
@@ -29,20 +30,6 @@ static void ML_BSSN_MP_convertFromADMBase_Body(cGH const * restrict const cctkGH
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_convertFromADMBase_Body");
- }
-
- if (cctk_iteration % ML_BSSN_MP_convertFromADMBase_calc_every != ML_BSSN_MP_convertFromADMBase_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ADMBase::curv","ADMBase::lapse","ADMBase::metric","ADMBase::shift","ML_BSSN_MP::ML_curv","ML_BSSN_MP::ML_lapse","ML_BSSN_MP::ML_log_confac","ML_BSSN_MP::ML_metric","ML_BSSN_MP::ML_shift","ML_BSSN_MP::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_convertFromADMBase", 10, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -52,41 +39,102 @@ static void ML_BSSN_MP_convertFromADMBase_Body(cGH const * restrict const cctkGH
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const p1o24dx = 0.0416666666666666666666666666667*INV(dx);
- CCTK_REAL const p1o24dy = 0.0416666666666666666666666666667*INV(dy);
- CCTK_REAL const p1o24dz = 0.0416666666666666666666666666667*INV(dz);
- CCTK_REAL const p1o64dx = 0.015625*INV(dx);
- CCTK_REAL const p1o64dy = 0.015625*INV(dy);
- CCTK_REAL const p1o64dz = 0.015625*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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)
@@ -133,34 +181,43 @@ static void ML_BSSN_MP_convertFromADMBase_Body(cGH const * restrict const cctkGH
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_LOOP3 (ML_BSSN_MP_convertFromADMBase,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_MP_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 alpL = alp[index];
- CCTK_REAL betaxL = betax[index];
- CCTK_REAL betayL = betay[index];
- CCTK_REAL betazL = betaz[index];
- CCTK_REAL gxxL = gxx[index];
- CCTK_REAL gxyL = gxy[index];
- CCTK_REAL gxzL = gxz[index];
- CCTK_REAL gyyL = gyy[index];
- CCTK_REAL gyzL = gyz[index];
- CCTK_REAL gzzL = gzz[index];
- CCTK_REAL kxxL = kxx[index];
- CCTK_REAL kxyL = kxy[index];
- CCTK_REAL kxzL = kxz[index];
- CCTK_REAL kyyL = kyy[index];
- CCTK_REAL kyzL = kyz[index];
- CCTK_REAL kzzL = kzz[index];
- CCTK_REAL phiL = phi[index];
- CCTK_REAL trKL = trK[index];
+ 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]);
@@ -168,111 +225,203 @@ static void ML_BSSN_MP_convertFromADMBase_Body(cGH const * restrict const cctkGH
/* Precompute derivatives */
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
/* Calculate temporaries and grid functions */
- CCTK_REAL g11 = gxxL;
+ CCTK_REAL_VEC g11 = gxxL;
- CCTK_REAL g12 = gxyL;
+ CCTK_REAL_VEC g12 = gxyL;
- CCTK_REAL g13 = gxzL;
+ CCTK_REAL_VEC g13 = gxzL;
- CCTK_REAL g22 = gyyL;
+ CCTK_REAL_VEC g22 = gyyL;
- CCTK_REAL g23 = gyzL;
+ CCTK_REAL_VEC g23 = gyzL;
- CCTK_REAL g33 = gzzL;
+ CCTK_REAL_VEC g33 = gzzL;
- CCTK_REAL detg = 2*g12*g13*g23 + g33*(g11*g22 - SQR(g12)) -
- g22*SQR(g13) - g11*SQR(g23);
+ 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 gu11 = INV(detg)*(g22*g33 - SQR(g23));
+ CCTK_REAL_VEC gu11 = kmul(INV(detg),kmsub(g22,g33,SQR(g23)));
- CCTK_REAL gu12 = (g13*g23 - g12*g33)*INV(detg);
+ CCTK_REAL_VEC gu12 = kmul(INV(detg),kmsub(g13,g23,kmul(g12,g33)));
- CCTK_REAL gu13 = (-(g13*g22) + g12*g23)*INV(detg);
+ CCTK_REAL_VEC gu13 = kmul(INV(detg),kmsub(g12,g23,kmul(g13,g22)));
- CCTK_REAL gu22 = INV(detg)*(g11*g33 - SQR(g13));
+ CCTK_REAL_VEC gu22 = kmul(INV(detg),kmsub(g11,g33,SQR(g13)));
- CCTK_REAL gu23 = (g12*g13 - g11*g23)*INV(detg);
+ CCTK_REAL_VEC gu23 = kmul(INV(detg),kmsub(g12,g13,kmul(g11,g23)));
- CCTK_REAL gu33 = INV(detg)*(g11*g22 - SQR(g12));
+ CCTK_REAL_VEC gu33 = kmul(INV(detg),kmsub(g11,g22,SQR(g12)));
- CCTK_REAL em4phi;
+ CCTK_REAL_VEC em4phi;
if (conformalMethod)
{
- phiL = pow(detg,-0.166666666666666666666666666667);
+ phiL = kpow(detg,-0.166666666666666666666666666667);
em4phi = SQR(phiL);
}
else
{
- phiL = 0.0833333333333333333333333333333*Log(detg);
+ phiL = kmul(klog(detg),ToReal(0.0833333333333333333333333333333));
- em4phi = exp(-4*phiL);
+ em4phi = kexp(kmul(phiL,ToReal(-4)));
}
- CCTK_REAL gt11L = em4phi*g11;
+ 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);
- CCTK_REAL gt12L = em4phi*g12;
+ trKL =
+ kmadd(gu11,kxxL,kmadd(gu22,kyyL,kmadd(gu33,kzzL,kmul(kmadd(gu12,kxyL,kmadd(gu13,kxzL,kmul(gu23,kyzL))),ToReal(2)))));
- CCTK_REAL gt13L = em4phi*g13;
+ CCTK_REAL_VEC At11L =
+ kmul(em4phi,kmadd(g11,kmul(trKL,ToReal(-0.333333333333333333333333333333)),kxxL));
- CCTK_REAL gt22L = em4phi*g22;
+ CCTK_REAL_VEC At12L =
+ kmul(em4phi,kmadd(g12,kmul(trKL,ToReal(-0.333333333333333333333333333333)),kxyL));
- CCTK_REAL gt23L = em4phi*g23;
+ CCTK_REAL_VEC At13L =
+ kmul(em4phi,kmadd(g13,kmul(trKL,ToReal(-0.333333333333333333333333333333)),kxzL));
- CCTK_REAL gt33L = em4phi*g33;
+ CCTK_REAL_VEC At22L =
+ kmul(em4phi,kmadd(g22,kmul(trKL,ToReal(-0.333333333333333333333333333333)),kyyL));
- trKL = gu11*kxxL + gu22*kyyL + 2*(gu12*kxyL + gu13*kxzL + gu23*kyzL) +
- gu33*kzzL;
+ CCTK_REAL_VEC At23L =
+ kmul(em4phi,kmadd(g23,kmul(trKL,ToReal(-0.333333333333333333333333333333)),kyzL));
- CCTK_REAL At11L = em4phi*(kxxL -
- 0.333333333333333333333333333333*g11*trKL);
+ CCTK_REAL_VEC At33L =
+ kmul(em4phi,kmadd(g33,kmul(trKL,ToReal(-0.333333333333333333333333333333)),kzzL));
- CCTK_REAL At12L = em4phi*(kxyL -
- 0.333333333333333333333333333333*g12*trKL);
+ CCTK_REAL_VEC alphaL = alpL;
- CCTK_REAL At13L = em4phi*(kxzL -
- 0.333333333333333333333333333333*g13*trKL);
+ CCTK_REAL_VEC beta1L = betaxL;
- CCTK_REAL At22L = em4phi*(kyyL -
- 0.333333333333333333333333333333*g22*trKL);
+ CCTK_REAL_VEC beta2L = betayL;
- CCTK_REAL At23L = em4phi*(kyzL -
- 0.333333333333333333333333333333*g23*trKL);
+ CCTK_REAL_VEC beta3L = betazL;
- CCTK_REAL At33L = em4phi*(kzzL -
- 0.333333333333333333333333333333*g33*trKL);
+ /* If necessary, store only partial vectors after the first iteration */
- CCTK_REAL alphaL = alpL;
+ 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(At11[index],At11L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At12[index],At12L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At13[index],At13L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At22[index],At22L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At23[index],At23L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At33[index],At33L,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(gt11[index],gt11L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt12[index],gt12L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt13[index],gt13L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt22[index],gt22L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt23[index],gt23L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt33[index],gt33L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(phi[index],phiL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(trK[index],trKL,elt_count_lo,elt_count_hi);
+ break;
+ }
- CCTK_REAL beta1L = betaxL;
+ /* If necessary, store only partial vectors after the first iteration */
- CCTK_REAL beta2L = betayL;
+ 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(At11[index],At11L,elt_count);
+ vec_store_nta_partial_hi(At12[index],At12L,elt_count);
+ vec_store_nta_partial_hi(At13[index],At13L,elt_count);
+ vec_store_nta_partial_hi(At22[index],At22L,elt_count);
+ vec_store_nta_partial_hi(At23[index],At23L,elt_count);
+ vec_store_nta_partial_hi(At33[index],At33L,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(gt11[index],gt11L,elt_count);
+ vec_store_nta_partial_hi(gt12[index],gt12L,elt_count);
+ vec_store_nta_partial_hi(gt13[index],gt13L,elt_count);
+ vec_store_nta_partial_hi(gt22[index],gt22L,elt_count);
+ vec_store_nta_partial_hi(gt23[index],gt23L,elt_count);
+ vec_store_nta_partial_hi(gt33[index],gt33L,elt_count);
+ vec_store_nta_partial_hi(phi[index],phiL,elt_count);
+ vec_store_nta_partial_hi(trK[index],trKL,elt_count);
+ continue;
+ }
- CCTK_REAL beta3L = betazL;
+ /* If necessary, store only partial vectors after the last iteration */
- /* Copy local copies back to grid functions */
- alpha[index] = alphaL;
- At11[index] = At11L;
- At12[index] = At12L;
- At13[index] = At13L;
- At22[index] = At22L;
- At23[index] = At23L;
- At33[index] = At33L;
- beta1[index] = beta1L;
- beta2[index] = beta2L;
- beta3[index] = beta3L;
- gt11[index] = gt11L;
- gt12[index] = gt12L;
- gt13[index] = gt13L;
- gt22[index] = gt22L;
- gt23[index] = gt23L;
- gt33[index] = gt33L;
- phi[index] = phiL;
- trK[index] = trKL;
+ 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(At11[index],At11L,elt_count);
+ vec_store_nta_partial_lo(At12[index],At12L,elt_count);
+ vec_store_nta_partial_lo(At13[index],At13L,elt_count);
+ vec_store_nta_partial_lo(At22[index],At22L,elt_count);
+ vec_store_nta_partial_lo(At23[index],At23L,elt_count);
+ vec_store_nta_partial_lo(At33[index],At33L,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(gt11[index],gt11L,elt_count);
+ vec_store_nta_partial_lo(gt12[index],gt12L,elt_count);
+ vec_store_nta_partial_lo(gt13[index],gt13L,elt_count);
+ vec_store_nta_partial_lo(gt22[index],gt22L,elt_count);
+ vec_store_nta_partial_lo(gt23[index],gt23L,elt_count);
+ vec_store_nta_partial_lo(gt33[index],gt33L,elt_count);
+ vec_store_nta_partial_lo(phi[index],phiL,elt_count);
+ vec_store_nta_partial_lo(trK[index],trKL,elt_count);
+ break;
+ }
+ vec_store_nta(alpha[index],alphaL);
+ vec_store_nta(At11[index],At11L);
+ vec_store_nta(At12[index],At12L);
+ vec_store_nta(At13[index],At13L);
+ vec_store_nta(At22[index],At22L);
+ vec_store_nta(At23[index],At23L);
+ vec_store_nta(At33[index],At33L);
+ vec_store_nta(beta1[index],beta1L);
+ vec_store_nta(beta2[index],beta2L);
+ vec_store_nta(beta3[index],beta3L);
+ vec_store_nta(gt11[index],gt11L);
+ vec_store_nta(gt12[index],gt12L);
+ vec_store_nta(gt13[index],gt13L);
+ vec_store_nta(gt22[index],gt22L);
+ vec_store_nta(gt23[index],gt23L);
+ vec_store_nta(gt33[index],gt33L);
+ vec_store_nta(phi[index],phiL);
+ vec_store_nta(trK[index],trKL);
}
- LC_ENDLOOP3 (ML_BSSN_MP_convertFromADMBase);
+ LC_ENDLOOP3VEC (ML_BSSN_MP_convertFromADMBase);
}
extern "C" void ML_BSSN_MP_convertFromADMBase(CCTK_ARGUMENTS)
@@ -280,5 +429,39 @@ extern "C" void ML_BSSN_MP_convertFromADMBase(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_convertFromADMBase_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_MP_convertFromADMBase_calc_every != ML_BSSN_MP_convertFromADMBase_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ADMBase::curv","ADMBase::lapse","ADMBase::metric","ADMBase::shift","ML_BSSN_MP::ML_curv","ML_BSSN_MP::ML_lapse","ML_BSSN_MP::ML_log_confac","ML_BSSN_MP::ML_metric","ML_BSSN_MP::ML_shift","ML_BSSN_MP::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_convertFromADMBase", 10, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverEverything(cctkGH, &ML_BSSN_MP_convertFromADMBase_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_MP_convertFromADMBase_Body");
+ }
}
diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_convertFromADMBaseGamma.cc b/ML_BSSN_MP/src/ML_BSSN_MP_convertFromADMBaseGamma.cc
index 6bb601e..c6d5dc4 100644
--- a/ML_BSSN_MP/src/ML_BSSN_MP_convertFromADMBaseGamma.cc
+++ b/ML_BSSN_MP/src/ML_BSSN_MP_convertFromADMBaseGamma.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_MP_convertFromADMBaseGamma_SelectBCs(CCTK_ARGUMENTS)
{
@@ -39,7 +40,7 @@ extern "C" void ML_BSSN_MP_convertFromADMBaseGamma_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_BSSN_MP_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_MP_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;
@@ -47,21 +48,6 @@ static void ML_BSSN_MP_convertFromADMBaseGamma_Body(cGH const * restrict const c
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_convertFromADMBaseGamma_Body");
- }
-
- if (cctk_iteration % ML_BSSN_MP_convertFromADMBaseGamma_calc_every != ML_BSSN_MP_convertFromADMBaseGamma_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ADMBase::dtlapse","ADMBase::dtshift","grid::coordinates","Grid::coordinates","ML_BSSN_MP::ML_dtlapse","ML_BSSN_MP::ML_dtshift","ML_BSSN_MP::ML_Gamma","ML_BSSN_MP::ML_lapse","ML_BSSN_MP::ML_metric","ML_BSSN_MP::ML_shift"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_convertFromADMBaseGamma", 10, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_convertFromADMBaseGamma", 3, 3, 3);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -71,41 +57,102 @@ static void ML_BSSN_MP_convertFromADMBaseGamma_Body(cGH const * restrict const c
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const p1o24dx = 0.0416666666666666666666666666667*INV(dx);
- CCTK_REAL const p1o24dy = 0.0416666666666666666666666666667*INV(dy);
- CCTK_REAL const p1o24dz = 0.0416666666666666666666666666667*INV(dz);
- CCTK_REAL const p1o64dx = 0.015625*INV(dx);
- CCTK_REAL const p1o64dy = 0.015625*INV(dy);
- CCTK_REAL const p1o64dz = 0.015625*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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)
@@ -152,265 +199,463 @@ static void ML_BSSN_MP_convertFromADMBaseGamma_Body(cGH const * restrict const c
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_LOOP3 (ML_BSSN_MP_convertFromADMBaseGamma,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_MP_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 alphaL = alpha[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL dtalpL = dtalp[index];
- CCTK_REAL dtbetaxL = dtbetax[index];
- CCTK_REAL dtbetayL = dtbetay[index];
- CCTK_REAL dtbetazL = dtbetaz[index];
- CCTK_REAL gt11L = gt11[index];
- CCTK_REAL gt12L = gt12[index];
- CCTK_REAL gt13L = gt13[index];
- CCTK_REAL gt22L = gt22[index];
- CCTK_REAL gt23L = gt23[index];
- CCTK_REAL gt33L = gt33[index];
- CCTK_REAL rL = r[index];
-
-
- CCTK_REAL J11L, J12L, J13L, J21L, J22L, J23L, J31L, J32L, J33L;
+ 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 = J11[index];
- J12L = J12[index];
- J13L = J13[index];
- J21L = J21[index];
- J22L = J22[index];
- J23L = J23[index];
- J31L = J31[index];
- J32L = J32[index];
- J33L = J33[index];
+ J11L = vec_load(J11[index]);
+ J12L = vec_load(J12[index]);
+ J13L = vec_load(J13[index]);
+ J21L = vec_load(J21[index]);
+ J22L = vec_load(J22[index]);
+ J23L = vec_load(J23[index]);
+ J31L = vec_load(J31[index]);
+ J32L = vec_load(J32[index]);
+ J33L = vec_load(J33[index]);
}
/* Include user supplied include files */
/* Precompute derivatives */
- CCTK_REAL const PDupwindNthAnti1alpha = PDupwindNthAnti1(&alpha[index]);
- CCTK_REAL const PDupwindNthSymm1alpha = PDupwindNthSymm1(&alpha[index]);
- CCTK_REAL const PDupwindNthAnti2alpha = PDupwindNthAnti2(&alpha[index]);
- CCTK_REAL const PDupwindNthSymm2alpha = PDupwindNthSymm2(&alpha[index]);
- CCTK_REAL const PDupwindNthAnti3alpha = PDupwindNthAnti3(&alpha[index]);
- CCTK_REAL const PDupwindNthSymm3alpha = PDupwindNthSymm3(&alpha[index]);
- CCTK_REAL const PDupwindNthAnti1beta1 = PDupwindNthAnti1(&beta1[index]);
- CCTK_REAL const PDupwindNthSymm1beta1 = PDupwindNthSymm1(&beta1[index]);
- CCTK_REAL const PDupwindNthAnti2beta1 = PDupwindNthAnti2(&beta1[index]);
- CCTK_REAL const PDupwindNthSymm2beta1 = PDupwindNthSymm2(&beta1[index]);
- CCTK_REAL const PDupwindNthAnti3beta1 = PDupwindNthAnti3(&beta1[index]);
- CCTK_REAL const PDupwindNthSymm3beta1 = PDupwindNthSymm3(&beta1[index]);
- CCTK_REAL const PDupwindNthAnti1beta2 = PDupwindNthAnti1(&beta2[index]);
- CCTK_REAL const PDupwindNthSymm1beta2 = PDupwindNthSymm1(&beta2[index]);
- CCTK_REAL const PDupwindNthAnti2beta2 = PDupwindNthAnti2(&beta2[index]);
- CCTK_REAL const PDupwindNthSymm2beta2 = PDupwindNthSymm2(&beta2[index]);
- CCTK_REAL const PDupwindNthAnti3beta2 = PDupwindNthAnti3(&beta2[index]);
- CCTK_REAL const PDupwindNthSymm3beta2 = PDupwindNthSymm3(&beta2[index]);
- CCTK_REAL const PDupwindNthAnti1beta3 = PDupwindNthAnti1(&beta3[index]);
- CCTK_REAL const PDupwindNthSymm1beta3 = PDupwindNthSymm1(&beta3[index]);
- CCTK_REAL const PDupwindNthAnti2beta3 = PDupwindNthAnti2(&beta3[index]);
- CCTK_REAL const PDupwindNthSymm2beta3 = PDupwindNthSymm2(&beta3[index]);
- CCTK_REAL const PDupwindNthAnti3beta3 = PDupwindNthAnti3(&beta3[index]);
- CCTK_REAL const PDupwindNthSymm3beta3 = PDupwindNthSymm3(&beta3[index]);
- CCTK_REAL const PDstandardNth1gt11 = PDstandardNth1(&gt11[index]);
- CCTK_REAL const PDstandardNth2gt11 = PDstandardNth2(&gt11[index]);
- CCTK_REAL const PDstandardNth3gt11 = PDstandardNth3(&gt11[index]);
- CCTK_REAL const PDstandardNth1gt12 = PDstandardNth1(&gt12[index]);
- CCTK_REAL const PDstandardNth2gt12 = PDstandardNth2(&gt12[index]);
- CCTK_REAL const PDstandardNth3gt12 = PDstandardNth3(&gt12[index]);
- CCTK_REAL const PDstandardNth1gt13 = PDstandardNth1(&gt13[index]);
- CCTK_REAL const PDstandardNth2gt13 = PDstandardNth2(&gt13[index]);
- CCTK_REAL const PDstandardNth3gt13 = PDstandardNth3(&gt13[index]);
- CCTK_REAL const PDstandardNth1gt22 = PDstandardNth1(&gt22[index]);
- CCTK_REAL const PDstandardNth2gt22 = PDstandardNth2(&gt22[index]);
- CCTK_REAL const PDstandardNth3gt22 = PDstandardNth3(&gt22[index]);
- CCTK_REAL const PDstandardNth1gt23 = PDstandardNth1(&gt23[index]);
- CCTK_REAL const PDstandardNth2gt23 = PDstandardNth2(&gt23[index]);
- CCTK_REAL const PDstandardNth3gt23 = PDstandardNth3(&gt23[index]);
- CCTK_REAL const PDstandardNth1gt33 = PDstandardNth1(&gt33[index]);
- CCTK_REAL const PDstandardNth2gt33 = PDstandardNth2(&gt33[index]);
- CCTK_REAL const PDstandardNth3gt33 = PDstandardNth3(&gt33[index]);
+ 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 */
- CCTK_REAL JacPDstandardNth1gt11;
- CCTK_REAL JacPDstandardNth1gt12;
- CCTK_REAL JacPDstandardNth1gt13;
- CCTK_REAL JacPDstandardNth1gt22;
- CCTK_REAL JacPDstandardNth1gt23;
- CCTK_REAL JacPDstandardNth1gt33;
- CCTK_REAL JacPDstandardNth2gt11;
- CCTK_REAL JacPDstandardNth2gt12;
- CCTK_REAL JacPDstandardNth2gt13;
- CCTK_REAL JacPDstandardNth2gt22;
- CCTK_REAL JacPDstandardNth2gt23;
- CCTK_REAL JacPDstandardNth2gt33;
- CCTK_REAL JacPDstandardNth3gt11;
- CCTK_REAL JacPDstandardNth3gt12;
- CCTK_REAL JacPDstandardNth3gt13;
- CCTK_REAL JacPDstandardNth3gt22;
- CCTK_REAL JacPDstandardNth3gt23;
- CCTK_REAL JacPDstandardNth3gt33;
- CCTK_REAL JacPDupwindNthAnti1alpha;
- CCTK_REAL JacPDupwindNthAnti1beta1;
- CCTK_REAL JacPDupwindNthAnti1beta2;
- CCTK_REAL JacPDupwindNthAnti1beta3;
- CCTK_REAL JacPDupwindNthAnti2alpha;
- CCTK_REAL JacPDupwindNthAnti2beta1;
- CCTK_REAL JacPDupwindNthAnti2beta2;
- CCTK_REAL JacPDupwindNthAnti2beta3;
- CCTK_REAL JacPDupwindNthAnti3alpha;
- CCTK_REAL JacPDupwindNthAnti3beta1;
- CCTK_REAL JacPDupwindNthAnti3beta2;
- CCTK_REAL JacPDupwindNthAnti3beta3;
- CCTK_REAL JacPDupwindNthSymm1alpha;
- CCTK_REAL JacPDupwindNthSymm1beta1;
- CCTK_REAL JacPDupwindNthSymm1beta2;
- CCTK_REAL JacPDupwindNthSymm1beta3;
- CCTK_REAL JacPDupwindNthSymm2alpha;
- CCTK_REAL JacPDupwindNthSymm2beta1;
- CCTK_REAL JacPDupwindNthSymm2beta2;
- CCTK_REAL JacPDupwindNthSymm2beta3;
- CCTK_REAL JacPDupwindNthSymm3alpha;
- CCTK_REAL JacPDupwindNthSymm3beta1;
- CCTK_REAL JacPDupwindNthSymm3beta2;
- CCTK_REAL JacPDupwindNthSymm3beta3;
+ 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 = J11L*PDstandardNth1gt11 +
- J21L*PDstandardNth2gt11 + J31L*PDstandardNth3gt11;
+ JacPDstandardNth1gt11 =
+ kmadd(J11L,PDstandardNth1gt11,kmadd(J21L,PDstandardNth2gt11,kmul(J31L,PDstandardNth3gt11)));
- JacPDstandardNth1gt12 = J11L*PDstandardNth1gt12 +
- J21L*PDstandardNth2gt12 + J31L*PDstandardNth3gt12;
+ JacPDstandardNth1gt12 =
+ kmadd(J11L,PDstandardNth1gt12,kmadd(J21L,PDstandardNth2gt12,kmul(J31L,PDstandardNth3gt12)));
- JacPDstandardNth1gt13 = J11L*PDstandardNth1gt13 +
- J21L*PDstandardNth2gt13 + J31L*PDstandardNth3gt13;
+ JacPDstandardNth1gt13 =
+ kmadd(J11L,PDstandardNth1gt13,kmadd(J21L,PDstandardNth2gt13,kmul(J31L,PDstandardNth3gt13)));
- JacPDstandardNth1gt22 = J11L*PDstandardNth1gt22 +
- J21L*PDstandardNth2gt22 + J31L*PDstandardNth3gt22;
+ JacPDstandardNth1gt22 =
+ kmadd(J11L,PDstandardNth1gt22,kmadd(J21L,PDstandardNth2gt22,kmul(J31L,PDstandardNth3gt22)));
- JacPDstandardNth1gt23 = J11L*PDstandardNth1gt23 +
- J21L*PDstandardNth2gt23 + J31L*PDstandardNth3gt23;
+ JacPDstandardNth1gt23 =
+ kmadd(J11L,PDstandardNth1gt23,kmadd(J21L,PDstandardNth2gt23,kmul(J31L,PDstandardNth3gt23)));
- JacPDstandardNth1gt33 = J11L*PDstandardNth1gt33 +
- J21L*PDstandardNth2gt33 + J31L*PDstandardNth3gt33;
+ JacPDstandardNth1gt33 =
+ kmadd(J11L,PDstandardNth1gt33,kmadd(J21L,PDstandardNth2gt33,kmul(J31L,PDstandardNth3gt33)));
- JacPDstandardNth2gt11 = J12L*PDstandardNth1gt11 +
- J22L*PDstandardNth2gt11 + J32L*PDstandardNth3gt11;
+ JacPDstandardNth2gt11 =
+ kmadd(J12L,PDstandardNth1gt11,kmadd(J22L,PDstandardNth2gt11,kmul(J32L,PDstandardNth3gt11)));
- JacPDstandardNth2gt12 = J12L*PDstandardNth1gt12 +
- J22L*PDstandardNth2gt12 + J32L*PDstandardNth3gt12;
+ JacPDstandardNth2gt12 =
+ kmadd(J12L,PDstandardNth1gt12,kmadd(J22L,PDstandardNth2gt12,kmul(J32L,PDstandardNth3gt12)));
- JacPDstandardNth2gt13 = J12L*PDstandardNth1gt13 +
- J22L*PDstandardNth2gt13 + J32L*PDstandardNth3gt13;
+ JacPDstandardNth2gt13 =
+ kmadd(J12L,PDstandardNth1gt13,kmadd(J22L,PDstandardNth2gt13,kmul(J32L,PDstandardNth3gt13)));
- JacPDstandardNth2gt22 = J12L*PDstandardNth1gt22 +
- J22L*PDstandardNth2gt22 + J32L*PDstandardNth3gt22;
+ JacPDstandardNth2gt22 =
+ kmadd(J12L,PDstandardNth1gt22,kmadd(J22L,PDstandardNth2gt22,kmul(J32L,PDstandardNth3gt22)));
- JacPDstandardNth2gt23 = J12L*PDstandardNth1gt23 +
- J22L*PDstandardNth2gt23 + J32L*PDstandardNth3gt23;
+ JacPDstandardNth2gt23 =
+ kmadd(J12L,PDstandardNth1gt23,kmadd(J22L,PDstandardNth2gt23,kmul(J32L,PDstandardNth3gt23)));
- JacPDstandardNth2gt33 = J12L*PDstandardNth1gt33 +
- J22L*PDstandardNth2gt33 + J32L*PDstandardNth3gt33;
+ JacPDstandardNth2gt33 =
+ kmadd(J12L,PDstandardNth1gt33,kmadd(J22L,PDstandardNth2gt33,kmul(J32L,PDstandardNth3gt33)));
- JacPDstandardNth3gt11 = J13L*PDstandardNth1gt11 +
- J23L*PDstandardNth2gt11 + J33L*PDstandardNth3gt11;
+ JacPDstandardNth3gt11 =
+ kmadd(J13L,PDstandardNth1gt11,kmadd(J23L,PDstandardNth2gt11,kmul(J33L,PDstandardNth3gt11)));
- JacPDstandardNth3gt12 = J13L*PDstandardNth1gt12 +
- J23L*PDstandardNth2gt12 + J33L*PDstandardNth3gt12;
+ JacPDstandardNth3gt12 =
+ kmadd(J13L,PDstandardNth1gt12,kmadd(J23L,PDstandardNth2gt12,kmul(J33L,PDstandardNth3gt12)));
- JacPDstandardNth3gt13 = J13L*PDstandardNth1gt13 +
- J23L*PDstandardNth2gt13 + J33L*PDstandardNth3gt13;
+ JacPDstandardNth3gt13 =
+ kmadd(J13L,PDstandardNth1gt13,kmadd(J23L,PDstandardNth2gt13,kmul(J33L,PDstandardNth3gt13)));
- JacPDstandardNth3gt22 = J13L*PDstandardNth1gt22 +
- J23L*PDstandardNth2gt22 + J33L*PDstandardNth3gt22;
+ JacPDstandardNth3gt22 =
+ kmadd(J13L,PDstandardNth1gt22,kmadd(J23L,PDstandardNth2gt22,kmul(J33L,PDstandardNth3gt22)));
- JacPDstandardNth3gt23 = J13L*PDstandardNth1gt23 +
- J23L*PDstandardNth2gt23 + J33L*PDstandardNth3gt23;
+ JacPDstandardNth3gt23 =
+ kmadd(J13L,PDstandardNth1gt23,kmadd(J23L,PDstandardNth2gt23,kmul(J33L,PDstandardNth3gt23)));
- JacPDstandardNth3gt33 = J13L*PDstandardNth1gt33 +
- J23L*PDstandardNth2gt33 + J33L*PDstandardNth3gt33;
+ JacPDstandardNth3gt33 =
+ kmadd(J13L,PDstandardNth1gt33,kmadd(J23L,PDstandardNth2gt33,kmul(J33L,PDstandardNth3gt33)));
- JacPDupwindNthAnti1alpha = J11L*PDupwindNthAnti1alpha +
- J21L*PDupwindNthAnti2alpha + J31L*PDupwindNthAnti3alpha;
+ JacPDupwindNthAnti1alpha =
+ kmadd(J11L,PDupwindNthAnti1alpha,kmadd(J21L,PDupwindNthAnti2alpha,kmul(J31L,PDupwindNthAnti3alpha)));
- JacPDupwindNthAnti1beta1 = J11L*PDupwindNthAnti1beta1 +
- J21L*PDupwindNthAnti2beta1 + J31L*PDupwindNthAnti3beta1;
+ JacPDupwindNthAnti1beta1 =
+ kmadd(J11L,PDupwindNthAnti1beta1,kmadd(J21L,PDupwindNthAnti2beta1,kmul(J31L,PDupwindNthAnti3beta1)));
- JacPDupwindNthAnti1beta2 = J11L*PDupwindNthAnti1beta2 +
- J21L*PDupwindNthAnti2beta2 + J31L*PDupwindNthAnti3beta2;
+ JacPDupwindNthAnti1beta2 =
+ kmadd(J11L,PDupwindNthAnti1beta2,kmadd(J21L,PDupwindNthAnti2beta2,kmul(J31L,PDupwindNthAnti3beta2)));
- JacPDupwindNthAnti1beta3 = J11L*PDupwindNthAnti1beta3 +
- J21L*PDupwindNthAnti2beta3 + J31L*PDupwindNthAnti3beta3;
+ JacPDupwindNthAnti1beta3 =
+ kmadd(J11L,PDupwindNthAnti1beta3,kmadd(J21L,PDupwindNthAnti2beta3,kmul(J31L,PDupwindNthAnti3beta3)));
- JacPDupwindNthSymm1alpha = J11L*PDupwindNthSymm1alpha +
- J21L*PDupwindNthSymm2alpha + J31L*PDupwindNthSymm3alpha;
+ JacPDupwindNthSymm1alpha =
+ kmadd(J11L,PDupwindNthSymm1alpha,kmadd(J21L,PDupwindNthSymm2alpha,kmul(J31L,PDupwindNthSymm3alpha)));
- JacPDupwindNthSymm1beta1 = J11L*PDupwindNthSymm1beta1 +
- J21L*PDupwindNthSymm2beta1 + J31L*PDupwindNthSymm3beta1;
+ JacPDupwindNthSymm1beta1 =
+ kmadd(J11L,PDupwindNthSymm1beta1,kmadd(J21L,PDupwindNthSymm2beta1,kmul(J31L,PDupwindNthSymm3beta1)));
- JacPDupwindNthSymm1beta2 = J11L*PDupwindNthSymm1beta2 +
- J21L*PDupwindNthSymm2beta2 + J31L*PDupwindNthSymm3beta2;
+ JacPDupwindNthSymm1beta2 =
+ kmadd(J11L,PDupwindNthSymm1beta2,kmadd(J21L,PDupwindNthSymm2beta2,kmul(J31L,PDupwindNthSymm3beta2)));
- JacPDupwindNthSymm1beta3 = J11L*PDupwindNthSymm1beta3 +
- J21L*PDupwindNthSymm2beta3 + J31L*PDupwindNthSymm3beta3;
+ JacPDupwindNthSymm1beta3 =
+ kmadd(J11L,PDupwindNthSymm1beta3,kmadd(J21L,PDupwindNthSymm2beta3,kmul(J31L,PDupwindNthSymm3beta3)));
- JacPDupwindNthAnti2alpha = J12L*PDupwindNthAnti1alpha +
- J22L*PDupwindNthAnti2alpha + J32L*PDupwindNthAnti3alpha;
+ JacPDupwindNthAnti2alpha =
+ kmadd(J12L,PDupwindNthAnti1alpha,kmadd(J22L,PDupwindNthAnti2alpha,kmul(J32L,PDupwindNthAnti3alpha)));
- JacPDupwindNthAnti2beta1 = J12L*PDupwindNthAnti1beta1 +
- J22L*PDupwindNthAnti2beta1 + J32L*PDupwindNthAnti3beta1;
+ JacPDupwindNthAnti2beta1 =
+ kmadd(J12L,PDupwindNthAnti1beta1,kmadd(J22L,PDupwindNthAnti2beta1,kmul(J32L,PDupwindNthAnti3beta1)));
- JacPDupwindNthAnti2beta2 = J12L*PDupwindNthAnti1beta2 +
- J22L*PDupwindNthAnti2beta2 + J32L*PDupwindNthAnti3beta2;
+ JacPDupwindNthAnti2beta2 =
+ kmadd(J12L,PDupwindNthAnti1beta2,kmadd(J22L,PDupwindNthAnti2beta2,kmul(J32L,PDupwindNthAnti3beta2)));
- JacPDupwindNthAnti2beta3 = J12L*PDupwindNthAnti1beta3 +
- J22L*PDupwindNthAnti2beta3 + J32L*PDupwindNthAnti3beta3;
+ JacPDupwindNthAnti2beta3 =
+ kmadd(J12L,PDupwindNthAnti1beta3,kmadd(J22L,PDupwindNthAnti2beta3,kmul(J32L,PDupwindNthAnti3beta3)));
- JacPDupwindNthSymm2alpha = J12L*PDupwindNthSymm1alpha +
- J22L*PDupwindNthSymm2alpha + J32L*PDupwindNthSymm3alpha;
+ JacPDupwindNthSymm2alpha =
+ kmadd(J12L,PDupwindNthSymm1alpha,kmadd(J22L,PDupwindNthSymm2alpha,kmul(J32L,PDupwindNthSymm3alpha)));
- JacPDupwindNthSymm2beta1 = J12L*PDupwindNthSymm1beta1 +
- J22L*PDupwindNthSymm2beta1 + J32L*PDupwindNthSymm3beta1;
+ JacPDupwindNthSymm2beta1 =
+ kmadd(J12L,PDupwindNthSymm1beta1,kmadd(J22L,PDupwindNthSymm2beta1,kmul(J32L,PDupwindNthSymm3beta1)));
- JacPDupwindNthSymm2beta2 = J12L*PDupwindNthSymm1beta2 +
- J22L*PDupwindNthSymm2beta2 + J32L*PDupwindNthSymm3beta2;
+ JacPDupwindNthSymm2beta2 =
+ kmadd(J12L,PDupwindNthSymm1beta2,kmadd(J22L,PDupwindNthSymm2beta2,kmul(J32L,PDupwindNthSymm3beta2)));
- JacPDupwindNthSymm2beta3 = J12L*PDupwindNthSymm1beta3 +
- J22L*PDupwindNthSymm2beta3 + J32L*PDupwindNthSymm3beta3;
+ JacPDupwindNthSymm2beta3 =
+ kmadd(J12L,PDupwindNthSymm1beta3,kmadd(J22L,PDupwindNthSymm2beta3,kmul(J32L,PDupwindNthSymm3beta3)));
- JacPDupwindNthAnti3alpha = J13L*PDupwindNthAnti1alpha +
- J23L*PDupwindNthAnti2alpha + J33L*PDupwindNthAnti3alpha;
+ JacPDupwindNthAnti3alpha =
+ kmadd(J13L,PDupwindNthAnti1alpha,kmadd(J23L,PDupwindNthAnti2alpha,kmul(J33L,PDupwindNthAnti3alpha)));
- JacPDupwindNthAnti3beta1 = J13L*PDupwindNthAnti1beta1 +
- J23L*PDupwindNthAnti2beta1 + J33L*PDupwindNthAnti3beta1;
+ JacPDupwindNthAnti3beta1 =
+ kmadd(J13L,PDupwindNthAnti1beta1,kmadd(J23L,PDupwindNthAnti2beta1,kmul(J33L,PDupwindNthAnti3beta1)));
- JacPDupwindNthAnti3beta2 = J13L*PDupwindNthAnti1beta2 +
- J23L*PDupwindNthAnti2beta2 + J33L*PDupwindNthAnti3beta2;
+ JacPDupwindNthAnti3beta2 =
+ kmadd(J13L,PDupwindNthAnti1beta2,kmadd(J23L,PDupwindNthAnti2beta2,kmul(J33L,PDupwindNthAnti3beta2)));
- JacPDupwindNthAnti3beta3 = J13L*PDupwindNthAnti1beta3 +
- J23L*PDupwindNthAnti2beta3 + J33L*PDupwindNthAnti3beta3;
+ JacPDupwindNthAnti3beta3 =
+ kmadd(J13L,PDupwindNthAnti1beta3,kmadd(J23L,PDupwindNthAnti2beta3,kmul(J33L,PDupwindNthAnti3beta3)));
- JacPDupwindNthSymm3alpha = J13L*PDupwindNthSymm1alpha +
- J23L*PDupwindNthSymm2alpha + J33L*PDupwindNthSymm3alpha;
+ JacPDupwindNthSymm3alpha =
+ kmadd(J13L,PDupwindNthSymm1alpha,kmadd(J23L,PDupwindNthSymm2alpha,kmul(J33L,PDupwindNthSymm3alpha)));
- JacPDupwindNthSymm3beta1 = J13L*PDupwindNthSymm1beta1 +
- J23L*PDupwindNthSymm2beta1 + J33L*PDupwindNthSymm3beta1;
+ JacPDupwindNthSymm3beta1 =
+ kmadd(J13L,PDupwindNthSymm1beta1,kmadd(J23L,PDupwindNthSymm2beta1,kmul(J33L,PDupwindNthSymm3beta1)));
- JacPDupwindNthSymm3beta2 = J13L*PDupwindNthSymm1beta2 +
- J23L*PDupwindNthSymm2beta2 + J33L*PDupwindNthSymm3beta2;
+ JacPDupwindNthSymm3beta2 =
+ kmadd(J13L,PDupwindNthSymm1beta2,kmadd(J23L,PDupwindNthSymm2beta2,kmul(J33L,PDupwindNthSymm3beta2)));
- JacPDupwindNthSymm3beta3 = J13L*PDupwindNthSymm1beta3 +
- J23L*PDupwindNthSymm2beta3 + J33L*PDupwindNthSymm3beta3;
+ JacPDupwindNthSymm3beta3 =
+ kmadd(J13L,PDupwindNthSymm1beta3,kmadd(J23L,PDupwindNthSymm2beta3,kmul(J33L,PDupwindNthSymm3beta3)));
}
else
{
@@ -499,160 +744,170 @@ static void ML_BSSN_MP_convertFromADMBaseGamma_Body(cGH const * restrict const c
JacPDupwindNthSymm3beta3 = PDupwindNthSymm3beta3;
}
- ptrdiff_t dir1 = Sign(beta1L);
-
- ptrdiff_t dir2 = Sign(beta2L);
-
- ptrdiff_t dir3 = Sign(beta3L);
-
- CCTK_REAL detgt = 1;
+ CCTK_REAL_VEC detgt = ToReal(1);
- CCTK_REAL gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L));
+ CCTK_REAL_VEC gtu11 = kmul(INV(detgt),kmsub(gt22L,gt33L,SQR(gt23L)));
- CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt);
+ CCTK_REAL_VEC gtu12 =
+ kmul(INV(detgt),kmsub(gt13L,gt23L,kmul(gt12L,gt33L)));
- CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC gtu13 =
+ kmul(INV(detgt),kmsub(gt12L,gt23L,kmul(gt13L,gt22L)));
- CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L));
+ CCTK_REAL_VEC gtu22 = kmul(INV(detgt),kmsub(gt11L,gt33L,SQR(gt13L)));
- CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC gtu23 =
+ kmul(INV(detgt),kmsub(gt12L,gt13L,kmul(gt11L,gt23L)));
- CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L));
+ CCTK_REAL_VEC gtu33 = kmul(INV(detgt),kmsub(gt11L,gt22L,SQR(gt12L)));
- CCTK_REAL Gt111 = 0.5*(gtu11*JacPDstandardNth1gt11 +
- 2*(gtu12*JacPDstandardNth1gt12 + gtu13*JacPDstandardNth1gt13) -
- gtu12*JacPDstandardNth2gt11 - gtu13*JacPDstandardNth3gt11);
+ 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 Gt211 = 0.5*(gtu12*JacPDstandardNth1gt11 +
- 2*(gtu22*JacPDstandardNth1gt12 + gtu23*JacPDstandardNth1gt13) -
- gtu22*JacPDstandardNth2gt11 - gtu23*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 Gt311 = 0.5*(gtu13*JacPDstandardNth1gt11 +
- 2*(gtu23*JacPDstandardNth1gt12 + gtu33*JacPDstandardNth1gt13) -
- gtu23*JacPDstandardNth2gt11 - gtu33*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 Gt112 = 0.5*(gtu12*JacPDstandardNth1gt22 +
- gtu11*JacPDstandardNth2gt11 + gtu13*(JacPDstandardNth1gt23 +
- JacPDstandardNth2gt13 - JacPDstandardNth3gt12));
+ CCTK_REAL_VEC Gt112 =
+ kmul(kmadd(gtu12,JacPDstandardNth1gt22,kmadd(gtu11,JacPDstandardNth2gt11,kmul(gtu13,kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth2gt13,JacPDstandardNth3gt12))))),ToReal(0.5));
- CCTK_REAL Gt212 = 0.5*(gtu22*JacPDstandardNth1gt22 +
- gtu12*JacPDstandardNth2gt11 + gtu23*(JacPDstandardNth1gt23 +
- JacPDstandardNth2gt13 - JacPDstandardNth3gt12));
+ CCTK_REAL_VEC Gt212 =
+ kmul(kmadd(gtu22,JacPDstandardNth1gt22,kmadd(gtu12,JacPDstandardNth2gt11,kmul(gtu23,kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth2gt13,JacPDstandardNth3gt12))))),ToReal(0.5));
- CCTK_REAL Gt312 = 0.5*(gtu23*JacPDstandardNth1gt22 +
- gtu13*JacPDstandardNth2gt11 + gtu33*(JacPDstandardNth1gt23 +
- JacPDstandardNth2gt13 - JacPDstandardNth3gt12));
+ CCTK_REAL_VEC Gt312 =
+ kmul(kmadd(gtu23,JacPDstandardNth1gt22,kmadd(gtu13,JacPDstandardNth2gt11,kmul(gtu33,kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth2gt13,JacPDstandardNth3gt12))))),ToReal(0.5));
- CCTK_REAL Gt113 = 0.5*(gtu13*JacPDstandardNth1gt33 +
- gtu11*JacPDstandardNth3gt11 + gtu12*(JacPDstandardNth1gt23 -
- JacPDstandardNth2gt13 + JacPDstandardNth3gt12));
+ CCTK_REAL_VEC Gt113 =
+ kmul(kmadd(gtu13,JacPDstandardNth1gt33,kmadd(gtu11,JacPDstandardNth3gt11,kmul(gtu12,kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth3gt12,JacPDstandardNth2gt13))))),ToReal(0.5));
- CCTK_REAL Gt213 = 0.5*(gtu23*JacPDstandardNth1gt33 +
- gtu12*JacPDstandardNth3gt11 + gtu22*(JacPDstandardNth1gt23 -
- JacPDstandardNth2gt13 + JacPDstandardNth3gt12));
+ CCTK_REAL_VEC Gt213 =
+ kmul(kmadd(gtu23,JacPDstandardNth1gt33,kmadd(gtu12,JacPDstandardNth3gt11,kmul(gtu22,kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth3gt12,JacPDstandardNth2gt13))))),ToReal(0.5));
- CCTK_REAL Gt313 = 0.5*(gtu33*JacPDstandardNth1gt33 +
- gtu13*JacPDstandardNth3gt11 + gtu23*(JacPDstandardNth1gt23 -
- JacPDstandardNth2gt13 + JacPDstandardNth3gt12));
+ CCTK_REAL_VEC Gt313 =
+ kmul(kmadd(gtu33,JacPDstandardNth1gt33,kmadd(gtu13,JacPDstandardNth3gt11,kmul(gtu23,kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth3gt12,JacPDstandardNth2gt13))))),ToReal(0.5));
- CCTK_REAL Gt122 = 0.5*(gtu11*(-JacPDstandardNth1gt22 +
- 2*JacPDstandardNth2gt12) + gtu12*JacPDstandardNth2gt22 +
- gtu13*(2*JacPDstandardNth2gt23 - JacPDstandardNth3gt22));
+ 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 Gt222 = 0.5*(gtu12*(-JacPDstandardNth1gt22 +
- 2*JacPDstandardNth2gt12) + gtu22*JacPDstandardNth2gt22 +
- gtu23*(2*JacPDstandardNth2gt23 - 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 Gt322 = 0.5*(gtu13*(-JacPDstandardNth1gt22 +
- 2*JacPDstandardNth2gt12) + gtu23*JacPDstandardNth2gt22 +
- gtu33*(2*JacPDstandardNth2gt23 - 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 Gt123 = 0.5*(gtu13*JacPDstandardNth2gt33 +
- gtu11*(-JacPDstandardNth1gt23 + JacPDstandardNth2gt13 +
- JacPDstandardNth3gt12) + gtu12*JacPDstandardNth3gt22);
+ CCTK_REAL_VEC Gt123 =
+ kmul(kmadd(gtu13,JacPDstandardNth2gt33,kmadd(gtu12,JacPDstandardNth3gt22,kmul(gtu11,kadd(JacPDstandardNth2gt13,ksub(JacPDstandardNth3gt12,JacPDstandardNth1gt23))))),ToReal(0.5));
- CCTK_REAL Gt223 = 0.5*(gtu23*JacPDstandardNth2gt33 +
- gtu12*(-JacPDstandardNth1gt23 + JacPDstandardNth2gt13 +
- JacPDstandardNth3gt12) + gtu22*JacPDstandardNth3gt22);
+ CCTK_REAL_VEC Gt223 =
+ kmul(kmadd(gtu23,JacPDstandardNth2gt33,kmadd(gtu22,JacPDstandardNth3gt22,kmul(gtu12,kadd(JacPDstandardNth2gt13,ksub(JacPDstandardNth3gt12,JacPDstandardNth1gt23))))),ToReal(0.5));
- CCTK_REAL Gt323 = 0.5*(gtu33*JacPDstandardNth2gt33 +
- gtu13*(-JacPDstandardNth1gt23 + JacPDstandardNth2gt13 +
- JacPDstandardNth3gt12) + gtu23*JacPDstandardNth3gt22);
+ CCTK_REAL_VEC Gt323 =
+ kmul(kmadd(gtu33,JacPDstandardNth2gt33,kmadd(gtu23,JacPDstandardNth3gt22,kmul(gtu13,kadd(JacPDstandardNth2gt13,ksub(JacPDstandardNth3gt12,JacPDstandardNth1gt23))))),ToReal(0.5));
- CCTK_REAL Gt133 = 0.5*(gtu11*(-JacPDstandardNth1gt33 +
- 2*JacPDstandardNth3gt13) + gtu12*(-JacPDstandardNth2gt33 +
- 2*JacPDstandardNth3gt23) + gtu13*JacPDstandardNth3gt33);
+ 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 Gt233 = 0.5*(gtu12*(-JacPDstandardNth1gt33 +
- 2*JacPDstandardNth3gt13) + gtu22*(-JacPDstandardNth2gt33 +
- 2*JacPDstandardNth3gt23) + gtu23*JacPDstandardNth3gt33);
+ 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 Gt333 = 0.5*(gtu13*(-JacPDstandardNth1gt33 +
- 2*JacPDstandardNth3gt13) + gtu23*(-JacPDstandardNth2gt33 +
- 2*JacPDstandardNth3gt23) + gtu33*JacPDstandardNth3gt33);
+ 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 Xt1L = Gt111*gtu11 + Gt122*gtu22 + 2*(Gt112*gtu12 +
- Gt113*gtu13 + Gt123*gtu23) + Gt133*gtu33;
+ 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 Xt2L = Gt211*gtu11 + Gt222*gtu22 + 2*(Gt212*gtu12 +
- Gt213*gtu13 + Gt223*gtu23) + Gt233*gtu33;
+ 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 Xt3L = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu12 +
- Gt313*gtu13 + Gt323*gtu23) + Gt333*gtu33;
+ 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 AL = IfThen(LapseACoeff !=
- 0,-(INV(ToReal(harmonicF))*pow(alphaL,-ToReal(harmonicN))*(dtalpL -
- (beta1L*JacPDupwindNthAnti1alpha + beta2L*JacPDupwindNthAnti2alpha +
- beta3L*JacPDupwindNthAnti3alpha + JacPDupwindNthSymm1alpha*Abs(beta1L)
- + JacPDupwindNthSymm2alpha*Abs(beta2L) +
- JacPDupwindNthSymm3alpha*Abs(beta3L))*ToReal(LapseAdvectionCoeff))),0);
+ CCTK_REAL_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 theta = fmin(1,exp(1 -
- rL*INV(ToReal(SpatialShiftGammaCoeffRadius))));
+ CCTK_REAL_VEC theta =
+ kfmin(ToReal(1),kexp(knmsub(rL,INV(ToReal(SpatialShiftGammaCoeffRadius)),ToReal(1))));
- CCTK_REAL B1L;
- CCTK_REAL B2L;
- CCTK_REAL B3L;
+ CCTK_REAL_VEC B1L;
+ CCTK_REAL_VEC B2L;
+ CCTK_REAL_VEC B3L;
if (ShiftBCoeff*ShiftGammaCoeff != 0)
{
- B1L = INV(theta)*INV(ToReal(ShiftGammaCoeff))*(dtbetaxL -
- (beta1L*JacPDupwindNthAnti1beta1 + beta2L*JacPDupwindNthAnti2beta1 +
- beta3L*JacPDupwindNthAnti3beta1 + JacPDupwindNthSymm1beta1*Abs(beta1L)
- + JacPDupwindNthSymm2beta1*Abs(beta2L) +
- JacPDupwindNthSymm3beta1*Abs(beta3L))*ToReal(ShiftAdvectionCoeff));
-
- B2L = INV(theta)*INV(ToReal(ShiftGammaCoeff))*(dtbetayL -
- (beta1L*JacPDupwindNthAnti1beta2 + beta2L*JacPDupwindNthAnti2beta2 +
- beta3L*JacPDupwindNthAnti3beta2 + JacPDupwindNthSymm1beta2*Abs(beta1L)
- + JacPDupwindNthSymm2beta2*Abs(beta2L) +
- JacPDupwindNthSymm3beta2*Abs(beta3L))*ToReal(ShiftAdvectionCoeff));
-
- B3L = INV(theta)*INV(ToReal(ShiftGammaCoeff))*(dtbetazL -
- (beta1L*JacPDupwindNthAnti1beta3 + beta2L*JacPDupwindNthAnti2beta3 +
- beta3L*JacPDupwindNthAnti3beta3 + JacPDupwindNthSymm1beta3*Abs(beta1L)
- + JacPDupwindNthSymm2beta3*Abs(beta2L) +
- JacPDupwindNthSymm3beta3*Abs(beta3L))*ToReal(ShiftAdvectionCoeff));
+ B1L =
+ kmul(INV(theta),kmul(INV(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(theta),kmul(INV(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(theta),kmul(INV(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 = 0;
+ B1L = ToReal(0);
- B2L = 0;
+ B2L = ToReal(0);
- B3L = 0;
+ B3L = ToReal(0);
}
- /* Copy local copies back to grid functions */
- A[index] = AL;
- B1[index] = B1L;
- B2[index] = B2L;
- B3[index] = B3L;
- Xt1[index] = Xt1L;
- Xt2[index] = Xt2L;
- Xt3[index] = Xt3L;
+ /* 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(A[index],AL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B1[index],B1L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B2[index],B2L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B3[index],B3L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt1[index],Xt1L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt2[index],Xt2L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt3[index],Xt3L,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(A[index],AL,elt_count);
+ vec_store_nta_partial_hi(B1[index],B1L,elt_count);
+ vec_store_nta_partial_hi(B2[index],B2L,elt_count);
+ vec_store_nta_partial_hi(B3[index],B3L,elt_count);
+ vec_store_nta_partial_hi(Xt1[index],Xt1L,elt_count);
+ vec_store_nta_partial_hi(Xt2[index],Xt2L,elt_count);
+ vec_store_nta_partial_hi(Xt3[index],Xt3L,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(A[index],AL,elt_count);
+ vec_store_nta_partial_lo(B1[index],B1L,elt_count);
+ vec_store_nta_partial_lo(B2[index],B2L,elt_count);
+ vec_store_nta_partial_lo(B3[index],B3L,elt_count);
+ vec_store_nta_partial_lo(Xt1[index],Xt1L,elt_count);
+ vec_store_nta_partial_lo(Xt2[index],Xt2L,elt_count);
+ vec_store_nta_partial_lo(Xt3[index],Xt3L,elt_count);
+ break;
+ }
+ vec_store_nta(A[index],AL);
+ vec_store_nta(B1[index],B1L);
+ vec_store_nta(B2[index],B2L);
+ vec_store_nta(B3[index],B3L);
+ vec_store_nta(Xt1[index],Xt1L);
+ vec_store_nta(Xt2[index],Xt2L);
+ vec_store_nta(Xt3[index],Xt3L);
}
- LC_ENDLOOP3 (ML_BSSN_MP_convertFromADMBaseGamma);
+ LC_ENDLOOP3VEC (ML_BSSN_MP_convertFromADMBaseGamma);
}
extern "C" void ML_BSSN_MP_convertFromADMBaseGamma(CCTK_ARGUMENTS)
@@ -660,5 +915,43 @@ extern "C" void ML_BSSN_MP_convertFromADMBaseGamma(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_convertFromADMBaseGamma_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_MP_convertFromADMBaseGamma_calc_every != ML_BSSN_MP_convertFromADMBaseGamma_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ADMBase::dtlapse","ADMBase::dtshift","grid::coordinates","Grid::coordinates","ML_BSSN_MP::ML_dtlapse","ML_BSSN_MP::ML_dtshift","ML_BSSN_MP::ML_Gamma","ML_BSSN_MP::ML_lapse","ML_BSSN_MP::ML_metric","ML_BSSN_MP::ML_shift"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_convertFromADMBaseGamma", 10, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_convertFromADMBaseGamma", 2, 2, 2);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_convertFromADMBaseGamma", 3, 3, 3);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_convertFromADMBaseGamma", 4, 4, 4);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_convertFromADMBaseGamma", 5, 5, 5);
+ break;
+ }
+
GenericFD_LoopOverInterior(cctkGH, &ML_BSSN_MP_convertFromADMBaseGamma_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_MP_convertFromADMBaseGamma_Body");
+ }
}
diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBase.cc b/ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBase.cc
index 9ba1a36..eda4758 100644
--- a/ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBase.cc
+++ b/ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBase.cc
@@ -13,15 +13,16 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
-static void ML_BSSN_MP_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_MP_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;
@@ -29,20 +30,6 @@ static void ML_BSSN_MP_convertToADMBase_Body(cGH const * restrict const cctkGH,
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_convertToADMBase_Body");
- }
-
- if (cctk_iteration % ML_BSSN_MP_convertToADMBase_calc_every != ML_BSSN_MP_convertToADMBase_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ADMBase::curv","ADMBase::lapse","ADMBase::metric","ADMBase::shift","ML_BSSN_MP::ML_curv","ML_BSSN_MP::ML_lapse","ML_BSSN_MP::ML_log_confac","ML_BSSN_MP::ML_metric","ML_BSSN_MP::ML_shift","ML_BSSN_MP::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_convertToADMBase", 10, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -52,41 +39,102 @@ static void ML_BSSN_MP_convertToADMBase_Body(cGH const * restrict const cctkGH,
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const p1o24dx = 0.0416666666666666666666666666667*INV(dx);
- CCTK_REAL const p1o24dy = 0.0416666666666666666666666666667*INV(dy);
- CCTK_REAL const p1o24dz = 0.0416666666666666666666666666667*INV(dz);
- CCTK_REAL const p1o64dx = 0.015625*INV(dx);
- CCTK_REAL const p1o64dy = 0.015625*INV(dy);
- CCTK_REAL const p1o64dz = 0.015625*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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)
@@ -133,40 +181,49 @@ static void ML_BSSN_MP_convertToADMBase_Body(cGH const * restrict const cctkGH,
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_LOOP3 (ML_BSSN_MP_convertToADMBase,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_MP_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 alphaL = alpha[index];
- CCTK_REAL At11L = At11[index];
- CCTK_REAL At12L = At12[index];
- CCTK_REAL At13L = At13[index];
- CCTK_REAL At22L = At22[index];
- CCTK_REAL At23L = At23[index];
- CCTK_REAL At33L = At33[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL gt11L = gt11[index];
- CCTK_REAL gt12L = gt12[index];
- CCTK_REAL gt13L = gt13[index];
- CCTK_REAL gt22L = gt22[index];
- CCTK_REAL gt23L = gt23[index];
- CCTK_REAL gt33L = gt33[index];
- CCTK_REAL gxxL = gxx[index];
- CCTK_REAL gxyL = gxy[index];
- CCTK_REAL gxzL = gxz[index];
- CCTK_REAL gyyL = gyy[index];
- CCTK_REAL gyzL = gyz[index];
- CCTK_REAL gzzL = gzz[index];
- CCTK_REAL phiL = phi[index];
- CCTK_REAL trKL = trK[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 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]);
@@ -174,66 +231,153 @@ static void ML_BSSN_MP_convertToADMBase_Body(cGH const * restrict const cctkGH,
/* Precompute derivatives */
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
/* Calculate temporaries and grid functions */
- CCTK_REAL e4phi = IfThen(conformalMethod,INV(SQR(phiL)),exp(4*phiL));
+ CCTK_REAL_VEC e4phi =
+ IfThen(conformalMethod,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
+
+ gxxL = kmul(e4phi,gt11L);
+
+ gxyL = kmul(e4phi,gt12L);
+
+ gxzL = kmul(e4phi,gt13L);
+
+ gyyL = kmul(e4phi,gt22L);
+
+ gyzL = kmul(e4phi,gt23L);
- gxxL = e4phi*gt11L;
+ gzzL = kmul(e4phi,gt33L);
- gxyL = e4phi*gt12L;
+ CCTK_REAL_VEC kxxL =
+ kmadd(At11L,e4phi,kmul(gxxL,kmul(trKL,ToReal(0.333333333333333333333333333333))));
- gxzL = e4phi*gt13L;
+ CCTK_REAL_VEC kxyL =
+ kmadd(At12L,e4phi,kmul(gxyL,kmul(trKL,ToReal(0.333333333333333333333333333333))));
- gyyL = e4phi*gt22L;
+ CCTK_REAL_VEC kxzL =
+ kmadd(At13L,e4phi,kmul(gxzL,kmul(trKL,ToReal(0.333333333333333333333333333333))));
- gyzL = e4phi*gt23L;
+ CCTK_REAL_VEC kyyL =
+ kmadd(At22L,e4phi,kmul(gyyL,kmul(trKL,ToReal(0.333333333333333333333333333333))));
- gzzL = e4phi*gt33L;
+ CCTK_REAL_VEC kyzL =
+ kmadd(At23L,e4phi,kmul(gyzL,kmul(trKL,ToReal(0.333333333333333333333333333333))));
- CCTK_REAL kxxL = At11L*e4phi +
- 0.333333333333333333333333333333*gxxL*trKL;
+ CCTK_REAL_VEC kzzL =
+ kmadd(At33L,e4phi,kmul(gzzL,kmul(trKL,ToReal(0.333333333333333333333333333333))));
- CCTK_REAL kxyL = At12L*e4phi +
- 0.333333333333333333333333333333*gxyL*trKL;
+ CCTK_REAL_VEC alpL = alphaL;
- CCTK_REAL kxzL = At13L*e4phi +
- 0.333333333333333333333333333333*gxzL*trKL;
+ CCTK_REAL_VEC betaxL = beta1L;
- CCTK_REAL kyyL = At22L*e4phi +
- 0.333333333333333333333333333333*gyyL*trKL;
+ CCTK_REAL_VEC betayL = beta2L;
- CCTK_REAL kyzL = At23L*e4phi +
- 0.333333333333333333333333333333*gyzL*trKL;
+ CCTK_REAL_VEC betazL = beta3L;
- CCTK_REAL kzzL = At33L*e4phi +
- 0.333333333333333333333333333333*gzzL*trKL;
+ /* If necessary, store only partial vectors after the first iteration */
- CCTK_REAL alpL = alphaL;
+ 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(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;
+ }
- CCTK_REAL betaxL = beta1L;
+ /* If necessary, store only partial vectors after the first iteration */
- CCTK_REAL betayL = beta2L;
+ 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(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;
+ }
- CCTK_REAL betazL = beta3L;
+ /* If necessary, store only partial vectors after the last iteration */
- /* Copy local copies back to grid functions */
- alp[index] = alpL;
- betax[index] = betaxL;
- betay[index] = betayL;
- betaz[index] = betazL;
- gxx[index] = gxxL;
- gxy[index] = gxyL;
- gxz[index] = gxzL;
- gyy[index] = gyyL;
- gyz[index] = gyzL;
- gzz[index] = gzzL;
- kxx[index] = kxxL;
- kxy[index] = kxyL;
- kxz[index] = kxzL;
- kyy[index] = kyyL;
- kyz[index] = kyzL;
- kzz[index] = kzzL;
+ 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(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(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);
}
- LC_ENDLOOP3 (ML_BSSN_MP_convertToADMBase);
+ LC_ENDLOOP3VEC (ML_BSSN_MP_convertToADMBase);
}
extern "C" void ML_BSSN_MP_convertToADMBase(CCTK_ARGUMENTS)
@@ -241,5 +385,39 @@ extern "C" void ML_BSSN_MP_convertToADMBase(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_convertToADMBase_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_MP_convertToADMBase_calc_every != ML_BSSN_MP_convertToADMBase_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ADMBase::curv","ADMBase::lapse","ADMBase::metric","ADMBase::shift","ML_BSSN_MP::ML_curv","ML_BSSN_MP::ML_lapse","ML_BSSN_MP::ML_log_confac","ML_BSSN_MP::ML_metric","ML_BSSN_MP::ML_shift","ML_BSSN_MP::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_convertToADMBase", 10, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverEverything(cctkGH, &ML_BSSN_MP_convertToADMBase_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_MP_convertToADMBase_Body");
+ }
}
diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBaseDtLapseShift.cc b/ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBaseDtLapseShift.cc
index 55261bc..cef9f17 100644
--- a/ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBaseDtLapseShift.cc
+++ b/ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBaseDtLapseShift.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_MP_convertToADMBaseDtLapseShift_SelectBCs(CCTK_ARGUMENTS)
{
@@ -36,7 +37,7 @@ extern "C" void ML_BSSN_MP_convertToADMBaseDtLapseShift_SelectBCs(CCTK_ARGUMENTS
return;
}
-static void ML_BSSN_MP_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_MP_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;
@@ -44,21 +45,6 @@ static void ML_BSSN_MP_convertToADMBaseDtLapseShift_Body(cGH const * restrict co
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_convertToADMBaseDtLapseShift_Body");
- }
-
- if (cctk_iteration % ML_BSSN_MP_convertToADMBaseDtLapseShift_calc_every != ML_BSSN_MP_convertToADMBaseDtLapseShift_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ADMBase::dtlapse","ADMBase::dtshift","grid::coordinates","Grid::coordinates","ML_BSSN_MP::ML_dtlapse","ML_BSSN_MP::ML_dtshift","ML_BSSN_MP::ML_Gamma","ML_BSSN_MP::ML_lapse","ML_BSSN_MP::ML_shift","ML_BSSN_MP::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_convertToADMBaseDtLapseShift", 10, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_convertToADMBaseDtLapseShift", 3, 3, 3);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -68,41 +54,102 @@ static void ML_BSSN_MP_convertToADMBaseDtLapseShift_Body(cGH const * restrict co
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const p1o24dx = 0.0416666666666666666666666666667*INV(dx);
- CCTK_REAL const p1o24dy = 0.0416666666666666666666666666667*INV(dy);
- CCTK_REAL const p1o24dz = 0.0416666666666666666666666666667*INV(dz);
- CCTK_REAL const p1o64dx = 0.015625*INV(dx);
- CCTK_REAL const p1o64dy = 0.015625*INV(dy);
- CCTK_REAL const p1o64dz = 0.015625*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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)
@@ -149,176 +196,573 @@ static void ML_BSSN_MP_convertToADMBaseDtLapseShift_Body(cGH const * restrict co
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_LOOP3 (ML_BSSN_MP_convertToADMBaseDtLapseShift,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_MP_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 AL = A[index];
- CCTK_REAL alphaL = alpha[index];
- CCTK_REAL B1L = B1[index];
- CCTK_REAL B2L = B2[index];
- CCTK_REAL B3L = B3[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL rL = r[index];
- CCTK_REAL trKL = trK[index];
- CCTK_REAL Xt1L = Xt1[index];
- CCTK_REAL Xt2L = Xt2[index];
- CCTK_REAL Xt3L = Xt3[index];
+ 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 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 J11L, J12L, J13L, J21L, J22L, J23L, J31L, J32L, J33L;
+ CCTK_REAL_VEC J11L, J12L, J13L, J21L, J22L, J23L, J31L, J32L, J33L;
if (use_jacobian)
{
- J11L = J11[index];
- J12L = J12[index];
- J13L = J13[index];
- J21L = J21[index];
- J22L = J22[index];
- J23L = J23[index];
- J31L = J31[index];
- J32L = J32[index];
- J33L = J33[index];
+ J11L = vec_load(J11[index]);
+ J12L = vec_load(J12[index]);
+ J13L = vec_load(J13[index]);
+ J21L = vec_load(J21[index]);
+ J22L = vec_load(J22[index]);
+ J23L = vec_load(J23[index]);
+ J31L = vec_load(J31[index]);
+ J32L = vec_load(J32[index]);
+ J33L = vec_load(J33[index]);
}
/* Include user supplied include files */
/* Precompute derivatives */
- CCTK_REAL const PDupwindNthAnti1alpha = PDupwindNthAnti1(&alpha[index]);
- CCTK_REAL const PDupwindNthSymm1alpha = PDupwindNthSymm1(&alpha[index]);
- CCTK_REAL const PDupwindNthAnti2alpha = PDupwindNthAnti2(&alpha[index]);
- CCTK_REAL const PDupwindNthSymm2alpha = PDupwindNthSymm2(&alpha[index]);
- CCTK_REAL const PDupwindNthAnti3alpha = PDupwindNthAnti3(&alpha[index]);
- CCTK_REAL const PDupwindNthSymm3alpha = PDupwindNthSymm3(&alpha[index]);
- CCTK_REAL const PDupwindNthAnti1beta1 = PDupwindNthAnti1(&beta1[index]);
- CCTK_REAL const PDupwindNthSymm1beta1 = PDupwindNthSymm1(&beta1[index]);
- CCTK_REAL const PDupwindNthAnti2beta1 = PDupwindNthAnti2(&beta1[index]);
- CCTK_REAL const PDupwindNthSymm2beta1 = PDupwindNthSymm2(&beta1[index]);
- CCTK_REAL const PDupwindNthAnti3beta1 = PDupwindNthAnti3(&beta1[index]);
- CCTK_REAL const PDupwindNthSymm3beta1 = PDupwindNthSymm3(&beta1[index]);
- CCTK_REAL const PDupwindNthAnti1beta2 = PDupwindNthAnti1(&beta2[index]);
- CCTK_REAL const PDupwindNthSymm1beta2 = PDupwindNthSymm1(&beta2[index]);
- CCTK_REAL const PDupwindNthAnti2beta2 = PDupwindNthAnti2(&beta2[index]);
- CCTK_REAL const PDupwindNthSymm2beta2 = PDupwindNthSymm2(&beta2[index]);
- CCTK_REAL const PDupwindNthAnti3beta2 = PDupwindNthAnti3(&beta2[index]);
- CCTK_REAL const PDupwindNthSymm3beta2 = PDupwindNthSymm3(&beta2[index]);
- CCTK_REAL const PDupwindNthAnti1beta3 = PDupwindNthAnti1(&beta3[index]);
- CCTK_REAL const PDupwindNthSymm1beta3 = PDupwindNthSymm1(&beta3[index]);
- CCTK_REAL const PDupwindNthAnti2beta3 = PDupwindNthAnti2(&beta3[index]);
- CCTK_REAL const PDupwindNthSymm2beta3 = PDupwindNthSymm2(&beta3[index]);
- CCTK_REAL const PDupwindNthAnti3beta3 = PDupwindNthAnti3(&beta3[index]);
- CCTK_REAL const PDupwindNthSymm3beta3 = PDupwindNthSymm3(&beta3[index]);
+ CCTK_REAL_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 */
- CCTK_REAL JacPDupwindNthAnti1alpha;
- CCTK_REAL JacPDupwindNthAnti1beta1;
- CCTK_REAL JacPDupwindNthAnti1beta2;
- CCTK_REAL JacPDupwindNthAnti1beta3;
- CCTK_REAL JacPDupwindNthAnti2alpha;
- CCTK_REAL JacPDupwindNthAnti2beta1;
- CCTK_REAL JacPDupwindNthAnti2beta2;
- CCTK_REAL JacPDupwindNthAnti2beta3;
- CCTK_REAL JacPDupwindNthAnti3alpha;
- CCTK_REAL JacPDupwindNthAnti3beta1;
- CCTK_REAL JacPDupwindNthAnti3beta2;
- CCTK_REAL JacPDupwindNthAnti3beta3;
- CCTK_REAL JacPDupwindNthSymm1alpha;
- CCTK_REAL JacPDupwindNthSymm1beta1;
- CCTK_REAL JacPDupwindNthSymm1beta2;
- CCTK_REAL JacPDupwindNthSymm1beta3;
- CCTK_REAL JacPDupwindNthSymm2alpha;
- CCTK_REAL JacPDupwindNthSymm2beta1;
- CCTK_REAL JacPDupwindNthSymm2beta2;
- CCTK_REAL JacPDupwindNthSymm2beta3;
- CCTK_REAL JacPDupwindNthSymm3alpha;
- CCTK_REAL JacPDupwindNthSymm3beta1;
- CCTK_REAL JacPDupwindNthSymm3beta2;
- CCTK_REAL JacPDupwindNthSymm3beta3;
+ 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)
{
- JacPDupwindNthAnti1alpha = J11L*PDupwindNthAnti1alpha +
- J21L*PDupwindNthAnti2alpha + J31L*PDupwindNthAnti3alpha;
+ 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)));
- JacPDupwindNthAnti1beta1 = J11L*PDupwindNthAnti1beta1 +
- J21L*PDupwindNthAnti2beta1 + J31L*PDupwindNthAnti3beta1;
+ JacPDstandardNth1gt23 =
+ kmadd(J11L,PDstandardNth1gt23,kmadd(J21L,PDstandardNth2gt23,kmul(J31L,PDstandardNth3gt23)));
- JacPDupwindNthAnti1beta2 = J11L*PDupwindNthAnti1beta2 +
- J21L*PDupwindNthAnti2beta2 + J31L*PDupwindNthAnti3beta2;
+ JacPDstandardNth1gt33 =
+ kmadd(J11L,PDstandardNth1gt33,kmadd(J21L,PDstandardNth2gt33,kmul(J31L,PDstandardNth3gt33)));
- JacPDupwindNthAnti1beta3 = J11L*PDupwindNthAnti1beta3 +
- J21L*PDupwindNthAnti2beta3 + J31L*PDupwindNthAnti3beta3;
+ JacPDstandardNth1phi =
+ kmadd(J11L,PDstandardNth1phi,kmadd(J21L,PDstandardNth2phi,kmul(J31L,PDstandardNth3phi)));
- JacPDupwindNthSymm1alpha = J11L*PDupwindNthSymm1alpha +
- J21L*PDupwindNthSymm2alpha + J31L*PDupwindNthSymm3alpha;
+ JacPDstandardNth2alpha =
+ kmadd(J12L,PDstandardNth1alpha,kmadd(J22L,PDstandardNth2alpha,kmul(J32L,PDstandardNth3alpha)));
- JacPDupwindNthSymm1beta1 = J11L*PDupwindNthSymm1beta1 +
- J21L*PDupwindNthSymm2beta1 + J31L*PDupwindNthSymm3beta1;
+ JacPDstandardNth2gt11 =
+ kmadd(J12L,PDstandardNth1gt11,kmadd(J22L,PDstandardNth2gt11,kmul(J32L,PDstandardNth3gt11)));
- JacPDupwindNthSymm1beta2 = J11L*PDupwindNthSymm1beta2 +
- J21L*PDupwindNthSymm2beta2 + J31L*PDupwindNthSymm3beta2;
+ JacPDstandardNth2gt12 =
+ kmadd(J12L,PDstandardNth1gt12,kmadd(J22L,PDstandardNth2gt12,kmul(J32L,PDstandardNth3gt12)));
- JacPDupwindNthSymm1beta3 = J11L*PDupwindNthSymm1beta3 +
- J21L*PDupwindNthSymm2beta3 + J31L*PDupwindNthSymm3beta3;
+ JacPDstandardNth2gt13 =
+ kmadd(J12L,PDstandardNth1gt13,kmadd(J22L,PDstandardNth2gt13,kmul(J32L,PDstandardNth3gt13)));
- JacPDupwindNthAnti2alpha = J12L*PDupwindNthAnti1alpha +
- J22L*PDupwindNthAnti2alpha + J32L*PDupwindNthAnti3alpha;
+ JacPDstandardNth2gt22 =
+ kmadd(J12L,PDstandardNth1gt22,kmadd(J22L,PDstandardNth2gt22,kmul(J32L,PDstandardNth3gt22)));
- JacPDupwindNthAnti2beta1 = J12L*PDupwindNthAnti1beta1 +
- J22L*PDupwindNthAnti2beta1 + J32L*PDupwindNthAnti3beta1;
+ JacPDstandardNth2gt23 =
+ kmadd(J12L,PDstandardNth1gt23,kmadd(J22L,PDstandardNth2gt23,kmul(J32L,PDstandardNth3gt23)));
- JacPDupwindNthAnti2beta2 = J12L*PDupwindNthAnti1beta2 +
- J22L*PDupwindNthAnti2beta2 + J32L*PDupwindNthAnti3beta2;
+ JacPDstandardNth2gt33 =
+ kmadd(J12L,PDstandardNth1gt33,kmadd(J22L,PDstandardNth2gt33,kmul(J32L,PDstandardNth3gt33)));
- JacPDupwindNthAnti2beta3 = J12L*PDupwindNthAnti1beta3 +
- J22L*PDupwindNthAnti2beta3 + J32L*PDupwindNthAnti3beta3;
+ JacPDstandardNth2phi =
+ kmadd(J12L,PDstandardNth1phi,kmadd(J22L,PDstandardNth2phi,kmul(J32L,PDstandardNth3phi)));
- JacPDupwindNthSymm2alpha = J12L*PDupwindNthSymm1alpha +
- J22L*PDupwindNthSymm2alpha + J32L*PDupwindNthSymm3alpha;
+ JacPDstandardNth3alpha =
+ kmadd(J13L,PDstandardNth1alpha,kmadd(J23L,PDstandardNth2alpha,kmul(J33L,PDstandardNth3alpha)));
- JacPDupwindNthSymm2beta1 = J12L*PDupwindNthSymm1beta1 +
- J22L*PDupwindNthSymm2beta1 + J32L*PDupwindNthSymm3beta1;
+ JacPDstandardNth3gt11 =
+ kmadd(J13L,PDstandardNth1gt11,kmadd(J23L,PDstandardNth2gt11,kmul(J33L,PDstandardNth3gt11)));
- JacPDupwindNthSymm2beta2 = J12L*PDupwindNthSymm1beta2 +
- J22L*PDupwindNthSymm2beta2 + J32L*PDupwindNthSymm3beta2;
+ JacPDstandardNth3gt12 =
+ kmadd(J13L,PDstandardNth1gt12,kmadd(J23L,PDstandardNth2gt12,kmul(J33L,PDstandardNth3gt12)));
- JacPDupwindNthSymm2beta3 = J12L*PDupwindNthSymm1beta3 +
- J22L*PDupwindNthSymm2beta3 + J32L*PDupwindNthSymm3beta3;
+ JacPDstandardNth3gt13 =
+ kmadd(J13L,PDstandardNth1gt13,kmadd(J23L,PDstandardNth2gt13,kmul(J33L,PDstandardNth3gt13)));
- JacPDupwindNthAnti3alpha = J13L*PDupwindNthAnti1alpha +
- J23L*PDupwindNthAnti2alpha + J33L*PDupwindNthAnti3alpha;
+ JacPDstandardNth3gt22 =
+ kmadd(J13L,PDstandardNth1gt22,kmadd(J23L,PDstandardNth2gt22,kmul(J33L,PDstandardNth3gt22)));
- JacPDupwindNthAnti3beta1 = J13L*PDupwindNthAnti1beta1 +
- J23L*PDupwindNthAnti2beta1 + J33L*PDupwindNthAnti3beta1;
+ JacPDstandardNth3gt23 =
+ kmadd(J13L,PDstandardNth1gt23,kmadd(J23L,PDstandardNth2gt23,kmul(J33L,PDstandardNth3gt23)));
- JacPDupwindNthAnti3beta2 = J13L*PDupwindNthAnti1beta2 +
- J23L*PDupwindNthAnti2beta2 + J33L*PDupwindNthAnti3beta2;
+ JacPDstandardNth3gt33 =
+ kmadd(J13L,PDstandardNth1gt33,kmadd(J23L,PDstandardNth2gt33,kmul(J33L,PDstandardNth3gt33)));
- JacPDupwindNthAnti3beta3 = J13L*PDupwindNthAnti1beta3 +
- J23L*PDupwindNthAnti2beta3 + J33L*PDupwindNthAnti3beta3;
+ JacPDstandardNth3phi =
+ kmadd(J13L,PDstandardNth1phi,kmadd(J23L,PDstandardNth2phi,kmul(J33L,PDstandardNth3phi)));
- JacPDupwindNthSymm3alpha = J13L*PDupwindNthSymm1alpha +
- J23L*PDupwindNthSymm2alpha + J33L*PDupwindNthSymm3alpha;
+ JacPDupwindNthAnti1alpha =
+ kmadd(J11L,PDupwindNthAnti1alpha,kmadd(J21L,PDupwindNthAnti2alpha,kmul(J31L,PDupwindNthAnti3alpha)));
- JacPDupwindNthSymm3beta1 = J13L*PDupwindNthSymm1beta1 +
- J23L*PDupwindNthSymm2beta1 + J33L*PDupwindNthSymm3beta1;
+ JacPDupwindNthAnti1beta1 =
+ kmadd(J11L,PDupwindNthAnti1beta1,kmadd(J21L,PDupwindNthAnti2beta1,kmul(J31L,PDupwindNthAnti3beta1)));
- JacPDupwindNthSymm3beta2 = J13L*PDupwindNthSymm1beta2 +
- J23L*PDupwindNthSymm2beta2 + J33L*PDupwindNthSymm3beta2;
+ JacPDupwindNthAnti1beta2 =
+ kmadd(J11L,PDupwindNthAnti1beta2,kmadd(J21L,PDupwindNthAnti2beta2,kmul(J31L,PDupwindNthAnti3beta2)));
- JacPDupwindNthSymm3beta3 = J13L*PDupwindNthSymm1beta3 +
- J23L*PDupwindNthSymm2beta3 + J33L*PDupwindNthSymm3beta3;
+ 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;
@@ -368,56 +812,89 @@ static void ML_BSSN_MP_convertToADMBaseDtLapseShift_Body(cGH const * restrict co
JacPDupwindNthSymm3beta3 = PDupwindNthSymm3beta3;
}
- ptrdiff_t dir1 = Sign(beta1L);
+ CCTK_REAL_VEC detgt = ToReal(1);
- ptrdiff_t dir2 = Sign(beta2L);
+ CCTK_REAL_VEC gtu11 = kmul(INV(detgt),kmsub(gt22L,gt33L,SQR(gt23L)));
- ptrdiff_t dir3 = Sign(beta3L);
+ 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 =
+ kfmin(ToReal(1),kmul(INV(rL),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(ksub(AL,trKL),ToReal(LapseACoeff),trKL))));
+
+ 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(kmadd(gtu11,JacPDstandardNth1alpha,kmadd(gtu12,JacPDstandardNth2alpha,kmul(gtu13,JacPDstandardNth3alpha))),kmul(phiL,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(beta1L,kmul(eta,ToReal(BetaDriver*(-1
+ +
+ ShiftBCoeff))),kmul(ksub(B1L,Xt1L),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(kmadd(gtu12,JacPDstandardNth1alpha,kmadd(gtu22,JacPDstandardNth2alpha,kmul(gtu23,JacPDstandardNth3alpha))),kmul(phiL,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(beta2L,kmul(eta,ToReal(BetaDriver*(-1
+ +
+ ShiftBCoeff))),kmul(ksub(B2L,Xt2L),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(kmadd(gtu13,JacPDstandardNth1alpha,kmadd(gtu23,JacPDstandardNth2alpha,kmul(gtu33,JacPDstandardNth3alpha))),kmul(phiL,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(beta3L,kmul(eta,ToReal(BetaDriver*(-1
+ +
+ ShiftBCoeff))),kmul(ksub(B3L,Xt3L),ToReal(ShiftBCoeff)))),ToReal(ShiftGammaCoeff)))));
+
+ /* 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(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);
+ 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(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);
+ continue;
+ }
+
+ /* If necessary, store only partial vectors after the last iteration */
- CCTK_REAL eta = fmin(1,INV(rL)*ToReal(SpatialBetaDriverRadius));
-
- CCTK_REAL theta = fmin(1,exp(1 -
- rL*INV(ToReal(SpatialShiftGammaCoeffRadius))));
-
- CCTK_REAL dtalpL =
- -(pow(alphaL,ToReal(harmonicN))*ToReal(harmonicF)*(trKL + (AL -
- trKL)*ToReal(LapseACoeff))) + (beta1L*JacPDupwindNthAnti1alpha +
- beta2L*JacPDupwindNthAnti2alpha + beta3L*JacPDupwindNthAnti3alpha +
- JacPDupwindNthSymm1alpha*Abs(beta1L) +
- JacPDupwindNthSymm2alpha*Abs(beta2L) +
- JacPDupwindNthSymm3alpha*Abs(beta3L))*ToReal(LapseAdvectionCoeff);
-
- CCTK_REAL dtbetaxL = (beta1L*JacPDupwindNthAnti1beta1 +
- beta2L*JacPDupwindNthAnti2beta1 + beta3L*JacPDupwindNthAnti3beta1 +
- JacPDupwindNthSymm1beta1*Abs(beta1L) +
- JacPDupwindNthSymm2beta1*Abs(beta2L) +
- JacPDupwindNthSymm3beta1*Abs(beta3L))*ToReal(ShiftAdvectionCoeff) +
- theta*(Xt1L + beta1L*eta*ToReal(BetaDriver)*(-1 + ToReal(ShiftBCoeff))
- + (B1L - Xt1L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
-
- CCTK_REAL dtbetayL = (beta1L*JacPDupwindNthAnti1beta2 +
- beta2L*JacPDupwindNthAnti2beta2 + beta3L*JacPDupwindNthAnti3beta2 +
- JacPDupwindNthSymm1beta2*Abs(beta1L) +
- JacPDupwindNthSymm2beta2*Abs(beta2L) +
- JacPDupwindNthSymm3beta2*Abs(beta3L))*ToReal(ShiftAdvectionCoeff) +
- theta*(Xt2L + beta2L*eta*ToReal(BetaDriver)*(-1 + ToReal(ShiftBCoeff))
- + (B2L - Xt2L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
-
- CCTK_REAL dtbetazL = (beta1L*JacPDupwindNthAnti1beta3 +
- beta2L*JacPDupwindNthAnti2beta3 + beta3L*JacPDupwindNthAnti3beta3 +
- JacPDupwindNthSymm1beta3*Abs(beta1L) +
- JacPDupwindNthSymm2beta3*Abs(beta2L) +
- JacPDupwindNthSymm3beta3*Abs(beta3L))*ToReal(ShiftAdvectionCoeff) +
- theta*(Xt3L + beta3L*eta*ToReal(BetaDriver)*(-1 + ToReal(ShiftBCoeff))
- + (B3L - Xt3L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
-
- /* Copy local copies back to grid functions */
- dtalp[index] = dtalpL;
- dtbetax[index] = dtbetaxL;
- dtbetay[index] = dtbetayL;
- dtbetaz[index] = dtbetazL;
+ 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(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);
+ break;
+ }
+ vec_store_nta(dtalp[index],dtalpL);
+ vec_store_nta(dtbetax[index],dtbetaxL);
+ vec_store_nta(dtbetay[index],dtbetayL);
+ vec_store_nta(dtbetaz[index],dtbetazL);
}
- LC_ENDLOOP3 (ML_BSSN_MP_convertToADMBaseDtLapseShift);
+ LC_ENDLOOP3VEC (ML_BSSN_MP_convertToADMBaseDtLapseShift);
}
extern "C" void ML_BSSN_MP_convertToADMBaseDtLapseShift(CCTK_ARGUMENTS)
@@ -425,5 +902,43 @@ extern "C" void ML_BSSN_MP_convertToADMBaseDtLapseShift(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_convertToADMBaseDtLapseShift_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_MP_convertToADMBaseDtLapseShift_calc_every != ML_BSSN_MP_convertToADMBaseDtLapseShift_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ADMBase::dtlapse","ADMBase::dtshift","grid::coordinates","Grid::coordinates","ML_BSSN_MP::ML_dtlapse","ML_BSSN_MP::ML_dtshift","ML_BSSN_MP::ML_Gamma","ML_BSSN_MP::ML_lapse","ML_BSSN_MP::ML_log_confac","ML_BSSN_MP::ML_metric","ML_BSSN_MP::ML_shift","ML_BSSN_MP::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_convertToADMBaseDtLapseShift", 12, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_convertToADMBaseDtLapseShift", 2, 2, 2);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_convertToADMBaseDtLapseShift", 3, 3, 3);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_convertToADMBaseDtLapseShift", 4, 4, 4);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_convertToADMBaseDtLapseShift", 5, 5, 5);
+ break;
+ }
+
GenericFD_LoopOverInterior(cctkGH, &ML_BSSN_MP_convertToADMBaseDtLapseShift_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_MP_convertToADMBaseDtLapseShift_Body");
+ }
}
diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBaseDtLapseShiftBoundary.cc b/ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBaseDtLapseShiftBoundary.cc
index 0e398ee..a29cfcd 100644
--- a/ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBaseDtLapseShiftBoundary.cc
+++ b/ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBaseDtLapseShiftBoundary.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_MP_convertToADMBaseDtLapseShiftBoundary_SelectBCs(CCTK_ARGUMENTS)
{
@@ -36,7 +37,7 @@ extern "C" void ML_BSSN_MP_convertToADMBaseDtLapseShiftBoundary_SelectBCs(CCTK_A
return;
}
-static void ML_BSSN_MP_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_MP_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;
@@ -44,20 +45,6 @@ static void ML_BSSN_MP_convertToADMBaseDtLapseShiftBoundary_Body(cGH const * res
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_convertToADMBaseDtLapseShiftBoundary_Body");
- }
-
- if (cctk_iteration % ML_BSSN_MP_convertToADMBaseDtLapseShiftBoundary_calc_every != ML_BSSN_MP_convertToADMBaseDtLapseShiftBoundary_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ADMBase::dtlapse","ADMBase::dtshift","grid::coordinates","Grid::coordinates","ML_BSSN_MP::ML_dtlapse","ML_BSSN_MP::ML_dtshift","ML_BSSN_MP::ML_Gamma","ML_BSSN_MP::ML_lapse","ML_BSSN_MP::ML_shift","ML_BSSN_MP::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_convertToADMBaseDtLapseShiftBoundary", 10, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -67,41 +54,102 @@ static void ML_BSSN_MP_convertToADMBaseDtLapseShiftBoundary_Body(cGH const * res
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const p1o24dx = 0.0416666666666666666666666666667*INV(dx);
- CCTK_REAL const p1o24dy = 0.0416666666666666666666666666667*INV(dy);
- CCTK_REAL const p1o24dz = 0.0416666666666666666666666666667*INV(dz);
- CCTK_REAL const p1o64dx = 0.015625*INV(dx);
- CCTK_REAL const p1o64dy = 0.015625*INV(dy);
- CCTK_REAL const p1o64dz = 0.015625*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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)
@@ -148,29 +196,38 @@ static void ML_BSSN_MP_convertToADMBaseDtLapseShiftBoundary_Body(cGH const * res
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_LOOP3 (ML_BSSN_MP_convertToADMBaseDtLapseShiftBoundary,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_MP_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 AL = A[index];
- CCTK_REAL alphaL = alpha[index];
- CCTK_REAL B1L = B1[index];
- CCTK_REAL B2L = B2[index];
- CCTK_REAL B3L = B3[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL rL = r[index];
- CCTK_REAL trKL = trK[index];
- CCTK_REAL Xt1L = Xt1[index];
- CCTK_REAL Xt2L = Xt2[index];
- CCTK_REAL Xt3L = Xt3[index];
+ 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 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]);
@@ -178,35 +235,100 @@ static void ML_BSSN_MP_convertToADMBaseDtLapseShiftBoundary_Body(cGH const * res
/* Precompute derivatives */
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
/* Calculate temporaries and grid functions */
- CCTK_REAL eta = fmin(1,INV(rL)*ToReal(SpatialBetaDriverRadius));
+ CCTK_REAL_VEC eta =
+ kfmin(ToReal(1),kmul(INV(rL),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(ksub(AL,trKL),ToReal(LapseACoeff),trKL))));
+
+ 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(beta1L,kmul(eta,ToReal(BetaDriver*(-1 +
+ ShiftBCoeff))),kmul(ksub(B1L,Xt1L),ToReal(ShiftBCoeff)))),ToReal(ShiftGammaCoeff)));
+
+ dtbetayL =
+ kmul(theta,kmul(kadd(Xt2L,kmadd(beta2L,kmul(eta,ToReal(BetaDriver*(-1 +
+ ShiftBCoeff))),kmul(ksub(B2L,Xt2L),ToReal(ShiftBCoeff)))),ToReal(ShiftGammaCoeff)));
+
+ dtbetazL =
+ kmul(theta,kmul(kadd(Xt3L,kmadd(beta3L,kmul(eta,ToReal(BetaDriver*(-1 +
+ ShiftBCoeff))),kmul(ksub(B3L,Xt3L),ToReal(ShiftBCoeff)))),ToReal(ShiftGammaCoeff)));
+ }
- CCTK_REAL theta = fmin(1,exp(1 -
- rL*INV(ToReal(SpatialShiftGammaCoeffRadius))));
+ /* If necessary, store only partial vectors after the first iteration */
- CCTK_REAL dtalpL =
- -(pow(alphaL,ToReal(harmonicN))*ToReal(harmonicF)*(trKL + (AL -
- trKL)*ToReal(LapseACoeff)));
+ 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(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);
+ break;
+ }
- CCTK_REAL dtbetaxL = theta*(Xt1L + beta1L*eta*ToReal(BetaDriver)*(-1 +
- ToReal(ShiftBCoeff)) + (B1L -
- Xt1L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
+ /* If necessary, store only partial vectors after the first iteration */
- CCTK_REAL dtbetayL = theta*(Xt2L + beta2L*eta*ToReal(BetaDriver)*(-1 +
- ToReal(ShiftBCoeff)) + (B2L -
- Xt2L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
+ 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(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);
+ continue;
+ }
- CCTK_REAL dtbetazL = theta*(Xt3L + beta3L*eta*ToReal(BetaDriver)*(-1 +
- ToReal(ShiftBCoeff)) + (B3L -
- Xt3L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
+ /* If necessary, store only partial vectors after the last iteration */
- /* Copy local copies back to grid functions */
- dtalp[index] = dtalpL;
- dtbetax[index] = dtbetaxL;
- dtbetay[index] = dtbetayL;
- dtbetaz[index] = dtbetazL;
+ 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(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);
+ break;
+ }
+ vec_store_nta(dtalp[index],dtalpL);
+ vec_store_nta(dtbetax[index],dtbetaxL);
+ vec_store_nta(dtbetay[index],dtbetayL);
+ vec_store_nta(dtbetaz[index],dtbetazL);
}
- LC_ENDLOOP3 (ML_BSSN_MP_convertToADMBaseDtLapseShiftBoundary);
+ LC_ENDLOOP3VEC (ML_BSSN_MP_convertToADMBaseDtLapseShiftBoundary);
}
extern "C" void ML_BSSN_MP_convertToADMBaseDtLapseShiftBoundary(CCTK_ARGUMENTS)
@@ -214,5 +336,39 @@ extern "C" void ML_BSSN_MP_convertToADMBaseDtLapseShiftBoundary(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_convertToADMBaseDtLapseShiftBoundary_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_MP_convertToADMBaseDtLapseShiftBoundary_calc_every != ML_BSSN_MP_convertToADMBaseDtLapseShiftBoundary_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ADMBase::dtlapse","ADMBase::dtshift","grid::coordinates","Grid::coordinates","ML_BSSN_MP::ML_dtlapse","ML_BSSN_MP::ML_dtshift","ML_BSSN_MP::ML_Gamma","ML_BSSN_MP::ML_lapse","ML_BSSN_MP::ML_shift","ML_BSSN_MP::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_convertToADMBaseDtLapseShiftBoundary", 10, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverBoundaryWithGhosts(cctkGH, &ML_BSSN_MP_convertToADMBaseDtLapseShiftBoundary_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_MP_convertToADMBaseDtLapseShiftBoundary_Body");
+ }
}
diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBaseFakeDtLapseShift.cc b/ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBaseFakeDtLapseShift.cc
index 39e0324..3b21313 100644
--- a/ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBaseFakeDtLapseShift.cc
+++ b/ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBaseFakeDtLapseShift.cc
@@ -13,15 +13,16 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
-static void ML_BSSN_MP_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_MP_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;
@@ -29,20 +30,6 @@ static void ML_BSSN_MP_convertToADMBaseFakeDtLapseShift_Body(cGH const * restric
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_convertToADMBaseFakeDtLapseShift_Body");
- }
-
- if (cctk_iteration % ML_BSSN_MP_convertToADMBaseFakeDtLapseShift_calc_every != ML_BSSN_MP_convertToADMBaseFakeDtLapseShift_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ADMBase::dtlapse","ADMBase::dtshift","grid::coordinates","Grid::coordinates","ML_BSSN_MP::ML_dtlapse","ML_BSSN_MP::ML_dtshift","ML_BSSN_MP::ML_Gamma","ML_BSSN_MP::ML_lapse","ML_BSSN_MP::ML_shift","ML_BSSN_MP::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_convertToADMBaseFakeDtLapseShift", 10, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -52,41 +39,102 @@ static void ML_BSSN_MP_convertToADMBaseFakeDtLapseShift_Body(cGH const * restric
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const p1o24dx = 0.0416666666666666666666666666667*INV(dx);
- CCTK_REAL const p1o24dy = 0.0416666666666666666666666666667*INV(dy);
- CCTK_REAL const p1o24dz = 0.0416666666666666666666666666667*INV(dz);
- CCTK_REAL const p1o64dx = 0.015625*INV(dx);
- CCTK_REAL const p1o64dy = 0.015625*INV(dy);
- CCTK_REAL const p1o64dz = 0.015625*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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)
@@ -133,29 +181,38 @@ static void ML_BSSN_MP_convertToADMBaseFakeDtLapseShift_Body(cGH const * restric
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_LOOP3 (ML_BSSN_MP_convertToADMBaseFakeDtLapseShift,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_MP_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 AL = A[index];
- CCTK_REAL alphaL = alpha[index];
- CCTK_REAL B1L = B1[index];
- CCTK_REAL B2L = B2[index];
- CCTK_REAL B3L = B3[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL rL = r[index];
- CCTK_REAL trKL = trK[index];
- CCTK_REAL Xt1L = Xt1[index];
- CCTK_REAL Xt2L = Xt2[index];
- CCTK_REAL Xt3L = Xt3[index];
+ 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 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]);
@@ -163,35 +220,100 @@ static void ML_BSSN_MP_convertToADMBaseFakeDtLapseShift_Body(cGH const * restric
/* Precompute derivatives */
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
/* Calculate temporaries and grid functions */
- CCTK_REAL eta = fmin(1,INV(rL)*ToReal(SpatialBetaDriverRadius));
+ CCTK_REAL_VEC eta =
+ kfmin(ToReal(1),kmul(INV(rL),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(ksub(AL,trKL),ToReal(LapseACoeff),trKL))));
+
+ 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(beta1L,kmul(eta,ToReal(BetaDriver*(-1 +
+ ShiftBCoeff))),kmul(ksub(B1L,Xt1L),ToReal(ShiftBCoeff)))),ToReal(ShiftGammaCoeff)));
+
+ dtbetayL =
+ kmul(theta,kmul(kadd(Xt2L,kmadd(beta2L,kmul(eta,ToReal(BetaDriver*(-1 +
+ ShiftBCoeff))),kmul(ksub(B2L,Xt2L),ToReal(ShiftBCoeff)))),ToReal(ShiftGammaCoeff)));
+
+ dtbetazL =
+ kmul(theta,kmul(kadd(Xt3L,kmadd(beta3L,kmul(eta,ToReal(BetaDriver*(-1 +
+ ShiftBCoeff))),kmul(ksub(B3L,Xt3L),ToReal(ShiftBCoeff)))),ToReal(ShiftGammaCoeff)));
+ }
- CCTK_REAL theta = fmin(1,exp(1 -
- rL*INV(ToReal(SpatialShiftGammaCoeffRadius))));
+ /* If necessary, store only partial vectors after the first iteration */
- CCTK_REAL dtalpL =
- -(pow(alphaL,ToReal(harmonicN))*ToReal(harmonicF)*(trKL + (AL -
- trKL)*ToReal(LapseACoeff)));
+ 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(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);
+ break;
+ }
- CCTK_REAL dtbetaxL = theta*(Xt1L + beta1L*eta*ToReal(BetaDriver)*(-1 +
- ToReal(ShiftBCoeff)) + (B1L -
- Xt1L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
+ /* If necessary, store only partial vectors after the first iteration */
- CCTK_REAL dtbetayL = theta*(Xt2L + beta2L*eta*ToReal(BetaDriver)*(-1 +
- ToReal(ShiftBCoeff)) + (B2L -
- Xt2L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
+ 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(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);
+ continue;
+ }
- CCTK_REAL dtbetazL = theta*(Xt3L + beta3L*eta*ToReal(BetaDriver)*(-1 +
- ToReal(ShiftBCoeff)) + (B3L -
- Xt3L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
+ /* If necessary, store only partial vectors after the last iteration */
- /* Copy local copies back to grid functions */
- dtalp[index] = dtalpL;
- dtbetax[index] = dtbetaxL;
- dtbetay[index] = dtbetayL;
- dtbetaz[index] = dtbetazL;
+ 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(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);
+ break;
+ }
+ vec_store_nta(dtalp[index],dtalpL);
+ vec_store_nta(dtbetax[index],dtbetaxL);
+ vec_store_nta(dtbetay[index],dtbetayL);
+ vec_store_nta(dtbetaz[index],dtbetazL);
}
- LC_ENDLOOP3 (ML_BSSN_MP_convertToADMBaseFakeDtLapseShift);
+ LC_ENDLOOP3VEC (ML_BSSN_MP_convertToADMBaseFakeDtLapseShift);
}
extern "C" void ML_BSSN_MP_convertToADMBaseFakeDtLapseShift(CCTK_ARGUMENTS)
@@ -199,5 +321,39 @@ extern "C" void ML_BSSN_MP_convertToADMBaseFakeDtLapseShift(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_convertToADMBaseFakeDtLapseShift_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_MP_convertToADMBaseFakeDtLapseShift_calc_every != ML_BSSN_MP_convertToADMBaseFakeDtLapseShift_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ADMBase::dtlapse","ADMBase::dtshift","grid::coordinates","Grid::coordinates","ML_BSSN_MP::ML_dtlapse","ML_BSSN_MP::ML_dtshift","ML_BSSN_MP::ML_Gamma","ML_BSSN_MP::ML_lapse","ML_BSSN_MP::ML_shift","ML_BSSN_MP::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_convertToADMBaseFakeDtLapseShift", 10, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverEverything(cctkGH, &ML_BSSN_MP_convertToADMBaseFakeDtLapseShift_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_MP_convertToADMBaseFakeDtLapseShift_Body");
+ }
}
diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_enforce.cc b/ML_BSSN_MP/src/ML_BSSN_MP_enforce.cc
index 1551028..9e5ab53 100644
--- a/ML_BSSN_MP/src/ML_BSSN_MP_enforce.cc
+++ b/ML_BSSN_MP/src/ML_BSSN_MP_enforce.cc
@@ -13,15 +13,16 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
-static void ML_BSSN_MP_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_MP_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;
@@ -29,20 +30,6 @@ static void ML_BSSN_MP_enforce_Body(cGH const * restrict const cctkGH, int const
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_enforce_Body");
- }
-
- if (cctk_iteration % ML_BSSN_MP_enforce_calc_every != ML_BSSN_MP_enforce_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN_MP::ML_curv","ML_BSSN_MP::ML_lapse","ML_BSSN_MP::ML_metric"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_enforce", 3, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -52,41 +39,102 @@ static void ML_BSSN_MP_enforce_Body(cGH const * restrict const cctkGH, int const
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const p1o24dx = 0.0416666666666666666666666666667*INV(dx);
- CCTK_REAL const p1o24dy = 0.0416666666666666666666666666667*INV(dy);
- CCTK_REAL const p1o24dz = 0.0416666666666666666666666666667*INV(dz);
- CCTK_REAL const p1o64dx = 0.015625*INV(dx);
- CCTK_REAL const p1o64dy = 0.015625*INV(dy);
- CCTK_REAL const p1o64dz = 0.015625*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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)
@@ -133,29 +181,38 @@ static void ML_BSSN_MP_enforce_Body(cGH const * restrict const cctkGH, int const
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_LOOP3 (ML_BSSN_MP_enforce,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_MP_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 alphaL = alpha[index];
- CCTK_REAL At11L = At11[index];
- CCTK_REAL At12L = At12[index];
- CCTK_REAL At13L = At13[index];
- CCTK_REAL At22L = At22[index];
- CCTK_REAL At23L = At23[index];
- CCTK_REAL At33L = At33[index];
- CCTK_REAL gt11L = gt11[index];
- CCTK_REAL gt12L = gt12[index];
- CCTK_REAL gt13L = gt13[index];
- CCTK_REAL gt22L = gt22[index];
- CCTK_REAL gt23L = gt23[index];
- CCTK_REAL gt33L = gt33[index];
+ CCTK_REAL_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]);
@@ -163,48 +220,116 @@ static void ML_BSSN_MP_enforce_Body(cGH const * restrict const cctkGH, int const
/* Precompute derivatives */
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
/* Calculate temporaries and grid functions */
- CCTK_REAL detgt = 1;
+ 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 gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L));
+ CCTK_REAL_VEC gtu33 = kmul(INV(detgt),kmsub(gt11L,gt22L,SQR(gt12L)));
- CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt);
+ 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)))));
- CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt);
+ At11L =
+ kmadd(gt11L,kmul(trAt,ToReal(-0.333333333333333333333333333333)),At11L);
- CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L));
+ At12L =
+ kmadd(gt12L,kmul(trAt,ToReal(-0.333333333333333333333333333333)),At12L);
- CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt);
+ At13L =
+ kmadd(gt13L,kmul(trAt,ToReal(-0.333333333333333333333333333333)),At13L);
- CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L));
+ At22L =
+ kmadd(gt22L,kmul(trAt,ToReal(-0.333333333333333333333333333333)),At22L);
- CCTK_REAL trAt = At11L*gtu11 + At22L*gtu22 + 2*(At12L*gtu12 +
- At13L*gtu13 + At23L*gtu23) + At33L*gtu33;
+ At23L =
+ kmadd(gt23L,kmul(trAt,ToReal(-0.333333333333333333333333333333)),At23L);
- At11L = At11L - 0.333333333333333333333333333333*gt11L*trAt;
+ At33L =
+ kmadd(gt33L,kmul(trAt,ToReal(-0.333333333333333333333333333333)),At33L);
- At12L = At12L - 0.333333333333333333333333333333*gt12L*trAt;
+ alphaL = kfmax(alphaL,ToReal(MinimumLapse));
- At13L = At13L - 0.333333333333333333333333333333*gt13L*trAt;
+ /* If necessary, store only partial vectors after the first iteration */
- At22L = At22L - 0.333333333333333333333333333333*gt22L*trAt;
+ 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(At11[index],At11L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At12[index],At12L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At13[index],At13L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At22[index],At22L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At23[index],At23L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At33[index],At33L,elt_count_lo,elt_count_hi);
+ break;
+ }
- At23L = At23L - 0.333333333333333333333333333333*gt23L*trAt;
+ /* If necessary, store only partial vectors after the first iteration */
- At33L = At33L - 0.333333333333333333333333333333*gt33L*trAt;
+ 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(At11[index],At11L,elt_count);
+ vec_store_nta_partial_hi(At12[index],At12L,elt_count);
+ vec_store_nta_partial_hi(At13[index],At13L,elt_count);
+ vec_store_nta_partial_hi(At22[index],At22L,elt_count);
+ vec_store_nta_partial_hi(At23[index],At23L,elt_count);
+ vec_store_nta_partial_hi(At33[index],At33L,elt_count);
+ continue;
+ }
- alphaL = fmax(alphaL,ToReal(MinimumLapse));
+ /* If necessary, store only partial vectors after the last iteration */
- /* Copy local copies back to grid functions */
- alpha[index] = alphaL;
- At11[index] = At11L;
- At12[index] = At12L;
- At13[index] = At13L;
- At22[index] = At22L;
- At23[index] = At23L;
- At33[index] = At33L;
+ 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(At11[index],At11L,elt_count);
+ vec_store_nta_partial_lo(At12[index],At12L,elt_count);
+ vec_store_nta_partial_lo(At13[index],At13L,elt_count);
+ vec_store_nta_partial_lo(At22[index],At22L,elt_count);
+ vec_store_nta_partial_lo(At23[index],At23L,elt_count);
+ vec_store_nta_partial_lo(At33[index],At33L,elt_count);
+ break;
+ }
+ vec_store_nta(alpha[index],alphaL);
+ vec_store_nta(At11[index],At11L);
+ vec_store_nta(At12[index],At12L);
+ vec_store_nta(At13[index],At13L);
+ vec_store_nta(At22[index],At22L);
+ vec_store_nta(At23[index],At23L);
+ vec_store_nta(At33[index],At33L);
}
- LC_ENDLOOP3 (ML_BSSN_MP_enforce);
+ LC_ENDLOOP3VEC (ML_BSSN_MP_enforce);
}
extern "C" void ML_BSSN_MP_enforce(CCTK_ARGUMENTS)
@@ -212,5 +337,39 @@ extern "C" void ML_BSSN_MP_enforce(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_enforce_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_MP_enforce_calc_every != ML_BSSN_MP_enforce_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN_MP::ML_curv","ML_BSSN_MP::ML_lapse","ML_BSSN_MP::ML_metric"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_enforce", 3, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverEverything(cctkGH, &ML_BSSN_MP_enforce_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_MP_enforce_Body");
+ }
}
diff --git a/ML_BSSN_MP/src/RegisterMoL.cc b/ML_BSSN_MP/src/RegisterMoL.cc
index dca4646..984d576 100644
--- a/ML_BSSN_MP/src/RegisterMoL.cc
+++ b/ML_BSSN_MP/src/RegisterMoL.cc
@@ -37,5 +37,7 @@ extern "C" void ML_BSSN_MP_RegisterVars(CCTK_ARGUMENTS)
ierr += MoLRegisterEvolved(CCTK_VarIndex("ML_BSSN_MP::beta2"), CCTK_VarIndex("ML_BSSN_MP::beta2rhs"));
ierr += MoLRegisterEvolved(CCTK_VarIndex("ML_BSSN_MP::beta3"), CCTK_VarIndex("ML_BSSN_MP::beta3rhs"));
ierr += MoLRegisterEvolved(CCTK_VarIndex("ML_BSSN_MP::trK"), CCTK_VarIndex("ML_BSSN_MP::trKrhs"));
+
+ /* Register all the evolved Array functions with MoL */
return;
}
diff --git a/ML_BSSN_MP_Helper/src/SetGroupTags.c b/ML_BSSN_MP_Helper/src/SetGroupTags.c
index d6ec2bd..08731e4 100644
--- a/ML_BSSN_MP_Helper/src/SetGroupTags.c
+++ b/ML_BSSN_MP_Helper/src/SetGroupTags.c
@@ -15,29 +15,30 @@ ML_BSSN_MP_SetGroupTags (void)
{
DECLARE_CCTK_PARAMETERS;
- set_group_tags (0, 0, 1, "ADMBase::metric");
- set_group_tags (0, 0, 1, "ADMBase::curv");
- set_group_tags (0, 0, 1, "ADMBase::lapse");
- set_group_tags (0, 0, 1, "ADMBase::shift");
- set_group_tags (0, 0, 1, "ADMBase::dtlapse");
- set_group_tags (0, 0, 1, "ADMBase::dtshift");
+ 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 (0, 0, 0, "ML_BSSN_MP::ML_cons_detg");
- set_group_tags (0, 0, 0, "ML_BSSN_MP::ML_cons_Gamma");
- set_group_tags (0, 0, 0, "ML_BSSN_MP::ML_cons_traceA");
- set_group_tags (0, 0, 0, "ML_BSSN_MP::ML_Ham");
- set_group_tags (0, 0, 0, "ML_BSSN_MP::ML_mom");
+ set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_MP::ML_cons_detg");
+ set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_MP::ML_cons_Gamma");
+ set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_MP::ML_cons_traceA");
+ set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_MP::ML_Ham");
+ set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_MP::ML_mom");
- int const checkpoint = rhs_timelevels > 1;
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_MP::ML_log_confacrhs");
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_MP::ML_metricrhs");
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_MP::ML_Gammarhs");
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_MP::ML_trace_curvrhs");
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_MP::ML_curvrhs");
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_MP::ML_lapserhs");
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_MP::ML_dtlapserhs");
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_MP::ML_shiftrhs");
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_MP::ML_dtshiftrhs");
+ int const rhs_checkpoint = rhs_timelevels > 1;
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN_MP::ML_log_confacrhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN_MP::ML_metricrhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN_MP::ML_Gammarhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN_MP::ML_trace_curvrhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN_MP::ML_curvrhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN_MP::ML_lapserhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN_MP::ML_dtlapserhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN_MP::ML_shiftrhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN_MP::ML_dtshiftrhs");
return 0;
}
diff --git a/ML_BSSN_MP_O8/configuration.ccl b/ML_BSSN_MP_O8/configuration.ccl
index 8e2c3c5..bdbc1bd 100644
--- a/ML_BSSN_MP_O8/configuration.ccl
+++ b/ML_BSSN_MP_O8/configuration.ccl
@@ -2,3 +2,4 @@
REQUIRES GenericFD
REQUIRES LoopControl
+REQUIRES Vectors
diff --git a/ML_BSSN_MP_O8/interface.ccl b/ML_BSSN_MP_O8/interface.ccl
index 6e64b9f..f7d56ff 100644
--- a/ML_BSSN_MP_O8/interface.ccl
+++ b/ML_BSSN_MP_O8/interface.ccl
@@ -11,6 +11,7 @@ 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
diff --git a/ML_BSSN_MP_O8/param.ccl b/ML_BSSN_MP_O8/param.ccl
index e1fd41f..ff12765 100644
--- a/ML_BSSN_MP_O8/param.ccl
+++ b/ML_BSSN_MP_O8/param.ccl
@@ -45,6 +45,7 @@ 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
@@ -142,6 +143,18 @@ CCTK_INT conformalMethod "Treatment of conformal factor"
*:* :: ""
} 0
+restricted:
+CCTK_INT fdOrder "fdOrder"
+{
+ *:* :: ""
+} 8
+
+restricted:
+CCTK_INT harmonicShift "Whether to use the harmonic shift"
+{
+ *:* :: ""
+} 0
+
private:
KEYWORD my_initial_data "my_initial_data"
{
@@ -206,6 +219,12 @@ CCTK_INT ML_BSSN_MP_O8_MaxNumEvolvedVars "Number of evolved variables used by th
} 25
restricted:
+CCTK_INT ML_BSSN_MP_O8_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 :: ""
diff --git a/ML_BSSN_MP_O8/schedule.ccl b/ML_BSSN_MP_O8/schedule.ccl
index 179e85a..dcf13f9 100644
--- a/ML_BSSN_MP_O8/schedule.ccl
+++ b/ML_BSSN_MP_O8/schedule.ccl
@@ -340,7 +340,7 @@ if (CCTK_EQUALS(my_rhs_boundary_condition, "static"))
} "ML_BSSN_MP_O8_RHSStaticBoundary"
}
-schedule ML_BSSN_MP_O8_enforce IN MoL_PostStep BEFORE ML_BSSN_MP_O8_SelectBoundConds
+schedule ML_BSSN_MP_O8_enforce IN MoL_PostStepModify
{
LANG: C
} "ML_BSSN_MP_O8_enforce"
@@ -388,7 +388,7 @@ if (CCTK_EQUALS(dt_lapse_shift_method, "noLapseShiftAdvection"))
} "ML_BSSN_MP_O8_convertToADMBaseFakeDtLapseShift"
}
-schedule group ML_BSSN_MP_O8_constraints1_group in MoL_PseudoEvolution
+schedule group ML_BSSN_MP_O8_constraints1_group in MoL_PseudoEvolution after MoL_PostStep
{
# no language specified
} "ML_BSSN_MP_O8_constraints1"
@@ -415,17 +415,12 @@ schedule group ML_BSSN_MP_O8_constraints1_bc_group in ML_BSSN_MP_O8_constraints1
# no language specified
} "ML_BSSN_MP_O8_constraints1"
-schedule group ML_BSSN_MP_O8_constraints1_bc_group at CCTK_POSTRESTRICT
+schedule group ML_BSSN_MP_O8_constraints1_bc_group in MoL_PseudoEvolutionBoundaries after MoL_PostStep
{
# no language specified
} "ML_BSSN_MP_O8_constraints1"
-schedule group ML_BSSN_MP_O8_constraints1_bc_group at CCTK_POSTRESTRICTINITIAL
-{
- # no language specified
-} "ML_BSSN_MP_O8_constraints1"
-
-schedule group ML_BSSN_MP_O8_constraints2_group in MoL_PseudoEvolution
+schedule group ML_BSSN_MP_O8_constraints2_group in MoL_PseudoEvolution after MoL_PostStep
{
# no language specified
} "ML_BSSN_MP_O8_constraints2"
@@ -455,12 +450,7 @@ schedule group ML_BSSN_MP_O8_constraints2_bc_group in ML_BSSN_MP_O8_constraints2
# no language specified
} "ML_BSSN_MP_O8_constraints2"
-schedule group ML_BSSN_MP_O8_constraints2_bc_group at CCTK_POSTRESTRICT
-{
- # no language specified
-} "ML_BSSN_MP_O8_constraints2"
-
-schedule group ML_BSSN_MP_O8_constraints2_bc_group at CCTK_POSTRESTRICTINITIAL
+schedule group ML_BSSN_MP_O8_constraints2_bc_group in MoL_PseudoEvolutionBoundaries after MoL_PostStep
{
# no language specified
} "ML_BSSN_MP_O8_constraints2"
diff --git a/ML_BSSN_MP_O8/src/Differencing.h b/ML_BSSN_MP_O8/src/Differencing.h
index 03416b8..96a0554 100644
--- a/ML_BSSN_MP_O8/src/Differencing.h
+++ b/ML_BSSN_MP_O8/src/Differencing.h
@@ -1,324 +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 PDstandardNth1(u) ((-672*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + 672*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)]) + 168*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) - 168*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]) - 32*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(0)]) + 32*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(0)]) + 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(0)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(0)]))*p1o840dx)
+# 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 PDstandardNth1(u) (PDstandardNth1_impl(u,p1o840dx,cdj,cdk))
-static CCTK_REAL PDstandardNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o840dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o840dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-672*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + 672*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)]) + 168*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) - 168*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]) - 32*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(0)]) + 32*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(0)]) + 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(0)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(0)]))*p1o840dx;
+ 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 PDstandardNth2(u) ((-672*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + 672*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)]) + 168*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) - 168*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]) - 32*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(0)]) + 32*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(0)]) + 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(0)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(0)]))*p1o840dy)
+# 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 PDstandardNth2(u) (PDstandardNth2_impl(u,p1o840dy,cdj,cdk))
-static CCTK_REAL PDstandardNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o840dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o840dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-672*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + 672*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)]) + 168*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) - 168*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]) - 32*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(0)]) + 32*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(0)]) + 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(0)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(0)]))*p1o840dy;
+ 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 PDstandardNth3(u) ((-672*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + 672*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)]) + 168*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) - 168*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]) - 32*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-3)]) + 32*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(3)]) + 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-4)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(4)]))*p1o840dz)
+# 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 PDstandardNth3(u) (PDstandardNth3_impl(u,p1o840dz,cdj,cdk))
-static CCTK_REAL PDstandardNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o840dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o840dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-672*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + 672*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)]) + 168*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) - 168*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]) - 32*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-3)]) + 32*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(3)]) + 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-4)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(4)]))*p1o840dz;
+ 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 PDstandardNth11(u) ((-14350*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 8064*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)])) - 1008*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)])) + 128*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(0)])) - 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(0)])))*p1o5040dx2)
+# 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 PDstandardNth11(u) (PDstandardNth11_impl(u,p1o5040dx2,cdj,cdk))
-static CCTK_REAL PDstandardNth11_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o5040dx2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth11_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o5040dx2, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-14350*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 8064*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)])) - 1008*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)])) + 128*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(0)])) - 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(0)])))*p1o5040dx2;
+ 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 PDstandardNth22(u) ((-14350*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 8064*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)])) - 1008*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)])) + 128*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(0)])) - 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(0)])))*p1o5040dy2)
+# 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 PDstandardNth22(u) (PDstandardNth22_impl(u,p1o5040dy2,cdj,cdk))
-static CCTK_REAL PDstandardNth22_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o5040dy2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth22_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o5040dy2, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-14350*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 8064*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)])) - 1008*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)])) + 128*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(0)])) - 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(0)])))*p1o5040dy2;
+ 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 PDstandardNth33(u) ((-14350*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 8064*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)])) - 1008*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)])) + 128*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(3)])) - 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(4)])))*p1o5040dz2)
+# 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 PDstandardNth33(u) (PDstandardNth33_impl(u,p1o5040dz2,cdj,cdk))
-static CCTK_REAL PDstandardNth33_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o5040dz2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth33_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o5040dz2, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-14350*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 8064*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)])) - 1008*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)])) + 128*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(3)])) - 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(4)])))*p1o5040dz2;
+ 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 PDstandardNth12(u) ((-451584*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)])) + 451584*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)])) + 112896*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-1)+cdk*(0)])) - 112896*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(1)+cdk*(0)])) - 28224*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-2)+cdk*(0)])) + 28224*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(2)+cdk*(0)])) - 21504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(-1)+cdk*(0)])) + 21504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(1)+cdk*(0)])) + 5376*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(-2)+cdk*(0)])) - 5376*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(2)+cdk*(0)])) - 1024*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(-3)+cdk*(0)])) + 1024*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(3)+cdk*(0)])) + 2016*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(-1)+cdk*(0)])) - 2016*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(1)+cdk*(0)])) - 504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(-2)+cdk*(0)])) + 504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(2)+cdk*(0)])) + 96*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(-3)+cdk*(0)])) - 96*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(3)+cdk*(0)])) - 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(-4)+cdk*(0)])) + 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(4)+cdk*(0)])))*p1o705600dxdy)
+# 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 PDstandardNth12(u) (PDstandardNth12_impl(u,p1o705600dxdy,cdj,cdk))
-static CCTK_REAL PDstandardNth12_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o705600dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth12_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o705600dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-451584*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)])) + 451584*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)])) + 112896*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-1)+cdk*(0)])) - 112896*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(1)+cdk*(0)])) - 28224*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-2)+cdk*(0)])) + 28224*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(2)+cdk*(0)])) - 21504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(-1)+cdk*(0)])) + 21504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(1)+cdk*(0)])) + 5376*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(-2)+cdk*(0)])) - 5376*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(2)+cdk*(0)])) - 1024*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(-3)+cdk*(0)])) + 1024*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(3)+cdk*(0)])) + 2016*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(-1)+cdk*(0)])) - 2016*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(1)+cdk*(0)])) - 504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(-2)+cdk*(0)])) + 504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(2)+cdk*(0)])) + 96*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(-3)+cdk*(0)])) - 96*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(3)+cdk*(0)])) - 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(-4)+cdk*(0)])) + 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(4)+cdk*(0)])))*p1o705600dxdy;
+ 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 PDstandardNth13(u) ((-451584*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)])) + 451584*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)])) + 112896*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-1)])) - 112896*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(1)])) - 28224*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-2)])) + 28224*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(2)])) - 21504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(-1)])) + 21504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(1)])) + 5376*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(-2)])) - 5376*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(2)])) - 1024*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(-3)])) + 1024*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(3)])) + 2016*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(-1)])) - 2016*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(1)])) - 504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(-2)])) + 504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(2)])) + 96*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(-3)])) - 96*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(3)])) - 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(-4)])) + 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(4)])))*p1o705600dxdz)
+# 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 PDstandardNth13(u) (PDstandardNth13_impl(u,p1o705600dxdz,cdj,cdk))
-static CCTK_REAL PDstandardNth13_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o705600dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth13_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o705600dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-451584*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)])) + 451584*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)])) + 112896*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-1)])) - 112896*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(1)])) - 28224*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-2)])) + 28224*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(2)])) - 21504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(-1)])) + 21504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(1)])) + 5376*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(-2)])) - 5376*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(2)])) - 1024*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(-3)])) + 1024*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(3)])) + 2016*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(-1)])) - 2016*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(1)])) - 504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(-2)])) + 504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(2)])) + 96*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(-3)])) - 96*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(3)])) - 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(-4)])) + 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(4)])))*p1o705600dxdz;
+ 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 PDstandardNth21(u) ((-451584*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)])) + 451584*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)])) + 112896*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-1)+cdk*(0)])) - 112896*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(1)+cdk*(0)])) - 28224*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-2)+cdk*(0)])) + 28224*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(2)+cdk*(0)])) - 21504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(-1)+cdk*(0)])) + 21504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(1)+cdk*(0)])) + 5376*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(-2)+cdk*(0)])) - 5376*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(2)+cdk*(0)])) - 1024*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(-3)+cdk*(0)])) + 1024*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(3)+cdk*(0)])) + 2016*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(-1)+cdk*(0)])) - 2016*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(1)+cdk*(0)])) - 504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(-2)+cdk*(0)])) + 504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(2)+cdk*(0)])) + 96*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(-3)+cdk*(0)])) - 96*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(3)+cdk*(0)])) - 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(-4)+cdk*(0)])) + 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(4)+cdk*(0)])))*p1o705600dxdy)
+# 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 PDstandardNth21(u) (PDstandardNth21_impl(u,p1o705600dxdy,cdj,cdk))
-static CCTK_REAL PDstandardNth21_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o705600dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth21_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o705600dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-451584*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)])) + 451584*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)])) + 112896*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-1)+cdk*(0)])) - 112896*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(1)+cdk*(0)])) - 28224*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-2)+cdk*(0)])) + 28224*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(2)+cdk*(0)])) - 21504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(-1)+cdk*(0)])) + 21504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(1)+cdk*(0)])) + 5376*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(-2)+cdk*(0)])) - 5376*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(2)+cdk*(0)])) - 1024*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(-3)+cdk*(0)])) + 1024*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(3)+cdk*(0)])) + 2016*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(-1)+cdk*(0)])) - 2016*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(1)+cdk*(0)])) - 504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(-2)+cdk*(0)])) + 504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(2)+cdk*(0)])) + 96*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(-3)+cdk*(0)])) - 96*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(3)+cdk*(0)])) - 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(-4)+cdk*(0)])) + 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(4)+cdk*(0)])))*p1o705600dxdy;
+ 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 PDstandardNth23(u) ((-451584*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)])) + 451584*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)])) + 112896*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-1)])) - 112896*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(1)])) - 28224*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-2)])) + 28224*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(2)])) - 21504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(-1)])) + 21504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(1)])) + 5376*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(-2)])) - 5376*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(2)])) - 1024*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(-3)])) + 1024*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(3)])) + 2016*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(-1)])) - 2016*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(1)])) - 504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(-2)])) + 504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(2)])) + 96*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(-3)])) - 96*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(3)])) - 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(-4)])) + 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(4)])))*p1o705600dydz)
+# 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 PDstandardNth23(u) (PDstandardNth23_impl(u,p1o705600dydz,cdj,cdk))
-static CCTK_REAL PDstandardNth23_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o705600dydz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth23_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o705600dydz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-451584*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)])) + 451584*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)])) + 112896*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-1)])) - 112896*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(1)])) - 28224*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-2)])) + 28224*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(2)])) - 21504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(-1)])) + 21504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(1)])) + 5376*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(-2)])) - 5376*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(2)])) - 1024*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(-3)])) + 1024*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(3)])) + 2016*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(-1)])) - 2016*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(1)])) - 504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(-2)])) + 504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(2)])) + 96*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(-3)])) - 96*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(3)])) - 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(-4)])) + 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(4)])))*p1o705600dydz;
+ 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 PDstandardNth31(u) ((-451584*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)])) + 451584*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)])) + 112896*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-1)])) - 112896*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(1)])) - 28224*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-2)])) + 28224*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(2)])) - 21504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(-1)])) + 21504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(1)])) + 5376*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(-2)])) - 5376*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(2)])) - 1024*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(-3)])) + 1024*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(3)])) + 2016*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(-1)])) - 2016*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(1)])) - 504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(-2)])) + 504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(2)])) + 96*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(-3)])) - 96*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(3)])) - 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(-4)])) + 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(4)])))*p1o705600dxdz)
+# 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 PDstandardNth31(u) (PDstandardNth31_impl(u,p1o705600dxdz,cdj,cdk))
-static CCTK_REAL PDstandardNth31_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o705600dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth31_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o705600dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-451584*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)])) + 451584*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)])) + 112896*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-1)])) - 112896*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(1)])) - 28224*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-2)])) + 28224*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(2)])) - 21504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(-1)])) + 21504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(1)])) + 5376*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(-2)])) - 5376*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(2)])) - 1024*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(-3)])) + 1024*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(3)])) + 2016*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(-1)])) - 2016*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(1)])) - 504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(-2)])) + 504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(2)])) + 96*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(-3)])) - 96*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(3)])) - 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(-4)])) + 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(4)])))*p1o705600dxdz;
+ 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 PDstandardNth32(u) ((-451584*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)])) + 451584*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)])) + 112896*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-1)])) - 112896*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(1)])) - 28224*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-2)])) + 28224*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(2)])) - 21504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(-1)])) + 21504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(1)])) + 5376*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(-2)])) - 5376*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(2)])) - 1024*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(-3)])) + 1024*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(3)])) + 2016*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(-1)])) - 2016*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(1)])) - 504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(-2)])) + 504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(2)])) + 96*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(-3)])) - 96*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(3)])) - 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(-4)])) + 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(4)])))*p1o705600dydz)
+# 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 PDstandardNth32(u) (PDstandardNth32_impl(u,p1o705600dydz,cdj,cdk))
-static CCTK_REAL PDstandardNth32_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o705600dydz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth32_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o705600dydz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-451584*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)])) + 451584*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)])) + 112896*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-1)])) - 112896*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(1)])) - 28224*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-2)])) + 28224*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(2)])) - 21504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(-1)])) + 21504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(1)])) + 5376*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(-2)])) - 5376*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(2)])) - 1024*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(-3)])) + 1024*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(3)])) + 2016*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(-1)])) - 2016*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(1)])) - 504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(-2)])) + 504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(2)])) + 96*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(-3)])) - 96*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(3)])) - 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(-4)])) + 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(4)])))*p1o705600dydz;
+ 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 PDdissipationNth1(u) ((-252*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 210*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)])) - 120*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)])) + 45*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(0)])) - 10*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-5)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(5)+cdj*(0)+cdk*(0)]))*p1o1024dx)
+# 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 PDdissipationNth1(u) (PDdissipationNth1_impl(u,p1o1024dx,cdj,cdk))
-static CCTK_REAL PDdissipationNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o1024dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDdissipationNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o1024dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-252*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 210*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)])) - 120*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)])) + 45*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(0)])) - 10*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-5)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(5)+cdj*(0)+cdk*(0)]))*p1o1024dx;
+ 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 PDdissipationNth2(u) ((-252*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 210*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)])) - 120*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)])) + 45*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(0)])) - 10*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-5)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(5)+cdk*(0)]))*p1o1024dy)
+# 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 PDdissipationNth2(u) (PDdissipationNth2_impl(u,p1o1024dy,cdj,cdk))
-static CCTK_REAL PDdissipationNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o1024dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDdissipationNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o1024dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-252*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 210*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)])) - 120*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)])) + 45*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(0)])) - 10*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-5)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(5)+cdk*(0)]))*p1o1024dy;
+ 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 PDdissipationNth3(u) ((-252*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 210*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)])) - 120*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)])) + 45*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(3)])) - 10*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(4)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-5)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(5)]))*p1o1024dz)
+# 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 PDdissipationNth3(u) (PDdissipationNth3_impl(u,p1o1024dz,cdj,cdk))
-static CCTK_REAL PDdissipationNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o1024dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDdissipationNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o1024dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-252*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 210*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)])) - 120*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)])) + 45*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(3)])) - 10*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(4)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-5)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(5)]))*p1o1024dz;
+ 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 PDupwindNth1(u) ((378*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 60*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2*dir1)+cdj*(0)+cdk*(0)]) + 5*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3*dir1)+cdj*(0)+cdk*(0)]) - 140*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(3*dir1)+cdj*(0)+cdk*(0)]) + 30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(4*dir1)+cdj*(0)+cdk*(0)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(5*dir1)+cdj*(0)+cdk*(0)]) + 420*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(2*dir1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-dir1)+cdj*(0)+cdk*(0)])) - 1050*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(dir1)+cdj*(0)+cdk*(0)]))*pm1o840dx*dir1)
+# 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 PDupwindNth1(u) (PDupwindNth1_impl(u,pm1o840dx,cdj,cdk,dir1,dir2,dir3))
-static CCTK_REAL PDupwindNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o840dx, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDupwindNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o840dx, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3)
+# 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 (378*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 60*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2*dir1)+cdj*(0)+cdk*(0)]) + 5*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3*dir1)+cdj*(0)+cdk*(0)]) - 140*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(3*dir1)+cdj*(0)+cdk*(0)]) + 30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(4*dir1)+cdj*(0)+cdk*(0)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(5*dir1)+cdj*(0)+cdk*(0)]) + 420*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(2*dir1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-dir1)+cdj*(0)+cdk*(0)])) - 1050*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(dir1)+cdj*(0)+cdk*(0)]))*pm1o840dx*dir1;
+ 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 PDupwindNth2(u) ((378*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 60*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2*dir2)+cdk*(0)]) + 5*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3*dir2)+cdk*(0)]) - 140*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3*dir2)+cdk*(0)]) + 30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4*dir2)+cdk*(0)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(5*dir2)+cdk*(0)]) + 420*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2*dir2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-dir2)+cdk*(0)])) - 1050*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(dir2)+cdk*(0)]))*pm1o840dy*dir2)
+# 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 PDupwindNth2(u) (PDupwindNth2_impl(u,pm1o840dy,cdj,cdk,dir1,dir2,dir3))
-static CCTK_REAL PDupwindNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o840dy, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDupwindNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o840dy, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3)
+# 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 (378*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 60*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2*dir2)+cdk*(0)]) + 5*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3*dir2)+cdk*(0)]) - 140*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3*dir2)+cdk*(0)]) + 30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4*dir2)+cdk*(0)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(5*dir2)+cdk*(0)]) + 420*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2*dir2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-dir2)+cdk*(0)])) - 1050*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(dir2)+cdk*(0)]))*pm1o840dy*dir2;
+ 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 PDupwindNth3(u) ((378*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 60*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2*dir3)]) + 5*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-3*dir3)]) - 140*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(3*dir3)]) + 30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(4*dir3)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(5*dir3)]) + 420*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2*dir3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-dir3)])) - 1050*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(dir3)]))*pm1o840dz*dir3)
+# 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 PDupwindNth3(u) (PDupwindNth3_impl(u,pm1o840dz,cdj,cdk,dir1,dir2,dir3))
-static CCTK_REAL PDupwindNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o840dz, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDupwindNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o840dz, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3)
+# 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 (378*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 60*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2*dir3)]) + 5*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-3*dir3)]) - 140*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(3*dir3)]) + 30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(4*dir3)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(5*dir3)]) + 420*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2*dir3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-dir3)])) - 1050*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(dir3)]))*pm1o840dz*dir3;
+ 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) ((-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(dir1)+cdj*(0)+cdk*(0)]))*p1odx*dir1)
+# 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 PDonesided1(u) (PDonesided1_impl(u,p1odx,cdj,cdk,dir1,dir2,dir3))
-static CCTK_REAL PDonesided1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1odx, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDonesided1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1odx, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3)
+# 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 (-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(dir1)+cdj*(0)+cdk*(0)]))*p1odx*dir1;
+ 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 PDonesided2(u) ((-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(dir2)+cdk*(0)]))*p1ody*dir2)
+# 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 PDonesided2(u) (PDonesided2_impl(u,p1ody,cdj,cdk,dir1,dir2,dir3))
-static CCTK_REAL PDonesided2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1ody, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDonesided2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1ody, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3)
+# 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 (-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(dir2)+cdk*(0)]))*p1ody*dir2;
+ 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 PDonesided3(u) ((-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(dir3)]))*p1odz*dir3)
+# 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 PDonesided3(u) (PDonesided3_impl(u,p1odz,cdj,cdk,dir1,dir2,dir3))
-static CCTK_REAL PDonesided3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1odz, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDonesided3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1odz, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3)
+# 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 (-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(dir3)]))*p1odz*dir3;
+ 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 PDupwindNthAnti1(u) ((-1470*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + 1470*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)]) + 480*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) - 480*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]) - 145*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(0)]) + 145*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(0)]) + 30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(0)]) - 30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(0)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-5)+cdj*(0)+cdk*(0)]) + 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(5)+cdj*(0)+cdk*(0)]))*p1o1680dx)
+# 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 PDupwindNthAnti1(u) (PDupwindNthAnti1_impl(u,p1o1680dx,cdj,cdk))
-static CCTK_REAL PDupwindNthAnti1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o1680dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDupwindNthAnti1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o1680dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-1470*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + 1470*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)]) + 480*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) - 480*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]) - 145*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(0)]) + 145*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(0)]) + 30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(0)]) - 30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(0)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-5)+cdj*(0)+cdk*(0)]) + 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(5)+cdj*(0)+cdk*(0)]))*p1o1680dx;
+ 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 PDupwindNthSymm1(u) ((-252*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 210*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)])) - 120*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)])) + 45*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(0)])) - 10*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-5)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(5)+cdj*(0)+cdk*(0)]))*p1o560dx)
+# 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 PDupwindNthSymm1(u) (PDupwindNthSymm1_impl(u,p1o560dx,cdj,cdk))
-static CCTK_REAL PDupwindNthSymm1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o560dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDupwindNthSymm1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o560dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-252*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 210*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)])) - 120*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)])) + 45*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(0)])) - 10*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-5)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(5)+cdj*(0)+cdk*(0)]))*p1o560dx;
+ 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 PDupwindNthAnti2(u) ((-1470*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + 1470*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)]) + 480*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) - 480*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]) - 145*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(0)]) + 145*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(0)]) + 30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(0)]) - 30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(0)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-5)+cdk*(0)]) + 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(5)+cdk*(0)]))*p1o1680dy)
+# 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 PDupwindNthAnti2(u) (PDupwindNthAnti2_impl(u,p1o1680dy,cdj,cdk))
-static CCTK_REAL PDupwindNthAnti2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o1680dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDupwindNthAnti2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o1680dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-1470*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + 1470*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)]) + 480*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) - 480*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]) - 145*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(0)]) + 145*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(0)]) + 30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(0)]) - 30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(0)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-5)+cdk*(0)]) + 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(5)+cdk*(0)]))*p1o1680dy;
+ 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 PDupwindNthSymm2(u) ((-252*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 210*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)])) - 120*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)])) + 45*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(0)])) - 10*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-5)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(5)+cdk*(0)]))*p1o560dy)
+# 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 PDupwindNthSymm2(u) (PDupwindNthSymm2_impl(u,p1o560dy,cdj,cdk))
-static CCTK_REAL PDupwindNthSymm2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o560dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDupwindNthSymm2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o560dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-252*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 210*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)])) - 120*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)])) + 45*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(0)])) - 10*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-5)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(5)+cdk*(0)]))*p1o560dy;
+ 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 PDupwindNthAnti3(u) ((-1470*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + 1470*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)]) + 480*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) - 480*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]) - 145*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-3)]) + 145*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(3)]) + 30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-4)]) - 30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(4)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-5)]) + 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(5)]))*p1o1680dz)
+# 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 PDupwindNthAnti3(u) (PDupwindNthAnti3_impl(u,p1o1680dz,cdj,cdk))
-static CCTK_REAL PDupwindNthAnti3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o1680dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDupwindNthAnti3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o1680dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-1470*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + 1470*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)]) + 480*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) - 480*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]) - 145*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-3)]) + 145*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(3)]) + 30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-4)]) - 30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(4)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-5)]) + 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(5)]))*p1o1680dz;
+ 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 PDupwindNthSymm3(u) ((-252*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 210*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)])) - 120*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)])) + 45*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(3)])) - 10*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(4)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-5)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(5)]))*p1o560dz)
+# 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 PDupwindNthSymm3(u) (PDupwindNthSymm3_impl(u,p1o560dz,cdj,cdk))
-static CCTK_REAL PDupwindNthSymm3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o560dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDupwindNthSymm3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o560dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-252*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 210*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)])) - 120*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)])) + 45*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(3)])) - 10*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(4)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-5)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(5)]))*p1o560dz;
+ 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_BSSN_MP_O8/src/ML_BSSN_MP_O8_Advect.cc b/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_Advect.cc
index 70fe221..f6ff7b5 100644
--- a/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_Advect.cc
+++ b/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_Advect.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_MP_O8_Advect_SelectBCs(CCTK_ARGUMENTS)
{
@@ -57,7 +58,7 @@ extern "C" void ML_BSSN_MP_O8_Advect_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_BSSN_MP_O8_Advect_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_MP_O8_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;
@@ -65,21 +66,6 @@ static void ML_BSSN_MP_O8_Advect_Body(cGH const * restrict const cctkGH, int con
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_O8_Advect_Body");
- }
-
- if (cctk_iteration % ML_BSSN_MP_O8_Advect_calc_every != ML_BSSN_MP_O8_Advect_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN_MP_O8::ML_curv","ML_BSSN_MP_O8::ML_curvrhs","ML_BSSN_MP_O8::ML_dtlapse","ML_BSSN_MP_O8::ML_dtlapserhs","ML_BSSN_MP_O8::ML_dtshift","ML_BSSN_MP_O8::ML_dtshiftrhs","ML_BSSN_MP_O8::ML_Gamma","ML_BSSN_MP_O8::ML_Gammarhs","ML_BSSN_MP_O8::ML_lapse","ML_BSSN_MP_O8::ML_lapserhs","ML_BSSN_MP_O8::ML_log_confac","ML_BSSN_MP_O8::ML_log_confacrhs","ML_BSSN_MP_O8::ML_metric","ML_BSSN_MP_O8::ML_metricrhs","ML_BSSN_MP_O8::ML_shift","ML_BSSN_MP_O8::ML_shiftrhs","ML_BSSN_MP_O8::ML_trace_curv","ML_BSSN_MP_O8::ML_trace_curvrhs"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_O8_Advect", 18, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_O8_Advect", 5, 5, 5);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -89,47 +75,102 @@ static void ML_BSSN_MP_O8_Advect_Body(cGH const * restrict const cctkGH, int con
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o1024dx = 0.0009765625*INV(dx);
- CCTK_REAL const p1o1024dy = 0.0009765625*INV(dy);
- CCTK_REAL const p1o1024dz = 0.0009765625*INV(dz);
- CCTK_REAL const p1o1680dx = 0.000595238095238095238095238095238*INV(dx);
- CCTK_REAL const p1o1680dy = 0.000595238095238095238095238095238*INV(dy);
- CCTK_REAL const p1o1680dz = 0.000595238095238095238095238095238*INV(dz);
- CCTK_REAL const p1o5040dx2 = 0.000198412698412698412698412698413*INV(SQR(dx));
- CCTK_REAL const p1o5040dy2 = 0.000198412698412698412698412698413*INV(SQR(dy));
- CCTK_REAL const p1o5040dz2 = 0.000198412698412698412698412698413*INV(SQR(dz));
- CCTK_REAL const p1o560dx = 0.00178571428571428571428571428571*INV(dx);
- CCTK_REAL const p1o560dy = 0.00178571428571428571428571428571*INV(dy);
- CCTK_REAL const p1o560dz = 0.00178571428571428571428571428571*INV(dz);
- CCTK_REAL const p1o705600dxdy = 1.41723356009070294784580498866e-6*INV(dx)*INV(dy);
- CCTK_REAL const p1o705600dxdz = 1.41723356009070294784580498866e-6*INV(dx)*INV(dz);
- CCTK_REAL const p1o705600dydz = 1.41723356009070294784580498866e-6*INV(dy)*INV(dz);
- CCTK_REAL const p1o840dx = 0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const p1o840dy = 0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const p1o840dz = 0.00119047619047619047619047619048*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o840dx = -0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const pm1o840dy = -0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const pm1o840dz = -0.00119047619047619047619047619048*INV(dz);
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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)
@@ -176,840 +217,1470 @@ static void ML_BSSN_MP_O8_Advect_Body(cGH const * restrict const cctkGH, int con
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_LOOP3 (ML_BSSN_MP_O8_Advect,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_MP_O8_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 AL = A[index];
- CCTK_REAL alphaL = alpha[index];
- CCTK_REAL alpharhsL = alpharhs[index];
- CCTK_REAL ArhsL = Arhs[index];
- CCTK_REAL At11L = At11[index];
- CCTK_REAL At11rhsL = At11rhs[index];
- CCTK_REAL At12L = At12[index];
- CCTK_REAL At12rhsL = At12rhs[index];
- CCTK_REAL At13L = At13[index];
- CCTK_REAL At13rhsL = At13rhs[index];
- CCTK_REAL At22L = At22[index];
- CCTK_REAL At22rhsL = At22rhs[index];
- CCTK_REAL At23L = At23[index];
- CCTK_REAL At23rhsL = At23rhs[index];
- CCTK_REAL At33L = At33[index];
- CCTK_REAL At33rhsL = At33rhs[index];
- CCTK_REAL B1L = B1[index];
- CCTK_REAL B1rhsL = B1rhs[index];
- CCTK_REAL B2L = B2[index];
- CCTK_REAL B2rhsL = B2rhs[index];
- CCTK_REAL B3L = B3[index];
- CCTK_REAL B3rhsL = B3rhs[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta1rhsL = beta1rhs[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta2rhsL = beta2rhs[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL beta3rhsL = beta3rhs[index];
- CCTK_REAL gt11L = gt11[index];
- CCTK_REAL gt11rhsL = gt11rhs[index];
- CCTK_REAL gt12L = gt12[index];
- CCTK_REAL gt12rhsL = gt12rhs[index];
- CCTK_REAL gt13L = gt13[index];
- CCTK_REAL gt13rhsL = gt13rhs[index];
- CCTK_REAL gt22L = gt22[index];
- CCTK_REAL gt22rhsL = gt22rhs[index];
- CCTK_REAL gt23L = gt23[index];
- CCTK_REAL gt23rhsL = gt23rhs[index];
- CCTK_REAL gt33L = gt33[index];
- CCTK_REAL gt33rhsL = gt33rhs[index];
- CCTK_REAL phiL = phi[index];
- CCTK_REAL phirhsL = phirhs[index];
- CCTK_REAL trKL = trK[index];
- CCTK_REAL trKrhsL = trKrhs[index];
- CCTK_REAL Xt1L = Xt1[index];
- CCTK_REAL Xt1rhsL = Xt1rhs[index];
- CCTK_REAL Xt2L = Xt2[index];
- CCTK_REAL Xt2rhsL = Xt2rhs[index];
- CCTK_REAL Xt3L = Xt3[index];
- CCTK_REAL Xt3rhsL = Xt3rhs[index];
+ CCTK_REAL_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 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 J11L, J12L, J13L, J21L, J22L, J23L, J31L, J32L, J33L;
+ CCTK_REAL_VEC J11L, J12L, J13L, J21L, J22L, J23L, J31L, J32L, J33L;
if (use_jacobian)
{
- J11L = J11[index];
- J12L = J12[index];
- J13L = J13[index];
- J21L = J21[index];
- J22L = J22[index];
- J23L = J23[index];
- J31L = J31[index];
- J32L = J32[index];
- J33L = J33[index];
+ J11L = vec_load(J11[index]);
+ J12L = vec_load(J12[index]);
+ J13L = vec_load(J13[index]);
+ J21L = vec_load(J21[index]);
+ J22L = vec_load(J22[index]);
+ J23L = vec_load(J23[index]);
+ J31L = vec_load(J31[index]);
+ J32L = vec_load(J32[index]);
+ J33L = vec_load(J33[index]);
}
/* Include user supplied include files */
/* Precompute derivatives */
- CCTK_REAL const PDupwindNthAnti1A = PDupwindNthAnti1(&A[index]);
- CCTK_REAL const PDupwindNthSymm1A = PDupwindNthSymm1(&A[index]);
- CCTK_REAL const PDupwindNthAnti2A = PDupwindNthAnti2(&A[index]);
- CCTK_REAL const PDupwindNthSymm2A = PDupwindNthSymm2(&A[index]);
- CCTK_REAL const PDupwindNthAnti3A = PDupwindNthAnti3(&A[index]);
- CCTK_REAL const PDupwindNthSymm3A = PDupwindNthSymm3(&A[index]);
- CCTK_REAL const PDupwindNthAnti1alpha = PDupwindNthAnti1(&alpha[index]);
- CCTK_REAL const PDupwindNthSymm1alpha = PDupwindNthSymm1(&alpha[index]);
- CCTK_REAL const PDupwindNthAnti2alpha = PDupwindNthAnti2(&alpha[index]);
- CCTK_REAL const PDupwindNthSymm2alpha = PDupwindNthSymm2(&alpha[index]);
- CCTK_REAL const PDupwindNthAnti3alpha = PDupwindNthAnti3(&alpha[index]);
- CCTK_REAL const PDupwindNthSymm3alpha = PDupwindNthSymm3(&alpha[index]);
- CCTK_REAL const PDupwindNthAnti1At11 = PDupwindNthAnti1(&At11[index]);
- CCTK_REAL const PDupwindNthSymm1At11 = PDupwindNthSymm1(&At11[index]);
- CCTK_REAL const PDupwindNthAnti2At11 = PDupwindNthAnti2(&At11[index]);
- CCTK_REAL const PDupwindNthSymm2At11 = PDupwindNthSymm2(&At11[index]);
- CCTK_REAL const PDupwindNthAnti3At11 = PDupwindNthAnti3(&At11[index]);
- CCTK_REAL const PDupwindNthSymm3At11 = PDupwindNthSymm3(&At11[index]);
- CCTK_REAL const PDupwindNthAnti1At12 = PDupwindNthAnti1(&At12[index]);
- CCTK_REAL const PDupwindNthSymm1At12 = PDupwindNthSymm1(&At12[index]);
- CCTK_REAL const PDupwindNthAnti2At12 = PDupwindNthAnti2(&At12[index]);
- CCTK_REAL const PDupwindNthSymm2At12 = PDupwindNthSymm2(&At12[index]);
- CCTK_REAL const PDupwindNthAnti3At12 = PDupwindNthAnti3(&At12[index]);
- CCTK_REAL const PDupwindNthSymm3At12 = PDupwindNthSymm3(&At12[index]);
- CCTK_REAL const PDupwindNthAnti1At13 = PDupwindNthAnti1(&At13[index]);
- CCTK_REAL const PDupwindNthSymm1At13 = PDupwindNthSymm1(&At13[index]);
- CCTK_REAL const PDupwindNthAnti2At13 = PDupwindNthAnti2(&At13[index]);
- CCTK_REAL const PDupwindNthSymm2At13 = PDupwindNthSymm2(&At13[index]);
- CCTK_REAL const PDupwindNthAnti3At13 = PDupwindNthAnti3(&At13[index]);
- CCTK_REAL const PDupwindNthSymm3At13 = PDupwindNthSymm3(&At13[index]);
- CCTK_REAL const PDupwindNthAnti1At22 = PDupwindNthAnti1(&At22[index]);
- CCTK_REAL const PDupwindNthSymm1At22 = PDupwindNthSymm1(&At22[index]);
- CCTK_REAL const PDupwindNthAnti2At22 = PDupwindNthAnti2(&At22[index]);
- CCTK_REAL const PDupwindNthSymm2At22 = PDupwindNthSymm2(&At22[index]);
- CCTK_REAL const PDupwindNthAnti3At22 = PDupwindNthAnti3(&At22[index]);
- CCTK_REAL const PDupwindNthSymm3At22 = PDupwindNthSymm3(&At22[index]);
- CCTK_REAL const PDupwindNthAnti1At23 = PDupwindNthAnti1(&At23[index]);
- CCTK_REAL const PDupwindNthSymm1At23 = PDupwindNthSymm1(&At23[index]);
- CCTK_REAL const PDupwindNthAnti2At23 = PDupwindNthAnti2(&At23[index]);
- CCTK_REAL const PDupwindNthSymm2At23 = PDupwindNthSymm2(&At23[index]);
- CCTK_REAL const PDupwindNthAnti3At23 = PDupwindNthAnti3(&At23[index]);
- CCTK_REAL const PDupwindNthSymm3At23 = PDupwindNthSymm3(&At23[index]);
- CCTK_REAL const PDupwindNthAnti1At33 = PDupwindNthAnti1(&At33[index]);
- CCTK_REAL const PDupwindNthSymm1At33 = PDupwindNthSymm1(&At33[index]);
- CCTK_REAL const PDupwindNthAnti2At33 = PDupwindNthAnti2(&At33[index]);
- CCTK_REAL const PDupwindNthSymm2At33 = PDupwindNthSymm2(&At33[index]);
- CCTK_REAL const PDupwindNthAnti3At33 = PDupwindNthAnti3(&At33[index]);
- CCTK_REAL const PDupwindNthSymm3At33 = PDupwindNthSymm3(&At33[index]);
- CCTK_REAL const PDupwindNthAnti1B1 = PDupwindNthAnti1(&B1[index]);
- CCTK_REAL const PDupwindNthSymm1B1 = PDupwindNthSymm1(&B1[index]);
- CCTK_REAL const PDupwindNthAnti2B1 = PDupwindNthAnti2(&B1[index]);
- CCTK_REAL const PDupwindNthSymm2B1 = PDupwindNthSymm2(&B1[index]);
- CCTK_REAL const PDupwindNthAnti3B1 = PDupwindNthAnti3(&B1[index]);
- CCTK_REAL const PDupwindNthSymm3B1 = PDupwindNthSymm3(&B1[index]);
- CCTK_REAL const PDupwindNthAnti1B2 = PDupwindNthAnti1(&B2[index]);
- CCTK_REAL const PDupwindNthSymm1B2 = PDupwindNthSymm1(&B2[index]);
- CCTK_REAL const PDupwindNthAnti2B2 = PDupwindNthAnti2(&B2[index]);
- CCTK_REAL const PDupwindNthSymm2B2 = PDupwindNthSymm2(&B2[index]);
- CCTK_REAL const PDupwindNthAnti3B2 = PDupwindNthAnti3(&B2[index]);
- CCTK_REAL const PDupwindNthSymm3B2 = PDupwindNthSymm3(&B2[index]);
- CCTK_REAL const PDupwindNthAnti1B3 = PDupwindNthAnti1(&B3[index]);
- CCTK_REAL const PDupwindNthSymm1B3 = PDupwindNthSymm1(&B3[index]);
- CCTK_REAL const PDupwindNthAnti2B3 = PDupwindNthAnti2(&B3[index]);
- CCTK_REAL const PDupwindNthSymm2B3 = PDupwindNthSymm2(&B3[index]);
- CCTK_REAL const PDupwindNthAnti3B3 = PDupwindNthAnti3(&B3[index]);
- CCTK_REAL const PDupwindNthSymm3B3 = PDupwindNthSymm3(&B3[index]);
- CCTK_REAL const PDupwindNthAnti1beta1 = PDupwindNthAnti1(&beta1[index]);
- CCTK_REAL const PDupwindNthSymm1beta1 = PDupwindNthSymm1(&beta1[index]);
- CCTK_REAL const PDupwindNthAnti2beta1 = PDupwindNthAnti2(&beta1[index]);
- CCTK_REAL const PDupwindNthSymm2beta1 = PDupwindNthSymm2(&beta1[index]);
- CCTK_REAL const PDupwindNthAnti3beta1 = PDupwindNthAnti3(&beta1[index]);
- CCTK_REAL const PDupwindNthSymm3beta1 = PDupwindNthSymm3(&beta1[index]);
- CCTK_REAL const PDupwindNthAnti1beta2 = PDupwindNthAnti1(&beta2[index]);
- CCTK_REAL const PDupwindNthSymm1beta2 = PDupwindNthSymm1(&beta2[index]);
- CCTK_REAL const PDupwindNthAnti2beta2 = PDupwindNthAnti2(&beta2[index]);
- CCTK_REAL const PDupwindNthSymm2beta2 = PDupwindNthSymm2(&beta2[index]);
- CCTK_REAL const PDupwindNthAnti3beta2 = PDupwindNthAnti3(&beta2[index]);
- CCTK_REAL const PDupwindNthSymm3beta2 = PDupwindNthSymm3(&beta2[index]);
- CCTK_REAL const PDupwindNthAnti1beta3 = PDupwindNthAnti1(&beta3[index]);
- CCTK_REAL const PDupwindNthSymm1beta3 = PDupwindNthSymm1(&beta3[index]);
- CCTK_REAL const PDupwindNthAnti2beta3 = PDupwindNthAnti2(&beta3[index]);
- CCTK_REAL const PDupwindNthSymm2beta3 = PDupwindNthSymm2(&beta3[index]);
- CCTK_REAL const PDupwindNthAnti3beta3 = PDupwindNthAnti3(&beta3[index]);
- CCTK_REAL const PDupwindNthSymm3beta3 = PDupwindNthSymm3(&beta3[index]);
- CCTK_REAL const PDupwindNthAnti1gt11 = PDupwindNthAnti1(&gt11[index]);
- CCTK_REAL const PDupwindNthSymm1gt11 = PDupwindNthSymm1(&gt11[index]);
- CCTK_REAL const PDupwindNthAnti2gt11 = PDupwindNthAnti2(&gt11[index]);
- CCTK_REAL const PDupwindNthSymm2gt11 = PDupwindNthSymm2(&gt11[index]);
- CCTK_REAL const PDupwindNthAnti3gt11 = PDupwindNthAnti3(&gt11[index]);
- CCTK_REAL const PDupwindNthSymm3gt11 = PDupwindNthSymm3(&gt11[index]);
- CCTK_REAL const PDupwindNthAnti1gt12 = PDupwindNthAnti1(&gt12[index]);
- CCTK_REAL const PDupwindNthSymm1gt12 = PDupwindNthSymm1(&gt12[index]);
- CCTK_REAL const PDupwindNthAnti2gt12 = PDupwindNthAnti2(&gt12[index]);
- CCTK_REAL const PDupwindNthSymm2gt12 = PDupwindNthSymm2(&gt12[index]);
- CCTK_REAL const PDupwindNthAnti3gt12 = PDupwindNthAnti3(&gt12[index]);
- CCTK_REAL const PDupwindNthSymm3gt12 = PDupwindNthSymm3(&gt12[index]);
- CCTK_REAL const PDupwindNthAnti1gt13 = PDupwindNthAnti1(&gt13[index]);
- CCTK_REAL const PDupwindNthSymm1gt13 = PDupwindNthSymm1(&gt13[index]);
- CCTK_REAL const PDupwindNthAnti2gt13 = PDupwindNthAnti2(&gt13[index]);
- CCTK_REAL const PDupwindNthSymm2gt13 = PDupwindNthSymm2(&gt13[index]);
- CCTK_REAL const PDupwindNthAnti3gt13 = PDupwindNthAnti3(&gt13[index]);
- CCTK_REAL const PDupwindNthSymm3gt13 = PDupwindNthSymm3(&gt13[index]);
- CCTK_REAL const PDupwindNthAnti1gt22 = PDupwindNthAnti1(&gt22[index]);
- CCTK_REAL const PDupwindNthSymm1gt22 = PDupwindNthSymm1(&gt22[index]);
- CCTK_REAL const PDupwindNthAnti2gt22 = PDupwindNthAnti2(&gt22[index]);
- CCTK_REAL const PDupwindNthSymm2gt22 = PDupwindNthSymm2(&gt22[index]);
- CCTK_REAL const PDupwindNthAnti3gt22 = PDupwindNthAnti3(&gt22[index]);
- CCTK_REAL const PDupwindNthSymm3gt22 = PDupwindNthSymm3(&gt22[index]);
- CCTK_REAL const PDupwindNthAnti1gt23 = PDupwindNthAnti1(&gt23[index]);
- CCTK_REAL const PDupwindNthSymm1gt23 = PDupwindNthSymm1(&gt23[index]);
- CCTK_REAL const PDupwindNthAnti2gt23 = PDupwindNthAnti2(&gt23[index]);
- CCTK_REAL const PDupwindNthSymm2gt23 = PDupwindNthSymm2(&gt23[index]);
- CCTK_REAL const PDupwindNthAnti3gt23 = PDupwindNthAnti3(&gt23[index]);
- CCTK_REAL const PDupwindNthSymm3gt23 = PDupwindNthSymm3(&gt23[index]);
- CCTK_REAL const PDupwindNthAnti1gt33 = PDupwindNthAnti1(&gt33[index]);
- CCTK_REAL const PDupwindNthSymm1gt33 = PDupwindNthSymm1(&gt33[index]);
- CCTK_REAL const PDupwindNthAnti2gt33 = PDupwindNthAnti2(&gt33[index]);
- CCTK_REAL const PDupwindNthSymm2gt33 = PDupwindNthSymm2(&gt33[index]);
- CCTK_REAL const PDupwindNthAnti3gt33 = PDupwindNthAnti3(&gt33[index]);
- CCTK_REAL const PDupwindNthSymm3gt33 = PDupwindNthSymm3(&gt33[index]);
- CCTK_REAL const PDupwindNthAnti1phi = PDupwindNthAnti1(&phi[index]);
- CCTK_REAL const PDupwindNthSymm1phi = PDupwindNthSymm1(&phi[index]);
- CCTK_REAL const PDupwindNthAnti2phi = PDupwindNthAnti2(&phi[index]);
- CCTK_REAL const PDupwindNthSymm2phi = PDupwindNthSymm2(&phi[index]);
- CCTK_REAL const PDupwindNthAnti3phi = PDupwindNthAnti3(&phi[index]);
- CCTK_REAL const PDupwindNthSymm3phi = PDupwindNthSymm3(&phi[index]);
- CCTK_REAL const PDupwindNthAnti1trK = PDupwindNthAnti1(&trK[index]);
- CCTK_REAL const PDupwindNthSymm1trK = PDupwindNthSymm1(&trK[index]);
- CCTK_REAL const PDupwindNthAnti2trK = PDupwindNthAnti2(&trK[index]);
- CCTK_REAL const PDupwindNthSymm2trK = PDupwindNthSymm2(&trK[index]);
- CCTK_REAL const PDupwindNthAnti3trK = PDupwindNthAnti3(&trK[index]);
- CCTK_REAL const PDupwindNthSymm3trK = PDupwindNthSymm3(&trK[index]);
- CCTK_REAL const PDupwindNthAnti1Xt1 = PDupwindNthAnti1(&Xt1[index]);
- CCTK_REAL const PDupwindNthSymm1Xt1 = PDupwindNthSymm1(&Xt1[index]);
- CCTK_REAL const PDupwindNthAnti2Xt1 = PDupwindNthAnti2(&Xt1[index]);
- CCTK_REAL const PDupwindNthSymm2Xt1 = PDupwindNthSymm2(&Xt1[index]);
- CCTK_REAL const PDupwindNthAnti3Xt1 = PDupwindNthAnti3(&Xt1[index]);
- CCTK_REAL const PDupwindNthSymm3Xt1 = PDupwindNthSymm3(&Xt1[index]);
- CCTK_REAL const PDupwindNthAnti1Xt2 = PDupwindNthAnti1(&Xt2[index]);
- CCTK_REAL const PDupwindNthSymm1Xt2 = PDupwindNthSymm1(&Xt2[index]);
- CCTK_REAL const PDupwindNthAnti2Xt2 = PDupwindNthAnti2(&Xt2[index]);
- CCTK_REAL const PDupwindNthSymm2Xt2 = PDupwindNthSymm2(&Xt2[index]);
- CCTK_REAL const PDupwindNthAnti3Xt2 = PDupwindNthAnti3(&Xt2[index]);
- CCTK_REAL const PDupwindNthSymm3Xt2 = PDupwindNthSymm3(&Xt2[index]);
- CCTK_REAL const PDupwindNthAnti1Xt3 = PDupwindNthAnti1(&Xt3[index]);
- CCTK_REAL const PDupwindNthSymm1Xt3 = PDupwindNthSymm1(&Xt3[index]);
- CCTK_REAL const PDupwindNthAnti2Xt3 = PDupwindNthAnti2(&Xt3[index]);
- CCTK_REAL const PDupwindNthSymm2Xt3 = PDupwindNthSymm2(&Xt3[index]);
- CCTK_REAL const PDupwindNthAnti3Xt3 = PDupwindNthAnti3(&Xt3[index]);
- CCTK_REAL const PDupwindNthSymm3Xt3 = PDupwindNthSymm3(&Xt3[index]);
+ 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 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]);
+ 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]);
+ 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]);
+ 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]);
+ 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 */
- CCTK_REAL JacPDupwindNthAnti1A;
- CCTK_REAL JacPDupwindNthAnti1alpha;
- CCTK_REAL JacPDupwindNthAnti1At11;
- CCTK_REAL JacPDupwindNthAnti1At12;
- CCTK_REAL JacPDupwindNthAnti1At13;
- CCTK_REAL JacPDupwindNthAnti1At22;
- CCTK_REAL JacPDupwindNthAnti1At23;
- CCTK_REAL JacPDupwindNthAnti1At33;
- CCTK_REAL JacPDupwindNthAnti1B1;
- CCTK_REAL JacPDupwindNthAnti1B2;
- CCTK_REAL JacPDupwindNthAnti1B3;
- CCTK_REAL JacPDupwindNthAnti1beta1;
- CCTK_REAL JacPDupwindNthAnti1beta2;
- CCTK_REAL JacPDupwindNthAnti1beta3;
- CCTK_REAL JacPDupwindNthAnti1gt11;
- CCTK_REAL JacPDupwindNthAnti1gt12;
- CCTK_REAL JacPDupwindNthAnti1gt13;
- CCTK_REAL JacPDupwindNthAnti1gt22;
- CCTK_REAL JacPDupwindNthAnti1gt23;
- CCTK_REAL JacPDupwindNthAnti1gt33;
- CCTK_REAL JacPDupwindNthAnti1phi;
- CCTK_REAL JacPDupwindNthAnti1trK;
- CCTK_REAL JacPDupwindNthAnti1Xt1;
- CCTK_REAL JacPDupwindNthAnti1Xt2;
- CCTK_REAL JacPDupwindNthAnti1Xt3;
- CCTK_REAL JacPDupwindNthAnti2A;
- CCTK_REAL JacPDupwindNthAnti2alpha;
- CCTK_REAL JacPDupwindNthAnti2At11;
- CCTK_REAL JacPDupwindNthAnti2At12;
- CCTK_REAL JacPDupwindNthAnti2At13;
- CCTK_REAL JacPDupwindNthAnti2At22;
- CCTK_REAL JacPDupwindNthAnti2At23;
- CCTK_REAL JacPDupwindNthAnti2At33;
- CCTK_REAL JacPDupwindNthAnti2B1;
- CCTK_REAL JacPDupwindNthAnti2B2;
- CCTK_REAL JacPDupwindNthAnti2B3;
- CCTK_REAL JacPDupwindNthAnti2beta1;
- CCTK_REAL JacPDupwindNthAnti2beta2;
- CCTK_REAL JacPDupwindNthAnti2beta3;
- CCTK_REAL JacPDupwindNthAnti2gt11;
- CCTK_REAL JacPDupwindNthAnti2gt12;
- CCTK_REAL JacPDupwindNthAnti2gt13;
- CCTK_REAL JacPDupwindNthAnti2gt22;
- CCTK_REAL JacPDupwindNthAnti2gt23;
- CCTK_REAL JacPDupwindNthAnti2gt33;
- CCTK_REAL JacPDupwindNthAnti2phi;
- CCTK_REAL JacPDupwindNthAnti2trK;
- CCTK_REAL JacPDupwindNthAnti2Xt1;
- CCTK_REAL JacPDupwindNthAnti2Xt2;
- CCTK_REAL JacPDupwindNthAnti2Xt3;
- CCTK_REAL JacPDupwindNthAnti3A;
- CCTK_REAL JacPDupwindNthAnti3alpha;
- CCTK_REAL JacPDupwindNthAnti3At11;
- CCTK_REAL JacPDupwindNthAnti3At12;
- CCTK_REAL JacPDupwindNthAnti3At13;
- CCTK_REAL JacPDupwindNthAnti3At22;
- CCTK_REAL JacPDupwindNthAnti3At23;
- CCTK_REAL JacPDupwindNthAnti3At33;
- CCTK_REAL JacPDupwindNthAnti3B1;
- CCTK_REAL JacPDupwindNthAnti3B2;
- CCTK_REAL JacPDupwindNthAnti3B3;
- CCTK_REAL JacPDupwindNthAnti3beta1;
- CCTK_REAL JacPDupwindNthAnti3beta2;
- CCTK_REAL JacPDupwindNthAnti3beta3;
- CCTK_REAL JacPDupwindNthAnti3gt11;
- CCTK_REAL JacPDupwindNthAnti3gt12;
- CCTK_REAL JacPDupwindNthAnti3gt13;
- CCTK_REAL JacPDupwindNthAnti3gt22;
- CCTK_REAL JacPDupwindNthAnti3gt23;
- CCTK_REAL JacPDupwindNthAnti3gt33;
- CCTK_REAL JacPDupwindNthAnti3phi;
- CCTK_REAL JacPDupwindNthAnti3trK;
- CCTK_REAL JacPDupwindNthAnti3Xt1;
- CCTK_REAL JacPDupwindNthAnti3Xt2;
- CCTK_REAL JacPDupwindNthAnti3Xt3;
- CCTK_REAL JacPDupwindNthSymm1A;
- CCTK_REAL JacPDupwindNthSymm1alpha;
- CCTK_REAL JacPDupwindNthSymm1At11;
- CCTK_REAL JacPDupwindNthSymm1At12;
- CCTK_REAL JacPDupwindNthSymm1At13;
- CCTK_REAL JacPDupwindNthSymm1At22;
- CCTK_REAL JacPDupwindNthSymm1At23;
- CCTK_REAL JacPDupwindNthSymm1At33;
- CCTK_REAL JacPDupwindNthSymm1B1;
- CCTK_REAL JacPDupwindNthSymm1B2;
- CCTK_REAL JacPDupwindNthSymm1B3;
- CCTK_REAL JacPDupwindNthSymm1beta1;
- CCTK_REAL JacPDupwindNthSymm1beta2;
- CCTK_REAL JacPDupwindNthSymm1beta3;
- CCTK_REAL JacPDupwindNthSymm1gt11;
- CCTK_REAL JacPDupwindNthSymm1gt12;
- CCTK_REAL JacPDupwindNthSymm1gt13;
- CCTK_REAL JacPDupwindNthSymm1gt22;
- CCTK_REAL JacPDupwindNthSymm1gt23;
- CCTK_REAL JacPDupwindNthSymm1gt33;
- CCTK_REAL JacPDupwindNthSymm1phi;
- CCTK_REAL JacPDupwindNthSymm1trK;
- CCTK_REAL JacPDupwindNthSymm1Xt1;
- CCTK_REAL JacPDupwindNthSymm1Xt2;
- CCTK_REAL JacPDupwindNthSymm1Xt3;
- CCTK_REAL JacPDupwindNthSymm2A;
- CCTK_REAL JacPDupwindNthSymm2alpha;
- CCTK_REAL JacPDupwindNthSymm2At11;
- CCTK_REAL JacPDupwindNthSymm2At12;
- CCTK_REAL JacPDupwindNthSymm2At13;
- CCTK_REAL JacPDupwindNthSymm2At22;
- CCTK_REAL JacPDupwindNthSymm2At23;
- CCTK_REAL JacPDupwindNthSymm2At33;
- CCTK_REAL JacPDupwindNthSymm2B1;
- CCTK_REAL JacPDupwindNthSymm2B2;
- CCTK_REAL JacPDupwindNthSymm2B3;
- CCTK_REAL JacPDupwindNthSymm2beta1;
- CCTK_REAL JacPDupwindNthSymm2beta2;
- CCTK_REAL JacPDupwindNthSymm2beta3;
- CCTK_REAL JacPDupwindNthSymm2gt11;
- CCTK_REAL JacPDupwindNthSymm2gt12;
- CCTK_REAL JacPDupwindNthSymm2gt13;
- CCTK_REAL JacPDupwindNthSymm2gt22;
- CCTK_REAL JacPDupwindNthSymm2gt23;
- CCTK_REAL JacPDupwindNthSymm2gt33;
- CCTK_REAL JacPDupwindNthSymm2phi;
- CCTK_REAL JacPDupwindNthSymm2trK;
- CCTK_REAL JacPDupwindNthSymm2Xt1;
- CCTK_REAL JacPDupwindNthSymm2Xt2;
- CCTK_REAL JacPDupwindNthSymm2Xt3;
- CCTK_REAL JacPDupwindNthSymm3A;
- CCTK_REAL JacPDupwindNthSymm3alpha;
- CCTK_REAL JacPDupwindNthSymm3At11;
- CCTK_REAL JacPDupwindNthSymm3At12;
- CCTK_REAL JacPDupwindNthSymm3At13;
- CCTK_REAL JacPDupwindNthSymm3At22;
- CCTK_REAL JacPDupwindNthSymm3At23;
- CCTK_REAL JacPDupwindNthSymm3At33;
- CCTK_REAL JacPDupwindNthSymm3B1;
- CCTK_REAL JacPDupwindNthSymm3B2;
- CCTK_REAL JacPDupwindNthSymm3B3;
- CCTK_REAL JacPDupwindNthSymm3beta1;
- CCTK_REAL JacPDupwindNthSymm3beta2;
- CCTK_REAL JacPDupwindNthSymm3beta3;
- CCTK_REAL JacPDupwindNthSymm3gt11;
- CCTK_REAL JacPDupwindNthSymm3gt12;
- CCTK_REAL JacPDupwindNthSymm3gt13;
- CCTK_REAL JacPDupwindNthSymm3gt22;
- CCTK_REAL JacPDupwindNthSymm3gt23;
- CCTK_REAL JacPDupwindNthSymm3gt33;
- CCTK_REAL JacPDupwindNthSymm3phi;
- CCTK_REAL JacPDupwindNthSymm3trK;
- CCTK_REAL JacPDupwindNthSymm3Xt1;
- CCTK_REAL JacPDupwindNthSymm3Xt2;
- CCTK_REAL JacPDupwindNthSymm3Xt3;
+ 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 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 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 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 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 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 JacPDupwindNthSymm3trK;
+ CCTK_REAL_VEC JacPDupwindNthSymm3Xt1;
+ CCTK_REAL_VEC JacPDupwindNthSymm3Xt2;
+ CCTK_REAL_VEC JacPDupwindNthSymm3Xt3;
if (use_jacobian)
{
- JacPDupwindNthAnti1A = J11L*PDupwindNthAnti1A + J21L*PDupwindNthAnti2A
- + J31L*PDupwindNthAnti3A;
+ JacPDupwindNthAnti1A =
+ kmadd(J11L,PDupwindNthAnti1A,kmadd(J21L,PDupwindNthAnti2A,kmul(J31L,PDupwindNthAnti3A)));
- JacPDupwindNthAnti1alpha = J11L*PDupwindNthAnti1alpha +
- J21L*PDupwindNthAnti2alpha + J31L*PDupwindNthAnti3alpha;
+ JacPDupwindNthAnti1alpha =
+ kmadd(J11L,PDupwindNthAnti1alpha,kmadd(J21L,PDupwindNthAnti2alpha,kmul(J31L,PDupwindNthAnti3alpha)));
- JacPDupwindNthAnti1At11 = J11L*PDupwindNthAnti1At11 +
- J21L*PDupwindNthAnti2At11 + J31L*PDupwindNthAnti3At11;
+ JacPDupwindNthAnti1At11 =
+ kmadd(J11L,PDupwindNthAnti1At11,kmadd(J21L,PDupwindNthAnti2At11,kmul(J31L,PDupwindNthAnti3At11)));
- JacPDupwindNthAnti1At12 = J11L*PDupwindNthAnti1At12 +
- J21L*PDupwindNthAnti2At12 + J31L*PDupwindNthAnti3At12;
+ JacPDupwindNthAnti1At12 =
+ kmadd(J11L,PDupwindNthAnti1At12,kmadd(J21L,PDupwindNthAnti2At12,kmul(J31L,PDupwindNthAnti3At12)));
- JacPDupwindNthAnti1At13 = J11L*PDupwindNthAnti1At13 +
- J21L*PDupwindNthAnti2At13 + J31L*PDupwindNthAnti3At13;
+ JacPDupwindNthAnti1At13 =
+ kmadd(J11L,PDupwindNthAnti1At13,kmadd(J21L,PDupwindNthAnti2At13,kmul(J31L,PDupwindNthAnti3At13)));
- JacPDupwindNthAnti1At22 = J11L*PDupwindNthAnti1At22 +
- J21L*PDupwindNthAnti2At22 + J31L*PDupwindNthAnti3At22;
+ JacPDupwindNthAnti1At22 =
+ kmadd(J11L,PDupwindNthAnti1At22,kmadd(J21L,PDupwindNthAnti2At22,kmul(J31L,PDupwindNthAnti3At22)));
- JacPDupwindNthAnti1At23 = J11L*PDupwindNthAnti1At23 +
- J21L*PDupwindNthAnti2At23 + J31L*PDupwindNthAnti3At23;
+ JacPDupwindNthAnti1At23 =
+ kmadd(J11L,PDupwindNthAnti1At23,kmadd(J21L,PDupwindNthAnti2At23,kmul(J31L,PDupwindNthAnti3At23)));
- JacPDupwindNthAnti1At33 = J11L*PDupwindNthAnti1At33 +
- J21L*PDupwindNthAnti2At33 + J31L*PDupwindNthAnti3At33;
+ JacPDupwindNthAnti1At33 =
+ kmadd(J11L,PDupwindNthAnti1At33,kmadd(J21L,PDupwindNthAnti2At33,kmul(J31L,PDupwindNthAnti3At33)));
- JacPDupwindNthAnti1B1 = J11L*PDupwindNthAnti1B1 +
- J21L*PDupwindNthAnti2B1 + J31L*PDupwindNthAnti3B1;
+ JacPDupwindNthAnti1B1 =
+ kmadd(J11L,PDupwindNthAnti1B1,kmadd(J21L,PDupwindNthAnti2B1,kmul(J31L,PDupwindNthAnti3B1)));
- JacPDupwindNthAnti1B2 = J11L*PDupwindNthAnti1B2 +
- J21L*PDupwindNthAnti2B2 + J31L*PDupwindNthAnti3B2;
+ JacPDupwindNthAnti1B2 =
+ kmadd(J11L,PDupwindNthAnti1B2,kmadd(J21L,PDupwindNthAnti2B2,kmul(J31L,PDupwindNthAnti3B2)));
- JacPDupwindNthAnti1B3 = J11L*PDupwindNthAnti1B3 +
- J21L*PDupwindNthAnti2B3 + J31L*PDupwindNthAnti3B3;
+ JacPDupwindNthAnti1B3 =
+ kmadd(J11L,PDupwindNthAnti1B3,kmadd(J21L,PDupwindNthAnti2B3,kmul(J31L,PDupwindNthAnti3B3)));
- JacPDupwindNthAnti1beta1 = J11L*PDupwindNthAnti1beta1 +
- J21L*PDupwindNthAnti2beta1 + J31L*PDupwindNthAnti3beta1;
+ JacPDupwindNthAnti1beta1 =
+ kmadd(J11L,PDupwindNthAnti1beta1,kmadd(J21L,PDupwindNthAnti2beta1,kmul(J31L,PDupwindNthAnti3beta1)));
- JacPDupwindNthAnti1beta2 = J11L*PDupwindNthAnti1beta2 +
- J21L*PDupwindNthAnti2beta2 + J31L*PDupwindNthAnti3beta2;
+ JacPDupwindNthAnti1beta2 =
+ kmadd(J11L,PDupwindNthAnti1beta2,kmadd(J21L,PDupwindNthAnti2beta2,kmul(J31L,PDupwindNthAnti3beta2)));
- JacPDupwindNthAnti1beta3 = J11L*PDupwindNthAnti1beta3 +
- J21L*PDupwindNthAnti2beta3 + J31L*PDupwindNthAnti3beta3;
+ JacPDupwindNthAnti1beta3 =
+ kmadd(J11L,PDupwindNthAnti1beta3,kmadd(J21L,PDupwindNthAnti2beta3,kmul(J31L,PDupwindNthAnti3beta3)));
- JacPDupwindNthAnti1gt11 = J11L*PDupwindNthAnti1gt11 +
- J21L*PDupwindNthAnti2gt11 + J31L*PDupwindNthAnti3gt11;
+ JacPDupwindNthAnti1gt11 =
+ kmadd(J11L,PDupwindNthAnti1gt11,kmadd(J21L,PDupwindNthAnti2gt11,kmul(J31L,PDupwindNthAnti3gt11)));
- JacPDupwindNthAnti1gt12 = J11L*PDupwindNthAnti1gt12 +
- J21L*PDupwindNthAnti2gt12 + J31L*PDupwindNthAnti3gt12;
+ JacPDupwindNthAnti1gt12 =
+ kmadd(J11L,PDupwindNthAnti1gt12,kmadd(J21L,PDupwindNthAnti2gt12,kmul(J31L,PDupwindNthAnti3gt12)));
- JacPDupwindNthAnti1gt13 = J11L*PDupwindNthAnti1gt13 +
- J21L*PDupwindNthAnti2gt13 + J31L*PDupwindNthAnti3gt13;
+ JacPDupwindNthAnti1gt13 =
+ kmadd(J11L,PDupwindNthAnti1gt13,kmadd(J21L,PDupwindNthAnti2gt13,kmul(J31L,PDupwindNthAnti3gt13)));
- JacPDupwindNthAnti1gt22 = J11L*PDupwindNthAnti1gt22 +
- J21L*PDupwindNthAnti2gt22 + J31L*PDupwindNthAnti3gt22;
+ JacPDupwindNthAnti1gt22 =
+ kmadd(J11L,PDupwindNthAnti1gt22,kmadd(J21L,PDupwindNthAnti2gt22,kmul(J31L,PDupwindNthAnti3gt22)));
- JacPDupwindNthAnti1gt23 = J11L*PDupwindNthAnti1gt23 +
- J21L*PDupwindNthAnti2gt23 + J31L*PDupwindNthAnti3gt23;
+ JacPDupwindNthAnti1gt23 =
+ kmadd(J11L,PDupwindNthAnti1gt23,kmadd(J21L,PDupwindNthAnti2gt23,kmul(J31L,PDupwindNthAnti3gt23)));
- JacPDupwindNthAnti1gt33 = J11L*PDupwindNthAnti1gt33 +
- J21L*PDupwindNthAnti2gt33 + J31L*PDupwindNthAnti3gt33;
+ JacPDupwindNthAnti1gt33 =
+ kmadd(J11L,PDupwindNthAnti1gt33,kmadd(J21L,PDupwindNthAnti2gt33,kmul(J31L,PDupwindNthAnti3gt33)));
- JacPDupwindNthAnti1phi = J11L*PDupwindNthAnti1phi +
- J21L*PDupwindNthAnti2phi + J31L*PDupwindNthAnti3phi;
+ JacPDupwindNthAnti1phi =
+ kmadd(J11L,PDupwindNthAnti1phi,kmadd(J21L,PDupwindNthAnti2phi,kmul(J31L,PDupwindNthAnti3phi)));
- JacPDupwindNthAnti1trK = J11L*PDupwindNthAnti1trK +
- J21L*PDupwindNthAnti2trK + J31L*PDupwindNthAnti3trK;
+ JacPDupwindNthAnti1trK =
+ kmadd(J11L,PDupwindNthAnti1trK,kmadd(J21L,PDupwindNthAnti2trK,kmul(J31L,PDupwindNthAnti3trK)));
- JacPDupwindNthAnti1Xt1 = J11L*PDupwindNthAnti1Xt1 +
- J21L*PDupwindNthAnti2Xt1 + J31L*PDupwindNthAnti3Xt1;
+ JacPDupwindNthAnti1Xt1 =
+ kmadd(J11L,PDupwindNthAnti1Xt1,kmadd(J21L,PDupwindNthAnti2Xt1,kmul(J31L,PDupwindNthAnti3Xt1)));
- JacPDupwindNthAnti1Xt2 = J11L*PDupwindNthAnti1Xt2 +
- J21L*PDupwindNthAnti2Xt2 + J31L*PDupwindNthAnti3Xt2;
+ JacPDupwindNthAnti1Xt2 =
+ kmadd(J11L,PDupwindNthAnti1Xt2,kmadd(J21L,PDupwindNthAnti2Xt2,kmul(J31L,PDupwindNthAnti3Xt2)));
- JacPDupwindNthAnti1Xt3 = J11L*PDupwindNthAnti1Xt3 +
- J21L*PDupwindNthAnti2Xt3 + J31L*PDupwindNthAnti3Xt3;
+ JacPDupwindNthAnti1Xt3 =
+ kmadd(J11L,PDupwindNthAnti1Xt3,kmadd(J21L,PDupwindNthAnti2Xt3,kmul(J31L,PDupwindNthAnti3Xt3)));
- JacPDupwindNthSymm1A = J11L*PDupwindNthSymm1A + J21L*PDupwindNthSymm2A
- + J31L*PDupwindNthSymm3A;
+ JacPDupwindNthSymm1A =
+ kmadd(J11L,PDupwindNthSymm1A,kmadd(J21L,PDupwindNthSymm2A,kmul(J31L,PDupwindNthSymm3A)));
- JacPDupwindNthSymm1alpha = J11L*PDupwindNthSymm1alpha +
- J21L*PDupwindNthSymm2alpha + J31L*PDupwindNthSymm3alpha;
+ JacPDupwindNthSymm1alpha =
+ kmadd(J11L,PDupwindNthSymm1alpha,kmadd(J21L,PDupwindNthSymm2alpha,kmul(J31L,PDupwindNthSymm3alpha)));
- JacPDupwindNthSymm1At11 = J11L*PDupwindNthSymm1At11 +
- J21L*PDupwindNthSymm2At11 + J31L*PDupwindNthSymm3At11;
+ JacPDupwindNthSymm1At11 =
+ kmadd(J11L,PDupwindNthSymm1At11,kmadd(J21L,PDupwindNthSymm2At11,kmul(J31L,PDupwindNthSymm3At11)));
- JacPDupwindNthSymm1At12 = J11L*PDupwindNthSymm1At12 +
- J21L*PDupwindNthSymm2At12 + J31L*PDupwindNthSymm3At12;
+ JacPDupwindNthSymm1At12 =
+ kmadd(J11L,PDupwindNthSymm1At12,kmadd(J21L,PDupwindNthSymm2At12,kmul(J31L,PDupwindNthSymm3At12)));
- JacPDupwindNthSymm1At13 = J11L*PDupwindNthSymm1At13 +
- J21L*PDupwindNthSymm2At13 + J31L*PDupwindNthSymm3At13;
+ JacPDupwindNthSymm1At13 =
+ kmadd(J11L,PDupwindNthSymm1At13,kmadd(J21L,PDupwindNthSymm2At13,kmul(J31L,PDupwindNthSymm3At13)));
- JacPDupwindNthSymm1At22 = J11L*PDupwindNthSymm1At22 +
- J21L*PDupwindNthSymm2At22 + J31L*PDupwindNthSymm3At22;
+ JacPDupwindNthSymm1At22 =
+ kmadd(J11L,PDupwindNthSymm1At22,kmadd(J21L,PDupwindNthSymm2At22,kmul(J31L,PDupwindNthSymm3At22)));
- JacPDupwindNthSymm1At23 = J11L*PDupwindNthSymm1At23 +
- J21L*PDupwindNthSymm2At23 + J31L*PDupwindNthSymm3At23;
+ JacPDupwindNthSymm1At23 =
+ kmadd(J11L,PDupwindNthSymm1At23,kmadd(J21L,PDupwindNthSymm2At23,kmul(J31L,PDupwindNthSymm3At23)));
- JacPDupwindNthSymm1At33 = J11L*PDupwindNthSymm1At33 +
- J21L*PDupwindNthSymm2At33 + J31L*PDupwindNthSymm3At33;
+ JacPDupwindNthSymm1At33 =
+ kmadd(J11L,PDupwindNthSymm1At33,kmadd(J21L,PDupwindNthSymm2At33,kmul(J31L,PDupwindNthSymm3At33)));
- JacPDupwindNthSymm1B1 = J11L*PDupwindNthSymm1B1 +
- J21L*PDupwindNthSymm2B1 + J31L*PDupwindNthSymm3B1;
+ JacPDupwindNthSymm1B1 =
+ kmadd(J11L,PDupwindNthSymm1B1,kmadd(J21L,PDupwindNthSymm2B1,kmul(J31L,PDupwindNthSymm3B1)));
- JacPDupwindNthSymm1B2 = J11L*PDupwindNthSymm1B2 +
- J21L*PDupwindNthSymm2B2 + J31L*PDupwindNthSymm3B2;
+ JacPDupwindNthSymm1B2 =
+ kmadd(J11L,PDupwindNthSymm1B2,kmadd(J21L,PDupwindNthSymm2B2,kmul(J31L,PDupwindNthSymm3B2)));
- JacPDupwindNthSymm1B3 = J11L*PDupwindNthSymm1B3 +
- J21L*PDupwindNthSymm2B3 + J31L*PDupwindNthSymm3B3;
+ JacPDupwindNthSymm1B3 =
+ kmadd(J11L,PDupwindNthSymm1B3,kmadd(J21L,PDupwindNthSymm2B3,kmul(J31L,PDupwindNthSymm3B3)));
- JacPDupwindNthSymm1beta1 = J11L*PDupwindNthSymm1beta1 +
- J21L*PDupwindNthSymm2beta1 + J31L*PDupwindNthSymm3beta1;
+ JacPDupwindNthSymm1beta1 =
+ kmadd(J11L,PDupwindNthSymm1beta1,kmadd(J21L,PDupwindNthSymm2beta1,kmul(J31L,PDupwindNthSymm3beta1)));
- JacPDupwindNthSymm1beta2 = J11L*PDupwindNthSymm1beta2 +
- J21L*PDupwindNthSymm2beta2 + J31L*PDupwindNthSymm3beta2;
+ JacPDupwindNthSymm1beta2 =
+ kmadd(J11L,PDupwindNthSymm1beta2,kmadd(J21L,PDupwindNthSymm2beta2,kmul(J31L,PDupwindNthSymm3beta2)));
- JacPDupwindNthSymm1beta3 = J11L*PDupwindNthSymm1beta3 +
- J21L*PDupwindNthSymm2beta3 + J31L*PDupwindNthSymm3beta3;
+ JacPDupwindNthSymm1beta3 =
+ kmadd(J11L,PDupwindNthSymm1beta3,kmadd(J21L,PDupwindNthSymm2beta3,kmul(J31L,PDupwindNthSymm3beta3)));
- JacPDupwindNthSymm1gt11 = J11L*PDupwindNthSymm1gt11 +
- J21L*PDupwindNthSymm2gt11 + J31L*PDupwindNthSymm3gt11;
+ JacPDupwindNthSymm1gt11 =
+ kmadd(J11L,PDupwindNthSymm1gt11,kmadd(J21L,PDupwindNthSymm2gt11,kmul(J31L,PDupwindNthSymm3gt11)));
- JacPDupwindNthSymm1gt12 = J11L*PDupwindNthSymm1gt12 +
- J21L*PDupwindNthSymm2gt12 + J31L*PDupwindNthSymm3gt12;
+ JacPDupwindNthSymm1gt12 =
+ kmadd(J11L,PDupwindNthSymm1gt12,kmadd(J21L,PDupwindNthSymm2gt12,kmul(J31L,PDupwindNthSymm3gt12)));
- JacPDupwindNthSymm1gt13 = J11L*PDupwindNthSymm1gt13 +
- J21L*PDupwindNthSymm2gt13 + J31L*PDupwindNthSymm3gt13;
+ JacPDupwindNthSymm1gt13 =
+ kmadd(J11L,PDupwindNthSymm1gt13,kmadd(J21L,PDupwindNthSymm2gt13,kmul(J31L,PDupwindNthSymm3gt13)));
- JacPDupwindNthSymm1gt22 = J11L*PDupwindNthSymm1gt22 +
- J21L*PDupwindNthSymm2gt22 + J31L*PDupwindNthSymm3gt22;
+ JacPDupwindNthSymm1gt22 =
+ kmadd(J11L,PDupwindNthSymm1gt22,kmadd(J21L,PDupwindNthSymm2gt22,kmul(J31L,PDupwindNthSymm3gt22)));
- JacPDupwindNthSymm1gt23 = J11L*PDupwindNthSymm1gt23 +
- J21L*PDupwindNthSymm2gt23 + J31L*PDupwindNthSymm3gt23;
+ JacPDupwindNthSymm1gt23 =
+ kmadd(J11L,PDupwindNthSymm1gt23,kmadd(J21L,PDupwindNthSymm2gt23,kmul(J31L,PDupwindNthSymm3gt23)));
- JacPDupwindNthSymm1gt33 = J11L*PDupwindNthSymm1gt33 +
- J21L*PDupwindNthSymm2gt33 + J31L*PDupwindNthSymm3gt33;
+ JacPDupwindNthSymm1gt33 =
+ kmadd(J11L,PDupwindNthSymm1gt33,kmadd(J21L,PDupwindNthSymm2gt33,kmul(J31L,PDupwindNthSymm3gt33)));
- JacPDupwindNthSymm1phi = J11L*PDupwindNthSymm1phi +
- J21L*PDupwindNthSymm2phi + J31L*PDupwindNthSymm3phi;
+ JacPDupwindNthSymm1phi =
+ kmadd(J11L,PDupwindNthSymm1phi,kmadd(J21L,PDupwindNthSymm2phi,kmul(J31L,PDupwindNthSymm3phi)));
- JacPDupwindNthSymm1trK = J11L*PDupwindNthSymm1trK +
- J21L*PDupwindNthSymm2trK + J31L*PDupwindNthSymm3trK;
+ JacPDupwindNthSymm1trK =
+ kmadd(J11L,PDupwindNthSymm1trK,kmadd(J21L,PDupwindNthSymm2trK,kmul(J31L,PDupwindNthSymm3trK)));
- JacPDupwindNthSymm1Xt1 = J11L*PDupwindNthSymm1Xt1 +
- J21L*PDupwindNthSymm2Xt1 + J31L*PDupwindNthSymm3Xt1;
+ JacPDupwindNthSymm1Xt1 =
+ kmadd(J11L,PDupwindNthSymm1Xt1,kmadd(J21L,PDupwindNthSymm2Xt1,kmul(J31L,PDupwindNthSymm3Xt1)));
- JacPDupwindNthSymm1Xt2 = J11L*PDupwindNthSymm1Xt2 +
- J21L*PDupwindNthSymm2Xt2 + J31L*PDupwindNthSymm3Xt2;
+ JacPDupwindNthSymm1Xt2 =
+ kmadd(J11L,PDupwindNthSymm1Xt2,kmadd(J21L,PDupwindNthSymm2Xt2,kmul(J31L,PDupwindNthSymm3Xt2)));
- JacPDupwindNthSymm1Xt3 = J11L*PDupwindNthSymm1Xt3 +
- J21L*PDupwindNthSymm2Xt3 + J31L*PDupwindNthSymm3Xt3;
+ JacPDupwindNthSymm1Xt3 =
+ kmadd(J11L,PDupwindNthSymm1Xt3,kmadd(J21L,PDupwindNthSymm2Xt3,kmul(J31L,PDupwindNthSymm3Xt3)));
- JacPDupwindNthAnti2A = J12L*PDupwindNthAnti1A + J22L*PDupwindNthAnti2A
- + J32L*PDupwindNthAnti3A;
+ JacPDupwindNthAnti2A =
+ kmadd(J12L,PDupwindNthAnti1A,kmadd(J22L,PDupwindNthAnti2A,kmul(J32L,PDupwindNthAnti3A)));
- JacPDupwindNthAnti2alpha = J12L*PDupwindNthAnti1alpha +
- J22L*PDupwindNthAnti2alpha + J32L*PDupwindNthAnti3alpha;
+ JacPDupwindNthAnti2alpha =
+ kmadd(J12L,PDupwindNthAnti1alpha,kmadd(J22L,PDupwindNthAnti2alpha,kmul(J32L,PDupwindNthAnti3alpha)));
- JacPDupwindNthAnti2At11 = J12L*PDupwindNthAnti1At11 +
- J22L*PDupwindNthAnti2At11 + J32L*PDupwindNthAnti3At11;
+ JacPDupwindNthAnti2At11 =
+ kmadd(J12L,PDupwindNthAnti1At11,kmadd(J22L,PDupwindNthAnti2At11,kmul(J32L,PDupwindNthAnti3At11)));
- JacPDupwindNthAnti2At12 = J12L*PDupwindNthAnti1At12 +
- J22L*PDupwindNthAnti2At12 + J32L*PDupwindNthAnti3At12;
+ JacPDupwindNthAnti2At12 =
+ kmadd(J12L,PDupwindNthAnti1At12,kmadd(J22L,PDupwindNthAnti2At12,kmul(J32L,PDupwindNthAnti3At12)));
- JacPDupwindNthAnti2At13 = J12L*PDupwindNthAnti1At13 +
- J22L*PDupwindNthAnti2At13 + J32L*PDupwindNthAnti3At13;
+ JacPDupwindNthAnti2At13 =
+ kmadd(J12L,PDupwindNthAnti1At13,kmadd(J22L,PDupwindNthAnti2At13,kmul(J32L,PDupwindNthAnti3At13)));
- JacPDupwindNthAnti2At22 = J12L*PDupwindNthAnti1At22 +
- J22L*PDupwindNthAnti2At22 + J32L*PDupwindNthAnti3At22;
+ JacPDupwindNthAnti2At22 =
+ kmadd(J12L,PDupwindNthAnti1At22,kmadd(J22L,PDupwindNthAnti2At22,kmul(J32L,PDupwindNthAnti3At22)));
- JacPDupwindNthAnti2At23 = J12L*PDupwindNthAnti1At23 +
- J22L*PDupwindNthAnti2At23 + J32L*PDupwindNthAnti3At23;
+ JacPDupwindNthAnti2At23 =
+ kmadd(J12L,PDupwindNthAnti1At23,kmadd(J22L,PDupwindNthAnti2At23,kmul(J32L,PDupwindNthAnti3At23)));
- JacPDupwindNthAnti2At33 = J12L*PDupwindNthAnti1At33 +
- J22L*PDupwindNthAnti2At33 + J32L*PDupwindNthAnti3At33;
+ JacPDupwindNthAnti2At33 =
+ kmadd(J12L,PDupwindNthAnti1At33,kmadd(J22L,PDupwindNthAnti2At33,kmul(J32L,PDupwindNthAnti3At33)));
- JacPDupwindNthAnti2B1 = J12L*PDupwindNthAnti1B1 +
- J22L*PDupwindNthAnti2B1 + J32L*PDupwindNthAnti3B1;
+ JacPDupwindNthAnti2B1 =
+ kmadd(J12L,PDupwindNthAnti1B1,kmadd(J22L,PDupwindNthAnti2B1,kmul(J32L,PDupwindNthAnti3B1)));
- JacPDupwindNthAnti2B2 = J12L*PDupwindNthAnti1B2 +
- J22L*PDupwindNthAnti2B2 + J32L*PDupwindNthAnti3B2;
+ JacPDupwindNthAnti2B2 =
+ kmadd(J12L,PDupwindNthAnti1B2,kmadd(J22L,PDupwindNthAnti2B2,kmul(J32L,PDupwindNthAnti3B2)));
- JacPDupwindNthAnti2B3 = J12L*PDupwindNthAnti1B3 +
- J22L*PDupwindNthAnti2B3 + J32L*PDupwindNthAnti3B3;
+ JacPDupwindNthAnti2B3 =
+ kmadd(J12L,PDupwindNthAnti1B3,kmadd(J22L,PDupwindNthAnti2B3,kmul(J32L,PDupwindNthAnti3B3)));
- JacPDupwindNthAnti2beta1 = J12L*PDupwindNthAnti1beta1 +
- J22L*PDupwindNthAnti2beta1 + J32L*PDupwindNthAnti3beta1;
+ JacPDupwindNthAnti2beta1 =
+ kmadd(J12L,PDupwindNthAnti1beta1,kmadd(J22L,PDupwindNthAnti2beta1,kmul(J32L,PDupwindNthAnti3beta1)));
- JacPDupwindNthAnti2beta2 = J12L*PDupwindNthAnti1beta2 +
- J22L*PDupwindNthAnti2beta2 + J32L*PDupwindNthAnti3beta2;
+ JacPDupwindNthAnti2beta2 =
+ kmadd(J12L,PDupwindNthAnti1beta2,kmadd(J22L,PDupwindNthAnti2beta2,kmul(J32L,PDupwindNthAnti3beta2)));
- JacPDupwindNthAnti2beta3 = J12L*PDupwindNthAnti1beta3 +
- J22L*PDupwindNthAnti2beta3 + J32L*PDupwindNthAnti3beta3;
+ JacPDupwindNthAnti2beta3 =
+ kmadd(J12L,PDupwindNthAnti1beta3,kmadd(J22L,PDupwindNthAnti2beta3,kmul(J32L,PDupwindNthAnti3beta3)));
- JacPDupwindNthAnti2gt11 = J12L*PDupwindNthAnti1gt11 +
- J22L*PDupwindNthAnti2gt11 + J32L*PDupwindNthAnti3gt11;
+ JacPDupwindNthAnti2gt11 =
+ kmadd(J12L,PDupwindNthAnti1gt11,kmadd(J22L,PDupwindNthAnti2gt11,kmul(J32L,PDupwindNthAnti3gt11)));
- JacPDupwindNthAnti2gt12 = J12L*PDupwindNthAnti1gt12 +
- J22L*PDupwindNthAnti2gt12 + J32L*PDupwindNthAnti3gt12;
+ JacPDupwindNthAnti2gt12 =
+ kmadd(J12L,PDupwindNthAnti1gt12,kmadd(J22L,PDupwindNthAnti2gt12,kmul(J32L,PDupwindNthAnti3gt12)));
- JacPDupwindNthAnti2gt13 = J12L*PDupwindNthAnti1gt13 +
- J22L*PDupwindNthAnti2gt13 + J32L*PDupwindNthAnti3gt13;
+ JacPDupwindNthAnti2gt13 =
+ kmadd(J12L,PDupwindNthAnti1gt13,kmadd(J22L,PDupwindNthAnti2gt13,kmul(J32L,PDupwindNthAnti3gt13)));
- JacPDupwindNthAnti2gt22 = J12L*PDupwindNthAnti1gt22 +
- J22L*PDupwindNthAnti2gt22 + J32L*PDupwindNthAnti3gt22;
+ JacPDupwindNthAnti2gt22 =
+ kmadd(J12L,PDupwindNthAnti1gt22,kmadd(J22L,PDupwindNthAnti2gt22,kmul(J32L,PDupwindNthAnti3gt22)));
- JacPDupwindNthAnti2gt23 = J12L*PDupwindNthAnti1gt23 +
- J22L*PDupwindNthAnti2gt23 + J32L*PDupwindNthAnti3gt23;
+ JacPDupwindNthAnti2gt23 =
+ kmadd(J12L,PDupwindNthAnti1gt23,kmadd(J22L,PDupwindNthAnti2gt23,kmul(J32L,PDupwindNthAnti3gt23)));
- JacPDupwindNthAnti2gt33 = J12L*PDupwindNthAnti1gt33 +
- J22L*PDupwindNthAnti2gt33 + J32L*PDupwindNthAnti3gt33;
+ JacPDupwindNthAnti2gt33 =
+ kmadd(J12L,PDupwindNthAnti1gt33,kmadd(J22L,PDupwindNthAnti2gt33,kmul(J32L,PDupwindNthAnti3gt33)));
- JacPDupwindNthAnti2phi = J12L*PDupwindNthAnti1phi +
- J22L*PDupwindNthAnti2phi + J32L*PDupwindNthAnti3phi;
+ JacPDupwindNthAnti2phi =
+ kmadd(J12L,PDupwindNthAnti1phi,kmadd(J22L,PDupwindNthAnti2phi,kmul(J32L,PDupwindNthAnti3phi)));
- JacPDupwindNthAnti2trK = J12L*PDupwindNthAnti1trK +
- J22L*PDupwindNthAnti2trK + J32L*PDupwindNthAnti3trK;
+ JacPDupwindNthAnti2trK =
+ kmadd(J12L,PDupwindNthAnti1trK,kmadd(J22L,PDupwindNthAnti2trK,kmul(J32L,PDupwindNthAnti3trK)));
- JacPDupwindNthAnti2Xt1 = J12L*PDupwindNthAnti1Xt1 +
- J22L*PDupwindNthAnti2Xt1 + J32L*PDupwindNthAnti3Xt1;
+ JacPDupwindNthAnti2Xt1 =
+ kmadd(J12L,PDupwindNthAnti1Xt1,kmadd(J22L,PDupwindNthAnti2Xt1,kmul(J32L,PDupwindNthAnti3Xt1)));
- JacPDupwindNthAnti2Xt2 = J12L*PDupwindNthAnti1Xt2 +
- J22L*PDupwindNthAnti2Xt2 + J32L*PDupwindNthAnti3Xt2;
+ JacPDupwindNthAnti2Xt2 =
+ kmadd(J12L,PDupwindNthAnti1Xt2,kmadd(J22L,PDupwindNthAnti2Xt2,kmul(J32L,PDupwindNthAnti3Xt2)));
- JacPDupwindNthAnti2Xt3 = J12L*PDupwindNthAnti1Xt3 +
- J22L*PDupwindNthAnti2Xt3 + J32L*PDupwindNthAnti3Xt3;
+ JacPDupwindNthAnti2Xt3 =
+ kmadd(J12L,PDupwindNthAnti1Xt3,kmadd(J22L,PDupwindNthAnti2Xt3,kmul(J32L,PDupwindNthAnti3Xt3)));
- JacPDupwindNthSymm2A = J12L*PDupwindNthSymm1A + J22L*PDupwindNthSymm2A
- + J32L*PDupwindNthSymm3A;
+ JacPDupwindNthSymm2A =
+ kmadd(J12L,PDupwindNthSymm1A,kmadd(J22L,PDupwindNthSymm2A,kmul(J32L,PDupwindNthSymm3A)));
- JacPDupwindNthSymm2alpha = J12L*PDupwindNthSymm1alpha +
- J22L*PDupwindNthSymm2alpha + J32L*PDupwindNthSymm3alpha;
+ JacPDupwindNthSymm2alpha =
+ kmadd(J12L,PDupwindNthSymm1alpha,kmadd(J22L,PDupwindNthSymm2alpha,kmul(J32L,PDupwindNthSymm3alpha)));
- JacPDupwindNthSymm2At11 = J12L*PDupwindNthSymm1At11 +
- J22L*PDupwindNthSymm2At11 + J32L*PDupwindNthSymm3At11;
+ JacPDupwindNthSymm2At11 =
+ kmadd(J12L,PDupwindNthSymm1At11,kmadd(J22L,PDupwindNthSymm2At11,kmul(J32L,PDupwindNthSymm3At11)));
- JacPDupwindNthSymm2At12 = J12L*PDupwindNthSymm1At12 +
- J22L*PDupwindNthSymm2At12 + J32L*PDupwindNthSymm3At12;
+ JacPDupwindNthSymm2At12 =
+ kmadd(J12L,PDupwindNthSymm1At12,kmadd(J22L,PDupwindNthSymm2At12,kmul(J32L,PDupwindNthSymm3At12)));
- JacPDupwindNthSymm2At13 = J12L*PDupwindNthSymm1At13 +
- J22L*PDupwindNthSymm2At13 + J32L*PDupwindNthSymm3At13;
+ JacPDupwindNthSymm2At13 =
+ kmadd(J12L,PDupwindNthSymm1At13,kmadd(J22L,PDupwindNthSymm2At13,kmul(J32L,PDupwindNthSymm3At13)));
- JacPDupwindNthSymm2At22 = J12L*PDupwindNthSymm1At22 +
- J22L*PDupwindNthSymm2At22 + J32L*PDupwindNthSymm3At22;
+ JacPDupwindNthSymm2At22 =
+ kmadd(J12L,PDupwindNthSymm1At22,kmadd(J22L,PDupwindNthSymm2At22,kmul(J32L,PDupwindNthSymm3At22)));
- JacPDupwindNthSymm2At23 = J12L*PDupwindNthSymm1At23 +
- J22L*PDupwindNthSymm2At23 + J32L*PDupwindNthSymm3At23;
+ JacPDupwindNthSymm2At23 =
+ kmadd(J12L,PDupwindNthSymm1At23,kmadd(J22L,PDupwindNthSymm2At23,kmul(J32L,PDupwindNthSymm3At23)));
- JacPDupwindNthSymm2At33 = J12L*PDupwindNthSymm1At33 +
- J22L*PDupwindNthSymm2At33 + J32L*PDupwindNthSymm3At33;
+ JacPDupwindNthSymm2At33 =
+ kmadd(J12L,PDupwindNthSymm1At33,kmadd(J22L,PDupwindNthSymm2At33,kmul(J32L,PDupwindNthSymm3At33)));
- JacPDupwindNthSymm2B1 = J12L*PDupwindNthSymm1B1 +
- J22L*PDupwindNthSymm2B1 + J32L*PDupwindNthSymm3B1;
+ JacPDupwindNthSymm2B1 =
+ kmadd(J12L,PDupwindNthSymm1B1,kmadd(J22L,PDupwindNthSymm2B1,kmul(J32L,PDupwindNthSymm3B1)));
- JacPDupwindNthSymm2B2 = J12L*PDupwindNthSymm1B2 +
- J22L*PDupwindNthSymm2B2 + J32L*PDupwindNthSymm3B2;
+ JacPDupwindNthSymm2B2 =
+ kmadd(J12L,PDupwindNthSymm1B2,kmadd(J22L,PDupwindNthSymm2B2,kmul(J32L,PDupwindNthSymm3B2)));
- JacPDupwindNthSymm2B3 = J12L*PDupwindNthSymm1B3 +
- J22L*PDupwindNthSymm2B3 + J32L*PDupwindNthSymm3B3;
+ JacPDupwindNthSymm2B3 =
+ kmadd(J12L,PDupwindNthSymm1B3,kmadd(J22L,PDupwindNthSymm2B3,kmul(J32L,PDupwindNthSymm3B3)));
- JacPDupwindNthSymm2beta1 = J12L*PDupwindNthSymm1beta1 +
- J22L*PDupwindNthSymm2beta1 + J32L*PDupwindNthSymm3beta1;
+ JacPDupwindNthSymm2beta1 =
+ kmadd(J12L,PDupwindNthSymm1beta1,kmadd(J22L,PDupwindNthSymm2beta1,kmul(J32L,PDupwindNthSymm3beta1)));
- JacPDupwindNthSymm2beta2 = J12L*PDupwindNthSymm1beta2 +
- J22L*PDupwindNthSymm2beta2 + J32L*PDupwindNthSymm3beta2;
+ JacPDupwindNthSymm2beta2 =
+ kmadd(J12L,PDupwindNthSymm1beta2,kmadd(J22L,PDupwindNthSymm2beta2,kmul(J32L,PDupwindNthSymm3beta2)));
- JacPDupwindNthSymm2beta3 = J12L*PDupwindNthSymm1beta3 +
- J22L*PDupwindNthSymm2beta3 + J32L*PDupwindNthSymm3beta3;
+ JacPDupwindNthSymm2beta3 =
+ kmadd(J12L,PDupwindNthSymm1beta3,kmadd(J22L,PDupwindNthSymm2beta3,kmul(J32L,PDupwindNthSymm3beta3)));
- JacPDupwindNthSymm2gt11 = J12L*PDupwindNthSymm1gt11 +
- J22L*PDupwindNthSymm2gt11 + J32L*PDupwindNthSymm3gt11;
+ JacPDupwindNthSymm2gt11 =
+ kmadd(J12L,PDupwindNthSymm1gt11,kmadd(J22L,PDupwindNthSymm2gt11,kmul(J32L,PDupwindNthSymm3gt11)));
- JacPDupwindNthSymm2gt12 = J12L*PDupwindNthSymm1gt12 +
- J22L*PDupwindNthSymm2gt12 + J32L*PDupwindNthSymm3gt12;
+ JacPDupwindNthSymm2gt12 =
+ kmadd(J12L,PDupwindNthSymm1gt12,kmadd(J22L,PDupwindNthSymm2gt12,kmul(J32L,PDupwindNthSymm3gt12)));
- JacPDupwindNthSymm2gt13 = J12L*PDupwindNthSymm1gt13 +
- J22L*PDupwindNthSymm2gt13 + J32L*PDupwindNthSymm3gt13;
+ JacPDupwindNthSymm2gt13 =
+ kmadd(J12L,PDupwindNthSymm1gt13,kmadd(J22L,PDupwindNthSymm2gt13,kmul(J32L,PDupwindNthSymm3gt13)));
- JacPDupwindNthSymm2gt22 = J12L*PDupwindNthSymm1gt22 +
- J22L*PDupwindNthSymm2gt22 + J32L*PDupwindNthSymm3gt22;
+ JacPDupwindNthSymm2gt22 =
+ kmadd(J12L,PDupwindNthSymm1gt22,kmadd(J22L,PDupwindNthSymm2gt22,kmul(J32L,PDupwindNthSymm3gt22)));
- JacPDupwindNthSymm2gt23 = J12L*PDupwindNthSymm1gt23 +
- J22L*PDupwindNthSymm2gt23 + J32L*PDupwindNthSymm3gt23;
+ JacPDupwindNthSymm2gt23 =
+ kmadd(J12L,PDupwindNthSymm1gt23,kmadd(J22L,PDupwindNthSymm2gt23,kmul(J32L,PDupwindNthSymm3gt23)));
- JacPDupwindNthSymm2gt33 = J12L*PDupwindNthSymm1gt33 +
- J22L*PDupwindNthSymm2gt33 + J32L*PDupwindNthSymm3gt33;
+ JacPDupwindNthSymm2gt33 =
+ kmadd(J12L,PDupwindNthSymm1gt33,kmadd(J22L,PDupwindNthSymm2gt33,kmul(J32L,PDupwindNthSymm3gt33)));
- JacPDupwindNthSymm2phi = J12L*PDupwindNthSymm1phi +
- J22L*PDupwindNthSymm2phi + J32L*PDupwindNthSymm3phi;
+ JacPDupwindNthSymm2phi =
+ kmadd(J12L,PDupwindNthSymm1phi,kmadd(J22L,PDupwindNthSymm2phi,kmul(J32L,PDupwindNthSymm3phi)));
- JacPDupwindNthSymm2trK = J12L*PDupwindNthSymm1trK +
- J22L*PDupwindNthSymm2trK + J32L*PDupwindNthSymm3trK;
+ JacPDupwindNthSymm2trK =
+ kmadd(J12L,PDupwindNthSymm1trK,kmadd(J22L,PDupwindNthSymm2trK,kmul(J32L,PDupwindNthSymm3trK)));
- JacPDupwindNthSymm2Xt1 = J12L*PDupwindNthSymm1Xt1 +
- J22L*PDupwindNthSymm2Xt1 + J32L*PDupwindNthSymm3Xt1;
+ JacPDupwindNthSymm2Xt1 =
+ kmadd(J12L,PDupwindNthSymm1Xt1,kmadd(J22L,PDupwindNthSymm2Xt1,kmul(J32L,PDupwindNthSymm3Xt1)));
- JacPDupwindNthSymm2Xt2 = J12L*PDupwindNthSymm1Xt2 +
- J22L*PDupwindNthSymm2Xt2 + J32L*PDupwindNthSymm3Xt2;
+ JacPDupwindNthSymm2Xt2 =
+ kmadd(J12L,PDupwindNthSymm1Xt2,kmadd(J22L,PDupwindNthSymm2Xt2,kmul(J32L,PDupwindNthSymm3Xt2)));
- JacPDupwindNthSymm2Xt3 = J12L*PDupwindNthSymm1Xt3 +
- J22L*PDupwindNthSymm2Xt3 + J32L*PDupwindNthSymm3Xt3;
+ JacPDupwindNthSymm2Xt3 =
+ kmadd(J12L,PDupwindNthSymm1Xt3,kmadd(J22L,PDupwindNthSymm2Xt3,kmul(J32L,PDupwindNthSymm3Xt3)));
- JacPDupwindNthAnti3A = J13L*PDupwindNthAnti1A + J23L*PDupwindNthAnti2A
- + J33L*PDupwindNthAnti3A;
+ JacPDupwindNthAnti3A =
+ kmadd(J13L,PDupwindNthAnti1A,kmadd(J23L,PDupwindNthAnti2A,kmul(J33L,PDupwindNthAnti3A)));
- JacPDupwindNthAnti3alpha = J13L*PDupwindNthAnti1alpha +
- J23L*PDupwindNthAnti2alpha + J33L*PDupwindNthAnti3alpha;
+ JacPDupwindNthAnti3alpha =
+ kmadd(J13L,PDupwindNthAnti1alpha,kmadd(J23L,PDupwindNthAnti2alpha,kmul(J33L,PDupwindNthAnti3alpha)));
- JacPDupwindNthAnti3At11 = J13L*PDupwindNthAnti1At11 +
- J23L*PDupwindNthAnti2At11 + J33L*PDupwindNthAnti3At11;
+ JacPDupwindNthAnti3At11 =
+ kmadd(J13L,PDupwindNthAnti1At11,kmadd(J23L,PDupwindNthAnti2At11,kmul(J33L,PDupwindNthAnti3At11)));
- JacPDupwindNthAnti3At12 = J13L*PDupwindNthAnti1At12 +
- J23L*PDupwindNthAnti2At12 + J33L*PDupwindNthAnti3At12;
+ JacPDupwindNthAnti3At12 =
+ kmadd(J13L,PDupwindNthAnti1At12,kmadd(J23L,PDupwindNthAnti2At12,kmul(J33L,PDupwindNthAnti3At12)));
- JacPDupwindNthAnti3At13 = J13L*PDupwindNthAnti1At13 +
- J23L*PDupwindNthAnti2At13 + J33L*PDupwindNthAnti3At13;
+ JacPDupwindNthAnti3At13 =
+ kmadd(J13L,PDupwindNthAnti1At13,kmadd(J23L,PDupwindNthAnti2At13,kmul(J33L,PDupwindNthAnti3At13)));
- JacPDupwindNthAnti3At22 = J13L*PDupwindNthAnti1At22 +
- J23L*PDupwindNthAnti2At22 + J33L*PDupwindNthAnti3At22;
+ JacPDupwindNthAnti3At22 =
+ kmadd(J13L,PDupwindNthAnti1At22,kmadd(J23L,PDupwindNthAnti2At22,kmul(J33L,PDupwindNthAnti3At22)));
- JacPDupwindNthAnti3At23 = J13L*PDupwindNthAnti1At23 +
- J23L*PDupwindNthAnti2At23 + J33L*PDupwindNthAnti3At23;
+ JacPDupwindNthAnti3At23 =
+ kmadd(J13L,PDupwindNthAnti1At23,kmadd(J23L,PDupwindNthAnti2At23,kmul(J33L,PDupwindNthAnti3At23)));
- JacPDupwindNthAnti3At33 = J13L*PDupwindNthAnti1At33 +
- J23L*PDupwindNthAnti2At33 + J33L*PDupwindNthAnti3At33;
+ JacPDupwindNthAnti3At33 =
+ kmadd(J13L,PDupwindNthAnti1At33,kmadd(J23L,PDupwindNthAnti2At33,kmul(J33L,PDupwindNthAnti3At33)));
- JacPDupwindNthAnti3B1 = J13L*PDupwindNthAnti1B1 +
- J23L*PDupwindNthAnti2B1 + J33L*PDupwindNthAnti3B1;
+ JacPDupwindNthAnti3B1 =
+ kmadd(J13L,PDupwindNthAnti1B1,kmadd(J23L,PDupwindNthAnti2B1,kmul(J33L,PDupwindNthAnti3B1)));
- JacPDupwindNthAnti3B2 = J13L*PDupwindNthAnti1B2 +
- J23L*PDupwindNthAnti2B2 + J33L*PDupwindNthAnti3B2;
+ JacPDupwindNthAnti3B2 =
+ kmadd(J13L,PDupwindNthAnti1B2,kmadd(J23L,PDupwindNthAnti2B2,kmul(J33L,PDupwindNthAnti3B2)));
- JacPDupwindNthAnti3B3 = J13L*PDupwindNthAnti1B3 +
- J23L*PDupwindNthAnti2B3 + J33L*PDupwindNthAnti3B3;
+ JacPDupwindNthAnti3B3 =
+ kmadd(J13L,PDupwindNthAnti1B3,kmadd(J23L,PDupwindNthAnti2B3,kmul(J33L,PDupwindNthAnti3B3)));
- JacPDupwindNthAnti3beta1 = J13L*PDupwindNthAnti1beta1 +
- J23L*PDupwindNthAnti2beta1 + J33L*PDupwindNthAnti3beta1;
+ JacPDupwindNthAnti3beta1 =
+ kmadd(J13L,PDupwindNthAnti1beta1,kmadd(J23L,PDupwindNthAnti2beta1,kmul(J33L,PDupwindNthAnti3beta1)));
- JacPDupwindNthAnti3beta2 = J13L*PDupwindNthAnti1beta2 +
- J23L*PDupwindNthAnti2beta2 + J33L*PDupwindNthAnti3beta2;
+ JacPDupwindNthAnti3beta2 =
+ kmadd(J13L,PDupwindNthAnti1beta2,kmadd(J23L,PDupwindNthAnti2beta2,kmul(J33L,PDupwindNthAnti3beta2)));
- JacPDupwindNthAnti3beta3 = J13L*PDupwindNthAnti1beta3 +
- J23L*PDupwindNthAnti2beta3 + J33L*PDupwindNthAnti3beta3;
+ JacPDupwindNthAnti3beta3 =
+ kmadd(J13L,PDupwindNthAnti1beta3,kmadd(J23L,PDupwindNthAnti2beta3,kmul(J33L,PDupwindNthAnti3beta3)));
- JacPDupwindNthAnti3gt11 = J13L*PDupwindNthAnti1gt11 +
- J23L*PDupwindNthAnti2gt11 + J33L*PDupwindNthAnti3gt11;
+ JacPDupwindNthAnti3gt11 =
+ kmadd(J13L,PDupwindNthAnti1gt11,kmadd(J23L,PDupwindNthAnti2gt11,kmul(J33L,PDupwindNthAnti3gt11)));
- JacPDupwindNthAnti3gt12 = J13L*PDupwindNthAnti1gt12 +
- J23L*PDupwindNthAnti2gt12 + J33L*PDupwindNthAnti3gt12;
+ JacPDupwindNthAnti3gt12 =
+ kmadd(J13L,PDupwindNthAnti1gt12,kmadd(J23L,PDupwindNthAnti2gt12,kmul(J33L,PDupwindNthAnti3gt12)));
- JacPDupwindNthAnti3gt13 = J13L*PDupwindNthAnti1gt13 +
- J23L*PDupwindNthAnti2gt13 + J33L*PDupwindNthAnti3gt13;
+ JacPDupwindNthAnti3gt13 =
+ kmadd(J13L,PDupwindNthAnti1gt13,kmadd(J23L,PDupwindNthAnti2gt13,kmul(J33L,PDupwindNthAnti3gt13)));
- JacPDupwindNthAnti3gt22 = J13L*PDupwindNthAnti1gt22 +
- J23L*PDupwindNthAnti2gt22 + J33L*PDupwindNthAnti3gt22;
+ JacPDupwindNthAnti3gt22 =
+ kmadd(J13L,PDupwindNthAnti1gt22,kmadd(J23L,PDupwindNthAnti2gt22,kmul(J33L,PDupwindNthAnti3gt22)));
- JacPDupwindNthAnti3gt23 = J13L*PDupwindNthAnti1gt23 +
- J23L*PDupwindNthAnti2gt23 + J33L*PDupwindNthAnti3gt23;
+ JacPDupwindNthAnti3gt23 =
+ kmadd(J13L,PDupwindNthAnti1gt23,kmadd(J23L,PDupwindNthAnti2gt23,kmul(J33L,PDupwindNthAnti3gt23)));
- JacPDupwindNthAnti3gt33 = J13L*PDupwindNthAnti1gt33 +
- J23L*PDupwindNthAnti2gt33 + J33L*PDupwindNthAnti3gt33;
+ JacPDupwindNthAnti3gt33 =
+ kmadd(J13L,PDupwindNthAnti1gt33,kmadd(J23L,PDupwindNthAnti2gt33,kmul(J33L,PDupwindNthAnti3gt33)));
- JacPDupwindNthAnti3phi = J13L*PDupwindNthAnti1phi +
- J23L*PDupwindNthAnti2phi + J33L*PDupwindNthAnti3phi;
+ JacPDupwindNthAnti3phi =
+ kmadd(J13L,PDupwindNthAnti1phi,kmadd(J23L,PDupwindNthAnti2phi,kmul(J33L,PDupwindNthAnti3phi)));
- JacPDupwindNthAnti3trK = J13L*PDupwindNthAnti1trK +
- J23L*PDupwindNthAnti2trK + J33L*PDupwindNthAnti3trK;
+ JacPDupwindNthAnti3trK =
+ kmadd(J13L,PDupwindNthAnti1trK,kmadd(J23L,PDupwindNthAnti2trK,kmul(J33L,PDupwindNthAnti3trK)));
- JacPDupwindNthAnti3Xt1 = J13L*PDupwindNthAnti1Xt1 +
- J23L*PDupwindNthAnti2Xt1 + J33L*PDupwindNthAnti3Xt1;
+ JacPDupwindNthAnti3Xt1 =
+ kmadd(J13L,PDupwindNthAnti1Xt1,kmadd(J23L,PDupwindNthAnti2Xt1,kmul(J33L,PDupwindNthAnti3Xt1)));
- JacPDupwindNthAnti3Xt2 = J13L*PDupwindNthAnti1Xt2 +
- J23L*PDupwindNthAnti2Xt2 + J33L*PDupwindNthAnti3Xt2;
+ JacPDupwindNthAnti3Xt2 =
+ kmadd(J13L,PDupwindNthAnti1Xt2,kmadd(J23L,PDupwindNthAnti2Xt2,kmul(J33L,PDupwindNthAnti3Xt2)));
- JacPDupwindNthAnti3Xt3 = J13L*PDupwindNthAnti1Xt3 +
- J23L*PDupwindNthAnti2Xt3 + J33L*PDupwindNthAnti3Xt3;
+ JacPDupwindNthAnti3Xt3 =
+ kmadd(J13L,PDupwindNthAnti1Xt3,kmadd(J23L,PDupwindNthAnti2Xt3,kmul(J33L,PDupwindNthAnti3Xt3)));
- JacPDupwindNthSymm3A = J13L*PDupwindNthSymm1A + J23L*PDupwindNthSymm2A
- + J33L*PDupwindNthSymm3A;
+ JacPDupwindNthSymm3A =
+ kmadd(J13L,PDupwindNthSymm1A,kmadd(J23L,PDupwindNthSymm2A,kmul(J33L,PDupwindNthSymm3A)));
- JacPDupwindNthSymm3alpha = J13L*PDupwindNthSymm1alpha +
- J23L*PDupwindNthSymm2alpha + J33L*PDupwindNthSymm3alpha;
+ JacPDupwindNthSymm3alpha =
+ kmadd(J13L,PDupwindNthSymm1alpha,kmadd(J23L,PDupwindNthSymm2alpha,kmul(J33L,PDupwindNthSymm3alpha)));
- JacPDupwindNthSymm3At11 = J13L*PDupwindNthSymm1At11 +
- J23L*PDupwindNthSymm2At11 + J33L*PDupwindNthSymm3At11;
+ JacPDupwindNthSymm3At11 =
+ kmadd(J13L,PDupwindNthSymm1At11,kmadd(J23L,PDupwindNthSymm2At11,kmul(J33L,PDupwindNthSymm3At11)));
- JacPDupwindNthSymm3At12 = J13L*PDupwindNthSymm1At12 +
- J23L*PDupwindNthSymm2At12 + J33L*PDupwindNthSymm3At12;
+ JacPDupwindNthSymm3At12 =
+ kmadd(J13L,PDupwindNthSymm1At12,kmadd(J23L,PDupwindNthSymm2At12,kmul(J33L,PDupwindNthSymm3At12)));
- JacPDupwindNthSymm3At13 = J13L*PDupwindNthSymm1At13 +
- J23L*PDupwindNthSymm2At13 + J33L*PDupwindNthSymm3At13;
+ JacPDupwindNthSymm3At13 =
+ kmadd(J13L,PDupwindNthSymm1At13,kmadd(J23L,PDupwindNthSymm2At13,kmul(J33L,PDupwindNthSymm3At13)));
- JacPDupwindNthSymm3At22 = J13L*PDupwindNthSymm1At22 +
- J23L*PDupwindNthSymm2At22 + J33L*PDupwindNthSymm3At22;
+ JacPDupwindNthSymm3At22 =
+ kmadd(J13L,PDupwindNthSymm1At22,kmadd(J23L,PDupwindNthSymm2At22,kmul(J33L,PDupwindNthSymm3At22)));
- JacPDupwindNthSymm3At23 = J13L*PDupwindNthSymm1At23 +
- J23L*PDupwindNthSymm2At23 + J33L*PDupwindNthSymm3At23;
+ JacPDupwindNthSymm3At23 =
+ kmadd(J13L,PDupwindNthSymm1At23,kmadd(J23L,PDupwindNthSymm2At23,kmul(J33L,PDupwindNthSymm3At23)));
- JacPDupwindNthSymm3At33 = J13L*PDupwindNthSymm1At33 +
- J23L*PDupwindNthSymm2At33 + J33L*PDupwindNthSymm3At33;
+ JacPDupwindNthSymm3At33 =
+ kmadd(J13L,PDupwindNthSymm1At33,kmadd(J23L,PDupwindNthSymm2At33,kmul(J33L,PDupwindNthSymm3At33)));
- JacPDupwindNthSymm3B1 = J13L*PDupwindNthSymm1B1 +
- J23L*PDupwindNthSymm2B1 + J33L*PDupwindNthSymm3B1;
+ JacPDupwindNthSymm3B1 =
+ kmadd(J13L,PDupwindNthSymm1B1,kmadd(J23L,PDupwindNthSymm2B1,kmul(J33L,PDupwindNthSymm3B1)));
- JacPDupwindNthSymm3B2 = J13L*PDupwindNthSymm1B2 +
- J23L*PDupwindNthSymm2B2 + J33L*PDupwindNthSymm3B2;
+ JacPDupwindNthSymm3B2 =
+ kmadd(J13L,PDupwindNthSymm1B2,kmadd(J23L,PDupwindNthSymm2B2,kmul(J33L,PDupwindNthSymm3B2)));
- JacPDupwindNthSymm3B3 = J13L*PDupwindNthSymm1B3 +
- J23L*PDupwindNthSymm2B3 + J33L*PDupwindNthSymm3B3;
+ JacPDupwindNthSymm3B3 =
+ kmadd(J13L,PDupwindNthSymm1B3,kmadd(J23L,PDupwindNthSymm2B3,kmul(J33L,PDupwindNthSymm3B3)));
- JacPDupwindNthSymm3beta1 = J13L*PDupwindNthSymm1beta1 +
- J23L*PDupwindNthSymm2beta1 + J33L*PDupwindNthSymm3beta1;
+ JacPDupwindNthSymm3beta1 =
+ kmadd(J13L,PDupwindNthSymm1beta1,kmadd(J23L,PDupwindNthSymm2beta1,kmul(J33L,PDupwindNthSymm3beta1)));
- JacPDupwindNthSymm3beta2 = J13L*PDupwindNthSymm1beta2 +
- J23L*PDupwindNthSymm2beta2 + J33L*PDupwindNthSymm3beta2;
+ JacPDupwindNthSymm3beta2 =
+ kmadd(J13L,PDupwindNthSymm1beta2,kmadd(J23L,PDupwindNthSymm2beta2,kmul(J33L,PDupwindNthSymm3beta2)));
- JacPDupwindNthSymm3beta3 = J13L*PDupwindNthSymm1beta3 +
- J23L*PDupwindNthSymm2beta3 + J33L*PDupwindNthSymm3beta3;
+ JacPDupwindNthSymm3beta3 =
+ kmadd(J13L,PDupwindNthSymm1beta3,kmadd(J23L,PDupwindNthSymm2beta3,kmul(J33L,PDupwindNthSymm3beta3)));
- JacPDupwindNthSymm3gt11 = J13L*PDupwindNthSymm1gt11 +
- J23L*PDupwindNthSymm2gt11 + J33L*PDupwindNthSymm3gt11;
+ JacPDupwindNthSymm3gt11 =
+ kmadd(J13L,PDupwindNthSymm1gt11,kmadd(J23L,PDupwindNthSymm2gt11,kmul(J33L,PDupwindNthSymm3gt11)));
- JacPDupwindNthSymm3gt12 = J13L*PDupwindNthSymm1gt12 +
- J23L*PDupwindNthSymm2gt12 + J33L*PDupwindNthSymm3gt12;
+ JacPDupwindNthSymm3gt12 =
+ kmadd(J13L,PDupwindNthSymm1gt12,kmadd(J23L,PDupwindNthSymm2gt12,kmul(J33L,PDupwindNthSymm3gt12)));
- JacPDupwindNthSymm3gt13 = J13L*PDupwindNthSymm1gt13 +
- J23L*PDupwindNthSymm2gt13 + J33L*PDupwindNthSymm3gt13;
+ JacPDupwindNthSymm3gt13 =
+ kmadd(J13L,PDupwindNthSymm1gt13,kmadd(J23L,PDupwindNthSymm2gt13,kmul(J33L,PDupwindNthSymm3gt13)));
- JacPDupwindNthSymm3gt22 = J13L*PDupwindNthSymm1gt22 +
- J23L*PDupwindNthSymm2gt22 + J33L*PDupwindNthSymm3gt22;
+ JacPDupwindNthSymm3gt22 =
+ kmadd(J13L,PDupwindNthSymm1gt22,kmadd(J23L,PDupwindNthSymm2gt22,kmul(J33L,PDupwindNthSymm3gt22)));
- JacPDupwindNthSymm3gt23 = J13L*PDupwindNthSymm1gt23 +
- J23L*PDupwindNthSymm2gt23 + J33L*PDupwindNthSymm3gt23;
+ JacPDupwindNthSymm3gt23 =
+ kmadd(J13L,PDupwindNthSymm1gt23,kmadd(J23L,PDupwindNthSymm2gt23,kmul(J33L,PDupwindNthSymm3gt23)));
- JacPDupwindNthSymm3gt33 = J13L*PDupwindNthSymm1gt33 +
- J23L*PDupwindNthSymm2gt33 + J33L*PDupwindNthSymm3gt33;
+ JacPDupwindNthSymm3gt33 =
+ kmadd(J13L,PDupwindNthSymm1gt33,kmadd(J23L,PDupwindNthSymm2gt33,kmul(J33L,PDupwindNthSymm3gt33)));
- JacPDupwindNthSymm3phi = J13L*PDupwindNthSymm1phi +
- J23L*PDupwindNthSymm2phi + J33L*PDupwindNthSymm3phi;
+ JacPDupwindNthSymm3phi =
+ kmadd(J13L,PDupwindNthSymm1phi,kmadd(J23L,PDupwindNthSymm2phi,kmul(J33L,PDupwindNthSymm3phi)));
- JacPDupwindNthSymm3trK = J13L*PDupwindNthSymm1trK +
- J23L*PDupwindNthSymm2trK + J33L*PDupwindNthSymm3trK;
+ JacPDupwindNthSymm3trK =
+ kmadd(J13L,PDupwindNthSymm1trK,kmadd(J23L,PDupwindNthSymm2trK,kmul(J33L,PDupwindNthSymm3trK)));
- JacPDupwindNthSymm3Xt1 = J13L*PDupwindNthSymm1Xt1 +
- J23L*PDupwindNthSymm2Xt1 + J33L*PDupwindNthSymm3Xt1;
+ JacPDupwindNthSymm3Xt1 =
+ kmadd(J13L,PDupwindNthSymm1Xt1,kmadd(J23L,PDupwindNthSymm2Xt1,kmul(J33L,PDupwindNthSymm3Xt1)));
- JacPDupwindNthSymm3Xt2 = J13L*PDupwindNthSymm1Xt2 +
- J23L*PDupwindNthSymm2Xt2 + J33L*PDupwindNthSymm3Xt2;
+ JacPDupwindNthSymm3Xt2 =
+ kmadd(J13L,PDupwindNthSymm1Xt2,kmadd(J23L,PDupwindNthSymm2Xt2,kmul(J33L,PDupwindNthSymm3Xt2)));
- JacPDupwindNthSymm3Xt3 = J13L*PDupwindNthSymm1Xt3 +
- J23L*PDupwindNthSymm2Xt3 + J33L*PDupwindNthSymm3Xt3;
+ JacPDupwindNthSymm3Xt3 =
+ kmadd(J13L,PDupwindNthSymm1Xt3,kmadd(J23L,PDupwindNthSymm2Xt3,kmul(J33L,PDupwindNthSymm3Xt3)));
}
else
{
@@ -1314,207 +1985,207 @@ static void ML_BSSN_MP_O8_Advect_Body(cGH const * restrict const cctkGH, int con
JacPDupwindNthSymm3Xt3 = PDupwindNthSymm3Xt3;
}
- ptrdiff_t dir1 = Sign(beta1L);
+ phirhsL =
+ kmadd(beta1L,JacPDupwindNthAnti1phi,kmadd(beta2L,JacPDupwindNthAnti2phi,kmadd(beta3L,JacPDupwindNthAnti3phi,kadd(phirhsL,kmadd(JacPDupwindNthSymm1phi,kfabs(beta1L),kmadd(JacPDupwindNthSymm2phi,kfabs(beta2L),kmul(JacPDupwindNthSymm3phi,kfabs(beta3L))))))));
- ptrdiff_t dir2 = Sign(beta2L);
+ gt11rhsL =
+ kadd(gt11rhsL,kmadd(beta1L,JacPDupwindNthAnti1gt11,kmadd(beta2L,JacPDupwindNthAnti2gt11,kmadd(beta3L,JacPDupwindNthAnti3gt11,kmadd(JacPDupwindNthSymm1gt11,kfabs(beta1L),kmadd(JacPDupwindNthSymm2gt11,kfabs(beta2L),kmul(JacPDupwindNthSymm3gt11,kfabs(beta3L))))))));
- ptrdiff_t dir3 = Sign(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))))))));
- phirhsL = beta1L*JacPDupwindNthAnti1phi +
- beta2L*JacPDupwindNthAnti2phi + beta3L*JacPDupwindNthAnti3phi + phirhsL
- + JacPDupwindNthSymm1phi*Abs(beta1L) +
- JacPDupwindNthSymm2phi*Abs(beta2L) +
- JacPDupwindNthSymm3phi*Abs(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))))))));
- gt11rhsL = gt11rhsL + beta1L*JacPDupwindNthAnti1gt11 +
- beta2L*JacPDupwindNthAnti2gt11 + beta3L*JacPDupwindNthAnti3gt11 +
- JacPDupwindNthSymm1gt11*Abs(beta1L) +
- JacPDupwindNthSymm2gt11*Abs(beta2L) +
- JacPDupwindNthSymm3gt11*Abs(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))))))));
- gt12rhsL = gt12rhsL + beta1L*JacPDupwindNthAnti1gt12 +
- beta2L*JacPDupwindNthAnti2gt12 + beta3L*JacPDupwindNthAnti3gt12 +
- JacPDupwindNthSymm1gt12*Abs(beta1L) +
- JacPDupwindNthSymm2gt12*Abs(beta2L) +
- JacPDupwindNthSymm3gt12*Abs(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))))))));
- gt13rhsL = gt13rhsL + beta1L*JacPDupwindNthAnti1gt13 +
- beta2L*JacPDupwindNthAnti2gt13 + beta3L*JacPDupwindNthAnti3gt13 +
- JacPDupwindNthSymm1gt13*Abs(beta1L) +
- JacPDupwindNthSymm2gt13*Abs(beta2L) +
- JacPDupwindNthSymm3gt13*Abs(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))))))));
- gt22rhsL = gt22rhsL + beta1L*JacPDupwindNthAnti1gt22 +
- beta2L*JacPDupwindNthAnti2gt22 + beta3L*JacPDupwindNthAnti3gt22 +
- JacPDupwindNthSymm1gt22*Abs(beta1L) +
- JacPDupwindNthSymm2gt22*Abs(beta2L) +
- JacPDupwindNthSymm3gt22*Abs(beta3L);
+ Xt1rhsL =
+ kmadd(beta1L,JacPDupwindNthAnti1Xt1,kmadd(beta2L,JacPDupwindNthAnti2Xt1,kmadd(beta3L,JacPDupwindNthAnti3Xt1,kadd(Xt1rhsL,kmadd(JacPDupwindNthSymm1Xt1,kfabs(beta1L),kmadd(JacPDupwindNthSymm2Xt1,kfabs(beta2L),kmul(JacPDupwindNthSymm3Xt1,kfabs(beta3L))))))));
- gt23rhsL = gt23rhsL + beta1L*JacPDupwindNthAnti1gt23 +
- beta2L*JacPDupwindNthAnti2gt23 + beta3L*JacPDupwindNthAnti3gt23 +
- JacPDupwindNthSymm1gt23*Abs(beta1L) +
- JacPDupwindNthSymm2gt23*Abs(beta2L) +
- JacPDupwindNthSymm3gt23*Abs(beta3L);
+ Xt2rhsL =
+ kmadd(beta1L,JacPDupwindNthAnti1Xt2,kmadd(beta2L,JacPDupwindNthAnti2Xt2,kmadd(beta3L,JacPDupwindNthAnti3Xt2,kadd(Xt2rhsL,kmadd(JacPDupwindNthSymm1Xt2,kfabs(beta1L),kmadd(JacPDupwindNthSymm2Xt2,kfabs(beta2L),kmul(JacPDupwindNthSymm3Xt2,kfabs(beta3L))))))));
- gt33rhsL = gt33rhsL + beta1L*JacPDupwindNthAnti1gt33 +
- beta2L*JacPDupwindNthAnti2gt33 + beta3L*JacPDupwindNthAnti3gt33 +
- JacPDupwindNthSymm1gt33*Abs(beta1L) +
- JacPDupwindNthSymm2gt33*Abs(beta2L) +
- JacPDupwindNthSymm3gt33*Abs(beta3L);
+ Xt3rhsL =
+ kmadd(beta1L,JacPDupwindNthAnti1Xt3,kmadd(beta2L,JacPDupwindNthAnti2Xt3,kmadd(beta3L,JacPDupwindNthAnti3Xt3,kadd(Xt3rhsL,kmadd(JacPDupwindNthSymm1Xt3,kfabs(beta1L),kmadd(JacPDupwindNthSymm2Xt3,kfabs(beta2L),kmul(JacPDupwindNthSymm3Xt3,kfabs(beta3L))))))));
- Xt1rhsL = beta1L*JacPDupwindNthAnti1Xt1 +
- beta2L*JacPDupwindNthAnti2Xt1 + beta3L*JacPDupwindNthAnti3Xt1 + Xt1rhsL
- + JacPDupwindNthSymm1Xt1*Abs(beta1L) +
- JacPDupwindNthSymm2Xt1*Abs(beta2L) +
- JacPDupwindNthSymm3Xt1*Abs(beta3L);
+ trKrhsL =
+ kmadd(beta1L,JacPDupwindNthAnti1trK,kmadd(beta2L,JacPDupwindNthAnti2trK,kmadd(beta3L,JacPDupwindNthAnti3trK,kadd(trKrhsL,kmadd(JacPDupwindNthSymm1trK,kfabs(beta1L),kmadd(JacPDupwindNthSymm2trK,kfabs(beta2L),kmul(JacPDupwindNthSymm3trK,kfabs(beta3L))))))));
- Xt2rhsL = beta1L*JacPDupwindNthAnti1Xt2 +
- beta2L*JacPDupwindNthAnti2Xt2 + beta3L*JacPDupwindNthAnti3Xt2 + Xt2rhsL
- + JacPDupwindNthSymm1Xt2*Abs(beta1L) +
- JacPDupwindNthSymm2Xt2*Abs(beta2L) +
- JacPDupwindNthSymm3Xt2*Abs(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))))))));
- Xt3rhsL = beta1L*JacPDupwindNthAnti1Xt3 +
- beta2L*JacPDupwindNthAnti2Xt3 + beta3L*JacPDupwindNthAnti3Xt3 + Xt3rhsL
- + JacPDupwindNthSymm1Xt3*Abs(beta1L) +
- JacPDupwindNthSymm2Xt3*Abs(beta2L) +
- JacPDupwindNthSymm3Xt3*Abs(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))))))));
- trKrhsL = beta1L*JacPDupwindNthAnti1trK +
- beta2L*JacPDupwindNthAnti2trK + beta3L*JacPDupwindNthAnti3trK + trKrhsL
- + JacPDupwindNthSymm1trK*Abs(beta1L) +
- JacPDupwindNthSymm2trK*Abs(beta2L) +
- JacPDupwindNthSymm3trK*Abs(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))))))));
- At11rhsL = At11rhsL + beta1L*JacPDupwindNthAnti1At11 +
- beta2L*JacPDupwindNthAnti2At11 + beta3L*JacPDupwindNthAnti3At11 +
- JacPDupwindNthSymm1At11*Abs(beta1L) +
- JacPDupwindNthSymm2At11*Abs(beta2L) +
- JacPDupwindNthSymm3At11*Abs(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))))))));
- At12rhsL = At12rhsL + beta1L*JacPDupwindNthAnti1At12 +
- beta2L*JacPDupwindNthAnti2At12 + beta3L*JacPDupwindNthAnti3At12 +
- JacPDupwindNthSymm1At12*Abs(beta1L) +
- JacPDupwindNthSymm2At12*Abs(beta2L) +
- JacPDupwindNthSymm3At12*Abs(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))))))));
- At13rhsL = At13rhsL + beta1L*JacPDupwindNthAnti1At13 +
- beta2L*JacPDupwindNthAnti2At13 + beta3L*JacPDupwindNthAnti3At13 +
- JacPDupwindNthSymm1At13*Abs(beta1L) +
- JacPDupwindNthSymm2At13*Abs(beta2L) +
- JacPDupwindNthSymm3At13*Abs(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))))))));
- At22rhsL = At22rhsL + beta1L*JacPDupwindNthAnti1At22 +
- beta2L*JacPDupwindNthAnti2At22 + beta3L*JacPDupwindNthAnti3At22 +
- JacPDupwindNthSymm1At22*Abs(beta1L) +
- JacPDupwindNthSymm2At22*Abs(beta2L) +
- JacPDupwindNthSymm3At22*Abs(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);
- At23rhsL = At23rhsL + beta1L*JacPDupwindNthAnti1At23 +
- beta2L*JacPDupwindNthAnti2At23 + beta3L*JacPDupwindNthAnti3At23 +
- JacPDupwindNthSymm1At23*Abs(beta1L) +
- JacPDupwindNthSymm2At23*Abs(beta2L) +
- JacPDupwindNthSymm3At23*Abs(beta3L);
+ ArhsL =
+ kmadd(kmadd(beta1L,JacPDupwindNthAnti1A,kmadd(beta2L,JacPDupwindNthAnti2A,kmadd(beta3L,JacPDupwindNthAnti3A,kmadd(JacPDupwindNthSymm1A,kfabs(beta1L),kmadd(JacPDupwindNthSymm2A,kfabs(beta2L),kmul(JacPDupwindNthSymm3A,kfabs(beta3L))))))),ToReal(LapseAdvectionCoeff),ArhsL);
- At33rhsL = At33rhsL + beta1L*JacPDupwindNthAnti1At33 +
- beta2L*JacPDupwindNthAnti2At33 + beta3L*JacPDupwindNthAnti3At33 +
- JacPDupwindNthSymm1At33*Abs(beta1L) +
- JacPDupwindNthSymm2At33*Abs(beta2L) +
- JacPDupwindNthSymm3At33*Abs(beta3L);
+ 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);
- alpharhsL = alpharhsL + (beta1L*JacPDupwindNthAnti1alpha +
- beta2L*JacPDupwindNthAnti2alpha + beta3L*JacPDupwindNthAnti3alpha +
- JacPDupwindNthSymm1alpha*Abs(beta1L) +
- JacPDupwindNthSymm2alpha*Abs(beta2L) +
- JacPDupwindNthSymm3alpha*Abs(beta3L))*ToReal(LapseAdvectionCoeff);
+ 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);
- ArhsL = ArhsL + (beta1L*JacPDupwindNthAnti1A +
- beta2L*JacPDupwindNthAnti2A + beta3L*JacPDupwindNthAnti3A +
- JacPDupwindNthSymm1A*Abs(beta1L) + JacPDupwindNthSymm2A*Abs(beta2L) +
- JacPDupwindNthSymm3A*Abs(beta3L))*ToReal(LapseAdvectionCoeff);
+ 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);
- beta1rhsL = beta1rhsL + (beta1L*JacPDupwindNthAnti1beta1 +
- beta2L*JacPDupwindNthAnti2beta1 + beta3L*JacPDupwindNthAnti3beta1 +
- JacPDupwindNthSymm1beta1*Abs(beta1L) +
- JacPDupwindNthSymm2beta1*Abs(beta2L) +
- JacPDupwindNthSymm3beta1*Abs(beta3L))*ToReal(ShiftAdvectionCoeff);
+ B1rhsL =
+ kadd(B1rhsL,kmadd(kmadd(beta1L,ksub(JacPDupwindNthAnti1B1,JacPDupwindNthAnti1Xt1),kmadd(beta2L,ksub(JacPDupwindNthAnti2B1,JacPDupwindNthAnti2Xt1),kmadd(beta3L,ksub(JacPDupwindNthAnti3B1,JacPDupwindNthAnti3Xt1),kmadd(kfabs(beta1L),ksub(JacPDupwindNthSymm1B1,JacPDupwindNthSymm1Xt1),kmadd(kfabs(beta2L),ksub(JacPDupwindNthSymm2B1,JacPDupwindNthSymm2Xt1),kmul(kfabs(beta3L),ksub(JacPDupwindNthSymm3B1,JacPDupwindNthSymm3Xt1))))))),ToReal(ShiftAdvectionCoeff),kmul(kmadd(beta1L,JacPDupwindNthAnti1Xt1,kmadd(beta2L,JacPDupwindNthAnti2Xt1,kmadd(beta3L,JacPDupwindNthAnti3Xt1,kmadd(JacPDupwindNthSymm1Xt1,kfabs(beta1L),kmadd(JacPDupwindNthSymm2Xt1,kfabs(beta2L),kmul(JacPDupwindNthSymm3Xt1,kfabs(beta3L))))))),ToReal(ShiftBCoeff))));
- beta2rhsL = beta2rhsL + (beta1L*JacPDupwindNthAnti1beta2 +
- beta2L*JacPDupwindNthAnti2beta2 + beta3L*JacPDupwindNthAnti3beta2 +
- JacPDupwindNthSymm1beta2*Abs(beta1L) +
- JacPDupwindNthSymm2beta2*Abs(beta2L) +
- JacPDupwindNthSymm3beta2*Abs(beta3L))*ToReal(ShiftAdvectionCoeff);
+ B2rhsL =
+ kadd(B2rhsL,kmadd(kmadd(beta1L,ksub(JacPDupwindNthAnti1B2,JacPDupwindNthAnti1Xt2),kmadd(beta2L,ksub(JacPDupwindNthAnti2B2,JacPDupwindNthAnti2Xt2),kmadd(beta3L,ksub(JacPDupwindNthAnti3B2,JacPDupwindNthAnti3Xt2),kmadd(kfabs(beta1L),ksub(JacPDupwindNthSymm1B2,JacPDupwindNthSymm1Xt2),kmadd(kfabs(beta2L),ksub(JacPDupwindNthSymm2B2,JacPDupwindNthSymm2Xt2),kmul(kfabs(beta3L),ksub(JacPDupwindNthSymm3B2,JacPDupwindNthSymm3Xt2))))))),ToReal(ShiftAdvectionCoeff),kmul(kmadd(beta1L,JacPDupwindNthAnti1Xt2,kmadd(beta2L,JacPDupwindNthAnti2Xt2,kmadd(beta3L,JacPDupwindNthAnti3Xt2,kmadd(JacPDupwindNthSymm1Xt2,kfabs(beta1L),kmadd(JacPDupwindNthSymm2Xt2,kfabs(beta2L),kmul(JacPDupwindNthSymm3Xt2,kfabs(beta3L))))))),ToReal(ShiftBCoeff))));
- beta3rhsL = beta3rhsL + (beta1L*JacPDupwindNthAnti1beta3 +
- beta2L*JacPDupwindNthAnti2beta3 + beta3L*JacPDupwindNthAnti3beta3 +
- JacPDupwindNthSymm1beta3*Abs(beta1L) +
- JacPDupwindNthSymm2beta3*Abs(beta2L) +
- JacPDupwindNthSymm3beta3*Abs(beta3L))*ToReal(ShiftAdvectionCoeff);
+ B3rhsL =
+ kadd(B3rhsL,kmadd(kmadd(beta1L,ksub(JacPDupwindNthAnti1B3,JacPDupwindNthAnti1Xt3),kmadd(beta2L,ksub(JacPDupwindNthAnti2B3,JacPDupwindNthAnti2Xt3),kmadd(beta3L,ksub(JacPDupwindNthAnti3B3,JacPDupwindNthAnti3Xt3),kmadd(kfabs(beta1L),ksub(JacPDupwindNthSymm1B3,JacPDupwindNthSymm1Xt3),kmadd(kfabs(beta2L),ksub(JacPDupwindNthSymm2B3,JacPDupwindNthSymm2Xt3),kmul(kfabs(beta3L),ksub(JacPDupwindNthSymm3B3,JacPDupwindNthSymm3Xt3))))))),ToReal(ShiftAdvectionCoeff),kmul(kmadd(beta1L,JacPDupwindNthAnti1Xt3,kmadd(beta2L,JacPDupwindNthAnti2Xt3,kmadd(beta3L,JacPDupwindNthAnti3Xt3,kmadd(JacPDupwindNthSymm1Xt3,kfabs(beta1L),kmadd(JacPDupwindNthSymm2Xt3,kfabs(beta2L),kmul(JacPDupwindNthSymm3Xt3,kfabs(beta3L))))))),ToReal(ShiftBCoeff))));
- B1rhsL = B1rhsL + (beta1L*(JacPDupwindNthAnti1B1 -
- JacPDupwindNthAnti1Xt1) + beta2L*(JacPDupwindNthAnti2B1 -
- JacPDupwindNthAnti2Xt1) + beta3L*(JacPDupwindNthAnti3B1 -
- JacPDupwindNthAnti3Xt1) + (JacPDupwindNthSymm1B1 -
- JacPDupwindNthSymm1Xt1)*Abs(beta1L) + (JacPDupwindNthSymm2B1 -
- JacPDupwindNthSymm2Xt1)*Abs(beta2L) + (JacPDupwindNthSymm3B1 -
- JacPDupwindNthSymm3Xt1)*Abs(beta3L))*ToReal(ShiftAdvectionCoeff) +
- (beta1L*JacPDupwindNthAnti1Xt1 + beta2L*JacPDupwindNthAnti2Xt1 +
- beta3L*JacPDupwindNthAnti3Xt1 + JacPDupwindNthSymm1Xt1*Abs(beta1L) +
- JacPDupwindNthSymm2Xt1*Abs(beta2L) +
- JacPDupwindNthSymm3Xt1*Abs(beta3L))*ToReal(ShiftBCoeff);
+ /* If necessary, store only partial vectors after the first iteration */
- B2rhsL = B2rhsL + (beta1L*(JacPDupwindNthAnti1B2 -
- JacPDupwindNthAnti1Xt2) + beta2L*(JacPDupwindNthAnti2B2 -
- JacPDupwindNthAnti2Xt2) + beta3L*(JacPDupwindNthAnti3B2 -
- JacPDupwindNthAnti3Xt2) + (JacPDupwindNthSymm1B2 -
- JacPDupwindNthSymm1Xt2)*Abs(beta1L) + (JacPDupwindNthSymm2B2 -
- JacPDupwindNthSymm2Xt2)*Abs(beta2L) + (JacPDupwindNthSymm3B2 -
- JacPDupwindNthSymm3Xt2)*Abs(beta3L))*ToReal(ShiftAdvectionCoeff) +
- (beta1L*JacPDupwindNthAnti1Xt2 + beta2L*JacPDupwindNthAnti2Xt2 +
- beta3L*JacPDupwindNthAnti3Xt2 + JacPDupwindNthSymm1Xt2*Abs(beta1L) +
- JacPDupwindNthSymm2Xt2*Abs(beta2L) +
- JacPDupwindNthSymm3Xt2*Abs(beta3L))*ToReal(ShiftBCoeff);
+ 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(Arhs[index],ArhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At11rhs[index],At11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At12rhs[index],At12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At13rhs[index],At13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At22rhs[index],At22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At23rhs[index],At23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At33rhs[index],At33rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B1rhs[index],B1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B2rhs[index],B2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt12rhs[index],gt12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt13rhs[index],gt13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt22rhs[index],gt22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt23rhs[index],gt23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt33rhs[index],gt33rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(phirhs[index],phirhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(trKrhs[index],trKrhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt1rhs[index],Xt1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt2rhs[index],Xt2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt3rhs[index],Xt3rhsL,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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_hi(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_hi(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_hi(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_hi(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_hi(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_hi(At33rhs[index],At33rhsL,elt_count);
+ vec_store_nta_partial_hi(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_hi(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_hi(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_hi(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_hi(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_hi(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_hi(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_hi(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_hi(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_hi(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_hi(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt3rhs[index],Xt3rhsL,elt_count);
+ continue;
+ }
- B3rhsL = B3rhsL + (beta1L*(JacPDupwindNthAnti1B3 -
- JacPDupwindNthAnti1Xt3) + beta2L*(JacPDupwindNthAnti2B3 -
- JacPDupwindNthAnti2Xt3) + beta3L*(JacPDupwindNthAnti3B3 -
- JacPDupwindNthAnti3Xt3) + (JacPDupwindNthSymm1B3 -
- JacPDupwindNthSymm1Xt3)*Abs(beta1L) + (JacPDupwindNthSymm2B3 -
- JacPDupwindNthSymm2Xt3)*Abs(beta2L) + (JacPDupwindNthSymm3B3 -
- JacPDupwindNthSymm3Xt3)*Abs(beta3L))*ToReal(ShiftAdvectionCoeff) +
- (beta1L*JacPDupwindNthAnti1Xt3 + beta2L*JacPDupwindNthAnti2Xt3 +
- beta3L*JacPDupwindNthAnti3Xt3 + JacPDupwindNthSymm1Xt3*Abs(beta1L) +
- JacPDupwindNthSymm2Xt3*Abs(beta2L) +
- JacPDupwindNthSymm3Xt3*Abs(beta3L))*ToReal(ShiftBCoeff);
+ /* If necessary, store only partial vectors after the last iteration */
- /* Copy local copies back to grid functions */
- alpharhs[index] = alpharhsL;
- Arhs[index] = ArhsL;
- At11rhs[index] = At11rhsL;
- At12rhs[index] = At12rhsL;
- At13rhs[index] = At13rhsL;
- At22rhs[index] = At22rhsL;
- At23rhs[index] = At23rhsL;
- At33rhs[index] = At33rhsL;
- B1rhs[index] = B1rhsL;
- B2rhs[index] = B2rhsL;
- B3rhs[index] = B3rhsL;
- beta1rhs[index] = beta1rhsL;
- beta2rhs[index] = beta2rhsL;
- beta3rhs[index] = beta3rhsL;
- gt11rhs[index] = gt11rhsL;
- gt12rhs[index] = gt12rhsL;
- gt13rhs[index] = gt13rhsL;
- gt22rhs[index] = gt22rhsL;
- gt23rhs[index] = gt23rhsL;
- gt33rhs[index] = gt33rhsL;
- phirhs[index] = phirhsL;
- trKrhs[index] = trKrhsL;
- Xt1rhs[index] = Xt1rhsL;
- Xt2rhs[index] = Xt2rhsL;
- Xt3rhs[index] = Xt3rhsL;
+ 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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_lo(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_lo(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_lo(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_lo(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_lo(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_lo(At33rhs[index],At33rhsL,elt_count);
+ vec_store_nta_partial_lo(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_lo(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_lo(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_lo(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_lo(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_lo(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_lo(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_lo(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_lo(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_lo(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_lo(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt3rhs[index],Xt3rhsL,elt_count);
+ break;
+ }
+ vec_store_nta(alpharhs[index],alpharhsL);
+ vec_store_nta(Arhs[index],ArhsL);
+ vec_store_nta(At11rhs[index],At11rhsL);
+ vec_store_nta(At12rhs[index],At12rhsL);
+ vec_store_nta(At13rhs[index],At13rhsL);
+ vec_store_nta(At22rhs[index],At22rhsL);
+ vec_store_nta(At23rhs[index],At23rhsL);
+ vec_store_nta(At33rhs[index],At33rhsL);
+ vec_store_nta(B1rhs[index],B1rhsL);
+ vec_store_nta(B2rhs[index],B2rhsL);
+ vec_store_nta(B3rhs[index],B3rhsL);
+ vec_store_nta(beta1rhs[index],beta1rhsL);
+ vec_store_nta(beta2rhs[index],beta2rhsL);
+ vec_store_nta(beta3rhs[index],beta3rhsL);
+ vec_store_nta(gt11rhs[index],gt11rhsL);
+ vec_store_nta(gt12rhs[index],gt12rhsL);
+ vec_store_nta(gt13rhs[index],gt13rhsL);
+ vec_store_nta(gt22rhs[index],gt22rhsL);
+ vec_store_nta(gt23rhs[index],gt23rhsL);
+ vec_store_nta(gt33rhs[index],gt33rhsL);
+ vec_store_nta(phirhs[index],phirhsL);
+ vec_store_nta(trKrhs[index],trKrhsL);
+ vec_store_nta(Xt1rhs[index],Xt1rhsL);
+ vec_store_nta(Xt2rhs[index],Xt2rhsL);
+ vec_store_nta(Xt3rhs[index],Xt3rhsL);
}
- LC_ENDLOOP3 (ML_BSSN_MP_O8_Advect);
+ LC_ENDLOOP3VEC (ML_BSSN_MP_O8_Advect);
}
extern "C" void ML_BSSN_MP_O8_Advect(CCTK_ARGUMENTS)
@@ -1522,5 +2193,43 @@ extern "C" void ML_BSSN_MP_O8_Advect(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_O8_Advect_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_MP_O8_Advect_calc_every != ML_BSSN_MP_O8_Advect_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN_MP_O8::ML_curv","ML_BSSN_MP_O8::ML_curvrhs","ML_BSSN_MP_O8::ML_dtlapse","ML_BSSN_MP_O8::ML_dtlapserhs","ML_BSSN_MP_O8::ML_dtshift","ML_BSSN_MP_O8::ML_dtshiftrhs","ML_BSSN_MP_O8::ML_Gamma","ML_BSSN_MP_O8::ML_Gammarhs","ML_BSSN_MP_O8::ML_lapse","ML_BSSN_MP_O8::ML_lapserhs","ML_BSSN_MP_O8::ML_log_confac","ML_BSSN_MP_O8::ML_log_confacrhs","ML_BSSN_MP_O8::ML_metric","ML_BSSN_MP_O8::ML_metricrhs","ML_BSSN_MP_O8::ML_shift","ML_BSSN_MP_O8::ML_shiftrhs","ML_BSSN_MP_O8::ML_trace_curv","ML_BSSN_MP_O8::ML_trace_curvrhs"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_O8_Advect", 18, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_O8_Advect", 2, 2, 2);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_O8_Advect", 3, 3, 3);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_O8_Advect", 4, 4, 4);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_O8_Advect", 5, 5, 5);
+ break;
+ }
+
GenericFD_LoopOverInterior(cctkGH, &ML_BSSN_MP_O8_Advect_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_MP_O8_Advect_Body");
+ }
}
diff --git a/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_Dissipation.cc b/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_Dissipation.cc
index cdafb08..48ac519 100644
--- a/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_Dissipation.cc
+++ b/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_Dissipation.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_MP_O8_Dissipation_SelectBCs(CCTK_ARGUMENTS)
{
@@ -57,7 +58,7 @@ extern "C" void ML_BSSN_MP_O8_Dissipation_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_BSSN_MP_O8_Dissipation_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_MP_O8_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;
@@ -65,21 +66,6 @@ static void ML_BSSN_MP_O8_Dissipation_Body(cGH const * restrict const cctkGH, in
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_O8_Dissipation_Body");
- }
-
- if (cctk_iteration % ML_BSSN_MP_O8_Dissipation_calc_every != ML_BSSN_MP_O8_Dissipation_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN_MP_O8::ML_curv","ML_BSSN_MP_O8::ML_curvrhs","ML_BSSN_MP_O8::ML_dtlapse","ML_BSSN_MP_O8::ML_dtlapserhs","ML_BSSN_MP_O8::ML_dtshift","ML_BSSN_MP_O8::ML_dtshiftrhs","ML_BSSN_MP_O8::ML_Gamma","ML_BSSN_MP_O8::ML_Gammarhs","ML_BSSN_MP_O8::ML_lapse","ML_BSSN_MP_O8::ML_lapserhs","ML_BSSN_MP_O8::ML_log_confac","ML_BSSN_MP_O8::ML_log_confacrhs","ML_BSSN_MP_O8::ML_metric","ML_BSSN_MP_O8::ML_metricrhs","ML_BSSN_MP_O8::ML_shift","ML_BSSN_MP_O8::ML_shiftrhs","ML_BSSN_MP_O8::ML_trace_curv","ML_BSSN_MP_O8::ML_trace_curvrhs"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_O8_Dissipation", 18, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_O8_Dissipation", 5, 5, 5);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -89,47 +75,102 @@ static void ML_BSSN_MP_O8_Dissipation_Body(cGH const * restrict const cctkGH, in
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o1024dx = 0.0009765625*INV(dx);
- CCTK_REAL const p1o1024dy = 0.0009765625*INV(dy);
- CCTK_REAL const p1o1024dz = 0.0009765625*INV(dz);
- CCTK_REAL const p1o1680dx = 0.000595238095238095238095238095238*INV(dx);
- CCTK_REAL const p1o1680dy = 0.000595238095238095238095238095238*INV(dy);
- CCTK_REAL const p1o1680dz = 0.000595238095238095238095238095238*INV(dz);
- CCTK_REAL const p1o5040dx2 = 0.000198412698412698412698412698413*INV(SQR(dx));
- CCTK_REAL const p1o5040dy2 = 0.000198412698412698412698412698413*INV(SQR(dy));
- CCTK_REAL const p1o5040dz2 = 0.000198412698412698412698412698413*INV(SQR(dz));
- CCTK_REAL const p1o560dx = 0.00178571428571428571428571428571*INV(dx);
- CCTK_REAL const p1o560dy = 0.00178571428571428571428571428571*INV(dy);
- CCTK_REAL const p1o560dz = 0.00178571428571428571428571428571*INV(dz);
- CCTK_REAL const p1o705600dxdy = 1.41723356009070294784580498866e-6*INV(dx)*INV(dy);
- CCTK_REAL const p1o705600dxdz = 1.41723356009070294784580498866e-6*INV(dx)*INV(dz);
- CCTK_REAL const p1o705600dydz = 1.41723356009070294784580498866e-6*INV(dy)*INV(dz);
- CCTK_REAL const p1o840dx = 0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const p1o840dy = 0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const p1o840dz = 0.00119047619047619047619047619048*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o840dx = -0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const pm1o840dy = -0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const pm1o840dz = -0.00119047619047619047619047619048*INV(dz);
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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)
@@ -176,465 +217,789 @@ static void ML_BSSN_MP_O8_Dissipation_Body(cGH const * restrict const cctkGH, in
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_LOOP3 (ML_BSSN_MP_O8_Dissipation,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_MP_O8_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 AL = A[index];
- CCTK_REAL alphaL = alpha[index];
- CCTK_REAL alpharhsL = alpharhs[index];
- CCTK_REAL ArhsL = Arhs[index];
- CCTK_REAL At11L = At11[index];
- CCTK_REAL At11rhsL = At11rhs[index];
- CCTK_REAL At12L = At12[index];
- CCTK_REAL At12rhsL = At12rhs[index];
- CCTK_REAL At13L = At13[index];
- CCTK_REAL At13rhsL = At13rhs[index];
- CCTK_REAL At22L = At22[index];
- CCTK_REAL At22rhsL = At22rhs[index];
- CCTK_REAL At23L = At23[index];
- CCTK_REAL At23rhsL = At23rhs[index];
- CCTK_REAL At33L = At33[index];
- CCTK_REAL At33rhsL = At33rhs[index];
- CCTK_REAL B1L = B1[index];
- CCTK_REAL B1rhsL = B1rhs[index];
- CCTK_REAL B2L = B2[index];
- CCTK_REAL B2rhsL = B2rhs[index];
- CCTK_REAL B3L = B3[index];
- CCTK_REAL B3rhsL = B3rhs[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta1rhsL = beta1rhs[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta2rhsL = beta2rhs[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL beta3rhsL = beta3rhs[index];
- CCTK_REAL gt11L = gt11[index];
- CCTK_REAL gt11rhsL = gt11rhs[index];
- CCTK_REAL gt12L = gt12[index];
- CCTK_REAL gt12rhsL = gt12rhs[index];
- CCTK_REAL gt13L = gt13[index];
- CCTK_REAL gt13rhsL = gt13rhs[index];
- CCTK_REAL gt22L = gt22[index];
- CCTK_REAL gt22rhsL = gt22rhs[index];
- CCTK_REAL gt23L = gt23[index];
- CCTK_REAL gt23rhsL = gt23rhs[index];
- CCTK_REAL gt33L = gt33[index];
- CCTK_REAL gt33rhsL = gt33rhs[index];
- CCTK_REAL phiL = phi[index];
- CCTK_REAL phirhsL = phirhs[index];
- CCTK_REAL trKL = trK[index];
- CCTK_REAL trKrhsL = trKrhs[index];
- CCTK_REAL Xt1L = Xt1[index];
- CCTK_REAL Xt1rhsL = Xt1rhs[index];
- CCTK_REAL Xt2L = Xt2[index];
- CCTK_REAL Xt2rhsL = Xt2rhs[index];
- CCTK_REAL Xt3L = Xt3[index];
- CCTK_REAL Xt3rhsL = Xt3rhs[index];
-
-
- CCTK_REAL J11L, J12L, J13L, J21L, J22L, J23L, J31L, J32L, J33L;
+ 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 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 = J11[index];
- J12L = J12[index];
- J13L = J13[index];
- J21L = J21[index];
- J22L = J22[index];
- J23L = J23[index];
- J31L = J31[index];
- J32L = J32[index];
- J33L = J33[index];
+ J11L = vec_load(J11[index]);
+ J12L = vec_load(J12[index]);
+ J13L = vec_load(J13[index]);
+ J21L = vec_load(J21[index]);
+ J22L = vec_load(J22[index]);
+ J23L = vec_load(J23[index]);
+ J31L = vec_load(J31[index]);
+ J32L = vec_load(J32[index]);
+ J33L = vec_load(J33[index]);
}
/* Include user supplied include files */
/* Precompute derivatives */
- CCTK_REAL const PDdissipationNth1A = PDdissipationNth1(&A[index]);
- CCTK_REAL const PDdissipationNth2A = PDdissipationNth2(&A[index]);
- CCTK_REAL const PDdissipationNth3A = PDdissipationNth3(&A[index]);
- CCTK_REAL const PDdissipationNth1alpha = PDdissipationNth1(&alpha[index]);
- CCTK_REAL const PDdissipationNth2alpha = PDdissipationNth2(&alpha[index]);
- CCTK_REAL const PDdissipationNth3alpha = PDdissipationNth3(&alpha[index]);
- CCTK_REAL const PDdissipationNth1At11 = PDdissipationNth1(&At11[index]);
- CCTK_REAL const PDdissipationNth2At11 = PDdissipationNth2(&At11[index]);
- CCTK_REAL const PDdissipationNth3At11 = PDdissipationNth3(&At11[index]);
- CCTK_REAL const PDdissipationNth1At12 = PDdissipationNth1(&At12[index]);
- CCTK_REAL const PDdissipationNth2At12 = PDdissipationNth2(&At12[index]);
- CCTK_REAL const PDdissipationNth3At12 = PDdissipationNth3(&At12[index]);
- CCTK_REAL const PDdissipationNth1At13 = PDdissipationNth1(&At13[index]);
- CCTK_REAL const PDdissipationNth2At13 = PDdissipationNth2(&At13[index]);
- CCTK_REAL const PDdissipationNth3At13 = PDdissipationNth3(&At13[index]);
- CCTK_REAL const PDdissipationNth1At22 = PDdissipationNth1(&At22[index]);
- CCTK_REAL const PDdissipationNth2At22 = PDdissipationNth2(&At22[index]);
- CCTK_REAL const PDdissipationNth3At22 = PDdissipationNth3(&At22[index]);
- CCTK_REAL const PDdissipationNth1At23 = PDdissipationNth1(&At23[index]);
- CCTK_REAL const PDdissipationNth2At23 = PDdissipationNth2(&At23[index]);
- CCTK_REAL const PDdissipationNth3At23 = PDdissipationNth3(&At23[index]);
- CCTK_REAL const PDdissipationNth1At33 = PDdissipationNth1(&At33[index]);
- CCTK_REAL const PDdissipationNth2At33 = PDdissipationNth2(&At33[index]);
- CCTK_REAL const PDdissipationNth3At33 = PDdissipationNth3(&At33[index]);
- CCTK_REAL const PDdissipationNth1B1 = PDdissipationNth1(&B1[index]);
- CCTK_REAL const PDdissipationNth2B1 = PDdissipationNth2(&B1[index]);
- CCTK_REAL const PDdissipationNth3B1 = PDdissipationNth3(&B1[index]);
- CCTK_REAL const PDdissipationNth1B2 = PDdissipationNth1(&B2[index]);
- CCTK_REAL const PDdissipationNth2B2 = PDdissipationNth2(&B2[index]);
- CCTK_REAL const PDdissipationNth3B2 = PDdissipationNth3(&B2[index]);
- CCTK_REAL const PDdissipationNth1B3 = PDdissipationNth1(&B3[index]);
- CCTK_REAL const PDdissipationNth2B3 = PDdissipationNth2(&B3[index]);
- CCTK_REAL const PDdissipationNth3B3 = PDdissipationNth3(&B3[index]);
- CCTK_REAL const PDdissipationNth1beta1 = PDdissipationNth1(&beta1[index]);
- CCTK_REAL const PDdissipationNth2beta1 = PDdissipationNth2(&beta1[index]);
- CCTK_REAL const PDdissipationNth3beta1 = PDdissipationNth3(&beta1[index]);
- CCTK_REAL const PDdissipationNth1beta2 = PDdissipationNth1(&beta2[index]);
- CCTK_REAL const PDdissipationNth2beta2 = PDdissipationNth2(&beta2[index]);
- CCTK_REAL const PDdissipationNth3beta2 = PDdissipationNth3(&beta2[index]);
- CCTK_REAL const PDdissipationNth1beta3 = PDdissipationNth1(&beta3[index]);
- CCTK_REAL const PDdissipationNth2beta3 = PDdissipationNth2(&beta3[index]);
- CCTK_REAL const PDdissipationNth3beta3 = PDdissipationNth3(&beta3[index]);
- CCTK_REAL const PDdissipationNth1gt11 = PDdissipationNth1(&gt11[index]);
- CCTK_REAL const PDdissipationNth2gt11 = PDdissipationNth2(&gt11[index]);
- CCTK_REAL const PDdissipationNth3gt11 = PDdissipationNth3(&gt11[index]);
- CCTK_REAL const PDdissipationNth1gt12 = PDdissipationNth1(&gt12[index]);
- CCTK_REAL const PDdissipationNth2gt12 = PDdissipationNth2(&gt12[index]);
- CCTK_REAL const PDdissipationNth3gt12 = PDdissipationNth3(&gt12[index]);
- CCTK_REAL const PDdissipationNth1gt13 = PDdissipationNth1(&gt13[index]);
- CCTK_REAL const PDdissipationNth2gt13 = PDdissipationNth2(&gt13[index]);
- CCTK_REAL const PDdissipationNth3gt13 = PDdissipationNth3(&gt13[index]);
- CCTK_REAL const PDdissipationNth1gt22 = PDdissipationNth1(&gt22[index]);
- CCTK_REAL const PDdissipationNth2gt22 = PDdissipationNth2(&gt22[index]);
- CCTK_REAL const PDdissipationNth3gt22 = PDdissipationNth3(&gt22[index]);
- CCTK_REAL const PDdissipationNth1gt23 = PDdissipationNth1(&gt23[index]);
- CCTK_REAL const PDdissipationNth2gt23 = PDdissipationNth2(&gt23[index]);
- CCTK_REAL const PDdissipationNth3gt23 = PDdissipationNth3(&gt23[index]);
- CCTK_REAL const PDdissipationNth1gt33 = PDdissipationNth1(&gt33[index]);
- CCTK_REAL const PDdissipationNth2gt33 = PDdissipationNth2(&gt33[index]);
- CCTK_REAL const PDdissipationNth3gt33 = PDdissipationNth3(&gt33[index]);
- CCTK_REAL const PDdissipationNth1phi = PDdissipationNth1(&phi[index]);
- CCTK_REAL const PDdissipationNth2phi = PDdissipationNth2(&phi[index]);
- CCTK_REAL const PDdissipationNth3phi = PDdissipationNth3(&phi[index]);
- CCTK_REAL const PDdissipationNth1trK = PDdissipationNth1(&trK[index]);
- CCTK_REAL const PDdissipationNth2trK = PDdissipationNth2(&trK[index]);
- CCTK_REAL const PDdissipationNth3trK = PDdissipationNth3(&trK[index]);
- CCTK_REAL const PDdissipationNth1Xt1 = PDdissipationNth1(&Xt1[index]);
- CCTK_REAL const PDdissipationNth2Xt1 = PDdissipationNth2(&Xt1[index]);
- CCTK_REAL const PDdissipationNth3Xt1 = PDdissipationNth3(&Xt1[index]);
- CCTK_REAL const PDdissipationNth1Xt2 = PDdissipationNth1(&Xt2[index]);
- CCTK_REAL const PDdissipationNth2Xt2 = PDdissipationNth2(&Xt2[index]);
- CCTK_REAL const PDdissipationNth3Xt2 = PDdissipationNth3(&Xt2[index]);
- CCTK_REAL const PDdissipationNth1Xt3 = PDdissipationNth1(&Xt3[index]);
- CCTK_REAL const PDdissipationNth2Xt3 = PDdissipationNth2(&Xt3[index]);
- CCTK_REAL const PDdissipationNth3Xt3 = PDdissipationNth3(&Xt3[index]);
+ 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 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]);
+ 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]);
+ 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]);
+ 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]);
+ 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 JacPDdissipationNth1A;
- CCTK_REAL JacPDdissipationNth1alpha;
- CCTK_REAL JacPDdissipationNth1At11;
- CCTK_REAL JacPDdissipationNth1At12;
- CCTK_REAL JacPDdissipationNth1At13;
- CCTK_REAL JacPDdissipationNth1At22;
- CCTK_REAL JacPDdissipationNth1At23;
- CCTK_REAL JacPDdissipationNth1At33;
- CCTK_REAL JacPDdissipationNth1B1;
- CCTK_REAL JacPDdissipationNth1B2;
- CCTK_REAL JacPDdissipationNth1B3;
- CCTK_REAL JacPDdissipationNth1beta1;
- CCTK_REAL JacPDdissipationNth1beta2;
- CCTK_REAL JacPDdissipationNth1beta3;
- CCTK_REAL JacPDdissipationNth1gt11;
- CCTK_REAL JacPDdissipationNth1gt12;
- CCTK_REAL JacPDdissipationNth1gt13;
- CCTK_REAL JacPDdissipationNth1gt22;
- CCTK_REAL JacPDdissipationNth1gt23;
- CCTK_REAL JacPDdissipationNth1gt33;
- CCTK_REAL JacPDdissipationNth1phi;
- CCTK_REAL JacPDdissipationNth1trK;
- CCTK_REAL JacPDdissipationNth1Xt1;
- CCTK_REAL JacPDdissipationNth1Xt2;
- CCTK_REAL JacPDdissipationNth1Xt3;
- CCTK_REAL JacPDdissipationNth2A;
- CCTK_REAL JacPDdissipationNth2alpha;
- CCTK_REAL JacPDdissipationNth2At11;
- CCTK_REAL JacPDdissipationNth2At12;
- CCTK_REAL JacPDdissipationNth2At13;
- CCTK_REAL JacPDdissipationNth2At22;
- CCTK_REAL JacPDdissipationNth2At23;
- CCTK_REAL JacPDdissipationNth2At33;
- CCTK_REAL JacPDdissipationNth2B1;
- CCTK_REAL JacPDdissipationNth2B2;
- CCTK_REAL JacPDdissipationNth2B3;
- CCTK_REAL JacPDdissipationNth2beta1;
- CCTK_REAL JacPDdissipationNth2beta2;
- CCTK_REAL JacPDdissipationNth2beta3;
- CCTK_REAL JacPDdissipationNth2gt11;
- CCTK_REAL JacPDdissipationNth2gt12;
- CCTK_REAL JacPDdissipationNth2gt13;
- CCTK_REAL JacPDdissipationNth2gt22;
- CCTK_REAL JacPDdissipationNth2gt23;
- CCTK_REAL JacPDdissipationNth2gt33;
- CCTK_REAL JacPDdissipationNth2phi;
- CCTK_REAL JacPDdissipationNth2trK;
- CCTK_REAL JacPDdissipationNth2Xt1;
- CCTK_REAL JacPDdissipationNth2Xt2;
- CCTK_REAL JacPDdissipationNth2Xt3;
- CCTK_REAL JacPDdissipationNth3A;
- CCTK_REAL JacPDdissipationNth3alpha;
- CCTK_REAL JacPDdissipationNth3At11;
- CCTK_REAL JacPDdissipationNth3At12;
- CCTK_REAL JacPDdissipationNth3At13;
- CCTK_REAL JacPDdissipationNth3At22;
- CCTK_REAL JacPDdissipationNth3At23;
- CCTK_REAL JacPDdissipationNth3At33;
- CCTK_REAL JacPDdissipationNth3B1;
- CCTK_REAL JacPDdissipationNth3B2;
- CCTK_REAL JacPDdissipationNth3B3;
- CCTK_REAL JacPDdissipationNth3beta1;
- CCTK_REAL JacPDdissipationNth3beta2;
- CCTK_REAL JacPDdissipationNth3beta3;
- CCTK_REAL JacPDdissipationNth3gt11;
- CCTK_REAL JacPDdissipationNth3gt12;
- CCTK_REAL JacPDdissipationNth3gt13;
- CCTK_REAL JacPDdissipationNth3gt22;
- CCTK_REAL JacPDdissipationNth3gt23;
- CCTK_REAL JacPDdissipationNth3gt33;
- CCTK_REAL JacPDdissipationNth3phi;
- CCTK_REAL JacPDdissipationNth3trK;
- CCTK_REAL JacPDdissipationNth3Xt1;
- CCTK_REAL JacPDdissipationNth3Xt2;
- CCTK_REAL JacPDdissipationNth3Xt3;
+ 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 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 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 JacPDdissipationNth3trK;
+ CCTK_REAL_VEC JacPDdissipationNth3Xt1;
+ CCTK_REAL_VEC JacPDdissipationNth3Xt2;
+ CCTK_REAL_VEC JacPDdissipationNth3Xt3;
if (use_jacobian)
{
- JacPDdissipationNth1A = J11L*PDdissipationNth1A +
- J21L*PDdissipationNth2A + J31L*PDdissipationNth3A;
+ JacPDdissipationNth1A =
+ kmadd(J11L,PDdissipationNth1A,kmadd(J21L,PDdissipationNth2A,kmul(J31L,PDdissipationNth3A)));
- JacPDdissipationNth1alpha = J11L*PDdissipationNth1alpha +
- J21L*PDdissipationNth2alpha + J31L*PDdissipationNth3alpha;
+ JacPDdissipationNth1alpha =
+ kmadd(J11L,PDdissipationNth1alpha,kmadd(J21L,PDdissipationNth2alpha,kmul(J31L,PDdissipationNth3alpha)));
- JacPDdissipationNth1At11 = J11L*PDdissipationNth1At11 +
- J21L*PDdissipationNth2At11 + J31L*PDdissipationNth3At11;
+ JacPDdissipationNth1At11 =
+ kmadd(J11L,PDdissipationNth1At11,kmadd(J21L,PDdissipationNth2At11,kmul(J31L,PDdissipationNth3At11)));
- JacPDdissipationNth1At12 = J11L*PDdissipationNth1At12 +
- J21L*PDdissipationNth2At12 + J31L*PDdissipationNth3At12;
+ JacPDdissipationNth1At12 =
+ kmadd(J11L,PDdissipationNth1At12,kmadd(J21L,PDdissipationNth2At12,kmul(J31L,PDdissipationNth3At12)));
- JacPDdissipationNth1At13 = J11L*PDdissipationNth1At13 +
- J21L*PDdissipationNth2At13 + J31L*PDdissipationNth3At13;
+ JacPDdissipationNth1At13 =
+ kmadd(J11L,PDdissipationNth1At13,kmadd(J21L,PDdissipationNth2At13,kmul(J31L,PDdissipationNth3At13)));
- JacPDdissipationNth1At22 = J11L*PDdissipationNth1At22 +
- J21L*PDdissipationNth2At22 + J31L*PDdissipationNth3At22;
+ JacPDdissipationNth1At22 =
+ kmadd(J11L,PDdissipationNth1At22,kmadd(J21L,PDdissipationNth2At22,kmul(J31L,PDdissipationNth3At22)));
- JacPDdissipationNth1At23 = J11L*PDdissipationNth1At23 +
- J21L*PDdissipationNth2At23 + J31L*PDdissipationNth3At23;
+ JacPDdissipationNth1At23 =
+ kmadd(J11L,PDdissipationNth1At23,kmadd(J21L,PDdissipationNth2At23,kmul(J31L,PDdissipationNth3At23)));
- JacPDdissipationNth1At33 = J11L*PDdissipationNth1At33 +
- J21L*PDdissipationNth2At33 + J31L*PDdissipationNth3At33;
+ JacPDdissipationNth1At33 =
+ kmadd(J11L,PDdissipationNth1At33,kmadd(J21L,PDdissipationNth2At33,kmul(J31L,PDdissipationNth3At33)));
- JacPDdissipationNth1B1 = J11L*PDdissipationNth1B1 +
- J21L*PDdissipationNth2B1 + J31L*PDdissipationNth3B1;
+ JacPDdissipationNth1B1 =
+ kmadd(J11L,PDdissipationNth1B1,kmadd(J21L,PDdissipationNth2B1,kmul(J31L,PDdissipationNth3B1)));
- JacPDdissipationNth1B2 = J11L*PDdissipationNth1B2 +
- J21L*PDdissipationNth2B2 + J31L*PDdissipationNth3B2;
+ JacPDdissipationNth1B2 =
+ kmadd(J11L,PDdissipationNth1B2,kmadd(J21L,PDdissipationNth2B2,kmul(J31L,PDdissipationNth3B2)));
- JacPDdissipationNth1B3 = J11L*PDdissipationNth1B3 +
- J21L*PDdissipationNth2B3 + J31L*PDdissipationNth3B3;
+ JacPDdissipationNth1B3 =
+ kmadd(J11L,PDdissipationNth1B3,kmadd(J21L,PDdissipationNth2B3,kmul(J31L,PDdissipationNth3B3)));
- JacPDdissipationNth1beta1 = J11L*PDdissipationNth1beta1 +
- J21L*PDdissipationNth2beta1 + J31L*PDdissipationNth3beta1;
+ JacPDdissipationNth1beta1 =
+ kmadd(J11L,PDdissipationNth1beta1,kmadd(J21L,PDdissipationNth2beta1,kmul(J31L,PDdissipationNth3beta1)));
- JacPDdissipationNth1beta2 = J11L*PDdissipationNth1beta2 +
- J21L*PDdissipationNth2beta2 + J31L*PDdissipationNth3beta2;
+ JacPDdissipationNth1beta2 =
+ kmadd(J11L,PDdissipationNth1beta2,kmadd(J21L,PDdissipationNth2beta2,kmul(J31L,PDdissipationNth3beta2)));
- JacPDdissipationNth1beta3 = J11L*PDdissipationNth1beta3 +
- J21L*PDdissipationNth2beta3 + J31L*PDdissipationNth3beta3;
+ JacPDdissipationNth1beta3 =
+ kmadd(J11L,PDdissipationNth1beta3,kmadd(J21L,PDdissipationNth2beta3,kmul(J31L,PDdissipationNth3beta3)));
- JacPDdissipationNth1gt11 = J11L*PDdissipationNth1gt11 +
- J21L*PDdissipationNth2gt11 + J31L*PDdissipationNth3gt11;
+ JacPDdissipationNth1gt11 =
+ kmadd(J11L,PDdissipationNth1gt11,kmadd(J21L,PDdissipationNth2gt11,kmul(J31L,PDdissipationNth3gt11)));
- JacPDdissipationNth1gt12 = J11L*PDdissipationNth1gt12 +
- J21L*PDdissipationNth2gt12 + J31L*PDdissipationNth3gt12;
+ JacPDdissipationNth1gt12 =
+ kmadd(J11L,PDdissipationNth1gt12,kmadd(J21L,PDdissipationNth2gt12,kmul(J31L,PDdissipationNth3gt12)));
- JacPDdissipationNth1gt13 = J11L*PDdissipationNth1gt13 +
- J21L*PDdissipationNth2gt13 + J31L*PDdissipationNth3gt13;
+ JacPDdissipationNth1gt13 =
+ kmadd(J11L,PDdissipationNth1gt13,kmadd(J21L,PDdissipationNth2gt13,kmul(J31L,PDdissipationNth3gt13)));
- JacPDdissipationNth1gt22 = J11L*PDdissipationNth1gt22 +
- J21L*PDdissipationNth2gt22 + J31L*PDdissipationNth3gt22;
+ JacPDdissipationNth1gt22 =
+ kmadd(J11L,PDdissipationNth1gt22,kmadd(J21L,PDdissipationNth2gt22,kmul(J31L,PDdissipationNth3gt22)));
- JacPDdissipationNth1gt23 = J11L*PDdissipationNth1gt23 +
- J21L*PDdissipationNth2gt23 + J31L*PDdissipationNth3gt23;
+ JacPDdissipationNth1gt23 =
+ kmadd(J11L,PDdissipationNth1gt23,kmadd(J21L,PDdissipationNth2gt23,kmul(J31L,PDdissipationNth3gt23)));
- JacPDdissipationNth1gt33 = J11L*PDdissipationNth1gt33 +
- J21L*PDdissipationNth2gt33 + J31L*PDdissipationNth3gt33;
+ JacPDdissipationNth1gt33 =
+ kmadd(J11L,PDdissipationNth1gt33,kmadd(J21L,PDdissipationNth2gt33,kmul(J31L,PDdissipationNth3gt33)));
- JacPDdissipationNth1phi = J11L*PDdissipationNth1phi +
- J21L*PDdissipationNth2phi + J31L*PDdissipationNth3phi;
+ JacPDdissipationNth1phi =
+ kmadd(J11L,PDdissipationNth1phi,kmadd(J21L,PDdissipationNth2phi,kmul(J31L,PDdissipationNth3phi)));
- JacPDdissipationNth1trK = J11L*PDdissipationNth1trK +
- J21L*PDdissipationNth2trK + J31L*PDdissipationNth3trK;
+ JacPDdissipationNth1trK =
+ kmadd(J11L,PDdissipationNth1trK,kmadd(J21L,PDdissipationNth2trK,kmul(J31L,PDdissipationNth3trK)));
- JacPDdissipationNth1Xt1 = J11L*PDdissipationNth1Xt1 +
- J21L*PDdissipationNth2Xt1 + J31L*PDdissipationNth3Xt1;
+ JacPDdissipationNth1Xt1 =
+ kmadd(J11L,PDdissipationNth1Xt1,kmadd(J21L,PDdissipationNth2Xt1,kmul(J31L,PDdissipationNth3Xt1)));
- JacPDdissipationNth1Xt2 = J11L*PDdissipationNth1Xt2 +
- J21L*PDdissipationNth2Xt2 + J31L*PDdissipationNth3Xt2;
+ JacPDdissipationNth1Xt2 =
+ kmadd(J11L,PDdissipationNth1Xt2,kmadd(J21L,PDdissipationNth2Xt2,kmul(J31L,PDdissipationNth3Xt2)));
- JacPDdissipationNth1Xt3 = J11L*PDdissipationNth1Xt3 +
- J21L*PDdissipationNth2Xt3 + J31L*PDdissipationNth3Xt3;
+ JacPDdissipationNth1Xt3 =
+ kmadd(J11L,PDdissipationNth1Xt3,kmadd(J21L,PDdissipationNth2Xt3,kmul(J31L,PDdissipationNth3Xt3)));
- JacPDdissipationNth2A = J12L*PDdissipationNth1A +
- J22L*PDdissipationNth2A + J32L*PDdissipationNth3A;
+ JacPDdissipationNth2A =
+ kmadd(J12L,PDdissipationNth1A,kmadd(J22L,PDdissipationNth2A,kmul(J32L,PDdissipationNth3A)));
- JacPDdissipationNth2alpha = J12L*PDdissipationNth1alpha +
- J22L*PDdissipationNth2alpha + J32L*PDdissipationNth3alpha;
+ JacPDdissipationNth2alpha =
+ kmadd(J12L,PDdissipationNth1alpha,kmadd(J22L,PDdissipationNth2alpha,kmul(J32L,PDdissipationNth3alpha)));
- JacPDdissipationNth2At11 = J12L*PDdissipationNth1At11 +
- J22L*PDdissipationNth2At11 + J32L*PDdissipationNth3At11;
+ JacPDdissipationNth2At11 =
+ kmadd(J12L,PDdissipationNth1At11,kmadd(J22L,PDdissipationNth2At11,kmul(J32L,PDdissipationNth3At11)));
- JacPDdissipationNth2At12 = J12L*PDdissipationNth1At12 +
- J22L*PDdissipationNth2At12 + J32L*PDdissipationNth3At12;
+ JacPDdissipationNth2At12 =
+ kmadd(J12L,PDdissipationNth1At12,kmadd(J22L,PDdissipationNth2At12,kmul(J32L,PDdissipationNth3At12)));
- JacPDdissipationNth2At13 = J12L*PDdissipationNth1At13 +
- J22L*PDdissipationNth2At13 + J32L*PDdissipationNth3At13;
+ JacPDdissipationNth2At13 =
+ kmadd(J12L,PDdissipationNth1At13,kmadd(J22L,PDdissipationNth2At13,kmul(J32L,PDdissipationNth3At13)));
- JacPDdissipationNth2At22 = J12L*PDdissipationNth1At22 +
- J22L*PDdissipationNth2At22 + J32L*PDdissipationNth3At22;
+ JacPDdissipationNth2At22 =
+ kmadd(J12L,PDdissipationNth1At22,kmadd(J22L,PDdissipationNth2At22,kmul(J32L,PDdissipationNth3At22)));
- JacPDdissipationNth2At23 = J12L*PDdissipationNth1At23 +
- J22L*PDdissipationNth2At23 + J32L*PDdissipationNth3At23;
+ JacPDdissipationNth2At23 =
+ kmadd(J12L,PDdissipationNth1At23,kmadd(J22L,PDdissipationNth2At23,kmul(J32L,PDdissipationNth3At23)));
- JacPDdissipationNth2At33 = J12L*PDdissipationNth1At33 +
- J22L*PDdissipationNth2At33 + J32L*PDdissipationNth3At33;
+ JacPDdissipationNth2At33 =
+ kmadd(J12L,PDdissipationNth1At33,kmadd(J22L,PDdissipationNth2At33,kmul(J32L,PDdissipationNth3At33)));
- JacPDdissipationNth2B1 = J12L*PDdissipationNth1B1 +
- J22L*PDdissipationNth2B1 + J32L*PDdissipationNth3B1;
+ JacPDdissipationNth2B1 =
+ kmadd(J12L,PDdissipationNth1B1,kmadd(J22L,PDdissipationNth2B1,kmul(J32L,PDdissipationNth3B1)));
- JacPDdissipationNth2B2 = J12L*PDdissipationNth1B2 +
- J22L*PDdissipationNth2B2 + J32L*PDdissipationNth3B2;
+ JacPDdissipationNth2B2 =
+ kmadd(J12L,PDdissipationNth1B2,kmadd(J22L,PDdissipationNth2B2,kmul(J32L,PDdissipationNth3B2)));
- JacPDdissipationNth2B3 = J12L*PDdissipationNth1B3 +
- J22L*PDdissipationNth2B3 + J32L*PDdissipationNth3B3;
+ JacPDdissipationNth2B3 =
+ kmadd(J12L,PDdissipationNth1B3,kmadd(J22L,PDdissipationNth2B3,kmul(J32L,PDdissipationNth3B3)));
- JacPDdissipationNth2beta1 = J12L*PDdissipationNth1beta1 +
- J22L*PDdissipationNth2beta1 + J32L*PDdissipationNth3beta1;
+ JacPDdissipationNth2beta1 =
+ kmadd(J12L,PDdissipationNth1beta1,kmadd(J22L,PDdissipationNth2beta1,kmul(J32L,PDdissipationNth3beta1)));
- JacPDdissipationNth2beta2 = J12L*PDdissipationNth1beta2 +
- J22L*PDdissipationNth2beta2 + J32L*PDdissipationNth3beta2;
+ JacPDdissipationNth2beta2 =
+ kmadd(J12L,PDdissipationNth1beta2,kmadd(J22L,PDdissipationNth2beta2,kmul(J32L,PDdissipationNth3beta2)));
- JacPDdissipationNth2beta3 = J12L*PDdissipationNth1beta3 +
- J22L*PDdissipationNth2beta3 + J32L*PDdissipationNth3beta3;
+ JacPDdissipationNth2beta3 =
+ kmadd(J12L,PDdissipationNth1beta3,kmadd(J22L,PDdissipationNth2beta3,kmul(J32L,PDdissipationNth3beta3)));
- JacPDdissipationNth2gt11 = J12L*PDdissipationNth1gt11 +
- J22L*PDdissipationNth2gt11 + J32L*PDdissipationNth3gt11;
+ JacPDdissipationNth2gt11 =
+ kmadd(J12L,PDdissipationNth1gt11,kmadd(J22L,PDdissipationNth2gt11,kmul(J32L,PDdissipationNth3gt11)));
- JacPDdissipationNth2gt12 = J12L*PDdissipationNth1gt12 +
- J22L*PDdissipationNth2gt12 + J32L*PDdissipationNth3gt12;
+ JacPDdissipationNth2gt12 =
+ kmadd(J12L,PDdissipationNth1gt12,kmadd(J22L,PDdissipationNth2gt12,kmul(J32L,PDdissipationNth3gt12)));
- JacPDdissipationNth2gt13 = J12L*PDdissipationNth1gt13 +
- J22L*PDdissipationNth2gt13 + J32L*PDdissipationNth3gt13;
+ JacPDdissipationNth2gt13 =
+ kmadd(J12L,PDdissipationNth1gt13,kmadd(J22L,PDdissipationNth2gt13,kmul(J32L,PDdissipationNth3gt13)));
- JacPDdissipationNth2gt22 = J12L*PDdissipationNth1gt22 +
- J22L*PDdissipationNth2gt22 + J32L*PDdissipationNth3gt22;
+ JacPDdissipationNth2gt22 =
+ kmadd(J12L,PDdissipationNth1gt22,kmadd(J22L,PDdissipationNth2gt22,kmul(J32L,PDdissipationNth3gt22)));
- JacPDdissipationNth2gt23 = J12L*PDdissipationNth1gt23 +
- J22L*PDdissipationNth2gt23 + J32L*PDdissipationNth3gt23;
+ JacPDdissipationNth2gt23 =
+ kmadd(J12L,PDdissipationNth1gt23,kmadd(J22L,PDdissipationNth2gt23,kmul(J32L,PDdissipationNth3gt23)));
- JacPDdissipationNth2gt33 = J12L*PDdissipationNth1gt33 +
- J22L*PDdissipationNth2gt33 + J32L*PDdissipationNth3gt33;
+ JacPDdissipationNth2gt33 =
+ kmadd(J12L,PDdissipationNth1gt33,kmadd(J22L,PDdissipationNth2gt33,kmul(J32L,PDdissipationNth3gt33)));
- JacPDdissipationNth2phi = J12L*PDdissipationNth1phi +
- J22L*PDdissipationNth2phi + J32L*PDdissipationNth3phi;
+ JacPDdissipationNth2phi =
+ kmadd(J12L,PDdissipationNth1phi,kmadd(J22L,PDdissipationNth2phi,kmul(J32L,PDdissipationNth3phi)));
- JacPDdissipationNth2trK = J12L*PDdissipationNth1trK +
- J22L*PDdissipationNth2trK + J32L*PDdissipationNth3trK;
+ JacPDdissipationNth2trK =
+ kmadd(J12L,PDdissipationNth1trK,kmadd(J22L,PDdissipationNth2trK,kmul(J32L,PDdissipationNth3trK)));
- JacPDdissipationNth2Xt1 = J12L*PDdissipationNth1Xt1 +
- J22L*PDdissipationNth2Xt1 + J32L*PDdissipationNth3Xt1;
+ JacPDdissipationNth2Xt1 =
+ kmadd(J12L,PDdissipationNth1Xt1,kmadd(J22L,PDdissipationNth2Xt1,kmul(J32L,PDdissipationNth3Xt1)));
- JacPDdissipationNth2Xt2 = J12L*PDdissipationNth1Xt2 +
- J22L*PDdissipationNth2Xt2 + J32L*PDdissipationNth3Xt2;
+ JacPDdissipationNth2Xt2 =
+ kmadd(J12L,PDdissipationNth1Xt2,kmadd(J22L,PDdissipationNth2Xt2,kmul(J32L,PDdissipationNth3Xt2)));
- JacPDdissipationNth2Xt3 = J12L*PDdissipationNth1Xt3 +
- J22L*PDdissipationNth2Xt3 + J32L*PDdissipationNth3Xt3;
+ JacPDdissipationNth2Xt3 =
+ kmadd(J12L,PDdissipationNth1Xt3,kmadd(J22L,PDdissipationNth2Xt3,kmul(J32L,PDdissipationNth3Xt3)));
- JacPDdissipationNth3A = J13L*PDdissipationNth1A +
- J23L*PDdissipationNth2A + J33L*PDdissipationNth3A;
+ JacPDdissipationNth3A =
+ kmadd(J13L,PDdissipationNth1A,kmadd(J23L,PDdissipationNth2A,kmul(J33L,PDdissipationNth3A)));
- JacPDdissipationNth3alpha = J13L*PDdissipationNth1alpha +
- J23L*PDdissipationNth2alpha + J33L*PDdissipationNth3alpha;
+ JacPDdissipationNth3alpha =
+ kmadd(J13L,PDdissipationNth1alpha,kmadd(J23L,PDdissipationNth2alpha,kmul(J33L,PDdissipationNth3alpha)));
- JacPDdissipationNth3At11 = J13L*PDdissipationNth1At11 +
- J23L*PDdissipationNth2At11 + J33L*PDdissipationNth3At11;
+ JacPDdissipationNth3At11 =
+ kmadd(J13L,PDdissipationNth1At11,kmadd(J23L,PDdissipationNth2At11,kmul(J33L,PDdissipationNth3At11)));
- JacPDdissipationNth3At12 = J13L*PDdissipationNth1At12 +
- J23L*PDdissipationNth2At12 + J33L*PDdissipationNth3At12;
+ JacPDdissipationNth3At12 =
+ kmadd(J13L,PDdissipationNth1At12,kmadd(J23L,PDdissipationNth2At12,kmul(J33L,PDdissipationNth3At12)));
- JacPDdissipationNth3At13 = J13L*PDdissipationNth1At13 +
- J23L*PDdissipationNth2At13 + J33L*PDdissipationNth3At13;
+ JacPDdissipationNth3At13 =
+ kmadd(J13L,PDdissipationNth1At13,kmadd(J23L,PDdissipationNth2At13,kmul(J33L,PDdissipationNth3At13)));
- JacPDdissipationNth3At22 = J13L*PDdissipationNth1At22 +
- J23L*PDdissipationNth2At22 + J33L*PDdissipationNth3At22;
+ JacPDdissipationNth3At22 =
+ kmadd(J13L,PDdissipationNth1At22,kmadd(J23L,PDdissipationNth2At22,kmul(J33L,PDdissipationNth3At22)));
- JacPDdissipationNth3At23 = J13L*PDdissipationNth1At23 +
- J23L*PDdissipationNth2At23 + J33L*PDdissipationNth3At23;
+ JacPDdissipationNth3At23 =
+ kmadd(J13L,PDdissipationNth1At23,kmadd(J23L,PDdissipationNth2At23,kmul(J33L,PDdissipationNth3At23)));
- JacPDdissipationNth3At33 = J13L*PDdissipationNth1At33 +
- J23L*PDdissipationNth2At33 + J33L*PDdissipationNth3At33;
+ JacPDdissipationNth3At33 =
+ kmadd(J13L,PDdissipationNth1At33,kmadd(J23L,PDdissipationNth2At33,kmul(J33L,PDdissipationNth3At33)));
- JacPDdissipationNth3B1 = J13L*PDdissipationNth1B1 +
- J23L*PDdissipationNth2B1 + J33L*PDdissipationNth3B1;
+ JacPDdissipationNth3B1 =
+ kmadd(J13L,PDdissipationNth1B1,kmadd(J23L,PDdissipationNth2B1,kmul(J33L,PDdissipationNth3B1)));
- JacPDdissipationNth3B2 = J13L*PDdissipationNth1B2 +
- J23L*PDdissipationNth2B2 + J33L*PDdissipationNth3B2;
+ JacPDdissipationNth3B2 =
+ kmadd(J13L,PDdissipationNth1B2,kmadd(J23L,PDdissipationNth2B2,kmul(J33L,PDdissipationNth3B2)));
- JacPDdissipationNth3B3 = J13L*PDdissipationNth1B3 +
- J23L*PDdissipationNth2B3 + J33L*PDdissipationNth3B3;
+ JacPDdissipationNth3B3 =
+ kmadd(J13L,PDdissipationNth1B3,kmadd(J23L,PDdissipationNth2B3,kmul(J33L,PDdissipationNth3B3)));
- JacPDdissipationNth3beta1 = J13L*PDdissipationNth1beta1 +
- J23L*PDdissipationNth2beta1 + J33L*PDdissipationNth3beta1;
+ JacPDdissipationNth3beta1 =
+ kmadd(J13L,PDdissipationNth1beta1,kmadd(J23L,PDdissipationNth2beta1,kmul(J33L,PDdissipationNth3beta1)));
- JacPDdissipationNth3beta2 = J13L*PDdissipationNth1beta2 +
- J23L*PDdissipationNth2beta2 + J33L*PDdissipationNth3beta2;
+ JacPDdissipationNth3beta2 =
+ kmadd(J13L,PDdissipationNth1beta2,kmadd(J23L,PDdissipationNth2beta2,kmul(J33L,PDdissipationNth3beta2)));
- JacPDdissipationNth3beta3 = J13L*PDdissipationNth1beta3 +
- J23L*PDdissipationNth2beta3 + J33L*PDdissipationNth3beta3;
+ JacPDdissipationNth3beta3 =
+ kmadd(J13L,PDdissipationNth1beta3,kmadd(J23L,PDdissipationNth2beta3,kmul(J33L,PDdissipationNth3beta3)));
- JacPDdissipationNth3gt11 = J13L*PDdissipationNth1gt11 +
- J23L*PDdissipationNth2gt11 + J33L*PDdissipationNth3gt11;
+ JacPDdissipationNth3gt11 =
+ kmadd(J13L,PDdissipationNth1gt11,kmadd(J23L,PDdissipationNth2gt11,kmul(J33L,PDdissipationNth3gt11)));
- JacPDdissipationNth3gt12 = J13L*PDdissipationNth1gt12 +
- J23L*PDdissipationNth2gt12 + J33L*PDdissipationNth3gt12;
+ JacPDdissipationNth3gt12 =
+ kmadd(J13L,PDdissipationNth1gt12,kmadd(J23L,PDdissipationNth2gt12,kmul(J33L,PDdissipationNth3gt12)));
- JacPDdissipationNth3gt13 = J13L*PDdissipationNth1gt13 +
- J23L*PDdissipationNth2gt13 + J33L*PDdissipationNth3gt13;
+ JacPDdissipationNth3gt13 =
+ kmadd(J13L,PDdissipationNth1gt13,kmadd(J23L,PDdissipationNth2gt13,kmul(J33L,PDdissipationNth3gt13)));
- JacPDdissipationNth3gt22 = J13L*PDdissipationNth1gt22 +
- J23L*PDdissipationNth2gt22 + J33L*PDdissipationNth3gt22;
+ JacPDdissipationNth3gt22 =
+ kmadd(J13L,PDdissipationNth1gt22,kmadd(J23L,PDdissipationNth2gt22,kmul(J33L,PDdissipationNth3gt22)));
- JacPDdissipationNth3gt23 = J13L*PDdissipationNth1gt23 +
- J23L*PDdissipationNth2gt23 + J33L*PDdissipationNth3gt23;
+ JacPDdissipationNth3gt23 =
+ kmadd(J13L,PDdissipationNth1gt23,kmadd(J23L,PDdissipationNth2gt23,kmul(J33L,PDdissipationNth3gt23)));
- JacPDdissipationNth3gt33 = J13L*PDdissipationNth1gt33 +
- J23L*PDdissipationNth2gt33 + J33L*PDdissipationNth3gt33;
+ JacPDdissipationNth3gt33 =
+ kmadd(J13L,PDdissipationNth1gt33,kmadd(J23L,PDdissipationNth2gt33,kmul(J33L,PDdissipationNth3gt33)));
- JacPDdissipationNth3phi = J13L*PDdissipationNth1phi +
- J23L*PDdissipationNth2phi + J33L*PDdissipationNth3phi;
+ JacPDdissipationNth3phi =
+ kmadd(J13L,PDdissipationNth1phi,kmadd(J23L,PDdissipationNth2phi,kmul(J33L,PDdissipationNth3phi)));
- JacPDdissipationNth3trK = J13L*PDdissipationNth1trK +
- J23L*PDdissipationNth2trK + J33L*PDdissipationNth3trK;
+ JacPDdissipationNth3trK =
+ kmadd(J13L,PDdissipationNth1trK,kmadd(J23L,PDdissipationNth2trK,kmul(J33L,PDdissipationNth3trK)));
- JacPDdissipationNth3Xt1 = J13L*PDdissipationNth1Xt1 +
- J23L*PDdissipationNth2Xt1 + J33L*PDdissipationNth3Xt1;
+ JacPDdissipationNth3Xt1 =
+ kmadd(J13L,PDdissipationNth1Xt1,kmadd(J23L,PDdissipationNth2Xt1,kmul(J33L,PDdissipationNth3Xt1)));
- JacPDdissipationNth3Xt2 = J13L*PDdissipationNth1Xt2 +
- J23L*PDdissipationNth2Xt2 + J33L*PDdissipationNth3Xt2;
+ JacPDdissipationNth3Xt2 =
+ kmadd(J13L,PDdissipationNth1Xt2,kmadd(J23L,PDdissipationNth2Xt2,kmul(J33L,PDdissipationNth3Xt2)));
- JacPDdissipationNth3Xt3 = J13L*PDdissipationNth1Xt3 +
- J23L*PDdissipationNth2Xt3 + J33L*PDdissipationNth3Xt3;
+ JacPDdissipationNth3Xt3 =
+ kmadd(J13L,PDdissipationNth1Xt3,kmadd(J23L,PDdissipationNth2Xt3,kmul(J33L,PDdissipationNth3Xt3)));
}
else
{
@@ -789,124 +1154,213 @@ static void ML_BSSN_MP_O8_Dissipation_Body(cGH const * restrict const cctkGH, in
JacPDdissipationNth3Xt3 = PDdissipationNth3Xt3;
}
- CCTK_REAL epsdiss1 = ToReal(EpsDiss);
+ CCTK_REAL_VEC epsdiss1 = ToReal(EpsDiss);
+
+ CCTK_REAL_VEC epsdiss2 = ToReal(EpsDiss);
- CCTK_REAL epsdiss2 = ToReal(EpsDiss);
+ CCTK_REAL_VEC epsdiss3 = ToReal(EpsDiss);
- CCTK_REAL epsdiss3 = ToReal(EpsDiss);
+ phirhsL =
+ kmadd(epsdiss1,JacPDdissipationNth1phi,kmadd(epsdiss2,JacPDdissipationNth2phi,kmadd(epsdiss3,JacPDdissipationNth3phi,phirhsL)));
- phirhsL = epsdiss1*JacPDdissipationNth1phi +
- epsdiss2*JacPDdissipationNth2phi + epsdiss3*JacPDdissipationNth3phi +
- phirhsL;
+ gt11rhsL =
+ kadd(gt11rhsL,kmadd(epsdiss1,JacPDdissipationNth1gt11,kmadd(epsdiss2,JacPDdissipationNth2gt11,kmul(epsdiss3,JacPDdissipationNth3gt11))));
- gt11rhsL = gt11rhsL + epsdiss1*JacPDdissipationNth1gt11 +
- epsdiss2*JacPDdissipationNth2gt11 + epsdiss3*JacPDdissipationNth3gt11;
+ gt12rhsL =
+ kadd(gt12rhsL,kmadd(epsdiss1,JacPDdissipationNth1gt12,kmadd(epsdiss2,JacPDdissipationNth2gt12,kmul(epsdiss3,JacPDdissipationNth3gt12))));
- gt12rhsL = gt12rhsL + epsdiss1*JacPDdissipationNth1gt12 +
- epsdiss2*JacPDdissipationNth2gt12 + epsdiss3*JacPDdissipationNth3gt12;
+ gt13rhsL =
+ kadd(gt13rhsL,kmadd(epsdiss1,JacPDdissipationNth1gt13,kmadd(epsdiss2,JacPDdissipationNth2gt13,kmul(epsdiss3,JacPDdissipationNth3gt13))));
- gt13rhsL = gt13rhsL + epsdiss1*JacPDdissipationNth1gt13 +
- epsdiss2*JacPDdissipationNth2gt13 + epsdiss3*JacPDdissipationNth3gt13;
+ gt22rhsL =
+ kadd(gt22rhsL,kmadd(epsdiss1,JacPDdissipationNth1gt22,kmadd(epsdiss2,JacPDdissipationNth2gt22,kmul(epsdiss3,JacPDdissipationNth3gt22))));
- gt22rhsL = gt22rhsL + epsdiss1*JacPDdissipationNth1gt22 +
- epsdiss2*JacPDdissipationNth2gt22 + epsdiss3*JacPDdissipationNth3gt22;
+ gt23rhsL =
+ kadd(gt23rhsL,kmadd(epsdiss1,JacPDdissipationNth1gt23,kmadd(epsdiss2,JacPDdissipationNth2gt23,kmul(epsdiss3,JacPDdissipationNth3gt23))));
- gt23rhsL = gt23rhsL + epsdiss1*JacPDdissipationNth1gt23 +
- epsdiss2*JacPDdissipationNth2gt23 + epsdiss3*JacPDdissipationNth3gt23;
+ gt33rhsL =
+ kadd(gt33rhsL,kmadd(epsdiss1,JacPDdissipationNth1gt33,kmadd(epsdiss2,JacPDdissipationNth2gt33,kmul(epsdiss3,JacPDdissipationNth3gt33))));
- gt33rhsL = gt33rhsL + epsdiss1*JacPDdissipationNth1gt33 +
- epsdiss2*JacPDdissipationNth2gt33 + epsdiss3*JacPDdissipationNth3gt33;
+ Xt1rhsL =
+ kmadd(epsdiss1,JacPDdissipationNth1Xt1,kmadd(epsdiss2,JacPDdissipationNth2Xt1,kmadd(epsdiss3,JacPDdissipationNth3Xt1,Xt1rhsL)));
- Xt1rhsL = epsdiss1*JacPDdissipationNth1Xt1 +
- epsdiss2*JacPDdissipationNth2Xt1 + epsdiss3*JacPDdissipationNth3Xt1 +
- Xt1rhsL;
+ Xt2rhsL =
+ kmadd(epsdiss1,JacPDdissipationNth1Xt2,kmadd(epsdiss2,JacPDdissipationNth2Xt2,kmadd(epsdiss3,JacPDdissipationNth3Xt2,Xt2rhsL)));
- Xt2rhsL = epsdiss1*JacPDdissipationNth1Xt2 +
- epsdiss2*JacPDdissipationNth2Xt2 + epsdiss3*JacPDdissipationNth3Xt2 +
- Xt2rhsL;
+ Xt3rhsL =
+ kmadd(epsdiss1,JacPDdissipationNth1Xt3,kmadd(epsdiss2,JacPDdissipationNth2Xt3,kmadd(epsdiss3,JacPDdissipationNth3Xt3,Xt3rhsL)));
- Xt3rhsL = epsdiss1*JacPDdissipationNth1Xt3 +
- epsdiss2*JacPDdissipationNth2Xt3 + epsdiss3*JacPDdissipationNth3Xt3 +
- Xt3rhsL;
+ trKrhsL =
+ kmadd(epsdiss1,JacPDdissipationNth1trK,kmadd(epsdiss2,JacPDdissipationNth2trK,kmadd(epsdiss3,JacPDdissipationNth3trK,trKrhsL)));
- trKrhsL = epsdiss1*JacPDdissipationNth1trK +
- epsdiss2*JacPDdissipationNth2trK + epsdiss3*JacPDdissipationNth3trK +
- trKrhsL;
+ At11rhsL =
+ kadd(At11rhsL,kmadd(epsdiss1,JacPDdissipationNth1At11,kmadd(epsdiss2,JacPDdissipationNth2At11,kmul(epsdiss3,JacPDdissipationNth3At11))));
- At11rhsL = At11rhsL + epsdiss1*JacPDdissipationNth1At11 +
- epsdiss2*JacPDdissipationNth2At11 + epsdiss3*JacPDdissipationNth3At11;
+ At12rhsL =
+ kadd(At12rhsL,kmadd(epsdiss1,JacPDdissipationNth1At12,kmadd(epsdiss2,JacPDdissipationNth2At12,kmul(epsdiss3,JacPDdissipationNth3At12))));
- At12rhsL = At12rhsL + epsdiss1*JacPDdissipationNth1At12 +
- epsdiss2*JacPDdissipationNth2At12 + epsdiss3*JacPDdissipationNth3At12;
+ At13rhsL =
+ kadd(At13rhsL,kmadd(epsdiss1,JacPDdissipationNth1At13,kmadd(epsdiss2,JacPDdissipationNth2At13,kmul(epsdiss3,JacPDdissipationNth3At13))));
- At13rhsL = At13rhsL + epsdiss1*JacPDdissipationNth1At13 +
- epsdiss2*JacPDdissipationNth2At13 + epsdiss3*JacPDdissipationNth3At13;
+ At22rhsL =
+ kadd(At22rhsL,kmadd(epsdiss1,JacPDdissipationNth1At22,kmadd(epsdiss2,JacPDdissipationNth2At22,kmul(epsdiss3,JacPDdissipationNth3At22))));
- At22rhsL = At22rhsL + epsdiss1*JacPDdissipationNth1At22 +
- epsdiss2*JacPDdissipationNth2At22 + epsdiss3*JacPDdissipationNth3At22;
+ At23rhsL =
+ kadd(At23rhsL,kmadd(epsdiss1,JacPDdissipationNth1At23,kmadd(epsdiss2,JacPDdissipationNth2At23,kmul(epsdiss3,JacPDdissipationNth3At23))));
- At23rhsL = At23rhsL + epsdiss1*JacPDdissipationNth1At23 +
- epsdiss2*JacPDdissipationNth2At23 + epsdiss3*JacPDdissipationNth3At23;
+ At33rhsL =
+ kadd(At33rhsL,kmadd(epsdiss1,JacPDdissipationNth1At33,kmadd(epsdiss2,JacPDdissipationNth2At33,kmul(epsdiss3,JacPDdissipationNth3At33))));
- At33rhsL = At33rhsL + epsdiss1*JacPDdissipationNth1At33 +
- epsdiss2*JacPDdissipationNth2At33 + epsdiss3*JacPDdissipationNth3At33;
+ alpharhsL =
+ kadd(alpharhsL,kmadd(epsdiss1,JacPDdissipationNth1alpha,kmadd(epsdiss2,JacPDdissipationNth2alpha,kmul(epsdiss3,JacPDdissipationNth3alpha))));
- alpharhsL = alpharhsL + epsdiss1*JacPDdissipationNth1alpha +
- epsdiss2*JacPDdissipationNth2alpha +
- epsdiss3*JacPDdissipationNth3alpha;
+ ArhsL =
+ kadd(ArhsL,kmadd(epsdiss1,JacPDdissipationNth1A,kmadd(epsdiss2,JacPDdissipationNth2A,kmul(epsdiss3,JacPDdissipationNth3A))));
- ArhsL = ArhsL + epsdiss1*JacPDdissipationNth1A +
- epsdiss2*JacPDdissipationNth2A + epsdiss3*JacPDdissipationNth3A;
+ beta1rhsL =
+ kadd(beta1rhsL,kmadd(epsdiss1,JacPDdissipationNth1beta1,kmadd(epsdiss2,JacPDdissipationNth2beta1,kmul(epsdiss3,JacPDdissipationNth3beta1))));
- beta1rhsL = beta1rhsL + epsdiss1*JacPDdissipationNth1beta1 +
- epsdiss2*JacPDdissipationNth2beta1 +
- epsdiss3*JacPDdissipationNth3beta1;
+ beta2rhsL =
+ kadd(beta2rhsL,kmadd(epsdiss1,JacPDdissipationNth1beta2,kmadd(epsdiss2,JacPDdissipationNth2beta2,kmul(epsdiss3,JacPDdissipationNth3beta2))));
- beta2rhsL = beta2rhsL + epsdiss1*JacPDdissipationNth1beta2 +
- epsdiss2*JacPDdissipationNth2beta2 +
- epsdiss3*JacPDdissipationNth3beta2;
+ beta3rhsL =
+ kadd(beta3rhsL,kmadd(epsdiss1,JacPDdissipationNth1beta3,kmadd(epsdiss2,JacPDdissipationNth2beta3,kmul(epsdiss3,JacPDdissipationNth3beta3))));
- beta3rhsL = beta3rhsL + epsdiss1*JacPDdissipationNth1beta3 +
- epsdiss2*JacPDdissipationNth2beta3 +
- epsdiss3*JacPDdissipationNth3beta3;
+ B1rhsL =
+ kadd(B1rhsL,kmadd(epsdiss1,JacPDdissipationNth1B1,kmadd(epsdiss2,JacPDdissipationNth2B1,kmul(epsdiss3,JacPDdissipationNth3B1))));
- B1rhsL = B1rhsL + epsdiss1*JacPDdissipationNth1B1 +
- epsdiss2*JacPDdissipationNth2B1 + epsdiss3*JacPDdissipationNth3B1;
+ B2rhsL =
+ kadd(B2rhsL,kmadd(epsdiss1,JacPDdissipationNth1B2,kmadd(epsdiss2,JacPDdissipationNth2B2,kmul(epsdiss3,JacPDdissipationNth3B2))));
- B2rhsL = B2rhsL + epsdiss1*JacPDdissipationNth1B2 +
- epsdiss2*JacPDdissipationNth2B2 + epsdiss3*JacPDdissipationNth3B2;
+ B3rhsL =
+ kadd(B3rhsL,kmadd(epsdiss1,JacPDdissipationNth1B3,kmadd(epsdiss2,JacPDdissipationNth2B3,kmul(epsdiss3,JacPDdissipationNth3B3))));
- B3rhsL = B3rhsL + epsdiss1*JacPDdissipationNth1B3 +
- epsdiss2*JacPDdissipationNth2B3 + epsdiss3*JacPDdissipationNth3B3;
+ /* If necessary, store only partial vectors after the first iteration */
- /* Copy local copies back to grid functions */
- alpharhs[index] = alpharhsL;
- Arhs[index] = ArhsL;
- At11rhs[index] = At11rhsL;
- At12rhs[index] = At12rhsL;
- At13rhs[index] = At13rhsL;
- At22rhs[index] = At22rhsL;
- At23rhs[index] = At23rhsL;
- At33rhs[index] = At33rhsL;
- B1rhs[index] = B1rhsL;
- B2rhs[index] = B2rhsL;
- B3rhs[index] = B3rhsL;
- beta1rhs[index] = beta1rhsL;
- beta2rhs[index] = beta2rhsL;
- beta3rhs[index] = beta3rhsL;
- gt11rhs[index] = gt11rhsL;
- gt12rhs[index] = gt12rhsL;
- gt13rhs[index] = gt13rhsL;
- gt22rhs[index] = gt22rhsL;
- gt23rhs[index] = gt23rhsL;
- gt33rhs[index] = gt33rhsL;
- phirhs[index] = phirhsL;
- trKrhs[index] = trKrhsL;
- Xt1rhs[index] = Xt1rhsL;
- Xt2rhs[index] = Xt2rhsL;
- Xt3rhs[index] = Xt3rhsL;
+ 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(Arhs[index],ArhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At11rhs[index],At11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At12rhs[index],At12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At13rhs[index],At13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At22rhs[index],At22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At23rhs[index],At23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At33rhs[index],At33rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B1rhs[index],B1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B2rhs[index],B2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt12rhs[index],gt12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt13rhs[index],gt13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt22rhs[index],gt22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt23rhs[index],gt23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt33rhs[index],gt33rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(phirhs[index],phirhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(trKrhs[index],trKrhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt1rhs[index],Xt1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt2rhs[index],Xt2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt3rhs[index],Xt3rhsL,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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_hi(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_hi(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_hi(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_hi(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_hi(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_hi(At33rhs[index],At33rhsL,elt_count);
+ vec_store_nta_partial_hi(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_hi(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_hi(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_hi(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_hi(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_hi(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_hi(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_hi(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_hi(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_hi(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_hi(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt3rhs[index],Xt3rhsL,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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_lo(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_lo(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_lo(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_lo(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_lo(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_lo(At33rhs[index],At33rhsL,elt_count);
+ vec_store_nta_partial_lo(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_lo(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_lo(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_lo(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_lo(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_lo(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_lo(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_lo(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_lo(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_lo(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_lo(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt3rhs[index],Xt3rhsL,elt_count);
+ break;
+ }
+ vec_store_nta(alpharhs[index],alpharhsL);
+ vec_store_nta(Arhs[index],ArhsL);
+ vec_store_nta(At11rhs[index],At11rhsL);
+ vec_store_nta(At12rhs[index],At12rhsL);
+ vec_store_nta(At13rhs[index],At13rhsL);
+ vec_store_nta(At22rhs[index],At22rhsL);
+ vec_store_nta(At23rhs[index],At23rhsL);
+ vec_store_nta(At33rhs[index],At33rhsL);
+ vec_store_nta(B1rhs[index],B1rhsL);
+ vec_store_nta(B2rhs[index],B2rhsL);
+ vec_store_nta(B3rhs[index],B3rhsL);
+ vec_store_nta(beta1rhs[index],beta1rhsL);
+ vec_store_nta(beta2rhs[index],beta2rhsL);
+ vec_store_nta(beta3rhs[index],beta3rhsL);
+ vec_store_nta(gt11rhs[index],gt11rhsL);
+ vec_store_nta(gt12rhs[index],gt12rhsL);
+ vec_store_nta(gt13rhs[index],gt13rhsL);
+ vec_store_nta(gt22rhs[index],gt22rhsL);
+ vec_store_nta(gt23rhs[index],gt23rhsL);
+ vec_store_nta(gt33rhs[index],gt33rhsL);
+ vec_store_nta(phirhs[index],phirhsL);
+ vec_store_nta(trKrhs[index],trKrhsL);
+ vec_store_nta(Xt1rhs[index],Xt1rhsL);
+ vec_store_nta(Xt2rhs[index],Xt2rhsL);
+ vec_store_nta(Xt3rhs[index],Xt3rhsL);
}
- LC_ENDLOOP3 (ML_BSSN_MP_O8_Dissipation);
+ LC_ENDLOOP3VEC (ML_BSSN_MP_O8_Dissipation);
}
extern "C" void ML_BSSN_MP_O8_Dissipation(CCTK_ARGUMENTS)
@@ -914,5 +1368,43 @@ extern "C" void ML_BSSN_MP_O8_Dissipation(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_O8_Dissipation_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_MP_O8_Dissipation_calc_every != ML_BSSN_MP_O8_Dissipation_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN_MP_O8::ML_curv","ML_BSSN_MP_O8::ML_curvrhs","ML_BSSN_MP_O8::ML_dtlapse","ML_BSSN_MP_O8::ML_dtlapserhs","ML_BSSN_MP_O8::ML_dtshift","ML_BSSN_MP_O8::ML_dtshiftrhs","ML_BSSN_MP_O8::ML_Gamma","ML_BSSN_MP_O8::ML_Gammarhs","ML_BSSN_MP_O8::ML_lapse","ML_BSSN_MP_O8::ML_lapserhs","ML_BSSN_MP_O8::ML_log_confac","ML_BSSN_MP_O8::ML_log_confacrhs","ML_BSSN_MP_O8::ML_metric","ML_BSSN_MP_O8::ML_metricrhs","ML_BSSN_MP_O8::ML_shift","ML_BSSN_MP_O8::ML_shiftrhs","ML_BSSN_MP_O8::ML_trace_curv","ML_BSSN_MP_O8::ML_trace_curvrhs"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_O8_Dissipation", 18, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_O8_Dissipation", 2, 2, 2);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_O8_Dissipation", 3, 3, 3);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_O8_Dissipation", 4, 4, 4);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_O8_Dissipation", 5, 5, 5);
+ break;
+ }
+
GenericFD_LoopOverInterior(cctkGH, &ML_BSSN_MP_O8_Dissipation_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_MP_O8_Dissipation_Body");
+ }
}
diff --git a/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_InitGamma.cc b/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_InitGamma.cc
index a422cad..3ae1dc5 100644
--- a/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_InitGamma.cc
+++ b/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_InitGamma.cc
@@ -13,15 +13,16 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
-static void ML_BSSN_MP_O8_InitGamma_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_MP_O8_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;
@@ -29,20 +30,6 @@ static void ML_BSSN_MP_O8_InitGamma_Body(cGH const * restrict const cctkGH, int
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_O8_InitGamma_Body");
- }
-
- if (cctk_iteration % ML_BSSN_MP_O8_InitGamma_calc_every != ML_BSSN_MP_O8_InitGamma_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN_MP_O8::ML_Gamma"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_O8_InitGamma", 1, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -52,47 +39,102 @@ static void ML_BSSN_MP_O8_InitGamma_Body(cGH const * restrict const cctkGH, int
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o1024dx = 0.0009765625*INV(dx);
- CCTK_REAL const p1o1024dy = 0.0009765625*INV(dy);
- CCTK_REAL const p1o1024dz = 0.0009765625*INV(dz);
- CCTK_REAL const p1o1680dx = 0.000595238095238095238095238095238*INV(dx);
- CCTK_REAL const p1o1680dy = 0.000595238095238095238095238095238*INV(dy);
- CCTK_REAL const p1o1680dz = 0.000595238095238095238095238095238*INV(dz);
- CCTK_REAL const p1o5040dx2 = 0.000198412698412698412698412698413*INV(SQR(dx));
- CCTK_REAL const p1o5040dy2 = 0.000198412698412698412698412698413*INV(SQR(dy));
- CCTK_REAL const p1o5040dz2 = 0.000198412698412698412698412698413*INV(SQR(dz));
- CCTK_REAL const p1o560dx = 0.00178571428571428571428571428571*INV(dx);
- CCTK_REAL const p1o560dy = 0.00178571428571428571428571428571*INV(dy);
- CCTK_REAL const p1o560dz = 0.00178571428571428571428571428571*INV(dz);
- CCTK_REAL const p1o705600dxdy = 1.41723356009070294784580498866e-6*INV(dx)*INV(dy);
- CCTK_REAL const p1o705600dxdz = 1.41723356009070294784580498866e-6*INV(dx)*INV(dz);
- CCTK_REAL const p1o705600dydz = 1.41723356009070294784580498866e-6*INV(dy)*INV(dz);
- CCTK_REAL const p1o840dx = 0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const p1o840dy = 0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const p1o840dz = 0.00119047619047619047619047619048*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o840dx = -0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const pm1o840dy = -0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const pm1o840dz = -0.00119047619047619047619047619048*INV(dz);
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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)
@@ -139,11 +181,20 @@ static void ML_BSSN_MP_O8_InitGamma_Body(cGH const * restrict const cctkGH, int
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_LOOP3 (ML_BSSN_MP_O8_InitGamma,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_MP_O8_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;
@@ -156,19 +207,90 @@ static void ML_BSSN_MP_O8_InitGamma_Body(cGH const * restrict const cctkGH, int
/* Precompute derivatives */
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
/* Calculate temporaries and grid functions */
- CCTK_REAL Xt1L = 0;
+ 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);
+
+ /* If necessary, store only partial vectors after the first iteration */
- CCTK_REAL Xt2L = 0;
+ 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(A[index],AL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B1[index],B1L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B2[index],B2L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B3[index],B3L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt1[index],Xt1L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt2[index],Xt2L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt3[index],Xt3L,elt_count_lo,elt_count_hi);
+ break;
+ }
- CCTK_REAL Xt3L = 0;
+ /* If necessary, store only partial vectors after the first iteration */
- /* Copy local copies back to grid functions */
- Xt1[index] = Xt1L;
- Xt2[index] = Xt2L;
- Xt3[index] = Xt3L;
+ 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(A[index],AL,elt_count);
+ vec_store_nta_partial_hi(B1[index],B1L,elt_count);
+ vec_store_nta_partial_hi(B2[index],B2L,elt_count);
+ vec_store_nta_partial_hi(B3[index],B3L,elt_count);
+ vec_store_nta_partial_hi(Xt1[index],Xt1L,elt_count);
+ vec_store_nta_partial_hi(Xt2[index],Xt2L,elt_count);
+ vec_store_nta_partial_hi(Xt3[index],Xt3L,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(A[index],AL,elt_count);
+ vec_store_nta_partial_lo(B1[index],B1L,elt_count);
+ vec_store_nta_partial_lo(B2[index],B2L,elt_count);
+ vec_store_nta_partial_lo(B3[index],B3L,elt_count);
+ vec_store_nta_partial_lo(Xt1[index],Xt1L,elt_count);
+ vec_store_nta_partial_lo(Xt2[index],Xt2L,elt_count);
+ vec_store_nta_partial_lo(Xt3[index],Xt3L,elt_count);
+ break;
+ }
+ vec_store_nta(A[index],AL);
+ vec_store_nta(B1[index],B1L);
+ vec_store_nta(B2[index],B2L);
+ vec_store_nta(B3[index],B3L);
+ vec_store_nta(Xt1[index],Xt1L);
+ vec_store_nta(Xt2[index],Xt2L);
+ vec_store_nta(Xt3[index],Xt3L);
}
- LC_ENDLOOP3 (ML_BSSN_MP_O8_InitGamma);
+ LC_ENDLOOP3VEC (ML_BSSN_MP_O8_InitGamma);
}
extern "C" void ML_BSSN_MP_O8_InitGamma(CCTK_ARGUMENTS)
@@ -176,5 +298,39 @@ extern "C" void ML_BSSN_MP_O8_InitGamma(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_O8_InitGamma_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_MP_O8_InitGamma_calc_every != ML_BSSN_MP_O8_InitGamma_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN_MP_O8::ML_dtlapse","ML_BSSN_MP_O8::ML_dtshift","ML_BSSN_MP_O8::ML_Gamma"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_O8_InitGamma", 3, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverEverything(cctkGH, &ML_BSSN_MP_O8_InitGamma_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_MP_O8_InitGamma_Body");
+ }
}
diff --git a/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_InitRHS.cc b/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_InitRHS.cc
index b797780..c313d30 100644
--- a/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_InitRHS.cc
+++ b/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_InitRHS.cc
@@ -13,15 +13,16 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
-static void ML_BSSN_MP_O8_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_MP_O8_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;
@@ -29,20 +30,6 @@ static void ML_BSSN_MP_O8_InitRHS_Body(cGH const * restrict const cctkGH, int co
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_O8_InitRHS_Body");
- }
-
- if (cctk_iteration % ML_BSSN_MP_O8_InitRHS_calc_every != ML_BSSN_MP_O8_InitRHS_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN_MP_O8::ML_curvrhs","ML_BSSN_MP_O8::ML_dtlapserhs","ML_BSSN_MP_O8::ML_dtshiftrhs","ML_BSSN_MP_O8::ML_Gammarhs","ML_BSSN_MP_O8::ML_lapserhs","ML_BSSN_MP_O8::ML_log_confacrhs","ML_BSSN_MP_O8::ML_metricrhs","ML_BSSN_MP_O8::ML_shiftrhs","ML_BSSN_MP_O8::ML_trace_curvrhs"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_O8_InitRHS", 9, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -52,47 +39,102 @@ static void ML_BSSN_MP_O8_InitRHS_Body(cGH const * restrict const cctkGH, int co
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o1024dx = 0.0009765625*INV(dx);
- CCTK_REAL const p1o1024dy = 0.0009765625*INV(dy);
- CCTK_REAL const p1o1024dz = 0.0009765625*INV(dz);
- CCTK_REAL const p1o1680dx = 0.000595238095238095238095238095238*INV(dx);
- CCTK_REAL const p1o1680dy = 0.000595238095238095238095238095238*INV(dy);
- CCTK_REAL const p1o1680dz = 0.000595238095238095238095238095238*INV(dz);
- CCTK_REAL const p1o5040dx2 = 0.000198412698412698412698412698413*INV(SQR(dx));
- CCTK_REAL const p1o5040dy2 = 0.000198412698412698412698412698413*INV(SQR(dy));
- CCTK_REAL const p1o5040dz2 = 0.000198412698412698412698412698413*INV(SQR(dz));
- CCTK_REAL const p1o560dx = 0.00178571428571428571428571428571*INV(dx);
- CCTK_REAL const p1o560dy = 0.00178571428571428571428571428571*INV(dy);
- CCTK_REAL const p1o560dz = 0.00178571428571428571428571428571*INV(dz);
- CCTK_REAL const p1o705600dxdy = 1.41723356009070294784580498866e-6*INV(dx)*INV(dy);
- CCTK_REAL const p1o705600dxdz = 1.41723356009070294784580498866e-6*INV(dx)*INV(dz);
- CCTK_REAL const p1o705600dydz = 1.41723356009070294784580498866e-6*INV(dy)*INV(dz);
- CCTK_REAL const p1o840dx = 0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const p1o840dy = 0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const p1o840dz = 0.00119047619047619047619047619048*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o840dx = -0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const pm1o840dy = -0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const pm1o840dz = -0.00119047619047619047619047619048*INV(dz);
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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)
@@ -139,11 +181,20 @@ static void ML_BSSN_MP_O8_InitRHS_Body(cGH const * restrict const cctkGH, int co
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_LOOP3 (ML_BSSN_MP_O8_InitRHS,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_MP_O8_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;
@@ -156,85 +207,198 @@ static void ML_BSSN_MP_O8_InitRHS_Body(cGH const * restrict const cctkGH, int co
/* Precompute derivatives */
- /* Calculate temporaries and grid functions */
- CCTK_REAL phirhsL = 0;
-
- CCTK_REAL gt11rhsL = 0;
-
- CCTK_REAL gt12rhsL = 0;
-
- CCTK_REAL gt13rhsL = 0;
-
- CCTK_REAL gt22rhsL = 0;
-
- CCTK_REAL gt23rhsL = 0;
-
- CCTK_REAL gt33rhsL = 0;
-
- CCTK_REAL trKrhsL = 0;
-
- CCTK_REAL At11rhsL = 0;
-
- CCTK_REAL At12rhsL = 0;
-
- CCTK_REAL At13rhsL = 0;
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
- CCTK_REAL At22rhsL = 0;
-
- CCTK_REAL At23rhsL = 0;
-
- CCTK_REAL At33rhsL = 0;
-
- CCTK_REAL Xt1rhsL = 0;
-
- CCTK_REAL Xt2rhsL = 0;
+ /* Calculate temporaries and grid functions */
+ CCTK_REAL_VEC phirhsL = ToReal(0);
- CCTK_REAL Xt3rhsL = 0;
+ CCTK_REAL_VEC gt11rhsL = ToReal(0);
- CCTK_REAL alpharhsL = 0;
+ CCTK_REAL_VEC gt12rhsL = ToReal(0);
- CCTK_REAL ArhsL = 0;
+ CCTK_REAL_VEC gt13rhsL = ToReal(0);
- CCTK_REAL beta1rhsL = 0;
+ CCTK_REAL_VEC gt22rhsL = ToReal(0);
- CCTK_REAL beta2rhsL = 0;
+ CCTK_REAL_VEC gt23rhsL = ToReal(0);
- CCTK_REAL beta3rhsL = 0;
+ CCTK_REAL_VEC gt33rhsL = ToReal(0);
- CCTK_REAL B1rhsL = 0;
+ CCTK_REAL_VEC trKrhsL = ToReal(0);
+
+ CCTK_REAL_VEC At11rhsL = ToReal(0);
- CCTK_REAL B2rhsL = 0;
+ CCTK_REAL_VEC At12rhsL = ToReal(0);
- CCTK_REAL B3rhsL = 0;
+ CCTK_REAL_VEC At13rhsL = ToReal(0);
- /* Copy local copies back to grid functions */
- alpharhs[index] = alpharhsL;
- Arhs[index] = ArhsL;
- At11rhs[index] = At11rhsL;
- At12rhs[index] = At12rhsL;
- At13rhs[index] = At13rhsL;
- At22rhs[index] = At22rhsL;
- At23rhs[index] = At23rhsL;
- At33rhs[index] = At33rhsL;
- B1rhs[index] = B1rhsL;
- B2rhs[index] = B2rhsL;
- B3rhs[index] = B3rhsL;
- beta1rhs[index] = beta1rhsL;
- beta2rhs[index] = beta2rhsL;
- beta3rhs[index] = beta3rhsL;
- gt11rhs[index] = gt11rhsL;
- gt12rhs[index] = gt12rhsL;
- gt13rhs[index] = gt13rhsL;
- gt22rhs[index] = gt22rhsL;
- gt23rhs[index] = gt23rhsL;
- gt33rhs[index] = gt33rhsL;
- phirhs[index] = phirhsL;
- trKrhs[index] = trKrhsL;
- Xt1rhs[index] = Xt1rhsL;
- Xt2rhs[index] = Xt2rhsL;
- Xt3rhs[index] = Xt3rhsL;
+ 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);
+
+ /* 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(Arhs[index],ArhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At11rhs[index],At11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At12rhs[index],At12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At13rhs[index],At13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At22rhs[index],At22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At23rhs[index],At23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At33rhs[index],At33rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B1rhs[index],B1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B2rhs[index],B2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt12rhs[index],gt12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt13rhs[index],gt13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt22rhs[index],gt22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt23rhs[index],gt23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt33rhs[index],gt33rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(phirhs[index],phirhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(trKrhs[index],trKrhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt1rhs[index],Xt1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt2rhs[index],Xt2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt3rhs[index],Xt3rhsL,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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_hi(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_hi(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_hi(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_hi(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_hi(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_hi(At33rhs[index],At33rhsL,elt_count);
+ vec_store_nta_partial_hi(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_hi(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_hi(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_hi(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_hi(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_hi(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_hi(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_hi(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_hi(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_hi(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_hi(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt3rhs[index],Xt3rhsL,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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_lo(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_lo(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_lo(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_lo(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_lo(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_lo(At33rhs[index],At33rhsL,elt_count);
+ vec_store_nta_partial_lo(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_lo(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_lo(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_lo(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_lo(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_lo(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_lo(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_lo(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_lo(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_lo(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_lo(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt3rhs[index],Xt3rhsL,elt_count);
+ break;
+ }
+ vec_store_nta(alpharhs[index],alpharhsL);
+ vec_store_nta(Arhs[index],ArhsL);
+ vec_store_nta(At11rhs[index],At11rhsL);
+ vec_store_nta(At12rhs[index],At12rhsL);
+ vec_store_nta(At13rhs[index],At13rhsL);
+ vec_store_nta(At22rhs[index],At22rhsL);
+ vec_store_nta(At23rhs[index],At23rhsL);
+ vec_store_nta(At33rhs[index],At33rhsL);
+ vec_store_nta(B1rhs[index],B1rhsL);
+ vec_store_nta(B2rhs[index],B2rhsL);
+ vec_store_nta(B3rhs[index],B3rhsL);
+ vec_store_nta(beta1rhs[index],beta1rhsL);
+ vec_store_nta(beta2rhs[index],beta2rhsL);
+ vec_store_nta(beta3rhs[index],beta3rhsL);
+ vec_store_nta(gt11rhs[index],gt11rhsL);
+ vec_store_nta(gt12rhs[index],gt12rhsL);
+ vec_store_nta(gt13rhs[index],gt13rhsL);
+ vec_store_nta(gt22rhs[index],gt22rhsL);
+ vec_store_nta(gt23rhs[index],gt23rhsL);
+ vec_store_nta(gt33rhs[index],gt33rhsL);
+ vec_store_nta(phirhs[index],phirhsL);
+ vec_store_nta(trKrhs[index],trKrhsL);
+ vec_store_nta(Xt1rhs[index],Xt1rhsL);
+ vec_store_nta(Xt2rhs[index],Xt2rhsL);
+ vec_store_nta(Xt3rhs[index],Xt3rhsL);
}
- LC_ENDLOOP3 (ML_BSSN_MP_O8_InitRHS);
+ LC_ENDLOOP3VEC (ML_BSSN_MP_O8_InitRHS);
}
extern "C" void ML_BSSN_MP_O8_InitRHS(CCTK_ARGUMENTS)
@@ -242,5 +406,39 @@ extern "C" void ML_BSSN_MP_O8_InitRHS(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_O8_InitRHS_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_MP_O8_InitRHS_calc_every != ML_BSSN_MP_O8_InitRHS_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN_MP_O8::ML_curvrhs","ML_BSSN_MP_O8::ML_dtlapserhs","ML_BSSN_MP_O8::ML_dtshiftrhs","ML_BSSN_MP_O8::ML_Gammarhs","ML_BSSN_MP_O8::ML_lapserhs","ML_BSSN_MP_O8::ML_log_confacrhs","ML_BSSN_MP_O8::ML_metricrhs","ML_BSSN_MP_O8::ML_shiftrhs","ML_BSSN_MP_O8::ML_trace_curvrhs"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_O8_InitRHS", 9, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverEverything(cctkGH, &ML_BSSN_MP_O8_InitRHS_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_MP_O8_InitRHS_Body");
+ }
}
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 6545c4a..5a3d29d 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
@@ -13,15 +13,16 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
-static void ML_BSSN_MP_O8_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_MP_O8_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;
@@ -29,20 +30,6 @@ static void ML_BSSN_MP_O8_Minkowski_Body(cGH const * restrict const cctkGH, int
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_O8_Minkowski_Body");
- }
-
- if (cctk_iteration % ML_BSSN_MP_O8_Minkowski_calc_every != ML_BSSN_MP_O8_Minkowski_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN_MP_O8::ML_curv","ML_BSSN_MP_O8::ML_dtlapse","ML_BSSN_MP_O8::ML_dtshift","ML_BSSN_MP_O8::ML_Gamma","ML_BSSN_MP_O8::ML_lapse","ML_BSSN_MP_O8::ML_log_confac","ML_BSSN_MP_O8::ML_metric","ML_BSSN_MP_O8::ML_shift","ML_BSSN_MP_O8::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_O8_Minkowski", 9, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -52,47 +39,102 @@ static void ML_BSSN_MP_O8_Minkowski_Body(cGH const * restrict const cctkGH, int
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o1024dx = 0.0009765625*INV(dx);
- CCTK_REAL const p1o1024dy = 0.0009765625*INV(dy);
- CCTK_REAL const p1o1024dz = 0.0009765625*INV(dz);
- CCTK_REAL const p1o1680dx = 0.000595238095238095238095238095238*INV(dx);
- CCTK_REAL const p1o1680dy = 0.000595238095238095238095238095238*INV(dy);
- CCTK_REAL const p1o1680dz = 0.000595238095238095238095238095238*INV(dz);
- CCTK_REAL const p1o5040dx2 = 0.000198412698412698412698412698413*INV(SQR(dx));
- CCTK_REAL const p1o5040dy2 = 0.000198412698412698412698412698413*INV(SQR(dy));
- CCTK_REAL const p1o5040dz2 = 0.000198412698412698412698412698413*INV(SQR(dz));
- CCTK_REAL const p1o560dx = 0.00178571428571428571428571428571*INV(dx);
- CCTK_REAL const p1o560dy = 0.00178571428571428571428571428571*INV(dy);
- CCTK_REAL const p1o560dz = 0.00178571428571428571428571428571*INV(dz);
- CCTK_REAL const p1o705600dxdy = 1.41723356009070294784580498866e-6*INV(dx)*INV(dy);
- CCTK_REAL const p1o705600dxdz = 1.41723356009070294784580498866e-6*INV(dx)*INV(dz);
- CCTK_REAL const p1o705600dydz = 1.41723356009070294784580498866e-6*INV(dy)*INV(dz);
- CCTK_REAL const p1o840dx = 0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const p1o840dy = 0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const p1o840dz = 0.00119047619047619047619047619048*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o840dx = -0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const pm1o840dy = -0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const pm1o840dz = -0.00119047619047619047619047619048*INV(dz);
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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)
@@ -139,11 +181,20 @@ static void ML_BSSN_MP_O8_Minkowski_Body(cGH const * restrict const cctkGH, int
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_LOOP3 (ML_BSSN_MP_O8_Minkowski,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_MP_O8_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;
@@ -156,85 +207,198 @@ static void ML_BSSN_MP_O8_Minkowski_Body(cGH const * restrict const cctkGH, int
/* Precompute derivatives */
- /* Calculate temporaries and grid functions */
- CCTK_REAL phiL = IfThen(conformalMethod,1,0);
-
- CCTK_REAL gt11L = 1;
-
- CCTK_REAL gt12L = 0;
-
- CCTK_REAL gt13L = 0;
-
- CCTK_REAL gt22L = 1;
-
- CCTK_REAL gt23L = 0;
-
- CCTK_REAL gt33L = 1;
-
- CCTK_REAL trKL = 0;
-
- CCTK_REAL At11L = 0;
-
- CCTK_REAL At12L = 0;
-
- CCTK_REAL At13L = 0;
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
- CCTK_REAL At22L = 0;
-
- CCTK_REAL At23L = 0;
-
- CCTK_REAL At33L = 0;
-
- CCTK_REAL Xt1L = 0;
-
- CCTK_REAL Xt2L = 0;
+ /* Calculate temporaries and grid functions */
+ CCTK_REAL_VEC phiL = IfThen(conformalMethod,ToReal(1),ToReal(0));
- CCTK_REAL Xt3L = 0;
+ CCTK_REAL_VEC gt11L = ToReal(1);
- CCTK_REAL alphaL = 1;
+ CCTK_REAL_VEC gt12L = ToReal(0);
- CCTK_REAL AL = 0;
+ CCTK_REAL_VEC gt13L = ToReal(0);
- CCTK_REAL beta1L = 0;
+ CCTK_REAL_VEC gt22L = ToReal(1);
- CCTK_REAL beta2L = 0;
+ CCTK_REAL_VEC gt23L = ToReal(0);
- CCTK_REAL beta3L = 0;
+ CCTK_REAL_VEC gt33L = ToReal(1);
- CCTK_REAL B1L = 0;
+ CCTK_REAL_VEC trKL = ToReal(0);
+
+ CCTK_REAL_VEC At11L = ToReal(0);
- CCTK_REAL B2L = 0;
+ CCTK_REAL_VEC At12L = ToReal(0);
- CCTK_REAL B3L = 0;
+ CCTK_REAL_VEC At13L = ToReal(0);
- /* Copy local copies back to grid functions */
- A[index] = AL;
- alpha[index] = alphaL;
- At11[index] = At11L;
- At12[index] = At12L;
- At13[index] = At13L;
- At22[index] = At22L;
- At23[index] = At23L;
- At33[index] = At33L;
- B1[index] = B1L;
- B2[index] = B2L;
- B3[index] = B3L;
- beta1[index] = beta1L;
- beta2[index] = beta2L;
- beta3[index] = beta3L;
- gt11[index] = gt11L;
- gt12[index] = gt12L;
- gt13[index] = gt13L;
- gt22[index] = gt22L;
- gt23[index] = gt23L;
- gt33[index] = gt33L;
- phi[index] = phiL;
- trK[index] = trKL;
- Xt1[index] = Xt1L;
- Xt2[index] = Xt2L;
- Xt3[index] = Xt3L;
+ 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);
+
+ /* 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(A[index],AL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(alpha[index],alphaL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At11[index],At11L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At12[index],At12L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At13[index],At13L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At22[index],At22L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At23[index],At23L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At33[index],At33L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B1[index],B1L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B2[index],B2L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B3[index],B3L,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(gt11[index],gt11L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt12[index],gt12L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt13[index],gt13L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt22[index],gt22L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt23[index],gt23L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt33[index],gt33L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(phi[index],phiL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(trK[index],trKL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt1[index],Xt1L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt2[index],Xt2L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt3[index],Xt3L,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(A[index],AL,elt_count);
+ vec_store_nta_partial_hi(alpha[index],alphaL,elt_count);
+ vec_store_nta_partial_hi(At11[index],At11L,elt_count);
+ vec_store_nta_partial_hi(At12[index],At12L,elt_count);
+ vec_store_nta_partial_hi(At13[index],At13L,elt_count);
+ vec_store_nta_partial_hi(At22[index],At22L,elt_count);
+ vec_store_nta_partial_hi(At23[index],At23L,elt_count);
+ vec_store_nta_partial_hi(At33[index],At33L,elt_count);
+ vec_store_nta_partial_hi(B1[index],B1L,elt_count);
+ vec_store_nta_partial_hi(B2[index],B2L,elt_count);
+ vec_store_nta_partial_hi(B3[index],B3L,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(gt11[index],gt11L,elt_count);
+ vec_store_nta_partial_hi(gt12[index],gt12L,elt_count);
+ vec_store_nta_partial_hi(gt13[index],gt13L,elt_count);
+ vec_store_nta_partial_hi(gt22[index],gt22L,elt_count);
+ vec_store_nta_partial_hi(gt23[index],gt23L,elt_count);
+ vec_store_nta_partial_hi(gt33[index],gt33L,elt_count);
+ vec_store_nta_partial_hi(phi[index],phiL,elt_count);
+ vec_store_nta_partial_hi(trK[index],trKL,elt_count);
+ vec_store_nta_partial_hi(Xt1[index],Xt1L,elt_count);
+ vec_store_nta_partial_hi(Xt2[index],Xt2L,elt_count);
+ vec_store_nta_partial_hi(Xt3[index],Xt3L,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(A[index],AL,elt_count);
+ vec_store_nta_partial_lo(alpha[index],alphaL,elt_count);
+ vec_store_nta_partial_lo(At11[index],At11L,elt_count);
+ vec_store_nta_partial_lo(At12[index],At12L,elt_count);
+ vec_store_nta_partial_lo(At13[index],At13L,elt_count);
+ vec_store_nta_partial_lo(At22[index],At22L,elt_count);
+ vec_store_nta_partial_lo(At23[index],At23L,elt_count);
+ vec_store_nta_partial_lo(At33[index],At33L,elt_count);
+ vec_store_nta_partial_lo(B1[index],B1L,elt_count);
+ vec_store_nta_partial_lo(B2[index],B2L,elt_count);
+ vec_store_nta_partial_lo(B3[index],B3L,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(gt11[index],gt11L,elt_count);
+ vec_store_nta_partial_lo(gt12[index],gt12L,elt_count);
+ vec_store_nta_partial_lo(gt13[index],gt13L,elt_count);
+ vec_store_nta_partial_lo(gt22[index],gt22L,elt_count);
+ vec_store_nta_partial_lo(gt23[index],gt23L,elt_count);
+ vec_store_nta_partial_lo(gt33[index],gt33L,elt_count);
+ vec_store_nta_partial_lo(phi[index],phiL,elt_count);
+ vec_store_nta_partial_lo(trK[index],trKL,elt_count);
+ vec_store_nta_partial_lo(Xt1[index],Xt1L,elt_count);
+ vec_store_nta_partial_lo(Xt2[index],Xt2L,elt_count);
+ vec_store_nta_partial_lo(Xt3[index],Xt3L,elt_count);
+ break;
+ }
+ vec_store_nta(A[index],AL);
+ vec_store_nta(alpha[index],alphaL);
+ vec_store_nta(At11[index],At11L);
+ vec_store_nta(At12[index],At12L);
+ vec_store_nta(At13[index],At13L);
+ vec_store_nta(At22[index],At22L);
+ vec_store_nta(At23[index],At23L);
+ vec_store_nta(At33[index],At33L);
+ vec_store_nta(B1[index],B1L);
+ vec_store_nta(B2[index],B2L);
+ vec_store_nta(B3[index],B3L);
+ vec_store_nta(beta1[index],beta1L);
+ vec_store_nta(beta2[index],beta2L);
+ vec_store_nta(beta3[index],beta3L);
+ vec_store_nta(gt11[index],gt11L);
+ vec_store_nta(gt12[index],gt12L);
+ vec_store_nta(gt13[index],gt13L);
+ vec_store_nta(gt22[index],gt22L);
+ vec_store_nta(gt23[index],gt23L);
+ vec_store_nta(gt33[index],gt33L);
+ vec_store_nta(phi[index],phiL);
+ vec_store_nta(trK[index],trKL);
+ vec_store_nta(Xt1[index],Xt1L);
+ vec_store_nta(Xt2[index],Xt2L);
+ vec_store_nta(Xt3[index],Xt3L);
}
- LC_ENDLOOP3 (ML_BSSN_MP_O8_Minkowski);
+ LC_ENDLOOP3VEC (ML_BSSN_MP_O8_Minkowski);
}
extern "C" void ML_BSSN_MP_O8_Minkowski(CCTK_ARGUMENTS)
@@ -242,5 +406,39 @@ extern "C" void ML_BSSN_MP_O8_Minkowski(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_O8_Minkowski_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_MP_O8_Minkowski_calc_every != ML_BSSN_MP_O8_Minkowski_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN_MP_O8::ML_curv","ML_BSSN_MP_O8::ML_dtlapse","ML_BSSN_MP_O8::ML_dtshift","ML_BSSN_MP_O8::ML_Gamma","ML_BSSN_MP_O8::ML_lapse","ML_BSSN_MP_O8::ML_log_confac","ML_BSSN_MP_O8::ML_metric","ML_BSSN_MP_O8::ML_shift","ML_BSSN_MP_O8::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_O8_Minkowski", 9, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverEverything(cctkGH, &ML_BSSN_MP_O8_Minkowski_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_MP_O8_Minkowski_Body");
+ }
}
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 cebbd90..9d1443d 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
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_MP_O8_RHS1_SelectBCs(CCTK_ARGUMENTS)
{
@@ -54,7 +55,7 @@ extern "C" void ML_BSSN_MP_O8_RHS1_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_BSSN_MP_O8_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_MP_O8_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;
@@ -62,21 +63,6 @@ static void ML_BSSN_MP_O8_RHS1_Body(cGH const * restrict const cctkGH, int const
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_O8_RHS1_Body");
- }
-
- if (cctk_iteration % ML_BSSN_MP_O8_RHS1_calc_every != ML_BSSN_MP_O8_RHS1_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"grid::coordinates","Grid::coordinates","ML_BSSN_MP_O8::ML_curv","ML_BSSN_MP_O8::ML_dtlapse","ML_BSSN_MP_O8::ML_dtlapserhs","ML_BSSN_MP_O8::ML_dtshift","ML_BSSN_MP_O8::ML_dtshiftrhs","ML_BSSN_MP_O8::ML_Gamma","ML_BSSN_MP_O8::ML_Gammarhs","ML_BSSN_MP_O8::ML_lapse","ML_BSSN_MP_O8::ML_lapserhs","ML_BSSN_MP_O8::ML_log_confac","ML_BSSN_MP_O8::ML_log_confacrhs","ML_BSSN_MP_O8::ML_metric","ML_BSSN_MP_O8::ML_metricrhs","ML_BSSN_MP_O8::ML_shift","ML_BSSN_MP_O8::ML_shiftrhs","ML_BSSN_MP_O8::ML_trace_curv","ML_BSSN_MP_O8::ML_trace_curvrhs"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_O8_RHS1", 19, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_O8_RHS1", 4, 4, 4);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -86,47 +72,102 @@ static void ML_BSSN_MP_O8_RHS1_Body(cGH const * restrict const cctkGH, int const
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o1024dx = 0.0009765625*INV(dx);
- CCTK_REAL const p1o1024dy = 0.0009765625*INV(dy);
- CCTK_REAL const p1o1024dz = 0.0009765625*INV(dz);
- CCTK_REAL const p1o1680dx = 0.000595238095238095238095238095238*INV(dx);
- CCTK_REAL const p1o1680dy = 0.000595238095238095238095238095238*INV(dy);
- CCTK_REAL const p1o1680dz = 0.000595238095238095238095238095238*INV(dz);
- CCTK_REAL const p1o5040dx2 = 0.000198412698412698412698412698413*INV(SQR(dx));
- CCTK_REAL const p1o5040dy2 = 0.000198412698412698412698412698413*INV(SQR(dy));
- CCTK_REAL const p1o5040dz2 = 0.000198412698412698412698412698413*INV(SQR(dz));
- CCTK_REAL const p1o560dx = 0.00178571428571428571428571428571*INV(dx);
- CCTK_REAL const p1o560dy = 0.00178571428571428571428571428571*INV(dy);
- CCTK_REAL const p1o560dz = 0.00178571428571428571428571428571*INV(dz);
- CCTK_REAL const p1o705600dxdy = 1.41723356009070294784580498866e-6*INV(dx)*INV(dy);
- CCTK_REAL const p1o705600dxdz = 1.41723356009070294784580498866e-6*INV(dx)*INV(dz);
- CCTK_REAL const p1o705600dydz = 1.41723356009070294784580498866e-6*INV(dy)*INV(dz);
- CCTK_REAL const p1o840dx = 0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const p1o840dy = 0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const p1o840dz = 0.00119047619047619047619047619048*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o840dx = -0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const pm1o840dy = -0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const pm1o840dz = -0.00119047619047619047619047619048*INV(dz);
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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)
@@ -173,57 +214,66 @@ static void ML_BSSN_MP_O8_RHS1_Body(cGH const * restrict const cctkGH, int const
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_LOOP3 (ML_BSSN_MP_O8_RHS1,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_MP_O8_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 AL = A[index];
- CCTK_REAL alphaL = alpha[index];
- CCTK_REAL At11L = At11[index];
- CCTK_REAL At12L = At12[index];
- CCTK_REAL At13L = At13[index];
- CCTK_REAL At22L = At22[index];
- CCTK_REAL At23L = At23[index];
- CCTK_REAL At33L = At33[index];
- CCTK_REAL B1L = B1[index];
- CCTK_REAL B2L = B2[index];
- CCTK_REAL B3L = B3[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL gt11L = gt11[index];
- CCTK_REAL gt12L = gt12[index];
- CCTK_REAL gt13L = gt13[index];
- CCTK_REAL gt22L = gt22[index];
- CCTK_REAL gt23L = gt23[index];
- CCTK_REAL gt33L = gt33[index];
- CCTK_REAL phiL = phi[index];
- CCTK_REAL rL = r[index];
- CCTK_REAL trKL = trK[index];
- CCTK_REAL Xt1L = Xt1[index];
- CCTK_REAL Xt2L = Xt2[index];
- CCTK_REAL Xt3L = Xt3[index];
-
- CCTK_REAL eTttL, eTtxL, eTtyL, eTtzL, eTxxL, eTxyL, eTxzL, eTyyL, eTyzL, eTzzL;
+ 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 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 = eTtt[index];
- eTtxL = eTtx[index];
- eTtyL = eTty[index];
- eTtzL = eTtz[index];
- eTxxL = eTxx[index];
- eTxyL = eTxy[index];
- eTxzL = eTxz[index];
- eTyyL = eTyy[index];
- eTyzL = eTyz[index];
- eTzzL = eTzz[index];
+ 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
{
@@ -239,550 +289,655 @@ static void ML_BSSN_MP_O8_RHS1_Body(cGH const * restrict const cctkGH, int const
eTzzL = ToReal(0.0);
}
- CCTK_REAL dJ111L, dJ112L, dJ113L, dJ122L, dJ123L, dJ133L, dJ211L, dJ212L, dJ213L, dJ222L, dJ223L, dJ233L, dJ311L, dJ312L, dJ313L, dJ322L, dJ323L, dJ333L, J11L, J12L, J13L, J21L, J22L, J23L, J31L, J32L, J33L;
+ 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 = dJ111[index];
- dJ112L = dJ112[index];
- dJ113L = dJ113[index];
- dJ122L = dJ122[index];
- dJ123L = dJ123[index];
- dJ133L = dJ133[index];
- dJ211L = dJ211[index];
- dJ212L = dJ212[index];
- dJ213L = dJ213[index];
- dJ222L = dJ222[index];
- dJ223L = dJ223[index];
- dJ233L = dJ233[index];
- dJ311L = dJ311[index];
- dJ312L = dJ312[index];
- dJ313L = dJ313[index];
- dJ322L = dJ322[index];
- dJ323L = dJ323[index];
- dJ333L = dJ333[index];
- J11L = J11[index];
- J12L = J12[index];
- J13L = J13[index];
- J21L = J21[index];
- J22L = J22[index];
- J23L = J23[index];
- J31L = J31[index];
- J32L = J32[index];
- J33L = J33[index];
+ dJ111L = vec_load(dJ111[index]);
+ dJ112L = vec_load(dJ112[index]);
+ dJ113L = vec_load(dJ113[index]);
+ dJ122L = vec_load(dJ122[index]);
+ dJ123L = vec_load(dJ123[index]);
+ dJ133L = vec_load(dJ133[index]);
+ dJ211L = vec_load(dJ211[index]);
+ dJ212L = vec_load(dJ212[index]);
+ dJ213L = vec_load(dJ213[index]);
+ dJ222L = vec_load(dJ222[index]);
+ dJ223L = vec_load(dJ223[index]);
+ dJ233L = vec_load(dJ233[index]);
+ dJ311L = vec_load(dJ311[index]);
+ dJ312L = vec_load(dJ312[index]);
+ dJ313L = vec_load(dJ313[index]);
+ dJ322L = vec_load(dJ322[index]);
+ dJ323L = vec_load(dJ323[index]);
+ dJ333L = vec_load(dJ333[index]);
+ J11L = vec_load(J11[index]);
+ J12L = vec_load(J12[index]);
+ J13L = vec_load(J13[index]);
+ J21L = vec_load(J21[index]);
+ J22L = vec_load(J22[index]);
+ J23L = vec_load(J23[index]);
+ J31L = vec_load(J31[index]);
+ J32L = vec_load(J32[index]);
+ J33L = vec_load(J33[index]);
}
/* Include user supplied include files */
/* Precompute derivatives */
- CCTK_REAL const PDstandardNth1alpha = PDstandardNth1(&alpha[index]);
- CCTK_REAL const PDstandardNth2alpha = PDstandardNth2(&alpha[index]);
- CCTK_REAL const PDstandardNth3alpha = PDstandardNth3(&alpha[index]);
- CCTK_REAL const PDstandardNth11alpha = PDstandardNth11(&alpha[index]);
- CCTK_REAL const PDstandardNth22alpha = PDstandardNth22(&alpha[index]);
- CCTK_REAL const PDstandardNth33alpha = PDstandardNth33(&alpha[index]);
- CCTK_REAL const PDstandardNth12alpha = PDstandardNth12(&alpha[index]);
- CCTK_REAL const PDstandardNth13alpha = PDstandardNth13(&alpha[index]);
- CCTK_REAL const PDstandardNth23alpha = PDstandardNth23(&alpha[index]);
- CCTK_REAL const PDstandardNth1beta1 = PDstandardNth1(&beta1[index]);
- CCTK_REAL const PDstandardNth2beta1 = PDstandardNth2(&beta1[index]);
- CCTK_REAL const PDstandardNth3beta1 = PDstandardNth3(&beta1[index]);
- CCTK_REAL const PDstandardNth11beta1 = PDstandardNth11(&beta1[index]);
- CCTK_REAL const PDstandardNth22beta1 = PDstandardNth22(&beta1[index]);
- CCTK_REAL const PDstandardNth33beta1 = PDstandardNth33(&beta1[index]);
- CCTK_REAL const PDstandardNth12beta1 = PDstandardNth12(&beta1[index]);
- CCTK_REAL const PDstandardNth13beta1 = PDstandardNth13(&beta1[index]);
- CCTK_REAL const PDstandardNth23beta1 = PDstandardNth23(&beta1[index]);
- CCTK_REAL const PDstandardNth1beta2 = PDstandardNth1(&beta2[index]);
- CCTK_REAL const PDstandardNth2beta2 = PDstandardNth2(&beta2[index]);
- CCTK_REAL const PDstandardNth3beta2 = PDstandardNth3(&beta2[index]);
- CCTK_REAL const PDstandardNth11beta2 = PDstandardNth11(&beta2[index]);
- CCTK_REAL const PDstandardNth22beta2 = PDstandardNth22(&beta2[index]);
- CCTK_REAL const PDstandardNth33beta2 = PDstandardNth33(&beta2[index]);
- CCTK_REAL const PDstandardNth12beta2 = PDstandardNth12(&beta2[index]);
- CCTK_REAL const PDstandardNth13beta2 = PDstandardNth13(&beta2[index]);
- CCTK_REAL const PDstandardNth23beta2 = PDstandardNth23(&beta2[index]);
- CCTK_REAL const PDstandardNth1beta3 = PDstandardNth1(&beta3[index]);
- CCTK_REAL const PDstandardNth2beta3 = PDstandardNth2(&beta3[index]);
- CCTK_REAL const PDstandardNth3beta3 = PDstandardNth3(&beta3[index]);
- CCTK_REAL const PDstandardNth11beta3 = PDstandardNth11(&beta3[index]);
- CCTK_REAL const PDstandardNth22beta3 = PDstandardNth22(&beta3[index]);
- CCTK_REAL const PDstandardNth33beta3 = PDstandardNth33(&beta3[index]);
- CCTK_REAL const PDstandardNth12beta3 = PDstandardNth12(&beta3[index]);
- CCTK_REAL const PDstandardNth13beta3 = PDstandardNth13(&beta3[index]);
- CCTK_REAL const PDstandardNth23beta3 = PDstandardNth23(&beta3[index]);
- CCTK_REAL const PDstandardNth1gt11 = PDstandardNth1(&gt11[index]);
- CCTK_REAL const PDstandardNth2gt11 = PDstandardNth2(&gt11[index]);
- CCTK_REAL const PDstandardNth3gt11 = PDstandardNth3(&gt11[index]);
- CCTK_REAL const PDstandardNth1gt12 = PDstandardNth1(&gt12[index]);
- CCTK_REAL const PDstandardNth2gt12 = PDstandardNth2(&gt12[index]);
- CCTK_REAL const PDstandardNth3gt12 = PDstandardNth3(&gt12[index]);
- CCTK_REAL const PDstandardNth1gt13 = PDstandardNth1(&gt13[index]);
- CCTK_REAL const PDstandardNth2gt13 = PDstandardNth2(&gt13[index]);
- CCTK_REAL const PDstandardNth3gt13 = PDstandardNth3(&gt13[index]);
- CCTK_REAL const PDstandardNth1gt22 = PDstandardNth1(&gt22[index]);
- CCTK_REAL const PDstandardNth2gt22 = PDstandardNth2(&gt22[index]);
- CCTK_REAL const PDstandardNth3gt22 = PDstandardNth3(&gt22[index]);
- CCTK_REAL const PDstandardNth1gt23 = PDstandardNth1(&gt23[index]);
- CCTK_REAL const PDstandardNth2gt23 = PDstandardNth2(&gt23[index]);
- CCTK_REAL const PDstandardNth3gt23 = PDstandardNth3(&gt23[index]);
- CCTK_REAL const PDstandardNth1gt33 = PDstandardNth1(&gt33[index]);
- CCTK_REAL const PDstandardNth2gt33 = PDstandardNth2(&gt33[index]);
- CCTK_REAL const PDstandardNth3gt33 = PDstandardNth3(&gt33[index]);
- CCTK_REAL const PDstandardNth1phi = PDstandardNth1(&phi[index]);
- CCTK_REAL const PDstandardNth2phi = PDstandardNth2(&phi[index]);
- CCTK_REAL const PDstandardNth3phi = PDstandardNth3(&phi[index]);
- CCTK_REAL const PDstandardNth1trK = PDstandardNth1(&trK[index]);
- CCTK_REAL const PDstandardNth2trK = PDstandardNth2(&trK[index]);
- CCTK_REAL const PDstandardNth3trK = PDstandardNth3(&trK[index]);
+ 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 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:
+ 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]);
+ 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:
+ 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]);
+ 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:
+ 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]);
+ 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:
+ 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]);
+ 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 JacPDstandardNth11alpha;
- CCTK_REAL JacPDstandardNth11beta1;
- CCTK_REAL JacPDstandardNth11beta2;
- CCTK_REAL JacPDstandardNth11beta3;
- CCTK_REAL JacPDstandardNth12alpha;
- CCTK_REAL JacPDstandardNth12beta1;
- CCTK_REAL JacPDstandardNth12beta2;
- CCTK_REAL JacPDstandardNth12beta3;
- CCTK_REAL JacPDstandardNth13alpha;
- CCTK_REAL JacPDstandardNth13beta1;
- CCTK_REAL JacPDstandardNth13beta2;
- CCTK_REAL JacPDstandardNth13beta3;
- CCTK_REAL JacPDstandardNth1alpha;
- CCTK_REAL JacPDstandardNth1beta1;
- CCTK_REAL JacPDstandardNth1beta2;
- CCTK_REAL JacPDstandardNth1beta3;
- CCTK_REAL JacPDstandardNth1gt11;
- CCTK_REAL JacPDstandardNth1gt12;
- CCTK_REAL JacPDstandardNth1gt13;
- CCTK_REAL JacPDstandardNth1gt22;
- CCTK_REAL JacPDstandardNth1gt23;
- CCTK_REAL JacPDstandardNth1gt33;
- CCTK_REAL JacPDstandardNth1phi;
- CCTK_REAL JacPDstandardNth1trK;
- CCTK_REAL JacPDstandardNth21alpha;
- CCTK_REAL JacPDstandardNth21beta1;
- CCTK_REAL JacPDstandardNth21beta2;
- CCTK_REAL JacPDstandardNth21beta3;
- CCTK_REAL JacPDstandardNth22alpha;
- CCTK_REAL JacPDstandardNth22beta1;
- CCTK_REAL JacPDstandardNth22beta2;
- CCTK_REAL JacPDstandardNth22beta3;
- CCTK_REAL JacPDstandardNth23alpha;
- CCTK_REAL JacPDstandardNth23beta1;
- CCTK_REAL JacPDstandardNth23beta2;
- CCTK_REAL JacPDstandardNth23beta3;
- CCTK_REAL JacPDstandardNth2alpha;
- CCTK_REAL JacPDstandardNth2beta1;
- CCTK_REAL JacPDstandardNth2beta2;
- CCTK_REAL JacPDstandardNth2beta3;
- CCTK_REAL JacPDstandardNth2gt11;
- CCTK_REAL JacPDstandardNth2gt12;
- CCTK_REAL JacPDstandardNth2gt13;
- CCTK_REAL JacPDstandardNth2gt22;
- CCTK_REAL JacPDstandardNth2gt23;
- CCTK_REAL JacPDstandardNth2gt33;
- CCTK_REAL JacPDstandardNth2phi;
- CCTK_REAL JacPDstandardNth2trK;
- CCTK_REAL JacPDstandardNth31alpha;
- CCTK_REAL JacPDstandardNth31beta1;
- CCTK_REAL JacPDstandardNth31beta2;
- CCTK_REAL JacPDstandardNth31beta3;
- CCTK_REAL JacPDstandardNth32alpha;
- CCTK_REAL JacPDstandardNth32beta1;
- CCTK_REAL JacPDstandardNth32beta2;
- CCTK_REAL JacPDstandardNth32beta3;
- CCTK_REAL JacPDstandardNth33alpha;
- CCTK_REAL JacPDstandardNth33beta1;
- CCTK_REAL JacPDstandardNth33beta2;
- CCTK_REAL JacPDstandardNth33beta3;
- CCTK_REAL JacPDstandardNth3alpha;
- CCTK_REAL JacPDstandardNth3beta1;
- CCTK_REAL JacPDstandardNth3beta2;
- CCTK_REAL JacPDstandardNth3beta3;
- CCTK_REAL JacPDstandardNth3gt11;
- CCTK_REAL JacPDstandardNth3gt12;
- CCTK_REAL JacPDstandardNth3gt13;
- CCTK_REAL JacPDstandardNth3gt22;
- CCTK_REAL JacPDstandardNth3gt23;
- CCTK_REAL JacPDstandardNth3gt33;
- CCTK_REAL JacPDstandardNth3phi;
- CCTK_REAL JacPDstandardNth3trK;
+ 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 JacPDstandardNth12alpha;
+ CCTK_REAL_VEC JacPDstandardNth12beta1;
+ CCTK_REAL_VEC JacPDstandardNth12beta2;
+ CCTK_REAL_VEC JacPDstandardNth12beta3;
+ CCTK_REAL_VEC JacPDstandardNth13alpha;
+ CCTK_REAL_VEC JacPDstandardNth13beta1;
+ CCTK_REAL_VEC JacPDstandardNth13beta2;
+ CCTK_REAL_VEC JacPDstandardNth13beta3;
+ 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 JacPDstandardNth1trK;
+ CCTK_REAL_VEC JacPDstandardNth21alpha;
+ CCTK_REAL_VEC JacPDstandardNth21beta1;
+ CCTK_REAL_VEC JacPDstandardNth21beta2;
+ CCTK_REAL_VEC JacPDstandardNth21beta3;
+ CCTK_REAL_VEC JacPDstandardNth22alpha;
+ CCTK_REAL_VEC JacPDstandardNth22beta1;
+ CCTK_REAL_VEC JacPDstandardNth22beta2;
+ CCTK_REAL_VEC JacPDstandardNth22beta3;
+ CCTK_REAL_VEC JacPDstandardNth23alpha;
+ CCTK_REAL_VEC JacPDstandardNth23beta1;
+ CCTK_REAL_VEC JacPDstandardNth23beta2;
+ CCTK_REAL_VEC JacPDstandardNth23beta3;
+ 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 JacPDstandardNth2trK;
+ CCTK_REAL_VEC JacPDstandardNth31alpha;
+ CCTK_REAL_VEC JacPDstandardNth31beta1;
+ CCTK_REAL_VEC JacPDstandardNth31beta2;
+ CCTK_REAL_VEC JacPDstandardNth31beta3;
+ CCTK_REAL_VEC JacPDstandardNth32alpha;
+ CCTK_REAL_VEC JacPDstandardNth32beta1;
+ CCTK_REAL_VEC JacPDstandardNth32beta2;
+ CCTK_REAL_VEC JacPDstandardNth32beta3;
+ CCTK_REAL_VEC JacPDstandardNth33alpha;
+ CCTK_REAL_VEC JacPDstandardNth33beta1;
+ CCTK_REAL_VEC JacPDstandardNth33beta2;
+ CCTK_REAL_VEC JacPDstandardNth33beta3;
+ 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 JacPDstandardNth3trK;
if (use_jacobian)
{
- JacPDstandardNth1alpha = J11L*PDstandardNth1alpha +
- J21L*PDstandardNth2alpha + J31L*PDstandardNth3alpha;
+ 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)));
- JacPDstandardNth1beta1 = J11L*PDstandardNth1beta1 +
- J21L*PDstandardNth2beta1 + J31L*PDstandardNth3beta1;
+ JacPDstandardNth1gt13 =
+ kmadd(J11L,PDstandardNth1gt13,kmadd(J21L,PDstandardNth2gt13,kmul(J31L,PDstandardNth3gt13)));
- JacPDstandardNth1beta2 = J11L*PDstandardNth1beta2 +
- J21L*PDstandardNth2beta2 + J31L*PDstandardNth3beta2;
+ JacPDstandardNth1gt22 =
+ kmadd(J11L,PDstandardNth1gt22,kmadd(J21L,PDstandardNth2gt22,kmul(J31L,PDstandardNth3gt22)));
- JacPDstandardNth1beta3 = J11L*PDstandardNth1beta3 +
- J21L*PDstandardNth2beta3 + J31L*PDstandardNth3beta3;
+ JacPDstandardNth1gt23 =
+ kmadd(J11L,PDstandardNth1gt23,kmadd(J21L,PDstandardNth2gt23,kmul(J31L,PDstandardNth3gt23)));
- JacPDstandardNth1gt11 = J11L*PDstandardNth1gt11 +
- J21L*PDstandardNth2gt11 + J31L*PDstandardNth3gt11;
+ JacPDstandardNth1gt33 =
+ kmadd(J11L,PDstandardNth1gt33,kmadd(J21L,PDstandardNth2gt33,kmul(J31L,PDstandardNth3gt33)));
- JacPDstandardNth1gt12 = J11L*PDstandardNth1gt12 +
- J21L*PDstandardNth2gt12 + J31L*PDstandardNth3gt12;
+ JacPDstandardNth1phi =
+ kmadd(J11L,PDstandardNth1phi,kmadd(J21L,PDstandardNth2phi,kmul(J31L,PDstandardNth3phi)));
- JacPDstandardNth1gt13 = J11L*PDstandardNth1gt13 +
- J21L*PDstandardNth2gt13 + J31L*PDstandardNth3gt13;
+ JacPDstandardNth1trK =
+ kmadd(J11L,PDstandardNth1trK,kmadd(J21L,PDstandardNth2trK,kmul(J31L,PDstandardNth3trK)));
- JacPDstandardNth1gt22 = J11L*PDstandardNth1gt22 +
- J21L*PDstandardNth2gt22 + J31L*PDstandardNth3gt22;
+ JacPDstandardNth2alpha =
+ kmadd(J12L,PDstandardNth1alpha,kmadd(J22L,PDstandardNth2alpha,kmul(J32L,PDstandardNth3alpha)));
- JacPDstandardNth1gt23 = J11L*PDstandardNth1gt23 +
- J21L*PDstandardNth2gt23 + J31L*PDstandardNth3gt23;
+ JacPDstandardNth2beta1 =
+ kmadd(J12L,PDstandardNth1beta1,kmadd(J22L,PDstandardNth2beta1,kmul(J32L,PDstandardNth3beta1)));
- JacPDstandardNth1gt33 = J11L*PDstandardNth1gt33 +
- J21L*PDstandardNth2gt33 + J31L*PDstandardNth3gt33;
+ JacPDstandardNth2beta2 =
+ kmadd(J12L,PDstandardNth1beta2,kmadd(J22L,PDstandardNth2beta2,kmul(J32L,PDstandardNth3beta2)));
- JacPDstandardNth1phi = J11L*PDstandardNth1phi + J21L*PDstandardNth2phi
- + J31L*PDstandardNth3phi;
+ JacPDstandardNth2beta3 =
+ kmadd(J12L,PDstandardNth1beta3,kmadd(J22L,PDstandardNth2beta3,kmul(J32L,PDstandardNth3beta3)));
- JacPDstandardNth1trK = J11L*PDstandardNth1trK + J21L*PDstandardNth2trK
- + J31L*PDstandardNth3trK;
+ JacPDstandardNth2gt11 =
+ kmadd(J12L,PDstandardNth1gt11,kmadd(J22L,PDstandardNth2gt11,kmul(J32L,PDstandardNth3gt11)));
- JacPDstandardNth2alpha = J12L*PDstandardNth1alpha +
- J22L*PDstandardNth2alpha + J32L*PDstandardNth3alpha;
+ JacPDstandardNth2gt12 =
+ kmadd(J12L,PDstandardNth1gt12,kmadd(J22L,PDstandardNth2gt12,kmul(J32L,PDstandardNth3gt12)));
- JacPDstandardNth2beta1 = J12L*PDstandardNth1beta1 +
- J22L*PDstandardNth2beta1 + J32L*PDstandardNth3beta1;
+ JacPDstandardNth2gt13 =
+ kmadd(J12L,PDstandardNth1gt13,kmadd(J22L,PDstandardNth2gt13,kmul(J32L,PDstandardNth3gt13)));
- JacPDstandardNth2beta2 = J12L*PDstandardNth1beta2 +
- J22L*PDstandardNth2beta2 + J32L*PDstandardNth3beta2;
+ JacPDstandardNth2gt22 =
+ kmadd(J12L,PDstandardNth1gt22,kmadd(J22L,PDstandardNth2gt22,kmul(J32L,PDstandardNth3gt22)));
- JacPDstandardNth2beta3 = J12L*PDstandardNth1beta3 +
- J22L*PDstandardNth2beta3 + J32L*PDstandardNth3beta3;
+ JacPDstandardNth2gt23 =
+ kmadd(J12L,PDstandardNth1gt23,kmadd(J22L,PDstandardNth2gt23,kmul(J32L,PDstandardNth3gt23)));
- JacPDstandardNth2gt11 = J12L*PDstandardNth1gt11 +
- J22L*PDstandardNth2gt11 + J32L*PDstandardNth3gt11;
+ JacPDstandardNth2gt33 =
+ kmadd(J12L,PDstandardNth1gt33,kmadd(J22L,PDstandardNth2gt33,kmul(J32L,PDstandardNth3gt33)));
- JacPDstandardNth2gt12 = J12L*PDstandardNth1gt12 +
- J22L*PDstandardNth2gt12 + J32L*PDstandardNth3gt12;
+ JacPDstandardNth2phi =
+ kmadd(J12L,PDstandardNth1phi,kmadd(J22L,PDstandardNth2phi,kmul(J32L,PDstandardNth3phi)));
- JacPDstandardNth2gt13 = J12L*PDstandardNth1gt13 +
- J22L*PDstandardNth2gt13 + J32L*PDstandardNth3gt13;
+ JacPDstandardNth2trK =
+ kmadd(J12L,PDstandardNth1trK,kmadd(J22L,PDstandardNth2trK,kmul(J32L,PDstandardNth3trK)));
- JacPDstandardNth2gt22 = J12L*PDstandardNth1gt22 +
- J22L*PDstandardNth2gt22 + J32L*PDstandardNth3gt22;
+ JacPDstandardNth3alpha =
+ kmadd(J13L,PDstandardNth1alpha,kmadd(J23L,PDstandardNth2alpha,kmul(J33L,PDstandardNth3alpha)));
- JacPDstandardNth2gt23 = J12L*PDstandardNth1gt23 +
- J22L*PDstandardNth2gt23 + J32L*PDstandardNth3gt23;
+ JacPDstandardNth3beta1 =
+ kmadd(J13L,PDstandardNth1beta1,kmadd(J23L,PDstandardNth2beta1,kmul(J33L,PDstandardNth3beta1)));
- JacPDstandardNth2gt33 = J12L*PDstandardNth1gt33 +
- J22L*PDstandardNth2gt33 + J32L*PDstandardNth3gt33;
+ JacPDstandardNth3beta2 =
+ kmadd(J13L,PDstandardNth1beta2,kmadd(J23L,PDstandardNth2beta2,kmul(J33L,PDstandardNth3beta2)));
- JacPDstandardNth2phi = J12L*PDstandardNth1phi + J22L*PDstandardNth2phi
- + J32L*PDstandardNth3phi;
+ JacPDstandardNth3beta3 =
+ kmadd(J13L,PDstandardNth1beta3,kmadd(J23L,PDstandardNth2beta3,kmul(J33L,PDstandardNth3beta3)));
- JacPDstandardNth2trK = J12L*PDstandardNth1trK + J22L*PDstandardNth2trK
- + J32L*PDstandardNth3trK;
+ JacPDstandardNth3gt11 =
+ kmadd(J13L,PDstandardNth1gt11,kmadd(J23L,PDstandardNth2gt11,kmul(J33L,PDstandardNth3gt11)));
- JacPDstandardNth3alpha = J13L*PDstandardNth1alpha +
- J23L*PDstandardNth2alpha + J33L*PDstandardNth3alpha;
+ JacPDstandardNth3gt12 =
+ kmadd(J13L,PDstandardNth1gt12,kmadd(J23L,PDstandardNth2gt12,kmul(J33L,PDstandardNth3gt12)));
- JacPDstandardNth3beta1 = J13L*PDstandardNth1beta1 +
- J23L*PDstandardNth2beta1 + J33L*PDstandardNth3beta1;
+ JacPDstandardNth3gt13 =
+ kmadd(J13L,PDstandardNth1gt13,kmadd(J23L,PDstandardNth2gt13,kmul(J33L,PDstandardNth3gt13)));
- JacPDstandardNth3beta2 = J13L*PDstandardNth1beta2 +
- J23L*PDstandardNth2beta2 + J33L*PDstandardNth3beta2;
+ JacPDstandardNth3gt22 =
+ kmadd(J13L,PDstandardNth1gt22,kmadd(J23L,PDstandardNth2gt22,kmul(J33L,PDstandardNth3gt22)));
- JacPDstandardNth3beta3 = J13L*PDstandardNth1beta3 +
- J23L*PDstandardNth2beta3 + J33L*PDstandardNth3beta3;
+ JacPDstandardNth3gt23 =
+ kmadd(J13L,PDstandardNth1gt23,kmadd(J23L,PDstandardNth2gt23,kmul(J33L,PDstandardNth3gt23)));
- JacPDstandardNth3gt11 = J13L*PDstandardNth1gt11 +
- J23L*PDstandardNth2gt11 + J33L*PDstandardNth3gt11;
+ JacPDstandardNth3gt33 =
+ kmadd(J13L,PDstandardNth1gt33,kmadd(J23L,PDstandardNth2gt33,kmul(J33L,PDstandardNth3gt33)));
- JacPDstandardNth3gt12 = J13L*PDstandardNth1gt12 +
- J23L*PDstandardNth2gt12 + J33L*PDstandardNth3gt12;
+ JacPDstandardNth3phi =
+ kmadd(J13L,PDstandardNth1phi,kmadd(J23L,PDstandardNth2phi,kmul(J33L,PDstandardNth3phi)));
- JacPDstandardNth3gt13 = J13L*PDstandardNth1gt13 +
- J23L*PDstandardNth2gt13 + J33L*PDstandardNth3gt13;
+ JacPDstandardNth3trK =
+ kmadd(J13L,PDstandardNth1trK,kmadd(J23L,PDstandardNth2trK,kmul(J33L,PDstandardNth3trK)));
- JacPDstandardNth3gt22 = J13L*PDstandardNth1gt22 +
- J23L*PDstandardNth2gt22 + J33L*PDstandardNth3gt22;
+ 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))))))));
- JacPDstandardNth3gt23 = J13L*PDstandardNth1gt23 +
- J23L*PDstandardNth2gt23 + J33L*PDstandardNth3gt23;
+ 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))))))));
- JacPDstandardNth3gt33 = J13L*PDstandardNth1gt33 +
- J23L*PDstandardNth2gt33 + J33L*PDstandardNth3gt33;
+ 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))))))));
- JacPDstandardNth3phi = J13L*PDstandardNth1phi + J23L*PDstandardNth2phi
- + J33L*PDstandardNth3phi;
+ 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))))))));
- JacPDstandardNth3trK = J13L*PDstandardNth1trK + J23L*PDstandardNth2trK
- + J33L*PDstandardNth3trK;
-
- JacPDstandardNth11alpha = dJ111L*PDstandardNth1alpha +
- 2*(J11L*(J21L*PDstandardNth12alpha + J31L*PDstandardNth13alpha) +
- J21L*J31L*PDstandardNth23alpha) + dJ211L*PDstandardNth2alpha +
- dJ311L*PDstandardNth3alpha + PDstandardNth11alpha*SQR(J11L) +
- PDstandardNth22alpha*SQR(J21L) + PDstandardNth33alpha*SQR(J31L);
-
- JacPDstandardNth11beta1 = dJ111L*PDstandardNth1beta1 +
- 2*(J11L*(J21L*PDstandardNth12beta1 + J31L*PDstandardNth13beta1) +
- J21L*J31L*PDstandardNth23beta1) + dJ211L*PDstandardNth2beta1 +
- dJ311L*PDstandardNth3beta1 + PDstandardNth11beta1*SQR(J11L) +
- PDstandardNth22beta1*SQR(J21L) + PDstandardNth33beta1*SQR(J31L);
-
- JacPDstandardNth11beta2 = dJ111L*PDstandardNth1beta2 +
- 2*(J11L*(J21L*PDstandardNth12beta2 + J31L*PDstandardNth13beta2) +
- J21L*J31L*PDstandardNth23beta2) + dJ211L*PDstandardNth2beta2 +
- dJ311L*PDstandardNth3beta2 + PDstandardNth11beta2*SQR(J11L) +
- PDstandardNth22beta2*SQR(J21L) + PDstandardNth33beta2*SQR(J31L);
-
- JacPDstandardNth11beta3 = dJ111L*PDstandardNth1beta3 +
- 2*(J11L*(J21L*PDstandardNth12beta3 + J31L*PDstandardNth13beta3) +
- J21L*J31L*PDstandardNth23beta3) + dJ211L*PDstandardNth2beta3 +
- dJ311L*PDstandardNth3beta3 + PDstandardNth11beta3*SQR(J11L) +
- PDstandardNth22beta3*SQR(J21L) + PDstandardNth33beta3*SQR(J31L);
-
- JacPDstandardNth22alpha = dJ122L*PDstandardNth1alpha +
- 2*(J12L*(J22L*PDstandardNth12alpha + J32L*PDstandardNth13alpha) +
- J22L*J32L*PDstandardNth23alpha) + dJ222L*PDstandardNth2alpha +
- dJ322L*PDstandardNth3alpha + PDstandardNth11alpha*SQR(J12L) +
- PDstandardNth22alpha*SQR(J22L) + PDstandardNth33alpha*SQR(J32L);
-
- JacPDstandardNth22beta1 = dJ122L*PDstandardNth1beta1 +
- 2*(J12L*(J22L*PDstandardNth12beta1 + J32L*PDstandardNth13beta1) +
- J22L*J32L*PDstandardNth23beta1) + dJ222L*PDstandardNth2beta1 +
- dJ322L*PDstandardNth3beta1 + PDstandardNth11beta1*SQR(J12L) +
- PDstandardNth22beta1*SQR(J22L) + PDstandardNth33beta1*SQR(J32L);
-
- JacPDstandardNth22beta2 = dJ122L*PDstandardNth1beta2 +
- 2*(J12L*(J22L*PDstandardNth12beta2 + J32L*PDstandardNth13beta2) +
- J22L*J32L*PDstandardNth23beta2) + dJ222L*PDstandardNth2beta2 +
- dJ322L*PDstandardNth3beta2 + PDstandardNth11beta2*SQR(J12L) +
- PDstandardNth22beta2*SQR(J22L) + PDstandardNth33beta2*SQR(J32L);
-
- JacPDstandardNth22beta3 = dJ122L*PDstandardNth1beta3 +
- 2*(J12L*(J22L*PDstandardNth12beta3 + J32L*PDstandardNth13beta3) +
- J22L*J32L*PDstandardNth23beta3) + dJ222L*PDstandardNth2beta3 +
- dJ322L*PDstandardNth3beta3 + PDstandardNth11beta3*SQR(J12L) +
- PDstandardNth22beta3*SQR(J22L) + PDstandardNth33beta3*SQR(J32L);
-
- JacPDstandardNth33alpha = dJ133L*PDstandardNth1alpha +
- 2*(J13L*(J23L*PDstandardNth12alpha + J33L*PDstandardNth13alpha) +
- J23L*J33L*PDstandardNth23alpha) + dJ233L*PDstandardNth2alpha +
- dJ333L*PDstandardNth3alpha + PDstandardNth11alpha*SQR(J13L) +
- PDstandardNth22alpha*SQR(J23L) + PDstandardNth33alpha*SQR(J33L);
-
- JacPDstandardNth33beta1 = dJ133L*PDstandardNth1beta1 +
- 2*(J13L*(J23L*PDstandardNth12beta1 + J33L*PDstandardNth13beta1) +
- J23L*J33L*PDstandardNth23beta1) + dJ233L*PDstandardNth2beta1 +
- dJ333L*PDstandardNth3beta1 + PDstandardNth11beta1*SQR(J13L) +
- PDstandardNth22beta1*SQR(J23L) + PDstandardNth33beta1*SQR(J33L);
-
- JacPDstandardNth33beta2 = dJ133L*PDstandardNth1beta2 +
- 2*(J13L*(J23L*PDstandardNth12beta2 + J33L*PDstandardNth13beta2) +
- J23L*J33L*PDstandardNth23beta2) + dJ233L*PDstandardNth2beta2 +
- dJ333L*PDstandardNth3beta2 + PDstandardNth11beta2*SQR(J13L) +
- PDstandardNth22beta2*SQR(J23L) + PDstandardNth33beta2*SQR(J33L);
-
- JacPDstandardNth33beta3 = dJ133L*PDstandardNth1beta3 +
- 2*(J13L*(J23L*PDstandardNth12beta3 + J33L*PDstandardNth13beta3) +
- J23L*J33L*PDstandardNth23beta3) + dJ233L*PDstandardNth2beta3 +
- dJ333L*PDstandardNth3beta3 + PDstandardNth11beta3*SQR(J13L) +
- PDstandardNth22beta3*SQR(J23L) + PDstandardNth33beta3*SQR(J33L);
-
- JacPDstandardNth12alpha = J12L*(J11L*PDstandardNth11alpha +
- J21L*PDstandardNth12alpha + J31L*PDstandardNth13alpha) +
- J11L*(J22L*PDstandardNth12alpha + J32L*PDstandardNth13alpha) +
- dJ112L*PDstandardNth1alpha + J22L*(J21L*PDstandardNth22alpha +
- J31L*PDstandardNth23alpha) + dJ212L*PDstandardNth2alpha +
- J32L*(J21L*PDstandardNth23alpha + J31L*PDstandardNth33alpha) +
- dJ312L*PDstandardNth3alpha;
-
- JacPDstandardNth12beta1 = J12L*(J11L*PDstandardNth11beta1 +
- J21L*PDstandardNth12beta1 + J31L*PDstandardNth13beta1) +
- J11L*(J22L*PDstandardNth12beta1 + J32L*PDstandardNth13beta1) +
- dJ112L*PDstandardNth1beta1 + J22L*(J21L*PDstandardNth22beta1 +
- J31L*PDstandardNth23beta1) + dJ212L*PDstandardNth2beta1 +
- J32L*(J21L*PDstandardNth23beta1 + J31L*PDstandardNth33beta1) +
- dJ312L*PDstandardNth3beta1;
-
- JacPDstandardNth12beta2 = J12L*(J11L*PDstandardNth11beta2 +
- J21L*PDstandardNth12beta2 + J31L*PDstandardNth13beta2) +
- J11L*(J22L*PDstandardNth12beta2 + J32L*PDstandardNth13beta2) +
- dJ112L*PDstandardNth1beta2 + J22L*(J21L*PDstandardNth22beta2 +
- J31L*PDstandardNth23beta2) + dJ212L*PDstandardNth2beta2 +
- J32L*(J21L*PDstandardNth23beta2 + J31L*PDstandardNth33beta2) +
- dJ312L*PDstandardNth3beta2;
-
- JacPDstandardNth12beta3 = J12L*(J11L*PDstandardNth11beta3 +
- J21L*PDstandardNth12beta3 + J31L*PDstandardNth13beta3) +
- J11L*(J22L*PDstandardNth12beta3 + J32L*PDstandardNth13beta3) +
- dJ112L*PDstandardNth1beta3 + J22L*(J21L*PDstandardNth22beta3 +
- J31L*PDstandardNth23beta3) + dJ212L*PDstandardNth2beta3 +
- J32L*(J21L*PDstandardNth23beta3 + J31L*PDstandardNth33beta3) +
- dJ312L*PDstandardNth3beta3;
-
- JacPDstandardNth13alpha = J13L*(J11L*PDstandardNth11alpha +
- J21L*PDstandardNth12alpha + J31L*PDstandardNth13alpha) +
- J11L*(J23L*PDstandardNth12alpha + J33L*PDstandardNth13alpha) +
- dJ113L*PDstandardNth1alpha + J23L*(J21L*PDstandardNth22alpha +
- J31L*PDstandardNth23alpha) + dJ213L*PDstandardNth2alpha +
- J33L*(J21L*PDstandardNth23alpha + J31L*PDstandardNth33alpha) +
- dJ313L*PDstandardNth3alpha;
-
- JacPDstandardNth13beta1 = J13L*(J11L*PDstandardNth11beta1 +
- J21L*PDstandardNth12beta1 + J31L*PDstandardNth13beta1) +
- J11L*(J23L*PDstandardNth12beta1 + J33L*PDstandardNth13beta1) +
- dJ113L*PDstandardNth1beta1 + J23L*(J21L*PDstandardNth22beta1 +
- J31L*PDstandardNth23beta1) + dJ213L*PDstandardNth2beta1 +
- J33L*(J21L*PDstandardNth23beta1 + J31L*PDstandardNth33beta1) +
- dJ313L*PDstandardNth3beta1;
-
- JacPDstandardNth13beta2 = J13L*(J11L*PDstandardNth11beta2 +
- J21L*PDstandardNth12beta2 + J31L*PDstandardNth13beta2) +
- J11L*(J23L*PDstandardNth12beta2 + J33L*PDstandardNth13beta2) +
- dJ113L*PDstandardNth1beta2 + J23L*(J21L*PDstandardNth22beta2 +
- J31L*PDstandardNth23beta2) + dJ213L*PDstandardNth2beta2 +
- J33L*(J21L*PDstandardNth23beta2 + J31L*PDstandardNth33beta2) +
- dJ313L*PDstandardNth3beta2;
-
- JacPDstandardNth13beta3 = J13L*(J11L*PDstandardNth11beta3 +
- J21L*PDstandardNth12beta3 + J31L*PDstandardNth13beta3) +
- J11L*(J23L*PDstandardNth12beta3 + J33L*PDstandardNth13beta3) +
- dJ113L*PDstandardNth1beta3 + J23L*(J21L*PDstandardNth22beta3 +
- J31L*PDstandardNth23beta3) + dJ213L*PDstandardNth2beta3 +
- J33L*(J21L*PDstandardNth23beta3 + J31L*PDstandardNth33beta3) +
- dJ313L*PDstandardNth3beta3;
-
- JacPDstandardNth21alpha = J12L*(J11L*PDstandardNth11alpha +
- J21L*PDstandardNth12alpha + J31L*PDstandardNth13alpha) +
- J11L*(J22L*PDstandardNth12alpha + J32L*PDstandardNth13alpha) +
- dJ112L*PDstandardNth1alpha + J22L*(J21L*PDstandardNth22alpha +
- J31L*PDstandardNth23alpha) + dJ212L*PDstandardNth2alpha +
- J32L*(J21L*PDstandardNth23alpha + J31L*PDstandardNth33alpha) +
- dJ312L*PDstandardNth3alpha;
-
- JacPDstandardNth21beta1 = J12L*(J11L*PDstandardNth11beta1 +
- J21L*PDstandardNth12beta1 + J31L*PDstandardNth13beta1) +
- J11L*(J22L*PDstandardNth12beta1 + J32L*PDstandardNth13beta1) +
- dJ112L*PDstandardNth1beta1 + J22L*(J21L*PDstandardNth22beta1 +
- J31L*PDstandardNth23beta1) + dJ212L*PDstandardNth2beta1 +
- J32L*(J21L*PDstandardNth23beta1 + J31L*PDstandardNth33beta1) +
- dJ312L*PDstandardNth3beta1;
-
- JacPDstandardNth21beta2 = J12L*(J11L*PDstandardNth11beta2 +
- J21L*PDstandardNth12beta2 + J31L*PDstandardNth13beta2) +
- J11L*(J22L*PDstandardNth12beta2 + J32L*PDstandardNth13beta2) +
- dJ112L*PDstandardNth1beta2 + J22L*(J21L*PDstandardNth22beta2 +
- J31L*PDstandardNth23beta2) + dJ212L*PDstandardNth2beta2 +
- J32L*(J21L*PDstandardNth23beta2 + J31L*PDstandardNth33beta2) +
- dJ312L*PDstandardNth3beta2;
-
- JacPDstandardNth21beta3 = J12L*(J11L*PDstandardNth11beta3 +
- J21L*PDstandardNth12beta3 + J31L*PDstandardNth13beta3) +
- J11L*(J22L*PDstandardNth12beta3 + J32L*PDstandardNth13beta3) +
- dJ112L*PDstandardNth1beta3 + J22L*(J21L*PDstandardNth22beta3 +
- J31L*PDstandardNth23beta3) + dJ212L*PDstandardNth2beta3 +
- J32L*(J21L*PDstandardNth23beta3 + J31L*PDstandardNth33beta3) +
- dJ312L*PDstandardNth3beta3;
-
- JacPDstandardNth23alpha = J13L*(J12L*PDstandardNth11alpha +
- J22L*PDstandardNth12alpha + J32L*PDstandardNth13alpha) +
- J12L*(J23L*PDstandardNth12alpha + J33L*PDstandardNth13alpha) +
- dJ123L*PDstandardNth1alpha + J23L*(J22L*PDstandardNth22alpha +
- J32L*PDstandardNth23alpha) + dJ223L*PDstandardNth2alpha +
- J33L*(J22L*PDstandardNth23alpha + J32L*PDstandardNth33alpha) +
- dJ323L*PDstandardNth3alpha;
-
- JacPDstandardNth23beta1 = J13L*(J12L*PDstandardNth11beta1 +
- J22L*PDstandardNth12beta1 + J32L*PDstandardNth13beta1) +
- J12L*(J23L*PDstandardNth12beta1 + J33L*PDstandardNth13beta1) +
- dJ123L*PDstandardNth1beta1 + J23L*(J22L*PDstandardNth22beta1 +
- J32L*PDstandardNth23beta1) + dJ223L*PDstandardNth2beta1 +
- J33L*(J22L*PDstandardNth23beta1 + J32L*PDstandardNth33beta1) +
- dJ323L*PDstandardNth3beta1;
-
- JacPDstandardNth23beta2 = J13L*(J12L*PDstandardNth11beta2 +
- J22L*PDstandardNth12beta2 + J32L*PDstandardNth13beta2) +
- J12L*(J23L*PDstandardNth12beta2 + J33L*PDstandardNth13beta2) +
- dJ123L*PDstandardNth1beta2 + J23L*(J22L*PDstandardNth22beta2 +
- J32L*PDstandardNth23beta2) + dJ223L*PDstandardNth2beta2 +
- J33L*(J22L*PDstandardNth23beta2 + J32L*PDstandardNth33beta2) +
- dJ323L*PDstandardNth3beta2;
-
- JacPDstandardNth23beta3 = J13L*(J12L*PDstandardNth11beta3 +
- J22L*PDstandardNth12beta3 + J32L*PDstandardNth13beta3) +
- J12L*(J23L*PDstandardNth12beta3 + J33L*PDstandardNth13beta3) +
- dJ123L*PDstandardNth1beta3 + J23L*(J22L*PDstandardNth22beta3 +
- J32L*PDstandardNth23beta3) + dJ223L*PDstandardNth2beta3 +
- J33L*(J22L*PDstandardNth23beta3 + J32L*PDstandardNth33beta3) +
- dJ323L*PDstandardNth3beta3;
-
- JacPDstandardNth31alpha = J13L*(J11L*PDstandardNth11alpha +
- J21L*PDstandardNth12alpha + J31L*PDstandardNth13alpha) +
- J11L*(J23L*PDstandardNth12alpha + J33L*PDstandardNth13alpha) +
- dJ113L*PDstandardNth1alpha + J23L*(J21L*PDstandardNth22alpha +
- J31L*PDstandardNth23alpha) + dJ213L*PDstandardNth2alpha +
- J33L*(J21L*PDstandardNth23alpha + J31L*PDstandardNth33alpha) +
- dJ313L*PDstandardNth3alpha;
-
- JacPDstandardNth31beta1 = J13L*(J11L*PDstandardNth11beta1 +
- J21L*PDstandardNth12beta1 + J31L*PDstandardNth13beta1) +
- J11L*(J23L*PDstandardNth12beta1 + J33L*PDstandardNth13beta1) +
- dJ113L*PDstandardNth1beta1 + J23L*(J21L*PDstandardNth22beta1 +
- J31L*PDstandardNth23beta1) + dJ213L*PDstandardNth2beta1 +
- J33L*(J21L*PDstandardNth23beta1 + J31L*PDstandardNth33beta1) +
- dJ313L*PDstandardNth3beta1;
-
- JacPDstandardNth31beta2 = J13L*(J11L*PDstandardNth11beta2 +
- J21L*PDstandardNth12beta2 + J31L*PDstandardNth13beta2) +
- J11L*(J23L*PDstandardNth12beta2 + J33L*PDstandardNth13beta2) +
- dJ113L*PDstandardNth1beta2 + J23L*(J21L*PDstandardNth22beta2 +
- J31L*PDstandardNth23beta2) + dJ213L*PDstandardNth2beta2 +
- J33L*(J21L*PDstandardNth23beta2 + J31L*PDstandardNth33beta2) +
- dJ313L*PDstandardNth3beta2;
-
- JacPDstandardNth31beta3 = J13L*(J11L*PDstandardNth11beta3 +
- J21L*PDstandardNth12beta3 + J31L*PDstandardNth13beta3) +
- J11L*(J23L*PDstandardNth12beta3 + J33L*PDstandardNth13beta3) +
- dJ113L*PDstandardNth1beta3 + J23L*(J21L*PDstandardNth22beta3 +
- J31L*PDstandardNth23beta3) + dJ213L*PDstandardNth2beta3 +
- J33L*(J21L*PDstandardNth23beta3 + J31L*PDstandardNth33beta3) +
- dJ313L*PDstandardNth3beta3;
-
- JacPDstandardNth32alpha = J13L*(J12L*PDstandardNth11alpha +
- J22L*PDstandardNth12alpha + J32L*PDstandardNth13alpha) +
- J12L*(J23L*PDstandardNth12alpha + J33L*PDstandardNth13alpha) +
- dJ123L*PDstandardNth1alpha + J23L*(J22L*PDstandardNth22alpha +
- J32L*PDstandardNth23alpha) + dJ223L*PDstandardNth2alpha +
- J33L*(J22L*PDstandardNth23alpha + J32L*PDstandardNth33alpha) +
- dJ323L*PDstandardNth3alpha;
-
- JacPDstandardNth32beta1 = J13L*(J12L*PDstandardNth11beta1 +
- J22L*PDstandardNth12beta1 + J32L*PDstandardNth13beta1) +
- J12L*(J23L*PDstandardNth12beta1 + J33L*PDstandardNth13beta1) +
- dJ123L*PDstandardNth1beta1 + J23L*(J22L*PDstandardNth22beta1 +
- J32L*PDstandardNth23beta1) + dJ223L*PDstandardNth2beta1 +
- J33L*(J22L*PDstandardNth23beta1 + J32L*PDstandardNth33beta1) +
- dJ323L*PDstandardNth3beta1;
-
- JacPDstandardNth32beta2 = J13L*(J12L*PDstandardNth11beta2 +
- J22L*PDstandardNth12beta2 + J32L*PDstandardNth13beta2) +
- J12L*(J23L*PDstandardNth12beta2 + J33L*PDstandardNth13beta2) +
- dJ123L*PDstandardNth1beta2 + J23L*(J22L*PDstandardNth22beta2 +
- J32L*PDstandardNth23beta2) + dJ223L*PDstandardNth2beta2 +
- J33L*(J22L*PDstandardNth23beta2 + J32L*PDstandardNth33beta2) +
- dJ323L*PDstandardNth3beta2;
-
- JacPDstandardNth32beta3 = J13L*(J12L*PDstandardNth11beta3 +
- J22L*PDstandardNth12beta3 + J32L*PDstandardNth13beta3) +
- J12L*(J23L*PDstandardNth12beta3 + J33L*PDstandardNth13beta3) +
- dJ123L*PDstandardNth1beta3 + J23L*(J22L*PDstandardNth22beta3 +
- J32L*PDstandardNth23beta3) + dJ223L*PDstandardNth2beta3 +
- J33L*(J22L*PDstandardNth23beta3 + J32L*PDstandardNth33beta3) +
- dJ323L*PDstandardNth3beta3;
+ 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))))))));
+
+ 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))))))));
+
+ 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)))))));
+
+ 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)))))));
+
+ 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)))))));
+
+ 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)))))));
+
+ 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)))))));
+
+ 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)))))));
}
else
{
@@ -931,344 +1086,399 @@ static void ML_BSSN_MP_O8_RHS1_Body(cGH const * restrict const cctkGH, int const
JacPDstandardNth32beta3 = PDstandardNth23beta3;
}
- ptrdiff_t dir1 = Sign(beta1L);
+ CCTK_REAL_VEC detgt = ToReal(1);
- ptrdiff_t dir2 = Sign(beta2L);
+ CCTK_REAL_VEC gtu11 = kmul(INV(detgt),kmsub(gt22L,gt33L,SQR(gt23L)));
- ptrdiff_t dir3 = Sign(beta3L);
+ 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 detgt = 1;
+ CCTK_REAL_VEC Gtl223 = kmul(JacPDstandardNth3gt22,ToReal(0.5));
- CCTK_REAL gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L));
+ CCTK_REAL_VEC Gtl233 =
+ kmadd(JacPDstandardNth2gt33,ToReal(-0.5),JacPDstandardNth3gt23);
- CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt);
+ CCTK_REAL_VEC Gtl311 =
+ kmadd(JacPDstandardNth3gt11,ToReal(-0.5),JacPDstandardNth1gt13);
- CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC Gtl312 =
+ kmul(kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth2gt13,JacPDstandardNth3gt12)),ToReal(0.5));
- CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L));
+ CCTK_REAL_VEC Gtl313 = kmul(JacPDstandardNth1gt33,ToReal(0.5));
- CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC Gtl322 =
+ kmadd(JacPDstandardNth3gt22,ToReal(-0.5),JacPDstandardNth2gt23);
- CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L));
+ CCTK_REAL_VEC Gtl323 = kmul(JacPDstandardNth2gt33,ToReal(0.5));
- CCTK_REAL Gtl111 = 0.5*JacPDstandardNth1gt11;
+ CCTK_REAL_VEC Gtl333 = kmul(JacPDstandardNth3gt33,ToReal(0.5));
- CCTK_REAL Gtl112 = 0.5*JacPDstandardNth2gt11;
+ CCTK_REAL_VEC Gt111 =
+ kmadd(Gtl111,gtu11,kmadd(Gtl211,gtu12,kmul(Gtl311,gtu13)));
- CCTK_REAL Gtl113 = 0.5*JacPDstandardNth3gt11;
+ CCTK_REAL_VEC Gt211 =
+ kmadd(Gtl111,gtu12,kmadd(Gtl211,gtu22,kmul(Gtl311,gtu23)));
- CCTK_REAL Gtl122 = -0.5*JacPDstandardNth1gt22 + JacPDstandardNth2gt12;
+ CCTK_REAL_VEC Gt311 =
+ kmadd(Gtl111,gtu13,kmadd(Gtl211,gtu23,kmul(Gtl311,gtu33)));
- CCTK_REAL Gtl123 = 0.5*(-JacPDstandardNth1gt23 + JacPDstandardNth2gt13
- + JacPDstandardNth3gt12);
+ CCTK_REAL_VEC Gt112 =
+ kmadd(Gtl112,gtu11,kmadd(Gtl212,gtu12,kmul(Gtl312,gtu13)));
- CCTK_REAL Gtl133 = -0.5*JacPDstandardNth1gt33 + JacPDstandardNth3gt13;
+ CCTK_REAL_VEC Gt212 =
+ kmadd(Gtl112,gtu12,kmadd(Gtl212,gtu22,kmul(Gtl312,gtu23)));
- CCTK_REAL Gtl211 = JacPDstandardNth1gt12 - 0.5*JacPDstandardNth2gt11;
+ CCTK_REAL_VEC Gt312 =
+ kmadd(Gtl112,gtu13,kmadd(Gtl212,gtu23,kmul(Gtl312,gtu33)));
- CCTK_REAL Gtl212 = 0.5*JacPDstandardNth1gt22;
+ CCTK_REAL_VEC Gt113 =
+ kmadd(Gtl113,gtu11,kmadd(Gtl213,gtu12,kmul(Gtl313,gtu13)));
- CCTK_REAL Gtl213 = 0.5*(JacPDstandardNth1gt23 - JacPDstandardNth2gt13
- + JacPDstandardNth3gt12);
+ CCTK_REAL_VEC Gt213 =
+ kmadd(Gtl113,gtu12,kmadd(Gtl213,gtu22,kmul(Gtl313,gtu23)));
- CCTK_REAL Gtl222 = 0.5*JacPDstandardNth2gt22;
+ CCTK_REAL_VEC Gt313 =
+ kmadd(Gtl113,gtu13,kmadd(Gtl213,gtu23,kmul(Gtl313,gtu33)));
- CCTK_REAL Gtl223 = 0.5*JacPDstandardNth3gt22;
+ CCTK_REAL_VEC Gt122 =
+ kmadd(Gtl122,gtu11,kmadd(Gtl222,gtu12,kmul(Gtl322,gtu13)));
- CCTK_REAL Gtl233 = -0.5*JacPDstandardNth2gt33 + JacPDstandardNth3gt23;
+ CCTK_REAL_VEC Gt222 =
+ kmadd(Gtl122,gtu12,kmadd(Gtl222,gtu22,kmul(Gtl322,gtu23)));
- CCTK_REAL Gtl311 = JacPDstandardNth1gt13 - 0.5*JacPDstandardNth3gt11;
+ CCTK_REAL_VEC Gt322 =
+ kmadd(Gtl122,gtu13,kmadd(Gtl222,gtu23,kmul(Gtl322,gtu33)));
- CCTK_REAL Gtl312 = 0.5*(JacPDstandardNth1gt23 + JacPDstandardNth2gt13
- - JacPDstandardNth3gt12);
+ CCTK_REAL_VEC Gt123 =
+ kmadd(Gtl123,gtu11,kmadd(Gtl223,gtu12,kmul(Gtl323,gtu13)));
- CCTK_REAL Gtl313 = 0.5*JacPDstandardNth1gt33;
+ CCTK_REAL_VEC Gt223 =
+ kmadd(Gtl123,gtu12,kmadd(Gtl223,gtu22,kmul(Gtl323,gtu23)));
- CCTK_REAL Gtl322 = JacPDstandardNth2gt23 - 0.5*JacPDstandardNth3gt22;
+ CCTK_REAL_VEC Gt323 =
+ kmadd(Gtl123,gtu13,kmadd(Gtl223,gtu23,kmul(Gtl323,gtu33)));
- CCTK_REAL Gtl323 = 0.5*JacPDstandardNth2gt33;
+ CCTK_REAL_VEC Gt133 =
+ kmadd(Gtl133,gtu11,kmadd(Gtl233,gtu12,kmul(Gtl333,gtu13)));
- CCTK_REAL Gtl333 = 0.5*JacPDstandardNth3gt33;
+ CCTK_REAL_VEC Gt233 =
+ kmadd(Gtl133,gtu12,kmadd(Gtl233,gtu22,kmul(Gtl333,gtu23)));
- CCTK_REAL Gt111 = Gtl111*gtu11 + Gtl211*gtu12 + Gtl311*gtu13;
+ CCTK_REAL_VEC Gt333 =
+ kmadd(Gtl133,gtu13,kmadd(Gtl233,gtu23,kmul(Gtl333,gtu33)));
- CCTK_REAL Gt211 = Gtl111*gtu12 + Gtl211*gtu22 + Gtl311*gtu23;
+ 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 Gt311 = Gtl111*gtu13 + Gtl211*gtu23 + Gtl311*gtu33;
+ 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 Gt112 = Gtl112*gtu11 + Gtl212*gtu12 + Gtl312*gtu13;
+ 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 Gt212 = Gtl112*gtu12 + Gtl212*gtu22 + Gtl312*gtu23;
+ CCTK_REAL_VEC fac1 =
+ IfThen(conformalMethod,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
- CCTK_REAL Gt312 = Gtl112*gtu13 + Gtl212*gtu23 + Gtl312*gtu33;
+ CCTK_REAL_VEC cdphi1 = kmul(fac1,JacPDstandardNth1phi);
- CCTK_REAL Gt113 = Gtl113*gtu11 + Gtl213*gtu12 + Gtl313*gtu13;
+ CCTK_REAL_VEC cdphi2 = kmul(fac1,JacPDstandardNth2phi);
- CCTK_REAL Gt213 = Gtl113*gtu12 + Gtl213*gtu22 + Gtl313*gtu23;
+ CCTK_REAL_VEC cdphi3 = kmul(fac1,JacPDstandardNth3phi);
- CCTK_REAL Gt313 = Gtl113*gtu13 + Gtl213*gtu23 + Gtl313*gtu33;
+ CCTK_REAL_VEC Atm11 =
+ kmadd(At11L,gtu11,kmadd(At12L,gtu12,kmul(At13L,gtu13)));
- CCTK_REAL Gt122 = Gtl122*gtu11 + Gtl222*gtu12 + Gtl322*gtu13;
+ CCTK_REAL_VEC Atm21 =
+ kmadd(At11L,gtu12,kmadd(At12L,gtu22,kmul(At13L,gtu23)));
- CCTK_REAL Gt222 = Gtl122*gtu12 + Gtl222*gtu22 + Gtl322*gtu23;
+ CCTK_REAL_VEC Atm31 =
+ kmadd(At11L,gtu13,kmadd(At12L,gtu23,kmul(At13L,gtu33)));
- CCTK_REAL Gt322 = Gtl122*gtu13 + Gtl222*gtu23 + Gtl322*gtu33;
+ CCTK_REAL_VEC Atm12 =
+ kmadd(At12L,gtu11,kmadd(At22L,gtu12,kmul(At23L,gtu13)));
- CCTK_REAL Gt123 = Gtl123*gtu11 + Gtl223*gtu12 + Gtl323*gtu13;
+ CCTK_REAL_VEC Atm22 =
+ kmadd(At12L,gtu12,kmadd(At22L,gtu22,kmul(At23L,gtu23)));
- CCTK_REAL Gt223 = Gtl123*gtu12 + Gtl223*gtu22 + Gtl323*gtu23;
+ CCTK_REAL_VEC Atm32 =
+ kmadd(At12L,gtu13,kmadd(At22L,gtu23,kmul(At23L,gtu33)));
- CCTK_REAL Gt323 = Gtl123*gtu13 + Gtl223*gtu23 + Gtl323*gtu33;
+ CCTK_REAL_VEC Atm13 =
+ kmadd(At13L,gtu11,kmadd(At23L,gtu12,kmul(At33L,gtu13)));
- CCTK_REAL Gt133 = Gtl133*gtu11 + Gtl233*gtu12 + Gtl333*gtu13;
+ CCTK_REAL_VEC Atm23 =
+ kmadd(At13L,gtu12,kmadd(At23L,gtu22,kmul(At33L,gtu23)));
- CCTK_REAL Gt233 = Gtl133*gtu12 + Gtl233*gtu22 + Gtl333*gtu23;
+ CCTK_REAL_VEC Atm33 =
+ kmadd(At13L,gtu13,kmadd(At23L,gtu23,kmul(At33L,gtu33)));
- CCTK_REAL Gt333 = Gtl133*gtu13 + Gtl233*gtu23 + Gtl333*gtu33;
+ CCTK_REAL_VEC Atu11 =
+ kmadd(Atm11,gtu11,kmadd(Atm12,gtu12,kmul(Atm13,gtu13)));
- CCTK_REAL Xtn1 = Gt111*gtu11 + Gt122*gtu22 + 2*(Gt112*gtu12 +
- Gt113*gtu13 + Gt123*gtu23) + Gt133*gtu33;
+ CCTK_REAL_VEC Atu12 =
+ kmadd(Atm11,gtu12,kmadd(Atm12,gtu22,kmul(Atm13,gtu23)));
- CCTK_REAL Xtn2 = Gt211*gtu11 + Gt222*gtu22 + 2*(Gt212*gtu12 +
- Gt213*gtu13 + Gt223*gtu23) + Gt233*gtu33;
+ CCTK_REAL_VEC Atu13 =
+ kmadd(Atm11,gtu13,kmadd(Atm12,gtu23,kmul(Atm13,gtu33)));
- CCTK_REAL Xtn3 = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu12 +
- Gt313*gtu13 + Gt323*gtu23) + Gt333*gtu33;
+ CCTK_REAL_VEC Atu22 =
+ kmadd(Atm21,gtu12,kmadd(Atm22,gtu22,kmul(Atm23,gtu23)));
- CCTK_REAL fac1 = IfThen(conformalMethod,-0.5*INV(phiL),1);
+ CCTK_REAL_VEC Atu23 =
+ kmadd(Atm21,gtu13,kmadd(Atm22,gtu23,kmul(Atm23,gtu33)));
- CCTK_REAL cdphi1 = fac1*JacPDstandardNth1phi;
+ CCTK_REAL_VEC Atu33 =
+ kmadd(Atm31,gtu13,kmadd(Atm32,gtu23,kmul(Atm33,gtu33)));
- CCTK_REAL cdphi2 = fac1*JacPDstandardNth2phi;
+ CCTK_REAL_VEC e4phi =
+ IfThen(conformalMethod,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
- CCTK_REAL cdphi3 = fac1*JacPDstandardNth3phi;
+ CCTK_REAL_VEC em4phi = INV(e4phi);
- CCTK_REAL Atm11 = At11L*gtu11 + At12L*gtu12 + At13L*gtu13;
+ 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 Atm21 = At11L*gtu12 + At12L*gtu22 + At13L*gtu23;
+ CCTK_REAL_VEC S1 =
+ kmul(INV(alphaL),kmadd(beta1L,eTxxL,kmadd(beta2L,eTxyL,kmsub(beta3L,eTxzL,eTtxL))));
- CCTK_REAL Atm31 = At11L*gtu13 + At12L*gtu23 + At13L*gtu33;
+ CCTK_REAL_VEC S2 =
+ kmul(INV(alphaL),kmadd(beta1L,eTxyL,kmadd(beta2L,eTyyL,kmsub(beta3L,eTyzL,eTtyL))));
- CCTK_REAL Atm12 = At12L*gtu11 + At22L*gtu12 + At23L*gtu13;
+ CCTK_REAL_VEC S3 =
+ kmul(INV(alphaL),kmadd(beta1L,eTxzL,kmadd(beta2L,eTyzL,kmsub(beta3L,eTzzL,eTtzL))));
- CCTK_REAL Atm22 = At12L*gtu12 + At22L*gtu22 + At23L*gtu23;
+ 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 Atm32 = At12L*gtu13 + At22L*gtu23 + At23L*gtu33;
+ 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 Atm13 = At13L*gtu11 + At23L*gtu12 + At33L*gtu13;
+ 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))))));
- CCTK_REAL Atm23 = At13L*gtu12 + At23L*gtu22 + At33L*gtu23;
+ CCTK_REAL_VEC gt12rhsL =
+ kmul(ToReal(0.333333333333333333333333333333),kmadd(alphaL,kmul(At12L,ToReal(-6)),kmadd(gt12L,kadd(JacPDstandardNth1beta1,kmadd(JacPDstandardNth3beta3,ToReal(-2),JacPDstandardNth2beta2)),kmul(kmadd(gt22L,JacPDstandardNth1beta2,kmadd(gt23L,JacPDstandardNth1beta3,kmadd(gt11L,JacPDstandardNth2beta1,kmul(gt13L,JacPDstandardNth2beta3)))),ToReal(3)))));
- CCTK_REAL Atm33 = At13L*gtu13 + At23L*gtu23 + At33L*gtu33;
+ CCTK_REAL_VEC gt13rhsL =
+ kmul(ToReal(0.333333333333333333333333333333),kmadd(alphaL,kmul(At13L,ToReal(-6)),kmadd(gt13L,kadd(JacPDstandardNth1beta1,kmadd(JacPDstandardNth2beta2,ToReal(-2),JacPDstandardNth3beta3)),kmul(kmadd(gt23L,JacPDstandardNth1beta2,kmadd(gt33L,JacPDstandardNth1beta3,kmadd(gt11L,JacPDstandardNth3beta1,kmul(gt12L,JacPDstandardNth3beta2)))),ToReal(3)))));
- CCTK_REAL Atu11 = Atm11*gtu11 + Atm12*gtu12 + Atm13*gtu13;
+ CCTK_REAL_VEC gt22rhsL =
+ kmul(ToReal(-0.666666666666666666666666666667),kmadd(kmadd(gt12L,JacPDstandardNth2beta1,kmul(gt23L,JacPDstandardNth2beta3)),ToReal(-3),kmadd(gt22L,kadd(JacPDstandardNth1beta1,kmadd(JacPDstandardNth2beta2,ToReal(-2),JacPDstandardNth3beta3)),kmul(alphaL,kmul(At22L,ToReal(3))))));
- CCTK_REAL Atu12 = Atm11*gtu12 + Atm12*gtu22 + Atm13*gtu23;
+ CCTK_REAL_VEC gt23rhsL =
+ kmul(ToReal(0.333333333333333333333333333333),kmadd(alphaL,kmul(At23L,ToReal(-6)),kmadd(gt23L,kadd(JacPDstandardNth2beta2,kmadd(JacPDstandardNth1beta1,ToReal(-2),JacPDstandardNth3beta3)),kmul(kmadd(gt13L,JacPDstandardNth2beta1,kmadd(gt33L,JacPDstandardNth2beta3,kmadd(gt12L,JacPDstandardNth3beta1,kmul(gt22L,JacPDstandardNth3beta2)))),ToReal(3)))));
- CCTK_REAL Atu13 = Atm11*gtu13 + Atm12*gtu23 + Atm13*gtu33;
+ CCTK_REAL_VEC gt33rhsL =
+ kmul(ToReal(-0.666666666666666666666666666667),kmadd(kmadd(gt13L,JacPDstandardNth3beta1,kmul(gt23L,JacPDstandardNth3beta2)),ToReal(-3),kmadd(gt33L,kadd(JacPDstandardNth1beta1,kmadd(JacPDstandardNth3beta3,ToReal(-2),JacPDstandardNth2beta2)),kmul(alphaL,kmul(At33L,ToReal(3))))));
- CCTK_REAL Atu22 = Atm21*gtu12 + Atm22*gtu22 + Atm23*gtu23;
+ 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),kmul(gtu33,JacPDstandardNth33beta1))))),ToReal(3),kmadd(gtu11,kadd(JacPDstandardNth12beta2,kmadd(JacPDstandardNth11beta1,ToReal(4),JacPDstandardNth13beta3)),kmadd(gtu12,kadd(JacPDstandardNth22beta2,kmadd(JacPDstandardNth21beta1,ToReal(4),JacPDstandardNth23beta3)),kmadd(gtu13,kadd(JacPDstandardNth32beta2,kmadd(JacPDstandardNth31beta1,ToReal(4),JacPDstandardNth33beta3)),kmul(alphaL,kmadd(kmadd(gtu11,S1,kmadd(gtu12,S2,kmul(gtu13,S3))),ToReal(-150.7964473723100754462068823974161384415),kmadd(kmadd(gtu11,JacPDstandardNth1trK,kmadd(gtu12,JacPDstandardNth2trK,kmul(gtu13,JacPDstandardNth3trK))),ToReal(-4),kmadd(ToReal(6),kmadd(Atu22,Gt122,kmadd(Atu33,Gt133,kmul(Atu11,kmadd(cdphi1,ToReal(6),Gt111)))),kmadd(kmadd(Atu23,Gt123,kmul(Atu12,kmadd(cdphi2,ToReal(3),Gt112))),ToReal(12),kmul(Atu13,kmadd(Gt113,ToReal(12),kmul(cdphi3,ToReal(36)))))))))))))))));
- CCTK_REAL Atu23 = Atm21*gtu13 + Atm22*gtu23 + Atm23*gtu33;
+ 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(gtu23,JacPDstandardNth23beta2,kmadd(gtu13,kadd(JacPDstandardNth13beta2,JacPDstandardNth31beta2),kmul(gtu33,JacPDstandardNth33beta2)))),ToReal(3),kmadd(gtu12,kadd(JacPDstandardNth11beta1,kadd(JacPDstandardNth13beta3,kmadd(JacPDstandardNth21beta2,ToReal(3),kmul(JacPDstandardNth12beta2,ToReal(4))))),kmadd(gtu22,kadd(JacPDstandardNth21beta1,kmadd(JacPDstandardNth22beta2,ToReal(4),JacPDstandardNth23beta3)),kmadd(gtu23,kadd(JacPDstandardNth31beta1,kmadd(JacPDstandardNth32beta2,ToReal(4),JacPDstandardNth33beta3)),kmul(alphaL,kmadd(kmadd(gtu12,S1,kmadd(gtu22,S2,kmul(gtu23,S3))),ToReal(-150.7964473723100754462068823974161384415),kmadd(kmadd(gtu12,JacPDstandardNth1trK,kmadd(gtu22,JacPDstandardNth2trK,kmul(gtu23,JacPDstandardNth3trK))),ToReal(-4),kmadd(ToReal(6),kmadd(Atu11,Gt211,kmadd(Atu33,Gt233,kmul(Atu22,kmadd(cdphi2,ToReal(6),Gt222)))),kmadd(kmadd(Atu13,Gt213,kmul(Atu12,kmadd(cdphi1,ToReal(3),Gt212))),ToReal(12),kmul(Atu23,kmadd(Gt223,ToReal(12),kmul(cdphi3,ToReal(36)))))))))))))))));
- CCTK_REAL Atu33 = Atm31*gtu13 + Atm32*gtu23 + Atm33*gtu33;
+ 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),kmadd(Xtn3,kmsub(kadd(JacPDstandardNth1beta1,JacPDstandardNth2beta2),ToReal(2),JacPDstandardNth3beta3),kmadd(kmadd(gtu11,JacPDstandardNth11beta3,kmadd(gtu12,kadd(JacPDstandardNth12beta3,JacPDstandardNth21beta3),kmadd(gtu22,JacPDstandardNth22beta3,kmul(gtu23,JacPDstandardNth32beta3)))),ToReal(3),kmadd(gtu13,kadd(JacPDstandardNth11beta1,kadd(JacPDstandardNth12beta2,kmadd(JacPDstandardNth31beta3,ToReal(3),kmul(JacPDstandardNth13beta3,ToReal(4))))),kmadd(gtu23,kadd(JacPDstandardNth21beta1,kmadd(JacPDstandardNth23beta3,ToReal(4),JacPDstandardNth22beta2)),kmadd(gtu33,kadd(JacPDstandardNth31beta1,kmadd(JacPDstandardNth33beta3,ToReal(4),JacPDstandardNth32beta2)),kmul(alphaL,kmadd(kmadd(gtu13,S1,kmadd(gtu23,S2,kmul(gtu33,S3))),ToReal(-150.7964473723100754462068823974161384415),kmadd(kmadd(gtu13,JacPDstandardNth1trK,kmadd(gtu23,JacPDstandardNth2trK,kmul(gtu33,JacPDstandardNth3trK))),ToReal(-4),kmadd(kmadd(Atu11,Gt311,kmul(Atu22,Gt322)),ToReal(6),kmadd(kmadd(Atu12,Gt312,kmadd(Atu13,kmadd(cdphi1,ToReal(3),Gt313),kmul(Atu23,kmadd(cdphi2,ToReal(3),Gt323)))),ToReal(12),kmul(Atu33,kmadd(Gt333,ToReal(6),kmul(cdphi3,ToReal(36)))))))))))))))));
- CCTK_REAL e4phi = IfThen(conformalMethod,INV(SQR(phiL)),exp(4*phiL));
+ CCTK_REAL_VEC Xt1rhsL = dotXt1;
- CCTK_REAL em4phi = INV(e4phi);
+ CCTK_REAL_VEC Xt2rhsL = dotXt2;
- CCTK_REAL rho = INV(SQR(alphaL))*(eTttL - 2*(beta2L*eTtyL +
- beta3L*eTtzL) + 2*(beta1L*(-eTtxL + beta2L*eTxyL + beta3L*eTxzL) +
- beta2L*beta3L*eTyzL) + eTxxL*SQR(beta1L) + eTyyL*SQR(beta2L) +
- eTzzL*SQR(beta3L));
+ CCTK_REAL_VEC Xt3rhsL = dotXt3;
- CCTK_REAL S1 = (-eTtxL + beta1L*eTxxL + beta2L*eTxyL +
- beta3L*eTxzL)*INV(alphaL);
+ CCTK_REAL_VEC dottrK =
+ kmsub(alphaL,kadd(SQR(Atm11),kadd(SQR(Atm22),kadd(SQR(Atm33),kmadd(SQR(trKL),ToReal(0.333333333333333333333333333333),kmadd(kmadd(Atm12,Atm21,kmadd(Atm13,Atm31,kmul(Atm23,Atm32))),ToReal(2),kmul(kadd(rho,trS),ToReal(12.56637061435917295385057353311801153679))))))),kmul(em4phi,knmsub(JacPDstandardNth1alpha,Xtn1,knmsub(JacPDstandardNth2alpha,Xtn2,knmsub(JacPDstandardNth3alpha,Xtn3,kmadd(gtu11,kmadd(cdphi1,kmul(JacPDstandardNth1alpha,ToReal(2)),JacPDstandardNth11alpha),kmadd(gtu12,kadd(JacPDstandardNth12alpha,kadd(JacPDstandardNth21alpha,kmadd(cdphi2,kmul(JacPDstandardNth1alpha,ToReal(2)),kmul(cdphi1,kmul(JacPDstandardNth2alpha,ToReal(2)))))),kmadd(gtu22,kmadd(cdphi2,kmul(JacPDstandardNth2alpha,ToReal(2)),JacPDstandardNth22alpha),kmadd(gtu13,kadd(JacPDstandardNth13alpha,kadd(JacPDstandardNth31alpha,kmadd(cdphi3,kmul(JacPDstandardNth1alpha,ToReal(2)),kmul(cdphi1,kmul(JacPDstandardNth3alpha,ToReal(2)))))),kmadd(gtu23,kadd(JacPDstandardNth23alpha,kadd(JacPDstandardNth32alpha,kmadd(cdphi3,kmul(JacPDstandardNth2alpha,ToReal(2)),kmul(cdphi2,kmul(JacPDstandardNth3alpha,ToReal(2)))))),kmul(gtu33,kmadd(cdphi3,kmul(JacPDstandardNth3alpha,ToReal(2)),JacPDstandardNth33alpha))))))))))));
- CCTK_REAL S2 = (-eTtyL + beta1L*eTxyL + beta2L*eTyyL +
- beta3L*eTyzL)*INV(alphaL);
+ CCTK_REAL_VEC trKrhsL = dottrK;
- CCTK_REAL S3 = (-eTtzL + beta1L*eTxzL + beta2L*eTyzL +
- beta3L*eTzzL)*INV(alphaL);
+ CCTK_REAL_VEC alpharhsL =
+ kneg(kmul(kpow(alphaL,harmonicN),kmul(ToReal(harmonicF),kmadd(ksub(AL,trKL),ToReal(LapseACoeff),trKL))));
- CCTK_REAL trS = em4phi*(eTxxL*gtu11 + eTyyL*gtu22 + 2*(eTxyL*gtu12 +
- eTxzL*gtu13 + eTyzL*gtu23) + eTzzL*gtu33);
+ CCTK_REAL_VEC ArhsL =
+ kmul(knmsub(AL,ToReal(AlphaDriver),dottrK),ToReal(LapseACoeff));
- CCTK_REAL phirhsL =
- IfThen(conformalMethod,phiL*(-0.333333333333333333333333333333*(JacPDstandardNth1beta1
- + JacPDstandardNth2beta2 + JacPDstandardNth3beta3) +
- 0.333333333333333333333333333333*alphaL*trKL),0.166666666666666666666666666667*(JacPDstandardNth1beta1
- + JacPDstandardNth2beta2 + JacPDstandardNth3beta3) -
- 0.166666666666666666666666666667*alphaL*trKL);
+ CCTK_REAL_VEC eta =
+ kfmin(ToReal(1),kmul(INV(rL),ToReal(SpatialBetaDriverRadius)));
- CCTK_REAL gt11rhsL = -0.666666666666666666666666666667*(3*alphaL*At11L
- - 3*(gt12L*JacPDstandardNth1beta2 + gt13L*JacPDstandardNth1beta3) +
- gt11L*(-2*JacPDstandardNth1beta1 + JacPDstandardNth2beta2 +
- JacPDstandardNth3beta3));
+ CCTK_REAL_VEC theta =
+ kfmin(ToReal(1),kexp(knmsub(rL,INV(ToReal(SpatialShiftGammaCoeffRadius)),ToReal(1))));
- CCTK_REAL gt12rhsL = 0.333333333333333333333333333333*(-6*alphaL*At12L
- + 3*(gt22L*JacPDstandardNth1beta2 + gt23L*JacPDstandardNth1beta3 +
- gt11L*JacPDstandardNth2beta1 + gt13L*JacPDstandardNth2beta3) +
- gt12L*(JacPDstandardNth1beta1 + JacPDstandardNth2beta2 -
- 2*JacPDstandardNth3beta3));
+ CCTK_REAL_VEC beta1rhsL;
+ CCTK_REAL_VEC beta2rhsL;
+ CCTK_REAL_VEC beta3rhsL;
- CCTK_REAL gt13rhsL = 0.333333333333333333333333333333*(-6*alphaL*At13L
- + 3*(gt23L*JacPDstandardNth1beta2 + gt33L*JacPDstandardNth1beta3 +
- gt11L*JacPDstandardNth3beta1 + gt12L*JacPDstandardNth3beta2) +
- gt13L*(JacPDstandardNth1beta1 - 2*JacPDstandardNth2beta2 +
- JacPDstandardNth3beta3));
+ if (harmonicShift)
+ {
+ beta1rhsL =
+ kmul(alphaL,kmul(phiL,kmul(ToReal(0.5),kmadd(kmadd(gtu11,JacPDstandardNth1alpha,kmadd(gtu12,JacPDstandardNth2alpha,kmul(gtu13,JacPDstandardNth3alpha))),kmul(phiL,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(kmadd(gtu12,JacPDstandardNth1alpha,kmadd(gtu22,JacPDstandardNth2alpha,kmul(gtu23,JacPDstandardNth3alpha))),kmul(phiL,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(kmadd(gtu13,JacPDstandardNth1alpha,kmadd(gtu23,JacPDstandardNth2alpha,kmul(gtu33,JacPDstandardNth3alpha))),kmul(phiL,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(beta1L,kmul(eta,ToReal(BetaDriver*(-1 +
+ ShiftBCoeff))),kmul(ksub(B1L,Xt1L),ToReal(ShiftBCoeff)))),ToReal(ShiftGammaCoeff)));
+
+ beta2rhsL =
+ kmul(theta,kmul(kadd(Xt2L,kmadd(beta2L,kmul(eta,ToReal(BetaDriver*(-1 +
+ ShiftBCoeff))),kmul(ksub(B2L,Xt2L),ToReal(ShiftBCoeff)))),ToReal(ShiftGammaCoeff)));
+
+ beta3rhsL =
+ kmul(theta,kmul(kadd(Xt3L,kmadd(beta3L,kmul(eta,ToReal(BetaDriver*(-1 +
+ ShiftBCoeff))),kmul(ksub(B3L,Xt3L),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));
+
+ /* 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(Arhs[index],ArhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B1rhs[index],B1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B2rhs[index],B2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt12rhs[index],gt12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt13rhs[index],gt13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt22rhs[index],gt22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt23rhs[index],gt23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt33rhs[index],gt33rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(phirhs[index],phirhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(trKrhs[index],trKrhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt1rhs[index],Xt1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt2rhs[index],Xt2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt3rhs[index],Xt3rhsL,elt_count_lo,elt_count_hi);
+ break;
+ }
- CCTK_REAL gt22rhsL = -0.666666666666666666666666666667*(3*alphaL*At22L
- - 3*(gt12L*JacPDstandardNth2beta1 + gt23L*JacPDstandardNth2beta3) +
- gt22L*(JacPDstandardNth1beta1 - 2*JacPDstandardNth2beta2 +
- JacPDstandardNth3beta3));
-
- CCTK_REAL gt23rhsL = 0.333333333333333333333333333333*(-6*alphaL*At23L
- + 3*(gt13L*JacPDstandardNth2beta1 + gt33L*JacPDstandardNth2beta3 +
- gt12L*JacPDstandardNth3beta1 + gt22L*JacPDstandardNth3beta2) +
- gt23L*(-2*JacPDstandardNth1beta1 + JacPDstandardNth2beta2 +
- JacPDstandardNth3beta3));
-
- CCTK_REAL gt33rhsL = -0.666666666666666666666666666667*(3*alphaL*At33L
- - 3*(gt13L*JacPDstandardNth3beta1 + gt23L*JacPDstandardNth3beta2) +
- gt33L*(JacPDstandardNth1beta1 + JacPDstandardNth2beta2 -
- 2*JacPDstandardNth3beta3));
-
- CCTK_REAL dotXt1 =
- 0.333333333333333333333333333333*(gtu11*(4*JacPDstandardNth11beta1 +
- JacPDstandardNth12beta2 + JacPDstandardNth13beta3) +
- gtu12*(4*JacPDstandardNth21beta1 + JacPDstandardNth22beta2 +
- JacPDstandardNth23beta3) + 3*(gtu12*JacPDstandardNth12beta1 +
- gtu13*JacPDstandardNth13beta1 + gtu22*JacPDstandardNth22beta1 +
- gtu23*(JacPDstandardNth23beta1 + JacPDstandardNth32beta1) +
- gtu33*JacPDstandardNth33beta1) + gtu13*(4*JacPDstandardNth31beta1 +
- JacPDstandardNth32beta2 + JacPDstandardNth33beta3) -
- 6*(Atu11*JacPDstandardNth1alpha + Atu12*JacPDstandardNth2alpha +
- Atu13*JacPDstandardNth3alpha) + alphaL*(Atu13*(36*cdphi3 + 12*Gt113) +
- 12*(Atu12*(3*cdphi2 + Gt112) + Atu23*Gt123) + 6*(Atu11*(6*cdphi1 +
- Gt111) + Atu22*Gt122 + Atu33*Gt133) - 4*(gtu11*JacPDstandardNth1trK +
- gtu12*JacPDstandardNth2trK + gtu13*JacPDstandardNth3trK) -
- 150.7964473723100754462068823974161384415*(gtu11*S1 + gtu12*S2 +
- gtu13*S3)) + (-JacPDstandardNth1beta1 + 2*(JacPDstandardNth2beta2 +
- JacPDstandardNth3beta3))*Xtn1 - 3*(JacPDstandardNth2beta1*Xtn2 +
- JacPDstandardNth3beta1*Xtn3));
-
- CCTK_REAL dotXt2 =
- 0.333333333333333333333333333333*(gtu12*(JacPDstandardNth11beta1 +
- 4*JacPDstandardNth12beta2 + JacPDstandardNth13beta3 +
- 3*JacPDstandardNth21beta2) + gtu22*(JacPDstandardNth21beta1 +
- 4*JacPDstandardNth22beta2 + JacPDstandardNth23beta3) +
- 3*(gtu11*JacPDstandardNth11beta2 + gtu23*JacPDstandardNth23beta2 +
- gtu13*(JacPDstandardNth13beta2 + JacPDstandardNth31beta2) +
- gtu33*JacPDstandardNth33beta2) + gtu23*(JacPDstandardNth31beta1 +
- 4*JacPDstandardNth32beta2 + JacPDstandardNth33beta3) -
- 6*(Atu12*JacPDstandardNth1alpha + Atu22*JacPDstandardNth2alpha +
- Atu23*JacPDstandardNth3alpha) + alphaL*(12*(Atu12*(3*cdphi1 + Gt212) +
- Atu13*Gt213) + Atu23*(36*cdphi3 + 12*Gt223) + 6*(Atu11*Gt211 +
- Atu22*(6*cdphi2 + Gt222) + Atu33*Gt233) - 4*(gtu12*JacPDstandardNth1trK
- + gtu22*JacPDstandardNth2trK + gtu23*JacPDstandardNth3trK) -
- 150.7964473723100754462068823974161384415*(gtu12*S1 + gtu22*S2 +
- gtu23*S3)) + (-JacPDstandardNth2beta2 + 2*(JacPDstandardNth1beta1 +
- JacPDstandardNth3beta3))*Xtn2 - 3*(JacPDstandardNth1beta2*Xtn1 +
- JacPDstandardNth3beta2*Xtn3));
-
- CCTK_REAL dotXt3 =
- 0.333333333333333333333333333333*(gtu23*(JacPDstandardNth21beta1 +
- JacPDstandardNth22beta2 + 4*JacPDstandardNth23beta3) +
- gtu13*(JacPDstandardNth11beta1 + JacPDstandardNth12beta2 +
- 4*JacPDstandardNth13beta3 + 3*JacPDstandardNth31beta3) +
- 3*(gtu11*JacPDstandardNth11beta3 + gtu12*(JacPDstandardNth12beta3 +
- JacPDstandardNth21beta3) + gtu22*JacPDstandardNth22beta3 +
- gtu23*JacPDstandardNth32beta3) + gtu33*(JacPDstandardNth31beta1 +
- JacPDstandardNth32beta2 + 4*JacPDstandardNth33beta3) -
- 6*(Atu13*JacPDstandardNth1alpha + Atu23*JacPDstandardNth2alpha +
- Atu33*JacPDstandardNth3alpha) + alphaL*(6*(Atu11*Gt311 + Atu22*Gt322) +
- 12*(Atu12*Gt312 + Atu13*(3*cdphi1 + Gt313) + Atu23*(3*cdphi2 + Gt323))
- + Atu33*(36*cdphi3 + 6*Gt333) - 4*(gtu13*JacPDstandardNth1trK +
- gtu23*JacPDstandardNth2trK + gtu33*JacPDstandardNth3trK) -
- 150.7964473723100754462068823974161384415*(gtu13*S1 + gtu23*S2 +
- gtu33*S3)) - 3*(JacPDstandardNth1beta3*Xtn1 +
- JacPDstandardNth2beta3*Xtn2) + (2*(JacPDstandardNth1beta1 +
- JacPDstandardNth2beta2) - JacPDstandardNth3beta3)*Xtn3);
-
- CCTK_REAL Xt1rhsL = dotXt1;
-
- CCTK_REAL Xt2rhsL = dotXt2;
-
- CCTK_REAL Xt3rhsL = dotXt3;
-
- CCTK_REAL dottrK = -(em4phi*(gtu11*(JacPDstandardNth11alpha +
- 2*cdphi1*JacPDstandardNth1alpha) + gtu12*(JacPDstandardNth12alpha +
- 2*cdphi2*JacPDstandardNth1alpha + JacPDstandardNth21alpha +
- 2*cdphi1*JacPDstandardNth2alpha) + gtu22*(JacPDstandardNth22alpha +
- 2*cdphi2*JacPDstandardNth2alpha) + gtu13*(JacPDstandardNth13alpha +
- 2*cdphi3*JacPDstandardNth1alpha + JacPDstandardNth31alpha +
- 2*cdphi1*JacPDstandardNth3alpha) + gtu23*(JacPDstandardNth23alpha +
- 2*cdphi3*JacPDstandardNth2alpha + JacPDstandardNth32alpha +
- 2*cdphi2*JacPDstandardNth3alpha) + gtu33*(JacPDstandardNth33alpha +
- 2*cdphi3*JacPDstandardNth3alpha) - JacPDstandardNth1alpha*Xtn1 -
- JacPDstandardNth2alpha*Xtn2 - JacPDstandardNth3alpha*Xtn3)) +
- alphaL*(2*(Atm12*Atm21 + Atm13*Atm31 + Atm23*Atm32) +
- 12.56637061435917295385057353311801153679*(rho + trS) + SQR(Atm11) +
- SQR(Atm22) + SQR(Atm33) + 0.333333333333333333333333333333*SQR(trKL));
-
- CCTK_REAL trKrhsL = dottrK;
-
- CCTK_REAL alpharhsL =
- -(pow(alphaL,ToReal(harmonicN))*ToReal(harmonicF)*(trKL + (AL -
- trKL)*ToReal(LapseACoeff)));
-
- CCTK_REAL ArhsL = (dottrK -
- AL*ToReal(AlphaDriver))*ToReal(LapseACoeff);
-
- CCTK_REAL eta = fmin(1,INV(rL)*ToReal(SpatialBetaDriverRadius));
-
- CCTK_REAL theta = fmin(1,exp(1 -
- rL*INV(ToReal(SpatialShiftGammaCoeffRadius))));
-
- CCTK_REAL beta1rhsL = theta*(Xt1L + beta1L*eta*ToReal(BetaDriver)*(-1
- + ToReal(ShiftBCoeff)) + (B1L -
- Xt1L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
-
- CCTK_REAL beta2rhsL = theta*(Xt2L + beta2L*eta*ToReal(BetaDriver)*(-1
- + ToReal(ShiftBCoeff)) + (B2L -
- Xt2L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
-
- CCTK_REAL beta3rhsL = theta*(Xt3L + beta3L*eta*ToReal(BetaDriver)*(-1
- + ToReal(ShiftBCoeff)) + (B3L -
- Xt3L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
-
- CCTK_REAL B1rhsL = (dotXt1 -
- B1L*eta*ToReal(BetaDriver))*ToReal(ShiftBCoeff);
-
- CCTK_REAL B2rhsL = (dotXt2 -
- B2L*eta*ToReal(BetaDriver))*ToReal(ShiftBCoeff);
-
- CCTK_REAL B3rhsL = (dotXt3 -
- B3L*eta*ToReal(BetaDriver))*ToReal(ShiftBCoeff);
-
- /* Copy local copies back to grid functions */
- alpharhs[index] = alpharhsL;
- Arhs[index] = ArhsL;
- B1rhs[index] = B1rhsL;
- B2rhs[index] = B2rhsL;
- B3rhs[index] = B3rhsL;
- beta1rhs[index] = beta1rhsL;
- beta2rhs[index] = beta2rhsL;
- beta3rhs[index] = beta3rhsL;
- gt11rhs[index] = gt11rhsL;
- gt12rhs[index] = gt12rhsL;
- gt13rhs[index] = gt13rhsL;
- gt22rhs[index] = gt22rhsL;
- gt23rhs[index] = gt23rhsL;
- gt33rhs[index] = gt33rhsL;
- phirhs[index] = phirhsL;
- trKrhs[index] = trKrhsL;
- Xt1rhs[index] = Xt1rhsL;
- Xt2rhs[index] = Xt2rhsL;
- Xt3rhs[index] = Xt3rhsL;
+ /* 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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_hi(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_hi(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_hi(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_hi(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_hi(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_hi(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_hi(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_hi(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_hi(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_hi(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_hi(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt3rhs[index],Xt3rhsL,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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_lo(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_lo(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_lo(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_lo(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_lo(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_lo(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_lo(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_lo(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_lo(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_lo(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_lo(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt3rhs[index],Xt3rhsL,elt_count);
+ break;
+ }
+ vec_store_nta(alpharhs[index],alpharhsL);
+ vec_store_nta(Arhs[index],ArhsL);
+ vec_store_nta(B1rhs[index],B1rhsL);
+ vec_store_nta(B2rhs[index],B2rhsL);
+ vec_store_nta(B3rhs[index],B3rhsL);
+ vec_store_nta(beta1rhs[index],beta1rhsL);
+ vec_store_nta(beta2rhs[index],beta2rhsL);
+ vec_store_nta(beta3rhs[index],beta3rhsL);
+ vec_store_nta(gt11rhs[index],gt11rhsL);
+ vec_store_nta(gt12rhs[index],gt12rhsL);
+ vec_store_nta(gt13rhs[index],gt13rhsL);
+ vec_store_nta(gt22rhs[index],gt22rhsL);
+ vec_store_nta(gt23rhs[index],gt23rhsL);
+ vec_store_nta(gt33rhs[index],gt33rhsL);
+ vec_store_nta(phirhs[index],phirhsL);
+ vec_store_nta(trKrhs[index],trKrhsL);
+ vec_store_nta(Xt1rhs[index],Xt1rhsL);
+ vec_store_nta(Xt2rhs[index],Xt2rhsL);
+ vec_store_nta(Xt3rhs[index],Xt3rhsL);
}
- LC_ENDLOOP3 (ML_BSSN_MP_O8_RHS1);
+ LC_ENDLOOP3VEC (ML_BSSN_MP_O8_RHS1);
}
extern "C" void ML_BSSN_MP_O8_RHS1(CCTK_ARGUMENTS)
@@ -1276,5 +1486,43 @@ extern "C" void ML_BSSN_MP_O8_RHS1(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_O8_RHS1_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_MP_O8_RHS1_calc_every != ML_BSSN_MP_O8_RHS1_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"grid::coordinates","Grid::coordinates","ML_BSSN_MP_O8::ML_curv","ML_BSSN_MP_O8::ML_dtlapse","ML_BSSN_MP_O8::ML_dtlapserhs","ML_BSSN_MP_O8::ML_dtshift","ML_BSSN_MP_O8::ML_dtshiftrhs","ML_BSSN_MP_O8::ML_Gamma","ML_BSSN_MP_O8::ML_Gammarhs","ML_BSSN_MP_O8::ML_lapse","ML_BSSN_MP_O8::ML_lapserhs","ML_BSSN_MP_O8::ML_log_confac","ML_BSSN_MP_O8::ML_log_confacrhs","ML_BSSN_MP_O8::ML_metric","ML_BSSN_MP_O8::ML_metricrhs","ML_BSSN_MP_O8::ML_shift","ML_BSSN_MP_O8::ML_shiftrhs","ML_BSSN_MP_O8::ML_trace_curv","ML_BSSN_MP_O8::ML_trace_curvrhs"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_O8_RHS1", 19, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_O8_RHS1", 1, 1, 1);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_O8_RHS1", 2, 2, 2);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_O8_RHS1", 3, 3, 3);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_O8_RHS1", 4, 4, 4);
+ break;
+ }
+
GenericFD_LoopOverInterior(cctkGH, &ML_BSSN_MP_O8_RHS1_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_MP_O8_RHS1_Body");
+ }
}
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 a361872..fcf925e 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
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_MP_O8_RHS2_SelectBCs(CCTK_ARGUMENTS)
{
@@ -33,7 +34,7 @@ extern "C" void ML_BSSN_MP_O8_RHS2_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_BSSN_MP_O8_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_MP_O8_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;
@@ -41,21 +42,6 @@ static void ML_BSSN_MP_O8_RHS2_Body(cGH const * restrict const cctkGH, int const
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_O8_RHS2_Body");
- }
-
- if (cctk_iteration % ML_BSSN_MP_O8_RHS2_calc_every != ML_BSSN_MP_O8_RHS2_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN_MP_O8::ML_curv","ML_BSSN_MP_O8::ML_curvrhs","ML_BSSN_MP_O8::ML_Gamma","ML_BSSN_MP_O8::ML_lapse","ML_BSSN_MP_O8::ML_log_confac","ML_BSSN_MP_O8::ML_metric","ML_BSSN_MP_O8::ML_shift","ML_BSSN_MP_O8::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_O8_RHS2", 8, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_O8_RHS2", 4, 4, 4);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -65,47 +51,102 @@ static void ML_BSSN_MP_O8_RHS2_Body(cGH const * restrict const cctkGH, int const
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o1024dx = 0.0009765625*INV(dx);
- CCTK_REAL const p1o1024dy = 0.0009765625*INV(dy);
- CCTK_REAL const p1o1024dz = 0.0009765625*INV(dz);
- CCTK_REAL const p1o1680dx = 0.000595238095238095238095238095238*INV(dx);
- CCTK_REAL const p1o1680dy = 0.000595238095238095238095238095238*INV(dy);
- CCTK_REAL const p1o1680dz = 0.000595238095238095238095238095238*INV(dz);
- CCTK_REAL const p1o5040dx2 = 0.000198412698412698412698412698413*INV(SQR(dx));
- CCTK_REAL const p1o5040dy2 = 0.000198412698412698412698412698413*INV(SQR(dy));
- CCTK_REAL const p1o5040dz2 = 0.000198412698412698412698412698413*INV(SQR(dz));
- CCTK_REAL const p1o560dx = 0.00178571428571428571428571428571*INV(dx);
- CCTK_REAL const p1o560dy = 0.00178571428571428571428571428571*INV(dy);
- CCTK_REAL const p1o560dz = 0.00178571428571428571428571428571*INV(dz);
- CCTK_REAL const p1o705600dxdy = 1.41723356009070294784580498866e-6*INV(dx)*INV(dy);
- CCTK_REAL const p1o705600dxdz = 1.41723356009070294784580498866e-6*INV(dx)*INV(dz);
- CCTK_REAL const p1o705600dydz = 1.41723356009070294784580498866e-6*INV(dy)*INV(dz);
- CCTK_REAL const p1o840dx = 0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const p1o840dy = 0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const p1o840dz = 0.00119047619047619047619047619048*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o840dx = -0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const pm1o840dy = -0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const pm1o840dz = -0.00119047619047619047619047619048*INV(dz);
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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)
@@ -152,48 +193,57 @@ static void ML_BSSN_MP_O8_RHS2_Body(cGH const * restrict const cctkGH, int const
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_LOOP3 (ML_BSSN_MP_O8_RHS2,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_MP_O8_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 alphaL = alpha[index];
- CCTK_REAL At11L = At11[index];
- CCTK_REAL At12L = At12[index];
- CCTK_REAL At13L = At13[index];
- CCTK_REAL At22L = At22[index];
- CCTK_REAL At23L = At23[index];
- CCTK_REAL At33L = At33[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL gt11L = gt11[index];
- CCTK_REAL gt12L = gt12[index];
- CCTK_REAL gt13L = gt13[index];
- CCTK_REAL gt22L = gt22[index];
- CCTK_REAL gt23L = gt23[index];
- CCTK_REAL gt33L = gt33[index];
- CCTK_REAL phiL = phi[index];
- CCTK_REAL trKL = trK[index];
- CCTK_REAL Xt1L = Xt1[index];
- CCTK_REAL Xt2L = Xt2[index];
- CCTK_REAL Xt3L = Xt3[index];
-
- CCTK_REAL eTxxL, eTxyL, eTxzL, eTyyL, eTyzL, eTzzL;
+ 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 eTxxL, eTxyL, eTxzL, eTyyL, eTyzL, eTzzL;
if (*stress_energy_state)
{
- eTxxL = eTxx[index];
- eTxyL = eTxy[index];
- eTxzL = eTxz[index];
- eTyyL = eTyy[index];
- eTyzL = eTyz[index];
- eTzzL = eTzz[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
{
@@ -205,850 +255,949 @@ static void ML_BSSN_MP_O8_RHS2_Body(cGH const * restrict const cctkGH, int const
eTzzL = ToReal(0.0);
}
- CCTK_REAL dJ111L, dJ112L, dJ113L, dJ122L, dJ123L, dJ133L, dJ211L, dJ212L, dJ213L, dJ222L, dJ223L, dJ233L, dJ311L, dJ312L, dJ313L, dJ322L, dJ323L, dJ333L, J11L, J12L, J13L, J21L, J22L, J23L, J31L, J32L, J33L;
+ 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 = dJ111[index];
- dJ112L = dJ112[index];
- dJ113L = dJ113[index];
- dJ122L = dJ122[index];
- dJ123L = dJ123[index];
- dJ133L = dJ133[index];
- dJ211L = dJ211[index];
- dJ212L = dJ212[index];
- dJ213L = dJ213[index];
- dJ222L = dJ222[index];
- dJ223L = dJ223[index];
- dJ233L = dJ233[index];
- dJ311L = dJ311[index];
- dJ312L = dJ312[index];
- dJ313L = dJ313[index];
- dJ322L = dJ322[index];
- dJ323L = dJ323[index];
- dJ333L = dJ333[index];
- J11L = J11[index];
- J12L = J12[index];
- J13L = J13[index];
- J21L = J21[index];
- J22L = J22[index];
- J23L = J23[index];
- J31L = J31[index];
- J32L = J32[index];
- J33L = J33[index];
+ dJ111L = vec_load(dJ111[index]);
+ dJ112L = vec_load(dJ112[index]);
+ dJ113L = vec_load(dJ113[index]);
+ dJ122L = vec_load(dJ122[index]);
+ dJ123L = vec_load(dJ123[index]);
+ dJ133L = vec_load(dJ133[index]);
+ dJ211L = vec_load(dJ211[index]);
+ dJ212L = vec_load(dJ212[index]);
+ dJ213L = vec_load(dJ213[index]);
+ dJ222L = vec_load(dJ222[index]);
+ dJ223L = vec_load(dJ223[index]);
+ dJ233L = vec_load(dJ233[index]);
+ dJ311L = vec_load(dJ311[index]);
+ dJ312L = vec_load(dJ312[index]);
+ dJ313L = vec_load(dJ313[index]);
+ dJ322L = vec_load(dJ322[index]);
+ dJ323L = vec_load(dJ323[index]);
+ dJ333L = vec_load(dJ333[index]);
+ J11L = vec_load(J11[index]);
+ J12L = vec_load(J12[index]);
+ J13L = vec_load(J13[index]);
+ J21L = vec_load(J21[index]);
+ J22L = vec_load(J22[index]);
+ J23L = vec_load(J23[index]);
+ J31L = vec_load(J31[index]);
+ J32L = vec_load(J32[index]);
+ J33L = vec_load(J33[index]);
}
/* Include user supplied include files */
/* Precompute derivatives */
- CCTK_REAL const PDstandardNth1alpha = PDstandardNth1(&alpha[index]);
- CCTK_REAL const PDstandardNth2alpha = PDstandardNth2(&alpha[index]);
- CCTK_REAL const PDstandardNth3alpha = PDstandardNth3(&alpha[index]);
- CCTK_REAL const PDstandardNth11alpha = PDstandardNth11(&alpha[index]);
- CCTK_REAL const PDstandardNth22alpha = PDstandardNth22(&alpha[index]);
- CCTK_REAL const PDstandardNth33alpha = PDstandardNth33(&alpha[index]);
- CCTK_REAL const PDstandardNth12alpha = PDstandardNth12(&alpha[index]);
- CCTK_REAL const PDstandardNth13alpha = PDstandardNth13(&alpha[index]);
- CCTK_REAL const PDstandardNth23alpha = PDstandardNth23(&alpha[index]);
- CCTK_REAL const PDstandardNth1beta1 = PDstandardNth1(&beta1[index]);
- CCTK_REAL const PDstandardNth2beta1 = PDstandardNth2(&beta1[index]);
- CCTK_REAL const PDstandardNth3beta1 = PDstandardNth3(&beta1[index]);
- CCTK_REAL const PDstandardNth1beta2 = PDstandardNth1(&beta2[index]);
- CCTK_REAL const PDstandardNth2beta2 = PDstandardNth2(&beta2[index]);
- CCTK_REAL const PDstandardNth3beta2 = PDstandardNth3(&beta2[index]);
- CCTK_REAL const PDstandardNth1beta3 = PDstandardNth1(&beta3[index]);
- CCTK_REAL const PDstandardNth2beta3 = PDstandardNth2(&beta3[index]);
- CCTK_REAL const PDstandardNth3beta3 = PDstandardNth3(&beta3[index]);
- CCTK_REAL const PDstandardNth1gt11 = PDstandardNth1(&gt11[index]);
- CCTK_REAL const PDstandardNth2gt11 = PDstandardNth2(&gt11[index]);
- CCTK_REAL const PDstandardNth3gt11 = PDstandardNth3(&gt11[index]);
- CCTK_REAL const PDstandardNth11gt11 = PDstandardNth11(&gt11[index]);
- CCTK_REAL const PDstandardNth22gt11 = PDstandardNth22(&gt11[index]);
- CCTK_REAL const PDstandardNth33gt11 = PDstandardNth33(&gt11[index]);
- CCTK_REAL const PDstandardNth12gt11 = PDstandardNth12(&gt11[index]);
- CCTK_REAL const PDstandardNth13gt11 = PDstandardNth13(&gt11[index]);
- CCTK_REAL const PDstandardNth23gt11 = PDstandardNth23(&gt11[index]);
- CCTK_REAL const PDstandardNth1gt12 = PDstandardNth1(&gt12[index]);
- CCTK_REAL const PDstandardNth2gt12 = PDstandardNth2(&gt12[index]);
- CCTK_REAL const PDstandardNth3gt12 = PDstandardNth3(&gt12[index]);
- CCTK_REAL const PDstandardNth11gt12 = PDstandardNth11(&gt12[index]);
- CCTK_REAL const PDstandardNth22gt12 = PDstandardNth22(&gt12[index]);
- CCTK_REAL const PDstandardNth33gt12 = PDstandardNth33(&gt12[index]);
- CCTK_REAL const PDstandardNth12gt12 = PDstandardNth12(&gt12[index]);
- CCTK_REAL const PDstandardNth13gt12 = PDstandardNth13(&gt12[index]);
- CCTK_REAL const PDstandardNth23gt12 = PDstandardNth23(&gt12[index]);
- CCTK_REAL const PDstandardNth1gt13 = PDstandardNth1(&gt13[index]);
- CCTK_REAL const PDstandardNth2gt13 = PDstandardNth2(&gt13[index]);
- CCTK_REAL const PDstandardNth3gt13 = PDstandardNth3(&gt13[index]);
- CCTK_REAL const PDstandardNth11gt13 = PDstandardNth11(&gt13[index]);
- CCTK_REAL const PDstandardNth22gt13 = PDstandardNth22(&gt13[index]);
- CCTK_REAL const PDstandardNth33gt13 = PDstandardNth33(&gt13[index]);
- CCTK_REAL const PDstandardNth12gt13 = PDstandardNth12(&gt13[index]);
- CCTK_REAL const PDstandardNth13gt13 = PDstandardNth13(&gt13[index]);
- CCTK_REAL const PDstandardNth23gt13 = PDstandardNth23(&gt13[index]);
- CCTK_REAL const PDstandardNth1gt22 = PDstandardNth1(&gt22[index]);
- CCTK_REAL const PDstandardNth2gt22 = PDstandardNth2(&gt22[index]);
- CCTK_REAL const PDstandardNth3gt22 = PDstandardNth3(&gt22[index]);
- CCTK_REAL const PDstandardNth11gt22 = PDstandardNth11(&gt22[index]);
- CCTK_REAL const PDstandardNth22gt22 = PDstandardNth22(&gt22[index]);
- CCTK_REAL const PDstandardNth33gt22 = PDstandardNth33(&gt22[index]);
- CCTK_REAL const PDstandardNth12gt22 = PDstandardNth12(&gt22[index]);
- CCTK_REAL const PDstandardNth13gt22 = PDstandardNth13(&gt22[index]);
- CCTK_REAL const PDstandardNth23gt22 = PDstandardNth23(&gt22[index]);
- CCTK_REAL const PDstandardNth1gt23 = PDstandardNth1(&gt23[index]);
- CCTK_REAL const PDstandardNth2gt23 = PDstandardNth2(&gt23[index]);
- CCTK_REAL const PDstandardNth3gt23 = PDstandardNth3(&gt23[index]);
- CCTK_REAL const PDstandardNth11gt23 = PDstandardNth11(&gt23[index]);
- CCTK_REAL const PDstandardNth22gt23 = PDstandardNth22(&gt23[index]);
- CCTK_REAL const PDstandardNth33gt23 = PDstandardNth33(&gt23[index]);
- CCTK_REAL const PDstandardNth12gt23 = PDstandardNth12(&gt23[index]);
- CCTK_REAL const PDstandardNth13gt23 = PDstandardNth13(&gt23[index]);
- CCTK_REAL const PDstandardNth23gt23 = PDstandardNth23(&gt23[index]);
- CCTK_REAL const PDstandardNth1gt33 = PDstandardNth1(&gt33[index]);
- CCTK_REAL const PDstandardNth2gt33 = PDstandardNth2(&gt33[index]);
- CCTK_REAL const PDstandardNth3gt33 = PDstandardNth3(&gt33[index]);
- CCTK_REAL const PDstandardNth11gt33 = PDstandardNth11(&gt33[index]);
- CCTK_REAL const PDstandardNth22gt33 = PDstandardNth22(&gt33[index]);
- CCTK_REAL const PDstandardNth33gt33 = PDstandardNth33(&gt33[index]);
- CCTK_REAL const PDstandardNth12gt33 = PDstandardNth12(&gt33[index]);
- CCTK_REAL const PDstandardNth13gt33 = PDstandardNth13(&gt33[index]);
- CCTK_REAL const PDstandardNth23gt33 = PDstandardNth23(&gt33[index]);
- CCTK_REAL const PDstandardNth1phi = PDstandardNth1(&phi[index]);
- CCTK_REAL const PDstandardNth2phi = PDstandardNth2(&phi[index]);
- CCTK_REAL const PDstandardNth3phi = PDstandardNth3(&phi[index]);
- CCTK_REAL const PDstandardNth11phi = PDstandardNth11(&phi[index]);
- CCTK_REAL const PDstandardNth22phi = PDstandardNth22(&phi[index]);
- CCTK_REAL const PDstandardNth33phi = PDstandardNth33(&phi[index]);
- CCTK_REAL const PDstandardNth12phi = PDstandardNth12(&phi[index]);
- CCTK_REAL const PDstandardNth13phi = PDstandardNth13(&phi[index]);
- CCTK_REAL const PDstandardNth23phi = PDstandardNth23(&phi[index]);
- CCTK_REAL const PDstandardNth1Xt1 = PDstandardNth1(&Xt1[index]);
- CCTK_REAL const PDstandardNth2Xt1 = PDstandardNth2(&Xt1[index]);
- CCTK_REAL const PDstandardNth3Xt1 = PDstandardNth3(&Xt1[index]);
- CCTK_REAL const PDstandardNth1Xt2 = PDstandardNth1(&Xt2[index]);
- CCTK_REAL const PDstandardNth2Xt2 = PDstandardNth2(&Xt2[index]);
- CCTK_REAL const PDstandardNth3Xt2 = PDstandardNth3(&Xt2[index]);
- CCTK_REAL const PDstandardNth1Xt3 = PDstandardNth1(&Xt3[index]);
- CCTK_REAL const PDstandardNth2Xt3 = PDstandardNth2(&Xt3[index]);
- CCTK_REAL const PDstandardNth3Xt3 = PDstandardNth3(&Xt3[index]);
+ 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 */
- CCTK_REAL JacPDstandardNth11alpha;
- CCTK_REAL JacPDstandardNth11gt11;
- CCTK_REAL JacPDstandardNth11gt12;
- CCTK_REAL JacPDstandardNth11gt13;
- CCTK_REAL JacPDstandardNth11gt22;
- CCTK_REAL JacPDstandardNth11gt23;
- CCTK_REAL JacPDstandardNth11gt33;
- CCTK_REAL JacPDstandardNth11phi;
- CCTK_REAL JacPDstandardNth12alpha;
- CCTK_REAL JacPDstandardNth12gt11;
- CCTK_REAL JacPDstandardNth12gt12;
- CCTK_REAL JacPDstandardNth12gt13;
- CCTK_REAL JacPDstandardNth12gt22;
- CCTK_REAL JacPDstandardNth12gt23;
- CCTK_REAL JacPDstandardNth12gt33;
- CCTK_REAL JacPDstandardNth12phi;
- CCTK_REAL JacPDstandardNth13alpha;
- CCTK_REAL JacPDstandardNth13gt11;
- CCTK_REAL JacPDstandardNth13gt12;
- CCTK_REAL JacPDstandardNth13gt13;
- CCTK_REAL JacPDstandardNth13gt22;
- CCTK_REAL JacPDstandardNth13gt23;
- CCTK_REAL JacPDstandardNth13gt33;
- CCTK_REAL JacPDstandardNth13phi;
- CCTK_REAL JacPDstandardNth1alpha;
- CCTK_REAL JacPDstandardNth1beta1;
- CCTK_REAL JacPDstandardNth1beta2;
- CCTK_REAL JacPDstandardNth1beta3;
- CCTK_REAL JacPDstandardNth1gt11;
- CCTK_REAL JacPDstandardNth1gt12;
- CCTK_REAL JacPDstandardNth1gt13;
- CCTK_REAL JacPDstandardNth1gt22;
- CCTK_REAL JacPDstandardNth1gt23;
- CCTK_REAL JacPDstandardNth1gt33;
- CCTK_REAL JacPDstandardNth1phi;
- CCTK_REAL JacPDstandardNth1Xt1;
- CCTK_REAL JacPDstandardNth1Xt2;
- CCTK_REAL JacPDstandardNth1Xt3;
- CCTK_REAL JacPDstandardNth21gt11;
- CCTK_REAL JacPDstandardNth21gt12;
- CCTK_REAL JacPDstandardNth21gt13;
- CCTK_REAL JacPDstandardNth21gt22;
- CCTK_REAL JacPDstandardNth21gt23;
- CCTK_REAL JacPDstandardNth21gt33;
- CCTK_REAL JacPDstandardNth22alpha;
- CCTK_REAL JacPDstandardNth22gt11;
- CCTK_REAL JacPDstandardNth22gt12;
- CCTK_REAL JacPDstandardNth22gt13;
- CCTK_REAL JacPDstandardNth22gt22;
- CCTK_REAL JacPDstandardNth22gt23;
- CCTK_REAL JacPDstandardNth22gt33;
- CCTK_REAL JacPDstandardNth22phi;
- CCTK_REAL JacPDstandardNth23alpha;
- CCTK_REAL JacPDstandardNth23gt11;
- CCTK_REAL JacPDstandardNth23gt12;
- CCTK_REAL JacPDstandardNth23gt13;
- CCTK_REAL JacPDstandardNth23gt22;
- CCTK_REAL JacPDstandardNth23gt23;
- CCTK_REAL JacPDstandardNth23gt33;
- CCTK_REAL JacPDstandardNth23phi;
- CCTK_REAL JacPDstandardNth2alpha;
- CCTK_REAL JacPDstandardNth2beta1;
- CCTK_REAL JacPDstandardNth2beta2;
- CCTK_REAL JacPDstandardNth2beta3;
- CCTK_REAL JacPDstandardNth2gt11;
- CCTK_REAL JacPDstandardNth2gt12;
- CCTK_REAL JacPDstandardNth2gt13;
- CCTK_REAL JacPDstandardNth2gt22;
- CCTK_REAL JacPDstandardNth2gt23;
- CCTK_REAL JacPDstandardNth2gt33;
- CCTK_REAL JacPDstandardNth2phi;
- CCTK_REAL JacPDstandardNth2Xt1;
- CCTK_REAL JacPDstandardNth2Xt2;
- CCTK_REAL JacPDstandardNth2Xt3;
- CCTK_REAL JacPDstandardNth31gt11;
- CCTK_REAL JacPDstandardNth31gt12;
- CCTK_REAL JacPDstandardNth31gt13;
- CCTK_REAL JacPDstandardNth31gt22;
- CCTK_REAL JacPDstandardNth31gt23;
- CCTK_REAL JacPDstandardNth31gt33;
- CCTK_REAL JacPDstandardNth32gt11;
- CCTK_REAL JacPDstandardNth32gt12;
- CCTK_REAL JacPDstandardNth32gt13;
- CCTK_REAL JacPDstandardNth32gt22;
- CCTK_REAL JacPDstandardNth32gt23;
- CCTK_REAL JacPDstandardNth32gt33;
- CCTK_REAL JacPDstandardNth33alpha;
- CCTK_REAL JacPDstandardNth33gt11;
- CCTK_REAL JacPDstandardNth33gt12;
- CCTK_REAL JacPDstandardNth33gt13;
- CCTK_REAL JacPDstandardNth33gt22;
- CCTK_REAL JacPDstandardNth33gt23;
- CCTK_REAL JacPDstandardNth33gt33;
- CCTK_REAL JacPDstandardNth33phi;
- CCTK_REAL JacPDstandardNth3alpha;
- CCTK_REAL JacPDstandardNth3beta1;
- CCTK_REAL JacPDstandardNth3beta2;
- CCTK_REAL JacPDstandardNth3beta3;
- CCTK_REAL JacPDstandardNth3gt11;
- CCTK_REAL JacPDstandardNth3gt12;
- CCTK_REAL JacPDstandardNth3gt13;
- CCTK_REAL JacPDstandardNth3gt22;
- CCTK_REAL JacPDstandardNth3gt23;
- CCTK_REAL JacPDstandardNth3gt33;
- CCTK_REAL JacPDstandardNth3phi;
- CCTK_REAL JacPDstandardNth3Xt1;
- CCTK_REAL JacPDstandardNth3Xt2;
- CCTK_REAL JacPDstandardNth3Xt3;
+ 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 = J11L*PDstandardNth1alpha +
- J21L*PDstandardNth2alpha + J31L*PDstandardNth3alpha;
+ 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))))))));
- JacPDstandardNth1beta1 = J11L*PDstandardNth1beta1 +
- J21L*PDstandardNth2beta1 + J31L*PDstandardNth3beta1;
+ 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))))))));
- JacPDstandardNth1beta2 = J11L*PDstandardNth1beta2 +
- J21L*PDstandardNth2beta2 + J31L*PDstandardNth3beta2;
+ 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))))))));
- JacPDstandardNth1beta3 = J11L*PDstandardNth1beta3 +
- J21L*PDstandardNth2beta3 + J31L*PDstandardNth3beta3;
+ 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))))))));
- JacPDstandardNth1gt11 = J11L*PDstandardNth1gt11 +
- J21L*PDstandardNth2gt11 + J31L*PDstandardNth3gt11;
+ 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))))))));
- JacPDstandardNth1gt12 = J11L*PDstandardNth1gt12 +
- J21L*PDstandardNth2gt12 + J31L*PDstandardNth3gt12;
+ 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))))))));
- JacPDstandardNth1gt13 = J11L*PDstandardNth1gt13 +
- J21L*PDstandardNth2gt13 + J31L*PDstandardNth3gt13;
+ 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))))))));
- JacPDstandardNth1gt22 = J11L*PDstandardNth1gt22 +
- J21L*PDstandardNth2gt22 + J31L*PDstandardNth3gt22;
+ 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))))))));
- JacPDstandardNth1gt23 = J11L*PDstandardNth1gt23 +
- J21L*PDstandardNth2gt23 + J31L*PDstandardNth3gt23;
+ 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))))))));
- JacPDstandardNth1gt33 = J11L*PDstandardNth1gt33 +
- J21L*PDstandardNth2gt33 + J31L*PDstandardNth3gt33;
+ 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))))))));
- JacPDstandardNth1phi = J11L*PDstandardNth1phi + J21L*PDstandardNth2phi
- + J31L*PDstandardNth3phi;
+ 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))))))));
- JacPDstandardNth1Xt1 = J11L*PDstandardNth1Xt1 + J21L*PDstandardNth2Xt1
- + J31L*PDstandardNth3Xt1;
+ 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))))))));
- JacPDstandardNth1Xt2 = J11L*PDstandardNth1Xt2 + J21L*PDstandardNth2Xt2
- + J31L*PDstandardNth3Xt2;
+ 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))))))));
- JacPDstandardNth1Xt3 = J11L*PDstandardNth1Xt3 + J21L*PDstandardNth2Xt3
- + J31L*PDstandardNth3Xt3;
+ 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))))))));
- JacPDstandardNth2alpha = J12L*PDstandardNth1alpha +
- J22L*PDstandardNth2alpha + J32L*PDstandardNth3alpha;
+ 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))))))));
- JacPDstandardNth2beta1 = J12L*PDstandardNth1beta1 +
- J22L*PDstandardNth2beta1 + J32L*PDstandardNth3beta1;
+ 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))))))));
- JacPDstandardNth2beta2 = J12L*PDstandardNth1beta2 +
- J22L*PDstandardNth2beta2 + J32L*PDstandardNth3beta2;
+ 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))))))));
- JacPDstandardNth2beta3 = J12L*PDstandardNth1beta3 +
- J22L*PDstandardNth2beta3 + J32L*PDstandardNth3beta3;
+ 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))))))));
- JacPDstandardNth2gt11 = J12L*PDstandardNth1gt11 +
- J22L*PDstandardNth2gt11 + J32L*PDstandardNth3gt11;
+ 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))))))));
- JacPDstandardNth2gt12 = J12L*PDstandardNth1gt12 +
- J22L*PDstandardNth2gt12 + J32L*PDstandardNth3gt12;
+ 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))))))));
- JacPDstandardNth2gt13 = J12L*PDstandardNth1gt13 +
- J22L*PDstandardNth2gt13 + J32L*PDstandardNth3gt13;
+ 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))))))));
- JacPDstandardNth2gt22 = J12L*PDstandardNth1gt22 +
- J22L*PDstandardNth2gt22 + J32L*PDstandardNth3gt22;
+ 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)))))));
- JacPDstandardNth2gt23 = J12L*PDstandardNth1gt23 +
- J22L*PDstandardNth2gt23 + J32L*PDstandardNth3gt23;
+ 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)))))));
- JacPDstandardNth2gt33 = J12L*PDstandardNth1gt33 +
- J22L*PDstandardNth2gt33 + J32L*PDstandardNth3gt33;
+ 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)))))));
- JacPDstandardNth2phi = J12L*PDstandardNth1phi + J22L*PDstandardNth2phi
- + J32L*PDstandardNth3phi;
+ 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)))))));
- JacPDstandardNth2Xt1 = J12L*PDstandardNth1Xt1 + J22L*PDstandardNth2Xt1
- + J32L*PDstandardNth3Xt1;
+ 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)))))));
- JacPDstandardNth2Xt2 = J12L*PDstandardNth1Xt2 + J22L*PDstandardNth2Xt2
- + J32L*PDstandardNth3Xt2;
+ 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)))))));
- JacPDstandardNth2Xt3 = J12L*PDstandardNth1Xt3 + J22L*PDstandardNth2Xt3
- + J32L*PDstandardNth3Xt3;
+ 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)))))));
- JacPDstandardNth3alpha = J13L*PDstandardNth1alpha +
- J23L*PDstandardNth2alpha + J33L*PDstandardNth3alpha;
+ 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)))))));
- JacPDstandardNth3beta1 = J13L*PDstandardNth1beta1 +
- J23L*PDstandardNth2beta1 + J33L*PDstandardNth3beta1;
+ 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)))))));
- JacPDstandardNth3beta2 = J13L*PDstandardNth1beta2 +
- J23L*PDstandardNth2beta2 + J33L*PDstandardNth3beta2;
+ 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)))))));
- JacPDstandardNth3beta3 = J13L*PDstandardNth1beta3 +
- J23L*PDstandardNth2beta3 + J33L*PDstandardNth3beta3;
+ 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)))))));
- JacPDstandardNth3gt11 = J13L*PDstandardNth1gt11 +
- J23L*PDstandardNth2gt11 + J33L*PDstandardNth3gt11;
+ 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)))))));
- JacPDstandardNth3gt12 = J13L*PDstandardNth1gt12 +
- J23L*PDstandardNth2gt12 + J33L*PDstandardNth3gt12;
+ 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)))))));
- JacPDstandardNth3gt13 = J13L*PDstandardNth1gt13 +
- J23L*PDstandardNth2gt13 + J33L*PDstandardNth3gt13;
+ 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)))))));
- JacPDstandardNth3gt22 = J13L*PDstandardNth1gt22 +
- J23L*PDstandardNth2gt22 + J33L*PDstandardNth3gt22;
+ 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)))))));
- JacPDstandardNth3gt23 = J13L*PDstandardNth1gt23 +
- J23L*PDstandardNth2gt23 + J33L*PDstandardNth3gt23;
+ 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)))))));
- JacPDstandardNth3gt33 = J13L*PDstandardNth1gt33 +
- J23L*PDstandardNth2gt33 + J33L*PDstandardNth3gt33;
+ 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)))))));
- JacPDstandardNth3phi = J13L*PDstandardNth1phi + J23L*PDstandardNth2phi
- + J33L*PDstandardNth3phi;
+ 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)))))));
- JacPDstandardNth3Xt1 = J13L*PDstandardNth1Xt1 + J23L*PDstandardNth2Xt1
- + J33L*PDstandardNth3Xt1;
+ 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)))))));
- JacPDstandardNth3Xt2 = J13L*PDstandardNth1Xt2 + J23L*PDstandardNth2Xt2
- + J33L*PDstandardNth3Xt2;
+ 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)))))));
- JacPDstandardNth3Xt3 = J13L*PDstandardNth1Xt3 + J23L*PDstandardNth2Xt3
- + J33L*PDstandardNth3Xt3;
+ 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)))))));
- JacPDstandardNth11alpha = dJ111L*PDstandardNth1alpha +
- 2*(J11L*(J21L*PDstandardNth12alpha + J31L*PDstandardNth13alpha) +
- J21L*J31L*PDstandardNth23alpha) + dJ211L*PDstandardNth2alpha +
- dJ311L*PDstandardNth3alpha + PDstandardNth11alpha*SQR(J11L) +
- PDstandardNth22alpha*SQR(J21L) + PDstandardNth33alpha*SQR(J31L);
-
- JacPDstandardNth11gt11 = dJ111L*PDstandardNth1gt11 +
- 2*(J11L*(J21L*PDstandardNth12gt11 + J31L*PDstandardNth13gt11) +
- J21L*J31L*PDstandardNth23gt11) + dJ211L*PDstandardNth2gt11 +
- dJ311L*PDstandardNth3gt11 + PDstandardNth11gt11*SQR(J11L) +
- PDstandardNth22gt11*SQR(J21L) + PDstandardNth33gt11*SQR(J31L);
-
- JacPDstandardNth11gt12 = dJ111L*PDstandardNth1gt12 +
- 2*(J11L*(J21L*PDstandardNth12gt12 + J31L*PDstandardNth13gt12) +
- J21L*J31L*PDstandardNth23gt12) + dJ211L*PDstandardNth2gt12 +
- dJ311L*PDstandardNth3gt12 + PDstandardNth11gt12*SQR(J11L) +
- PDstandardNth22gt12*SQR(J21L) + PDstandardNth33gt12*SQR(J31L);
-
- JacPDstandardNth11gt13 = dJ111L*PDstandardNth1gt13 +
- 2*(J11L*(J21L*PDstandardNth12gt13 + J31L*PDstandardNth13gt13) +
- J21L*J31L*PDstandardNth23gt13) + dJ211L*PDstandardNth2gt13 +
- dJ311L*PDstandardNth3gt13 + PDstandardNth11gt13*SQR(J11L) +
- PDstandardNth22gt13*SQR(J21L) + PDstandardNth33gt13*SQR(J31L);
-
- JacPDstandardNth11gt22 = dJ111L*PDstandardNth1gt22 +
- 2*(J11L*(J21L*PDstandardNth12gt22 + J31L*PDstandardNth13gt22) +
- J21L*J31L*PDstandardNth23gt22) + dJ211L*PDstandardNth2gt22 +
- dJ311L*PDstandardNth3gt22 + PDstandardNth11gt22*SQR(J11L) +
- PDstandardNth22gt22*SQR(J21L) + PDstandardNth33gt22*SQR(J31L);
-
- JacPDstandardNth11gt23 = dJ111L*PDstandardNth1gt23 +
- 2*(J11L*(J21L*PDstandardNth12gt23 + J31L*PDstandardNth13gt23) +
- J21L*J31L*PDstandardNth23gt23) + dJ211L*PDstandardNth2gt23 +
- dJ311L*PDstandardNth3gt23 + PDstandardNth11gt23*SQR(J11L) +
- PDstandardNth22gt23*SQR(J21L) + PDstandardNth33gt23*SQR(J31L);
-
- JacPDstandardNth11gt33 = dJ111L*PDstandardNth1gt33 +
- 2*(J11L*(J21L*PDstandardNth12gt33 + J31L*PDstandardNth13gt33) +
- J21L*J31L*PDstandardNth23gt33) + dJ211L*PDstandardNth2gt33 +
- dJ311L*PDstandardNth3gt33 + PDstandardNth11gt33*SQR(J11L) +
- PDstandardNth22gt33*SQR(J21L) + PDstandardNth33gt33*SQR(J31L);
-
- JacPDstandardNth11phi = dJ111L*PDstandardNth1phi +
- 2*(J11L*(J21L*PDstandardNth12phi + J31L*PDstandardNth13phi) +
- J21L*J31L*PDstandardNth23phi) + dJ211L*PDstandardNth2phi +
- dJ311L*PDstandardNth3phi + PDstandardNth11phi*SQR(J11L) +
- PDstandardNth22phi*SQR(J21L) + PDstandardNth33phi*SQR(J31L);
-
- JacPDstandardNth22alpha = dJ122L*PDstandardNth1alpha +
- 2*(J12L*(J22L*PDstandardNth12alpha + J32L*PDstandardNth13alpha) +
- J22L*J32L*PDstandardNth23alpha) + dJ222L*PDstandardNth2alpha +
- dJ322L*PDstandardNth3alpha + PDstandardNth11alpha*SQR(J12L) +
- PDstandardNth22alpha*SQR(J22L) + PDstandardNth33alpha*SQR(J32L);
-
- JacPDstandardNth22gt11 = dJ122L*PDstandardNth1gt11 +
- 2*(J12L*(J22L*PDstandardNth12gt11 + J32L*PDstandardNth13gt11) +
- J22L*J32L*PDstandardNth23gt11) + dJ222L*PDstandardNth2gt11 +
- dJ322L*PDstandardNth3gt11 + PDstandardNth11gt11*SQR(J12L) +
- PDstandardNth22gt11*SQR(J22L) + PDstandardNth33gt11*SQR(J32L);
-
- JacPDstandardNth22gt12 = dJ122L*PDstandardNth1gt12 +
- 2*(J12L*(J22L*PDstandardNth12gt12 + J32L*PDstandardNth13gt12) +
- J22L*J32L*PDstandardNth23gt12) + dJ222L*PDstandardNth2gt12 +
- dJ322L*PDstandardNth3gt12 + PDstandardNth11gt12*SQR(J12L) +
- PDstandardNth22gt12*SQR(J22L) + PDstandardNth33gt12*SQR(J32L);
-
- JacPDstandardNth22gt13 = dJ122L*PDstandardNth1gt13 +
- 2*(J12L*(J22L*PDstandardNth12gt13 + J32L*PDstandardNth13gt13) +
- J22L*J32L*PDstandardNth23gt13) + dJ222L*PDstandardNth2gt13 +
- dJ322L*PDstandardNth3gt13 + PDstandardNth11gt13*SQR(J12L) +
- PDstandardNth22gt13*SQR(J22L) + PDstandardNth33gt13*SQR(J32L);
-
- JacPDstandardNth22gt22 = dJ122L*PDstandardNth1gt22 +
- 2*(J12L*(J22L*PDstandardNth12gt22 + J32L*PDstandardNth13gt22) +
- J22L*J32L*PDstandardNth23gt22) + dJ222L*PDstandardNth2gt22 +
- dJ322L*PDstandardNth3gt22 + PDstandardNth11gt22*SQR(J12L) +
- PDstandardNth22gt22*SQR(J22L) + PDstandardNth33gt22*SQR(J32L);
-
- JacPDstandardNth22gt23 = dJ122L*PDstandardNth1gt23 +
- 2*(J12L*(J22L*PDstandardNth12gt23 + J32L*PDstandardNth13gt23) +
- J22L*J32L*PDstandardNth23gt23) + dJ222L*PDstandardNth2gt23 +
- dJ322L*PDstandardNth3gt23 + PDstandardNth11gt23*SQR(J12L) +
- PDstandardNth22gt23*SQR(J22L) + PDstandardNth33gt23*SQR(J32L);
-
- JacPDstandardNth22gt33 = dJ122L*PDstandardNth1gt33 +
- 2*(J12L*(J22L*PDstandardNth12gt33 + J32L*PDstandardNth13gt33) +
- J22L*J32L*PDstandardNth23gt33) + dJ222L*PDstandardNth2gt33 +
- dJ322L*PDstandardNth3gt33 + PDstandardNth11gt33*SQR(J12L) +
- PDstandardNth22gt33*SQR(J22L) + PDstandardNth33gt33*SQR(J32L);
-
- JacPDstandardNth22phi = dJ122L*PDstandardNth1phi +
- 2*(J12L*(J22L*PDstandardNth12phi + J32L*PDstandardNth13phi) +
- J22L*J32L*PDstandardNth23phi) + dJ222L*PDstandardNth2phi +
- dJ322L*PDstandardNth3phi + PDstandardNth11phi*SQR(J12L) +
- PDstandardNth22phi*SQR(J22L) + PDstandardNth33phi*SQR(J32L);
-
- JacPDstandardNth33alpha = dJ133L*PDstandardNth1alpha +
- 2*(J13L*(J23L*PDstandardNth12alpha + J33L*PDstandardNth13alpha) +
- J23L*J33L*PDstandardNth23alpha) + dJ233L*PDstandardNth2alpha +
- dJ333L*PDstandardNth3alpha + PDstandardNth11alpha*SQR(J13L) +
- PDstandardNth22alpha*SQR(J23L) + PDstandardNth33alpha*SQR(J33L);
-
- JacPDstandardNth33gt11 = dJ133L*PDstandardNth1gt11 +
- 2*(J13L*(J23L*PDstandardNth12gt11 + J33L*PDstandardNth13gt11) +
- J23L*J33L*PDstandardNth23gt11) + dJ233L*PDstandardNth2gt11 +
- dJ333L*PDstandardNth3gt11 + PDstandardNth11gt11*SQR(J13L) +
- PDstandardNth22gt11*SQR(J23L) + PDstandardNth33gt11*SQR(J33L);
-
- JacPDstandardNth33gt12 = dJ133L*PDstandardNth1gt12 +
- 2*(J13L*(J23L*PDstandardNth12gt12 + J33L*PDstandardNth13gt12) +
- J23L*J33L*PDstandardNth23gt12) + dJ233L*PDstandardNth2gt12 +
- dJ333L*PDstandardNth3gt12 + PDstandardNth11gt12*SQR(J13L) +
- PDstandardNth22gt12*SQR(J23L) + PDstandardNth33gt12*SQR(J33L);
-
- JacPDstandardNth33gt13 = dJ133L*PDstandardNth1gt13 +
- 2*(J13L*(J23L*PDstandardNth12gt13 + J33L*PDstandardNth13gt13) +
- J23L*J33L*PDstandardNth23gt13) + dJ233L*PDstandardNth2gt13 +
- dJ333L*PDstandardNth3gt13 + PDstandardNth11gt13*SQR(J13L) +
- PDstandardNth22gt13*SQR(J23L) + PDstandardNth33gt13*SQR(J33L);
-
- JacPDstandardNth33gt22 = dJ133L*PDstandardNth1gt22 +
- 2*(J13L*(J23L*PDstandardNth12gt22 + J33L*PDstandardNth13gt22) +
- J23L*J33L*PDstandardNth23gt22) + dJ233L*PDstandardNth2gt22 +
- dJ333L*PDstandardNth3gt22 + PDstandardNth11gt22*SQR(J13L) +
- PDstandardNth22gt22*SQR(J23L) + PDstandardNth33gt22*SQR(J33L);
-
- JacPDstandardNth33gt23 = dJ133L*PDstandardNth1gt23 +
- 2*(J13L*(J23L*PDstandardNth12gt23 + J33L*PDstandardNth13gt23) +
- J23L*J33L*PDstandardNth23gt23) + dJ233L*PDstandardNth2gt23 +
- dJ333L*PDstandardNth3gt23 + PDstandardNth11gt23*SQR(J13L) +
- PDstandardNth22gt23*SQR(J23L) + PDstandardNth33gt23*SQR(J33L);
-
- JacPDstandardNth33gt33 = dJ133L*PDstandardNth1gt33 +
- 2*(J13L*(J23L*PDstandardNth12gt33 + J33L*PDstandardNth13gt33) +
- J23L*J33L*PDstandardNth23gt33) + dJ233L*PDstandardNth2gt33 +
- dJ333L*PDstandardNth3gt33 + PDstandardNth11gt33*SQR(J13L) +
- PDstandardNth22gt33*SQR(J23L) + PDstandardNth33gt33*SQR(J33L);
-
- JacPDstandardNth33phi = dJ133L*PDstandardNth1phi +
- 2*(J13L*(J23L*PDstandardNth12phi + J33L*PDstandardNth13phi) +
- J23L*J33L*PDstandardNth23phi) + dJ233L*PDstandardNth2phi +
- dJ333L*PDstandardNth3phi + PDstandardNth11phi*SQR(J13L) +
- PDstandardNth22phi*SQR(J23L) + PDstandardNth33phi*SQR(J33L);
-
- JacPDstandardNth12alpha = J12L*(J11L*PDstandardNth11alpha +
- J21L*PDstandardNth12alpha + J31L*PDstandardNth13alpha) +
- J11L*(J22L*PDstandardNth12alpha + J32L*PDstandardNth13alpha) +
- dJ112L*PDstandardNth1alpha + J22L*(J21L*PDstandardNth22alpha +
- J31L*PDstandardNth23alpha) + dJ212L*PDstandardNth2alpha +
- J32L*(J21L*PDstandardNth23alpha + J31L*PDstandardNth33alpha) +
- dJ312L*PDstandardNth3alpha;
-
- JacPDstandardNth12gt11 = J12L*(J11L*PDstandardNth11gt11 +
- J21L*PDstandardNth12gt11 + J31L*PDstandardNth13gt11) +
- J11L*(J22L*PDstandardNth12gt11 + J32L*PDstandardNth13gt11) +
- dJ112L*PDstandardNth1gt11 + J22L*(J21L*PDstandardNth22gt11 +
- J31L*PDstandardNth23gt11) + dJ212L*PDstandardNth2gt11 +
- J32L*(J21L*PDstandardNth23gt11 + J31L*PDstandardNth33gt11) +
- dJ312L*PDstandardNth3gt11;
-
- JacPDstandardNth12gt12 = J12L*(J11L*PDstandardNth11gt12 +
- J21L*PDstandardNth12gt12 + J31L*PDstandardNth13gt12) +
- J11L*(J22L*PDstandardNth12gt12 + J32L*PDstandardNth13gt12) +
- dJ112L*PDstandardNth1gt12 + J22L*(J21L*PDstandardNth22gt12 +
- J31L*PDstandardNth23gt12) + dJ212L*PDstandardNth2gt12 +
- J32L*(J21L*PDstandardNth23gt12 + J31L*PDstandardNth33gt12) +
- dJ312L*PDstandardNth3gt12;
-
- JacPDstandardNth12gt13 = J12L*(J11L*PDstandardNth11gt13 +
- J21L*PDstandardNth12gt13 + J31L*PDstandardNth13gt13) +
- J11L*(J22L*PDstandardNth12gt13 + J32L*PDstandardNth13gt13) +
- dJ112L*PDstandardNth1gt13 + J22L*(J21L*PDstandardNth22gt13 +
- J31L*PDstandardNth23gt13) + dJ212L*PDstandardNth2gt13 +
- J32L*(J21L*PDstandardNth23gt13 + J31L*PDstandardNth33gt13) +
- dJ312L*PDstandardNth3gt13;
-
- JacPDstandardNth12gt22 = J12L*(J11L*PDstandardNth11gt22 +
- J21L*PDstandardNth12gt22 + J31L*PDstandardNth13gt22) +
- J11L*(J22L*PDstandardNth12gt22 + J32L*PDstandardNth13gt22) +
- dJ112L*PDstandardNth1gt22 + J22L*(J21L*PDstandardNth22gt22 +
- J31L*PDstandardNth23gt22) + dJ212L*PDstandardNth2gt22 +
- J32L*(J21L*PDstandardNth23gt22 + J31L*PDstandardNth33gt22) +
- dJ312L*PDstandardNth3gt22;
-
- JacPDstandardNth12gt23 = J12L*(J11L*PDstandardNth11gt23 +
- J21L*PDstandardNth12gt23 + J31L*PDstandardNth13gt23) +
- J11L*(J22L*PDstandardNth12gt23 + J32L*PDstandardNth13gt23) +
- dJ112L*PDstandardNth1gt23 + J22L*(J21L*PDstandardNth22gt23 +
- J31L*PDstandardNth23gt23) + dJ212L*PDstandardNth2gt23 +
- J32L*(J21L*PDstandardNth23gt23 + J31L*PDstandardNth33gt23) +
- dJ312L*PDstandardNth3gt23;
-
- JacPDstandardNth12gt33 = J12L*(J11L*PDstandardNth11gt33 +
- J21L*PDstandardNth12gt33 + J31L*PDstandardNth13gt33) +
- J11L*(J22L*PDstandardNth12gt33 + J32L*PDstandardNth13gt33) +
- dJ112L*PDstandardNth1gt33 + J22L*(J21L*PDstandardNth22gt33 +
- J31L*PDstandardNth23gt33) + dJ212L*PDstandardNth2gt33 +
- J32L*(J21L*PDstandardNth23gt33 + J31L*PDstandardNth33gt33) +
- dJ312L*PDstandardNth3gt33;
-
- JacPDstandardNth12phi = J12L*(J11L*PDstandardNth11phi +
- J21L*PDstandardNth12phi + J31L*PDstandardNth13phi) +
- J11L*(J22L*PDstandardNth12phi + J32L*PDstandardNth13phi) +
- dJ112L*PDstandardNth1phi + J22L*(J21L*PDstandardNth22phi +
- J31L*PDstandardNth23phi) + dJ212L*PDstandardNth2phi +
- J32L*(J21L*PDstandardNth23phi + J31L*PDstandardNth33phi) +
- dJ312L*PDstandardNth3phi;
-
- JacPDstandardNth13alpha = J13L*(J11L*PDstandardNth11alpha +
- J21L*PDstandardNth12alpha + J31L*PDstandardNth13alpha) +
- J11L*(J23L*PDstandardNth12alpha + J33L*PDstandardNth13alpha) +
- dJ113L*PDstandardNth1alpha + J23L*(J21L*PDstandardNth22alpha +
- J31L*PDstandardNth23alpha) + dJ213L*PDstandardNth2alpha +
- J33L*(J21L*PDstandardNth23alpha + J31L*PDstandardNth33alpha) +
- dJ313L*PDstandardNth3alpha;
-
- JacPDstandardNth13gt11 = J13L*(J11L*PDstandardNth11gt11 +
- J21L*PDstandardNth12gt11 + J31L*PDstandardNth13gt11) +
- J11L*(J23L*PDstandardNth12gt11 + J33L*PDstandardNth13gt11) +
- dJ113L*PDstandardNth1gt11 + J23L*(J21L*PDstandardNth22gt11 +
- J31L*PDstandardNth23gt11) + dJ213L*PDstandardNth2gt11 +
- J33L*(J21L*PDstandardNth23gt11 + J31L*PDstandardNth33gt11) +
- dJ313L*PDstandardNth3gt11;
-
- JacPDstandardNth13gt12 = J13L*(J11L*PDstandardNth11gt12 +
- J21L*PDstandardNth12gt12 + J31L*PDstandardNth13gt12) +
- J11L*(J23L*PDstandardNth12gt12 + J33L*PDstandardNth13gt12) +
- dJ113L*PDstandardNth1gt12 + J23L*(J21L*PDstandardNth22gt12 +
- J31L*PDstandardNth23gt12) + dJ213L*PDstandardNth2gt12 +
- J33L*(J21L*PDstandardNth23gt12 + J31L*PDstandardNth33gt12) +
- dJ313L*PDstandardNth3gt12;
-
- JacPDstandardNth13gt13 = J13L*(J11L*PDstandardNth11gt13 +
- J21L*PDstandardNth12gt13 + J31L*PDstandardNth13gt13) +
- J11L*(J23L*PDstandardNth12gt13 + J33L*PDstandardNth13gt13) +
- dJ113L*PDstandardNth1gt13 + J23L*(J21L*PDstandardNth22gt13 +
- J31L*PDstandardNth23gt13) + dJ213L*PDstandardNth2gt13 +
- J33L*(J21L*PDstandardNth23gt13 + J31L*PDstandardNth33gt13) +
- dJ313L*PDstandardNth3gt13;
-
- JacPDstandardNth13gt22 = J13L*(J11L*PDstandardNth11gt22 +
- J21L*PDstandardNth12gt22 + J31L*PDstandardNth13gt22) +
- J11L*(J23L*PDstandardNth12gt22 + J33L*PDstandardNth13gt22) +
- dJ113L*PDstandardNth1gt22 + J23L*(J21L*PDstandardNth22gt22 +
- J31L*PDstandardNth23gt22) + dJ213L*PDstandardNth2gt22 +
- J33L*(J21L*PDstandardNth23gt22 + J31L*PDstandardNth33gt22) +
- dJ313L*PDstandardNth3gt22;
-
- JacPDstandardNth13gt23 = J13L*(J11L*PDstandardNth11gt23 +
- J21L*PDstandardNth12gt23 + J31L*PDstandardNth13gt23) +
- J11L*(J23L*PDstandardNth12gt23 + J33L*PDstandardNth13gt23) +
- dJ113L*PDstandardNth1gt23 + J23L*(J21L*PDstandardNth22gt23 +
- J31L*PDstandardNth23gt23) + dJ213L*PDstandardNth2gt23 +
- J33L*(J21L*PDstandardNth23gt23 + J31L*PDstandardNth33gt23) +
- dJ313L*PDstandardNth3gt23;
-
- JacPDstandardNth13gt33 = J13L*(J11L*PDstandardNth11gt33 +
- J21L*PDstandardNth12gt33 + J31L*PDstandardNth13gt33) +
- J11L*(J23L*PDstandardNth12gt33 + J33L*PDstandardNth13gt33) +
- dJ113L*PDstandardNth1gt33 + J23L*(J21L*PDstandardNth22gt33 +
- J31L*PDstandardNth23gt33) + dJ213L*PDstandardNth2gt33 +
- J33L*(J21L*PDstandardNth23gt33 + J31L*PDstandardNth33gt33) +
- dJ313L*PDstandardNth3gt33;
-
- JacPDstandardNth13phi = J13L*(J11L*PDstandardNth11phi +
- J21L*PDstandardNth12phi + J31L*PDstandardNth13phi) +
- J11L*(J23L*PDstandardNth12phi + J33L*PDstandardNth13phi) +
- dJ113L*PDstandardNth1phi + J23L*(J21L*PDstandardNth22phi +
- J31L*PDstandardNth23phi) + dJ213L*PDstandardNth2phi +
- J33L*(J21L*PDstandardNth23phi + J31L*PDstandardNth33phi) +
- dJ313L*PDstandardNth3phi;
-
- JacPDstandardNth21gt11 = J12L*(J11L*PDstandardNth11gt11 +
- J21L*PDstandardNth12gt11 + J31L*PDstandardNth13gt11) +
- J11L*(J22L*PDstandardNth12gt11 + J32L*PDstandardNth13gt11) +
- dJ112L*PDstandardNth1gt11 + J22L*(J21L*PDstandardNth22gt11 +
- J31L*PDstandardNth23gt11) + dJ212L*PDstandardNth2gt11 +
- J32L*(J21L*PDstandardNth23gt11 + J31L*PDstandardNth33gt11) +
- dJ312L*PDstandardNth3gt11;
-
- JacPDstandardNth21gt12 = J12L*(J11L*PDstandardNth11gt12 +
- J21L*PDstandardNth12gt12 + J31L*PDstandardNth13gt12) +
- J11L*(J22L*PDstandardNth12gt12 + J32L*PDstandardNth13gt12) +
- dJ112L*PDstandardNth1gt12 + J22L*(J21L*PDstandardNth22gt12 +
- J31L*PDstandardNth23gt12) + dJ212L*PDstandardNth2gt12 +
- J32L*(J21L*PDstandardNth23gt12 + J31L*PDstandardNth33gt12) +
- dJ312L*PDstandardNth3gt12;
-
- JacPDstandardNth21gt13 = J12L*(J11L*PDstandardNth11gt13 +
- J21L*PDstandardNth12gt13 + J31L*PDstandardNth13gt13) +
- J11L*(J22L*PDstandardNth12gt13 + J32L*PDstandardNth13gt13) +
- dJ112L*PDstandardNth1gt13 + J22L*(J21L*PDstandardNth22gt13 +
- J31L*PDstandardNth23gt13) + dJ212L*PDstandardNth2gt13 +
- J32L*(J21L*PDstandardNth23gt13 + J31L*PDstandardNth33gt13) +
- dJ312L*PDstandardNth3gt13;
-
- JacPDstandardNth21gt22 = J12L*(J11L*PDstandardNth11gt22 +
- J21L*PDstandardNth12gt22 + J31L*PDstandardNth13gt22) +
- J11L*(J22L*PDstandardNth12gt22 + J32L*PDstandardNth13gt22) +
- dJ112L*PDstandardNth1gt22 + J22L*(J21L*PDstandardNth22gt22 +
- J31L*PDstandardNth23gt22) + dJ212L*PDstandardNth2gt22 +
- J32L*(J21L*PDstandardNth23gt22 + J31L*PDstandardNth33gt22) +
- dJ312L*PDstandardNth3gt22;
-
- JacPDstandardNth21gt23 = J12L*(J11L*PDstandardNth11gt23 +
- J21L*PDstandardNth12gt23 + J31L*PDstandardNth13gt23) +
- J11L*(J22L*PDstandardNth12gt23 + J32L*PDstandardNth13gt23) +
- dJ112L*PDstandardNth1gt23 + J22L*(J21L*PDstandardNth22gt23 +
- J31L*PDstandardNth23gt23) + dJ212L*PDstandardNth2gt23 +
- J32L*(J21L*PDstandardNth23gt23 + J31L*PDstandardNth33gt23) +
- dJ312L*PDstandardNth3gt23;
-
- JacPDstandardNth21gt33 = J12L*(J11L*PDstandardNth11gt33 +
- J21L*PDstandardNth12gt33 + J31L*PDstandardNth13gt33) +
- J11L*(J22L*PDstandardNth12gt33 + J32L*PDstandardNth13gt33) +
- dJ112L*PDstandardNth1gt33 + J22L*(J21L*PDstandardNth22gt33 +
- J31L*PDstandardNth23gt33) + dJ212L*PDstandardNth2gt33 +
- J32L*(J21L*PDstandardNth23gt33 + J31L*PDstandardNth33gt33) +
- dJ312L*PDstandardNth3gt33;
-
- JacPDstandardNth23alpha = J13L*(J12L*PDstandardNth11alpha +
- J22L*PDstandardNth12alpha + J32L*PDstandardNth13alpha) +
- J12L*(J23L*PDstandardNth12alpha + J33L*PDstandardNth13alpha) +
- dJ123L*PDstandardNth1alpha + J23L*(J22L*PDstandardNth22alpha +
- J32L*PDstandardNth23alpha) + dJ223L*PDstandardNth2alpha +
- J33L*(J22L*PDstandardNth23alpha + J32L*PDstandardNth33alpha) +
- dJ323L*PDstandardNth3alpha;
-
- JacPDstandardNth23gt11 = J13L*(J12L*PDstandardNth11gt11 +
- J22L*PDstandardNth12gt11 + J32L*PDstandardNth13gt11) +
- J12L*(J23L*PDstandardNth12gt11 + J33L*PDstandardNth13gt11) +
- dJ123L*PDstandardNth1gt11 + J23L*(J22L*PDstandardNth22gt11 +
- J32L*PDstandardNth23gt11) + dJ223L*PDstandardNth2gt11 +
- J33L*(J22L*PDstandardNth23gt11 + J32L*PDstandardNth33gt11) +
- dJ323L*PDstandardNth3gt11;
-
- JacPDstandardNth23gt12 = J13L*(J12L*PDstandardNth11gt12 +
- J22L*PDstandardNth12gt12 + J32L*PDstandardNth13gt12) +
- J12L*(J23L*PDstandardNth12gt12 + J33L*PDstandardNth13gt12) +
- dJ123L*PDstandardNth1gt12 + J23L*(J22L*PDstandardNth22gt12 +
- J32L*PDstandardNth23gt12) + dJ223L*PDstandardNth2gt12 +
- J33L*(J22L*PDstandardNth23gt12 + J32L*PDstandardNth33gt12) +
- dJ323L*PDstandardNth3gt12;
-
- JacPDstandardNth23gt13 = J13L*(J12L*PDstandardNth11gt13 +
- J22L*PDstandardNth12gt13 + J32L*PDstandardNth13gt13) +
- J12L*(J23L*PDstandardNth12gt13 + J33L*PDstandardNth13gt13) +
- dJ123L*PDstandardNth1gt13 + J23L*(J22L*PDstandardNth22gt13 +
- J32L*PDstandardNth23gt13) + dJ223L*PDstandardNth2gt13 +
- J33L*(J22L*PDstandardNth23gt13 + J32L*PDstandardNth33gt13) +
- dJ323L*PDstandardNth3gt13;
-
- JacPDstandardNth23gt22 = J13L*(J12L*PDstandardNth11gt22 +
- J22L*PDstandardNth12gt22 + J32L*PDstandardNth13gt22) +
- J12L*(J23L*PDstandardNth12gt22 + J33L*PDstandardNth13gt22) +
- dJ123L*PDstandardNth1gt22 + J23L*(J22L*PDstandardNth22gt22 +
- J32L*PDstandardNth23gt22) + dJ223L*PDstandardNth2gt22 +
- J33L*(J22L*PDstandardNth23gt22 + J32L*PDstandardNth33gt22) +
- dJ323L*PDstandardNth3gt22;
-
- JacPDstandardNth23gt23 = J13L*(J12L*PDstandardNth11gt23 +
- J22L*PDstandardNth12gt23 + J32L*PDstandardNth13gt23) +
- J12L*(J23L*PDstandardNth12gt23 + J33L*PDstandardNth13gt23) +
- dJ123L*PDstandardNth1gt23 + J23L*(J22L*PDstandardNth22gt23 +
- J32L*PDstandardNth23gt23) + dJ223L*PDstandardNth2gt23 +
- J33L*(J22L*PDstandardNth23gt23 + J32L*PDstandardNth33gt23) +
- dJ323L*PDstandardNth3gt23;
-
- JacPDstandardNth23gt33 = J13L*(J12L*PDstandardNth11gt33 +
- J22L*PDstandardNth12gt33 + J32L*PDstandardNth13gt33) +
- J12L*(J23L*PDstandardNth12gt33 + J33L*PDstandardNth13gt33) +
- dJ123L*PDstandardNth1gt33 + J23L*(J22L*PDstandardNth22gt33 +
- J32L*PDstandardNth23gt33) + dJ223L*PDstandardNth2gt33 +
- J33L*(J22L*PDstandardNth23gt33 + J32L*PDstandardNth33gt33) +
- dJ323L*PDstandardNth3gt33;
-
- JacPDstandardNth23phi = J13L*(J12L*PDstandardNth11phi +
- J22L*PDstandardNth12phi + J32L*PDstandardNth13phi) +
- J12L*(J23L*PDstandardNth12phi + J33L*PDstandardNth13phi) +
- dJ123L*PDstandardNth1phi + J23L*(J22L*PDstandardNth22phi +
- J32L*PDstandardNth23phi) + dJ223L*PDstandardNth2phi +
- J33L*(J22L*PDstandardNth23phi + J32L*PDstandardNth33phi) +
- dJ323L*PDstandardNth3phi;
-
- JacPDstandardNth31gt11 = J13L*(J11L*PDstandardNth11gt11 +
- J21L*PDstandardNth12gt11 + J31L*PDstandardNth13gt11) +
- J11L*(J23L*PDstandardNth12gt11 + J33L*PDstandardNth13gt11) +
- dJ113L*PDstandardNth1gt11 + J23L*(J21L*PDstandardNth22gt11 +
- J31L*PDstandardNth23gt11) + dJ213L*PDstandardNth2gt11 +
- J33L*(J21L*PDstandardNth23gt11 + J31L*PDstandardNth33gt11) +
- dJ313L*PDstandardNth3gt11;
-
- JacPDstandardNth31gt12 = J13L*(J11L*PDstandardNth11gt12 +
- J21L*PDstandardNth12gt12 + J31L*PDstandardNth13gt12) +
- J11L*(J23L*PDstandardNth12gt12 + J33L*PDstandardNth13gt12) +
- dJ113L*PDstandardNth1gt12 + J23L*(J21L*PDstandardNth22gt12 +
- J31L*PDstandardNth23gt12) + dJ213L*PDstandardNth2gt12 +
- J33L*(J21L*PDstandardNth23gt12 + J31L*PDstandardNth33gt12) +
- dJ313L*PDstandardNth3gt12;
-
- JacPDstandardNth31gt13 = J13L*(J11L*PDstandardNth11gt13 +
- J21L*PDstandardNth12gt13 + J31L*PDstandardNth13gt13) +
- J11L*(J23L*PDstandardNth12gt13 + J33L*PDstandardNth13gt13) +
- dJ113L*PDstandardNth1gt13 + J23L*(J21L*PDstandardNth22gt13 +
- J31L*PDstandardNth23gt13) + dJ213L*PDstandardNth2gt13 +
- J33L*(J21L*PDstandardNth23gt13 + J31L*PDstandardNth33gt13) +
- dJ313L*PDstandardNth3gt13;
-
- JacPDstandardNth31gt22 = J13L*(J11L*PDstandardNth11gt22 +
- J21L*PDstandardNth12gt22 + J31L*PDstandardNth13gt22) +
- J11L*(J23L*PDstandardNth12gt22 + J33L*PDstandardNth13gt22) +
- dJ113L*PDstandardNth1gt22 + J23L*(J21L*PDstandardNth22gt22 +
- J31L*PDstandardNth23gt22) + dJ213L*PDstandardNth2gt22 +
- J33L*(J21L*PDstandardNth23gt22 + J31L*PDstandardNth33gt22) +
- dJ313L*PDstandardNth3gt22;
-
- JacPDstandardNth31gt23 = J13L*(J11L*PDstandardNth11gt23 +
- J21L*PDstandardNth12gt23 + J31L*PDstandardNth13gt23) +
- J11L*(J23L*PDstandardNth12gt23 + J33L*PDstandardNth13gt23) +
- dJ113L*PDstandardNth1gt23 + J23L*(J21L*PDstandardNth22gt23 +
- J31L*PDstandardNth23gt23) + dJ213L*PDstandardNth2gt23 +
- J33L*(J21L*PDstandardNth23gt23 + J31L*PDstandardNth33gt23) +
- dJ313L*PDstandardNth3gt23;
-
- JacPDstandardNth31gt33 = J13L*(J11L*PDstandardNth11gt33 +
- J21L*PDstandardNth12gt33 + J31L*PDstandardNth13gt33) +
- J11L*(J23L*PDstandardNth12gt33 + J33L*PDstandardNth13gt33) +
- dJ113L*PDstandardNth1gt33 + J23L*(J21L*PDstandardNth22gt33 +
- J31L*PDstandardNth23gt33) + dJ213L*PDstandardNth2gt33 +
- J33L*(J21L*PDstandardNth23gt33 + J31L*PDstandardNth33gt33) +
- dJ313L*PDstandardNth3gt33;
-
- JacPDstandardNth32gt11 = J13L*(J12L*PDstandardNth11gt11 +
- J22L*PDstandardNth12gt11 + J32L*PDstandardNth13gt11) +
- J12L*(J23L*PDstandardNth12gt11 + J33L*PDstandardNth13gt11) +
- dJ123L*PDstandardNth1gt11 + J23L*(J22L*PDstandardNth22gt11 +
- J32L*PDstandardNth23gt11) + dJ223L*PDstandardNth2gt11 +
- J33L*(J22L*PDstandardNth23gt11 + J32L*PDstandardNth33gt11) +
- dJ323L*PDstandardNth3gt11;
-
- JacPDstandardNth32gt12 = J13L*(J12L*PDstandardNth11gt12 +
- J22L*PDstandardNth12gt12 + J32L*PDstandardNth13gt12) +
- J12L*(J23L*PDstandardNth12gt12 + J33L*PDstandardNth13gt12) +
- dJ123L*PDstandardNth1gt12 + J23L*(J22L*PDstandardNth22gt12 +
- J32L*PDstandardNth23gt12) + dJ223L*PDstandardNth2gt12 +
- J33L*(J22L*PDstandardNth23gt12 + J32L*PDstandardNth33gt12) +
- dJ323L*PDstandardNth3gt12;
-
- JacPDstandardNth32gt13 = J13L*(J12L*PDstandardNth11gt13 +
- J22L*PDstandardNth12gt13 + J32L*PDstandardNth13gt13) +
- J12L*(J23L*PDstandardNth12gt13 + J33L*PDstandardNth13gt13) +
- dJ123L*PDstandardNth1gt13 + J23L*(J22L*PDstandardNth22gt13 +
- J32L*PDstandardNth23gt13) + dJ223L*PDstandardNth2gt13 +
- J33L*(J22L*PDstandardNth23gt13 + J32L*PDstandardNth33gt13) +
- dJ323L*PDstandardNth3gt13;
-
- JacPDstandardNth32gt22 = J13L*(J12L*PDstandardNth11gt22 +
- J22L*PDstandardNth12gt22 + J32L*PDstandardNth13gt22) +
- J12L*(J23L*PDstandardNth12gt22 + J33L*PDstandardNth13gt22) +
- dJ123L*PDstandardNth1gt22 + J23L*(J22L*PDstandardNth22gt22 +
- J32L*PDstandardNth23gt22) + dJ223L*PDstandardNth2gt22 +
- J33L*(J22L*PDstandardNth23gt22 + J32L*PDstandardNth33gt22) +
- dJ323L*PDstandardNth3gt22;
-
- JacPDstandardNth32gt23 = J13L*(J12L*PDstandardNth11gt23 +
- J22L*PDstandardNth12gt23 + J32L*PDstandardNth13gt23) +
- J12L*(J23L*PDstandardNth12gt23 + J33L*PDstandardNth13gt23) +
- dJ123L*PDstandardNth1gt23 + J23L*(J22L*PDstandardNth22gt23 +
- J32L*PDstandardNth23gt23) + dJ223L*PDstandardNth2gt23 +
- J33L*(J22L*PDstandardNth23gt23 + J32L*PDstandardNth33gt23) +
- dJ323L*PDstandardNth3gt23;
-
- JacPDstandardNth32gt33 = J13L*(J12L*PDstandardNth11gt33 +
- J22L*PDstandardNth12gt33 + J32L*PDstandardNth13gt33) +
- J12L*(J23L*PDstandardNth12gt33 + J33L*PDstandardNth13gt33) +
- dJ123L*PDstandardNth1gt33 + J23L*(J22L*PDstandardNth22gt33 +
- J32L*PDstandardNth23gt33) + dJ223L*PDstandardNth2gt33 +
- J33L*(J22L*PDstandardNth23gt33 + J32L*PDstandardNth33gt33) +
- dJ323L*PDstandardNth3gt33;
+ 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
{
@@ -1269,481 +1418,438 @@ static void ML_BSSN_MP_O8_RHS2_Body(cGH const * restrict const cctkGH, int const
JacPDstandardNth32gt33 = PDstandardNth23gt33;
}
- ptrdiff_t dir1 = Sign(beta1L);
+ CCTK_REAL_VEC detgt = ToReal(1);
- ptrdiff_t dir2 = Sign(beta2L);
+ CCTK_REAL_VEC gtu11 = kmul(INV(detgt),kmsub(gt22L,gt33L,SQR(gt23L)));
- ptrdiff_t dir3 = Sign(beta3L);
+ 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 detgt = 1;
+ CCTK_REAL_VEC Gtl222 = kmul(JacPDstandardNth2gt22,ToReal(0.5));
- CCTK_REAL gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L));
+ CCTK_REAL_VEC Gtl223 = kmul(JacPDstandardNth3gt22,ToReal(0.5));
- CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt);
+ CCTK_REAL_VEC Gtl233 =
+ kmadd(JacPDstandardNth2gt33,ToReal(-0.5),JacPDstandardNth3gt23);
- CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC Gtl311 =
+ kmadd(JacPDstandardNth3gt11,ToReal(-0.5),JacPDstandardNth1gt13);
- CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L));
+ CCTK_REAL_VEC Gtl312 =
+ kmul(kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth2gt13,JacPDstandardNth3gt12)),ToReal(0.5));
- CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC Gtl313 = kmul(JacPDstandardNth1gt33,ToReal(0.5));
- CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L));
+ CCTK_REAL_VEC Gtl322 =
+ kmadd(JacPDstandardNth3gt22,ToReal(-0.5),JacPDstandardNth2gt23);
- CCTK_REAL Gtl111 = 0.5*JacPDstandardNth1gt11;
+ CCTK_REAL_VEC Gtl323 = kmul(JacPDstandardNth2gt33,ToReal(0.5));
- CCTK_REAL Gtl112 = 0.5*JacPDstandardNth2gt11;
+ CCTK_REAL_VEC Gtl333 = kmul(JacPDstandardNth3gt33,ToReal(0.5));
- CCTK_REAL Gtl113 = 0.5*JacPDstandardNth3gt11;
+ CCTK_REAL_VEC Gtlu111 =
+ kmadd(Gtl111,gtu11,kmadd(Gtl112,gtu12,kmul(Gtl113,gtu13)));
- CCTK_REAL Gtl122 = -0.5*JacPDstandardNth1gt22 + JacPDstandardNth2gt12;
+ CCTK_REAL_VEC Gtlu112 =
+ kmadd(Gtl111,gtu12,kmadd(Gtl112,gtu22,kmul(Gtl113,gtu23)));
- CCTK_REAL Gtl123 = 0.5*(-JacPDstandardNth1gt23 + JacPDstandardNth2gt13
- + JacPDstandardNth3gt12);
+ CCTK_REAL_VEC Gtlu113 =
+ kmadd(Gtl111,gtu13,kmadd(Gtl112,gtu23,kmul(Gtl113,gtu33)));
- CCTK_REAL Gtl133 = -0.5*JacPDstandardNth1gt33 + JacPDstandardNth3gt13;
+ CCTK_REAL_VEC Gtlu121 =
+ kmadd(Gtl112,gtu11,kmadd(Gtl122,gtu12,kmul(Gtl123,gtu13)));
- CCTK_REAL Gtl211 = JacPDstandardNth1gt12 - 0.5*JacPDstandardNth2gt11;
+ CCTK_REAL_VEC Gtlu122 =
+ kmadd(Gtl112,gtu12,kmadd(Gtl122,gtu22,kmul(Gtl123,gtu23)));
- CCTK_REAL Gtl212 = 0.5*JacPDstandardNth1gt22;
+ CCTK_REAL_VEC Gtlu123 =
+ kmadd(Gtl112,gtu13,kmadd(Gtl122,gtu23,kmul(Gtl123,gtu33)));
- CCTK_REAL Gtl213 = 0.5*(JacPDstandardNth1gt23 - JacPDstandardNth2gt13
- + JacPDstandardNth3gt12);
+ CCTK_REAL_VEC Gtlu131 =
+ kmadd(Gtl113,gtu11,kmadd(Gtl123,gtu12,kmul(Gtl133,gtu13)));
- CCTK_REAL Gtl222 = 0.5*JacPDstandardNth2gt22;
+ CCTK_REAL_VEC Gtlu132 =
+ kmadd(Gtl113,gtu12,kmadd(Gtl123,gtu22,kmul(Gtl133,gtu23)));
- CCTK_REAL Gtl223 = 0.5*JacPDstandardNth3gt22;
+ CCTK_REAL_VEC Gtlu133 =
+ kmadd(Gtl113,gtu13,kmadd(Gtl123,gtu23,kmul(Gtl133,gtu33)));
- CCTK_REAL Gtl233 = -0.5*JacPDstandardNth2gt33 + JacPDstandardNth3gt23;
+ CCTK_REAL_VEC Gtlu211 =
+ kmadd(Gtl211,gtu11,kmadd(Gtl212,gtu12,kmul(Gtl213,gtu13)));
- CCTK_REAL Gtl311 = JacPDstandardNth1gt13 - 0.5*JacPDstandardNth3gt11;
+ CCTK_REAL_VEC Gtlu212 =
+ kmadd(Gtl211,gtu12,kmadd(Gtl212,gtu22,kmul(Gtl213,gtu23)));
- CCTK_REAL Gtl312 = 0.5*(JacPDstandardNth1gt23 + JacPDstandardNth2gt13
- - JacPDstandardNth3gt12);
+ CCTK_REAL_VEC Gtlu213 =
+ kmadd(Gtl211,gtu13,kmadd(Gtl212,gtu23,kmul(Gtl213,gtu33)));
- CCTK_REAL Gtl313 = 0.5*JacPDstandardNth1gt33;
+ CCTK_REAL_VEC Gtlu221 =
+ kmadd(Gtl212,gtu11,kmadd(Gtl222,gtu12,kmul(Gtl223,gtu13)));
- CCTK_REAL Gtl322 = JacPDstandardNth2gt23 - 0.5*JacPDstandardNth3gt22;
+ CCTK_REAL_VEC Gtlu222 =
+ kmadd(Gtl212,gtu12,kmadd(Gtl222,gtu22,kmul(Gtl223,gtu23)));
- CCTK_REAL Gtl323 = 0.5*JacPDstandardNth2gt33;
+ CCTK_REAL_VEC Gtlu223 =
+ kmadd(Gtl212,gtu13,kmadd(Gtl222,gtu23,kmul(Gtl223,gtu33)));
- CCTK_REAL Gtl333 = 0.5*JacPDstandardNth3gt33;
+ CCTK_REAL_VEC Gtlu231 =
+ kmadd(Gtl213,gtu11,kmadd(Gtl223,gtu12,kmul(Gtl233,gtu13)));
- CCTK_REAL Gtlu111 = Gtl111*gtu11 + Gtl112*gtu12 + Gtl113*gtu13;
+ CCTK_REAL_VEC Gtlu232 =
+ kmadd(Gtl213,gtu12,kmadd(Gtl223,gtu22,kmul(Gtl233,gtu23)));
- CCTK_REAL Gtlu112 = Gtl111*gtu12 + Gtl112*gtu22 + Gtl113*gtu23;
+ CCTK_REAL_VEC Gtlu233 =
+ kmadd(Gtl213,gtu13,kmadd(Gtl223,gtu23,kmul(Gtl233,gtu33)));
- CCTK_REAL Gtlu113 = Gtl111*gtu13 + Gtl112*gtu23 + Gtl113*gtu33;
+ CCTK_REAL_VEC Gtlu311 =
+ kmadd(Gtl311,gtu11,kmadd(Gtl312,gtu12,kmul(Gtl313,gtu13)));
- CCTK_REAL Gtlu121 = Gtl112*gtu11 + Gtl122*gtu12 + Gtl123*gtu13;
+ CCTK_REAL_VEC Gtlu312 =
+ kmadd(Gtl311,gtu12,kmadd(Gtl312,gtu22,kmul(Gtl313,gtu23)));
- CCTK_REAL Gtlu122 = Gtl112*gtu12 + Gtl122*gtu22 + Gtl123*gtu23;
+ CCTK_REAL_VEC Gtlu313 =
+ kmadd(Gtl311,gtu13,kmadd(Gtl312,gtu23,kmul(Gtl313,gtu33)));
- CCTK_REAL Gtlu123 = Gtl112*gtu13 + Gtl122*gtu23 + Gtl123*gtu33;
+ CCTK_REAL_VEC Gtlu321 =
+ kmadd(Gtl312,gtu11,kmadd(Gtl322,gtu12,kmul(Gtl323,gtu13)));
- CCTK_REAL Gtlu131 = Gtl113*gtu11 + Gtl123*gtu12 + Gtl133*gtu13;
+ CCTK_REAL_VEC Gtlu322 =
+ kmadd(Gtl312,gtu12,kmadd(Gtl322,gtu22,kmul(Gtl323,gtu23)));
- CCTK_REAL Gtlu132 = Gtl113*gtu12 + Gtl123*gtu22 + Gtl133*gtu23;
+ CCTK_REAL_VEC Gtlu323 =
+ kmadd(Gtl312,gtu13,kmadd(Gtl322,gtu23,kmul(Gtl323,gtu33)));
- CCTK_REAL Gtlu133 = Gtl113*gtu13 + Gtl123*gtu23 + Gtl133*gtu33;
+ CCTK_REAL_VEC Gtlu331 =
+ kmadd(Gtl313,gtu11,kmadd(Gtl323,gtu12,kmul(Gtl333,gtu13)));
- CCTK_REAL Gtlu211 = Gtl211*gtu11 + Gtl212*gtu12 + Gtl213*gtu13;
+ CCTK_REAL_VEC Gtlu332 =
+ kmadd(Gtl313,gtu12,kmadd(Gtl323,gtu22,kmul(Gtl333,gtu23)));
- CCTK_REAL Gtlu212 = Gtl211*gtu12 + Gtl212*gtu22 + Gtl213*gtu23;
+ CCTK_REAL_VEC Gtlu333 =
+ kmadd(Gtl313,gtu13,kmadd(Gtl323,gtu23,kmul(Gtl333,gtu33)));
- CCTK_REAL Gtlu213 = Gtl211*gtu13 + Gtl212*gtu23 + Gtl213*gtu33;
+ CCTK_REAL_VEC Gt111 =
+ kmadd(Gtl111,gtu11,kmadd(Gtl211,gtu12,kmul(Gtl311,gtu13)));
- CCTK_REAL Gtlu221 = Gtl212*gtu11 + Gtl222*gtu12 + Gtl223*gtu13;
+ CCTK_REAL_VEC Gt211 =
+ kmadd(Gtl111,gtu12,kmadd(Gtl211,gtu22,kmul(Gtl311,gtu23)));
- CCTK_REAL Gtlu222 = Gtl212*gtu12 + Gtl222*gtu22 + Gtl223*gtu23;
+ CCTK_REAL_VEC Gt311 =
+ kmadd(Gtl111,gtu13,kmadd(Gtl211,gtu23,kmul(Gtl311,gtu33)));
- CCTK_REAL Gtlu223 = Gtl212*gtu13 + Gtl222*gtu23 + Gtl223*gtu33;
+ CCTK_REAL_VEC Gt112 =
+ kmadd(Gtl112,gtu11,kmadd(Gtl212,gtu12,kmul(Gtl312,gtu13)));
- CCTK_REAL Gtlu231 = Gtl213*gtu11 + Gtl223*gtu12 + Gtl233*gtu13;
+ CCTK_REAL_VEC Gt212 =
+ kmadd(Gtl112,gtu12,kmadd(Gtl212,gtu22,kmul(Gtl312,gtu23)));
- CCTK_REAL Gtlu232 = Gtl213*gtu12 + Gtl223*gtu22 + Gtl233*gtu23;
+ CCTK_REAL_VEC Gt312 =
+ kmadd(Gtl112,gtu13,kmadd(Gtl212,gtu23,kmul(Gtl312,gtu33)));
- CCTK_REAL Gtlu233 = Gtl213*gtu13 + Gtl223*gtu23 + Gtl233*gtu33;
+ CCTK_REAL_VEC Gt113 =
+ kmadd(Gtl113,gtu11,kmadd(Gtl213,gtu12,kmul(Gtl313,gtu13)));
- CCTK_REAL Gtlu311 = Gtl311*gtu11 + Gtl312*gtu12 + Gtl313*gtu13;
+ CCTK_REAL_VEC Gt213 =
+ kmadd(Gtl113,gtu12,kmadd(Gtl213,gtu22,kmul(Gtl313,gtu23)));
- CCTK_REAL Gtlu312 = Gtl311*gtu12 + Gtl312*gtu22 + Gtl313*gtu23;
+ CCTK_REAL_VEC Gt313 =
+ kmadd(Gtl113,gtu13,kmadd(Gtl213,gtu23,kmul(Gtl313,gtu33)));
- CCTK_REAL Gtlu313 = Gtl311*gtu13 + Gtl312*gtu23 + Gtl313*gtu33;
+ CCTK_REAL_VEC Gt122 =
+ kmadd(Gtl122,gtu11,kmadd(Gtl222,gtu12,kmul(Gtl322,gtu13)));
- CCTK_REAL Gtlu321 = Gtl312*gtu11 + Gtl322*gtu12 + Gtl323*gtu13;
+ CCTK_REAL_VEC Gt222 =
+ kmadd(Gtl122,gtu12,kmadd(Gtl222,gtu22,kmul(Gtl322,gtu23)));
- CCTK_REAL Gtlu322 = Gtl312*gtu12 + Gtl322*gtu22 + Gtl323*gtu23;
+ CCTK_REAL_VEC Gt322 =
+ kmadd(Gtl122,gtu13,kmadd(Gtl222,gtu23,kmul(Gtl322,gtu33)));
- CCTK_REAL Gtlu323 = Gtl312*gtu13 + Gtl322*gtu23 + Gtl323*gtu33;
+ CCTK_REAL_VEC Gt123 =
+ kmadd(Gtl123,gtu11,kmadd(Gtl223,gtu12,kmul(Gtl323,gtu13)));
- CCTK_REAL Gtlu331 = Gtl313*gtu11 + Gtl323*gtu12 + Gtl333*gtu13;
+ CCTK_REAL_VEC Gt223 =
+ kmadd(Gtl123,gtu12,kmadd(Gtl223,gtu22,kmul(Gtl323,gtu23)));
- CCTK_REAL Gtlu332 = Gtl313*gtu12 + Gtl323*gtu22 + Gtl333*gtu23;
+ CCTK_REAL_VEC Gt323 =
+ kmadd(Gtl123,gtu13,kmadd(Gtl223,gtu23,kmul(Gtl323,gtu33)));
- CCTK_REAL Gtlu333 = Gtl313*gtu13 + Gtl323*gtu23 + Gtl333*gtu33;
+ CCTK_REAL_VEC Gt133 =
+ kmadd(Gtl133,gtu11,kmadd(Gtl233,gtu12,kmul(Gtl333,gtu13)));
- CCTK_REAL Gt111 = Gtl111*gtu11 + Gtl211*gtu12 + Gtl311*gtu13;
+ CCTK_REAL_VEC Gt233 =
+ kmadd(Gtl133,gtu12,kmadd(Gtl233,gtu22,kmul(Gtl333,gtu23)));
- CCTK_REAL Gt211 = Gtl111*gtu12 + Gtl211*gtu22 + Gtl311*gtu23;
+ CCTK_REAL_VEC Gt333 =
+ kmadd(Gtl133,gtu13,kmadd(Gtl233,gtu23,kmul(Gtl333,gtu33)));
- CCTK_REAL Gt311 = Gtl111*gtu13 + Gtl211*gtu23 + Gtl311*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 Gt112 = Gtl112*gtu11 + Gtl212*gtu12 + Gtl312*gtu13;
+ 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 Gt212 = Gtl112*gtu12 + Gtl212*gtu22 + Gtl312*gtu23;
+ 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 Gt312 = Gtl112*gtu13 + Gtl212*gtu23 + Gtl312*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))))))))))))))));
- CCTK_REAL Gt113 = Gtl113*gtu11 + Gtl213*gtu12 + Gtl313*gtu13;
+ 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 Gt213 = Gtl113*gtu12 + Gtl213*gtu22 + Gtl313*gtu23;
+ 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 Gt313 = Gtl113*gtu13 + Gtl213*gtu23 + Gtl313*gtu33;
+ 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 Gt122 = Gtl122*gtu11 + Gtl222*gtu12 + Gtl322*gtu13;
+ 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 Gt222 = Gtl122*gtu12 + Gtl222*gtu22 + Gtl322*gtu23;
+ 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 Gt322 = Gtl122*gtu13 + Gtl222*gtu23 + Gtl322*gtu33;
+ CCTK_REAL_VEC fac1 =
+ IfThen(conformalMethod,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
- CCTK_REAL Gt123 = Gtl123*gtu11 + Gtl223*gtu12 + Gtl323*gtu13;
+ CCTK_REAL_VEC cdphi1 = kmul(fac1,JacPDstandardNth1phi);
- CCTK_REAL Gt223 = Gtl123*gtu12 + Gtl223*gtu22 + Gtl323*gtu23;
+ CCTK_REAL_VEC cdphi2 = kmul(fac1,JacPDstandardNth2phi);
- CCTK_REAL Gt323 = Gtl123*gtu13 + Gtl223*gtu23 + Gtl323*gtu33;
+ CCTK_REAL_VEC cdphi3 = kmul(fac1,JacPDstandardNth3phi);
- CCTK_REAL Gt133 = Gtl133*gtu11 + Gtl233*gtu12 + Gtl333*gtu13;
+ CCTK_REAL_VEC fac2 =
+ IfThen(conformalMethod,kmul(INV(SQR(phiL)),ToReal(0.5)),ToReal(0));
- CCTK_REAL Gt233 = Gtl133*gtu12 + Gtl233*gtu22 + Gtl333*gtu23;
+ CCTK_REAL_VEC cdphi211 =
+ kmadd(fac2,SQR(JacPDstandardNth1phi),kmul(fac1,ksub(JacPDstandardNth11phi,kmadd(Gt111,JacPDstandardNth1phi,kmadd(Gt311,JacPDstandardNth3phi,kmul(Gt211,JacPDstandardNth2phi))))));
- CCTK_REAL Gt333 = Gtl133*gtu13 + Gtl233*gtu23 + Gtl333*gtu33;
+ CCTK_REAL_VEC cdphi212 =
+ kmadd(fac2,kmul(JacPDstandardNth1phi,JacPDstandardNth2phi),kmul(fac1,ksub(JacPDstandardNth12phi,kmadd(Gt112,JacPDstandardNth1phi,kmadd(Gt312,JacPDstandardNth3phi,kmul(Gt212,JacPDstandardNth2phi))))));
- CCTK_REAL Xtn1 = Gt111*gtu11 + Gt122*gtu22 + 2*(Gt112*gtu12 +
- Gt113*gtu13 + Gt123*gtu23) + Gt133*gtu33;
+ CCTK_REAL_VEC cdphi213 =
+ kmadd(fac2,kmul(JacPDstandardNth1phi,JacPDstandardNth3phi),kmul(fac1,ksub(JacPDstandardNth13phi,kmadd(Gt113,JacPDstandardNth1phi,kmadd(Gt313,JacPDstandardNth3phi,kmul(Gt213,JacPDstandardNth2phi))))));
- CCTK_REAL Xtn2 = Gt211*gtu11 + Gt222*gtu22 + 2*(Gt212*gtu12 +
- Gt213*gtu13 + Gt223*gtu23) + Gt233*gtu33;
+ CCTK_REAL_VEC cdphi222 =
+ kmsub(fac2,SQR(JacPDstandardNth2phi),kmul(fac1,kmadd(Gt122,JacPDstandardNth1phi,kmadd(Gt222,JacPDstandardNth2phi,kmsub(Gt322,JacPDstandardNth3phi,JacPDstandardNth22phi)))));
- CCTK_REAL Xtn3 = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu12 +
- Gt313*gtu13 + Gt323*gtu23) + Gt333*gtu33;
+ CCTK_REAL_VEC cdphi223 =
+ kmsub(fac2,kmul(JacPDstandardNth2phi,JacPDstandardNth3phi),kmul(fac1,kmadd(Gt123,JacPDstandardNth1phi,kmadd(Gt223,JacPDstandardNth2phi,kmsub(Gt323,JacPDstandardNth3phi,JacPDstandardNth23phi)))));
- CCTK_REAL Rt11 = 0.5*(6*(Gt111*Gtlu111 + Gt112*Gtlu112 +
- Gt113*Gtlu113) + 4*(Gt211*Gtlu121 + Gt212*Gtlu122 + Gt213*Gtlu123 +
- Gt311*Gtlu131 + Gt312*Gtlu132 + Gt313*Gtlu133) -
- gtu11*JacPDstandardNth11gt11 + 2*(Gt211*Gtlu211 + Gt212*Gtlu212 +
- Gt213*Gtlu213 + Gt311*Gtlu311 + Gt312*Gtlu312 + Gt313*Gtlu313 +
- gt11L*JacPDstandardNth1Xt1) + 2*gt12L*JacPDstandardNth1Xt2 +
- 2*gt13L*JacPDstandardNth1Xt3 + gtu12*(-JacPDstandardNth12gt11 -
- JacPDstandardNth21gt11) - gtu22*JacPDstandardNth22gt11 +
- gtu13*(-JacPDstandardNth13gt11 - JacPDstandardNth31gt11) +
- gtu23*(-JacPDstandardNth23gt11 - JacPDstandardNth32gt11) -
- gtu33*JacPDstandardNth33gt11 + 2*Gtl111*Xtn1 + 2*Gtl112*Xtn2 +
- 2*Gtl113*Xtn3);
+ CCTK_REAL_VEC cdphi233 =
+ kmsub(fac2,SQR(JacPDstandardNth3phi),kmul(fac1,kmadd(Gt133,JacPDstandardNth1phi,kmadd(Gt233,JacPDstandardNth2phi,kmsub(Gt333,JacPDstandardNth3phi,JacPDstandardNth33phi)))));
- CCTK_REAL Rt12 = 0.5*(4*(Gt211*Gtlu221 + Gt212*Gtlu222 +
- Gt213*Gtlu223) + 2*(Gt122*Gtlu112 + Gt123*Gtlu113 + Gt111*Gtlu121 +
- Gt212*Gtlu121 + Gt222*Gtlu122 + Gt113*Gtlu123 + Gt223*Gtlu123 +
- Gt312*Gtlu131 + Gt322*Gtlu132 + Gt323*Gtlu133 + Gt111*Gtlu211 +
- Gt112*(Gtlu111 + Gtlu122 + Gtlu212) + Gt113*Gtlu213 + Gt311*Gtlu231 +
- Gt312*Gtlu232 + Gt313*Gtlu233 + Gt311*Gtlu321 + Gt312*Gtlu322 +
- Gt313*Gtlu323) - gtu11*JacPDstandardNth11gt12 +
- gt12L*JacPDstandardNth1Xt1 + gt22L*JacPDstandardNth1Xt2 +
- gt23L*JacPDstandardNth1Xt3 + gtu12*(-JacPDstandardNth12gt12 -
- JacPDstandardNth21gt12) - gtu22*JacPDstandardNth22gt12 +
- gt11L*JacPDstandardNth2Xt1 + gt12L*JacPDstandardNth2Xt2 +
- gt13L*JacPDstandardNth2Xt3 + gtu13*(-JacPDstandardNth13gt12 -
- JacPDstandardNth31gt12) + gtu23*(-JacPDstandardNth23gt12 -
- JacPDstandardNth32gt12) - gtu33*JacPDstandardNth33gt12 + Gtl112*Xtn1 +
- Gtl211*Xtn1 + Gtl122*Xtn2 + Gtl212*Xtn2 + Gtl123*Xtn3 + Gtl213*Xtn3);
+ CCTK_REAL_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 Rt13 = 0.5*(2*(Gt123*Gtlu112 + Gt133*Gtlu113 + Gt213*Gtlu121
- + Gt223*Gtlu122 + Gt233*Gtlu123 + Gt111*Gtlu131 + Gt313*Gtlu131 +
- Gt112*Gtlu132 + Gt323*Gtlu132 + Gt333*Gtlu133 + Gt211*Gtlu231 +
- Gt212*Gtlu232 + Gt213*Gtlu233 + Gt111*Gtlu311 + Gt112*Gtlu312 +
- Gt113*(Gtlu111 + Gtlu133 + Gtlu313) + Gt211*Gtlu321 + Gt212*Gtlu322 +
- Gt213*Gtlu323) + 4*(Gt311*Gtlu331 + Gt312*Gtlu332 + Gt313*Gtlu333) -
- gtu11*JacPDstandardNth11gt13 + gt13L*JacPDstandardNth1Xt1 +
- gt23L*JacPDstandardNth1Xt2 + gt33L*JacPDstandardNth1Xt3 +
- gtu12*(-JacPDstandardNth12gt13 - JacPDstandardNth21gt13) -
- gtu22*JacPDstandardNth22gt13 + gtu13*(-JacPDstandardNth13gt13 -
- JacPDstandardNth31gt13) + gtu23*(-JacPDstandardNth23gt13 -
- JacPDstandardNth32gt13) - gtu33*JacPDstandardNth33gt13 +
- gt11L*JacPDstandardNth3Xt1 + gt12L*JacPDstandardNth3Xt2 +
- gt13L*JacPDstandardNth3Xt3 + Gtl113*Xtn1 + Gtl311*Xtn1 + Gtl123*Xtn2 +
- Gtl312*Xtn2 + Gtl133*Xtn3 + Gtl313*Xtn3);
-
- CCTK_REAL Rt22 = 0.5*(6*(Gt212*Gtlu221 + Gt222*Gtlu222 +
- Gt223*Gtlu223) + 4*(Gt123*Gtlu213 + Gt312*Gtlu231 + Gt322*Gtlu232 +
- Gt323*Gtlu233) - gtu11*JacPDstandardNth11gt22 +
- gtu12*(-JacPDstandardNth12gt22 - JacPDstandardNth21gt22) -
- gtu22*JacPDstandardNth22gt22 + 2*(Gt123*Gtlu123 + Gt112*(Gtlu121 +
- 2*Gtlu211) + Gt122*(Gtlu122 + 2*Gtlu212) + Gt312*Gtlu321 +
- Gt322*Gtlu322 + Gt323*Gtlu323 + gt12L*JacPDstandardNth2Xt1) +
- 2*gt22L*JacPDstandardNth2Xt2 + 2*gt23L*JacPDstandardNth2Xt3 +
- gtu13*(-JacPDstandardNth13gt22 - JacPDstandardNth31gt22) +
- gtu23*(-JacPDstandardNth23gt22 - JacPDstandardNth32gt22) -
- gtu33*JacPDstandardNth33gt22 + 2*Gtl212*Xtn1 + 2*Gtl222*Xtn2 +
- 2*Gtl223*Xtn3);
-
- CCTK_REAL Rt23 = 0.5*(2*(Gt123*Gtlu133 + Gt113*Gtlu211 + Gt123*Gtlu212
- + Gt133*Gtlu213 + Gt213*Gtlu221 + Gt223*Gtlu222 + Gt233*Gtlu223 +
- Gt212*Gtlu231 + Gt313*Gtlu231 + Gt222*Gtlu232 + Gt323*Gtlu232 +
- Gt223*Gtlu233 + Gt333*Gtlu233 + Gt112*(Gtlu131 + Gtlu311) +
- Gt122*(Gtlu132 + Gtlu312) + Gt123*Gtlu313 + Gt212*Gtlu321 +
- Gt222*Gtlu322 + Gt223*Gtlu323) + 4*(Gt312*Gtlu331 + Gt322*Gtlu332 +
- Gt323*Gtlu333) - gtu11*JacPDstandardNth11gt23 +
- gtu12*(-JacPDstandardNth12gt23 - JacPDstandardNth21gt23) -
- gtu22*JacPDstandardNth22gt23 + gt13L*JacPDstandardNth2Xt1 +
- gt23L*JacPDstandardNth2Xt2 + gt33L*JacPDstandardNth2Xt3 +
- gtu13*(-JacPDstandardNth13gt23 - JacPDstandardNth31gt23) +
- gtu23*(-JacPDstandardNth23gt23 - JacPDstandardNth32gt23) -
- gtu33*JacPDstandardNth33gt23 + gt12L*JacPDstandardNth3Xt1 +
- gt22L*JacPDstandardNth3Xt2 + gt23L*JacPDstandardNth3Xt3 + Gtl213*Xtn1 +
- Gtl312*Xtn1 + Gtl223*Xtn2 + Gtl322*Xtn2 + Gtl233*Xtn3 + Gtl323*Xtn3);
-
- CCTK_REAL Rt33 = 0.5*(4*(Gt133*Gtlu313 + Gt213*Gtlu321 + Gt223*Gtlu322
- + Gt233*Gtlu323) + 6*(Gt313*Gtlu331 + Gt323*Gtlu332 + Gt333*Gtlu333) -
- gtu11*JacPDstandardNth11gt33 + gtu12*(-JacPDstandardNth12gt33 -
- JacPDstandardNth21gt33) - gtu22*JacPDstandardNth22gt33 +
- gtu13*(-JacPDstandardNth13gt33 - JacPDstandardNth31gt33) +
- gtu23*(-JacPDstandardNth23gt33 - JacPDstandardNth32gt33) -
- gtu33*JacPDstandardNth33gt33 + 2*(Gt133*Gtlu133 + Gt213*Gtlu231 +
- Gt223*Gtlu232 + Gt233*Gtlu233 + Gt113*(Gtlu131 + 2*Gtlu311) +
- Gt123*(Gtlu132 + 2*Gtlu312) + gt13L*JacPDstandardNth3Xt1) +
- 2*gt23L*JacPDstandardNth3Xt2 + 2*gt33L*JacPDstandardNth3Xt3 +
- 2*Gtl313*Xtn1 + 2*Gtl323*Xtn2 + 2*Gtl333*Xtn3);
-
- CCTK_REAL fac1 = IfThen(conformalMethod,-0.5*INV(phiL),1);
-
- CCTK_REAL cdphi1 = fac1*JacPDstandardNth1phi;
-
- CCTK_REAL cdphi2 = fac1*JacPDstandardNth2phi;
-
- CCTK_REAL cdphi3 = fac1*JacPDstandardNth3phi;
-
- CCTK_REAL fac2 = IfThen(conformalMethod,0.5*INV(SQR(phiL)),0);
-
- CCTK_REAL cdphi211 = fac1*(JacPDstandardNth11phi -
- Gt111*JacPDstandardNth1phi - Gt211*JacPDstandardNth2phi -
- Gt311*JacPDstandardNth3phi) + fac2*SQR(JacPDstandardNth1phi);
-
- CCTK_REAL cdphi212 = fac2*JacPDstandardNth1phi*JacPDstandardNth2phi +
- fac1*(JacPDstandardNth12phi - Gt112*JacPDstandardNth1phi -
- Gt212*JacPDstandardNth2phi - Gt312*JacPDstandardNth3phi);
-
- CCTK_REAL cdphi213 = fac2*JacPDstandardNth1phi*JacPDstandardNth3phi +
- fac1*(JacPDstandardNth13phi - Gt113*JacPDstandardNth1phi -
- Gt213*JacPDstandardNth2phi - Gt313*JacPDstandardNth3phi);
-
- CCTK_REAL cdphi222 = -(fac1*(Gt122*JacPDstandardNth1phi -
- JacPDstandardNth22phi + Gt222*JacPDstandardNth2phi +
- Gt322*JacPDstandardNth3phi)) + fac2*SQR(JacPDstandardNth2phi);
+ CCTK_REAL_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(cdphi3,kmul(gt12L,kmul(gtu13,ToReal(4))),kmul(cdphi2,kmadd(gt12L,kmul(gtu12,ToReal(4)),ToReal(-2))))))));
- CCTK_REAL cdphi223 = fac2*JacPDstandardNth2phi*JacPDstandardNth3phi -
- fac1*(Gt123*JacPDstandardNth1phi - JacPDstandardNth23phi +
- Gt223*JacPDstandardNth2phi + Gt323*JacPDstandardNth3phi);
+ 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(cdphi2,kmul(gt13L,kmul(gtu12,ToReal(4))),kmul(cdphi3,kmadd(gt13L,kmul(gtu13,ToReal(4)),ToReal(-2))))))));
- CCTK_REAL cdphi233 = -(fac1*(Gt133*JacPDstandardNth1phi +
- Gt233*JacPDstandardNth2phi - JacPDstandardNth33phi +
- Gt333*JacPDstandardNth3phi)) + fac2*SQR(JacPDstandardNth3phi);
+ 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 Rphi11 = -2*(cdphi211 + 2*(-1 + gt11L*gtu11)*SQR(cdphi1) +
- gt11L*(cdphi211*gtu11 + 4*(cdphi1*(cdphi2*gtu12 + cdphi3*gtu13) +
- cdphi2*cdphi3*gtu23) + cdphi233*gtu33 + gtu22*(cdphi222 +
- 2*SQR(cdphi2)) + 2*(cdphi212*gtu12 + cdphi213*gtu13 + cdphi223*gtu23 +
- gtu33*SQR(cdphi3))));
+ 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(cdphi1,kmul(gt23L,kmul(gtu12,ToReal(4))),kmul(cdphi3,kmadd(gt23L,kmul(gtu23,ToReal(4)),ToReal(-2))))))));
- CCTK_REAL Rphi12 = -2*(cdphi212 + cdphi1*(cdphi2*(-2 + 4*gt12L*gtu12)
- + 4*cdphi3*gt12L*gtu13) + gt12L*(cdphi211*gtu11 + 4*cdphi2*cdphi3*gtu23
- + 2*(cdphi212*gtu12 + cdphi213*gtu13 + cdphi223*gtu23 +
- gtu11*SQR(cdphi1)) + gtu22*(cdphi222 + 2*SQR(cdphi2)) + gtu33*(cdphi233
- + 2*SQR(cdphi3))));
+ 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 Rphi13 = -2*(cdphi213 + cdphi1*(4*cdphi2*gt13L*gtu12 +
- cdphi3*(-2 + 4*gt13L*gtu13)) + gt13L*(cdphi211*gtu11 +
- 4*cdphi2*cdphi3*gtu23 + 2*(cdphi212*gtu12 + cdphi213*gtu13 +
- cdphi223*gtu23 + gtu11*SQR(cdphi1)) + gtu22*(cdphi222 + 2*SQR(cdphi2))
- + gtu33*(cdphi233 + 2*SQR(cdphi3))));
+ CCTK_REAL_VEC Atm11 =
+ kmadd(At11L,gtu11,kmadd(At12L,gtu12,kmul(At13L,gtu13)));
- CCTK_REAL Rphi22 = -2*(cdphi222 + 2*(-1 + gt22L*gtu22)*SQR(cdphi2) +
- gt22L*(cdphi222*gtu22 + 4*(cdphi1*cdphi3*gtu13 + cdphi2*(cdphi1*gtu12 +
- cdphi3*gtu23)) + cdphi233*gtu33 + gtu11*(cdphi211 + 2*SQR(cdphi1)) +
- 2*(cdphi212*gtu12 + cdphi213*gtu13 + cdphi223*gtu23 +
- gtu33*SQR(cdphi3))));
+ CCTK_REAL_VEC Atm21 =
+ kmadd(At11L,gtu12,kmadd(At12L,gtu22,kmul(At13L,gtu23)));
- CCTK_REAL Rphi23 = -2*(cdphi223 + cdphi2*(4*cdphi1*gt23L*gtu12 +
- cdphi3*(-2 + 4*gt23L*gtu23)) + gt23L*(4*cdphi1*cdphi3*gtu13 +
- cdphi222*gtu22 + gtu11*(cdphi211 + 2*SQR(cdphi1)) + 2*(cdphi212*gtu12 +
- cdphi213*gtu13 + cdphi223*gtu23 + gtu22*SQR(cdphi2)) + gtu33*(cdphi233
- + 2*SQR(cdphi3))));
+ CCTK_REAL_VEC Atm31 =
+ kmadd(At11L,gtu13,kmadd(At12L,gtu23,kmul(At13L,gtu33)));
- CCTK_REAL Rphi33 = -2*(cdphi233 + gt33L*((4*cdphi1*cdphi2 +
- 2*cdphi212)*gtu12 + 4*cdphi3*(cdphi1*gtu13 + cdphi2*gtu23) +
- 2*(cdphi213*gtu13 + cdphi223*gtu23) + cdphi233*gtu33 + gtu11*(cdphi211
- + 2*SQR(cdphi1)) + gtu22*(cdphi222 + 2*SQR(cdphi2))) + 2*(-1 +
- gt33L*gtu33)*SQR(cdphi3));
+ CCTK_REAL_VEC Atm12 =
+ kmadd(At12L,gtu11,kmadd(At22L,gtu12,kmul(At23L,gtu13)));
- CCTK_REAL Atm11 = At11L*gtu11 + At12L*gtu12 + At13L*gtu13;
+ CCTK_REAL_VEC Atm22 =
+ kmadd(At12L,gtu12,kmadd(At22L,gtu22,kmul(At23L,gtu23)));
- CCTK_REAL Atm21 = At11L*gtu12 + At12L*gtu22 + At13L*gtu23;
+ CCTK_REAL_VEC Atm32 =
+ kmadd(At12L,gtu13,kmadd(At22L,gtu23,kmul(At23L,gtu33)));
- CCTK_REAL Atm31 = At11L*gtu13 + At12L*gtu23 + At13L*gtu33;
+ CCTK_REAL_VEC Atm13 =
+ kmadd(At13L,gtu11,kmadd(At23L,gtu12,kmul(At33L,gtu13)));
- CCTK_REAL Atm12 = At12L*gtu11 + At22L*gtu12 + At23L*gtu13;
+ CCTK_REAL_VEC Atm23 =
+ kmadd(At13L,gtu12,kmadd(At23L,gtu22,kmul(At33L,gtu23)));
- CCTK_REAL Atm22 = At12L*gtu12 + At22L*gtu22 + At23L*gtu23;
+ CCTK_REAL_VEC Atm33 =
+ kmadd(At13L,gtu13,kmadd(At23L,gtu23,kmul(At33L,gtu33)));
- CCTK_REAL Atm32 = At12L*gtu13 + At22L*gtu23 + At23L*gtu33;
+ CCTK_REAL_VEC e4phi =
+ IfThen(conformalMethod,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
- CCTK_REAL Atm13 = At13L*gtu11 + At23L*gtu12 + At33L*gtu13;
+ CCTK_REAL_VEC em4phi = INV(e4phi);
- CCTK_REAL Atm23 = At13L*gtu12 + At23L*gtu22 + At33L*gtu23;
+ CCTK_REAL_VEC g11 = kmul(e4phi,gt11L);
- CCTK_REAL Atm33 = At13L*gtu13 + At23L*gtu23 + At33L*gtu33;
+ CCTK_REAL_VEC g12 = kmul(e4phi,gt12L);
- CCTK_REAL e4phi = IfThen(conformalMethod,INV(SQR(phiL)),exp(4*phiL));
+ CCTK_REAL_VEC g13 = kmul(e4phi,gt13L);
- CCTK_REAL em4phi = INV(e4phi);
+ CCTK_REAL_VEC g22 = kmul(e4phi,gt22L);
- CCTK_REAL g11 = e4phi*gt11L;
+ CCTK_REAL_VEC g23 = kmul(e4phi,gt23L);
- CCTK_REAL g12 = e4phi*gt12L;
+ CCTK_REAL_VEC g33 = kmul(e4phi,gt33L);
- CCTK_REAL g13 = e4phi*gt13L;
+ CCTK_REAL_VEC gu11 = kmul(em4phi,gtu11);
- CCTK_REAL g22 = e4phi*gt22L;
+ CCTK_REAL_VEC gu12 = kmul(em4phi,gtu12);
- CCTK_REAL g23 = e4phi*gt23L;
+ CCTK_REAL_VEC gu13 = kmul(em4phi,gtu13);
- CCTK_REAL g33 = e4phi*gt33L;
+ CCTK_REAL_VEC gu22 = kmul(em4phi,gtu22);
- CCTK_REAL gu11 = em4phi*gtu11;
+ CCTK_REAL_VEC gu23 = kmul(em4phi,gtu23);
- CCTK_REAL gu12 = em4phi*gtu12;
+ CCTK_REAL_VEC gu33 = kmul(em4phi,gtu33);
- CCTK_REAL gu13 = em4phi*gtu13;
+ CCTK_REAL_VEC R11 = kadd(Rphi11,Rt11);
- CCTK_REAL gu22 = em4phi*gtu22;
+ CCTK_REAL_VEC R12 = kadd(Rphi12,Rt12);
- CCTK_REAL gu23 = em4phi*gtu23;
+ CCTK_REAL_VEC R13 = kadd(Rphi13,Rt13);
- CCTK_REAL gu33 = em4phi*gtu33;
+ CCTK_REAL_VEC R22 = kadd(Rphi22,Rt22);
- CCTK_REAL R11 = Rphi11 + Rt11;
+ CCTK_REAL_VEC R23 = kadd(Rphi23,Rt23);
- CCTK_REAL R12 = Rphi12 + Rt12;
+ CCTK_REAL_VEC R33 = kadd(Rphi33,Rt33);
- CCTK_REAL R13 = Rphi13 + Rt13;
+ 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 R22 = Rphi22 + Rt22;
+ CCTK_REAL_VEC Ats11 =
+ kmadd(Gt211,JacPDstandardNth2alpha,kmadd(Gt311,JacPDstandardNth3alpha,kmadd(alphaL,R11,kmsub(JacPDstandardNth1alpha,kmadd(cdphi1,ToReal(4),Gt111),JacPDstandardNth11alpha))));
- CCTK_REAL R23 = Rphi23 + Rt23;
+ 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 R33 = Rphi33 + Rt33;
+ 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 trS = em4phi*(eTxxL*gtu11 + eTyyL*gtu22 + 2*(eTxyL*gtu12 +
- eTxzL*gtu13 + eTyzL*gtu23) + eTzzL*gtu33);
+ CCTK_REAL_VEC Ats22 =
+ kmadd(Gt122,JacPDstandardNth1alpha,kmadd(Gt322,JacPDstandardNth3alpha,kmadd(alphaL,R22,kmsub(JacPDstandardNth2alpha,kmadd(cdphi2,ToReal(4),Gt222),JacPDstandardNth22alpha))));
- CCTK_REAL Ats11 = -JacPDstandardNth11alpha + (4*cdphi1 +
- Gt111)*JacPDstandardNth1alpha + Gt211*JacPDstandardNth2alpha +
- Gt311*JacPDstandardNth3alpha + alphaL*R11;
+ 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 Ats12 = -JacPDstandardNth12alpha + (2*cdphi2 +
- Gt112)*JacPDstandardNth1alpha + (2*cdphi1 +
- Gt212)*JacPDstandardNth2alpha + Gt312*JacPDstandardNth3alpha +
- alphaL*R12;
+ CCTK_REAL_VEC Ats33 =
+ kmadd(Gt133,JacPDstandardNth1alpha,kmadd(Gt233,JacPDstandardNth2alpha,kmadd(alphaL,R33,kmsub(JacPDstandardNth3alpha,kmadd(cdphi3,ToReal(4),Gt333),JacPDstandardNth33alpha))));
- CCTK_REAL Ats13 = -JacPDstandardNth13alpha + (2*cdphi3 +
- Gt113)*JacPDstandardNth1alpha + Gt213*JacPDstandardNth2alpha +
- (2*cdphi1 + Gt313)*JacPDstandardNth3alpha + alphaL*R13;
+ 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 Ats22 = Gt122*JacPDstandardNth1alpha -
- JacPDstandardNth22alpha + (4*cdphi2 + Gt222)*JacPDstandardNth2alpha +
- Gt322*JacPDstandardNth3alpha + alphaL*R22;
+ CCTK_REAL_VEC At11rhsL =
+ kmadd(em4phi,kmadd(g11,kmul(trAts,ToReal(-0.3333333333333333333333333333333333333333)),Ats11),kmadd(At11L,kmadd(kadd(JacPDstandardNth2beta2,JacPDstandardNth3beta3),ToReal(-0.6666666666666666666666666666666666666667),kmul(JacPDstandardNth1beta1,ToReal(1.333333333333333333333333333333333333333))),kmadd(kmadd(At12L,JacPDstandardNth1beta2,kmul(At13L,JacPDstandardNth1beta3)),ToReal(2.),kmul(alphaL,kmadd(kmadd(At12L,Atm21,kmul(At13L,Atm31)),ToReal(-2.),kmadd(At11L,kmadd(Atm11,ToReal(-2.),trKL),kmul(em4phi,kmadd(eTxxL,ToReal(-25.13274122871834590770114706623602307358),kmul(g11,kmul(trS,ToReal(8.377580409572781969233715688745341024526)))))))))));
- CCTK_REAL Ats23 = Gt123*JacPDstandardNth1alpha -
- JacPDstandardNth23alpha + (2*cdphi3 + Gt223)*JacPDstandardNth2alpha +
- (2*cdphi2 + Gt323)*JacPDstandardNth3alpha + alphaL*R23;
+ CCTK_REAL_VEC At12rhsL =
+ kmadd(At22L,JacPDstandardNth1beta2,kmadd(At23L,JacPDstandardNth1beta3,kmadd(At11L,JacPDstandardNth2beta1,kmadd(At13L,JacPDstandardNth2beta3,kmadd(em4phi,kmadd(g12,kmul(trAts,ToReal(-0.3333333333333333333333333333333333333333)),Ats12),kmadd(At12L,kmadd(JacPDstandardNth3beta3,ToReal(-0.6666666666666666666666666666666666666667),kmul(kadd(JacPDstandardNth1beta1,JacPDstandardNth2beta2),ToReal(0.3333333333333333333333333333333333333333))),kmul(alphaL,kmadd(At12L,trKL,kmadd(kmadd(At11L,Atm12,kmadd(At12L,Atm22,kmul(At13L,Atm32))),ToReal(-2.),kmul(em4phi,kmadd(eTxyL,ToReal(-25.13274122871834590770114706623602307358),kmul(g12,kmul(trS,ToReal(8.377580409572781969233715688745341024526))))))))))))));
- CCTK_REAL Ats33 = Gt133*JacPDstandardNth1alpha +
- Gt233*JacPDstandardNth2alpha - JacPDstandardNth33alpha + (4*cdphi3 +
- Gt333)*JacPDstandardNth3alpha + alphaL*R33;
+ CCTK_REAL_VEC At13rhsL =
+ kmadd(At23L,JacPDstandardNth1beta2,kmadd(At33L,JacPDstandardNth1beta3,kmadd(At11L,JacPDstandardNth3beta1,kmadd(At12L,JacPDstandardNth3beta2,kmadd(em4phi,kmadd(g13,kmul(trAts,ToReal(-0.3333333333333333333333333333333333333333)),Ats13),kmadd(At13L,kmadd(JacPDstandardNth2beta2,ToReal(-0.6666666666666666666666666666666666666667),kmul(kadd(JacPDstandardNth1beta1,JacPDstandardNth3beta3),ToReal(0.3333333333333333333333333333333333333333))),kmul(alphaL,kmadd(At13L,trKL,kmadd(kmadd(At11L,Atm13,kmadd(At12L,Atm23,kmul(At13L,Atm33))),ToReal(-2.),kmul(em4phi,kmadd(eTxzL,ToReal(-25.13274122871834590770114706623602307358),kmul(g13,kmul(trS,ToReal(8.377580409572781969233715688745341024526))))))))))))));
- CCTK_REAL trAts = Ats11*gu11 + Ats22*gu22 + 2*(Ats12*gu12 + Ats13*gu13
- + Ats23*gu23) + Ats33*gu33;
+ CCTK_REAL_VEC At22rhsL =
+ kmadd(em4phi,kmadd(g22,kmul(trAts,ToReal(-0.3333333333333333333333333333333333333333)),Ats22),kmadd(At22L,kmadd(kadd(JacPDstandardNth1beta1,JacPDstandardNth3beta3),ToReal(-0.6666666666666666666666666666666666666667),kmul(JacPDstandardNth2beta2,ToReal(1.333333333333333333333333333333333333333))),kmadd(kmadd(At12L,JacPDstandardNth2beta1,kmul(At23L,JacPDstandardNth2beta3)),ToReal(2.),kmul(alphaL,kmadd(At22L,trKL,kmadd(kmadd(At12L,Atm12,kmadd(At22L,Atm22,kmul(At23L,Atm32))),ToReal(-2.),kmul(em4phi,kmadd(eTyyL,ToReal(-25.13274122871834590770114706623602307358),kmul(g22,kmul(trS,ToReal(8.377580409572781969233715688745341024526)))))))))));
- CCTK_REAL At11rhsL = 2.*(At12L*JacPDstandardNth1beta2 +
- At13L*JacPDstandardNth1beta3) +
- At11L*(1.333333333333333333333333333333333333333*JacPDstandardNth1beta1
- - 0.6666666666666666666666666666666666666667*(JacPDstandardNth2beta2 +
- JacPDstandardNth3beta3)) + em4phi*(Ats11 -
- 0.3333333333333333333333333333333333333333*g11*trAts) +
- alphaL*(-2.*(At12L*Atm21 + At13L*Atm31) + At11L*(-2.*Atm11 + trKL) +
- em4phi*(-25.13274122871834590770114706623602307358*eTxxL +
- 8.377580409572781969233715688745341024526*g11*trS));
+ CCTK_REAL_VEC At23rhsL =
+ kmadd(At13L,JacPDstandardNth2beta1,kmadd(At33L,JacPDstandardNth2beta3,kmadd(At12L,JacPDstandardNth3beta1,kmadd(At22L,JacPDstandardNth3beta2,kmadd(em4phi,kmadd(g23,kmul(trAts,ToReal(-0.3333333333333333333333333333333333333333)),Ats23),kmadd(At23L,kmadd(JacPDstandardNth1beta1,ToReal(-0.6666666666666666666666666666666666666667),kmul(kadd(JacPDstandardNth2beta2,JacPDstandardNth3beta3),ToReal(0.3333333333333333333333333333333333333333))),kmul(alphaL,kmadd(At23L,trKL,kmadd(kmadd(At12L,Atm13,kmadd(At22L,Atm23,kmul(At23L,Atm33))),ToReal(-2.),kmul(em4phi,kmadd(eTyzL,ToReal(-25.13274122871834590770114706623602307358),kmul(g23,kmul(trS,ToReal(8.377580409572781969233715688745341024526))))))))))))));
- CCTK_REAL At12rhsL = At22L*JacPDstandardNth1beta2 +
- At23L*JacPDstandardNth1beta3 + At11L*JacPDstandardNth2beta1 +
- At13L*JacPDstandardNth2beta3 +
- At12L*(0.3333333333333333333333333333333333333333*(JacPDstandardNth1beta1
- + JacPDstandardNth2beta2) -
- 0.6666666666666666666666666666666666666667*JacPDstandardNth3beta3) +
- em4phi*(Ats12 - 0.3333333333333333333333333333333333333333*g12*trAts) +
- alphaL*(-2.*(At11L*Atm12 + At12L*Atm22 + At13L*Atm32) + At12L*trKL +
- em4phi*(-25.13274122871834590770114706623602307358*eTxyL +
- 8.377580409572781969233715688745341024526*g12*trS));
+ CCTK_REAL_VEC At33rhsL =
+ kmadd(em4phi,kmadd(g33,kmul(trAts,ToReal(-0.3333333333333333333333333333333333333333)),Ats33),kmadd(At33L,kmadd(kadd(JacPDstandardNth1beta1,JacPDstandardNth2beta2),ToReal(-0.6666666666666666666666666666666666666667),kmul(JacPDstandardNth3beta3,ToReal(1.333333333333333333333333333333333333333))),kmadd(kmadd(At13L,JacPDstandardNth3beta1,kmul(At23L,JacPDstandardNth3beta2)),ToReal(2.),kmul(alphaL,kmadd(At33L,trKL,kmadd(kmadd(At13L,Atm13,kmadd(At23L,Atm23,kmul(At33L,Atm33))),ToReal(-2.),kmul(em4phi,kmadd(eTzzL,ToReal(-25.13274122871834590770114706623602307358),kmul(g33,kmul(trS,ToReal(8.377580409572781969233715688745341024526)))))))))));
- CCTK_REAL At13rhsL = At23L*JacPDstandardNth1beta2 +
- At33L*JacPDstandardNth1beta3 + At11L*JacPDstandardNth3beta1 +
- At12L*JacPDstandardNth3beta2 +
- At13L*(-0.6666666666666666666666666666666666666667*JacPDstandardNth2beta2
- + 0.3333333333333333333333333333333333333333*(JacPDstandardNth1beta1 +
- JacPDstandardNth3beta3)) + em4phi*(Ats13 -
- 0.3333333333333333333333333333333333333333*g13*trAts) +
- alphaL*(-2.*(At11L*Atm13 + At12L*Atm23 + At13L*Atm33) + At13L*trKL +
- em4phi*(-25.13274122871834590770114706623602307358*eTxzL +
- 8.377580409572781969233715688745341024526*g13*trS));
-
- CCTK_REAL At22rhsL = 2.*(At12L*JacPDstandardNth2beta1 +
- At23L*JacPDstandardNth2beta3) +
- At22L*(1.333333333333333333333333333333333333333*JacPDstandardNth2beta2
- - 0.6666666666666666666666666666666666666667*(JacPDstandardNth1beta1 +
- JacPDstandardNth3beta3)) + em4phi*(Ats22 -
- 0.3333333333333333333333333333333333333333*g22*trAts) +
- alphaL*(-2.*(At12L*Atm12 + At22L*Atm22 + At23L*Atm32) + At22L*trKL +
- em4phi*(-25.13274122871834590770114706623602307358*eTyyL +
- 8.377580409572781969233715688745341024526*g22*trS));
-
- CCTK_REAL At23rhsL = At13L*JacPDstandardNth2beta1 +
- At33L*JacPDstandardNth2beta3 + At12L*JacPDstandardNth3beta1 +
- At22L*JacPDstandardNth3beta2 +
- At23L*(-0.6666666666666666666666666666666666666667*JacPDstandardNth1beta1
- + 0.3333333333333333333333333333333333333333*(JacPDstandardNth2beta2 +
- JacPDstandardNth3beta3)) + em4phi*(Ats23 -
- 0.3333333333333333333333333333333333333333*g23*trAts) +
- alphaL*(-2.*(At12L*Atm13 + At22L*Atm23 + At23L*Atm33) + At23L*trKL +
- em4phi*(-25.13274122871834590770114706623602307358*eTyzL +
- 8.377580409572781969233715688745341024526*g23*trS));
-
- CCTK_REAL At33rhsL = 2.*(At13L*JacPDstandardNth3beta1 +
- At23L*JacPDstandardNth3beta2) +
- At33L*(-0.6666666666666666666666666666666666666667*(JacPDstandardNth1beta1
- + JacPDstandardNth2beta2) +
- 1.333333333333333333333333333333333333333*JacPDstandardNth3beta3) +
- em4phi*(Ats33 - 0.3333333333333333333333333333333333333333*g33*trAts) +
- alphaL*(-2.*(At13L*Atm13 + At23L*Atm23 + At33L*Atm33) + At33L*trKL +
- em4phi*(-25.13274122871834590770114706623602307358*eTzzL +
- 8.377580409572781969233715688745341024526*g33*trS));
-
- /* Copy local copies back to grid functions */
- At11rhs[index] = At11rhsL;
- At12rhs[index] = At12rhsL;
- At13rhs[index] = At13rhsL;
- At22rhs[index] = At22rhsL;
- At23rhs[index] = At23rhsL;
- At33rhs[index] = At33rhsL;
+ /* 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(At11rhs[index],At11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At12rhs[index],At12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At13rhs[index],At13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At22rhs[index],At22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At23rhs[index],At23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At33rhs[index],At33rhsL,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(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_hi(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_hi(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_hi(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_hi(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_hi(At33rhs[index],At33rhsL,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(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_lo(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_lo(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_lo(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_lo(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_lo(At33rhs[index],At33rhsL,elt_count);
+ break;
+ }
+ vec_store_nta(At11rhs[index],At11rhsL);
+ vec_store_nta(At12rhs[index],At12rhsL);
+ vec_store_nta(At13rhs[index],At13rhsL);
+ vec_store_nta(At22rhs[index],At22rhsL);
+ vec_store_nta(At23rhs[index],At23rhsL);
+ vec_store_nta(At33rhs[index],At33rhsL);
}
- LC_ENDLOOP3 (ML_BSSN_MP_O8_RHS2);
+ LC_ENDLOOP3VEC (ML_BSSN_MP_O8_RHS2);
}
extern "C" void ML_BSSN_MP_O8_RHS2(CCTK_ARGUMENTS)
@@ -1751,5 +1857,43 @@ extern "C" void ML_BSSN_MP_O8_RHS2(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_O8_RHS2_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_MP_O8_RHS2_calc_every != ML_BSSN_MP_O8_RHS2_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN_MP_O8::ML_curv","ML_BSSN_MP_O8::ML_curvrhs","ML_BSSN_MP_O8::ML_Gamma","ML_BSSN_MP_O8::ML_lapse","ML_BSSN_MP_O8::ML_log_confac","ML_BSSN_MP_O8::ML_metric","ML_BSSN_MP_O8::ML_shift","ML_BSSN_MP_O8::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_O8_RHS2", 8, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_O8_RHS2", 1, 1, 1);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_O8_RHS2", 2, 2, 2);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_O8_RHS2", 3, 3, 3);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_O8_RHS2", 4, 4, 4);
+ break;
+ }
+
GenericFD_LoopOverInterior(cctkGH, &ML_BSSN_MP_O8_RHS2_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_MP_O8_RHS2_Body");
+ }
}
diff --git a/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_RHSStaticBoundary.cc b/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_RHSStaticBoundary.cc
index b935519..58bf0a7 100644
--- a/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_RHSStaticBoundary.cc
+++ b/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_RHSStaticBoundary.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_MP_O8_RHSStaticBoundary_SelectBCs(CCTK_ARGUMENTS)
{
@@ -57,7 +58,7 @@ extern "C" void ML_BSSN_MP_O8_RHSStaticBoundary_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_BSSN_MP_O8_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_MP_O8_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;
@@ -65,20 +66,6 @@ static void ML_BSSN_MP_O8_RHSStaticBoundary_Body(cGH const * restrict const cctk
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_O8_RHSStaticBoundary_Body");
- }
-
- if (cctk_iteration % ML_BSSN_MP_O8_RHSStaticBoundary_calc_every != ML_BSSN_MP_O8_RHSStaticBoundary_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN_MP_O8::ML_curvrhs","ML_BSSN_MP_O8::ML_dtlapserhs","ML_BSSN_MP_O8::ML_dtshiftrhs","ML_BSSN_MP_O8::ML_Gammarhs","ML_BSSN_MP_O8::ML_lapserhs","ML_BSSN_MP_O8::ML_log_confacrhs","ML_BSSN_MP_O8::ML_metricrhs","ML_BSSN_MP_O8::ML_shiftrhs","ML_BSSN_MP_O8::ML_trace_curvrhs"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_O8_RHSStaticBoundary", 9, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -88,47 +75,102 @@ static void ML_BSSN_MP_O8_RHSStaticBoundary_Body(cGH const * restrict const cctk
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o1024dx = 0.0009765625*INV(dx);
- CCTK_REAL const p1o1024dy = 0.0009765625*INV(dy);
- CCTK_REAL const p1o1024dz = 0.0009765625*INV(dz);
- CCTK_REAL const p1o1680dx = 0.000595238095238095238095238095238*INV(dx);
- CCTK_REAL const p1o1680dy = 0.000595238095238095238095238095238*INV(dy);
- CCTK_REAL const p1o1680dz = 0.000595238095238095238095238095238*INV(dz);
- CCTK_REAL const p1o5040dx2 = 0.000198412698412698412698412698413*INV(SQR(dx));
- CCTK_REAL const p1o5040dy2 = 0.000198412698412698412698412698413*INV(SQR(dy));
- CCTK_REAL const p1o5040dz2 = 0.000198412698412698412698412698413*INV(SQR(dz));
- CCTK_REAL const p1o560dx = 0.00178571428571428571428571428571*INV(dx);
- CCTK_REAL const p1o560dy = 0.00178571428571428571428571428571*INV(dy);
- CCTK_REAL const p1o560dz = 0.00178571428571428571428571428571*INV(dz);
- CCTK_REAL const p1o705600dxdy = 1.41723356009070294784580498866e-6*INV(dx)*INV(dy);
- CCTK_REAL const p1o705600dxdz = 1.41723356009070294784580498866e-6*INV(dx)*INV(dz);
- CCTK_REAL const p1o705600dydz = 1.41723356009070294784580498866e-6*INV(dy)*INV(dz);
- CCTK_REAL const p1o840dx = 0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const p1o840dy = 0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const p1o840dz = 0.00119047619047619047619047619048*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o840dx = -0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const pm1o840dy = -0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const pm1o840dz = -0.00119047619047619047619047619048*INV(dz);
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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)
@@ -175,11 +217,20 @@ static void ML_BSSN_MP_O8_RHSStaticBoundary_Body(cGH const * restrict const cctk
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_LOOP3 (ML_BSSN_MP_O8_RHSStaticBoundary,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_MP_O8_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;
@@ -192,85 +243,198 @@ static void ML_BSSN_MP_O8_RHSStaticBoundary_Body(cGH const * restrict const cctk
/* Precompute derivatives */
- /* Calculate temporaries and grid functions */
- CCTK_REAL phirhsL = 0;
-
- CCTK_REAL gt11rhsL = 0;
-
- CCTK_REAL gt12rhsL = 0;
-
- CCTK_REAL gt13rhsL = 0;
-
- CCTK_REAL gt22rhsL = 0;
-
- CCTK_REAL gt23rhsL = 0;
-
- CCTK_REAL gt33rhsL = 0;
-
- CCTK_REAL trKrhsL = 0;
-
- CCTK_REAL At11rhsL = 0;
-
- CCTK_REAL At12rhsL = 0;
-
- CCTK_REAL At13rhsL = 0;
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
- CCTK_REAL At22rhsL = 0;
-
- CCTK_REAL At23rhsL = 0;
-
- CCTK_REAL At33rhsL = 0;
-
- CCTK_REAL Xt1rhsL = 0;
-
- CCTK_REAL Xt2rhsL = 0;
+ /* Calculate temporaries and grid functions */
+ CCTK_REAL_VEC phirhsL = ToReal(0);
- CCTK_REAL Xt3rhsL = 0;
+ CCTK_REAL_VEC gt11rhsL = ToReal(0);
- CCTK_REAL alpharhsL = 0;
+ CCTK_REAL_VEC gt12rhsL = ToReal(0);
- CCTK_REAL ArhsL = 0;
+ CCTK_REAL_VEC gt13rhsL = ToReal(0);
- CCTK_REAL beta1rhsL = 0;
+ CCTK_REAL_VEC gt22rhsL = ToReal(0);
- CCTK_REAL beta2rhsL = 0;
+ CCTK_REAL_VEC gt23rhsL = ToReal(0);
- CCTK_REAL beta3rhsL = 0;
+ CCTK_REAL_VEC gt33rhsL = ToReal(0);
- CCTK_REAL B1rhsL = 0;
+ CCTK_REAL_VEC trKrhsL = ToReal(0);
+
+ CCTK_REAL_VEC At11rhsL = ToReal(0);
- CCTK_REAL B2rhsL = 0;
+ CCTK_REAL_VEC At12rhsL = ToReal(0);
- CCTK_REAL B3rhsL = 0;
+ CCTK_REAL_VEC At13rhsL = ToReal(0);
- /* Copy local copies back to grid functions */
- alpharhs[index] = alpharhsL;
- Arhs[index] = ArhsL;
- At11rhs[index] = At11rhsL;
- At12rhs[index] = At12rhsL;
- At13rhs[index] = At13rhsL;
- At22rhs[index] = At22rhsL;
- At23rhs[index] = At23rhsL;
- At33rhs[index] = At33rhsL;
- B1rhs[index] = B1rhsL;
- B2rhs[index] = B2rhsL;
- B3rhs[index] = B3rhsL;
- beta1rhs[index] = beta1rhsL;
- beta2rhs[index] = beta2rhsL;
- beta3rhs[index] = beta3rhsL;
- gt11rhs[index] = gt11rhsL;
- gt12rhs[index] = gt12rhsL;
- gt13rhs[index] = gt13rhsL;
- gt22rhs[index] = gt22rhsL;
- gt23rhs[index] = gt23rhsL;
- gt33rhs[index] = gt33rhsL;
- phirhs[index] = phirhsL;
- trKrhs[index] = trKrhsL;
- Xt1rhs[index] = Xt1rhsL;
- Xt2rhs[index] = Xt2rhsL;
- Xt3rhs[index] = Xt3rhsL;
+ 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);
+
+ /* 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(Arhs[index],ArhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At11rhs[index],At11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At12rhs[index],At12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At13rhs[index],At13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At22rhs[index],At22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At23rhs[index],At23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At33rhs[index],At33rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B1rhs[index],B1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B2rhs[index],B2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt12rhs[index],gt12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt13rhs[index],gt13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt22rhs[index],gt22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt23rhs[index],gt23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt33rhs[index],gt33rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(phirhs[index],phirhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(trKrhs[index],trKrhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt1rhs[index],Xt1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt2rhs[index],Xt2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt3rhs[index],Xt3rhsL,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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_hi(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_hi(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_hi(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_hi(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_hi(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_hi(At33rhs[index],At33rhsL,elt_count);
+ vec_store_nta_partial_hi(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_hi(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_hi(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_hi(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_hi(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_hi(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_hi(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_hi(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_hi(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_hi(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_hi(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt3rhs[index],Xt3rhsL,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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_lo(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_lo(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_lo(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_lo(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_lo(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_lo(At33rhs[index],At33rhsL,elt_count);
+ vec_store_nta_partial_lo(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_lo(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_lo(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_lo(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_lo(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_lo(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_lo(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_lo(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_lo(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_lo(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_lo(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt3rhs[index],Xt3rhsL,elt_count);
+ break;
+ }
+ vec_store_nta(alpharhs[index],alpharhsL);
+ vec_store_nta(Arhs[index],ArhsL);
+ vec_store_nta(At11rhs[index],At11rhsL);
+ vec_store_nta(At12rhs[index],At12rhsL);
+ vec_store_nta(At13rhs[index],At13rhsL);
+ vec_store_nta(At22rhs[index],At22rhsL);
+ vec_store_nta(At23rhs[index],At23rhsL);
+ vec_store_nta(At33rhs[index],At33rhsL);
+ vec_store_nta(B1rhs[index],B1rhsL);
+ vec_store_nta(B2rhs[index],B2rhsL);
+ vec_store_nta(B3rhs[index],B3rhsL);
+ vec_store_nta(beta1rhs[index],beta1rhsL);
+ vec_store_nta(beta2rhs[index],beta2rhsL);
+ vec_store_nta(beta3rhs[index],beta3rhsL);
+ vec_store_nta(gt11rhs[index],gt11rhsL);
+ vec_store_nta(gt12rhs[index],gt12rhsL);
+ vec_store_nta(gt13rhs[index],gt13rhsL);
+ vec_store_nta(gt22rhs[index],gt22rhsL);
+ vec_store_nta(gt23rhs[index],gt23rhsL);
+ vec_store_nta(gt33rhs[index],gt33rhsL);
+ vec_store_nta(phirhs[index],phirhsL);
+ vec_store_nta(trKrhs[index],trKrhsL);
+ vec_store_nta(Xt1rhs[index],Xt1rhsL);
+ vec_store_nta(Xt2rhs[index],Xt2rhsL);
+ vec_store_nta(Xt3rhs[index],Xt3rhsL);
}
- LC_ENDLOOP3 (ML_BSSN_MP_O8_RHSStaticBoundary);
+ LC_ENDLOOP3VEC (ML_BSSN_MP_O8_RHSStaticBoundary);
}
extern "C" void ML_BSSN_MP_O8_RHSStaticBoundary(CCTK_ARGUMENTS)
@@ -278,5 +442,39 @@ extern "C" void ML_BSSN_MP_O8_RHSStaticBoundary(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_O8_RHSStaticBoundary_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_MP_O8_RHSStaticBoundary_calc_every != ML_BSSN_MP_O8_RHSStaticBoundary_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN_MP_O8::ML_curvrhs","ML_BSSN_MP_O8::ML_dtlapserhs","ML_BSSN_MP_O8::ML_dtshiftrhs","ML_BSSN_MP_O8::ML_Gammarhs","ML_BSSN_MP_O8::ML_lapserhs","ML_BSSN_MP_O8::ML_log_confacrhs","ML_BSSN_MP_O8::ML_metricrhs","ML_BSSN_MP_O8::ML_shiftrhs","ML_BSSN_MP_O8::ML_trace_curvrhs"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_O8_RHSStaticBoundary", 9, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverBoundary(cctkGH, &ML_BSSN_MP_O8_RHSStaticBoundary_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_MP_O8_RHSStaticBoundary_Body");
+ }
}
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 0d3966a..8806e19 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
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_MP_O8_boundary_SelectBCs(CCTK_ARGUMENTS)
{
@@ -57,7 +58,7 @@ extern "C" void ML_BSSN_MP_O8_boundary_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_BSSN_MP_O8_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_MP_O8_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;
@@ -65,20 +66,6 @@ static void ML_BSSN_MP_O8_boundary_Body(cGH const * restrict const cctkGH, int c
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_O8_boundary_Body");
- }
-
- if (cctk_iteration % ML_BSSN_MP_O8_boundary_calc_every != ML_BSSN_MP_O8_boundary_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN_MP_O8::ML_curv","ML_BSSN_MP_O8::ML_dtlapse","ML_BSSN_MP_O8::ML_dtshift","ML_BSSN_MP_O8::ML_Gamma","ML_BSSN_MP_O8::ML_lapse","ML_BSSN_MP_O8::ML_log_confac","ML_BSSN_MP_O8::ML_metric","ML_BSSN_MP_O8::ML_shift","ML_BSSN_MP_O8::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_O8_boundary", 9, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -88,47 +75,102 @@ static void ML_BSSN_MP_O8_boundary_Body(cGH const * restrict const cctkGH, int c
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o1024dx = 0.0009765625*INV(dx);
- CCTK_REAL const p1o1024dy = 0.0009765625*INV(dy);
- CCTK_REAL const p1o1024dz = 0.0009765625*INV(dz);
- CCTK_REAL const p1o1680dx = 0.000595238095238095238095238095238*INV(dx);
- CCTK_REAL const p1o1680dy = 0.000595238095238095238095238095238*INV(dy);
- CCTK_REAL const p1o1680dz = 0.000595238095238095238095238095238*INV(dz);
- CCTK_REAL const p1o5040dx2 = 0.000198412698412698412698412698413*INV(SQR(dx));
- CCTK_REAL const p1o5040dy2 = 0.000198412698412698412698412698413*INV(SQR(dy));
- CCTK_REAL const p1o5040dz2 = 0.000198412698412698412698412698413*INV(SQR(dz));
- CCTK_REAL const p1o560dx = 0.00178571428571428571428571428571*INV(dx);
- CCTK_REAL const p1o560dy = 0.00178571428571428571428571428571*INV(dy);
- CCTK_REAL const p1o560dz = 0.00178571428571428571428571428571*INV(dz);
- CCTK_REAL const p1o705600dxdy = 1.41723356009070294784580498866e-6*INV(dx)*INV(dy);
- CCTK_REAL const p1o705600dxdz = 1.41723356009070294784580498866e-6*INV(dx)*INV(dz);
- CCTK_REAL const p1o705600dydz = 1.41723356009070294784580498866e-6*INV(dy)*INV(dz);
- CCTK_REAL const p1o840dx = 0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const p1o840dy = 0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const p1o840dz = 0.00119047619047619047619047619048*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o840dx = -0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const pm1o840dy = -0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const pm1o840dz = -0.00119047619047619047619047619048*INV(dz);
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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)
@@ -175,11 +217,20 @@ static void ML_BSSN_MP_O8_boundary_Body(cGH const * restrict const cctkGH, int c
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_LOOP3 (ML_BSSN_MP_O8_boundary,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_MP_O8_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;
@@ -192,85 +243,198 @@ static void ML_BSSN_MP_O8_boundary_Body(cGH const * restrict const cctkGH, int c
/* Precompute derivatives */
- /* Calculate temporaries and grid functions */
- CCTK_REAL phiL = IfThen(conformalMethod,1,0);
-
- CCTK_REAL gt11L = 1;
-
- CCTK_REAL gt12L = 0;
-
- CCTK_REAL gt13L = 0;
-
- CCTK_REAL gt22L = 1;
-
- CCTK_REAL gt23L = 0;
-
- CCTK_REAL gt33L = 1;
-
- CCTK_REAL trKL = 0;
-
- CCTK_REAL At11L = 0;
-
- CCTK_REAL At12L = 0;
-
- CCTK_REAL At13L = 0;
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
- CCTK_REAL At22L = 0;
-
- CCTK_REAL At23L = 0;
-
- CCTK_REAL At33L = 0;
-
- CCTK_REAL Xt1L = 0;
-
- CCTK_REAL Xt2L = 0;
+ /* Calculate temporaries and grid functions */
+ CCTK_REAL_VEC phiL = IfThen(conformalMethod,ToReal(1),ToReal(0));
- CCTK_REAL Xt3L = 0;
+ CCTK_REAL_VEC gt11L = ToReal(1);
- CCTK_REAL alphaL = 1;
+ CCTK_REAL_VEC gt12L = ToReal(0);
- CCTK_REAL AL = 0;
+ CCTK_REAL_VEC gt13L = ToReal(0);
- CCTK_REAL beta1L = 0;
+ CCTK_REAL_VEC gt22L = ToReal(1);
- CCTK_REAL beta2L = 0;
+ CCTK_REAL_VEC gt23L = ToReal(0);
- CCTK_REAL beta3L = 0;
+ CCTK_REAL_VEC gt33L = ToReal(1);
- CCTK_REAL B1L = 0;
+ CCTK_REAL_VEC trKL = ToReal(0);
+
+ CCTK_REAL_VEC At11L = ToReal(0);
- CCTK_REAL B2L = 0;
+ CCTK_REAL_VEC At12L = ToReal(0);
- CCTK_REAL B3L = 0;
+ CCTK_REAL_VEC At13L = ToReal(0);
- /* Copy local copies back to grid functions */
- A[index] = AL;
- alpha[index] = alphaL;
- At11[index] = At11L;
- At12[index] = At12L;
- At13[index] = At13L;
- At22[index] = At22L;
- At23[index] = At23L;
- At33[index] = At33L;
- B1[index] = B1L;
- B2[index] = B2L;
- B3[index] = B3L;
- beta1[index] = beta1L;
- beta2[index] = beta2L;
- beta3[index] = beta3L;
- gt11[index] = gt11L;
- gt12[index] = gt12L;
- gt13[index] = gt13L;
- gt22[index] = gt22L;
- gt23[index] = gt23L;
- gt33[index] = gt33L;
- phi[index] = phiL;
- trK[index] = trKL;
- Xt1[index] = Xt1L;
- Xt2[index] = Xt2L;
- Xt3[index] = Xt3L;
+ 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);
+
+ /* 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(A[index],AL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(alpha[index],alphaL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At11[index],At11L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At12[index],At12L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At13[index],At13L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At22[index],At22L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At23[index],At23L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At33[index],At33L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B1[index],B1L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B2[index],B2L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B3[index],B3L,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(gt11[index],gt11L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt12[index],gt12L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt13[index],gt13L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt22[index],gt22L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt23[index],gt23L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt33[index],gt33L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(phi[index],phiL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(trK[index],trKL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt1[index],Xt1L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt2[index],Xt2L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt3[index],Xt3L,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(A[index],AL,elt_count);
+ vec_store_nta_partial_hi(alpha[index],alphaL,elt_count);
+ vec_store_nta_partial_hi(At11[index],At11L,elt_count);
+ vec_store_nta_partial_hi(At12[index],At12L,elt_count);
+ vec_store_nta_partial_hi(At13[index],At13L,elt_count);
+ vec_store_nta_partial_hi(At22[index],At22L,elt_count);
+ vec_store_nta_partial_hi(At23[index],At23L,elt_count);
+ vec_store_nta_partial_hi(At33[index],At33L,elt_count);
+ vec_store_nta_partial_hi(B1[index],B1L,elt_count);
+ vec_store_nta_partial_hi(B2[index],B2L,elt_count);
+ vec_store_nta_partial_hi(B3[index],B3L,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(gt11[index],gt11L,elt_count);
+ vec_store_nta_partial_hi(gt12[index],gt12L,elt_count);
+ vec_store_nta_partial_hi(gt13[index],gt13L,elt_count);
+ vec_store_nta_partial_hi(gt22[index],gt22L,elt_count);
+ vec_store_nta_partial_hi(gt23[index],gt23L,elt_count);
+ vec_store_nta_partial_hi(gt33[index],gt33L,elt_count);
+ vec_store_nta_partial_hi(phi[index],phiL,elt_count);
+ vec_store_nta_partial_hi(trK[index],trKL,elt_count);
+ vec_store_nta_partial_hi(Xt1[index],Xt1L,elt_count);
+ vec_store_nta_partial_hi(Xt2[index],Xt2L,elt_count);
+ vec_store_nta_partial_hi(Xt3[index],Xt3L,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(A[index],AL,elt_count);
+ vec_store_nta_partial_lo(alpha[index],alphaL,elt_count);
+ vec_store_nta_partial_lo(At11[index],At11L,elt_count);
+ vec_store_nta_partial_lo(At12[index],At12L,elt_count);
+ vec_store_nta_partial_lo(At13[index],At13L,elt_count);
+ vec_store_nta_partial_lo(At22[index],At22L,elt_count);
+ vec_store_nta_partial_lo(At23[index],At23L,elt_count);
+ vec_store_nta_partial_lo(At33[index],At33L,elt_count);
+ vec_store_nta_partial_lo(B1[index],B1L,elt_count);
+ vec_store_nta_partial_lo(B2[index],B2L,elt_count);
+ vec_store_nta_partial_lo(B3[index],B3L,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(gt11[index],gt11L,elt_count);
+ vec_store_nta_partial_lo(gt12[index],gt12L,elt_count);
+ vec_store_nta_partial_lo(gt13[index],gt13L,elt_count);
+ vec_store_nta_partial_lo(gt22[index],gt22L,elt_count);
+ vec_store_nta_partial_lo(gt23[index],gt23L,elt_count);
+ vec_store_nta_partial_lo(gt33[index],gt33L,elt_count);
+ vec_store_nta_partial_lo(phi[index],phiL,elt_count);
+ vec_store_nta_partial_lo(trK[index],trKL,elt_count);
+ vec_store_nta_partial_lo(Xt1[index],Xt1L,elt_count);
+ vec_store_nta_partial_lo(Xt2[index],Xt2L,elt_count);
+ vec_store_nta_partial_lo(Xt3[index],Xt3L,elt_count);
+ break;
+ }
+ vec_store_nta(A[index],AL);
+ vec_store_nta(alpha[index],alphaL);
+ vec_store_nta(At11[index],At11L);
+ vec_store_nta(At12[index],At12L);
+ vec_store_nta(At13[index],At13L);
+ vec_store_nta(At22[index],At22L);
+ vec_store_nta(At23[index],At23L);
+ vec_store_nta(At33[index],At33L);
+ vec_store_nta(B1[index],B1L);
+ vec_store_nta(B2[index],B2L);
+ vec_store_nta(B3[index],B3L);
+ vec_store_nta(beta1[index],beta1L);
+ vec_store_nta(beta2[index],beta2L);
+ vec_store_nta(beta3[index],beta3L);
+ vec_store_nta(gt11[index],gt11L);
+ vec_store_nta(gt12[index],gt12L);
+ vec_store_nta(gt13[index],gt13L);
+ vec_store_nta(gt22[index],gt22L);
+ vec_store_nta(gt23[index],gt23L);
+ vec_store_nta(gt33[index],gt33L);
+ vec_store_nta(phi[index],phiL);
+ vec_store_nta(trK[index],trKL);
+ vec_store_nta(Xt1[index],Xt1L);
+ vec_store_nta(Xt2[index],Xt2L);
+ vec_store_nta(Xt3[index],Xt3L);
}
- LC_ENDLOOP3 (ML_BSSN_MP_O8_boundary);
+ LC_ENDLOOP3VEC (ML_BSSN_MP_O8_boundary);
}
extern "C" void ML_BSSN_MP_O8_boundary(CCTK_ARGUMENTS)
@@ -278,5 +442,39 @@ extern "C" void ML_BSSN_MP_O8_boundary(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_O8_boundary_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_MP_O8_boundary_calc_every != ML_BSSN_MP_O8_boundary_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN_MP_O8::ML_curv","ML_BSSN_MP_O8::ML_dtlapse","ML_BSSN_MP_O8::ML_dtshift","ML_BSSN_MP_O8::ML_Gamma","ML_BSSN_MP_O8::ML_lapse","ML_BSSN_MP_O8::ML_log_confac","ML_BSSN_MP_O8::ML_metric","ML_BSSN_MP_O8::ML_shift","ML_BSSN_MP_O8::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_O8_boundary", 9, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverBoundaryWithGhosts(cctkGH, &ML_BSSN_MP_O8_boundary_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_MP_O8_boundary_Body");
+ }
}
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 b016ea7..dbef30b 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
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_MP_O8_constraints1_SelectBCs(CCTK_ARGUMENTS)
{
@@ -33,7 +34,7 @@ extern "C" void ML_BSSN_MP_O8_constraints1_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_BSSN_MP_O8_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_MP_O8_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;
@@ -41,21 +42,6 @@ static void ML_BSSN_MP_O8_constraints1_Body(cGH const * restrict const cctkGH, i
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_O8_constraints1_Body");
- }
-
- if (cctk_iteration % ML_BSSN_MP_O8_constraints1_calc_every != ML_BSSN_MP_O8_constraints1_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN_MP_O8::ML_curv","ML_BSSN_MP_O8::ML_Gamma","ML_BSSN_MP_O8::ML_Ham","ML_BSSN_MP_O8::ML_lapse","ML_BSSN_MP_O8::ML_log_confac","ML_BSSN_MP_O8::ML_metric","ML_BSSN_MP_O8::ML_shift","ML_BSSN_MP_O8::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_O8_constraints1", 8, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_O8_constraints1", 4, 4, 4);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -65,47 +51,102 @@ static void ML_BSSN_MP_O8_constraints1_Body(cGH const * restrict const cctkGH, i
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o1024dx = 0.0009765625*INV(dx);
- CCTK_REAL const p1o1024dy = 0.0009765625*INV(dy);
- CCTK_REAL const p1o1024dz = 0.0009765625*INV(dz);
- CCTK_REAL const p1o1680dx = 0.000595238095238095238095238095238*INV(dx);
- CCTK_REAL const p1o1680dy = 0.000595238095238095238095238095238*INV(dy);
- CCTK_REAL const p1o1680dz = 0.000595238095238095238095238095238*INV(dz);
- CCTK_REAL const p1o5040dx2 = 0.000198412698412698412698412698413*INV(SQR(dx));
- CCTK_REAL const p1o5040dy2 = 0.000198412698412698412698412698413*INV(SQR(dy));
- CCTK_REAL const p1o5040dz2 = 0.000198412698412698412698412698413*INV(SQR(dz));
- CCTK_REAL const p1o560dx = 0.00178571428571428571428571428571*INV(dx);
- CCTK_REAL const p1o560dy = 0.00178571428571428571428571428571*INV(dy);
- CCTK_REAL const p1o560dz = 0.00178571428571428571428571428571*INV(dz);
- CCTK_REAL const p1o705600dxdy = 1.41723356009070294784580498866e-6*INV(dx)*INV(dy);
- CCTK_REAL const p1o705600dxdz = 1.41723356009070294784580498866e-6*INV(dx)*INV(dz);
- CCTK_REAL const p1o705600dydz = 1.41723356009070294784580498866e-6*INV(dy)*INV(dz);
- CCTK_REAL const p1o840dx = 0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const p1o840dy = 0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const p1o840dz = 0.00119047619047619047619047619048*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o840dx = -0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const pm1o840dy = -0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const pm1o840dz = -0.00119047619047619047619047619048*INV(dz);
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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)
@@ -152,52 +193,61 @@ static void ML_BSSN_MP_O8_constraints1_Body(cGH const * restrict const cctkGH, i
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_LOOP3 (ML_BSSN_MP_O8_constraints1,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_MP_O8_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 alphaL = alpha[index];
- CCTK_REAL At11L = At11[index];
- CCTK_REAL At12L = At12[index];
- CCTK_REAL At13L = At13[index];
- CCTK_REAL At22L = At22[index];
- CCTK_REAL At23L = At23[index];
- CCTK_REAL At33L = At33[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL gt11L = gt11[index];
- CCTK_REAL gt12L = gt12[index];
- CCTK_REAL gt13L = gt13[index];
- CCTK_REAL gt22L = gt22[index];
- CCTK_REAL gt23L = gt23[index];
- CCTK_REAL gt33L = gt33[index];
- CCTK_REAL phiL = phi[index];
- CCTK_REAL trKL = trK[index];
- CCTK_REAL Xt1L = Xt1[index];
- CCTK_REAL Xt2L = Xt2[index];
- CCTK_REAL Xt3L = Xt3[index];
-
- CCTK_REAL eTttL, eTtxL, eTtyL, eTtzL, eTxxL, eTxyL, eTxzL, eTyyL, eTyzL, eTzzL;
+ 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 = eTtt[index];
- eTtxL = eTtx[index];
- eTtyL = eTty[index];
- eTtzL = eTtz[index];
- eTxxL = eTxx[index];
- eTxyL = eTxy[index];
- eTxzL = eTxz[index];
- eTyyL = eTyy[index];
- eTyzL = eTyz[index];
- eTzzL = eTzz[index];
+ 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
{
@@ -213,736 +263,781 @@ static void ML_BSSN_MP_O8_constraints1_Body(cGH const * restrict const cctkGH, i
eTzzL = ToReal(0.0);
}
- CCTK_REAL dJ111L, dJ112L, dJ113L, dJ122L, dJ123L, dJ133L, dJ211L, dJ212L, dJ213L, dJ222L, dJ223L, dJ233L, dJ311L, dJ312L, dJ313L, dJ322L, dJ323L, dJ333L, J11L, J12L, J13L, J21L, J22L, J23L, J31L, J32L, J33L;
+ 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 = dJ111[index];
- dJ112L = dJ112[index];
- dJ113L = dJ113[index];
- dJ122L = dJ122[index];
- dJ123L = dJ123[index];
- dJ133L = dJ133[index];
- dJ211L = dJ211[index];
- dJ212L = dJ212[index];
- dJ213L = dJ213[index];
- dJ222L = dJ222[index];
- dJ223L = dJ223[index];
- dJ233L = dJ233[index];
- dJ311L = dJ311[index];
- dJ312L = dJ312[index];
- dJ313L = dJ313[index];
- dJ322L = dJ322[index];
- dJ323L = dJ323[index];
- dJ333L = dJ333[index];
- J11L = J11[index];
- J12L = J12[index];
- J13L = J13[index];
- J21L = J21[index];
- J22L = J22[index];
- J23L = J23[index];
- J31L = J31[index];
- J32L = J32[index];
- J33L = J33[index];
+ dJ111L = vec_load(dJ111[index]);
+ dJ112L = vec_load(dJ112[index]);
+ dJ113L = vec_load(dJ113[index]);
+ dJ122L = vec_load(dJ122[index]);
+ dJ123L = vec_load(dJ123[index]);
+ dJ133L = vec_load(dJ133[index]);
+ dJ211L = vec_load(dJ211[index]);
+ dJ212L = vec_load(dJ212[index]);
+ dJ213L = vec_load(dJ213[index]);
+ dJ222L = vec_load(dJ222[index]);
+ dJ223L = vec_load(dJ223[index]);
+ dJ233L = vec_load(dJ233[index]);
+ dJ311L = vec_load(dJ311[index]);
+ dJ312L = vec_load(dJ312[index]);
+ dJ313L = vec_load(dJ313[index]);
+ dJ322L = vec_load(dJ322[index]);
+ dJ323L = vec_load(dJ323[index]);
+ dJ333L = vec_load(dJ333[index]);
+ J11L = vec_load(J11[index]);
+ J12L = vec_load(J12[index]);
+ J13L = vec_load(J13[index]);
+ J21L = vec_load(J21[index]);
+ J22L = vec_load(J22[index]);
+ J23L = vec_load(J23[index]);
+ J31L = vec_load(J31[index]);
+ J32L = vec_load(J32[index]);
+ J33L = vec_load(J33[index]);
}
/* Include user supplied include files */
/* Precompute derivatives */
- CCTK_REAL const PDstandardNth1gt11 = PDstandardNth1(&gt11[index]);
- CCTK_REAL const PDstandardNth2gt11 = PDstandardNth2(&gt11[index]);
- CCTK_REAL const PDstandardNth3gt11 = PDstandardNth3(&gt11[index]);
- CCTK_REAL const PDstandardNth11gt11 = PDstandardNth11(&gt11[index]);
- CCTK_REAL const PDstandardNth22gt11 = PDstandardNth22(&gt11[index]);
- CCTK_REAL const PDstandardNth33gt11 = PDstandardNth33(&gt11[index]);
- CCTK_REAL const PDstandardNth12gt11 = PDstandardNth12(&gt11[index]);
- CCTK_REAL const PDstandardNth13gt11 = PDstandardNth13(&gt11[index]);
- CCTK_REAL const PDstandardNth23gt11 = PDstandardNth23(&gt11[index]);
- CCTK_REAL const PDstandardNth1gt12 = PDstandardNth1(&gt12[index]);
- CCTK_REAL const PDstandardNth2gt12 = PDstandardNth2(&gt12[index]);
- CCTK_REAL const PDstandardNth3gt12 = PDstandardNth3(&gt12[index]);
- CCTK_REAL const PDstandardNth11gt12 = PDstandardNth11(&gt12[index]);
- CCTK_REAL const PDstandardNth22gt12 = PDstandardNth22(&gt12[index]);
- CCTK_REAL const PDstandardNth33gt12 = PDstandardNth33(&gt12[index]);
- CCTK_REAL const PDstandardNth12gt12 = PDstandardNth12(&gt12[index]);
- CCTK_REAL const PDstandardNth13gt12 = PDstandardNth13(&gt12[index]);
- CCTK_REAL const PDstandardNth23gt12 = PDstandardNth23(&gt12[index]);
- CCTK_REAL const PDstandardNth1gt13 = PDstandardNth1(&gt13[index]);
- CCTK_REAL const PDstandardNth2gt13 = PDstandardNth2(&gt13[index]);
- CCTK_REAL const PDstandardNth3gt13 = PDstandardNth3(&gt13[index]);
- CCTK_REAL const PDstandardNth11gt13 = PDstandardNth11(&gt13[index]);
- CCTK_REAL const PDstandardNth22gt13 = PDstandardNth22(&gt13[index]);
- CCTK_REAL const PDstandardNth33gt13 = PDstandardNth33(&gt13[index]);
- CCTK_REAL const PDstandardNth12gt13 = PDstandardNth12(&gt13[index]);
- CCTK_REAL const PDstandardNth13gt13 = PDstandardNth13(&gt13[index]);
- CCTK_REAL const PDstandardNth23gt13 = PDstandardNth23(&gt13[index]);
- CCTK_REAL const PDstandardNth1gt22 = PDstandardNth1(&gt22[index]);
- CCTK_REAL const PDstandardNth2gt22 = PDstandardNth2(&gt22[index]);
- CCTK_REAL const PDstandardNth3gt22 = PDstandardNth3(&gt22[index]);
- CCTK_REAL const PDstandardNth11gt22 = PDstandardNth11(&gt22[index]);
- CCTK_REAL const PDstandardNth22gt22 = PDstandardNth22(&gt22[index]);
- CCTK_REAL const PDstandardNth33gt22 = PDstandardNth33(&gt22[index]);
- CCTK_REAL const PDstandardNth12gt22 = PDstandardNth12(&gt22[index]);
- CCTK_REAL const PDstandardNth13gt22 = PDstandardNth13(&gt22[index]);
- CCTK_REAL const PDstandardNth23gt22 = PDstandardNth23(&gt22[index]);
- CCTK_REAL const PDstandardNth1gt23 = PDstandardNth1(&gt23[index]);
- CCTK_REAL const PDstandardNth2gt23 = PDstandardNth2(&gt23[index]);
- CCTK_REAL const PDstandardNth3gt23 = PDstandardNth3(&gt23[index]);
- CCTK_REAL const PDstandardNth11gt23 = PDstandardNth11(&gt23[index]);
- CCTK_REAL const PDstandardNth22gt23 = PDstandardNth22(&gt23[index]);
- CCTK_REAL const PDstandardNth33gt23 = PDstandardNth33(&gt23[index]);
- CCTK_REAL const PDstandardNth12gt23 = PDstandardNth12(&gt23[index]);
- CCTK_REAL const PDstandardNth13gt23 = PDstandardNth13(&gt23[index]);
- CCTK_REAL const PDstandardNth23gt23 = PDstandardNth23(&gt23[index]);
- CCTK_REAL const PDstandardNth1gt33 = PDstandardNth1(&gt33[index]);
- CCTK_REAL const PDstandardNth2gt33 = PDstandardNth2(&gt33[index]);
- CCTK_REAL const PDstandardNth3gt33 = PDstandardNth3(&gt33[index]);
- CCTK_REAL const PDstandardNth11gt33 = PDstandardNth11(&gt33[index]);
- CCTK_REAL const PDstandardNth22gt33 = PDstandardNth22(&gt33[index]);
- CCTK_REAL const PDstandardNth33gt33 = PDstandardNth33(&gt33[index]);
- CCTK_REAL const PDstandardNth12gt33 = PDstandardNth12(&gt33[index]);
- CCTK_REAL const PDstandardNth13gt33 = PDstandardNth13(&gt33[index]);
- CCTK_REAL const PDstandardNth23gt33 = PDstandardNth23(&gt33[index]);
- CCTK_REAL const PDstandardNth1phi = PDstandardNth1(&phi[index]);
- CCTK_REAL const PDstandardNth2phi = PDstandardNth2(&phi[index]);
- CCTK_REAL const PDstandardNth3phi = PDstandardNth3(&phi[index]);
- CCTK_REAL const PDstandardNth11phi = PDstandardNth11(&phi[index]);
- CCTK_REAL const PDstandardNth22phi = PDstandardNth22(&phi[index]);
- CCTK_REAL const PDstandardNth33phi = PDstandardNth33(&phi[index]);
- CCTK_REAL const PDstandardNth12phi = PDstandardNth12(&phi[index]);
- CCTK_REAL const PDstandardNth13phi = PDstandardNth13(&phi[index]);
- CCTK_REAL const PDstandardNth23phi = PDstandardNth23(&phi[index]);
- CCTK_REAL const PDstandardNth1Xt1 = PDstandardNth1(&Xt1[index]);
- CCTK_REAL const PDstandardNth2Xt1 = PDstandardNth2(&Xt1[index]);
- CCTK_REAL const PDstandardNth3Xt1 = PDstandardNth3(&Xt1[index]);
- CCTK_REAL const PDstandardNth1Xt2 = PDstandardNth1(&Xt2[index]);
- CCTK_REAL const PDstandardNth2Xt2 = PDstandardNth2(&Xt2[index]);
- CCTK_REAL const PDstandardNth3Xt2 = PDstandardNth3(&Xt2[index]);
- CCTK_REAL const PDstandardNth1Xt3 = PDstandardNth1(&Xt3[index]);
- CCTK_REAL const PDstandardNth2Xt3 = PDstandardNth2(&Xt3[index]);
- CCTK_REAL const PDstandardNth3Xt3 = PDstandardNth3(&Xt3[index]);
+ 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 JacPDstandardNth11gt11;
- CCTK_REAL JacPDstandardNth11gt12;
- CCTK_REAL JacPDstandardNth11gt13;
- CCTK_REAL JacPDstandardNth11gt22;
- CCTK_REAL JacPDstandardNth11gt23;
- CCTK_REAL JacPDstandardNth11gt33;
- CCTK_REAL JacPDstandardNth11phi;
- CCTK_REAL JacPDstandardNth12gt11;
- CCTK_REAL JacPDstandardNth12gt12;
- CCTK_REAL JacPDstandardNth12gt13;
- CCTK_REAL JacPDstandardNth12gt22;
- CCTK_REAL JacPDstandardNth12gt23;
- CCTK_REAL JacPDstandardNth12gt33;
- CCTK_REAL JacPDstandardNth12phi;
- CCTK_REAL JacPDstandardNth13gt11;
- CCTK_REAL JacPDstandardNth13gt12;
- CCTK_REAL JacPDstandardNth13gt13;
- CCTK_REAL JacPDstandardNth13gt22;
- CCTK_REAL JacPDstandardNth13gt23;
- CCTK_REAL JacPDstandardNth13gt33;
- CCTK_REAL JacPDstandardNth13phi;
- CCTK_REAL JacPDstandardNth1gt11;
- CCTK_REAL JacPDstandardNth1gt12;
- CCTK_REAL JacPDstandardNth1gt13;
- CCTK_REAL JacPDstandardNth1gt22;
- CCTK_REAL JacPDstandardNth1gt23;
- CCTK_REAL JacPDstandardNth1gt33;
- CCTK_REAL JacPDstandardNth1phi;
- CCTK_REAL JacPDstandardNth1Xt1;
- CCTK_REAL JacPDstandardNth1Xt2;
- CCTK_REAL JacPDstandardNth1Xt3;
- CCTK_REAL JacPDstandardNth21gt11;
- CCTK_REAL JacPDstandardNth21gt12;
- CCTK_REAL JacPDstandardNth21gt13;
- CCTK_REAL JacPDstandardNth21gt22;
- CCTK_REAL JacPDstandardNth21gt23;
- CCTK_REAL JacPDstandardNth21gt33;
- CCTK_REAL JacPDstandardNth22gt11;
- CCTK_REAL JacPDstandardNth22gt12;
- CCTK_REAL JacPDstandardNth22gt13;
- CCTK_REAL JacPDstandardNth22gt22;
- CCTK_REAL JacPDstandardNth22gt23;
- CCTK_REAL JacPDstandardNth22gt33;
- CCTK_REAL JacPDstandardNth22phi;
- CCTK_REAL JacPDstandardNth23gt11;
- CCTK_REAL JacPDstandardNth23gt12;
- CCTK_REAL JacPDstandardNth23gt13;
- CCTK_REAL JacPDstandardNth23gt22;
- CCTK_REAL JacPDstandardNth23gt23;
- CCTK_REAL JacPDstandardNth23gt33;
- CCTK_REAL JacPDstandardNth23phi;
- CCTK_REAL JacPDstandardNth2gt11;
- CCTK_REAL JacPDstandardNth2gt12;
- CCTK_REAL JacPDstandardNth2gt13;
- CCTK_REAL JacPDstandardNth2gt22;
- CCTK_REAL JacPDstandardNth2gt23;
- CCTK_REAL JacPDstandardNth2gt33;
- CCTK_REAL JacPDstandardNth2phi;
- CCTK_REAL JacPDstandardNth2Xt1;
- CCTK_REAL JacPDstandardNth2Xt2;
- CCTK_REAL JacPDstandardNth2Xt3;
- CCTK_REAL JacPDstandardNth31gt11;
- CCTK_REAL JacPDstandardNth31gt12;
- CCTK_REAL JacPDstandardNth31gt13;
- CCTK_REAL JacPDstandardNth31gt22;
- CCTK_REAL JacPDstandardNth31gt23;
- CCTK_REAL JacPDstandardNth31gt33;
- CCTK_REAL JacPDstandardNth32gt11;
- CCTK_REAL JacPDstandardNth32gt12;
- CCTK_REAL JacPDstandardNth32gt13;
- CCTK_REAL JacPDstandardNth32gt22;
- CCTK_REAL JacPDstandardNth32gt23;
- CCTK_REAL JacPDstandardNth32gt33;
- CCTK_REAL JacPDstandardNth33gt11;
- CCTK_REAL JacPDstandardNth33gt12;
- CCTK_REAL JacPDstandardNth33gt13;
- CCTK_REAL JacPDstandardNth33gt22;
- CCTK_REAL JacPDstandardNth33gt23;
- CCTK_REAL JacPDstandardNth33gt33;
- CCTK_REAL JacPDstandardNth33phi;
- CCTK_REAL JacPDstandardNth3gt11;
- CCTK_REAL JacPDstandardNth3gt12;
- CCTK_REAL JacPDstandardNth3gt13;
- CCTK_REAL JacPDstandardNth3gt22;
- CCTK_REAL JacPDstandardNth3gt23;
- CCTK_REAL JacPDstandardNth3gt33;
- CCTK_REAL JacPDstandardNth3phi;
- CCTK_REAL JacPDstandardNth3Xt1;
- CCTK_REAL JacPDstandardNth3Xt2;
- CCTK_REAL JacPDstandardNth3Xt3;
+ 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 = J11L*PDstandardNth1gt11 +
- J21L*PDstandardNth2gt11 + J31L*PDstandardNth3gt11;
+ 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))))))));
- JacPDstandardNth1gt12 = J11L*PDstandardNth1gt12 +
- J21L*PDstandardNth2gt12 + J31L*PDstandardNth3gt12;
+ 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))))))));
- JacPDstandardNth1gt13 = J11L*PDstandardNth1gt13 +
- J21L*PDstandardNth2gt13 + J31L*PDstandardNth3gt13;
+ 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))))))));
- JacPDstandardNth1gt22 = J11L*PDstandardNth1gt22 +
- J21L*PDstandardNth2gt22 + J31L*PDstandardNth3gt22;
+ 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))))))));
- JacPDstandardNth1gt23 = J11L*PDstandardNth1gt23 +
- J21L*PDstandardNth2gt23 + J31L*PDstandardNth3gt23;
+ 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))))))));
- JacPDstandardNth1gt33 = J11L*PDstandardNth1gt33 +
- J21L*PDstandardNth2gt33 + J31L*PDstandardNth3gt33;
+ 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))))))));
- JacPDstandardNth1phi = J11L*PDstandardNth1phi + J21L*PDstandardNth2phi
- + J31L*PDstandardNth3phi;
+ 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)))))));
- JacPDstandardNth1Xt1 = J11L*PDstandardNth1Xt1 + J21L*PDstandardNth2Xt1
- + J31L*PDstandardNth3Xt1;
+ 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)))))));
- JacPDstandardNth1Xt2 = J11L*PDstandardNth1Xt2 + J21L*PDstandardNth2Xt2
- + J31L*PDstandardNth3Xt2;
+ 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)))))));
- JacPDstandardNth1Xt3 = J11L*PDstandardNth1Xt3 + J21L*PDstandardNth2Xt3
- + J31L*PDstandardNth3Xt3;
+ 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)))))));
- JacPDstandardNth2gt11 = J12L*PDstandardNth1gt11 +
- J22L*PDstandardNth2gt11 + J32L*PDstandardNth3gt11;
+ 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)))))));
- JacPDstandardNth2gt12 = J12L*PDstandardNth1gt12 +
- J22L*PDstandardNth2gt12 + J32L*PDstandardNth3gt12;
+ 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)))))));
- JacPDstandardNth2gt13 = J12L*PDstandardNth1gt13 +
- J22L*PDstandardNth2gt13 + J32L*PDstandardNth3gt13;
+ 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)))))));
- JacPDstandardNth2gt22 = J12L*PDstandardNth1gt22 +
- J22L*PDstandardNth2gt22 + J32L*PDstandardNth3gt22;
+ 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)))))));
- JacPDstandardNth2gt23 = J12L*PDstandardNth1gt23 +
- J22L*PDstandardNth2gt23 + J32L*PDstandardNth3gt23;
+ 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)))))));
- JacPDstandardNth2gt33 = J12L*PDstandardNth1gt33 +
- J22L*PDstandardNth2gt33 + J32L*PDstandardNth3gt33;
+ 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)))))));
- JacPDstandardNth2phi = J12L*PDstandardNth1phi + J22L*PDstandardNth2phi
- + J32L*PDstandardNth3phi;
+ 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)))))));
- JacPDstandardNth2Xt1 = J12L*PDstandardNth1Xt1 + J22L*PDstandardNth2Xt1
- + J32L*PDstandardNth3Xt1;
+ 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)))))));
- JacPDstandardNth2Xt2 = J12L*PDstandardNth1Xt2 + J22L*PDstandardNth2Xt2
- + J32L*PDstandardNth3Xt2;
+ 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)))))));
- JacPDstandardNth2Xt3 = J12L*PDstandardNth1Xt3 + J22L*PDstandardNth2Xt3
- + J32L*PDstandardNth3Xt3;
+ 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)))))));
- JacPDstandardNth3gt11 = J13L*PDstandardNth1gt11 +
- J23L*PDstandardNth2gt11 + J33L*PDstandardNth3gt11;
+ 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)))))));
- JacPDstandardNth3gt12 = J13L*PDstandardNth1gt12 +
- J23L*PDstandardNth2gt12 + J33L*PDstandardNth3gt12;
+ 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)))))));
- JacPDstandardNth3gt13 = J13L*PDstandardNth1gt13 +
- J23L*PDstandardNth2gt13 + J33L*PDstandardNth3gt13;
+ 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)))))));
- JacPDstandardNth3gt22 = J13L*PDstandardNth1gt22 +
- J23L*PDstandardNth2gt22 + J33L*PDstandardNth3gt22;
+ 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)))))));
- JacPDstandardNth3gt23 = J13L*PDstandardNth1gt23 +
- J23L*PDstandardNth2gt23 + J33L*PDstandardNth3gt23;
+ 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)))))));
- JacPDstandardNth3gt33 = J13L*PDstandardNth1gt33 +
- J23L*PDstandardNth2gt33 + J33L*PDstandardNth3gt33;
+ 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)))))));
- JacPDstandardNth3phi = J13L*PDstandardNth1phi + J23L*PDstandardNth2phi
- + J33L*PDstandardNth3phi;
+ 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)))))));
- JacPDstandardNth3Xt1 = J13L*PDstandardNth1Xt1 + J23L*PDstandardNth2Xt1
- + J33L*PDstandardNth3Xt1;
-
- JacPDstandardNth3Xt2 = J13L*PDstandardNth1Xt2 + J23L*PDstandardNth2Xt2
- + J33L*PDstandardNth3Xt2;
+ 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)))))));
- JacPDstandardNth3Xt3 = J13L*PDstandardNth1Xt3 + J23L*PDstandardNth2Xt3
- + J33L*PDstandardNth3Xt3;
-
- JacPDstandardNth11gt11 = dJ111L*PDstandardNth1gt11 +
- 2*(J11L*(J21L*PDstandardNth12gt11 + J31L*PDstandardNth13gt11) +
- J21L*J31L*PDstandardNth23gt11) + dJ211L*PDstandardNth2gt11 +
- dJ311L*PDstandardNth3gt11 + PDstandardNth11gt11*SQR(J11L) +
- PDstandardNth22gt11*SQR(J21L) + PDstandardNth33gt11*SQR(J31L);
-
- JacPDstandardNth11gt12 = dJ111L*PDstandardNth1gt12 +
- 2*(J11L*(J21L*PDstandardNth12gt12 + J31L*PDstandardNth13gt12) +
- J21L*J31L*PDstandardNth23gt12) + dJ211L*PDstandardNth2gt12 +
- dJ311L*PDstandardNth3gt12 + PDstandardNth11gt12*SQR(J11L) +
- PDstandardNth22gt12*SQR(J21L) + PDstandardNth33gt12*SQR(J31L);
-
- JacPDstandardNth11gt13 = dJ111L*PDstandardNth1gt13 +
- 2*(J11L*(J21L*PDstandardNth12gt13 + J31L*PDstandardNth13gt13) +
- J21L*J31L*PDstandardNth23gt13) + dJ211L*PDstandardNth2gt13 +
- dJ311L*PDstandardNth3gt13 + PDstandardNth11gt13*SQR(J11L) +
- PDstandardNth22gt13*SQR(J21L) + PDstandardNth33gt13*SQR(J31L);
-
- JacPDstandardNth11gt22 = dJ111L*PDstandardNth1gt22 +
- 2*(J11L*(J21L*PDstandardNth12gt22 + J31L*PDstandardNth13gt22) +
- J21L*J31L*PDstandardNth23gt22) + dJ211L*PDstandardNth2gt22 +
- dJ311L*PDstandardNth3gt22 + PDstandardNth11gt22*SQR(J11L) +
- PDstandardNth22gt22*SQR(J21L) + PDstandardNth33gt22*SQR(J31L);
-
- JacPDstandardNth11gt23 = dJ111L*PDstandardNth1gt23 +
- 2*(J11L*(J21L*PDstandardNth12gt23 + J31L*PDstandardNth13gt23) +
- J21L*J31L*PDstandardNth23gt23) + dJ211L*PDstandardNth2gt23 +
- dJ311L*PDstandardNth3gt23 + PDstandardNth11gt23*SQR(J11L) +
- PDstandardNth22gt23*SQR(J21L) + PDstandardNth33gt23*SQR(J31L);
-
- JacPDstandardNth11gt33 = dJ111L*PDstandardNth1gt33 +
- 2*(J11L*(J21L*PDstandardNth12gt33 + J31L*PDstandardNth13gt33) +
- J21L*J31L*PDstandardNth23gt33) + dJ211L*PDstandardNth2gt33 +
- dJ311L*PDstandardNth3gt33 + PDstandardNth11gt33*SQR(J11L) +
- PDstandardNth22gt33*SQR(J21L) + PDstandardNth33gt33*SQR(J31L);
-
- JacPDstandardNth11phi = dJ111L*PDstandardNth1phi +
- 2*(J11L*(J21L*PDstandardNth12phi + J31L*PDstandardNth13phi) +
- J21L*J31L*PDstandardNth23phi) + dJ211L*PDstandardNth2phi +
- dJ311L*PDstandardNth3phi + PDstandardNth11phi*SQR(J11L) +
- PDstandardNth22phi*SQR(J21L) + PDstandardNth33phi*SQR(J31L);
-
- JacPDstandardNth22gt11 = dJ122L*PDstandardNth1gt11 +
- 2*(J12L*(J22L*PDstandardNth12gt11 + J32L*PDstandardNth13gt11) +
- J22L*J32L*PDstandardNth23gt11) + dJ222L*PDstandardNth2gt11 +
- dJ322L*PDstandardNth3gt11 + PDstandardNth11gt11*SQR(J12L) +
- PDstandardNth22gt11*SQR(J22L) + PDstandardNth33gt11*SQR(J32L);
-
- JacPDstandardNth22gt12 = dJ122L*PDstandardNth1gt12 +
- 2*(J12L*(J22L*PDstandardNth12gt12 + J32L*PDstandardNth13gt12) +
- J22L*J32L*PDstandardNth23gt12) + dJ222L*PDstandardNth2gt12 +
- dJ322L*PDstandardNth3gt12 + PDstandardNth11gt12*SQR(J12L) +
- PDstandardNth22gt12*SQR(J22L) + PDstandardNth33gt12*SQR(J32L);
-
- JacPDstandardNth22gt13 = dJ122L*PDstandardNth1gt13 +
- 2*(J12L*(J22L*PDstandardNth12gt13 + J32L*PDstandardNth13gt13) +
- J22L*J32L*PDstandardNth23gt13) + dJ222L*PDstandardNth2gt13 +
- dJ322L*PDstandardNth3gt13 + PDstandardNth11gt13*SQR(J12L) +
- PDstandardNth22gt13*SQR(J22L) + PDstandardNth33gt13*SQR(J32L);
-
- JacPDstandardNth22gt22 = dJ122L*PDstandardNth1gt22 +
- 2*(J12L*(J22L*PDstandardNth12gt22 + J32L*PDstandardNth13gt22) +
- J22L*J32L*PDstandardNth23gt22) + dJ222L*PDstandardNth2gt22 +
- dJ322L*PDstandardNth3gt22 + PDstandardNth11gt22*SQR(J12L) +
- PDstandardNth22gt22*SQR(J22L) + PDstandardNth33gt22*SQR(J32L);
-
- JacPDstandardNth22gt23 = dJ122L*PDstandardNth1gt23 +
- 2*(J12L*(J22L*PDstandardNth12gt23 + J32L*PDstandardNth13gt23) +
- J22L*J32L*PDstandardNth23gt23) + dJ222L*PDstandardNth2gt23 +
- dJ322L*PDstandardNth3gt23 + PDstandardNth11gt23*SQR(J12L) +
- PDstandardNth22gt23*SQR(J22L) + PDstandardNth33gt23*SQR(J32L);
-
- JacPDstandardNth22gt33 = dJ122L*PDstandardNth1gt33 +
- 2*(J12L*(J22L*PDstandardNth12gt33 + J32L*PDstandardNth13gt33) +
- J22L*J32L*PDstandardNth23gt33) + dJ222L*PDstandardNth2gt33 +
- dJ322L*PDstandardNth3gt33 + PDstandardNth11gt33*SQR(J12L) +
- PDstandardNth22gt33*SQR(J22L) + PDstandardNth33gt33*SQR(J32L);
-
- JacPDstandardNth22phi = dJ122L*PDstandardNth1phi +
- 2*(J12L*(J22L*PDstandardNth12phi + J32L*PDstandardNth13phi) +
- J22L*J32L*PDstandardNth23phi) + dJ222L*PDstandardNth2phi +
- dJ322L*PDstandardNth3phi + PDstandardNth11phi*SQR(J12L) +
- PDstandardNth22phi*SQR(J22L) + PDstandardNth33phi*SQR(J32L);
-
- JacPDstandardNth33gt11 = dJ133L*PDstandardNth1gt11 +
- 2*(J13L*(J23L*PDstandardNth12gt11 + J33L*PDstandardNth13gt11) +
- J23L*J33L*PDstandardNth23gt11) + dJ233L*PDstandardNth2gt11 +
- dJ333L*PDstandardNth3gt11 + PDstandardNth11gt11*SQR(J13L) +
- PDstandardNth22gt11*SQR(J23L) + PDstandardNth33gt11*SQR(J33L);
-
- JacPDstandardNth33gt12 = dJ133L*PDstandardNth1gt12 +
- 2*(J13L*(J23L*PDstandardNth12gt12 + J33L*PDstandardNth13gt12) +
- J23L*J33L*PDstandardNth23gt12) + dJ233L*PDstandardNth2gt12 +
- dJ333L*PDstandardNth3gt12 + PDstandardNth11gt12*SQR(J13L) +
- PDstandardNth22gt12*SQR(J23L) + PDstandardNth33gt12*SQR(J33L);
-
- JacPDstandardNth33gt13 = dJ133L*PDstandardNth1gt13 +
- 2*(J13L*(J23L*PDstandardNth12gt13 + J33L*PDstandardNth13gt13) +
- J23L*J33L*PDstandardNth23gt13) + dJ233L*PDstandardNth2gt13 +
- dJ333L*PDstandardNth3gt13 + PDstandardNth11gt13*SQR(J13L) +
- PDstandardNth22gt13*SQR(J23L) + PDstandardNth33gt13*SQR(J33L);
-
- JacPDstandardNth33gt22 = dJ133L*PDstandardNth1gt22 +
- 2*(J13L*(J23L*PDstandardNth12gt22 + J33L*PDstandardNth13gt22) +
- J23L*J33L*PDstandardNth23gt22) + dJ233L*PDstandardNth2gt22 +
- dJ333L*PDstandardNth3gt22 + PDstandardNth11gt22*SQR(J13L) +
- PDstandardNth22gt22*SQR(J23L) + PDstandardNth33gt22*SQR(J33L);
-
- JacPDstandardNth33gt23 = dJ133L*PDstandardNth1gt23 +
- 2*(J13L*(J23L*PDstandardNth12gt23 + J33L*PDstandardNth13gt23) +
- J23L*J33L*PDstandardNth23gt23) + dJ233L*PDstandardNth2gt23 +
- dJ333L*PDstandardNth3gt23 + PDstandardNth11gt23*SQR(J13L) +
- PDstandardNth22gt23*SQR(J23L) + PDstandardNth33gt23*SQR(J33L);
-
- JacPDstandardNth33gt33 = dJ133L*PDstandardNth1gt33 +
- 2*(J13L*(J23L*PDstandardNth12gt33 + J33L*PDstandardNth13gt33) +
- J23L*J33L*PDstandardNth23gt33) + dJ233L*PDstandardNth2gt33 +
- dJ333L*PDstandardNth3gt33 + PDstandardNth11gt33*SQR(J13L) +
- PDstandardNth22gt33*SQR(J23L) + PDstandardNth33gt33*SQR(J33L);
-
- JacPDstandardNth33phi = dJ133L*PDstandardNth1phi +
- 2*(J13L*(J23L*PDstandardNth12phi + J33L*PDstandardNth13phi) +
- J23L*J33L*PDstandardNth23phi) + dJ233L*PDstandardNth2phi +
- dJ333L*PDstandardNth3phi + PDstandardNth11phi*SQR(J13L) +
- PDstandardNth22phi*SQR(J23L) + PDstandardNth33phi*SQR(J33L);
-
- JacPDstandardNth12gt11 = J12L*(J11L*PDstandardNth11gt11 +
- J21L*PDstandardNth12gt11 + J31L*PDstandardNth13gt11) +
- J11L*(J22L*PDstandardNth12gt11 + J32L*PDstandardNth13gt11) +
- dJ112L*PDstandardNth1gt11 + J22L*(J21L*PDstandardNth22gt11 +
- J31L*PDstandardNth23gt11) + dJ212L*PDstandardNth2gt11 +
- J32L*(J21L*PDstandardNth23gt11 + J31L*PDstandardNth33gt11) +
- dJ312L*PDstandardNth3gt11;
-
- JacPDstandardNth12gt12 = J12L*(J11L*PDstandardNth11gt12 +
- J21L*PDstandardNth12gt12 + J31L*PDstandardNth13gt12) +
- J11L*(J22L*PDstandardNth12gt12 + J32L*PDstandardNth13gt12) +
- dJ112L*PDstandardNth1gt12 + J22L*(J21L*PDstandardNth22gt12 +
- J31L*PDstandardNth23gt12) + dJ212L*PDstandardNth2gt12 +
- J32L*(J21L*PDstandardNth23gt12 + J31L*PDstandardNth33gt12) +
- dJ312L*PDstandardNth3gt12;
-
- JacPDstandardNth12gt13 = J12L*(J11L*PDstandardNth11gt13 +
- J21L*PDstandardNth12gt13 + J31L*PDstandardNth13gt13) +
- J11L*(J22L*PDstandardNth12gt13 + J32L*PDstandardNth13gt13) +
- dJ112L*PDstandardNth1gt13 + J22L*(J21L*PDstandardNth22gt13 +
- J31L*PDstandardNth23gt13) + dJ212L*PDstandardNth2gt13 +
- J32L*(J21L*PDstandardNth23gt13 + J31L*PDstandardNth33gt13) +
- dJ312L*PDstandardNth3gt13;
-
- JacPDstandardNth12gt22 = J12L*(J11L*PDstandardNth11gt22 +
- J21L*PDstandardNth12gt22 + J31L*PDstandardNth13gt22) +
- J11L*(J22L*PDstandardNth12gt22 + J32L*PDstandardNth13gt22) +
- dJ112L*PDstandardNth1gt22 + J22L*(J21L*PDstandardNth22gt22 +
- J31L*PDstandardNth23gt22) + dJ212L*PDstandardNth2gt22 +
- J32L*(J21L*PDstandardNth23gt22 + J31L*PDstandardNth33gt22) +
- dJ312L*PDstandardNth3gt22;
-
- JacPDstandardNth12gt23 = J12L*(J11L*PDstandardNth11gt23 +
- J21L*PDstandardNth12gt23 + J31L*PDstandardNth13gt23) +
- J11L*(J22L*PDstandardNth12gt23 + J32L*PDstandardNth13gt23) +
- dJ112L*PDstandardNth1gt23 + J22L*(J21L*PDstandardNth22gt23 +
- J31L*PDstandardNth23gt23) + dJ212L*PDstandardNth2gt23 +
- J32L*(J21L*PDstandardNth23gt23 + J31L*PDstandardNth33gt23) +
- dJ312L*PDstandardNth3gt23;
-
- JacPDstandardNth12gt33 = J12L*(J11L*PDstandardNth11gt33 +
- J21L*PDstandardNth12gt33 + J31L*PDstandardNth13gt33) +
- J11L*(J22L*PDstandardNth12gt33 + J32L*PDstandardNth13gt33) +
- dJ112L*PDstandardNth1gt33 + J22L*(J21L*PDstandardNth22gt33 +
- J31L*PDstandardNth23gt33) + dJ212L*PDstandardNth2gt33 +
- J32L*(J21L*PDstandardNth23gt33 + J31L*PDstandardNth33gt33) +
- dJ312L*PDstandardNth3gt33;
-
- JacPDstandardNth12phi = J12L*(J11L*PDstandardNth11phi +
- J21L*PDstandardNth12phi + J31L*PDstandardNth13phi) +
- J11L*(J22L*PDstandardNth12phi + J32L*PDstandardNth13phi) +
- dJ112L*PDstandardNth1phi + J22L*(J21L*PDstandardNth22phi +
- J31L*PDstandardNth23phi) + dJ212L*PDstandardNth2phi +
- J32L*(J21L*PDstandardNth23phi + J31L*PDstandardNth33phi) +
- dJ312L*PDstandardNth3phi;
-
- JacPDstandardNth13gt11 = J13L*(J11L*PDstandardNth11gt11 +
- J21L*PDstandardNth12gt11 + J31L*PDstandardNth13gt11) +
- J11L*(J23L*PDstandardNth12gt11 + J33L*PDstandardNth13gt11) +
- dJ113L*PDstandardNth1gt11 + J23L*(J21L*PDstandardNth22gt11 +
- J31L*PDstandardNth23gt11) + dJ213L*PDstandardNth2gt11 +
- J33L*(J21L*PDstandardNth23gt11 + J31L*PDstandardNth33gt11) +
- dJ313L*PDstandardNth3gt11;
-
- JacPDstandardNth13gt12 = J13L*(J11L*PDstandardNth11gt12 +
- J21L*PDstandardNth12gt12 + J31L*PDstandardNth13gt12) +
- J11L*(J23L*PDstandardNth12gt12 + J33L*PDstandardNth13gt12) +
- dJ113L*PDstandardNth1gt12 + J23L*(J21L*PDstandardNth22gt12 +
- J31L*PDstandardNth23gt12) + dJ213L*PDstandardNth2gt12 +
- J33L*(J21L*PDstandardNth23gt12 + J31L*PDstandardNth33gt12) +
- dJ313L*PDstandardNth3gt12;
-
- JacPDstandardNth13gt13 = J13L*(J11L*PDstandardNth11gt13 +
- J21L*PDstandardNth12gt13 + J31L*PDstandardNth13gt13) +
- J11L*(J23L*PDstandardNth12gt13 + J33L*PDstandardNth13gt13) +
- dJ113L*PDstandardNth1gt13 + J23L*(J21L*PDstandardNth22gt13 +
- J31L*PDstandardNth23gt13) + dJ213L*PDstandardNth2gt13 +
- J33L*(J21L*PDstandardNth23gt13 + J31L*PDstandardNth33gt13) +
- dJ313L*PDstandardNth3gt13;
-
- JacPDstandardNth13gt22 = J13L*(J11L*PDstandardNth11gt22 +
- J21L*PDstandardNth12gt22 + J31L*PDstandardNth13gt22) +
- J11L*(J23L*PDstandardNth12gt22 + J33L*PDstandardNth13gt22) +
- dJ113L*PDstandardNth1gt22 + J23L*(J21L*PDstandardNth22gt22 +
- J31L*PDstandardNth23gt22) + dJ213L*PDstandardNth2gt22 +
- J33L*(J21L*PDstandardNth23gt22 + J31L*PDstandardNth33gt22) +
- dJ313L*PDstandardNth3gt22;
-
- JacPDstandardNth13gt23 = J13L*(J11L*PDstandardNth11gt23 +
- J21L*PDstandardNth12gt23 + J31L*PDstandardNth13gt23) +
- J11L*(J23L*PDstandardNth12gt23 + J33L*PDstandardNth13gt23) +
- dJ113L*PDstandardNth1gt23 + J23L*(J21L*PDstandardNth22gt23 +
- J31L*PDstandardNth23gt23) + dJ213L*PDstandardNth2gt23 +
- J33L*(J21L*PDstandardNth23gt23 + J31L*PDstandardNth33gt23) +
- dJ313L*PDstandardNth3gt23;
-
- JacPDstandardNth13gt33 = J13L*(J11L*PDstandardNth11gt33 +
- J21L*PDstandardNth12gt33 + J31L*PDstandardNth13gt33) +
- J11L*(J23L*PDstandardNth12gt33 + J33L*PDstandardNth13gt33) +
- dJ113L*PDstandardNth1gt33 + J23L*(J21L*PDstandardNth22gt33 +
- J31L*PDstandardNth23gt33) + dJ213L*PDstandardNth2gt33 +
- J33L*(J21L*PDstandardNth23gt33 + J31L*PDstandardNth33gt33) +
- dJ313L*PDstandardNth3gt33;
-
- JacPDstandardNth13phi = J13L*(J11L*PDstandardNth11phi +
- J21L*PDstandardNth12phi + J31L*PDstandardNth13phi) +
- J11L*(J23L*PDstandardNth12phi + J33L*PDstandardNth13phi) +
- dJ113L*PDstandardNth1phi + J23L*(J21L*PDstandardNth22phi +
- J31L*PDstandardNth23phi) + dJ213L*PDstandardNth2phi +
- J33L*(J21L*PDstandardNth23phi + J31L*PDstandardNth33phi) +
- dJ313L*PDstandardNth3phi;
-
- JacPDstandardNth21gt11 = J12L*(J11L*PDstandardNth11gt11 +
- J21L*PDstandardNth12gt11 + J31L*PDstandardNth13gt11) +
- J11L*(J22L*PDstandardNth12gt11 + J32L*PDstandardNth13gt11) +
- dJ112L*PDstandardNth1gt11 + J22L*(J21L*PDstandardNth22gt11 +
- J31L*PDstandardNth23gt11) + dJ212L*PDstandardNth2gt11 +
- J32L*(J21L*PDstandardNth23gt11 + J31L*PDstandardNth33gt11) +
- dJ312L*PDstandardNth3gt11;
-
- JacPDstandardNth21gt12 = J12L*(J11L*PDstandardNth11gt12 +
- J21L*PDstandardNth12gt12 + J31L*PDstandardNth13gt12) +
- J11L*(J22L*PDstandardNth12gt12 + J32L*PDstandardNth13gt12) +
- dJ112L*PDstandardNth1gt12 + J22L*(J21L*PDstandardNth22gt12 +
- J31L*PDstandardNth23gt12) + dJ212L*PDstandardNth2gt12 +
- J32L*(J21L*PDstandardNth23gt12 + J31L*PDstandardNth33gt12) +
- dJ312L*PDstandardNth3gt12;
-
- JacPDstandardNth21gt13 = J12L*(J11L*PDstandardNth11gt13 +
- J21L*PDstandardNth12gt13 + J31L*PDstandardNth13gt13) +
- J11L*(J22L*PDstandardNth12gt13 + J32L*PDstandardNth13gt13) +
- dJ112L*PDstandardNth1gt13 + J22L*(J21L*PDstandardNth22gt13 +
- J31L*PDstandardNth23gt13) + dJ212L*PDstandardNth2gt13 +
- J32L*(J21L*PDstandardNth23gt13 + J31L*PDstandardNth33gt13) +
- dJ312L*PDstandardNth3gt13;
-
- JacPDstandardNth21gt22 = J12L*(J11L*PDstandardNth11gt22 +
- J21L*PDstandardNth12gt22 + J31L*PDstandardNth13gt22) +
- J11L*(J22L*PDstandardNth12gt22 + J32L*PDstandardNth13gt22) +
- dJ112L*PDstandardNth1gt22 + J22L*(J21L*PDstandardNth22gt22 +
- J31L*PDstandardNth23gt22) + dJ212L*PDstandardNth2gt22 +
- J32L*(J21L*PDstandardNth23gt22 + J31L*PDstandardNth33gt22) +
- dJ312L*PDstandardNth3gt22;
-
- JacPDstandardNth21gt23 = J12L*(J11L*PDstandardNth11gt23 +
- J21L*PDstandardNth12gt23 + J31L*PDstandardNth13gt23) +
- J11L*(J22L*PDstandardNth12gt23 + J32L*PDstandardNth13gt23) +
- dJ112L*PDstandardNth1gt23 + J22L*(J21L*PDstandardNth22gt23 +
- J31L*PDstandardNth23gt23) + dJ212L*PDstandardNth2gt23 +
- J32L*(J21L*PDstandardNth23gt23 + J31L*PDstandardNth33gt23) +
- dJ312L*PDstandardNth3gt23;
-
- JacPDstandardNth21gt33 = J12L*(J11L*PDstandardNth11gt33 +
- J21L*PDstandardNth12gt33 + J31L*PDstandardNth13gt33) +
- J11L*(J22L*PDstandardNth12gt33 + J32L*PDstandardNth13gt33) +
- dJ112L*PDstandardNth1gt33 + J22L*(J21L*PDstandardNth22gt33 +
- J31L*PDstandardNth23gt33) + dJ212L*PDstandardNth2gt33 +
- J32L*(J21L*PDstandardNth23gt33 + J31L*PDstandardNth33gt33) +
- dJ312L*PDstandardNth3gt33;
-
- JacPDstandardNth23gt11 = J13L*(J12L*PDstandardNth11gt11 +
- J22L*PDstandardNth12gt11 + J32L*PDstandardNth13gt11) +
- J12L*(J23L*PDstandardNth12gt11 + J33L*PDstandardNth13gt11) +
- dJ123L*PDstandardNth1gt11 + J23L*(J22L*PDstandardNth22gt11 +
- J32L*PDstandardNth23gt11) + dJ223L*PDstandardNth2gt11 +
- J33L*(J22L*PDstandardNth23gt11 + J32L*PDstandardNth33gt11) +
- dJ323L*PDstandardNth3gt11;
-
- JacPDstandardNth23gt12 = J13L*(J12L*PDstandardNth11gt12 +
- J22L*PDstandardNth12gt12 + J32L*PDstandardNth13gt12) +
- J12L*(J23L*PDstandardNth12gt12 + J33L*PDstandardNth13gt12) +
- dJ123L*PDstandardNth1gt12 + J23L*(J22L*PDstandardNth22gt12 +
- J32L*PDstandardNth23gt12) + dJ223L*PDstandardNth2gt12 +
- J33L*(J22L*PDstandardNth23gt12 + J32L*PDstandardNth33gt12) +
- dJ323L*PDstandardNth3gt12;
-
- JacPDstandardNth23gt13 = J13L*(J12L*PDstandardNth11gt13 +
- J22L*PDstandardNth12gt13 + J32L*PDstandardNth13gt13) +
- J12L*(J23L*PDstandardNth12gt13 + J33L*PDstandardNth13gt13) +
- dJ123L*PDstandardNth1gt13 + J23L*(J22L*PDstandardNth22gt13 +
- J32L*PDstandardNth23gt13) + dJ223L*PDstandardNth2gt13 +
- J33L*(J22L*PDstandardNth23gt13 + J32L*PDstandardNth33gt13) +
- dJ323L*PDstandardNth3gt13;
-
- JacPDstandardNth23gt22 = J13L*(J12L*PDstandardNth11gt22 +
- J22L*PDstandardNth12gt22 + J32L*PDstandardNth13gt22) +
- J12L*(J23L*PDstandardNth12gt22 + J33L*PDstandardNth13gt22) +
- dJ123L*PDstandardNth1gt22 + J23L*(J22L*PDstandardNth22gt22 +
- J32L*PDstandardNth23gt22) + dJ223L*PDstandardNth2gt22 +
- J33L*(J22L*PDstandardNth23gt22 + J32L*PDstandardNth33gt22) +
- dJ323L*PDstandardNth3gt22;
-
- JacPDstandardNth23gt23 = J13L*(J12L*PDstandardNth11gt23 +
- J22L*PDstandardNth12gt23 + J32L*PDstandardNth13gt23) +
- J12L*(J23L*PDstandardNth12gt23 + J33L*PDstandardNth13gt23) +
- dJ123L*PDstandardNth1gt23 + J23L*(J22L*PDstandardNth22gt23 +
- J32L*PDstandardNth23gt23) + dJ223L*PDstandardNth2gt23 +
- J33L*(J22L*PDstandardNth23gt23 + J32L*PDstandardNth33gt23) +
- dJ323L*PDstandardNth3gt23;
-
- JacPDstandardNth23gt33 = J13L*(J12L*PDstandardNth11gt33 +
- J22L*PDstandardNth12gt33 + J32L*PDstandardNth13gt33) +
- J12L*(J23L*PDstandardNth12gt33 + J33L*PDstandardNth13gt33) +
- dJ123L*PDstandardNth1gt33 + J23L*(J22L*PDstandardNth22gt33 +
- J32L*PDstandardNth23gt33) + dJ223L*PDstandardNth2gt33 +
- J33L*(J22L*PDstandardNth23gt33 + J32L*PDstandardNth33gt33) +
- dJ323L*PDstandardNth3gt33;
-
- JacPDstandardNth23phi = J13L*(J12L*PDstandardNth11phi +
- J22L*PDstandardNth12phi + J32L*PDstandardNth13phi) +
- J12L*(J23L*PDstandardNth12phi + J33L*PDstandardNth13phi) +
- dJ123L*PDstandardNth1phi + J23L*(J22L*PDstandardNth22phi +
- J32L*PDstandardNth23phi) + dJ223L*PDstandardNth2phi +
- J33L*(J22L*PDstandardNth23phi + J32L*PDstandardNth33phi) +
- dJ323L*PDstandardNth3phi;
-
- JacPDstandardNth31gt11 = J13L*(J11L*PDstandardNth11gt11 +
- J21L*PDstandardNth12gt11 + J31L*PDstandardNth13gt11) +
- J11L*(J23L*PDstandardNth12gt11 + J33L*PDstandardNth13gt11) +
- dJ113L*PDstandardNth1gt11 + J23L*(J21L*PDstandardNth22gt11 +
- J31L*PDstandardNth23gt11) + dJ213L*PDstandardNth2gt11 +
- J33L*(J21L*PDstandardNth23gt11 + J31L*PDstandardNth33gt11) +
- dJ313L*PDstandardNth3gt11;
-
- JacPDstandardNth31gt12 = J13L*(J11L*PDstandardNth11gt12 +
- J21L*PDstandardNth12gt12 + J31L*PDstandardNth13gt12) +
- J11L*(J23L*PDstandardNth12gt12 + J33L*PDstandardNth13gt12) +
- dJ113L*PDstandardNth1gt12 + J23L*(J21L*PDstandardNth22gt12 +
- J31L*PDstandardNth23gt12) + dJ213L*PDstandardNth2gt12 +
- J33L*(J21L*PDstandardNth23gt12 + J31L*PDstandardNth33gt12) +
- dJ313L*PDstandardNth3gt12;
-
- JacPDstandardNth31gt13 = J13L*(J11L*PDstandardNth11gt13 +
- J21L*PDstandardNth12gt13 + J31L*PDstandardNth13gt13) +
- J11L*(J23L*PDstandardNth12gt13 + J33L*PDstandardNth13gt13) +
- dJ113L*PDstandardNth1gt13 + J23L*(J21L*PDstandardNth22gt13 +
- J31L*PDstandardNth23gt13) + dJ213L*PDstandardNth2gt13 +
- J33L*(J21L*PDstandardNth23gt13 + J31L*PDstandardNth33gt13) +
- dJ313L*PDstandardNth3gt13;
-
- JacPDstandardNth31gt22 = J13L*(J11L*PDstandardNth11gt22 +
- J21L*PDstandardNth12gt22 + J31L*PDstandardNth13gt22) +
- J11L*(J23L*PDstandardNth12gt22 + J33L*PDstandardNth13gt22) +
- dJ113L*PDstandardNth1gt22 + J23L*(J21L*PDstandardNth22gt22 +
- J31L*PDstandardNth23gt22) + dJ213L*PDstandardNth2gt22 +
- J33L*(J21L*PDstandardNth23gt22 + J31L*PDstandardNth33gt22) +
- dJ313L*PDstandardNth3gt22;
-
- JacPDstandardNth31gt23 = J13L*(J11L*PDstandardNth11gt23 +
- J21L*PDstandardNth12gt23 + J31L*PDstandardNth13gt23) +
- J11L*(J23L*PDstandardNth12gt23 + J33L*PDstandardNth13gt23) +
- dJ113L*PDstandardNth1gt23 + J23L*(J21L*PDstandardNth22gt23 +
- J31L*PDstandardNth23gt23) + dJ213L*PDstandardNth2gt23 +
- J33L*(J21L*PDstandardNth23gt23 + J31L*PDstandardNth33gt23) +
- dJ313L*PDstandardNth3gt23;
-
- JacPDstandardNth31gt33 = J13L*(J11L*PDstandardNth11gt33 +
- J21L*PDstandardNth12gt33 + J31L*PDstandardNth13gt33) +
- J11L*(J23L*PDstandardNth12gt33 + J33L*PDstandardNth13gt33) +
- dJ113L*PDstandardNth1gt33 + J23L*(J21L*PDstandardNth22gt33 +
- J31L*PDstandardNth23gt33) + dJ213L*PDstandardNth2gt33 +
- J33L*(J21L*PDstandardNth23gt33 + J31L*PDstandardNth33gt33) +
- dJ313L*PDstandardNth3gt33;
-
- JacPDstandardNth32gt11 = J13L*(J12L*PDstandardNth11gt11 +
- J22L*PDstandardNth12gt11 + J32L*PDstandardNth13gt11) +
- J12L*(J23L*PDstandardNth12gt11 + J33L*PDstandardNth13gt11) +
- dJ123L*PDstandardNth1gt11 + J23L*(J22L*PDstandardNth22gt11 +
- J32L*PDstandardNth23gt11) + dJ223L*PDstandardNth2gt11 +
- J33L*(J22L*PDstandardNth23gt11 + J32L*PDstandardNth33gt11) +
- dJ323L*PDstandardNth3gt11;
-
- JacPDstandardNth32gt12 = J13L*(J12L*PDstandardNth11gt12 +
- J22L*PDstandardNth12gt12 + J32L*PDstandardNth13gt12) +
- J12L*(J23L*PDstandardNth12gt12 + J33L*PDstandardNth13gt12) +
- dJ123L*PDstandardNth1gt12 + J23L*(J22L*PDstandardNth22gt12 +
- J32L*PDstandardNth23gt12) + dJ223L*PDstandardNth2gt12 +
- J33L*(J22L*PDstandardNth23gt12 + J32L*PDstandardNth33gt12) +
- dJ323L*PDstandardNth3gt12;
-
- JacPDstandardNth32gt13 = J13L*(J12L*PDstandardNth11gt13 +
- J22L*PDstandardNth12gt13 + J32L*PDstandardNth13gt13) +
- J12L*(J23L*PDstandardNth12gt13 + J33L*PDstandardNth13gt13) +
- dJ123L*PDstandardNth1gt13 + J23L*(J22L*PDstandardNth22gt13 +
- J32L*PDstandardNth23gt13) + dJ223L*PDstandardNth2gt13 +
- J33L*(J22L*PDstandardNth23gt13 + J32L*PDstandardNth33gt13) +
- dJ323L*PDstandardNth3gt13;
-
- JacPDstandardNth32gt22 = J13L*(J12L*PDstandardNth11gt22 +
- J22L*PDstandardNth12gt22 + J32L*PDstandardNth13gt22) +
- J12L*(J23L*PDstandardNth12gt22 + J33L*PDstandardNth13gt22) +
- dJ123L*PDstandardNth1gt22 + J23L*(J22L*PDstandardNth22gt22 +
- J32L*PDstandardNth23gt22) + dJ223L*PDstandardNth2gt22 +
- J33L*(J22L*PDstandardNth23gt22 + J32L*PDstandardNth33gt22) +
- dJ323L*PDstandardNth3gt22;
-
- JacPDstandardNth32gt23 = J13L*(J12L*PDstandardNth11gt23 +
- J22L*PDstandardNth12gt23 + J32L*PDstandardNth13gt23) +
- J12L*(J23L*PDstandardNth12gt23 + J33L*PDstandardNth13gt23) +
- dJ123L*PDstandardNth1gt23 + J23L*(J22L*PDstandardNth22gt23 +
- J32L*PDstandardNth23gt23) + dJ223L*PDstandardNth2gt23 +
- J33L*(J22L*PDstandardNth23gt23 + J32L*PDstandardNth33gt23) +
- dJ323L*PDstandardNth3gt23;
-
- JacPDstandardNth32gt33 = J13L*(J12L*PDstandardNth11gt33 +
- J22L*PDstandardNth12gt33 + J32L*PDstandardNth13gt33) +
- J12L*(J23L*PDstandardNth12gt33 + J33L*PDstandardNth13gt33) +
- dJ123L*PDstandardNth1gt33 + J23L*(J22L*PDstandardNth22gt33 +
- J32L*PDstandardNth23gt33) + dJ223L*PDstandardNth2gt33 +
- J33L*(J22L*PDstandardNth23gt33 + J32L*PDstandardNth33gt33) +
- dJ323L*PDstandardNth3gt33;
+ 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
{
@@ -1127,377 +1222,373 @@ static void ML_BSSN_MP_O8_constraints1_Body(cGH const * restrict const cctkGH, i
JacPDstandardNth32gt33 = PDstandardNth23gt33;
}
- CCTK_REAL detgt = 1;
+ 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 gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L));
+ CCTK_REAL_VEC Gtl233 =
+ kmadd(JacPDstandardNth2gt33,ToReal(-0.5),JacPDstandardNth3gt23);
- CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt);
+ CCTK_REAL_VEC Gtl311 =
+ kmadd(JacPDstandardNth3gt11,ToReal(-0.5),JacPDstandardNth1gt13);
- CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC Gtl312 =
+ kmul(kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth2gt13,JacPDstandardNth3gt12)),ToReal(0.5));
- CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L));
+ CCTK_REAL_VEC Gtl313 = kmul(JacPDstandardNth1gt33,ToReal(0.5));
- CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC Gtl322 =
+ kmadd(JacPDstandardNth3gt22,ToReal(-0.5),JacPDstandardNth2gt23);
- CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L));
+ CCTK_REAL_VEC Gtl323 = kmul(JacPDstandardNth2gt33,ToReal(0.5));
- CCTK_REAL Gtl111 = 0.5*JacPDstandardNth1gt11;
+ CCTK_REAL_VEC Gtl333 = kmul(JacPDstandardNth3gt33,ToReal(0.5));
- CCTK_REAL Gtl112 = 0.5*JacPDstandardNth2gt11;
+ CCTK_REAL_VEC Gtlu111 =
+ kmadd(Gtl111,gtu11,kmadd(Gtl112,gtu12,kmul(Gtl113,gtu13)));
- CCTK_REAL Gtl113 = 0.5*JacPDstandardNth3gt11;
+ CCTK_REAL_VEC Gtlu112 =
+ kmadd(Gtl111,gtu12,kmadd(Gtl112,gtu22,kmul(Gtl113,gtu23)));
- CCTK_REAL Gtl122 = -0.5*JacPDstandardNth1gt22 + JacPDstandardNth2gt12;
+ CCTK_REAL_VEC Gtlu113 =
+ kmadd(Gtl111,gtu13,kmadd(Gtl112,gtu23,kmul(Gtl113,gtu33)));
- CCTK_REAL Gtl123 = 0.5*(-JacPDstandardNth1gt23 + JacPDstandardNth2gt13
- + JacPDstandardNth3gt12);
+ CCTK_REAL_VEC Gtlu121 =
+ kmadd(Gtl112,gtu11,kmadd(Gtl122,gtu12,kmul(Gtl123,gtu13)));
- CCTK_REAL Gtl133 = -0.5*JacPDstandardNth1gt33 + JacPDstandardNth3gt13;
+ CCTK_REAL_VEC Gtlu122 =
+ kmadd(Gtl112,gtu12,kmadd(Gtl122,gtu22,kmul(Gtl123,gtu23)));
- CCTK_REAL Gtl211 = JacPDstandardNth1gt12 - 0.5*JacPDstandardNth2gt11;
+ CCTK_REAL_VEC Gtlu123 =
+ kmadd(Gtl112,gtu13,kmadd(Gtl122,gtu23,kmul(Gtl123,gtu33)));
- CCTK_REAL Gtl212 = 0.5*JacPDstandardNth1gt22;
+ CCTK_REAL_VEC Gtlu131 =
+ kmadd(Gtl113,gtu11,kmadd(Gtl123,gtu12,kmul(Gtl133,gtu13)));
- CCTK_REAL Gtl213 = 0.5*(JacPDstandardNth1gt23 - JacPDstandardNth2gt13
- + JacPDstandardNth3gt12);
+ CCTK_REAL_VEC Gtlu132 =
+ kmadd(Gtl113,gtu12,kmadd(Gtl123,gtu22,kmul(Gtl133,gtu23)));
- CCTK_REAL Gtl222 = 0.5*JacPDstandardNth2gt22;
+ CCTK_REAL_VEC Gtlu133 =
+ kmadd(Gtl113,gtu13,kmadd(Gtl123,gtu23,kmul(Gtl133,gtu33)));
- CCTK_REAL Gtl223 = 0.5*JacPDstandardNth3gt22;
+ CCTK_REAL_VEC Gtlu211 =
+ kmadd(Gtl211,gtu11,kmadd(Gtl212,gtu12,kmul(Gtl213,gtu13)));
- CCTK_REAL Gtl233 = -0.5*JacPDstandardNth2gt33 + JacPDstandardNth3gt23;
+ CCTK_REAL_VEC Gtlu212 =
+ kmadd(Gtl211,gtu12,kmadd(Gtl212,gtu22,kmul(Gtl213,gtu23)));
- CCTK_REAL Gtl311 = JacPDstandardNth1gt13 - 0.5*JacPDstandardNth3gt11;
+ CCTK_REAL_VEC Gtlu213 =
+ kmadd(Gtl211,gtu13,kmadd(Gtl212,gtu23,kmul(Gtl213,gtu33)));
- CCTK_REAL Gtl312 = 0.5*(JacPDstandardNth1gt23 + JacPDstandardNth2gt13
- - JacPDstandardNth3gt12);
+ CCTK_REAL_VEC Gtlu221 =
+ kmadd(Gtl212,gtu11,kmadd(Gtl222,gtu12,kmul(Gtl223,gtu13)));
- CCTK_REAL Gtl313 = 0.5*JacPDstandardNth1gt33;
+ CCTK_REAL_VEC Gtlu222 =
+ kmadd(Gtl212,gtu12,kmadd(Gtl222,gtu22,kmul(Gtl223,gtu23)));
- CCTK_REAL Gtl322 = JacPDstandardNth2gt23 - 0.5*JacPDstandardNth3gt22;
+ CCTK_REAL_VEC Gtlu223 =
+ kmadd(Gtl212,gtu13,kmadd(Gtl222,gtu23,kmul(Gtl223,gtu33)));
- CCTK_REAL Gtl323 = 0.5*JacPDstandardNth2gt33;
+ CCTK_REAL_VEC Gtlu231 =
+ kmadd(Gtl213,gtu11,kmadd(Gtl223,gtu12,kmul(Gtl233,gtu13)));
- CCTK_REAL Gtl333 = 0.5*JacPDstandardNth3gt33;
+ CCTK_REAL_VEC Gtlu232 =
+ kmadd(Gtl213,gtu12,kmadd(Gtl223,gtu22,kmul(Gtl233,gtu23)));
- CCTK_REAL Gtlu111 = Gtl111*gtu11 + Gtl112*gtu12 + Gtl113*gtu13;
+ CCTK_REAL_VEC Gtlu233 =
+ kmadd(Gtl213,gtu13,kmadd(Gtl223,gtu23,kmul(Gtl233,gtu33)));
- CCTK_REAL Gtlu112 = Gtl111*gtu12 + Gtl112*gtu22 + Gtl113*gtu23;
+ CCTK_REAL_VEC Gtlu311 =
+ kmadd(Gtl311,gtu11,kmadd(Gtl312,gtu12,kmul(Gtl313,gtu13)));
- CCTK_REAL Gtlu113 = Gtl111*gtu13 + Gtl112*gtu23 + Gtl113*gtu33;
+ CCTK_REAL_VEC Gtlu312 =
+ kmadd(Gtl311,gtu12,kmadd(Gtl312,gtu22,kmul(Gtl313,gtu23)));
- CCTK_REAL Gtlu121 = Gtl112*gtu11 + Gtl122*gtu12 + Gtl123*gtu13;
+ CCTK_REAL_VEC Gtlu313 =
+ kmadd(Gtl311,gtu13,kmadd(Gtl312,gtu23,kmul(Gtl313,gtu33)));
- CCTK_REAL Gtlu122 = Gtl112*gtu12 + Gtl122*gtu22 + Gtl123*gtu23;
+ CCTK_REAL_VEC Gtlu321 =
+ kmadd(Gtl312,gtu11,kmadd(Gtl322,gtu12,kmul(Gtl323,gtu13)));
- CCTK_REAL Gtlu123 = Gtl112*gtu13 + Gtl122*gtu23 + Gtl123*gtu33;
+ CCTK_REAL_VEC Gtlu322 =
+ kmadd(Gtl312,gtu12,kmadd(Gtl322,gtu22,kmul(Gtl323,gtu23)));
- CCTK_REAL Gtlu131 = Gtl113*gtu11 + Gtl123*gtu12 + Gtl133*gtu13;
+ CCTK_REAL_VEC Gtlu323 =
+ kmadd(Gtl312,gtu13,kmadd(Gtl322,gtu23,kmul(Gtl323,gtu33)));
- CCTK_REAL Gtlu132 = Gtl113*gtu12 + Gtl123*gtu22 + Gtl133*gtu23;
+ CCTK_REAL_VEC Gtlu331 =
+ kmadd(Gtl313,gtu11,kmadd(Gtl323,gtu12,kmul(Gtl333,gtu13)));
- CCTK_REAL Gtlu133 = Gtl113*gtu13 + Gtl123*gtu23 + Gtl133*gtu33;
+ CCTK_REAL_VEC Gtlu332 =
+ kmadd(Gtl313,gtu12,kmadd(Gtl323,gtu22,kmul(Gtl333,gtu23)));
- CCTK_REAL Gtlu211 = Gtl211*gtu11 + Gtl212*gtu12 + Gtl213*gtu13;
+ CCTK_REAL_VEC Gtlu333 =
+ kmadd(Gtl313,gtu13,kmadd(Gtl323,gtu23,kmul(Gtl333,gtu33)));
- CCTK_REAL Gtlu212 = Gtl211*gtu12 + Gtl212*gtu22 + Gtl213*gtu23;
+ CCTK_REAL_VEC Gt111 =
+ kmadd(Gtl111,gtu11,kmadd(Gtl211,gtu12,kmul(Gtl311,gtu13)));
- CCTK_REAL Gtlu213 = Gtl211*gtu13 + Gtl212*gtu23 + Gtl213*gtu33;
+ CCTK_REAL_VEC Gt211 =
+ kmadd(Gtl111,gtu12,kmadd(Gtl211,gtu22,kmul(Gtl311,gtu23)));
- CCTK_REAL Gtlu221 = Gtl212*gtu11 + Gtl222*gtu12 + Gtl223*gtu13;
+ CCTK_REAL_VEC Gt311 =
+ kmadd(Gtl111,gtu13,kmadd(Gtl211,gtu23,kmul(Gtl311,gtu33)));
- CCTK_REAL Gtlu222 = Gtl212*gtu12 + Gtl222*gtu22 + Gtl223*gtu23;
+ CCTK_REAL_VEC Gt112 =
+ kmadd(Gtl112,gtu11,kmadd(Gtl212,gtu12,kmul(Gtl312,gtu13)));
- CCTK_REAL Gtlu223 = Gtl212*gtu13 + Gtl222*gtu23 + Gtl223*gtu33;
+ CCTK_REAL_VEC Gt212 =
+ kmadd(Gtl112,gtu12,kmadd(Gtl212,gtu22,kmul(Gtl312,gtu23)));
- CCTK_REAL Gtlu231 = Gtl213*gtu11 + Gtl223*gtu12 + Gtl233*gtu13;
+ CCTK_REAL_VEC Gt312 =
+ kmadd(Gtl112,gtu13,kmadd(Gtl212,gtu23,kmul(Gtl312,gtu33)));
- CCTK_REAL Gtlu232 = Gtl213*gtu12 + Gtl223*gtu22 + Gtl233*gtu23;
+ CCTK_REAL_VEC Gt113 =
+ kmadd(Gtl113,gtu11,kmadd(Gtl213,gtu12,kmul(Gtl313,gtu13)));
- CCTK_REAL Gtlu233 = Gtl213*gtu13 + Gtl223*gtu23 + Gtl233*gtu33;
+ CCTK_REAL_VEC Gt213 =
+ kmadd(Gtl113,gtu12,kmadd(Gtl213,gtu22,kmul(Gtl313,gtu23)));
- CCTK_REAL Gtlu311 = Gtl311*gtu11 + Gtl312*gtu12 + Gtl313*gtu13;
+ CCTK_REAL_VEC Gt313 =
+ kmadd(Gtl113,gtu13,kmadd(Gtl213,gtu23,kmul(Gtl313,gtu33)));
- CCTK_REAL Gtlu312 = Gtl311*gtu12 + Gtl312*gtu22 + Gtl313*gtu23;
+ CCTK_REAL_VEC Gt122 =
+ kmadd(Gtl122,gtu11,kmadd(Gtl222,gtu12,kmul(Gtl322,gtu13)));
- CCTK_REAL Gtlu313 = Gtl311*gtu13 + Gtl312*gtu23 + Gtl313*gtu33;
+ CCTK_REAL_VEC Gt222 =
+ kmadd(Gtl122,gtu12,kmadd(Gtl222,gtu22,kmul(Gtl322,gtu23)));
- CCTK_REAL Gtlu321 = Gtl312*gtu11 + Gtl322*gtu12 + Gtl323*gtu13;
+ CCTK_REAL_VEC Gt322 =
+ kmadd(Gtl122,gtu13,kmadd(Gtl222,gtu23,kmul(Gtl322,gtu33)));
- CCTK_REAL Gtlu322 = Gtl312*gtu12 + Gtl322*gtu22 + Gtl323*gtu23;
+ CCTK_REAL_VEC Gt123 =
+ kmadd(Gtl123,gtu11,kmadd(Gtl223,gtu12,kmul(Gtl323,gtu13)));
- CCTK_REAL Gtlu323 = Gtl312*gtu13 + Gtl322*gtu23 + Gtl323*gtu33;
+ CCTK_REAL_VEC Gt223 =
+ kmadd(Gtl123,gtu12,kmadd(Gtl223,gtu22,kmul(Gtl323,gtu23)));
- CCTK_REAL Gtlu331 = Gtl313*gtu11 + Gtl323*gtu12 + Gtl333*gtu13;
+ CCTK_REAL_VEC Gt323 =
+ kmadd(Gtl123,gtu13,kmadd(Gtl223,gtu23,kmul(Gtl323,gtu33)));
- CCTK_REAL Gtlu332 = Gtl313*gtu12 + Gtl323*gtu22 + Gtl333*gtu23;
+ CCTK_REAL_VEC Gt133 =
+ kmadd(Gtl133,gtu11,kmadd(Gtl233,gtu12,kmul(Gtl333,gtu13)));
- CCTK_REAL Gtlu333 = Gtl313*gtu13 + Gtl323*gtu23 + Gtl333*gtu33;
+ CCTK_REAL_VEC Gt233 =
+ kmadd(Gtl133,gtu12,kmadd(Gtl233,gtu22,kmul(Gtl333,gtu23)));
- CCTK_REAL Gt111 = Gtl111*gtu11 + Gtl211*gtu12 + Gtl311*gtu13;
+ CCTK_REAL_VEC Gt333 =
+ kmadd(Gtl133,gtu13,kmadd(Gtl233,gtu23,kmul(Gtl333,gtu33)));
- CCTK_REAL Gt211 = Gtl111*gtu12 + Gtl211*gtu22 + Gtl311*gtu23;
+ 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 Gt311 = Gtl111*gtu13 + Gtl211*gtu23 + Gtl311*gtu33;
+ 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 Gt112 = Gtl112*gtu11 + Gtl212*gtu12 + Gtl312*gtu13;
+ 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 Gt212 = Gtl112*gtu12 + Gtl212*gtu22 + Gtl312*gtu23;
+ 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 Gt312 = Gtl112*gtu13 + Gtl212*gtu23 + Gtl312*gtu33;
+ 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 Gt113 = Gtl113*gtu11 + Gtl213*gtu12 + Gtl313*gtu13;
+ 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 Gt213 = Gtl113*gtu12 + Gtl213*gtu22 + Gtl313*gtu23;
+ 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 Gt313 = Gtl113*gtu13 + Gtl213*gtu23 + Gtl313*gtu33;
+ 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 Gt122 = Gtl122*gtu11 + Gtl222*gtu12 + Gtl322*gtu13;
+ 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 Gt222 = Gtl122*gtu12 + Gtl222*gtu22 + Gtl322*gtu23;
+ CCTK_REAL_VEC fac1 =
+ IfThen(conformalMethod,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
- CCTK_REAL Gt322 = Gtl122*gtu13 + Gtl222*gtu23 + Gtl322*gtu33;
+ CCTK_REAL_VEC cdphi1 = kmul(fac1,JacPDstandardNth1phi);
- CCTK_REAL Gt123 = Gtl123*gtu11 + Gtl223*gtu12 + Gtl323*gtu13;
+ CCTK_REAL_VEC cdphi2 = kmul(fac1,JacPDstandardNth2phi);
- CCTK_REAL Gt223 = Gtl123*gtu12 + Gtl223*gtu22 + Gtl323*gtu23;
+ CCTK_REAL_VEC cdphi3 = kmul(fac1,JacPDstandardNth3phi);
- CCTK_REAL Gt323 = Gtl123*gtu13 + Gtl223*gtu23 + Gtl323*gtu33;
+ CCTK_REAL_VEC fac2 =
+ IfThen(conformalMethod,kmul(INV(SQR(phiL)),ToReal(0.5)),ToReal(0));
- CCTK_REAL Gt133 = Gtl133*gtu11 + Gtl233*gtu12 + Gtl333*gtu13;
+ CCTK_REAL_VEC cdphi211 =
+ kmadd(fac2,SQR(JacPDstandardNth1phi),kmul(fac1,ksub(JacPDstandardNth11phi,kmadd(Gt111,JacPDstandardNth1phi,kmadd(Gt311,JacPDstandardNth3phi,kmul(Gt211,JacPDstandardNth2phi))))));
- CCTK_REAL Gt233 = Gtl133*gtu12 + Gtl233*gtu22 + Gtl333*gtu23;
+ CCTK_REAL_VEC cdphi212 =
+ kmadd(fac2,kmul(JacPDstandardNth1phi,JacPDstandardNth2phi),kmul(fac1,ksub(JacPDstandardNth12phi,kmadd(Gt112,JacPDstandardNth1phi,kmadd(Gt312,JacPDstandardNth3phi,kmul(Gt212,JacPDstandardNth2phi))))));
- CCTK_REAL Gt333 = Gtl133*gtu13 + Gtl233*gtu23 + Gtl333*gtu33;
+ CCTK_REAL_VEC cdphi213 =
+ kmadd(fac2,kmul(JacPDstandardNth1phi,JacPDstandardNth3phi),kmul(fac1,ksub(JacPDstandardNth13phi,kmadd(Gt113,JacPDstandardNth1phi,kmadd(Gt313,JacPDstandardNth3phi,kmul(Gt213,JacPDstandardNth2phi))))));
- CCTK_REAL Xtn1 = Gt111*gtu11 + Gt122*gtu22 + 2*(Gt112*gtu12 +
- Gt113*gtu13 + Gt123*gtu23) + Gt133*gtu33;
+ CCTK_REAL_VEC cdphi222 =
+ kmsub(fac2,SQR(JacPDstandardNth2phi),kmul(fac1,kmadd(Gt122,JacPDstandardNth1phi,kmadd(Gt222,JacPDstandardNth2phi,kmsub(Gt322,JacPDstandardNth3phi,JacPDstandardNth22phi)))));
- CCTK_REAL Xtn2 = Gt211*gtu11 + Gt222*gtu22 + 2*(Gt212*gtu12 +
- Gt213*gtu13 + Gt223*gtu23) + Gt233*gtu33;
+ CCTK_REAL_VEC cdphi223 =
+ kmsub(fac2,kmul(JacPDstandardNth2phi,JacPDstandardNth3phi),kmul(fac1,kmadd(Gt123,JacPDstandardNth1phi,kmadd(Gt223,JacPDstandardNth2phi,kmsub(Gt323,JacPDstandardNth3phi,JacPDstandardNth23phi)))));
- CCTK_REAL Xtn3 = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu12 +
- Gt313*gtu13 + Gt323*gtu23) + Gt333*gtu33;
+ CCTK_REAL_VEC cdphi233 =
+ kmsub(fac2,SQR(JacPDstandardNth3phi),kmul(fac1,kmadd(Gt133,JacPDstandardNth1phi,kmadd(Gt233,JacPDstandardNth2phi,kmsub(Gt333,JacPDstandardNth3phi,JacPDstandardNth33phi)))));
- CCTK_REAL Rt11 = 0.5*(6*(Gt111*Gtlu111 + Gt112*Gtlu112 +
- Gt113*Gtlu113) + 4*(Gt211*Gtlu121 + Gt212*Gtlu122 + Gt213*Gtlu123 +
- Gt311*Gtlu131 + Gt312*Gtlu132 + Gt313*Gtlu133) -
- gtu11*JacPDstandardNth11gt11 + 2*(Gt211*Gtlu211 + Gt212*Gtlu212 +
- Gt213*Gtlu213 + Gt311*Gtlu311 + Gt312*Gtlu312 + Gt313*Gtlu313 +
- gt11L*JacPDstandardNth1Xt1) + 2*gt12L*JacPDstandardNth1Xt2 +
- 2*gt13L*JacPDstandardNth1Xt3 + gtu12*(-JacPDstandardNth12gt11 -
- JacPDstandardNth21gt11) - gtu22*JacPDstandardNth22gt11 +
- gtu13*(-JacPDstandardNth13gt11 - JacPDstandardNth31gt11) +
- gtu23*(-JacPDstandardNth23gt11 - JacPDstandardNth32gt11) -
- gtu33*JacPDstandardNth33gt11 + 2*Gtl111*Xtn1 + 2*Gtl112*Xtn2 +
- 2*Gtl113*Xtn3);
+ CCTK_REAL_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 Rt12 = 0.5*(4*(Gt211*Gtlu221 + Gt212*Gtlu222 +
- Gt213*Gtlu223) + 2*(Gt122*Gtlu112 + Gt123*Gtlu113 + Gt111*Gtlu121 +
- Gt212*Gtlu121 + Gt222*Gtlu122 + Gt113*Gtlu123 + Gt223*Gtlu123 +
- Gt312*Gtlu131 + Gt322*Gtlu132 + Gt323*Gtlu133 + Gt111*Gtlu211 +
- Gt112*(Gtlu111 + Gtlu122 + Gtlu212) + Gt113*Gtlu213 + Gt311*Gtlu231 +
- Gt312*Gtlu232 + Gt313*Gtlu233 + Gt311*Gtlu321 + Gt312*Gtlu322 +
- Gt313*Gtlu323) - gtu11*JacPDstandardNth11gt12 +
- gt12L*JacPDstandardNth1Xt1 + gt22L*JacPDstandardNth1Xt2 +
- gt23L*JacPDstandardNth1Xt3 + gtu12*(-JacPDstandardNth12gt12 -
- JacPDstandardNth21gt12) - gtu22*JacPDstandardNth22gt12 +
- gt11L*JacPDstandardNth2Xt1 + gt12L*JacPDstandardNth2Xt2 +
- gt13L*JacPDstandardNth2Xt3 + gtu13*(-JacPDstandardNth13gt12 -
- JacPDstandardNth31gt12) + gtu23*(-JacPDstandardNth23gt12 -
- JacPDstandardNth32gt12) - gtu33*JacPDstandardNth33gt12 + Gtl112*Xtn1 +
- Gtl211*Xtn1 + Gtl122*Xtn2 + Gtl212*Xtn2 + Gtl123*Xtn3 + Gtl213*Xtn3);
+ CCTK_REAL_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(cdphi3,kmul(gt12L,kmul(gtu13,ToReal(4))),kmul(cdphi2,kmadd(gt12L,kmul(gtu12,ToReal(4)),ToReal(-2))))))));
- CCTK_REAL Rt13 = 0.5*(2*(Gt123*Gtlu112 + Gt133*Gtlu113 + Gt213*Gtlu121
- + Gt223*Gtlu122 + Gt233*Gtlu123 + Gt111*Gtlu131 + Gt313*Gtlu131 +
- Gt112*Gtlu132 + Gt323*Gtlu132 + Gt333*Gtlu133 + Gt211*Gtlu231 +
- Gt212*Gtlu232 + Gt213*Gtlu233 + Gt111*Gtlu311 + Gt112*Gtlu312 +
- Gt113*(Gtlu111 + Gtlu133 + Gtlu313) + Gt211*Gtlu321 + Gt212*Gtlu322 +
- Gt213*Gtlu323) + 4*(Gt311*Gtlu331 + Gt312*Gtlu332 + Gt313*Gtlu333) -
- gtu11*JacPDstandardNth11gt13 + gt13L*JacPDstandardNth1Xt1 +
- gt23L*JacPDstandardNth1Xt2 + gt33L*JacPDstandardNth1Xt3 +
- gtu12*(-JacPDstandardNth12gt13 - JacPDstandardNth21gt13) -
- gtu22*JacPDstandardNth22gt13 + gtu13*(-JacPDstandardNth13gt13 -
- JacPDstandardNth31gt13) + gtu23*(-JacPDstandardNth23gt13 -
- JacPDstandardNth32gt13) - gtu33*JacPDstandardNth33gt13 +
- gt11L*JacPDstandardNth3Xt1 + gt12L*JacPDstandardNth3Xt2 +
- gt13L*JacPDstandardNth3Xt3 + Gtl113*Xtn1 + Gtl311*Xtn1 + Gtl123*Xtn2 +
- Gtl312*Xtn2 + Gtl133*Xtn3 + Gtl313*Xtn3);
-
- CCTK_REAL Rt22 = 0.5*(6*(Gt212*Gtlu221 + Gt222*Gtlu222 +
- Gt223*Gtlu223) + 4*(Gt123*Gtlu213 + Gt312*Gtlu231 + Gt322*Gtlu232 +
- Gt323*Gtlu233) - gtu11*JacPDstandardNth11gt22 +
- gtu12*(-JacPDstandardNth12gt22 - JacPDstandardNth21gt22) -
- gtu22*JacPDstandardNth22gt22 + 2*(Gt123*Gtlu123 + Gt112*(Gtlu121 +
- 2*Gtlu211) + Gt122*(Gtlu122 + 2*Gtlu212) + Gt312*Gtlu321 +
- Gt322*Gtlu322 + Gt323*Gtlu323 + gt12L*JacPDstandardNth2Xt1) +
- 2*gt22L*JacPDstandardNth2Xt2 + 2*gt23L*JacPDstandardNth2Xt3 +
- gtu13*(-JacPDstandardNth13gt22 - JacPDstandardNth31gt22) +
- gtu23*(-JacPDstandardNth23gt22 - JacPDstandardNth32gt22) -
- gtu33*JacPDstandardNth33gt22 + 2*Gtl212*Xtn1 + 2*Gtl222*Xtn2 +
- 2*Gtl223*Xtn3);
-
- CCTK_REAL Rt23 = 0.5*(2*(Gt123*Gtlu133 + Gt113*Gtlu211 + Gt123*Gtlu212
- + Gt133*Gtlu213 + Gt213*Gtlu221 + Gt223*Gtlu222 + Gt233*Gtlu223 +
- Gt212*Gtlu231 + Gt313*Gtlu231 + Gt222*Gtlu232 + Gt323*Gtlu232 +
- Gt223*Gtlu233 + Gt333*Gtlu233 + Gt112*(Gtlu131 + Gtlu311) +
- Gt122*(Gtlu132 + Gtlu312) + Gt123*Gtlu313 + Gt212*Gtlu321 +
- Gt222*Gtlu322 + Gt223*Gtlu323) + 4*(Gt312*Gtlu331 + Gt322*Gtlu332 +
- Gt323*Gtlu333) - gtu11*JacPDstandardNth11gt23 +
- gtu12*(-JacPDstandardNth12gt23 - JacPDstandardNth21gt23) -
- gtu22*JacPDstandardNth22gt23 + gt13L*JacPDstandardNth2Xt1 +
- gt23L*JacPDstandardNth2Xt2 + gt33L*JacPDstandardNth2Xt3 +
- gtu13*(-JacPDstandardNth13gt23 - JacPDstandardNth31gt23) +
- gtu23*(-JacPDstandardNth23gt23 - JacPDstandardNth32gt23) -
- gtu33*JacPDstandardNth33gt23 + gt12L*JacPDstandardNth3Xt1 +
- gt22L*JacPDstandardNth3Xt2 + gt23L*JacPDstandardNth3Xt3 + Gtl213*Xtn1 +
- Gtl312*Xtn1 + Gtl223*Xtn2 + Gtl322*Xtn2 + Gtl233*Xtn3 + Gtl323*Xtn3);
-
- CCTK_REAL Rt33 = 0.5*(4*(Gt133*Gtlu313 + Gt213*Gtlu321 + Gt223*Gtlu322
- + Gt233*Gtlu323) + 6*(Gt313*Gtlu331 + Gt323*Gtlu332 + Gt333*Gtlu333) -
- gtu11*JacPDstandardNth11gt33 + gtu12*(-JacPDstandardNth12gt33 -
- JacPDstandardNth21gt33) - gtu22*JacPDstandardNth22gt33 +
- gtu13*(-JacPDstandardNth13gt33 - JacPDstandardNth31gt33) +
- gtu23*(-JacPDstandardNth23gt33 - JacPDstandardNth32gt33) -
- gtu33*JacPDstandardNth33gt33 + 2*(Gt133*Gtlu133 + Gt213*Gtlu231 +
- Gt223*Gtlu232 + Gt233*Gtlu233 + Gt113*(Gtlu131 + 2*Gtlu311) +
- Gt123*(Gtlu132 + 2*Gtlu312) + gt13L*JacPDstandardNth3Xt1) +
- 2*gt23L*JacPDstandardNth3Xt2 + 2*gt33L*JacPDstandardNth3Xt3 +
- 2*Gtl313*Xtn1 + 2*Gtl323*Xtn2 + 2*Gtl333*Xtn3);
-
- CCTK_REAL fac1 = IfThen(conformalMethod,-0.5*INV(phiL),1);
-
- CCTK_REAL cdphi1 = fac1*JacPDstandardNth1phi;
-
- CCTK_REAL cdphi2 = fac1*JacPDstandardNth2phi;
-
- CCTK_REAL cdphi3 = fac1*JacPDstandardNth3phi;
-
- CCTK_REAL fac2 = IfThen(conformalMethod,0.5*INV(SQR(phiL)),0);
-
- CCTK_REAL cdphi211 = fac1*(JacPDstandardNth11phi -
- Gt111*JacPDstandardNth1phi - Gt211*JacPDstandardNth2phi -
- Gt311*JacPDstandardNth3phi) + fac2*SQR(JacPDstandardNth1phi);
-
- CCTK_REAL cdphi212 = fac2*JacPDstandardNth1phi*JacPDstandardNth2phi +
- fac1*(JacPDstandardNth12phi - Gt112*JacPDstandardNth1phi -
- Gt212*JacPDstandardNth2phi - Gt312*JacPDstandardNth3phi);
-
- CCTK_REAL cdphi213 = fac2*JacPDstandardNth1phi*JacPDstandardNth3phi +
- fac1*(JacPDstandardNth13phi - Gt113*JacPDstandardNth1phi -
- Gt213*JacPDstandardNth2phi - Gt313*JacPDstandardNth3phi);
-
- CCTK_REAL cdphi222 = -(fac1*(Gt122*JacPDstandardNth1phi -
- JacPDstandardNth22phi + Gt222*JacPDstandardNth2phi +
- Gt322*JacPDstandardNth3phi)) + fac2*SQR(JacPDstandardNth2phi);
-
- CCTK_REAL cdphi223 = fac2*JacPDstandardNth2phi*JacPDstandardNth3phi -
- fac1*(Gt123*JacPDstandardNth1phi - JacPDstandardNth23phi +
- Gt223*JacPDstandardNth2phi + Gt323*JacPDstandardNth3phi);
-
- CCTK_REAL cdphi233 = -(fac1*(Gt133*JacPDstandardNth1phi +
- Gt233*JacPDstandardNth2phi - JacPDstandardNth33phi +
- Gt333*JacPDstandardNth3phi)) + fac2*SQR(JacPDstandardNth3phi);
-
- CCTK_REAL Rphi11 = -2*(cdphi211 + 2*(-1 + gt11L*gtu11)*SQR(cdphi1) +
- gt11L*(cdphi211*gtu11 + 4*(cdphi1*(cdphi2*gtu12 + cdphi3*gtu13) +
- cdphi2*cdphi3*gtu23) + cdphi233*gtu33 + gtu22*(cdphi222 +
- 2*SQR(cdphi2)) + 2*(cdphi212*gtu12 + cdphi213*gtu13 + cdphi223*gtu23 +
- gtu33*SQR(cdphi3))));
+ 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(cdphi2,kmul(gt13L,kmul(gtu12,ToReal(4))),kmul(cdphi3,kmadd(gt13L,kmul(gtu13,ToReal(4)),ToReal(-2))))))));
- CCTK_REAL Rphi12 = -2*(cdphi212 + cdphi1*(cdphi2*(-2 + 4*gt12L*gtu12)
- + 4*cdphi3*gt12L*gtu13) + gt12L*(cdphi211*gtu11 + 4*cdphi2*cdphi3*gtu23
- + 2*(cdphi212*gtu12 + cdphi213*gtu13 + cdphi223*gtu23 +
- gtu11*SQR(cdphi1)) + gtu22*(cdphi222 + 2*SQR(cdphi2)) + gtu33*(cdphi233
- + 2*SQR(cdphi3))));
+ 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 Rphi13 = -2*(cdphi213 + cdphi1*(4*cdphi2*gt13L*gtu12 +
- cdphi3*(-2 + 4*gt13L*gtu13)) + gt13L*(cdphi211*gtu11 +
- 4*cdphi2*cdphi3*gtu23 + 2*(cdphi212*gtu12 + cdphi213*gtu13 +
- cdphi223*gtu23 + gtu11*SQR(cdphi1)) + gtu22*(cdphi222 + 2*SQR(cdphi2))
- + gtu33*(cdphi233 + 2*SQR(cdphi3))));
+ 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(cdphi1,kmul(gt23L,kmul(gtu12,ToReal(4))),kmul(cdphi3,kmadd(gt23L,kmul(gtu23,ToReal(4)),ToReal(-2))))))));
- CCTK_REAL Rphi22 = -2*(cdphi222 + 2*(-1 + gt22L*gtu22)*SQR(cdphi2) +
- gt22L*(cdphi222*gtu22 + 4*(cdphi1*cdphi3*gtu13 + cdphi2*(cdphi1*gtu12 +
- cdphi3*gtu23)) + cdphi233*gtu33 + gtu11*(cdphi211 + 2*SQR(cdphi1)) +
- 2*(cdphi212*gtu12 + cdphi213*gtu13 + cdphi223*gtu23 +
- gtu33*SQR(cdphi3))));
+ 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 Rphi23 = -2*(cdphi223 + cdphi2*(4*cdphi1*gt23L*gtu12 +
- cdphi3*(-2 + 4*gt23L*gtu23)) + gt23L*(4*cdphi1*cdphi3*gtu13 +
- cdphi222*gtu22 + gtu11*(cdphi211 + 2*SQR(cdphi1)) + 2*(cdphi212*gtu12 +
- cdphi213*gtu13 + cdphi223*gtu23 + gtu22*SQR(cdphi2)) + gtu33*(cdphi233
- + 2*SQR(cdphi3))));
+ CCTK_REAL_VEC e4phi =
+ IfThen(conformalMethod,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
- CCTK_REAL Rphi33 = -2*(cdphi233 + gt33L*((4*cdphi1*cdphi2 +
- 2*cdphi212)*gtu12 + 4*cdphi3*(cdphi1*gtu13 + cdphi2*gtu23) +
- 2*(cdphi213*gtu13 + cdphi223*gtu23) + cdphi233*gtu33 + gtu11*(cdphi211
- + 2*SQR(cdphi1)) + gtu22*(cdphi222 + 2*SQR(cdphi2))) + 2*(-1 +
- gt33L*gtu33)*SQR(cdphi3));
+ CCTK_REAL_VEC em4phi = INV(e4phi);
- CCTK_REAL e4phi = IfThen(conformalMethod,INV(SQR(phiL)),exp(4*phiL));
+ CCTK_REAL_VEC gu11 = kmul(em4phi,gtu11);
- CCTK_REAL em4phi = INV(e4phi);
+ CCTK_REAL_VEC gu12 = kmul(em4phi,gtu12);
- CCTK_REAL gu11 = em4phi*gtu11;
+ CCTK_REAL_VEC gu13 = kmul(em4phi,gtu13);
- CCTK_REAL gu12 = em4phi*gtu12;
+ CCTK_REAL_VEC gu22 = kmul(em4phi,gtu22);
- CCTK_REAL gu13 = em4phi*gtu13;
+ CCTK_REAL_VEC gu23 = kmul(em4phi,gtu23);
- CCTK_REAL gu22 = em4phi*gtu22;
+ CCTK_REAL_VEC gu33 = kmul(em4phi,gtu33);
- CCTK_REAL gu23 = em4phi*gtu23;
+ CCTK_REAL_VEC R11 = kadd(Rphi11,Rt11);
- CCTK_REAL gu33 = em4phi*gtu33;
+ CCTK_REAL_VEC R12 = kadd(Rphi12,Rt12);
- CCTK_REAL R11 = Rphi11 + Rt11;
+ CCTK_REAL_VEC R13 = kadd(Rphi13,Rt13);
- CCTK_REAL R12 = Rphi12 + Rt12;
+ CCTK_REAL_VEC R22 = kadd(Rphi22,Rt22);
- CCTK_REAL R13 = Rphi13 + Rt13;
+ CCTK_REAL_VEC R23 = kadd(Rphi23,Rt23);
- CCTK_REAL R22 = Rphi22 + Rt22;
+ CCTK_REAL_VEC R33 = kadd(Rphi33,Rt33);
- CCTK_REAL R23 = Rphi23 + Rt23;
+ 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 R33 = Rphi33 + Rt33;
+ CCTK_REAL_VEC Atm11 =
+ kmadd(At11L,gtu11,kmadd(At12L,gtu12,kmul(At13L,gtu13)));
- CCTK_REAL trR = gu11*R11 + gu22*R22 + 2*(gu12*R12 + gu13*R13 +
- gu23*R23) + gu33*R33;
+ CCTK_REAL_VEC Atm21 =
+ kmadd(At11L,gtu12,kmadd(At12L,gtu22,kmul(At13L,gtu23)));
- CCTK_REAL Atm11 = At11L*gtu11 + At12L*gtu12 + At13L*gtu13;
+ CCTK_REAL_VEC Atm31 =
+ kmadd(At11L,gtu13,kmadd(At12L,gtu23,kmul(At13L,gtu33)));
- CCTK_REAL Atm21 = At11L*gtu12 + At12L*gtu22 + At13L*gtu23;
+ CCTK_REAL_VEC Atm12 =
+ kmadd(At12L,gtu11,kmadd(At22L,gtu12,kmul(At23L,gtu13)));
- CCTK_REAL Atm31 = At11L*gtu13 + At12L*gtu23 + At13L*gtu33;
+ CCTK_REAL_VEC Atm22 =
+ kmadd(At12L,gtu12,kmadd(At22L,gtu22,kmul(At23L,gtu23)));
- CCTK_REAL Atm12 = At12L*gtu11 + At22L*gtu12 + At23L*gtu13;
+ CCTK_REAL_VEC Atm32 =
+ kmadd(At12L,gtu13,kmadd(At22L,gtu23,kmul(At23L,gtu33)));
- CCTK_REAL Atm22 = At12L*gtu12 + At22L*gtu22 + At23L*gtu23;
+ CCTK_REAL_VEC Atm13 =
+ kmadd(At13L,gtu11,kmadd(At23L,gtu12,kmul(At33L,gtu13)));
- CCTK_REAL Atm32 = At12L*gtu13 + At22L*gtu23 + At23L*gtu33;
+ CCTK_REAL_VEC Atm23 =
+ kmadd(At13L,gtu12,kmadd(At23L,gtu22,kmul(At33L,gtu23)));
- CCTK_REAL Atm13 = At13L*gtu11 + At23L*gtu12 + At33L*gtu13;
+ CCTK_REAL_VEC Atm33 =
+ kmadd(At13L,gtu13,kmadd(At23L,gtu23,kmul(At33L,gtu33)));
- CCTK_REAL Atm23 = At13L*gtu12 + At23L*gtu22 + At33L*gtu23;
+ 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 Atm33 = At13L*gtu13 + At23L*gtu23 + At33L*gtu33;
+ CCTK_REAL_VEC HL =
+ kadd(trR,kmadd(rho,ToReal(-50.26548245743669181540229413247204614715),kmadd(kmadd(Atm12,Atm21,kmadd(Atm13,Atm31,kmul(Atm23,Atm32))),ToReal(-2.),kmadd(kadd(SQR(Atm11),kadd(SQR(Atm22),SQR(Atm33))),ToReal(-1.),kmul(SQR(trKL),ToReal(0.6666666666666666666666666666666666666667))))));
- CCTK_REAL rho = INV(SQR(alphaL))*(eTttL - 2*(beta2L*eTtyL +
- beta3L*eTtzL) + 2*(beta1L*(-eTtxL + beta2L*eTxyL + beta3L*eTxzL) +
- beta2L*beta3L*eTyzL) + eTxxL*SQR(beta1L) + eTyyL*SQR(beta2L) +
- eTzzL*SQR(beta3L));
+ /* If necessary, store only partial vectors after the first iteration */
- CCTK_REAL HL = -2.*(Atm12*Atm21 + Atm13*Atm31 + Atm23*Atm32) -
- 50.26548245743669181540229413247204614715*rho + trR - 1.*(SQR(Atm11) +
- SQR(Atm22) + SQR(Atm33)) +
- 0.6666666666666666666666666666666666666667*SQR(trKL);
+ 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);
+ break;
+ }
+
+ /* If necessary, store only partial vectors after the first iteration */
- /* Copy local copies back to grid functions */
- H[index] = HL;
+ 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);
+ 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);
+ break;
+ }
+ vec_store_nta(H[index],HL);
}
- LC_ENDLOOP3 (ML_BSSN_MP_O8_constraints1);
+ LC_ENDLOOP3VEC (ML_BSSN_MP_O8_constraints1);
}
extern "C" void ML_BSSN_MP_O8_constraints1(CCTK_ARGUMENTS)
@@ -1505,5 +1596,43 @@ extern "C" void ML_BSSN_MP_O8_constraints1(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_O8_constraints1_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_MP_O8_constraints1_calc_every != ML_BSSN_MP_O8_constraints1_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN_MP_O8::ML_curv","ML_BSSN_MP_O8::ML_Gamma","ML_BSSN_MP_O8::ML_Ham","ML_BSSN_MP_O8::ML_lapse","ML_BSSN_MP_O8::ML_log_confac","ML_BSSN_MP_O8::ML_metric","ML_BSSN_MP_O8::ML_shift","ML_BSSN_MP_O8::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_O8_constraints1", 8, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_O8_constraints1", 1, 1, 1);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_O8_constraints1", 2, 2, 2);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_O8_constraints1", 3, 3, 3);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_O8_constraints1", 4, 4, 4);
+ break;
+ }
+
GenericFD_LoopOverInterior(cctkGH, &ML_BSSN_MP_O8_constraints1_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_MP_O8_constraints1_Body");
+ }
}
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 d13bf9a..d5ce43b 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
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_MP_O8_constraints2_SelectBCs(CCTK_ARGUMENTS)
{
@@ -42,7 +43,7 @@ extern "C" void ML_BSSN_MP_O8_constraints2_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_BSSN_MP_O8_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_MP_O8_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;
@@ -50,21 +51,6 @@ static void ML_BSSN_MP_O8_constraints2_Body(cGH const * restrict const cctkGH, i
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_O8_constraints2_Body");
- }
-
- if (cctk_iteration % ML_BSSN_MP_O8_constraints2_calc_every != ML_BSSN_MP_O8_constraints2_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN_MP_O8::ML_cons_detg","ML_BSSN_MP_O8::ML_cons_Gamma","ML_BSSN_MP_O8::ML_cons_traceA","ML_BSSN_MP_O8::ML_curv","ML_BSSN_MP_O8::ML_Gamma","ML_BSSN_MP_O8::ML_lapse","ML_BSSN_MP_O8::ML_log_confac","ML_BSSN_MP_O8::ML_metric","ML_BSSN_MP_O8::ML_mom","ML_BSSN_MP_O8::ML_shift","ML_BSSN_MP_O8::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_O8_constraints2", 11, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_O8_constraints2", 4, 4, 4);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -74,47 +60,102 @@ static void ML_BSSN_MP_O8_constraints2_Body(cGH const * restrict const cctkGH, i
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o1024dx = 0.0009765625*INV(dx);
- CCTK_REAL const p1o1024dy = 0.0009765625*INV(dy);
- CCTK_REAL const p1o1024dz = 0.0009765625*INV(dz);
- CCTK_REAL const p1o1680dx = 0.000595238095238095238095238095238*INV(dx);
- CCTK_REAL const p1o1680dy = 0.000595238095238095238095238095238*INV(dy);
- CCTK_REAL const p1o1680dz = 0.000595238095238095238095238095238*INV(dz);
- CCTK_REAL const p1o5040dx2 = 0.000198412698412698412698412698413*INV(SQR(dx));
- CCTK_REAL const p1o5040dy2 = 0.000198412698412698412698412698413*INV(SQR(dy));
- CCTK_REAL const p1o5040dz2 = 0.000198412698412698412698412698413*INV(SQR(dz));
- CCTK_REAL const p1o560dx = 0.00178571428571428571428571428571*INV(dx);
- CCTK_REAL const p1o560dy = 0.00178571428571428571428571428571*INV(dy);
- CCTK_REAL const p1o560dz = 0.00178571428571428571428571428571*INV(dz);
- CCTK_REAL const p1o705600dxdy = 1.41723356009070294784580498866e-6*INV(dx)*INV(dy);
- CCTK_REAL const p1o705600dxdz = 1.41723356009070294784580498866e-6*INV(dx)*INV(dz);
- CCTK_REAL const p1o705600dydz = 1.41723356009070294784580498866e-6*INV(dy)*INV(dz);
- CCTK_REAL const p1o840dx = 0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const p1o840dy = 0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const p1o840dz = 0.00119047619047619047619047619048*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o840dx = -0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const pm1o840dy = -0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const pm1o840dz = -0.00119047619047619047619047619048*INV(dz);
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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)
@@ -161,51 +202,60 @@ static void ML_BSSN_MP_O8_constraints2_Body(cGH const * restrict const cctkGH, i
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_LOOP3 (ML_BSSN_MP_O8_constraints2,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_MP_O8_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 alphaL = alpha[index];
- CCTK_REAL At11L = At11[index];
- CCTK_REAL At12L = At12[index];
- CCTK_REAL At13L = At13[index];
- CCTK_REAL At22L = At22[index];
- CCTK_REAL At23L = At23[index];
- CCTK_REAL At33L = At33[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL gt11L = gt11[index];
- CCTK_REAL gt12L = gt12[index];
- CCTK_REAL gt13L = gt13[index];
- CCTK_REAL gt22L = gt22[index];
- CCTK_REAL gt23L = gt23[index];
- CCTK_REAL gt33L = gt33[index];
- CCTK_REAL phiL = phi[index];
- CCTK_REAL trKL = trK[index];
- CCTK_REAL Xt1L = Xt1[index];
- CCTK_REAL Xt2L = Xt2[index];
- CCTK_REAL Xt3L = Xt3[index];
-
- CCTK_REAL eTtxL, eTtyL, eTtzL, eTxxL, eTxyL, eTxzL, eTyyL, eTyzL, eTzzL;
+ 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 = eTtx[index];
- eTtyL = eTty[index];
- eTtzL = eTtz[index];
- eTxxL = eTxx[index];
- eTxyL = eTxy[index];
- eTxzL = eTxz[index];
- eTyyL = eTyy[index];
- eTyzL = eTyz[index];
- eTzzL = eTzz[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
{
@@ -220,238 +270,421 @@ static void ML_BSSN_MP_O8_constraints2_Body(cGH const * restrict const cctkGH, i
eTzzL = ToReal(0.0);
}
- CCTK_REAL J11L, J12L, J13L, J21L, J22L, J23L, J31L, J32L, J33L;
+ CCTK_REAL_VEC J11L, J12L, J13L, J21L, J22L, J23L, J31L, J32L, J33L;
if (use_jacobian)
{
- J11L = J11[index];
- J12L = J12[index];
- J13L = J13[index];
- J21L = J21[index];
- J22L = J22[index];
- J23L = J23[index];
- J31L = J31[index];
- J32L = J32[index];
- J33L = J33[index];
+ J11L = vec_load(J11[index]);
+ J12L = vec_load(J12[index]);
+ J13L = vec_load(J13[index]);
+ J21L = vec_load(J21[index]);
+ J22L = vec_load(J22[index]);
+ J23L = vec_load(J23[index]);
+ J31L = vec_load(J31[index]);
+ J32L = vec_load(J32[index]);
+ J33L = vec_load(J33[index]);
}
/* Include user supplied include files */
/* Precompute derivatives */
- CCTK_REAL const PDstandardNth1At11 = PDstandardNth1(&At11[index]);
- CCTK_REAL const PDstandardNth2At11 = PDstandardNth2(&At11[index]);
- CCTK_REAL const PDstandardNth3At11 = PDstandardNth3(&At11[index]);
- CCTK_REAL const PDstandardNth1At12 = PDstandardNth1(&At12[index]);
- CCTK_REAL const PDstandardNth2At12 = PDstandardNth2(&At12[index]);
- CCTK_REAL const PDstandardNth3At12 = PDstandardNth3(&At12[index]);
- CCTK_REAL const PDstandardNth1At13 = PDstandardNth1(&At13[index]);
- CCTK_REAL const PDstandardNth2At13 = PDstandardNth2(&At13[index]);
- CCTK_REAL const PDstandardNth3At13 = PDstandardNth3(&At13[index]);
- CCTK_REAL const PDstandardNth1At22 = PDstandardNth1(&At22[index]);
- CCTK_REAL const PDstandardNth2At22 = PDstandardNth2(&At22[index]);
- CCTK_REAL const PDstandardNth3At22 = PDstandardNth3(&At22[index]);
- CCTK_REAL const PDstandardNth1At23 = PDstandardNth1(&At23[index]);
- CCTK_REAL const PDstandardNth2At23 = PDstandardNth2(&At23[index]);
- CCTK_REAL const PDstandardNth3At23 = PDstandardNth3(&At23[index]);
- CCTK_REAL const PDstandardNth1At33 = PDstandardNth1(&At33[index]);
- CCTK_REAL const PDstandardNth2At33 = PDstandardNth2(&At33[index]);
- CCTK_REAL const PDstandardNth3At33 = PDstandardNth3(&At33[index]);
- CCTK_REAL const PDstandardNth1gt11 = PDstandardNth1(&gt11[index]);
- CCTK_REAL const PDstandardNth2gt11 = PDstandardNth2(&gt11[index]);
- CCTK_REAL const PDstandardNth3gt11 = PDstandardNth3(&gt11[index]);
- CCTK_REAL const PDstandardNth1gt12 = PDstandardNth1(&gt12[index]);
- CCTK_REAL const PDstandardNth2gt12 = PDstandardNth2(&gt12[index]);
- CCTK_REAL const PDstandardNth3gt12 = PDstandardNth3(&gt12[index]);
- CCTK_REAL const PDstandardNth1gt13 = PDstandardNth1(&gt13[index]);
- CCTK_REAL const PDstandardNth2gt13 = PDstandardNth2(&gt13[index]);
- CCTK_REAL const PDstandardNth3gt13 = PDstandardNth3(&gt13[index]);
- CCTK_REAL const PDstandardNth1gt22 = PDstandardNth1(&gt22[index]);
- CCTK_REAL const PDstandardNth2gt22 = PDstandardNth2(&gt22[index]);
- CCTK_REAL const PDstandardNth3gt22 = PDstandardNth3(&gt22[index]);
- CCTK_REAL const PDstandardNth1gt23 = PDstandardNth1(&gt23[index]);
- CCTK_REAL const PDstandardNth2gt23 = PDstandardNth2(&gt23[index]);
- CCTK_REAL const PDstandardNth3gt23 = PDstandardNth3(&gt23[index]);
- CCTK_REAL const PDstandardNth1gt33 = PDstandardNth1(&gt33[index]);
- CCTK_REAL const PDstandardNth2gt33 = PDstandardNth2(&gt33[index]);
- CCTK_REAL const PDstandardNth3gt33 = PDstandardNth3(&gt33[index]);
- CCTK_REAL const PDstandardNth1phi = PDstandardNth1(&phi[index]);
- CCTK_REAL const PDstandardNth2phi = PDstandardNth2(&phi[index]);
- CCTK_REAL const PDstandardNth3phi = PDstandardNth3(&phi[index]);
- CCTK_REAL const PDstandardNth1trK = PDstandardNth1(&trK[index]);
- CCTK_REAL const PDstandardNth2trK = PDstandardNth2(&trK[index]);
- CCTK_REAL const PDstandardNth3trK = PDstandardNth3(&trK[index]);
+ 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 JacPDstandardNth1At11;
- CCTK_REAL JacPDstandardNth1At12;
- CCTK_REAL JacPDstandardNth1At13;
- CCTK_REAL JacPDstandardNth1At22;
- CCTK_REAL JacPDstandardNth1At23;
- CCTK_REAL JacPDstandardNth1At33;
- CCTK_REAL JacPDstandardNth1gt11;
- CCTK_REAL JacPDstandardNth1gt12;
- CCTK_REAL JacPDstandardNth1gt13;
- CCTK_REAL JacPDstandardNth1gt22;
- CCTK_REAL JacPDstandardNth1gt23;
- CCTK_REAL JacPDstandardNth1gt33;
- CCTK_REAL JacPDstandardNth1phi;
- CCTK_REAL JacPDstandardNth1trK;
- CCTK_REAL JacPDstandardNth2At11;
- CCTK_REAL JacPDstandardNth2At12;
- CCTK_REAL JacPDstandardNth2At13;
- CCTK_REAL JacPDstandardNth2At22;
- CCTK_REAL JacPDstandardNth2At23;
- CCTK_REAL JacPDstandardNth2At33;
- CCTK_REAL JacPDstandardNth2gt11;
- CCTK_REAL JacPDstandardNth2gt12;
- CCTK_REAL JacPDstandardNth2gt13;
- CCTK_REAL JacPDstandardNth2gt22;
- CCTK_REAL JacPDstandardNth2gt23;
- CCTK_REAL JacPDstandardNth2gt33;
- CCTK_REAL JacPDstandardNth2phi;
- CCTK_REAL JacPDstandardNth2trK;
- CCTK_REAL JacPDstandardNth3At11;
- CCTK_REAL JacPDstandardNth3At12;
- CCTK_REAL JacPDstandardNth3At13;
- CCTK_REAL JacPDstandardNth3At22;
- CCTK_REAL JacPDstandardNth3At23;
- CCTK_REAL JacPDstandardNth3At33;
- CCTK_REAL JacPDstandardNth3gt11;
- CCTK_REAL JacPDstandardNth3gt12;
- CCTK_REAL JacPDstandardNth3gt13;
- CCTK_REAL JacPDstandardNth3gt22;
- CCTK_REAL JacPDstandardNth3gt23;
- CCTK_REAL JacPDstandardNth3gt33;
- CCTK_REAL JacPDstandardNth3phi;
- CCTK_REAL JacPDstandardNth3trK;
+ 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 = J11L*PDstandardNth1At11 +
- J21L*PDstandardNth2At11 + J31L*PDstandardNth3At11;
+ JacPDstandardNth1At11 =
+ kmadd(J11L,PDstandardNth1At11,kmadd(J21L,PDstandardNth2At11,kmul(J31L,PDstandardNth3At11)));
- JacPDstandardNth1At12 = J11L*PDstandardNth1At12 +
- J21L*PDstandardNth2At12 + J31L*PDstandardNth3At12;
+ JacPDstandardNth1At12 =
+ kmadd(J11L,PDstandardNth1At12,kmadd(J21L,PDstandardNth2At12,kmul(J31L,PDstandardNth3At12)));
- JacPDstandardNth1At13 = J11L*PDstandardNth1At13 +
- J21L*PDstandardNth2At13 + J31L*PDstandardNth3At13;
+ JacPDstandardNth1At13 =
+ kmadd(J11L,PDstandardNth1At13,kmadd(J21L,PDstandardNth2At13,kmul(J31L,PDstandardNth3At13)));
- JacPDstandardNth1At22 = J11L*PDstandardNth1At22 +
- J21L*PDstandardNth2At22 + J31L*PDstandardNth3At22;
+ JacPDstandardNth1At22 =
+ kmadd(J11L,PDstandardNth1At22,kmadd(J21L,PDstandardNth2At22,kmul(J31L,PDstandardNth3At22)));
- JacPDstandardNth1At23 = J11L*PDstandardNth1At23 +
- J21L*PDstandardNth2At23 + J31L*PDstandardNth3At23;
+ JacPDstandardNth1At23 =
+ kmadd(J11L,PDstandardNth1At23,kmadd(J21L,PDstandardNth2At23,kmul(J31L,PDstandardNth3At23)));
- JacPDstandardNth1At33 = J11L*PDstandardNth1At33 +
- J21L*PDstandardNth2At33 + J31L*PDstandardNth3At33;
+ JacPDstandardNth1At33 =
+ kmadd(J11L,PDstandardNth1At33,kmadd(J21L,PDstandardNth2At33,kmul(J31L,PDstandardNth3At33)));
- JacPDstandardNth1gt11 = J11L*PDstandardNth1gt11 +
- J21L*PDstandardNth2gt11 + J31L*PDstandardNth3gt11;
+ JacPDstandardNth1gt11 =
+ kmadd(J11L,PDstandardNth1gt11,kmadd(J21L,PDstandardNth2gt11,kmul(J31L,PDstandardNth3gt11)));
- JacPDstandardNth1gt12 = J11L*PDstandardNth1gt12 +
- J21L*PDstandardNth2gt12 + J31L*PDstandardNth3gt12;
+ JacPDstandardNth1gt12 =
+ kmadd(J11L,PDstandardNth1gt12,kmadd(J21L,PDstandardNth2gt12,kmul(J31L,PDstandardNth3gt12)));
- JacPDstandardNth1gt13 = J11L*PDstandardNth1gt13 +
- J21L*PDstandardNth2gt13 + J31L*PDstandardNth3gt13;
+ JacPDstandardNth1gt13 =
+ kmadd(J11L,PDstandardNth1gt13,kmadd(J21L,PDstandardNth2gt13,kmul(J31L,PDstandardNth3gt13)));
- JacPDstandardNth1gt22 = J11L*PDstandardNth1gt22 +
- J21L*PDstandardNth2gt22 + J31L*PDstandardNth3gt22;
+ JacPDstandardNth1gt22 =
+ kmadd(J11L,PDstandardNth1gt22,kmadd(J21L,PDstandardNth2gt22,kmul(J31L,PDstandardNth3gt22)));
- JacPDstandardNth1gt23 = J11L*PDstandardNth1gt23 +
- J21L*PDstandardNth2gt23 + J31L*PDstandardNth3gt23;
+ JacPDstandardNth1gt23 =
+ kmadd(J11L,PDstandardNth1gt23,kmadd(J21L,PDstandardNth2gt23,kmul(J31L,PDstandardNth3gt23)));
- JacPDstandardNth1gt33 = J11L*PDstandardNth1gt33 +
- J21L*PDstandardNth2gt33 + J31L*PDstandardNth3gt33;
+ JacPDstandardNth1gt33 =
+ kmadd(J11L,PDstandardNth1gt33,kmadd(J21L,PDstandardNth2gt33,kmul(J31L,PDstandardNth3gt33)));
- JacPDstandardNth1phi = J11L*PDstandardNth1phi + J21L*PDstandardNth2phi
- + J31L*PDstandardNth3phi;
+ JacPDstandardNth1phi =
+ kmadd(J11L,PDstandardNth1phi,kmadd(J21L,PDstandardNth2phi,kmul(J31L,PDstandardNth3phi)));
- JacPDstandardNth1trK = J11L*PDstandardNth1trK + J21L*PDstandardNth2trK
- + J31L*PDstandardNth3trK;
+ JacPDstandardNth1trK =
+ kmadd(J11L,PDstandardNth1trK,kmadd(J21L,PDstandardNth2trK,kmul(J31L,PDstandardNth3trK)));
- JacPDstandardNth2At11 = J12L*PDstandardNth1At11 +
- J22L*PDstandardNth2At11 + J32L*PDstandardNth3At11;
+ JacPDstandardNth2At11 =
+ kmadd(J12L,PDstandardNth1At11,kmadd(J22L,PDstandardNth2At11,kmul(J32L,PDstandardNth3At11)));
- JacPDstandardNth2At12 = J12L*PDstandardNth1At12 +
- J22L*PDstandardNth2At12 + J32L*PDstandardNth3At12;
+ JacPDstandardNth2At12 =
+ kmadd(J12L,PDstandardNth1At12,kmadd(J22L,PDstandardNth2At12,kmul(J32L,PDstandardNth3At12)));
- JacPDstandardNth2At13 = J12L*PDstandardNth1At13 +
- J22L*PDstandardNth2At13 + J32L*PDstandardNth3At13;
+ JacPDstandardNth2At13 =
+ kmadd(J12L,PDstandardNth1At13,kmadd(J22L,PDstandardNth2At13,kmul(J32L,PDstandardNth3At13)));
- JacPDstandardNth2At22 = J12L*PDstandardNth1At22 +
- J22L*PDstandardNth2At22 + J32L*PDstandardNth3At22;
+ JacPDstandardNth2At22 =
+ kmadd(J12L,PDstandardNth1At22,kmadd(J22L,PDstandardNth2At22,kmul(J32L,PDstandardNth3At22)));
- JacPDstandardNth2At23 = J12L*PDstandardNth1At23 +
- J22L*PDstandardNth2At23 + J32L*PDstandardNth3At23;
+ JacPDstandardNth2At23 =
+ kmadd(J12L,PDstandardNth1At23,kmadd(J22L,PDstandardNth2At23,kmul(J32L,PDstandardNth3At23)));
- JacPDstandardNth2At33 = J12L*PDstandardNth1At33 +
- J22L*PDstandardNth2At33 + J32L*PDstandardNth3At33;
+ JacPDstandardNth2At33 =
+ kmadd(J12L,PDstandardNth1At33,kmadd(J22L,PDstandardNth2At33,kmul(J32L,PDstandardNth3At33)));
- JacPDstandardNth2gt11 = J12L*PDstandardNth1gt11 +
- J22L*PDstandardNth2gt11 + J32L*PDstandardNth3gt11;
+ JacPDstandardNth2gt11 =
+ kmadd(J12L,PDstandardNth1gt11,kmadd(J22L,PDstandardNth2gt11,kmul(J32L,PDstandardNth3gt11)));
- JacPDstandardNth2gt12 = J12L*PDstandardNth1gt12 +
- J22L*PDstandardNth2gt12 + J32L*PDstandardNth3gt12;
+ JacPDstandardNth2gt12 =
+ kmadd(J12L,PDstandardNth1gt12,kmadd(J22L,PDstandardNth2gt12,kmul(J32L,PDstandardNth3gt12)));
- JacPDstandardNth2gt13 = J12L*PDstandardNth1gt13 +
- J22L*PDstandardNth2gt13 + J32L*PDstandardNth3gt13;
+ JacPDstandardNth2gt13 =
+ kmadd(J12L,PDstandardNth1gt13,kmadd(J22L,PDstandardNth2gt13,kmul(J32L,PDstandardNth3gt13)));
- JacPDstandardNth2gt22 = J12L*PDstandardNth1gt22 +
- J22L*PDstandardNth2gt22 + J32L*PDstandardNth3gt22;
+ JacPDstandardNth2gt22 =
+ kmadd(J12L,PDstandardNth1gt22,kmadd(J22L,PDstandardNth2gt22,kmul(J32L,PDstandardNth3gt22)));
- JacPDstandardNth2gt23 = J12L*PDstandardNth1gt23 +
- J22L*PDstandardNth2gt23 + J32L*PDstandardNth3gt23;
+ JacPDstandardNth2gt23 =
+ kmadd(J12L,PDstandardNth1gt23,kmadd(J22L,PDstandardNth2gt23,kmul(J32L,PDstandardNth3gt23)));
- JacPDstandardNth2gt33 = J12L*PDstandardNth1gt33 +
- J22L*PDstandardNth2gt33 + J32L*PDstandardNth3gt33;
+ JacPDstandardNth2gt33 =
+ kmadd(J12L,PDstandardNth1gt33,kmadd(J22L,PDstandardNth2gt33,kmul(J32L,PDstandardNth3gt33)));
- JacPDstandardNth2phi = J12L*PDstandardNth1phi + J22L*PDstandardNth2phi
- + J32L*PDstandardNth3phi;
+ JacPDstandardNth2phi =
+ kmadd(J12L,PDstandardNth1phi,kmadd(J22L,PDstandardNth2phi,kmul(J32L,PDstandardNth3phi)));
- JacPDstandardNth2trK = J12L*PDstandardNth1trK + J22L*PDstandardNth2trK
- + J32L*PDstandardNth3trK;
+ JacPDstandardNth2trK =
+ kmadd(J12L,PDstandardNth1trK,kmadd(J22L,PDstandardNth2trK,kmul(J32L,PDstandardNth3trK)));
- JacPDstandardNth3At11 = J13L*PDstandardNth1At11 +
- J23L*PDstandardNth2At11 + J33L*PDstandardNth3At11;
+ JacPDstandardNth3At11 =
+ kmadd(J13L,PDstandardNth1At11,kmadd(J23L,PDstandardNth2At11,kmul(J33L,PDstandardNth3At11)));
- JacPDstandardNth3At12 = J13L*PDstandardNth1At12 +
- J23L*PDstandardNth2At12 + J33L*PDstandardNth3At12;
+ JacPDstandardNth3At12 =
+ kmadd(J13L,PDstandardNth1At12,kmadd(J23L,PDstandardNth2At12,kmul(J33L,PDstandardNth3At12)));
- JacPDstandardNth3At13 = J13L*PDstandardNth1At13 +
- J23L*PDstandardNth2At13 + J33L*PDstandardNth3At13;
+ JacPDstandardNth3At13 =
+ kmadd(J13L,PDstandardNth1At13,kmadd(J23L,PDstandardNth2At13,kmul(J33L,PDstandardNth3At13)));
- JacPDstandardNth3At22 = J13L*PDstandardNth1At22 +
- J23L*PDstandardNth2At22 + J33L*PDstandardNth3At22;
+ JacPDstandardNth3At22 =
+ kmadd(J13L,PDstandardNth1At22,kmadd(J23L,PDstandardNth2At22,kmul(J33L,PDstandardNth3At22)));
- JacPDstandardNth3At23 = J13L*PDstandardNth1At23 +
- J23L*PDstandardNth2At23 + J33L*PDstandardNth3At23;
+ JacPDstandardNth3At23 =
+ kmadd(J13L,PDstandardNth1At23,kmadd(J23L,PDstandardNth2At23,kmul(J33L,PDstandardNth3At23)));
- JacPDstandardNth3At33 = J13L*PDstandardNth1At33 +
- J23L*PDstandardNth2At33 + J33L*PDstandardNth3At33;
+ JacPDstandardNth3At33 =
+ kmadd(J13L,PDstandardNth1At33,kmadd(J23L,PDstandardNth2At33,kmul(J33L,PDstandardNth3At33)));
- JacPDstandardNth3gt11 = J13L*PDstandardNth1gt11 +
- J23L*PDstandardNth2gt11 + J33L*PDstandardNth3gt11;
+ JacPDstandardNth3gt11 =
+ kmadd(J13L,PDstandardNth1gt11,kmadd(J23L,PDstandardNth2gt11,kmul(J33L,PDstandardNth3gt11)));
- JacPDstandardNth3gt12 = J13L*PDstandardNth1gt12 +
- J23L*PDstandardNth2gt12 + J33L*PDstandardNth3gt12;
+ JacPDstandardNth3gt12 =
+ kmadd(J13L,PDstandardNth1gt12,kmadd(J23L,PDstandardNth2gt12,kmul(J33L,PDstandardNth3gt12)));
- JacPDstandardNth3gt13 = J13L*PDstandardNth1gt13 +
- J23L*PDstandardNth2gt13 + J33L*PDstandardNth3gt13;
+ JacPDstandardNth3gt13 =
+ kmadd(J13L,PDstandardNth1gt13,kmadd(J23L,PDstandardNth2gt13,kmul(J33L,PDstandardNth3gt13)));
- JacPDstandardNth3gt22 = J13L*PDstandardNth1gt22 +
- J23L*PDstandardNth2gt22 + J33L*PDstandardNth3gt22;
+ JacPDstandardNth3gt22 =
+ kmadd(J13L,PDstandardNth1gt22,kmadd(J23L,PDstandardNth2gt22,kmul(J33L,PDstandardNth3gt22)));
- JacPDstandardNth3gt23 = J13L*PDstandardNth1gt23 +
- J23L*PDstandardNth2gt23 + J33L*PDstandardNth3gt23;
+ JacPDstandardNth3gt23 =
+ kmadd(J13L,PDstandardNth1gt23,kmadd(J23L,PDstandardNth2gt23,kmul(J33L,PDstandardNth3gt23)));
- JacPDstandardNth3gt33 = J13L*PDstandardNth1gt33 +
- J23L*PDstandardNth2gt33 + J33L*PDstandardNth3gt33;
+ JacPDstandardNth3gt33 =
+ kmadd(J13L,PDstandardNth1gt33,kmadd(J23L,PDstandardNth2gt33,kmul(J33L,PDstandardNth3gt33)));
- JacPDstandardNth3phi = J13L*PDstandardNth1phi + J23L*PDstandardNth2phi
- + J33L*PDstandardNth3phi;
+ JacPDstandardNth3phi =
+ kmadd(J13L,PDstandardNth1phi,kmadd(J23L,PDstandardNth2phi,kmul(J33L,PDstandardNth3phi)));
- JacPDstandardNth3trK = J13L*PDstandardNth1trK + J23L*PDstandardNth2trK
- + J33L*PDstandardNth3trK;
+ JacPDstandardNth3trK =
+ kmadd(J13L,PDstandardNth1trK,kmadd(J23L,PDstandardNth2trK,kmul(J33L,PDstandardNth3trK)));
}
else
{
@@ -540,195 +773,221 @@ static void ML_BSSN_MP_O8_constraints2_Body(cGH const * restrict const cctkGH, i
JacPDstandardNth3trK = PDstandardNth3trK;
}
- CCTK_REAL detgt = 1;
+ 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 gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L));
+ CCTK_REAL_VEC Gtl123 =
+ kmul(kadd(JacPDstandardNth2gt13,ksub(JacPDstandardNth3gt12,JacPDstandardNth1gt23)),ToReal(0.5));
- CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt);
+ CCTK_REAL_VEC Gtl133 =
+ kmadd(JacPDstandardNth1gt33,ToReal(-0.5),JacPDstandardNth3gt13);
- CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC Gtl211 =
+ kmadd(JacPDstandardNth2gt11,ToReal(-0.5),JacPDstandardNth1gt12);
- CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L));
+ CCTK_REAL_VEC Gtl212 = kmul(JacPDstandardNth1gt22,ToReal(0.5));
- CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC Gtl213 =
+ kmul(kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth3gt12,JacPDstandardNth2gt13)),ToReal(0.5));
- CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L));
+ CCTK_REAL_VEC Gtl222 = kmul(JacPDstandardNth2gt22,ToReal(0.5));
- CCTK_REAL Gtl111 = 0.5*JacPDstandardNth1gt11;
+ CCTK_REAL_VEC Gtl223 = kmul(JacPDstandardNth3gt22,ToReal(0.5));
- CCTK_REAL Gtl112 = 0.5*JacPDstandardNth2gt11;
+ CCTK_REAL_VEC Gtl233 =
+ kmadd(JacPDstandardNth2gt33,ToReal(-0.5),JacPDstandardNth3gt23);
- CCTK_REAL Gtl113 = 0.5*JacPDstandardNth3gt11;
+ CCTK_REAL_VEC Gtl311 =
+ kmadd(JacPDstandardNth3gt11,ToReal(-0.5),JacPDstandardNth1gt13);
- CCTK_REAL Gtl122 = -0.5*JacPDstandardNth1gt22 + JacPDstandardNth2gt12;
+ CCTK_REAL_VEC Gtl312 =
+ kmul(kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth2gt13,JacPDstandardNth3gt12)),ToReal(0.5));
- CCTK_REAL Gtl123 = 0.5*(-JacPDstandardNth1gt23 + JacPDstandardNth2gt13
- + JacPDstandardNth3gt12);
+ CCTK_REAL_VEC Gtl313 = kmul(JacPDstandardNth1gt33,ToReal(0.5));
- CCTK_REAL Gtl133 = -0.5*JacPDstandardNth1gt33 + JacPDstandardNth3gt13;
+ CCTK_REAL_VEC Gtl322 =
+ kmadd(JacPDstandardNth3gt22,ToReal(-0.5),JacPDstandardNth2gt23);
- CCTK_REAL Gtl211 = JacPDstandardNth1gt12 - 0.5*JacPDstandardNth2gt11;
+ CCTK_REAL_VEC Gtl323 = kmul(JacPDstandardNth2gt33,ToReal(0.5));
- CCTK_REAL Gtl212 = 0.5*JacPDstandardNth1gt22;
+ CCTK_REAL_VEC Gtl333 = kmul(JacPDstandardNth3gt33,ToReal(0.5));
- CCTK_REAL Gtl213 = 0.5*(JacPDstandardNth1gt23 - JacPDstandardNth2gt13
- + JacPDstandardNth3gt12);
+ CCTK_REAL_VEC Gt111 =
+ kmadd(Gtl111,gtu11,kmadd(Gtl211,gtu12,kmul(Gtl311,gtu13)));
- CCTK_REAL Gtl222 = 0.5*JacPDstandardNth2gt22;
+ CCTK_REAL_VEC Gt211 =
+ kmadd(Gtl111,gtu12,kmadd(Gtl211,gtu22,kmul(Gtl311,gtu23)));
- CCTK_REAL Gtl223 = 0.5*JacPDstandardNth3gt22;
+ CCTK_REAL_VEC Gt311 =
+ kmadd(Gtl111,gtu13,kmadd(Gtl211,gtu23,kmul(Gtl311,gtu33)));
- CCTK_REAL Gtl233 = -0.5*JacPDstandardNth2gt33 + JacPDstandardNth3gt23;
+ CCTK_REAL_VEC Gt112 =
+ kmadd(Gtl112,gtu11,kmadd(Gtl212,gtu12,kmul(Gtl312,gtu13)));
- CCTK_REAL Gtl311 = JacPDstandardNth1gt13 - 0.5*JacPDstandardNth3gt11;
+ CCTK_REAL_VEC Gt212 =
+ kmadd(Gtl112,gtu12,kmadd(Gtl212,gtu22,kmul(Gtl312,gtu23)));
- CCTK_REAL Gtl312 = 0.5*(JacPDstandardNth1gt23 + JacPDstandardNth2gt13
- - JacPDstandardNth3gt12);
+ CCTK_REAL_VEC Gt312 =
+ kmadd(Gtl112,gtu13,kmadd(Gtl212,gtu23,kmul(Gtl312,gtu33)));
- CCTK_REAL Gtl313 = 0.5*JacPDstandardNth1gt33;
+ CCTK_REAL_VEC Gt113 =
+ kmadd(Gtl113,gtu11,kmadd(Gtl213,gtu12,kmul(Gtl313,gtu13)));
- CCTK_REAL Gtl322 = JacPDstandardNth2gt23 - 0.5*JacPDstandardNth3gt22;
+ CCTK_REAL_VEC Gt213 =
+ kmadd(Gtl113,gtu12,kmadd(Gtl213,gtu22,kmul(Gtl313,gtu23)));
- CCTK_REAL Gtl323 = 0.5*JacPDstandardNth2gt33;
+ CCTK_REAL_VEC Gt313 =
+ kmadd(Gtl113,gtu13,kmadd(Gtl213,gtu23,kmul(Gtl313,gtu33)));
- CCTK_REAL Gtl333 = 0.5*JacPDstandardNth3gt33;
+ CCTK_REAL_VEC Gt122 =
+ kmadd(Gtl122,gtu11,kmadd(Gtl222,gtu12,kmul(Gtl322,gtu13)));
- CCTK_REAL Gt111 = Gtl111*gtu11 + Gtl211*gtu12 + Gtl311*gtu13;
+ CCTK_REAL_VEC Gt222 =
+ kmadd(Gtl122,gtu12,kmadd(Gtl222,gtu22,kmul(Gtl322,gtu23)));
- CCTK_REAL Gt211 = Gtl111*gtu12 + Gtl211*gtu22 + Gtl311*gtu23;
+ CCTK_REAL_VEC Gt322 =
+ kmadd(Gtl122,gtu13,kmadd(Gtl222,gtu23,kmul(Gtl322,gtu33)));
- CCTK_REAL Gt311 = Gtl111*gtu13 + Gtl211*gtu23 + Gtl311*gtu33;
+ CCTK_REAL_VEC Gt123 =
+ kmadd(Gtl123,gtu11,kmadd(Gtl223,gtu12,kmul(Gtl323,gtu13)));
- CCTK_REAL Gt112 = Gtl112*gtu11 + Gtl212*gtu12 + Gtl312*gtu13;
+ CCTK_REAL_VEC Gt223 =
+ kmadd(Gtl123,gtu12,kmadd(Gtl223,gtu22,kmul(Gtl323,gtu23)));
- CCTK_REAL Gt212 = Gtl112*gtu12 + Gtl212*gtu22 + Gtl312*gtu23;
+ CCTK_REAL_VEC Gt323 =
+ kmadd(Gtl123,gtu13,kmadd(Gtl223,gtu23,kmul(Gtl323,gtu33)));
- CCTK_REAL Gt312 = Gtl112*gtu13 + Gtl212*gtu23 + Gtl312*gtu33;
+ CCTK_REAL_VEC Gt133 =
+ kmadd(Gtl133,gtu11,kmadd(Gtl233,gtu12,kmul(Gtl333,gtu13)));
- CCTK_REAL Gt113 = Gtl113*gtu11 + Gtl213*gtu12 + Gtl313*gtu13;
+ CCTK_REAL_VEC Gt233 =
+ kmadd(Gtl133,gtu12,kmadd(Gtl233,gtu22,kmul(Gtl333,gtu23)));
- CCTK_REAL Gt213 = Gtl113*gtu12 + Gtl213*gtu22 + Gtl313*gtu23;
+ CCTK_REAL_VEC Gt333 =
+ kmadd(Gtl133,gtu13,kmadd(Gtl233,gtu23,kmul(Gtl333,gtu33)));
- CCTK_REAL Gt313 = Gtl113*gtu13 + Gtl213*gtu23 + Gtl313*gtu33;
+ CCTK_REAL_VEC fac1 =
+ IfThen(conformalMethod,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
- CCTK_REAL Gt122 = Gtl122*gtu11 + Gtl222*gtu12 + Gtl322*gtu13;
+ CCTK_REAL_VEC cdphi1 = kmul(fac1,JacPDstandardNth1phi);
- CCTK_REAL Gt222 = Gtl122*gtu12 + Gtl222*gtu22 + Gtl322*gtu23;
+ CCTK_REAL_VEC cdphi2 = kmul(fac1,JacPDstandardNth2phi);
- CCTK_REAL Gt322 = Gtl122*gtu13 + Gtl222*gtu23 + Gtl322*gtu33;
+ CCTK_REAL_VEC cdphi3 = kmul(fac1,JacPDstandardNth3phi);
- CCTK_REAL Gt123 = Gtl123*gtu11 + Gtl223*gtu12 + Gtl323*gtu13;
+ CCTK_REAL_VEC S1 =
+ kmul(INV(alphaL),kmadd(beta1L,eTxxL,kmadd(beta2L,eTxyL,kmsub(beta3L,eTxzL,eTtxL))));
- CCTK_REAL Gt223 = Gtl123*gtu12 + Gtl223*gtu22 + Gtl323*gtu23;
+ CCTK_REAL_VEC S2 =
+ kmul(INV(alphaL),kmadd(beta1L,eTxyL,kmadd(beta2L,eTyyL,kmsub(beta3L,eTyzL,eTtyL))));
- CCTK_REAL Gt323 = Gtl123*gtu13 + Gtl223*gtu23 + Gtl323*gtu33;
+ CCTK_REAL_VEC S3 =
+ kmul(INV(alphaL),kmadd(beta1L,eTxzL,kmadd(beta2L,eTyzL,kmsub(beta3L,eTzzL,eTtzL))));
- CCTK_REAL Gt133 = Gtl133*gtu11 + Gtl233*gtu12 + Gtl333*gtu13;
+ CCTK_REAL_VEC M1L =
+ kmadd(gtu11,JacPDstandardNth1At11,kmadd(gtu22,JacPDstandardNth2At12,kmadd(gtu23,kadd(JacPDstandardNth2At13,JacPDstandardNth3At12),kmadd(gtu33,JacPDstandardNth3At13,kmadd(S1,ToReal(-25.13274122871834590770114706623602307358),kmadd(kmadd(kmadd(At22L,Gt212,kmul(At23L,Gt312)),gtu22,kmadd(kmadd(At13L,Gt112,kmadd(At22L,Gt213,kmadd(At33L,Gt312,kmul(At23L,kadd(Gt212,Gt313))))),gtu23,kmul(kmadd(At13L,Gt113,kmadd(At23L,Gt213,kmul(At33L,Gt313))),gtu33))),ToReal(-1.),kmadd(gtu12,kadd(JacPDstandardNth1At12,kadd(JacPDstandardNth2At11,kmadd(At13L,kmul(Gt312,ToReal(-3.)),kmul(At22L,kmul(Gt211,ToReal(-1.)))))),kmadd(gtu13,kadd(JacPDstandardNth1At13,kadd(JacPDstandardNth3At11,kmadd(At13L,kmul(Gt313,ToReal(-3.)),kmul(At23L,kmul(Gt211,ToReal(-1.)))))),kmadd(Gt311,kmadd(At13L,kmul(gtu11,ToReal(-2.)),kmul(kmadd(At23L,gtu12,kmul(At33L,gtu13)),ToReal(-1.))),kmadd(JacPDstandardNth1trK,ToReal(-0.6666666666666666666666666666666666666667),kmadd(At13L,kmadd(kmadd(Gt322,gtu22,kmul(Gt333,gtu33)),ToReal(-1.),kmadd(cdphi3,kmul(gtu33,ToReal(6.)),kmadd(gtu13,kmadd(Gt111,ToReal(-1.),kmul(cdphi1,ToReal(6.))),kmul(gtu23,kmadd(Gt323,ToReal(-2.),kmul(cdphi2,ToReal(6.))))))),kmadd(At11L,kmadd(Gt123,kmul(gtu23,ToReal(-2.)),kmadd(kmadd(Gt122,gtu22,kmul(Gt133,gtu33)),ToReal(-1.),kmadd(gtu11,kmadd(Gt111,ToReal(-2.),kmul(cdphi1,ToReal(6.))),kmadd(gtu12,kmadd(Gt112,ToReal(-3.),kmul(cdphi2,ToReal(6.))),kmul(gtu13,kmadd(Gt113,ToReal(-3.),kmul(cdphi3,ToReal(6.)))))))),kmul(At12L,kmadd(Gt213,kmul(gtu13,ToReal(-3.)),kmadd(kmadd(Gt211,gtu11,kmul(Gt223,gtu23)),ToReal(-2.),kmadd(Gt233,kmul(gtu33,ToReal(-1.)),kmadd(gtu12,kmadd(Gt212,ToReal(-3.),kmadd(Gt111,ToReal(-1.),kmul(cdphi1,ToReal(6.)))),kmadd(gtu22,kmadd(kadd(Gt112,Gt222),ToReal(-1.),kmul(cdphi2,ToReal(6.))),kmul(gtu23,kmadd(Gt113,ToReal(-1.),kmul(cdphi3,ToReal(6.))))))))))))))))))))));
- CCTK_REAL Gt233 = Gtl133*gtu12 + Gtl233*gtu22 + Gtl333*gtu23;
+ CCTK_REAL_VEC M2L =
+ kmadd(gtu11,JacPDstandardNth1At12,kmadd(gtu12,kadd(JacPDstandardNth1At22,JacPDstandardNth2At12),kmadd(gtu22,JacPDstandardNth2At22,kmadd(gtu33,JacPDstandardNth3At23,kmadd(S2,ToReal(-25.13274122871834590770114706623602307358),kmadd(kmadd(kmadd(At22L,Gt211,kmadd(At23L,Gt311,kmul(At13L,Gt312))),gtu11,kmadd(kmadd(At23L,Gt212,kmul(At33L,Gt312)),gtu13,kmadd(At11L,kmadd(Gt112,gtu11,kmadd(Gt122,gtu12,kmul(Gt123,gtu13))),kmadd(kmadd(At23L,Gt223,kmul(At33L,Gt323)),gtu33,kmul(At13L,kmadd(Gt322,gtu12,kmadd(Gt112,gtu13,kmadd(Gt122,gtu23,kmul(Gt123,gtu33))))))))),ToReal(-1.),kmadd(gtu23,kadd(JacPDstandardNth2At23,kadd(JacPDstandardNth3At22,kmadd(kmadd(At22L,Gt223,kmul(At23L,Gt323)),ToReal(-3.),kmul(kmadd(At23L,Gt222,kmul(At33L,Gt322)),ToReal(-1.))))),kmadd(gtu13,kadd(JacPDstandardNth1At23,kadd(JacPDstandardNth3At12,kmadd(At23L,kmul(Gt313,ToReal(-2.)),kmul(At13L,kmul(Gt323,ToReal(-1.)))))),kmadd(JacPDstandardNth2trK,ToReal(-0.6666666666666666666666666666666666666667),kmadd(At23L,kmadd(Gt312,kmul(gtu12,ToReal(-3.)),kmadd(Gt322,kmul(gtu22,ToReal(-2.)),kmadd(Gt333,kmul(gtu33,ToReal(-1.)),kmul(kmadd(cdphi1,gtu13,kmadd(cdphi2,gtu23,kmul(cdphi3,gtu33))),ToReal(6.))))),kmadd(At22L,kmadd(kmadd(Gt213,gtu13,kmul(Gt222,gtu22)),ToReal(-2.),kmadd(Gt233,kmul(gtu33,ToReal(-1.)),kmadd(kmadd(cdphi2,gtu22,kmul(cdphi3,gtu23)),ToReal(6.),kmul(gtu12,kmadd(Gt212,ToReal(-3.),kmul(cdphi1,ToReal(6.))))))),kmul(At12L,kmadd(Gt123,kmul(gtu23,ToReal(-3.)),kmadd(Gt122,kmul(gtu22,ToReal(-2.)),kmadd(Gt133,kmul(gtu33,ToReal(-1.)),kmadd(gtu11,kmadd(kadd(Gt111,Gt212),ToReal(-1.),kmul(cdphi1,ToReal(6.))),kmadd(gtu12,kmadd(Gt112,ToReal(-3.),kmadd(Gt222,ToReal(-1.),kmul(cdphi2,ToReal(6.)))),kmul(gtu13,kmadd(Gt113,ToReal(-2.),kmadd(Gt223,ToReal(-1.),kmul(cdphi3,ToReal(6.))))))))))))))))))))));
- CCTK_REAL Gt333 = Gtl133*gtu13 + Gtl233*gtu23 + Gtl333*gtu33;
+ CCTK_REAL_VEC M3L =
+ kmadd(gtu11,JacPDstandardNth1At13,kmadd(gtu22,JacPDstandardNth2At23,kmadd(gtu13,kadd(JacPDstandardNth1At33,JacPDstandardNth3At13),kmadd(gtu33,JacPDstandardNth3At33,kmadd(S3,ToReal(-25.13274122871834590770114706623602307358),kmadd(kmadd(kmadd(At23L,Gt211,kmadd(At12L,Gt213,kmul(At33L,Gt311))),gtu11,kmadd(kmadd(At22L,Gt213,kmul(At12L,kadd(Gt113,Gt223))),gtu12,kmadd(At11L,kmadd(Gt113,gtu11,kmadd(Gt123,gtu12,kmul(Gt133,gtu13))),kmadd(kmadd(At23L,Gt222,kmul(At22L,Gt223)),gtu22,kmul(At12L,kmadd(Gt233,gtu13,kmadd(Gt123,gtu22,kmul(Gt133,gtu23)))))))),ToReal(-1.),kmadd(gtu12,kadd(JacPDstandardNth1At23,kadd(JacPDstandardNth2At13,kmadd(At33L,kmul(Gt312,ToReal(-2.)),kmul(At23L,kmul(Gt313,ToReal(-1.)))))),kmadd(gtu23,kadd(JacPDstandardNth2At33,kadd(JacPDstandardNth3At23,kmadd(kmadd(At23L,Gt223,kmul(At33L,Gt323)),ToReal(-3.),kmul(kmadd(At22L,Gt233,kmul(At23L,Gt333)),ToReal(-1.))))),kmadd(JacPDstandardNth3trK,ToReal(-0.6666666666666666666666666666666666666667),kmadd(At33L,kmadd(Gt333,kmul(gtu33,ToReal(-2.)),kmadd(Gt322,kmul(gtu22,ToReal(-1.)),kmadd(kmadd(cdphi2,gtu23,kmul(cdphi3,gtu33)),ToReal(6.),kmul(gtu13,kmadd(Gt313,ToReal(-3.),kmul(cdphi1,ToReal(6.))))))),kmadd(At23L,kmadd(Gt213,kmul(gtu13,ToReal(-3.)),kmadd(Gt233,kmul(gtu33,ToReal(-2.)),kmadd(cdphi3,kmul(gtu23,ToReal(6.)),kmadd(gtu12,kmadd(Gt212,ToReal(-2.),kmul(cdphi1,ToReal(6.))),kmul(gtu22,kmadd(Gt323,ToReal(-1.),kmul(cdphi2,ToReal(6.)))))))),kmul(At13L,kmadd(Gt123,kmul(gtu23,ToReal(-3.)),kmadd(Gt133,kmul(gtu33,ToReal(-2.)),kmadd(Gt122,kmul(gtu22,ToReal(-1.)),kmadd(gtu11,kmadd(kadd(Gt111,Gt313),ToReal(-1.),kmul(cdphi1,ToReal(6.))),kmadd(gtu12,kmadd(Gt112,ToReal(-2.),kmadd(Gt323,ToReal(-1.),kmul(cdphi2,ToReal(6.)))),kmul(gtu13,kmadd(Gt113,ToReal(-3.),kmadd(Gt333,ToReal(-1.),kmul(cdphi3,ToReal(6.))))))))))))))))))))));
- CCTK_REAL fac1 = IfThen(conformalMethod,-0.5*INV(phiL),1);
+ CCTK_REAL_VEC cSL = klog(detgt);
- CCTK_REAL cdphi1 = fac1*JacPDstandardNth1phi;
+ 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 cdphi2 = fac1*JacPDstandardNth2phi;
+ 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 cdphi3 = fac1*JacPDstandardNth3phi;
+ 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 S1 = (-eTtxL + beta1L*eTxxL + beta2L*eTxyL +
- beta3L*eTxzL)*INV(alphaL);
+ 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)))));
- CCTK_REAL S2 = (-eTtyL + beta1L*eTxyL + beta2L*eTyyL +
- beta3L*eTyzL)*INV(alphaL);
+ /* If necessary, store only partial vectors after the first iteration */
- CCTK_REAL S3 = (-eTtzL + beta1L*eTxzL + beta2L*eTyzL +
- beta3L*eTzzL)*INV(alphaL);
+ 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(cA[index],cAL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(cS[index],cSL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(cXt1[index],cXt1L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(cXt2[index],cXt2L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(cXt3[index],cXt3L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(M1[index],M1L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(M2[index],M2L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(M3[index],M3L,elt_count_lo,elt_count_hi);
+ break;
+ }
- CCTK_REAL M1L = Gt311*(-2.*At13L*gtu11 - 1.*(At23L*gtu12 +
- At33L*gtu13)) + At12L*((6.*cdphi1 - 1.*Gt111 - 3.*Gt212)*gtu12 -
- 3.*Gt213*gtu13 + (6.*cdphi2 - 1.*(Gt112 + Gt222))*gtu22 + (6.*cdphi3 -
- 1.*Gt113)*gtu23 - 2.*(Gt211*gtu11 + Gt223*gtu23) - 1.*Gt233*gtu33) -
- 1.*((At22L*Gt212 + At23L*Gt312)*gtu22 + (At13L*Gt112 + At22L*Gt213 +
- At33L*Gt312 + At23L*(Gt212 + Gt313))*gtu23 + (At13L*Gt113 + At23L*Gt213
- + At33L*Gt313)*gtu33) + At11L*((6.*cdphi1 - 2.*Gt111)*gtu11 +
- (6.*cdphi2 - 3.*Gt112)*gtu12 + (6.*cdphi3 - 3.*Gt113)*gtu13 -
- 2.*Gt123*gtu23 - 1.*(Gt122*gtu22 + Gt133*gtu33)) + At13L*((6.*cdphi1 -
- 1.*Gt111)*gtu13 + (6.*cdphi2 - 2.*Gt323)*gtu23 + 6.*cdphi3*gtu33 -
- 1.*(Gt322*gtu22 + Gt333*gtu33)) + gtu11*JacPDstandardNth1At11 -
- 0.6666666666666666666666666666666666666667*JacPDstandardNth1trK +
- gtu12*(-1.*At22L*Gt211 - 3.*At13L*Gt312 + JacPDstandardNth1At12 +
- JacPDstandardNth2At11) + gtu22*JacPDstandardNth2At12 +
- gtu13*(-1.*At23L*Gt211 - 3.*At13L*Gt313 + JacPDstandardNth1At13 +
- JacPDstandardNth3At11) + gtu23*(JacPDstandardNth2At13 +
- JacPDstandardNth3At12) + gtu33*JacPDstandardNth3At13 -
- 25.13274122871834590770114706623602307358*S1;
+ /* 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(cA[index],cAL,elt_count);
+ vec_store_nta_partial_hi(cS[index],cSL,elt_count);
+ vec_store_nta_partial_hi(cXt1[index],cXt1L,elt_count);
+ vec_store_nta_partial_hi(cXt2[index],cXt2L,elt_count);
+ vec_store_nta_partial_hi(cXt3[index],cXt3L,elt_count);
+ vec_store_nta_partial_hi(M1[index],M1L,elt_count);
+ vec_store_nta_partial_hi(M2[index],M2L,elt_count);
+ vec_store_nta_partial_hi(M3[index],M3L,elt_count);
+ continue;
+ }
- CCTK_REAL M2L = At12L*((6.*cdphi1 - 1.*(Gt111 + Gt212))*gtu11 +
- (6.*cdphi2 - 3.*Gt112 - 1.*Gt222)*gtu12 + (6.*cdphi3 - 2.*Gt113 -
- 1.*Gt223)*gtu13 - 2.*Gt122*gtu22 - 3.*Gt123*gtu23 - 1.*Gt133*gtu33) +
- At22L*((6.*cdphi1 - 3.*Gt212)*gtu12 - 2.*(Gt213*gtu13 + Gt222*gtu22) +
- 6.*(cdphi2*gtu22 + cdphi3*gtu23) - 1.*Gt233*gtu33) +
- At23L*(-3.*Gt312*gtu12 - 2.*Gt322*gtu22 - 1.*Gt333*gtu33 +
- 6.*(cdphi1*gtu13 + cdphi2*gtu23 + cdphi3*gtu33)) - 1.*((At22L*Gt211 +
- At23L*Gt311 + At13L*Gt312)*gtu11 + (At23L*Gt212 + At33L*Gt312)*gtu13 +
- At11L*(Gt112*gtu11 + Gt122*gtu12 + Gt123*gtu13) + (At23L*Gt223 +
- At33L*Gt323)*gtu33 + At13L*(Gt322*gtu12 + Gt112*gtu13 + Gt122*gtu23 +
- Gt123*gtu33)) + gtu11*JacPDstandardNth1At12 +
- gtu12*(JacPDstandardNth1At22 + JacPDstandardNth2At12) +
- gtu22*JacPDstandardNth2At22 -
- 0.6666666666666666666666666666666666666667*JacPDstandardNth2trK +
- gtu13*(-2.*At23L*Gt313 - 1.*At13L*Gt323 + JacPDstandardNth1At23 +
- JacPDstandardNth3At12) + gtu23*(-1.*(At23L*Gt222 + At33L*Gt322) -
- 3.*(At22L*Gt223 + At23L*Gt323) + JacPDstandardNth2At23 +
- JacPDstandardNth3At22) + gtu33*JacPDstandardNth3At23 -
- 25.13274122871834590770114706623602307358*S2;
+ /* If necessary, store only partial vectors after the last iteration */
- CCTK_REAL M3L = -1.*((At23L*Gt211 + At12L*Gt213 + At33L*Gt311)*gtu11 +
- (At22L*Gt213 + At12L*(Gt113 + Gt223))*gtu12 + At11L*(Gt113*gtu11 +
- Gt123*gtu12 + Gt133*gtu13) + (At23L*Gt222 + At22L*Gt223)*gtu22 +
- At12L*(Gt233*gtu13 + Gt123*gtu22 + Gt133*gtu23)) + At13L*((6.*cdphi1 -
- 1.*(Gt111 + Gt313))*gtu11 + (6.*cdphi2 - 2.*Gt112 - 1.*Gt323)*gtu12 +
- (6.*cdphi3 - 3.*Gt113 - 1.*Gt333)*gtu13 - 1.*Gt122*gtu22 -
- 3.*Gt123*gtu23 - 2.*Gt133*gtu33) + At23L*((6.*cdphi1 - 2.*Gt212)*gtu12
- - 3.*Gt213*gtu13 + (6.*cdphi2 - 1.*Gt323)*gtu22 + 6.*cdphi3*gtu23 -
- 2.*Gt233*gtu33) + At33L*((6.*cdphi1 - 3.*Gt313)*gtu13 - 1.*Gt322*gtu22
- - 2.*Gt333*gtu33 + 6.*(cdphi2*gtu23 + cdphi3*gtu33)) +
- gtu11*JacPDstandardNth1At13 + gtu12*(-2.*At33L*Gt312 - 1.*At23L*Gt313 +
- JacPDstandardNth1At23 + JacPDstandardNth2At13) +
- gtu22*JacPDstandardNth2At23 + gtu13*(JacPDstandardNth1At33 +
- JacPDstandardNth3At13) + gtu23*(-3.*(At23L*Gt223 + At33L*Gt323) -
- 1.*(At22L*Gt233 + At23L*Gt333) + JacPDstandardNth2At33 +
- JacPDstandardNth3At23) + gtu33*JacPDstandardNth3At33 -
- 0.6666666666666666666666666666666666666667*JacPDstandardNth3trK -
- 25.13274122871834590770114706623602307358*S3;
-
- CCTK_REAL cSL = Log(detgt);
-
- CCTK_REAL cXt1L = Gt111*gtu11 + Gt122*gtu22 + 2*(Gt112*gtu12 +
- Gt113*gtu13 + Gt123*gtu23) + Gt133*gtu33 - Xt1L;
-
- CCTK_REAL cXt2L = Gt211*gtu11 + Gt222*gtu22 + 2*(Gt212*gtu12 +
- Gt213*gtu13 + Gt223*gtu23) + Gt233*gtu33 - Xt2L;
-
- CCTK_REAL cXt3L = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu12 +
- Gt313*gtu13 + Gt323*gtu23) + Gt333*gtu33 - Xt3L;
-
- CCTK_REAL cAL = At11L*gtu11 + At22L*gtu22 + 2*(At12L*gtu12 +
- At13L*gtu13 + At23L*gtu23) + At33L*gtu33;
-
- /* Copy local copies back to grid functions */
- cA[index] = cAL;
- cS[index] = cSL;
- cXt1[index] = cXt1L;
- cXt2[index] = cXt2L;
- cXt3[index] = cXt3L;
- M1[index] = M1L;
- M2[index] = M2L;
- M3[index] = M3L;
+ 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(cA[index],cAL,elt_count);
+ vec_store_nta_partial_lo(cS[index],cSL,elt_count);
+ vec_store_nta_partial_lo(cXt1[index],cXt1L,elt_count);
+ vec_store_nta_partial_lo(cXt2[index],cXt2L,elt_count);
+ vec_store_nta_partial_lo(cXt3[index],cXt3L,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(cA[index],cAL);
+ vec_store_nta(cS[index],cSL);
+ vec_store_nta(cXt1[index],cXt1L);
+ vec_store_nta(cXt2[index],cXt2L);
+ vec_store_nta(cXt3[index],cXt3L);
+ vec_store_nta(M1[index],M1L);
+ vec_store_nta(M2[index],M2L);
+ vec_store_nta(M3[index],M3L);
}
- LC_ENDLOOP3 (ML_BSSN_MP_O8_constraints2);
+ LC_ENDLOOP3VEC (ML_BSSN_MP_O8_constraints2);
}
extern "C" void ML_BSSN_MP_O8_constraints2(CCTK_ARGUMENTS)
@@ -736,5 +995,43 @@ extern "C" void ML_BSSN_MP_O8_constraints2(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_O8_constraints2_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_MP_O8_constraints2_calc_every != ML_BSSN_MP_O8_constraints2_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN_MP_O8::ML_cons_detg","ML_BSSN_MP_O8::ML_cons_Gamma","ML_BSSN_MP_O8::ML_cons_traceA","ML_BSSN_MP_O8::ML_curv","ML_BSSN_MP_O8::ML_Gamma","ML_BSSN_MP_O8::ML_lapse","ML_BSSN_MP_O8::ML_log_confac","ML_BSSN_MP_O8::ML_metric","ML_BSSN_MP_O8::ML_mom","ML_BSSN_MP_O8::ML_shift","ML_BSSN_MP_O8::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_O8_constraints2", 11, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_O8_constraints2", 1, 1, 1);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_O8_constraints2", 2, 2, 2);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_O8_constraints2", 3, 3, 3);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_O8_constraints2", 4, 4, 4);
+ break;
+ }
+
GenericFD_LoopOverInterior(cctkGH, &ML_BSSN_MP_O8_constraints2_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_MP_O8_constraints2_Body");
+ }
}
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 ecd4195..667a19d 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
@@ -13,15 +13,16 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
-static void ML_BSSN_MP_O8_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_MP_O8_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;
@@ -29,20 +30,6 @@ static void ML_BSSN_MP_O8_convertFromADMBase_Body(cGH const * restrict const cct
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_O8_convertFromADMBase_Body");
- }
-
- if (cctk_iteration % ML_BSSN_MP_O8_convertFromADMBase_calc_every != ML_BSSN_MP_O8_convertFromADMBase_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ADMBase::curv","ADMBase::lapse","ADMBase::metric","ADMBase::shift","ML_BSSN_MP_O8::ML_curv","ML_BSSN_MP_O8::ML_lapse","ML_BSSN_MP_O8::ML_log_confac","ML_BSSN_MP_O8::ML_metric","ML_BSSN_MP_O8::ML_shift","ML_BSSN_MP_O8::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_O8_convertFromADMBase", 10, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -52,47 +39,102 @@ static void ML_BSSN_MP_O8_convertFromADMBase_Body(cGH const * restrict const cct
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o1024dx = 0.0009765625*INV(dx);
- CCTK_REAL const p1o1024dy = 0.0009765625*INV(dy);
- CCTK_REAL const p1o1024dz = 0.0009765625*INV(dz);
- CCTK_REAL const p1o1680dx = 0.000595238095238095238095238095238*INV(dx);
- CCTK_REAL const p1o1680dy = 0.000595238095238095238095238095238*INV(dy);
- CCTK_REAL const p1o1680dz = 0.000595238095238095238095238095238*INV(dz);
- CCTK_REAL const p1o5040dx2 = 0.000198412698412698412698412698413*INV(SQR(dx));
- CCTK_REAL const p1o5040dy2 = 0.000198412698412698412698412698413*INV(SQR(dy));
- CCTK_REAL const p1o5040dz2 = 0.000198412698412698412698412698413*INV(SQR(dz));
- CCTK_REAL const p1o560dx = 0.00178571428571428571428571428571*INV(dx);
- CCTK_REAL const p1o560dy = 0.00178571428571428571428571428571*INV(dy);
- CCTK_REAL const p1o560dz = 0.00178571428571428571428571428571*INV(dz);
- CCTK_REAL const p1o705600dxdy = 1.41723356009070294784580498866e-6*INV(dx)*INV(dy);
- CCTK_REAL const p1o705600dxdz = 1.41723356009070294784580498866e-6*INV(dx)*INV(dz);
- CCTK_REAL const p1o705600dydz = 1.41723356009070294784580498866e-6*INV(dy)*INV(dz);
- CCTK_REAL const p1o840dx = 0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const p1o840dy = 0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const p1o840dz = 0.00119047619047619047619047619048*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o840dx = -0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const pm1o840dy = -0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const pm1o840dz = -0.00119047619047619047619047619048*INV(dz);
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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)
@@ -139,34 +181,43 @@ static void ML_BSSN_MP_O8_convertFromADMBase_Body(cGH const * restrict const cct
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_LOOP3 (ML_BSSN_MP_O8_convertFromADMBase,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_MP_O8_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 alpL = alp[index];
- CCTK_REAL betaxL = betax[index];
- CCTK_REAL betayL = betay[index];
- CCTK_REAL betazL = betaz[index];
- CCTK_REAL gxxL = gxx[index];
- CCTK_REAL gxyL = gxy[index];
- CCTK_REAL gxzL = gxz[index];
- CCTK_REAL gyyL = gyy[index];
- CCTK_REAL gyzL = gyz[index];
- CCTK_REAL gzzL = gzz[index];
- CCTK_REAL kxxL = kxx[index];
- CCTK_REAL kxyL = kxy[index];
- CCTK_REAL kxzL = kxz[index];
- CCTK_REAL kyyL = kyy[index];
- CCTK_REAL kyzL = kyz[index];
- CCTK_REAL kzzL = kzz[index];
- CCTK_REAL phiL = phi[index];
- CCTK_REAL trKL = trK[index];
+ 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]);
@@ -174,111 +225,203 @@ static void ML_BSSN_MP_O8_convertFromADMBase_Body(cGH const * restrict const cct
/* Precompute derivatives */
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
/* Calculate temporaries and grid functions */
- CCTK_REAL g11 = gxxL;
+ CCTK_REAL_VEC g11 = gxxL;
- CCTK_REAL g12 = gxyL;
+ CCTK_REAL_VEC g12 = gxyL;
- CCTK_REAL g13 = gxzL;
+ CCTK_REAL_VEC g13 = gxzL;
- CCTK_REAL g22 = gyyL;
+ CCTK_REAL_VEC g22 = gyyL;
- CCTK_REAL g23 = gyzL;
+ CCTK_REAL_VEC g23 = gyzL;
- CCTK_REAL g33 = gzzL;
+ CCTK_REAL_VEC g33 = gzzL;
- CCTK_REAL detg = 2*g12*g13*g23 + g33*(g11*g22 - SQR(g12)) -
- g22*SQR(g13) - g11*SQR(g23);
+ 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 gu11 = INV(detg)*(g22*g33 - SQR(g23));
+ CCTK_REAL_VEC gu11 = kmul(INV(detg),kmsub(g22,g33,SQR(g23)));
- CCTK_REAL gu12 = (g13*g23 - g12*g33)*INV(detg);
+ CCTK_REAL_VEC gu12 = kmul(INV(detg),kmsub(g13,g23,kmul(g12,g33)));
- CCTK_REAL gu13 = (-(g13*g22) + g12*g23)*INV(detg);
+ CCTK_REAL_VEC gu13 = kmul(INV(detg),kmsub(g12,g23,kmul(g13,g22)));
- CCTK_REAL gu22 = INV(detg)*(g11*g33 - SQR(g13));
+ CCTK_REAL_VEC gu22 = kmul(INV(detg),kmsub(g11,g33,SQR(g13)));
- CCTK_REAL gu23 = (g12*g13 - g11*g23)*INV(detg);
+ CCTK_REAL_VEC gu23 = kmul(INV(detg),kmsub(g12,g13,kmul(g11,g23)));
- CCTK_REAL gu33 = INV(detg)*(g11*g22 - SQR(g12));
+ CCTK_REAL_VEC gu33 = kmul(INV(detg),kmsub(g11,g22,SQR(g12)));
- CCTK_REAL em4phi;
+ CCTK_REAL_VEC em4phi;
if (conformalMethod)
{
- phiL = pow(detg,-0.166666666666666666666666666667);
+ phiL = kpow(detg,-0.166666666666666666666666666667);
em4phi = SQR(phiL);
}
else
{
- phiL = 0.0833333333333333333333333333333*Log(detg);
+ phiL = kmul(klog(detg),ToReal(0.0833333333333333333333333333333));
- em4phi = exp(-4*phiL);
+ em4phi = kexp(kmul(phiL,ToReal(-4)));
}
- CCTK_REAL gt11L = em4phi*g11;
+ 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);
- CCTK_REAL gt12L = em4phi*g12;
+ trKL =
+ kmadd(gu11,kxxL,kmadd(gu22,kyyL,kmadd(gu33,kzzL,kmul(kmadd(gu12,kxyL,kmadd(gu13,kxzL,kmul(gu23,kyzL))),ToReal(2)))));
- CCTK_REAL gt13L = em4phi*g13;
+ CCTK_REAL_VEC At11L =
+ kmul(em4phi,kmadd(g11,kmul(trKL,ToReal(-0.333333333333333333333333333333)),kxxL));
- CCTK_REAL gt22L = em4phi*g22;
+ CCTK_REAL_VEC At12L =
+ kmul(em4phi,kmadd(g12,kmul(trKL,ToReal(-0.333333333333333333333333333333)),kxyL));
- CCTK_REAL gt23L = em4phi*g23;
+ CCTK_REAL_VEC At13L =
+ kmul(em4phi,kmadd(g13,kmul(trKL,ToReal(-0.333333333333333333333333333333)),kxzL));
- CCTK_REAL gt33L = em4phi*g33;
+ CCTK_REAL_VEC At22L =
+ kmul(em4phi,kmadd(g22,kmul(trKL,ToReal(-0.333333333333333333333333333333)),kyyL));
- trKL = gu11*kxxL + gu22*kyyL + 2*(gu12*kxyL + gu13*kxzL + gu23*kyzL) +
- gu33*kzzL;
+ CCTK_REAL_VEC At23L =
+ kmul(em4phi,kmadd(g23,kmul(trKL,ToReal(-0.333333333333333333333333333333)),kyzL));
- CCTK_REAL At11L = em4phi*(kxxL -
- 0.333333333333333333333333333333*g11*trKL);
+ CCTK_REAL_VEC At33L =
+ kmul(em4phi,kmadd(g33,kmul(trKL,ToReal(-0.333333333333333333333333333333)),kzzL));
- CCTK_REAL At12L = em4phi*(kxyL -
- 0.333333333333333333333333333333*g12*trKL);
+ CCTK_REAL_VEC alphaL = alpL;
- CCTK_REAL At13L = em4phi*(kxzL -
- 0.333333333333333333333333333333*g13*trKL);
+ CCTK_REAL_VEC beta1L = betaxL;
- CCTK_REAL At22L = em4phi*(kyyL -
- 0.333333333333333333333333333333*g22*trKL);
+ CCTK_REAL_VEC beta2L = betayL;
- CCTK_REAL At23L = em4phi*(kyzL -
- 0.333333333333333333333333333333*g23*trKL);
+ CCTK_REAL_VEC beta3L = betazL;
- CCTK_REAL At33L = em4phi*(kzzL -
- 0.333333333333333333333333333333*g33*trKL);
+ /* If necessary, store only partial vectors after the first iteration */
- CCTK_REAL alphaL = alpL;
+ 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(At11[index],At11L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At12[index],At12L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At13[index],At13L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At22[index],At22L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At23[index],At23L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At33[index],At33L,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(gt11[index],gt11L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt12[index],gt12L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt13[index],gt13L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt22[index],gt22L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt23[index],gt23L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt33[index],gt33L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(phi[index],phiL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(trK[index],trKL,elt_count_lo,elt_count_hi);
+ break;
+ }
- CCTK_REAL beta1L = betaxL;
+ /* If necessary, store only partial vectors after the first iteration */
- CCTK_REAL beta2L = betayL;
+ 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(At11[index],At11L,elt_count);
+ vec_store_nta_partial_hi(At12[index],At12L,elt_count);
+ vec_store_nta_partial_hi(At13[index],At13L,elt_count);
+ vec_store_nta_partial_hi(At22[index],At22L,elt_count);
+ vec_store_nta_partial_hi(At23[index],At23L,elt_count);
+ vec_store_nta_partial_hi(At33[index],At33L,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(gt11[index],gt11L,elt_count);
+ vec_store_nta_partial_hi(gt12[index],gt12L,elt_count);
+ vec_store_nta_partial_hi(gt13[index],gt13L,elt_count);
+ vec_store_nta_partial_hi(gt22[index],gt22L,elt_count);
+ vec_store_nta_partial_hi(gt23[index],gt23L,elt_count);
+ vec_store_nta_partial_hi(gt33[index],gt33L,elt_count);
+ vec_store_nta_partial_hi(phi[index],phiL,elt_count);
+ vec_store_nta_partial_hi(trK[index],trKL,elt_count);
+ continue;
+ }
- CCTK_REAL beta3L = betazL;
+ /* If necessary, store only partial vectors after the last iteration */
- /* Copy local copies back to grid functions */
- alpha[index] = alphaL;
- At11[index] = At11L;
- At12[index] = At12L;
- At13[index] = At13L;
- At22[index] = At22L;
- At23[index] = At23L;
- At33[index] = At33L;
- beta1[index] = beta1L;
- beta2[index] = beta2L;
- beta3[index] = beta3L;
- gt11[index] = gt11L;
- gt12[index] = gt12L;
- gt13[index] = gt13L;
- gt22[index] = gt22L;
- gt23[index] = gt23L;
- gt33[index] = gt33L;
- phi[index] = phiL;
- trK[index] = trKL;
+ 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(At11[index],At11L,elt_count);
+ vec_store_nta_partial_lo(At12[index],At12L,elt_count);
+ vec_store_nta_partial_lo(At13[index],At13L,elt_count);
+ vec_store_nta_partial_lo(At22[index],At22L,elt_count);
+ vec_store_nta_partial_lo(At23[index],At23L,elt_count);
+ vec_store_nta_partial_lo(At33[index],At33L,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(gt11[index],gt11L,elt_count);
+ vec_store_nta_partial_lo(gt12[index],gt12L,elt_count);
+ vec_store_nta_partial_lo(gt13[index],gt13L,elt_count);
+ vec_store_nta_partial_lo(gt22[index],gt22L,elt_count);
+ vec_store_nta_partial_lo(gt23[index],gt23L,elt_count);
+ vec_store_nta_partial_lo(gt33[index],gt33L,elt_count);
+ vec_store_nta_partial_lo(phi[index],phiL,elt_count);
+ vec_store_nta_partial_lo(trK[index],trKL,elt_count);
+ break;
+ }
+ vec_store_nta(alpha[index],alphaL);
+ vec_store_nta(At11[index],At11L);
+ vec_store_nta(At12[index],At12L);
+ vec_store_nta(At13[index],At13L);
+ vec_store_nta(At22[index],At22L);
+ vec_store_nta(At23[index],At23L);
+ vec_store_nta(At33[index],At33L);
+ vec_store_nta(beta1[index],beta1L);
+ vec_store_nta(beta2[index],beta2L);
+ vec_store_nta(beta3[index],beta3L);
+ vec_store_nta(gt11[index],gt11L);
+ vec_store_nta(gt12[index],gt12L);
+ vec_store_nta(gt13[index],gt13L);
+ vec_store_nta(gt22[index],gt22L);
+ vec_store_nta(gt23[index],gt23L);
+ vec_store_nta(gt33[index],gt33L);
+ vec_store_nta(phi[index],phiL);
+ vec_store_nta(trK[index],trKL);
}
- LC_ENDLOOP3 (ML_BSSN_MP_O8_convertFromADMBase);
+ LC_ENDLOOP3VEC (ML_BSSN_MP_O8_convertFromADMBase);
}
extern "C" void ML_BSSN_MP_O8_convertFromADMBase(CCTK_ARGUMENTS)
@@ -286,5 +429,39 @@ extern "C" void ML_BSSN_MP_O8_convertFromADMBase(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_O8_convertFromADMBase_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_MP_O8_convertFromADMBase_calc_every != ML_BSSN_MP_O8_convertFromADMBase_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ADMBase::curv","ADMBase::lapse","ADMBase::metric","ADMBase::shift","ML_BSSN_MP_O8::ML_curv","ML_BSSN_MP_O8::ML_lapse","ML_BSSN_MP_O8::ML_log_confac","ML_BSSN_MP_O8::ML_metric","ML_BSSN_MP_O8::ML_shift","ML_BSSN_MP_O8::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_O8_convertFromADMBase", 10, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverEverything(cctkGH, &ML_BSSN_MP_O8_convertFromADMBase_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_MP_O8_convertFromADMBase_Body");
+ }
}
diff --git a/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_convertFromADMBaseGamma.cc b/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_convertFromADMBaseGamma.cc
index c77f754..76896a8 100644
--- a/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_convertFromADMBaseGamma.cc
+++ b/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_convertFromADMBaseGamma.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_MP_O8_convertFromADMBaseGamma_SelectBCs(CCTK_ARGUMENTS)
{
@@ -39,7 +40,7 @@ extern "C" void ML_BSSN_MP_O8_convertFromADMBaseGamma_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_BSSN_MP_O8_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_MP_O8_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;
@@ -47,21 +48,6 @@ static void ML_BSSN_MP_O8_convertFromADMBaseGamma_Body(cGH const * restrict cons
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_O8_convertFromADMBaseGamma_Body");
- }
-
- if (cctk_iteration % ML_BSSN_MP_O8_convertFromADMBaseGamma_calc_every != ML_BSSN_MP_O8_convertFromADMBaseGamma_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ADMBase::dtlapse","ADMBase::dtshift","grid::coordinates","Grid::coordinates","ML_BSSN_MP_O8::ML_dtlapse","ML_BSSN_MP_O8::ML_dtshift","ML_BSSN_MP_O8::ML_Gamma","ML_BSSN_MP_O8::ML_lapse","ML_BSSN_MP_O8::ML_metric","ML_BSSN_MP_O8::ML_shift"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_O8_convertFromADMBaseGamma", 10, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_O8_convertFromADMBaseGamma", 5, 5, 5);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -71,47 +57,102 @@ static void ML_BSSN_MP_O8_convertFromADMBaseGamma_Body(cGH const * restrict cons
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o1024dx = 0.0009765625*INV(dx);
- CCTK_REAL const p1o1024dy = 0.0009765625*INV(dy);
- CCTK_REAL const p1o1024dz = 0.0009765625*INV(dz);
- CCTK_REAL const p1o1680dx = 0.000595238095238095238095238095238*INV(dx);
- CCTK_REAL const p1o1680dy = 0.000595238095238095238095238095238*INV(dy);
- CCTK_REAL const p1o1680dz = 0.000595238095238095238095238095238*INV(dz);
- CCTK_REAL const p1o5040dx2 = 0.000198412698412698412698412698413*INV(SQR(dx));
- CCTK_REAL const p1o5040dy2 = 0.000198412698412698412698412698413*INV(SQR(dy));
- CCTK_REAL const p1o5040dz2 = 0.000198412698412698412698412698413*INV(SQR(dz));
- CCTK_REAL const p1o560dx = 0.00178571428571428571428571428571*INV(dx);
- CCTK_REAL const p1o560dy = 0.00178571428571428571428571428571*INV(dy);
- CCTK_REAL const p1o560dz = 0.00178571428571428571428571428571*INV(dz);
- CCTK_REAL const p1o705600dxdy = 1.41723356009070294784580498866e-6*INV(dx)*INV(dy);
- CCTK_REAL const p1o705600dxdz = 1.41723356009070294784580498866e-6*INV(dx)*INV(dz);
- CCTK_REAL const p1o705600dydz = 1.41723356009070294784580498866e-6*INV(dy)*INV(dz);
- CCTK_REAL const p1o840dx = 0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const p1o840dy = 0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const p1o840dz = 0.00119047619047619047619047619048*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o840dx = -0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const pm1o840dy = -0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const pm1o840dz = -0.00119047619047619047619047619048*INV(dz);
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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)
@@ -158,265 +199,463 @@ static void ML_BSSN_MP_O8_convertFromADMBaseGamma_Body(cGH const * restrict cons
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_LOOP3 (ML_BSSN_MP_O8_convertFromADMBaseGamma,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_MP_O8_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 alphaL = alpha[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL dtalpL = dtalp[index];
- CCTK_REAL dtbetaxL = dtbetax[index];
- CCTK_REAL dtbetayL = dtbetay[index];
- CCTK_REAL dtbetazL = dtbetaz[index];
- CCTK_REAL gt11L = gt11[index];
- CCTK_REAL gt12L = gt12[index];
- CCTK_REAL gt13L = gt13[index];
- CCTK_REAL gt22L = gt22[index];
- CCTK_REAL gt23L = gt23[index];
- CCTK_REAL gt33L = gt33[index];
- CCTK_REAL rL = r[index];
-
-
- CCTK_REAL J11L, J12L, J13L, J21L, J22L, J23L, J31L, J32L, J33L;
+ 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 = J11[index];
- J12L = J12[index];
- J13L = J13[index];
- J21L = J21[index];
- J22L = J22[index];
- J23L = J23[index];
- J31L = J31[index];
- J32L = J32[index];
- J33L = J33[index];
+ J11L = vec_load(J11[index]);
+ J12L = vec_load(J12[index]);
+ J13L = vec_load(J13[index]);
+ J21L = vec_load(J21[index]);
+ J22L = vec_load(J22[index]);
+ J23L = vec_load(J23[index]);
+ J31L = vec_load(J31[index]);
+ J32L = vec_load(J32[index]);
+ J33L = vec_load(J33[index]);
}
/* Include user supplied include files */
/* Precompute derivatives */
- CCTK_REAL const PDupwindNthAnti1alpha = PDupwindNthAnti1(&alpha[index]);
- CCTK_REAL const PDupwindNthSymm1alpha = PDupwindNthSymm1(&alpha[index]);
- CCTK_REAL const PDupwindNthAnti2alpha = PDupwindNthAnti2(&alpha[index]);
- CCTK_REAL const PDupwindNthSymm2alpha = PDupwindNthSymm2(&alpha[index]);
- CCTK_REAL const PDupwindNthAnti3alpha = PDupwindNthAnti3(&alpha[index]);
- CCTK_REAL const PDupwindNthSymm3alpha = PDupwindNthSymm3(&alpha[index]);
- CCTK_REAL const PDupwindNthAnti1beta1 = PDupwindNthAnti1(&beta1[index]);
- CCTK_REAL const PDupwindNthSymm1beta1 = PDupwindNthSymm1(&beta1[index]);
- CCTK_REAL const PDupwindNthAnti2beta1 = PDupwindNthAnti2(&beta1[index]);
- CCTK_REAL const PDupwindNthSymm2beta1 = PDupwindNthSymm2(&beta1[index]);
- CCTK_REAL const PDupwindNthAnti3beta1 = PDupwindNthAnti3(&beta1[index]);
- CCTK_REAL const PDupwindNthSymm3beta1 = PDupwindNthSymm3(&beta1[index]);
- CCTK_REAL const PDupwindNthAnti1beta2 = PDupwindNthAnti1(&beta2[index]);
- CCTK_REAL const PDupwindNthSymm1beta2 = PDupwindNthSymm1(&beta2[index]);
- CCTK_REAL const PDupwindNthAnti2beta2 = PDupwindNthAnti2(&beta2[index]);
- CCTK_REAL const PDupwindNthSymm2beta2 = PDupwindNthSymm2(&beta2[index]);
- CCTK_REAL const PDupwindNthAnti3beta2 = PDupwindNthAnti3(&beta2[index]);
- CCTK_REAL const PDupwindNthSymm3beta2 = PDupwindNthSymm3(&beta2[index]);
- CCTK_REAL const PDupwindNthAnti1beta3 = PDupwindNthAnti1(&beta3[index]);
- CCTK_REAL const PDupwindNthSymm1beta3 = PDupwindNthSymm1(&beta3[index]);
- CCTK_REAL const PDupwindNthAnti2beta3 = PDupwindNthAnti2(&beta3[index]);
- CCTK_REAL const PDupwindNthSymm2beta3 = PDupwindNthSymm2(&beta3[index]);
- CCTK_REAL const PDupwindNthAnti3beta3 = PDupwindNthAnti3(&beta3[index]);
- CCTK_REAL const PDupwindNthSymm3beta3 = PDupwindNthSymm3(&beta3[index]);
- CCTK_REAL const PDstandardNth1gt11 = PDstandardNth1(&gt11[index]);
- CCTK_REAL const PDstandardNth2gt11 = PDstandardNth2(&gt11[index]);
- CCTK_REAL const PDstandardNth3gt11 = PDstandardNth3(&gt11[index]);
- CCTK_REAL const PDstandardNth1gt12 = PDstandardNth1(&gt12[index]);
- CCTK_REAL const PDstandardNth2gt12 = PDstandardNth2(&gt12[index]);
- CCTK_REAL const PDstandardNth3gt12 = PDstandardNth3(&gt12[index]);
- CCTK_REAL const PDstandardNth1gt13 = PDstandardNth1(&gt13[index]);
- CCTK_REAL const PDstandardNth2gt13 = PDstandardNth2(&gt13[index]);
- CCTK_REAL const PDstandardNth3gt13 = PDstandardNth3(&gt13[index]);
- CCTK_REAL const PDstandardNth1gt22 = PDstandardNth1(&gt22[index]);
- CCTK_REAL const PDstandardNth2gt22 = PDstandardNth2(&gt22[index]);
- CCTK_REAL const PDstandardNth3gt22 = PDstandardNth3(&gt22[index]);
- CCTK_REAL const PDstandardNth1gt23 = PDstandardNth1(&gt23[index]);
- CCTK_REAL const PDstandardNth2gt23 = PDstandardNth2(&gt23[index]);
- CCTK_REAL const PDstandardNth3gt23 = PDstandardNth3(&gt23[index]);
- CCTK_REAL const PDstandardNth1gt33 = PDstandardNth1(&gt33[index]);
- CCTK_REAL const PDstandardNth2gt33 = PDstandardNth2(&gt33[index]);
- CCTK_REAL const PDstandardNth3gt33 = PDstandardNth3(&gt33[index]);
+ 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 */
- CCTK_REAL JacPDstandardNth1gt11;
- CCTK_REAL JacPDstandardNth1gt12;
- CCTK_REAL JacPDstandardNth1gt13;
- CCTK_REAL JacPDstandardNth1gt22;
- CCTK_REAL JacPDstandardNth1gt23;
- CCTK_REAL JacPDstandardNth1gt33;
- CCTK_REAL JacPDstandardNth2gt11;
- CCTK_REAL JacPDstandardNth2gt12;
- CCTK_REAL JacPDstandardNth2gt13;
- CCTK_REAL JacPDstandardNth2gt22;
- CCTK_REAL JacPDstandardNth2gt23;
- CCTK_REAL JacPDstandardNth2gt33;
- CCTK_REAL JacPDstandardNth3gt11;
- CCTK_REAL JacPDstandardNth3gt12;
- CCTK_REAL JacPDstandardNth3gt13;
- CCTK_REAL JacPDstandardNth3gt22;
- CCTK_REAL JacPDstandardNth3gt23;
- CCTK_REAL JacPDstandardNth3gt33;
- CCTK_REAL JacPDupwindNthAnti1alpha;
- CCTK_REAL JacPDupwindNthAnti1beta1;
- CCTK_REAL JacPDupwindNthAnti1beta2;
- CCTK_REAL JacPDupwindNthAnti1beta3;
- CCTK_REAL JacPDupwindNthAnti2alpha;
- CCTK_REAL JacPDupwindNthAnti2beta1;
- CCTK_REAL JacPDupwindNthAnti2beta2;
- CCTK_REAL JacPDupwindNthAnti2beta3;
- CCTK_REAL JacPDupwindNthAnti3alpha;
- CCTK_REAL JacPDupwindNthAnti3beta1;
- CCTK_REAL JacPDupwindNthAnti3beta2;
- CCTK_REAL JacPDupwindNthAnti3beta3;
- CCTK_REAL JacPDupwindNthSymm1alpha;
- CCTK_REAL JacPDupwindNthSymm1beta1;
- CCTK_REAL JacPDupwindNthSymm1beta2;
- CCTK_REAL JacPDupwindNthSymm1beta3;
- CCTK_REAL JacPDupwindNthSymm2alpha;
- CCTK_REAL JacPDupwindNthSymm2beta1;
- CCTK_REAL JacPDupwindNthSymm2beta2;
- CCTK_REAL JacPDupwindNthSymm2beta3;
- CCTK_REAL JacPDupwindNthSymm3alpha;
- CCTK_REAL JacPDupwindNthSymm3beta1;
- CCTK_REAL JacPDupwindNthSymm3beta2;
- CCTK_REAL JacPDupwindNthSymm3beta3;
+ 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 = J11L*PDstandardNth1gt11 +
- J21L*PDstandardNth2gt11 + J31L*PDstandardNth3gt11;
+ JacPDstandardNth1gt11 =
+ kmadd(J11L,PDstandardNth1gt11,kmadd(J21L,PDstandardNth2gt11,kmul(J31L,PDstandardNth3gt11)));
- JacPDstandardNth1gt12 = J11L*PDstandardNth1gt12 +
- J21L*PDstandardNth2gt12 + J31L*PDstandardNth3gt12;
+ JacPDstandardNth1gt12 =
+ kmadd(J11L,PDstandardNth1gt12,kmadd(J21L,PDstandardNth2gt12,kmul(J31L,PDstandardNth3gt12)));
- JacPDstandardNth1gt13 = J11L*PDstandardNth1gt13 +
- J21L*PDstandardNth2gt13 + J31L*PDstandardNth3gt13;
+ JacPDstandardNth1gt13 =
+ kmadd(J11L,PDstandardNth1gt13,kmadd(J21L,PDstandardNth2gt13,kmul(J31L,PDstandardNth3gt13)));
- JacPDstandardNth1gt22 = J11L*PDstandardNth1gt22 +
- J21L*PDstandardNth2gt22 + J31L*PDstandardNth3gt22;
+ JacPDstandardNth1gt22 =
+ kmadd(J11L,PDstandardNth1gt22,kmadd(J21L,PDstandardNth2gt22,kmul(J31L,PDstandardNth3gt22)));
- JacPDstandardNth1gt23 = J11L*PDstandardNth1gt23 +
- J21L*PDstandardNth2gt23 + J31L*PDstandardNth3gt23;
+ JacPDstandardNth1gt23 =
+ kmadd(J11L,PDstandardNth1gt23,kmadd(J21L,PDstandardNth2gt23,kmul(J31L,PDstandardNth3gt23)));
- JacPDstandardNth1gt33 = J11L*PDstandardNth1gt33 +
- J21L*PDstandardNth2gt33 + J31L*PDstandardNth3gt33;
+ JacPDstandardNth1gt33 =
+ kmadd(J11L,PDstandardNth1gt33,kmadd(J21L,PDstandardNth2gt33,kmul(J31L,PDstandardNth3gt33)));
- JacPDstandardNth2gt11 = J12L*PDstandardNth1gt11 +
- J22L*PDstandardNth2gt11 + J32L*PDstandardNth3gt11;
+ JacPDstandardNth2gt11 =
+ kmadd(J12L,PDstandardNth1gt11,kmadd(J22L,PDstandardNth2gt11,kmul(J32L,PDstandardNth3gt11)));
- JacPDstandardNth2gt12 = J12L*PDstandardNth1gt12 +
- J22L*PDstandardNth2gt12 + J32L*PDstandardNth3gt12;
+ JacPDstandardNth2gt12 =
+ kmadd(J12L,PDstandardNth1gt12,kmadd(J22L,PDstandardNth2gt12,kmul(J32L,PDstandardNth3gt12)));
- JacPDstandardNth2gt13 = J12L*PDstandardNth1gt13 +
- J22L*PDstandardNth2gt13 + J32L*PDstandardNth3gt13;
+ JacPDstandardNth2gt13 =
+ kmadd(J12L,PDstandardNth1gt13,kmadd(J22L,PDstandardNth2gt13,kmul(J32L,PDstandardNth3gt13)));
- JacPDstandardNth2gt22 = J12L*PDstandardNth1gt22 +
- J22L*PDstandardNth2gt22 + J32L*PDstandardNth3gt22;
+ JacPDstandardNth2gt22 =
+ kmadd(J12L,PDstandardNth1gt22,kmadd(J22L,PDstandardNth2gt22,kmul(J32L,PDstandardNth3gt22)));
- JacPDstandardNth2gt23 = J12L*PDstandardNth1gt23 +
- J22L*PDstandardNth2gt23 + J32L*PDstandardNth3gt23;
+ JacPDstandardNth2gt23 =
+ kmadd(J12L,PDstandardNth1gt23,kmadd(J22L,PDstandardNth2gt23,kmul(J32L,PDstandardNth3gt23)));
- JacPDstandardNth2gt33 = J12L*PDstandardNth1gt33 +
- J22L*PDstandardNth2gt33 + J32L*PDstandardNth3gt33;
+ JacPDstandardNth2gt33 =
+ kmadd(J12L,PDstandardNth1gt33,kmadd(J22L,PDstandardNth2gt33,kmul(J32L,PDstandardNth3gt33)));
- JacPDstandardNth3gt11 = J13L*PDstandardNth1gt11 +
- J23L*PDstandardNth2gt11 + J33L*PDstandardNth3gt11;
+ JacPDstandardNth3gt11 =
+ kmadd(J13L,PDstandardNth1gt11,kmadd(J23L,PDstandardNth2gt11,kmul(J33L,PDstandardNth3gt11)));
- JacPDstandardNth3gt12 = J13L*PDstandardNth1gt12 +
- J23L*PDstandardNth2gt12 + J33L*PDstandardNth3gt12;
+ JacPDstandardNth3gt12 =
+ kmadd(J13L,PDstandardNth1gt12,kmadd(J23L,PDstandardNth2gt12,kmul(J33L,PDstandardNth3gt12)));
- JacPDstandardNth3gt13 = J13L*PDstandardNth1gt13 +
- J23L*PDstandardNth2gt13 + J33L*PDstandardNth3gt13;
+ JacPDstandardNth3gt13 =
+ kmadd(J13L,PDstandardNth1gt13,kmadd(J23L,PDstandardNth2gt13,kmul(J33L,PDstandardNth3gt13)));
- JacPDstandardNth3gt22 = J13L*PDstandardNth1gt22 +
- J23L*PDstandardNth2gt22 + J33L*PDstandardNth3gt22;
+ JacPDstandardNth3gt22 =
+ kmadd(J13L,PDstandardNth1gt22,kmadd(J23L,PDstandardNth2gt22,kmul(J33L,PDstandardNth3gt22)));
- JacPDstandardNth3gt23 = J13L*PDstandardNth1gt23 +
- J23L*PDstandardNth2gt23 + J33L*PDstandardNth3gt23;
+ JacPDstandardNth3gt23 =
+ kmadd(J13L,PDstandardNth1gt23,kmadd(J23L,PDstandardNth2gt23,kmul(J33L,PDstandardNth3gt23)));
- JacPDstandardNth3gt33 = J13L*PDstandardNth1gt33 +
- J23L*PDstandardNth2gt33 + J33L*PDstandardNth3gt33;
+ JacPDstandardNth3gt33 =
+ kmadd(J13L,PDstandardNth1gt33,kmadd(J23L,PDstandardNth2gt33,kmul(J33L,PDstandardNth3gt33)));
- JacPDupwindNthAnti1alpha = J11L*PDupwindNthAnti1alpha +
- J21L*PDupwindNthAnti2alpha + J31L*PDupwindNthAnti3alpha;
+ JacPDupwindNthAnti1alpha =
+ kmadd(J11L,PDupwindNthAnti1alpha,kmadd(J21L,PDupwindNthAnti2alpha,kmul(J31L,PDupwindNthAnti3alpha)));
- JacPDupwindNthAnti1beta1 = J11L*PDupwindNthAnti1beta1 +
- J21L*PDupwindNthAnti2beta1 + J31L*PDupwindNthAnti3beta1;
+ JacPDupwindNthAnti1beta1 =
+ kmadd(J11L,PDupwindNthAnti1beta1,kmadd(J21L,PDupwindNthAnti2beta1,kmul(J31L,PDupwindNthAnti3beta1)));
- JacPDupwindNthAnti1beta2 = J11L*PDupwindNthAnti1beta2 +
- J21L*PDupwindNthAnti2beta2 + J31L*PDupwindNthAnti3beta2;
+ JacPDupwindNthAnti1beta2 =
+ kmadd(J11L,PDupwindNthAnti1beta2,kmadd(J21L,PDupwindNthAnti2beta2,kmul(J31L,PDupwindNthAnti3beta2)));
- JacPDupwindNthAnti1beta3 = J11L*PDupwindNthAnti1beta3 +
- J21L*PDupwindNthAnti2beta3 + J31L*PDupwindNthAnti3beta3;
+ JacPDupwindNthAnti1beta3 =
+ kmadd(J11L,PDupwindNthAnti1beta3,kmadd(J21L,PDupwindNthAnti2beta3,kmul(J31L,PDupwindNthAnti3beta3)));
- JacPDupwindNthSymm1alpha = J11L*PDupwindNthSymm1alpha +
- J21L*PDupwindNthSymm2alpha + J31L*PDupwindNthSymm3alpha;
+ JacPDupwindNthSymm1alpha =
+ kmadd(J11L,PDupwindNthSymm1alpha,kmadd(J21L,PDupwindNthSymm2alpha,kmul(J31L,PDupwindNthSymm3alpha)));
- JacPDupwindNthSymm1beta1 = J11L*PDupwindNthSymm1beta1 +
- J21L*PDupwindNthSymm2beta1 + J31L*PDupwindNthSymm3beta1;
+ JacPDupwindNthSymm1beta1 =
+ kmadd(J11L,PDupwindNthSymm1beta1,kmadd(J21L,PDupwindNthSymm2beta1,kmul(J31L,PDupwindNthSymm3beta1)));
- JacPDupwindNthSymm1beta2 = J11L*PDupwindNthSymm1beta2 +
- J21L*PDupwindNthSymm2beta2 + J31L*PDupwindNthSymm3beta2;
+ JacPDupwindNthSymm1beta2 =
+ kmadd(J11L,PDupwindNthSymm1beta2,kmadd(J21L,PDupwindNthSymm2beta2,kmul(J31L,PDupwindNthSymm3beta2)));
- JacPDupwindNthSymm1beta3 = J11L*PDupwindNthSymm1beta3 +
- J21L*PDupwindNthSymm2beta3 + J31L*PDupwindNthSymm3beta3;
+ JacPDupwindNthSymm1beta3 =
+ kmadd(J11L,PDupwindNthSymm1beta3,kmadd(J21L,PDupwindNthSymm2beta3,kmul(J31L,PDupwindNthSymm3beta3)));
- JacPDupwindNthAnti2alpha = J12L*PDupwindNthAnti1alpha +
- J22L*PDupwindNthAnti2alpha + J32L*PDupwindNthAnti3alpha;
+ JacPDupwindNthAnti2alpha =
+ kmadd(J12L,PDupwindNthAnti1alpha,kmadd(J22L,PDupwindNthAnti2alpha,kmul(J32L,PDupwindNthAnti3alpha)));
- JacPDupwindNthAnti2beta1 = J12L*PDupwindNthAnti1beta1 +
- J22L*PDupwindNthAnti2beta1 + J32L*PDupwindNthAnti3beta1;
+ JacPDupwindNthAnti2beta1 =
+ kmadd(J12L,PDupwindNthAnti1beta1,kmadd(J22L,PDupwindNthAnti2beta1,kmul(J32L,PDupwindNthAnti3beta1)));
- JacPDupwindNthAnti2beta2 = J12L*PDupwindNthAnti1beta2 +
- J22L*PDupwindNthAnti2beta2 + J32L*PDupwindNthAnti3beta2;
+ JacPDupwindNthAnti2beta2 =
+ kmadd(J12L,PDupwindNthAnti1beta2,kmadd(J22L,PDupwindNthAnti2beta2,kmul(J32L,PDupwindNthAnti3beta2)));
- JacPDupwindNthAnti2beta3 = J12L*PDupwindNthAnti1beta3 +
- J22L*PDupwindNthAnti2beta3 + J32L*PDupwindNthAnti3beta3;
+ JacPDupwindNthAnti2beta3 =
+ kmadd(J12L,PDupwindNthAnti1beta3,kmadd(J22L,PDupwindNthAnti2beta3,kmul(J32L,PDupwindNthAnti3beta3)));
- JacPDupwindNthSymm2alpha = J12L*PDupwindNthSymm1alpha +
- J22L*PDupwindNthSymm2alpha + J32L*PDupwindNthSymm3alpha;
+ JacPDupwindNthSymm2alpha =
+ kmadd(J12L,PDupwindNthSymm1alpha,kmadd(J22L,PDupwindNthSymm2alpha,kmul(J32L,PDupwindNthSymm3alpha)));
- JacPDupwindNthSymm2beta1 = J12L*PDupwindNthSymm1beta1 +
- J22L*PDupwindNthSymm2beta1 + J32L*PDupwindNthSymm3beta1;
+ JacPDupwindNthSymm2beta1 =
+ kmadd(J12L,PDupwindNthSymm1beta1,kmadd(J22L,PDupwindNthSymm2beta1,kmul(J32L,PDupwindNthSymm3beta1)));
- JacPDupwindNthSymm2beta2 = J12L*PDupwindNthSymm1beta2 +
- J22L*PDupwindNthSymm2beta2 + J32L*PDupwindNthSymm3beta2;
+ JacPDupwindNthSymm2beta2 =
+ kmadd(J12L,PDupwindNthSymm1beta2,kmadd(J22L,PDupwindNthSymm2beta2,kmul(J32L,PDupwindNthSymm3beta2)));
- JacPDupwindNthSymm2beta3 = J12L*PDupwindNthSymm1beta3 +
- J22L*PDupwindNthSymm2beta3 + J32L*PDupwindNthSymm3beta3;
+ JacPDupwindNthSymm2beta3 =
+ kmadd(J12L,PDupwindNthSymm1beta3,kmadd(J22L,PDupwindNthSymm2beta3,kmul(J32L,PDupwindNthSymm3beta3)));
- JacPDupwindNthAnti3alpha = J13L*PDupwindNthAnti1alpha +
- J23L*PDupwindNthAnti2alpha + J33L*PDupwindNthAnti3alpha;
+ JacPDupwindNthAnti3alpha =
+ kmadd(J13L,PDupwindNthAnti1alpha,kmadd(J23L,PDupwindNthAnti2alpha,kmul(J33L,PDupwindNthAnti3alpha)));
- JacPDupwindNthAnti3beta1 = J13L*PDupwindNthAnti1beta1 +
- J23L*PDupwindNthAnti2beta1 + J33L*PDupwindNthAnti3beta1;
+ JacPDupwindNthAnti3beta1 =
+ kmadd(J13L,PDupwindNthAnti1beta1,kmadd(J23L,PDupwindNthAnti2beta1,kmul(J33L,PDupwindNthAnti3beta1)));
- JacPDupwindNthAnti3beta2 = J13L*PDupwindNthAnti1beta2 +
- J23L*PDupwindNthAnti2beta2 + J33L*PDupwindNthAnti3beta2;
+ JacPDupwindNthAnti3beta2 =
+ kmadd(J13L,PDupwindNthAnti1beta2,kmadd(J23L,PDupwindNthAnti2beta2,kmul(J33L,PDupwindNthAnti3beta2)));
- JacPDupwindNthAnti3beta3 = J13L*PDupwindNthAnti1beta3 +
- J23L*PDupwindNthAnti2beta3 + J33L*PDupwindNthAnti3beta3;
+ JacPDupwindNthAnti3beta3 =
+ kmadd(J13L,PDupwindNthAnti1beta3,kmadd(J23L,PDupwindNthAnti2beta3,kmul(J33L,PDupwindNthAnti3beta3)));
- JacPDupwindNthSymm3alpha = J13L*PDupwindNthSymm1alpha +
- J23L*PDupwindNthSymm2alpha + J33L*PDupwindNthSymm3alpha;
+ JacPDupwindNthSymm3alpha =
+ kmadd(J13L,PDupwindNthSymm1alpha,kmadd(J23L,PDupwindNthSymm2alpha,kmul(J33L,PDupwindNthSymm3alpha)));
- JacPDupwindNthSymm3beta1 = J13L*PDupwindNthSymm1beta1 +
- J23L*PDupwindNthSymm2beta1 + J33L*PDupwindNthSymm3beta1;
+ JacPDupwindNthSymm3beta1 =
+ kmadd(J13L,PDupwindNthSymm1beta1,kmadd(J23L,PDupwindNthSymm2beta1,kmul(J33L,PDupwindNthSymm3beta1)));
- JacPDupwindNthSymm3beta2 = J13L*PDupwindNthSymm1beta2 +
- J23L*PDupwindNthSymm2beta2 + J33L*PDupwindNthSymm3beta2;
+ JacPDupwindNthSymm3beta2 =
+ kmadd(J13L,PDupwindNthSymm1beta2,kmadd(J23L,PDupwindNthSymm2beta2,kmul(J33L,PDupwindNthSymm3beta2)));
- JacPDupwindNthSymm3beta3 = J13L*PDupwindNthSymm1beta3 +
- J23L*PDupwindNthSymm2beta3 + J33L*PDupwindNthSymm3beta3;
+ JacPDupwindNthSymm3beta3 =
+ kmadd(J13L,PDupwindNthSymm1beta3,kmadd(J23L,PDupwindNthSymm2beta3,kmul(J33L,PDupwindNthSymm3beta3)));
}
else
{
@@ -505,160 +744,170 @@ static void ML_BSSN_MP_O8_convertFromADMBaseGamma_Body(cGH const * restrict cons
JacPDupwindNthSymm3beta3 = PDupwindNthSymm3beta3;
}
- ptrdiff_t dir1 = Sign(beta1L);
-
- ptrdiff_t dir2 = Sign(beta2L);
-
- ptrdiff_t dir3 = Sign(beta3L);
-
- CCTK_REAL detgt = 1;
+ CCTK_REAL_VEC detgt = ToReal(1);
- CCTK_REAL gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L));
+ CCTK_REAL_VEC gtu11 = kmul(INV(detgt),kmsub(gt22L,gt33L,SQR(gt23L)));
- CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt);
+ CCTK_REAL_VEC gtu12 =
+ kmul(INV(detgt),kmsub(gt13L,gt23L,kmul(gt12L,gt33L)));
- CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC gtu13 =
+ kmul(INV(detgt),kmsub(gt12L,gt23L,kmul(gt13L,gt22L)));
- CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L));
+ CCTK_REAL_VEC gtu22 = kmul(INV(detgt),kmsub(gt11L,gt33L,SQR(gt13L)));
- CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC gtu23 =
+ kmul(INV(detgt),kmsub(gt12L,gt13L,kmul(gt11L,gt23L)));
- CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L));
+ CCTK_REAL_VEC gtu33 = kmul(INV(detgt),kmsub(gt11L,gt22L,SQR(gt12L)));
- CCTK_REAL Gt111 = 0.5*(gtu11*JacPDstandardNth1gt11 +
- 2*(gtu12*JacPDstandardNth1gt12 + gtu13*JacPDstandardNth1gt13) -
- gtu12*JacPDstandardNth2gt11 - gtu13*JacPDstandardNth3gt11);
+ 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 Gt211 = 0.5*(gtu12*JacPDstandardNth1gt11 +
- 2*(gtu22*JacPDstandardNth1gt12 + gtu23*JacPDstandardNth1gt13) -
- gtu22*JacPDstandardNth2gt11 - gtu23*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 Gt311 = 0.5*(gtu13*JacPDstandardNth1gt11 +
- 2*(gtu23*JacPDstandardNth1gt12 + gtu33*JacPDstandardNth1gt13) -
- gtu23*JacPDstandardNth2gt11 - gtu33*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 Gt112 = 0.5*(gtu12*JacPDstandardNth1gt22 +
- gtu11*JacPDstandardNth2gt11 + gtu13*(JacPDstandardNth1gt23 +
- JacPDstandardNth2gt13 - JacPDstandardNth3gt12));
+ CCTK_REAL_VEC Gt112 =
+ kmul(kmadd(gtu12,JacPDstandardNth1gt22,kmadd(gtu11,JacPDstandardNth2gt11,kmul(gtu13,kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth2gt13,JacPDstandardNth3gt12))))),ToReal(0.5));
- CCTK_REAL Gt212 = 0.5*(gtu22*JacPDstandardNth1gt22 +
- gtu12*JacPDstandardNth2gt11 + gtu23*(JacPDstandardNth1gt23 +
- JacPDstandardNth2gt13 - JacPDstandardNth3gt12));
+ CCTK_REAL_VEC Gt212 =
+ kmul(kmadd(gtu22,JacPDstandardNth1gt22,kmadd(gtu12,JacPDstandardNth2gt11,kmul(gtu23,kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth2gt13,JacPDstandardNth3gt12))))),ToReal(0.5));
- CCTK_REAL Gt312 = 0.5*(gtu23*JacPDstandardNth1gt22 +
- gtu13*JacPDstandardNth2gt11 + gtu33*(JacPDstandardNth1gt23 +
- JacPDstandardNth2gt13 - JacPDstandardNth3gt12));
+ CCTK_REAL_VEC Gt312 =
+ kmul(kmadd(gtu23,JacPDstandardNth1gt22,kmadd(gtu13,JacPDstandardNth2gt11,kmul(gtu33,kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth2gt13,JacPDstandardNth3gt12))))),ToReal(0.5));
- CCTK_REAL Gt113 = 0.5*(gtu13*JacPDstandardNth1gt33 +
- gtu11*JacPDstandardNth3gt11 + gtu12*(JacPDstandardNth1gt23 -
- JacPDstandardNth2gt13 + JacPDstandardNth3gt12));
+ CCTK_REAL_VEC Gt113 =
+ kmul(kmadd(gtu13,JacPDstandardNth1gt33,kmadd(gtu11,JacPDstandardNth3gt11,kmul(gtu12,kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth3gt12,JacPDstandardNth2gt13))))),ToReal(0.5));
- CCTK_REAL Gt213 = 0.5*(gtu23*JacPDstandardNth1gt33 +
- gtu12*JacPDstandardNth3gt11 + gtu22*(JacPDstandardNth1gt23 -
- JacPDstandardNth2gt13 + JacPDstandardNth3gt12));
+ CCTK_REAL_VEC Gt213 =
+ kmul(kmadd(gtu23,JacPDstandardNth1gt33,kmadd(gtu12,JacPDstandardNth3gt11,kmul(gtu22,kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth3gt12,JacPDstandardNth2gt13))))),ToReal(0.5));
- CCTK_REAL Gt313 = 0.5*(gtu33*JacPDstandardNth1gt33 +
- gtu13*JacPDstandardNth3gt11 + gtu23*(JacPDstandardNth1gt23 -
- JacPDstandardNth2gt13 + JacPDstandardNth3gt12));
+ CCTK_REAL_VEC Gt313 =
+ kmul(kmadd(gtu33,JacPDstandardNth1gt33,kmadd(gtu13,JacPDstandardNth3gt11,kmul(gtu23,kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth3gt12,JacPDstandardNth2gt13))))),ToReal(0.5));
- CCTK_REAL Gt122 = 0.5*(gtu11*(-JacPDstandardNth1gt22 +
- 2*JacPDstandardNth2gt12) + gtu12*JacPDstandardNth2gt22 +
- gtu13*(2*JacPDstandardNth2gt23 - JacPDstandardNth3gt22));
+ 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 Gt222 = 0.5*(gtu12*(-JacPDstandardNth1gt22 +
- 2*JacPDstandardNth2gt12) + gtu22*JacPDstandardNth2gt22 +
- gtu23*(2*JacPDstandardNth2gt23 - 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 Gt322 = 0.5*(gtu13*(-JacPDstandardNth1gt22 +
- 2*JacPDstandardNth2gt12) + gtu23*JacPDstandardNth2gt22 +
- gtu33*(2*JacPDstandardNth2gt23 - 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 Gt123 = 0.5*(gtu13*JacPDstandardNth2gt33 +
- gtu11*(-JacPDstandardNth1gt23 + JacPDstandardNth2gt13 +
- JacPDstandardNth3gt12) + gtu12*JacPDstandardNth3gt22);
+ CCTK_REAL_VEC Gt123 =
+ kmul(kmadd(gtu13,JacPDstandardNth2gt33,kmadd(gtu12,JacPDstandardNth3gt22,kmul(gtu11,kadd(JacPDstandardNth2gt13,ksub(JacPDstandardNth3gt12,JacPDstandardNth1gt23))))),ToReal(0.5));
- CCTK_REAL Gt223 = 0.5*(gtu23*JacPDstandardNth2gt33 +
- gtu12*(-JacPDstandardNth1gt23 + JacPDstandardNth2gt13 +
- JacPDstandardNth3gt12) + gtu22*JacPDstandardNth3gt22);
+ CCTK_REAL_VEC Gt223 =
+ kmul(kmadd(gtu23,JacPDstandardNth2gt33,kmadd(gtu22,JacPDstandardNth3gt22,kmul(gtu12,kadd(JacPDstandardNth2gt13,ksub(JacPDstandardNth3gt12,JacPDstandardNth1gt23))))),ToReal(0.5));
- CCTK_REAL Gt323 = 0.5*(gtu33*JacPDstandardNth2gt33 +
- gtu13*(-JacPDstandardNth1gt23 + JacPDstandardNth2gt13 +
- JacPDstandardNth3gt12) + gtu23*JacPDstandardNth3gt22);
+ CCTK_REAL_VEC Gt323 =
+ kmul(kmadd(gtu33,JacPDstandardNth2gt33,kmadd(gtu23,JacPDstandardNth3gt22,kmul(gtu13,kadd(JacPDstandardNth2gt13,ksub(JacPDstandardNth3gt12,JacPDstandardNth1gt23))))),ToReal(0.5));
- CCTK_REAL Gt133 = 0.5*(gtu11*(-JacPDstandardNth1gt33 +
- 2*JacPDstandardNth3gt13) + gtu12*(-JacPDstandardNth2gt33 +
- 2*JacPDstandardNth3gt23) + gtu13*JacPDstandardNth3gt33);
+ 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 Gt233 = 0.5*(gtu12*(-JacPDstandardNth1gt33 +
- 2*JacPDstandardNth3gt13) + gtu22*(-JacPDstandardNth2gt33 +
- 2*JacPDstandardNth3gt23) + gtu23*JacPDstandardNth3gt33);
+ 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 Gt333 = 0.5*(gtu13*(-JacPDstandardNth1gt33 +
- 2*JacPDstandardNth3gt13) + gtu23*(-JacPDstandardNth2gt33 +
- 2*JacPDstandardNth3gt23) + gtu33*JacPDstandardNth3gt33);
+ 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 Xt1L = Gt111*gtu11 + Gt122*gtu22 + 2*(Gt112*gtu12 +
- Gt113*gtu13 + Gt123*gtu23) + Gt133*gtu33;
+ 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 Xt2L = Gt211*gtu11 + Gt222*gtu22 + 2*(Gt212*gtu12 +
- Gt213*gtu13 + Gt223*gtu23) + Gt233*gtu33;
+ 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 Xt3L = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu12 +
- Gt313*gtu13 + Gt323*gtu23) + Gt333*gtu33;
+ 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 AL = IfThen(LapseACoeff !=
- 0,-(INV(ToReal(harmonicF))*pow(alphaL,-ToReal(harmonicN))*(dtalpL -
- (beta1L*JacPDupwindNthAnti1alpha + beta2L*JacPDupwindNthAnti2alpha +
- beta3L*JacPDupwindNthAnti3alpha + JacPDupwindNthSymm1alpha*Abs(beta1L)
- + JacPDupwindNthSymm2alpha*Abs(beta2L) +
- JacPDupwindNthSymm3alpha*Abs(beta3L))*ToReal(LapseAdvectionCoeff))),0);
+ CCTK_REAL_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 theta = fmin(1,exp(1 -
- rL*INV(ToReal(SpatialShiftGammaCoeffRadius))));
+ CCTK_REAL_VEC theta =
+ kfmin(ToReal(1),kexp(knmsub(rL,INV(ToReal(SpatialShiftGammaCoeffRadius)),ToReal(1))));
- CCTK_REAL B1L;
- CCTK_REAL B2L;
- CCTK_REAL B3L;
+ CCTK_REAL_VEC B1L;
+ CCTK_REAL_VEC B2L;
+ CCTK_REAL_VEC B3L;
if (ShiftBCoeff*ShiftGammaCoeff != 0)
{
- B1L = INV(theta)*INV(ToReal(ShiftGammaCoeff))*(dtbetaxL -
- (beta1L*JacPDupwindNthAnti1beta1 + beta2L*JacPDupwindNthAnti2beta1 +
- beta3L*JacPDupwindNthAnti3beta1 + JacPDupwindNthSymm1beta1*Abs(beta1L)
- + JacPDupwindNthSymm2beta1*Abs(beta2L) +
- JacPDupwindNthSymm3beta1*Abs(beta3L))*ToReal(ShiftAdvectionCoeff));
-
- B2L = INV(theta)*INV(ToReal(ShiftGammaCoeff))*(dtbetayL -
- (beta1L*JacPDupwindNthAnti1beta2 + beta2L*JacPDupwindNthAnti2beta2 +
- beta3L*JacPDupwindNthAnti3beta2 + JacPDupwindNthSymm1beta2*Abs(beta1L)
- + JacPDupwindNthSymm2beta2*Abs(beta2L) +
- JacPDupwindNthSymm3beta2*Abs(beta3L))*ToReal(ShiftAdvectionCoeff));
-
- B3L = INV(theta)*INV(ToReal(ShiftGammaCoeff))*(dtbetazL -
- (beta1L*JacPDupwindNthAnti1beta3 + beta2L*JacPDupwindNthAnti2beta3 +
- beta3L*JacPDupwindNthAnti3beta3 + JacPDupwindNthSymm1beta3*Abs(beta1L)
- + JacPDupwindNthSymm2beta3*Abs(beta2L) +
- JacPDupwindNthSymm3beta3*Abs(beta3L))*ToReal(ShiftAdvectionCoeff));
+ B1L =
+ kmul(INV(theta),kmul(INV(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(theta),kmul(INV(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(theta),kmul(INV(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 = 0;
+ B1L = ToReal(0);
- B2L = 0;
+ B2L = ToReal(0);
- B3L = 0;
+ B3L = ToReal(0);
}
- /* Copy local copies back to grid functions */
- A[index] = AL;
- B1[index] = B1L;
- B2[index] = B2L;
- B3[index] = B3L;
- Xt1[index] = Xt1L;
- Xt2[index] = Xt2L;
- Xt3[index] = Xt3L;
+ /* 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(A[index],AL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B1[index],B1L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B2[index],B2L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B3[index],B3L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt1[index],Xt1L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt2[index],Xt2L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt3[index],Xt3L,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(A[index],AL,elt_count);
+ vec_store_nta_partial_hi(B1[index],B1L,elt_count);
+ vec_store_nta_partial_hi(B2[index],B2L,elt_count);
+ vec_store_nta_partial_hi(B3[index],B3L,elt_count);
+ vec_store_nta_partial_hi(Xt1[index],Xt1L,elt_count);
+ vec_store_nta_partial_hi(Xt2[index],Xt2L,elt_count);
+ vec_store_nta_partial_hi(Xt3[index],Xt3L,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(A[index],AL,elt_count);
+ vec_store_nta_partial_lo(B1[index],B1L,elt_count);
+ vec_store_nta_partial_lo(B2[index],B2L,elt_count);
+ vec_store_nta_partial_lo(B3[index],B3L,elt_count);
+ vec_store_nta_partial_lo(Xt1[index],Xt1L,elt_count);
+ vec_store_nta_partial_lo(Xt2[index],Xt2L,elt_count);
+ vec_store_nta_partial_lo(Xt3[index],Xt3L,elt_count);
+ break;
+ }
+ vec_store_nta(A[index],AL);
+ vec_store_nta(B1[index],B1L);
+ vec_store_nta(B2[index],B2L);
+ vec_store_nta(B3[index],B3L);
+ vec_store_nta(Xt1[index],Xt1L);
+ vec_store_nta(Xt2[index],Xt2L);
+ vec_store_nta(Xt3[index],Xt3L);
}
- LC_ENDLOOP3 (ML_BSSN_MP_O8_convertFromADMBaseGamma);
+ LC_ENDLOOP3VEC (ML_BSSN_MP_O8_convertFromADMBaseGamma);
}
extern "C" void ML_BSSN_MP_O8_convertFromADMBaseGamma(CCTK_ARGUMENTS)
@@ -666,5 +915,43 @@ extern "C" void ML_BSSN_MP_O8_convertFromADMBaseGamma(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_O8_convertFromADMBaseGamma_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_MP_O8_convertFromADMBaseGamma_calc_every != ML_BSSN_MP_O8_convertFromADMBaseGamma_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ADMBase::dtlapse","ADMBase::dtshift","grid::coordinates","Grid::coordinates","ML_BSSN_MP_O8::ML_dtlapse","ML_BSSN_MP_O8::ML_dtshift","ML_BSSN_MP_O8::ML_Gamma","ML_BSSN_MP_O8::ML_lapse","ML_BSSN_MP_O8::ML_metric","ML_BSSN_MP_O8::ML_shift"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_O8_convertFromADMBaseGamma", 10, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_O8_convertFromADMBaseGamma", 2, 2, 2);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_O8_convertFromADMBaseGamma", 3, 3, 3);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_O8_convertFromADMBaseGamma", 4, 4, 4);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_O8_convertFromADMBaseGamma", 5, 5, 5);
+ break;
+ }
+
GenericFD_LoopOverInterior(cctkGH, &ML_BSSN_MP_O8_convertFromADMBaseGamma_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_MP_O8_convertFromADMBaseGamma_Body");
+ }
}
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 bdd82c7..22bc331 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
@@ -13,15 +13,16 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
-static void ML_BSSN_MP_O8_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_MP_O8_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;
@@ -29,20 +30,6 @@ static void ML_BSSN_MP_O8_convertToADMBase_Body(cGH const * restrict const cctkG
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_O8_convertToADMBase_Body");
- }
-
- if (cctk_iteration % ML_BSSN_MP_O8_convertToADMBase_calc_every != ML_BSSN_MP_O8_convertToADMBase_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ADMBase::curv","ADMBase::lapse","ADMBase::metric","ADMBase::shift","ML_BSSN_MP_O8::ML_curv","ML_BSSN_MP_O8::ML_lapse","ML_BSSN_MP_O8::ML_log_confac","ML_BSSN_MP_O8::ML_metric","ML_BSSN_MP_O8::ML_shift","ML_BSSN_MP_O8::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_O8_convertToADMBase", 10, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -52,47 +39,102 @@ static void ML_BSSN_MP_O8_convertToADMBase_Body(cGH const * restrict const cctkG
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o1024dx = 0.0009765625*INV(dx);
- CCTK_REAL const p1o1024dy = 0.0009765625*INV(dy);
- CCTK_REAL const p1o1024dz = 0.0009765625*INV(dz);
- CCTK_REAL const p1o1680dx = 0.000595238095238095238095238095238*INV(dx);
- CCTK_REAL const p1o1680dy = 0.000595238095238095238095238095238*INV(dy);
- CCTK_REAL const p1o1680dz = 0.000595238095238095238095238095238*INV(dz);
- CCTK_REAL const p1o5040dx2 = 0.000198412698412698412698412698413*INV(SQR(dx));
- CCTK_REAL const p1o5040dy2 = 0.000198412698412698412698412698413*INV(SQR(dy));
- CCTK_REAL const p1o5040dz2 = 0.000198412698412698412698412698413*INV(SQR(dz));
- CCTK_REAL const p1o560dx = 0.00178571428571428571428571428571*INV(dx);
- CCTK_REAL const p1o560dy = 0.00178571428571428571428571428571*INV(dy);
- CCTK_REAL const p1o560dz = 0.00178571428571428571428571428571*INV(dz);
- CCTK_REAL const p1o705600dxdy = 1.41723356009070294784580498866e-6*INV(dx)*INV(dy);
- CCTK_REAL const p1o705600dxdz = 1.41723356009070294784580498866e-6*INV(dx)*INV(dz);
- CCTK_REAL const p1o705600dydz = 1.41723356009070294784580498866e-6*INV(dy)*INV(dz);
- CCTK_REAL const p1o840dx = 0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const p1o840dy = 0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const p1o840dz = 0.00119047619047619047619047619048*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o840dx = -0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const pm1o840dy = -0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const pm1o840dz = -0.00119047619047619047619047619048*INV(dz);
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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)
@@ -139,40 +181,49 @@ static void ML_BSSN_MP_O8_convertToADMBase_Body(cGH const * restrict const cctkG
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_LOOP3 (ML_BSSN_MP_O8_convertToADMBase,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_MP_O8_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 alphaL = alpha[index];
- CCTK_REAL At11L = At11[index];
- CCTK_REAL At12L = At12[index];
- CCTK_REAL At13L = At13[index];
- CCTK_REAL At22L = At22[index];
- CCTK_REAL At23L = At23[index];
- CCTK_REAL At33L = At33[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL gt11L = gt11[index];
- CCTK_REAL gt12L = gt12[index];
- CCTK_REAL gt13L = gt13[index];
- CCTK_REAL gt22L = gt22[index];
- CCTK_REAL gt23L = gt23[index];
- CCTK_REAL gt33L = gt33[index];
- CCTK_REAL gxxL = gxx[index];
- CCTK_REAL gxyL = gxy[index];
- CCTK_REAL gxzL = gxz[index];
- CCTK_REAL gyyL = gyy[index];
- CCTK_REAL gyzL = gyz[index];
- CCTK_REAL gzzL = gzz[index];
- CCTK_REAL phiL = phi[index];
- CCTK_REAL trKL = trK[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 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]);
@@ -180,66 +231,153 @@ static void ML_BSSN_MP_O8_convertToADMBase_Body(cGH const * restrict const cctkG
/* Precompute derivatives */
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
/* Calculate temporaries and grid functions */
- CCTK_REAL e4phi = IfThen(conformalMethod,INV(SQR(phiL)),exp(4*phiL));
+ CCTK_REAL_VEC e4phi =
+ IfThen(conformalMethod,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
+
+ gxxL = kmul(e4phi,gt11L);
+
+ gxyL = kmul(e4phi,gt12L);
+
+ gxzL = kmul(e4phi,gt13L);
+
+ gyyL = kmul(e4phi,gt22L);
+
+ gyzL = kmul(e4phi,gt23L);
- gxxL = e4phi*gt11L;
+ gzzL = kmul(e4phi,gt33L);
- gxyL = e4phi*gt12L;
+ CCTK_REAL_VEC kxxL =
+ kmadd(At11L,e4phi,kmul(gxxL,kmul(trKL,ToReal(0.333333333333333333333333333333))));
- gxzL = e4phi*gt13L;
+ CCTK_REAL_VEC kxyL =
+ kmadd(At12L,e4phi,kmul(gxyL,kmul(trKL,ToReal(0.333333333333333333333333333333))));
- gyyL = e4phi*gt22L;
+ CCTK_REAL_VEC kxzL =
+ kmadd(At13L,e4phi,kmul(gxzL,kmul(trKL,ToReal(0.333333333333333333333333333333))));
- gyzL = e4phi*gt23L;
+ CCTK_REAL_VEC kyyL =
+ kmadd(At22L,e4phi,kmul(gyyL,kmul(trKL,ToReal(0.333333333333333333333333333333))));
- gzzL = e4phi*gt33L;
+ CCTK_REAL_VEC kyzL =
+ kmadd(At23L,e4phi,kmul(gyzL,kmul(trKL,ToReal(0.333333333333333333333333333333))));
- CCTK_REAL kxxL = At11L*e4phi +
- 0.333333333333333333333333333333*gxxL*trKL;
+ CCTK_REAL_VEC kzzL =
+ kmadd(At33L,e4phi,kmul(gzzL,kmul(trKL,ToReal(0.333333333333333333333333333333))));
- CCTK_REAL kxyL = At12L*e4phi +
- 0.333333333333333333333333333333*gxyL*trKL;
+ CCTK_REAL_VEC alpL = alphaL;
- CCTK_REAL kxzL = At13L*e4phi +
- 0.333333333333333333333333333333*gxzL*trKL;
+ CCTK_REAL_VEC betaxL = beta1L;
- CCTK_REAL kyyL = At22L*e4phi +
- 0.333333333333333333333333333333*gyyL*trKL;
+ CCTK_REAL_VEC betayL = beta2L;
- CCTK_REAL kyzL = At23L*e4phi +
- 0.333333333333333333333333333333*gyzL*trKL;
+ CCTK_REAL_VEC betazL = beta3L;
- CCTK_REAL kzzL = At33L*e4phi +
- 0.333333333333333333333333333333*gzzL*trKL;
+ /* If necessary, store only partial vectors after the first iteration */
- CCTK_REAL alpL = alphaL;
+ 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(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;
+ }
- CCTK_REAL betaxL = beta1L;
+ /* If necessary, store only partial vectors after the first iteration */
- CCTK_REAL betayL = beta2L;
+ 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(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;
+ }
- CCTK_REAL betazL = beta3L;
+ /* If necessary, store only partial vectors after the last iteration */
- /* Copy local copies back to grid functions */
- alp[index] = alpL;
- betax[index] = betaxL;
- betay[index] = betayL;
- betaz[index] = betazL;
- gxx[index] = gxxL;
- gxy[index] = gxyL;
- gxz[index] = gxzL;
- gyy[index] = gyyL;
- gyz[index] = gyzL;
- gzz[index] = gzzL;
- kxx[index] = kxxL;
- kxy[index] = kxyL;
- kxz[index] = kxzL;
- kyy[index] = kyyL;
- kyz[index] = kyzL;
- kzz[index] = kzzL;
+ 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(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(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);
}
- LC_ENDLOOP3 (ML_BSSN_MP_O8_convertToADMBase);
+ LC_ENDLOOP3VEC (ML_BSSN_MP_O8_convertToADMBase);
}
extern "C" void ML_BSSN_MP_O8_convertToADMBase(CCTK_ARGUMENTS)
@@ -247,5 +385,39 @@ extern "C" void ML_BSSN_MP_O8_convertToADMBase(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_O8_convertToADMBase_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_MP_O8_convertToADMBase_calc_every != ML_BSSN_MP_O8_convertToADMBase_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ADMBase::curv","ADMBase::lapse","ADMBase::metric","ADMBase::shift","ML_BSSN_MP_O8::ML_curv","ML_BSSN_MP_O8::ML_lapse","ML_BSSN_MP_O8::ML_log_confac","ML_BSSN_MP_O8::ML_metric","ML_BSSN_MP_O8::ML_shift","ML_BSSN_MP_O8::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_O8_convertToADMBase", 10, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverEverything(cctkGH, &ML_BSSN_MP_O8_convertToADMBase_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_MP_O8_convertToADMBase_Body");
+ }
}
diff --git a/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_convertToADMBaseDtLapseShift.cc b/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_convertToADMBaseDtLapseShift.cc
index f03ef10..b804915 100644
--- a/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_convertToADMBaseDtLapseShift.cc
+++ b/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_convertToADMBaseDtLapseShift.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_MP_O8_convertToADMBaseDtLapseShift_SelectBCs(CCTK_ARGUMENTS)
{
@@ -36,7 +37,7 @@ extern "C" void ML_BSSN_MP_O8_convertToADMBaseDtLapseShift_SelectBCs(CCTK_ARGUME
return;
}
-static void ML_BSSN_MP_O8_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_MP_O8_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;
@@ -44,21 +45,6 @@ static void ML_BSSN_MP_O8_convertToADMBaseDtLapseShift_Body(cGH const * restrict
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_O8_convertToADMBaseDtLapseShift_Body");
- }
-
- if (cctk_iteration % ML_BSSN_MP_O8_convertToADMBaseDtLapseShift_calc_every != ML_BSSN_MP_O8_convertToADMBaseDtLapseShift_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ADMBase::dtlapse","ADMBase::dtshift","grid::coordinates","Grid::coordinates","ML_BSSN_MP_O8::ML_dtlapse","ML_BSSN_MP_O8::ML_dtshift","ML_BSSN_MP_O8::ML_Gamma","ML_BSSN_MP_O8::ML_lapse","ML_BSSN_MP_O8::ML_shift","ML_BSSN_MP_O8::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_O8_convertToADMBaseDtLapseShift", 10, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_O8_convertToADMBaseDtLapseShift", 5, 5, 5);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -68,47 +54,102 @@ static void ML_BSSN_MP_O8_convertToADMBaseDtLapseShift_Body(cGH const * restrict
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o1024dx = 0.0009765625*INV(dx);
- CCTK_REAL const p1o1024dy = 0.0009765625*INV(dy);
- CCTK_REAL const p1o1024dz = 0.0009765625*INV(dz);
- CCTK_REAL const p1o1680dx = 0.000595238095238095238095238095238*INV(dx);
- CCTK_REAL const p1o1680dy = 0.000595238095238095238095238095238*INV(dy);
- CCTK_REAL const p1o1680dz = 0.000595238095238095238095238095238*INV(dz);
- CCTK_REAL const p1o5040dx2 = 0.000198412698412698412698412698413*INV(SQR(dx));
- CCTK_REAL const p1o5040dy2 = 0.000198412698412698412698412698413*INV(SQR(dy));
- CCTK_REAL const p1o5040dz2 = 0.000198412698412698412698412698413*INV(SQR(dz));
- CCTK_REAL const p1o560dx = 0.00178571428571428571428571428571*INV(dx);
- CCTK_REAL const p1o560dy = 0.00178571428571428571428571428571*INV(dy);
- CCTK_REAL const p1o560dz = 0.00178571428571428571428571428571*INV(dz);
- CCTK_REAL const p1o705600dxdy = 1.41723356009070294784580498866e-6*INV(dx)*INV(dy);
- CCTK_REAL const p1o705600dxdz = 1.41723356009070294784580498866e-6*INV(dx)*INV(dz);
- CCTK_REAL const p1o705600dydz = 1.41723356009070294784580498866e-6*INV(dy)*INV(dz);
- CCTK_REAL const p1o840dx = 0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const p1o840dy = 0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const p1o840dz = 0.00119047619047619047619047619048*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o840dx = -0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const pm1o840dy = -0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const pm1o840dz = -0.00119047619047619047619047619048*INV(dz);
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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)
@@ -155,176 +196,573 @@ static void ML_BSSN_MP_O8_convertToADMBaseDtLapseShift_Body(cGH const * restrict
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_LOOP3 (ML_BSSN_MP_O8_convertToADMBaseDtLapseShift,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_MP_O8_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 AL = A[index];
- CCTK_REAL alphaL = alpha[index];
- CCTK_REAL B1L = B1[index];
- CCTK_REAL B2L = B2[index];
- CCTK_REAL B3L = B3[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL rL = r[index];
- CCTK_REAL trKL = trK[index];
- CCTK_REAL Xt1L = Xt1[index];
- CCTK_REAL Xt2L = Xt2[index];
- CCTK_REAL Xt3L = Xt3[index];
+ 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 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 J11L, J12L, J13L, J21L, J22L, J23L, J31L, J32L, J33L;
+ CCTK_REAL_VEC J11L, J12L, J13L, J21L, J22L, J23L, J31L, J32L, J33L;
if (use_jacobian)
{
- J11L = J11[index];
- J12L = J12[index];
- J13L = J13[index];
- J21L = J21[index];
- J22L = J22[index];
- J23L = J23[index];
- J31L = J31[index];
- J32L = J32[index];
- J33L = J33[index];
+ J11L = vec_load(J11[index]);
+ J12L = vec_load(J12[index]);
+ J13L = vec_load(J13[index]);
+ J21L = vec_load(J21[index]);
+ J22L = vec_load(J22[index]);
+ J23L = vec_load(J23[index]);
+ J31L = vec_load(J31[index]);
+ J32L = vec_load(J32[index]);
+ J33L = vec_load(J33[index]);
}
/* Include user supplied include files */
/* Precompute derivatives */
- CCTK_REAL const PDupwindNthAnti1alpha = PDupwindNthAnti1(&alpha[index]);
- CCTK_REAL const PDupwindNthSymm1alpha = PDupwindNthSymm1(&alpha[index]);
- CCTK_REAL const PDupwindNthAnti2alpha = PDupwindNthAnti2(&alpha[index]);
- CCTK_REAL const PDupwindNthSymm2alpha = PDupwindNthSymm2(&alpha[index]);
- CCTK_REAL const PDupwindNthAnti3alpha = PDupwindNthAnti3(&alpha[index]);
- CCTK_REAL const PDupwindNthSymm3alpha = PDupwindNthSymm3(&alpha[index]);
- CCTK_REAL const PDupwindNthAnti1beta1 = PDupwindNthAnti1(&beta1[index]);
- CCTK_REAL const PDupwindNthSymm1beta1 = PDupwindNthSymm1(&beta1[index]);
- CCTK_REAL const PDupwindNthAnti2beta1 = PDupwindNthAnti2(&beta1[index]);
- CCTK_REAL const PDupwindNthSymm2beta1 = PDupwindNthSymm2(&beta1[index]);
- CCTK_REAL const PDupwindNthAnti3beta1 = PDupwindNthAnti3(&beta1[index]);
- CCTK_REAL const PDupwindNthSymm3beta1 = PDupwindNthSymm3(&beta1[index]);
- CCTK_REAL const PDupwindNthAnti1beta2 = PDupwindNthAnti1(&beta2[index]);
- CCTK_REAL const PDupwindNthSymm1beta2 = PDupwindNthSymm1(&beta2[index]);
- CCTK_REAL const PDupwindNthAnti2beta2 = PDupwindNthAnti2(&beta2[index]);
- CCTK_REAL const PDupwindNthSymm2beta2 = PDupwindNthSymm2(&beta2[index]);
- CCTK_REAL const PDupwindNthAnti3beta2 = PDupwindNthAnti3(&beta2[index]);
- CCTK_REAL const PDupwindNthSymm3beta2 = PDupwindNthSymm3(&beta2[index]);
- CCTK_REAL const PDupwindNthAnti1beta3 = PDupwindNthAnti1(&beta3[index]);
- CCTK_REAL const PDupwindNthSymm1beta3 = PDupwindNthSymm1(&beta3[index]);
- CCTK_REAL const PDupwindNthAnti2beta3 = PDupwindNthAnti2(&beta3[index]);
- CCTK_REAL const PDupwindNthSymm2beta3 = PDupwindNthSymm2(&beta3[index]);
- CCTK_REAL const PDupwindNthAnti3beta3 = PDupwindNthAnti3(&beta3[index]);
- CCTK_REAL const PDupwindNthSymm3beta3 = PDupwindNthSymm3(&beta3[index]);
+ CCTK_REAL_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 */
- CCTK_REAL JacPDupwindNthAnti1alpha;
- CCTK_REAL JacPDupwindNthAnti1beta1;
- CCTK_REAL JacPDupwindNthAnti1beta2;
- CCTK_REAL JacPDupwindNthAnti1beta3;
- CCTK_REAL JacPDupwindNthAnti2alpha;
- CCTK_REAL JacPDupwindNthAnti2beta1;
- CCTK_REAL JacPDupwindNthAnti2beta2;
- CCTK_REAL JacPDupwindNthAnti2beta3;
- CCTK_REAL JacPDupwindNthAnti3alpha;
- CCTK_REAL JacPDupwindNthAnti3beta1;
- CCTK_REAL JacPDupwindNthAnti3beta2;
- CCTK_REAL JacPDupwindNthAnti3beta3;
- CCTK_REAL JacPDupwindNthSymm1alpha;
- CCTK_REAL JacPDupwindNthSymm1beta1;
- CCTK_REAL JacPDupwindNthSymm1beta2;
- CCTK_REAL JacPDupwindNthSymm1beta3;
- CCTK_REAL JacPDupwindNthSymm2alpha;
- CCTK_REAL JacPDupwindNthSymm2beta1;
- CCTK_REAL JacPDupwindNthSymm2beta2;
- CCTK_REAL JacPDupwindNthSymm2beta3;
- CCTK_REAL JacPDupwindNthSymm3alpha;
- CCTK_REAL JacPDupwindNthSymm3beta1;
- CCTK_REAL JacPDupwindNthSymm3beta2;
- CCTK_REAL JacPDupwindNthSymm3beta3;
+ 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)
{
- JacPDupwindNthAnti1alpha = J11L*PDupwindNthAnti1alpha +
- J21L*PDupwindNthAnti2alpha + J31L*PDupwindNthAnti3alpha;
+ 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)));
- JacPDupwindNthAnti1beta1 = J11L*PDupwindNthAnti1beta1 +
- J21L*PDupwindNthAnti2beta1 + J31L*PDupwindNthAnti3beta1;
+ JacPDstandardNth1gt23 =
+ kmadd(J11L,PDstandardNth1gt23,kmadd(J21L,PDstandardNth2gt23,kmul(J31L,PDstandardNth3gt23)));
- JacPDupwindNthAnti1beta2 = J11L*PDupwindNthAnti1beta2 +
- J21L*PDupwindNthAnti2beta2 + J31L*PDupwindNthAnti3beta2;
+ JacPDstandardNth1gt33 =
+ kmadd(J11L,PDstandardNth1gt33,kmadd(J21L,PDstandardNth2gt33,kmul(J31L,PDstandardNth3gt33)));
- JacPDupwindNthAnti1beta3 = J11L*PDupwindNthAnti1beta3 +
- J21L*PDupwindNthAnti2beta3 + J31L*PDupwindNthAnti3beta3;
+ JacPDstandardNth1phi =
+ kmadd(J11L,PDstandardNth1phi,kmadd(J21L,PDstandardNth2phi,kmul(J31L,PDstandardNth3phi)));
- JacPDupwindNthSymm1alpha = J11L*PDupwindNthSymm1alpha +
- J21L*PDupwindNthSymm2alpha + J31L*PDupwindNthSymm3alpha;
+ JacPDstandardNth2alpha =
+ kmadd(J12L,PDstandardNth1alpha,kmadd(J22L,PDstandardNth2alpha,kmul(J32L,PDstandardNth3alpha)));
- JacPDupwindNthSymm1beta1 = J11L*PDupwindNthSymm1beta1 +
- J21L*PDupwindNthSymm2beta1 + J31L*PDupwindNthSymm3beta1;
+ JacPDstandardNth2gt11 =
+ kmadd(J12L,PDstandardNth1gt11,kmadd(J22L,PDstandardNth2gt11,kmul(J32L,PDstandardNth3gt11)));
- JacPDupwindNthSymm1beta2 = J11L*PDupwindNthSymm1beta2 +
- J21L*PDupwindNthSymm2beta2 + J31L*PDupwindNthSymm3beta2;
+ JacPDstandardNth2gt12 =
+ kmadd(J12L,PDstandardNth1gt12,kmadd(J22L,PDstandardNth2gt12,kmul(J32L,PDstandardNth3gt12)));
- JacPDupwindNthSymm1beta3 = J11L*PDupwindNthSymm1beta3 +
- J21L*PDupwindNthSymm2beta3 + J31L*PDupwindNthSymm3beta3;
+ JacPDstandardNth2gt13 =
+ kmadd(J12L,PDstandardNth1gt13,kmadd(J22L,PDstandardNth2gt13,kmul(J32L,PDstandardNth3gt13)));
- JacPDupwindNthAnti2alpha = J12L*PDupwindNthAnti1alpha +
- J22L*PDupwindNthAnti2alpha + J32L*PDupwindNthAnti3alpha;
+ JacPDstandardNth2gt22 =
+ kmadd(J12L,PDstandardNth1gt22,kmadd(J22L,PDstandardNth2gt22,kmul(J32L,PDstandardNth3gt22)));
- JacPDupwindNthAnti2beta1 = J12L*PDupwindNthAnti1beta1 +
- J22L*PDupwindNthAnti2beta1 + J32L*PDupwindNthAnti3beta1;
+ JacPDstandardNth2gt23 =
+ kmadd(J12L,PDstandardNth1gt23,kmadd(J22L,PDstandardNth2gt23,kmul(J32L,PDstandardNth3gt23)));
- JacPDupwindNthAnti2beta2 = J12L*PDupwindNthAnti1beta2 +
- J22L*PDupwindNthAnti2beta2 + J32L*PDupwindNthAnti3beta2;
+ JacPDstandardNth2gt33 =
+ kmadd(J12L,PDstandardNth1gt33,kmadd(J22L,PDstandardNth2gt33,kmul(J32L,PDstandardNth3gt33)));
- JacPDupwindNthAnti2beta3 = J12L*PDupwindNthAnti1beta3 +
- J22L*PDupwindNthAnti2beta3 + J32L*PDupwindNthAnti3beta3;
+ JacPDstandardNth2phi =
+ kmadd(J12L,PDstandardNth1phi,kmadd(J22L,PDstandardNth2phi,kmul(J32L,PDstandardNth3phi)));
- JacPDupwindNthSymm2alpha = J12L*PDupwindNthSymm1alpha +
- J22L*PDupwindNthSymm2alpha + J32L*PDupwindNthSymm3alpha;
+ JacPDstandardNth3alpha =
+ kmadd(J13L,PDstandardNth1alpha,kmadd(J23L,PDstandardNth2alpha,kmul(J33L,PDstandardNth3alpha)));
- JacPDupwindNthSymm2beta1 = J12L*PDupwindNthSymm1beta1 +
- J22L*PDupwindNthSymm2beta1 + J32L*PDupwindNthSymm3beta1;
+ JacPDstandardNth3gt11 =
+ kmadd(J13L,PDstandardNth1gt11,kmadd(J23L,PDstandardNth2gt11,kmul(J33L,PDstandardNth3gt11)));
- JacPDupwindNthSymm2beta2 = J12L*PDupwindNthSymm1beta2 +
- J22L*PDupwindNthSymm2beta2 + J32L*PDupwindNthSymm3beta2;
+ JacPDstandardNth3gt12 =
+ kmadd(J13L,PDstandardNth1gt12,kmadd(J23L,PDstandardNth2gt12,kmul(J33L,PDstandardNth3gt12)));
- JacPDupwindNthSymm2beta3 = J12L*PDupwindNthSymm1beta3 +
- J22L*PDupwindNthSymm2beta3 + J32L*PDupwindNthSymm3beta3;
+ JacPDstandardNth3gt13 =
+ kmadd(J13L,PDstandardNth1gt13,kmadd(J23L,PDstandardNth2gt13,kmul(J33L,PDstandardNth3gt13)));
- JacPDupwindNthAnti3alpha = J13L*PDupwindNthAnti1alpha +
- J23L*PDupwindNthAnti2alpha + J33L*PDupwindNthAnti3alpha;
+ JacPDstandardNth3gt22 =
+ kmadd(J13L,PDstandardNth1gt22,kmadd(J23L,PDstandardNth2gt22,kmul(J33L,PDstandardNth3gt22)));
- JacPDupwindNthAnti3beta1 = J13L*PDupwindNthAnti1beta1 +
- J23L*PDupwindNthAnti2beta1 + J33L*PDupwindNthAnti3beta1;
+ JacPDstandardNth3gt23 =
+ kmadd(J13L,PDstandardNth1gt23,kmadd(J23L,PDstandardNth2gt23,kmul(J33L,PDstandardNth3gt23)));
- JacPDupwindNthAnti3beta2 = J13L*PDupwindNthAnti1beta2 +
- J23L*PDupwindNthAnti2beta2 + J33L*PDupwindNthAnti3beta2;
+ JacPDstandardNth3gt33 =
+ kmadd(J13L,PDstandardNth1gt33,kmadd(J23L,PDstandardNth2gt33,kmul(J33L,PDstandardNth3gt33)));
- JacPDupwindNthAnti3beta3 = J13L*PDupwindNthAnti1beta3 +
- J23L*PDupwindNthAnti2beta3 + J33L*PDupwindNthAnti3beta3;
+ JacPDstandardNth3phi =
+ kmadd(J13L,PDstandardNth1phi,kmadd(J23L,PDstandardNth2phi,kmul(J33L,PDstandardNth3phi)));
- JacPDupwindNthSymm3alpha = J13L*PDupwindNthSymm1alpha +
- J23L*PDupwindNthSymm2alpha + J33L*PDupwindNthSymm3alpha;
+ JacPDupwindNthAnti1alpha =
+ kmadd(J11L,PDupwindNthAnti1alpha,kmadd(J21L,PDupwindNthAnti2alpha,kmul(J31L,PDupwindNthAnti3alpha)));
- JacPDupwindNthSymm3beta1 = J13L*PDupwindNthSymm1beta1 +
- J23L*PDupwindNthSymm2beta1 + J33L*PDupwindNthSymm3beta1;
+ JacPDupwindNthAnti1beta1 =
+ kmadd(J11L,PDupwindNthAnti1beta1,kmadd(J21L,PDupwindNthAnti2beta1,kmul(J31L,PDupwindNthAnti3beta1)));
- JacPDupwindNthSymm3beta2 = J13L*PDupwindNthSymm1beta2 +
- J23L*PDupwindNthSymm2beta2 + J33L*PDupwindNthSymm3beta2;
+ JacPDupwindNthAnti1beta2 =
+ kmadd(J11L,PDupwindNthAnti1beta2,kmadd(J21L,PDupwindNthAnti2beta2,kmul(J31L,PDupwindNthAnti3beta2)));
- JacPDupwindNthSymm3beta3 = J13L*PDupwindNthSymm1beta3 +
- J23L*PDupwindNthSymm2beta3 + J33L*PDupwindNthSymm3beta3;
+ 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;
@@ -374,56 +812,89 @@ static void ML_BSSN_MP_O8_convertToADMBaseDtLapseShift_Body(cGH const * restrict
JacPDupwindNthSymm3beta3 = PDupwindNthSymm3beta3;
}
- ptrdiff_t dir1 = Sign(beta1L);
+ CCTK_REAL_VEC detgt = ToReal(1);
- ptrdiff_t dir2 = Sign(beta2L);
+ CCTK_REAL_VEC gtu11 = kmul(INV(detgt),kmsub(gt22L,gt33L,SQR(gt23L)));
- ptrdiff_t dir3 = Sign(beta3L);
+ 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 =
+ kfmin(ToReal(1),kmul(INV(rL),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(ksub(AL,trKL),ToReal(LapseACoeff),trKL))));
+
+ 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(kmadd(gtu11,JacPDstandardNth1alpha,kmadd(gtu12,JacPDstandardNth2alpha,kmul(gtu13,JacPDstandardNth3alpha))),kmul(phiL,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(beta1L,kmul(eta,ToReal(BetaDriver*(-1
+ +
+ ShiftBCoeff))),kmul(ksub(B1L,Xt1L),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(kmadd(gtu12,JacPDstandardNth1alpha,kmadd(gtu22,JacPDstandardNth2alpha,kmul(gtu23,JacPDstandardNth3alpha))),kmul(phiL,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(beta2L,kmul(eta,ToReal(BetaDriver*(-1
+ +
+ ShiftBCoeff))),kmul(ksub(B2L,Xt2L),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(kmadd(gtu13,JacPDstandardNth1alpha,kmadd(gtu23,JacPDstandardNth2alpha,kmul(gtu33,JacPDstandardNth3alpha))),kmul(phiL,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(beta3L,kmul(eta,ToReal(BetaDriver*(-1
+ +
+ ShiftBCoeff))),kmul(ksub(B3L,Xt3L),ToReal(ShiftBCoeff)))),ToReal(ShiftGammaCoeff)))));
+
+ /* 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(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);
+ 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(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);
+ continue;
+ }
+
+ /* If necessary, store only partial vectors after the last iteration */
- CCTK_REAL eta = fmin(1,INV(rL)*ToReal(SpatialBetaDriverRadius));
-
- CCTK_REAL theta = fmin(1,exp(1 -
- rL*INV(ToReal(SpatialShiftGammaCoeffRadius))));
-
- CCTK_REAL dtalpL =
- -(pow(alphaL,ToReal(harmonicN))*ToReal(harmonicF)*(trKL + (AL -
- trKL)*ToReal(LapseACoeff))) + (beta1L*JacPDupwindNthAnti1alpha +
- beta2L*JacPDupwindNthAnti2alpha + beta3L*JacPDupwindNthAnti3alpha +
- JacPDupwindNthSymm1alpha*Abs(beta1L) +
- JacPDupwindNthSymm2alpha*Abs(beta2L) +
- JacPDupwindNthSymm3alpha*Abs(beta3L))*ToReal(LapseAdvectionCoeff);
-
- CCTK_REAL dtbetaxL = (beta1L*JacPDupwindNthAnti1beta1 +
- beta2L*JacPDupwindNthAnti2beta1 + beta3L*JacPDupwindNthAnti3beta1 +
- JacPDupwindNthSymm1beta1*Abs(beta1L) +
- JacPDupwindNthSymm2beta1*Abs(beta2L) +
- JacPDupwindNthSymm3beta1*Abs(beta3L))*ToReal(ShiftAdvectionCoeff) +
- theta*(Xt1L + beta1L*eta*ToReal(BetaDriver)*(-1 + ToReal(ShiftBCoeff))
- + (B1L - Xt1L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
-
- CCTK_REAL dtbetayL = (beta1L*JacPDupwindNthAnti1beta2 +
- beta2L*JacPDupwindNthAnti2beta2 + beta3L*JacPDupwindNthAnti3beta2 +
- JacPDupwindNthSymm1beta2*Abs(beta1L) +
- JacPDupwindNthSymm2beta2*Abs(beta2L) +
- JacPDupwindNthSymm3beta2*Abs(beta3L))*ToReal(ShiftAdvectionCoeff) +
- theta*(Xt2L + beta2L*eta*ToReal(BetaDriver)*(-1 + ToReal(ShiftBCoeff))
- + (B2L - Xt2L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
-
- CCTK_REAL dtbetazL = (beta1L*JacPDupwindNthAnti1beta3 +
- beta2L*JacPDupwindNthAnti2beta3 + beta3L*JacPDupwindNthAnti3beta3 +
- JacPDupwindNthSymm1beta3*Abs(beta1L) +
- JacPDupwindNthSymm2beta3*Abs(beta2L) +
- JacPDupwindNthSymm3beta3*Abs(beta3L))*ToReal(ShiftAdvectionCoeff) +
- theta*(Xt3L + beta3L*eta*ToReal(BetaDriver)*(-1 + ToReal(ShiftBCoeff))
- + (B3L - Xt3L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
-
- /* Copy local copies back to grid functions */
- dtalp[index] = dtalpL;
- dtbetax[index] = dtbetaxL;
- dtbetay[index] = dtbetayL;
- dtbetaz[index] = dtbetazL;
+ 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(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);
+ break;
+ }
+ vec_store_nta(dtalp[index],dtalpL);
+ vec_store_nta(dtbetax[index],dtbetaxL);
+ vec_store_nta(dtbetay[index],dtbetayL);
+ vec_store_nta(dtbetaz[index],dtbetazL);
}
- LC_ENDLOOP3 (ML_BSSN_MP_O8_convertToADMBaseDtLapseShift);
+ LC_ENDLOOP3VEC (ML_BSSN_MP_O8_convertToADMBaseDtLapseShift);
}
extern "C" void ML_BSSN_MP_O8_convertToADMBaseDtLapseShift(CCTK_ARGUMENTS)
@@ -431,5 +902,43 @@ extern "C" void ML_BSSN_MP_O8_convertToADMBaseDtLapseShift(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_O8_convertToADMBaseDtLapseShift_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_MP_O8_convertToADMBaseDtLapseShift_calc_every != ML_BSSN_MP_O8_convertToADMBaseDtLapseShift_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ADMBase::dtlapse","ADMBase::dtshift","grid::coordinates","Grid::coordinates","ML_BSSN_MP_O8::ML_dtlapse","ML_BSSN_MP_O8::ML_dtshift","ML_BSSN_MP_O8::ML_Gamma","ML_BSSN_MP_O8::ML_lapse","ML_BSSN_MP_O8::ML_log_confac","ML_BSSN_MP_O8::ML_metric","ML_BSSN_MP_O8::ML_shift","ML_BSSN_MP_O8::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_O8_convertToADMBaseDtLapseShift", 12, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_O8_convertToADMBaseDtLapseShift", 2, 2, 2);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_O8_convertToADMBaseDtLapseShift", 3, 3, 3);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_O8_convertToADMBaseDtLapseShift", 4, 4, 4);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_MP_O8_convertToADMBaseDtLapseShift", 5, 5, 5);
+ break;
+ }
+
GenericFD_LoopOverInterior(cctkGH, &ML_BSSN_MP_O8_convertToADMBaseDtLapseShift_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_MP_O8_convertToADMBaseDtLapseShift_Body");
+ }
}
diff --git a/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_convertToADMBaseDtLapseShiftBoundary.cc b/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_convertToADMBaseDtLapseShiftBoundary.cc
index be00add..4354c9a 100644
--- a/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_convertToADMBaseDtLapseShiftBoundary.cc
+++ b/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_convertToADMBaseDtLapseShiftBoundary.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_MP_O8_convertToADMBaseDtLapseShiftBoundary_SelectBCs(CCTK_ARGUMENTS)
{
@@ -36,7 +37,7 @@ extern "C" void ML_BSSN_MP_O8_convertToADMBaseDtLapseShiftBoundary_SelectBCs(CCT
return;
}
-static void ML_BSSN_MP_O8_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_MP_O8_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;
@@ -44,20 +45,6 @@ static void ML_BSSN_MP_O8_convertToADMBaseDtLapseShiftBoundary_Body(cGH const *
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_O8_convertToADMBaseDtLapseShiftBoundary_Body");
- }
-
- if (cctk_iteration % ML_BSSN_MP_O8_convertToADMBaseDtLapseShiftBoundary_calc_every != ML_BSSN_MP_O8_convertToADMBaseDtLapseShiftBoundary_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ADMBase::dtlapse","ADMBase::dtshift","grid::coordinates","Grid::coordinates","ML_BSSN_MP_O8::ML_dtlapse","ML_BSSN_MP_O8::ML_dtshift","ML_BSSN_MP_O8::ML_Gamma","ML_BSSN_MP_O8::ML_lapse","ML_BSSN_MP_O8::ML_shift","ML_BSSN_MP_O8::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_O8_convertToADMBaseDtLapseShiftBoundary", 10, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -67,47 +54,102 @@ static void ML_BSSN_MP_O8_convertToADMBaseDtLapseShiftBoundary_Body(cGH const *
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o1024dx = 0.0009765625*INV(dx);
- CCTK_REAL const p1o1024dy = 0.0009765625*INV(dy);
- CCTK_REAL const p1o1024dz = 0.0009765625*INV(dz);
- CCTK_REAL const p1o1680dx = 0.000595238095238095238095238095238*INV(dx);
- CCTK_REAL const p1o1680dy = 0.000595238095238095238095238095238*INV(dy);
- CCTK_REAL const p1o1680dz = 0.000595238095238095238095238095238*INV(dz);
- CCTK_REAL const p1o5040dx2 = 0.000198412698412698412698412698413*INV(SQR(dx));
- CCTK_REAL const p1o5040dy2 = 0.000198412698412698412698412698413*INV(SQR(dy));
- CCTK_REAL const p1o5040dz2 = 0.000198412698412698412698412698413*INV(SQR(dz));
- CCTK_REAL const p1o560dx = 0.00178571428571428571428571428571*INV(dx);
- CCTK_REAL const p1o560dy = 0.00178571428571428571428571428571*INV(dy);
- CCTK_REAL const p1o560dz = 0.00178571428571428571428571428571*INV(dz);
- CCTK_REAL const p1o705600dxdy = 1.41723356009070294784580498866e-6*INV(dx)*INV(dy);
- CCTK_REAL const p1o705600dxdz = 1.41723356009070294784580498866e-6*INV(dx)*INV(dz);
- CCTK_REAL const p1o705600dydz = 1.41723356009070294784580498866e-6*INV(dy)*INV(dz);
- CCTK_REAL const p1o840dx = 0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const p1o840dy = 0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const p1o840dz = 0.00119047619047619047619047619048*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o840dx = -0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const pm1o840dy = -0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const pm1o840dz = -0.00119047619047619047619047619048*INV(dz);
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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)
@@ -154,29 +196,38 @@ static void ML_BSSN_MP_O8_convertToADMBaseDtLapseShiftBoundary_Body(cGH const *
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_LOOP3 (ML_BSSN_MP_O8_convertToADMBaseDtLapseShiftBoundary,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_MP_O8_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 AL = A[index];
- CCTK_REAL alphaL = alpha[index];
- CCTK_REAL B1L = B1[index];
- CCTK_REAL B2L = B2[index];
- CCTK_REAL B3L = B3[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL rL = r[index];
- CCTK_REAL trKL = trK[index];
- CCTK_REAL Xt1L = Xt1[index];
- CCTK_REAL Xt2L = Xt2[index];
- CCTK_REAL Xt3L = Xt3[index];
+ 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 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]);
@@ -184,35 +235,100 @@ static void ML_BSSN_MP_O8_convertToADMBaseDtLapseShiftBoundary_Body(cGH const *
/* Precompute derivatives */
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
/* Calculate temporaries and grid functions */
- CCTK_REAL eta = fmin(1,INV(rL)*ToReal(SpatialBetaDriverRadius));
+ CCTK_REAL_VEC eta =
+ kfmin(ToReal(1),kmul(INV(rL),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(ksub(AL,trKL),ToReal(LapseACoeff),trKL))));
+
+ 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(beta1L,kmul(eta,ToReal(BetaDriver*(-1 +
+ ShiftBCoeff))),kmul(ksub(B1L,Xt1L),ToReal(ShiftBCoeff)))),ToReal(ShiftGammaCoeff)));
+
+ dtbetayL =
+ kmul(theta,kmul(kadd(Xt2L,kmadd(beta2L,kmul(eta,ToReal(BetaDriver*(-1 +
+ ShiftBCoeff))),kmul(ksub(B2L,Xt2L),ToReal(ShiftBCoeff)))),ToReal(ShiftGammaCoeff)));
+
+ dtbetazL =
+ kmul(theta,kmul(kadd(Xt3L,kmadd(beta3L,kmul(eta,ToReal(BetaDriver*(-1 +
+ ShiftBCoeff))),kmul(ksub(B3L,Xt3L),ToReal(ShiftBCoeff)))),ToReal(ShiftGammaCoeff)));
+ }
- CCTK_REAL theta = fmin(1,exp(1 -
- rL*INV(ToReal(SpatialShiftGammaCoeffRadius))));
+ /* If necessary, store only partial vectors after the first iteration */
- CCTK_REAL dtalpL =
- -(pow(alphaL,ToReal(harmonicN))*ToReal(harmonicF)*(trKL + (AL -
- trKL)*ToReal(LapseACoeff)));
+ 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(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);
+ break;
+ }
- CCTK_REAL dtbetaxL = theta*(Xt1L + beta1L*eta*ToReal(BetaDriver)*(-1 +
- ToReal(ShiftBCoeff)) + (B1L -
- Xt1L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
+ /* If necessary, store only partial vectors after the first iteration */
- CCTK_REAL dtbetayL = theta*(Xt2L + beta2L*eta*ToReal(BetaDriver)*(-1 +
- ToReal(ShiftBCoeff)) + (B2L -
- Xt2L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
+ 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(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);
+ continue;
+ }
- CCTK_REAL dtbetazL = theta*(Xt3L + beta3L*eta*ToReal(BetaDriver)*(-1 +
- ToReal(ShiftBCoeff)) + (B3L -
- Xt3L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
+ /* If necessary, store only partial vectors after the last iteration */
- /* Copy local copies back to grid functions */
- dtalp[index] = dtalpL;
- dtbetax[index] = dtbetaxL;
- dtbetay[index] = dtbetayL;
- dtbetaz[index] = dtbetazL;
+ 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(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);
+ break;
+ }
+ vec_store_nta(dtalp[index],dtalpL);
+ vec_store_nta(dtbetax[index],dtbetaxL);
+ vec_store_nta(dtbetay[index],dtbetayL);
+ vec_store_nta(dtbetaz[index],dtbetazL);
}
- LC_ENDLOOP3 (ML_BSSN_MP_O8_convertToADMBaseDtLapseShiftBoundary);
+ LC_ENDLOOP3VEC (ML_BSSN_MP_O8_convertToADMBaseDtLapseShiftBoundary);
}
extern "C" void ML_BSSN_MP_O8_convertToADMBaseDtLapseShiftBoundary(CCTK_ARGUMENTS)
@@ -220,5 +336,39 @@ extern "C" void ML_BSSN_MP_O8_convertToADMBaseDtLapseShiftBoundary(CCTK_ARGUMENT
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_O8_convertToADMBaseDtLapseShiftBoundary_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_MP_O8_convertToADMBaseDtLapseShiftBoundary_calc_every != ML_BSSN_MP_O8_convertToADMBaseDtLapseShiftBoundary_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ADMBase::dtlapse","ADMBase::dtshift","grid::coordinates","Grid::coordinates","ML_BSSN_MP_O8::ML_dtlapse","ML_BSSN_MP_O8::ML_dtshift","ML_BSSN_MP_O8::ML_Gamma","ML_BSSN_MP_O8::ML_lapse","ML_BSSN_MP_O8::ML_shift","ML_BSSN_MP_O8::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_O8_convertToADMBaseDtLapseShiftBoundary", 10, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverBoundaryWithGhosts(cctkGH, &ML_BSSN_MP_O8_convertToADMBaseDtLapseShiftBoundary_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_MP_O8_convertToADMBaseDtLapseShiftBoundary_Body");
+ }
}
diff --git a/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_convertToADMBaseFakeDtLapseShift.cc b/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_convertToADMBaseFakeDtLapseShift.cc
index 556fe3f..6e61e8e 100644
--- a/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_convertToADMBaseFakeDtLapseShift.cc
+++ b/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_convertToADMBaseFakeDtLapseShift.cc
@@ -13,15 +13,16 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
-static void ML_BSSN_MP_O8_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_MP_O8_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;
@@ -29,20 +30,6 @@ static void ML_BSSN_MP_O8_convertToADMBaseFakeDtLapseShift_Body(cGH const * rest
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_O8_convertToADMBaseFakeDtLapseShift_Body");
- }
-
- if (cctk_iteration % ML_BSSN_MP_O8_convertToADMBaseFakeDtLapseShift_calc_every != ML_BSSN_MP_O8_convertToADMBaseFakeDtLapseShift_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ADMBase::dtlapse","ADMBase::dtshift","grid::coordinates","Grid::coordinates","ML_BSSN_MP_O8::ML_dtlapse","ML_BSSN_MP_O8::ML_dtshift","ML_BSSN_MP_O8::ML_Gamma","ML_BSSN_MP_O8::ML_lapse","ML_BSSN_MP_O8::ML_shift","ML_BSSN_MP_O8::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_O8_convertToADMBaseFakeDtLapseShift", 10, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -52,47 +39,102 @@ static void ML_BSSN_MP_O8_convertToADMBaseFakeDtLapseShift_Body(cGH const * rest
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o1024dx = 0.0009765625*INV(dx);
- CCTK_REAL const p1o1024dy = 0.0009765625*INV(dy);
- CCTK_REAL const p1o1024dz = 0.0009765625*INV(dz);
- CCTK_REAL const p1o1680dx = 0.000595238095238095238095238095238*INV(dx);
- CCTK_REAL const p1o1680dy = 0.000595238095238095238095238095238*INV(dy);
- CCTK_REAL const p1o1680dz = 0.000595238095238095238095238095238*INV(dz);
- CCTK_REAL const p1o5040dx2 = 0.000198412698412698412698412698413*INV(SQR(dx));
- CCTK_REAL const p1o5040dy2 = 0.000198412698412698412698412698413*INV(SQR(dy));
- CCTK_REAL const p1o5040dz2 = 0.000198412698412698412698412698413*INV(SQR(dz));
- CCTK_REAL const p1o560dx = 0.00178571428571428571428571428571*INV(dx);
- CCTK_REAL const p1o560dy = 0.00178571428571428571428571428571*INV(dy);
- CCTK_REAL const p1o560dz = 0.00178571428571428571428571428571*INV(dz);
- CCTK_REAL const p1o705600dxdy = 1.41723356009070294784580498866e-6*INV(dx)*INV(dy);
- CCTK_REAL const p1o705600dxdz = 1.41723356009070294784580498866e-6*INV(dx)*INV(dz);
- CCTK_REAL const p1o705600dydz = 1.41723356009070294784580498866e-6*INV(dy)*INV(dz);
- CCTK_REAL const p1o840dx = 0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const p1o840dy = 0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const p1o840dz = 0.00119047619047619047619047619048*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o840dx = -0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const pm1o840dy = -0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const pm1o840dz = -0.00119047619047619047619047619048*INV(dz);
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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)
@@ -139,29 +181,38 @@ static void ML_BSSN_MP_O8_convertToADMBaseFakeDtLapseShift_Body(cGH const * rest
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_LOOP3 (ML_BSSN_MP_O8_convertToADMBaseFakeDtLapseShift,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_MP_O8_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 AL = A[index];
- CCTK_REAL alphaL = alpha[index];
- CCTK_REAL B1L = B1[index];
- CCTK_REAL B2L = B2[index];
- CCTK_REAL B3L = B3[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL rL = r[index];
- CCTK_REAL trKL = trK[index];
- CCTK_REAL Xt1L = Xt1[index];
- CCTK_REAL Xt2L = Xt2[index];
- CCTK_REAL Xt3L = Xt3[index];
+ 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 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]);
@@ -169,35 +220,100 @@ static void ML_BSSN_MP_O8_convertToADMBaseFakeDtLapseShift_Body(cGH const * rest
/* Precompute derivatives */
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
/* Calculate temporaries and grid functions */
- CCTK_REAL eta = fmin(1,INV(rL)*ToReal(SpatialBetaDriverRadius));
+ CCTK_REAL_VEC eta =
+ kfmin(ToReal(1),kmul(INV(rL),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(ksub(AL,trKL),ToReal(LapseACoeff),trKL))));
+
+ 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(beta1L,kmul(eta,ToReal(BetaDriver*(-1 +
+ ShiftBCoeff))),kmul(ksub(B1L,Xt1L),ToReal(ShiftBCoeff)))),ToReal(ShiftGammaCoeff)));
+
+ dtbetayL =
+ kmul(theta,kmul(kadd(Xt2L,kmadd(beta2L,kmul(eta,ToReal(BetaDriver*(-1 +
+ ShiftBCoeff))),kmul(ksub(B2L,Xt2L),ToReal(ShiftBCoeff)))),ToReal(ShiftGammaCoeff)));
+
+ dtbetazL =
+ kmul(theta,kmul(kadd(Xt3L,kmadd(beta3L,kmul(eta,ToReal(BetaDriver*(-1 +
+ ShiftBCoeff))),kmul(ksub(B3L,Xt3L),ToReal(ShiftBCoeff)))),ToReal(ShiftGammaCoeff)));
+ }
- CCTK_REAL theta = fmin(1,exp(1 -
- rL*INV(ToReal(SpatialShiftGammaCoeffRadius))));
+ /* If necessary, store only partial vectors after the first iteration */
- CCTK_REAL dtalpL =
- -(pow(alphaL,ToReal(harmonicN))*ToReal(harmonicF)*(trKL + (AL -
- trKL)*ToReal(LapseACoeff)));
+ 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(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);
+ break;
+ }
- CCTK_REAL dtbetaxL = theta*(Xt1L + beta1L*eta*ToReal(BetaDriver)*(-1 +
- ToReal(ShiftBCoeff)) + (B1L -
- Xt1L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
+ /* If necessary, store only partial vectors after the first iteration */
- CCTK_REAL dtbetayL = theta*(Xt2L + beta2L*eta*ToReal(BetaDriver)*(-1 +
- ToReal(ShiftBCoeff)) + (B2L -
- Xt2L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
+ 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(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);
+ continue;
+ }
- CCTK_REAL dtbetazL = theta*(Xt3L + beta3L*eta*ToReal(BetaDriver)*(-1 +
- ToReal(ShiftBCoeff)) + (B3L -
- Xt3L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
+ /* If necessary, store only partial vectors after the last iteration */
- /* Copy local copies back to grid functions */
- dtalp[index] = dtalpL;
- dtbetax[index] = dtbetaxL;
- dtbetay[index] = dtbetayL;
- dtbetaz[index] = dtbetazL;
+ 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(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);
+ break;
+ }
+ vec_store_nta(dtalp[index],dtalpL);
+ vec_store_nta(dtbetax[index],dtbetaxL);
+ vec_store_nta(dtbetay[index],dtbetayL);
+ vec_store_nta(dtbetaz[index],dtbetazL);
}
- LC_ENDLOOP3 (ML_BSSN_MP_O8_convertToADMBaseFakeDtLapseShift);
+ LC_ENDLOOP3VEC (ML_BSSN_MP_O8_convertToADMBaseFakeDtLapseShift);
}
extern "C" void ML_BSSN_MP_O8_convertToADMBaseFakeDtLapseShift(CCTK_ARGUMENTS)
@@ -205,5 +321,39 @@ extern "C" void ML_BSSN_MP_O8_convertToADMBaseFakeDtLapseShift(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_O8_convertToADMBaseFakeDtLapseShift_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_MP_O8_convertToADMBaseFakeDtLapseShift_calc_every != ML_BSSN_MP_O8_convertToADMBaseFakeDtLapseShift_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ADMBase::dtlapse","ADMBase::dtshift","grid::coordinates","Grid::coordinates","ML_BSSN_MP_O8::ML_dtlapse","ML_BSSN_MP_O8::ML_dtshift","ML_BSSN_MP_O8::ML_Gamma","ML_BSSN_MP_O8::ML_lapse","ML_BSSN_MP_O8::ML_shift","ML_BSSN_MP_O8::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_O8_convertToADMBaseFakeDtLapseShift", 10, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverEverything(cctkGH, &ML_BSSN_MP_O8_convertToADMBaseFakeDtLapseShift_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_MP_O8_convertToADMBaseFakeDtLapseShift_Body");
+ }
}
diff --git a/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_enforce.cc b/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_enforce.cc
index a9f31e5..eb47e9b 100644
--- a/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_enforce.cc
+++ b/ML_BSSN_MP_O8/src/ML_BSSN_MP_O8_enforce.cc
@@ -13,15 +13,16 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
-static void ML_BSSN_MP_O8_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_MP_O8_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;
@@ -29,20 +30,6 @@ static void ML_BSSN_MP_O8_enforce_Body(cGH const * restrict const cctkGH, int co
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_O8_enforce_Body");
- }
-
- if (cctk_iteration % ML_BSSN_MP_O8_enforce_calc_every != ML_BSSN_MP_O8_enforce_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN_MP_O8::ML_curv","ML_BSSN_MP_O8::ML_lapse","ML_BSSN_MP_O8::ML_metric"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_O8_enforce", 3, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -52,47 +39,102 @@ static void ML_BSSN_MP_O8_enforce_Body(cGH const * restrict const cctkGH, int co
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o1024dx = 0.0009765625*INV(dx);
- CCTK_REAL const p1o1024dy = 0.0009765625*INV(dy);
- CCTK_REAL const p1o1024dz = 0.0009765625*INV(dz);
- CCTK_REAL const p1o1680dx = 0.000595238095238095238095238095238*INV(dx);
- CCTK_REAL const p1o1680dy = 0.000595238095238095238095238095238*INV(dy);
- CCTK_REAL const p1o1680dz = 0.000595238095238095238095238095238*INV(dz);
- CCTK_REAL const p1o5040dx2 = 0.000198412698412698412698412698413*INV(SQR(dx));
- CCTK_REAL const p1o5040dy2 = 0.000198412698412698412698412698413*INV(SQR(dy));
- CCTK_REAL const p1o5040dz2 = 0.000198412698412698412698412698413*INV(SQR(dz));
- CCTK_REAL const p1o560dx = 0.00178571428571428571428571428571*INV(dx);
- CCTK_REAL const p1o560dy = 0.00178571428571428571428571428571*INV(dy);
- CCTK_REAL const p1o560dz = 0.00178571428571428571428571428571*INV(dz);
- CCTK_REAL const p1o705600dxdy = 1.41723356009070294784580498866e-6*INV(dx)*INV(dy);
- CCTK_REAL const p1o705600dxdz = 1.41723356009070294784580498866e-6*INV(dx)*INV(dz);
- CCTK_REAL const p1o705600dydz = 1.41723356009070294784580498866e-6*INV(dy)*INV(dz);
- CCTK_REAL const p1o840dx = 0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const p1o840dy = 0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const p1o840dz = 0.00119047619047619047619047619048*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o840dx = -0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const pm1o840dy = -0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const pm1o840dz = -0.00119047619047619047619047619048*INV(dz);
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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)
@@ -139,29 +181,38 @@ static void ML_BSSN_MP_O8_enforce_Body(cGH const * restrict const cctkGH, int co
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_LOOP3 (ML_BSSN_MP_O8_enforce,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_MP_O8_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 alphaL = alpha[index];
- CCTK_REAL At11L = At11[index];
- CCTK_REAL At12L = At12[index];
- CCTK_REAL At13L = At13[index];
- CCTK_REAL At22L = At22[index];
- CCTK_REAL At23L = At23[index];
- CCTK_REAL At33L = At33[index];
- CCTK_REAL gt11L = gt11[index];
- CCTK_REAL gt12L = gt12[index];
- CCTK_REAL gt13L = gt13[index];
- CCTK_REAL gt22L = gt22[index];
- CCTK_REAL gt23L = gt23[index];
- CCTK_REAL gt33L = gt33[index];
+ CCTK_REAL_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]);
@@ -169,48 +220,116 @@ static void ML_BSSN_MP_O8_enforce_Body(cGH const * restrict const cctkGH, int co
/* Precompute derivatives */
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
/* Calculate temporaries and grid functions */
- CCTK_REAL detgt = 1;
+ 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 gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L));
+ CCTK_REAL_VEC gtu33 = kmul(INV(detgt),kmsub(gt11L,gt22L,SQR(gt12L)));
- CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt);
+ 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)))));
- CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt);
+ At11L =
+ kmadd(gt11L,kmul(trAt,ToReal(-0.333333333333333333333333333333)),At11L);
- CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L));
+ At12L =
+ kmadd(gt12L,kmul(trAt,ToReal(-0.333333333333333333333333333333)),At12L);
- CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt);
+ At13L =
+ kmadd(gt13L,kmul(trAt,ToReal(-0.333333333333333333333333333333)),At13L);
- CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L));
+ At22L =
+ kmadd(gt22L,kmul(trAt,ToReal(-0.333333333333333333333333333333)),At22L);
- CCTK_REAL trAt = At11L*gtu11 + At22L*gtu22 + 2*(At12L*gtu12 +
- At13L*gtu13 + At23L*gtu23) + At33L*gtu33;
+ At23L =
+ kmadd(gt23L,kmul(trAt,ToReal(-0.333333333333333333333333333333)),At23L);
- At11L = At11L - 0.333333333333333333333333333333*gt11L*trAt;
+ At33L =
+ kmadd(gt33L,kmul(trAt,ToReal(-0.333333333333333333333333333333)),At33L);
- At12L = At12L - 0.333333333333333333333333333333*gt12L*trAt;
+ alphaL = kfmax(alphaL,ToReal(MinimumLapse));
- At13L = At13L - 0.333333333333333333333333333333*gt13L*trAt;
+ /* If necessary, store only partial vectors after the first iteration */
- At22L = At22L - 0.333333333333333333333333333333*gt22L*trAt;
+ 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(At11[index],At11L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At12[index],At12L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At13[index],At13L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At22[index],At22L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At23[index],At23L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At33[index],At33L,elt_count_lo,elt_count_hi);
+ break;
+ }
- At23L = At23L - 0.333333333333333333333333333333*gt23L*trAt;
+ /* If necessary, store only partial vectors after the first iteration */
- At33L = At33L - 0.333333333333333333333333333333*gt33L*trAt;
+ 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(At11[index],At11L,elt_count);
+ vec_store_nta_partial_hi(At12[index],At12L,elt_count);
+ vec_store_nta_partial_hi(At13[index],At13L,elt_count);
+ vec_store_nta_partial_hi(At22[index],At22L,elt_count);
+ vec_store_nta_partial_hi(At23[index],At23L,elt_count);
+ vec_store_nta_partial_hi(At33[index],At33L,elt_count);
+ continue;
+ }
- alphaL = fmax(alphaL,ToReal(MinimumLapse));
+ /* If necessary, store only partial vectors after the last iteration */
- /* Copy local copies back to grid functions */
- alpha[index] = alphaL;
- At11[index] = At11L;
- At12[index] = At12L;
- At13[index] = At13L;
- At22[index] = At22L;
- At23[index] = At23L;
- At33[index] = At33L;
+ 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(At11[index],At11L,elt_count);
+ vec_store_nta_partial_lo(At12[index],At12L,elt_count);
+ vec_store_nta_partial_lo(At13[index],At13L,elt_count);
+ vec_store_nta_partial_lo(At22[index],At22L,elt_count);
+ vec_store_nta_partial_lo(At23[index],At23L,elt_count);
+ vec_store_nta_partial_lo(At33[index],At33L,elt_count);
+ break;
+ }
+ vec_store_nta(alpha[index],alphaL);
+ vec_store_nta(At11[index],At11L);
+ vec_store_nta(At12[index],At12L);
+ vec_store_nta(At13[index],At13L);
+ vec_store_nta(At22[index],At22L);
+ vec_store_nta(At23[index],At23L);
+ vec_store_nta(At33[index],At33L);
}
- LC_ENDLOOP3 (ML_BSSN_MP_O8_enforce);
+ LC_ENDLOOP3VEC (ML_BSSN_MP_O8_enforce);
}
extern "C" void ML_BSSN_MP_O8_enforce(CCTK_ARGUMENTS)
@@ -218,5 +337,39 @@ extern "C" void ML_BSSN_MP_O8_enforce(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_O8_enforce_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_MP_O8_enforce_calc_every != ML_BSSN_MP_O8_enforce_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN_MP_O8::ML_curv","ML_BSSN_MP_O8::ML_lapse","ML_BSSN_MP_O8::ML_metric"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_MP_O8_enforce", 3, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverEverything(cctkGH, &ML_BSSN_MP_O8_enforce_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_MP_O8_enforce_Body");
+ }
}
diff --git a/ML_BSSN_MP_O8/src/RegisterMoL.cc b/ML_BSSN_MP_O8/src/RegisterMoL.cc
index 906588d..df47d57 100644
--- a/ML_BSSN_MP_O8/src/RegisterMoL.cc
+++ b/ML_BSSN_MP_O8/src/RegisterMoL.cc
@@ -37,5 +37,7 @@ extern "C" void ML_BSSN_MP_O8_RegisterVars(CCTK_ARGUMENTS)
ierr += MoLRegisterEvolved(CCTK_VarIndex("ML_BSSN_MP_O8::beta2"), CCTK_VarIndex("ML_BSSN_MP_O8::beta2rhs"));
ierr += MoLRegisterEvolved(CCTK_VarIndex("ML_BSSN_MP_O8::beta3"), CCTK_VarIndex("ML_BSSN_MP_O8::beta3rhs"));
ierr += MoLRegisterEvolved(CCTK_VarIndex("ML_BSSN_MP_O8::trK"), CCTK_VarIndex("ML_BSSN_MP_O8::trKrhs"));
+
+ /* Register all the evolved Array functions with MoL */
return;
}
diff --git a/ML_BSSN_MP_O8_Helper/src/SetGroupTags.c b/ML_BSSN_MP_O8_Helper/src/SetGroupTags.c
index 950f82d..aed51c6 100644
--- a/ML_BSSN_MP_O8_Helper/src/SetGroupTags.c
+++ b/ML_BSSN_MP_O8_Helper/src/SetGroupTags.c
@@ -15,29 +15,30 @@ ML_BSSN_MP_O8_SetGroupTags (void)
{
DECLARE_CCTK_PARAMETERS;
- set_group_tags (0, 0, 1, "ADMBase::metric");
- set_group_tags (0, 0, 1, "ADMBase::curv");
- set_group_tags (0, 0, 1, "ADMBase::lapse");
- set_group_tags (0, 0, 1, "ADMBase::shift");
- set_group_tags (0, 0, 1, "ADMBase::dtlapse");
- set_group_tags (0, 0, 1, "ADMBase::dtshift");
+ 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 (0, 0, 0, "ML_BSSN_MP_O8::ML_cons_detg");
- set_group_tags (0, 0, 0, "ML_BSSN_MP_O8::ML_cons_Gamma");
- set_group_tags (0, 0, 0, "ML_BSSN_MP_O8::ML_cons_traceA");
- set_group_tags (0, 0, 0, "ML_BSSN_MP_O8::ML_Ham");
- set_group_tags (0, 0, 0, "ML_BSSN_MP_O8::ML_mom");
+ set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_MP_O8::ML_cons_detg");
+ set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_MP_O8::ML_cons_Gamma");
+ set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_MP_O8::ML_cons_traceA");
+ set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_MP_O8::ML_Ham");
+ set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_MP_O8::ML_mom");
- int const checkpoint = rhs_timelevels > 1;
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_MP_O8::ML_log_confacrhs");
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_MP_O8::ML_metricrhs");
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_MP_O8::ML_Gammarhs");
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_MP_O8::ML_trace_curvrhs");
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_MP_O8::ML_curvrhs");
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_MP_O8::ML_lapserhs");
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_MP_O8::ML_dtlapserhs");
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_MP_O8::ML_shiftrhs");
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_MP_O8::ML_dtshiftrhs");
+ int const rhs_checkpoint = rhs_timelevels > 1;
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN_MP_O8::ML_log_confacrhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN_MP_O8::ML_metricrhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN_MP_O8::ML_Gammarhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN_MP_O8::ML_trace_curvrhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN_MP_O8::ML_curvrhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN_MP_O8::ML_lapserhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN_MP_O8::ML_dtlapserhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN_MP_O8::ML_shiftrhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN_MP_O8::ML_dtshiftrhs");
return 0;
}
diff --git a/ML_BSSN_O2/configuration.ccl b/ML_BSSN_O2/configuration.ccl
index 8e2c3c5..bdbc1bd 100644
--- a/ML_BSSN_O2/configuration.ccl
+++ b/ML_BSSN_O2/configuration.ccl
@@ -2,3 +2,4 @@
REQUIRES GenericFD
REQUIRES LoopControl
+REQUIRES Vectors
diff --git a/ML_BSSN_O2/interface.ccl b/ML_BSSN_O2/interface.ccl
index dd212d8..6b5a8f2 100644
--- a/ML_BSSN_O2/interface.ccl
+++ b/ML_BSSN_O2/interface.ccl
@@ -11,6 +11,7 @@ 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
diff --git a/ML_BSSN_O2/param.ccl b/ML_BSSN_O2/param.ccl
index 9cf8a84..caaefef 100644
--- a/ML_BSSN_O2/param.ccl
+++ b/ML_BSSN_O2/param.ccl
@@ -37,11 +37,15 @@ EXTENDS CCTK_KEYWORD dtshift_evolution_method "dtshift_evolution_method"
shares: GenericFD
+USES CCTK_STRING jacobian_group
+USES CCTK_STRING jacobian_derivative_group
+USES CCTK_INT jacobian_identity_map
shares: MethodOfLines
USES CCTK_INT MoL_Num_Evolved_Vars
+USES CCTK_INT MoL_Num_ArrayEvolved_Vars
restricted:
CCTK_INT verbose "verbose" STEERABLE=ALWAYS
@@ -139,6 +143,18 @@ CCTK_INT conformalMethod "Treatment of conformal factor"
*:* :: ""
} 0
+restricted:
+CCTK_INT fdOrder "fdOrder"
+{
+ *:* :: ""
+} 2
+
+restricted:
+CCTK_INT harmonicShift "Whether to use the harmonic shift"
+{
+ *:* :: ""
+} 0
+
private:
KEYWORD my_initial_data "my_initial_data"
{
@@ -203,6 +219,12 @@ CCTK_INT ML_BSSN_O2_MaxNumEvolvedVars "Number of evolved variables used by this
} 25
restricted:
+CCTK_INT ML_BSSN_O2_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 :: ""
diff --git a/ML_BSSN_O2/schedule.ccl b/ML_BSSN_O2/schedule.ccl
index e728ee1..0b05f01 100644
--- a/ML_BSSN_O2/schedule.ccl
+++ b/ML_BSSN_O2/schedule.ccl
@@ -340,7 +340,7 @@ if (CCTK_EQUALS(my_rhs_boundary_condition, "static"))
} "ML_BSSN_O2_RHSStaticBoundary"
}
-schedule ML_BSSN_O2_enforce IN MoL_PostStep BEFORE ML_BSSN_O2_SelectBoundConds
+schedule ML_BSSN_O2_enforce IN MoL_PostStepModify
{
LANG: C
} "ML_BSSN_O2_enforce"
@@ -388,7 +388,7 @@ if (CCTK_EQUALS(dt_lapse_shift_method, "noLapseShiftAdvection"))
} "ML_BSSN_O2_convertToADMBaseFakeDtLapseShift"
}
-schedule group ML_BSSN_O2_constraints1_group in MoL_PseudoEvolution
+schedule group ML_BSSN_O2_constraints1_group in MoL_PseudoEvolution after MoL_PostStep
{
# no language specified
} "ML_BSSN_O2_constraints1"
@@ -415,17 +415,12 @@ schedule group ML_BSSN_O2_constraints1_bc_group in ML_BSSN_O2_constraints1_group
# no language specified
} "ML_BSSN_O2_constraints1"
-schedule group ML_BSSN_O2_constraints1_bc_group at CCTK_POSTRESTRICT
+schedule group ML_BSSN_O2_constraints1_bc_group in MoL_PseudoEvolutionBoundaries after MoL_PostStep
{
# no language specified
} "ML_BSSN_O2_constraints1"
-schedule group ML_BSSN_O2_constraints1_bc_group at CCTK_POSTRESTRICTINITIAL
-{
- # no language specified
-} "ML_BSSN_O2_constraints1"
-
-schedule group ML_BSSN_O2_constraints2_group in MoL_PseudoEvolution
+schedule group ML_BSSN_O2_constraints2_group in MoL_PseudoEvolution after MoL_PostStep
{
# no language specified
} "ML_BSSN_O2_constraints2"
@@ -455,12 +450,7 @@ schedule group ML_BSSN_O2_constraints2_bc_group in ML_BSSN_O2_constraints2_group
# no language specified
} "ML_BSSN_O2_constraints2"
-schedule group ML_BSSN_O2_constraints2_bc_group at CCTK_POSTRESTRICT
-{
- # no language specified
-} "ML_BSSN_O2_constraints2"
-
-schedule group ML_BSSN_O2_constraints2_bc_group at CCTK_POSTRESTRICTINITIAL
+schedule group ML_BSSN_O2_constraints2_bc_group in MoL_PseudoEvolutionBoundaries after MoL_PostStep
{
# no language specified
} "ML_BSSN_O2_constraints2"
diff --git a/ML_BSSN_O2/src/Differencing.h b/ML_BSSN_O2/src/Differencing.h
index 2f8dc4c..96a0554 100644
--- a/ML_BSSN_O2/src/Differencing.h
+++ b/ML_BSSN_O2/src/Differencing.h
@@ -1,324 +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 PDstandardNth1(u) ((-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)]))*p1o2dx)
+# 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 PDstandardNth1(u) (PDstandardNth1_impl(u,p1o2dx,cdj,cdk))
-static CCTK_REAL PDstandardNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o2dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o2dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)]))*p1o2dx;
+ 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 PDstandardNth2(u) ((-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)]))*p1o2dy)
+# 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 PDstandardNth2(u) (PDstandardNth2_impl(u,p1o2dy,cdj,cdk))
-static CCTK_REAL PDstandardNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o2dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o2dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)]))*p1o2dy;
+ 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 PDstandardNth3(u) ((-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)]))*p1o2dz)
+# 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 PDstandardNth3(u) (PDstandardNth3_impl(u,p1o2dz,cdj,cdk))
-static CCTK_REAL PDstandardNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o2dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o2dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)]))*p1o2dz;
+ 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 PDstandardNth11(u) ((-2*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)]))*p1odx2)
+# 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 PDstandardNth11(u) (PDstandardNth11_impl(u,p1odx2,cdj,cdk))
-static CCTK_REAL PDstandardNth11_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1odx2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth11_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1odx2, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-2*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)]))*p1odx2;
+ 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 PDstandardNth22(u) ((-2*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)]))*p1ody2)
+# 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 PDstandardNth22(u) (PDstandardNth22_impl(u,p1ody2,cdj,cdk))
-static CCTK_REAL PDstandardNth22_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1ody2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth22_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1ody2, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-2*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)]))*p1ody2;
+ 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 PDstandardNth33(u) ((-2*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)]))*p1odz2)
+# 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 PDstandardNth33(u) (PDstandardNth33_impl(u,p1odz2,cdj,cdk))
-static CCTK_REAL PDstandardNth33_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1odz2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth33_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1odz2, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-2*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)]))*p1odz2;
+ 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 PDstandardNth12(u) (((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)]))*p1o4dxdy)
+# 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 PDstandardNth12(u) (PDstandardNth12_impl(u,p1o4dxdy,cdj,cdk))
-static CCTK_REAL PDstandardNth12_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o4dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth12_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o4dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 ((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)]))*p1o4dxdy;
+ 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 PDstandardNth13(u) (((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)]))*p1o4dxdz)
+# 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 PDstandardNth13(u) (PDstandardNth13_impl(u,p1o4dxdz,cdj,cdk))
-static CCTK_REAL PDstandardNth13_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o4dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth13_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o4dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 ((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)]))*p1o4dxdz;
+ 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 PDstandardNth21(u) (((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)]))*p1o4dxdy)
+# 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 PDstandardNth21(u) (PDstandardNth21_impl(u,p1o4dxdy,cdj,cdk))
-static CCTK_REAL PDstandardNth21_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o4dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth21_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o4dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 ((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)]))*p1o4dxdy;
+ 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 PDstandardNth23(u) (((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)]))*p1o4dydz)
+# 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 PDstandardNth23(u) (PDstandardNth23_impl(u,p1o4dydz,cdj,cdk))
-static CCTK_REAL PDstandardNth23_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o4dydz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth23_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o4dydz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 ((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)]))*p1o4dydz;
+ 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 PDstandardNth31(u) (((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)]))*p1o4dxdz)
+# 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 PDstandardNth31(u) (PDstandardNth31_impl(u,p1o4dxdz,cdj,cdk))
-static CCTK_REAL PDstandardNth31_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o4dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth31_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o4dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 ((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)]))*p1o4dxdz;
+ 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 PDstandardNth32(u) (((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)]))*p1o4dydz)
+# 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 PDstandardNth32(u) (PDstandardNth32_impl(u,p1o4dydz,cdj,cdk))
-static CCTK_REAL PDstandardNth32_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o4dydz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth32_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o4dydz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 ((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)]))*p1o4dydz;
+ 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 PDdissipationNth1(u) ((6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 4*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]))*p1o16dx)
+# 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 PDdissipationNth1(u) (PDdissipationNth1_impl(u,p1o16dx,cdj,cdk))
-static CCTK_REAL PDdissipationNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o16dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDdissipationNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o16dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 4*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]))*p1o16dx;
+ 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 PDdissipationNth2(u) ((6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 4*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]))*p1o16dy)
+# 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 PDdissipationNth2(u) (PDdissipationNth2_impl(u,p1o16dy,cdj,cdk))
-static CCTK_REAL PDdissipationNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o16dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDdissipationNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o16dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 4*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]))*p1o16dy;
+ 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 PDdissipationNth3(u) ((6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 4*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]))*p1o16dz)
+# 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 PDdissipationNth3(u) (PDdissipationNth3_impl(u,p1o16dz,cdj,cdk))
-static CCTK_REAL PDdissipationNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o16dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDdissipationNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o16dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 4*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]))*p1o16dz;
+ 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 PDupwindNth1(u) ((3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2*dir1)+cdj*(0)+cdk*(0)]) - 4*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(dir1)+cdj*(0)+cdk*(0)]))*pm1o2dx*dir1)
+# 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 PDupwindNth1(u) (PDupwindNth1_impl(u,pm1o2dx,cdj,cdk,dir1,dir2,dir3))
-static CCTK_REAL PDupwindNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o2dx, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDupwindNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o2dx, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3)
+# 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 (3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2*dir1)+cdj*(0)+cdk*(0)]) - 4*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(dir1)+cdj*(0)+cdk*(0)]))*pm1o2dx*dir1;
+ 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 PDupwindNth2(u) ((3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2*dir2)+cdk*(0)]) - 4*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(dir2)+cdk*(0)]))*pm1o2dy*dir2)
+# 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 PDupwindNth2(u) (PDupwindNth2_impl(u,pm1o2dy,cdj,cdk,dir1,dir2,dir3))
-static CCTK_REAL PDupwindNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o2dy, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDupwindNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o2dy, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3)
+# 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 (3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2*dir2)+cdk*(0)]) - 4*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(dir2)+cdk*(0)]))*pm1o2dy*dir2;
+ 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 PDupwindNth3(u) ((3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2*dir3)]) - 4*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(dir3)]))*pm1o2dz*dir3)
+# 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 PDupwindNth3(u) (PDupwindNth3_impl(u,pm1o2dz,cdj,cdk,dir1,dir2,dir3))
-static CCTK_REAL PDupwindNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o2dz, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDupwindNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o2dz, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3)
+# 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 (3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2*dir3)]) - 4*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(dir3)]))*pm1o2dz*dir3;
+ 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) ((-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(dir1)+cdj*(0)+cdk*(0)]))*p1odx*dir1)
+# 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 PDonesided1(u) (PDonesided1_impl(u,p1odx,cdj,cdk,dir1,dir2,dir3))
-static CCTK_REAL PDonesided1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1odx, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDonesided1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1odx, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3)
+# 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 (-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(dir1)+cdj*(0)+cdk*(0)]))*p1odx*dir1;
+ 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 PDonesided2(u) ((-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(dir2)+cdk*(0)]))*p1ody*dir2)
+# 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 PDonesided2(u) (PDonesided2_impl(u,p1ody,cdj,cdk,dir1,dir2,dir3))
-static CCTK_REAL PDonesided2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1ody, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDonesided2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1ody, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3)
+# 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 (-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(dir2)+cdk*(0)]))*p1ody*dir2;
+ 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 PDonesided3(u) ((-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(dir3)]))*p1odz*dir3)
+# 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 PDonesided3(u) (PDonesided3_impl(u,p1odz,cdj,cdk,dir1,dir2,dir3))
-static CCTK_REAL PDonesided3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1odz, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDonesided3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1odz, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3)
+# 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 (-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(dir3)]))*p1odz*dir3;
+ 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 PDupwindNthAnti1(u) ((-4*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + 4*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]))*p1o4dx)
+# 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 PDupwindNthAnti1(u) (PDupwindNthAnti1_impl(u,p1o4dx,cdj,cdk))
-static CCTK_REAL PDupwindNthAnti1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o4dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDupwindNthAnti1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o4dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-4*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + 4*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]))*p1o4dx;
+ 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 PDupwindNthSymm1(u) ((6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 4*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]))*pm1o4dx)
+# 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 PDupwindNthSymm1(u) (PDupwindNthSymm1_impl(u,pm1o4dx,cdj,cdk))
-static CCTK_REAL PDupwindNthSymm1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o4dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDupwindNthSymm1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o4dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 4*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]))*pm1o4dx;
+ 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 PDupwindNthAnti2(u) ((-4*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + 4*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]))*p1o4dy)
+# 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 PDupwindNthAnti2(u) (PDupwindNthAnti2_impl(u,p1o4dy,cdj,cdk))
-static CCTK_REAL PDupwindNthAnti2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o4dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDupwindNthAnti2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o4dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-4*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + 4*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]))*p1o4dy;
+ 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 PDupwindNthSymm2(u) ((6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 4*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]))*pm1o4dy)
+# 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 PDupwindNthSymm2(u) (PDupwindNthSymm2_impl(u,pm1o4dy,cdj,cdk))
-static CCTK_REAL PDupwindNthSymm2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o4dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDupwindNthSymm2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o4dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 4*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]))*pm1o4dy;
+ 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 PDupwindNthAnti3(u) ((-4*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + 4*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]))*p1o4dz)
+# 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 PDupwindNthAnti3(u) (PDupwindNthAnti3_impl(u,p1o4dz,cdj,cdk))
-static CCTK_REAL PDupwindNthAnti3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o4dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDupwindNthAnti3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o4dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-4*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + 4*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]))*p1o4dz;
+ 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 PDupwindNthSymm3(u) ((6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 4*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]))*pm1o4dz)
+# 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 PDupwindNthSymm3(u) (PDupwindNthSymm3_impl(u,pm1o4dz,cdj,cdk))
-static CCTK_REAL PDupwindNthSymm3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o4dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDupwindNthSymm3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o4dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 4*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]))*pm1o4dz;
+ 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_BSSN_O2/src/ML_BSSN_O2_Advect.cc b/ML_BSSN_O2/src/ML_BSSN_O2_Advect.cc
index 8c77ac7..48b0610 100644
--- a/ML_BSSN_O2/src/ML_BSSN_O2_Advect.cc
+++ b/ML_BSSN_O2/src/ML_BSSN_O2_Advect.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_O2_Advect_SelectBCs(CCTK_ARGUMENTS)
{
@@ -57,7 +58,7 @@ extern "C" void ML_BSSN_O2_Advect_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_BSSN_O2_Advect_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_O2_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;
@@ -65,21 +66,6 @@ static void ML_BSSN_O2_Advect_Body(cGH const * restrict const cctkGH, int const
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O2_Advect_Body");
- }
-
- if (cctk_iteration % ML_BSSN_O2_Advect_calc_every != ML_BSSN_O2_Advect_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN_O2::ML_curv","ML_BSSN_O2::ML_curvrhs","ML_BSSN_O2::ML_dtlapse","ML_BSSN_O2::ML_dtlapserhs","ML_BSSN_O2::ML_dtshift","ML_BSSN_O2::ML_dtshiftrhs","ML_BSSN_O2::ML_Gamma","ML_BSSN_O2::ML_Gammarhs","ML_BSSN_O2::ML_lapse","ML_BSSN_O2::ML_lapserhs","ML_BSSN_O2::ML_log_confac","ML_BSSN_O2::ML_log_confacrhs","ML_BSSN_O2::ML_metric","ML_BSSN_O2::ML_metricrhs","ML_BSSN_O2::ML_shift","ML_BSSN_O2::ML_shiftrhs","ML_BSSN_O2::ML_trace_curv","ML_BSSN_O2::ML_trace_curvrhs"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O2_Advect", 18, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O2_Advect", 2, 2, 2);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -89,263 +75,1002 @@ static void ML_BSSN_O2_Advect_Body(cGH const * restrict const cctkGH, int const
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o16dx = 0.0625*INV(dx);
- CCTK_REAL const p1o16dy = 0.0625*INV(dy);
- CCTK_REAL const p1o16dz = 0.0625*INV(dz);
- CCTK_REAL const p1o2dx = 0.5*INV(dx);
- CCTK_REAL const p1o2dy = 0.5*INV(dy);
- CCTK_REAL const p1o2dz = 0.5*INV(dz);
- CCTK_REAL const p1o4dx = 0.25*INV(dx);
- CCTK_REAL const p1o4dxdy = 0.25*INV(dx)*INV(dy);
- CCTK_REAL const p1o4dxdz = 0.25*INV(dx)*INV(dz);
- CCTK_REAL const p1o4dy = 0.25*INV(dy);
- CCTK_REAL const p1o4dydz = 0.25*INV(dy)*INV(dz);
- CCTK_REAL const p1o4dz = 0.25*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1odx2 = INV(SQR(dx));
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1ody2 = INV(SQR(dy));
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const p1odz2 = INV(SQR(dz));
- CCTK_REAL const pm1o2dx = -0.5*INV(dx);
- CCTK_REAL const pm1o2dy = -0.5*INV(dy);
- CCTK_REAL const pm1o2dz = -0.5*INV(dz);
- CCTK_REAL const pm1o4dx = -0.25*INV(dx);
- CCTK_REAL const pm1o4dy = -0.25*INV(dy);
- CCTK_REAL const pm1o4dz = -0.25*INV(dz);
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_O2_Advect,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_O2_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 AL = A[index];
- CCTK_REAL alphaL = alpha[index];
- CCTK_REAL alpharhsL = alpharhs[index];
- CCTK_REAL ArhsL = Arhs[index];
- CCTK_REAL At11L = At11[index];
- CCTK_REAL At11rhsL = At11rhs[index];
- CCTK_REAL At12L = At12[index];
- CCTK_REAL At12rhsL = At12rhs[index];
- CCTK_REAL At13L = At13[index];
- CCTK_REAL At13rhsL = At13rhs[index];
- CCTK_REAL At22L = At22[index];
- CCTK_REAL At22rhsL = At22rhs[index];
- CCTK_REAL At23L = At23[index];
- CCTK_REAL At23rhsL = At23rhs[index];
- CCTK_REAL At33L = At33[index];
- CCTK_REAL At33rhsL = At33rhs[index];
- CCTK_REAL B1L = B1[index];
- CCTK_REAL B1rhsL = B1rhs[index];
- CCTK_REAL B2L = B2[index];
- CCTK_REAL B2rhsL = B2rhs[index];
- CCTK_REAL B3L = B3[index];
- CCTK_REAL B3rhsL = B3rhs[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta1rhsL = beta1rhs[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta2rhsL = beta2rhs[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL beta3rhsL = beta3rhs[index];
- CCTK_REAL gt11L = gt11[index];
- CCTK_REAL gt11rhsL = gt11rhs[index];
- CCTK_REAL gt12L = gt12[index];
- CCTK_REAL gt12rhsL = gt12rhs[index];
- CCTK_REAL gt13L = gt13[index];
- CCTK_REAL gt13rhsL = gt13rhs[index];
- CCTK_REAL gt22L = gt22[index];
- CCTK_REAL gt22rhsL = gt22rhs[index];
- CCTK_REAL gt23L = gt23[index];
- CCTK_REAL gt23rhsL = gt23rhs[index];
- CCTK_REAL gt33L = gt33[index];
- CCTK_REAL gt33rhsL = gt33rhs[index];
- CCTK_REAL phiL = phi[index];
- CCTK_REAL phirhsL = phirhs[index];
- CCTK_REAL trKL = trK[index];
- CCTK_REAL trKrhsL = trKrhs[index];
- CCTK_REAL Xt1L = Xt1[index];
- CCTK_REAL Xt1rhsL = Xt1rhs[index];
- CCTK_REAL Xt2L = Xt2[index];
- CCTK_REAL Xt2rhsL = Xt2rhs[index];
- CCTK_REAL Xt3L = Xt3[index];
- CCTK_REAL Xt3rhsL = Xt3rhs[index];
+ CCTK_REAL_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 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 const PDupwindNthAnti1A = PDupwindNthAnti1(&A[index]);
- CCTK_REAL const PDupwindNthSymm1A = PDupwindNthSymm1(&A[index]);
- CCTK_REAL const PDupwindNthAnti2A = PDupwindNthAnti2(&A[index]);
- CCTK_REAL const PDupwindNthSymm2A = PDupwindNthSymm2(&A[index]);
- CCTK_REAL const PDupwindNthAnti3A = PDupwindNthAnti3(&A[index]);
- CCTK_REAL const PDupwindNthSymm3A = PDupwindNthSymm3(&A[index]);
- CCTK_REAL const PDupwindNthAnti1alpha = PDupwindNthAnti1(&alpha[index]);
- CCTK_REAL const PDupwindNthSymm1alpha = PDupwindNthSymm1(&alpha[index]);
- CCTK_REAL const PDupwindNthAnti2alpha = PDupwindNthAnti2(&alpha[index]);
- CCTK_REAL const PDupwindNthSymm2alpha = PDupwindNthSymm2(&alpha[index]);
- CCTK_REAL const PDupwindNthAnti3alpha = PDupwindNthAnti3(&alpha[index]);
- CCTK_REAL const PDupwindNthSymm3alpha = PDupwindNthSymm3(&alpha[index]);
- CCTK_REAL const PDupwindNthAnti1At11 = PDupwindNthAnti1(&At11[index]);
- CCTK_REAL const PDupwindNthSymm1At11 = PDupwindNthSymm1(&At11[index]);
- CCTK_REAL const PDupwindNthAnti2At11 = PDupwindNthAnti2(&At11[index]);
- CCTK_REAL const PDupwindNthSymm2At11 = PDupwindNthSymm2(&At11[index]);
- CCTK_REAL const PDupwindNthAnti3At11 = PDupwindNthAnti3(&At11[index]);
- CCTK_REAL const PDupwindNthSymm3At11 = PDupwindNthSymm3(&At11[index]);
- CCTK_REAL const PDupwindNthAnti1At12 = PDupwindNthAnti1(&At12[index]);
- CCTK_REAL const PDupwindNthSymm1At12 = PDupwindNthSymm1(&At12[index]);
- CCTK_REAL const PDupwindNthAnti2At12 = PDupwindNthAnti2(&At12[index]);
- CCTK_REAL const PDupwindNthSymm2At12 = PDupwindNthSymm2(&At12[index]);
- CCTK_REAL const PDupwindNthAnti3At12 = PDupwindNthAnti3(&At12[index]);
- CCTK_REAL const PDupwindNthSymm3At12 = PDupwindNthSymm3(&At12[index]);
- CCTK_REAL const PDupwindNthAnti1At13 = PDupwindNthAnti1(&At13[index]);
- CCTK_REAL const PDupwindNthSymm1At13 = PDupwindNthSymm1(&At13[index]);
- CCTK_REAL const PDupwindNthAnti2At13 = PDupwindNthAnti2(&At13[index]);
- CCTK_REAL const PDupwindNthSymm2At13 = PDupwindNthSymm2(&At13[index]);
- CCTK_REAL const PDupwindNthAnti3At13 = PDupwindNthAnti3(&At13[index]);
- CCTK_REAL const PDupwindNthSymm3At13 = PDupwindNthSymm3(&At13[index]);
- CCTK_REAL const PDupwindNthAnti1At22 = PDupwindNthAnti1(&At22[index]);
- CCTK_REAL const PDupwindNthSymm1At22 = PDupwindNthSymm1(&At22[index]);
- CCTK_REAL const PDupwindNthAnti2At22 = PDupwindNthAnti2(&At22[index]);
- CCTK_REAL const PDupwindNthSymm2At22 = PDupwindNthSymm2(&At22[index]);
- CCTK_REAL const PDupwindNthAnti3At22 = PDupwindNthAnti3(&At22[index]);
- CCTK_REAL const PDupwindNthSymm3At22 = PDupwindNthSymm3(&At22[index]);
- CCTK_REAL const PDupwindNthAnti1At23 = PDupwindNthAnti1(&At23[index]);
- CCTK_REAL const PDupwindNthSymm1At23 = PDupwindNthSymm1(&At23[index]);
- CCTK_REAL const PDupwindNthAnti2At23 = PDupwindNthAnti2(&At23[index]);
- CCTK_REAL const PDupwindNthSymm2At23 = PDupwindNthSymm2(&At23[index]);
- CCTK_REAL const PDupwindNthAnti3At23 = PDupwindNthAnti3(&At23[index]);
- CCTK_REAL const PDupwindNthSymm3At23 = PDupwindNthSymm3(&At23[index]);
- CCTK_REAL const PDupwindNthAnti1At33 = PDupwindNthAnti1(&At33[index]);
- CCTK_REAL const PDupwindNthSymm1At33 = PDupwindNthSymm1(&At33[index]);
- CCTK_REAL const PDupwindNthAnti2At33 = PDupwindNthAnti2(&At33[index]);
- CCTK_REAL const PDupwindNthSymm2At33 = PDupwindNthSymm2(&At33[index]);
- CCTK_REAL const PDupwindNthAnti3At33 = PDupwindNthAnti3(&At33[index]);
- CCTK_REAL const PDupwindNthSymm3At33 = PDupwindNthSymm3(&At33[index]);
- CCTK_REAL const PDupwindNthAnti1B1 = PDupwindNthAnti1(&B1[index]);
- CCTK_REAL const PDupwindNthSymm1B1 = PDupwindNthSymm1(&B1[index]);
- CCTK_REAL const PDupwindNthAnti2B1 = PDupwindNthAnti2(&B1[index]);
- CCTK_REAL const PDupwindNthSymm2B1 = PDupwindNthSymm2(&B1[index]);
- CCTK_REAL const PDupwindNthAnti3B1 = PDupwindNthAnti3(&B1[index]);
- CCTK_REAL const PDupwindNthSymm3B1 = PDupwindNthSymm3(&B1[index]);
- CCTK_REAL const PDupwindNthAnti1B2 = PDupwindNthAnti1(&B2[index]);
- CCTK_REAL const PDupwindNthSymm1B2 = PDupwindNthSymm1(&B2[index]);
- CCTK_REAL const PDupwindNthAnti2B2 = PDupwindNthAnti2(&B2[index]);
- CCTK_REAL const PDupwindNthSymm2B2 = PDupwindNthSymm2(&B2[index]);
- CCTK_REAL const PDupwindNthAnti3B2 = PDupwindNthAnti3(&B2[index]);
- CCTK_REAL const PDupwindNthSymm3B2 = PDupwindNthSymm3(&B2[index]);
- CCTK_REAL const PDupwindNthAnti1B3 = PDupwindNthAnti1(&B3[index]);
- CCTK_REAL const PDupwindNthSymm1B3 = PDupwindNthSymm1(&B3[index]);
- CCTK_REAL const PDupwindNthAnti2B3 = PDupwindNthAnti2(&B3[index]);
- CCTK_REAL const PDupwindNthSymm2B3 = PDupwindNthSymm2(&B3[index]);
- CCTK_REAL const PDupwindNthAnti3B3 = PDupwindNthAnti3(&B3[index]);
- CCTK_REAL const PDupwindNthSymm3B3 = PDupwindNthSymm3(&B3[index]);
- CCTK_REAL const PDupwindNthAnti1beta1 = PDupwindNthAnti1(&beta1[index]);
- CCTK_REAL const PDupwindNthSymm1beta1 = PDupwindNthSymm1(&beta1[index]);
- CCTK_REAL const PDupwindNthAnti2beta1 = PDupwindNthAnti2(&beta1[index]);
- CCTK_REAL const PDupwindNthSymm2beta1 = PDupwindNthSymm2(&beta1[index]);
- CCTK_REAL const PDupwindNthAnti3beta1 = PDupwindNthAnti3(&beta1[index]);
- CCTK_REAL const PDupwindNthSymm3beta1 = PDupwindNthSymm3(&beta1[index]);
- CCTK_REAL const PDupwindNthAnti1beta2 = PDupwindNthAnti1(&beta2[index]);
- CCTK_REAL const PDupwindNthSymm1beta2 = PDupwindNthSymm1(&beta2[index]);
- CCTK_REAL const PDupwindNthAnti2beta2 = PDupwindNthAnti2(&beta2[index]);
- CCTK_REAL const PDupwindNthSymm2beta2 = PDupwindNthSymm2(&beta2[index]);
- CCTK_REAL const PDupwindNthAnti3beta2 = PDupwindNthAnti3(&beta2[index]);
- CCTK_REAL const PDupwindNthSymm3beta2 = PDupwindNthSymm3(&beta2[index]);
- CCTK_REAL const PDupwindNthAnti1beta3 = PDupwindNthAnti1(&beta3[index]);
- CCTK_REAL const PDupwindNthSymm1beta3 = PDupwindNthSymm1(&beta3[index]);
- CCTK_REAL const PDupwindNthAnti2beta3 = PDupwindNthAnti2(&beta3[index]);
- CCTK_REAL const PDupwindNthSymm2beta3 = PDupwindNthSymm2(&beta3[index]);
- CCTK_REAL const PDupwindNthAnti3beta3 = PDupwindNthAnti3(&beta3[index]);
- CCTK_REAL const PDupwindNthSymm3beta3 = PDupwindNthSymm3(&beta3[index]);
- CCTK_REAL const PDupwindNthAnti1gt11 = PDupwindNthAnti1(&gt11[index]);
- CCTK_REAL const PDupwindNthSymm1gt11 = PDupwindNthSymm1(&gt11[index]);
- CCTK_REAL const PDupwindNthAnti2gt11 = PDupwindNthAnti2(&gt11[index]);
- CCTK_REAL const PDupwindNthSymm2gt11 = PDupwindNthSymm2(&gt11[index]);
- CCTK_REAL const PDupwindNthAnti3gt11 = PDupwindNthAnti3(&gt11[index]);
- CCTK_REAL const PDupwindNthSymm3gt11 = PDupwindNthSymm3(&gt11[index]);
- CCTK_REAL const PDupwindNthAnti1gt12 = PDupwindNthAnti1(&gt12[index]);
- CCTK_REAL const PDupwindNthSymm1gt12 = PDupwindNthSymm1(&gt12[index]);
- CCTK_REAL const PDupwindNthAnti2gt12 = PDupwindNthAnti2(&gt12[index]);
- CCTK_REAL const PDupwindNthSymm2gt12 = PDupwindNthSymm2(&gt12[index]);
- CCTK_REAL const PDupwindNthAnti3gt12 = PDupwindNthAnti3(&gt12[index]);
- CCTK_REAL const PDupwindNthSymm3gt12 = PDupwindNthSymm3(&gt12[index]);
- CCTK_REAL const PDupwindNthAnti1gt13 = PDupwindNthAnti1(&gt13[index]);
- CCTK_REAL const PDupwindNthSymm1gt13 = PDupwindNthSymm1(&gt13[index]);
- CCTK_REAL const PDupwindNthAnti2gt13 = PDupwindNthAnti2(&gt13[index]);
- CCTK_REAL const PDupwindNthSymm2gt13 = PDupwindNthSymm2(&gt13[index]);
- CCTK_REAL const PDupwindNthAnti3gt13 = PDupwindNthAnti3(&gt13[index]);
- CCTK_REAL const PDupwindNthSymm3gt13 = PDupwindNthSymm3(&gt13[index]);
- CCTK_REAL const PDupwindNthAnti1gt22 = PDupwindNthAnti1(&gt22[index]);
- CCTK_REAL const PDupwindNthSymm1gt22 = PDupwindNthSymm1(&gt22[index]);
- CCTK_REAL const PDupwindNthAnti2gt22 = PDupwindNthAnti2(&gt22[index]);
- CCTK_REAL const PDupwindNthSymm2gt22 = PDupwindNthSymm2(&gt22[index]);
- CCTK_REAL const PDupwindNthAnti3gt22 = PDupwindNthAnti3(&gt22[index]);
- CCTK_REAL const PDupwindNthSymm3gt22 = PDupwindNthSymm3(&gt22[index]);
- CCTK_REAL const PDupwindNthAnti1gt23 = PDupwindNthAnti1(&gt23[index]);
- CCTK_REAL const PDupwindNthSymm1gt23 = PDupwindNthSymm1(&gt23[index]);
- CCTK_REAL const PDupwindNthAnti2gt23 = PDupwindNthAnti2(&gt23[index]);
- CCTK_REAL const PDupwindNthSymm2gt23 = PDupwindNthSymm2(&gt23[index]);
- CCTK_REAL const PDupwindNthAnti3gt23 = PDupwindNthAnti3(&gt23[index]);
- CCTK_REAL const PDupwindNthSymm3gt23 = PDupwindNthSymm3(&gt23[index]);
- CCTK_REAL const PDupwindNthAnti1gt33 = PDupwindNthAnti1(&gt33[index]);
- CCTK_REAL const PDupwindNthSymm1gt33 = PDupwindNthSymm1(&gt33[index]);
- CCTK_REAL const PDupwindNthAnti2gt33 = PDupwindNthAnti2(&gt33[index]);
- CCTK_REAL const PDupwindNthSymm2gt33 = PDupwindNthSymm2(&gt33[index]);
- CCTK_REAL const PDupwindNthAnti3gt33 = PDupwindNthAnti3(&gt33[index]);
- CCTK_REAL const PDupwindNthSymm3gt33 = PDupwindNthSymm3(&gt33[index]);
- CCTK_REAL const PDupwindNthAnti1phi = PDupwindNthAnti1(&phi[index]);
- CCTK_REAL const PDupwindNthSymm1phi = PDupwindNthSymm1(&phi[index]);
- CCTK_REAL const PDupwindNthAnti2phi = PDupwindNthAnti2(&phi[index]);
- CCTK_REAL const PDupwindNthSymm2phi = PDupwindNthSymm2(&phi[index]);
- CCTK_REAL const PDupwindNthAnti3phi = PDupwindNthAnti3(&phi[index]);
- CCTK_REAL const PDupwindNthSymm3phi = PDupwindNthSymm3(&phi[index]);
- CCTK_REAL const PDupwindNthAnti1trK = PDupwindNthAnti1(&trK[index]);
- CCTK_REAL const PDupwindNthSymm1trK = PDupwindNthSymm1(&trK[index]);
- CCTK_REAL const PDupwindNthAnti2trK = PDupwindNthAnti2(&trK[index]);
- CCTK_REAL const PDupwindNthSymm2trK = PDupwindNthSymm2(&trK[index]);
- CCTK_REAL const PDupwindNthAnti3trK = PDupwindNthAnti3(&trK[index]);
- CCTK_REAL const PDupwindNthSymm3trK = PDupwindNthSymm3(&trK[index]);
- CCTK_REAL const PDupwindNthAnti1Xt1 = PDupwindNthAnti1(&Xt1[index]);
- CCTK_REAL const PDupwindNthSymm1Xt1 = PDupwindNthSymm1(&Xt1[index]);
- CCTK_REAL const PDupwindNthAnti2Xt1 = PDupwindNthAnti2(&Xt1[index]);
- CCTK_REAL const PDupwindNthSymm2Xt1 = PDupwindNthSymm2(&Xt1[index]);
- CCTK_REAL const PDupwindNthAnti3Xt1 = PDupwindNthAnti3(&Xt1[index]);
- CCTK_REAL const PDupwindNthSymm3Xt1 = PDupwindNthSymm3(&Xt1[index]);
- CCTK_REAL const PDupwindNthAnti1Xt2 = PDupwindNthAnti1(&Xt2[index]);
- CCTK_REAL const PDupwindNthSymm1Xt2 = PDupwindNthSymm1(&Xt2[index]);
- CCTK_REAL const PDupwindNthAnti2Xt2 = PDupwindNthAnti2(&Xt2[index]);
- CCTK_REAL const PDupwindNthSymm2Xt2 = PDupwindNthSymm2(&Xt2[index]);
- CCTK_REAL const PDupwindNthAnti3Xt2 = PDupwindNthAnti3(&Xt2[index]);
- CCTK_REAL const PDupwindNthSymm3Xt2 = PDupwindNthSymm3(&Xt2[index]);
- CCTK_REAL const PDupwindNthAnti1Xt3 = PDupwindNthAnti1(&Xt3[index]);
- CCTK_REAL const PDupwindNthSymm1Xt3 = PDupwindNthSymm1(&Xt3[index]);
- CCTK_REAL const PDupwindNthAnti2Xt3 = PDupwindNthAnti2(&Xt3[index]);
- CCTK_REAL const PDupwindNthSymm2Xt3 = PDupwindNthSymm2(&Xt3[index]);
- CCTK_REAL const PDupwindNthAnti3Xt3 = PDupwindNthAnti3(&Xt3[index]);
- CCTK_REAL const PDupwindNthSymm3Xt3 = PDupwindNthSymm3(&Xt3[index]);
+ 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 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]);
+ 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]);
+ 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]);
+ 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]);
+ 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);
@@ -354,172 +1079,1113 @@ static void ML_BSSN_O2_Advect_Body(cGH const * restrict const cctkGH, int const
ptrdiff_t dir3 = Sign(beta3L);
- phirhsL = beta1L*PDupwindNthAnti1phi + beta2L*PDupwindNthAnti2phi +
- beta3L*PDupwindNthAnti3phi + phirhsL + PDupwindNthSymm1phi*Abs(beta1L)
- + PDupwindNthSymm2phi*Abs(beta2L) + PDupwindNthSymm3phi*Abs(beta3L);
-
- gt11rhsL = gt11rhsL + beta1L*PDupwindNthAnti1gt11 +
- beta2L*PDupwindNthAnti2gt11 + beta3L*PDupwindNthAnti3gt11 +
- PDupwindNthSymm1gt11*Abs(beta1L) + PDupwindNthSymm2gt11*Abs(beta2L) +
- PDupwindNthSymm3gt11*Abs(beta3L);
-
- gt12rhsL = gt12rhsL + beta1L*PDupwindNthAnti1gt12 +
- beta2L*PDupwindNthAnti2gt12 + beta3L*PDupwindNthAnti3gt12 +
- PDupwindNthSymm1gt12*Abs(beta1L) + PDupwindNthSymm2gt12*Abs(beta2L) +
- PDupwindNthSymm3gt12*Abs(beta3L);
-
- gt13rhsL = gt13rhsL + beta1L*PDupwindNthAnti1gt13 +
- beta2L*PDupwindNthAnti2gt13 + beta3L*PDupwindNthAnti3gt13 +
- PDupwindNthSymm1gt13*Abs(beta1L) + PDupwindNthSymm2gt13*Abs(beta2L) +
- PDupwindNthSymm3gt13*Abs(beta3L);
-
- gt22rhsL = gt22rhsL + beta1L*PDupwindNthAnti1gt22 +
- beta2L*PDupwindNthAnti2gt22 + beta3L*PDupwindNthAnti3gt22 +
- PDupwindNthSymm1gt22*Abs(beta1L) + PDupwindNthSymm2gt22*Abs(beta2L) +
- PDupwindNthSymm3gt22*Abs(beta3L);
-
- gt23rhsL = gt23rhsL + beta1L*PDupwindNthAnti1gt23 +
- beta2L*PDupwindNthAnti2gt23 + beta3L*PDupwindNthAnti3gt23 +
- PDupwindNthSymm1gt23*Abs(beta1L) + PDupwindNthSymm2gt23*Abs(beta2L) +
- PDupwindNthSymm3gt23*Abs(beta3L);
-
- gt33rhsL = gt33rhsL + beta1L*PDupwindNthAnti1gt33 +
- beta2L*PDupwindNthAnti2gt33 + beta3L*PDupwindNthAnti3gt33 +
- PDupwindNthSymm1gt33*Abs(beta1L) + PDupwindNthSymm2gt33*Abs(beta2L) +
- PDupwindNthSymm3gt33*Abs(beta3L);
-
- Xt1rhsL = beta1L*PDupwindNthAnti1Xt1 + beta2L*PDupwindNthAnti2Xt1 +
- beta3L*PDupwindNthAnti3Xt1 + Xt1rhsL + PDupwindNthSymm1Xt1*Abs(beta1L)
- + PDupwindNthSymm2Xt1*Abs(beta2L) + PDupwindNthSymm3Xt1*Abs(beta3L);
-
- Xt2rhsL = beta1L*PDupwindNthAnti1Xt2 + beta2L*PDupwindNthAnti2Xt2 +
- beta3L*PDupwindNthAnti3Xt2 + Xt2rhsL + PDupwindNthSymm1Xt2*Abs(beta1L)
- + PDupwindNthSymm2Xt2*Abs(beta2L) + PDupwindNthSymm3Xt2*Abs(beta3L);
-
- Xt3rhsL = beta1L*PDupwindNthAnti1Xt3 + beta2L*PDupwindNthAnti2Xt3 +
- beta3L*PDupwindNthAnti3Xt3 + Xt3rhsL + PDupwindNthSymm1Xt3*Abs(beta1L)
- + PDupwindNthSymm2Xt3*Abs(beta2L) + PDupwindNthSymm3Xt3*Abs(beta3L);
-
- trKrhsL = beta1L*PDupwindNthAnti1trK + beta2L*PDupwindNthAnti2trK +
- beta3L*PDupwindNthAnti3trK + trKrhsL + PDupwindNthSymm1trK*Abs(beta1L)
- + PDupwindNthSymm2trK*Abs(beta2L) + PDupwindNthSymm3trK*Abs(beta3L);
-
- At11rhsL = At11rhsL + beta1L*PDupwindNthAnti1At11 +
- beta2L*PDupwindNthAnti2At11 + beta3L*PDupwindNthAnti3At11 +
- PDupwindNthSymm1At11*Abs(beta1L) + PDupwindNthSymm2At11*Abs(beta2L) +
- PDupwindNthSymm3At11*Abs(beta3L);
-
- At12rhsL = At12rhsL + beta1L*PDupwindNthAnti1At12 +
- beta2L*PDupwindNthAnti2At12 + beta3L*PDupwindNthAnti3At12 +
- PDupwindNthSymm1At12*Abs(beta1L) + PDupwindNthSymm2At12*Abs(beta2L) +
- PDupwindNthSymm3At12*Abs(beta3L);
-
- At13rhsL = At13rhsL + beta1L*PDupwindNthAnti1At13 +
- beta2L*PDupwindNthAnti2At13 + beta3L*PDupwindNthAnti3At13 +
- PDupwindNthSymm1At13*Abs(beta1L) + PDupwindNthSymm2At13*Abs(beta2L) +
- PDupwindNthSymm3At13*Abs(beta3L);
-
- At22rhsL = At22rhsL + beta1L*PDupwindNthAnti1At22 +
- beta2L*PDupwindNthAnti2At22 + beta3L*PDupwindNthAnti3At22 +
- PDupwindNthSymm1At22*Abs(beta1L) + PDupwindNthSymm2At22*Abs(beta2L) +
- PDupwindNthSymm3At22*Abs(beta3L);
-
- At23rhsL = At23rhsL + beta1L*PDupwindNthAnti1At23 +
- beta2L*PDupwindNthAnti2At23 + beta3L*PDupwindNthAnti3At23 +
- PDupwindNthSymm1At23*Abs(beta1L) + PDupwindNthSymm2At23*Abs(beta2L) +
- PDupwindNthSymm3At23*Abs(beta3L);
-
- At33rhsL = At33rhsL + beta1L*PDupwindNthAnti1At33 +
- beta2L*PDupwindNthAnti2At33 + beta3L*PDupwindNthAnti3At33 +
- PDupwindNthSymm1At33*Abs(beta1L) + PDupwindNthSymm2At33*Abs(beta2L) +
- PDupwindNthSymm3At33*Abs(beta3L);
-
- alpharhsL = alpharhsL + (beta1L*PDupwindNthAnti1alpha +
- beta2L*PDupwindNthAnti2alpha + beta3L*PDupwindNthAnti3alpha +
- PDupwindNthSymm1alpha*Abs(beta1L) + PDupwindNthSymm2alpha*Abs(beta2L) +
- PDupwindNthSymm3alpha*Abs(beta3L))*ToReal(LapseAdvectionCoeff);
-
- ArhsL = ArhsL + (beta1L*PDupwindNthAnti1A + beta2L*PDupwindNthAnti2A +
- beta3L*PDupwindNthAnti3A + PDupwindNthSymm1A*Abs(beta1L) +
- PDupwindNthSymm2A*Abs(beta2L) +
- PDupwindNthSymm3A*Abs(beta3L))*ToReal(LapseAdvectionCoeff);
-
- beta1rhsL = beta1rhsL + (beta1L*PDupwindNthAnti1beta1 +
- beta2L*PDupwindNthAnti2beta1 + beta3L*PDupwindNthAnti3beta1 +
- PDupwindNthSymm1beta1*Abs(beta1L) + PDupwindNthSymm2beta1*Abs(beta2L) +
- PDupwindNthSymm3beta1*Abs(beta3L))*ToReal(ShiftAdvectionCoeff);
-
- beta2rhsL = beta2rhsL + (beta1L*PDupwindNthAnti1beta2 +
- beta2L*PDupwindNthAnti2beta2 + beta3L*PDupwindNthAnti3beta2 +
- PDupwindNthSymm1beta2*Abs(beta1L) + PDupwindNthSymm2beta2*Abs(beta2L) +
- PDupwindNthSymm3beta2*Abs(beta3L))*ToReal(ShiftAdvectionCoeff);
-
- beta3rhsL = beta3rhsL + (beta1L*PDupwindNthAnti1beta3 +
- beta2L*PDupwindNthAnti2beta3 + beta3L*PDupwindNthAnti3beta3 +
- PDupwindNthSymm1beta3*Abs(beta1L) + PDupwindNthSymm2beta3*Abs(beta2L) +
- PDupwindNthSymm3beta3*Abs(beta3L))*ToReal(ShiftAdvectionCoeff);
-
- B1rhsL = B1rhsL + (beta1L*(PDupwindNthAnti1B1 - PDupwindNthAnti1Xt1) +
- beta2L*(PDupwindNthAnti2B1 - PDupwindNthAnti2Xt1) +
- beta3L*(PDupwindNthAnti3B1 - PDupwindNthAnti3Xt1) + (PDupwindNthSymm1B1
- - PDupwindNthSymm1Xt1)*Abs(beta1L) + (PDupwindNthSymm2B1 -
- PDupwindNthSymm2Xt1)*Abs(beta2L) + (PDupwindNthSymm3B1 -
- PDupwindNthSymm3Xt1)*Abs(beta3L))*ToReal(ShiftAdvectionCoeff) +
- (beta1L*PDupwindNthAnti1Xt1 + beta2L*PDupwindNthAnti2Xt1 +
- beta3L*PDupwindNthAnti3Xt1 + PDupwindNthSymm1Xt1*Abs(beta1L) +
- PDupwindNthSymm2Xt1*Abs(beta2L) +
- PDupwindNthSymm3Xt1*Abs(beta3L))*ToReal(ShiftBCoeff);
-
- B2rhsL = B2rhsL + (beta1L*(PDupwindNthAnti1B2 - PDupwindNthAnti1Xt2) +
- beta2L*(PDupwindNthAnti2B2 - PDupwindNthAnti2Xt2) +
- beta3L*(PDupwindNthAnti3B2 - PDupwindNthAnti3Xt2) + (PDupwindNthSymm1B2
- - PDupwindNthSymm1Xt2)*Abs(beta1L) + (PDupwindNthSymm2B2 -
- PDupwindNthSymm2Xt2)*Abs(beta2L) + (PDupwindNthSymm3B2 -
- PDupwindNthSymm3Xt2)*Abs(beta3L))*ToReal(ShiftAdvectionCoeff) +
- (beta1L*PDupwindNthAnti1Xt2 + beta2L*PDupwindNthAnti2Xt2 +
- beta3L*PDupwindNthAnti3Xt2 + PDupwindNthSymm1Xt2*Abs(beta1L) +
- PDupwindNthSymm2Xt2*Abs(beta2L) +
- PDupwindNthSymm3Xt2*Abs(beta3L))*ToReal(ShiftBCoeff);
-
- B3rhsL = B3rhsL + (beta1L*(PDupwindNthAnti1B3 - PDupwindNthAnti1Xt3) +
- beta2L*(PDupwindNthAnti2B3 - PDupwindNthAnti2Xt3) +
- beta3L*(PDupwindNthAnti3B3 - PDupwindNthAnti3Xt3) + (PDupwindNthSymm1B3
- - PDupwindNthSymm1Xt3)*Abs(beta1L) + (PDupwindNthSymm2B3 -
- PDupwindNthSymm2Xt3)*Abs(beta2L) + (PDupwindNthSymm3B3 -
- PDupwindNthSymm3Xt3)*Abs(beta3L))*ToReal(ShiftAdvectionCoeff) +
- (beta1L*PDupwindNthAnti1Xt3 + beta2L*PDupwindNthAnti2Xt3 +
- beta3L*PDupwindNthAnti3Xt3 + PDupwindNthSymm1Xt3*Abs(beta1L) +
- PDupwindNthSymm2Xt3*Abs(beta2L) +
- PDupwindNthSymm3Xt3*Abs(beta3L))*ToReal(ShiftBCoeff);
-
- /* Copy local copies back to grid functions */
- alpharhs[index] = alpharhsL;
- Arhs[index] = ArhsL;
- At11rhs[index] = At11rhsL;
- At12rhs[index] = At12rhsL;
- At13rhs[index] = At13rhsL;
- At22rhs[index] = At22rhsL;
- At23rhs[index] = At23rhsL;
- At33rhs[index] = At33rhsL;
- B1rhs[index] = B1rhsL;
- B2rhs[index] = B2rhsL;
- B3rhs[index] = B3rhsL;
- beta1rhs[index] = beta1rhsL;
- beta2rhs[index] = beta2rhsL;
- beta3rhs[index] = beta3rhsL;
- gt11rhs[index] = gt11rhsL;
- gt12rhs[index] = gt12rhsL;
- gt13rhs[index] = gt13rhsL;
- gt22rhs[index] = gt22rhsL;
- gt23rhs[index] = gt23rhsL;
- gt33rhs[index] = gt33rhsL;
- phirhs[index] = phirhsL;
- trKrhs[index] = trKrhsL;
- Xt1rhs[index] = Xt1rhsL;
- Xt2rhs[index] = Xt2rhsL;
- Xt3rhs[index] = Xt3rhsL;
+ 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 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 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 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 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 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 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)));
+
+ 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)));
+
+ 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)));
+
+ 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)));
+
+ 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)));
+
+ 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)));
+
+ 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;
+
+ JacPDupwindNthAnti1trK = PDupwindNthAnti1trK;
+
+ JacPDupwindNthAnti1Xt1 = PDupwindNthAnti1Xt1;
+
+ JacPDupwindNthAnti1Xt2 = PDupwindNthAnti1Xt2;
+
+ JacPDupwindNthAnti1Xt3 = PDupwindNthAnti1Xt3;
+
+ JacPDupwindNthSymm1A = PDupwindNthSymm1A;
+
+ JacPDupwindNthSymm1alpha = PDupwindNthSymm1alpha;
+
+ JacPDupwindNthSymm1At11 = PDupwindNthSymm1At11;
+
+ JacPDupwindNthSymm1At12 = PDupwindNthSymm1At12;
+
+ JacPDupwindNthSymm1At13 = PDupwindNthSymm1At13;
+
+ JacPDupwindNthSymm1At22 = PDupwindNthSymm1At22;
+
+ JacPDupwindNthSymm1At23 = PDupwindNthSymm1At23;
+
+ JacPDupwindNthSymm1At33 = PDupwindNthSymm1At33;
+
+ JacPDupwindNthSymm1B1 = PDupwindNthSymm1B1;
+
+ JacPDupwindNthSymm1B2 = PDupwindNthSymm1B2;
+
+ JacPDupwindNthSymm1B3 = PDupwindNthSymm1B3;
+
+ JacPDupwindNthSymm1beta1 = PDupwindNthSymm1beta1;
+
+ JacPDupwindNthSymm1beta2 = PDupwindNthSymm1beta2;
+
+ JacPDupwindNthSymm1beta3 = PDupwindNthSymm1beta3;
+
+ JacPDupwindNthSymm1gt11 = PDupwindNthSymm1gt11;
+
+ JacPDupwindNthSymm1gt12 = PDupwindNthSymm1gt12;
+
+ JacPDupwindNthSymm1gt13 = PDupwindNthSymm1gt13;
+
+ JacPDupwindNthSymm1gt22 = PDupwindNthSymm1gt22;
+
+ JacPDupwindNthSymm1gt23 = PDupwindNthSymm1gt23;
+
+ JacPDupwindNthSymm1gt33 = PDupwindNthSymm1gt33;
+
+ JacPDupwindNthSymm1phi = PDupwindNthSymm1phi;
+
+ JacPDupwindNthSymm1trK = PDupwindNthSymm1trK;
+
+ JacPDupwindNthSymm1Xt1 = PDupwindNthSymm1Xt1;
+
+ JacPDupwindNthSymm1Xt2 = PDupwindNthSymm1Xt2;
+
+ JacPDupwindNthSymm1Xt3 = PDupwindNthSymm1Xt3;
+
+ JacPDupwindNthAnti2A = PDupwindNthAnti2A;
+
+ JacPDupwindNthAnti2alpha = PDupwindNthAnti2alpha;
+
+ JacPDupwindNthAnti2At11 = PDupwindNthAnti2At11;
+
+ JacPDupwindNthAnti2At12 = PDupwindNthAnti2At12;
+
+ JacPDupwindNthAnti2At13 = PDupwindNthAnti2At13;
+
+ JacPDupwindNthAnti2At22 = PDupwindNthAnti2At22;
+
+ JacPDupwindNthAnti2At23 = PDupwindNthAnti2At23;
+
+ JacPDupwindNthAnti2At33 = PDupwindNthAnti2At33;
+
+ JacPDupwindNthAnti2B1 = PDupwindNthAnti2B1;
+
+ JacPDupwindNthAnti2B2 = PDupwindNthAnti2B2;
+
+ JacPDupwindNthAnti2B3 = PDupwindNthAnti2B3;
+
+ JacPDupwindNthAnti2beta1 = PDupwindNthAnti2beta1;
+
+ JacPDupwindNthAnti2beta2 = PDupwindNthAnti2beta2;
+
+ JacPDupwindNthAnti2beta3 = PDupwindNthAnti2beta3;
+
+ JacPDupwindNthAnti2gt11 = PDupwindNthAnti2gt11;
+
+ JacPDupwindNthAnti2gt12 = PDupwindNthAnti2gt12;
+
+ JacPDupwindNthAnti2gt13 = PDupwindNthAnti2gt13;
+
+ JacPDupwindNthAnti2gt22 = PDupwindNthAnti2gt22;
+
+ JacPDupwindNthAnti2gt23 = PDupwindNthAnti2gt23;
+
+ JacPDupwindNthAnti2gt33 = PDupwindNthAnti2gt33;
+
+ JacPDupwindNthAnti2phi = PDupwindNthAnti2phi;
+
+ JacPDupwindNthAnti2trK = PDupwindNthAnti2trK;
+
+ JacPDupwindNthAnti2Xt1 = PDupwindNthAnti2Xt1;
+
+ JacPDupwindNthAnti2Xt2 = PDupwindNthAnti2Xt2;
+
+ JacPDupwindNthAnti2Xt3 = PDupwindNthAnti2Xt3;
+
+ JacPDupwindNthSymm2A = PDupwindNthSymm2A;
+
+ JacPDupwindNthSymm2alpha = PDupwindNthSymm2alpha;
+
+ JacPDupwindNthSymm2At11 = PDupwindNthSymm2At11;
+
+ JacPDupwindNthSymm2At12 = PDupwindNthSymm2At12;
+
+ JacPDupwindNthSymm2At13 = PDupwindNthSymm2At13;
+
+ JacPDupwindNthSymm2At22 = PDupwindNthSymm2At22;
+
+ JacPDupwindNthSymm2At23 = PDupwindNthSymm2At23;
+
+ JacPDupwindNthSymm2At33 = PDupwindNthSymm2At33;
+
+ JacPDupwindNthSymm2B1 = PDupwindNthSymm2B1;
+
+ JacPDupwindNthSymm2B2 = PDupwindNthSymm2B2;
+
+ JacPDupwindNthSymm2B3 = PDupwindNthSymm2B3;
+
+ JacPDupwindNthSymm2beta1 = PDupwindNthSymm2beta1;
+
+ JacPDupwindNthSymm2beta2 = PDupwindNthSymm2beta2;
+
+ JacPDupwindNthSymm2beta3 = PDupwindNthSymm2beta3;
+
+ JacPDupwindNthSymm2gt11 = PDupwindNthSymm2gt11;
+
+ JacPDupwindNthSymm2gt12 = PDupwindNthSymm2gt12;
+
+ JacPDupwindNthSymm2gt13 = PDupwindNthSymm2gt13;
+
+ JacPDupwindNthSymm2gt22 = PDupwindNthSymm2gt22;
+
+ JacPDupwindNthSymm2gt23 = PDupwindNthSymm2gt23;
+
+ JacPDupwindNthSymm2gt33 = PDupwindNthSymm2gt33;
+
+ JacPDupwindNthSymm2phi = PDupwindNthSymm2phi;
+
+ JacPDupwindNthSymm2trK = PDupwindNthSymm2trK;
+
+ JacPDupwindNthSymm2Xt1 = PDupwindNthSymm2Xt1;
+
+ JacPDupwindNthSymm2Xt2 = PDupwindNthSymm2Xt2;
+
+ JacPDupwindNthSymm2Xt3 = PDupwindNthSymm2Xt3;
+
+ JacPDupwindNthAnti3A = PDupwindNthAnti3A;
+
+ JacPDupwindNthAnti3alpha = PDupwindNthAnti3alpha;
+
+ JacPDupwindNthAnti3At11 = PDupwindNthAnti3At11;
+
+ JacPDupwindNthAnti3At12 = PDupwindNthAnti3At12;
+
+ JacPDupwindNthAnti3At13 = PDupwindNthAnti3At13;
+
+ JacPDupwindNthAnti3At22 = PDupwindNthAnti3At22;
+
+ JacPDupwindNthAnti3At23 = PDupwindNthAnti3At23;
+
+ JacPDupwindNthAnti3At33 = PDupwindNthAnti3At33;
+
+ JacPDupwindNthAnti3B1 = PDupwindNthAnti3B1;
+
+ JacPDupwindNthAnti3B2 = PDupwindNthAnti3B2;
+
+ JacPDupwindNthAnti3B3 = PDupwindNthAnti3B3;
+
+ JacPDupwindNthAnti3beta1 = PDupwindNthAnti3beta1;
+
+ JacPDupwindNthAnti3beta2 = PDupwindNthAnti3beta2;
+
+ JacPDupwindNthAnti3beta3 = PDupwindNthAnti3beta3;
+
+ JacPDupwindNthAnti3gt11 = PDupwindNthAnti3gt11;
+
+ JacPDupwindNthAnti3gt12 = PDupwindNthAnti3gt12;
+
+ JacPDupwindNthAnti3gt13 = PDupwindNthAnti3gt13;
+
+ JacPDupwindNthAnti3gt22 = PDupwindNthAnti3gt22;
+
+ JacPDupwindNthAnti3gt23 = PDupwindNthAnti3gt23;
+
+ JacPDupwindNthAnti3gt33 = PDupwindNthAnti3gt33;
+
+ JacPDupwindNthAnti3phi = PDupwindNthAnti3phi;
+
+ JacPDupwindNthAnti3trK = PDupwindNthAnti3trK;
+
+ JacPDupwindNthAnti3Xt1 = PDupwindNthAnti3Xt1;
+
+ JacPDupwindNthAnti3Xt2 = PDupwindNthAnti3Xt2;
+
+ JacPDupwindNthAnti3Xt3 = PDupwindNthAnti3Xt3;
+
+ JacPDupwindNthSymm3A = PDupwindNthSymm3A;
+
+ JacPDupwindNthSymm3alpha = PDupwindNthSymm3alpha;
+
+ JacPDupwindNthSymm3At11 = PDupwindNthSymm3At11;
+
+ JacPDupwindNthSymm3At12 = PDupwindNthSymm3At12;
+
+ JacPDupwindNthSymm3At13 = PDupwindNthSymm3At13;
+
+ JacPDupwindNthSymm3At22 = PDupwindNthSymm3At22;
+
+ JacPDupwindNthSymm3At23 = PDupwindNthSymm3At23;
+
+ JacPDupwindNthSymm3At33 = PDupwindNthSymm3At33;
+
+ JacPDupwindNthSymm3B1 = PDupwindNthSymm3B1;
+
+ JacPDupwindNthSymm3B2 = PDupwindNthSymm3B2;
+
+ JacPDupwindNthSymm3B3 = PDupwindNthSymm3B3;
+
+ JacPDupwindNthSymm3beta1 = PDupwindNthSymm3beta1;
+
+ JacPDupwindNthSymm3beta2 = PDupwindNthSymm3beta2;
+
+ JacPDupwindNthSymm3beta3 = PDupwindNthSymm3beta3;
+
+ JacPDupwindNthSymm3gt11 = PDupwindNthSymm3gt11;
+
+ JacPDupwindNthSymm3gt12 = PDupwindNthSymm3gt12;
+
+ JacPDupwindNthSymm3gt13 = PDupwindNthSymm3gt13;
+
+ JacPDupwindNthSymm3gt22 = PDupwindNthSymm3gt22;
+
+ JacPDupwindNthSymm3gt23 = PDupwindNthSymm3gt23;
+
+ JacPDupwindNthSymm3gt33 = PDupwindNthSymm3gt33;
+
+ JacPDupwindNthSymm3phi = PDupwindNthSymm3phi;
+
+ JacPDupwindNthSymm3trK = PDupwindNthSymm3trK;
+
+ JacPDupwindNthSymm3Xt1 = PDupwindNthSymm3Xt1;
+
+ JacPDupwindNthSymm3Xt2 = PDupwindNthSymm3Xt2;
+
+ JacPDupwindNthSymm3Xt3 = PDupwindNthSymm3Xt3;
+ }
+
+ phirhsL =
+ kmadd(beta1L,JacPDupwindNthAnti1phi,kmadd(beta2L,JacPDupwindNthAnti2phi,kmadd(beta3L,JacPDupwindNthAnti3phi,kadd(phirhsL,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 =
+ kmadd(beta1L,JacPDupwindNthAnti1Xt1,kmadd(beta2L,JacPDupwindNthAnti2Xt1,kmadd(beta3L,JacPDupwindNthAnti3Xt1,kadd(Xt1rhsL,kmadd(JacPDupwindNthSymm1Xt1,kfabs(beta1L),kmadd(JacPDupwindNthSymm2Xt1,kfabs(beta2L),kmul(JacPDupwindNthSymm3Xt1,kfabs(beta3L))))))));
+
+ Xt2rhsL =
+ kmadd(beta1L,JacPDupwindNthAnti1Xt2,kmadd(beta2L,JacPDupwindNthAnti2Xt2,kmadd(beta3L,JacPDupwindNthAnti3Xt2,kadd(Xt2rhsL,kmadd(JacPDupwindNthSymm1Xt2,kfabs(beta1L),kmadd(JacPDupwindNthSymm2Xt2,kfabs(beta2L),kmul(JacPDupwindNthSymm3Xt2,kfabs(beta3L))))))));
+
+ Xt3rhsL =
+ kmadd(beta1L,JacPDupwindNthAnti1Xt3,kmadd(beta2L,JacPDupwindNthAnti2Xt3,kmadd(beta3L,JacPDupwindNthAnti3Xt3,kadd(Xt3rhsL,kmadd(JacPDupwindNthSymm1Xt3,kfabs(beta1L),kmadd(JacPDupwindNthSymm2Xt3,kfabs(beta2L),kmul(JacPDupwindNthSymm3Xt3,kfabs(beta3L))))))));
+
+ trKrhsL =
+ kmadd(beta1L,JacPDupwindNthAnti1trK,kmadd(beta2L,JacPDupwindNthAnti2trK,kmadd(beta3L,JacPDupwindNthAnti3trK,kadd(trKrhsL,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(kmadd(beta1L,JacPDupwindNthAnti1A,kmadd(beta2L,JacPDupwindNthAnti2A,kmadd(beta3L,JacPDupwindNthAnti3A,kmadd(JacPDupwindNthSymm1A,kfabs(beta1L),kmadd(JacPDupwindNthSymm2A,kfabs(beta2L),kmul(JacPDupwindNthSymm3A,kfabs(beta3L))))))),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 =
+ kadd(B1rhsL,kmadd(kmadd(beta1L,ksub(JacPDupwindNthAnti1B1,JacPDupwindNthAnti1Xt1),kmadd(beta2L,ksub(JacPDupwindNthAnti2B1,JacPDupwindNthAnti2Xt1),kmadd(beta3L,ksub(JacPDupwindNthAnti3B1,JacPDupwindNthAnti3Xt1),kmadd(kfabs(beta1L),ksub(JacPDupwindNthSymm1B1,JacPDupwindNthSymm1Xt1),kmadd(kfabs(beta2L),ksub(JacPDupwindNthSymm2B1,JacPDupwindNthSymm2Xt1),kmul(kfabs(beta3L),ksub(JacPDupwindNthSymm3B1,JacPDupwindNthSymm3Xt1))))))),ToReal(ShiftAdvectionCoeff),kmul(kmadd(beta1L,JacPDupwindNthAnti1Xt1,kmadd(beta2L,JacPDupwindNthAnti2Xt1,kmadd(beta3L,JacPDupwindNthAnti3Xt1,kmadd(JacPDupwindNthSymm1Xt1,kfabs(beta1L),kmadd(JacPDupwindNthSymm2Xt1,kfabs(beta2L),kmul(JacPDupwindNthSymm3Xt1,kfabs(beta3L))))))),ToReal(ShiftBCoeff))));
+
+ B2rhsL =
+ kadd(B2rhsL,kmadd(kmadd(beta1L,ksub(JacPDupwindNthAnti1B2,JacPDupwindNthAnti1Xt2),kmadd(beta2L,ksub(JacPDupwindNthAnti2B2,JacPDupwindNthAnti2Xt2),kmadd(beta3L,ksub(JacPDupwindNthAnti3B2,JacPDupwindNthAnti3Xt2),kmadd(kfabs(beta1L),ksub(JacPDupwindNthSymm1B2,JacPDupwindNthSymm1Xt2),kmadd(kfabs(beta2L),ksub(JacPDupwindNthSymm2B2,JacPDupwindNthSymm2Xt2),kmul(kfabs(beta3L),ksub(JacPDupwindNthSymm3B2,JacPDupwindNthSymm3Xt2))))))),ToReal(ShiftAdvectionCoeff),kmul(kmadd(beta1L,JacPDupwindNthAnti1Xt2,kmadd(beta2L,JacPDupwindNthAnti2Xt2,kmadd(beta3L,JacPDupwindNthAnti3Xt2,kmadd(JacPDupwindNthSymm1Xt2,kfabs(beta1L),kmadd(JacPDupwindNthSymm2Xt2,kfabs(beta2L),kmul(JacPDupwindNthSymm3Xt2,kfabs(beta3L))))))),ToReal(ShiftBCoeff))));
+
+ B3rhsL =
+ kadd(B3rhsL,kmadd(kmadd(beta1L,ksub(JacPDupwindNthAnti1B3,JacPDupwindNthAnti1Xt3),kmadd(beta2L,ksub(JacPDupwindNthAnti2B3,JacPDupwindNthAnti2Xt3),kmadd(beta3L,ksub(JacPDupwindNthAnti3B3,JacPDupwindNthAnti3Xt3),kmadd(kfabs(beta1L),ksub(JacPDupwindNthSymm1B3,JacPDupwindNthSymm1Xt3),kmadd(kfabs(beta2L),ksub(JacPDupwindNthSymm2B3,JacPDupwindNthSymm2Xt3),kmul(kfabs(beta3L),ksub(JacPDupwindNthSymm3B3,JacPDupwindNthSymm3Xt3))))))),ToReal(ShiftAdvectionCoeff),kmul(kmadd(beta1L,JacPDupwindNthAnti1Xt3,kmadd(beta2L,JacPDupwindNthAnti2Xt3,kmadd(beta3L,JacPDupwindNthAnti3Xt3,kmadd(JacPDupwindNthSymm1Xt3,kfabs(beta1L),kmadd(JacPDupwindNthSymm2Xt3,kfabs(beta2L),kmul(JacPDupwindNthSymm3Xt3,kfabs(beta3L))))))),ToReal(ShiftBCoeff))));
+
+ /* 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(Arhs[index],ArhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At11rhs[index],At11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At12rhs[index],At12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At13rhs[index],At13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At22rhs[index],At22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At23rhs[index],At23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At33rhs[index],At33rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B1rhs[index],B1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B2rhs[index],B2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt12rhs[index],gt12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt13rhs[index],gt13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt22rhs[index],gt22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt23rhs[index],gt23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt33rhs[index],gt33rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(phirhs[index],phirhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(trKrhs[index],trKrhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt1rhs[index],Xt1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt2rhs[index],Xt2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt3rhs[index],Xt3rhsL,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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_hi(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_hi(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_hi(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_hi(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_hi(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_hi(At33rhs[index],At33rhsL,elt_count);
+ vec_store_nta_partial_hi(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_hi(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_hi(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_hi(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_hi(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_hi(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_hi(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_hi(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_hi(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_hi(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_hi(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt3rhs[index],Xt3rhsL,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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_lo(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_lo(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_lo(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_lo(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_lo(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_lo(At33rhs[index],At33rhsL,elt_count);
+ vec_store_nta_partial_lo(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_lo(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_lo(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_lo(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_lo(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_lo(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_lo(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_lo(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_lo(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_lo(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_lo(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt3rhs[index],Xt3rhsL,elt_count);
+ break;
+ }
+ vec_store_nta(alpharhs[index],alpharhsL);
+ vec_store_nta(Arhs[index],ArhsL);
+ vec_store_nta(At11rhs[index],At11rhsL);
+ vec_store_nta(At12rhs[index],At12rhsL);
+ vec_store_nta(At13rhs[index],At13rhsL);
+ vec_store_nta(At22rhs[index],At22rhsL);
+ vec_store_nta(At23rhs[index],At23rhsL);
+ vec_store_nta(At33rhs[index],At33rhsL);
+ vec_store_nta(B1rhs[index],B1rhsL);
+ vec_store_nta(B2rhs[index],B2rhsL);
+ vec_store_nta(B3rhs[index],B3rhsL);
+ vec_store_nta(beta1rhs[index],beta1rhsL);
+ vec_store_nta(beta2rhs[index],beta2rhsL);
+ vec_store_nta(beta3rhs[index],beta3rhsL);
+ vec_store_nta(gt11rhs[index],gt11rhsL);
+ vec_store_nta(gt12rhs[index],gt12rhsL);
+ vec_store_nta(gt13rhs[index],gt13rhsL);
+ vec_store_nta(gt22rhs[index],gt22rhsL);
+ vec_store_nta(gt23rhs[index],gt23rhsL);
+ vec_store_nta(gt33rhs[index],gt33rhsL);
+ vec_store_nta(phirhs[index],phirhsL);
+ vec_store_nta(trKrhs[index],trKrhsL);
+ vec_store_nta(Xt1rhs[index],Xt1rhsL);
+ vec_store_nta(Xt2rhs[index],Xt2rhsL);
+ vec_store_nta(Xt3rhs[index],Xt3rhsL);
}
- LC_ENDLOOP3 (ML_BSSN_O2_Advect);
+ LC_ENDLOOP3VEC (ML_BSSN_O2_Advect);
}
extern "C" void ML_BSSN_O2_Advect(CCTK_ARGUMENTS)
@@ -527,5 +2193,43 @@ extern "C" void ML_BSSN_O2_Advect(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O2_Advect_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_O2_Advect_calc_every != ML_BSSN_O2_Advect_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN_O2::ML_curv","ML_BSSN_O2::ML_curvrhs","ML_BSSN_O2::ML_dtlapse","ML_BSSN_O2::ML_dtlapserhs","ML_BSSN_O2::ML_dtshift","ML_BSSN_O2::ML_dtshiftrhs","ML_BSSN_O2::ML_Gamma","ML_BSSN_O2::ML_Gammarhs","ML_BSSN_O2::ML_lapse","ML_BSSN_O2::ML_lapserhs","ML_BSSN_O2::ML_log_confac","ML_BSSN_O2::ML_log_confacrhs","ML_BSSN_O2::ML_metric","ML_BSSN_O2::ML_metricrhs","ML_BSSN_O2::ML_shift","ML_BSSN_O2::ML_shiftrhs","ML_BSSN_O2::ML_trace_curv","ML_BSSN_O2::ML_trace_curvrhs"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O2_Advect", 18, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O2_Advect", 2, 2, 2);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O2_Advect", 3, 3, 3);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O2_Advect", 4, 4, 4);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O2_Advect", 5, 5, 5);
+ break;
+ }
+
GenericFD_LoopOverInterior(cctkGH, &ML_BSSN_O2_Advect_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_O2_Advect_Body");
+ }
}
diff --git a/ML_BSSN_O2/src/ML_BSSN_O2_Dissipation.cc b/ML_BSSN_O2/src/ML_BSSN_O2_Dissipation.cc
index 42025ae..f257d4c 100644
--- a/ML_BSSN_O2/src/ML_BSSN_O2_Dissipation.cc
+++ b/ML_BSSN_O2/src/ML_BSSN_O2_Dissipation.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_O2_Dissipation_SelectBCs(CCTK_ARGUMENTS)
{
@@ -57,7 +58,7 @@ extern "C" void ML_BSSN_O2_Dissipation_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_BSSN_O2_Dissipation_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_O2_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;
@@ -65,21 +66,6 @@ static void ML_BSSN_O2_Dissipation_Body(cGH const * restrict const cctkGH, int c
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O2_Dissipation_Body");
- }
-
- if (cctk_iteration % ML_BSSN_O2_Dissipation_calc_every != ML_BSSN_O2_Dissipation_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN_O2::ML_curv","ML_BSSN_O2::ML_curvrhs","ML_BSSN_O2::ML_dtlapse","ML_BSSN_O2::ML_dtlapserhs","ML_BSSN_O2::ML_dtshift","ML_BSSN_O2::ML_dtshiftrhs","ML_BSSN_O2::ML_Gamma","ML_BSSN_O2::ML_Gammarhs","ML_BSSN_O2::ML_lapse","ML_BSSN_O2::ML_lapserhs","ML_BSSN_O2::ML_log_confac","ML_BSSN_O2::ML_log_confacrhs","ML_BSSN_O2::ML_metric","ML_BSSN_O2::ML_metricrhs","ML_BSSN_O2::ML_shift","ML_BSSN_O2::ML_shiftrhs","ML_BSSN_O2::ML_trace_curv","ML_BSSN_O2::ML_trace_curvrhs"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O2_Dissipation", 18, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O2_Dissipation", 2, 2, 2);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -89,304 +75,1292 @@ static void ML_BSSN_O2_Dissipation_Body(cGH const * restrict const cctkGH, int c
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o16dx = 0.0625*INV(dx);
- CCTK_REAL const p1o16dy = 0.0625*INV(dy);
- CCTK_REAL const p1o16dz = 0.0625*INV(dz);
- CCTK_REAL const p1o2dx = 0.5*INV(dx);
- CCTK_REAL const p1o2dy = 0.5*INV(dy);
- CCTK_REAL const p1o2dz = 0.5*INV(dz);
- CCTK_REAL const p1o4dx = 0.25*INV(dx);
- CCTK_REAL const p1o4dxdy = 0.25*INV(dx)*INV(dy);
- CCTK_REAL const p1o4dxdz = 0.25*INV(dx)*INV(dz);
- CCTK_REAL const p1o4dy = 0.25*INV(dy);
- CCTK_REAL const p1o4dydz = 0.25*INV(dy)*INV(dz);
- CCTK_REAL const p1o4dz = 0.25*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1odx2 = INV(SQR(dx));
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1ody2 = INV(SQR(dy));
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const p1odz2 = INV(SQR(dz));
- CCTK_REAL const pm1o2dx = -0.5*INV(dx);
- CCTK_REAL const pm1o2dy = -0.5*INV(dy);
- CCTK_REAL const pm1o2dz = -0.5*INV(dz);
- CCTK_REAL const pm1o4dx = -0.25*INV(dx);
- CCTK_REAL const pm1o4dy = -0.25*INV(dy);
- CCTK_REAL const pm1o4dz = -0.25*INV(dz);
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_O2_Dissipation,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_O2_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 AL = A[index];
- CCTK_REAL alphaL = alpha[index];
- CCTK_REAL alpharhsL = alpharhs[index];
- CCTK_REAL ArhsL = Arhs[index];
- CCTK_REAL At11L = At11[index];
- CCTK_REAL At11rhsL = At11rhs[index];
- CCTK_REAL At12L = At12[index];
- CCTK_REAL At12rhsL = At12rhs[index];
- CCTK_REAL At13L = At13[index];
- CCTK_REAL At13rhsL = At13rhs[index];
- CCTK_REAL At22L = At22[index];
- CCTK_REAL At22rhsL = At22rhs[index];
- CCTK_REAL At23L = At23[index];
- CCTK_REAL At23rhsL = At23rhs[index];
- CCTK_REAL At33L = At33[index];
- CCTK_REAL At33rhsL = At33rhs[index];
- CCTK_REAL B1L = B1[index];
- CCTK_REAL B1rhsL = B1rhs[index];
- CCTK_REAL B2L = B2[index];
- CCTK_REAL B2rhsL = B2rhs[index];
- CCTK_REAL B3L = B3[index];
- CCTK_REAL B3rhsL = B3rhs[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta1rhsL = beta1rhs[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta2rhsL = beta2rhs[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL beta3rhsL = beta3rhs[index];
- CCTK_REAL gt11L = gt11[index];
- CCTK_REAL gt11rhsL = gt11rhs[index];
- CCTK_REAL gt12L = gt12[index];
- CCTK_REAL gt12rhsL = gt12rhs[index];
- CCTK_REAL gt13L = gt13[index];
- CCTK_REAL gt13rhsL = gt13rhs[index];
- CCTK_REAL gt22L = gt22[index];
- CCTK_REAL gt22rhsL = gt22rhs[index];
- CCTK_REAL gt23L = gt23[index];
- CCTK_REAL gt23rhsL = gt23rhs[index];
- CCTK_REAL gt33L = gt33[index];
- CCTK_REAL gt33rhsL = gt33rhs[index];
- CCTK_REAL phiL = phi[index];
- CCTK_REAL phirhsL = phirhs[index];
- CCTK_REAL trKL = trK[index];
- CCTK_REAL trKrhsL = trKrhs[index];
- CCTK_REAL Xt1L = Xt1[index];
- CCTK_REAL Xt1rhsL = Xt1rhs[index];
- CCTK_REAL Xt2L = Xt2[index];
- CCTK_REAL Xt2rhsL = Xt2rhs[index];
- CCTK_REAL Xt3L = Xt3[index];
- CCTK_REAL Xt3rhsL = Xt3rhs[index];
+ CCTK_REAL_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 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 const PDdissipationNth1A = PDdissipationNth1(&A[index]);
- CCTK_REAL const PDdissipationNth2A = PDdissipationNth2(&A[index]);
- CCTK_REAL const PDdissipationNth3A = PDdissipationNth3(&A[index]);
- CCTK_REAL const PDdissipationNth1alpha = PDdissipationNth1(&alpha[index]);
- CCTK_REAL const PDdissipationNth2alpha = PDdissipationNth2(&alpha[index]);
- CCTK_REAL const PDdissipationNth3alpha = PDdissipationNth3(&alpha[index]);
- CCTK_REAL const PDdissipationNth1At11 = PDdissipationNth1(&At11[index]);
- CCTK_REAL const PDdissipationNth2At11 = PDdissipationNth2(&At11[index]);
- CCTK_REAL const PDdissipationNth3At11 = PDdissipationNth3(&At11[index]);
- CCTK_REAL const PDdissipationNth1At12 = PDdissipationNth1(&At12[index]);
- CCTK_REAL const PDdissipationNth2At12 = PDdissipationNth2(&At12[index]);
- CCTK_REAL const PDdissipationNth3At12 = PDdissipationNth3(&At12[index]);
- CCTK_REAL const PDdissipationNth1At13 = PDdissipationNth1(&At13[index]);
- CCTK_REAL const PDdissipationNth2At13 = PDdissipationNth2(&At13[index]);
- CCTK_REAL const PDdissipationNth3At13 = PDdissipationNth3(&At13[index]);
- CCTK_REAL const PDdissipationNth1At22 = PDdissipationNth1(&At22[index]);
- CCTK_REAL const PDdissipationNth2At22 = PDdissipationNth2(&At22[index]);
- CCTK_REAL const PDdissipationNth3At22 = PDdissipationNth3(&At22[index]);
- CCTK_REAL const PDdissipationNth1At23 = PDdissipationNth1(&At23[index]);
- CCTK_REAL const PDdissipationNth2At23 = PDdissipationNth2(&At23[index]);
- CCTK_REAL const PDdissipationNth3At23 = PDdissipationNth3(&At23[index]);
- CCTK_REAL const PDdissipationNth1At33 = PDdissipationNth1(&At33[index]);
- CCTK_REAL const PDdissipationNth2At33 = PDdissipationNth2(&At33[index]);
- CCTK_REAL const PDdissipationNth3At33 = PDdissipationNth3(&At33[index]);
- CCTK_REAL const PDdissipationNth1B1 = PDdissipationNth1(&B1[index]);
- CCTK_REAL const PDdissipationNth2B1 = PDdissipationNth2(&B1[index]);
- CCTK_REAL const PDdissipationNth3B1 = PDdissipationNth3(&B1[index]);
- CCTK_REAL const PDdissipationNth1B2 = PDdissipationNth1(&B2[index]);
- CCTK_REAL const PDdissipationNth2B2 = PDdissipationNth2(&B2[index]);
- CCTK_REAL const PDdissipationNth3B2 = PDdissipationNth3(&B2[index]);
- CCTK_REAL const PDdissipationNth1B3 = PDdissipationNth1(&B3[index]);
- CCTK_REAL const PDdissipationNth2B3 = PDdissipationNth2(&B3[index]);
- CCTK_REAL const PDdissipationNth3B3 = PDdissipationNth3(&B3[index]);
- CCTK_REAL const PDdissipationNth1beta1 = PDdissipationNth1(&beta1[index]);
- CCTK_REAL const PDdissipationNth2beta1 = PDdissipationNth2(&beta1[index]);
- CCTK_REAL const PDdissipationNth3beta1 = PDdissipationNth3(&beta1[index]);
- CCTK_REAL const PDdissipationNth1beta2 = PDdissipationNth1(&beta2[index]);
- CCTK_REAL const PDdissipationNth2beta2 = PDdissipationNth2(&beta2[index]);
- CCTK_REAL const PDdissipationNth3beta2 = PDdissipationNth3(&beta2[index]);
- CCTK_REAL const PDdissipationNth1beta3 = PDdissipationNth1(&beta3[index]);
- CCTK_REAL const PDdissipationNth2beta3 = PDdissipationNth2(&beta3[index]);
- CCTK_REAL const PDdissipationNth3beta3 = PDdissipationNth3(&beta3[index]);
- CCTK_REAL const PDdissipationNth1gt11 = PDdissipationNth1(&gt11[index]);
- CCTK_REAL const PDdissipationNth2gt11 = PDdissipationNth2(&gt11[index]);
- CCTK_REAL const PDdissipationNth3gt11 = PDdissipationNth3(&gt11[index]);
- CCTK_REAL const PDdissipationNth1gt12 = PDdissipationNth1(&gt12[index]);
- CCTK_REAL const PDdissipationNth2gt12 = PDdissipationNth2(&gt12[index]);
- CCTK_REAL const PDdissipationNth3gt12 = PDdissipationNth3(&gt12[index]);
- CCTK_REAL const PDdissipationNth1gt13 = PDdissipationNth1(&gt13[index]);
- CCTK_REAL const PDdissipationNth2gt13 = PDdissipationNth2(&gt13[index]);
- CCTK_REAL const PDdissipationNth3gt13 = PDdissipationNth3(&gt13[index]);
- CCTK_REAL const PDdissipationNth1gt22 = PDdissipationNth1(&gt22[index]);
- CCTK_REAL const PDdissipationNth2gt22 = PDdissipationNth2(&gt22[index]);
- CCTK_REAL const PDdissipationNth3gt22 = PDdissipationNth3(&gt22[index]);
- CCTK_REAL const PDdissipationNth1gt23 = PDdissipationNth1(&gt23[index]);
- CCTK_REAL const PDdissipationNth2gt23 = PDdissipationNth2(&gt23[index]);
- CCTK_REAL const PDdissipationNth3gt23 = PDdissipationNth3(&gt23[index]);
- CCTK_REAL const PDdissipationNth1gt33 = PDdissipationNth1(&gt33[index]);
- CCTK_REAL const PDdissipationNth2gt33 = PDdissipationNth2(&gt33[index]);
- CCTK_REAL const PDdissipationNth3gt33 = PDdissipationNth3(&gt33[index]);
- CCTK_REAL const PDdissipationNth1phi = PDdissipationNth1(&phi[index]);
- CCTK_REAL const PDdissipationNth2phi = PDdissipationNth2(&phi[index]);
- CCTK_REAL const PDdissipationNth3phi = PDdissipationNth3(&phi[index]);
- CCTK_REAL const PDdissipationNth1trK = PDdissipationNth1(&trK[index]);
- CCTK_REAL const PDdissipationNth2trK = PDdissipationNth2(&trK[index]);
- CCTK_REAL const PDdissipationNth3trK = PDdissipationNth3(&trK[index]);
- CCTK_REAL const PDdissipationNth1Xt1 = PDdissipationNth1(&Xt1[index]);
- CCTK_REAL const PDdissipationNth2Xt1 = PDdissipationNth2(&Xt1[index]);
- CCTK_REAL const PDdissipationNth3Xt1 = PDdissipationNth3(&Xt1[index]);
- CCTK_REAL const PDdissipationNth1Xt2 = PDdissipationNth1(&Xt2[index]);
- CCTK_REAL const PDdissipationNth2Xt2 = PDdissipationNth2(&Xt2[index]);
- CCTK_REAL const PDdissipationNth3Xt2 = PDdissipationNth3(&Xt2[index]);
- CCTK_REAL const PDdissipationNth1Xt3 = PDdissipationNth1(&Xt3[index]);
- CCTK_REAL const PDdissipationNth2Xt3 = PDdissipationNth2(&Xt3[index]);
- CCTK_REAL const PDdissipationNth3Xt3 = PDdissipationNth3(&Xt3[index]);
+ 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 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]);
+ 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]);
+ 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]);
+ 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]);
+ 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 epsdiss1 = ToReal(EpsDiss);
+ 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 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 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 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)));
+
+ 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)));
+
+ 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)));
+
+ 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;
+
+ JacPDdissipationNth1trK = PDdissipationNth1trK;
+
+ JacPDdissipationNth1Xt1 = PDdissipationNth1Xt1;
+
+ JacPDdissipationNth1Xt2 = PDdissipationNth1Xt2;
+
+ JacPDdissipationNth1Xt3 = PDdissipationNth1Xt3;
+
+ JacPDdissipationNth2A = PDdissipationNth2A;
+
+ JacPDdissipationNth2alpha = PDdissipationNth2alpha;
+
+ JacPDdissipationNth2At11 = PDdissipationNth2At11;
+
+ JacPDdissipationNth2At12 = PDdissipationNth2At12;
+
+ JacPDdissipationNth2At13 = PDdissipationNth2At13;
+
+ JacPDdissipationNth2At22 = PDdissipationNth2At22;
+
+ JacPDdissipationNth2At23 = PDdissipationNth2At23;
+
+ JacPDdissipationNth2At33 = PDdissipationNth2At33;
+
+ JacPDdissipationNth2B1 = PDdissipationNth2B1;
+
+ JacPDdissipationNth2B2 = PDdissipationNth2B2;
+
+ JacPDdissipationNth2B3 = PDdissipationNth2B3;
+
+ JacPDdissipationNth2beta1 = PDdissipationNth2beta1;
+
+ JacPDdissipationNth2beta2 = PDdissipationNth2beta2;
+
+ JacPDdissipationNth2beta3 = PDdissipationNth2beta3;
+
+ JacPDdissipationNth2gt11 = PDdissipationNth2gt11;
+
+ JacPDdissipationNth2gt12 = PDdissipationNth2gt12;
+
+ JacPDdissipationNth2gt13 = PDdissipationNth2gt13;
+
+ JacPDdissipationNth2gt22 = PDdissipationNth2gt22;
+
+ JacPDdissipationNth2gt23 = PDdissipationNth2gt23;
+
+ JacPDdissipationNth2gt33 = PDdissipationNth2gt33;
+
+ JacPDdissipationNth2phi = PDdissipationNth2phi;
+
+ JacPDdissipationNth2trK = PDdissipationNth2trK;
+
+ JacPDdissipationNth2Xt1 = PDdissipationNth2Xt1;
+
+ JacPDdissipationNth2Xt2 = PDdissipationNth2Xt2;
+
+ JacPDdissipationNth2Xt3 = PDdissipationNth2Xt3;
+
+ JacPDdissipationNth3A = PDdissipationNth3A;
+
+ JacPDdissipationNth3alpha = PDdissipationNth3alpha;
+
+ JacPDdissipationNth3At11 = PDdissipationNth3At11;
+
+ JacPDdissipationNth3At12 = PDdissipationNth3At12;
+
+ JacPDdissipationNth3At13 = PDdissipationNth3At13;
+
+ JacPDdissipationNth3At22 = PDdissipationNth3At22;
+
+ JacPDdissipationNth3At23 = PDdissipationNth3At23;
+
+ JacPDdissipationNth3At33 = PDdissipationNth3At33;
+
+ JacPDdissipationNth3B1 = PDdissipationNth3B1;
+
+ JacPDdissipationNth3B2 = PDdissipationNth3B2;
+
+ JacPDdissipationNth3B3 = PDdissipationNth3B3;
+
+ JacPDdissipationNth3beta1 = PDdissipationNth3beta1;
+
+ JacPDdissipationNth3beta2 = PDdissipationNth3beta2;
+
+ JacPDdissipationNth3beta3 = PDdissipationNth3beta3;
+
+ JacPDdissipationNth3gt11 = PDdissipationNth3gt11;
+
+ JacPDdissipationNth3gt12 = PDdissipationNth3gt12;
+
+ JacPDdissipationNth3gt13 = PDdissipationNth3gt13;
+
+ JacPDdissipationNth3gt22 = PDdissipationNth3gt22;
+
+ JacPDdissipationNth3gt23 = PDdissipationNth3gt23;
+
+ JacPDdissipationNth3gt33 = PDdissipationNth3gt33;
+
+ JacPDdissipationNth3phi = PDdissipationNth3phi;
+
+ JacPDdissipationNth3trK = PDdissipationNth3trK;
+
+ JacPDdissipationNth3Xt1 = PDdissipationNth3Xt1;
+
+ JacPDdissipationNth3Xt2 = PDdissipationNth3Xt2;
+
+ JacPDdissipationNth3Xt3 = PDdissipationNth3Xt3;
+ }
- CCTK_REAL epsdiss2 = ToReal(EpsDiss);
+ CCTK_REAL_VEC epsdiss1 = ToReal(EpsDiss);
- CCTK_REAL epsdiss3 = ToReal(EpsDiss);
+ CCTK_REAL_VEC epsdiss2 = ToReal(EpsDiss);
- phirhsL = epsdiss1*PDdissipationNth1phi +
- epsdiss2*PDdissipationNth2phi + epsdiss3*PDdissipationNth3phi +
- phirhsL;
+ CCTK_REAL_VEC epsdiss3 = ToReal(EpsDiss);
- gt11rhsL = gt11rhsL + epsdiss1*PDdissipationNth1gt11 +
- epsdiss2*PDdissipationNth2gt11 + epsdiss3*PDdissipationNth3gt11;
+ phirhsL =
+ kmadd(epsdiss1,JacPDdissipationNth1phi,kmadd(epsdiss2,JacPDdissipationNth2phi,kmadd(epsdiss3,JacPDdissipationNth3phi,phirhsL)));
- gt12rhsL = gt12rhsL + epsdiss1*PDdissipationNth1gt12 +
- epsdiss2*PDdissipationNth2gt12 + epsdiss3*PDdissipationNth3gt12;
+ gt11rhsL =
+ kadd(gt11rhsL,kmadd(epsdiss1,JacPDdissipationNth1gt11,kmadd(epsdiss2,JacPDdissipationNth2gt11,kmul(epsdiss3,JacPDdissipationNth3gt11))));
- gt13rhsL = gt13rhsL + epsdiss1*PDdissipationNth1gt13 +
- epsdiss2*PDdissipationNth2gt13 + epsdiss3*PDdissipationNth3gt13;
+ gt12rhsL =
+ kadd(gt12rhsL,kmadd(epsdiss1,JacPDdissipationNth1gt12,kmadd(epsdiss2,JacPDdissipationNth2gt12,kmul(epsdiss3,JacPDdissipationNth3gt12))));
- gt22rhsL = gt22rhsL + epsdiss1*PDdissipationNth1gt22 +
- epsdiss2*PDdissipationNth2gt22 + epsdiss3*PDdissipationNth3gt22;
+ gt13rhsL =
+ kadd(gt13rhsL,kmadd(epsdiss1,JacPDdissipationNth1gt13,kmadd(epsdiss2,JacPDdissipationNth2gt13,kmul(epsdiss3,JacPDdissipationNth3gt13))));
- gt23rhsL = gt23rhsL + epsdiss1*PDdissipationNth1gt23 +
- epsdiss2*PDdissipationNth2gt23 + epsdiss3*PDdissipationNth3gt23;
+ gt22rhsL =
+ kadd(gt22rhsL,kmadd(epsdiss1,JacPDdissipationNth1gt22,kmadd(epsdiss2,JacPDdissipationNth2gt22,kmul(epsdiss3,JacPDdissipationNth3gt22))));
- gt33rhsL = gt33rhsL + epsdiss1*PDdissipationNth1gt33 +
- epsdiss2*PDdissipationNth2gt33 + epsdiss3*PDdissipationNth3gt33;
+ gt23rhsL =
+ kadd(gt23rhsL,kmadd(epsdiss1,JacPDdissipationNth1gt23,kmadd(epsdiss2,JacPDdissipationNth2gt23,kmul(epsdiss3,JacPDdissipationNth3gt23))));
- Xt1rhsL = epsdiss1*PDdissipationNth1Xt1 +
- epsdiss2*PDdissipationNth2Xt1 + epsdiss3*PDdissipationNth3Xt1 +
- Xt1rhsL;
+ gt33rhsL =
+ kadd(gt33rhsL,kmadd(epsdiss1,JacPDdissipationNth1gt33,kmadd(epsdiss2,JacPDdissipationNth2gt33,kmul(epsdiss3,JacPDdissipationNth3gt33))));
- Xt2rhsL = epsdiss1*PDdissipationNth1Xt2 +
- epsdiss2*PDdissipationNth2Xt2 + epsdiss3*PDdissipationNth3Xt2 +
- Xt2rhsL;
+ Xt1rhsL =
+ kmadd(epsdiss1,JacPDdissipationNth1Xt1,kmadd(epsdiss2,JacPDdissipationNth2Xt1,kmadd(epsdiss3,JacPDdissipationNth3Xt1,Xt1rhsL)));
- Xt3rhsL = epsdiss1*PDdissipationNth1Xt3 +
- epsdiss2*PDdissipationNth2Xt3 + epsdiss3*PDdissipationNth3Xt3 +
- Xt3rhsL;
+ Xt2rhsL =
+ kmadd(epsdiss1,JacPDdissipationNth1Xt2,kmadd(epsdiss2,JacPDdissipationNth2Xt2,kmadd(epsdiss3,JacPDdissipationNth3Xt2,Xt2rhsL)));
- trKrhsL = epsdiss1*PDdissipationNth1trK +
- epsdiss2*PDdissipationNth2trK + epsdiss3*PDdissipationNth3trK +
- trKrhsL;
+ Xt3rhsL =
+ kmadd(epsdiss1,JacPDdissipationNth1Xt3,kmadd(epsdiss2,JacPDdissipationNth2Xt3,kmadd(epsdiss3,JacPDdissipationNth3Xt3,Xt3rhsL)));
- At11rhsL = At11rhsL + epsdiss1*PDdissipationNth1At11 +
- epsdiss2*PDdissipationNth2At11 + epsdiss3*PDdissipationNth3At11;
+ trKrhsL =
+ kmadd(epsdiss1,JacPDdissipationNth1trK,kmadd(epsdiss2,JacPDdissipationNth2trK,kmadd(epsdiss3,JacPDdissipationNth3trK,trKrhsL)));
- At12rhsL = At12rhsL + epsdiss1*PDdissipationNth1At12 +
- epsdiss2*PDdissipationNth2At12 + epsdiss3*PDdissipationNth3At12;
+ At11rhsL =
+ kadd(At11rhsL,kmadd(epsdiss1,JacPDdissipationNth1At11,kmadd(epsdiss2,JacPDdissipationNth2At11,kmul(epsdiss3,JacPDdissipationNth3At11))));
- At13rhsL = At13rhsL + epsdiss1*PDdissipationNth1At13 +
- epsdiss2*PDdissipationNth2At13 + epsdiss3*PDdissipationNth3At13;
+ At12rhsL =
+ kadd(At12rhsL,kmadd(epsdiss1,JacPDdissipationNth1At12,kmadd(epsdiss2,JacPDdissipationNth2At12,kmul(epsdiss3,JacPDdissipationNth3At12))));
- At22rhsL = At22rhsL + epsdiss1*PDdissipationNth1At22 +
- epsdiss2*PDdissipationNth2At22 + epsdiss3*PDdissipationNth3At22;
+ At13rhsL =
+ kadd(At13rhsL,kmadd(epsdiss1,JacPDdissipationNth1At13,kmadd(epsdiss2,JacPDdissipationNth2At13,kmul(epsdiss3,JacPDdissipationNth3At13))));
- At23rhsL = At23rhsL + epsdiss1*PDdissipationNth1At23 +
- epsdiss2*PDdissipationNth2At23 + epsdiss3*PDdissipationNth3At23;
+ At22rhsL =
+ kadd(At22rhsL,kmadd(epsdiss1,JacPDdissipationNth1At22,kmadd(epsdiss2,JacPDdissipationNth2At22,kmul(epsdiss3,JacPDdissipationNth3At22))));
- At33rhsL = At33rhsL + epsdiss1*PDdissipationNth1At33 +
- epsdiss2*PDdissipationNth2At33 + epsdiss3*PDdissipationNth3At33;
+ At23rhsL =
+ kadd(At23rhsL,kmadd(epsdiss1,JacPDdissipationNth1At23,kmadd(epsdiss2,JacPDdissipationNth2At23,kmul(epsdiss3,JacPDdissipationNth3At23))));
- alpharhsL = alpharhsL + epsdiss1*PDdissipationNth1alpha +
- epsdiss2*PDdissipationNth2alpha + epsdiss3*PDdissipationNth3alpha;
+ At33rhsL =
+ kadd(At33rhsL,kmadd(epsdiss1,JacPDdissipationNth1At33,kmadd(epsdiss2,JacPDdissipationNth2At33,kmul(epsdiss3,JacPDdissipationNth3At33))));
- ArhsL = ArhsL + epsdiss1*PDdissipationNth1A +
- epsdiss2*PDdissipationNth2A + epsdiss3*PDdissipationNth3A;
+ alpharhsL =
+ kadd(alpharhsL,kmadd(epsdiss1,JacPDdissipationNth1alpha,kmadd(epsdiss2,JacPDdissipationNth2alpha,kmul(epsdiss3,JacPDdissipationNth3alpha))));
- beta1rhsL = beta1rhsL + epsdiss1*PDdissipationNth1beta1 +
- epsdiss2*PDdissipationNth2beta1 + epsdiss3*PDdissipationNth3beta1;
+ ArhsL =
+ kadd(ArhsL,kmadd(epsdiss1,JacPDdissipationNth1A,kmadd(epsdiss2,JacPDdissipationNth2A,kmul(epsdiss3,JacPDdissipationNth3A))));
- beta2rhsL = beta2rhsL + epsdiss1*PDdissipationNth1beta2 +
- epsdiss2*PDdissipationNth2beta2 + epsdiss3*PDdissipationNth3beta2;
+ beta1rhsL =
+ kadd(beta1rhsL,kmadd(epsdiss1,JacPDdissipationNth1beta1,kmadd(epsdiss2,JacPDdissipationNth2beta1,kmul(epsdiss3,JacPDdissipationNth3beta1))));
- beta3rhsL = beta3rhsL + epsdiss1*PDdissipationNth1beta3 +
- epsdiss2*PDdissipationNth2beta3 + epsdiss3*PDdissipationNth3beta3;
+ beta2rhsL =
+ kadd(beta2rhsL,kmadd(epsdiss1,JacPDdissipationNth1beta2,kmadd(epsdiss2,JacPDdissipationNth2beta2,kmul(epsdiss3,JacPDdissipationNth3beta2))));
- B1rhsL = B1rhsL + epsdiss1*PDdissipationNth1B1 +
- epsdiss2*PDdissipationNth2B1 + epsdiss3*PDdissipationNth3B1;
+ beta3rhsL =
+ kadd(beta3rhsL,kmadd(epsdiss1,JacPDdissipationNth1beta3,kmadd(epsdiss2,JacPDdissipationNth2beta3,kmul(epsdiss3,JacPDdissipationNth3beta3))));
- B2rhsL = B2rhsL + epsdiss1*PDdissipationNth1B2 +
- epsdiss2*PDdissipationNth2B2 + epsdiss3*PDdissipationNth3B2;
+ B1rhsL =
+ kadd(B1rhsL,kmadd(epsdiss1,JacPDdissipationNth1B1,kmadd(epsdiss2,JacPDdissipationNth2B1,kmul(epsdiss3,JacPDdissipationNth3B1))));
- B3rhsL = B3rhsL + epsdiss1*PDdissipationNth1B3 +
- epsdiss2*PDdissipationNth2B3 + epsdiss3*PDdissipationNth3B3;
+ B2rhsL =
+ kadd(B2rhsL,kmadd(epsdiss1,JacPDdissipationNth1B2,kmadd(epsdiss2,JacPDdissipationNth2B2,kmul(epsdiss3,JacPDdissipationNth3B2))));
- /* Copy local copies back to grid functions */
- alpharhs[index] = alpharhsL;
- Arhs[index] = ArhsL;
- At11rhs[index] = At11rhsL;
- At12rhs[index] = At12rhsL;
- At13rhs[index] = At13rhsL;
- At22rhs[index] = At22rhsL;
- At23rhs[index] = At23rhsL;
- At33rhs[index] = At33rhsL;
- B1rhs[index] = B1rhsL;
- B2rhs[index] = B2rhsL;
- B3rhs[index] = B3rhsL;
- beta1rhs[index] = beta1rhsL;
- beta2rhs[index] = beta2rhsL;
- beta3rhs[index] = beta3rhsL;
- gt11rhs[index] = gt11rhsL;
- gt12rhs[index] = gt12rhsL;
- gt13rhs[index] = gt13rhsL;
- gt22rhs[index] = gt22rhsL;
- gt23rhs[index] = gt23rhsL;
- gt33rhs[index] = gt33rhsL;
- phirhs[index] = phirhsL;
- trKrhs[index] = trKrhsL;
- Xt1rhs[index] = Xt1rhsL;
- Xt2rhs[index] = Xt2rhsL;
- Xt3rhs[index] = Xt3rhsL;
+ B3rhsL =
+ kadd(B3rhsL,kmadd(epsdiss1,JacPDdissipationNth1B3,kmadd(epsdiss2,JacPDdissipationNth2B3,kmul(epsdiss3,JacPDdissipationNth3B3))));
+
+ /* 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(Arhs[index],ArhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At11rhs[index],At11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At12rhs[index],At12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At13rhs[index],At13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At22rhs[index],At22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At23rhs[index],At23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At33rhs[index],At33rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B1rhs[index],B1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B2rhs[index],B2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt12rhs[index],gt12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt13rhs[index],gt13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt22rhs[index],gt22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt23rhs[index],gt23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt33rhs[index],gt33rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(phirhs[index],phirhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(trKrhs[index],trKrhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt1rhs[index],Xt1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt2rhs[index],Xt2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt3rhs[index],Xt3rhsL,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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_hi(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_hi(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_hi(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_hi(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_hi(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_hi(At33rhs[index],At33rhsL,elt_count);
+ vec_store_nta_partial_hi(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_hi(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_hi(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_hi(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_hi(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_hi(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_hi(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_hi(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_hi(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_hi(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_hi(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt3rhs[index],Xt3rhsL,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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_lo(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_lo(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_lo(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_lo(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_lo(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_lo(At33rhs[index],At33rhsL,elt_count);
+ vec_store_nta_partial_lo(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_lo(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_lo(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_lo(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_lo(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_lo(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_lo(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_lo(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_lo(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_lo(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_lo(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt3rhs[index],Xt3rhsL,elt_count);
+ break;
+ }
+ vec_store_nta(alpharhs[index],alpharhsL);
+ vec_store_nta(Arhs[index],ArhsL);
+ vec_store_nta(At11rhs[index],At11rhsL);
+ vec_store_nta(At12rhs[index],At12rhsL);
+ vec_store_nta(At13rhs[index],At13rhsL);
+ vec_store_nta(At22rhs[index],At22rhsL);
+ vec_store_nta(At23rhs[index],At23rhsL);
+ vec_store_nta(At33rhs[index],At33rhsL);
+ vec_store_nta(B1rhs[index],B1rhsL);
+ vec_store_nta(B2rhs[index],B2rhsL);
+ vec_store_nta(B3rhs[index],B3rhsL);
+ vec_store_nta(beta1rhs[index],beta1rhsL);
+ vec_store_nta(beta2rhs[index],beta2rhsL);
+ vec_store_nta(beta3rhs[index],beta3rhsL);
+ vec_store_nta(gt11rhs[index],gt11rhsL);
+ vec_store_nta(gt12rhs[index],gt12rhsL);
+ vec_store_nta(gt13rhs[index],gt13rhsL);
+ vec_store_nta(gt22rhs[index],gt22rhsL);
+ vec_store_nta(gt23rhs[index],gt23rhsL);
+ vec_store_nta(gt33rhs[index],gt33rhsL);
+ vec_store_nta(phirhs[index],phirhsL);
+ vec_store_nta(trKrhs[index],trKrhsL);
+ vec_store_nta(Xt1rhs[index],Xt1rhsL);
+ vec_store_nta(Xt2rhs[index],Xt2rhsL);
+ vec_store_nta(Xt3rhs[index],Xt3rhsL);
}
- LC_ENDLOOP3 (ML_BSSN_O2_Dissipation);
+ LC_ENDLOOP3VEC (ML_BSSN_O2_Dissipation);
}
extern "C" void ML_BSSN_O2_Dissipation(CCTK_ARGUMENTS)
@@ -394,5 +1368,43 @@ extern "C" void ML_BSSN_O2_Dissipation(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O2_Dissipation_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_O2_Dissipation_calc_every != ML_BSSN_O2_Dissipation_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN_O2::ML_curv","ML_BSSN_O2::ML_curvrhs","ML_BSSN_O2::ML_dtlapse","ML_BSSN_O2::ML_dtlapserhs","ML_BSSN_O2::ML_dtshift","ML_BSSN_O2::ML_dtshiftrhs","ML_BSSN_O2::ML_Gamma","ML_BSSN_O2::ML_Gammarhs","ML_BSSN_O2::ML_lapse","ML_BSSN_O2::ML_lapserhs","ML_BSSN_O2::ML_log_confac","ML_BSSN_O2::ML_log_confacrhs","ML_BSSN_O2::ML_metric","ML_BSSN_O2::ML_metricrhs","ML_BSSN_O2::ML_shift","ML_BSSN_O2::ML_shiftrhs","ML_BSSN_O2::ML_trace_curv","ML_BSSN_O2::ML_trace_curvrhs"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O2_Dissipation", 18, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O2_Dissipation", 2, 2, 2);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O2_Dissipation", 3, 3, 3);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O2_Dissipation", 4, 4, 4);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O2_Dissipation", 5, 5, 5);
+ break;
+ }
+
GenericFD_LoopOverInterior(cctkGH, &ML_BSSN_O2_Dissipation_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_O2_Dissipation_Body");
+ }
}
diff --git a/ML_BSSN_O2/src/ML_BSSN_O2_InitGamma.cc b/ML_BSSN_O2/src/ML_BSSN_O2_InitGamma.cc
index d8d5048..df0e4bf 100644
--- a/ML_BSSN_O2/src/ML_BSSN_O2_InitGamma.cc
+++ b/ML_BSSN_O2/src/ML_BSSN_O2_InitGamma.cc
@@ -13,15 +13,16 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
-static void ML_BSSN_O2_InitGamma_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_O2_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;
@@ -29,20 +30,6 @@ static void ML_BSSN_O2_InitGamma_Body(cGH const * restrict const cctkGH, int con
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O2_InitGamma_Body");
- }
-
- if (cctk_iteration % ML_BSSN_O2_InitGamma_calc_every != ML_BSSN_O2_InitGamma_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN_O2::ML_Gamma"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O2_InitGamma", 1, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -52,53 +39,162 @@ static void ML_BSSN_O2_InitGamma_Body(cGH const * restrict const cctkGH, int con
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o16dx = 0.0625*INV(dx);
- CCTK_REAL const p1o16dy = 0.0625*INV(dy);
- CCTK_REAL const p1o16dz = 0.0625*INV(dz);
- CCTK_REAL const p1o2dx = 0.5*INV(dx);
- CCTK_REAL const p1o2dy = 0.5*INV(dy);
- CCTK_REAL const p1o2dz = 0.5*INV(dz);
- CCTK_REAL const p1o4dx = 0.25*INV(dx);
- CCTK_REAL const p1o4dxdy = 0.25*INV(dx)*INV(dy);
- CCTK_REAL const p1o4dxdz = 0.25*INV(dx)*INV(dz);
- CCTK_REAL const p1o4dy = 0.25*INV(dy);
- CCTK_REAL const p1o4dydz = 0.25*INV(dy)*INV(dz);
- CCTK_REAL const p1o4dz = 0.25*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1odx2 = INV(SQR(dx));
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1ody2 = INV(SQR(dy));
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const p1odz2 = INV(SQR(dz));
- CCTK_REAL const pm1o2dx = -0.5*INV(dx);
- CCTK_REAL const pm1o2dy = -0.5*INV(dy);
- CCTK_REAL const pm1o2dz = -0.5*INV(dz);
- CCTK_REAL const pm1o4dx = -0.25*INV(dx);
- CCTK_REAL const pm1o4dy = -0.25*INV(dy);
- CCTK_REAL const pm1o4dz = -0.25*INV(dz);
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_O2_InitGamma,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_O2_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;
@@ -106,23 +202,95 @@ static void ML_BSSN_O2_InitGamma_Body(cGH const * restrict const cctkGH, int con
+
/* 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 Xt1L = 0;
+ 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 Xt2L = 0;
+ CCTK_REAL_VEC B1L = ToReal(0);
- CCTK_REAL Xt3L = 0;
+ CCTK_REAL_VEC B2L = ToReal(0);
- /* Copy local copies back to grid functions */
- Xt1[index] = Xt1L;
- Xt2[index] = Xt2L;
- Xt3[index] = Xt3L;
+ CCTK_REAL_VEC B3L = 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(A[index],AL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B1[index],B1L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B2[index],B2L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B3[index],B3L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt1[index],Xt1L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt2[index],Xt2L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt3[index],Xt3L,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(A[index],AL,elt_count);
+ vec_store_nta_partial_hi(B1[index],B1L,elt_count);
+ vec_store_nta_partial_hi(B2[index],B2L,elt_count);
+ vec_store_nta_partial_hi(B3[index],B3L,elt_count);
+ vec_store_nta_partial_hi(Xt1[index],Xt1L,elt_count);
+ vec_store_nta_partial_hi(Xt2[index],Xt2L,elt_count);
+ vec_store_nta_partial_hi(Xt3[index],Xt3L,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(A[index],AL,elt_count);
+ vec_store_nta_partial_lo(B1[index],B1L,elt_count);
+ vec_store_nta_partial_lo(B2[index],B2L,elt_count);
+ vec_store_nta_partial_lo(B3[index],B3L,elt_count);
+ vec_store_nta_partial_lo(Xt1[index],Xt1L,elt_count);
+ vec_store_nta_partial_lo(Xt2[index],Xt2L,elt_count);
+ vec_store_nta_partial_lo(Xt3[index],Xt3L,elt_count);
+ break;
+ }
+ vec_store_nta(A[index],AL);
+ vec_store_nta(B1[index],B1L);
+ vec_store_nta(B2[index],B2L);
+ vec_store_nta(B3[index],B3L);
+ vec_store_nta(Xt1[index],Xt1L);
+ vec_store_nta(Xt2[index],Xt2L);
+ vec_store_nta(Xt3[index],Xt3L);
}
- LC_ENDLOOP3 (ML_BSSN_O2_InitGamma);
+ LC_ENDLOOP3VEC (ML_BSSN_O2_InitGamma);
}
extern "C" void ML_BSSN_O2_InitGamma(CCTK_ARGUMENTS)
@@ -130,5 +298,39 @@ extern "C" void ML_BSSN_O2_InitGamma(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O2_InitGamma_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_O2_InitGamma_calc_every != ML_BSSN_O2_InitGamma_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN_O2::ML_dtlapse","ML_BSSN_O2::ML_dtshift","ML_BSSN_O2::ML_Gamma"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O2_InitGamma", 3, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverEverything(cctkGH, &ML_BSSN_O2_InitGamma_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_O2_InitGamma_Body");
+ }
}
diff --git a/ML_BSSN_O2/src/ML_BSSN_O2_InitRHS.cc b/ML_BSSN_O2/src/ML_BSSN_O2_InitRHS.cc
index 42677c7..9c6c6a9 100644
--- a/ML_BSSN_O2/src/ML_BSSN_O2_InitRHS.cc
+++ b/ML_BSSN_O2/src/ML_BSSN_O2_InitRHS.cc
@@ -13,15 +13,16 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
-static void ML_BSSN_O2_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_O2_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;
@@ -29,20 +30,6 @@ static void ML_BSSN_O2_InitRHS_Body(cGH const * restrict const cctkGH, int const
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O2_InitRHS_Body");
- }
-
- if (cctk_iteration % ML_BSSN_O2_InitRHS_calc_every != ML_BSSN_O2_InitRHS_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN_O2::ML_curvrhs","ML_BSSN_O2::ML_dtlapserhs","ML_BSSN_O2::ML_dtshiftrhs","ML_BSSN_O2::ML_Gammarhs","ML_BSSN_O2::ML_lapserhs","ML_BSSN_O2::ML_log_confacrhs","ML_BSSN_O2::ML_metricrhs","ML_BSSN_O2::ML_shiftrhs","ML_BSSN_O2::ML_trace_curvrhs"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O2_InitRHS", 9, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -52,53 +39,162 @@ static void ML_BSSN_O2_InitRHS_Body(cGH const * restrict const cctkGH, int const
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o16dx = 0.0625*INV(dx);
- CCTK_REAL const p1o16dy = 0.0625*INV(dy);
- CCTK_REAL const p1o16dz = 0.0625*INV(dz);
- CCTK_REAL const p1o2dx = 0.5*INV(dx);
- CCTK_REAL const p1o2dy = 0.5*INV(dy);
- CCTK_REAL const p1o2dz = 0.5*INV(dz);
- CCTK_REAL const p1o4dx = 0.25*INV(dx);
- CCTK_REAL const p1o4dxdy = 0.25*INV(dx)*INV(dy);
- CCTK_REAL const p1o4dxdz = 0.25*INV(dx)*INV(dz);
- CCTK_REAL const p1o4dy = 0.25*INV(dy);
- CCTK_REAL const p1o4dydz = 0.25*INV(dy)*INV(dz);
- CCTK_REAL const p1o4dz = 0.25*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1odx2 = INV(SQR(dx));
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1ody2 = INV(SQR(dy));
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const p1odz2 = INV(SQR(dz));
- CCTK_REAL const pm1o2dx = -0.5*INV(dx);
- CCTK_REAL const pm1o2dy = -0.5*INV(dy);
- CCTK_REAL const pm1o2dz = -0.5*INV(dz);
- CCTK_REAL const pm1o4dx = -0.25*INV(dx);
- CCTK_REAL const pm1o4dy = -0.25*INV(dy);
- CCTK_REAL const pm1o4dz = -0.25*INV(dz);
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_O2_InitRHS,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_O2_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;
@@ -106,89 +202,203 @@ static void ML_BSSN_O2_InitRHS_Body(cGH const * restrict const cctkGH, int const
+
/* 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 phirhsL = 0;
+ CCTK_REAL_VEC phirhsL = ToReal(0);
+
+ CCTK_REAL_VEC gt11rhsL = ToReal(0);
- CCTK_REAL gt11rhsL = 0;
+ CCTK_REAL_VEC gt12rhsL = ToReal(0);
- CCTK_REAL gt12rhsL = 0;
+ CCTK_REAL_VEC gt13rhsL = ToReal(0);
- CCTK_REAL gt13rhsL = 0;
+ CCTK_REAL_VEC gt22rhsL = ToReal(0);
- CCTK_REAL gt22rhsL = 0;
+ CCTK_REAL_VEC gt23rhsL = ToReal(0);
- CCTK_REAL gt23rhsL = 0;
+ CCTK_REAL_VEC gt33rhsL = ToReal(0);
- CCTK_REAL gt33rhsL = 0;
+ CCTK_REAL_VEC trKrhsL = ToReal(0);
- CCTK_REAL trKrhsL = 0;
+ CCTK_REAL_VEC At11rhsL = ToReal(0);
- CCTK_REAL At11rhsL = 0;
+ CCTK_REAL_VEC At12rhsL = ToReal(0);
- CCTK_REAL At12rhsL = 0;
+ CCTK_REAL_VEC At13rhsL = ToReal(0);
- CCTK_REAL At13rhsL = 0;
+ CCTK_REAL_VEC At22rhsL = ToReal(0);
- CCTK_REAL At22rhsL = 0;
+ CCTK_REAL_VEC At23rhsL = ToReal(0);
- CCTK_REAL At23rhsL = 0;
+ CCTK_REAL_VEC At33rhsL = ToReal(0);
- CCTK_REAL At33rhsL = 0;
+ CCTK_REAL_VEC Xt1rhsL = ToReal(0);
- CCTK_REAL Xt1rhsL = 0;
+ CCTK_REAL_VEC Xt2rhsL = ToReal(0);
- CCTK_REAL Xt2rhsL = 0;
+ CCTK_REAL_VEC Xt3rhsL = ToReal(0);
- CCTK_REAL Xt3rhsL = 0;
+ CCTK_REAL_VEC alpharhsL = ToReal(0);
- CCTK_REAL alpharhsL = 0;
+ CCTK_REAL_VEC ArhsL = ToReal(0);
- CCTK_REAL ArhsL = 0;
+ CCTK_REAL_VEC beta1rhsL = ToReal(0);
- CCTK_REAL beta1rhsL = 0;
+ CCTK_REAL_VEC beta2rhsL = ToReal(0);
- CCTK_REAL beta2rhsL = 0;
+ CCTK_REAL_VEC beta3rhsL = ToReal(0);
- CCTK_REAL beta3rhsL = 0;
+ CCTK_REAL_VEC B1rhsL = ToReal(0);
- CCTK_REAL B1rhsL = 0;
+ CCTK_REAL_VEC B2rhsL = ToReal(0);
- CCTK_REAL B2rhsL = 0;
+ CCTK_REAL_VEC B3rhsL = ToReal(0);
- CCTK_REAL B3rhsL = 0;
+ /* If necessary, store only partial vectors after the first iteration */
- /* Copy local copies back to grid functions */
- alpharhs[index] = alpharhsL;
- Arhs[index] = ArhsL;
- At11rhs[index] = At11rhsL;
- At12rhs[index] = At12rhsL;
- At13rhs[index] = At13rhsL;
- At22rhs[index] = At22rhsL;
- At23rhs[index] = At23rhsL;
- At33rhs[index] = At33rhsL;
- B1rhs[index] = B1rhsL;
- B2rhs[index] = B2rhsL;
- B3rhs[index] = B3rhsL;
- beta1rhs[index] = beta1rhsL;
- beta2rhs[index] = beta2rhsL;
- beta3rhs[index] = beta3rhsL;
- gt11rhs[index] = gt11rhsL;
- gt12rhs[index] = gt12rhsL;
- gt13rhs[index] = gt13rhsL;
- gt22rhs[index] = gt22rhsL;
- gt23rhs[index] = gt23rhsL;
- gt33rhs[index] = gt33rhsL;
- phirhs[index] = phirhsL;
- trKrhs[index] = trKrhsL;
- Xt1rhs[index] = Xt1rhsL;
- Xt2rhs[index] = Xt2rhsL;
- Xt3rhs[index] = Xt3rhsL;
+ 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(Arhs[index],ArhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At11rhs[index],At11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At12rhs[index],At12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At13rhs[index],At13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At22rhs[index],At22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At23rhs[index],At23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At33rhs[index],At33rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B1rhs[index],B1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B2rhs[index],B2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt12rhs[index],gt12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt13rhs[index],gt13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt22rhs[index],gt22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt23rhs[index],gt23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt33rhs[index],gt33rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(phirhs[index],phirhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(trKrhs[index],trKrhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt1rhs[index],Xt1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt2rhs[index],Xt2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt3rhs[index],Xt3rhsL,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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_hi(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_hi(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_hi(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_hi(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_hi(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_hi(At33rhs[index],At33rhsL,elt_count);
+ vec_store_nta_partial_hi(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_hi(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_hi(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_hi(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_hi(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_hi(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_hi(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_hi(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_hi(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_hi(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_hi(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt3rhs[index],Xt3rhsL,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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_lo(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_lo(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_lo(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_lo(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_lo(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_lo(At33rhs[index],At33rhsL,elt_count);
+ vec_store_nta_partial_lo(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_lo(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_lo(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_lo(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_lo(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_lo(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_lo(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_lo(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_lo(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_lo(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_lo(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt3rhs[index],Xt3rhsL,elt_count);
+ break;
+ }
+ vec_store_nta(alpharhs[index],alpharhsL);
+ vec_store_nta(Arhs[index],ArhsL);
+ vec_store_nta(At11rhs[index],At11rhsL);
+ vec_store_nta(At12rhs[index],At12rhsL);
+ vec_store_nta(At13rhs[index],At13rhsL);
+ vec_store_nta(At22rhs[index],At22rhsL);
+ vec_store_nta(At23rhs[index],At23rhsL);
+ vec_store_nta(At33rhs[index],At33rhsL);
+ vec_store_nta(B1rhs[index],B1rhsL);
+ vec_store_nta(B2rhs[index],B2rhsL);
+ vec_store_nta(B3rhs[index],B3rhsL);
+ vec_store_nta(beta1rhs[index],beta1rhsL);
+ vec_store_nta(beta2rhs[index],beta2rhsL);
+ vec_store_nta(beta3rhs[index],beta3rhsL);
+ vec_store_nta(gt11rhs[index],gt11rhsL);
+ vec_store_nta(gt12rhs[index],gt12rhsL);
+ vec_store_nta(gt13rhs[index],gt13rhsL);
+ vec_store_nta(gt22rhs[index],gt22rhsL);
+ vec_store_nta(gt23rhs[index],gt23rhsL);
+ vec_store_nta(gt33rhs[index],gt33rhsL);
+ vec_store_nta(phirhs[index],phirhsL);
+ vec_store_nta(trKrhs[index],trKrhsL);
+ vec_store_nta(Xt1rhs[index],Xt1rhsL);
+ vec_store_nta(Xt2rhs[index],Xt2rhsL);
+ vec_store_nta(Xt3rhs[index],Xt3rhsL);
}
- LC_ENDLOOP3 (ML_BSSN_O2_InitRHS);
+ LC_ENDLOOP3VEC (ML_BSSN_O2_InitRHS);
}
extern "C" void ML_BSSN_O2_InitRHS(CCTK_ARGUMENTS)
@@ -196,5 +406,39 @@ extern "C" void ML_BSSN_O2_InitRHS(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O2_InitRHS_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_O2_InitRHS_calc_every != ML_BSSN_O2_InitRHS_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN_O2::ML_curvrhs","ML_BSSN_O2::ML_dtlapserhs","ML_BSSN_O2::ML_dtshiftrhs","ML_BSSN_O2::ML_Gammarhs","ML_BSSN_O2::ML_lapserhs","ML_BSSN_O2::ML_log_confacrhs","ML_BSSN_O2::ML_metricrhs","ML_BSSN_O2::ML_shiftrhs","ML_BSSN_O2::ML_trace_curvrhs"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O2_InitRHS", 9, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverEverything(cctkGH, &ML_BSSN_O2_InitRHS_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_O2_InitRHS_Body");
+ }
}
diff --git a/ML_BSSN_O2/src/ML_BSSN_O2_Minkowski.cc b/ML_BSSN_O2/src/ML_BSSN_O2_Minkowski.cc
index 76ef2e3..7c15ee6 100644
--- a/ML_BSSN_O2/src/ML_BSSN_O2_Minkowski.cc
+++ b/ML_BSSN_O2/src/ML_BSSN_O2_Minkowski.cc
@@ -13,15 +13,16 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
-static void ML_BSSN_O2_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_O2_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;
@@ -29,20 +30,6 @@ static void ML_BSSN_O2_Minkowski_Body(cGH const * restrict const cctkGH, int con
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O2_Minkowski_Body");
- }
-
- if (cctk_iteration % ML_BSSN_O2_Minkowski_calc_every != ML_BSSN_O2_Minkowski_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN_O2::ML_curv","ML_BSSN_O2::ML_dtlapse","ML_BSSN_O2::ML_dtshift","ML_BSSN_O2::ML_Gamma","ML_BSSN_O2::ML_lapse","ML_BSSN_O2::ML_log_confac","ML_BSSN_O2::ML_metric","ML_BSSN_O2::ML_shift","ML_BSSN_O2::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O2_Minkowski", 9, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -52,53 +39,162 @@ static void ML_BSSN_O2_Minkowski_Body(cGH const * restrict const cctkGH, int con
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o16dx = 0.0625*INV(dx);
- CCTK_REAL const p1o16dy = 0.0625*INV(dy);
- CCTK_REAL const p1o16dz = 0.0625*INV(dz);
- CCTK_REAL const p1o2dx = 0.5*INV(dx);
- CCTK_REAL const p1o2dy = 0.5*INV(dy);
- CCTK_REAL const p1o2dz = 0.5*INV(dz);
- CCTK_REAL const p1o4dx = 0.25*INV(dx);
- CCTK_REAL const p1o4dxdy = 0.25*INV(dx)*INV(dy);
- CCTK_REAL const p1o4dxdz = 0.25*INV(dx)*INV(dz);
- CCTK_REAL const p1o4dy = 0.25*INV(dy);
- CCTK_REAL const p1o4dydz = 0.25*INV(dy)*INV(dz);
- CCTK_REAL const p1o4dz = 0.25*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1odx2 = INV(SQR(dx));
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1ody2 = INV(SQR(dy));
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const p1odz2 = INV(SQR(dz));
- CCTK_REAL const pm1o2dx = -0.5*INV(dx);
- CCTK_REAL const pm1o2dy = -0.5*INV(dy);
- CCTK_REAL const pm1o2dz = -0.5*INV(dz);
- CCTK_REAL const pm1o4dx = -0.25*INV(dx);
- CCTK_REAL const pm1o4dy = -0.25*INV(dy);
- CCTK_REAL const pm1o4dz = -0.25*INV(dz);
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_O2_Minkowski,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_O2_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;
@@ -106,89 +202,203 @@ static void ML_BSSN_O2_Minkowski_Body(cGH const * restrict const cctkGH, int con
+
/* 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 phiL = IfThen(conformalMethod,1,0);
+ CCTK_REAL_VEC phiL = IfThen(conformalMethod,ToReal(1),ToReal(0));
+
+ CCTK_REAL_VEC gt11L = ToReal(1);
- CCTK_REAL gt11L = 1;
+ CCTK_REAL_VEC gt12L = ToReal(0);
- CCTK_REAL gt12L = 0;
+ CCTK_REAL_VEC gt13L = ToReal(0);
- CCTK_REAL gt13L = 0;
+ CCTK_REAL_VEC gt22L = ToReal(1);
- CCTK_REAL gt22L = 1;
+ CCTK_REAL_VEC gt23L = ToReal(0);
- CCTK_REAL gt23L = 0;
+ CCTK_REAL_VEC gt33L = ToReal(1);
- CCTK_REAL gt33L = 1;
+ CCTK_REAL_VEC trKL = ToReal(0);
- CCTK_REAL trKL = 0;
+ CCTK_REAL_VEC At11L = ToReal(0);
- CCTK_REAL At11L = 0;
+ CCTK_REAL_VEC At12L = ToReal(0);
- CCTK_REAL At12L = 0;
+ CCTK_REAL_VEC At13L = ToReal(0);
- CCTK_REAL At13L = 0;
+ CCTK_REAL_VEC At22L = ToReal(0);
- CCTK_REAL At22L = 0;
+ CCTK_REAL_VEC At23L = ToReal(0);
- CCTK_REAL At23L = 0;
+ CCTK_REAL_VEC At33L = ToReal(0);
- CCTK_REAL At33L = 0;
+ CCTK_REAL_VEC Xt1L = ToReal(0);
- CCTK_REAL Xt1L = 0;
+ CCTK_REAL_VEC Xt2L = ToReal(0);
- CCTK_REAL Xt2L = 0;
+ CCTK_REAL_VEC Xt3L = ToReal(0);
- CCTK_REAL Xt3L = 0;
+ CCTK_REAL_VEC alphaL = ToReal(1);
- CCTK_REAL alphaL = 1;
+ CCTK_REAL_VEC AL = ToReal(0);
- CCTK_REAL AL = 0;
+ CCTK_REAL_VEC beta1L = ToReal(0);
- CCTK_REAL beta1L = 0;
+ CCTK_REAL_VEC beta2L = ToReal(0);
- CCTK_REAL beta2L = 0;
+ CCTK_REAL_VEC beta3L = ToReal(0);
- CCTK_REAL beta3L = 0;
+ CCTK_REAL_VEC B1L = ToReal(0);
- CCTK_REAL B1L = 0;
+ CCTK_REAL_VEC B2L = ToReal(0);
- CCTK_REAL B2L = 0;
+ CCTK_REAL_VEC B3L = ToReal(0);
- CCTK_REAL B3L = 0;
+ /* If necessary, store only partial vectors after the first iteration */
- /* Copy local copies back to grid functions */
- A[index] = AL;
- alpha[index] = alphaL;
- At11[index] = At11L;
- At12[index] = At12L;
- At13[index] = At13L;
- At22[index] = At22L;
- At23[index] = At23L;
- At33[index] = At33L;
- B1[index] = B1L;
- B2[index] = B2L;
- B3[index] = B3L;
- beta1[index] = beta1L;
- beta2[index] = beta2L;
- beta3[index] = beta3L;
- gt11[index] = gt11L;
- gt12[index] = gt12L;
- gt13[index] = gt13L;
- gt22[index] = gt22L;
- gt23[index] = gt23L;
- gt33[index] = gt33L;
- phi[index] = phiL;
- trK[index] = trKL;
- Xt1[index] = Xt1L;
- Xt2[index] = Xt2L;
- Xt3[index] = Xt3L;
+ 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(A[index],AL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(alpha[index],alphaL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At11[index],At11L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At12[index],At12L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At13[index],At13L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At22[index],At22L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At23[index],At23L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At33[index],At33L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B1[index],B1L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B2[index],B2L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B3[index],B3L,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(gt11[index],gt11L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt12[index],gt12L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt13[index],gt13L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt22[index],gt22L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt23[index],gt23L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt33[index],gt33L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(phi[index],phiL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(trK[index],trKL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt1[index],Xt1L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt2[index],Xt2L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt3[index],Xt3L,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(A[index],AL,elt_count);
+ vec_store_nta_partial_hi(alpha[index],alphaL,elt_count);
+ vec_store_nta_partial_hi(At11[index],At11L,elt_count);
+ vec_store_nta_partial_hi(At12[index],At12L,elt_count);
+ vec_store_nta_partial_hi(At13[index],At13L,elt_count);
+ vec_store_nta_partial_hi(At22[index],At22L,elt_count);
+ vec_store_nta_partial_hi(At23[index],At23L,elt_count);
+ vec_store_nta_partial_hi(At33[index],At33L,elt_count);
+ vec_store_nta_partial_hi(B1[index],B1L,elt_count);
+ vec_store_nta_partial_hi(B2[index],B2L,elt_count);
+ vec_store_nta_partial_hi(B3[index],B3L,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(gt11[index],gt11L,elt_count);
+ vec_store_nta_partial_hi(gt12[index],gt12L,elt_count);
+ vec_store_nta_partial_hi(gt13[index],gt13L,elt_count);
+ vec_store_nta_partial_hi(gt22[index],gt22L,elt_count);
+ vec_store_nta_partial_hi(gt23[index],gt23L,elt_count);
+ vec_store_nta_partial_hi(gt33[index],gt33L,elt_count);
+ vec_store_nta_partial_hi(phi[index],phiL,elt_count);
+ vec_store_nta_partial_hi(trK[index],trKL,elt_count);
+ vec_store_nta_partial_hi(Xt1[index],Xt1L,elt_count);
+ vec_store_nta_partial_hi(Xt2[index],Xt2L,elt_count);
+ vec_store_nta_partial_hi(Xt3[index],Xt3L,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(A[index],AL,elt_count);
+ vec_store_nta_partial_lo(alpha[index],alphaL,elt_count);
+ vec_store_nta_partial_lo(At11[index],At11L,elt_count);
+ vec_store_nta_partial_lo(At12[index],At12L,elt_count);
+ vec_store_nta_partial_lo(At13[index],At13L,elt_count);
+ vec_store_nta_partial_lo(At22[index],At22L,elt_count);
+ vec_store_nta_partial_lo(At23[index],At23L,elt_count);
+ vec_store_nta_partial_lo(At33[index],At33L,elt_count);
+ vec_store_nta_partial_lo(B1[index],B1L,elt_count);
+ vec_store_nta_partial_lo(B2[index],B2L,elt_count);
+ vec_store_nta_partial_lo(B3[index],B3L,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(gt11[index],gt11L,elt_count);
+ vec_store_nta_partial_lo(gt12[index],gt12L,elt_count);
+ vec_store_nta_partial_lo(gt13[index],gt13L,elt_count);
+ vec_store_nta_partial_lo(gt22[index],gt22L,elt_count);
+ vec_store_nta_partial_lo(gt23[index],gt23L,elt_count);
+ vec_store_nta_partial_lo(gt33[index],gt33L,elt_count);
+ vec_store_nta_partial_lo(phi[index],phiL,elt_count);
+ vec_store_nta_partial_lo(trK[index],trKL,elt_count);
+ vec_store_nta_partial_lo(Xt1[index],Xt1L,elt_count);
+ vec_store_nta_partial_lo(Xt2[index],Xt2L,elt_count);
+ vec_store_nta_partial_lo(Xt3[index],Xt3L,elt_count);
+ break;
+ }
+ vec_store_nta(A[index],AL);
+ vec_store_nta(alpha[index],alphaL);
+ vec_store_nta(At11[index],At11L);
+ vec_store_nta(At12[index],At12L);
+ vec_store_nta(At13[index],At13L);
+ vec_store_nta(At22[index],At22L);
+ vec_store_nta(At23[index],At23L);
+ vec_store_nta(At33[index],At33L);
+ vec_store_nta(B1[index],B1L);
+ vec_store_nta(B2[index],B2L);
+ vec_store_nta(B3[index],B3L);
+ vec_store_nta(beta1[index],beta1L);
+ vec_store_nta(beta2[index],beta2L);
+ vec_store_nta(beta3[index],beta3L);
+ vec_store_nta(gt11[index],gt11L);
+ vec_store_nta(gt12[index],gt12L);
+ vec_store_nta(gt13[index],gt13L);
+ vec_store_nta(gt22[index],gt22L);
+ vec_store_nta(gt23[index],gt23L);
+ vec_store_nta(gt33[index],gt33L);
+ vec_store_nta(phi[index],phiL);
+ vec_store_nta(trK[index],trKL);
+ vec_store_nta(Xt1[index],Xt1L);
+ vec_store_nta(Xt2[index],Xt2L);
+ vec_store_nta(Xt3[index],Xt3L);
}
- LC_ENDLOOP3 (ML_BSSN_O2_Minkowski);
+ LC_ENDLOOP3VEC (ML_BSSN_O2_Minkowski);
}
extern "C" void ML_BSSN_O2_Minkowski(CCTK_ARGUMENTS)
@@ -196,5 +406,39 @@ extern "C" void ML_BSSN_O2_Minkowski(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O2_Minkowski_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_O2_Minkowski_calc_every != ML_BSSN_O2_Minkowski_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN_O2::ML_curv","ML_BSSN_O2::ML_dtlapse","ML_BSSN_O2::ML_dtshift","ML_BSSN_O2::ML_Gamma","ML_BSSN_O2::ML_lapse","ML_BSSN_O2::ML_log_confac","ML_BSSN_O2::ML_metric","ML_BSSN_O2::ML_shift","ML_BSSN_O2::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O2_Minkowski", 9, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverEverything(cctkGH, &ML_BSSN_O2_Minkowski_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_O2_Minkowski_Body");
+ }
}
diff --git a/ML_BSSN_O2/src/ML_BSSN_O2_RHS1.cc b/ML_BSSN_O2/src/ML_BSSN_O2_RHS1.cc
index f7462b4..8f56d98 100644
--- a/ML_BSSN_O2/src/ML_BSSN_O2_RHS1.cc
+++ b/ML_BSSN_O2/src/ML_BSSN_O2_RHS1.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_O2_RHS1_SelectBCs(CCTK_ARGUMENTS)
{
@@ -54,7 +55,7 @@ extern "C" void ML_BSSN_O2_RHS1_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_BSSN_O2_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_O2_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;
@@ -62,21 +63,6 @@ static void ML_BSSN_O2_RHS1_Body(cGH const * restrict const cctkGH, int const di
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O2_RHS1_Body");
- }
-
- if (cctk_iteration % ML_BSSN_O2_RHS1_calc_every != ML_BSSN_O2_RHS1_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"grid::coordinates","Grid::coordinates","ML_BSSN_O2::ML_curv","ML_BSSN_O2::ML_dtlapse","ML_BSSN_O2::ML_dtlapserhs","ML_BSSN_O2::ML_dtshift","ML_BSSN_O2::ML_dtshiftrhs","ML_BSSN_O2::ML_Gamma","ML_BSSN_O2::ML_Gammarhs","ML_BSSN_O2::ML_lapse","ML_BSSN_O2::ML_lapserhs","ML_BSSN_O2::ML_log_confac","ML_BSSN_O2::ML_log_confacrhs","ML_BSSN_O2::ML_metric","ML_BSSN_O2::ML_metricrhs","ML_BSSN_O2::ML_shift","ML_BSSN_O2::ML_shiftrhs","ML_BSSN_O2::ML_trace_curv","ML_BSSN_O2::ML_trace_curvrhs"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O2_RHS1", 19, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O2_RHS1", 1, 1, 1);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -86,99 +72,208 @@ static void ML_BSSN_O2_RHS1_Body(cGH const * restrict const cctkGH, int const di
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o16dx = 0.0625*INV(dx);
- CCTK_REAL const p1o16dy = 0.0625*INV(dy);
- CCTK_REAL const p1o16dz = 0.0625*INV(dz);
- CCTK_REAL const p1o2dx = 0.5*INV(dx);
- CCTK_REAL const p1o2dy = 0.5*INV(dy);
- CCTK_REAL const p1o2dz = 0.5*INV(dz);
- CCTK_REAL const p1o4dx = 0.25*INV(dx);
- CCTK_REAL const p1o4dxdy = 0.25*INV(dx)*INV(dy);
- CCTK_REAL const p1o4dxdz = 0.25*INV(dx)*INV(dz);
- CCTK_REAL const p1o4dy = 0.25*INV(dy);
- CCTK_REAL const p1o4dydz = 0.25*INV(dy)*INV(dz);
- CCTK_REAL const p1o4dz = 0.25*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1odx2 = INV(SQR(dx));
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1ody2 = INV(SQR(dy));
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const p1odz2 = INV(SQR(dz));
- CCTK_REAL const pm1o2dx = -0.5*INV(dx);
- CCTK_REAL const pm1o2dy = -0.5*INV(dy);
- CCTK_REAL const pm1o2dz = -0.5*INV(dz);
- CCTK_REAL const pm1o4dx = -0.25*INV(dx);
- CCTK_REAL const pm1o4dy = -0.25*INV(dy);
- CCTK_REAL const pm1o4dz = -0.25*INV(dz);
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_O2_RHS1,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_O2_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 AL = A[index];
- CCTK_REAL alphaL = alpha[index];
- CCTK_REAL At11L = At11[index];
- CCTK_REAL At12L = At12[index];
- CCTK_REAL At13L = At13[index];
- CCTK_REAL At22L = At22[index];
- CCTK_REAL At23L = At23[index];
- CCTK_REAL At33L = At33[index];
- CCTK_REAL B1L = B1[index];
- CCTK_REAL B2L = B2[index];
- CCTK_REAL B3L = B3[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL gt11L = gt11[index];
- CCTK_REAL gt12L = gt12[index];
- CCTK_REAL gt13L = gt13[index];
- CCTK_REAL gt22L = gt22[index];
- CCTK_REAL gt23L = gt23[index];
- CCTK_REAL gt33L = gt33[index];
- CCTK_REAL phiL = phi[index];
- CCTK_REAL rL = r[index];
- CCTK_REAL trKL = trK[index];
- CCTK_REAL Xt1L = Xt1[index];
- CCTK_REAL Xt2L = Xt2[index];
- CCTK_REAL Xt3L = Xt3[index];
-
- CCTK_REAL eTttL, eTtxL, eTtyL, eTtzL, eTxxL, eTxyL, eTxzL, eTyyL, eTyzL, eTzzL;
+ 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 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 = eTtt[index];
- eTtxL = eTtx[index];
- eTtyL = eTty[index];
- eTtzL = eTtz[index];
- eTxxL = eTxx[index];
- eTxyL = eTxy[index];
- eTxzL = eTxz[index];
- eTyyL = eTyy[index];
- eTyzL = eTyz[index];
- eTzzL = eTzz[index];
+ 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
{
@@ -194,69 +289,357 @@ static void ML_BSSN_O2_RHS1_Body(cGH const * restrict const cctkGH, int const di
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 const PDstandardNth1alpha = PDstandardNth1(&alpha[index]);
- CCTK_REAL const PDstandardNth2alpha = PDstandardNth2(&alpha[index]);
- CCTK_REAL const PDstandardNth3alpha = PDstandardNth3(&alpha[index]);
- CCTK_REAL const PDstandardNth11alpha = PDstandardNth11(&alpha[index]);
- CCTK_REAL const PDstandardNth22alpha = PDstandardNth22(&alpha[index]);
- CCTK_REAL const PDstandardNth33alpha = PDstandardNth33(&alpha[index]);
- CCTK_REAL const PDstandardNth12alpha = PDstandardNth12(&alpha[index]);
- CCTK_REAL const PDstandardNth13alpha = PDstandardNth13(&alpha[index]);
- CCTK_REAL const PDstandardNth23alpha = PDstandardNth23(&alpha[index]);
- CCTK_REAL const PDstandardNth1beta1 = PDstandardNth1(&beta1[index]);
- CCTK_REAL const PDstandardNth2beta1 = PDstandardNth2(&beta1[index]);
- CCTK_REAL const PDstandardNth3beta1 = PDstandardNth3(&beta1[index]);
- CCTK_REAL const PDstandardNth11beta1 = PDstandardNth11(&beta1[index]);
- CCTK_REAL const PDstandardNth22beta1 = PDstandardNth22(&beta1[index]);
- CCTK_REAL const PDstandardNth33beta1 = PDstandardNth33(&beta1[index]);
- CCTK_REAL const PDstandardNth12beta1 = PDstandardNth12(&beta1[index]);
- CCTK_REAL const PDstandardNth13beta1 = PDstandardNth13(&beta1[index]);
- CCTK_REAL const PDstandardNth23beta1 = PDstandardNth23(&beta1[index]);
- CCTK_REAL const PDstandardNth1beta2 = PDstandardNth1(&beta2[index]);
- CCTK_REAL const PDstandardNth2beta2 = PDstandardNth2(&beta2[index]);
- CCTK_REAL const PDstandardNth3beta2 = PDstandardNth3(&beta2[index]);
- CCTK_REAL const PDstandardNth11beta2 = PDstandardNth11(&beta2[index]);
- CCTK_REAL const PDstandardNth22beta2 = PDstandardNth22(&beta2[index]);
- CCTK_REAL const PDstandardNth33beta2 = PDstandardNth33(&beta2[index]);
- CCTK_REAL const PDstandardNth12beta2 = PDstandardNth12(&beta2[index]);
- CCTK_REAL const PDstandardNth13beta2 = PDstandardNth13(&beta2[index]);
- CCTK_REAL const PDstandardNth23beta2 = PDstandardNth23(&beta2[index]);
- CCTK_REAL const PDstandardNth1beta3 = PDstandardNth1(&beta3[index]);
- CCTK_REAL const PDstandardNth2beta3 = PDstandardNth2(&beta3[index]);
- CCTK_REAL const PDstandardNth3beta3 = PDstandardNth3(&beta3[index]);
- CCTK_REAL const PDstandardNth11beta3 = PDstandardNth11(&beta3[index]);
- CCTK_REAL const PDstandardNth22beta3 = PDstandardNth22(&beta3[index]);
- CCTK_REAL const PDstandardNth33beta3 = PDstandardNth33(&beta3[index]);
- CCTK_REAL const PDstandardNth12beta3 = PDstandardNth12(&beta3[index]);
- CCTK_REAL const PDstandardNth13beta3 = PDstandardNth13(&beta3[index]);
- CCTK_REAL const PDstandardNth23beta3 = PDstandardNth23(&beta3[index]);
- CCTK_REAL const PDstandardNth1gt11 = PDstandardNth1(&gt11[index]);
- CCTK_REAL const PDstandardNth2gt11 = PDstandardNth2(&gt11[index]);
- CCTK_REAL const PDstandardNth3gt11 = PDstandardNth3(&gt11[index]);
- CCTK_REAL const PDstandardNth1gt12 = PDstandardNth1(&gt12[index]);
- CCTK_REAL const PDstandardNth2gt12 = PDstandardNth2(&gt12[index]);
- CCTK_REAL const PDstandardNth3gt12 = PDstandardNth3(&gt12[index]);
- CCTK_REAL const PDstandardNth1gt13 = PDstandardNth1(&gt13[index]);
- CCTK_REAL const PDstandardNth2gt13 = PDstandardNth2(&gt13[index]);
- CCTK_REAL const PDstandardNth3gt13 = PDstandardNth3(&gt13[index]);
- CCTK_REAL const PDstandardNth1gt22 = PDstandardNth1(&gt22[index]);
- CCTK_REAL const PDstandardNth2gt22 = PDstandardNth2(&gt22[index]);
- CCTK_REAL const PDstandardNth3gt22 = PDstandardNth3(&gt22[index]);
- CCTK_REAL const PDstandardNth1gt23 = PDstandardNth1(&gt23[index]);
- CCTK_REAL const PDstandardNth2gt23 = PDstandardNth2(&gt23[index]);
- CCTK_REAL const PDstandardNth3gt23 = PDstandardNth3(&gt23[index]);
- CCTK_REAL const PDstandardNth1gt33 = PDstandardNth1(&gt33[index]);
- CCTK_REAL const PDstandardNth2gt33 = PDstandardNth2(&gt33[index]);
- CCTK_REAL const PDstandardNth3gt33 = PDstandardNth3(&gt33[index]);
- CCTK_REAL const PDstandardNth1phi = PDstandardNth1(&phi[index]);
- CCTK_REAL const PDstandardNth2phi = PDstandardNth2(&phi[index]);
- CCTK_REAL const PDstandardNth3phi = PDstandardNth3(&phi[index]);
- CCTK_REAL const PDstandardNth1trK = PDstandardNth1(&trK[index]);
- CCTK_REAL const PDstandardNth2trK = PDstandardNth2(&trK[index]);
- CCTK_REAL const PDstandardNth3trK = PDstandardNth3(&trK[index]);
+ 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 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:
+ 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]);
+ 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:
+ 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]);
+ 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:
+ 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]);
+ 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:
+ 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]);
+ 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 */
ptrdiff_t dir1 = Sign(beta1L);
@@ -265,340 +648,837 @@ static void ML_BSSN_O2_RHS1_Body(cGH const * restrict const cctkGH, int const di
ptrdiff_t dir3 = Sign(beta3L);
- CCTK_REAL detgt = 1;
+ CCTK_REAL_VEC JacPDstandardNth11alpha;
+ CCTK_REAL_VEC JacPDstandardNth11beta1;
+ CCTK_REAL_VEC JacPDstandardNth11beta2;
+ CCTK_REAL_VEC JacPDstandardNth11beta3;
+ CCTK_REAL_VEC JacPDstandardNth12alpha;
+ CCTK_REAL_VEC JacPDstandardNth12beta1;
+ CCTK_REAL_VEC JacPDstandardNth12beta2;
+ CCTK_REAL_VEC JacPDstandardNth12beta3;
+ CCTK_REAL_VEC JacPDstandardNth13alpha;
+ CCTK_REAL_VEC JacPDstandardNth13beta1;
+ CCTK_REAL_VEC JacPDstandardNth13beta2;
+ CCTK_REAL_VEC JacPDstandardNth13beta3;
+ 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 JacPDstandardNth1trK;
+ CCTK_REAL_VEC JacPDstandardNth21alpha;
+ CCTK_REAL_VEC JacPDstandardNth21beta1;
+ CCTK_REAL_VEC JacPDstandardNth21beta2;
+ CCTK_REAL_VEC JacPDstandardNth21beta3;
+ CCTK_REAL_VEC JacPDstandardNth22alpha;
+ CCTK_REAL_VEC JacPDstandardNth22beta1;
+ CCTK_REAL_VEC JacPDstandardNth22beta2;
+ CCTK_REAL_VEC JacPDstandardNth22beta3;
+ CCTK_REAL_VEC JacPDstandardNth23alpha;
+ CCTK_REAL_VEC JacPDstandardNth23beta1;
+ CCTK_REAL_VEC JacPDstandardNth23beta2;
+ CCTK_REAL_VEC JacPDstandardNth23beta3;
+ 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 JacPDstandardNth2trK;
+ CCTK_REAL_VEC JacPDstandardNth31alpha;
+ CCTK_REAL_VEC JacPDstandardNth31beta1;
+ CCTK_REAL_VEC JacPDstandardNth31beta2;
+ CCTK_REAL_VEC JacPDstandardNth31beta3;
+ CCTK_REAL_VEC JacPDstandardNth32alpha;
+ CCTK_REAL_VEC JacPDstandardNth32beta1;
+ CCTK_REAL_VEC JacPDstandardNth32beta2;
+ CCTK_REAL_VEC JacPDstandardNth32beta3;
+ CCTK_REAL_VEC JacPDstandardNth33alpha;
+ CCTK_REAL_VEC JacPDstandardNth33beta1;
+ CCTK_REAL_VEC JacPDstandardNth33beta2;
+ CCTK_REAL_VEC JacPDstandardNth33beta3;
+ 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 JacPDstandardNth3trK;
+
+ 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)));
+
+ JacPDstandardNth1trK =
+ kmadd(J11L,PDstandardNth1trK,kmadd(J21L,PDstandardNth2trK,kmul(J31L,PDstandardNth3trK)));
+
+ 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)));
+
+ JacPDstandardNth2trK =
+ kmadd(J12L,PDstandardNth1trK,kmadd(J22L,PDstandardNth2trK,kmul(J32L,PDstandardNth3trK)));
+
+ 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)));
+
+ JacPDstandardNth3trK =
+ kmadd(J13L,PDstandardNth1trK,kmadd(J23L,PDstandardNth2trK,kmul(J33L,PDstandardNth3trK)));
+
+ 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))))))));
+
+ 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))))))));
+
+ 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))))))));
+
+ 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)))))));
+
+ 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)))))));
+
+ 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)))))));
+
+ 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)))))));
+
+ 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)))))));
+
+ 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)))))));
+ }
+ else
+ {
+ JacPDstandardNth1alpha = PDstandardNth1alpha;
+
+ JacPDstandardNth1beta1 = PDstandardNth1beta1;
+
+ JacPDstandardNth1beta2 = PDstandardNth1beta2;
+
+ JacPDstandardNth1beta3 = PDstandardNth1beta3;
+
+ JacPDstandardNth1gt11 = PDstandardNth1gt11;
+
+ JacPDstandardNth1gt12 = PDstandardNth1gt12;
+
+ JacPDstandardNth1gt13 = PDstandardNth1gt13;
+
+ JacPDstandardNth1gt22 = PDstandardNth1gt22;
+
+ JacPDstandardNth1gt23 = PDstandardNth1gt23;
+
+ JacPDstandardNth1gt33 = PDstandardNth1gt33;
+
+ JacPDstandardNth1phi = PDstandardNth1phi;
+
+ JacPDstandardNth1trK = PDstandardNth1trK;
+
+ JacPDstandardNth2alpha = PDstandardNth2alpha;
+
+ JacPDstandardNth2beta1 = PDstandardNth2beta1;
+
+ JacPDstandardNth2beta2 = PDstandardNth2beta2;
+
+ JacPDstandardNth2beta3 = PDstandardNth2beta3;
+
+ JacPDstandardNth2gt11 = PDstandardNth2gt11;
+
+ JacPDstandardNth2gt12 = PDstandardNth2gt12;
+
+ JacPDstandardNth2gt13 = PDstandardNth2gt13;
+
+ JacPDstandardNth2gt22 = PDstandardNth2gt22;
+
+ JacPDstandardNth2gt23 = PDstandardNth2gt23;
+
+ JacPDstandardNth2gt33 = PDstandardNth2gt33;
+
+ JacPDstandardNth2phi = PDstandardNth2phi;
+
+ JacPDstandardNth2trK = PDstandardNth2trK;
+
+ JacPDstandardNth3alpha = PDstandardNth3alpha;
+
+ JacPDstandardNth3beta1 = PDstandardNth3beta1;
+
+ JacPDstandardNth3beta2 = PDstandardNth3beta2;
+
+ JacPDstandardNth3beta3 = PDstandardNth3beta3;
+
+ JacPDstandardNth3gt11 = PDstandardNth3gt11;
+
+ JacPDstandardNth3gt12 = PDstandardNth3gt12;
+
+ JacPDstandardNth3gt13 = PDstandardNth3gt13;
+
+ JacPDstandardNth3gt22 = PDstandardNth3gt22;
+
+ JacPDstandardNth3gt23 = PDstandardNth3gt23;
+
+ JacPDstandardNth3gt33 = PDstandardNth3gt33;
+
+ JacPDstandardNth3phi = PDstandardNth3phi;
+
+ JacPDstandardNth3trK = PDstandardNth3trK;
+
+ JacPDstandardNth11alpha = PDstandardNth11alpha;
+
+ JacPDstandardNth11beta1 = PDstandardNth11beta1;
+
+ JacPDstandardNth11beta2 = PDstandardNth11beta2;
+
+ JacPDstandardNth11beta3 = PDstandardNth11beta3;
+
+ JacPDstandardNth22alpha = PDstandardNth22alpha;
+
+ JacPDstandardNth22beta1 = PDstandardNth22beta1;
+
+ JacPDstandardNth22beta2 = PDstandardNth22beta2;
+
+ JacPDstandardNth22beta3 = PDstandardNth22beta3;
+
+ JacPDstandardNth33alpha = PDstandardNth33alpha;
+
+ JacPDstandardNth33beta1 = PDstandardNth33beta1;
+
+ JacPDstandardNth33beta2 = PDstandardNth33beta2;
+
+ JacPDstandardNth33beta3 = PDstandardNth33beta3;
+
+ JacPDstandardNth12alpha = PDstandardNth12alpha;
+
+ JacPDstandardNth12beta1 = PDstandardNth12beta1;
+
+ JacPDstandardNth12beta2 = PDstandardNth12beta2;
+
+ JacPDstandardNth12beta3 = PDstandardNth12beta3;
+
+ JacPDstandardNth13alpha = PDstandardNth13alpha;
+
+ JacPDstandardNth13beta1 = PDstandardNth13beta1;
+
+ JacPDstandardNth13beta2 = PDstandardNth13beta2;
+
+ JacPDstandardNth13beta3 = PDstandardNth13beta3;
+
+ JacPDstandardNth21alpha = PDstandardNth12alpha;
+
+ JacPDstandardNth21beta1 = PDstandardNth12beta1;
+
+ JacPDstandardNth21beta2 = PDstandardNth12beta2;
+
+ JacPDstandardNth21beta3 = PDstandardNth12beta3;
+
+ JacPDstandardNth23alpha = PDstandardNth23alpha;
+
+ JacPDstandardNth23beta1 = PDstandardNth23beta1;
+
+ JacPDstandardNth23beta2 = PDstandardNth23beta2;
+
+ JacPDstandardNth23beta3 = PDstandardNth23beta3;
+
+ JacPDstandardNth31alpha = PDstandardNth13alpha;
+
+ JacPDstandardNth31beta1 = PDstandardNth13beta1;
+
+ JacPDstandardNth31beta2 = PDstandardNth13beta2;
+
+ JacPDstandardNth31beta3 = PDstandardNth13beta3;
+
+ JacPDstandardNth32alpha = PDstandardNth23alpha;
+
+ JacPDstandardNth32beta1 = PDstandardNth23beta1;
+
+ JacPDstandardNth32beta2 = PDstandardNth23beta2;
+
+ JacPDstandardNth32beta3 = PDstandardNth23beta3;
+ }
+
+ 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 gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L));
+ CCTK_REAL_VEC Gtl211 =
+ kmadd(JacPDstandardNth2gt11,ToReal(-0.5),JacPDstandardNth1gt12);
- CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt);
+ CCTK_REAL_VEC Gtl212 = kmul(JacPDstandardNth1gt22,ToReal(0.5));
- CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC Gtl213 =
+ kmul(kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth3gt12,JacPDstandardNth2gt13)),ToReal(0.5));
- CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L));
+ CCTK_REAL_VEC Gtl222 = kmul(JacPDstandardNth2gt22,ToReal(0.5));
- CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC Gtl223 = kmul(JacPDstandardNth3gt22,ToReal(0.5));
- CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L));
+ CCTK_REAL_VEC Gtl233 =
+ kmadd(JacPDstandardNth2gt33,ToReal(-0.5),JacPDstandardNth3gt23);
- CCTK_REAL Gtl111 = 0.5*PDstandardNth1gt11;
+ CCTK_REAL_VEC Gtl311 =
+ kmadd(JacPDstandardNth3gt11,ToReal(-0.5),JacPDstandardNth1gt13);
- CCTK_REAL Gtl112 = 0.5*PDstandardNth2gt11;
+ CCTK_REAL_VEC Gtl312 =
+ kmul(kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth2gt13,JacPDstandardNth3gt12)),ToReal(0.5));
- CCTK_REAL Gtl113 = 0.5*PDstandardNth3gt11;
+ CCTK_REAL_VEC Gtl313 = kmul(JacPDstandardNth1gt33,ToReal(0.5));
- CCTK_REAL Gtl122 = -0.5*PDstandardNth1gt22 + PDstandardNth2gt12;
+ CCTK_REAL_VEC Gtl322 =
+ kmadd(JacPDstandardNth3gt22,ToReal(-0.5),JacPDstandardNth2gt23);
- CCTK_REAL Gtl123 = 0.5*(-PDstandardNth1gt23 + PDstandardNth2gt13 +
- PDstandardNth3gt12);
+ CCTK_REAL_VEC Gtl323 = kmul(JacPDstandardNth2gt33,ToReal(0.5));
- CCTK_REAL Gtl133 = -0.5*PDstandardNth1gt33 + PDstandardNth3gt13;
+ CCTK_REAL_VEC Gtl333 = kmul(JacPDstandardNth3gt33,ToReal(0.5));
- CCTK_REAL Gtl211 = PDstandardNth1gt12 - 0.5*PDstandardNth2gt11;
+ CCTK_REAL_VEC Gt111 =
+ kmadd(Gtl111,gtu11,kmadd(Gtl211,gtu12,kmul(Gtl311,gtu13)));
- CCTK_REAL Gtl212 = 0.5*PDstandardNth1gt22;
+ CCTK_REAL_VEC Gt211 =
+ kmadd(Gtl111,gtu12,kmadd(Gtl211,gtu22,kmul(Gtl311,gtu23)));
- CCTK_REAL Gtl213 = 0.5*(PDstandardNth1gt23 - PDstandardNth2gt13 +
- PDstandardNth3gt12);
+ CCTK_REAL_VEC Gt311 =
+ kmadd(Gtl111,gtu13,kmadd(Gtl211,gtu23,kmul(Gtl311,gtu33)));
- CCTK_REAL Gtl222 = 0.5*PDstandardNth2gt22;
+ CCTK_REAL_VEC Gt112 =
+ kmadd(Gtl112,gtu11,kmadd(Gtl212,gtu12,kmul(Gtl312,gtu13)));
- CCTK_REAL Gtl223 = 0.5*PDstandardNth3gt22;
+ CCTK_REAL_VEC Gt212 =
+ kmadd(Gtl112,gtu12,kmadd(Gtl212,gtu22,kmul(Gtl312,gtu23)));
- CCTK_REAL Gtl233 = -0.5*PDstandardNth2gt33 + PDstandardNth3gt23;
+ CCTK_REAL_VEC Gt312 =
+ kmadd(Gtl112,gtu13,kmadd(Gtl212,gtu23,kmul(Gtl312,gtu33)));
- CCTK_REAL Gtl311 = PDstandardNth1gt13 - 0.5*PDstandardNth3gt11;
+ CCTK_REAL_VEC Gt113 =
+ kmadd(Gtl113,gtu11,kmadd(Gtl213,gtu12,kmul(Gtl313,gtu13)));
- CCTK_REAL Gtl312 = 0.5*(PDstandardNth1gt23 + PDstandardNth2gt13 -
- PDstandardNth3gt12);
+ CCTK_REAL_VEC Gt213 =
+ kmadd(Gtl113,gtu12,kmadd(Gtl213,gtu22,kmul(Gtl313,gtu23)));
- CCTK_REAL Gtl313 = 0.5*PDstandardNth1gt33;
+ CCTK_REAL_VEC Gt313 =
+ kmadd(Gtl113,gtu13,kmadd(Gtl213,gtu23,kmul(Gtl313,gtu33)));
- CCTK_REAL Gtl322 = PDstandardNth2gt23 - 0.5*PDstandardNth3gt22;
+ CCTK_REAL_VEC Gt122 =
+ kmadd(Gtl122,gtu11,kmadd(Gtl222,gtu12,kmul(Gtl322,gtu13)));
- CCTK_REAL Gtl323 = 0.5*PDstandardNth2gt33;
+ CCTK_REAL_VEC Gt222 =
+ kmadd(Gtl122,gtu12,kmadd(Gtl222,gtu22,kmul(Gtl322,gtu23)));
- CCTK_REAL Gtl333 = 0.5*PDstandardNth3gt33;
+ CCTK_REAL_VEC Gt322 =
+ kmadd(Gtl122,gtu13,kmadd(Gtl222,gtu23,kmul(Gtl322,gtu33)));
- CCTK_REAL Gt111 = Gtl111*gtu11 + Gtl211*gtu12 + Gtl311*gtu13;
+ CCTK_REAL_VEC Gt123 =
+ kmadd(Gtl123,gtu11,kmadd(Gtl223,gtu12,kmul(Gtl323,gtu13)));
- CCTK_REAL Gt211 = Gtl111*gtu12 + Gtl211*gtu22 + Gtl311*gtu23;
+ CCTK_REAL_VEC Gt223 =
+ kmadd(Gtl123,gtu12,kmadd(Gtl223,gtu22,kmul(Gtl323,gtu23)));
- CCTK_REAL Gt311 = Gtl111*gtu13 + Gtl211*gtu23 + Gtl311*gtu33;
+ CCTK_REAL_VEC Gt323 =
+ kmadd(Gtl123,gtu13,kmadd(Gtl223,gtu23,kmul(Gtl323,gtu33)));
- CCTK_REAL Gt112 = Gtl112*gtu11 + Gtl212*gtu12 + Gtl312*gtu13;
+ CCTK_REAL_VEC Gt133 =
+ kmadd(Gtl133,gtu11,kmadd(Gtl233,gtu12,kmul(Gtl333,gtu13)));
- CCTK_REAL Gt212 = Gtl112*gtu12 + Gtl212*gtu22 + Gtl312*gtu23;
+ CCTK_REAL_VEC Gt233 =
+ kmadd(Gtl133,gtu12,kmadd(Gtl233,gtu22,kmul(Gtl333,gtu23)));
- CCTK_REAL Gt312 = Gtl112*gtu13 + Gtl212*gtu23 + Gtl312*gtu33;
+ CCTK_REAL_VEC Gt333 =
+ kmadd(Gtl133,gtu13,kmadd(Gtl233,gtu23,kmul(Gtl333,gtu33)));
- CCTK_REAL Gt113 = Gtl113*gtu11 + Gtl213*gtu12 + Gtl313*gtu13;
+ 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 Gt213 = Gtl113*gtu12 + Gtl213*gtu22 + Gtl313*gtu23;
+ 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 Gt313 = Gtl113*gtu13 + Gtl213*gtu23 + Gtl313*gtu33;
+ 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 Gt122 = Gtl122*gtu11 + Gtl222*gtu12 + Gtl322*gtu13;
+ CCTK_REAL_VEC fac1 =
+ IfThen(conformalMethod,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
- CCTK_REAL Gt222 = Gtl122*gtu12 + Gtl222*gtu22 + Gtl322*gtu23;
+ CCTK_REAL_VEC cdphi1 = kmul(fac1,JacPDstandardNth1phi);
- CCTK_REAL Gt322 = Gtl122*gtu13 + Gtl222*gtu23 + Gtl322*gtu33;
+ CCTK_REAL_VEC cdphi2 = kmul(fac1,JacPDstandardNth2phi);
- CCTK_REAL Gt123 = Gtl123*gtu11 + Gtl223*gtu12 + Gtl323*gtu13;
+ CCTK_REAL_VEC cdphi3 = kmul(fac1,JacPDstandardNth3phi);
- CCTK_REAL Gt223 = Gtl123*gtu12 + Gtl223*gtu22 + Gtl323*gtu23;
+ CCTK_REAL_VEC Atm11 =
+ kmadd(At11L,gtu11,kmadd(At12L,gtu12,kmul(At13L,gtu13)));
- CCTK_REAL Gt323 = Gtl123*gtu13 + Gtl223*gtu23 + Gtl323*gtu33;
+ CCTK_REAL_VEC Atm21 =
+ kmadd(At11L,gtu12,kmadd(At12L,gtu22,kmul(At13L,gtu23)));
- CCTK_REAL Gt133 = Gtl133*gtu11 + Gtl233*gtu12 + Gtl333*gtu13;
+ CCTK_REAL_VEC Atm31 =
+ kmadd(At11L,gtu13,kmadd(At12L,gtu23,kmul(At13L,gtu33)));
- CCTK_REAL Gt233 = Gtl133*gtu12 + Gtl233*gtu22 + Gtl333*gtu23;
+ CCTK_REAL_VEC Atm12 =
+ kmadd(At12L,gtu11,kmadd(At22L,gtu12,kmul(At23L,gtu13)));
- CCTK_REAL Gt333 = Gtl133*gtu13 + Gtl233*gtu23 + Gtl333*gtu33;
+ CCTK_REAL_VEC Atm22 =
+ kmadd(At12L,gtu12,kmadd(At22L,gtu22,kmul(At23L,gtu23)));
- CCTK_REAL Xtn1 = Gt111*gtu11 + Gt122*gtu22 + 2*(Gt112*gtu12 +
- Gt113*gtu13 + Gt123*gtu23) + Gt133*gtu33;
+ CCTK_REAL_VEC Atm32 =
+ kmadd(At12L,gtu13,kmadd(At22L,gtu23,kmul(At23L,gtu33)));
- CCTK_REAL Xtn2 = Gt211*gtu11 + Gt222*gtu22 + 2*(Gt212*gtu12 +
- Gt213*gtu13 + Gt223*gtu23) + Gt233*gtu33;
+ CCTK_REAL_VEC Atm13 =
+ kmadd(At13L,gtu11,kmadd(At23L,gtu12,kmul(At33L,gtu13)));
- CCTK_REAL Xtn3 = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu12 +
- Gt313*gtu13 + Gt323*gtu23) + Gt333*gtu33;
+ CCTK_REAL_VEC Atm23 =
+ kmadd(At13L,gtu12,kmadd(At23L,gtu22,kmul(At33L,gtu23)));
- CCTK_REAL fac1 = IfThen(conformalMethod,-0.5*INV(phiL),1);
+ CCTK_REAL_VEC Atm33 =
+ kmadd(At13L,gtu13,kmadd(At23L,gtu23,kmul(At33L,gtu33)));
- CCTK_REAL cdphi1 = fac1*PDstandardNth1phi;
+ CCTK_REAL_VEC Atu11 =
+ kmadd(Atm11,gtu11,kmadd(Atm12,gtu12,kmul(Atm13,gtu13)));
- CCTK_REAL cdphi2 = fac1*PDstandardNth2phi;
+ CCTK_REAL_VEC Atu12 =
+ kmadd(Atm11,gtu12,kmadd(Atm12,gtu22,kmul(Atm13,gtu23)));
- CCTK_REAL cdphi3 = fac1*PDstandardNth3phi;
+ CCTK_REAL_VEC Atu13 =
+ kmadd(Atm11,gtu13,kmadd(Atm12,gtu23,kmul(Atm13,gtu33)));
- CCTK_REAL Atm11 = At11L*gtu11 + At12L*gtu12 + At13L*gtu13;
+ CCTK_REAL_VEC Atu22 =
+ kmadd(Atm21,gtu12,kmadd(Atm22,gtu22,kmul(Atm23,gtu23)));
- CCTK_REAL Atm21 = At11L*gtu12 + At12L*gtu22 + At13L*gtu23;
+ CCTK_REAL_VEC Atu23 =
+ kmadd(Atm21,gtu13,kmadd(Atm22,gtu23,kmul(Atm23,gtu33)));
- CCTK_REAL Atm31 = At11L*gtu13 + At12L*gtu23 + At13L*gtu33;
+ CCTK_REAL_VEC Atu33 =
+ kmadd(Atm31,gtu13,kmadd(Atm32,gtu23,kmul(Atm33,gtu33)));
- CCTK_REAL Atm12 = At12L*gtu11 + At22L*gtu12 + At23L*gtu13;
+ CCTK_REAL_VEC e4phi =
+ IfThen(conformalMethod,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
- CCTK_REAL Atm22 = At12L*gtu12 + At22L*gtu22 + At23L*gtu23;
+ CCTK_REAL_VEC em4phi = INV(e4phi);
- CCTK_REAL Atm32 = At12L*gtu13 + At22L*gtu23 + At23L*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 Atm13 = At13L*gtu11 + At23L*gtu12 + At33L*gtu13;
+ CCTK_REAL_VEC S1 =
+ kmul(INV(alphaL),kmadd(beta1L,eTxxL,kmadd(beta2L,eTxyL,kmsub(beta3L,eTxzL,eTtxL))));
- CCTK_REAL Atm23 = At13L*gtu12 + At23L*gtu22 + At33L*gtu23;
+ CCTK_REAL_VEC S2 =
+ kmul(INV(alphaL),kmadd(beta1L,eTxyL,kmadd(beta2L,eTyyL,kmsub(beta3L,eTyzL,eTtyL))));
- CCTK_REAL Atm33 = At13L*gtu13 + At23L*gtu23 + At33L*gtu33;
+ CCTK_REAL_VEC S3 =
+ kmul(INV(alphaL),kmadd(beta1L,eTxzL,kmadd(beta2L,eTyzL,kmsub(beta3L,eTzzL,eTtzL))));
- CCTK_REAL Atu11 = Atm11*gtu11 + Atm12*gtu12 + Atm13*gtu13;
+ 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 Atu12 = Atm11*gtu12 + Atm12*gtu22 + Atm13*gtu23;
+ 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 Atu13 = Atm11*gtu13 + Atm12*gtu23 + Atm13*gtu33;
+ 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))))));
- CCTK_REAL Atu22 = Atm21*gtu12 + Atm22*gtu22 + Atm23*gtu23;
+ CCTK_REAL_VEC gt12rhsL =
+ kmul(ToReal(0.333333333333333333333333333333),kmadd(alphaL,kmul(At12L,ToReal(-6)),kmadd(gt12L,kadd(JacPDstandardNth1beta1,kmadd(JacPDstandardNth3beta3,ToReal(-2),JacPDstandardNth2beta2)),kmul(kmadd(gt22L,JacPDstandardNth1beta2,kmadd(gt23L,JacPDstandardNth1beta3,kmadd(gt11L,JacPDstandardNth2beta1,kmul(gt13L,JacPDstandardNth2beta3)))),ToReal(3)))));
- CCTK_REAL Atu23 = Atm21*gtu13 + Atm22*gtu23 + Atm23*gtu33;
+ CCTK_REAL_VEC gt13rhsL =
+ kmul(ToReal(0.333333333333333333333333333333),kmadd(alphaL,kmul(At13L,ToReal(-6)),kmadd(gt13L,kadd(JacPDstandardNth1beta1,kmadd(JacPDstandardNth2beta2,ToReal(-2),JacPDstandardNth3beta3)),kmul(kmadd(gt23L,JacPDstandardNth1beta2,kmadd(gt33L,JacPDstandardNth1beta3,kmadd(gt11L,JacPDstandardNth3beta1,kmul(gt12L,JacPDstandardNth3beta2)))),ToReal(3)))));
- CCTK_REAL Atu33 = Atm31*gtu13 + Atm32*gtu23 + Atm33*gtu33;
+ CCTK_REAL_VEC gt22rhsL =
+ kmul(ToReal(-0.666666666666666666666666666667),kmadd(kmadd(gt12L,JacPDstandardNth2beta1,kmul(gt23L,JacPDstandardNth2beta3)),ToReal(-3),kmadd(gt22L,kadd(JacPDstandardNth1beta1,kmadd(JacPDstandardNth2beta2,ToReal(-2),JacPDstandardNth3beta3)),kmul(alphaL,kmul(At22L,ToReal(3))))));
- CCTK_REAL e4phi = IfThen(conformalMethod,INV(SQR(phiL)),exp(4*phiL));
+ CCTK_REAL_VEC gt23rhsL =
+ kmul(ToReal(0.333333333333333333333333333333),kmadd(alphaL,kmul(At23L,ToReal(-6)),kmadd(gt23L,kadd(JacPDstandardNth2beta2,kmadd(JacPDstandardNth1beta1,ToReal(-2),JacPDstandardNth3beta3)),kmul(kmadd(gt13L,JacPDstandardNth2beta1,kmadd(gt33L,JacPDstandardNth2beta3,kmadd(gt12L,JacPDstandardNth3beta1,kmul(gt22L,JacPDstandardNth3beta2)))),ToReal(3)))));
- CCTK_REAL em4phi = INV(e4phi);
+ CCTK_REAL_VEC gt33rhsL =
+ kmul(ToReal(-0.666666666666666666666666666667),kmadd(kmadd(gt13L,JacPDstandardNth3beta1,kmul(gt23L,JacPDstandardNth3beta2)),ToReal(-3),kmadd(gt33L,kadd(JacPDstandardNth1beta1,kmadd(JacPDstandardNth3beta3,ToReal(-2),JacPDstandardNth2beta2)),kmul(alphaL,kmul(At33L,ToReal(3))))));
- CCTK_REAL rho = INV(SQR(alphaL))*(eTttL - 2*(beta2L*eTtyL +
- beta3L*eTtzL) + 2*(beta1L*(-eTtxL + beta2L*eTxyL + beta3L*eTxzL) +
- beta2L*beta3L*eTyzL) + eTxxL*SQR(beta1L) + eTyyL*SQR(beta2L) +
- eTzzL*SQR(beta3L));
+ 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),kmul(gtu33,JacPDstandardNth33beta1))))),ToReal(3),kmadd(gtu11,kadd(JacPDstandardNth12beta2,kmadd(JacPDstandardNth11beta1,ToReal(4),JacPDstandardNth13beta3)),kmadd(gtu12,kadd(JacPDstandardNth22beta2,kmadd(JacPDstandardNth21beta1,ToReal(4),JacPDstandardNth23beta3)),kmadd(gtu13,kadd(JacPDstandardNth32beta2,kmadd(JacPDstandardNth31beta1,ToReal(4),JacPDstandardNth33beta3)),kmul(alphaL,kmadd(kmadd(gtu11,S1,kmadd(gtu12,S2,kmul(gtu13,S3))),ToReal(-150.7964473723100754462068823974161384415),kmadd(kmadd(gtu11,JacPDstandardNth1trK,kmadd(gtu12,JacPDstandardNth2trK,kmul(gtu13,JacPDstandardNth3trK))),ToReal(-4),kmadd(ToReal(6),kmadd(Atu22,Gt122,kmadd(Atu33,Gt133,kmul(Atu11,kmadd(cdphi1,ToReal(6),Gt111)))),kmadd(kmadd(Atu23,Gt123,kmul(Atu12,kmadd(cdphi2,ToReal(3),Gt112))),ToReal(12),kmul(Atu13,kmadd(Gt113,ToReal(12),kmul(cdphi3,ToReal(36)))))))))))))))));
- CCTK_REAL S1 = (-eTtxL + beta1L*eTxxL + beta2L*eTxyL +
- beta3L*eTxzL)*INV(alphaL);
+ 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(gtu23,JacPDstandardNth23beta2,kmadd(gtu13,kadd(JacPDstandardNth13beta2,JacPDstandardNth31beta2),kmul(gtu33,JacPDstandardNth33beta2)))),ToReal(3),kmadd(gtu12,kadd(JacPDstandardNth11beta1,kadd(JacPDstandardNth13beta3,kmadd(JacPDstandardNth21beta2,ToReal(3),kmul(JacPDstandardNth12beta2,ToReal(4))))),kmadd(gtu22,kadd(JacPDstandardNth21beta1,kmadd(JacPDstandardNth22beta2,ToReal(4),JacPDstandardNth23beta3)),kmadd(gtu23,kadd(JacPDstandardNth31beta1,kmadd(JacPDstandardNth32beta2,ToReal(4),JacPDstandardNth33beta3)),kmul(alphaL,kmadd(kmadd(gtu12,S1,kmadd(gtu22,S2,kmul(gtu23,S3))),ToReal(-150.7964473723100754462068823974161384415),kmadd(kmadd(gtu12,JacPDstandardNth1trK,kmadd(gtu22,JacPDstandardNth2trK,kmul(gtu23,JacPDstandardNth3trK))),ToReal(-4),kmadd(ToReal(6),kmadd(Atu11,Gt211,kmadd(Atu33,Gt233,kmul(Atu22,kmadd(cdphi2,ToReal(6),Gt222)))),kmadd(kmadd(Atu13,Gt213,kmul(Atu12,kmadd(cdphi1,ToReal(3),Gt212))),ToReal(12),kmul(Atu23,kmadd(Gt223,ToReal(12),kmul(cdphi3,ToReal(36)))))))))))))))));
- CCTK_REAL S2 = (-eTtyL + beta1L*eTxyL + beta2L*eTyyL +
- beta3L*eTyzL)*INV(alphaL);
+ 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),kmadd(Xtn3,kmsub(kadd(JacPDstandardNth1beta1,JacPDstandardNth2beta2),ToReal(2),JacPDstandardNth3beta3),kmadd(kmadd(gtu11,JacPDstandardNth11beta3,kmadd(gtu12,kadd(JacPDstandardNth12beta3,JacPDstandardNth21beta3),kmadd(gtu22,JacPDstandardNth22beta3,kmul(gtu23,JacPDstandardNth32beta3)))),ToReal(3),kmadd(gtu13,kadd(JacPDstandardNth11beta1,kadd(JacPDstandardNth12beta2,kmadd(JacPDstandardNth31beta3,ToReal(3),kmul(JacPDstandardNth13beta3,ToReal(4))))),kmadd(gtu23,kadd(JacPDstandardNth21beta1,kmadd(JacPDstandardNth23beta3,ToReal(4),JacPDstandardNth22beta2)),kmadd(gtu33,kadd(JacPDstandardNth31beta1,kmadd(JacPDstandardNth33beta3,ToReal(4),JacPDstandardNth32beta2)),kmul(alphaL,kmadd(kmadd(gtu13,S1,kmadd(gtu23,S2,kmul(gtu33,S3))),ToReal(-150.7964473723100754462068823974161384415),kmadd(kmadd(gtu13,JacPDstandardNth1trK,kmadd(gtu23,JacPDstandardNth2trK,kmul(gtu33,JacPDstandardNth3trK))),ToReal(-4),kmadd(kmadd(Atu11,Gt311,kmul(Atu22,Gt322)),ToReal(6),kmadd(kmadd(Atu12,Gt312,kmadd(Atu13,kmadd(cdphi1,ToReal(3),Gt313),kmul(Atu23,kmadd(cdphi2,ToReal(3),Gt323)))),ToReal(12),kmul(Atu33,kmadd(Gt333,ToReal(6),kmul(cdphi3,ToReal(36)))))))))))))))));
- CCTK_REAL S3 = (-eTtzL + beta1L*eTxzL + beta2L*eTyzL +
- beta3L*eTzzL)*INV(alphaL);
+ CCTK_REAL_VEC Xt1rhsL = dotXt1;
- CCTK_REAL trS = em4phi*(eTxxL*gtu11 + eTyyL*gtu22 + 2*(eTxyL*gtu12 +
- eTxzL*gtu13 + eTyzL*gtu23) + eTzzL*gtu33);
+ CCTK_REAL_VEC Xt2rhsL = dotXt2;
- CCTK_REAL phirhsL =
- IfThen(conformalMethod,phiL*(-0.333333333333333333333333333333*(PDstandardNth1beta1
- + PDstandardNth2beta2 + PDstandardNth3beta3) +
- 0.333333333333333333333333333333*alphaL*trKL),0.166666666666666666666666666667*(PDstandardNth1beta1
- + PDstandardNth2beta2 + PDstandardNth3beta3) -
- 0.166666666666666666666666666667*alphaL*trKL);
+ CCTK_REAL_VEC Xt3rhsL = dotXt3;
- CCTK_REAL gt11rhsL = -0.666666666666666666666666666667*(3*alphaL*At11L
- - 3*(gt12L*PDstandardNth1beta2 + gt13L*PDstandardNth1beta3) +
- gt11L*(-2*PDstandardNth1beta1 + PDstandardNth2beta2 +
- PDstandardNth3beta3));
+ CCTK_REAL_VEC dottrK =
+ kmsub(alphaL,kadd(SQR(Atm11),kadd(SQR(Atm22),kadd(SQR(Atm33),kmadd(SQR(trKL),ToReal(0.333333333333333333333333333333),kmadd(kmadd(Atm12,Atm21,kmadd(Atm13,Atm31,kmul(Atm23,Atm32))),ToReal(2),kmul(kadd(rho,trS),ToReal(12.56637061435917295385057353311801153679))))))),kmul(em4phi,knmsub(JacPDstandardNth1alpha,Xtn1,knmsub(JacPDstandardNth2alpha,Xtn2,knmsub(JacPDstandardNth3alpha,Xtn3,kmadd(gtu11,kmadd(cdphi1,kmul(JacPDstandardNth1alpha,ToReal(2)),JacPDstandardNth11alpha),kmadd(gtu12,kadd(JacPDstandardNth12alpha,kadd(JacPDstandardNth21alpha,kmadd(cdphi2,kmul(JacPDstandardNth1alpha,ToReal(2)),kmul(cdphi1,kmul(JacPDstandardNth2alpha,ToReal(2)))))),kmadd(gtu22,kmadd(cdphi2,kmul(JacPDstandardNth2alpha,ToReal(2)),JacPDstandardNth22alpha),kmadd(gtu13,kadd(JacPDstandardNth13alpha,kadd(JacPDstandardNth31alpha,kmadd(cdphi3,kmul(JacPDstandardNth1alpha,ToReal(2)),kmul(cdphi1,kmul(JacPDstandardNth3alpha,ToReal(2)))))),kmadd(gtu23,kadd(JacPDstandardNth23alpha,kadd(JacPDstandardNth32alpha,kmadd(cdphi3,kmul(JacPDstandardNth2alpha,ToReal(2)),kmul(cdphi2,kmul(JacPDstandardNth3alpha,ToReal(2)))))),kmul(gtu33,kmadd(cdphi3,kmul(JacPDstandardNth3alpha,ToReal(2)),JacPDstandardNth33alpha))))))))))));
- CCTK_REAL gt12rhsL = 0.333333333333333333333333333333*(-6*alphaL*At12L
- + 3*(gt22L*PDstandardNth1beta2 + gt23L*PDstandardNth1beta3 +
- gt11L*PDstandardNth2beta1 + gt13L*PDstandardNth2beta3) +
- gt12L*(PDstandardNth1beta1 + PDstandardNth2beta2 -
- 2*PDstandardNth3beta3));
+ CCTK_REAL_VEC trKrhsL = dottrK;
- CCTK_REAL gt13rhsL = 0.333333333333333333333333333333*(-6*alphaL*At13L
- + 3*(gt23L*PDstandardNth1beta2 + gt33L*PDstandardNth1beta3 +
- gt11L*PDstandardNth3beta1 + gt12L*PDstandardNth3beta2) +
- gt13L*(PDstandardNth1beta1 - 2*PDstandardNth2beta2 +
- PDstandardNth3beta3));
-
- CCTK_REAL gt22rhsL = -0.666666666666666666666666666667*(3*alphaL*At22L
- - 3*(gt12L*PDstandardNth2beta1 + gt23L*PDstandardNth2beta3) +
- gt22L*(PDstandardNth1beta1 - 2*PDstandardNth2beta2 +
- PDstandardNth3beta3));
-
- CCTK_REAL gt23rhsL = 0.333333333333333333333333333333*(-6*alphaL*At23L
- + 3*(gt13L*PDstandardNth2beta1 + gt33L*PDstandardNth2beta3 +
- gt12L*PDstandardNth3beta1 + gt22L*PDstandardNth3beta2) +
- gt23L*(-2*PDstandardNth1beta1 + PDstandardNth2beta2 +
- PDstandardNth3beta3));
-
- CCTK_REAL gt33rhsL = -0.666666666666666666666666666667*(3*alphaL*At33L
- - 3*(gt13L*PDstandardNth3beta1 + gt23L*PDstandardNth3beta2) +
- gt33L*(PDstandardNth1beta1 + PDstandardNth2beta2 -
- 2*PDstandardNth3beta3));
-
- CCTK_REAL dotXt1 =
- 0.333333333333333333333333333333*(7*(gtu12*PDstandardNth12beta1 +
- gtu13*PDstandardNth13beta1) + 6*gtu23*PDstandardNth23beta1 +
- 3*(gtu22*PDstandardNth22beta1 + gtu33*PDstandardNth33beta1) -
- 6*(Atu11*PDstandardNth1alpha + Atu12*PDstandardNth2alpha +
- Atu13*PDstandardNth3alpha) + gtu11*(4*PDstandardNth11beta1 +
- PDstandardNth12beta2 + PDstandardNth13beta3 -
- 150.7964473723100754462068823974161384415*alphaL*S1) +
- gtu12*(PDstandardNth22beta2 + PDstandardNth23beta3 -
- 150.7964473723100754462068823974161384415*alphaL*S2) +
- gtu13*(PDstandardNth23beta2 + PDstandardNth33beta3 -
- 150.7964473723100754462068823974161384415*alphaL*S3) +
- (-PDstandardNth1beta1 + 2*PDstandardNth3beta3)*Xtn1 +
- 2*(alphaL*(18*(Atu11*cdphi1 + Atu12*cdphi2 + Atu13*cdphi3) +
- 6*(Atu12*Gt112 + Atu13*Gt113 + Atu23*Gt123) + 3*(Atu11*Gt111 +
- Atu22*Gt122 + Atu33*Gt133) - 2*(gtu11*PDstandardNth1trK +
- gtu12*PDstandardNth2trK + gtu13*PDstandardNth3trK)) +
- PDstandardNth2beta2*Xtn1) - 3*(PDstandardNth2beta1*Xtn2 +
- PDstandardNth3beta1*Xtn3));
-
- CCTK_REAL dotXt2 =
- 0.333333333333333333333333333333*(6*gtu13*PDstandardNth13beta2 +
- 3*(gtu11*PDstandardNth11beta2 + gtu33*PDstandardNth33beta2) -
- 6*(Atu12*PDstandardNth1alpha + Atu22*PDstandardNth2alpha +
- Atu23*PDstandardNth3alpha) + gtu12*(PDstandardNth11beta1 +
- 7*PDstandardNth12beta2 + PDstandardNth13beta3 -
- 150.7964473723100754462068823974161384415*alphaL*S1) +
- gtu22*(PDstandardNth12beta1 + 4*PDstandardNth22beta2 +
- PDstandardNth23beta3 -
- 150.7964473723100754462068823974161384415*alphaL*S2) +
- gtu23*(PDstandardNth13beta1 + 7*PDstandardNth23beta2 +
- PDstandardNth33beta3 -
- 150.7964473723100754462068823974161384415*alphaL*S3) +
- (-PDstandardNth2beta2 + 2*PDstandardNth3beta3)*Xtn2 +
- 2*(alphaL*(18*(Atu12*cdphi1 + Atu22*cdphi2 + Atu23*cdphi3) +
- 6*(Atu12*Gt212 + Atu13*Gt213 + Atu23*Gt223) + 3*(Atu11*Gt211 +
- Atu22*Gt222 + Atu33*Gt233) - 2*(gtu12*PDstandardNth1trK +
- gtu22*PDstandardNth2trK + gtu23*PDstandardNth3trK)) +
- PDstandardNth1beta1*Xtn2) - 3*(PDstandardNth1beta2*Xtn1 +
- PDstandardNth3beta2*Xtn3));
-
- CCTK_REAL dotXt3 =
- 0.333333333333333333333333333333*(6*gtu12*PDstandardNth12beta3 +
- 3*(gtu11*PDstandardNth11beta3 + gtu22*PDstandardNth22beta3) -
- 6*(Atu13*PDstandardNth1alpha + Atu23*PDstandardNth2alpha +
- Atu33*PDstandardNth3alpha) + gtu13*(PDstandardNth11beta1 +
- PDstandardNth12beta2 + 7*PDstandardNth13beta3 -
- 150.7964473723100754462068823974161384415*alphaL*S1) +
- gtu23*(PDstandardNth12beta1 + PDstandardNth22beta2 +
- 7*PDstandardNth23beta3 -
- 150.7964473723100754462068823974161384415*alphaL*S2) +
- gtu33*(PDstandardNth13beta1 + PDstandardNth23beta2 +
- 4*PDstandardNth33beta3 -
- 150.7964473723100754462068823974161384415*alphaL*S3) -
- 3*(PDstandardNth1beta3*Xtn1 + PDstandardNth2beta3*Xtn2) +
- (2*PDstandardNth2beta2 - PDstandardNth3beta3)*Xtn3 +
- 2*(alphaL*(18*(Atu13*cdphi1 + Atu23*cdphi2 + Atu33*cdphi3) +
- 6*(Atu12*Gt312 + Atu13*Gt313 + Atu23*Gt323) + 3*(Atu11*Gt311 +
- Atu22*Gt322 + Atu33*Gt333) - 2*(gtu13*PDstandardNth1trK +
- gtu23*PDstandardNth2trK + gtu33*PDstandardNth3trK)) +
- PDstandardNth1beta1*Xtn3));
-
- CCTK_REAL Xt1rhsL = dotXt1;
-
- CCTK_REAL Xt2rhsL = dotXt2;
-
- CCTK_REAL Xt3rhsL = dotXt3;
-
- CCTK_REAL dottrK = -(em4phi*(gtu11*PDstandardNth11alpha +
- gtu22*PDstandardNth22alpha + gtu33*(PDstandardNth33alpha +
- 2*cdphi3*PDstandardNth3alpha) + 2*(gtu12*PDstandardNth12alpha +
- gtu13*(PDstandardNth13alpha + cdphi1*PDstandardNth3alpha) +
- gtu23*(PDstandardNth23alpha + cdphi2*PDstandardNth3alpha)) +
- PDstandardNth1alpha*(2*(cdphi1*gtu11 + cdphi2*gtu12 + cdphi3*gtu13) -
- Xtn1) + PDstandardNth2alpha*(2*(cdphi1*gtu12 + cdphi2*gtu22 +
- cdphi3*gtu23) - Xtn2) - PDstandardNth3alpha*Xtn3)) +
- alphaL*(2*(Atm12*Atm21 + Atm13*Atm31 + Atm23*Atm32) +
- 12.56637061435917295385057353311801153679*(rho + trS) + SQR(Atm11) +
- SQR(Atm22) + SQR(Atm33) + 0.333333333333333333333333333333*SQR(trKL));
-
- CCTK_REAL trKrhsL = dottrK;
-
- CCTK_REAL alpharhsL =
- -(pow(alphaL,ToReal(harmonicN))*ToReal(harmonicF)*(trKL + (AL -
- trKL)*ToReal(LapseACoeff)));
-
- CCTK_REAL ArhsL = (dottrK -
- AL*ToReal(AlphaDriver))*ToReal(LapseACoeff);
-
- CCTK_REAL eta = fmin(1,INV(rL)*ToReal(SpatialBetaDriverRadius));
-
- CCTK_REAL theta = fmin(1,exp(1 -
- rL*INV(ToReal(SpatialShiftGammaCoeffRadius))));
-
- CCTK_REAL beta1rhsL = theta*(Xt1L + beta1L*eta*ToReal(BetaDriver)*(-1
- + ToReal(ShiftBCoeff)) + (B1L -
- Xt1L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
-
- CCTK_REAL beta2rhsL = theta*(Xt2L + beta2L*eta*ToReal(BetaDriver)*(-1
- + ToReal(ShiftBCoeff)) + (B2L -
- Xt2L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
-
- CCTK_REAL beta3rhsL = theta*(Xt3L + beta3L*eta*ToReal(BetaDriver)*(-1
- + ToReal(ShiftBCoeff)) + (B3L -
- Xt3L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
-
- CCTK_REAL B1rhsL = (dotXt1 -
- B1L*eta*ToReal(BetaDriver))*ToReal(ShiftBCoeff);
-
- CCTK_REAL B2rhsL = (dotXt2 -
- B2L*eta*ToReal(BetaDriver))*ToReal(ShiftBCoeff);
-
- CCTK_REAL B3rhsL = (dotXt3 -
- B3L*eta*ToReal(BetaDriver))*ToReal(ShiftBCoeff);
-
- /* Copy local copies back to grid functions */
- alpharhs[index] = alpharhsL;
- Arhs[index] = ArhsL;
- B1rhs[index] = B1rhsL;
- B2rhs[index] = B2rhsL;
- B3rhs[index] = B3rhsL;
- beta1rhs[index] = beta1rhsL;
- beta2rhs[index] = beta2rhsL;
- beta3rhs[index] = beta3rhsL;
- gt11rhs[index] = gt11rhsL;
- gt12rhs[index] = gt12rhsL;
- gt13rhs[index] = gt13rhsL;
- gt22rhs[index] = gt22rhsL;
- gt23rhs[index] = gt23rhsL;
- gt33rhs[index] = gt33rhsL;
- phirhs[index] = phirhsL;
- trKrhs[index] = trKrhsL;
- Xt1rhs[index] = Xt1rhsL;
- Xt2rhs[index] = Xt2rhsL;
- Xt3rhs[index] = Xt3rhsL;
+ CCTK_REAL_VEC alpharhsL =
+ kneg(kmul(kpow(alphaL,harmonicN),kmul(ToReal(harmonicF),kmadd(ksub(AL,trKL),ToReal(LapseACoeff),trKL))));
+
+ CCTK_REAL_VEC ArhsL =
+ kmul(knmsub(AL,ToReal(AlphaDriver),dottrK),ToReal(LapseACoeff));
+
+ CCTK_REAL_VEC eta =
+ kfmin(ToReal(1),kmul(INV(rL),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(kmadd(gtu11,JacPDstandardNth1alpha,kmadd(gtu12,JacPDstandardNth2alpha,kmul(gtu13,JacPDstandardNth3alpha))),kmul(phiL,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(kmadd(gtu12,JacPDstandardNth1alpha,kmadd(gtu22,JacPDstandardNth2alpha,kmul(gtu23,JacPDstandardNth3alpha))),kmul(phiL,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(kmadd(gtu13,JacPDstandardNth1alpha,kmadd(gtu23,JacPDstandardNth2alpha,kmul(gtu33,JacPDstandardNth3alpha))),kmul(phiL,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(beta1L,kmul(eta,ToReal(BetaDriver*(-1 +
+ ShiftBCoeff))),kmul(ksub(B1L,Xt1L),ToReal(ShiftBCoeff)))),ToReal(ShiftGammaCoeff)));
+
+ beta2rhsL =
+ kmul(theta,kmul(kadd(Xt2L,kmadd(beta2L,kmul(eta,ToReal(BetaDriver*(-1 +
+ ShiftBCoeff))),kmul(ksub(B2L,Xt2L),ToReal(ShiftBCoeff)))),ToReal(ShiftGammaCoeff)));
+
+ beta3rhsL =
+ kmul(theta,kmul(kadd(Xt3L,kmadd(beta3L,kmul(eta,ToReal(BetaDriver*(-1 +
+ ShiftBCoeff))),kmul(ksub(B3L,Xt3L),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));
+
+ /* 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(Arhs[index],ArhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B1rhs[index],B1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B2rhs[index],B2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt12rhs[index],gt12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt13rhs[index],gt13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt22rhs[index],gt22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt23rhs[index],gt23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt33rhs[index],gt33rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(phirhs[index],phirhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(trKrhs[index],trKrhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt1rhs[index],Xt1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt2rhs[index],Xt2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt3rhs[index],Xt3rhsL,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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_hi(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_hi(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_hi(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_hi(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_hi(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_hi(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_hi(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_hi(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_hi(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_hi(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_hi(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt3rhs[index],Xt3rhsL,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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_lo(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_lo(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_lo(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_lo(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_lo(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_lo(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_lo(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_lo(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_lo(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_lo(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_lo(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt3rhs[index],Xt3rhsL,elt_count);
+ break;
+ }
+ vec_store_nta(alpharhs[index],alpharhsL);
+ vec_store_nta(Arhs[index],ArhsL);
+ vec_store_nta(B1rhs[index],B1rhsL);
+ vec_store_nta(B2rhs[index],B2rhsL);
+ vec_store_nta(B3rhs[index],B3rhsL);
+ vec_store_nta(beta1rhs[index],beta1rhsL);
+ vec_store_nta(beta2rhs[index],beta2rhsL);
+ vec_store_nta(beta3rhs[index],beta3rhsL);
+ vec_store_nta(gt11rhs[index],gt11rhsL);
+ vec_store_nta(gt12rhs[index],gt12rhsL);
+ vec_store_nta(gt13rhs[index],gt13rhsL);
+ vec_store_nta(gt22rhs[index],gt22rhsL);
+ vec_store_nta(gt23rhs[index],gt23rhsL);
+ vec_store_nta(gt33rhs[index],gt33rhsL);
+ vec_store_nta(phirhs[index],phirhsL);
+ vec_store_nta(trKrhs[index],trKrhsL);
+ vec_store_nta(Xt1rhs[index],Xt1rhsL);
+ vec_store_nta(Xt2rhs[index],Xt2rhsL);
+ vec_store_nta(Xt3rhs[index],Xt3rhsL);
}
- LC_ENDLOOP3 (ML_BSSN_O2_RHS1);
+ LC_ENDLOOP3VEC (ML_BSSN_O2_RHS1);
}
extern "C" void ML_BSSN_O2_RHS1(CCTK_ARGUMENTS)
@@ -606,5 +1486,43 @@ extern "C" void ML_BSSN_O2_RHS1(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O2_RHS1_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_O2_RHS1_calc_every != ML_BSSN_O2_RHS1_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"grid::coordinates","Grid::coordinates","ML_BSSN_O2::ML_curv","ML_BSSN_O2::ML_dtlapse","ML_BSSN_O2::ML_dtlapserhs","ML_BSSN_O2::ML_dtshift","ML_BSSN_O2::ML_dtshiftrhs","ML_BSSN_O2::ML_Gamma","ML_BSSN_O2::ML_Gammarhs","ML_BSSN_O2::ML_lapse","ML_BSSN_O2::ML_lapserhs","ML_BSSN_O2::ML_log_confac","ML_BSSN_O2::ML_log_confacrhs","ML_BSSN_O2::ML_metric","ML_BSSN_O2::ML_metricrhs","ML_BSSN_O2::ML_shift","ML_BSSN_O2::ML_shiftrhs","ML_BSSN_O2::ML_trace_curv","ML_BSSN_O2::ML_trace_curvrhs"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O2_RHS1", 19, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O2_RHS1", 1, 1, 1);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O2_RHS1", 2, 2, 2);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O2_RHS1", 3, 3, 3);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O2_RHS1", 4, 4, 4);
+ break;
+ }
+
GenericFD_LoopOverInterior(cctkGH, &ML_BSSN_O2_RHS1_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_O2_RHS1_Body");
+ }
}
diff --git a/ML_BSSN_O2/src/ML_BSSN_O2_RHS2.cc b/ML_BSSN_O2/src/ML_BSSN_O2_RHS2.cc
index d57d353..5e2b239 100644
--- a/ML_BSSN_O2/src/ML_BSSN_O2_RHS2.cc
+++ b/ML_BSSN_O2/src/ML_BSSN_O2_RHS2.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_O2_RHS2_SelectBCs(CCTK_ARGUMENTS)
{
@@ -33,7 +34,7 @@ extern "C" void ML_BSSN_O2_RHS2_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_BSSN_O2_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_O2_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;
@@ -41,21 +42,6 @@ static void ML_BSSN_O2_RHS2_Body(cGH const * restrict const cctkGH, int const di
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O2_RHS2_Body");
- }
-
- if (cctk_iteration % ML_BSSN_O2_RHS2_calc_every != ML_BSSN_O2_RHS2_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN_O2::ML_curv","ML_BSSN_O2::ML_curvrhs","ML_BSSN_O2::ML_Gamma","ML_BSSN_O2::ML_lapse","ML_BSSN_O2::ML_log_confac","ML_BSSN_O2::ML_metric","ML_BSSN_O2::ML_shift","ML_BSSN_O2::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O2_RHS2", 8, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O2_RHS2", 1, 1, 1);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -65,90 +51,199 @@ static void ML_BSSN_O2_RHS2_Body(cGH const * restrict const cctkGH, int const di
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o16dx = 0.0625*INV(dx);
- CCTK_REAL const p1o16dy = 0.0625*INV(dy);
- CCTK_REAL const p1o16dz = 0.0625*INV(dz);
- CCTK_REAL const p1o2dx = 0.5*INV(dx);
- CCTK_REAL const p1o2dy = 0.5*INV(dy);
- CCTK_REAL const p1o2dz = 0.5*INV(dz);
- CCTK_REAL const p1o4dx = 0.25*INV(dx);
- CCTK_REAL const p1o4dxdy = 0.25*INV(dx)*INV(dy);
- CCTK_REAL const p1o4dxdz = 0.25*INV(dx)*INV(dz);
- CCTK_REAL const p1o4dy = 0.25*INV(dy);
- CCTK_REAL const p1o4dydz = 0.25*INV(dy)*INV(dz);
- CCTK_REAL const p1o4dz = 0.25*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1odx2 = INV(SQR(dx));
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1ody2 = INV(SQR(dy));
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const p1odz2 = INV(SQR(dz));
- CCTK_REAL const pm1o2dx = -0.5*INV(dx);
- CCTK_REAL const pm1o2dy = -0.5*INV(dy);
- CCTK_REAL const pm1o2dz = -0.5*INV(dz);
- CCTK_REAL const pm1o4dx = -0.25*INV(dx);
- CCTK_REAL const pm1o4dy = -0.25*INV(dy);
- CCTK_REAL const pm1o4dz = -0.25*INV(dz);
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_O2_RHS2,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_O2_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 alphaL = alpha[index];
- CCTK_REAL At11L = At11[index];
- CCTK_REAL At12L = At12[index];
- CCTK_REAL At13L = At13[index];
- CCTK_REAL At22L = At22[index];
- CCTK_REAL At23L = At23[index];
- CCTK_REAL At33L = At33[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL gt11L = gt11[index];
- CCTK_REAL gt12L = gt12[index];
- CCTK_REAL gt13L = gt13[index];
- CCTK_REAL gt22L = gt22[index];
- CCTK_REAL gt23L = gt23[index];
- CCTK_REAL gt33L = gt33[index];
- CCTK_REAL phiL = phi[index];
- CCTK_REAL trKL = trK[index];
- CCTK_REAL Xt1L = Xt1[index];
- CCTK_REAL Xt2L = Xt2[index];
- CCTK_REAL Xt3L = Xt3[index];
-
- CCTK_REAL eTxxL, eTxyL, eTxzL, eTyyL, eTyzL, eTzzL;
+ 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 eTxxL, eTxyL, eTxzL, eTyyL, eTyzL, eTzzL;
if (*stress_energy_state)
{
- eTxxL = eTxx[index];
- eTxyL = eTxy[index];
- eTxzL = eTxz[index];
- eTyyL = eTyy[index];
- eTyzL = eTyz[index];
- eTzzL = eTzz[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
{
@@ -160,99 +255,507 @@ static void ML_BSSN_O2_RHS2_Body(cGH const * restrict const cctkGH, int const di
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 const PDstandardNth1alpha = PDstandardNth1(&alpha[index]);
- CCTK_REAL const PDstandardNth2alpha = PDstandardNth2(&alpha[index]);
- CCTK_REAL const PDstandardNth3alpha = PDstandardNth3(&alpha[index]);
- CCTK_REAL const PDstandardNth11alpha = PDstandardNth11(&alpha[index]);
- CCTK_REAL const PDstandardNth22alpha = PDstandardNth22(&alpha[index]);
- CCTK_REAL const PDstandardNth33alpha = PDstandardNth33(&alpha[index]);
- CCTK_REAL const PDstandardNth12alpha = PDstandardNth12(&alpha[index]);
- CCTK_REAL const PDstandardNth13alpha = PDstandardNth13(&alpha[index]);
- CCTK_REAL const PDstandardNth23alpha = PDstandardNth23(&alpha[index]);
- CCTK_REAL const PDstandardNth1beta1 = PDstandardNth1(&beta1[index]);
- CCTK_REAL const PDstandardNth2beta1 = PDstandardNth2(&beta1[index]);
- CCTK_REAL const PDstandardNth3beta1 = PDstandardNth3(&beta1[index]);
- CCTK_REAL const PDstandardNth1beta2 = PDstandardNth1(&beta2[index]);
- CCTK_REAL const PDstandardNth2beta2 = PDstandardNth2(&beta2[index]);
- CCTK_REAL const PDstandardNth3beta2 = PDstandardNth3(&beta2[index]);
- CCTK_REAL const PDstandardNth1beta3 = PDstandardNth1(&beta3[index]);
- CCTK_REAL const PDstandardNth2beta3 = PDstandardNth2(&beta3[index]);
- CCTK_REAL const PDstandardNth3beta3 = PDstandardNth3(&beta3[index]);
- CCTK_REAL const PDstandardNth1gt11 = PDstandardNth1(&gt11[index]);
- CCTK_REAL const PDstandardNth2gt11 = PDstandardNth2(&gt11[index]);
- CCTK_REAL const PDstandardNth3gt11 = PDstandardNth3(&gt11[index]);
- CCTK_REAL const PDstandardNth11gt11 = PDstandardNth11(&gt11[index]);
- CCTK_REAL const PDstandardNth22gt11 = PDstandardNth22(&gt11[index]);
- CCTK_REAL const PDstandardNth33gt11 = PDstandardNth33(&gt11[index]);
- CCTK_REAL const PDstandardNth12gt11 = PDstandardNth12(&gt11[index]);
- CCTK_REAL const PDstandardNth13gt11 = PDstandardNth13(&gt11[index]);
- CCTK_REAL const PDstandardNth23gt11 = PDstandardNth23(&gt11[index]);
- CCTK_REAL const PDstandardNth1gt12 = PDstandardNth1(&gt12[index]);
- CCTK_REAL const PDstandardNth2gt12 = PDstandardNth2(&gt12[index]);
- CCTK_REAL const PDstandardNth3gt12 = PDstandardNth3(&gt12[index]);
- CCTK_REAL const PDstandardNth11gt12 = PDstandardNth11(&gt12[index]);
- CCTK_REAL const PDstandardNth22gt12 = PDstandardNth22(&gt12[index]);
- CCTK_REAL const PDstandardNth33gt12 = PDstandardNth33(&gt12[index]);
- CCTK_REAL const PDstandardNth12gt12 = PDstandardNth12(&gt12[index]);
- CCTK_REAL const PDstandardNth13gt12 = PDstandardNth13(&gt12[index]);
- CCTK_REAL const PDstandardNth23gt12 = PDstandardNth23(&gt12[index]);
- CCTK_REAL const PDstandardNth1gt13 = PDstandardNth1(&gt13[index]);
- CCTK_REAL const PDstandardNth2gt13 = PDstandardNth2(&gt13[index]);
- CCTK_REAL const PDstandardNth3gt13 = PDstandardNth3(&gt13[index]);
- CCTK_REAL const PDstandardNth11gt13 = PDstandardNth11(&gt13[index]);
- CCTK_REAL const PDstandardNth22gt13 = PDstandardNth22(&gt13[index]);
- CCTK_REAL const PDstandardNth33gt13 = PDstandardNth33(&gt13[index]);
- CCTK_REAL const PDstandardNth12gt13 = PDstandardNth12(&gt13[index]);
- CCTK_REAL const PDstandardNth13gt13 = PDstandardNth13(&gt13[index]);
- CCTK_REAL const PDstandardNth23gt13 = PDstandardNth23(&gt13[index]);
- CCTK_REAL const PDstandardNth1gt22 = PDstandardNth1(&gt22[index]);
- CCTK_REAL const PDstandardNth2gt22 = PDstandardNth2(&gt22[index]);
- CCTK_REAL const PDstandardNth3gt22 = PDstandardNth3(&gt22[index]);
- CCTK_REAL const PDstandardNth11gt22 = PDstandardNth11(&gt22[index]);
- CCTK_REAL const PDstandardNth22gt22 = PDstandardNth22(&gt22[index]);
- CCTK_REAL const PDstandardNth33gt22 = PDstandardNth33(&gt22[index]);
- CCTK_REAL const PDstandardNth12gt22 = PDstandardNth12(&gt22[index]);
- CCTK_REAL const PDstandardNth13gt22 = PDstandardNth13(&gt22[index]);
- CCTK_REAL const PDstandardNth23gt22 = PDstandardNth23(&gt22[index]);
- CCTK_REAL const PDstandardNth1gt23 = PDstandardNth1(&gt23[index]);
- CCTK_REAL const PDstandardNth2gt23 = PDstandardNth2(&gt23[index]);
- CCTK_REAL const PDstandardNth3gt23 = PDstandardNth3(&gt23[index]);
- CCTK_REAL const PDstandardNth11gt23 = PDstandardNth11(&gt23[index]);
- CCTK_REAL const PDstandardNth22gt23 = PDstandardNth22(&gt23[index]);
- CCTK_REAL const PDstandardNth33gt23 = PDstandardNth33(&gt23[index]);
- CCTK_REAL const PDstandardNth12gt23 = PDstandardNth12(&gt23[index]);
- CCTK_REAL const PDstandardNth13gt23 = PDstandardNth13(&gt23[index]);
- CCTK_REAL const PDstandardNth23gt23 = PDstandardNth23(&gt23[index]);
- CCTK_REAL const PDstandardNth1gt33 = PDstandardNth1(&gt33[index]);
- CCTK_REAL const PDstandardNth2gt33 = PDstandardNth2(&gt33[index]);
- CCTK_REAL const PDstandardNth3gt33 = PDstandardNth3(&gt33[index]);
- CCTK_REAL const PDstandardNth11gt33 = PDstandardNth11(&gt33[index]);
- CCTK_REAL const PDstandardNth22gt33 = PDstandardNth22(&gt33[index]);
- CCTK_REAL const PDstandardNth33gt33 = PDstandardNth33(&gt33[index]);
- CCTK_REAL const PDstandardNth12gt33 = PDstandardNth12(&gt33[index]);
- CCTK_REAL const PDstandardNth13gt33 = PDstandardNth13(&gt33[index]);
- CCTK_REAL const PDstandardNth23gt33 = PDstandardNth23(&gt33[index]);
- CCTK_REAL const PDstandardNth1phi = PDstandardNth1(&phi[index]);
- CCTK_REAL const PDstandardNth2phi = PDstandardNth2(&phi[index]);
- CCTK_REAL const PDstandardNth3phi = PDstandardNth3(&phi[index]);
- CCTK_REAL const PDstandardNth11phi = PDstandardNth11(&phi[index]);
- CCTK_REAL const PDstandardNth22phi = PDstandardNth22(&phi[index]);
- CCTK_REAL const PDstandardNth33phi = PDstandardNth33(&phi[index]);
- CCTK_REAL const PDstandardNth12phi = PDstandardNth12(&phi[index]);
- CCTK_REAL const PDstandardNth13phi = PDstandardNth13(&phi[index]);
- CCTK_REAL const PDstandardNth23phi = PDstandardNth23(&phi[index]);
- CCTK_REAL const PDstandardNth1Xt1 = PDstandardNth1(&Xt1[index]);
- CCTK_REAL const PDstandardNth2Xt1 = PDstandardNth2(&Xt1[index]);
- CCTK_REAL const PDstandardNth3Xt1 = PDstandardNth3(&Xt1[index]);
- CCTK_REAL const PDstandardNth1Xt2 = PDstandardNth1(&Xt2[index]);
- CCTK_REAL const PDstandardNth2Xt2 = PDstandardNth2(&Xt2[index]);
- CCTK_REAL const PDstandardNth3Xt2 = PDstandardNth3(&Xt2[index]);
- CCTK_REAL const PDstandardNth1Xt3 = PDstandardNth1(&Xt3[index]);
- CCTK_REAL const PDstandardNth2Xt3 = PDstandardNth2(&Xt3[index]);
- CCTK_REAL const PDstandardNth3Xt3 = PDstandardNth3(&Xt3[index]);
+ 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);
@@ -261,465 +764,1092 @@ static void ML_BSSN_O2_RHS2_Body(cGH const * restrict const cctkGH, int const di
ptrdiff_t dir3 = Sign(beta3L);
- CCTK_REAL detgt = 1;
+ 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 gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L));
+ CCTK_REAL_VEC gtu33 = kmul(INV(detgt),kmsub(gt11L,gt22L,SQR(gt12L)));
- CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt);
+ CCTK_REAL_VEC Gtl111 = kmul(JacPDstandardNth1gt11,ToReal(0.5));
- CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC Gtl112 = kmul(JacPDstandardNth2gt11,ToReal(0.5));
- CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L));
+ CCTK_REAL_VEC Gtl113 = kmul(JacPDstandardNth3gt11,ToReal(0.5));
- CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC Gtl122 =
+ kmadd(JacPDstandardNth1gt22,ToReal(-0.5),JacPDstandardNth2gt12);
- CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L));
+ CCTK_REAL_VEC Gtl123 =
+ kmul(kadd(JacPDstandardNth2gt13,ksub(JacPDstandardNth3gt12,JacPDstandardNth1gt23)),ToReal(0.5));
- CCTK_REAL Gtl111 = 0.5*PDstandardNth1gt11;
+ CCTK_REAL_VEC Gtl133 =
+ kmadd(JacPDstandardNth1gt33,ToReal(-0.5),JacPDstandardNth3gt13);
- CCTK_REAL Gtl112 = 0.5*PDstandardNth2gt11;
+ CCTK_REAL_VEC Gtl211 =
+ kmadd(JacPDstandardNth2gt11,ToReal(-0.5),JacPDstandardNth1gt12);
- CCTK_REAL Gtl113 = 0.5*PDstandardNth3gt11;
+ CCTK_REAL_VEC Gtl212 = kmul(JacPDstandardNth1gt22,ToReal(0.5));
- CCTK_REAL Gtl122 = -0.5*PDstandardNth1gt22 + PDstandardNth2gt12;
+ CCTK_REAL_VEC Gtl213 =
+ kmul(kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth3gt12,JacPDstandardNth2gt13)),ToReal(0.5));
- CCTK_REAL Gtl123 = 0.5*(-PDstandardNth1gt23 + PDstandardNth2gt13 +
- PDstandardNth3gt12);
+ CCTK_REAL_VEC Gtl222 = kmul(JacPDstandardNth2gt22,ToReal(0.5));
- CCTK_REAL Gtl133 = -0.5*PDstandardNth1gt33 + PDstandardNth3gt13;
+ CCTK_REAL_VEC Gtl223 = kmul(JacPDstandardNth3gt22,ToReal(0.5));
- CCTK_REAL Gtl211 = PDstandardNth1gt12 - 0.5*PDstandardNth2gt11;
+ CCTK_REAL_VEC Gtl233 =
+ kmadd(JacPDstandardNth2gt33,ToReal(-0.5),JacPDstandardNth3gt23);
- CCTK_REAL Gtl212 = 0.5*PDstandardNth1gt22;
+ CCTK_REAL_VEC Gtl311 =
+ kmadd(JacPDstandardNth3gt11,ToReal(-0.5),JacPDstandardNth1gt13);
- CCTK_REAL Gtl213 = 0.5*(PDstandardNth1gt23 - PDstandardNth2gt13 +
- PDstandardNth3gt12);
+ CCTK_REAL_VEC Gtl312 =
+ kmul(kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth2gt13,JacPDstandardNth3gt12)),ToReal(0.5));
- CCTK_REAL Gtl222 = 0.5*PDstandardNth2gt22;
+ CCTK_REAL_VEC Gtl313 = kmul(JacPDstandardNth1gt33,ToReal(0.5));
- CCTK_REAL Gtl223 = 0.5*PDstandardNth3gt22;
+ CCTK_REAL_VEC Gtl322 =
+ kmadd(JacPDstandardNth3gt22,ToReal(-0.5),JacPDstandardNth2gt23);
- CCTK_REAL Gtl233 = -0.5*PDstandardNth2gt33 + PDstandardNth3gt23;
+ CCTK_REAL_VEC Gtl323 = kmul(JacPDstandardNth2gt33,ToReal(0.5));
- CCTK_REAL Gtl311 = PDstandardNth1gt13 - 0.5*PDstandardNth3gt11;
+ CCTK_REAL_VEC Gtl333 = kmul(JacPDstandardNth3gt33,ToReal(0.5));
- CCTK_REAL Gtl312 = 0.5*(PDstandardNth1gt23 + PDstandardNth2gt13 -
- PDstandardNth3gt12);
+ CCTK_REAL_VEC Gtlu111 =
+ kmadd(Gtl111,gtu11,kmadd(Gtl112,gtu12,kmul(Gtl113,gtu13)));
- CCTK_REAL Gtl313 = 0.5*PDstandardNth1gt33;
+ CCTK_REAL_VEC Gtlu112 =
+ kmadd(Gtl111,gtu12,kmadd(Gtl112,gtu22,kmul(Gtl113,gtu23)));
- CCTK_REAL Gtl322 = PDstandardNth2gt23 - 0.5*PDstandardNth3gt22;
+ CCTK_REAL_VEC Gtlu113 =
+ kmadd(Gtl111,gtu13,kmadd(Gtl112,gtu23,kmul(Gtl113,gtu33)));
- CCTK_REAL Gtl323 = 0.5*PDstandardNth2gt33;
+ CCTK_REAL_VEC Gtlu121 =
+ kmadd(Gtl112,gtu11,kmadd(Gtl122,gtu12,kmul(Gtl123,gtu13)));
- CCTK_REAL Gtl333 = 0.5*PDstandardNth3gt33;
+ CCTK_REAL_VEC Gtlu122 =
+ kmadd(Gtl112,gtu12,kmadd(Gtl122,gtu22,kmul(Gtl123,gtu23)));
- CCTK_REAL Gtlu111 = Gtl111*gtu11 + Gtl112*gtu12 + Gtl113*gtu13;
+ CCTK_REAL_VEC Gtlu123 =
+ kmadd(Gtl112,gtu13,kmadd(Gtl122,gtu23,kmul(Gtl123,gtu33)));
- CCTK_REAL Gtlu112 = Gtl111*gtu12 + Gtl112*gtu22 + Gtl113*gtu23;
+ CCTK_REAL_VEC Gtlu131 =
+ kmadd(Gtl113,gtu11,kmadd(Gtl123,gtu12,kmul(Gtl133,gtu13)));
- CCTK_REAL Gtlu113 = Gtl111*gtu13 + Gtl112*gtu23 + Gtl113*gtu33;
+ CCTK_REAL_VEC Gtlu132 =
+ kmadd(Gtl113,gtu12,kmadd(Gtl123,gtu22,kmul(Gtl133,gtu23)));
- CCTK_REAL Gtlu121 = Gtl112*gtu11 + Gtl122*gtu12 + Gtl123*gtu13;
+ CCTK_REAL_VEC Gtlu133 =
+ kmadd(Gtl113,gtu13,kmadd(Gtl123,gtu23,kmul(Gtl133,gtu33)));
- CCTK_REAL Gtlu122 = Gtl112*gtu12 + Gtl122*gtu22 + Gtl123*gtu23;
+ CCTK_REAL_VEC Gtlu211 =
+ kmadd(Gtl211,gtu11,kmadd(Gtl212,gtu12,kmul(Gtl213,gtu13)));
- CCTK_REAL Gtlu123 = Gtl112*gtu13 + Gtl122*gtu23 + Gtl123*gtu33;
+ CCTK_REAL_VEC Gtlu212 =
+ kmadd(Gtl211,gtu12,kmadd(Gtl212,gtu22,kmul(Gtl213,gtu23)));
- CCTK_REAL Gtlu131 = Gtl113*gtu11 + Gtl123*gtu12 + Gtl133*gtu13;
+ CCTK_REAL_VEC Gtlu213 =
+ kmadd(Gtl211,gtu13,kmadd(Gtl212,gtu23,kmul(Gtl213,gtu33)));
- CCTK_REAL Gtlu132 = Gtl113*gtu12 + Gtl123*gtu22 + Gtl133*gtu23;
+ CCTK_REAL_VEC Gtlu221 =
+ kmadd(Gtl212,gtu11,kmadd(Gtl222,gtu12,kmul(Gtl223,gtu13)));
- CCTK_REAL Gtlu133 = Gtl113*gtu13 + Gtl123*gtu23 + Gtl133*gtu33;
+ CCTK_REAL_VEC Gtlu222 =
+ kmadd(Gtl212,gtu12,kmadd(Gtl222,gtu22,kmul(Gtl223,gtu23)));
- CCTK_REAL Gtlu211 = Gtl211*gtu11 + Gtl212*gtu12 + Gtl213*gtu13;
+ CCTK_REAL_VEC Gtlu223 =
+ kmadd(Gtl212,gtu13,kmadd(Gtl222,gtu23,kmul(Gtl223,gtu33)));
- CCTK_REAL Gtlu212 = Gtl211*gtu12 + Gtl212*gtu22 + Gtl213*gtu23;
+ CCTK_REAL_VEC Gtlu231 =
+ kmadd(Gtl213,gtu11,kmadd(Gtl223,gtu12,kmul(Gtl233,gtu13)));
- CCTK_REAL Gtlu213 = Gtl211*gtu13 + Gtl212*gtu23 + Gtl213*gtu33;
+ CCTK_REAL_VEC Gtlu232 =
+ kmadd(Gtl213,gtu12,kmadd(Gtl223,gtu22,kmul(Gtl233,gtu23)));
- CCTK_REAL Gtlu221 = Gtl212*gtu11 + Gtl222*gtu12 + Gtl223*gtu13;
+ CCTK_REAL_VEC Gtlu233 =
+ kmadd(Gtl213,gtu13,kmadd(Gtl223,gtu23,kmul(Gtl233,gtu33)));
- CCTK_REAL Gtlu222 = Gtl212*gtu12 + Gtl222*gtu22 + Gtl223*gtu23;
+ CCTK_REAL_VEC Gtlu311 =
+ kmadd(Gtl311,gtu11,kmadd(Gtl312,gtu12,kmul(Gtl313,gtu13)));
- CCTK_REAL Gtlu223 = Gtl212*gtu13 + Gtl222*gtu23 + Gtl223*gtu33;
+ CCTK_REAL_VEC Gtlu312 =
+ kmadd(Gtl311,gtu12,kmadd(Gtl312,gtu22,kmul(Gtl313,gtu23)));
- CCTK_REAL Gtlu231 = Gtl213*gtu11 + Gtl223*gtu12 + Gtl233*gtu13;
+ CCTK_REAL_VEC Gtlu313 =
+ kmadd(Gtl311,gtu13,kmadd(Gtl312,gtu23,kmul(Gtl313,gtu33)));
- CCTK_REAL Gtlu232 = Gtl213*gtu12 + Gtl223*gtu22 + Gtl233*gtu23;
+ CCTK_REAL_VEC Gtlu321 =
+ kmadd(Gtl312,gtu11,kmadd(Gtl322,gtu12,kmul(Gtl323,gtu13)));
- CCTK_REAL Gtlu233 = Gtl213*gtu13 + Gtl223*gtu23 + Gtl233*gtu33;
+ CCTK_REAL_VEC Gtlu322 =
+ kmadd(Gtl312,gtu12,kmadd(Gtl322,gtu22,kmul(Gtl323,gtu23)));
- CCTK_REAL Gtlu311 = Gtl311*gtu11 + Gtl312*gtu12 + Gtl313*gtu13;
+ CCTK_REAL_VEC Gtlu323 =
+ kmadd(Gtl312,gtu13,kmadd(Gtl322,gtu23,kmul(Gtl323,gtu33)));
- CCTK_REAL Gtlu312 = Gtl311*gtu12 + Gtl312*gtu22 + Gtl313*gtu23;
+ CCTK_REAL_VEC Gtlu331 =
+ kmadd(Gtl313,gtu11,kmadd(Gtl323,gtu12,kmul(Gtl333,gtu13)));
- CCTK_REAL Gtlu313 = Gtl311*gtu13 + Gtl312*gtu23 + Gtl313*gtu33;
+ CCTK_REAL_VEC Gtlu332 =
+ kmadd(Gtl313,gtu12,kmadd(Gtl323,gtu22,kmul(Gtl333,gtu23)));
- CCTK_REAL Gtlu321 = Gtl312*gtu11 + Gtl322*gtu12 + Gtl323*gtu13;
+ CCTK_REAL_VEC Gtlu333 =
+ kmadd(Gtl313,gtu13,kmadd(Gtl323,gtu23,kmul(Gtl333,gtu33)));
- CCTK_REAL Gtlu322 = Gtl312*gtu12 + Gtl322*gtu22 + Gtl323*gtu23;
+ CCTK_REAL_VEC Gt111 =
+ kmadd(Gtl111,gtu11,kmadd(Gtl211,gtu12,kmul(Gtl311,gtu13)));
- CCTK_REAL Gtlu323 = Gtl312*gtu13 + Gtl322*gtu23 + Gtl323*gtu33;
+ CCTK_REAL_VEC Gt211 =
+ kmadd(Gtl111,gtu12,kmadd(Gtl211,gtu22,kmul(Gtl311,gtu23)));
- CCTK_REAL Gtlu331 = Gtl313*gtu11 + Gtl323*gtu12 + Gtl333*gtu13;
+ CCTK_REAL_VEC Gt311 =
+ kmadd(Gtl111,gtu13,kmadd(Gtl211,gtu23,kmul(Gtl311,gtu33)));
- CCTK_REAL Gtlu332 = Gtl313*gtu12 + Gtl323*gtu22 + Gtl333*gtu23;
+ CCTK_REAL_VEC Gt112 =
+ kmadd(Gtl112,gtu11,kmadd(Gtl212,gtu12,kmul(Gtl312,gtu13)));
- CCTK_REAL Gtlu333 = Gtl313*gtu13 + Gtl323*gtu23 + Gtl333*gtu33;
+ CCTK_REAL_VEC Gt212 =
+ kmadd(Gtl112,gtu12,kmadd(Gtl212,gtu22,kmul(Gtl312,gtu23)));
- CCTK_REAL Gt111 = Gtl111*gtu11 + Gtl211*gtu12 + Gtl311*gtu13;
+ CCTK_REAL_VEC Gt312 =
+ kmadd(Gtl112,gtu13,kmadd(Gtl212,gtu23,kmul(Gtl312,gtu33)));
- CCTK_REAL Gt211 = Gtl111*gtu12 + Gtl211*gtu22 + Gtl311*gtu23;
+ CCTK_REAL_VEC Gt113 =
+ kmadd(Gtl113,gtu11,kmadd(Gtl213,gtu12,kmul(Gtl313,gtu13)));
- CCTK_REAL Gt311 = Gtl111*gtu13 + Gtl211*gtu23 + Gtl311*gtu33;
+ CCTK_REAL_VEC Gt213 =
+ kmadd(Gtl113,gtu12,kmadd(Gtl213,gtu22,kmul(Gtl313,gtu23)));
- CCTK_REAL Gt112 = Gtl112*gtu11 + Gtl212*gtu12 + Gtl312*gtu13;
+ CCTK_REAL_VEC Gt313 =
+ kmadd(Gtl113,gtu13,kmadd(Gtl213,gtu23,kmul(Gtl313,gtu33)));
- CCTK_REAL Gt212 = Gtl112*gtu12 + Gtl212*gtu22 + Gtl312*gtu23;
+ CCTK_REAL_VEC Gt122 =
+ kmadd(Gtl122,gtu11,kmadd(Gtl222,gtu12,kmul(Gtl322,gtu13)));
- CCTK_REAL Gt312 = Gtl112*gtu13 + Gtl212*gtu23 + Gtl312*gtu33;
+ CCTK_REAL_VEC Gt222 =
+ kmadd(Gtl122,gtu12,kmadd(Gtl222,gtu22,kmul(Gtl322,gtu23)));
- CCTK_REAL Gt113 = Gtl113*gtu11 + Gtl213*gtu12 + Gtl313*gtu13;
+ CCTK_REAL_VEC Gt322 =
+ kmadd(Gtl122,gtu13,kmadd(Gtl222,gtu23,kmul(Gtl322,gtu33)));
- CCTK_REAL Gt213 = Gtl113*gtu12 + Gtl213*gtu22 + Gtl313*gtu23;
+ CCTK_REAL_VEC Gt123 =
+ kmadd(Gtl123,gtu11,kmadd(Gtl223,gtu12,kmul(Gtl323,gtu13)));
- CCTK_REAL Gt313 = Gtl113*gtu13 + Gtl213*gtu23 + Gtl313*gtu33;
+ CCTK_REAL_VEC Gt223 =
+ kmadd(Gtl123,gtu12,kmadd(Gtl223,gtu22,kmul(Gtl323,gtu23)));
- CCTK_REAL Gt122 = Gtl122*gtu11 + Gtl222*gtu12 + Gtl322*gtu13;
+ CCTK_REAL_VEC Gt323 =
+ kmadd(Gtl123,gtu13,kmadd(Gtl223,gtu23,kmul(Gtl323,gtu33)));
- CCTK_REAL Gt222 = Gtl122*gtu12 + Gtl222*gtu22 + Gtl322*gtu23;
+ CCTK_REAL_VEC Gt133 =
+ kmadd(Gtl133,gtu11,kmadd(Gtl233,gtu12,kmul(Gtl333,gtu13)));
- CCTK_REAL Gt322 = Gtl122*gtu13 + Gtl222*gtu23 + Gtl322*gtu33;
+ CCTK_REAL_VEC Gt233 =
+ kmadd(Gtl133,gtu12,kmadd(Gtl233,gtu22,kmul(Gtl333,gtu23)));
- CCTK_REAL Gt123 = Gtl123*gtu11 + Gtl223*gtu12 + Gtl323*gtu13;
+ CCTK_REAL_VEC Gt333 =
+ kmadd(Gtl133,gtu13,kmadd(Gtl233,gtu23,kmul(Gtl333,gtu33)));
- CCTK_REAL Gt223 = Gtl123*gtu12 + Gtl223*gtu22 + Gtl323*gtu23;
+ 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 Gt323 = Gtl123*gtu13 + Gtl223*gtu23 + Gtl323*gtu33;
+ 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 Gt133 = Gtl133*gtu11 + Gtl233*gtu12 + Gtl333*gtu13;
+ 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 Gt233 = Gtl133*gtu12 + Gtl233*gtu22 + Gtl333*gtu23;
+ 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 Gt333 = Gtl133*gtu13 + Gtl233*gtu23 + Gtl333*gtu33;
+ 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 Xtn1 = Gt111*gtu11 + Gt122*gtu22 + 2*(Gt112*gtu12 +
- Gt113*gtu13 + Gt123*gtu23) + Gt133*gtu33;
+ 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 Xtn2 = Gt211*gtu11 + Gt222*gtu22 + 2*(Gt212*gtu12 +
- Gt213*gtu13 + Gt223*gtu23) + Gt233*gtu33;
+ 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 Xtn3 = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu12 +
- Gt313*gtu13 + Gt323*gtu23) + Gt333*gtu33;
+ 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 Rt11 = 0.5*(6*(Gt111*Gtlu111 + Gt112*Gtlu112 +
- Gt113*Gtlu113) + 4*(Gt211*Gtlu121 + Gt212*Gtlu122 + Gt213*Gtlu123 +
- Gt311*Gtlu131 + Gt312*Gtlu132 + Gt313*Gtlu133) -
- gtu11*PDstandardNth11gt11 - 2*gtu12*PDstandardNth12gt11 -
- 2*gtu13*PDstandardNth13gt11 + 2*(Gt211*Gtlu211 + Gt212*Gtlu212 +
- Gt213*Gtlu213 + Gt311*Gtlu311 + Gt312*Gtlu312 + Gt313*Gtlu313 +
- gt11L*PDstandardNth1Xt1) + 2*gt12L*PDstandardNth1Xt2 +
- 2*gt13L*PDstandardNth1Xt3 - gtu22*PDstandardNth22gt11 -
- 2*gtu23*PDstandardNth23gt11 - gtu33*PDstandardNth33gt11 + 2*Gtl111*Xtn1
- + 2*Gtl112*Xtn2 + 2*Gtl113*Xtn3);
+ 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 Rt12 = 0.5*(4*(Gt211*Gtlu221 + Gt212*Gtlu222 +
- Gt213*Gtlu223) + 2*(Gt112*Gtlu111 + Gt122*Gtlu112 + Gt123*Gtlu113 +
- Gt111*Gtlu121 + Gt212*Gtlu121 + Gt112*Gtlu122 + Gt222*Gtlu122 +
- Gt113*Gtlu123 + Gt223*Gtlu123 + Gt312*Gtlu131 + Gt322*Gtlu132 +
- Gt323*Gtlu133 + Gt111*Gtlu211 + Gt112*Gtlu212 + Gt113*Gtlu213 +
- Gt311*Gtlu231 + Gt312*Gtlu232 + Gt313*Gtlu233 + Gt311*Gtlu321 +
- Gt312*Gtlu322 + Gt313*Gtlu323) - gtu11*PDstandardNth11gt12 -
- 2*gtu12*PDstandardNth12gt12 - 2*gtu13*PDstandardNth13gt12 +
- gt12L*PDstandardNth1Xt1 + gt22L*PDstandardNth1Xt2 +
- gt23L*PDstandardNth1Xt3 - gtu22*PDstandardNth22gt12 -
- 2*gtu23*PDstandardNth23gt12 + gt11L*PDstandardNth2Xt1 +
- gt12L*PDstandardNth2Xt2 + gt13L*PDstandardNth2Xt3 -
- gtu33*PDstandardNth33gt12 + Gtl112*Xtn1 + Gtl211*Xtn1 + Gtl122*Xtn2 +
- Gtl212*Xtn2 + Gtl123*Xtn3 + Gtl213*Xtn3);
+ CCTK_REAL_VEC fac1 =
+ IfThen(conformalMethod,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
- CCTK_REAL Rt13 = 0.5*(2*(Gt113*Gtlu111 + Gt123*Gtlu112 + Gt133*Gtlu113
- + Gt213*Gtlu121 + Gt223*Gtlu122 + Gt233*Gtlu123 + Gt111*Gtlu131 +
- Gt313*Gtlu131 + Gt112*Gtlu132 + Gt323*Gtlu132 + Gt113*Gtlu133 +
- Gt333*Gtlu133 + Gt211*Gtlu231 + Gt212*Gtlu232 + Gt213*Gtlu233 +
- Gt111*Gtlu311 + Gt112*Gtlu312 + Gt113*Gtlu313 + Gt211*Gtlu321 +
- Gt212*Gtlu322 + Gt213*Gtlu323) + 4*(Gt311*Gtlu331 + Gt312*Gtlu332 +
- Gt313*Gtlu333) - gtu11*PDstandardNth11gt13 -
- 2*gtu12*PDstandardNth12gt13 - 2*gtu13*PDstandardNth13gt13 +
- gt13L*PDstandardNth1Xt1 + gt23L*PDstandardNth1Xt2 +
- gt33L*PDstandardNth1Xt3 - gtu22*PDstandardNth22gt13 -
- 2*gtu23*PDstandardNth23gt13 - gtu33*PDstandardNth33gt13 +
- gt11L*PDstandardNth3Xt1 + gt12L*PDstandardNth3Xt2 +
- gt13L*PDstandardNth3Xt3 + Gtl113*Xtn1 + Gtl311*Xtn1 + Gtl123*Xtn2 +
- Gtl312*Xtn2 + Gtl133*Xtn3 + Gtl313*Xtn3);
+ CCTK_REAL_VEC cdphi1 = kmul(fac1,JacPDstandardNth1phi);
- CCTK_REAL Rt22 = 0.5*(6*(Gt212*Gtlu221 + Gt222*Gtlu222 +
- Gt223*Gtlu223) + 4*(Gt112*Gtlu211 + Gt122*Gtlu212 + Gt123*Gtlu213 +
- Gt312*Gtlu231 + Gt322*Gtlu232 + Gt323*Gtlu233) -
- gtu11*PDstandardNth11gt22 - 2*gtu12*PDstandardNth12gt22 -
- 2*gtu13*PDstandardNth13gt22 - gtu22*PDstandardNth22gt22 -
- 2*gtu23*PDstandardNth23gt22 + 2*(Gt112*Gtlu121 + Gt122*Gtlu122 +
- Gt123*Gtlu123 + Gt312*Gtlu321 + Gt322*Gtlu322 + Gt323*Gtlu323 +
- gt12L*PDstandardNth2Xt1) + 2*gt22L*PDstandardNth2Xt2 +
- 2*gt23L*PDstandardNth2Xt3 - gtu33*PDstandardNth33gt22 + 2*Gtl212*Xtn1 +
- 2*Gtl222*Xtn2 + 2*Gtl223*Xtn3);
-
- CCTK_REAL Rt23 = 0.5*(2*(Gt112*Gtlu131 + Gt122*Gtlu132 + Gt123*Gtlu133
- + Gt113*Gtlu211 + Gt123*Gtlu212 + Gt133*Gtlu213 + Gt213*Gtlu221 +
- Gt223*Gtlu222 + Gt233*Gtlu223 + Gt212*Gtlu231 + Gt313*Gtlu231 +
- Gt222*Gtlu232 + Gt323*Gtlu232 + Gt223*Gtlu233 + Gt333*Gtlu233 +
- Gt112*Gtlu311 + Gt122*Gtlu312 + Gt123*Gtlu313 + Gt212*Gtlu321 +
- Gt222*Gtlu322 + Gt223*Gtlu323) + 4*(Gt312*Gtlu331 + Gt322*Gtlu332 +
- Gt323*Gtlu333) - gtu11*PDstandardNth11gt23 -
- 2*gtu12*PDstandardNth12gt23 - 2*gtu13*PDstandardNth13gt23 -
- gtu22*PDstandardNth22gt23 - 2*gtu23*PDstandardNth23gt23 +
- gt13L*PDstandardNth2Xt1 + gt23L*PDstandardNth2Xt2 +
- gt33L*PDstandardNth2Xt3 - gtu33*PDstandardNth33gt23 +
- gt12L*PDstandardNth3Xt1 + gt22L*PDstandardNth3Xt2 +
- gt23L*PDstandardNth3Xt3 + Gtl213*Xtn1 + Gtl312*Xtn1 + Gtl223*Xtn2 +
- Gtl322*Xtn2 + Gtl233*Xtn3 + Gtl323*Xtn3);
-
- CCTK_REAL Rt33 = 0.5*(4*(Gt113*Gtlu311 + Gt123*Gtlu312 + Gt133*Gtlu313
- + Gt213*Gtlu321 + Gt223*Gtlu322 + Gt233*Gtlu323) + 6*(Gt313*Gtlu331 +
- Gt323*Gtlu332 + Gt333*Gtlu333) - gtu11*PDstandardNth11gt33 -
- 2*gtu12*PDstandardNth12gt33 - 2*gtu13*PDstandardNth13gt33 -
- gtu22*PDstandardNth22gt33 - 2*gtu23*PDstandardNth23gt33 -
- gtu33*PDstandardNth33gt33 + 2*(Gt113*Gtlu131 + Gt123*Gtlu132 +
- Gt133*Gtlu133 + Gt213*Gtlu231 + Gt223*Gtlu232 + Gt233*Gtlu233 +
- gt13L*PDstandardNth3Xt1) + 2*gt23L*PDstandardNth3Xt2 +
- 2*gt33L*PDstandardNth3Xt3 + 2*Gtl313*Xtn1 + 2*Gtl323*Xtn2 +
- 2*Gtl333*Xtn3);
-
- CCTK_REAL fac1 = IfThen(conformalMethod,-0.5*INV(phiL),1);
-
- CCTK_REAL cdphi1 = fac1*PDstandardNth1phi;
-
- CCTK_REAL cdphi2 = fac1*PDstandardNth2phi;
-
- CCTK_REAL cdphi3 = fac1*PDstandardNth3phi;
-
- CCTK_REAL fac2 = IfThen(conformalMethod,0.5*INV(SQR(phiL)),0);
-
- CCTK_REAL cdphi211 = -(fac1*(-PDstandardNth11phi +
- Gt111*PDstandardNth1phi + Gt211*PDstandardNth2phi +
- Gt311*PDstandardNth3phi)) + fac2*SQR(PDstandardNth1phi);
-
- CCTK_REAL cdphi212 = fac2*PDstandardNth1phi*PDstandardNth2phi -
- fac1*(-PDstandardNth12phi + Gt112*PDstandardNth1phi +
- Gt212*PDstandardNth2phi + Gt312*PDstandardNth3phi);
-
- CCTK_REAL cdphi213 = fac2*PDstandardNth1phi*PDstandardNth3phi -
- fac1*(-PDstandardNth13phi + Gt113*PDstandardNth1phi +
- Gt213*PDstandardNth2phi + Gt313*PDstandardNth3phi);
+ CCTK_REAL_VEC cdphi2 = kmul(fac1,JacPDstandardNth2phi);
- CCTK_REAL cdphi222 = -(fac1*(Gt122*PDstandardNth1phi -
- PDstandardNth22phi + Gt222*PDstandardNth2phi +
- Gt322*PDstandardNth3phi)) + fac2*SQR(PDstandardNth2phi);
+ CCTK_REAL_VEC cdphi3 = kmul(fac1,JacPDstandardNth3phi);
- CCTK_REAL cdphi223 = fac2*PDstandardNth2phi*PDstandardNth3phi -
- fac1*(Gt123*PDstandardNth1phi - PDstandardNth23phi +
- Gt223*PDstandardNth2phi + Gt323*PDstandardNth3phi);
+ CCTK_REAL_VEC fac2 =
+ IfThen(conformalMethod,kmul(INV(SQR(phiL)),ToReal(0.5)),ToReal(0));
- CCTK_REAL cdphi233 = -(fac1*(Gt133*PDstandardNth1phi +
- Gt233*PDstandardNth2phi - PDstandardNth33phi +
- Gt333*PDstandardNth3phi)) + fac2*SQR(PDstandardNth3phi);
+ CCTK_REAL_VEC cdphi211 =
+ kmadd(fac2,SQR(JacPDstandardNth1phi),kmul(fac1,ksub(JacPDstandardNth11phi,kmadd(Gt111,JacPDstandardNth1phi,kmadd(Gt311,JacPDstandardNth3phi,kmul(Gt211,JacPDstandardNth2phi))))));
- CCTK_REAL Rphi11 = -2*(cdphi211 + 2*(-1 + gt11L*gtu11)*SQR(cdphi1) +
- gt11L*(cdphi211*gtu11 + 4*(cdphi1*(cdphi2*gtu12 + cdphi3*gtu13) +
- cdphi2*cdphi3*gtu23) + cdphi233*gtu33 + gtu22*(cdphi222 +
- 2*SQR(cdphi2)) + 2*(cdphi212*gtu12 + cdphi213*gtu13 + cdphi223*gtu23 +
- gtu33*SQR(cdphi3))));
+ CCTK_REAL_VEC cdphi212 =
+ kmadd(fac2,kmul(JacPDstandardNth1phi,JacPDstandardNth2phi),kmul(fac1,ksub(JacPDstandardNth12phi,kmadd(Gt112,JacPDstandardNth1phi,kmadd(Gt312,JacPDstandardNth3phi,kmul(Gt212,JacPDstandardNth2phi))))));
- CCTK_REAL Rphi12 = -2*(cdphi212 + cdphi1*(cdphi2*(-2 + 4*gt12L*gtu12)
- + 4*cdphi3*gt12L*gtu13) + gt12L*(cdphi211*gtu11 + 4*cdphi2*cdphi3*gtu23
- + 2*(cdphi212*gtu12 + cdphi213*gtu13 + cdphi223*gtu23 +
- gtu11*SQR(cdphi1)) + gtu22*(cdphi222 + 2*SQR(cdphi2)) + gtu33*(cdphi233
- + 2*SQR(cdphi3))));
+ CCTK_REAL_VEC cdphi213 =
+ kmadd(fac2,kmul(JacPDstandardNth1phi,JacPDstandardNth3phi),kmul(fac1,ksub(JacPDstandardNth13phi,kmadd(Gt113,JacPDstandardNth1phi,kmadd(Gt313,JacPDstandardNth3phi,kmul(Gt213,JacPDstandardNth2phi))))));
- CCTK_REAL Rphi13 = -2*(cdphi213 + cdphi1*(4*cdphi2*gt13L*gtu12 +
- cdphi3*(-2 + 4*gt13L*gtu13)) + gt13L*(cdphi211*gtu11 +
- 4*cdphi2*cdphi3*gtu23 + 2*(cdphi212*gtu12 + cdphi213*gtu13 +
- cdphi223*gtu23 + gtu11*SQR(cdphi1)) + gtu22*(cdphi222 + 2*SQR(cdphi2))
- + gtu33*(cdphi233 + 2*SQR(cdphi3))));
+ CCTK_REAL_VEC cdphi222 =
+ kmsub(fac2,SQR(JacPDstandardNth2phi),kmul(fac1,kmadd(Gt122,JacPDstandardNth1phi,kmadd(Gt222,JacPDstandardNth2phi,kmsub(Gt322,JacPDstandardNth3phi,JacPDstandardNth22phi)))));
- CCTK_REAL Rphi22 = -2*(cdphi222 + 2*(-1 + gt22L*gtu22)*SQR(cdphi2) +
- gt22L*(cdphi222*gtu22 + 4*(cdphi1*cdphi3*gtu13 + cdphi2*(cdphi1*gtu12 +
- cdphi3*gtu23)) + cdphi233*gtu33 + gtu11*(cdphi211 + 2*SQR(cdphi1)) +
- 2*(cdphi212*gtu12 + cdphi213*gtu13 + cdphi223*gtu23 +
- gtu33*SQR(cdphi3))));
+ CCTK_REAL_VEC cdphi223 =
+ kmsub(fac2,kmul(JacPDstandardNth2phi,JacPDstandardNth3phi),kmul(fac1,kmadd(Gt123,JacPDstandardNth1phi,kmadd(Gt223,JacPDstandardNth2phi,kmsub(Gt323,JacPDstandardNth3phi,JacPDstandardNth23phi)))));
- CCTK_REAL Rphi23 = -2*(cdphi223 + cdphi2*(4*cdphi1*gt23L*gtu12 +
- cdphi3*(-2 + 4*gt23L*gtu23)) + gt23L*(4*cdphi1*cdphi3*gtu13 +
- cdphi222*gtu22 + gtu11*(cdphi211 + 2*SQR(cdphi1)) + 2*(cdphi212*gtu12 +
- cdphi213*gtu13 + cdphi223*gtu23 + gtu22*SQR(cdphi2)) + gtu33*(cdphi233
- + 2*SQR(cdphi3))));
+ CCTK_REAL_VEC cdphi233 =
+ kmsub(fac2,SQR(JacPDstandardNth3phi),kmul(fac1,kmadd(Gt133,JacPDstandardNth1phi,kmadd(Gt233,JacPDstandardNth2phi,kmsub(Gt333,JacPDstandardNth3phi,JacPDstandardNth33phi)))));
- CCTK_REAL Rphi33 = -2*(cdphi233 + gt33L*((4*cdphi1*cdphi2 +
- 2*cdphi212)*gtu12 + 4*cdphi3*(cdphi1*gtu13 + cdphi2*gtu23) +
- 2*(cdphi213*gtu13 + cdphi223*gtu23) + cdphi233*gtu33 + gtu11*(cdphi211
- + 2*SQR(cdphi1)) + gtu22*(cdphi222 + 2*SQR(cdphi2))) + 2*(-1 +
- gt33L*gtu33)*SQR(cdphi3));
+ 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 Atm11 = At11L*gtu11 + At12L*gtu12 + At13L*gtu13;
+ 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(cdphi3,kmul(gt12L,kmul(gtu13,ToReal(4))),kmul(cdphi2,kmadd(gt12L,kmul(gtu12,ToReal(4)),ToReal(-2))))))));
- CCTK_REAL Atm21 = At11L*gtu12 + At12L*gtu22 + At13L*gtu23;
+ 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(cdphi2,kmul(gt13L,kmul(gtu12,ToReal(4))),kmul(cdphi3,kmadd(gt13L,kmul(gtu13,ToReal(4)),ToReal(-2))))))));
- CCTK_REAL Atm31 = At11L*gtu13 + At12L*gtu23 + At13L*gtu33;
+ 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 Atm12 = At12L*gtu11 + At22L*gtu12 + At23L*gtu13;
+ 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(cdphi1,kmul(gt23L,kmul(gtu12,ToReal(4))),kmul(cdphi3,kmadd(gt23L,kmul(gtu23,ToReal(4)),ToReal(-2))))))));
- CCTK_REAL Atm22 = At12L*gtu12 + At22L*gtu22 + At23L*gtu23;
+ 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 Atm32 = At12L*gtu13 + At22L*gtu23 + At23L*gtu33;
+ CCTK_REAL_VEC Atm11 =
+ kmadd(At11L,gtu11,kmadd(At12L,gtu12,kmul(At13L,gtu13)));
- CCTK_REAL Atm13 = At13L*gtu11 + At23L*gtu12 + At33L*gtu13;
+ CCTK_REAL_VEC Atm21 =
+ kmadd(At11L,gtu12,kmadd(At12L,gtu22,kmul(At13L,gtu23)));
- CCTK_REAL Atm23 = At13L*gtu12 + At23L*gtu22 + At33L*gtu23;
+ CCTK_REAL_VEC Atm31 =
+ kmadd(At11L,gtu13,kmadd(At12L,gtu23,kmul(At13L,gtu33)));
- CCTK_REAL Atm33 = At13L*gtu13 + At23L*gtu23 + At33L*gtu33;
+ CCTK_REAL_VEC Atm12 =
+ kmadd(At12L,gtu11,kmadd(At22L,gtu12,kmul(At23L,gtu13)));
- CCTK_REAL e4phi = IfThen(conformalMethod,INV(SQR(phiL)),exp(4*phiL));
+ CCTK_REAL_VEC Atm22 =
+ kmadd(At12L,gtu12,kmadd(At22L,gtu22,kmul(At23L,gtu23)));
- CCTK_REAL em4phi = INV(e4phi);
+ CCTK_REAL_VEC Atm32 =
+ kmadd(At12L,gtu13,kmadd(At22L,gtu23,kmul(At23L,gtu33)));
- CCTK_REAL g11 = e4phi*gt11L;
+ CCTK_REAL_VEC Atm13 =
+ kmadd(At13L,gtu11,kmadd(At23L,gtu12,kmul(At33L,gtu13)));
- CCTK_REAL g12 = e4phi*gt12L;
+ CCTK_REAL_VEC Atm23 =
+ kmadd(At13L,gtu12,kmadd(At23L,gtu22,kmul(At33L,gtu23)));
- CCTK_REAL g13 = e4phi*gt13L;
+ CCTK_REAL_VEC Atm33 =
+ kmadd(At13L,gtu13,kmadd(At23L,gtu23,kmul(At33L,gtu33)));
- CCTK_REAL g22 = e4phi*gt22L;
+ CCTK_REAL_VEC e4phi =
+ IfThen(conformalMethod,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
- CCTK_REAL g23 = e4phi*gt23L;
+ CCTK_REAL_VEC em4phi = INV(e4phi);
- CCTK_REAL g33 = e4phi*gt33L;
+ CCTK_REAL_VEC g11 = kmul(e4phi,gt11L);
- CCTK_REAL gu11 = em4phi*gtu11;
+ CCTK_REAL_VEC g12 = kmul(e4phi,gt12L);
- CCTK_REAL gu12 = em4phi*gtu12;
+ CCTK_REAL_VEC g13 = kmul(e4phi,gt13L);
- CCTK_REAL gu13 = em4phi*gtu13;
+ CCTK_REAL_VEC g22 = kmul(e4phi,gt22L);
- CCTK_REAL gu22 = em4phi*gtu22;
+ CCTK_REAL_VEC g23 = kmul(e4phi,gt23L);
- CCTK_REAL gu23 = em4phi*gtu23;
+ CCTK_REAL_VEC g33 = kmul(e4phi,gt33L);
- CCTK_REAL gu33 = em4phi*gtu33;
+ CCTK_REAL_VEC gu11 = kmul(em4phi,gtu11);
- CCTK_REAL R11 = Rphi11 + Rt11;
+ CCTK_REAL_VEC gu12 = kmul(em4phi,gtu12);
- CCTK_REAL R12 = Rphi12 + Rt12;
+ CCTK_REAL_VEC gu13 = kmul(em4phi,gtu13);
- CCTK_REAL R13 = Rphi13 + Rt13;
+ CCTK_REAL_VEC gu22 = kmul(em4phi,gtu22);
- CCTK_REAL R22 = Rphi22 + Rt22;
+ CCTK_REAL_VEC gu23 = kmul(em4phi,gtu23);
- CCTK_REAL R23 = Rphi23 + Rt23;
+ CCTK_REAL_VEC gu33 = kmul(em4phi,gtu33);
- CCTK_REAL R33 = Rphi33 + Rt33;
+ CCTK_REAL_VEC R11 = kadd(Rphi11,Rt11);
- CCTK_REAL trS = em4phi*(eTxxL*gtu11 + eTyyL*gtu22 + 2*(eTxyL*gtu12 +
- eTxzL*gtu13 + eTyzL*gtu23) + eTzzL*gtu33);
+ CCTK_REAL_VEC R12 = kadd(Rphi12,Rt12);
- CCTK_REAL Ats11 = -PDstandardNth11alpha + (4*cdphi1 +
- Gt111)*PDstandardNth1alpha + Gt211*PDstandardNth2alpha +
- Gt311*PDstandardNth3alpha + alphaL*R11;
+ CCTK_REAL_VEC R13 = kadd(Rphi13,Rt13);
- CCTK_REAL Ats12 = -PDstandardNth12alpha + (2*cdphi2 +
- Gt112)*PDstandardNth1alpha + (2*cdphi1 + Gt212)*PDstandardNth2alpha +
- Gt312*PDstandardNth3alpha + alphaL*R12;
+ CCTK_REAL_VEC R22 = kadd(Rphi22,Rt22);
- CCTK_REAL Ats13 = -PDstandardNth13alpha + (2*cdphi3 +
- Gt113)*PDstandardNth1alpha + Gt213*PDstandardNth2alpha + (2*cdphi1 +
- Gt313)*PDstandardNth3alpha + alphaL*R13;
+ CCTK_REAL_VEC R23 = kadd(Rphi23,Rt23);
- CCTK_REAL Ats22 = Gt122*PDstandardNth1alpha - PDstandardNth22alpha +
- (4*cdphi2 + Gt222)*PDstandardNth2alpha + Gt322*PDstandardNth3alpha +
- alphaL*R22;
+ CCTK_REAL_VEC R33 = kadd(Rphi33,Rt33);
- CCTK_REAL Ats23 = Gt123*PDstandardNth1alpha - PDstandardNth23alpha +
- (2*cdphi3 + Gt223)*PDstandardNth2alpha + (2*cdphi2 +
- Gt323)*PDstandardNth3alpha + alphaL*R23;
+ 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 Ats33 = Gt133*PDstandardNth1alpha +
- Gt233*PDstandardNth2alpha - PDstandardNth33alpha + (4*cdphi3 +
- Gt333)*PDstandardNth3alpha + alphaL*R33;
+ CCTK_REAL_VEC Ats11 =
+ kmadd(Gt211,JacPDstandardNth2alpha,kmadd(Gt311,JacPDstandardNth3alpha,kmadd(alphaL,R11,kmsub(JacPDstandardNth1alpha,kmadd(cdphi1,ToReal(4),Gt111),JacPDstandardNth11alpha))));
- CCTK_REAL trAts = Ats11*gu11 + Ats22*gu22 + 2*(Ats12*gu12 + Ats13*gu13
- + Ats23*gu23) + Ats33*gu33;
+ 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 At11rhsL = -2.*alphaL*(At11L*Atm11 + At12L*Atm21 +
- At13L*Atm31) + 2.*(At12L*PDstandardNth1beta2 +
- At13L*PDstandardNth1beta3) +
- At11L*(1.333333333333333333333333333333333333333*PDstandardNth1beta1 -
- 0.6666666666666666666666666666666666666667*(PDstandardNth2beta2 +
- PDstandardNth3beta3) + alphaL*trKL) + em4phi*(Ats11 -
- 0.3333333333333333333333333333333333333333*g11*trAts +
- alphaL*(-25.13274122871834590770114706623602307358*eTxxL +
- 8.377580409572781969233715688745341024526*g11*trS));
+ 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 At12rhsL = -2.*alphaL*(At11L*Atm12 + At12L*Atm22 +
- At13L*Atm32) + At22L*PDstandardNth1beta2 + At23L*PDstandardNth1beta3 +
- At11L*PDstandardNth2beta1 + At13L*PDstandardNth2beta3 +
- At12L*(0.3333333333333333333333333333333333333333*(PDstandardNth1beta1
- + PDstandardNth2beta2) -
- 0.6666666666666666666666666666666666666667*PDstandardNth3beta3 +
- alphaL*trKL) + em4phi*(Ats12 -
- 0.3333333333333333333333333333333333333333*g12*trAts +
- alphaL*(-25.13274122871834590770114706623602307358*eTxyL +
- 8.377580409572781969233715688745341024526*g12*trS));
+ CCTK_REAL_VEC Ats22 =
+ kmadd(Gt122,JacPDstandardNth1alpha,kmadd(Gt322,JacPDstandardNth3alpha,kmadd(alphaL,R22,kmsub(JacPDstandardNth2alpha,kmadd(cdphi2,ToReal(4),Gt222),JacPDstandardNth22alpha))));
- CCTK_REAL At13rhsL = -2.*alphaL*(At11L*Atm13 + At12L*Atm23 +
- At13L*Atm33) + At23L*PDstandardNth1beta2 + At33L*PDstandardNth1beta3 +
- At11L*PDstandardNth3beta1 + At12L*PDstandardNth3beta2 +
- At13L*(-0.6666666666666666666666666666666666666667*PDstandardNth2beta2
- + 0.3333333333333333333333333333333333333333*(PDstandardNth1beta1 +
- PDstandardNth3beta3) + alphaL*trKL) + em4phi*(Ats13 -
- 0.3333333333333333333333333333333333333333*g13*trAts +
- alphaL*(-25.13274122871834590770114706623602307358*eTxzL +
- 8.377580409572781969233715688745341024526*g13*trS));
+ 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 At22rhsL = -2.*alphaL*(At12L*Atm12 + At22L*Atm22 +
- At23L*Atm32) + 2.*(At12L*PDstandardNth2beta1 +
- At23L*PDstandardNth2beta3) +
- At22L*(1.333333333333333333333333333333333333333*PDstandardNth2beta2 -
- 0.6666666666666666666666666666666666666667*(PDstandardNth1beta1 +
- PDstandardNth3beta3) + alphaL*trKL) + em4phi*(Ats22 -
- 0.3333333333333333333333333333333333333333*g22*trAts +
- alphaL*(-25.13274122871834590770114706623602307358*eTyyL +
- 8.377580409572781969233715688745341024526*g22*trS));
-
- CCTK_REAL At23rhsL = -2.*alphaL*(At12L*Atm13 + At22L*Atm23 +
- At23L*Atm33) + At13L*PDstandardNth2beta1 + At33L*PDstandardNth2beta3 +
- At12L*PDstandardNth3beta1 + At22L*PDstandardNth3beta2 +
- At23L*(-0.6666666666666666666666666666666666666667*PDstandardNth1beta1
- + 0.3333333333333333333333333333333333333333*(PDstandardNth2beta2 +
- PDstandardNth3beta3) + alphaL*trKL) + em4phi*(Ats23 -
- 0.3333333333333333333333333333333333333333*g23*trAts +
- alphaL*(-25.13274122871834590770114706623602307358*eTyzL +
- 8.377580409572781969233715688745341024526*g23*trS));
-
- CCTK_REAL At33rhsL = -2.*alphaL*(At13L*Atm13 + At23L*Atm23 +
- At33L*Atm33) + 2.*(At13L*PDstandardNth3beta1 +
- At23L*PDstandardNth3beta2) +
- At33L*(-0.6666666666666666666666666666666666666667*(PDstandardNth1beta1
- + PDstandardNth2beta2) +
- 1.333333333333333333333333333333333333333*PDstandardNth3beta3 +
- alphaL*trKL) + em4phi*(Ats33 -
- 0.3333333333333333333333333333333333333333*g33*trAts +
- alphaL*(-25.13274122871834590770114706623602307358*eTzzL +
- 8.377580409572781969233715688745341024526*g33*trS));
-
- /* Copy local copies back to grid functions */
- At11rhs[index] = At11rhsL;
- At12rhs[index] = At12rhsL;
- At13rhs[index] = At13rhsL;
- At22rhs[index] = At22rhsL;
- At23rhs[index] = At23rhsL;
- At33rhs[index] = At33rhsL;
+ 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 =
+ kmadd(em4phi,kmadd(g11,kmul(trAts,ToReal(-0.3333333333333333333333333333333333333333)),Ats11),kmadd(At11L,kmadd(kadd(JacPDstandardNth2beta2,JacPDstandardNth3beta3),ToReal(-0.6666666666666666666666666666666666666667),kmul(JacPDstandardNth1beta1,ToReal(1.333333333333333333333333333333333333333))),kmadd(kmadd(At12L,JacPDstandardNth1beta2,kmul(At13L,JacPDstandardNth1beta3)),ToReal(2.),kmul(alphaL,kmadd(kmadd(At12L,Atm21,kmul(At13L,Atm31)),ToReal(-2.),kmadd(At11L,kmadd(Atm11,ToReal(-2.),trKL),kmul(em4phi,kmadd(eTxxL,ToReal(-25.13274122871834590770114706623602307358),kmul(g11,kmul(trS,ToReal(8.377580409572781969233715688745341024526)))))))))));
+
+ CCTK_REAL_VEC At12rhsL =
+ kmadd(At22L,JacPDstandardNth1beta2,kmadd(At23L,JacPDstandardNth1beta3,kmadd(At11L,JacPDstandardNth2beta1,kmadd(At13L,JacPDstandardNth2beta3,kmadd(em4phi,kmadd(g12,kmul(trAts,ToReal(-0.3333333333333333333333333333333333333333)),Ats12),kmadd(At12L,kmadd(JacPDstandardNth3beta3,ToReal(-0.6666666666666666666666666666666666666667),kmul(kadd(JacPDstandardNth1beta1,JacPDstandardNth2beta2),ToReal(0.3333333333333333333333333333333333333333))),kmul(alphaL,kmadd(At12L,trKL,kmadd(kmadd(At11L,Atm12,kmadd(At12L,Atm22,kmul(At13L,Atm32))),ToReal(-2.),kmul(em4phi,kmadd(eTxyL,ToReal(-25.13274122871834590770114706623602307358),kmul(g12,kmul(trS,ToReal(8.377580409572781969233715688745341024526))))))))))))));
+
+ CCTK_REAL_VEC At13rhsL =
+ kmadd(At23L,JacPDstandardNth1beta2,kmadd(At33L,JacPDstandardNth1beta3,kmadd(At11L,JacPDstandardNth3beta1,kmadd(At12L,JacPDstandardNth3beta2,kmadd(em4phi,kmadd(g13,kmul(trAts,ToReal(-0.3333333333333333333333333333333333333333)),Ats13),kmadd(At13L,kmadd(JacPDstandardNth2beta2,ToReal(-0.6666666666666666666666666666666666666667),kmul(kadd(JacPDstandardNth1beta1,JacPDstandardNth3beta3),ToReal(0.3333333333333333333333333333333333333333))),kmul(alphaL,kmadd(At13L,trKL,kmadd(kmadd(At11L,Atm13,kmadd(At12L,Atm23,kmul(At13L,Atm33))),ToReal(-2.),kmul(em4phi,kmadd(eTxzL,ToReal(-25.13274122871834590770114706623602307358),kmul(g13,kmul(trS,ToReal(8.377580409572781969233715688745341024526))))))))))))));
+
+ CCTK_REAL_VEC At22rhsL =
+ kmadd(em4phi,kmadd(g22,kmul(trAts,ToReal(-0.3333333333333333333333333333333333333333)),Ats22),kmadd(At22L,kmadd(kadd(JacPDstandardNth1beta1,JacPDstandardNth3beta3),ToReal(-0.6666666666666666666666666666666666666667),kmul(JacPDstandardNth2beta2,ToReal(1.333333333333333333333333333333333333333))),kmadd(kmadd(At12L,JacPDstandardNth2beta1,kmul(At23L,JacPDstandardNth2beta3)),ToReal(2.),kmul(alphaL,kmadd(At22L,trKL,kmadd(kmadd(At12L,Atm12,kmadd(At22L,Atm22,kmul(At23L,Atm32))),ToReal(-2.),kmul(em4phi,kmadd(eTyyL,ToReal(-25.13274122871834590770114706623602307358),kmul(g22,kmul(trS,ToReal(8.377580409572781969233715688745341024526)))))))))));
+
+ CCTK_REAL_VEC At23rhsL =
+ kmadd(At13L,JacPDstandardNth2beta1,kmadd(At33L,JacPDstandardNth2beta3,kmadd(At12L,JacPDstandardNth3beta1,kmadd(At22L,JacPDstandardNth3beta2,kmadd(em4phi,kmadd(g23,kmul(trAts,ToReal(-0.3333333333333333333333333333333333333333)),Ats23),kmadd(At23L,kmadd(JacPDstandardNth1beta1,ToReal(-0.6666666666666666666666666666666666666667),kmul(kadd(JacPDstandardNth2beta2,JacPDstandardNth3beta3),ToReal(0.3333333333333333333333333333333333333333))),kmul(alphaL,kmadd(At23L,trKL,kmadd(kmadd(At12L,Atm13,kmadd(At22L,Atm23,kmul(At23L,Atm33))),ToReal(-2.),kmul(em4phi,kmadd(eTyzL,ToReal(-25.13274122871834590770114706623602307358),kmul(g23,kmul(trS,ToReal(8.377580409572781969233715688745341024526))))))))))))));
+
+ CCTK_REAL_VEC At33rhsL =
+ kmadd(em4phi,kmadd(g33,kmul(trAts,ToReal(-0.3333333333333333333333333333333333333333)),Ats33),kmadd(At33L,kmadd(kadd(JacPDstandardNth1beta1,JacPDstandardNth2beta2),ToReal(-0.6666666666666666666666666666666666666667),kmul(JacPDstandardNth3beta3,ToReal(1.333333333333333333333333333333333333333))),kmadd(kmadd(At13L,JacPDstandardNth3beta1,kmul(At23L,JacPDstandardNth3beta2)),ToReal(2.),kmul(alphaL,kmadd(At33L,trKL,kmadd(kmadd(At13L,Atm13,kmadd(At23L,Atm23,kmul(At33L,Atm33))),ToReal(-2.),kmul(em4phi,kmadd(eTzzL,ToReal(-25.13274122871834590770114706623602307358),kmul(g33,kmul(trS,ToReal(8.377580409572781969233715688745341024526)))))))))));
+
+ /* 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(At11rhs[index],At11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At12rhs[index],At12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At13rhs[index],At13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At22rhs[index],At22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At23rhs[index],At23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At33rhs[index],At33rhsL,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(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_hi(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_hi(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_hi(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_hi(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_hi(At33rhs[index],At33rhsL,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(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_lo(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_lo(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_lo(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_lo(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_lo(At33rhs[index],At33rhsL,elt_count);
+ break;
+ }
+ vec_store_nta(At11rhs[index],At11rhsL);
+ vec_store_nta(At12rhs[index],At12rhsL);
+ vec_store_nta(At13rhs[index],At13rhsL);
+ vec_store_nta(At22rhs[index],At22rhsL);
+ vec_store_nta(At23rhs[index],At23rhsL);
+ vec_store_nta(At33rhs[index],At33rhsL);
}
- LC_ENDLOOP3 (ML_BSSN_O2_RHS2);
+ LC_ENDLOOP3VEC (ML_BSSN_O2_RHS2);
}
extern "C" void ML_BSSN_O2_RHS2(CCTK_ARGUMENTS)
@@ -727,5 +1857,43 @@ extern "C" void ML_BSSN_O2_RHS2(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O2_RHS2_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_O2_RHS2_calc_every != ML_BSSN_O2_RHS2_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN_O2::ML_curv","ML_BSSN_O2::ML_curvrhs","ML_BSSN_O2::ML_Gamma","ML_BSSN_O2::ML_lapse","ML_BSSN_O2::ML_log_confac","ML_BSSN_O2::ML_metric","ML_BSSN_O2::ML_shift","ML_BSSN_O2::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O2_RHS2", 8, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O2_RHS2", 1, 1, 1);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O2_RHS2", 2, 2, 2);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O2_RHS2", 3, 3, 3);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O2_RHS2", 4, 4, 4);
+ break;
+ }
+
GenericFD_LoopOverInterior(cctkGH, &ML_BSSN_O2_RHS2_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_O2_RHS2_Body");
+ }
}
diff --git a/ML_BSSN_O2/src/ML_BSSN_O2_RHSStaticBoundary.cc b/ML_BSSN_O2/src/ML_BSSN_O2_RHSStaticBoundary.cc
index f8497f6..ff0f1ff 100644
--- a/ML_BSSN_O2/src/ML_BSSN_O2_RHSStaticBoundary.cc
+++ b/ML_BSSN_O2/src/ML_BSSN_O2_RHSStaticBoundary.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_O2_RHSStaticBoundary_SelectBCs(CCTK_ARGUMENTS)
{
@@ -57,7 +58,7 @@ extern "C" void ML_BSSN_O2_RHSStaticBoundary_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_BSSN_O2_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_O2_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;
@@ -65,20 +66,6 @@ static void ML_BSSN_O2_RHSStaticBoundary_Body(cGH const * restrict const cctkGH,
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O2_RHSStaticBoundary_Body");
- }
-
- if (cctk_iteration % ML_BSSN_O2_RHSStaticBoundary_calc_every != ML_BSSN_O2_RHSStaticBoundary_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN_O2::ML_curvrhs","ML_BSSN_O2::ML_dtlapserhs","ML_BSSN_O2::ML_dtshiftrhs","ML_BSSN_O2::ML_Gammarhs","ML_BSSN_O2::ML_lapserhs","ML_BSSN_O2::ML_log_confacrhs","ML_BSSN_O2::ML_metricrhs","ML_BSSN_O2::ML_shiftrhs","ML_BSSN_O2::ML_trace_curvrhs"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O2_RHSStaticBoundary", 9, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -88,53 +75,162 @@ static void ML_BSSN_O2_RHSStaticBoundary_Body(cGH const * restrict const cctkGH,
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o16dx = 0.0625*INV(dx);
- CCTK_REAL const p1o16dy = 0.0625*INV(dy);
- CCTK_REAL const p1o16dz = 0.0625*INV(dz);
- CCTK_REAL const p1o2dx = 0.5*INV(dx);
- CCTK_REAL const p1o2dy = 0.5*INV(dy);
- CCTK_REAL const p1o2dz = 0.5*INV(dz);
- CCTK_REAL const p1o4dx = 0.25*INV(dx);
- CCTK_REAL const p1o4dxdy = 0.25*INV(dx)*INV(dy);
- CCTK_REAL const p1o4dxdz = 0.25*INV(dx)*INV(dz);
- CCTK_REAL const p1o4dy = 0.25*INV(dy);
- CCTK_REAL const p1o4dydz = 0.25*INV(dy)*INV(dz);
- CCTK_REAL const p1o4dz = 0.25*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1odx2 = INV(SQR(dx));
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1ody2 = INV(SQR(dy));
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const p1odz2 = INV(SQR(dz));
- CCTK_REAL const pm1o2dx = -0.5*INV(dx);
- CCTK_REAL const pm1o2dy = -0.5*INV(dy);
- CCTK_REAL const pm1o2dz = -0.5*INV(dz);
- CCTK_REAL const pm1o4dx = -0.25*INV(dx);
- CCTK_REAL const pm1o4dy = -0.25*INV(dy);
- CCTK_REAL const pm1o4dz = -0.25*INV(dz);
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_O2_RHSStaticBoundary,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_O2_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;
@@ -142,89 +238,203 @@ static void ML_BSSN_O2_RHSStaticBoundary_Body(cGH const * restrict const cctkGH,
+
/* 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 phirhsL = 0;
+ CCTK_REAL_VEC phirhsL = ToReal(0);
+
+ CCTK_REAL_VEC gt11rhsL = ToReal(0);
- CCTK_REAL gt11rhsL = 0;
+ CCTK_REAL_VEC gt12rhsL = ToReal(0);
- CCTK_REAL gt12rhsL = 0;
+ CCTK_REAL_VEC gt13rhsL = ToReal(0);
- CCTK_REAL gt13rhsL = 0;
+ CCTK_REAL_VEC gt22rhsL = ToReal(0);
- CCTK_REAL gt22rhsL = 0;
+ CCTK_REAL_VEC gt23rhsL = ToReal(0);
- CCTK_REAL gt23rhsL = 0;
+ CCTK_REAL_VEC gt33rhsL = ToReal(0);
- CCTK_REAL gt33rhsL = 0;
+ CCTK_REAL_VEC trKrhsL = ToReal(0);
- CCTK_REAL trKrhsL = 0;
+ CCTK_REAL_VEC At11rhsL = ToReal(0);
- CCTK_REAL At11rhsL = 0;
+ CCTK_REAL_VEC At12rhsL = ToReal(0);
- CCTK_REAL At12rhsL = 0;
+ CCTK_REAL_VEC At13rhsL = ToReal(0);
- CCTK_REAL At13rhsL = 0;
+ CCTK_REAL_VEC At22rhsL = ToReal(0);
- CCTK_REAL At22rhsL = 0;
+ CCTK_REAL_VEC At23rhsL = ToReal(0);
- CCTK_REAL At23rhsL = 0;
+ CCTK_REAL_VEC At33rhsL = ToReal(0);
- CCTK_REAL At33rhsL = 0;
+ CCTK_REAL_VEC Xt1rhsL = ToReal(0);
- CCTK_REAL Xt1rhsL = 0;
+ CCTK_REAL_VEC Xt2rhsL = ToReal(0);
- CCTK_REAL Xt2rhsL = 0;
+ CCTK_REAL_VEC Xt3rhsL = ToReal(0);
- CCTK_REAL Xt3rhsL = 0;
+ CCTK_REAL_VEC alpharhsL = ToReal(0);
- CCTK_REAL alpharhsL = 0;
+ CCTK_REAL_VEC ArhsL = ToReal(0);
- CCTK_REAL ArhsL = 0;
+ CCTK_REAL_VEC beta1rhsL = ToReal(0);
- CCTK_REAL beta1rhsL = 0;
+ CCTK_REAL_VEC beta2rhsL = ToReal(0);
- CCTK_REAL beta2rhsL = 0;
+ CCTK_REAL_VEC beta3rhsL = ToReal(0);
- CCTK_REAL beta3rhsL = 0;
+ CCTK_REAL_VEC B1rhsL = ToReal(0);
- CCTK_REAL B1rhsL = 0;
+ CCTK_REAL_VEC B2rhsL = ToReal(0);
- CCTK_REAL B2rhsL = 0;
+ CCTK_REAL_VEC B3rhsL = ToReal(0);
- CCTK_REAL B3rhsL = 0;
+ /* If necessary, store only partial vectors after the first iteration */
- /* Copy local copies back to grid functions */
- alpharhs[index] = alpharhsL;
- Arhs[index] = ArhsL;
- At11rhs[index] = At11rhsL;
- At12rhs[index] = At12rhsL;
- At13rhs[index] = At13rhsL;
- At22rhs[index] = At22rhsL;
- At23rhs[index] = At23rhsL;
- At33rhs[index] = At33rhsL;
- B1rhs[index] = B1rhsL;
- B2rhs[index] = B2rhsL;
- B3rhs[index] = B3rhsL;
- beta1rhs[index] = beta1rhsL;
- beta2rhs[index] = beta2rhsL;
- beta3rhs[index] = beta3rhsL;
- gt11rhs[index] = gt11rhsL;
- gt12rhs[index] = gt12rhsL;
- gt13rhs[index] = gt13rhsL;
- gt22rhs[index] = gt22rhsL;
- gt23rhs[index] = gt23rhsL;
- gt33rhs[index] = gt33rhsL;
- phirhs[index] = phirhsL;
- trKrhs[index] = trKrhsL;
- Xt1rhs[index] = Xt1rhsL;
- Xt2rhs[index] = Xt2rhsL;
- Xt3rhs[index] = Xt3rhsL;
+ 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(Arhs[index],ArhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At11rhs[index],At11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At12rhs[index],At12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At13rhs[index],At13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At22rhs[index],At22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At23rhs[index],At23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At33rhs[index],At33rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B1rhs[index],B1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B2rhs[index],B2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt12rhs[index],gt12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt13rhs[index],gt13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt22rhs[index],gt22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt23rhs[index],gt23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt33rhs[index],gt33rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(phirhs[index],phirhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(trKrhs[index],trKrhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt1rhs[index],Xt1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt2rhs[index],Xt2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt3rhs[index],Xt3rhsL,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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_hi(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_hi(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_hi(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_hi(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_hi(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_hi(At33rhs[index],At33rhsL,elt_count);
+ vec_store_nta_partial_hi(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_hi(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_hi(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_hi(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_hi(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_hi(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_hi(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_hi(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_hi(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_hi(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_hi(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt3rhs[index],Xt3rhsL,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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_lo(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_lo(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_lo(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_lo(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_lo(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_lo(At33rhs[index],At33rhsL,elt_count);
+ vec_store_nta_partial_lo(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_lo(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_lo(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_lo(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_lo(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_lo(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_lo(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_lo(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_lo(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_lo(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_lo(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt3rhs[index],Xt3rhsL,elt_count);
+ break;
+ }
+ vec_store_nta(alpharhs[index],alpharhsL);
+ vec_store_nta(Arhs[index],ArhsL);
+ vec_store_nta(At11rhs[index],At11rhsL);
+ vec_store_nta(At12rhs[index],At12rhsL);
+ vec_store_nta(At13rhs[index],At13rhsL);
+ vec_store_nta(At22rhs[index],At22rhsL);
+ vec_store_nta(At23rhs[index],At23rhsL);
+ vec_store_nta(At33rhs[index],At33rhsL);
+ vec_store_nta(B1rhs[index],B1rhsL);
+ vec_store_nta(B2rhs[index],B2rhsL);
+ vec_store_nta(B3rhs[index],B3rhsL);
+ vec_store_nta(beta1rhs[index],beta1rhsL);
+ vec_store_nta(beta2rhs[index],beta2rhsL);
+ vec_store_nta(beta3rhs[index],beta3rhsL);
+ vec_store_nta(gt11rhs[index],gt11rhsL);
+ vec_store_nta(gt12rhs[index],gt12rhsL);
+ vec_store_nta(gt13rhs[index],gt13rhsL);
+ vec_store_nta(gt22rhs[index],gt22rhsL);
+ vec_store_nta(gt23rhs[index],gt23rhsL);
+ vec_store_nta(gt33rhs[index],gt33rhsL);
+ vec_store_nta(phirhs[index],phirhsL);
+ vec_store_nta(trKrhs[index],trKrhsL);
+ vec_store_nta(Xt1rhs[index],Xt1rhsL);
+ vec_store_nta(Xt2rhs[index],Xt2rhsL);
+ vec_store_nta(Xt3rhs[index],Xt3rhsL);
}
- LC_ENDLOOP3 (ML_BSSN_O2_RHSStaticBoundary);
+ LC_ENDLOOP3VEC (ML_BSSN_O2_RHSStaticBoundary);
}
extern "C" void ML_BSSN_O2_RHSStaticBoundary(CCTK_ARGUMENTS)
@@ -232,5 +442,39 @@ extern "C" void ML_BSSN_O2_RHSStaticBoundary(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O2_RHSStaticBoundary_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_O2_RHSStaticBoundary_calc_every != ML_BSSN_O2_RHSStaticBoundary_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN_O2::ML_curvrhs","ML_BSSN_O2::ML_dtlapserhs","ML_BSSN_O2::ML_dtshiftrhs","ML_BSSN_O2::ML_Gammarhs","ML_BSSN_O2::ML_lapserhs","ML_BSSN_O2::ML_log_confacrhs","ML_BSSN_O2::ML_metricrhs","ML_BSSN_O2::ML_shiftrhs","ML_BSSN_O2::ML_trace_curvrhs"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O2_RHSStaticBoundary", 9, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverBoundary(cctkGH, &ML_BSSN_O2_RHSStaticBoundary_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_O2_RHSStaticBoundary_Body");
+ }
}
diff --git a/ML_BSSN_O2/src/ML_BSSN_O2_boundary.cc b/ML_BSSN_O2/src/ML_BSSN_O2_boundary.cc
index 3ee5064..18f666f 100644
--- a/ML_BSSN_O2/src/ML_BSSN_O2_boundary.cc
+++ b/ML_BSSN_O2/src/ML_BSSN_O2_boundary.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_O2_boundary_SelectBCs(CCTK_ARGUMENTS)
{
@@ -57,7 +58,7 @@ extern "C" void ML_BSSN_O2_boundary_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_BSSN_O2_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_O2_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;
@@ -65,20 +66,6 @@ static void ML_BSSN_O2_boundary_Body(cGH const * restrict const cctkGH, int cons
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O2_boundary_Body");
- }
-
- if (cctk_iteration % ML_BSSN_O2_boundary_calc_every != ML_BSSN_O2_boundary_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN_O2::ML_curv","ML_BSSN_O2::ML_dtlapse","ML_BSSN_O2::ML_dtshift","ML_BSSN_O2::ML_Gamma","ML_BSSN_O2::ML_lapse","ML_BSSN_O2::ML_log_confac","ML_BSSN_O2::ML_metric","ML_BSSN_O2::ML_shift","ML_BSSN_O2::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O2_boundary", 9, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -88,53 +75,162 @@ static void ML_BSSN_O2_boundary_Body(cGH const * restrict const cctkGH, int cons
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o16dx = 0.0625*INV(dx);
- CCTK_REAL const p1o16dy = 0.0625*INV(dy);
- CCTK_REAL const p1o16dz = 0.0625*INV(dz);
- CCTK_REAL const p1o2dx = 0.5*INV(dx);
- CCTK_REAL const p1o2dy = 0.5*INV(dy);
- CCTK_REAL const p1o2dz = 0.5*INV(dz);
- CCTK_REAL const p1o4dx = 0.25*INV(dx);
- CCTK_REAL const p1o4dxdy = 0.25*INV(dx)*INV(dy);
- CCTK_REAL const p1o4dxdz = 0.25*INV(dx)*INV(dz);
- CCTK_REAL const p1o4dy = 0.25*INV(dy);
- CCTK_REAL const p1o4dydz = 0.25*INV(dy)*INV(dz);
- CCTK_REAL const p1o4dz = 0.25*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1odx2 = INV(SQR(dx));
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1ody2 = INV(SQR(dy));
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const p1odz2 = INV(SQR(dz));
- CCTK_REAL const pm1o2dx = -0.5*INV(dx);
- CCTK_REAL const pm1o2dy = -0.5*INV(dy);
- CCTK_REAL const pm1o2dz = -0.5*INV(dz);
- CCTK_REAL const pm1o4dx = -0.25*INV(dx);
- CCTK_REAL const pm1o4dy = -0.25*INV(dy);
- CCTK_REAL const pm1o4dz = -0.25*INV(dz);
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_O2_boundary,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_O2_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;
@@ -142,89 +238,203 @@ static void ML_BSSN_O2_boundary_Body(cGH const * restrict const cctkGH, int cons
+
/* 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 phiL = IfThen(conformalMethod,1,0);
+ CCTK_REAL_VEC phiL = IfThen(conformalMethod,ToReal(1),ToReal(0));
+
+ CCTK_REAL_VEC gt11L = ToReal(1);
- CCTK_REAL gt11L = 1;
+ CCTK_REAL_VEC gt12L = ToReal(0);
- CCTK_REAL gt12L = 0;
+ CCTK_REAL_VEC gt13L = ToReal(0);
- CCTK_REAL gt13L = 0;
+ CCTK_REAL_VEC gt22L = ToReal(1);
- CCTK_REAL gt22L = 1;
+ CCTK_REAL_VEC gt23L = ToReal(0);
- CCTK_REAL gt23L = 0;
+ CCTK_REAL_VEC gt33L = ToReal(1);
- CCTK_REAL gt33L = 1;
+ CCTK_REAL_VEC trKL = ToReal(0);
- CCTK_REAL trKL = 0;
+ CCTK_REAL_VEC At11L = ToReal(0);
- CCTK_REAL At11L = 0;
+ CCTK_REAL_VEC At12L = ToReal(0);
- CCTK_REAL At12L = 0;
+ CCTK_REAL_VEC At13L = ToReal(0);
- CCTK_REAL At13L = 0;
+ CCTK_REAL_VEC At22L = ToReal(0);
- CCTK_REAL At22L = 0;
+ CCTK_REAL_VEC At23L = ToReal(0);
- CCTK_REAL At23L = 0;
+ CCTK_REAL_VEC At33L = ToReal(0);
- CCTK_REAL At33L = 0;
+ CCTK_REAL_VEC Xt1L = ToReal(0);
- CCTK_REAL Xt1L = 0;
+ CCTK_REAL_VEC Xt2L = ToReal(0);
- CCTK_REAL Xt2L = 0;
+ CCTK_REAL_VEC Xt3L = ToReal(0);
- CCTK_REAL Xt3L = 0;
+ CCTK_REAL_VEC alphaL = ToReal(1);
- CCTK_REAL alphaL = 1;
+ CCTK_REAL_VEC AL = ToReal(0);
- CCTK_REAL AL = 0;
+ CCTK_REAL_VEC beta1L = ToReal(0);
- CCTK_REAL beta1L = 0;
+ CCTK_REAL_VEC beta2L = ToReal(0);
- CCTK_REAL beta2L = 0;
+ CCTK_REAL_VEC beta3L = ToReal(0);
- CCTK_REAL beta3L = 0;
+ CCTK_REAL_VEC B1L = ToReal(0);
- CCTK_REAL B1L = 0;
+ CCTK_REAL_VEC B2L = ToReal(0);
- CCTK_REAL B2L = 0;
+ CCTK_REAL_VEC B3L = ToReal(0);
- CCTK_REAL B3L = 0;
+ /* If necessary, store only partial vectors after the first iteration */
- /* Copy local copies back to grid functions */
- A[index] = AL;
- alpha[index] = alphaL;
- At11[index] = At11L;
- At12[index] = At12L;
- At13[index] = At13L;
- At22[index] = At22L;
- At23[index] = At23L;
- At33[index] = At33L;
- B1[index] = B1L;
- B2[index] = B2L;
- B3[index] = B3L;
- beta1[index] = beta1L;
- beta2[index] = beta2L;
- beta3[index] = beta3L;
- gt11[index] = gt11L;
- gt12[index] = gt12L;
- gt13[index] = gt13L;
- gt22[index] = gt22L;
- gt23[index] = gt23L;
- gt33[index] = gt33L;
- phi[index] = phiL;
- trK[index] = trKL;
- Xt1[index] = Xt1L;
- Xt2[index] = Xt2L;
- Xt3[index] = Xt3L;
+ 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(A[index],AL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(alpha[index],alphaL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At11[index],At11L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At12[index],At12L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At13[index],At13L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At22[index],At22L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At23[index],At23L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At33[index],At33L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B1[index],B1L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B2[index],B2L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B3[index],B3L,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(gt11[index],gt11L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt12[index],gt12L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt13[index],gt13L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt22[index],gt22L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt23[index],gt23L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt33[index],gt33L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(phi[index],phiL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(trK[index],trKL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt1[index],Xt1L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt2[index],Xt2L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt3[index],Xt3L,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(A[index],AL,elt_count);
+ vec_store_nta_partial_hi(alpha[index],alphaL,elt_count);
+ vec_store_nta_partial_hi(At11[index],At11L,elt_count);
+ vec_store_nta_partial_hi(At12[index],At12L,elt_count);
+ vec_store_nta_partial_hi(At13[index],At13L,elt_count);
+ vec_store_nta_partial_hi(At22[index],At22L,elt_count);
+ vec_store_nta_partial_hi(At23[index],At23L,elt_count);
+ vec_store_nta_partial_hi(At33[index],At33L,elt_count);
+ vec_store_nta_partial_hi(B1[index],B1L,elt_count);
+ vec_store_nta_partial_hi(B2[index],B2L,elt_count);
+ vec_store_nta_partial_hi(B3[index],B3L,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(gt11[index],gt11L,elt_count);
+ vec_store_nta_partial_hi(gt12[index],gt12L,elt_count);
+ vec_store_nta_partial_hi(gt13[index],gt13L,elt_count);
+ vec_store_nta_partial_hi(gt22[index],gt22L,elt_count);
+ vec_store_nta_partial_hi(gt23[index],gt23L,elt_count);
+ vec_store_nta_partial_hi(gt33[index],gt33L,elt_count);
+ vec_store_nta_partial_hi(phi[index],phiL,elt_count);
+ vec_store_nta_partial_hi(trK[index],trKL,elt_count);
+ vec_store_nta_partial_hi(Xt1[index],Xt1L,elt_count);
+ vec_store_nta_partial_hi(Xt2[index],Xt2L,elt_count);
+ vec_store_nta_partial_hi(Xt3[index],Xt3L,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(A[index],AL,elt_count);
+ vec_store_nta_partial_lo(alpha[index],alphaL,elt_count);
+ vec_store_nta_partial_lo(At11[index],At11L,elt_count);
+ vec_store_nta_partial_lo(At12[index],At12L,elt_count);
+ vec_store_nta_partial_lo(At13[index],At13L,elt_count);
+ vec_store_nta_partial_lo(At22[index],At22L,elt_count);
+ vec_store_nta_partial_lo(At23[index],At23L,elt_count);
+ vec_store_nta_partial_lo(At33[index],At33L,elt_count);
+ vec_store_nta_partial_lo(B1[index],B1L,elt_count);
+ vec_store_nta_partial_lo(B2[index],B2L,elt_count);
+ vec_store_nta_partial_lo(B3[index],B3L,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(gt11[index],gt11L,elt_count);
+ vec_store_nta_partial_lo(gt12[index],gt12L,elt_count);
+ vec_store_nta_partial_lo(gt13[index],gt13L,elt_count);
+ vec_store_nta_partial_lo(gt22[index],gt22L,elt_count);
+ vec_store_nta_partial_lo(gt23[index],gt23L,elt_count);
+ vec_store_nta_partial_lo(gt33[index],gt33L,elt_count);
+ vec_store_nta_partial_lo(phi[index],phiL,elt_count);
+ vec_store_nta_partial_lo(trK[index],trKL,elt_count);
+ vec_store_nta_partial_lo(Xt1[index],Xt1L,elt_count);
+ vec_store_nta_partial_lo(Xt2[index],Xt2L,elt_count);
+ vec_store_nta_partial_lo(Xt3[index],Xt3L,elt_count);
+ break;
+ }
+ vec_store_nta(A[index],AL);
+ vec_store_nta(alpha[index],alphaL);
+ vec_store_nta(At11[index],At11L);
+ vec_store_nta(At12[index],At12L);
+ vec_store_nta(At13[index],At13L);
+ vec_store_nta(At22[index],At22L);
+ vec_store_nta(At23[index],At23L);
+ vec_store_nta(At33[index],At33L);
+ vec_store_nta(B1[index],B1L);
+ vec_store_nta(B2[index],B2L);
+ vec_store_nta(B3[index],B3L);
+ vec_store_nta(beta1[index],beta1L);
+ vec_store_nta(beta2[index],beta2L);
+ vec_store_nta(beta3[index],beta3L);
+ vec_store_nta(gt11[index],gt11L);
+ vec_store_nta(gt12[index],gt12L);
+ vec_store_nta(gt13[index],gt13L);
+ vec_store_nta(gt22[index],gt22L);
+ vec_store_nta(gt23[index],gt23L);
+ vec_store_nta(gt33[index],gt33L);
+ vec_store_nta(phi[index],phiL);
+ vec_store_nta(trK[index],trKL);
+ vec_store_nta(Xt1[index],Xt1L);
+ vec_store_nta(Xt2[index],Xt2L);
+ vec_store_nta(Xt3[index],Xt3L);
}
- LC_ENDLOOP3 (ML_BSSN_O2_boundary);
+ LC_ENDLOOP3VEC (ML_BSSN_O2_boundary);
}
extern "C" void ML_BSSN_O2_boundary(CCTK_ARGUMENTS)
@@ -232,5 +442,39 @@ extern "C" void ML_BSSN_O2_boundary(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O2_boundary_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_O2_boundary_calc_every != ML_BSSN_O2_boundary_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN_O2::ML_curv","ML_BSSN_O2::ML_dtlapse","ML_BSSN_O2::ML_dtshift","ML_BSSN_O2::ML_Gamma","ML_BSSN_O2::ML_lapse","ML_BSSN_O2::ML_log_confac","ML_BSSN_O2::ML_metric","ML_BSSN_O2::ML_shift","ML_BSSN_O2::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O2_boundary", 9, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverBoundaryWithGhosts(cctkGH, &ML_BSSN_O2_boundary_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_O2_boundary_Body");
+ }
}
diff --git a/ML_BSSN_O2/src/ML_BSSN_O2_constraints1.cc b/ML_BSSN_O2/src/ML_BSSN_O2_constraints1.cc
index 38ea503..0c54cb0 100644
--- a/ML_BSSN_O2/src/ML_BSSN_O2_constraints1.cc
+++ b/ML_BSSN_O2/src/ML_BSSN_O2_constraints1.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_O2_constraints1_SelectBCs(CCTK_ARGUMENTS)
{
@@ -33,7 +34,7 @@ extern "C" void ML_BSSN_O2_constraints1_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_BSSN_O2_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_O2_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;
@@ -41,21 +42,6 @@ static void ML_BSSN_O2_constraints1_Body(cGH const * restrict const cctkGH, int
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O2_constraints1_Body");
- }
-
- if (cctk_iteration % ML_BSSN_O2_constraints1_calc_every != ML_BSSN_O2_constraints1_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN_O2::ML_curv","ML_BSSN_O2::ML_Gamma","ML_BSSN_O2::ML_Ham","ML_BSSN_O2::ML_lapse","ML_BSSN_O2::ML_log_confac","ML_BSSN_O2::ML_metric","ML_BSSN_O2::ML_shift","ML_BSSN_O2::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O2_constraints1", 8, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O2_constraints1", 1, 1, 1);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -65,94 +51,203 @@ static void ML_BSSN_O2_constraints1_Body(cGH const * restrict const cctkGH, int
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o16dx = 0.0625*INV(dx);
- CCTK_REAL const p1o16dy = 0.0625*INV(dy);
- CCTK_REAL const p1o16dz = 0.0625*INV(dz);
- CCTK_REAL const p1o2dx = 0.5*INV(dx);
- CCTK_REAL const p1o2dy = 0.5*INV(dy);
- CCTK_REAL const p1o2dz = 0.5*INV(dz);
- CCTK_REAL const p1o4dx = 0.25*INV(dx);
- CCTK_REAL const p1o4dxdy = 0.25*INV(dx)*INV(dy);
- CCTK_REAL const p1o4dxdz = 0.25*INV(dx)*INV(dz);
- CCTK_REAL const p1o4dy = 0.25*INV(dy);
- CCTK_REAL const p1o4dydz = 0.25*INV(dy)*INV(dz);
- CCTK_REAL const p1o4dz = 0.25*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1odx2 = INV(SQR(dx));
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1ody2 = INV(SQR(dy));
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const p1odz2 = INV(SQR(dz));
- CCTK_REAL const pm1o2dx = -0.5*INV(dx);
- CCTK_REAL const pm1o2dy = -0.5*INV(dy);
- CCTK_REAL const pm1o2dz = -0.5*INV(dz);
- CCTK_REAL const pm1o4dx = -0.25*INV(dx);
- CCTK_REAL const pm1o4dy = -0.25*INV(dy);
- CCTK_REAL const pm1o4dz = -0.25*INV(dz);
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_O2_constraints1,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_O2_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 alphaL = alpha[index];
- CCTK_REAL At11L = At11[index];
- CCTK_REAL At12L = At12[index];
- CCTK_REAL At13L = At13[index];
- CCTK_REAL At22L = At22[index];
- CCTK_REAL At23L = At23[index];
- CCTK_REAL At33L = At33[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL gt11L = gt11[index];
- CCTK_REAL gt12L = gt12[index];
- CCTK_REAL gt13L = gt13[index];
- CCTK_REAL gt22L = gt22[index];
- CCTK_REAL gt23L = gt23[index];
- CCTK_REAL gt33L = gt33[index];
- CCTK_REAL phiL = phi[index];
- CCTK_REAL trKL = trK[index];
- CCTK_REAL Xt1L = Xt1[index];
- CCTK_REAL Xt2L = Xt2[index];
- CCTK_REAL Xt3L = Xt3[index];
-
- CCTK_REAL eTttL, eTtxL, eTtyL, eTtzL, eTxxL, eTxyL, eTxzL, eTyyL, eTyzL, eTzzL;
+ 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 = eTtt[index];
- eTtxL = eTtx[index];
- eTtyL = eTty[index];
- eTtzL = eTtz[index];
- eTxxL = eTxx[index];
- eTxyL = eTxy[index];
- eTxzL = eTxz[index];
- eTyyL = eTyy[index];
- eTyzL = eTyz[index];
- eTzzL = eTzz[index];
+ 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
{
@@ -168,446 +263,1332 @@ static void ML_BSSN_O2_constraints1_Body(cGH const * restrict const cctkGH, int
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 const PDstandardNth1gt11 = PDstandardNth1(&gt11[index]);
- CCTK_REAL const PDstandardNth2gt11 = PDstandardNth2(&gt11[index]);
- CCTK_REAL const PDstandardNth3gt11 = PDstandardNth3(&gt11[index]);
- CCTK_REAL const PDstandardNth11gt11 = PDstandardNth11(&gt11[index]);
- CCTK_REAL const PDstandardNth22gt11 = PDstandardNth22(&gt11[index]);
- CCTK_REAL const PDstandardNth33gt11 = PDstandardNth33(&gt11[index]);
- CCTK_REAL const PDstandardNth12gt11 = PDstandardNth12(&gt11[index]);
- CCTK_REAL const PDstandardNth13gt11 = PDstandardNth13(&gt11[index]);
- CCTK_REAL const PDstandardNth23gt11 = PDstandardNth23(&gt11[index]);
- CCTK_REAL const PDstandardNth1gt12 = PDstandardNth1(&gt12[index]);
- CCTK_REAL const PDstandardNth2gt12 = PDstandardNth2(&gt12[index]);
- CCTK_REAL const PDstandardNth3gt12 = PDstandardNth3(&gt12[index]);
- CCTK_REAL const PDstandardNth11gt12 = PDstandardNth11(&gt12[index]);
- CCTK_REAL const PDstandardNth22gt12 = PDstandardNth22(&gt12[index]);
- CCTK_REAL const PDstandardNth33gt12 = PDstandardNth33(&gt12[index]);
- CCTK_REAL const PDstandardNth12gt12 = PDstandardNth12(&gt12[index]);
- CCTK_REAL const PDstandardNth13gt12 = PDstandardNth13(&gt12[index]);
- CCTK_REAL const PDstandardNth23gt12 = PDstandardNth23(&gt12[index]);
- CCTK_REAL const PDstandardNth1gt13 = PDstandardNth1(&gt13[index]);
- CCTK_REAL const PDstandardNth2gt13 = PDstandardNth2(&gt13[index]);
- CCTK_REAL const PDstandardNth3gt13 = PDstandardNth3(&gt13[index]);
- CCTK_REAL const PDstandardNth11gt13 = PDstandardNth11(&gt13[index]);
- CCTK_REAL const PDstandardNth22gt13 = PDstandardNth22(&gt13[index]);
- CCTK_REAL const PDstandardNth33gt13 = PDstandardNth33(&gt13[index]);
- CCTK_REAL const PDstandardNth12gt13 = PDstandardNth12(&gt13[index]);
- CCTK_REAL const PDstandardNth13gt13 = PDstandardNth13(&gt13[index]);
- CCTK_REAL const PDstandardNth23gt13 = PDstandardNth23(&gt13[index]);
- CCTK_REAL const PDstandardNth1gt22 = PDstandardNth1(&gt22[index]);
- CCTK_REAL const PDstandardNth2gt22 = PDstandardNth2(&gt22[index]);
- CCTK_REAL const PDstandardNth3gt22 = PDstandardNth3(&gt22[index]);
- CCTK_REAL const PDstandardNth11gt22 = PDstandardNth11(&gt22[index]);
- CCTK_REAL const PDstandardNth22gt22 = PDstandardNth22(&gt22[index]);
- CCTK_REAL const PDstandardNth33gt22 = PDstandardNth33(&gt22[index]);
- CCTK_REAL const PDstandardNth12gt22 = PDstandardNth12(&gt22[index]);
- CCTK_REAL const PDstandardNth13gt22 = PDstandardNth13(&gt22[index]);
- CCTK_REAL const PDstandardNth23gt22 = PDstandardNth23(&gt22[index]);
- CCTK_REAL const PDstandardNth1gt23 = PDstandardNth1(&gt23[index]);
- CCTK_REAL const PDstandardNth2gt23 = PDstandardNth2(&gt23[index]);
- CCTK_REAL const PDstandardNth3gt23 = PDstandardNth3(&gt23[index]);
- CCTK_REAL const PDstandardNth11gt23 = PDstandardNth11(&gt23[index]);
- CCTK_REAL const PDstandardNth22gt23 = PDstandardNth22(&gt23[index]);
- CCTK_REAL const PDstandardNth33gt23 = PDstandardNth33(&gt23[index]);
- CCTK_REAL const PDstandardNth12gt23 = PDstandardNth12(&gt23[index]);
- CCTK_REAL const PDstandardNth13gt23 = PDstandardNth13(&gt23[index]);
- CCTK_REAL const PDstandardNth23gt23 = PDstandardNth23(&gt23[index]);
- CCTK_REAL const PDstandardNth1gt33 = PDstandardNth1(&gt33[index]);
- CCTK_REAL const PDstandardNth2gt33 = PDstandardNth2(&gt33[index]);
- CCTK_REAL const PDstandardNth3gt33 = PDstandardNth3(&gt33[index]);
- CCTK_REAL const PDstandardNth11gt33 = PDstandardNth11(&gt33[index]);
- CCTK_REAL const PDstandardNth22gt33 = PDstandardNth22(&gt33[index]);
- CCTK_REAL const PDstandardNth33gt33 = PDstandardNth33(&gt33[index]);
- CCTK_REAL const PDstandardNth12gt33 = PDstandardNth12(&gt33[index]);
- CCTK_REAL const PDstandardNth13gt33 = PDstandardNth13(&gt33[index]);
- CCTK_REAL const PDstandardNth23gt33 = PDstandardNth23(&gt33[index]);
- CCTK_REAL const PDstandardNth1phi = PDstandardNth1(&phi[index]);
- CCTK_REAL const PDstandardNth2phi = PDstandardNth2(&phi[index]);
- CCTK_REAL const PDstandardNth3phi = PDstandardNth3(&phi[index]);
- CCTK_REAL const PDstandardNth11phi = PDstandardNth11(&phi[index]);
- CCTK_REAL const PDstandardNth22phi = PDstandardNth22(&phi[index]);
- CCTK_REAL const PDstandardNth33phi = PDstandardNth33(&phi[index]);
- CCTK_REAL const PDstandardNth12phi = PDstandardNth12(&phi[index]);
- CCTK_REAL const PDstandardNth13phi = PDstandardNth13(&phi[index]);
- CCTK_REAL const PDstandardNth23phi = PDstandardNth23(&phi[index]);
- CCTK_REAL const PDstandardNth1Xt1 = PDstandardNth1(&Xt1[index]);
- CCTK_REAL const PDstandardNth2Xt1 = PDstandardNth2(&Xt1[index]);
- CCTK_REAL const PDstandardNth3Xt1 = PDstandardNth3(&Xt1[index]);
- CCTK_REAL const PDstandardNth1Xt2 = PDstandardNth1(&Xt2[index]);
- CCTK_REAL const PDstandardNth2Xt2 = PDstandardNth2(&Xt2[index]);
- CCTK_REAL const PDstandardNth3Xt2 = PDstandardNth3(&Xt2[index]);
- CCTK_REAL const PDstandardNth1Xt3 = PDstandardNth1(&Xt3[index]);
- CCTK_REAL const PDstandardNth2Xt3 = PDstandardNth2(&Xt3[index]);
- CCTK_REAL const PDstandardNth3Xt3 = PDstandardNth3(&Xt3[index]);
+ 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 detgt = 1;
+ 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 gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L));
+ CCTK_REAL_VEC Gtl111 = kmul(JacPDstandardNth1gt11,ToReal(0.5));
- CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt);
+ CCTK_REAL_VEC Gtl112 = kmul(JacPDstandardNth2gt11,ToReal(0.5));
- CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC Gtl113 = kmul(JacPDstandardNth3gt11,ToReal(0.5));
- CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L));
+ CCTK_REAL_VEC Gtl122 =
+ kmadd(JacPDstandardNth1gt22,ToReal(-0.5),JacPDstandardNth2gt12);
- CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC Gtl123 =
+ kmul(kadd(JacPDstandardNth2gt13,ksub(JacPDstandardNth3gt12,JacPDstandardNth1gt23)),ToReal(0.5));
- CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L));
+ CCTK_REAL_VEC Gtl133 =
+ kmadd(JacPDstandardNth1gt33,ToReal(-0.5),JacPDstandardNth3gt13);
- CCTK_REAL Gtl111 = 0.5*PDstandardNth1gt11;
+ CCTK_REAL_VEC Gtl211 =
+ kmadd(JacPDstandardNth2gt11,ToReal(-0.5),JacPDstandardNth1gt12);
- CCTK_REAL Gtl112 = 0.5*PDstandardNth2gt11;
+ CCTK_REAL_VEC Gtl212 = kmul(JacPDstandardNth1gt22,ToReal(0.5));
- CCTK_REAL Gtl113 = 0.5*PDstandardNth3gt11;
+ CCTK_REAL_VEC Gtl213 =
+ kmul(kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth3gt12,JacPDstandardNth2gt13)),ToReal(0.5));
- CCTK_REAL Gtl122 = -0.5*PDstandardNth1gt22 + PDstandardNth2gt12;
+ CCTK_REAL_VEC Gtl222 = kmul(JacPDstandardNth2gt22,ToReal(0.5));
- CCTK_REAL Gtl123 = 0.5*(-PDstandardNth1gt23 + PDstandardNth2gt13 +
- PDstandardNth3gt12);
+ CCTK_REAL_VEC Gtl223 = kmul(JacPDstandardNth3gt22,ToReal(0.5));
- CCTK_REAL Gtl133 = -0.5*PDstandardNth1gt33 + PDstandardNth3gt13;
+ CCTK_REAL_VEC Gtl233 =
+ kmadd(JacPDstandardNth2gt33,ToReal(-0.5),JacPDstandardNth3gt23);
- CCTK_REAL Gtl211 = PDstandardNth1gt12 - 0.5*PDstandardNth2gt11;
+ CCTK_REAL_VEC Gtl311 =
+ kmadd(JacPDstandardNth3gt11,ToReal(-0.5),JacPDstandardNth1gt13);
- CCTK_REAL Gtl212 = 0.5*PDstandardNth1gt22;
+ CCTK_REAL_VEC Gtl312 =
+ kmul(kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth2gt13,JacPDstandardNth3gt12)),ToReal(0.5));
- CCTK_REAL Gtl213 = 0.5*(PDstandardNth1gt23 - PDstandardNth2gt13 +
- PDstandardNth3gt12);
+ CCTK_REAL_VEC Gtl313 = kmul(JacPDstandardNth1gt33,ToReal(0.5));
- CCTK_REAL Gtl222 = 0.5*PDstandardNth2gt22;
+ CCTK_REAL_VEC Gtl322 =
+ kmadd(JacPDstandardNth3gt22,ToReal(-0.5),JacPDstandardNth2gt23);
- CCTK_REAL Gtl223 = 0.5*PDstandardNth3gt22;
+ CCTK_REAL_VEC Gtl323 = kmul(JacPDstandardNth2gt33,ToReal(0.5));
- CCTK_REAL Gtl233 = -0.5*PDstandardNth2gt33 + PDstandardNth3gt23;
+ CCTK_REAL_VEC Gtl333 = kmul(JacPDstandardNth3gt33,ToReal(0.5));
- CCTK_REAL Gtl311 = PDstandardNth1gt13 - 0.5*PDstandardNth3gt11;
+ CCTK_REAL_VEC Gtlu111 =
+ kmadd(Gtl111,gtu11,kmadd(Gtl112,gtu12,kmul(Gtl113,gtu13)));
- CCTK_REAL Gtl312 = 0.5*(PDstandardNth1gt23 + PDstandardNth2gt13 -
- PDstandardNth3gt12);
+ CCTK_REAL_VEC Gtlu112 =
+ kmadd(Gtl111,gtu12,kmadd(Gtl112,gtu22,kmul(Gtl113,gtu23)));
- CCTK_REAL Gtl313 = 0.5*PDstandardNth1gt33;
+ CCTK_REAL_VEC Gtlu113 =
+ kmadd(Gtl111,gtu13,kmadd(Gtl112,gtu23,kmul(Gtl113,gtu33)));
- CCTK_REAL Gtl322 = PDstandardNth2gt23 - 0.5*PDstandardNth3gt22;
+ CCTK_REAL_VEC Gtlu121 =
+ kmadd(Gtl112,gtu11,kmadd(Gtl122,gtu12,kmul(Gtl123,gtu13)));
- CCTK_REAL Gtl323 = 0.5*PDstandardNth2gt33;
+ CCTK_REAL_VEC Gtlu122 =
+ kmadd(Gtl112,gtu12,kmadd(Gtl122,gtu22,kmul(Gtl123,gtu23)));
- CCTK_REAL Gtl333 = 0.5*PDstandardNth3gt33;
+ CCTK_REAL_VEC Gtlu123 =
+ kmadd(Gtl112,gtu13,kmadd(Gtl122,gtu23,kmul(Gtl123,gtu33)));
- CCTK_REAL Gtlu111 = Gtl111*gtu11 + Gtl112*gtu12 + Gtl113*gtu13;
+ CCTK_REAL_VEC Gtlu131 =
+ kmadd(Gtl113,gtu11,kmadd(Gtl123,gtu12,kmul(Gtl133,gtu13)));
- CCTK_REAL Gtlu112 = Gtl111*gtu12 + Gtl112*gtu22 + Gtl113*gtu23;
+ CCTK_REAL_VEC Gtlu132 =
+ kmadd(Gtl113,gtu12,kmadd(Gtl123,gtu22,kmul(Gtl133,gtu23)));
- CCTK_REAL Gtlu113 = Gtl111*gtu13 + Gtl112*gtu23 + Gtl113*gtu33;
+ CCTK_REAL_VEC Gtlu133 =
+ kmadd(Gtl113,gtu13,kmadd(Gtl123,gtu23,kmul(Gtl133,gtu33)));
- CCTK_REAL Gtlu121 = Gtl112*gtu11 + Gtl122*gtu12 + Gtl123*gtu13;
+ CCTK_REAL_VEC Gtlu211 =
+ kmadd(Gtl211,gtu11,kmadd(Gtl212,gtu12,kmul(Gtl213,gtu13)));
- CCTK_REAL Gtlu122 = Gtl112*gtu12 + Gtl122*gtu22 + Gtl123*gtu23;
+ CCTK_REAL_VEC Gtlu212 =
+ kmadd(Gtl211,gtu12,kmadd(Gtl212,gtu22,kmul(Gtl213,gtu23)));
- CCTK_REAL Gtlu123 = Gtl112*gtu13 + Gtl122*gtu23 + Gtl123*gtu33;
+ CCTK_REAL_VEC Gtlu213 =
+ kmadd(Gtl211,gtu13,kmadd(Gtl212,gtu23,kmul(Gtl213,gtu33)));
- CCTK_REAL Gtlu131 = Gtl113*gtu11 + Gtl123*gtu12 + Gtl133*gtu13;
+ CCTK_REAL_VEC Gtlu221 =
+ kmadd(Gtl212,gtu11,kmadd(Gtl222,gtu12,kmul(Gtl223,gtu13)));
- CCTK_REAL Gtlu132 = Gtl113*gtu12 + Gtl123*gtu22 + Gtl133*gtu23;
+ CCTK_REAL_VEC Gtlu222 =
+ kmadd(Gtl212,gtu12,kmadd(Gtl222,gtu22,kmul(Gtl223,gtu23)));
- CCTK_REAL Gtlu133 = Gtl113*gtu13 + Gtl123*gtu23 + Gtl133*gtu33;
+ CCTK_REAL_VEC Gtlu223 =
+ kmadd(Gtl212,gtu13,kmadd(Gtl222,gtu23,kmul(Gtl223,gtu33)));
- CCTK_REAL Gtlu211 = Gtl211*gtu11 + Gtl212*gtu12 + Gtl213*gtu13;
+ CCTK_REAL_VEC Gtlu231 =
+ kmadd(Gtl213,gtu11,kmadd(Gtl223,gtu12,kmul(Gtl233,gtu13)));
- CCTK_REAL Gtlu212 = Gtl211*gtu12 + Gtl212*gtu22 + Gtl213*gtu23;
+ CCTK_REAL_VEC Gtlu232 =
+ kmadd(Gtl213,gtu12,kmadd(Gtl223,gtu22,kmul(Gtl233,gtu23)));
- CCTK_REAL Gtlu213 = Gtl211*gtu13 + Gtl212*gtu23 + Gtl213*gtu33;
+ CCTK_REAL_VEC Gtlu233 =
+ kmadd(Gtl213,gtu13,kmadd(Gtl223,gtu23,kmul(Gtl233,gtu33)));
- CCTK_REAL Gtlu221 = Gtl212*gtu11 + Gtl222*gtu12 + Gtl223*gtu13;
+ CCTK_REAL_VEC Gtlu311 =
+ kmadd(Gtl311,gtu11,kmadd(Gtl312,gtu12,kmul(Gtl313,gtu13)));
- CCTK_REAL Gtlu222 = Gtl212*gtu12 + Gtl222*gtu22 + Gtl223*gtu23;
+ CCTK_REAL_VEC Gtlu312 =
+ kmadd(Gtl311,gtu12,kmadd(Gtl312,gtu22,kmul(Gtl313,gtu23)));
- CCTK_REAL Gtlu223 = Gtl212*gtu13 + Gtl222*gtu23 + Gtl223*gtu33;
+ CCTK_REAL_VEC Gtlu313 =
+ kmadd(Gtl311,gtu13,kmadd(Gtl312,gtu23,kmul(Gtl313,gtu33)));
- CCTK_REAL Gtlu231 = Gtl213*gtu11 + Gtl223*gtu12 + Gtl233*gtu13;
+ CCTK_REAL_VEC Gtlu321 =
+ kmadd(Gtl312,gtu11,kmadd(Gtl322,gtu12,kmul(Gtl323,gtu13)));
- CCTK_REAL Gtlu232 = Gtl213*gtu12 + Gtl223*gtu22 + Gtl233*gtu23;
+ CCTK_REAL_VEC Gtlu322 =
+ kmadd(Gtl312,gtu12,kmadd(Gtl322,gtu22,kmul(Gtl323,gtu23)));
- CCTK_REAL Gtlu233 = Gtl213*gtu13 + Gtl223*gtu23 + Gtl233*gtu33;
+ CCTK_REAL_VEC Gtlu323 =
+ kmadd(Gtl312,gtu13,kmadd(Gtl322,gtu23,kmul(Gtl323,gtu33)));
- CCTK_REAL Gtlu311 = Gtl311*gtu11 + Gtl312*gtu12 + Gtl313*gtu13;
+ CCTK_REAL_VEC Gtlu331 =
+ kmadd(Gtl313,gtu11,kmadd(Gtl323,gtu12,kmul(Gtl333,gtu13)));
- CCTK_REAL Gtlu312 = Gtl311*gtu12 + Gtl312*gtu22 + Gtl313*gtu23;
+ CCTK_REAL_VEC Gtlu332 =
+ kmadd(Gtl313,gtu12,kmadd(Gtl323,gtu22,kmul(Gtl333,gtu23)));
- CCTK_REAL Gtlu313 = Gtl311*gtu13 + Gtl312*gtu23 + Gtl313*gtu33;
+ CCTK_REAL_VEC Gtlu333 =
+ kmadd(Gtl313,gtu13,kmadd(Gtl323,gtu23,kmul(Gtl333,gtu33)));
- CCTK_REAL Gtlu321 = Gtl312*gtu11 + Gtl322*gtu12 + Gtl323*gtu13;
+ CCTK_REAL_VEC Gt111 =
+ kmadd(Gtl111,gtu11,kmadd(Gtl211,gtu12,kmul(Gtl311,gtu13)));
- CCTK_REAL Gtlu322 = Gtl312*gtu12 + Gtl322*gtu22 + Gtl323*gtu23;
+ CCTK_REAL_VEC Gt211 =
+ kmadd(Gtl111,gtu12,kmadd(Gtl211,gtu22,kmul(Gtl311,gtu23)));
- CCTK_REAL Gtlu323 = Gtl312*gtu13 + Gtl322*gtu23 + Gtl323*gtu33;
+ CCTK_REAL_VEC Gt311 =
+ kmadd(Gtl111,gtu13,kmadd(Gtl211,gtu23,kmul(Gtl311,gtu33)));
- CCTK_REAL Gtlu331 = Gtl313*gtu11 + Gtl323*gtu12 + Gtl333*gtu13;
+ CCTK_REAL_VEC Gt112 =
+ kmadd(Gtl112,gtu11,kmadd(Gtl212,gtu12,kmul(Gtl312,gtu13)));
- CCTK_REAL Gtlu332 = Gtl313*gtu12 + Gtl323*gtu22 + Gtl333*gtu23;
+ CCTK_REAL_VEC Gt212 =
+ kmadd(Gtl112,gtu12,kmadd(Gtl212,gtu22,kmul(Gtl312,gtu23)));
- CCTK_REAL Gtlu333 = Gtl313*gtu13 + Gtl323*gtu23 + Gtl333*gtu33;
+ CCTK_REAL_VEC Gt312 =
+ kmadd(Gtl112,gtu13,kmadd(Gtl212,gtu23,kmul(Gtl312,gtu33)));
- CCTK_REAL Gt111 = Gtl111*gtu11 + Gtl211*gtu12 + Gtl311*gtu13;
+ CCTK_REAL_VEC Gt113 =
+ kmadd(Gtl113,gtu11,kmadd(Gtl213,gtu12,kmul(Gtl313,gtu13)));
- CCTK_REAL Gt211 = Gtl111*gtu12 + Gtl211*gtu22 + Gtl311*gtu23;
+ CCTK_REAL_VEC Gt213 =
+ kmadd(Gtl113,gtu12,kmadd(Gtl213,gtu22,kmul(Gtl313,gtu23)));
- CCTK_REAL Gt311 = Gtl111*gtu13 + Gtl211*gtu23 + Gtl311*gtu33;
+ CCTK_REAL_VEC Gt313 =
+ kmadd(Gtl113,gtu13,kmadd(Gtl213,gtu23,kmul(Gtl313,gtu33)));
- CCTK_REAL Gt112 = Gtl112*gtu11 + Gtl212*gtu12 + Gtl312*gtu13;
+ CCTK_REAL_VEC Gt122 =
+ kmadd(Gtl122,gtu11,kmadd(Gtl222,gtu12,kmul(Gtl322,gtu13)));
- CCTK_REAL Gt212 = Gtl112*gtu12 + Gtl212*gtu22 + Gtl312*gtu23;
+ CCTK_REAL_VEC Gt222 =
+ kmadd(Gtl122,gtu12,kmadd(Gtl222,gtu22,kmul(Gtl322,gtu23)));
- CCTK_REAL Gt312 = Gtl112*gtu13 + Gtl212*gtu23 + Gtl312*gtu33;
+ CCTK_REAL_VEC Gt322 =
+ kmadd(Gtl122,gtu13,kmadd(Gtl222,gtu23,kmul(Gtl322,gtu33)));
- CCTK_REAL Gt113 = Gtl113*gtu11 + Gtl213*gtu12 + Gtl313*gtu13;
+ CCTK_REAL_VEC Gt123 =
+ kmadd(Gtl123,gtu11,kmadd(Gtl223,gtu12,kmul(Gtl323,gtu13)));
- CCTK_REAL Gt213 = Gtl113*gtu12 + Gtl213*gtu22 + Gtl313*gtu23;
+ CCTK_REAL_VEC Gt223 =
+ kmadd(Gtl123,gtu12,kmadd(Gtl223,gtu22,kmul(Gtl323,gtu23)));
- CCTK_REAL Gt313 = Gtl113*gtu13 + Gtl213*gtu23 + Gtl313*gtu33;
+ CCTK_REAL_VEC Gt323 =
+ kmadd(Gtl123,gtu13,kmadd(Gtl223,gtu23,kmul(Gtl323,gtu33)));
- CCTK_REAL Gt122 = Gtl122*gtu11 + Gtl222*gtu12 + Gtl322*gtu13;
+ CCTK_REAL_VEC Gt133 =
+ kmadd(Gtl133,gtu11,kmadd(Gtl233,gtu12,kmul(Gtl333,gtu13)));
- CCTK_REAL Gt222 = Gtl122*gtu12 + Gtl222*gtu22 + Gtl322*gtu23;
+ CCTK_REAL_VEC Gt233 =
+ kmadd(Gtl133,gtu12,kmadd(Gtl233,gtu22,kmul(Gtl333,gtu23)));
- CCTK_REAL Gt322 = Gtl122*gtu13 + Gtl222*gtu23 + Gtl322*gtu33;
+ CCTK_REAL_VEC Gt333 =
+ kmadd(Gtl133,gtu13,kmadd(Gtl233,gtu23,kmul(Gtl333,gtu33)));
- CCTK_REAL Gt123 = Gtl123*gtu11 + Gtl223*gtu12 + Gtl323*gtu13;
+ 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 Gt223 = Gtl123*gtu12 + Gtl223*gtu22 + Gtl323*gtu23;
+ 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 Gt323 = Gtl123*gtu13 + Gtl223*gtu23 + Gtl323*gtu33;
+ 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 Gt133 = Gtl133*gtu11 + Gtl233*gtu12 + Gtl333*gtu13;
+ 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 Gt233 = Gtl133*gtu12 + Gtl233*gtu22 + Gtl333*gtu23;
+ 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 Gt333 = Gtl133*gtu13 + Gtl233*gtu23 + Gtl333*gtu33;
+ 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 Xtn1 = Gt111*gtu11 + Gt122*gtu22 + 2*(Gt112*gtu12 +
- Gt113*gtu13 + Gt123*gtu23) + Gt133*gtu33;
+ 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 Xtn2 = Gt211*gtu11 + Gt222*gtu22 + 2*(Gt212*gtu12 +
- Gt213*gtu13 + Gt223*gtu23) + Gt233*gtu33;
+ 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 Xtn3 = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu12 +
- Gt313*gtu13 + Gt323*gtu23) + Gt333*gtu33;
+ 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 Rt11 = 0.5*(6*(Gt111*Gtlu111 + Gt112*Gtlu112 +
- Gt113*Gtlu113) + 4*(Gt211*Gtlu121 + Gt212*Gtlu122 + Gt213*Gtlu123 +
- Gt311*Gtlu131 + Gt312*Gtlu132 + Gt313*Gtlu133) -
- gtu11*PDstandardNth11gt11 - 2*gtu12*PDstandardNth12gt11 -
- 2*gtu13*PDstandardNth13gt11 + 2*(Gt211*Gtlu211 + Gt212*Gtlu212 +
- Gt213*Gtlu213 + Gt311*Gtlu311 + Gt312*Gtlu312 + Gt313*Gtlu313 +
- gt11L*PDstandardNth1Xt1) + 2*gt12L*PDstandardNth1Xt2 +
- 2*gt13L*PDstandardNth1Xt3 - gtu22*PDstandardNth22gt11 -
- 2*gtu23*PDstandardNth23gt11 - gtu33*PDstandardNth33gt11 + 2*Gtl111*Xtn1
- + 2*Gtl112*Xtn2 + 2*Gtl113*Xtn3);
+ CCTK_REAL_VEC fac1 =
+ IfThen(conformalMethod,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
- CCTK_REAL Rt12 = 0.5*(4*(Gt211*Gtlu221 + Gt212*Gtlu222 +
- Gt213*Gtlu223) + 2*(Gt112*Gtlu111 + Gt122*Gtlu112 + Gt123*Gtlu113 +
- Gt111*Gtlu121 + Gt212*Gtlu121 + Gt112*Gtlu122 + Gt222*Gtlu122 +
- Gt113*Gtlu123 + Gt223*Gtlu123 + Gt312*Gtlu131 + Gt322*Gtlu132 +
- Gt323*Gtlu133 + Gt111*Gtlu211 + Gt112*Gtlu212 + Gt113*Gtlu213 +
- Gt311*Gtlu231 + Gt312*Gtlu232 + Gt313*Gtlu233 + Gt311*Gtlu321 +
- Gt312*Gtlu322 + Gt313*Gtlu323) - gtu11*PDstandardNth11gt12 -
- 2*gtu12*PDstandardNth12gt12 - 2*gtu13*PDstandardNth13gt12 +
- gt12L*PDstandardNth1Xt1 + gt22L*PDstandardNth1Xt2 +
- gt23L*PDstandardNth1Xt3 - gtu22*PDstandardNth22gt12 -
- 2*gtu23*PDstandardNth23gt12 + gt11L*PDstandardNth2Xt1 +
- gt12L*PDstandardNth2Xt2 + gt13L*PDstandardNth2Xt3 -
- gtu33*PDstandardNth33gt12 + Gtl112*Xtn1 + Gtl211*Xtn1 + Gtl122*Xtn2 +
- Gtl212*Xtn2 + Gtl123*Xtn3 + Gtl213*Xtn3);
+ CCTK_REAL_VEC cdphi1 = kmul(fac1,JacPDstandardNth1phi);
- CCTK_REAL Rt13 = 0.5*(2*(Gt113*Gtlu111 + Gt123*Gtlu112 + Gt133*Gtlu113
- + Gt213*Gtlu121 + Gt223*Gtlu122 + Gt233*Gtlu123 + Gt111*Gtlu131 +
- Gt313*Gtlu131 + Gt112*Gtlu132 + Gt323*Gtlu132 + Gt113*Gtlu133 +
- Gt333*Gtlu133 + Gt211*Gtlu231 + Gt212*Gtlu232 + Gt213*Gtlu233 +
- Gt111*Gtlu311 + Gt112*Gtlu312 + Gt113*Gtlu313 + Gt211*Gtlu321 +
- Gt212*Gtlu322 + Gt213*Gtlu323) + 4*(Gt311*Gtlu331 + Gt312*Gtlu332 +
- Gt313*Gtlu333) - gtu11*PDstandardNth11gt13 -
- 2*gtu12*PDstandardNth12gt13 - 2*gtu13*PDstandardNth13gt13 +
- gt13L*PDstandardNth1Xt1 + gt23L*PDstandardNth1Xt2 +
- gt33L*PDstandardNth1Xt3 - gtu22*PDstandardNth22gt13 -
- 2*gtu23*PDstandardNth23gt13 - gtu33*PDstandardNth33gt13 +
- gt11L*PDstandardNth3Xt1 + gt12L*PDstandardNth3Xt2 +
- gt13L*PDstandardNth3Xt3 + Gtl113*Xtn1 + Gtl311*Xtn1 + Gtl123*Xtn2 +
- Gtl312*Xtn2 + Gtl133*Xtn3 + Gtl313*Xtn3);
+ CCTK_REAL_VEC cdphi2 = kmul(fac1,JacPDstandardNth2phi);
- CCTK_REAL Rt22 = 0.5*(6*(Gt212*Gtlu221 + Gt222*Gtlu222 +
- Gt223*Gtlu223) + 4*(Gt112*Gtlu211 + Gt122*Gtlu212 + Gt123*Gtlu213 +
- Gt312*Gtlu231 + Gt322*Gtlu232 + Gt323*Gtlu233) -
- gtu11*PDstandardNth11gt22 - 2*gtu12*PDstandardNth12gt22 -
- 2*gtu13*PDstandardNth13gt22 - gtu22*PDstandardNth22gt22 -
- 2*gtu23*PDstandardNth23gt22 + 2*(Gt112*Gtlu121 + Gt122*Gtlu122 +
- Gt123*Gtlu123 + Gt312*Gtlu321 + Gt322*Gtlu322 + Gt323*Gtlu323 +
- gt12L*PDstandardNth2Xt1) + 2*gt22L*PDstandardNth2Xt2 +
- 2*gt23L*PDstandardNth2Xt3 - gtu33*PDstandardNth33gt22 + 2*Gtl212*Xtn1 +
- 2*Gtl222*Xtn2 + 2*Gtl223*Xtn3);
-
- CCTK_REAL Rt23 = 0.5*(2*(Gt112*Gtlu131 + Gt122*Gtlu132 + Gt123*Gtlu133
- + Gt113*Gtlu211 + Gt123*Gtlu212 + Gt133*Gtlu213 + Gt213*Gtlu221 +
- Gt223*Gtlu222 + Gt233*Gtlu223 + Gt212*Gtlu231 + Gt313*Gtlu231 +
- Gt222*Gtlu232 + Gt323*Gtlu232 + Gt223*Gtlu233 + Gt333*Gtlu233 +
- Gt112*Gtlu311 + Gt122*Gtlu312 + Gt123*Gtlu313 + Gt212*Gtlu321 +
- Gt222*Gtlu322 + Gt223*Gtlu323) + 4*(Gt312*Gtlu331 + Gt322*Gtlu332 +
- Gt323*Gtlu333) - gtu11*PDstandardNth11gt23 -
- 2*gtu12*PDstandardNth12gt23 - 2*gtu13*PDstandardNth13gt23 -
- gtu22*PDstandardNth22gt23 - 2*gtu23*PDstandardNth23gt23 +
- gt13L*PDstandardNth2Xt1 + gt23L*PDstandardNth2Xt2 +
- gt33L*PDstandardNth2Xt3 - gtu33*PDstandardNth33gt23 +
- gt12L*PDstandardNth3Xt1 + gt22L*PDstandardNth3Xt2 +
- gt23L*PDstandardNth3Xt3 + Gtl213*Xtn1 + Gtl312*Xtn1 + Gtl223*Xtn2 +
- Gtl322*Xtn2 + Gtl233*Xtn3 + Gtl323*Xtn3);
-
- CCTK_REAL Rt33 = 0.5*(4*(Gt113*Gtlu311 + Gt123*Gtlu312 + Gt133*Gtlu313
- + Gt213*Gtlu321 + Gt223*Gtlu322 + Gt233*Gtlu323) + 6*(Gt313*Gtlu331 +
- Gt323*Gtlu332 + Gt333*Gtlu333) - gtu11*PDstandardNth11gt33 -
- 2*gtu12*PDstandardNth12gt33 - 2*gtu13*PDstandardNth13gt33 -
- gtu22*PDstandardNth22gt33 - 2*gtu23*PDstandardNth23gt33 -
- gtu33*PDstandardNth33gt33 + 2*(Gt113*Gtlu131 + Gt123*Gtlu132 +
- Gt133*Gtlu133 + Gt213*Gtlu231 + Gt223*Gtlu232 + Gt233*Gtlu233 +
- gt13L*PDstandardNth3Xt1) + 2*gt23L*PDstandardNth3Xt2 +
- 2*gt33L*PDstandardNth3Xt3 + 2*Gtl313*Xtn1 + 2*Gtl323*Xtn2 +
- 2*Gtl333*Xtn3);
-
- CCTK_REAL fac1 = IfThen(conformalMethod,-0.5*INV(phiL),1);
-
- CCTK_REAL cdphi1 = fac1*PDstandardNth1phi;
-
- CCTK_REAL cdphi2 = fac1*PDstandardNth2phi;
-
- CCTK_REAL cdphi3 = fac1*PDstandardNth3phi;
-
- CCTK_REAL fac2 = IfThen(conformalMethod,0.5*INV(SQR(phiL)),0);
-
- CCTK_REAL cdphi211 = -(fac1*(-PDstandardNth11phi +
- Gt111*PDstandardNth1phi + Gt211*PDstandardNth2phi +
- Gt311*PDstandardNth3phi)) + fac2*SQR(PDstandardNth1phi);
-
- CCTK_REAL cdphi212 = fac2*PDstandardNth1phi*PDstandardNth2phi -
- fac1*(-PDstandardNth12phi + Gt112*PDstandardNth1phi +
- Gt212*PDstandardNth2phi + Gt312*PDstandardNth3phi);
-
- CCTK_REAL cdphi213 = fac2*PDstandardNth1phi*PDstandardNth3phi -
- fac1*(-PDstandardNth13phi + Gt113*PDstandardNth1phi +
- Gt213*PDstandardNth2phi + Gt313*PDstandardNth3phi);
-
- CCTK_REAL cdphi222 = -(fac1*(Gt122*PDstandardNth1phi -
- PDstandardNth22phi + Gt222*PDstandardNth2phi +
- Gt322*PDstandardNth3phi)) + fac2*SQR(PDstandardNth2phi);
-
- CCTK_REAL cdphi223 = fac2*PDstandardNth2phi*PDstandardNth3phi -
- fac1*(Gt123*PDstandardNth1phi - PDstandardNth23phi +
- Gt223*PDstandardNth2phi + Gt323*PDstandardNth3phi);
-
- CCTK_REAL cdphi233 = -(fac1*(Gt133*PDstandardNth1phi +
- Gt233*PDstandardNth2phi - PDstandardNth33phi +
- Gt333*PDstandardNth3phi)) + fac2*SQR(PDstandardNth3phi);
-
- CCTK_REAL Rphi11 = -2*(cdphi211 + 2*(-1 + gt11L*gtu11)*SQR(cdphi1) +
- gt11L*(cdphi211*gtu11 + 4*(cdphi1*(cdphi2*gtu12 + cdphi3*gtu13) +
- cdphi2*cdphi3*gtu23) + cdphi233*gtu33 + gtu22*(cdphi222 +
- 2*SQR(cdphi2)) + 2*(cdphi212*gtu12 + cdphi213*gtu13 + cdphi223*gtu23 +
- gtu33*SQR(cdphi3))));
+ CCTK_REAL_VEC cdphi3 = kmul(fac1,JacPDstandardNth3phi);
- CCTK_REAL Rphi12 = -2*(cdphi212 + cdphi1*(cdphi2*(-2 + 4*gt12L*gtu12)
- + 4*cdphi3*gt12L*gtu13) + gt12L*(cdphi211*gtu11 + 4*cdphi2*cdphi3*gtu23
- + 2*(cdphi212*gtu12 + cdphi213*gtu13 + cdphi223*gtu23 +
- gtu11*SQR(cdphi1)) + gtu22*(cdphi222 + 2*SQR(cdphi2)) + gtu33*(cdphi233
- + 2*SQR(cdphi3))));
+ CCTK_REAL_VEC fac2 =
+ IfThen(conformalMethod,kmul(INV(SQR(phiL)),ToReal(0.5)),ToReal(0));
- CCTK_REAL Rphi13 = -2*(cdphi213 + cdphi1*(4*cdphi2*gt13L*gtu12 +
- cdphi3*(-2 + 4*gt13L*gtu13)) + gt13L*(cdphi211*gtu11 +
- 4*cdphi2*cdphi3*gtu23 + 2*(cdphi212*gtu12 + cdphi213*gtu13 +
- cdphi223*gtu23 + gtu11*SQR(cdphi1)) + gtu22*(cdphi222 + 2*SQR(cdphi2))
- + gtu33*(cdphi233 + 2*SQR(cdphi3))));
+ CCTK_REAL_VEC cdphi211 =
+ kmadd(fac2,SQR(JacPDstandardNth1phi),kmul(fac1,ksub(JacPDstandardNth11phi,kmadd(Gt111,JacPDstandardNth1phi,kmadd(Gt311,JacPDstandardNth3phi,kmul(Gt211,JacPDstandardNth2phi))))));
- CCTK_REAL Rphi22 = -2*(cdphi222 + 2*(-1 + gt22L*gtu22)*SQR(cdphi2) +
- gt22L*(cdphi222*gtu22 + 4*(cdphi1*cdphi3*gtu13 + cdphi2*(cdphi1*gtu12 +
- cdphi3*gtu23)) + cdphi233*gtu33 + gtu11*(cdphi211 + 2*SQR(cdphi1)) +
- 2*(cdphi212*gtu12 + cdphi213*gtu13 + cdphi223*gtu23 +
- gtu33*SQR(cdphi3))));
+ CCTK_REAL_VEC cdphi212 =
+ kmadd(fac2,kmul(JacPDstandardNth1phi,JacPDstandardNth2phi),kmul(fac1,ksub(JacPDstandardNth12phi,kmadd(Gt112,JacPDstandardNth1phi,kmadd(Gt312,JacPDstandardNth3phi,kmul(Gt212,JacPDstandardNth2phi))))));
- CCTK_REAL Rphi23 = -2*(cdphi223 + cdphi2*(4*cdphi1*gt23L*gtu12 +
- cdphi3*(-2 + 4*gt23L*gtu23)) + gt23L*(4*cdphi1*cdphi3*gtu13 +
- cdphi222*gtu22 + gtu11*(cdphi211 + 2*SQR(cdphi1)) + 2*(cdphi212*gtu12 +
- cdphi213*gtu13 + cdphi223*gtu23 + gtu22*SQR(cdphi2)) + gtu33*(cdphi233
- + 2*SQR(cdphi3))));
+ CCTK_REAL_VEC cdphi213 =
+ kmadd(fac2,kmul(JacPDstandardNth1phi,JacPDstandardNth3phi),kmul(fac1,ksub(JacPDstandardNth13phi,kmadd(Gt113,JacPDstandardNth1phi,kmadd(Gt313,JacPDstandardNth3phi,kmul(Gt213,JacPDstandardNth2phi))))));
- CCTK_REAL Rphi33 = -2*(cdphi233 + gt33L*((4*cdphi1*cdphi2 +
- 2*cdphi212)*gtu12 + 4*cdphi3*(cdphi1*gtu13 + cdphi2*gtu23) +
- 2*(cdphi213*gtu13 + cdphi223*gtu23) + cdphi233*gtu33 + gtu11*(cdphi211
- + 2*SQR(cdphi1)) + gtu22*(cdphi222 + 2*SQR(cdphi2))) + 2*(-1 +
- gt33L*gtu33)*SQR(cdphi3));
+ CCTK_REAL_VEC cdphi222 =
+ kmsub(fac2,SQR(JacPDstandardNth2phi),kmul(fac1,kmadd(Gt122,JacPDstandardNth1phi,kmadd(Gt222,JacPDstandardNth2phi,kmsub(Gt322,JacPDstandardNth3phi,JacPDstandardNth22phi)))));
- CCTK_REAL e4phi = IfThen(conformalMethod,INV(SQR(phiL)),exp(4*phiL));
+ CCTK_REAL_VEC cdphi223 =
+ kmsub(fac2,kmul(JacPDstandardNth2phi,JacPDstandardNth3phi),kmul(fac1,kmadd(Gt123,JacPDstandardNth1phi,kmadd(Gt223,JacPDstandardNth2phi,kmsub(Gt323,JacPDstandardNth3phi,JacPDstandardNth23phi)))));
- CCTK_REAL em4phi = INV(e4phi);
+ CCTK_REAL_VEC cdphi233 =
+ kmsub(fac2,SQR(JacPDstandardNth3phi),kmul(fac1,kmadd(Gt133,JacPDstandardNth1phi,kmadd(Gt233,JacPDstandardNth2phi,kmsub(Gt333,JacPDstandardNth3phi,JacPDstandardNth33phi)))));
- CCTK_REAL gu11 = em4phi*gtu11;
+ 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 gu12 = em4phi*gtu12;
+ 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(cdphi3,kmul(gt12L,kmul(gtu13,ToReal(4))),kmul(cdphi2,kmadd(gt12L,kmul(gtu12,ToReal(4)),ToReal(-2))))))));
- CCTK_REAL gu13 = em4phi*gtu13;
+ 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(cdphi2,kmul(gt13L,kmul(gtu12,ToReal(4))),kmul(cdphi3,kmadd(gt13L,kmul(gtu13,ToReal(4)),ToReal(-2))))))));
- CCTK_REAL gu22 = em4phi*gtu22;
+ 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 gu23 = em4phi*gtu23;
+ 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(cdphi1,kmul(gt23L,kmul(gtu12,ToReal(4))),kmul(cdphi3,kmadd(gt23L,kmul(gtu23,ToReal(4)),ToReal(-2))))))));
- CCTK_REAL gu33 = em4phi*gtu33;
+ 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 R11 = Rphi11 + Rt11;
+ CCTK_REAL_VEC e4phi =
+ IfThen(conformalMethod,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
- CCTK_REAL R12 = Rphi12 + Rt12;
+ CCTK_REAL_VEC em4phi = INV(e4phi);
- CCTK_REAL R13 = Rphi13 + Rt13;
+ CCTK_REAL_VEC gu11 = kmul(em4phi,gtu11);
- CCTK_REAL R22 = Rphi22 + Rt22;
+ CCTK_REAL_VEC gu12 = kmul(em4phi,gtu12);
- CCTK_REAL R23 = Rphi23 + Rt23;
+ CCTK_REAL_VEC gu13 = kmul(em4phi,gtu13);
- CCTK_REAL R33 = Rphi33 + Rt33;
+ CCTK_REAL_VEC gu22 = kmul(em4phi,gtu22);
- CCTK_REAL trR = gu11*R11 + gu22*R22 + 2*(gu12*R12 + gu13*R13 +
- gu23*R23) + gu33*R33;
+ CCTK_REAL_VEC gu23 = kmul(em4phi,gtu23);
- CCTK_REAL Atm11 = At11L*gtu11 + At12L*gtu12 + At13L*gtu13;
+ CCTK_REAL_VEC gu33 = kmul(em4phi,gtu33);
- CCTK_REAL Atm21 = At11L*gtu12 + At12L*gtu22 + At13L*gtu23;
+ CCTK_REAL_VEC R11 = kadd(Rphi11,Rt11);
- CCTK_REAL Atm31 = At11L*gtu13 + At12L*gtu23 + At13L*gtu33;
+ CCTK_REAL_VEC R12 = kadd(Rphi12,Rt12);
- CCTK_REAL Atm12 = At12L*gtu11 + At22L*gtu12 + At23L*gtu13;
+ CCTK_REAL_VEC R13 = kadd(Rphi13,Rt13);
- CCTK_REAL Atm22 = At12L*gtu12 + At22L*gtu22 + At23L*gtu23;
+ CCTK_REAL_VEC R22 = kadd(Rphi22,Rt22);
- CCTK_REAL Atm32 = At12L*gtu13 + At22L*gtu23 + At23L*gtu33;
+ CCTK_REAL_VEC R23 = kadd(Rphi23,Rt23);
- CCTK_REAL Atm13 = At13L*gtu11 + At23L*gtu12 + At33L*gtu13;
+ CCTK_REAL_VEC R33 = kadd(Rphi33,Rt33);
- CCTK_REAL Atm23 = At13L*gtu12 + At23L*gtu22 + At33L*gtu23;
+ 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 Atm33 = At13L*gtu13 + At23L*gtu23 + At33L*gtu33;
+ CCTK_REAL_VEC Atm11 =
+ kmadd(At11L,gtu11,kmadd(At12L,gtu12,kmul(At13L,gtu13)));
- CCTK_REAL rho = INV(SQR(alphaL))*(eTttL - 2*(beta2L*eTtyL +
- beta3L*eTtzL) + 2*(beta1L*(-eTtxL + beta2L*eTxyL + beta3L*eTxzL) +
- beta2L*beta3L*eTyzL) + eTxxL*SQR(beta1L) + eTyyL*SQR(beta2L) +
- eTzzL*SQR(beta3L));
+ CCTK_REAL_VEC Atm21 =
+ kmadd(At11L,gtu12,kmadd(At12L,gtu22,kmul(At13L,gtu23)));
- CCTK_REAL HL = -2.*(Atm12*Atm21 + Atm13*Atm31 + Atm23*Atm32) -
- 50.26548245743669181540229413247204614715*rho + trR - 1.*(SQR(Atm11) +
- SQR(Atm22) + SQR(Atm33)) +
- 0.6666666666666666666666666666666666666667*SQR(trKL);
+ CCTK_REAL_VEC Atm31 =
+ kmadd(At11L,gtu13,kmadd(At12L,gtu23,kmul(At13L,gtu33)));
- /* Copy local copies back to grid functions */
- H[index] = HL;
+ 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(rho,ToReal(-50.26548245743669181540229413247204614715),kmadd(kmadd(Atm12,Atm21,kmadd(Atm13,Atm31,kmul(Atm23,Atm32))),ToReal(-2.),kmadd(kadd(SQR(Atm11),kadd(SQR(Atm22),SQR(Atm33))),ToReal(-1.),kmul(SQR(trKL),ToReal(0.6666666666666666666666666666666666666667))))));
+
+ /* 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);
+ 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);
+ 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);
+ break;
+ }
+ vec_store_nta(H[index],HL);
}
- LC_ENDLOOP3 (ML_BSSN_O2_constraints1);
+ LC_ENDLOOP3VEC (ML_BSSN_O2_constraints1);
}
extern "C" void ML_BSSN_O2_constraints1(CCTK_ARGUMENTS)
@@ -615,5 +1596,43 @@ extern "C" void ML_BSSN_O2_constraints1(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O2_constraints1_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_O2_constraints1_calc_every != ML_BSSN_O2_constraints1_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN_O2::ML_curv","ML_BSSN_O2::ML_Gamma","ML_BSSN_O2::ML_Ham","ML_BSSN_O2::ML_lapse","ML_BSSN_O2::ML_log_confac","ML_BSSN_O2::ML_metric","ML_BSSN_O2::ML_shift","ML_BSSN_O2::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O2_constraints1", 8, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O2_constraints1", 1, 1, 1);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O2_constraints1", 2, 2, 2);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O2_constraints1", 3, 3, 3);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O2_constraints1", 4, 4, 4);
+ break;
+ }
+
GenericFD_LoopOverInterior(cctkGH, &ML_BSSN_O2_constraints1_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_O2_constraints1_Body");
+ }
}
diff --git a/ML_BSSN_O2/src/ML_BSSN_O2_constraints2.cc b/ML_BSSN_O2/src/ML_BSSN_O2_constraints2.cc
index bfa55fa..b17e55a 100644
--- a/ML_BSSN_O2/src/ML_BSSN_O2_constraints2.cc
+++ b/ML_BSSN_O2/src/ML_BSSN_O2_constraints2.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_O2_constraints2_SelectBCs(CCTK_ARGUMENTS)
{
@@ -42,7 +43,7 @@ extern "C" void ML_BSSN_O2_constraints2_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_BSSN_O2_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_O2_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;
@@ -50,21 +51,6 @@ static void ML_BSSN_O2_constraints2_Body(cGH const * restrict const cctkGH, int
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O2_constraints2_Body");
- }
-
- if (cctk_iteration % ML_BSSN_O2_constraints2_calc_every != ML_BSSN_O2_constraints2_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN_O2::ML_cons_detg","ML_BSSN_O2::ML_cons_Gamma","ML_BSSN_O2::ML_cons_traceA","ML_BSSN_O2::ML_curv","ML_BSSN_O2::ML_Gamma","ML_BSSN_O2::ML_lapse","ML_BSSN_O2::ML_log_confac","ML_BSSN_O2::ML_metric","ML_BSSN_O2::ML_mom","ML_BSSN_O2::ML_shift","ML_BSSN_O2::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O2_constraints2", 11, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O2_constraints2", 1, 1, 1);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -74,93 +60,202 @@ static void ML_BSSN_O2_constraints2_Body(cGH const * restrict const cctkGH, int
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o16dx = 0.0625*INV(dx);
- CCTK_REAL const p1o16dy = 0.0625*INV(dy);
- CCTK_REAL const p1o16dz = 0.0625*INV(dz);
- CCTK_REAL const p1o2dx = 0.5*INV(dx);
- CCTK_REAL const p1o2dy = 0.5*INV(dy);
- CCTK_REAL const p1o2dz = 0.5*INV(dz);
- CCTK_REAL const p1o4dx = 0.25*INV(dx);
- CCTK_REAL const p1o4dxdy = 0.25*INV(dx)*INV(dy);
- CCTK_REAL const p1o4dxdz = 0.25*INV(dx)*INV(dz);
- CCTK_REAL const p1o4dy = 0.25*INV(dy);
- CCTK_REAL const p1o4dydz = 0.25*INV(dy)*INV(dz);
- CCTK_REAL const p1o4dz = 0.25*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1odx2 = INV(SQR(dx));
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1ody2 = INV(SQR(dy));
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const p1odz2 = INV(SQR(dz));
- CCTK_REAL const pm1o2dx = -0.5*INV(dx);
- CCTK_REAL const pm1o2dy = -0.5*INV(dy);
- CCTK_REAL const pm1o2dz = -0.5*INV(dz);
- CCTK_REAL const pm1o4dx = -0.25*INV(dx);
- CCTK_REAL const pm1o4dy = -0.25*INV(dy);
- CCTK_REAL const pm1o4dz = -0.25*INV(dz);
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_O2_constraints2,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_O2_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 alphaL = alpha[index];
- CCTK_REAL At11L = At11[index];
- CCTK_REAL At12L = At12[index];
- CCTK_REAL At13L = At13[index];
- CCTK_REAL At22L = At22[index];
- CCTK_REAL At23L = At23[index];
- CCTK_REAL At33L = At33[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL gt11L = gt11[index];
- CCTK_REAL gt12L = gt12[index];
- CCTK_REAL gt13L = gt13[index];
- CCTK_REAL gt22L = gt22[index];
- CCTK_REAL gt23L = gt23[index];
- CCTK_REAL gt33L = gt33[index];
- CCTK_REAL phiL = phi[index];
- CCTK_REAL trKL = trK[index];
- CCTK_REAL Xt1L = Xt1[index];
- CCTK_REAL Xt2L = Xt2[index];
- CCTK_REAL Xt3L = Xt3[index];
-
- CCTK_REAL eTtxL, eTtyL, eTtzL, eTxxL, eTxyL, eTxzL, eTyyL, eTyzL, eTzzL;
+ 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 = eTtx[index];
- eTtyL = eTty[index];
- eTtzL = eTtz[index];
- eTxxL = eTxx[index];
- eTxyL = eTxy[index];
- eTxzL = eTxz[index];
- eTyyL = eTyy[index];
- eTyzL = eTyz[index];
- eTzzL = eTzz[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
{
@@ -175,239 +270,724 @@ static void ML_BSSN_O2_constraints2_Body(cGH const * restrict const cctkGH, int
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 const PDstandardNth1At11 = PDstandardNth1(&At11[index]);
- CCTK_REAL const PDstandardNth2At11 = PDstandardNth2(&At11[index]);
- CCTK_REAL const PDstandardNth3At11 = PDstandardNth3(&At11[index]);
- CCTK_REAL const PDstandardNth1At12 = PDstandardNth1(&At12[index]);
- CCTK_REAL const PDstandardNth2At12 = PDstandardNth2(&At12[index]);
- CCTK_REAL const PDstandardNth3At12 = PDstandardNth3(&At12[index]);
- CCTK_REAL const PDstandardNth1At13 = PDstandardNth1(&At13[index]);
- CCTK_REAL const PDstandardNth2At13 = PDstandardNth2(&At13[index]);
- CCTK_REAL const PDstandardNth3At13 = PDstandardNth3(&At13[index]);
- CCTK_REAL const PDstandardNth1At22 = PDstandardNth1(&At22[index]);
- CCTK_REAL const PDstandardNth2At22 = PDstandardNth2(&At22[index]);
- CCTK_REAL const PDstandardNth3At22 = PDstandardNth3(&At22[index]);
- CCTK_REAL const PDstandardNth1At23 = PDstandardNth1(&At23[index]);
- CCTK_REAL const PDstandardNth2At23 = PDstandardNth2(&At23[index]);
- CCTK_REAL const PDstandardNth3At23 = PDstandardNth3(&At23[index]);
- CCTK_REAL const PDstandardNth1At33 = PDstandardNth1(&At33[index]);
- CCTK_REAL const PDstandardNth2At33 = PDstandardNth2(&At33[index]);
- CCTK_REAL const PDstandardNth3At33 = PDstandardNth3(&At33[index]);
- CCTK_REAL const PDstandardNth1gt11 = PDstandardNth1(&gt11[index]);
- CCTK_REAL const PDstandardNth2gt11 = PDstandardNth2(&gt11[index]);
- CCTK_REAL const PDstandardNth3gt11 = PDstandardNth3(&gt11[index]);
- CCTK_REAL const PDstandardNth1gt12 = PDstandardNth1(&gt12[index]);
- CCTK_REAL const PDstandardNth2gt12 = PDstandardNth2(&gt12[index]);
- CCTK_REAL const PDstandardNth3gt12 = PDstandardNth3(&gt12[index]);
- CCTK_REAL const PDstandardNth1gt13 = PDstandardNth1(&gt13[index]);
- CCTK_REAL const PDstandardNth2gt13 = PDstandardNth2(&gt13[index]);
- CCTK_REAL const PDstandardNth3gt13 = PDstandardNth3(&gt13[index]);
- CCTK_REAL const PDstandardNth1gt22 = PDstandardNth1(&gt22[index]);
- CCTK_REAL const PDstandardNth2gt22 = PDstandardNth2(&gt22[index]);
- CCTK_REAL const PDstandardNth3gt22 = PDstandardNth3(&gt22[index]);
- CCTK_REAL const PDstandardNth1gt23 = PDstandardNth1(&gt23[index]);
- CCTK_REAL const PDstandardNth2gt23 = PDstandardNth2(&gt23[index]);
- CCTK_REAL const PDstandardNth3gt23 = PDstandardNth3(&gt23[index]);
- CCTK_REAL const PDstandardNth1gt33 = PDstandardNth1(&gt33[index]);
- CCTK_REAL const PDstandardNth2gt33 = PDstandardNth2(&gt33[index]);
- CCTK_REAL const PDstandardNth3gt33 = PDstandardNth3(&gt33[index]);
- CCTK_REAL const PDstandardNth1phi = PDstandardNth1(&phi[index]);
- CCTK_REAL const PDstandardNth2phi = PDstandardNth2(&phi[index]);
- CCTK_REAL const PDstandardNth3phi = PDstandardNth3(&phi[index]);
- CCTK_REAL const PDstandardNth1trK = PDstandardNth1(&trK[index]);
- CCTK_REAL const PDstandardNth2trK = PDstandardNth2(&trK[index]);
- CCTK_REAL const PDstandardNth3trK = PDstandardNth3(&trK[index]);
+ 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 detgt = 1;
+ 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 gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L));
+ CCTK_REAL_VEC gtu13 =
+ kmul(INV(detgt),kmsub(gt12L,gt23L,kmul(gt13L,gt22L)));
- CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt);
+ CCTK_REAL_VEC gtu22 = kmul(INV(detgt),kmsub(gt11L,gt33L,SQR(gt13L)));
- CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC gtu23 =
+ kmul(INV(detgt),kmsub(gt12L,gt13L,kmul(gt11L,gt23L)));
- CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L));
+ CCTK_REAL_VEC gtu33 = kmul(INV(detgt),kmsub(gt11L,gt22L,SQR(gt12L)));
- CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC Gtl111 = kmul(JacPDstandardNth1gt11,ToReal(0.5));
- CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L));
+ CCTK_REAL_VEC Gtl112 = kmul(JacPDstandardNth2gt11,ToReal(0.5));
- CCTK_REAL Gtl111 = 0.5*PDstandardNth1gt11;
+ CCTK_REAL_VEC Gtl113 = kmul(JacPDstandardNth3gt11,ToReal(0.5));
- CCTK_REAL Gtl112 = 0.5*PDstandardNth2gt11;
+ CCTK_REAL_VEC Gtl122 =
+ kmadd(JacPDstandardNth1gt22,ToReal(-0.5),JacPDstandardNth2gt12);
- CCTK_REAL Gtl113 = 0.5*PDstandardNth3gt11;
+ CCTK_REAL_VEC Gtl123 =
+ kmul(kadd(JacPDstandardNth2gt13,ksub(JacPDstandardNth3gt12,JacPDstandardNth1gt23)),ToReal(0.5));
- CCTK_REAL Gtl122 = -0.5*PDstandardNth1gt22 + PDstandardNth2gt12;
+ CCTK_REAL_VEC Gtl133 =
+ kmadd(JacPDstandardNth1gt33,ToReal(-0.5),JacPDstandardNth3gt13);
- CCTK_REAL Gtl123 = 0.5*(-PDstandardNth1gt23 + PDstandardNth2gt13 +
- PDstandardNth3gt12);
+ CCTK_REAL_VEC Gtl211 =
+ kmadd(JacPDstandardNth2gt11,ToReal(-0.5),JacPDstandardNth1gt12);
- CCTK_REAL Gtl133 = -0.5*PDstandardNth1gt33 + PDstandardNth3gt13;
+ CCTK_REAL_VEC Gtl212 = kmul(JacPDstandardNth1gt22,ToReal(0.5));
- CCTK_REAL Gtl211 = PDstandardNth1gt12 - 0.5*PDstandardNth2gt11;
+ CCTK_REAL_VEC Gtl213 =
+ kmul(kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth3gt12,JacPDstandardNth2gt13)),ToReal(0.5));
- CCTK_REAL Gtl212 = 0.5*PDstandardNth1gt22;
+ CCTK_REAL_VEC Gtl222 = kmul(JacPDstandardNth2gt22,ToReal(0.5));
- CCTK_REAL Gtl213 = 0.5*(PDstandardNth1gt23 - PDstandardNth2gt13 +
- PDstandardNth3gt12);
+ CCTK_REAL_VEC Gtl223 = kmul(JacPDstandardNth3gt22,ToReal(0.5));
- CCTK_REAL Gtl222 = 0.5*PDstandardNth2gt22;
+ CCTK_REAL_VEC Gtl233 =
+ kmadd(JacPDstandardNth2gt33,ToReal(-0.5),JacPDstandardNth3gt23);
- CCTK_REAL Gtl223 = 0.5*PDstandardNth3gt22;
+ CCTK_REAL_VEC Gtl311 =
+ kmadd(JacPDstandardNth3gt11,ToReal(-0.5),JacPDstandardNth1gt13);
- CCTK_REAL Gtl233 = -0.5*PDstandardNth2gt33 + PDstandardNth3gt23;
+ CCTK_REAL_VEC Gtl312 =
+ kmul(kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth2gt13,JacPDstandardNth3gt12)),ToReal(0.5));
- CCTK_REAL Gtl311 = PDstandardNth1gt13 - 0.5*PDstandardNth3gt11;
+ CCTK_REAL_VEC Gtl313 = kmul(JacPDstandardNth1gt33,ToReal(0.5));
- CCTK_REAL Gtl312 = 0.5*(PDstandardNth1gt23 + PDstandardNth2gt13 -
- PDstandardNth3gt12);
+ CCTK_REAL_VEC Gtl322 =
+ kmadd(JacPDstandardNth3gt22,ToReal(-0.5),JacPDstandardNth2gt23);
- CCTK_REAL Gtl313 = 0.5*PDstandardNth1gt33;
+ CCTK_REAL_VEC Gtl323 = kmul(JacPDstandardNth2gt33,ToReal(0.5));
- CCTK_REAL Gtl322 = PDstandardNth2gt23 - 0.5*PDstandardNth3gt22;
+ CCTK_REAL_VEC Gtl333 = kmul(JacPDstandardNth3gt33,ToReal(0.5));
- CCTK_REAL Gtl323 = 0.5*PDstandardNth2gt33;
+ CCTK_REAL_VEC Gt111 =
+ kmadd(Gtl111,gtu11,kmadd(Gtl211,gtu12,kmul(Gtl311,gtu13)));
- CCTK_REAL Gtl333 = 0.5*PDstandardNth3gt33;
+ CCTK_REAL_VEC Gt211 =
+ kmadd(Gtl111,gtu12,kmadd(Gtl211,gtu22,kmul(Gtl311,gtu23)));
- CCTK_REAL Gt111 = Gtl111*gtu11 + Gtl211*gtu12 + Gtl311*gtu13;
+ CCTK_REAL_VEC Gt311 =
+ kmadd(Gtl111,gtu13,kmadd(Gtl211,gtu23,kmul(Gtl311,gtu33)));
- CCTK_REAL Gt211 = Gtl111*gtu12 + Gtl211*gtu22 + Gtl311*gtu23;
+ CCTK_REAL_VEC Gt112 =
+ kmadd(Gtl112,gtu11,kmadd(Gtl212,gtu12,kmul(Gtl312,gtu13)));
- CCTK_REAL Gt311 = Gtl111*gtu13 + Gtl211*gtu23 + Gtl311*gtu33;
+ CCTK_REAL_VEC Gt212 =
+ kmadd(Gtl112,gtu12,kmadd(Gtl212,gtu22,kmul(Gtl312,gtu23)));
- CCTK_REAL Gt112 = Gtl112*gtu11 + Gtl212*gtu12 + Gtl312*gtu13;
+ CCTK_REAL_VEC Gt312 =
+ kmadd(Gtl112,gtu13,kmadd(Gtl212,gtu23,kmul(Gtl312,gtu33)));
- CCTK_REAL Gt212 = Gtl112*gtu12 + Gtl212*gtu22 + Gtl312*gtu23;
+ CCTK_REAL_VEC Gt113 =
+ kmadd(Gtl113,gtu11,kmadd(Gtl213,gtu12,kmul(Gtl313,gtu13)));
- CCTK_REAL Gt312 = Gtl112*gtu13 + Gtl212*gtu23 + Gtl312*gtu33;
+ CCTK_REAL_VEC Gt213 =
+ kmadd(Gtl113,gtu12,kmadd(Gtl213,gtu22,kmul(Gtl313,gtu23)));
- CCTK_REAL Gt113 = Gtl113*gtu11 + Gtl213*gtu12 + Gtl313*gtu13;
+ CCTK_REAL_VEC Gt313 =
+ kmadd(Gtl113,gtu13,kmadd(Gtl213,gtu23,kmul(Gtl313,gtu33)));
- CCTK_REAL Gt213 = Gtl113*gtu12 + Gtl213*gtu22 + Gtl313*gtu23;
+ CCTK_REAL_VEC Gt122 =
+ kmadd(Gtl122,gtu11,kmadd(Gtl222,gtu12,kmul(Gtl322,gtu13)));
- CCTK_REAL Gt313 = Gtl113*gtu13 + Gtl213*gtu23 + Gtl313*gtu33;
+ CCTK_REAL_VEC Gt222 =
+ kmadd(Gtl122,gtu12,kmadd(Gtl222,gtu22,kmul(Gtl322,gtu23)));
- CCTK_REAL Gt122 = Gtl122*gtu11 + Gtl222*gtu12 + Gtl322*gtu13;
+ CCTK_REAL_VEC Gt322 =
+ kmadd(Gtl122,gtu13,kmadd(Gtl222,gtu23,kmul(Gtl322,gtu33)));
- CCTK_REAL Gt222 = Gtl122*gtu12 + Gtl222*gtu22 + Gtl322*gtu23;
+ CCTK_REAL_VEC Gt123 =
+ kmadd(Gtl123,gtu11,kmadd(Gtl223,gtu12,kmul(Gtl323,gtu13)));
- CCTK_REAL Gt322 = Gtl122*gtu13 + Gtl222*gtu23 + Gtl322*gtu33;
+ CCTK_REAL_VEC Gt223 =
+ kmadd(Gtl123,gtu12,kmadd(Gtl223,gtu22,kmul(Gtl323,gtu23)));
- CCTK_REAL Gt123 = Gtl123*gtu11 + Gtl223*gtu12 + Gtl323*gtu13;
+ CCTK_REAL_VEC Gt323 =
+ kmadd(Gtl123,gtu13,kmadd(Gtl223,gtu23,kmul(Gtl323,gtu33)));
- CCTK_REAL Gt223 = Gtl123*gtu12 + Gtl223*gtu22 + Gtl323*gtu23;
+ CCTK_REAL_VEC Gt133 =
+ kmadd(Gtl133,gtu11,kmadd(Gtl233,gtu12,kmul(Gtl333,gtu13)));
- CCTK_REAL Gt323 = Gtl123*gtu13 + Gtl223*gtu23 + Gtl323*gtu33;
+ CCTK_REAL_VEC Gt233 =
+ kmadd(Gtl133,gtu12,kmadd(Gtl233,gtu22,kmul(Gtl333,gtu23)));
- CCTK_REAL Gt133 = Gtl133*gtu11 + Gtl233*gtu12 + Gtl333*gtu13;
+ CCTK_REAL_VEC Gt333 =
+ kmadd(Gtl133,gtu13,kmadd(Gtl233,gtu23,kmul(Gtl333,gtu33)));
- CCTK_REAL Gt233 = Gtl133*gtu12 + Gtl233*gtu22 + Gtl333*gtu23;
+ CCTK_REAL_VEC fac1 =
+ IfThen(conformalMethod,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
- CCTK_REAL Gt333 = Gtl133*gtu13 + Gtl233*gtu23 + Gtl333*gtu33;
+ CCTK_REAL_VEC cdphi1 = kmul(fac1,JacPDstandardNth1phi);
- CCTK_REAL fac1 = IfThen(conformalMethod,-0.5*INV(phiL),1);
+ CCTK_REAL_VEC cdphi2 = kmul(fac1,JacPDstandardNth2phi);
- CCTK_REAL cdphi1 = fac1*PDstandardNth1phi;
+ CCTK_REAL_VEC cdphi3 = kmul(fac1,JacPDstandardNth3phi);
- CCTK_REAL cdphi2 = fac1*PDstandardNth2phi;
+ CCTK_REAL_VEC S1 =
+ kmul(INV(alphaL),kmadd(beta1L,eTxxL,kmadd(beta2L,eTxyL,kmsub(beta3L,eTxzL,eTtxL))));
- CCTK_REAL cdphi3 = fac1*PDstandardNth3phi;
+ CCTK_REAL_VEC S2 =
+ kmul(INV(alphaL),kmadd(beta1L,eTxyL,kmadd(beta2L,eTyyL,kmsub(beta3L,eTyzL,eTtyL))));
- CCTK_REAL S1 = (-eTtxL + beta1L*eTxxL + beta2L*eTxyL +
- beta3L*eTxzL)*INV(alphaL);
+ CCTK_REAL_VEC S3 =
+ kmul(INV(alphaL),kmadd(beta1L,eTxzL,kmadd(beta2L,eTyzL,kmsub(beta3L,eTzzL,eTtzL))));
- CCTK_REAL S2 = (-eTtyL + beta1L*eTxyL + beta2L*eTyyL +
- beta3L*eTyzL)*INV(alphaL);
+ CCTK_REAL_VEC M1L =
+ kmadd(gtu11,JacPDstandardNth1At11,kmadd(gtu22,JacPDstandardNth2At12,kmadd(gtu23,kadd(JacPDstandardNth2At13,JacPDstandardNth3At12),kmadd(gtu33,JacPDstandardNth3At13,kmadd(S1,ToReal(-25.13274122871834590770114706623602307358),kmadd(kmadd(kmadd(At22L,Gt212,kmul(At23L,Gt312)),gtu22,kmadd(kmadd(At13L,Gt112,kmadd(At22L,Gt213,kmadd(At33L,Gt312,kmul(At23L,kadd(Gt212,Gt313))))),gtu23,kmul(kmadd(At13L,Gt113,kmadd(At23L,Gt213,kmul(At33L,Gt313))),gtu33))),ToReal(-1.),kmadd(gtu12,kadd(JacPDstandardNth1At12,kadd(JacPDstandardNth2At11,kmadd(At13L,kmul(Gt312,ToReal(-3.)),kmul(At22L,kmul(Gt211,ToReal(-1.)))))),kmadd(gtu13,kadd(JacPDstandardNth1At13,kadd(JacPDstandardNth3At11,kmadd(At13L,kmul(Gt313,ToReal(-3.)),kmul(At23L,kmul(Gt211,ToReal(-1.)))))),kmadd(Gt311,kmadd(At13L,kmul(gtu11,ToReal(-2.)),kmul(kmadd(At23L,gtu12,kmul(At33L,gtu13)),ToReal(-1.))),kmadd(JacPDstandardNth1trK,ToReal(-0.6666666666666666666666666666666666666667),kmadd(At13L,kmadd(kmadd(Gt322,gtu22,kmul(Gt333,gtu33)),ToReal(-1.),kmadd(cdphi3,kmul(gtu33,ToReal(6.)),kmadd(gtu13,kmadd(Gt111,ToReal(-1.),kmul(cdphi1,ToReal(6.))),kmul(gtu23,kmadd(Gt323,ToReal(-2.),kmul(cdphi2,ToReal(6.))))))),kmadd(At11L,kmadd(Gt123,kmul(gtu23,ToReal(-2.)),kmadd(kmadd(Gt122,gtu22,kmul(Gt133,gtu33)),ToReal(-1.),kmadd(gtu11,kmadd(Gt111,ToReal(-2.),kmul(cdphi1,ToReal(6.))),kmadd(gtu12,kmadd(Gt112,ToReal(-3.),kmul(cdphi2,ToReal(6.))),kmul(gtu13,kmadd(Gt113,ToReal(-3.),kmul(cdphi3,ToReal(6.)))))))),kmul(At12L,kmadd(Gt213,kmul(gtu13,ToReal(-3.)),kmadd(kmadd(Gt211,gtu11,kmul(Gt223,gtu23)),ToReal(-2.),kmadd(Gt233,kmul(gtu33,ToReal(-1.)),kmadd(gtu12,kmadd(Gt212,ToReal(-3.),kmadd(Gt111,ToReal(-1.),kmul(cdphi1,ToReal(6.)))),kmadd(gtu22,kmadd(kadd(Gt112,Gt222),ToReal(-1.),kmul(cdphi2,ToReal(6.))),kmul(gtu23,kmadd(Gt113,ToReal(-1.),kmul(cdphi3,ToReal(6.))))))))))))))))))))));
- CCTK_REAL S3 = (-eTtzL + beta1L*eTxzL + beta2L*eTyzL +
- beta3L*eTzzL)*INV(alphaL);
+ CCTK_REAL_VEC M2L =
+ kmadd(gtu11,JacPDstandardNth1At12,kmadd(gtu12,kadd(JacPDstandardNth1At22,JacPDstandardNth2At12),kmadd(gtu22,JacPDstandardNth2At22,kmadd(gtu33,JacPDstandardNth3At23,kmadd(S2,ToReal(-25.13274122871834590770114706623602307358),kmadd(kmadd(kmadd(At22L,Gt211,kmadd(At23L,Gt311,kmul(At13L,Gt312))),gtu11,kmadd(kmadd(At23L,Gt212,kmul(At33L,Gt312)),gtu13,kmadd(At11L,kmadd(Gt112,gtu11,kmadd(Gt122,gtu12,kmul(Gt123,gtu13))),kmadd(kmadd(At23L,Gt223,kmul(At33L,Gt323)),gtu33,kmul(At13L,kmadd(Gt322,gtu12,kmadd(Gt112,gtu13,kmadd(Gt122,gtu23,kmul(Gt123,gtu33))))))))),ToReal(-1.),kmadd(gtu23,kadd(JacPDstandardNth2At23,kadd(JacPDstandardNth3At22,kmadd(kmadd(At22L,Gt223,kmul(At23L,Gt323)),ToReal(-3.),kmul(kmadd(At23L,Gt222,kmul(At33L,Gt322)),ToReal(-1.))))),kmadd(gtu13,kadd(JacPDstandardNth1At23,kadd(JacPDstandardNth3At12,kmadd(At23L,kmul(Gt313,ToReal(-2.)),kmul(At13L,kmul(Gt323,ToReal(-1.)))))),kmadd(JacPDstandardNth2trK,ToReal(-0.6666666666666666666666666666666666666667),kmadd(At23L,kmadd(Gt312,kmul(gtu12,ToReal(-3.)),kmadd(Gt322,kmul(gtu22,ToReal(-2.)),kmadd(Gt333,kmul(gtu33,ToReal(-1.)),kmul(kmadd(cdphi1,gtu13,kmadd(cdphi2,gtu23,kmul(cdphi3,gtu33))),ToReal(6.))))),kmadd(At22L,kmadd(kmadd(Gt213,gtu13,kmul(Gt222,gtu22)),ToReal(-2.),kmadd(Gt233,kmul(gtu33,ToReal(-1.)),kmadd(kmadd(cdphi2,gtu22,kmul(cdphi3,gtu23)),ToReal(6.),kmul(gtu12,kmadd(Gt212,ToReal(-3.),kmul(cdphi1,ToReal(6.))))))),kmul(At12L,kmadd(Gt123,kmul(gtu23,ToReal(-3.)),kmadd(Gt122,kmul(gtu22,ToReal(-2.)),kmadd(Gt133,kmul(gtu33,ToReal(-1.)),kmadd(gtu11,kmadd(kadd(Gt111,Gt212),ToReal(-1.),kmul(cdphi1,ToReal(6.))),kmadd(gtu12,kmadd(Gt112,ToReal(-3.),kmadd(Gt222,ToReal(-1.),kmul(cdphi2,ToReal(6.)))),kmul(gtu13,kmadd(Gt113,ToReal(-2.),kmadd(Gt223,ToReal(-1.),kmul(cdphi3,ToReal(6.))))))))))))))))))))));
- CCTK_REAL M1L = -2.*((At12L*Gt211 + At13L*Gt311)*gtu11 +
- At11L*Gt123*gtu23) + At12L*((6.*cdphi1 - 1.*Gt111)*gtu12 -
- 3.*Gt213*gtu13 + 6.*(cdphi2*gtu22 + cdphi3*gtu23) - 1.*Gt233*gtu33) -
- 1.*((At22L*Gt212 + At12L*(Gt112 + Gt222) + At23L*Gt312)*gtu22 +
- (At13L*Gt112 + At12L*Gt113 + At23L*Gt212)*gtu23 + (At13L*Gt113 +
- At23L*Gt213 + At33L*Gt313)*gtu33) + At11L*((6.*cdphi1 - 2.*Gt111)*gtu11
- + 6.*(cdphi2*gtu12 + cdphi3*gtu13) - 1.*(Gt122*gtu22 + Gt133*gtu33)) +
- At13L*((6.*cdphi1 - 1.*Gt111)*gtu13 + 6.*(cdphi2*gtu23 + cdphi3*gtu33)
- - 1.*(Gt322*gtu22 + Gt333*gtu33)) + gtu11*PDstandardNth1At11 -
- 0.6666666666666666666666666666666666666667*PDstandardNth1trK +
- gtu12*(-1.*(At22L*Gt211 + At23L*Gt311) - 3.*(At11L*Gt112 + At12L*Gt212
- + At13L*Gt312) + PDstandardNth1At12 + PDstandardNth2At11) +
- gtu22*PDstandardNth2At12 + gtu13*(-1.*(At23L*Gt211 + At33L*Gt311) -
- 3.*(At11L*Gt113 + At13L*Gt313) + PDstandardNth1At13 +
- PDstandardNth3At11) + gtu23*(-1.*(At22L*Gt213 + At33L*Gt312 +
- At23L*Gt313) - 2.*(At12L*Gt223 + At13L*Gt323) + PDstandardNth2At13 +
- PDstandardNth3At12) + gtu33*PDstandardNth3At13 -
- 25.13274122871834590770114706623602307358*S1;
+ CCTK_REAL_VEC M3L =
+ kmadd(gtu11,JacPDstandardNth1At13,kmadd(gtu22,JacPDstandardNth2At23,kmadd(gtu13,kadd(JacPDstandardNth1At33,JacPDstandardNth3At13),kmadd(gtu33,JacPDstandardNth3At33,kmadd(S3,ToReal(-25.13274122871834590770114706623602307358),kmadd(kmadd(kmadd(At23L,Gt211,kmadd(At12L,Gt213,kmul(At33L,Gt311))),gtu11,kmadd(kmadd(At22L,Gt213,kmul(At12L,kadd(Gt113,Gt223))),gtu12,kmadd(At11L,kmadd(Gt113,gtu11,kmadd(Gt123,gtu12,kmul(Gt133,gtu13))),kmadd(kmadd(At23L,Gt222,kmul(At22L,Gt223)),gtu22,kmul(At12L,kmadd(Gt233,gtu13,kmadd(Gt123,gtu22,kmul(Gt133,gtu23)))))))),ToReal(-1.),kmadd(gtu12,kadd(JacPDstandardNth1At23,kadd(JacPDstandardNth2At13,kmadd(At33L,kmul(Gt312,ToReal(-2.)),kmul(At23L,kmul(Gt313,ToReal(-1.)))))),kmadd(gtu23,kadd(JacPDstandardNth2At33,kadd(JacPDstandardNth3At23,kmadd(kmadd(At23L,Gt223,kmul(At33L,Gt323)),ToReal(-3.),kmul(kmadd(At22L,Gt233,kmul(At23L,Gt333)),ToReal(-1.))))),kmadd(JacPDstandardNth3trK,ToReal(-0.6666666666666666666666666666666666666667),kmadd(At33L,kmadd(Gt333,kmul(gtu33,ToReal(-2.)),kmadd(Gt322,kmul(gtu22,ToReal(-1.)),kmadd(kmadd(cdphi2,gtu23,kmul(cdphi3,gtu33)),ToReal(6.),kmul(gtu13,kmadd(Gt313,ToReal(-3.),kmul(cdphi1,ToReal(6.))))))),kmadd(At23L,kmadd(Gt213,kmul(gtu13,ToReal(-3.)),kmadd(Gt233,kmul(gtu33,ToReal(-2.)),kmadd(cdphi3,kmul(gtu23,ToReal(6.)),kmadd(gtu12,kmadd(Gt212,ToReal(-2.),kmul(cdphi1,ToReal(6.))),kmul(gtu22,kmadd(Gt323,ToReal(-1.),kmul(cdphi2,ToReal(6.)))))))),kmul(At13L,kmadd(Gt123,kmul(gtu23,ToReal(-3.)),kmadd(Gt133,kmul(gtu33,ToReal(-2.)),kmadd(Gt122,kmul(gtu22,ToReal(-1.)),kmadd(gtu11,kmadd(kadd(Gt111,Gt313),ToReal(-1.),kmul(cdphi1,ToReal(6.))),kmadd(gtu12,kmadd(Gt112,ToReal(-2.),kmadd(Gt323,ToReal(-1.),kmul(cdphi2,ToReal(6.)))),kmul(gtu13,kmadd(Gt113,ToReal(-3.),kmadd(Gt333,ToReal(-1.),kmul(cdphi3,ToReal(6.))))))))))))))))))))));
- CCTK_REAL M2L = At12L*((6.*cdphi1 - 1.*Gt111)*gtu11 + 6.*(cdphi2*gtu12
- + cdphi3*gtu13) - 2.*Gt122*gtu22 - 3.*Gt123*gtu23 - 1.*Gt133*gtu33) +
- At22L*((6.*cdphi2 - 2.*Gt222)*gtu22 + 6.*cdphi3*gtu23 - 1.*Gt233*gtu33)
- + At23L*(-2.*Gt322*gtu22 - 1.*Gt333*gtu33 + 6.*(cdphi2*gtu23 +
- cdphi3*gtu33)) - 1.*((At11L*Gt112 + At22L*Gt211 + At12L*Gt212 +
- At23L*Gt311 + At13L*Gt312)*gtu11 + Gt122*(At11L*gtu12 + At13L*gtu23) +
- (At23L*Gt223 + At33L*Gt323)*gtu33 + At13L*(Gt112*gtu13 + Gt123*gtu33))
- + gtu11*PDstandardNth1At12 + gtu12*(At22L*(6.*cdphi1 - 3.*Gt212) +
- At12L*(-3.*Gt112 - 1.*Gt222) - 3.*At23L*Gt312 - 1.*At13L*Gt322 +
- PDstandardNth1At22 + PDstandardNth2At12) + gtu22*PDstandardNth2At22 -
- 0.6666666666666666666666666666666666666667*PDstandardNth2trK +
- gtu13*(-2.*(At12L*Gt113 + At22L*Gt213) + At23L*(6.*cdphi1 - 1.*Gt212 -
- 2.*Gt313) - 1.*(At11L*Gt123 + At12L*Gt223 + At33L*Gt312 + At13L*Gt323)
- + PDstandardNth1At23 + PDstandardNth3At12) + gtu23*(-1.*(At23L*Gt222 +
- At33L*Gt322) - 3.*(At22L*Gt223 + At23L*Gt323) + PDstandardNth2At23 +
- PDstandardNth3At22) + gtu33*PDstandardNth3At23 -
- 25.13274122871834590770114706623602307358*S2;
+ CCTK_REAL_VEC cSL = klog(detgt);
- CCTK_REAL M3L = -1.*((At11L*Gt113 + At23L*Gt211 + At12L*Gt213 +
- At33L*Gt311)*gtu11 + (At22L*Gt223 + At33L*Gt322 + At23L*Gt323)*gtu22 +
- At12L*(Gt113*gtu12 + Gt123*gtu22) + Gt133*(At11L*gtu13 + At12L*gtu23))
- + At13L*((6.*cdphi1 - 1.*(Gt111 + Gt313))*gtu11 + 6.*(cdphi2*gtu12 +
- cdphi3*gtu13) - 1.*Gt122*gtu22 - 3.*Gt123*gtu23 - 2.*Gt133*gtu33) +
- At23L*((6.*cdphi2 - 1.*Gt222)*gtu22 + 6.*cdphi3*gtu23 - 2.*Gt233*gtu33)
- + gtu11*PDstandardNth1At13 + gtu12*(-2.*(At13L*Gt112 + At33L*Gt312) +
- At23L*(6.*cdphi1 - 2.*Gt212 - 1.*Gt313) - 1.*(At11L*Gt123 + At22L*Gt213
- + At12L*Gt223 + At13L*Gt323) + PDstandardNth1At23 + PDstandardNth2At13)
- + gtu22*PDstandardNth2At23 + gtu13*(-3.*(At13L*Gt113 + At23L*Gt213) +
- At33L*(6.*cdphi1 - 3.*Gt313) - 1.*(At12L*Gt233 + At13L*Gt333) +
- PDstandardNth1At33 + PDstandardNth3At13) + gtu23*(-1.*At22L*Gt233 +
- At33L*(6.*cdphi2 - 3.*Gt323) + At23L*(-3.*Gt223 - 1.*Gt333) +
- PDstandardNth2At33 + PDstandardNth3At23) + gtu33*(At33L*(6.*cdphi3 -
- 2.*Gt333) + PDstandardNth3At33) -
- 0.6666666666666666666666666666666666666667*PDstandardNth3trK -
- 25.13274122871834590770114706623602307358*S3;
-
- CCTK_REAL cSL = Log(detgt);
-
- CCTK_REAL cXt1L = Gt111*gtu11 + Gt122*gtu22 + 2*(Gt112*gtu12 +
- Gt113*gtu13 + Gt123*gtu23) + Gt133*gtu33 - Xt1L;
-
- CCTK_REAL cXt2L = Gt211*gtu11 + Gt222*gtu22 + 2*(Gt212*gtu12 +
- Gt213*gtu13 + Gt223*gtu23) + Gt233*gtu33 - Xt2L;
-
- CCTK_REAL cXt3L = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu12 +
- Gt313*gtu13 + Gt323*gtu23) + Gt333*gtu33 - Xt3L;
-
- CCTK_REAL cAL = At11L*gtu11 + At22L*gtu22 + 2*(At12L*gtu12 +
- At13L*gtu13 + At23L*gtu23) + At33L*gtu33;
-
- /* Copy local copies back to grid functions */
- cA[index] = cAL;
- cS[index] = cSL;
- cXt1[index] = cXt1L;
- cXt2[index] = cXt2L;
- cXt3[index] = cXt3L;
- M1[index] = M1L;
- M2[index] = M2L;
- M3[index] = M3L;
+ 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)))));
+
+ /* 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(cA[index],cAL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(cS[index],cSL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(cXt1[index],cXt1L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(cXt2[index],cXt2L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(cXt3[index],cXt3L,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(cA[index],cAL,elt_count);
+ vec_store_nta_partial_hi(cS[index],cSL,elt_count);
+ vec_store_nta_partial_hi(cXt1[index],cXt1L,elt_count);
+ vec_store_nta_partial_hi(cXt2[index],cXt2L,elt_count);
+ vec_store_nta_partial_hi(cXt3[index],cXt3L,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(cA[index],cAL,elt_count);
+ vec_store_nta_partial_lo(cS[index],cSL,elt_count);
+ vec_store_nta_partial_lo(cXt1[index],cXt1L,elt_count);
+ vec_store_nta_partial_lo(cXt2[index],cXt2L,elt_count);
+ vec_store_nta_partial_lo(cXt3[index],cXt3L,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(cA[index],cAL);
+ vec_store_nta(cS[index],cSL);
+ vec_store_nta(cXt1[index],cXt1L);
+ vec_store_nta(cXt2[index],cXt2L);
+ vec_store_nta(cXt3[index],cXt3L);
+ vec_store_nta(M1[index],M1L);
+ vec_store_nta(M2[index],M2L);
+ vec_store_nta(M3[index],M3L);
}
- LC_ENDLOOP3 (ML_BSSN_O2_constraints2);
+ LC_ENDLOOP3VEC (ML_BSSN_O2_constraints2);
}
extern "C" void ML_BSSN_O2_constraints2(CCTK_ARGUMENTS)
@@ -415,5 +995,43 @@ extern "C" void ML_BSSN_O2_constraints2(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O2_constraints2_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_O2_constraints2_calc_every != ML_BSSN_O2_constraints2_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN_O2::ML_cons_detg","ML_BSSN_O2::ML_cons_Gamma","ML_BSSN_O2::ML_cons_traceA","ML_BSSN_O2::ML_curv","ML_BSSN_O2::ML_Gamma","ML_BSSN_O2::ML_lapse","ML_BSSN_O2::ML_log_confac","ML_BSSN_O2::ML_metric","ML_BSSN_O2::ML_mom","ML_BSSN_O2::ML_shift","ML_BSSN_O2::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O2_constraints2", 11, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O2_constraints2", 1, 1, 1);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O2_constraints2", 2, 2, 2);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O2_constraints2", 3, 3, 3);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O2_constraints2", 4, 4, 4);
+ break;
+ }
+
GenericFD_LoopOverInterior(cctkGH, &ML_BSSN_O2_constraints2_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_O2_constraints2_Body");
+ }
}
diff --git a/ML_BSSN_O2/src/ML_BSSN_O2_convertFromADMBase.cc b/ML_BSSN_O2/src/ML_BSSN_O2_convertFromADMBase.cc
index c903866..e965987 100644
--- a/ML_BSSN_O2/src/ML_BSSN_O2_convertFromADMBase.cc
+++ b/ML_BSSN_O2/src/ML_BSSN_O2_convertFromADMBase.cc
@@ -13,15 +13,16 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
-static void ML_BSSN_O2_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_O2_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;
@@ -29,20 +30,6 @@ static void ML_BSSN_O2_convertFromADMBase_Body(cGH const * restrict const cctkGH
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O2_convertFromADMBase_Body");
- }
-
- if (cctk_iteration % ML_BSSN_O2_convertFromADMBase_calc_every != ML_BSSN_O2_convertFromADMBase_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ADMBase::curv","ADMBase::lapse","ADMBase::metric","ADMBase::shift","ML_BSSN_O2::ML_curv","ML_BSSN_O2::ML_lapse","ML_BSSN_O2::ML_log_confac","ML_BSSN_O2::ML_metric","ML_BSSN_O2::ML_shift","ML_BSSN_O2::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O2_convertFromADMBase", 10, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -52,187 +39,389 @@ static void ML_BSSN_O2_convertFromADMBase_Body(cGH const * restrict const cctkGH
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o16dx = 0.0625*INV(dx);
- CCTK_REAL const p1o16dy = 0.0625*INV(dy);
- CCTK_REAL const p1o16dz = 0.0625*INV(dz);
- CCTK_REAL const p1o2dx = 0.5*INV(dx);
- CCTK_REAL const p1o2dy = 0.5*INV(dy);
- CCTK_REAL const p1o2dz = 0.5*INV(dz);
- CCTK_REAL const p1o4dx = 0.25*INV(dx);
- CCTK_REAL const p1o4dxdy = 0.25*INV(dx)*INV(dy);
- CCTK_REAL const p1o4dxdz = 0.25*INV(dx)*INV(dz);
- CCTK_REAL const p1o4dy = 0.25*INV(dy);
- CCTK_REAL const p1o4dydz = 0.25*INV(dy)*INV(dz);
- CCTK_REAL const p1o4dz = 0.25*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1odx2 = INV(SQR(dx));
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1ody2 = INV(SQR(dy));
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const p1odz2 = INV(SQR(dz));
- CCTK_REAL const pm1o2dx = -0.5*INV(dx);
- CCTK_REAL const pm1o2dy = -0.5*INV(dy);
- CCTK_REAL const pm1o2dz = -0.5*INV(dz);
- CCTK_REAL const pm1o4dx = -0.25*INV(dx);
- CCTK_REAL const pm1o4dy = -0.25*INV(dy);
- CCTK_REAL const pm1o4dz = -0.25*INV(dz);
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_O2_convertFromADMBase,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_O2_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 alpL = alp[index];
- CCTK_REAL betaxL = betax[index];
- CCTK_REAL betayL = betay[index];
- CCTK_REAL betazL = betaz[index];
- CCTK_REAL gxxL = gxx[index];
- CCTK_REAL gxyL = gxy[index];
- CCTK_REAL gxzL = gxz[index];
- CCTK_REAL gyyL = gyy[index];
- CCTK_REAL gyzL = gyz[index];
- CCTK_REAL gzzL = gzz[index];
- CCTK_REAL kxxL = kxx[index];
- CCTK_REAL kxyL = kxy[index];
- CCTK_REAL kxzL = kxz[index];
- CCTK_REAL kyyL = kyy[index];
- CCTK_REAL kyzL = kyz[index];
- CCTK_REAL kzzL = kzz[index];
- CCTK_REAL phiL = phi[index];
- CCTK_REAL trKL = trK[index];
+ 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 g11 = gxxL;
+ CCTK_REAL_VEC g11 = gxxL;
- CCTK_REAL g12 = gxyL;
+ CCTK_REAL_VEC g12 = gxyL;
- CCTK_REAL g13 = gxzL;
+ CCTK_REAL_VEC g13 = gxzL;
- CCTK_REAL g22 = gyyL;
+ CCTK_REAL_VEC g22 = gyyL;
- CCTK_REAL g23 = gyzL;
+ CCTK_REAL_VEC g23 = gyzL;
- CCTK_REAL g33 = gzzL;
+ CCTK_REAL_VEC g33 = gzzL;
- CCTK_REAL detg = 2*g12*g13*g23 + g33*(g11*g22 - SQR(g12)) -
- g22*SQR(g13) - g11*SQR(g23);
+ 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 gu11 = INV(detg)*(g22*g33 - SQR(g23));
+ CCTK_REAL_VEC gu11 = kmul(INV(detg),kmsub(g22,g33,SQR(g23)));
- CCTK_REAL gu12 = (g13*g23 - g12*g33)*INV(detg);
+ CCTK_REAL_VEC gu12 = kmul(INV(detg),kmsub(g13,g23,kmul(g12,g33)));
- CCTK_REAL gu13 = (-(g13*g22) + g12*g23)*INV(detg);
+ CCTK_REAL_VEC gu13 = kmul(INV(detg),kmsub(g12,g23,kmul(g13,g22)));
- CCTK_REAL gu22 = INV(detg)*(g11*g33 - SQR(g13));
+ CCTK_REAL_VEC gu22 = kmul(INV(detg),kmsub(g11,g33,SQR(g13)));
- CCTK_REAL gu23 = (g12*g13 - g11*g23)*INV(detg);
+ CCTK_REAL_VEC gu23 = kmul(INV(detg),kmsub(g12,g13,kmul(g11,g23)));
- CCTK_REAL gu33 = INV(detg)*(g11*g22 - SQR(g12));
+ CCTK_REAL_VEC gu33 = kmul(INV(detg),kmsub(g11,g22,SQR(g12)));
- CCTK_REAL em4phi;
+ CCTK_REAL_VEC em4phi;
if (conformalMethod)
{
- phiL = pow(detg,-0.166666666666666666666666666667);
+ phiL = kpow(detg,-0.166666666666666666666666666667);
em4phi = SQR(phiL);
}
else
{
- phiL = 0.0833333333333333333333333333333*Log(detg);
+ phiL = kmul(klog(detg),ToReal(0.0833333333333333333333333333333));
- em4phi = exp(-4*phiL);
+ em4phi = kexp(kmul(phiL,ToReal(-4)));
}
- CCTK_REAL gt11L = em4phi*g11;
+ CCTK_REAL_VEC gt11L = kmul(em4phi,g11);
+
+ CCTK_REAL_VEC gt12L = kmul(em4phi,g12);
- CCTK_REAL gt12L = em4phi*g12;
+ CCTK_REAL_VEC gt13L = kmul(em4phi,g13);
- CCTK_REAL gt13L = em4phi*g13;
+ CCTK_REAL_VEC gt22L = kmul(em4phi,g22);
- CCTK_REAL gt22L = em4phi*g22;
+ CCTK_REAL_VEC gt23L = kmul(em4phi,g23);
- CCTK_REAL gt23L = em4phi*g23;
+ CCTK_REAL_VEC gt33L = kmul(em4phi,g33);
- CCTK_REAL gt33L = em4phi*g33;
+ trKL =
+ kmadd(gu11,kxxL,kmadd(gu22,kyyL,kmadd(gu33,kzzL,kmul(kmadd(gu12,kxyL,kmadd(gu13,kxzL,kmul(gu23,kyzL))),ToReal(2)))));
- trKL = gu11*kxxL + gu22*kyyL + 2*(gu12*kxyL + gu13*kxzL + gu23*kyzL) +
- gu33*kzzL;
+ CCTK_REAL_VEC At11L =
+ kmul(em4phi,kmadd(g11,kmul(trKL,ToReal(-0.333333333333333333333333333333)),kxxL));
- CCTK_REAL At11L = em4phi*(kxxL -
- 0.333333333333333333333333333333*g11*trKL);
+ CCTK_REAL_VEC At12L =
+ kmul(em4phi,kmadd(g12,kmul(trKL,ToReal(-0.333333333333333333333333333333)),kxyL));
- CCTK_REAL At12L = em4phi*(kxyL -
- 0.333333333333333333333333333333*g12*trKL);
+ CCTK_REAL_VEC At13L =
+ kmul(em4phi,kmadd(g13,kmul(trKL,ToReal(-0.333333333333333333333333333333)),kxzL));
- CCTK_REAL At13L = em4phi*(kxzL -
- 0.333333333333333333333333333333*g13*trKL);
+ CCTK_REAL_VEC At22L =
+ kmul(em4phi,kmadd(g22,kmul(trKL,ToReal(-0.333333333333333333333333333333)),kyyL));
- CCTK_REAL At22L = em4phi*(kyyL -
- 0.333333333333333333333333333333*g22*trKL);
+ CCTK_REAL_VEC At23L =
+ kmul(em4phi,kmadd(g23,kmul(trKL,ToReal(-0.333333333333333333333333333333)),kyzL));
- CCTK_REAL At23L = em4phi*(kyzL -
- 0.333333333333333333333333333333*g23*trKL);
+ CCTK_REAL_VEC At33L =
+ kmul(em4phi,kmadd(g33,kmul(trKL,ToReal(-0.333333333333333333333333333333)),kzzL));
- CCTK_REAL At33L = em4phi*(kzzL -
- 0.333333333333333333333333333333*g33*trKL);
+ CCTK_REAL_VEC alphaL = alpL;
- CCTK_REAL alphaL = alpL;
+ CCTK_REAL_VEC beta1L = betaxL;
- CCTK_REAL beta1L = betaxL;
+ CCTK_REAL_VEC beta2L = betayL;
- CCTK_REAL beta2L = betayL;
+ CCTK_REAL_VEC beta3L = betazL;
- CCTK_REAL beta3L = betazL;
+ /* If necessary, store only partial vectors after the first iteration */
- /* Copy local copies back to grid functions */
- alpha[index] = alphaL;
- At11[index] = At11L;
- At12[index] = At12L;
- At13[index] = At13L;
- At22[index] = At22L;
- At23[index] = At23L;
- At33[index] = At33L;
- beta1[index] = beta1L;
- beta2[index] = beta2L;
- beta3[index] = beta3L;
- gt11[index] = gt11L;
- gt12[index] = gt12L;
- gt13[index] = gt13L;
- gt22[index] = gt22L;
- gt23[index] = gt23L;
- gt33[index] = gt33L;
- phi[index] = phiL;
- trK[index] = trKL;
+ 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(At11[index],At11L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At12[index],At12L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At13[index],At13L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At22[index],At22L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At23[index],At23L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At33[index],At33L,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(gt11[index],gt11L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt12[index],gt12L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt13[index],gt13L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt22[index],gt22L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt23[index],gt23L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt33[index],gt33L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(phi[index],phiL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(trK[index],trKL,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(At11[index],At11L,elt_count);
+ vec_store_nta_partial_hi(At12[index],At12L,elt_count);
+ vec_store_nta_partial_hi(At13[index],At13L,elt_count);
+ vec_store_nta_partial_hi(At22[index],At22L,elt_count);
+ vec_store_nta_partial_hi(At23[index],At23L,elt_count);
+ vec_store_nta_partial_hi(At33[index],At33L,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(gt11[index],gt11L,elt_count);
+ vec_store_nta_partial_hi(gt12[index],gt12L,elt_count);
+ vec_store_nta_partial_hi(gt13[index],gt13L,elt_count);
+ vec_store_nta_partial_hi(gt22[index],gt22L,elt_count);
+ vec_store_nta_partial_hi(gt23[index],gt23L,elt_count);
+ vec_store_nta_partial_hi(gt33[index],gt33L,elt_count);
+ vec_store_nta_partial_hi(phi[index],phiL,elt_count);
+ vec_store_nta_partial_hi(trK[index],trKL,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(At11[index],At11L,elt_count);
+ vec_store_nta_partial_lo(At12[index],At12L,elt_count);
+ vec_store_nta_partial_lo(At13[index],At13L,elt_count);
+ vec_store_nta_partial_lo(At22[index],At22L,elt_count);
+ vec_store_nta_partial_lo(At23[index],At23L,elt_count);
+ vec_store_nta_partial_lo(At33[index],At33L,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(gt11[index],gt11L,elt_count);
+ vec_store_nta_partial_lo(gt12[index],gt12L,elt_count);
+ vec_store_nta_partial_lo(gt13[index],gt13L,elt_count);
+ vec_store_nta_partial_lo(gt22[index],gt22L,elt_count);
+ vec_store_nta_partial_lo(gt23[index],gt23L,elt_count);
+ vec_store_nta_partial_lo(gt33[index],gt33L,elt_count);
+ vec_store_nta_partial_lo(phi[index],phiL,elt_count);
+ vec_store_nta_partial_lo(trK[index],trKL,elt_count);
+ break;
+ }
+ vec_store_nta(alpha[index],alphaL);
+ vec_store_nta(At11[index],At11L);
+ vec_store_nta(At12[index],At12L);
+ vec_store_nta(At13[index],At13L);
+ vec_store_nta(At22[index],At22L);
+ vec_store_nta(At23[index],At23L);
+ vec_store_nta(At33[index],At33L);
+ vec_store_nta(beta1[index],beta1L);
+ vec_store_nta(beta2[index],beta2L);
+ vec_store_nta(beta3[index],beta3L);
+ vec_store_nta(gt11[index],gt11L);
+ vec_store_nta(gt12[index],gt12L);
+ vec_store_nta(gt13[index],gt13L);
+ vec_store_nta(gt22[index],gt22L);
+ vec_store_nta(gt23[index],gt23L);
+ vec_store_nta(gt33[index],gt33L);
+ vec_store_nta(phi[index],phiL);
+ vec_store_nta(trK[index],trKL);
}
- LC_ENDLOOP3 (ML_BSSN_O2_convertFromADMBase);
+ LC_ENDLOOP3VEC (ML_BSSN_O2_convertFromADMBase);
}
extern "C" void ML_BSSN_O2_convertFromADMBase(CCTK_ARGUMENTS)
@@ -240,5 +429,39 @@ extern "C" void ML_BSSN_O2_convertFromADMBase(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O2_convertFromADMBase_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_O2_convertFromADMBase_calc_every != ML_BSSN_O2_convertFromADMBase_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ADMBase::curv","ADMBase::lapse","ADMBase::metric","ADMBase::shift","ML_BSSN_O2::ML_curv","ML_BSSN_O2::ML_lapse","ML_BSSN_O2::ML_log_confac","ML_BSSN_O2::ML_metric","ML_BSSN_O2::ML_shift","ML_BSSN_O2::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O2_convertFromADMBase", 10, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverEverything(cctkGH, &ML_BSSN_O2_convertFromADMBase_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_O2_convertFromADMBase_Body");
+ }
}
diff --git a/ML_BSSN_O2/src/ML_BSSN_O2_convertFromADMBaseGamma.cc b/ML_BSSN_O2/src/ML_BSSN_O2_convertFromADMBaseGamma.cc
index 53e7ce2..b5796ee 100644
--- a/ML_BSSN_O2/src/ML_BSSN_O2_convertFromADMBaseGamma.cc
+++ b/ML_BSSN_O2/src/ML_BSSN_O2_convertFromADMBaseGamma.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_O2_convertFromADMBaseGamma_SelectBCs(CCTK_ARGUMENTS)
{
@@ -39,7 +40,7 @@ extern "C" void ML_BSSN_O2_convertFromADMBaseGamma_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_BSSN_O2_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_O2_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;
@@ -47,21 +48,6 @@ static void ML_BSSN_O2_convertFromADMBaseGamma_Body(cGH const * restrict const c
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O2_convertFromADMBaseGamma_Body");
- }
-
- if (cctk_iteration % ML_BSSN_O2_convertFromADMBaseGamma_calc_every != ML_BSSN_O2_convertFromADMBaseGamma_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ADMBase::dtlapse","ADMBase::dtshift","grid::coordinates","Grid::coordinates","ML_BSSN_O2::ML_dtlapse","ML_BSSN_O2::ML_dtshift","ML_BSSN_O2::ML_Gamma","ML_BSSN_O2::ML_lapse","ML_BSSN_O2::ML_metric","ML_BSSN_O2::ML_shift"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O2_convertFromADMBaseGamma", 10, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O2_convertFromADMBaseGamma", 2, 2, 2);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -71,120 +57,427 @@ static void ML_BSSN_O2_convertFromADMBaseGamma_Body(cGH const * restrict const c
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o16dx = 0.0625*INV(dx);
- CCTK_REAL const p1o16dy = 0.0625*INV(dy);
- CCTK_REAL const p1o16dz = 0.0625*INV(dz);
- CCTK_REAL const p1o2dx = 0.5*INV(dx);
- CCTK_REAL const p1o2dy = 0.5*INV(dy);
- CCTK_REAL const p1o2dz = 0.5*INV(dz);
- CCTK_REAL const p1o4dx = 0.25*INV(dx);
- CCTK_REAL const p1o4dxdy = 0.25*INV(dx)*INV(dy);
- CCTK_REAL const p1o4dxdz = 0.25*INV(dx)*INV(dz);
- CCTK_REAL const p1o4dy = 0.25*INV(dy);
- CCTK_REAL const p1o4dydz = 0.25*INV(dy)*INV(dz);
- CCTK_REAL const p1o4dz = 0.25*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1odx2 = INV(SQR(dx));
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1ody2 = INV(SQR(dy));
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const p1odz2 = INV(SQR(dz));
- CCTK_REAL const pm1o2dx = -0.5*INV(dx);
- CCTK_REAL const pm1o2dy = -0.5*INV(dy);
- CCTK_REAL const pm1o2dz = -0.5*INV(dz);
- CCTK_REAL const pm1o4dx = -0.25*INV(dx);
- CCTK_REAL const pm1o4dy = -0.25*INV(dy);
- CCTK_REAL const pm1o4dz = -0.25*INV(dz);
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_O2_convertFromADMBaseGamma,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_O2_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 alphaL = alpha[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL dtalpL = dtalp[index];
- CCTK_REAL dtbetaxL = dtbetax[index];
- CCTK_REAL dtbetayL = dtbetay[index];
- CCTK_REAL dtbetazL = dtbetaz[index];
- CCTK_REAL gt11L = gt11[index];
- CCTK_REAL gt12L = gt12[index];
- CCTK_REAL gt13L = gt13[index];
- CCTK_REAL gt22L = gt22[index];
- CCTK_REAL gt23L = gt23[index];
- CCTK_REAL gt33L = gt33[index];
- CCTK_REAL rL = r[index];
-
+ 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 const PDupwindNthAnti1alpha = PDupwindNthAnti1(&alpha[index]);
- CCTK_REAL const PDupwindNthSymm1alpha = PDupwindNthSymm1(&alpha[index]);
- CCTK_REAL const PDupwindNthAnti2alpha = PDupwindNthAnti2(&alpha[index]);
- CCTK_REAL const PDupwindNthSymm2alpha = PDupwindNthSymm2(&alpha[index]);
- CCTK_REAL const PDupwindNthAnti3alpha = PDupwindNthAnti3(&alpha[index]);
- CCTK_REAL const PDupwindNthSymm3alpha = PDupwindNthSymm3(&alpha[index]);
- CCTK_REAL const PDupwindNthAnti1beta1 = PDupwindNthAnti1(&beta1[index]);
- CCTK_REAL const PDupwindNthSymm1beta1 = PDupwindNthSymm1(&beta1[index]);
- CCTK_REAL const PDupwindNthAnti2beta1 = PDupwindNthAnti2(&beta1[index]);
- CCTK_REAL const PDupwindNthSymm2beta1 = PDupwindNthSymm2(&beta1[index]);
- CCTK_REAL const PDupwindNthAnti3beta1 = PDupwindNthAnti3(&beta1[index]);
- CCTK_REAL const PDupwindNthSymm3beta1 = PDupwindNthSymm3(&beta1[index]);
- CCTK_REAL const PDupwindNthAnti1beta2 = PDupwindNthAnti1(&beta2[index]);
- CCTK_REAL const PDupwindNthSymm1beta2 = PDupwindNthSymm1(&beta2[index]);
- CCTK_REAL const PDupwindNthAnti2beta2 = PDupwindNthAnti2(&beta2[index]);
- CCTK_REAL const PDupwindNthSymm2beta2 = PDupwindNthSymm2(&beta2[index]);
- CCTK_REAL const PDupwindNthAnti3beta2 = PDupwindNthAnti3(&beta2[index]);
- CCTK_REAL const PDupwindNthSymm3beta2 = PDupwindNthSymm3(&beta2[index]);
- CCTK_REAL const PDupwindNthAnti1beta3 = PDupwindNthAnti1(&beta3[index]);
- CCTK_REAL const PDupwindNthSymm1beta3 = PDupwindNthSymm1(&beta3[index]);
- CCTK_REAL const PDupwindNthAnti2beta3 = PDupwindNthAnti2(&beta3[index]);
- CCTK_REAL const PDupwindNthSymm2beta3 = PDupwindNthSymm2(&beta3[index]);
- CCTK_REAL const PDupwindNthAnti3beta3 = PDupwindNthAnti3(&beta3[index]);
- CCTK_REAL const PDupwindNthSymm3beta3 = PDupwindNthSymm3(&beta3[index]);
- CCTK_REAL const PDstandardNth1gt11 = PDstandardNth1(&gt11[index]);
- CCTK_REAL const PDstandardNth2gt11 = PDstandardNth2(&gt11[index]);
- CCTK_REAL const PDstandardNth3gt11 = PDstandardNth3(&gt11[index]);
- CCTK_REAL const PDstandardNth1gt12 = PDstandardNth1(&gt12[index]);
- CCTK_REAL const PDstandardNth2gt12 = PDstandardNth2(&gt12[index]);
- CCTK_REAL const PDstandardNth3gt12 = PDstandardNth3(&gt12[index]);
- CCTK_REAL const PDstandardNth1gt13 = PDstandardNth1(&gt13[index]);
- CCTK_REAL const PDstandardNth2gt13 = PDstandardNth2(&gt13[index]);
- CCTK_REAL const PDstandardNth3gt13 = PDstandardNth3(&gt13[index]);
- CCTK_REAL const PDstandardNth1gt22 = PDstandardNth1(&gt22[index]);
- CCTK_REAL const PDstandardNth2gt22 = PDstandardNth2(&gt22[index]);
- CCTK_REAL const PDstandardNth3gt22 = PDstandardNth3(&gt22[index]);
- CCTK_REAL const PDstandardNth1gt23 = PDstandardNth1(&gt23[index]);
- CCTK_REAL const PDstandardNth2gt23 = PDstandardNth2(&gt23[index]);
- CCTK_REAL const PDstandardNth3gt23 = PDstandardNth3(&gt23[index]);
- CCTK_REAL const PDstandardNth1gt33 = PDstandardNth1(&gt33[index]);
- CCTK_REAL const PDstandardNth2gt33 = PDstandardNth2(&gt33[index]);
- CCTK_REAL const PDstandardNth3gt33 = PDstandardNth3(&gt33[index]);
+ 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);
@@ -193,154 +486,428 @@ static void ML_BSSN_O2_convertFromADMBaseGamma_Body(cGH const * restrict const c
ptrdiff_t dir3 = Sign(beta3L);
- CCTK_REAL detgt = 1;
+ 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 gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L));
+ CCTK_REAL_VEC gtu11 = kmul(INV(detgt),kmsub(gt22L,gt33L,SQR(gt23L)));
- CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt);
+ CCTK_REAL_VEC gtu12 =
+ kmul(INV(detgt),kmsub(gt13L,gt23L,kmul(gt12L,gt33L)));
- CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC gtu13 =
+ kmul(INV(detgt),kmsub(gt12L,gt23L,kmul(gt13L,gt22L)));
- CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L));
+ CCTK_REAL_VEC gtu22 = kmul(INV(detgt),kmsub(gt11L,gt33L,SQR(gt13L)));
- CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC gtu23 =
+ kmul(INV(detgt),kmsub(gt12L,gt13L,kmul(gt11L,gt23L)));
- CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L));
+ CCTK_REAL_VEC gtu33 = kmul(INV(detgt),kmsub(gt11L,gt22L,SQR(gt12L)));
- CCTK_REAL Gt111 = 0.5*(gtu11*PDstandardNth1gt11 +
- 2*(gtu12*PDstandardNth1gt12 + gtu13*PDstandardNth1gt13) -
- gtu12*PDstandardNth2gt11 - gtu13*PDstandardNth3gt11);
+ 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 Gt211 = 0.5*(gtu12*PDstandardNth1gt11 +
- 2*(gtu22*PDstandardNth1gt12 + gtu23*PDstandardNth1gt13) -
- gtu22*PDstandardNth2gt11 - gtu23*PDstandardNth3gt11);
+ 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 Gt311 = 0.5*(gtu13*PDstandardNth1gt11 +
- 2*(gtu23*PDstandardNth1gt12 + gtu33*PDstandardNth1gt13) -
- gtu23*PDstandardNth2gt11 - gtu33*PDstandardNth3gt11);
+ 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 Gt112 = 0.5*(gtu12*PDstandardNth1gt22 +
- gtu11*PDstandardNth2gt11 + gtu13*(PDstandardNth1gt23 +
- PDstandardNth2gt13 - PDstandardNth3gt12));
+ CCTK_REAL_VEC Gt112 =
+ kmul(kmadd(gtu12,JacPDstandardNth1gt22,kmadd(gtu11,JacPDstandardNth2gt11,kmul(gtu13,kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth2gt13,JacPDstandardNth3gt12))))),ToReal(0.5));
- CCTK_REAL Gt212 = 0.5*(gtu22*PDstandardNth1gt22 +
- gtu12*PDstandardNth2gt11 + gtu23*(PDstandardNth1gt23 +
- PDstandardNth2gt13 - PDstandardNth3gt12));
+ CCTK_REAL_VEC Gt212 =
+ kmul(kmadd(gtu22,JacPDstandardNth1gt22,kmadd(gtu12,JacPDstandardNth2gt11,kmul(gtu23,kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth2gt13,JacPDstandardNth3gt12))))),ToReal(0.5));
- CCTK_REAL Gt312 = 0.5*(gtu23*PDstandardNth1gt22 +
- gtu13*PDstandardNth2gt11 + gtu33*(PDstandardNth1gt23 +
- PDstandardNth2gt13 - PDstandardNth3gt12));
+ CCTK_REAL_VEC Gt312 =
+ kmul(kmadd(gtu23,JacPDstandardNth1gt22,kmadd(gtu13,JacPDstandardNth2gt11,kmul(gtu33,kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth2gt13,JacPDstandardNth3gt12))))),ToReal(0.5));
- CCTK_REAL Gt113 = 0.5*(gtu13*PDstandardNth1gt33 +
- gtu11*PDstandardNth3gt11 + gtu12*(PDstandardNth1gt23 -
- PDstandardNth2gt13 + PDstandardNth3gt12));
+ CCTK_REAL_VEC Gt113 =
+ kmul(kmadd(gtu13,JacPDstandardNth1gt33,kmadd(gtu11,JacPDstandardNth3gt11,kmul(gtu12,kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth3gt12,JacPDstandardNth2gt13))))),ToReal(0.5));
- CCTK_REAL Gt213 = 0.5*(gtu23*PDstandardNth1gt33 +
- gtu12*PDstandardNth3gt11 + gtu22*(PDstandardNth1gt23 -
- PDstandardNth2gt13 + PDstandardNth3gt12));
+ CCTK_REAL_VEC Gt213 =
+ kmul(kmadd(gtu23,JacPDstandardNth1gt33,kmadd(gtu12,JacPDstandardNth3gt11,kmul(gtu22,kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth3gt12,JacPDstandardNth2gt13))))),ToReal(0.5));
- CCTK_REAL Gt313 = 0.5*(gtu33*PDstandardNth1gt33 +
- gtu13*PDstandardNth3gt11 + gtu23*(PDstandardNth1gt23 -
- PDstandardNth2gt13 + PDstandardNth3gt12));
+ CCTK_REAL_VEC Gt313 =
+ kmul(kmadd(gtu33,JacPDstandardNth1gt33,kmadd(gtu13,JacPDstandardNth3gt11,kmul(gtu23,kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth3gt12,JacPDstandardNth2gt13))))),ToReal(0.5));
- CCTK_REAL Gt122 = 0.5*(gtu11*(-PDstandardNth1gt22 +
- 2*PDstandardNth2gt12) + gtu12*PDstandardNth2gt22 +
- gtu13*(2*PDstandardNth2gt23 - PDstandardNth3gt22));
+ 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 Gt222 = 0.5*(gtu12*(-PDstandardNth1gt22 +
- 2*PDstandardNth2gt12) + gtu22*PDstandardNth2gt22 +
- gtu23*(2*PDstandardNth2gt23 - PDstandardNth3gt22));
+ 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 Gt322 = 0.5*(gtu13*(-PDstandardNth1gt22 +
- 2*PDstandardNth2gt12) + gtu23*PDstandardNth2gt22 +
- gtu33*(2*PDstandardNth2gt23 - PDstandardNth3gt22));
+ 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 Gt123 = 0.5*(gtu13*PDstandardNth2gt33 +
- gtu11*(-PDstandardNth1gt23 + PDstandardNth2gt13 + PDstandardNth3gt12) +
- gtu12*PDstandardNth3gt22);
+ CCTK_REAL_VEC Gt123 =
+ kmul(kmadd(gtu13,JacPDstandardNth2gt33,kmadd(gtu12,JacPDstandardNth3gt22,kmul(gtu11,kadd(JacPDstandardNth2gt13,ksub(JacPDstandardNth3gt12,JacPDstandardNth1gt23))))),ToReal(0.5));
- CCTK_REAL Gt223 = 0.5*(gtu23*PDstandardNth2gt33 +
- gtu12*(-PDstandardNth1gt23 + PDstandardNth2gt13 + PDstandardNth3gt12) +
- gtu22*PDstandardNth3gt22);
+ CCTK_REAL_VEC Gt223 =
+ kmul(kmadd(gtu23,JacPDstandardNth2gt33,kmadd(gtu22,JacPDstandardNth3gt22,kmul(gtu12,kadd(JacPDstandardNth2gt13,ksub(JacPDstandardNth3gt12,JacPDstandardNth1gt23))))),ToReal(0.5));
- CCTK_REAL Gt323 = 0.5*(gtu33*PDstandardNth2gt33 +
- gtu13*(-PDstandardNth1gt23 + PDstandardNth2gt13 + PDstandardNth3gt12) +
- gtu23*PDstandardNth3gt22);
+ CCTK_REAL_VEC Gt323 =
+ kmul(kmadd(gtu33,JacPDstandardNth2gt33,kmadd(gtu23,JacPDstandardNth3gt22,kmul(gtu13,kadd(JacPDstandardNth2gt13,ksub(JacPDstandardNth3gt12,JacPDstandardNth1gt23))))),ToReal(0.5));
- CCTK_REAL Gt133 = 0.5*(gtu11*(-PDstandardNth1gt33 +
- 2*PDstandardNth3gt13) + gtu12*(-PDstandardNth2gt33 +
- 2*PDstandardNth3gt23) + gtu13*PDstandardNth3gt33);
+ 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 Gt233 = 0.5*(gtu12*(-PDstandardNth1gt33 +
- 2*PDstandardNth3gt13) + gtu22*(-PDstandardNth2gt33 +
- 2*PDstandardNth3gt23) + gtu23*PDstandardNth3gt33);
+ 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 Gt333 = 0.5*(gtu13*(-PDstandardNth1gt33 +
- 2*PDstandardNth3gt13) + gtu23*(-PDstandardNth2gt33 +
- 2*PDstandardNth3gt23) + gtu33*PDstandardNth3gt33);
+ 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 Xt1L = Gt111*gtu11 + Gt122*gtu22 + 2*(Gt112*gtu12 +
- Gt113*gtu13 + Gt123*gtu23) + Gt133*gtu33;
+ 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 Xt2L = Gt211*gtu11 + Gt222*gtu22 + 2*(Gt212*gtu12 +
- Gt213*gtu13 + Gt223*gtu23) + Gt233*gtu33;
+ 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 Xt3L = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu12 +
- Gt313*gtu13 + Gt323*gtu23) + Gt333*gtu33;
+ 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 AL = IfThen(LapseACoeff !=
- 0,-(INV(ToReal(harmonicF))*pow(alphaL,-ToReal(harmonicN))*(dtalpL -
- (beta1L*PDupwindNthAnti1alpha + beta2L*PDupwindNthAnti2alpha +
- beta3L*PDupwindNthAnti3alpha + PDupwindNthSymm1alpha*Abs(beta1L) +
- PDupwindNthSymm2alpha*Abs(beta2L) +
- PDupwindNthSymm3alpha*Abs(beta3L))*ToReal(LapseAdvectionCoeff))),0);
+ 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 theta = fmin(1,exp(1 -
- rL*INV(ToReal(SpatialShiftGammaCoeffRadius))));
+ CCTK_REAL_VEC theta =
+ kfmin(ToReal(1),kexp(knmsub(rL,INV(ToReal(SpatialShiftGammaCoeffRadius)),ToReal(1))));
- CCTK_REAL B1L;
- CCTK_REAL B2L;
- CCTK_REAL B3L;
+ CCTK_REAL_VEC B1L;
+ CCTK_REAL_VEC B2L;
+ CCTK_REAL_VEC B3L;
if (ShiftBCoeff*ShiftGammaCoeff != 0)
{
- B1L = INV(theta)*INV(ToReal(ShiftGammaCoeff))*(dtbetaxL -
- (beta1L*PDupwindNthAnti1beta1 + beta2L*PDupwindNthAnti2beta1 +
- beta3L*PDupwindNthAnti3beta1 + PDupwindNthSymm1beta1*Abs(beta1L) +
- PDupwindNthSymm2beta1*Abs(beta2L) +
- PDupwindNthSymm3beta1*Abs(beta3L))*ToReal(ShiftAdvectionCoeff));
-
- B2L = INV(theta)*INV(ToReal(ShiftGammaCoeff))*(dtbetayL -
- (beta1L*PDupwindNthAnti1beta2 + beta2L*PDupwindNthAnti2beta2 +
- beta3L*PDupwindNthAnti3beta2 + PDupwindNthSymm1beta2*Abs(beta1L) +
- PDupwindNthSymm2beta2*Abs(beta2L) +
- PDupwindNthSymm3beta2*Abs(beta3L))*ToReal(ShiftAdvectionCoeff));
-
- B3L = INV(theta)*INV(ToReal(ShiftGammaCoeff))*(dtbetazL -
- (beta1L*PDupwindNthAnti1beta3 + beta2L*PDupwindNthAnti2beta3 +
- beta3L*PDupwindNthAnti3beta3 + PDupwindNthSymm1beta3*Abs(beta1L) +
- PDupwindNthSymm2beta3*Abs(beta2L) +
- PDupwindNthSymm3beta3*Abs(beta3L))*ToReal(ShiftAdvectionCoeff));
+ B1L =
+ kmul(INV(theta),kmul(INV(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(theta),kmul(INV(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(theta),kmul(INV(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 = 0;
+ B1L = ToReal(0);
- B2L = 0;
+ B2L = ToReal(0);
- B3L = 0;
+ B3L = 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(A[index],AL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B1[index],B1L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B2[index],B2L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B3[index],B3L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt1[index],Xt1L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt2[index],Xt2L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt3[index],Xt3L,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(A[index],AL,elt_count);
+ vec_store_nta_partial_hi(B1[index],B1L,elt_count);
+ vec_store_nta_partial_hi(B2[index],B2L,elt_count);
+ vec_store_nta_partial_hi(B3[index],B3L,elt_count);
+ vec_store_nta_partial_hi(Xt1[index],Xt1L,elt_count);
+ vec_store_nta_partial_hi(Xt2[index],Xt2L,elt_count);
+ vec_store_nta_partial_hi(Xt3[index],Xt3L,elt_count);
+ continue;
}
- /* Copy local copies back to grid functions */
- A[index] = AL;
- B1[index] = B1L;
- B2[index] = B2L;
- B3[index] = B3L;
- Xt1[index] = Xt1L;
- Xt2[index] = Xt2L;
- Xt3[index] = Xt3L;
+ /* 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(A[index],AL,elt_count);
+ vec_store_nta_partial_lo(B1[index],B1L,elt_count);
+ vec_store_nta_partial_lo(B2[index],B2L,elt_count);
+ vec_store_nta_partial_lo(B3[index],B3L,elt_count);
+ vec_store_nta_partial_lo(Xt1[index],Xt1L,elt_count);
+ vec_store_nta_partial_lo(Xt2[index],Xt2L,elt_count);
+ vec_store_nta_partial_lo(Xt3[index],Xt3L,elt_count);
+ break;
+ }
+ vec_store_nta(A[index],AL);
+ vec_store_nta(B1[index],B1L);
+ vec_store_nta(B2[index],B2L);
+ vec_store_nta(B3[index],B3L);
+ vec_store_nta(Xt1[index],Xt1L);
+ vec_store_nta(Xt2[index],Xt2L);
+ vec_store_nta(Xt3[index],Xt3L);
}
- LC_ENDLOOP3 (ML_BSSN_O2_convertFromADMBaseGamma);
+ LC_ENDLOOP3VEC (ML_BSSN_O2_convertFromADMBaseGamma);
}
extern "C" void ML_BSSN_O2_convertFromADMBaseGamma(CCTK_ARGUMENTS)
@@ -348,5 +915,43 @@ extern "C" void ML_BSSN_O2_convertFromADMBaseGamma(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O2_convertFromADMBaseGamma_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_O2_convertFromADMBaseGamma_calc_every != ML_BSSN_O2_convertFromADMBaseGamma_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ADMBase::dtlapse","ADMBase::dtshift","grid::coordinates","Grid::coordinates","ML_BSSN_O2::ML_dtlapse","ML_BSSN_O2::ML_dtshift","ML_BSSN_O2::ML_Gamma","ML_BSSN_O2::ML_lapse","ML_BSSN_O2::ML_metric","ML_BSSN_O2::ML_shift"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O2_convertFromADMBaseGamma", 10, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O2_convertFromADMBaseGamma", 2, 2, 2);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O2_convertFromADMBaseGamma", 3, 3, 3);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O2_convertFromADMBaseGamma", 4, 4, 4);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O2_convertFromADMBaseGamma", 5, 5, 5);
+ break;
+ }
+
GenericFD_LoopOverInterior(cctkGH, &ML_BSSN_O2_convertFromADMBaseGamma_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_O2_convertFromADMBaseGamma_Body");
+ }
}
diff --git a/ML_BSSN_O2/src/ML_BSSN_O2_convertToADMBase.cc b/ML_BSSN_O2/src/ML_BSSN_O2_convertToADMBase.cc
index 7f8e488..f61afd8 100644
--- a/ML_BSSN_O2/src/ML_BSSN_O2_convertToADMBase.cc
+++ b/ML_BSSN_O2/src/ML_BSSN_O2_convertToADMBase.cc
@@ -13,15 +13,16 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
-static void ML_BSSN_O2_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_O2_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;
@@ -29,20 +30,6 @@ static void ML_BSSN_O2_convertToADMBase_Body(cGH const * restrict const cctkGH,
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O2_convertToADMBase_Body");
- }
-
- if (cctk_iteration % ML_BSSN_O2_convertToADMBase_calc_every != ML_BSSN_O2_convertToADMBase_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ADMBase::curv","ADMBase::lapse","ADMBase::metric","ADMBase::shift","ML_BSSN_O2::ML_curv","ML_BSSN_O2::ML_lapse","ML_BSSN_O2::ML_log_confac","ML_BSSN_O2::ML_metric","ML_BSSN_O2::ML_shift","ML_BSSN_O2::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O2_convertToADMBase", 10, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -52,148 +39,345 @@ static void ML_BSSN_O2_convertToADMBase_Body(cGH const * restrict const cctkGH,
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o16dx = 0.0625*INV(dx);
- CCTK_REAL const p1o16dy = 0.0625*INV(dy);
- CCTK_REAL const p1o16dz = 0.0625*INV(dz);
- CCTK_REAL const p1o2dx = 0.5*INV(dx);
- CCTK_REAL const p1o2dy = 0.5*INV(dy);
- CCTK_REAL const p1o2dz = 0.5*INV(dz);
- CCTK_REAL const p1o4dx = 0.25*INV(dx);
- CCTK_REAL const p1o4dxdy = 0.25*INV(dx)*INV(dy);
- CCTK_REAL const p1o4dxdz = 0.25*INV(dx)*INV(dz);
- CCTK_REAL const p1o4dy = 0.25*INV(dy);
- CCTK_REAL const p1o4dydz = 0.25*INV(dy)*INV(dz);
- CCTK_REAL const p1o4dz = 0.25*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1odx2 = INV(SQR(dx));
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1ody2 = INV(SQR(dy));
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const p1odz2 = INV(SQR(dz));
- CCTK_REAL const pm1o2dx = -0.5*INV(dx);
- CCTK_REAL const pm1o2dy = -0.5*INV(dy);
- CCTK_REAL const pm1o2dz = -0.5*INV(dz);
- CCTK_REAL const pm1o4dx = -0.25*INV(dx);
- CCTK_REAL const pm1o4dy = -0.25*INV(dy);
- CCTK_REAL const pm1o4dz = -0.25*INV(dz);
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_O2_convertToADMBase,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_O2_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 alphaL = alpha[index];
- CCTK_REAL At11L = At11[index];
- CCTK_REAL At12L = At12[index];
- CCTK_REAL At13L = At13[index];
- CCTK_REAL At22L = At22[index];
- CCTK_REAL At23L = At23[index];
- CCTK_REAL At33L = At33[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL gt11L = gt11[index];
- CCTK_REAL gt12L = gt12[index];
- CCTK_REAL gt13L = gt13[index];
- CCTK_REAL gt22L = gt22[index];
- CCTK_REAL gt23L = gt23[index];
- CCTK_REAL gt33L = gt33[index];
- CCTK_REAL gxxL = gxx[index];
- CCTK_REAL gxyL = gxy[index];
- CCTK_REAL gxzL = gxz[index];
- CCTK_REAL gyyL = gyy[index];
- CCTK_REAL gyzL = gyz[index];
- CCTK_REAL gzzL = gzz[index];
- CCTK_REAL phiL = phi[index];
- CCTK_REAL trKL = trK[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 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 e4phi = IfThen(conformalMethod,INV(SQR(phiL)),exp(4*phiL));
+ CCTK_REAL_VEC e4phi =
+ IfThen(conformalMethod,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
+
+ gxxL = kmul(e4phi,gt11L);
- gxxL = e4phi*gt11L;
+ gxyL = kmul(e4phi,gt12L);
- gxyL = e4phi*gt12L;
+ gxzL = kmul(e4phi,gt13L);
- gxzL = e4phi*gt13L;
+ gyyL = kmul(e4phi,gt22L);
- gyyL = e4phi*gt22L;
+ gyzL = kmul(e4phi,gt23L);
- gyzL = e4phi*gt23L;
+ gzzL = kmul(e4phi,gt33L);
- gzzL = e4phi*gt33L;
+ CCTK_REAL_VEC kxxL =
+ kmadd(At11L,e4phi,kmul(gxxL,kmul(trKL,ToReal(0.333333333333333333333333333333))));
- CCTK_REAL kxxL = At11L*e4phi +
- 0.333333333333333333333333333333*gxxL*trKL;
+ CCTK_REAL_VEC kxyL =
+ kmadd(At12L,e4phi,kmul(gxyL,kmul(trKL,ToReal(0.333333333333333333333333333333))));
- CCTK_REAL kxyL = At12L*e4phi +
- 0.333333333333333333333333333333*gxyL*trKL;
+ CCTK_REAL_VEC kxzL =
+ kmadd(At13L,e4phi,kmul(gxzL,kmul(trKL,ToReal(0.333333333333333333333333333333))));
- CCTK_REAL kxzL = At13L*e4phi +
- 0.333333333333333333333333333333*gxzL*trKL;
+ CCTK_REAL_VEC kyyL =
+ kmadd(At22L,e4phi,kmul(gyyL,kmul(trKL,ToReal(0.333333333333333333333333333333))));
- CCTK_REAL kyyL = At22L*e4phi +
- 0.333333333333333333333333333333*gyyL*trKL;
+ CCTK_REAL_VEC kyzL =
+ kmadd(At23L,e4phi,kmul(gyzL,kmul(trKL,ToReal(0.333333333333333333333333333333))));
- CCTK_REAL kyzL = At23L*e4phi +
- 0.333333333333333333333333333333*gyzL*trKL;
+ CCTK_REAL_VEC kzzL =
+ kmadd(At33L,e4phi,kmul(gzzL,kmul(trKL,ToReal(0.333333333333333333333333333333))));
- CCTK_REAL kzzL = At33L*e4phi +
- 0.333333333333333333333333333333*gzzL*trKL;
+ CCTK_REAL_VEC alpL = alphaL;
- CCTK_REAL alpL = alphaL;
+ CCTK_REAL_VEC betaxL = beta1L;
- CCTK_REAL betaxL = beta1L;
+ CCTK_REAL_VEC betayL = beta2L;
- CCTK_REAL betayL = beta2L;
+ CCTK_REAL_VEC betazL = beta3L;
- CCTK_REAL betazL = beta3L;
+ /* If necessary, store only partial vectors after the first iteration */
- /* Copy local copies back to grid functions */
- alp[index] = alpL;
- betax[index] = betaxL;
- betay[index] = betayL;
- betaz[index] = betazL;
- gxx[index] = gxxL;
- gxy[index] = gxyL;
- gxz[index] = gxzL;
- gyy[index] = gyyL;
- gyz[index] = gyzL;
- gzz[index] = gzzL;
- kxx[index] = kxxL;
- kxy[index] = kxyL;
- kxz[index] = kxzL;
- kyy[index] = kyyL;
- kyz[index] = kyzL;
- kzz[index] = kzzL;
+ 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(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(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(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(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);
}
- LC_ENDLOOP3 (ML_BSSN_O2_convertToADMBase);
+ LC_ENDLOOP3VEC (ML_BSSN_O2_convertToADMBase);
}
extern "C" void ML_BSSN_O2_convertToADMBase(CCTK_ARGUMENTS)
@@ -201,5 +385,39 @@ extern "C" void ML_BSSN_O2_convertToADMBase(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O2_convertToADMBase_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_O2_convertToADMBase_calc_every != ML_BSSN_O2_convertToADMBase_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ADMBase::curv","ADMBase::lapse","ADMBase::metric","ADMBase::shift","ML_BSSN_O2::ML_curv","ML_BSSN_O2::ML_lapse","ML_BSSN_O2::ML_log_confac","ML_BSSN_O2::ML_metric","ML_BSSN_O2::ML_shift","ML_BSSN_O2::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O2_convertToADMBase", 10, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverEverything(cctkGH, &ML_BSSN_O2_convertToADMBase_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_O2_convertToADMBase_Body");
+ }
}
diff --git a/ML_BSSN_O2/src/ML_BSSN_O2_convertToADMBaseDtLapseShift.cc b/ML_BSSN_O2/src/ML_BSSN_O2_convertToADMBaseDtLapseShift.cc
index 82650c9..0e83bb5 100644
--- a/ML_BSSN_O2/src/ML_BSSN_O2_convertToADMBaseDtLapseShift.cc
+++ b/ML_BSSN_O2/src/ML_BSSN_O2_convertToADMBaseDtLapseShift.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_O2_convertToADMBaseDtLapseShift_SelectBCs(CCTK_ARGUMENTS)
{
@@ -36,7 +37,7 @@ extern "C" void ML_BSSN_O2_convertToADMBaseDtLapseShift_SelectBCs(CCTK_ARGUMENTS
return;
}
-static void ML_BSSN_O2_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_O2_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;
@@ -44,21 +45,6 @@ static void ML_BSSN_O2_convertToADMBaseDtLapseShift_Body(cGH const * restrict co
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O2_convertToADMBaseDtLapseShift_Body");
- }
-
- if (cctk_iteration % ML_BSSN_O2_convertToADMBaseDtLapseShift_calc_every != ML_BSSN_O2_convertToADMBaseDtLapseShift_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ADMBase::dtlapse","ADMBase::dtshift","grid::coordinates","Grid::coordinates","ML_BSSN_O2::ML_dtlapse","ML_BSSN_O2::ML_dtshift","ML_BSSN_O2::ML_Gamma","ML_BSSN_O2::ML_lapse","ML_BSSN_O2::ML_shift","ML_BSSN_O2::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O2_convertToADMBaseDtLapseShift", 10, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O2_convertToADMBaseDtLapseShift", 2, 2, 2);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -68,100 +54,462 @@ static void ML_BSSN_O2_convertToADMBaseDtLapseShift_Body(cGH const * restrict co
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o16dx = 0.0625*INV(dx);
- CCTK_REAL const p1o16dy = 0.0625*INV(dy);
- CCTK_REAL const p1o16dz = 0.0625*INV(dz);
- CCTK_REAL const p1o2dx = 0.5*INV(dx);
- CCTK_REAL const p1o2dy = 0.5*INV(dy);
- CCTK_REAL const p1o2dz = 0.5*INV(dz);
- CCTK_REAL const p1o4dx = 0.25*INV(dx);
- CCTK_REAL const p1o4dxdy = 0.25*INV(dx)*INV(dy);
- CCTK_REAL const p1o4dxdz = 0.25*INV(dx)*INV(dz);
- CCTK_REAL const p1o4dy = 0.25*INV(dy);
- CCTK_REAL const p1o4dydz = 0.25*INV(dy)*INV(dz);
- CCTK_REAL const p1o4dz = 0.25*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1odx2 = INV(SQR(dx));
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1ody2 = INV(SQR(dy));
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const p1odz2 = INV(SQR(dz));
- CCTK_REAL const pm1o2dx = -0.5*INV(dx);
- CCTK_REAL const pm1o2dy = -0.5*INV(dy);
- CCTK_REAL const pm1o2dz = -0.5*INV(dz);
- CCTK_REAL const pm1o4dx = -0.25*INV(dx);
- CCTK_REAL const pm1o4dy = -0.25*INV(dy);
- CCTK_REAL const pm1o4dz = -0.25*INV(dz);
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_O2_convertToADMBaseDtLapseShift,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_O2_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 AL = A[index];
- CCTK_REAL alphaL = alpha[index];
- CCTK_REAL B1L = B1[index];
- CCTK_REAL B2L = B2[index];
- CCTK_REAL B3L = B3[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL rL = r[index];
- CCTK_REAL trKL = trK[index];
- CCTK_REAL Xt1L = Xt1[index];
- CCTK_REAL Xt2L = Xt2[index];
- CCTK_REAL Xt3L = Xt3[index];
+ 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 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 const PDupwindNthAnti1alpha = PDupwindNthAnti1(&alpha[index]);
- CCTK_REAL const PDupwindNthSymm1alpha = PDupwindNthSymm1(&alpha[index]);
- CCTK_REAL const PDupwindNthAnti2alpha = PDupwindNthAnti2(&alpha[index]);
- CCTK_REAL const PDupwindNthSymm2alpha = PDupwindNthSymm2(&alpha[index]);
- CCTK_REAL const PDupwindNthAnti3alpha = PDupwindNthAnti3(&alpha[index]);
- CCTK_REAL const PDupwindNthSymm3alpha = PDupwindNthSymm3(&alpha[index]);
- CCTK_REAL const PDupwindNthAnti1beta1 = PDupwindNthAnti1(&beta1[index]);
- CCTK_REAL const PDupwindNthSymm1beta1 = PDupwindNthSymm1(&beta1[index]);
- CCTK_REAL const PDupwindNthAnti2beta1 = PDupwindNthAnti2(&beta1[index]);
- CCTK_REAL const PDupwindNthSymm2beta1 = PDupwindNthSymm2(&beta1[index]);
- CCTK_REAL const PDupwindNthAnti3beta1 = PDupwindNthAnti3(&beta1[index]);
- CCTK_REAL const PDupwindNthSymm3beta1 = PDupwindNthSymm3(&beta1[index]);
- CCTK_REAL const PDupwindNthAnti1beta2 = PDupwindNthAnti1(&beta2[index]);
- CCTK_REAL const PDupwindNthSymm1beta2 = PDupwindNthSymm1(&beta2[index]);
- CCTK_REAL const PDupwindNthAnti2beta2 = PDupwindNthAnti2(&beta2[index]);
- CCTK_REAL const PDupwindNthSymm2beta2 = PDupwindNthSymm2(&beta2[index]);
- CCTK_REAL const PDupwindNthAnti3beta2 = PDupwindNthAnti3(&beta2[index]);
- CCTK_REAL const PDupwindNthSymm3beta2 = PDupwindNthSymm3(&beta2[index]);
- CCTK_REAL const PDupwindNthAnti1beta3 = PDupwindNthAnti1(&beta3[index]);
- CCTK_REAL const PDupwindNthSymm1beta3 = PDupwindNthSymm1(&beta3[index]);
- CCTK_REAL const PDupwindNthAnti2beta3 = PDupwindNthAnti2(&beta3[index]);
- CCTK_REAL const PDupwindNthSymm2beta3 = PDupwindNthSymm2(&beta3[index]);
- CCTK_REAL const PDupwindNthAnti3beta3 = PDupwindNthAnti3(&beta3[index]);
- CCTK_REAL const PDupwindNthSymm3beta3 = PDupwindNthSymm3(&beta3[index]);
+ CCTK_REAL_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);
@@ -170,46 +518,383 @@ static void ML_BSSN_O2_convertToADMBaseDtLapseShift_Body(cGH const * restrict co
ptrdiff_t dir3 = Sign(beta3L);
- CCTK_REAL eta = fmin(1,INV(rL)*ToReal(SpatialBetaDriverRadius));
-
- CCTK_REAL theta = fmin(1,exp(1 -
- rL*INV(ToReal(SpatialShiftGammaCoeffRadius))));
-
- CCTK_REAL dtalpL =
- -(pow(alphaL,ToReal(harmonicN))*ToReal(harmonicF)*(trKL + (AL -
- trKL)*ToReal(LapseACoeff))) + (beta1L*PDupwindNthAnti1alpha +
- beta2L*PDupwindNthAnti2alpha + beta3L*PDupwindNthAnti3alpha +
- PDupwindNthSymm1alpha*Abs(beta1L) + PDupwindNthSymm2alpha*Abs(beta2L) +
- PDupwindNthSymm3alpha*Abs(beta3L))*ToReal(LapseAdvectionCoeff);
-
- CCTK_REAL dtbetaxL = (beta1L*PDupwindNthAnti1beta1 +
- beta2L*PDupwindNthAnti2beta1 + beta3L*PDupwindNthAnti3beta1 +
- PDupwindNthSymm1beta1*Abs(beta1L) + PDupwindNthSymm2beta1*Abs(beta2L) +
- PDupwindNthSymm3beta1*Abs(beta3L))*ToReal(ShiftAdvectionCoeff) +
- theta*(Xt1L + beta1L*eta*ToReal(BetaDriver)*(-1 + ToReal(ShiftBCoeff))
- + (B1L - Xt1L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
-
- CCTK_REAL dtbetayL = (beta1L*PDupwindNthAnti1beta2 +
- beta2L*PDupwindNthAnti2beta2 + beta3L*PDupwindNthAnti3beta2 +
- PDupwindNthSymm1beta2*Abs(beta1L) + PDupwindNthSymm2beta2*Abs(beta2L) +
- PDupwindNthSymm3beta2*Abs(beta3L))*ToReal(ShiftAdvectionCoeff) +
- theta*(Xt2L + beta2L*eta*ToReal(BetaDriver)*(-1 + ToReal(ShiftBCoeff))
- + (B2L - Xt2L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
-
- CCTK_REAL dtbetazL = (beta1L*PDupwindNthAnti1beta3 +
- beta2L*PDupwindNthAnti2beta3 + beta3L*PDupwindNthAnti3beta3 +
- PDupwindNthSymm1beta3*Abs(beta1L) + PDupwindNthSymm2beta3*Abs(beta2L) +
- PDupwindNthSymm3beta3*Abs(beta3L))*ToReal(ShiftAdvectionCoeff) +
- theta*(Xt3L + beta3L*eta*ToReal(BetaDriver)*(-1 + ToReal(ShiftBCoeff))
- + (B3L - Xt3L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
-
- /* Copy local copies back to grid functions */
- dtalp[index] = dtalpL;
- dtbetax[index] = dtbetaxL;
- dtbetay[index] = dtbetayL;
- dtbetaz[index] = dtbetazL;
+ 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 =
+ kfmin(ToReal(1),kmul(INV(rL),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(ksub(AL,trKL),ToReal(LapseACoeff),trKL))));
+
+ 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(kmadd(gtu11,JacPDstandardNth1alpha,kmadd(gtu12,JacPDstandardNth2alpha,kmul(gtu13,JacPDstandardNth3alpha))),kmul(phiL,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(beta1L,kmul(eta,ToReal(BetaDriver*(-1
+ +
+ ShiftBCoeff))),kmul(ksub(B1L,Xt1L),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(kmadd(gtu12,JacPDstandardNth1alpha,kmadd(gtu22,JacPDstandardNth2alpha,kmul(gtu23,JacPDstandardNth3alpha))),kmul(phiL,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(beta2L,kmul(eta,ToReal(BetaDriver*(-1
+ +
+ ShiftBCoeff))),kmul(ksub(B2L,Xt2L),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(kmadd(gtu13,JacPDstandardNth1alpha,kmadd(gtu23,JacPDstandardNth2alpha,kmul(gtu33,JacPDstandardNth3alpha))),kmul(phiL,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(beta3L,kmul(eta,ToReal(BetaDriver*(-1
+ +
+ ShiftBCoeff))),kmul(ksub(B3L,Xt3L),ToReal(ShiftBCoeff)))),ToReal(ShiftGammaCoeff)))));
+
+ /* 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(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);
+ 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(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);
+ 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(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);
+ break;
+ }
+ vec_store_nta(dtalp[index],dtalpL);
+ vec_store_nta(dtbetax[index],dtbetaxL);
+ vec_store_nta(dtbetay[index],dtbetayL);
+ vec_store_nta(dtbetaz[index],dtbetazL);
}
- LC_ENDLOOP3 (ML_BSSN_O2_convertToADMBaseDtLapseShift);
+ LC_ENDLOOP3VEC (ML_BSSN_O2_convertToADMBaseDtLapseShift);
}
extern "C" void ML_BSSN_O2_convertToADMBaseDtLapseShift(CCTK_ARGUMENTS)
@@ -217,5 +902,43 @@ extern "C" void ML_BSSN_O2_convertToADMBaseDtLapseShift(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O2_convertToADMBaseDtLapseShift_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_O2_convertToADMBaseDtLapseShift_calc_every != ML_BSSN_O2_convertToADMBaseDtLapseShift_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ADMBase::dtlapse","ADMBase::dtshift","grid::coordinates","Grid::coordinates","ML_BSSN_O2::ML_dtlapse","ML_BSSN_O2::ML_dtshift","ML_BSSN_O2::ML_Gamma","ML_BSSN_O2::ML_lapse","ML_BSSN_O2::ML_log_confac","ML_BSSN_O2::ML_metric","ML_BSSN_O2::ML_shift","ML_BSSN_O2::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O2_convertToADMBaseDtLapseShift", 12, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O2_convertToADMBaseDtLapseShift", 2, 2, 2);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O2_convertToADMBaseDtLapseShift", 3, 3, 3);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O2_convertToADMBaseDtLapseShift", 4, 4, 4);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O2_convertToADMBaseDtLapseShift", 5, 5, 5);
+ break;
+ }
+
GenericFD_LoopOverInterior(cctkGH, &ML_BSSN_O2_convertToADMBaseDtLapseShift_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_O2_convertToADMBaseDtLapseShift_Body");
+ }
}
diff --git a/ML_BSSN_O2/src/ML_BSSN_O2_convertToADMBaseDtLapseShiftBoundary.cc b/ML_BSSN_O2/src/ML_BSSN_O2_convertToADMBaseDtLapseShiftBoundary.cc
index 71290a5..471d244 100644
--- a/ML_BSSN_O2/src/ML_BSSN_O2_convertToADMBaseDtLapseShiftBoundary.cc
+++ b/ML_BSSN_O2/src/ML_BSSN_O2_convertToADMBaseDtLapseShiftBoundary.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_O2_convertToADMBaseDtLapseShiftBoundary_SelectBCs(CCTK_ARGUMENTS)
{
@@ -36,7 +37,7 @@ extern "C" void ML_BSSN_O2_convertToADMBaseDtLapseShiftBoundary_SelectBCs(CCTK_A
return;
}
-static void ML_BSSN_O2_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_O2_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;
@@ -44,20 +45,6 @@ static void ML_BSSN_O2_convertToADMBaseDtLapseShiftBoundary_Body(cGH const * res
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O2_convertToADMBaseDtLapseShiftBoundary_Body");
- }
-
- if (cctk_iteration % ML_BSSN_O2_convertToADMBaseDtLapseShiftBoundary_calc_every != ML_BSSN_O2_convertToADMBaseDtLapseShiftBoundary_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ADMBase::dtlapse","ADMBase::dtshift","grid::coordinates","Grid::coordinates","ML_BSSN_O2::ML_dtlapse","ML_BSSN_O2::ML_dtshift","ML_BSSN_O2::ML_Gamma","ML_BSSN_O2::ML_lapse","ML_BSSN_O2::ML_shift","ML_BSSN_O2::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O2_convertToADMBaseDtLapseShiftBoundary", 10, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -67,106 +54,281 @@ static void ML_BSSN_O2_convertToADMBaseDtLapseShiftBoundary_Body(cGH const * res
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o16dx = 0.0625*INV(dx);
- CCTK_REAL const p1o16dy = 0.0625*INV(dy);
- CCTK_REAL const p1o16dz = 0.0625*INV(dz);
- CCTK_REAL const p1o2dx = 0.5*INV(dx);
- CCTK_REAL const p1o2dy = 0.5*INV(dy);
- CCTK_REAL const p1o2dz = 0.5*INV(dz);
- CCTK_REAL const p1o4dx = 0.25*INV(dx);
- CCTK_REAL const p1o4dxdy = 0.25*INV(dx)*INV(dy);
- CCTK_REAL const p1o4dxdz = 0.25*INV(dx)*INV(dz);
- CCTK_REAL const p1o4dy = 0.25*INV(dy);
- CCTK_REAL const p1o4dydz = 0.25*INV(dy)*INV(dz);
- CCTK_REAL const p1o4dz = 0.25*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1odx2 = INV(SQR(dx));
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1ody2 = INV(SQR(dy));
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const p1odz2 = INV(SQR(dz));
- CCTK_REAL const pm1o2dx = -0.5*INV(dx);
- CCTK_REAL const pm1o2dy = -0.5*INV(dy);
- CCTK_REAL const pm1o2dz = -0.5*INV(dz);
- CCTK_REAL const pm1o4dx = -0.25*INV(dx);
- CCTK_REAL const pm1o4dy = -0.25*INV(dy);
- CCTK_REAL const pm1o4dz = -0.25*INV(dz);
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_O2_convertToADMBaseDtLapseShiftBoundary,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_O2_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 AL = A[index];
- CCTK_REAL alphaL = alpha[index];
- CCTK_REAL B1L = B1[index];
- CCTK_REAL B2L = B2[index];
- CCTK_REAL B3L = B3[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL rL = r[index];
- CCTK_REAL trKL = trK[index];
- CCTK_REAL Xt1L = Xt1[index];
- CCTK_REAL Xt2L = Xt2[index];
- CCTK_REAL Xt3L = Xt3[index];
+ 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 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 eta = fmin(1,INV(rL)*ToReal(SpatialBetaDriverRadius));
+ CCTK_REAL_VEC eta =
+ kfmin(ToReal(1),kmul(INV(rL),ToReal(SpatialBetaDriverRadius)));
- CCTK_REAL theta = fmin(1,exp(1 -
- rL*INV(ToReal(SpatialShiftGammaCoeffRadius))));
+ CCTK_REAL_VEC theta =
+ kfmin(ToReal(1),kexp(knmsub(rL,INV(ToReal(SpatialShiftGammaCoeffRadius)),ToReal(1))));
- CCTK_REAL dtalpL =
- -(pow(alphaL,ToReal(harmonicN))*ToReal(harmonicF)*(trKL + (AL -
- trKL)*ToReal(LapseACoeff)));
+ CCTK_REAL_VEC dtalpL =
+ kneg(kmul(kpow(alphaL,harmonicN),kmul(ToReal(harmonicF),kmadd(ksub(AL,trKL),ToReal(LapseACoeff),trKL))));
- CCTK_REAL dtbetaxL = theta*(Xt1L + beta1L*eta*ToReal(BetaDriver)*(-1 +
- ToReal(ShiftBCoeff)) + (B1L -
- Xt1L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
+ CCTK_REAL_VEC dtbetaxL;
+ CCTK_REAL_VEC dtbetayL;
+ CCTK_REAL_VEC dtbetazL;
- CCTK_REAL dtbetayL = theta*(Xt2L + beta2L*eta*ToReal(BetaDriver)*(-1 +
- ToReal(ShiftBCoeff)) + (B2L -
- Xt2L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
+ if (harmonicShift)
+ {
+ dtbetaxL = ToReal(0);
+
+ dtbetayL = ToReal(0);
+
+ dtbetazL = ToReal(0);
+ }
+ else
+ {
+ dtbetaxL =
+ kmul(theta,kmul(kadd(Xt1L,kmadd(beta1L,kmul(eta,ToReal(BetaDriver*(-1 +
+ ShiftBCoeff))),kmul(ksub(B1L,Xt1L),ToReal(ShiftBCoeff)))),ToReal(ShiftGammaCoeff)));
+
+ dtbetayL =
+ kmul(theta,kmul(kadd(Xt2L,kmadd(beta2L,kmul(eta,ToReal(BetaDriver*(-1 +
+ ShiftBCoeff))),kmul(ksub(B2L,Xt2L),ToReal(ShiftBCoeff)))),ToReal(ShiftGammaCoeff)));
+
+ dtbetazL =
+ kmul(theta,kmul(kadd(Xt3L,kmadd(beta3L,kmul(eta,ToReal(BetaDriver*(-1 +
+ ShiftBCoeff))),kmul(ksub(B3L,Xt3L),ToReal(ShiftBCoeff)))),ToReal(ShiftGammaCoeff)));
+ }
- CCTK_REAL dtbetazL = theta*(Xt3L + beta3L*eta*ToReal(BetaDriver)*(-1 +
- ToReal(ShiftBCoeff)) + (B3L -
- Xt3L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
+ /* If necessary, store only partial vectors after the first iteration */
- /* Copy local copies back to grid functions */
- dtalp[index] = dtalpL;
- dtbetax[index] = dtbetaxL;
- dtbetay[index] = dtbetayL;
- dtbetaz[index] = dtbetazL;
+ 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(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);
+ 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(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);
+ 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(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);
+ break;
+ }
+ vec_store_nta(dtalp[index],dtalpL);
+ vec_store_nta(dtbetax[index],dtbetaxL);
+ vec_store_nta(dtbetay[index],dtbetayL);
+ vec_store_nta(dtbetaz[index],dtbetazL);
}
- LC_ENDLOOP3 (ML_BSSN_O2_convertToADMBaseDtLapseShiftBoundary);
+ LC_ENDLOOP3VEC (ML_BSSN_O2_convertToADMBaseDtLapseShiftBoundary);
}
extern "C" void ML_BSSN_O2_convertToADMBaseDtLapseShiftBoundary(CCTK_ARGUMENTS)
@@ -174,5 +336,39 @@ extern "C" void ML_BSSN_O2_convertToADMBaseDtLapseShiftBoundary(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O2_convertToADMBaseDtLapseShiftBoundary_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_O2_convertToADMBaseDtLapseShiftBoundary_calc_every != ML_BSSN_O2_convertToADMBaseDtLapseShiftBoundary_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ADMBase::dtlapse","ADMBase::dtshift","grid::coordinates","Grid::coordinates","ML_BSSN_O2::ML_dtlapse","ML_BSSN_O2::ML_dtshift","ML_BSSN_O2::ML_Gamma","ML_BSSN_O2::ML_lapse","ML_BSSN_O2::ML_shift","ML_BSSN_O2::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O2_convertToADMBaseDtLapseShiftBoundary", 10, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverBoundaryWithGhosts(cctkGH, &ML_BSSN_O2_convertToADMBaseDtLapseShiftBoundary_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_O2_convertToADMBaseDtLapseShiftBoundary_Body");
+ }
}
diff --git a/ML_BSSN_O2/src/ML_BSSN_O2_convertToADMBaseFakeDtLapseShift.cc b/ML_BSSN_O2/src/ML_BSSN_O2_convertToADMBaseFakeDtLapseShift.cc
index 8a53648..a9774f4 100644
--- a/ML_BSSN_O2/src/ML_BSSN_O2_convertToADMBaseFakeDtLapseShift.cc
+++ b/ML_BSSN_O2/src/ML_BSSN_O2_convertToADMBaseFakeDtLapseShift.cc
@@ -13,15 +13,16 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
-static void ML_BSSN_O2_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_O2_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;
@@ -29,20 +30,6 @@ static void ML_BSSN_O2_convertToADMBaseFakeDtLapseShift_Body(cGH const * restric
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O2_convertToADMBaseFakeDtLapseShift_Body");
- }
-
- if (cctk_iteration % ML_BSSN_O2_convertToADMBaseFakeDtLapseShift_calc_every != ML_BSSN_O2_convertToADMBaseFakeDtLapseShift_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ADMBase::dtlapse","ADMBase::dtshift","grid::coordinates","Grid::coordinates","ML_BSSN_O2::ML_dtlapse","ML_BSSN_O2::ML_dtshift","ML_BSSN_O2::ML_Gamma","ML_BSSN_O2::ML_lapse","ML_BSSN_O2::ML_shift","ML_BSSN_O2::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O2_convertToADMBaseFakeDtLapseShift", 10, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -52,106 +39,281 @@ static void ML_BSSN_O2_convertToADMBaseFakeDtLapseShift_Body(cGH const * restric
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o16dx = 0.0625*INV(dx);
- CCTK_REAL const p1o16dy = 0.0625*INV(dy);
- CCTK_REAL const p1o16dz = 0.0625*INV(dz);
- CCTK_REAL const p1o2dx = 0.5*INV(dx);
- CCTK_REAL const p1o2dy = 0.5*INV(dy);
- CCTK_REAL const p1o2dz = 0.5*INV(dz);
- CCTK_REAL const p1o4dx = 0.25*INV(dx);
- CCTK_REAL const p1o4dxdy = 0.25*INV(dx)*INV(dy);
- CCTK_REAL const p1o4dxdz = 0.25*INV(dx)*INV(dz);
- CCTK_REAL const p1o4dy = 0.25*INV(dy);
- CCTK_REAL const p1o4dydz = 0.25*INV(dy)*INV(dz);
- CCTK_REAL const p1o4dz = 0.25*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1odx2 = INV(SQR(dx));
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1ody2 = INV(SQR(dy));
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const p1odz2 = INV(SQR(dz));
- CCTK_REAL const pm1o2dx = -0.5*INV(dx);
- CCTK_REAL const pm1o2dy = -0.5*INV(dy);
- CCTK_REAL const pm1o2dz = -0.5*INV(dz);
- CCTK_REAL const pm1o4dx = -0.25*INV(dx);
- CCTK_REAL const pm1o4dy = -0.25*INV(dy);
- CCTK_REAL const pm1o4dz = -0.25*INV(dz);
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_O2_convertToADMBaseFakeDtLapseShift,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_O2_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 AL = A[index];
- CCTK_REAL alphaL = alpha[index];
- CCTK_REAL B1L = B1[index];
- CCTK_REAL B2L = B2[index];
- CCTK_REAL B3L = B3[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL rL = r[index];
- CCTK_REAL trKL = trK[index];
- CCTK_REAL Xt1L = Xt1[index];
- CCTK_REAL Xt2L = Xt2[index];
- CCTK_REAL Xt3L = Xt3[index];
+ 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 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 eta = fmin(1,INV(rL)*ToReal(SpatialBetaDriverRadius));
+ CCTK_REAL_VEC eta =
+ kfmin(ToReal(1),kmul(INV(rL),ToReal(SpatialBetaDriverRadius)));
- CCTK_REAL theta = fmin(1,exp(1 -
- rL*INV(ToReal(SpatialShiftGammaCoeffRadius))));
+ CCTK_REAL_VEC theta =
+ kfmin(ToReal(1),kexp(knmsub(rL,INV(ToReal(SpatialShiftGammaCoeffRadius)),ToReal(1))));
- CCTK_REAL dtalpL =
- -(pow(alphaL,ToReal(harmonicN))*ToReal(harmonicF)*(trKL + (AL -
- trKL)*ToReal(LapseACoeff)));
+ CCTK_REAL_VEC dtalpL =
+ kneg(kmul(kpow(alphaL,harmonicN),kmul(ToReal(harmonicF),kmadd(ksub(AL,trKL),ToReal(LapseACoeff),trKL))));
- CCTK_REAL dtbetaxL = theta*(Xt1L + beta1L*eta*ToReal(BetaDriver)*(-1 +
- ToReal(ShiftBCoeff)) + (B1L -
- Xt1L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
+ CCTK_REAL_VEC dtbetaxL;
+ CCTK_REAL_VEC dtbetayL;
+ CCTK_REAL_VEC dtbetazL;
- CCTK_REAL dtbetayL = theta*(Xt2L + beta2L*eta*ToReal(BetaDriver)*(-1 +
- ToReal(ShiftBCoeff)) + (B2L -
- Xt2L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
+ if (harmonicShift)
+ {
+ dtbetaxL = ToReal(0);
+
+ dtbetayL = ToReal(0);
+
+ dtbetazL = ToReal(0);
+ }
+ else
+ {
+ dtbetaxL =
+ kmul(theta,kmul(kadd(Xt1L,kmadd(beta1L,kmul(eta,ToReal(BetaDriver*(-1 +
+ ShiftBCoeff))),kmul(ksub(B1L,Xt1L),ToReal(ShiftBCoeff)))),ToReal(ShiftGammaCoeff)));
+
+ dtbetayL =
+ kmul(theta,kmul(kadd(Xt2L,kmadd(beta2L,kmul(eta,ToReal(BetaDriver*(-1 +
+ ShiftBCoeff))),kmul(ksub(B2L,Xt2L),ToReal(ShiftBCoeff)))),ToReal(ShiftGammaCoeff)));
+
+ dtbetazL =
+ kmul(theta,kmul(kadd(Xt3L,kmadd(beta3L,kmul(eta,ToReal(BetaDriver*(-1 +
+ ShiftBCoeff))),kmul(ksub(B3L,Xt3L),ToReal(ShiftBCoeff)))),ToReal(ShiftGammaCoeff)));
+ }
- CCTK_REAL dtbetazL = theta*(Xt3L + beta3L*eta*ToReal(BetaDriver)*(-1 +
- ToReal(ShiftBCoeff)) + (B3L -
- Xt3L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
+ /* If necessary, store only partial vectors after the first iteration */
- /* Copy local copies back to grid functions */
- dtalp[index] = dtalpL;
- dtbetax[index] = dtbetaxL;
- dtbetay[index] = dtbetayL;
- dtbetaz[index] = dtbetazL;
+ 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(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);
+ 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(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);
+ 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(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);
+ break;
+ }
+ vec_store_nta(dtalp[index],dtalpL);
+ vec_store_nta(dtbetax[index],dtbetaxL);
+ vec_store_nta(dtbetay[index],dtbetayL);
+ vec_store_nta(dtbetaz[index],dtbetazL);
}
- LC_ENDLOOP3 (ML_BSSN_O2_convertToADMBaseFakeDtLapseShift);
+ LC_ENDLOOP3VEC (ML_BSSN_O2_convertToADMBaseFakeDtLapseShift);
}
extern "C" void ML_BSSN_O2_convertToADMBaseFakeDtLapseShift(CCTK_ARGUMENTS)
@@ -159,5 +321,39 @@ extern "C" void ML_BSSN_O2_convertToADMBaseFakeDtLapseShift(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O2_convertToADMBaseFakeDtLapseShift_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_O2_convertToADMBaseFakeDtLapseShift_calc_every != ML_BSSN_O2_convertToADMBaseFakeDtLapseShift_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ADMBase::dtlapse","ADMBase::dtshift","grid::coordinates","Grid::coordinates","ML_BSSN_O2::ML_dtlapse","ML_BSSN_O2::ML_dtshift","ML_BSSN_O2::ML_Gamma","ML_BSSN_O2::ML_lapse","ML_BSSN_O2::ML_shift","ML_BSSN_O2::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O2_convertToADMBaseFakeDtLapseShift", 10, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverEverything(cctkGH, &ML_BSSN_O2_convertToADMBaseFakeDtLapseShift_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_O2_convertToADMBaseFakeDtLapseShift_Body");
+ }
}
diff --git a/ML_BSSN_O2/src/ML_BSSN_O2_enforce.cc b/ML_BSSN_O2/src/ML_BSSN_O2_enforce.cc
index 0ce8a8d..88ce028 100644
--- a/ML_BSSN_O2/src/ML_BSSN_O2_enforce.cc
+++ b/ML_BSSN_O2/src/ML_BSSN_O2_enforce.cc
@@ -13,15 +13,16 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
-static void ML_BSSN_O2_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_O2_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;
@@ -29,20 +30,6 @@ static void ML_BSSN_O2_enforce_Body(cGH const * restrict const cctkGH, int const
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O2_enforce_Body");
- }
-
- if (cctk_iteration % ML_BSSN_O2_enforce_calc_every != ML_BSSN_O2_enforce_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN_O2::ML_curv","ML_BSSN_O2::ML_lapse","ML_BSSN_O2::ML_metric"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O2_enforce", 3, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -52,119 +39,297 @@ static void ML_BSSN_O2_enforce_Body(cGH const * restrict const cctkGH, int const
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o16dx = 0.0625*INV(dx);
- CCTK_REAL const p1o16dy = 0.0625*INV(dy);
- CCTK_REAL const p1o16dz = 0.0625*INV(dz);
- CCTK_REAL const p1o2dx = 0.5*INV(dx);
- CCTK_REAL const p1o2dy = 0.5*INV(dy);
- CCTK_REAL const p1o2dz = 0.5*INV(dz);
- CCTK_REAL const p1o4dx = 0.25*INV(dx);
- CCTK_REAL const p1o4dxdy = 0.25*INV(dx)*INV(dy);
- CCTK_REAL const p1o4dxdz = 0.25*INV(dx)*INV(dz);
- CCTK_REAL const p1o4dy = 0.25*INV(dy);
- CCTK_REAL const p1o4dydz = 0.25*INV(dy)*INV(dz);
- CCTK_REAL const p1o4dz = 0.25*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1odx2 = INV(SQR(dx));
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1ody2 = INV(SQR(dy));
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const p1odz2 = INV(SQR(dz));
- CCTK_REAL const pm1o2dx = -0.5*INV(dx);
- CCTK_REAL const pm1o2dy = -0.5*INV(dy);
- CCTK_REAL const pm1o2dz = -0.5*INV(dz);
- CCTK_REAL const pm1o4dx = -0.25*INV(dx);
- CCTK_REAL const pm1o4dy = -0.25*INV(dy);
- CCTK_REAL const pm1o4dz = -0.25*INV(dz);
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_O2_enforce,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_O2_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 alphaL = alpha[index];
- CCTK_REAL At11L = At11[index];
- CCTK_REAL At12L = At12[index];
- CCTK_REAL At13L = At13[index];
- CCTK_REAL At22L = At22[index];
- CCTK_REAL At23L = At23[index];
- CCTK_REAL At33L = At33[index];
- CCTK_REAL gt11L = gt11[index];
- CCTK_REAL gt12L = gt12[index];
- CCTK_REAL gt13L = gt13[index];
- CCTK_REAL gt22L = gt22[index];
- CCTK_REAL gt23L = gt23[index];
- CCTK_REAL gt33L = gt33[index];
+ CCTK_REAL_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 detgt = 1;
+ CCTK_REAL_VEC detgt = ToReal(1);
+
+ CCTK_REAL_VEC gtu11 = kmul(INV(detgt),kmsub(gt22L,gt33L,SQR(gt23L)));
- CCTK_REAL gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L));
+ CCTK_REAL_VEC gtu12 =
+ kmul(INV(detgt),kmsub(gt13L,gt23L,kmul(gt12L,gt33L)));
- CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt);
+ CCTK_REAL_VEC gtu13 =
+ kmul(INV(detgt),kmsub(gt12L,gt23L,kmul(gt13L,gt22L)));
- CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC gtu22 = kmul(INV(detgt),kmsub(gt11L,gt33L,SQR(gt13L)));
- CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L));
+ CCTK_REAL_VEC gtu23 =
+ kmul(INV(detgt),kmsub(gt12L,gt13L,kmul(gt11L,gt23L)));
- CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC gtu33 = kmul(INV(detgt),kmsub(gt11L,gt22L,SQR(gt12L)));
- CCTK_REAL gtu33 = INV(detgt)*(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)))));
- CCTK_REAL trAt = At11L*gtu11 + At22L*gtu22 + 2*(At12L*gtu12 +
- At13L*gtu13 + At23L*gtu23) + At33L*gtu33;
+ At11L =
+ kmadd(gt11L,kmul(trAt,ToReal(-0.333333333333333333333333333333)),At11L);
- At11L = At11L - 0.333333333333333333333333333333*gt11L*trAt;
+ At12L =
+ kmadd(gt12L,kmul(trAt,ToReal(-0.333333333333333333333333333333)),At12L);
- At12L = At12L - 0.333333333333333333333333333333*gt12L*trAt;
+ At13L =
+ kmadd(gt13L,kmul(trAt,ToReal(-0.333333333333333333333333333333)),At13L);
- At13L = At13L - 0.333333333333333333333333333333*gt13L*trAt;
+ At22L =
+ kmadd(gt22L,kmul(trAt,ToReal(-0.333333333333333333333333333333)),At22L);
- At22L = At22L - 0.333333333333333333333333333333*gt22L*trAt;
+ At23L =
+ kmadd(gt23L,kmul(trAt,ToReal(-0.333333333333333333333333333333)),At23L);
- At23L = At23L - 0.333333333333333333333333333333*gt23L*trAt;
+ At33L =
+ kmadd(gt33L,kmul(trAt,ToReal(-0.333333333333333333333333333333)),At33L);
- At33L = At33L - 0.333333333333333333333333333333*gt33L*trAt;
+ alphaL = kfmax(alphaL,ToReal(MinimumLapse));
- alphaL = fmax(alphaL,ToReal(MinimumLapse));
+ /* If necessary, store only partial vectors after the first iteration */
- /* Copy local copies back to grid functions */
- alpha[index] = alphaL;
- At11[index] = At11L;
- At12[index] = At12L;
- At13[index] = At13L;
- At22[index] = At22L;
- At23[index] = At23L;
- At33[index] = At33L;
+ 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(At11[index],At11L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At12[index],At12L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At13[index],At13L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At22[index],At22L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At23[index],At23L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At33[index],At33L,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(At11[index],At11L,elt_count);
+ vec_store_nta_partial_hi(At12[index],At12L,elt_count);
+ vec_store_nta_partial_hi(At13[index],At13L,elt_count);
+ vec_store_nta_partial_hi(At22[index],At22L,elt_count);
+ vec_store_nta_partial_hi(At23[index],At23L,elt_count);
+ vec_store_nta_partial_hi(At33[index],At33L,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(At11[index],At11L,elt_count);
+ vec_store_nta_partial_lo(At12[index],At12L,elt_count);
+ vec_store_nta_partial_lo(At13[index],At13L,elt_count);
+ vec_store_nta_partial_lo(At22[index],At22L,elt_count);
+ vec_store_nta_partial_lo(At23[index],At23L,elt_count);
+ vec_store_nta_partial_lo(At33[index],At33L,elt_count);
+ break;
+ }
+ vec_store_nta(alpha[index],alphaL);
+ vec_store_nta(At11[index],At11L);
+ vec_store_nta(At12[index],At12L);
+ vec_store_nta(At13[index],At13L);
+ vec_store_nta(At22[index],At22L);
+ vec_store_nta(At23[index],At23L);
+ vec_store_nta(At33[index],At33L);
}
- LC_ENDLOOP3 (ML_BSSN_O2_enforce);
+ LC_ENDLOOP3VEC (ML_BSSN_O2_enforce);
}
extern "C" void ML_BSSN_O2_enforce(CCTK_ARGUMENTS)
@@ -172,5 +337,39 @@ extern "C" void ML_BSSN_O2_enforce(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O2_enforce_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_O2_enforce_calc_every != ML_BSSN_O2_enforce_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN_O2::ML_curv","ML_BSSN_O2::ML_lapse","ML_BSSN_O2::ML_metric"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O2_enforce", 3, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverEverything(cctkGH, &ML_BSSN_O2_enforce_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_O2_enforce_Body");
+ }
}
diff --git a/ML_BSSN_O2/src/RegisterMoL.cc b/ML_BSSN_O2/src/RegisterMoL.cc
index 2047965..9270c92 100644
--- a/ML_BSSN_O2/src/RegisterMoL.cc
+++ b/ML_BSSN_O2/src/RegisterMoL.cc
@@ -37,5 +37,7 @@ extern "C" void ML_BSSN_O2_RegisterVars(CCTK_ARGUMENTS)
ierr += MoLRegisterEvolved(CCTK_VarIndex("ML_BSSN_O2::beta2"), CCTK_VarIndex("ML_BSSN_O2::beta2rhs"));
ierr += MoLRegisterEvolved(CCTK_VarIndex("ML_BSSN_O2::beta3"), CCTK_VarIndex("ML_BSSN_O2::beta3rhs"));
ierr += MoLRegisterEvolved(CCTK_VarIndex("ML_BSSN_O2::trK"), CCTK_VarIndex("ML_BSSN_O2::trKrhs"));
+
+ /* Register all the evolved Array functions with MoL */
return;
}
diff --git a/ML_BSSN_O2_Helper/src/SetGroupTags.c b/ML_BSSN_O2_Helper/src/SetGroupTags.c
index 18ae0de..122f1bc 100644
--- a/ML_BSSN_O2_Helper/src/SetGroupTags.c
+++ b/ML_BSSN_O2_Helper/src/SetGroupTags.c
@@ -15,29 +15,30 @@ ML_BSSN_O2_SetGroupTags (void)
{
DECLARE_CCTK_PARAMETERS;
- set_group_tags (0, 0, 1, "ADMBase::metric");
- set_group_tags (0, 0, 1, "ADMBase::curv");
- set_group_tags (0, 0, 1, "ADMBase::lapse");
- set_group_tags (0, 0, 1, "ADMBase::shift");
- set_group_tags (0, 0, 1, "ADMBase::dtlapse");
- set_group_tags (0, 0, 1, "ADMBase::dtshift");
+ 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 (0, 0, 0, "ML_BSSN_O2::ML_cons_detg");
- set_group_tags (0, 0, 0, "ML_BSSN_O2::ML_cons_Gamma");
- set_group_tags (0, 0, 0, "ML_BSSN_O2::ML_cons_traceA");
- set_group_tags (0, 0, 0, "ML_BSSN_O2::ML_Ham");
- set_group_tags (0, 0, 0, "ML_BSSN_O2::ML_mom");
+ set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_O2::ML_cons_detg");
+ set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_O2::ML_cons_Gamma");
+ set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_O2::ML_cons_traceA");
+ set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_O2::ML_Ham");
+ set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_O2::ML_mom");
- int const checkpoint = rhs_timelevels > 1;
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_O2::ML_log_confacrhs");
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_O2::ML_metricrhs");
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_O2::ML_Gammarhs");
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_O2::ML_trace_curvrhs");
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_O2::ML_curvrhs");
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_O2::ML_lapserhs");
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_O2::ML_dtlapserhs");
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_O2::ML_shiftrhs");
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_O2::ML_dtshiftrhs");
+ int const rhs_checkpoint = rhs_timelevels > 1;
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN_O2::ML_log_confacrhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN_O2::ML_metricrhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN_O2::ML_Gammarhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN_O2::ML_trace_curvrhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN_O2::ML_curvrhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN_O2::ML_lapserhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN_O2::ML_dtlapserhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN_O2::ML_shiftrhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN_O2::ML_dtshiftrhs");
return 0;
}
diff --git a/ML_BSSN_O8/configuration.ccl b/ML_BSSN_O8/configuration.ccl
index 8e2c3c5..bdbc1bd 100644
--- a/ML_BSSN_O8/configuration.ccl
+++ b/ML_BSSN_O8/configuration.ccl
@@ -2,3 +2,4 @@
REQUIRES GenericFD
REQUIRES LoopControl
+REQUIRES Vectors
diff --git a/ML_BSSN_O8/interface.ccl b/ML_BSSN_O8/interface.ccl
index 65e0077..645ec98 100644
--- a/ML_BSSN_O8/interface.ccl
+++ b/ML_BSSN_O8/interface.ccl
@@ -11,6 +11,7 @@ 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
diff --git a/ML_BSSN_O8/param.ccl b/ML_BSSN_O8/param.ccl
index 6f79b9f..4d931a5 100644
--- a/ML_BSSN_O8/param.ccl
+++ b/ML_BSSN_O8/param.ccl
@@ -37,11 +37,15 @@ EXTENDS CCTK_KEYWORD dtshift_evolution_method "dtshift_evolution_method"
shares: GenericFD
+USES CCTK_STRING jacobian_group
+USES CCTK_STRING jacobian_derivative_group
+USES CCTK_INT jacobian_identity_map
shares: MethodOfLines
USES CCTK_INT MoL_Num_Evolved_Vars
+USES CCTK_INT MoL_Num_ArrayEvolved_Vars
restricted:
CCTK_INT verbose "verbose" STEERABLE=ALWAYS
@@ -139,6 +143,18 @@ CCTK_INT conformalMethod "Treatment of conformal factor"
*:* :: ""
} 0
+restricted:
+CCTK_INT fdOrder "fdOrder"
+{
+ *:* :: ""
+} 8
+
+restricted:
+CCTK_INT harmonicShift "Whether to use the harmonic shift"
+{
+ *:* :: ""
+} 0
+
private:
KEYWORD my_initial_data "my_initial_data"
{
@@ -203,6 +219,12 @@ CCTK_INT ML_BSSN_O8_MaxNumEvolvedVars "Number of evolved variables used by this
} 25
restricted:
+CCTK_INT ML_BSSN_O8_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 :: ""
diff --git a/ML_BSSN_O8/schedule.ccl b/ML_BSSN_O8/schedule.ccl
index 6e08f95..e068b7c 100644
--- a/ML_BSSN_O8/schedule.ccl
+++ b/ML_BSSN_O8/schedule.ccl
@@ -340,7 +340,7 @@ if (CCTK_EQUALS(my_rhs_boundary_condition, "static"))
} "ML_BSSN_O8_RHSStaticBoundary"
}
-schedule ML_BSSN_O8_enforce IN MoL_PostStep BEFORE ML_BSSN_O8_SelectBoundConds
+schedule ML_BSSN_O8_enforce IN MoL_PostStepModify
{
LANG: C
} "ML_BSSN_O8_enforce"
@@ -388,7 +388,7 @@ if (CCTK_EQUALS(dt_lapse_shift_method, "noLapseShiftAdvection"))
} "ML_BSSN_O8_convertToADMBaseFakeDtLapseShift"
}
-schedule group ML_BSSN_O8_constraints1_group in MoL_PseudoEvolution
+schedule group ML_BSSN_O8_constraints1_group in MoL_PseudoEvolution after MoL_PostStep
{
# no language specified
} "ML_BSSN_O8_constraints1"
@@ -415,17 +415,12 @@ schedule group ML_BSSN_O8_constraints1_bc_group in ML_BSSN_O8_constraints1_group
# no language specified
} "ML_BSSN_O8_constraints1"
-schedule group ML_BSSN_O8_constraints1_bc_group at CCTK_POSTRESTRICT
+schedule group ML_BSSN_O8_constraints1_bc_group in MoL_PseudoEvolutionBoundaries after MoL_PostStep
{
# no language specified
} "ML_BSSN_O8_constraints1"
-schedule group ML_BSSN_O8_constraints1_bc_group at CCTK_POSTRESTRICTINITIAL
-{
- # no language specified
-} "ML_BSSN_O8_constraints1"
-
-schedule group ML_BSSN_O8_constraints2_group in MoL_PseudoEvolution
+schedule group ML_BSSN_O8_constraints2_group in MoL_PseudoEvolution after MoL_PostStep
{
# no language specified
} "ML_BSSN_O8_constraints2"
@@ -455,12 +450,7 @@ schedule group ML_BSSN_O8_constraints2_bc_group in ML_BSSN_O8_constraints2_group
# no language specified
} "ML_BSSN_O8_constraints2"
-schedule group ML_BSSN_O8_constraints2_bc_group at CCTK_POSTRESTRICT
-{
- # no language specified
-} "ML_BSSN_O8_constraints2"
-
-schedule group ML_BSSN_O8_constraints2_bc_group at CCTK_POSTRESTRICTINITIAL
+schedule group ML_BSSN_O8_constraints2_bc_group in MoL_PseudoEvolutionBoundaries after MoL_PostStep
{
# no language specified
} "ML_BSSN_O8_constraints2"
diff --git a/ML_BSSN_O8/src/Differencing.h b/ML_BSSN_O8/src/Differencing.h
index 03416b8..96a0554 100644
--- a/ML_BSSN_O8/src/Differencing.h
+++ b/ML_BSSN_O8/src/Differencing.h
@@ -1,324 +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 PDstandardNth1(u) ((-672*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + 672*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)]) + 168*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) - 168*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]) - 32*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(0)]) + 32*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(0)]) + 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(0)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(0)]))*p1o840dx)
+# 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 PDstandardNth1(u) (PDstandardNth1_impl(u,p1o840dx,cdj,cdk))
-static CCTK_REAL PDstandardNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o840dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o840dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-672*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + 672*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)]) + 168*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) - 168*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]) - 32*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(0)]) + 32*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(0)]) + 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(0)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(0)]))*p1o840dx;
+ 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 PDstandardNth2(u) ((-672*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + 672*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)]) + 168*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) - 168*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]) - 32*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(0)]) + 32*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(0)]) + 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(0)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(0)]))*p1o840dy)
+# 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 PDstandardNth2(u) (PDstandardNth2_impl(u,p1o840dy,cdj,cdk))
-static CCTK_REAL PDstandardNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o840dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o840dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-672*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + 672*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)]) + 168*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) - 168*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]) - 32*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(0)]) + 32*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(0)]) + 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(0)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(0)]))*p1o840dy;
+ 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 PDstandardNth3(u) ((-672*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + 672*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)]) + 168*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) - 168*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]) - 32*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-3)]) + 32*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(3)]) + 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-4)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(4)]))*p1o840dz)
+# 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 PDstandardNth3(u) (PDstandardNth3_impl(u,p1o840dz,cdj,cdk))
-static CCTK_REAL PDstandardNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o840dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o840dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-672*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + 672*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)]) + 168*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) - 168*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]) - 32*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-3)]) + 32*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(3)]) + 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-4)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(4)]))*p1o840dz;
+ 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 PDstandardNth11(u) ((-14350*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 8064*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)])) - 1008*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)])) + 128*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(0)])) - 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(0)])))*p1o5040dx2)
+# 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 PDstandardNth11(u) (PDstandardNth11_impl(u,p1o5040dx2,cdj,cdk))
-static CCTK_REAL PDstandardNth11_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o5040dx2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth11_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o5040dx2, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-14350*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 8064*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)])) - 1008*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)])) + 128*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(0)])) - 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(0)])))*p1o5040dx2;
+ 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 PDstandardNth22(u) ((-14350*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 8064*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)])) - 1008*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)])) + 128*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(0)])) - 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(0)])))*p1o5040dy2)
+# 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 PDstandardNth22(u) (PDstandardNth22_impl(u,p1o5040dy2,cdj,cdk))
-static CCTK_REAL PDstandardNth22_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o5040dy2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth22_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o5040dy2, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-14350*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 8064*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)])) - 1008*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)])) + 128*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(0)])) - 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(0)])))*p1o5040dy2;
+ 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 PDstandardNth33(u) ((-14350*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 8064*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)])) - 1008*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)])) + 128*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(3)])) - 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(4)])))*p1o5040dz2)
+# 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 PDstandardNth33(u) (PDstandardNth33_impl(u,p1o5040dz2,cdj,cdk))
-static CCTK_REAL PDstandardNth33_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o5040dz2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth33_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o5040dz2, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-14350*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 8064*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)])) - 1008*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)])) + 128*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(3)])) - 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(4)])))*p1o5040dz2;
+ 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 PDstandardNth12(u) ((-451584*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)])) + 451584*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)])) + 112896*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-1)+cdk*(0)])) - 112896*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(1)+cdk*(0)])) - 28224*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-2)+cdk*(0)])) + 28224*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(2)+cdk*(0)])) - 21504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(-1)+cdk*(0)])) + 21504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(1)+cdk*(0)])) + 5376*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(-2)+cdk*(0)])) - 5376*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(2)+cdk*(0)])) - 1024*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(-3)+cdk*(0)])) + 1024*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(3)+cdk*(0)])) + 2016*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(-1)+cdk*(0)])) - 2016*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(1)+cdk*(0)])) - 504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(-2)+cdk*(0)])) + 504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(2)+cdk*(0)])) + 96*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(-3)+cdk*(0)])) - 96*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(3)+cdk*(0)])) - 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(-4)+cdk*(0)])) + 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(4)+cdk*(0)])))*p1o705600dxdy)
+# 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 PDstandardNth12(u) (PDstandardNth12_impl(u,p1o705600dxdy,cdj,cdk))
-static CCTK_REAL PDstandardNth12_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o705600dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth12_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o705600dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-451584*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)])) + 451584*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)])) + 112896*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-1)+cdk*(0)])) - 112896*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(1)+cdk*(0)])) - 28224*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-2)+cdk*(0)])) + 28224*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(2)+cdk*(0)])) - 21504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(-1)+cdk*(0)])) + 21504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(1)+cdk*(0)])) + 5376*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(-2)+cdk*(0)])) - 5376*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(2)+cdk*(0)])) - 1024*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(-3)+cdk*(0)])) + 1024*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(3)+cdk*(0)])) + 2016*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(-1)+cdk*(0)])) - 2016*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(1)+cdk*(0)])) - 504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(-2)+cdk*(0)])) + 504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(2)+cdk*(0)])) + 96*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(-3)+cdk*(0)])) - 96*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(3)+cdk*(0)])) - 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(-4)+cdk*(0)])) + 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(4)+cdk*(0)])))*p1o705600dxdy;
+ 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 PDstandardNth13(u) ((-451584*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)])) + 451584*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)])) + 112896*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-1)])) - 112896*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(1)])) - 28224*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-2)])) + 28224*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(2)])) - 21504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(-1)])) + 21504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(1)])) + 5376*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(-2)])) - 5376*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(2)])) - 1024*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(-3)])) + 1024*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(3)])) + 2016*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(-1)])) - 2016*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(1)])) - 504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(-2)])) + 504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(2)])) + 96*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(-3)])) - 96*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(3)])) - 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(-4)])) + 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(4)])))*p1o705600dxdz)
+# 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 PDstandardNth13(u) (PDstandardNth13_impl(u,p1o705600dxdz,cdj,cdk))
-static CCTK_REAL PDstandardNth13_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o705600dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth13_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o705600dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-451584*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)])) + 451584*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)])) + 112896*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-1)])) - 112896*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(1)])) - 28224*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-2)])) + 28224*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(2)])) - 21504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(-1)])) + 21504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(1)])) + 5376*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(-2)])) - 5376*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(2)])) - 1024*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(-3)])) + 1024*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(3)])) + 2016*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(-1)])) - 2016*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(1)])) - 504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(-2)])) + 504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(2)])) + 96*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(-3)])) - 96*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(3)])) - 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(-4)])) + 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(4)])))*p1o705600dxdz;
+ 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 PDstandardNth21(u) ((-451584*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)])) + 451584*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)])) + 112896*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-1)+cdk*(0)])) - 112896*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(1)+cdk*(0)])) - 28224*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-2)+cdk*(0)])) + 28224*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(2)+cdk*(0)])) - 21504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(-1)+cdk*(0)])) + 21504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(1)+cdk*(0)])) + 5376*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(-2)+cdk*(0)])) - 5376*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(2)+cdk*(0)])) - 1024*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(-3)+cdk*(0)])) + 1024*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(3)+cdk*(0)])) + 2016*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(-1)+cdk*(0)])) - 2016*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(1)+cdk*(0)])) - 504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(-2)+cdk*(0)])) + 504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(2)+cdk*(0)])) + 96*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(-3)+cdk*(0)])) - 96*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(3)+cdk*(0)])) - 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(-4)+cdk*(0)])) + 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(4)+cdk*(0)])))*p1o705600dxdy)
+# 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 PDstandardNth21(u) (PDstandardNth21_impl(u,p1o705600dxdy,cdj,cdk))
-static CCTK_REAL PDstandardNth21_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o705600dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth21_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o705600dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-451584*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)])) + 451584*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)])) + 112896*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-1)+cdk*(0)])) - 112896*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(1)+cdk*(0)])) - 28224*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-2)+cdk*(0)])) + 28224*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(2)+cdk*(0)])) - 21504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(-1)+cdk*(0)])) + 21504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(1)+cdk*(0)])) + 5376*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(-2)+cdk*(0)])) - 5376*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(2)+cdk*(0)])) - 1024*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(-3)+cdk*(0)])) + 1024*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(3)+cdk*(0)])) + 2016*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(-1)+cdk*(0)])) - 2016*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(1)+cdk*(0)])) - 504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(-2)+cdk*(0)])) + 504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(2)+cdk*(0)])) + 96*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(-3)+cdk*(0)])) - 96*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(3)+cdk*(0)])) - 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(-4)+cdk*(0)])) + 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(4)+cdk*(0)])))*p1o705600dxdy;
+ 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 PDstandardNth23(u) ((-451584*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)])) + 451584*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)])) + 112896*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-1)])) - 112896*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(1)])) - 28224*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-2)])) + 28224*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(2)])) - 21504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(-1)])) + 21504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(1)])) + 5376*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(-2)])) - 5376*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(2)])) - 1024*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(-3)])) + 1024*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(3)])) + 2016*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(-1)])) - 2016*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(1)])) - 504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(-2)])) + 504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(2)])) + 96*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(-3)])) - 96*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(3)])) - 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(-4)])) + 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(4)])))*p1o705600dydz)
+# 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 PDstandardNth23(u) (PDstandardNth23_impl(u,p1o705600dydz,cdj,cdk))
-static CCTK_REAL PDstandardNth23_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o705600dydz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth23_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o705600dydz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-451584*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)])) + 451584*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)])) + 112896*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-1)])) - 112896*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(1)])) - 28224*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-2)])) + 28224*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(2)])) - 21504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(-1)])) + 21504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(1)])) + 5376*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(-2)])) - 5376*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(2)])) - 1024*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(-3)])) + 1024*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(3)])) + 2016*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(-1)])) - 2016*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(1)])) - 504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(-2)])) + 504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(2)])) + 96*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(-3)])) - 96*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(3)])) - 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(-4)])) + 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(4)])))*p1o705600dydz;
+ 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 PDstandardNth31(u) ((-451584*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)])) + 451584*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)])) + 112896*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-1)])) - 112896*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(1)])) - 28224*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-2)])) + 28224*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(2)])) - 21504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(-1)])) + 21504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(1)])) + 5376*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(-2)])) - 5376*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(2)])) - 1024*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(-3)])) + 1024*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(3)])) + 2016*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(-1)])) - 2016*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(1)])) - 504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(-2)])) + 504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(2)])) + 96*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(-3)])) - 96*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(3)])) - 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(-4)])) + 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(4)])))*p1o705600dxdz)
+# 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 PDstandardNth31(u) (PDstandardNth31_impl(u,p1o705600dxdz,cdj,cdk))
-static CCTK_REAL PDstandardNth31_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o705600dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth31_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o705600dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-451584*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)])) + 451584*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)])) + 112896*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-1)])) - 112896*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(1)])) - 28224*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-2)])) + 28224*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(2)])) - 21504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(-1)])) + 21504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(1)])) + 5376*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(-2)])) - 5376*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(2)])) - 1024*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(-3)])) + 1024*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(3)])) + 2016*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(-1)])) - 2016*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(1)])) - 504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(-2)])) + 504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(2)])) + 96*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(-3)])) - 96*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(3)])) - 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(-4)])) + 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(4)])))*p1o705600dxdz;
+ 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 PDstandardNth32(u) ((-451584*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)])) + 451584*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)])) + 112896*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-1)])) - 112896*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(1)])) - 28224*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-2)])) + 28224*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(2)])) - 21504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(-1)])) + 21504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(1)])) + 5376*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(-2)])) - 5376*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(2)])) - 1024*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(-3)])) + 1024*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(3)])) + 2016*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(-1)])) - 2016*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(1)])) - 504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(-2)])) + 504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(2)])) + 96*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(-3)])) - 96*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(3)])) - 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(-4)])) + 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(4)])))*p1o705600dydz)
+# 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 PDstandardNth32(u) (PDstandardNth32_impl(u,p1o705600dydz,cdj,cdk))
-static CCTK_REAL PDstandardNth32_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o705600dydz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth32_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o705600dydz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-451584*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)])) + 451584*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)])) + 112896*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-1)])) - 112896*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(1)])) - 28224*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-2)])) + 28224*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(2)])) - 21504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(-1)])) + 21504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(1)])) + 5376*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(-2)])) - 5376*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(2)])) - 1024*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(-3)])) + 1024*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(3)])) + 2016*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(-1)])) - 2016*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(1)])) - 504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(-2)])) + 504*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(2)])) + 96*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(-3)])) - 96*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(3)])) - 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(-4)])) + 9*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(4)])))*p1o705600dydz;
+ 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 PDdissipationNth1(u) ((-252*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 210*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)])) - 120*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)])) + 45*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(0)])) - 10*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-5)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(5)+cdj*(0)+cdk*(0)]))*p1o1024dx)
+# 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 PDdissipationNth1(u) (PDdissipationNth1_impl(u,p1o1024dx,cdj,cdk))
-static CCTK_REAL PDdissipationNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o1024dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDdissipationNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o1024dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-252*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 210*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)])) - 120*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)])) + 45*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(0)])) - 10*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-5)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(5)+cdj*(0)+cdk*(0)]))*p1o1024dx;
+ 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 PDdissipationNth2(u) ((-252*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 210*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)])) - 120*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)])) + 45*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(0)])) - 10*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-5)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(5)+cdk*(0)]))*p1o1024dy)
+# 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 PDdissipationNth2(u) (PDdissipationNth2_impl(u,p1o1024dy,cdj,cdk))
-static CCTK_REAL PDdissipationNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o1024dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDdissipationNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o1024dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-252*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 210*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)])) - 120*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)])) + 45*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(0)])) - 10*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-5)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(5)+cdk*(0)]))*p1o1024dy;
+ 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 PDdissipationNth3(u) ((-252*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 210*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)])) - 120*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)])) + 45*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(3)])) - 10*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(4)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-5)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(5)]))*p1o1024dz)
+# 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 PDdissipationNth3(u) (PDdissipationNth3_impl(u,p1o1024dz,cdj,cdk))
-static CCTK_REAL PDdissipationNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o1024dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDdissipationNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o1024dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-252*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 210*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)])) - 120*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)])) + 45*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(3)])) - 10*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(4)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-5)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(5)]))*p1o1024dz;
+ 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 PDupwindNth1(u) ((378*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 60*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2*dir1)+cdj*(0)+cdk*(0)]) + 5*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3*dir1)+cdj*(0)+cdk*(0)]) - 140*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(3*dir1)+cdj*(0)+cdk*(0)]) + 30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(4*dir1)+cdj*(0)+cdk*(0)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(5*dir1)+cdj*(0)+cdk*(0)]) + 420*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(2*dir1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-dir1)+cdj*(0)+cdk*(0)])) - 1050*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(dir1)+cdj*(0)+cdk*(0)]))*pm1o840dx*dir1)
+# 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 PDupwindNth1(u) (PDupwindNth1_impl(u,pm1o840dx,cdj,cdk,dir1,dir2,dir3))
-static CCTK_REAL PDupwindNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o840dx, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDupwindNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o840dx, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3)
+# 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 (378*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 60*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2*dir1)+cdj*(0)+cdk*(0)]) + 5*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3*dir1)+cdj*(0)+cdk*(0)]) - 140*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(3*dir1)+cdj*(0)+cdk*(0)]) + 30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(4*dir1)+cdj*(0)+cdk*(0)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(5*dir1)+cdj*(0)+cdk*(0)]) + 420*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(2*dir1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-dir1)+cdj*(0)+cdk*(0)])) - 1050*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(dir1)+cdj*(0)+cdk*(0)]))*pm1o840dx*dir1;
+ 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 PDupwindNth2(u) ((378*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 60*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2*dir2)+cdk*(0)]) + 5*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3*dir2)+cdk*(0)]) - 140*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3*dir2)+cdk*(0)]) + 30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4*dir2)+cdk*(0)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(5*dir2)+cdk*(0)]) + 420*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2*dir2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-dir2)+cdk*(0)])) - 1050*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(dir2)+cdk*(0)]))*pm1o840dy*dir2)
+# 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 PDupwindNth2(u) (PDupwindNth2_impl(u,pm1o840dy,cdj,cdk,dir1,dir2,dir3))
-static CCTK_REAL PDupwindNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o840dy, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDupwindNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o840dy, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3)
+# 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 (378*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 60*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2*dir2)+cdk*(0)]) + 5*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3*dir2)+cdk*(0)]) - 140*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3*dir2)+cdk*(0)]) + 30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4*dir2)+cdk*(0)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(5*dir2)+cdk*(0)]) + 420*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2*dir2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-dir2)+cdk*(0)])) - 1050*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(dir2)+cdk*(0)]))*pm1o840dy*dir2;
+ 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 PDupwindNth3(u) ((378*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 60*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2*dir3)]) + 5*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-3*dir3)]) - 140*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(3*dir3)]) + 30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(4*dir3)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(5*dir3)]) + 420*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2*dir3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-dir3)])) - 1050*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(dir3)]))*pm1o840dz*dir3)
+# 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 PDupwindNth3(u) (PDupwindNth3_impl(u,pm1o840dz,cdj,cdk,dir1,dir2,dir3))
-static CCTK_REAL PDupwindNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o840dz, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDupwindNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o840dz, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3)
+# 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 (378*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 60*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2*dir3)]) + 5*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-3*dir3)]) - 140*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(3*dir3)]) + 30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(4*dir3)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(5*dir3)]) + 420*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2*dir3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-dir3)])) - 1050*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(dir3)]))*pm1o840dz*dir3;
+ 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) ((-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(dir1)+cdj*(0)+cdk*(0)]))*p1odx*dir1)
+# 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 PDonesided1(u) (PDonesided1_impl(u,p1odx,cdj,cdk,dir1,dir2,dir3))
-static CCTK_REAL PDonesided1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1odx, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDonesided1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1odx, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3)
+# 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 (-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(dir1)+cdj*(0)+cdk*(0)]))*p1odx*dir1;
+ 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 PDonesided2(u) ((-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(dir2)+cdk*(0)]))*p1ody*dir2)
+# 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 PDonesided2(u) (PDonesided2_impl(u,p1ody,cdj,cdk,dir1,dir2,dir3))
-static CCTK_REAL PDonesided2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1ody, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDonesided2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1ody, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3)
+# 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 (-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(dir2)+cdk*(0)]))*p1ody*dir2;
+ 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 PDonesided3(u) ((-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(dir3)]))*p1odz*dir3)
+# 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 PDonesided3(u) (PDonesided3_impl(u,p1odz,cdj,cdk,dir1,dir2,dir3))
-static CCTK_REAL PDonesided3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1odz, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDonesided3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1odz, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3)
+# 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 (-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(dir3)]))*p1odz*dir3;
+ 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 PDupwindNthAnti1(u) ((-1470*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + 1470*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)]) + 480*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) - 480*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]) - 145*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(0)]) + 145*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(0)]) + 30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(0)]) - 30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(0)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-5)+cdj*(0)+cdk*(0)]) + 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(5)+cdj*(0)+cdk*(0)]))*p1o1680dx)
+# 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 PDupwindNthAnti1(u) (PDupwindNthAnti1_impl(u,p1o1680dx,cdj,cdk))
-static CCTK_REAL PDupwindNthAnti1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o1680dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDupwindNthAnti1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o1680dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-1470*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + 1470*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)]) + 480*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) - 480*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]) - 145*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(0)]) + 145*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(0)]) + 30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(0)]) - 30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(0)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-5)+cdj*(0)+cdk*(0)]) + 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(5)+cdj*(0)+cdk*(0)]))*p1o1680dx;
+ 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 PDupwindNthSymm1(u) ((-252*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 210*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)])) - 120*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)])) + 45*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(0)])) - 10*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-5)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(5)+cdj*(0)+cdk*(0)]))*p1o560dx)
+# 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 PDupwindNthSymm1(u) (PDupwindNthSymm1_impl(u,p1o560dx,cdj,cdk))
-static CCTK_REAL PDupwindNthSymm1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o560dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDupwindNthSymm1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o560dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-252*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 210*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)])) - 120*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)])) + 45*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(0)])) - 10*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-4)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(4)+cdj*(0)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-5)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(5)+cdj*(0)+cdk*(0)]))*p1o560dx;
+ 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 PDupwindNthAnti2(u) ((-1470*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + 1470*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)]) + 480*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) - 480*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]) - 145*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(0)]) + 145*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(0)]) + 30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(0)]) - 30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(0)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-5)+cdk*(0)]) + 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(5)+cdk*(0)]))*p1o1680dy)
+# 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 PDupwindNthAnti2(u) (PDupwindNthAnti2_impl(u,p1o1680dy,cdj,cdk))
-static CCTK_REAL PDupwindNthAnti2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o1680dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDupwindNthAnti2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o1680dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-1470*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + 1470*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)]) + 480*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) - 480*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]) - 145*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(0)]) + 145*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(0)]) + 30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(0)]) - 30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(0)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-5)+cdk*(0)]) + 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(5)+cdk*(0)]))*p1o1680dy;
+ 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 PDupwindNthSymm2(u) ((-252*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 210*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)])) - 120*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)])) + 45*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(0)])) - 10*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-5)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(5)+cdk*(0)]))*p1o560dy)
+# 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 PDupwindNthSymm2(u) (PDupwindNthSymm2_impl(u,p1o560dy,cdj,cdk))
-static CCTK_REAL PDupwindNthSymm2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o560dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDupwindNthSymm2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o560dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-252*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 210*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)])) - 120*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)])) + 45*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(0)])) - 10*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-4)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(4)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-5)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(5)+cdk*(0)]))*p1o560dy;
+ 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 PDupwindNthAnti3(u) ((-1470*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + 1470*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)]) + 480*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) - 480*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]) - 145*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-3)]) + 145*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(3)]) + 30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-4)]) - 30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(4)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-5)]) + 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(5)]))*p1o1680dz)
+# 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 PDupwindNthAnti3(u) (PDupwindNthAnti3_impl(u,p1o1680dz,cdj,cdk))
-static CCTK_REAL PDupwindNthAnti3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o1680dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDupwindNthAnti3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o1680dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-1470*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + 1470*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)]) + 480*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) - 480*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]) - 145*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-3)]) + 145*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(3)]) + 30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-4)]) - 30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(4)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-5)]) + 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(5)]))*p1o1680dz;
+ 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 PDupwindNthSymm3(u) ((-252*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 210*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)])) - 120*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)])) + 45*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(3)])) - 10*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(4)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-5)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(5)]))*p1o560dz)
+# 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 PDupwindNthSymm3(u) (PDupwindNthSymm3_impl(u,p1o560dz,cdj,cdk))
-static CCTK_REAL PDupwindNthSymm3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o560dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDupwindNthSymm3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o560dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-252*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 210*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)])) - 120*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)])) + 45*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(3)])) - 10*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-4)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(4)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-5)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(5)]))*p1o560dz;
+ 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_BSSN_O8/src/ML_BSSN_O8_Advect.cc b/ML_BSSN_O8/src/ML_BSSN_O8_Advect.cc
index f4812ba..78dbbb4 100644
--- a/ML_BSSN_O8/src/ML_BSSN_O8_Advect.cc
+++ b/ML_BSSN_O8/src/ML_BSSN_O8_Advect.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_O8_Advect_SelectBCs(CCTK_ARGUMENTS)
{
@@ -57,7 +58,7 @@ extern "C" void ML_BSSN_O8_Advect_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_BSSN_O8_Advect_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_O8_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;
@@ -65,21 +66,6 @@ static void ML_BSSN_O8_Advect_Body(cGH const * restrict const cctkGH, int const
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O8_Advect_Body");
- }
-
- if (cctk_iteration % ML_BSSN_O8_Advect_calc_every != ML_BSSN_O8_Advect_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN_O8::ML_curv","ML_BSSN_O8::ML_curvrhs","ML_BSSN_O8::ML_dtlapse","ML_BSSN_O8::ML_dtlapserhs","ML_BSSN_O8::ML_dtshift","ML_BSSN_O8::ML_dtshiftrhs","ML_BSSN_O8::ML_Gamma","ML_BSSN_O8::ML_Gammarhs","ML_BSSN_O8::ML_lapse","ML_BSSN_O8::ML_lapserhs","ML_BSSN_O8::ML_log_confac","ML_BSSN_O8::ML_log_confacrhs","ML_BSSN_O8::ML_metric","ML_BSSN_O8::ML_metricrhs","ML_BSSN_O8::ML_shift","ML_BSSN_O8::ML_shiftrhs","ML_BSSN_O8::ML_trace_curv","ML_BSSN_O8::ML_trace_curvrhs"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O8_Advect", 18, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O8_Advect", 5, 5, 5);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -89,263 +75,1002 @@ static void ML_BSSN_O8_Advect_Body(cGH const * restrict const cctkGH, int const
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o1024dx = 0.0009765625*INV(dx);
- CCTK_REAL const p1o1024dy = 0.0009765625*INV(dy);
- CCTK_REAL const p1o1024dz = 0.0009765625*INV(dz);
- CCTK_REAL const p1o1680dx = 0.000595238095238095238095238095238*INV(dx);
- CCTK_REAL const p1o1680dy = 0.000595238095238095238095238095238*INV(dy);
- CCTK_REAL const p1o1680dz = 0.000595238095238095238095238095238*INV(dz);
- CCTK_REAL const p1o5040dx2 = 0.000198412698412698412698412698413*INV(SQR(dx));
- CCTK_REAL const p1o5040dy2 = 0.000198412698412698412698412698413*INV(SQR(dy));
- CCTK_REAL const p1o5040dz2 = 0.000198412698412698412698412698413*INV(SQR(dz));
- CCTK_REAL const p1o560dx = 0.00178571428571428571428571428571*INV(dx);
- CCTK_REAL const p1o560dy = 0.00178571428571428571428571428571*INV(dy);
- CCTK_REAL const p1o560dz = 0.00178571428571428571428571428571*INV(dz);
- CCTK_REAL const p1o705600dxdy = 1.41723356009070294784580498866e-6*INV(dx)*INV(dy);
- CCTK_REAL const p1o705600dxdz = 1.41723356009070294784580498866e-6*INV(dx)*INV(dz);
- CCTK_REAL const p1o705600dydz = 1.41723356009070294784580498866e-6*INV(dy)*INV(dz);
- CCTK_REAL const p1o840dx = 0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const p1o840dy = 0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const p1o840dz = 0.00119047619047619047619047619048*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o840dx = -0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const pm1o840dy = -0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const pm1o840dz = -0.00119047619047619047619047619048*INV(dz);
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_O8_Advect,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_O8_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 AL = A[index];
- CCTK_REAL alphaL = alpha[index];
- CCTK_REAL alpharhsL = alpharhs[index];
- CCTK_REAL ArhsL = Arhs[index];
- CCTK_REAL At11L = At11[index];
- CCTK_REAL At11rhsL = At11rhs[index];
- CCTK_REAL At12L = At12[index];
- CCTK_REAL At12rhsL = At12rhs[index];
- CCTK_REAL At13L = At13[index];
- CCTK_REAL At13rhsL = At13rhs[index];
- CCTK_REAL At22L = At22[index];
- CCTK_REAL At22rhsL = At22rhs[index];
- CCTK_REAL At23L = At23[index];
- CCTK_REAL At23rhsL = At23rhs[index];
- CCTK_REAL At33L = At33[index];
- CCTK_REAL At33rhsL = At33rhs[index];
- CCTK_REAL B1L = B1[index];
- CCTK_REAL B1rhsL = B1rhs[index];
- CCTK_REAL B2L = B2[index];
- CCTK_REAL B2rhsL = B2rhs[index];
- CCTK_REAL B3L = B3[index];
- CCTK_REAL B3rhsL = B3rhs[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta1rhsL = beta1rhs[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta2rhsL = beta2rhs[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL beta3rhsL = beta3rhs[index];
- CCTK_REAL gt11L = gt11[index];
- CCTK_REAL gt11rhsL = gt11rhs[index];
- CCTK_REAL gt12L = gt12[index];
- CCTK_REAL gt12rhsL = gt12rhs[index];
- CCTK_REAL gt13L = gt13[index];
- CCTK_REAL gt13rhsL = gt13rhs[index];
- CCTK_REAL gt22L = gt22[index];
- CCTK_REAL gt22rhsL = gt22rhs[index];
- CCTK_REAL gt23L = gt23[index];
- CCTK_REAL gt23rhsL = gt23rhs[index];
- CCTK_REAL gt33L = gt33[index];
- CCTK_REAL gt33rhsL = gt33rhs[index];
- CCTK_REAL phiL = phi[index];
- CCTK_REAL phirhsL = phirhs[index];
- CCTK_REAL trKL = trK[index];
- CCTK_REAL trKrhsL = trKrhs[index];
- CCTK_REAL Xt1L = Xt1[index];
- CCTK_REAL Xt1rhsL = Xt1rhs[index];
- CCTK_REAL Xt2L = Xt2[index];
- CCTK_REAL Xt2rhsL = Xt2rhs[index];
- CCTK_REAL Xt3L = Xt3[index];
- CCTK_REAL Xt3rhsL = Xt3rhs[index];
+ CCTK_REAL_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 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 const PDupwindNthAnti1A = PDupwindNthAnti1(&A[index]);
- CCTK_REAL const PDupwindNthSymm1A = PDupwindNthSymm1(&A[index]);
- CCTK_REAL const PDupwindNthAnti2A = PDupwindNthAnti2(&A[index]);
- CCTK_REAL const PDupwindNthSymm2A = PDupwindNthSymm2(&A[index]);
- CCTK_REAL const PDupwindNthAnti3A = PDupwindNthAnti3(&A[index]);
- CCTK_REAL const PDupwindNthSymm3A = PDupwindNthSymm3(&A[index]);
- CCTK_REAL const PDupwindNthAnti1alpha = PDupwindNthAnti1(&alpha[index]);
- CCTK_REAL const PDupwindNthSymm1alpha = PDupwindNthSymm1(&alpha[index]);
- CCTK_REAL const PDupwindNthAnti2alpha = PDupwindNthAnti2(&alpha[index]);
- CCTK_REAL const PDupwindNthSymm2alpha = PDupwindNthSymm2(&alpha[index]);
- CCTK_REAL const PDupwindNthAnti3alpha = PDupwindNthAnti3(&alpha[index]);
- CCTK_REAL const PDupwindNthSymm3alpha = PDupwindNthSymm3(&alpha[index]);
- CCTK_REAL const PDupwindNthAnti1At11 = PDupwindNthAnti1(&At11[index]);
- CCTK_REAL const PDupwindNthSymm1At11 = PDupwindNthSymm1(&At11[index]);
- CCTK_REAL const PDupwindNthAnti2At11 = PDupwindNthAnti2(&At11[index]);
- CCTK_REAL const PDupwindNthSymm2At11 = PDupwindNthSymm2(&At11[index]);
- CCTK_REAL const PDupwindNthAnti3At11 = PDupwindNthAnti3(&At11[index]);
- CCTK_REAL const PDupwindNthSymm3At11 = PDupwindNthSymm3(&At11[index]);
- CCTK_REAL const PDupwindNthAnti1At12 = PDupwindNthAnti1(&At12[index]);
- CCTK_REAL const PDupwindNthSymm1At12 = PDupwindNthSymm1(&At12[index]);
- CCTK_REAL const PDupwindNthAnti2At12 = PDupwindNthAnti2(&At12[index]);
- CCTK_REAL const PDupwindNthSymm2At12 = PDupwindNthSymm2(&At12[index]);
- CCTK_REAL const PDupwindNthAnti3At12 = PDupwindNthAnti3(&At12[index]);
- CCTK_REAL const PDupwindNthSymm3At12 = PDupwindNthSymm3(&At12[index]);
- CCTK_REAL const PDupwindNthAnti1At13 = PDupwindNthAnti1(&At13[index]);
- CCTK_REAL const PDupwindNthSymm1At13 = PDupwindNthSymm1(&At13[index]);
- CCTK_REAL const PDupwindNthAnti2At13 = PDupwindNthAnti2(&At13[index]);
- CCTK_REAL const PDupwindNthSymm2At13 = PDupwindNthSymm2(&At13[index]);
- CCTK_REAL const PDupwindNthAnti3At13 = PDupwindNthAnti3(&At13[index]);
- CCTK_REAL const PDupwindNthSymm3At13 = PDupwindNthSymm3(&At13[index]);
- CCTK_REAL const PDupwindNthAnti1At22 = PDupwindNthAnti1(&At22[index]);
- CCTK_REAL const PDupwindNthSymm1At22 = PDupwindNthSymm1(&At22[index]);
- CCTK_REAL const PDupwindNthAnti2At22 = PDupwindNthAnti2(&At22[index]);
- CCTK_REAL const PDupwindNthSymm2At22 = PDupwindNthSymm2(&At22[index]);
- CCTK_REAL const PDupwindNthAnti3At22 = PDupwindNthAnti3(&At22[index]);
- CCTK_REAL const PDupwindNthSymm3At22 = PDupwindNthSymm3(&At22[index]);
- CCTK_REAL const PDupwindNthAnti1At23 = PDupwindNthAnti1(&At23[index]);
- CCTK_REAL const PDupwindNthSymm1At23 = PDupwindNthSymm1(&At23[index]);
- CCTK_REAL const PDupwindNthAnti2At23 = PDupwindNthAnti2(&At23[index]);
- CCTK_REAL const PDupwindNthSymm2At23 = PDupwindNthSymm2(&At23[index]);
- CCTK_REAL const PDupwindNthAnti3At23 = PDupwindNthAnti3(&At23[index]);
- CCTK_REAL const PDupwindNthSymm3At23 = PDupwindNthSymm3(&At23[index]);
- CCTK_REAL const PDupwindNthAnti1At33 = PDupwindNthAnti1(&At33[index]);
- CCTK_REAL const PDupwindNthSymm1At33 = PDupwindNthSymm1(&At33[index]);
- CCTK_REAL const PDupwindNthAnti2At33 = PDupwindNthAnti2(&At33[index]);
- CCTK_REAL const PDupwindNthSymm2At33 = PDupwindNthSymm2(&At33[index]);
- CCTK_REAL const PDupwindNthAnti3At33 = PDupwindNthAnti3(&At33[index]);
- CCTK_REAL const PDupwindNthSymm3At33 = PDupwindNthSymm3(&At33[index]);
- CCTK_REAL const PDupwindNthAnti1B1 = PDupwindNthAnti1(&B1[index]);
- CCTK_REAL const PDupwindNthSymm1B1 = PDupwindNthSymm1(&B1[index]);
- CCTK_REAL const PDupwindNthAnti2B1 = PDupwindNthAnti2(&B1[index]);
- CCTK_REAL const PDupwindNthSymm2B1 = PDupwindNthSymm2(&B1[index]);
- CCTK_REAL const PDupwindNthAnti3B1 = PDupwindNthAnti3(&B1[index]);
- CCTK_REAL const PDupwindNthSymm3B1 = PDupwindNthSymm3(&B1[index]);
- CCTK_REAL const PDupwindNthAnti1B2 = PDupwindNthAnti1(&B2[index]);
- CCTK_REAL const PDupwindNthSymm1B2 = PDupwindNthSymm1(&B2[index]);
- CCTK_REAL const PDupwindNthAnti2B2 = PDupwindNthAnti2(&B2[index]);
- CCTK_REAL const PDupwindNthSymm2B2 = PDupwindNthSymm2(&B2[index]);
- CCTK_REAL const PDupwindNthAnti3B2 = PDupwindNthAnti3(&B2[index]);
- CCTK_REAL const PDupwindNthSymm3B2 = PDupwindNthSymm3(&B2[index]);
- CCTK_REAL const PDupwindNthAnti1B3 = PDupwindNthAnti1(&B3[index]);
- CCTK_REAL const PDupwindNthSymm1B3 = PDupwindNthSymm1(&B3[index]);
- CCTK_REAL const PDupwindNthAnti2B3 = PDupwindNthAnti2(&B3[index]);
- CCTK_REAL const PDupwindNthSymm2B3 = PDupwindNthSymm2(&B3[index]);
- CCTK_REAL const PDupwindNthAnti3B3 = PDupwindNthAnti3(&B3[index]);
- CCTK_REAL const PDupwindNthSymm3B3 = PDupwindNthSymm3(&B3[index]);
- CCTK_REAL const PDupwindNthAnti1beta1 = PDupwindNthAnti1(&beta1[index]);
- CCTK_REAL const PDupwindNthSymm1beta1 = PDupwindNthSymm1(&beta1[index]);
- CCTK_REAL const PDupwindNthAnti2beta1 = PDupwindNthAnti2(&beta1[index]);
- CCTK_REAL const PDupwindNthSymm2beta1 = PDupwindNthSymm2(&beta1[index]);
- CCTK_REAL const PDupwindNthAnti3beta1 = PDupwindNthAnti3(&beta1[index]);
- CCTK_REAL const PDupwindNthSymm3beta1 = PDupwindNthSymm3(&beta1[index]);
- CCTK_REAL const PDupwindNthAnti1beta2 = PDupwindNthAnti1(&beta2[index]);
- CCTK_REAL const PDupwindNthSymm1beta2 = PDupwindNthSymm1(&beta2[index]);
- CCTK_REAL const PDupwindNthAnti2beta2 = PDupwindNthAnti2(&beta2[index]);
- CCTK_REAL const PDupwindNthSymm2beta2 = PDupwindNthSymm2(&beta2[index]);
- CCTK_REAL const PDupwindNthAnti3beta2 = PDupwindNthAnti3(&beta2[index]);
- CCTK_REAL const PDupwindNthSymm3beta2 = PDupwindNthSymm3(&beta2[index]);
- CCTK_REAL const PDupwindNthAnti1beta3 = PDupwindNthAnti1(&beta3[index]);
- CCTK_REAL const PDupwindNthSymm1beta3 = PDupwindNthSymm1(&beta3[index]);
- CCTK_REAL const PDupwindNthAnti2beta3 = PDupwindNthAnti2(&beta3[index]);
- CCTK_REAL const PDupwindNthSymm2beta3 = PDupwindNthSymm2(&beta3[index]);
- CCTK_REAL const PDupwindNthAnti3beta3 = PDupwindNthAnti3(&beta3[index]);
- CCTK_REAL const PDupwindNthSymm3beta3 = PDupwindNthSymm3(&beta3[index]);
- CCTK_REAL const PDupwindNthAnti1gt11 = PDupwindNthAnti1(&gt11[index]);
- CCTK_REAL const PDupwindNthSymm1gt11 = PDupwindNthSymm1(&gt11[index]);
- CCTK_REAL const PDupwindNthAnti2gt11 = PDupwindNthAnti2(&gt11[index]);
- CCTK_REAL const PDupwindNthSymm2gt11 = PDupwindNthSymm2(&gt11[index]);
- CCTK_REAL const PDupwindNthAnti3gt11 = PDupwindNthAnti3(&gt11[index]);
- CCTK_REAL const PDupwindNthSymm3gt11 = PDupwindNthSymm3(&gt11[index]);
- CCTK_REAL const PDupwindNthAnti1gt12 = PDupwindNthAnti1(&gt12[index]);
- CCTK_REAL const PDupwindNthSymm1gt12 = PDupwindNthSymm1(&gt12[index]);
- CCTK_REAL const PDupwindNthAnti2gt12 = PDupwindNthAnti2(&gt12[index]);
- CCTK_REAL const PDupwindNthSymm2gt12 = PDupwindNthSymm2(&gt12[index]);
- CCTK_REAL const PDupwindNthAnti3gt12 = PDupwindNthAnti3(&gt12[index]);
- CCTK_REAL const PDupwindNthSymm3gt12 = PDupwindNthSymm3(&gt12[index]);
- CCTK_REAL const PDupwindNthAnti1gt13 = PDupwindNthAnti1(&gt13[index]);
- CCTK_REAL const PDupwindNthSymm1gt13 = PDupwindNthSymm1(&gt13[index]);
- CCTK_REAL const PDupwindNthAnti2gt13 = PDupwindNthAnti2(&gt13[index]);
- CCTK_REAL const PDupwindNthSymm2gt13 = PDupwindNthSymm2(&gt13[index]);
- CCTK_REAL const PDupwindNthAnti3gt13 = PDupwindNthAnti3(&gt13[index]);
- CCTK_REAL const PDupwindNthSymm3gt13 = PDupwindNthSymm3(&gt13[index]);
- CCTK_REAL const PDupwindNthAnti1gt22 = PDupwindNthAnti1(&gt22[index]);
- CCTK_REAL const PDupwindNthSymm1gt22 = PDupwindNthSymm1(&gt22[index]);
- CCTK_REAL const PDupwindNthAnti2gt22 = PDupwindNthAnti2(&gt22[index]);
- CCTK_REAL const PDupwindNthSymm2gt22 = PDupwindNthSymm2(&gt22[index]);
- CCTK_REAL const PDupwindNthAnti3gt22 = PDupwindNthAnti3(&gt22[index]);
- CCTK_REAL const PDupwindNthSymm3gt22 = PDupwindNthSymm3(&gt22[index]);
- CCTK_REAL const PDupwindNthAnti1gt23 = PDupwindNthAnti1(&gt23[index]);
- CCTK_REAL const PDupwindNthSymm1gt23 = PDupwindNthSymm1(&gt23[index]);
- CCTK_REAL const PDupwindNthAnti2gt23 = PDupwindNthAnti2(&gt23[index]);
- CCTK_REAL const PDupwindNthSymm2gt23 = PDupwindNthSymm2(&gt23[index]);
- CCTK_REAL const PDupwindNthAnti3gt23 = PDupwindNthAnti3(&gt23[index]);
- CCTK_REAL const PDupwindNthSymm3gt23 = PDupwindNthSymm3(&gt23[index]);
- CCTK_REAL const PDupwindNthAnti1gt33 = PDupwindNthAnti1(&gt33[index]);
- CCTK_REAL const PDupwindNthSymm1gt33 = PDupwindNthSymm1(&gt33[index]);
- CCTK_REAL const PDupwindNthAnti2gt33 = PDupwindNthAnti2(&gt33[index]);
- CCTK_REAL const PDupwindNthSymm2gt33 = PDupwindNthSymm2(&gt33[index]);
- CCTK_REAL const PDupwindNthAnti3gt33 = PDupwindNthAnti3(&gt33[index]);
- CCTK_REAL const PDupwindNthSymm3gt33 = PDupwindNthSymm3(&gt33[index]);
- CCTK_REAL const PDupwindNthAnti1phi = PDupwindNthAnti1(&phi[index]);
- CCTK_REAL const PDupwindNthSymm1phi = PDupwindNthSymm1(&phi[index]);
- CCTK_REAL const PDupwindNthAnti2phi = PDupwindNthAnti2(&phi[index]);
- CCTK_REAL const PDupwindNthSymm2phi = PDupwindNthSymm2(&phi[index]);
- CCTK_REAL const PDupwindNthAnti3phi = PDupwindNthAnti3(&phi[index]);
- CCTK_REAL const PDupwindNthSymm3phi = PDupwindNthSymm3(&phi[index]);
- CCTK_REAL const PDupwindNthAnti1trK = PDupwindNthAnti1(&trK[index]);
- CCTK_REAL const PDupwindNthSymm1trK = PDupwindNthSymm1(&trK[index]);
- CCTK_REAL const PDupwindNthAnti2trK = PDupwindNthAnti2(&trK[index]);
- CCTK_REAL const PDupwindNthSymm2trK = PDupwindNthSymm2(&trK[index]);
- CCTK_REAL const PDupwindNthAnti3trK = PDupwindNthAnti3(&trK[index]);
- CCTK_REAL const PDupwindNthSymm3trK = PDupwindNthSymm3(&trK[index]);
- CCTK_REAL const PDupwindNthAnti1Xt1 = PDupwindNthAnti1(&Xt1[index]);
- CCTK_REAL const PDupwindNthSymm1Xt1 = PDupwindNthSymm1(&Xt1[index]);
- CCTK_REAL const PDupwindNthAnti2Xt1 = PDupwindNthAnti2(&Xt1[index]);
- CCTK_REAL const PDupwindNthSymm2Xt1 = PDupwindNthSymm2(&Xt1[index]);
- CCTK_REAL const PDupwindNthAnti3Xt1 = PDupwindNthAnti3(&Xt1[index]);
- CCTK_REAL const PDupwindNthSymm3Xt1 = PDupwindNthSymm3(&Xt1[index]);
- CCTK_REAL const PDupwindNthAnti1Xt2 = PDupwindNthAnti1(&Xt2[index]);
- CCTK_REAL const PDupwindNthSymm1Xt2 = PDupwindNthSymm1(&Xt2[index]);
- CCTK_REAL const PDupwindNthAnti2Xt2 = PDupwindNthAnti2(&Xt2[index]);
- CCTK_REAL const PDupwindNthSymm2Xt2 = PDupwindNthSymm2(&Xt2[index]);
- CCTK_REAL const PDupwindNthAnti3Xt2 = PDupwindNthAnti3(&Xt2[index]);
- CCTK_REAL const PDupwindNthSymm3Xt2 = PDupwindNthSymm3(&Xt2[index]);
- CCTK_REAL const PDupwindNthAnti1Xt3 = PDupwindNthAnti1(&Xt3[index]);
- CCTK_REAL const PDupwindNthSymm1Xt3 = PDupwindNthSymm1(&Xt3[index]);
- CCTK_REAL const PDupwindNthAnti2Xt3 = PDupwindNthAnti2(&Xt3[index]);
- CCTK_REAL const PDupwindNthSymm2Xt3 = PDupwindNthSymm2(&Xt3[index]);
- CCTK_REAL const PDupwindNthAnti3Xt3 = PDupwindNthAnti3(&Xt3[index]);
- CCTK_REAL const PDupwindNthSymm3Xt3 = PDupwindNthSymm3(&Xt3[index]);
+ 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 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]);
+ 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]);
+ 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]);
+ 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]);
+ 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);
@@ -354,172 +1079,1113 @@ static void ML_BSSN_O8_Advect_Body(cGH const * restrict const cctkGH, int const
ptrdiff_t dir3 = Sign(beta3L);
- phirhsL = beta1L*PDupwindNthAnti1phi + beta2L*PDupwindNthAnti2phi +
- beta3L*PDupwindNthAnti3phi + phirhsL + PDupwindNthSymm1phi*Abs(beta1L)
- + PDupwindNthSymm2phi*Abs(beta2L) + PDupwindNthSymm3phi*Abs(beta3L);
-
- gt11rhsL = gt11rhsL + beta1L*PDupwindNthAnti1gt11 +
- beta2L*PDupwindNthAnti2gt11 + beta3L*PDupwindNthAnti3gt11 +
- PDupwindNthSymm1gt11*Abs(beta1L) + PDupwindNthSymm2gt11*Abs(beta2L) +
- PDupwindNthSymm3gt11*Abs(beta3L);
-
- gt12rhsL = gt12rhsL + beta1L*PDupwindNthAnti1gt12 +
- beta2L*PDupwindNthAnti2gt12 + beta3L*PDupwindNthAnti3gt12 +
- PDupwindNthSymm1gt12*Abs(beta1L) + PDupwindNthSymm2gt12*Abs(beta2L) +
- PDupwindNthSymm3gt12*Abs(beta3L);
-
- gt13rhsL = gt13rhsL + beta1L*PDupwindNthAnti1gt13 +
- beta2L*PDupwindNthAnti2gt13 + beta3L*PDupwindNthAnti3gt13 +
- PDupwindNthSymm1gt13*Abs(beta1L) + PDupwindNthSymm2gt13*Abs(beta2L) +
- PDupwindNthSymm3gt13*Abs(beta3L);
-
- gt22rhsL = gt22rhsL + beta1L*PDupwindNthAnti1gt22 +
- beta2L*PDupwindNthAnti2gt22 + beta3L*PDupwindNthAnti3gt22 +
- PDupwindNthSymm1gt22*Abs(beta1L) + PDupwindNthSymm2gt22*Abs(beta2L) +
- PDupwindNthSymm3gt22*Abs(beta3L);
-
- gt23rhsL = gt23rhsL + beta1L*PDupwindNthAnti1gt23 +
- beta2L*PDupwindNthAnti2gt23 + beta3L*PDupwindNthAnti3gt23 +
- PDupwindNthSymm1gt23*Abs(beta1L) + PDupwindNthSymm2gt23*Abs(beta2L) +
- PDupwindNthSymm3gt23*Abs(beta3L);
-
- gt33rhsL = gt33rhsL + beta1L*PDupwindNthAnti1gt33 +
- beta2L*PDupwindNthAnti2gt33 + beta3L*PDupwindNthAnti3gt33 +
- PDupwindNthSymm1gt33*Abs(beta1L) + PDupwindNthSymm2gt33*Abs(beta2L) +
- PDupwindNthSymm3gt33*Abs(beta3L);
-
- Xt1rhsL = beta1L*PDupwindNthAnti1Xt1 + beta2L*PDupwindNthAnti2Xt1 +
- beta3L*PDupwindNthAnti3Xt1 + Xt1rhsL + PDupwindNthSymm1Xt1*Abs(beta1L)
- + PDupwindNthSymm2Xt1*Abs(beta2L) + PDupwindNthSymm3Xt1*Abs(beta3L);
-
- Xt2rhsL = beta1L*PDupwindNthAnti1Xt2 + beta2L*PDupwindNthAnti2Xt2 +
- beta3L*PDupwindNthAnti3Xt2 + Xt2rhsL + PDupwindNthSymm1Xt2*Abs(beta1L)
- + PDupwindNthSymm2Xt2*Abs(beta2L) + PDupwindNthSymm3Xt2*Abs(beta3L);
-
- Xt3rhsL = beta1L*PDupwindNthAnti1Xt3 + beta2L*PDupwindNthAnti2Xt3 +
- beta3L*PDupwindNthAnti3Xt3 + Xt3rhsL + PDupwindNthSymm1Xt3*Abs(beta1L)
- + PDupwindNthSymm2Xt3*Abs(beta2L) + PDupwindNthSymm3Xt3*Abs(beta3L);
-
- trKrhsL = beta1L*PDupwindNthAnti1trK + beta2L*PDupwindNthAnti2trK +
- beta3L*PDupwindNthAnti3trK + trKrhsL + PDupwindNthSymm1trK*Abs(beta1L)
- + PDupwindNthSymm2trK*Abs(beta2L) + PDupwindNthSymm3trK*Abs(beta3L);
-
- At11rhsL = At11rhsL + beta1L*PDupwindNthAnti1At11 +
- beta2L*PDupwindNthAnti2At11 + beta3L*PDupwindNthAnti3At11 +
- PDupwindNthSymm1At11*Abs(beta1L) + PDupwindNthSymm2At11*Abs(beta2L) +
- PDupwindNthSymm3At11*Abs(beta3L);
-
- At12rhsL = At12rhsL + beta1L*PDupwindNthAnti1At12 +
- beta2L*PDupwindNthAnti2At12 + beta3L*PDupwindNthAnti3At12 +
- PDupwindNthSymm1At12*Abs(beta1L) + PDupwindNthSymm2At12*Abs(beta2L) +
- PDupwindNthSymm3At12*Abs(beta3L);
-
- At13rhsL = At13rhsL + beta1L*PDupwindNthAnti1At13 +
- beta2L*PDupwindNthAnti2At13 + beta3L*PDupwindNthAnti3At13 +
- PDupwindNthSymm1At13*Abs(beta1L) + PDupwindNthSymm2At13*Abs(beta2L) +
- PDupwindNthSymm3At13*Abs(beta3L);
-
- At22rhsL = At22rhsL + beta1L*PDupwindNthAnti1At22 +
- beta2L*PDupwindNthAnti2At22 + beta3L*PDupwindNthAnti3At22 +
- PDupwindNthSymm1At22*Abs(beta1L) + PDupwindNthSymm2At22*Abs(beta2L) +
- PDupwindNthSymm3At22*Abs(beta3L);
-
- At23rhsL = At23rhsL + beta1L*PDupwindNthAnti1At23 +
- beta2L*PDupwindNthAnti2At23 + beta3L*PDupwindNthAnti3At23 +
- PDupwindNthSymm1At23*Abs(beta1L) + PDupwindNthSymm2At23*Abs(beta2L) +
- PDupwindNthSymm3At23*Abs(beta3L);
-
- At33rhsL = At33rhsL + beta1L*PDupwindNthAnti1At33 +
- beta2L*PDupwindNthAnti2At33 + beta3L*PDupwindNthAnti3At33 +
- PDupwindNthSymm1At33*Abs(beta1L) + PDupwindNthSymm2At33*Abs(beta2L) +
- PDupwindNthSymm3At33*Abs(beta3L);
-
- alpharhsL = alpharhsL + (beta1L*PDupwindNthAnti1alpha +
- beta2L*PDupwindNthAnti2alpha + beta3L*PDupwindNthAnti3alpha +
- PDupwindNthSymm1alpha*Abs(beta1L) + PDupwindNthSymm2alpha*Abs(beta2L) +
- PDupwindNthSymm3alpha*Abs(beta3L))*ToReal(LapseAdvectionCoeff);
-
- ArhsL = ArhsL + (beta1L*PDupwindNthAnti1A + beta2L*PDupwindNthAnti2A +
- beta3L*PDupwindNthAnti3A + PDupwindNthSymm1A*Abs(beta1L) +
- PDupwindNthSymm2A*Abs(beta2L) +
- PDupwindNthSymm3A*Abs(beta3L))*ToReal(LapseAdvectionCoeff);
-
- beta1rhsL = beta1rhsL + (beta1L*PDupwindNthAnti1beta1 +
- beta2L*PDupwindNthAnti2beta1 + beta3L*PDupwindNthAnti3beta1 +
- PDupwindNthSymm1beta1*Abs(beta1L) + PDupwindNthSymm2beta1*Abs(beta2L) +
- PDupwindNthSymm3beta1*Abs(beta3L))*ToReal(ShiftAdvectionCoeff);
-
- beta2rhsL = beta2rhsL + (beta1L*PDupwindNthAnti1beta2 +
- beta2L*PDupwindNthAnti2beta2 + beta3L*PDupwindNthAnti3beta2 +
- PDupwindNthSymm1beta2*Abs(beta1L) + PDupwindNthSymm2beta2*Abs(beta2L) +
- PDupwindNthSymm3beta2*Abs(beta3L))*ToReal(ShiftAdvectionCoeff);
-
- beta3rhsL = beta3rhsL + (beta1L*PDupwindNthAnti1beta3 +
- beta2L*PDupwindNthAnti2beta3 + beta3L*PDupwindNthAnti3beta3 +
- PDupwindNthSymm1beta3*Abs(beta1L) + PDupwindNthSymm2beta3*Abs(beta2L) +
- PDupwindNthSymm3beta3*Abs(beta3L))*ToReal(ShiftAdvectionCoeff);
-
- B1rhsL = B1rhsL + (beta1L*(PDupwindNthAnti1B1 - PDupwindNthAnti1Xt1) +
- beta2L*(PDupwindNthAnti2B1 - PDupwindNthAnti2Xt1) +
- beta3L*(PDupwindNthAnti3B1 - PDupwindNthAnti3Xt1) + (PDupwindNthSymm1B1
- - PDupwindNthSymm1Xt1)*Abs(beta1L) + (PDupwindNthSymm2B1 -
- PDupwindNthSymm2Xt1)*Abs(beta2L) + (PDupwindNthSymm3B1 -
- PDupwindNthSymm3Xt1)*Abs(beta3L))*ToReal(ShiftAdvectionCoeff) +
- (beta1L*PDupwindNthAnti1Xt1 + beta2L*PDupwindNthAnti2Xt1 +
- beta3L*PDupwindNthAnti3Xt1 + PDupwindNthSymm1Xt1*Abs(beta1L) +
- PDupwindNthSymm2Xt1*Abs(beta2L) +
- PDupwindNthSymm3Xt1*Abs(beta3L))*ToReal(ShiftBCoeff);
-
- B2rhsL = B2rhsL + (beta1L*(PDupwindNthAnti1B2 - PDupwindNthAnti1Xt2) +
- beta2L*(PDupwindNthAnti2B2 - PDupwindNthAnti2Xt2) +
- beta3L*(PDupwindNthAnti3B2 - PDupwindNthAnti3Xt2) + (PDupwindNthSymm1B2
- - PDupwindNthSymm1Xt2)*Abs(beta1L) + (PDupwindNthSymm2B2 -
- PDupwindNthSymm2Xt2)*Abs(beta2L) + (PDupwindNthSymm3B2 -
- PDupwindNthSymm3Xt2)*Abs(beta3L))*ToReal(ShiftAdvectionCoeff) +
- (beta1L*PDupwindNthAnti1Xt2 + beta2L*PDupwindNthAnti2Xt2 +
- beta3L*PDupwindNthAnti3Xt2 + PDupwindNthSymm1Xt2*Abs(beta1L) +
- PDupwindNthSymm2Xt2*Abs(beta2L) +
- PDupwindNthSymm3Xt2*Abs(beta3L))*ToReal(ShiftBCoeff);
-
- B3rhsL = B3rhsL + (beta1L*(PDupwindNthAnti1B3 - PDupwindNthAnti1Xt3) +
- beta2L*(PDupwindNthAnti2B3 - PDupwindNthAnti2Xt3) +
- beta3L*(PDupwindNthAnti3B3 - PDupwindNthAnti3Xt3) + (PDupwindNthSymm1B3
- - PDupwindNthSymm1Xt3)*Abs(beta1L) + (PDupwindNthSymm2B3 -
- PDupwindNthSymm2Xt3)*Abs(beta2L) + (PDupwindNthSymm3B3 -
- PDupwindNthSymm3Xt3)*Abs(beta3L))*ToReal(ShiftAdvectionCoeff) +
- (beta1L*PDupwindNthAnti1Xt3 + beta2L*PDupwindNthAnti2Xt3 +
- beta3L*PDupwindNthAnti3Xt3 + PDupwindNthSymm1Xt3*Abs(beta1L) +
- PDupwindNthSymm2Xt3*Abs(beta2L) +
- PDupwindNthSymm3Xt3*Abs(beta3L))*ToReal(ShiftBCoeff);
-
- /* Copy local copies back to grid functions */
- alpharhs[index] = alpharhsL;
- Arhs[index] = ArhsL;
- At11rhs[index] = At11rhsL;
- At12rhs[index] = At12rhsL;
- At13rhs[index] = At13rhsL;
- At22rhs[index] = At22rhsL;
- At23rhs[index] = At23rhsL;
- At33rhs[index] = At33rhsL;
- B1rhs[index] = B1rhsL;
- B2rhs[index] = B2rhsL;
- B3rhs[index] = B3rhsL;
- beta1rhs[index] = beta1rhsL;
- beta2rhs[index] = beta2rhsL;
- beta3rhs[index] = beta3rhsL;
- gt11rhs[index] = gt11rhsL;
- gt12rhs[index] = gt12rhsL;
- gt13rhs[index] = gt13rhsL;
- gt22rhs[index] = gt22rhsL;
- gt23rhs[index] = gt23rhsL;
- gt33rhs[index] = gt33rhsL;
- phirhs[index] = phirhsL;
- trKrhs[index] = trKrhsL;
- Xt1rhs[index] = Xt1rhsL;
- Xt2rhs[index] = Xt2rhsL;
- Xt3rhs[index] = Xt3rhsL;
+ 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 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 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 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 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 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 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)));
+
+ 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)));
+
+ 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)));
+
+ 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)));
+
+ 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)));
+
+ 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)));
+
+ 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;
+
+ JacPDupwindNthAnti1trK = PDupwindNthAnti1trK;
+
+ JacPDupwindNthAnti1Xt1 = PDupwindNthAnti1Xt1;
+
+ JacPDupwindNthAnti1Xt2 = PDupwindNthAnti1Xt2;
+
+ JacPDupwindNthAnti1Xt3 = PDupwindNthAnti1Xt3;
+
+ JacPDupwindNthSymm1A = PDupwindNthSymm1A;
+
+ JacPDupwindNthSymm1alpha = PDupwindNthSymm1alpha;
+
+ JacPDupwindNthSymm1At11 = PDupwindNthSymm1At11;
+
+ JacPDupwindNthSymm1At12 = PDupwindNthSymm1At12;
+
+ JacPDupwindNthSymm1At13 = PDupwindNthSymm1At13;
+
+ JacPDupwindNthSymm1At22 = PDupwindNthSymm1At22;
+
+ JacPDupwindNthSymm1At23 = PDupwindNthSymm1At23;
+
+ JacPDupwindNthSymm1At33 = PDupwindNthSymm1At33;
+
+ JacPDupwindNthSymm1B1 = PDupwindNthSymm1B1;
+
+ JacPDupwindNthSymm1B2 = PDupwindNthSymm1B2;
+
+ JacPDupwindNthSymm1B3 = PDupwindNthSymm1B3;
+
+ JacPDupwindNthSymm1beta1 = PDupwindNthSymm1beta1;
+
+ JacPDupwindNthSymm1beta2 = PDupwindNthSymm1beta2;
+
+ JacPDupwindNthSymm1beta3 = PDupwindNthSymm1beta3;
+
+ JacPDupwindNthSymm1gt11 = PDupwindNthSymm1gt11;
+
+ JacPDupwindNthSymm1gt12 = PDupwindNthSymm1gt12;
+
+ JacPDupwindNthSymm1gt13 = PDupwindNthSymm1gt13;
+
+ JacPDupwindNthSymm1gt22 = PDupwindNthSymm1gt22;
+
+ JacPDupwindNthSymm1gt23 = PDupwindNthSymm1gt23;
+
+ JacPDupwindNthSymm1gt33 = PDupwindNthSymm1gt33;
+
+ JacPDupwindNthSymm1phi = PDupwindNthSymm1phi;
+
+ JacPDupwindNthSymm1trK = PDupwindNthSymm1trK;
+
+ JacPDupwindNthSymm1Xt1 = PDupwindNthSymm1Xt1;
+
+ JacPDupwindNthSymm1Xt2 = PDupwindNthSymm1Xt2;
+
+ JacPDupwindNthSymm1Xt3 = PDupwindNthSymm1Xt3;
+
+ JacPDupwindNthAnti2A = PDupwindNthAnti2A;
+
+ JacPDupwindNthAnti2alpha = PDupwindNthAnti2alpha;
+
+ JacPDupwindNthAnti2At11 = PDupwindNthAnti2At11;
+
+ JacPDupwindNthAnti2At12 = PDupwindNthAnti2At12;
+
+ JacPDupwindNthAnti2At13 = PDupwindNthAnti2At13;
+
+ JacPDupwindNthAnti2At22 = PDupwindNthAnti2At22;
+
+ JacPDupwindNthAnti2At23 = PDupwindNthAnti2At23;
+
+ JacPDupwindNthAnti2At33 = PDupwindNthAnti2At33;
+
+ JacPDupwindNthAnti2B1 = PDupwindNthAnti2B1;
+
+ JacPDupwindNthAnti2B2 = PDupwindNthAnti2B2;
+
+ JacPDupwindNthAnti2B3 = PDupwindNthAnti2B3;
+
+ JacPDupwindNthAnti2beta1 = PDupwindNthAnti2beta1;
+
+ JacPDupwindNthAnti2beta2 = PDupwindNthAnti2beta2;
+
+ JacPDupwindNthAnti2beta3 = PDupwindNthAnti2beta3;
+
+ JacPDupwindNthAnti2gt11 = PDupwindNthAnti2gt11;
+
+ JacPDupwindNthAnti2gt12 = PDupwindNthAnti2gt12;
+
+ JacPDupwindNthAnti2gt13 = PDupwindNthAnti2gt13;
+
+ JacPDupwindNthAnti2gt22 = PDupwindNthAnti2gt22;
+
+ JacPDupwindNthAnti2gt23 = PDupwindNthAnti2gt23;
+
+ JacPDupwindNthAnti2gt33 = PDupwindNthAnti2gt33;
+
+ JacPDupwindNthAnti2phi = PDupwindNthAnti2phi;
+
+ JacPDupwindNthAnti2trK = PDupwindNthAnti2trK;
+
+ JacPDupwindNthAnti2Xt1 = PDupwindNthAnti2Xt1;
+
+ JacPDupwindNthAnti2Xt2 = PDupwindNthAnti2Xt2;
+
+ JacPDupwindNthAnti2Xt3 = PDupwindNthAnti2Xt3;
+
+ JacPDupwindNthSymm2A = PDupwindNthSymm2A;
+
+ JacPDupwindNthSymm2alpha = PDupwindNthSymm2alpha;
+
+ JacPDupwindNthSymm2At11 = PDupwindNthSymm2At11;
+
+ JacPDupwindNthSymm2At12 = PDupwindNthSymm2At12;
+
+ JacPDupwindNthSymm2At13 = PDupwindNthSymm2At13;
+
+ JacPDupwindNthSymm2At22 = PDupwindNthSymm2At22;
+
+ JacPDupwindNthSymm2At23 = PDupwindNthSymm2At23;
+
+ JacPDupwindNthSymm2At33 = PDupwindNthSymm2At33;
+
+ JacPDupwindNthSymm2B1 = PDupwindNthSymm2B1;
+
+ JacPDupwindNthSymm2B2 = PDupwindNthSymm2B2;
+
+ JacPDupwindNthSymm2B3 = PDupwindNthSymm2B3;
+
+ JacPDupwindNthSymm2beta1 = PDupwindNthSymm2beta1;
+
+ JacPDupwindNthSymm2beta2 = PDupwindNthSymm2beta2;
+
+ JacPDupwindNthSymm2beta3 = PDupwindNthSymm2beta3;
+
+ JacPDupwindNthSymm2gt11 = PDupwindNthSymm2gt11;
+
+ JacPDupwindNthSymm2gt12 = PDupwindNthSymm2gt12;
+
+ JacPDupwindNthSymm2gt13 = PDupwindNthSymm2gt13;
+
+ JacPDupwindNthSymm2gt22 = PDupwindNthSymm2gt22;
+
+ JacPDupwindNthSymm2gt23 = PDupwindNthSymm2gt23;
+
+ JacPDupwindNthSymm2gt33 = PDupwindNthSymm2gt33;
+
+ JacPDupwindNthSymm2phi = PDupwindNthSymm2phi;
+
+ JacPDupwindNthSymm2trK = PDupwindNthSymm2trK;
+
+ JacPDupwindNthSymm2Xt1 = PDupwindNthSymm2Xt1;
+
+ JacPDupwindNthSymm2Xt2 = PDupwindNthSymm2Xt2;
+
+ JacPDupwindNthSymm2Xt3 = PDupwindNthSymm2Xt3;
+
+ JacPDupwindNthAnti3A = PDupwindNthAnti3A;
+
+ JacPDupwindNthAnti3alpha = PDupwindNthAnti3alpha;
+
+ JacPDupwindNthAnti3At11 = PDupwindNthAnti3At11;
+
+ JacPDupwindNthAnti3At12 = PDupwindNthAnti3At12;
+
+ JacPDupwindNthAnti3At13 = PDupwindNthAnti3At13;
+
+ JacPDupwindNthAnti3At22 = PDupwindNthAnti3At22;
+
+ JacPDupwindNthAnti3At23 = PDupwindNthAnti3At23;
+
+ JacPDupwindNthAnti3At33 = PDupwindNthAnti3At33;
+
+ JacPDupwindNthAnti3B1 = PDupwindNthAnti3B1;
+
+ JacPDupwindNthAnti3B2 = PDupwindNthAnti3B2;
+
+ JacPDupwindNthAnti3B3 = PDupwindNthAnti3B3;
+
+ JacPDupwindNthAnti3beta1 = PDupwindNthAnti3beta1;
+
+ JacPDupwindNthAnti3beta2 = PDupwindNthAnti3beta2;
+
+ JacPDupwindNthAnti3beta3 = PDupwindNthAnti3beta3;
+
+ JacPDupwindNthAnti3gt11 = PDupwindNthAnti3gt11;
+
+ JacPDupwindNthAnti3gt12 = PDupwindNthAnti3gt12;
+
+ JacPDupwindNthAnti3gt13 = PDupwindNthAnti3gt13;
+
+ JacPDupwindNthAnti3gt22 = PDupwindNthAnti3gt22;
+
+ JacPDupwindNthAnti3gt23 = PDupwindNthAnti3gt23;
+
+ JacPDupwindNthAnti3gt33 = PDupwindNthAnti3gt33;
+
+ JacPDupwindNthAnti3phi = PDupwindNthAnti3phi;
+
+ JacPDupwindNthAnti3trK = PDupwindNthAnti3trK;
+
+ JacPDupwindNthAnti3Xt1 = PDupwindNthAnti3Xt1;
+
+ JacPDupwindNthAnti3Xt2 = PDupwindNthAnti3Xt2;
+
+ JacPDupwindNthAnti3Xt3 = PDupwindNthAnti3Xt3;
+
+ JacPDupwindNthSymm3A = PDupwindNthSymm3A;
+
+ JacPDupwindNthSymm3alpha = PDupwindNthSymm3alpha;
+
+ JacPDupwindNthSymm3At11 = PDupwindNthSymm3At11;
+
+ JacPDupwindNthSymm3At12 = PDupwindNthSymm3At12;
+
+ JacPDupwindNthSymm3At13 = PDupwindNthSymm3At13;
+
+ JacPDupwindNthSymm3At22 = PDupwindNthSymm3At22;
+
+ JacPDupwindNthSymm3At23 = PDupwindNthSymm3At23;
+
+ JacPDupwindNthSymm3At33 = PDupwindNthSymm3At33;
+
+ JacPDupwindNthSymm3B1 = PDupwindNthSymm3B1;
+
+ JacPDupwindNthSymm3B2 = PDupwindNthSymm3B2;
+
+ JacPDupwindNthSymm3B3 = PDupwindNthSymm3B3;
+
+ JacPDupwindNthSymm3beta1 = PDupwindNthSymm3beta1;
+
+ JacPDupwindNthSymm3beta2 = PDupwindNthSymm3beta2;
+
+ JacPDupwindNthSymm3beta3 = PDupwindNthSymm3beta3;
+
+ JacPDupwindNthSymm3gt11 = PDupwindNthSymm3gt11;
+
+ JacPDupwindNthSymm3gt12 = PDupwindNthSymm3gt12;
+
+ JacPDupwindNthSymm3gt13 = PDupwindNthSymm3gt13;
+
+ JacPDupwindNthSymm3gt22 = PDupwindNthSymm3gt22;
+
+ JacPDupwindNthSymm3gt23 = PDupwindNthSymm3gt23;
+
+ JacPDupwindNthSymm3gt33 = PDupwindNthSymm3gt33;
+
+ JacPDupwindNthSymm3phi = PDupwindNthSymm3phi;
+
+ JacPDupwindNthSymm3trK = PDupwindNthSymm3trK;
+
+ JacPDupwindNthSymm3Xt1 = PDupwindNthSymm3Xt1;
+
+ JacPDupwindNthSymm3Xt2 = PDupwindNthSymm3Xt2;
+
+ JacPDupwindNthSymm3Xt3 = PDupwindNthSymm3Xt3;
+ }
+
+ phirhsL =
+ kmadd(beta1L,JacPDupwindNthAnti1phi,kmadd(beta2L,JacPDupwindNthAnti2phi,kmadd(beta3L,JacPDupwindNthAnti3phi,kadd(phirhsL,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 =
+ kmadd(beta1L,JacPDupwindNthAnti1Xt1,kmadd(beta2L,JacPDupwindNthAnti2Xt1,kmadd(beta3L,JacPDupwindNthAnti3Xt1,kadd(Xt1rhsL,kmadd(JacPDupwindNthSymm1Xt1,kfabs(beta1L),kmadd(JacPDupwindNthSymm2Xt1,kfabs(beta2L),kmul(JacPDupwindNthSymm3Xt1,kfabs(beta3L))))))));
+
+ Xt2rhsL =
+ kmadd(beta1L,JacPDupwindNthAnti1Xt2,kmadd(beta2L,JacPDupwindNthAnti2Xt2,kmadd(beta3L,JacPDupwindNthAnti3Xt2,kadd(Xt2rhsL,kmadd(JacPDupwindNthSymm1Xt2,kfabs(beta1L),kmadd(JacPDupwindNthSymm2Xt2,kfabs(beta2L),kmul(JacPDupwindNthSymm3Xt2,kfabs(beta3L))))))));
+
+ Xt3rhsL =
+ kmadd(beta1L,JacPDupwindNthAnti1Xt3,kmadd(beta2L,JacPDupwindNthAnti2Xt3,kmadd(beta3L,JacPDupwindNthAnti3Xt3,kadd(Xt3rhsL,kmadd(JacPDupwindNthSymm1Xt3,kfabs(beta1L),kmadd(JacPDupwindNthSymm2Xt3,kfabs(beta2L),kmul(JacPDupwindNthSymm3Xt3,kfabs(beta3L))))))));
+
+ trKrhsL =
+ kmadd(beta1L,JacPDupwindNthAnti1trK,kmadd(beta2L,JacPDupwindNthAnti2trK,kmadd(beta3L,JacPDupwindNthAnti3trK,kadd(trKrhsL,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(kmadd(beta1L,JacPDupwindNthAnti1A,kmadd(beta2L,JacPDupwindNthAnti2A,kmadd(beta3L,JacPDupwindNthAnti3A,kmadd(JacPDupwindNthSymm1A,kfabs(beta1L),kmadd(JacPDupwindNthSymm2A,kfabs(beta2L),kmul(JacPDupwindNthSymm3A,kfabs(beta3L))))))),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 =
+ kadd(B1rhsL,kmadd(kmadd(beta1L,ksub(JacPDupwindNthAnti1B1,JacPDupwindNthAnti1Xt1),kmadd(beta2L,ksub(JacPDupwindNthAnti2B1,JacPDupwindNthAnti2Xt1),kmadd(beta3L,ksub(JacPDupwindNthAnti3B1,JacPDupwindNthAnti3Xt1),kmadd(kfabs(beta1L),ksub(JacPDupwindNthSymm1B1,JacPDupwindNthSymm1Xt1),kmadd(kfabs(beta2L),ksub(JacPDupwindNthSymm2B1,JacPDupwindNthSymm2Xt1),kmul(kfabs(beta3L),ksub(JacPDupwindNthSymm3B1,JacPDupwindNthSymm3Xt1))))))),ToReal(ShiftAdvectionCoeff),kmul(kmadd(beta1L,JacPDupwindNthAnti1Xt1,kmadd(beta2L,JacPDupwindNthAnti2Xt1,kmadd(beta3L,JacPDupwindNthAnti3Xt1,kmadd(JacPDupwindNthSymm1Xt1,kfabs(beta1L),kmadd(JacPDupwindNthSymm2Xt1,kfabs(beta2L),kmul(JacPDupwindNthSymm3Xt1,kfabs(beta3L))))))),ToReal(ShiftBCoeff))));
+
+ B2rhsL =
+ kadd(B2rhsL,kmadd(kmadd(beta1L,ksub(JacPDupwindNthAnti1B2,JacPDupwindNthAnti1Xt2),kmadd(beta2L,ksub(JacPDupwindNthAnti2B2,JacPDupwindNthAnti2Xt2),kmadd(beta3L,ksub(JacPDupwindNthAnti3B2,JacPDupwindNthAnti3Xt2),kmadd(kfabs(beta1L),ksub(JacPDupwindNthSymm1B2,JacPDupwindNthSymm1Xt2),kmadd(kfabs(beta2L),ksub(JacPDupwindNthSymm2B2,JacPDupwindNthSymm2Xt2),kmul(kfabs(beta3L),ksub(JacPDupwindNthSymm3B2,JacPDupwindNthSymm3Xt2))))))),ToReal(ShiftAdvectionCoeff),kmul(kmadd(beta1L,JacPDupwindNthAnti1Xt2,kmadd(beta2L,JacPDupwindNthAnti2Xt2,kmadd(beta3L,JacPDupwindNthAnti3Xt2,kmadd(JacPDupwindNthSymm1Xt2,kfabs(beta1L),kmadd(JacPDupwindNthSymm2Xt2,kfabs(beta2L),kmul(JacPDupwindNthSymm3Xt2,kfabs(beta3L))))))),ToReal(ShiftBCoeff))));
+
+ B3rhsL =
+ kadd(B3rhsL,kmadd(kmadd(beta1L,ksub(JacPDupwindNthAnti1B3,JacPDupwindNthAnti1Xt3),kmadd(beta2L,ksub(JacPDupwindNthAnti2B3,JacPDupwindNthAnti2Xt3),kmadd(beta3L,ksub(JacPDupwindNthAnti3B3,JacPDupwindNthAnti3Xt3),kmadd(kfabs(beta1L),ksub(JacPDupwindNthSymm1B3,JacPDupwindNthSymm1Xt3),kmadd(kfabs(beta2L),ksub(JacPDupwindNthSymm2B3,JacPDupwindNthSymm2Xt3),kmul(kfabs(beta3L),ksub(JacPDupwindNthSymm3B3,JacPDupwindNthSymm3Xt3))))))),ToReal(ShiftAdvectionCoeff),kmul(kmadd(beta1L,JacPDupwindNthAnti1Xt3,kmadd(beta2L,JacPDupwindNthAnti2Xt3,kmadd(beta3L,JacPDupwindNthAnti3Xt3,kmadd(JacPDupwindNthSymm1Xt3,kfabs(beta1L),kmadd(JacPDupwindNthSymm2Xt3,kfabs(beta2L),kmul(JacPDupwindNthSymm3Xt3,kfabs(beta3L))))))),ToReal(ShiftBCoeff))));
+
+ /* 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(Arhs[index],ArhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At11rhs[index],At11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At12rhs[index],At12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At13rhs[index],At13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At22rhs[index],At22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At23rhs[index],At23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At33rhs[index],At33rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B1rhs[index],B1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B2rhs[index],B2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt12rhs[index],gt12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt13rhs[index],gt13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt22rhs[index],gt22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt23rhs[index],gt23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt33rhs[index],gt33rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(phirhs[index],phirhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(trKrhs[index],trKrhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt1rhs[index],Xt1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt2rhs[index],Xt2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt3rhs[index],Xt3rhsL,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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_hi(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_hi(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_hi(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_hi(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_hi(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_hi(At33rhs[index],At33rhsL,elt_count);
+ vec_store_nta_partial_hi(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_hi(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_hi(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_hi(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_hi(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_hi(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_hi(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_hi(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_hi(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_hi(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_hi(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt3rhs[index],Xt3rhsL,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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_lo(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_lo(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_lo(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_lo(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_lo(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_lo(At33rhs[index],At33rhsL,elt_count);
+ vec_store_nta_partial_lo(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_lo(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_lo(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_lo(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_lo(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_lo(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_lo(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_lo(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_lo(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_lo(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_lo(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt3rhs[index],Xt3rhsL,elt_count);
+ break;
+ }
+ vec_store_nta(alpharhs[index],alpharhsL);
+ vec_store_nta(Arhs[index],ArhsL);
+ vec_store_nta(At11rhs[index],At11rhsL);
+ vec_store_nta(At12rhs[index],At12rhsL);
+ vec_store_nta(At13rhs[index],At13rhsL);
+ vec_store_nta(At22rhs[index],At22rhsL);
+ vec_store_nta(At23rhs[index],At23rhsL);
+ vec_store_nta(At33rhs[index],At33rhsL);
+ vec_store_nta(B1rhs[index],B1rhsL);
+ vec_store_nta(B2rhs[index],B2rhsL);
+ vec_store_nta(B3rhs[index],B3rhsL);
+ vec_store_nta(beta1rhs[index],beta1rhsL);
+ vec_store_nta(beta2rhs[index],beta2rhsL);
+ vec_store_nta(beta3rhs[index],beta3rhsL);
+ vec_store_nta(gt11rhs[index],gt11rhsL);
+ vec_store_nta(gt12rhs[index],gt12rhsL);
+ vec_store_nta(gt13rhs[index],gt13rhsL);
+ vec_store_nta(gt22rhs[index],gt22rhsL);
+ vec_store_nta(gt23rhs[index],gt23rhsL);
+ vec_store_nta(gt33rhs[index],gt33rhsL);
+ vec_store_nta(phirhs[index],phirhsL);
+ vec_store_nta(trKrhs[index],trKrhsL);
+ vec_store_nta(Xt1rhs[index],Xt1rhsL);
+ vec_store_nta(Xt2rhs[index],Xt2rhsL);
+ vec_store_nta(Xt3rhs[index],Xt3rhsL);
}
- LC_ENDLOOP3 (ML_BSSN_O8_Advect);
+ LC_ENDLOOP3VEC (ML_BSSN_O8_Advect);
}
extern "C" void ML_BSSN_O8_Advect(CCTK_ARGUMENTS)
@@ -527,5 +2193,43 @@ extern "C" void ML_BSSN_O8_Advect(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O8_Advect_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_O8_Advect_calc_every != ML_BSSN_O8_Advect_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN_O8::ML_curv","ML_BSSN_O8::ML_curvrhs","ML_BSSN_O8::ML_dtlapse","ML_BSSN_O8::ML_dtlapserhs","ML_BSSN_O8::ML_dtshift","ML_BSSN_O8::ML_dtshiftrhs","ML_BSSN_O8::ML_Gamma","ML_BSSN_O8::ML_Gammarhs","ML_BSSN_O8::ML_lapse","ML_BSSN_O8::ML_lapserhs","ML_BSSN_O8::ML_log_confac","ML_BSSN_O8::ML_log_confacrhs","ML_BSSN_O8::ML_metric","ML_BSSN_O8::ML_metricrhs","ML_BSSN_O8::ML_shift","ML_BSSN_O8::ML_shiftrhs","ML_BSSN_O8::ML_trace_curv","ML_BSSN_O8::ML_trace_curvrhs"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O8_Advect", 18, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O8_Advect", 2, 2, 2);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O8_Advect", 3, 3, 3);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O8_Advect", 4, 4, 4);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O8_Advect", 5, 5, 5);
+ break;
+ }
+
GenericFD_LoopOverInterior(cctkGH, &ML_BSSN_O8_Advect_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_O8_Advect_Body");
+ }
}
diff --git a/ML_BSSN_O8/src/ML_BSSN_O8_Dissipation.cc b/ML_BSSN_O8/src/ML_BSSN_O8_Dissipation.cc
index 5c58530..402faa8 100644
--- a/ML_BSSN_O8/src/ML_BSSN_O8_Dissipation.cc
+++ b/ML_BSSN_O8/src/ML_BSSN_O8_Dissipation.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_O8_Dissipation_SelectBCs(CCTK_ARGUMENTS)
{
@@ -57,7 +58,7 @@ extern "C" void ML_BSSN_O8_Dissipation_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_BSSN_O8_Dissipation_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_O8_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;
@@ -65,21 +66,6 @@ static void ML_BSSN_O8_Dissipation_Body(cGH const * restrict const cctkGH, int c
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O8_Dissipation_Body");
- }
-
- if (cctk_iteration % ML_BSSN_O8_Dissipation_calc_every != ML_BSSN_O8_Dissipation_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN_O8::ML_curv","ML_BSSN_O8::ML_curvrhs","ML_BSSN_O8::ML_dtlapse","ML_BSSN_O8::ML_dtlapserhs","ML_BSSN_O8::ML_dtshift","ML_BSSN_O8::ML_dtshiftrhs","ML_BSSN_O8::ML_Gamma","ML_BSSN_O8::ML_Gammarhs","ML_BSSN_O8::ML_lapse","ML_BSSN_O8::ML_lapserhs","ML_BSSN_O8::ML_log_confac","ML_BSSN_O8::ML_log_confacrhs","ML_BSSN_O8::ML_metric","ML_BSSN_O8::ML_metricrhs","ML_BSSN_O8::ML_shift","ML_BSSN_O8::ML_shiftrhs","ML_BSSN_O8::ML_trace_curv","ML_BSSN_O8::ML_trace_curvrhs"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O8_Dissipation", 18, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O8_Dissipation", 5, 5, 5);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -89,304 +75,1292 @@ static void ML_BSSN_O8_Dissipation_Body(cGH const * restrict const cctkGH, int c
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o1024dx = 0.0009765625*INV(dx);
- CCTK_REAL const p1o1024dy = 0.0009765625*INV(dy);
- CCTK_REAL const p1o1024dz = 0.0009765625*INV(dz);
- CCTK_REAL const p1o1680dx = 0.000595238095238095238095238095238*INV(dx);
- CCTK_REAL const p1o1680dy = 0.000595238095238095238095238095238*INV(dy);
- CCTK_REAL const p1o1680dz = 0.000595238095238095238095238095238*INV(dz);
- CCTK_REAL const p1o5040dx2 = 0.000198412698412698412698412698413*INV(SQR(dx));
- CCTK_REAL const p1o5040dy2 = 0.000198412698412698412698412698413*INV(SQR(dy));
- CCTK_REAL const p1o5040dz2 = 0.000198412698412698412698412698413*INV(SQR(dz));
- CCTK_REAL const p1o560dx = 0.00178571428571428571428571428571*INV(dx);
- CCTK_REAL const p1o560dy = 0.00178571428571428571428571428571*INV(dy);
- CCTK_REAL const p1o560dz = 0.00178571428571428571428571428571*INV(dz);
- CCTK_REAL const p1o705600dxdy = 1.41723356009070294784580498866e-6*INV(dx)*INV(dy);
- CCTK_REAL const p1o705600dxdz = 1.41723356009070294784580498866e-6*INV(dx)*INV(dz);
- CCTK_REAL const p1o705600dydz = 1.41723356009070294784580498866e-6*INV(dy)*INV(dz);
- CCTK_REAL const p1o840dx = 0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const p1o840dy = 0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const p1o840dz = 0.00119047619047619047619047619048*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o840dx = -0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const pm1o840dy = -0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const pm1o840dz = -0.00119047619047619047619047619048*INV(dz);
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_O8_Dissipation,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_O8_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 AL = A[index];
- CCTK_REAL alphaL = alpha[index];
- CCTK_REAL alpharhsL = alpharhs[index];
- CCTK_REAL ArhsL = Arhs[index];
- CCTK_REAL At11L = At11[index];
- CCTK_REAL At11rhsL = At11rhs[index];
- CCTK_REAL At12L = At12[index];
- CCTK_REAL At12rhsL = At12rhs[index];
- CCTK_REAL At13L = At13[index];
- CCTK_REAL At13rhsL = At13rhs[index];
- CCTK_REAL At22L = At22[index];
- CCTK_REAL At22rhsL = At22rhs[index];
- CCTK_REAL At23L = At23[index];
- CCTK_REAL At23rhsL = At23rhs[index];
- CCTK_REAL At33L = At33[index];
- CCTK_REAL At33rhsL = At33rhs[index];
- CCTK_REAL B1L = B1[index];
- CCTK_REAL B1rhsL = B1rhs[index];
- CCTK_REAL B2L = B2[index];
- CCTK_REAL B2rhsL = B2rhs[index];
- CCTK_REAL B3L = B3[index];
- CCTK_REAL B3rhsL = B3rhs[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta1rhsL = beta1rhs[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta2rhsL = beta2rhs[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL beta3rhsL = beta3rhs[index];
- CCTK_REAL gt11L = gt11[index];
- CCTK_REAL gt11rhsL = gt11rhs[index];
- CCTK_REAL gt12L = gt12[index];
- CCTK_REAL gt12rhsL = gt12rhs[index];
- CCTK_REAL gt13L = gt13[index];
- CCTK_REAL gt13rhsL = gt13rhs[index];
- CCTK_REAL gt22L = gt22[index];
- CCTK_REAL gt22rhsL = gt22rhs[index];
- CCTK_REAL gt23L = gt23[index];
- CCTK_REAL gt23rhsL = gt23rhs[index];
- CCTK_REAL gt33L = gt33[index];
- CCTK_REAL gt33rhsL = gt33rhs[index];
- CCTK_REAL phiL = phi[index];
- CCTK_REAL phirhsL = phirhs[index];
- CCTK_REAL trKL = trK[index];
- CCTK_REAL trKrhsL = trKrhs[index];
- CCTK_REAL Xt1L = Xt1[index];
- CCTK_REAL Xt1rhsL = Xt1rhs[index];
- CCTK_REAL Xt2L = Xt2[index];
- CCTK_REAL Xt2rhsL = Xt2rhs[index];
- CCTK_REAL Xt3L = Xt3[index];
- CCTK_REAL Xt3rhsL = Xt3rhs[index];
+ CCTK_REAL_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 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 const PDdissipationNth1A = PDdissipationNth1(&A[index]);
- CCTK_REAL const PDdissipationNth2A = PDdissipationNth2(&A[index]);
- CCTK_REAL const PDdissipationNth3A = PDdissipationNth3(&A[index]);
- CCTK_REAL const PDdissipationNth1alpha = PDdissipationNth1(&alpha[index]);
- CCTK_REAL const PDdissipationNth2alpha = PDdissipationNth2(&alpha[index]);
- CCTK_REAL const PDdissipationNth3alpha = PDdissipationNth3(&alpha[index]);
- CCTK_REAL const PDdissipationNth1At11 = PDdissipationNth1(&At11[index]);
- CCTK_REAL const PDdissipationNth2At11 = PDdissipationNth2(&At11[index]);
- CCTK_REAL const PDdissipationNth3At11 = PDdissipationNth3(&At11[index]);
- CCTK_REAL const PDdissipationNth1At12 = PDdissipationNth1(&At12[index]);
- CCTK_REAL const PDdissipationNth2At12 = PDdissipationNth2(&At12[index]);
- CCTK_REAL const PDdissipationNth3At12 = PDdissipationNth3(&At12[index]);
- CCTK_REAL const PDdissipationNth1At13 = PDdissipationNth1(&At13[index]);
- CCTK_REAL const PDdissipationNth2At13 = PDdissipationNth2(&At13[index]);
- CCTK_REAL const PDdissipationNth3At13 = PDdissipationNth3(&At13[index]);
- CCTK_REAL const PDdissipationNth1At22 = PDdissipationNth1(&At22[index]);
- CCTK_REAL const PDdissipationNth2At22 = PDdissipationNth2(&At22[index]);
- CCTK_REAL const PDdissipationNth3At22 = PDdissipationNth3(&At22[index]);
- CCTK_REAL const PDdissipationNth1At23 = PDdissipationNth1(&At23[index]);
- CCTK_REAL const PDdissipationNth2At23 = PDdissipationNth2(&At23[index]);
- CCTK_REAL const PDdissipationNth3At23 = PDdissipationNth3(&At23[index]);
- CCTK_REAL const PDdissipationNth1At33 = PDdissipationNth1(&At33[index]);
- CCTK_REAL const PDdissipationNth2At33 = PDdissipationNth2(&At33[index]);
- CCTK_REAL const PDdissipationNth3At33 = PDdissipationNth3(&At33[index]);
- CCTK_REAL const PDdissipationNth1B1 = PDdissipationNth1(&B1[index]);
- CCTK_REAL const PDdissipationNth2B1 = PDdissipationNth2(&B1[index]);
- CCTK_REAL const PDdissipationNth3B1 = PDdissipationNth3(&B1[index]);
- CCTK_REAL const PDdissipationNth1B2 = PDdissipationNth1(&B2[index]);
- CCTK_REAL const PDdissipationNth2B2 = PDdissipationNth2(&B2[index]);
- CCTK_REAL const PDdissipationNth3B2 = PDdissipationNth3(&B2[index]);
- CCTK_REAL const PDdissipationNth1B3 = PDdissipationNth1(&B3[index]);
- CCTK_REAL const PDdissipationNth2B3 = PDdissipationNth2(&B3[index]);
- CCTK_REAL const PDdissipationNth3B3 = PDdissipationNth3(&B3[index]);
- CCTK_REAL const PDdissipationNth1beta1 = PDdissipationNth1(&beta1[index]);
- CCTK_REAL const PDdissipationNth2beta1 = PDdissipationNth2(&beta1[index]);
- CCTK_REAL const PDdissipationNth3beta1 = PDdissipationNth3(&beta1[index]);
- CCTK_REAL const PDdissipationNth1beta2 = PDdissipationNth1(&beta2[index]);
- CCTK_REAL const PDdissipationNth2beta2 = PDdissipationNth2(&beta2[index]);
- CCTK_REAL const PDdissipationNth3beta2 = PDdissipationNth3(&beta2[index]);
- CCTK_REAL const PDdissipationNth1beta3 = PDdissipationNth1(&beta3[index]);
- CCTK_REAL const PDdissipationNth2beta3 = PDdissipationNth2(&beta3[index]);
- CCTK_REAL const PDdissipationNth3beta3 = PDdissipationNth3(&beta3[index]);
- CCTK_REAL const PDdissipationNth1gt11 = PDdissipationNth1(&gt11[index]);
- CCTK_REAL const PDdissipationNth2gt11 = PDdissipationNth2(&gt11[index]);
- CCTK_REAL const PDdissipationNth3gt11 = PDdissipationNth3(&gt11[index]);
- CCTK_REAL const PDdissipationNth1gt12 = PDdissipationNth1(&gt12[index]);
- CCTK_REAL const PDdissipationNth2gt12 = PDdissipationNth2(&gt12[index]);
- CCTK_REAL const PDdissipationNth3gt12 = PDdissipationNth3(&gt12[index]);
- CCTK_REAL const PDdissipationNth1gt13 = PDdissipationNth1(&gt13[index]);
- CCTK_REAL const PDdissipationNth2gt13 = PDdissipationNth2(&gt13[index]);
- CCTK_REAL const PDdissipationNth3gt13 = PDdissipationNth3(&gt13[index]);
- CCTK_REAL const PDdissipationNth1gt22 = PDdissipationNth1(&gt22[index]);
- CCTK_REAL const PDdissipationNth2gt22 = PDdissipationNth2(&gt22[index]);
- CCTK_REAL const PDdissipationNth3gt22 = PDdissipationNth3(&gt22[index]);
- CCTK_REAL const PDdissipationNth1gt23 = PDdissipationNth1(&gt23[index]);
- CCTK_REAL const PDdissipationNth2gt23 = PDdissipationNth2(&gt23[index]);
- CCTK_REAL const PDdissipationNth3gt23 = PDdissipationNth3(&gt23[index]);
- CCTK_REAL const PDdissipationNth1gt33 = PDdissipationNth1(&gt33[index]);
- CCTK_REAL const PDdissipationNth2gt33 = PDdissipationNth2(&gt33[index]);
- CCTK_REAL const PDdissipationNth3gt33 = PDdissipationNth3(&gt33[index]);
- CCTK_REAL const PDdissipationNth1phi = PDdissipationNth1(&phi[index]);
- CCTK_REAL const PDdissipationNth2phi = PDdissipationNth2(&phi[index]);
- CCTK_REAL const PDdissipationNth3phi = PDdissipationNth3(&phi[index]);
- CCTK_REAL const PDdissipationNth1trK = PDdissipationNth1(&trK[index]);
- CCTK_REAL const PDdissipationNth2trK = PDdissipationNth2(&trK[index]);
- CCTK_REAL const PDdissipationNth3trK = PDdissipationNth3(&trK[index]);
- CCTK_REAL const PDdissipationNth1Xt1 = PDdissipationNth1(&Xt1[index]);
- CCTK_REAL const PDdissipationNth2Xt1 = PDdissipationNth2(&Xt1[index]);
- CCTK_REAL const PDdissipationNth3Xt1 = PDdissipationNth3(&Xt1[index]);
- CCTK_REAL const PDdissipationNth1Xt2 = PDdissipationNth1(&Xt2[index]);
- CCTK_REAL const PDdissipationNth2Xt2 = PDdissipationNth2(&Xt2[index]);
- CCTK_REAL const PDdissipationNth3Xt2 = PDdissipationNth3(&Xt2[index]);
- CCTK_REAL const PDdissipationNth1Xt3 = PDdissipationNth1(&Xt3[index]);
- CCTK_REAL const PDdissipationNth2Xt3 = PDdissipationNth2(&Xt3[index]);
- CCTK_REAL const PDdissipationNth3Xt3 = PDdissipationNth3(&Xt3[index]);
+ 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 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]);
+ 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]);
+ 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]);
+ 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]);
+ 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 epsdiss1 = ToReal(EpsDiss);
+ 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 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 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 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)));
+
+ 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)));
+
+ 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)));
+
+ 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;
+
+ JacPDdissipationNth1trK = PDdissipationNth1trK;
+
+ JacPDdissipationNth1Xt1 = PDdissipationNth1Xt1;
+
+ JacPDdissipationNth1Xt2 = PDdissipationNth1Xt2;
+
+ JacPDdissipationNth1Xt3 = PDdissipationNth1Xt3;
+
+ JacPDdissipationNth2A = PDdissipationNth2A;
+
+ JacPDdissipationNth2alpha = PDdissipationNth2alpha;
+
+ JacPDdissipationNth2At11 = PDdissipationNth2At11;
+
+ JacPDdissipationNth2At12 = PDdissipationNth2At12;
+
+ JacPDdissipationNth2At13 = PDdissipationNth2At13;
+
+ JacPDdissipationNth2At22 = PDdissipationNth2At22;
+
+ JacPDdissipationNth2At23 = PDdissipationNth2At23;
+
+ JacPDdissipationNth2At33 = PDdissipationNth2At33;
+
+ JacPDdissipationNth2B1 = PDdissipationNth2B1;
+
+ JacPDdissipationNth2B2 = PDdissipationNth2B2;
+
+ JacPDdissipationNth2B3 = PDdissipationNth2B3;
+
+ JacPDdissipationNth2beta1 = PDdissipationNth2beta1;
+
+ JacPDdissipationNth2beta2 = PDdissipationNth2beta2;
+
+ JacPDdissipationNth2beta3 = PDdissipationNth2beta3;
+
+ JacPDdissipationNth2gt11 = PDdissipationNth2gt11;
+
+ JacPDdissipationNth2gt12 = PDdissipationNth2gt12;
+
+ JacPDdissipationNth2gt13 = PDdissipationNth2gt13;
+
+ JacPDdissipationNth2gt22 = PDdissipationNth2gt22;
+
+ JacPDdissipationNth2gt23 = PDdissipationNth2gt23;
+
+ JacPDdissipationNth2gt33 = PDdissipationNth2gt33;
+
+ JacPDdissipationNth2phi = PDdissipationNth2phi;
+
+ JacPDdissipationNth2trK = PDdissipationNth2trK;
+
+ JacPDdissipationNth2Xt1 = PDdissipationNth2Xt1;
+
+ JacPDdissipationNth2Xt2 = PDdissipationNth2Xt2;
+
+ JacPDdissipationNth2Xt3 = PDdissipationNth2Xt3;
+
+ JacPDdissipationNth3A = PDdissipationNth3A;
+
+ JacPDdissipationNth3alpha = PDdissipationNth3alpha;
+
+ JacPDdissipationNth3At11 = PDdissipationNth3At11;
+
+ JacPDdissipationNth3At12 = PDdissipationNth3At12;
+
+ JacPDdissipationNth3At13 = PDdissipationNth3At13;
+
+ JacPDdissipationNth3At22 = PDdissipationNth3At22;
+
+ JacPDdissipationNth3At23 = PDdissipationNth3At23;
+
+ JacPDdissipationNth3At33 = PDdissipationNth3At33;
+
+ JacPDdissipationNth3B1 = PDdissipationNth3B1;
+
+ JacPDdissipationNth3B2 = PDdissipationNth3B2;
+
+ JacPDdissipationNth3B3 = PDdissipationNth3B3;
+
+ JacPDdissipationNth3beta1 = PDdissipationNth3beta1;
+
+ JacPDdissipationNth3beta2 = PDdissipationNth3beta2;
+
+ JacPDdissipationNth3beta3 = PDdissipationNth3beta3;
+
+ JacPDdissipationNth3gt11 = PDdissipationNth3gt11;
+
+ JacPDdissipationNth3gt12 = PDdissipationNth3gt12;
+
+ JacPDdissipationNth3gt13 = PDdissipationNth3gt13;
+
+ JacPDdissipationNth3gt22 = PDdissipationNth3gt22;
+
+ JacPDdissipationNth3gt23 = PDdissipationNth3gt23;
+
+ JacPDdissipationNth3gt33 = PDdissipationNth3gt33;
+
+ JacPDdissipationNth3phi = PDdissipationNth3phi;
+
+ JacPDdissipationNth3trK = PDdissipationNth3trK;
+
+ JacPDdissipationNth3Xt1 = PDdissipationNth3Xt1;
+
+ JacPDdissipationNth3Xt2 = PDdissipationNth3Xt2;
+
+ JacPDdissipationNth3Xt3 = PDdissipationNth3Xt3;
+ }
- CCTK_REAL epsdiss2 = ToReal(EpsDiss);
+ CCTK_REAL_VEC epsdiss1 = ToReal(EpsDiss);
- CCTK_REAL epsdiss3 = ToReal(EpsDiss);
+ CCTK_REAL_VEC epsdiss2 = ToReal(EpsDiss);
- phirhsL = epsdiss1*PDdissipationNth1phi +
- epsdiss2*PDdissipationNth2phi + epsdiss3*PDdissipationNth3phi +
- phirhsL;
+ CCTK_REAL_VEC epsdiss3 = ToReal(EpsDiss);
- gt11rhsL = gt11rhsL + epsdiss1*PDdissipationNth1gt11 +
- epsdiss2*PDdissipationNth2gt11 + epsdiss3*PDdissipationNth3gt11;
+ phirhsL =
+ kmadd(epsdiss1,JacPDdissipationNth1phi,kmadd(epsdiss2,JacPDdissipationNth2phi,kmadd(epsdiss3,JacPDdissipationNth3phi,phirhsL)));
- gt12rhsL = gt12rhsL + epsdiss1*PDdissipationNth1gt12 +
- epsdiss2*PDdissipationNth2gt12 + epsdiss3*PDdissipationNth3gt12;
+ gt11rhsL =
+ kadd(gt11rhsL,kmadd(epsdiss1,JacPDdissipationNth1gt11,kmadd(epsdiss2,JacPDdissipationNth2gt11,kmul(epsdiss3,JacPDdissipationNth3gt11))));
- gt13rhsL = gt13rhsL + epsdiss1*PDdissipationNth1gt13 +
- epsdiss2*PDdissipationNth2gt13 + epsdiss3*PDdissipationNth3gt13;
+ gt12rhsL =
+ kadd(gt12rhsL,kmadd(epsdiss1,JacPDdissipationNth1gt12,kmadd(epsdiss2,JacPDdissipationNth2gt12,kmul(epsdiss3,JacPDdissipationNth3gt12))));
- gt22rhsL = gt22rhsL + epsdiss1*PDdissipationNth1gt22 +
- epsdiss2*PDdissipationNth2gt22 + epsdiss3*PDdissipationNth3gt22;
+ gt13rhsL =
+ kadd(gt13rhsL,kmadd(epsdiss1,JacPDdissipationNth1gt13,kmadd(epsdiss2,JacPDdissipationNth2gt13,kmul(epsdiss3,JacPDdissipationNth3gt13))));
- gt23rhsL = gt23rhsL + epsdiss1*PDdissipationNth1gt23 +
- epsdiss2*PDdissipationNth2gt23 + epsdiss3*PDdissipationNth3gt23;
+ gt22rhsL =
+ kadd(gt22rhsL,kmadd(epsdiss1,JacPDdissipationNth1gt22,kmadd(epsdiss2,JacPDdissipationNth2gt22,kmul(epsdiss3,JacPDdissipationNth3gt22))));
- gt33rhsL = gt33rhsL + epsdiss1*PDdissipationNth1gt33 +
- epsdiss2*PDdissipationNth2gt33 + epsdiss3*PDdissipationNth3gt33;
+ gt23rhsL =
+ kadd(gt23rhsL,kmadd(epsdiss1,JacPDdissipationNth1gt23,kmadd(epsdiss2,JacPDdissipationNth2gt23,kmul(epsdiss3,JacPDdissipationNth3gt23))));
- Xt1rhsL = epsdiss1*PDdissipationNth1Xt1 +
- epsdiss2*PDdissipationNth2Xt1 + epsdiss3*PDdissipationNth3Xt1 +
- Xt1rhsL;
+ gt33rhsL =
+ kadd(gt33rhsL,kmadd(epsdiss1,JacPDdissipationNth1gt33,kmadd(epsdiss2,JacPDdissipationNth2gt33,kmul(epsdiss3,JacPDdissipationNth3gt33))));
- Xt2rhsL = epsdiss1*PDdissipationNth1Xt2 +
- epsdiss2*PDdissipationNth2Xt2 + epsdiss3*PDdissipationNth3Xt2 +
- Xt2rhsL;
+ Xt1rhsL =
+ kmadd(epsdiss1,JacPDdissipationNth1Xt1,kmadd(epsdiss2,JacPDdissipationNth2Xt1,kmadd(epsdiss3,JacPDdissipationNth3Xt1,Xt1rhsL)));
- Xt3rhsL = epsdiss1*PDdissipationNth1Xt3 +
- epsdiss2*PDdissipationNth2Xt3 + epsdiss3*PDdissipationNth3Xt3 +
- Xt3rhsL;
+ Xt2rhsL =
+ kmadd(epsdiss1,JacPDdissipationNth1Xt2,kmadd(epsdiss2,JacPDdissipationNth2Xt2,kmadd(epsdiss3,JacPDdissipationNth3Xt2,Xt2rhsL)));
- trKrhsL = epsdiss1*PDdissipationNth1trK +
- epsdiss2*PDdissipationNth2trK + epsdiss3*PDdissipationNth3trK +
- trKrhsL;
+ Xt3rhsL =
+ kmadd(epsdiss1,JacPDdissipationNth1Xt3,kmadd(epsdiss2,JacPDdissipationNth2Xt3,kmadd(epsdiss3,JacPDdissipationNth3Xt3,Xt3rhsL)));
- At11rhsL = At11rhsL + epsdiss1*PDdissipationNth1At11 +
- epsdiss2*PDdissipationNth2At11 + epsdiss3*PDdissipationNth3At11;
+ trKrhsL =
+ kmadd(epsdiss1,JacPDdissipationNth1trK,kmadd(epsdiss2,JacPDdissipationNth2trK,kmadd(epsdiss3,JacPDdissipationNth3trK,trKrhsL)));
- At12rhsL = At12rhsL + epsdiss1*PDdissipationNth1At12 +
- epsdiss2*PDdissipationNth2At12 + epsdiss3*PDdissipationNth3At12;
+ At11rhsL =
+ kadd(At11rhsL,kmadd(epsdiss1,JacPDdissipationNth1At11,kmadd(epsdiss2,JacPDdissipationNth2At11,kmul(epsdiss3,JacPDdissipationNth3At11))));
- At13rhsL = At13rhsL + epsdiss1*PDdissipationNth1At13 +
- epsdiss2*PDdissipationNth2At13 + epsdiss3*PDdissipationNth3At13;
+ At12rhsL =
+ kadd(At12rhsL,kmadd(epsdiss1,JacPDdissipationNth1At12,kmadd(epsdiss2,JacPDdissipationNth2At12,kmul(epsdiss3,JacPDdissipationNth3At12))));
- At22rhsL = At22rhsL + epsdiss1*PDdissipationNth1At22 +
- epsdiss2*PDdissipationNth2At22 + epsdiss3*PDdissipationNth3At22;
+ At13rhsL =
+ kadd(At13rhsL,kmadd(epsdiss1,JacPDdissipationNth1At13,kmadd(epsdiss2,JacPDdissipationNth2At13,kmul(epsdiss3,JacPDdissipationNth3At13))));
- At23rhsL = At23rhsL + epsdiss1*PDdissipationNth1At23 +
- epsdiss2*PDdissipationNth2At23 + epsdiss3*PDdissipationNth3At23;
+ At22rhsL =
+ kadd(At22rhsL,kmadd(epsdiss1,JacPDdissipationNth1At22,kmadd(epsdiss2,JacPDdissipationNth2At22,kmul(epsdiss3,JacPDdissipationNth3At22))));
- At33rhsL = At33rhsL + epsdiss1*PDdissipationNth1At33 +
- epsdiss2*PDdissipationNth2At33 + epsdiss3*PDdissipationNth3At33;
+ At23rhsL =
+ kadd(At23rhsL,kmadd(epsdiss1,JacPDdissipationNth1At23,kmadd(epsdiss2,JacPDdissipationNth2At23,kmul(epsdiss3,JacPDdissipationNth3At23))));
- alpharhsL = alpharhsL + epsdiss1*PDdissipationNth1alpha +
- epsdiss2*PDdissipationNth2alpha + epsdiss3*PDdissipationNth3alpha;
+ At33rhsL =
+ kadd(At33rhsL,kmadd(epsdiss1,JacPDdissipationNth1At33,kmadd(epsdiss2,JacPDdissipationNth2At33,kmul(epsdiss3,JacPDdissipationNth3At33))));
- ArhsL = ArhsL + epsdiss1*PDdissipationNth1A +
- epsdiss2*PDdissipationNth2A + epsdiss3*PDdissipationNth3A;
+ alpharhsL =
+ kadd(alpharhsL,kmadd(epsdiss1,JacPDdissipationNth1alpha,kmadd(epsdiss2,JacPDdissipationNth2alpha,kmul(epsdiss3,JacPDdissipationNth3alpha))));
- beta1rhsL = beta1rhsL + epsdiss1*PDdissipationNth1beta1 +
- epsdiss2*PDdissipationNth2beta1 + epsdiss3*PDdissipationNth3beta1;
+ ArhsL =
+ kadd(ArhsL,kmadd(epsdiss1,JacPDdissipationNth1A,kmadd(epsdiss2,JacPDdissipationNth2A,kmul(epsdiss3,JacPDdissipationNth3A))));
- beta2rhsL = beta2rhsL + epsdiss1*PDdissipationNth1beta2 +
- epsdiss2*PDdissipationNth2beta2 + epsdiss3*PDdissipationNth3beta2;
+ beta1rhsL =
+ kadd(beta1rhsL,kmadd(epsdiss1,JacPDdissipationNth1beta1,kmadd(epsdiss2,JacPDdissipationNth2beta1,kmul(epsdiss3,JacPDdissipationNth3beta1))));
- beta3rhsL = beta3rhsL + epsdiss1*PDdissipationNth1beta3 +
- epsdiss2*PDdissipationNth2beta3 + epsdiss3*PDdissipationNth3beta3;
+ beta2rhsL =
+ kadd(beta2rhsL,kmadd(epsdiss1,JacPDdissipationNth1beta2,kmadd(epsdiss2,JacPDdissipationNth2beta2,kmul(epsdiss3,JacPDdissipationNth3beta2))));
- B1rhsL = B1rhsL + epsdiss1*PDdissipationNth1B1 +
- epsdiss2*PDdissipationNth2B1 + epsdiss3*PDdissipationNth3B1;
+ beta3rhsL =
+ kadd(beta3rhsL,kmadd(epsdiss1,JacPDdissipationNth1beta3,kmadd(epsdiss2,JacPDdissipationNth2beta3,kmul(epsdiss3,JacPDdissipationNth3beta3))));
- B2rhsL = B2rhsL + epsdiss1*PDdissipationNth1B2 +
- epsdiss2*PDdissipationNth2B2 + epsdiss3*PDdissipationNth3B2;
+ B1rhsL =
+ kadd(B1rhsL,kmadd(epsdiss1,JacPDdissipationNth1B1,kmadd(epsdiss2,JacPDdissipationNth2B1,kmul(epsdiss3,JacPDdissipationNth3B1))));
- B3rhsL = B3rhsL + epsdiss1*PDdissipationNth1B3 +
- epsdiss2*PDdissipationNth2B3 + epsdiss3*PDdissipationNth3B3;
+ B2rhsL =
+ kadd(B2rhsL,kmadd(epsdiss1,JacPDdissipationNth1B2,kmadd(epsdiss2,JacPDdissipationNth2B2,kmul(epsdiss3,JacPDdissipationNth3B2))));
- /* Copy local copies back to grid functions */
- alpharhs[index] = alpharhsL;
- Arhs[index] = ArhsL;
- At11rhs[index] = At11rhsL;
- At12rhs[index] = At12rhsL;
- At13rhs[index] = At13rhsL;
- At22rhs[index] = At22rhsL;
- At23rhs[index] = At23rhsL;
- At33rhs[index] = At33rhsL;
- B1rhs[index] = B1rhsL;
- B2rhs[index] = B2rhsL;
- B3rhs[index] = B3rhsL;
- beta1rhs[index] = beta1rhsL;
- beta2rhs[index] = beta2rhsL;
- beta3rhs[index] = beta3rhsL;
- gt11rhs[index] = gt11rhsL;
- gt12rhs[index] = gt12rhsL;
- gt13rhs[index] = gt13rhsL;
- gt22rhs[index] = gt22rhsL;
- gt23rhs[index] = gt23rhsL;
- gt33rhs[index] = gt33rhsL;
- phirhs[index] = phirhsL;
- trKrhs[index] = trKrhsL;
- Xt1rhs[index] = Xt1rhsL;
- Xt2rhs[index] = Xt2rhsL;
- Xt3rhs[index] = Xt3rhsL;
+ B3rhsL =
+ kadd(B3rhsL,kmadd(epsdiss1,JacPDdissipationNth1B3,kmadd(epsdiss2,JacPDdissipationNth2B3,kmul(epsdiss3,JacPDdissipationNth3B3))));
+
+ /* 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(Arhs[index],ArhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At11rhs[index],At11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At12rhs[index],At12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At13rhs[index],At13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At22rhs[index],At22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At23rhs[index],At23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At33rhs[index],At33rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B1rhs[index],B1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B2rhs[index],B2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt12rhs[index],gt12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt13rhs[index],gt13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt22rhs[index],gt22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt23rhs[index],gt23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt33rhs[index],gt33rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(phirhs[index],phirhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(trKrhs[index],trKrhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt1rhs[index],Xt1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt2rhs[index],Xt2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt3rhs[index],Xt3rhsL,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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_hi(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_hi(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_hi(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_hi(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_hi(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_hi(At33rhs[index],At33rhsL,elt_count);
+ vec_store_nta_partial_hi(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_hi(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_hi(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_hi(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_hi(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_hi(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_hi(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_hi(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_hi(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_hi(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_hi(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt3rhs[index],Xt3rhsL,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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_lo(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_lo(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_lo(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_lo(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_lo(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_lo(At33rhs[index],At33rhsL,elt_count);
+ vec_store_nta_partial_lo(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_lo(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_lo(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_lo(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_lo(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_lo(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_lo(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_lo(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_lo(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_lo(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_lo(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt3rhs[index],Xt3rhsL,elt_count);
+ break;
+ }
+ vec_store_nta(alpharhs[index],alpharhsL);
+ vec_store_nta(Arhs[index],ArhsL);
+ vec_store_nta(At11rhs[index],At11rhsL);
+ vec_store_nta(At12rhs[index],At12rhsL);
+ vec_store_nta(At13rhs[index],At13rhsL);
+ vec_store_nta(At22rhs[index],At22rhsL);
+ vec_store_nta(At23rhs[index],At23rhsL);
+ vec_store_nta(At33rhs[index],At33rhsL);
+ vec_store_nta(B1rhs[index],B1rhsL);
+ vec_store_nta(B2rhs[index],B2rhsL);
+ vec_store_nta(B3rhs[index],B3rhsL);
+ vec_store_nta(beta1rhs[index],beta1rhsL);
+ vec_store_nta(beta2rhs[index],beta2rhsL);
+ vec_store_nta(beta3rhs[index],beta3rhsL);
+ vec_store_nta(gt11rhs[index],gt11rhsL);
+ vec_store_nta(gt12rhs[index],gt12rhsL);
+ vec_store_nta(gt13rhs[index],gt13rhsL);
+ vec_store_nta(gt22rhs[index],gt22rhsL);
+ vec_store_nta(gt23rhs[index],gt23rhsL);
+ vec_store_nta(gt33rhs[index],gt33rhsL);
+ vec_store_nta(phirhs[index],phirhsL);
+ vec_store_nta(trKrhs[index],trKrhsL);
+ vec_store_nta(Xt1rhs[index],Xt1rhsL);
+ vec_store_nta(Xt2rhs[index],Xt2rhsL);
+ vec_store_nta(Xt3rhs[index],Xt3rhsL);
}
- LC_ENDLOOP3 (ML_BSSN_O8_Dissipation);
+ LC_ENDLOOP3VEC (ML_BSSN_O8_Dissipation);
}
extern "C" void ML_BSSN_O8_Dissipation(CCTK_ARGUMENTS)
@@ -394,5 +1368,43 @@ extern "C" void ML_BSSN_O8_Dissipation(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O8_Dissipation_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_O8_Dissipation_calc_every != ML_BSSN_O8_Dissipation_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN_O8::ML_curv","ML_BSSN_O8::ML_curvrhs","ML_BSSN_O8::ML_dtlapse","ML_BSSN_O8::ML_dtlapserhs","ML_BSSN_O8::ML_dtshift","ML_BSSN_O8::ML_dtshiftrhs","ML_BSSN_O8::ML_Gamma","ML_BSSN_O8::ML_Gammarhs","ML_BSSN_O8::ML_lapse","ML_BSSN_O8::ML_lapserhs","ML_BSSN_O8::ML_log_confac","ML_BSSN_O8::ML_log_confacrhs","ML_BSSN_O8::ML_metric","ML_BSSN_O8::ML_metricrhs","ML_BSSN_O8::ML_shift","ML_BSSN_O8::ML_shiftrhs","ML_BSSN_O8::ML_trace_curv","ML_BSSN_O8::ML_trace_curvrhs"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O8_Dissipation", 18, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O8_Dissipation", 2, 2, 2);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O8_Dissipation", 3, 3, 3);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O8_Dissipation", 4, 4, 4);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O8_Dissipation", 5, 5, 5);
+ break;
+ }
+
GenericFD_LoopOverInterior(cctkGH, &ML_BSSN_O8_Dissipation_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_O8_Dissipation_Body");
+ }
}
diff --git a/ML_BSSN_O8/src/ML_BSSN_O8_InitGamma.cc b/ML_BSSN_O8/src/ML_BSSN_O8_InitGamma.cc
index 148022e..d6c5130 100644
--- a/ML_BSSN_O8/src/ML_BSSN_O8_InitGamma.cc
+++ b/ML_BSSN_O8/src/ML_BSSN_O8_InitGamma.cc
@@ -13,15 +13,16 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
-static void ML_BSSN_O8_InitGamma_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_O8_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;
@@ -29,20 +30,6 @@ static void ML_BSSN_O8_InitGamma_Body(cGH const * restrict const cctkGH, int con
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O8_InitGamma_Body");
- }
-
- if (cctk_iteration % ML_BSSN_O8_InitGamma_calc_every != ML_BSSN_O8_InitGamma_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN_O8::ML_Gamma"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O8_InitGamma", 1, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -52,53 +39,162 @@ static void ML_BSSN_O8_InitGamma_Body(cGH const * restrict const cctkGH, int con
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o1024dx = 0.0009765625*INV(dx);
- CCTK_REAL const p1o1024dy = 0.0009765625*INV(dy);
- CCTK_REAL const p1o1024dz = 0.0009765625*INV(dz);
- CCTK_REAL const p1o1680dx = 0.000595238095238095238095238095238*INV(dx);
- CCTK_REAL const p1o1680dy = 0.000595238095238095238095238095238*INV(dy);
- CCTK_REAL const p1o1680dz = 0.000595238095238095238095238095238*INV(dz);
- CCTK_REAL const p1o5040dx2 = 0.000198412698412698412698412698413*INV(SQR(dx));
- CCTK_REAL const p1o5040dy2 = 0.000198412698412698412698412698413*INV(SQR(dy));
- CCTK_REAL const p1o5040dz2 = 0.000198412698412698412698412698413*INV(SQR(dz));
- CCTK_REAL const p1o560dx = 0.00178571428571428571428571428571*INV(dx);
- CCTK_REAL const p1o560dy = 0.00178571428571428571428571428571*INV(dy);
- CCTK_REAL const p1o560dz = 0.00178571428571428571428571428571*INV(dz);
- CCTK_REAL const p1o705600dxdy = 1.41723356009070294784580498866e-6*INV(dx)*INV(dy);
- CCTK_REAL const p1o705600dxdz = 1.41723356009070294784580498866e-6*INV(dx)*INV(dz);
- CCTK_REAL const p1o705600dydz = 1.41723356009070294784580498866e-6*INV(dy)*INV(dz);
- CCTK_REAL const p1o840dx = 0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const p1o840dy = 0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const p1o840dz = 0.00119047619047619047619047619048*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o840dx = -0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const pm1o840dy = -0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const pm1o840dz = -0.00119047619047619047619047619048*INV(dz);
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_O8_InitGamma,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_O8_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;
@@ -106,23 +202,95 @@ static void ML_BSSN_O8_InitGamma_Body(cGH const * restrict const cctkGH, int con
+
/* 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 Xt1L = 0;
+ 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 Xt2L = 0;
+ CCTK_REAL_VEC B1L = ToReal(0);
- CCTK_REAL Xt3L = 0;
+ CCTK_REAL_VEC B2L = ToReal(0);
- /* Copy local copies back to grid functions */
- Xt1[index] = Xt1L;
- Xt2[index] = Xt2L;
- Xt3[index] = Xt3L;
+ CCTK_REAL_VEC B3L = 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(A[index],AL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B1[index],B1L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B2[index],B2L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B3[index],B3L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt1[index],Xt1L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt2[index],Xt2L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt3[index],Xt3L,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(A[index],AL,elt_count);
+ vec_store_nta_partial_hi(B1[index],B1L,elt_count);
+ vec_store_nta_partial_hi(B2[index],B2L,elt_count);
+ vec_store_nta_partial_hi(B3[index],B3L,elt_count);
+ vec_store_nta_partial_hi(Xt1[index],Xt1L,elt_count);
+ vec_store_nta_partial_hi(Xt2[index],Xt2L,elt_count);
+ vec_store_nta_partial_hi(Xt3[index],Xt3L,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(A[index],AL,elt_count);
+ vec_store_nta_partial_lo(B1[index],B1L,elt_count);
+ vec_store_nta_partial_lo(B2[index],B2L,elt_count);
+ vec_store_nta_partial_lo(B3[index],B3L,elt_count);
+ vec_store_nta_partial_lo(Xt1[index],Xt1L,elt_count);
+ vec_store_nta_partial_lo(Xt2[index],Xt2L,elt_count);
+ vec_store_nta_partial_lo(Xt3[index],Xt3L,elt_count);
+ break;
+ }
+ vec_store_nta(A[index],AL);
+ vec_store_nta(B1[index],B1L);
+ vec_store_nta(B2[index],B2L);
+ vec_store_nta(B3[index],B3L);
+ vec_store_nta(Xt1[index],Xt1L);
+ vec_store_nta(Xt2[index],Xt2L);
+ vec_store_nta(Xt3[index],Xt3L);
}
- LC_ENDLOOP3 (ML_BSSN_O8_InitGamma);
+ LC_ENDLOOP3VEC (ML_BSSN_O8_InitGamma);
}
extern "C" void ML_BSSN_O8_InitGamma(CCTK_ARGUMENTS)
@@ -130,5 +298,39 @@ extern "C" void ML_BSSN_O8_InitGamma(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O8_InitGamma_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_O8_InitGamma_calc_every != ML_BSSN_O8_InitGamma_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN_O8::ML_dtlapse","ML_BSSN_O8::ML_dtshift","ML_BSSN_O8::ML_Gamma"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O8_InitGamma", 3, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverEverything(cctkGH, &ML_BSSN_O8_InitGamma_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_O8_InitGamma_Body");
+ }
}
diff --git a/ML_BSSN_O8/src/ML_BSSN_O8_InitRHS.cc b/ML_BSSN_O8/src/ML_BSSN_O8_InitRHS.cc
index d99892c..b623b70 100644
--- a/ML_BSSN_O8/src/ML_BSSN_O8_InitRHS.cc
+++ b/ML_BSSN_O8/src/ML_BSSN_O8_InitRHS.cc
@@ -13,15 +13,16 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
-static void ML_BSSN_O8_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_O8_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;
@@ -29,20 +30,6 @@ static void ML_BSSN_O8_InitRHS_Body(cGH const * restrict const cctkGH, int const
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O8_InitRHS_Body");
- }
-
- if (cctk_iteration % ML_BSSN_O8_InitRHS_calc_every != ML_BSSN_O8_InitRHS_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN_O8::ML_curvrhs","ML_BSSN_O8::ML_dtlapserhs","ML_BSSN_O8::ML_dtshiftrhs","ML_BSSN_O8::ML_Gammarhs","ML_BSSN_O8::ML_lapserhs","ML_BSSN_O8::ML_log_confacrhs","ML_BSSN_O8::ML_metricrhs","ML_BSSN_O8::ML_shiftrhs","ML_BSSN_O8::ML_trace_curvrhs"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O8_InitRHS", 9, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -52,53 +39,162 @@ static void ML_BSSN_O8_InitRHS_Body(cGH const * restrict const cctkGH, int const
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o1024dx = 0.0009765625*INV(dx);
- CCTK_REAL const p1o1024dy = 0.0009765625*INV(dy);
- CCTK_REAL const p1o1024dz = 0.0009765625*INV(dz);
- CCTK_REAL const p1o1680dx = 0.000595238095238095238095238095238*INV(dx);
- CCTK_REAL const p1o1680dy = 0.000595238095238095238095238095238*INV(dy);
- CCTK_REAL const p1o1680dz = 0.000595238095238095238095238095238*INV(dz);
- CCTK_REAL const p1o5040dx2 = 0.000198412698412698412698412698413*INV(SQR(dx));
- CCTK_REAL const p1o5040dy2 = 0.000198412698412698412698412698413*INV(SQR(dy));
- CCTK_REAL const p1o5040dz2 = 0.000198412698412698412698412698413*INV(SQR(dz));
- CCTK_REAL const p1o560dx = 0.00178571428571428571428571428571*INV(dx);
- CCTK_REAL const p1o560dy = 0.00178571428571428571428571428571*INV(dy);
- CCTK_REAL const p1o560dz = 0.00178571428571428571428571428571*INV(dz);
- CCTK_REAL const p1o705600dxdy = 1.41723356009070294784580498866e-6*INV(dx)*INV(dy);
- CCTK_REAL const p1o705600dxdz = 1.41723356009070294784580498866e-6*INV(dx)*INV(dz);
- CCTK_REAL const p1o705600dydz = 1.41723356009070294784580498866e-6*INV(dy)*INV(dz);
- CCTK_REAL const p1o840dx = 0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const p1o840dy = 0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const p1o840dz = 0.00119047619047619047619047619048*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o840dx = -0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const pm1o840dy = -0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const pm1o840dz = -0.00119047619047619047619047619048*INV(dz);
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_O8_InitRHS,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_O8_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;
@@ -106,89 +202,203 @@ static void ML_BSSN_O8_InitRHS_Body(cGH const * restrict const cctkGH, int const
+
/* 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 phirhsL = 0;
+ CCTK_REAL_VEC phirhsL = ToReal(0);
+
+ CCTK_REAL_VEC gt11rhsL = ToReal(0);
- CCTK_REAL gt11rhsL = 0;
+ CCTK_REAL_VEC gt12rhsL = ToReal(0);
- CCTK_REAL gt12rhsL = 0;
+ CCTK_REAL_VEC gt13rhsL = ToReal(0);
- CCTK_REAL gt13rhsL = 0;
+ CCTK_REAL_VEC gt22rhsL = ToReal(0);
- CCTK_REAL gt22rhsL = 0;
+ CCTK_REAL_VEC gt23rhsL = ToReal(0);
- CCTK_REAL gt23rhsL = 0;
+ CCTK_REAL_VEC gt33rhsL = ToReal(0);
- CCTK_REAL gt33rhsL = 0;
+ CCTK_REAL_VEC trKrhsL = ToReal(0);
- CCTK_REAL trKrhsL = 0;
+ CCTK_REAL_VEC At11rhsL = ToReal(0);
- CCTK_REAL At11rhsL = 0;
+ CCTK_REAL_VEC At12rhsL = ToReal(0);
- CCTK_REAL At12rhsL = 0;
+ CCTK_REAL_VEC At13rhsL = ToReal(0);
- CCTK_REAL At13rhsL = 0;
+ CCTK_REAL_VEC At22rhsL = ToReal(0);
- CCTK_REAL At22rhsL = 0;
+ CCTK_REAL_VEC At23rhsL = ToReal(0);
- CCTK_REAL At23rhsL = 0;
+ CCTK_REAL_VEC At33rhsL = ToReal(0);
- CCTK_REAL At33rhsL = 0;
+ CCTK_REAL_VEC Xt1rhsL = ToReal(0);
- CCTK_REAL Xt1rhsL = 0;
+ CCTK_REAL_VEC Xt2rhsL = ToReal(0);
- CCTK_REAL Xt2rhsL = 0;
+ CCTK_REAL_VEC Xt3rhsL = ToReal(0);
- CCTK_REAL Xt3rhsL = 0;
+ CCTK_REAL_VEC alpharhsL = ToReal(0);
- CCTK_REAL alpharhsL = 0;
+ CCTK_REAL_VEC ArhsL = ToReal(0);
- CCTK_REAL ArhsL = 0;
+ CCTK_REAL_VEC beta1rhsL = ToReal(0);
- CCTK_REAL beta1rhsL = 0;
+ CCTK_REAL_VEC beta2rhsL = ToReal(0);
- CCTK_REAL beta2rhsL = 0;
+ CCTK_REAL_VEC beta3rhsL = ToReal(0);
- CCTK_REAL beta3rhsL = 0;
+ CCTK_REAL_VEC B1rhsL = ToReal(0);
- CCTK_REAL B1rhsL = 0;
+ CCTK_REAL_VEC B2rhsL = ToReal(0);
- CCTK_REAL B2rhsL = 0;
+ CCTK_REAL_VEC B3rhsL = ToReal(0);
- CCTK_REAL B3rhsL = 0;
+ /* If necessary, store only partial vectors after the first iteration */
- /* Copy local copies back to grid functions */
- alpharhs[index] = alpharhsL;
- Arhs[index] = ArhsL;
- At11rhs[index] = At11rhsL;
- At12rhs[index] = At12rhsL;
- At13rhs[index] = At13rhsL;
- At22rhs[index] = At22rhsL;
- At23rhs[index] = At23rhsL;
- At33rhs[index] = At33rhsL;
- B1rhs[index] = B1rhsL;
- B2rhs[index] = B2rhsL;
- B3rhs[index] = B3rhsL;
- beta1rhs[index] = beta1rhsL;
- beta2rhs[index] = beta2rhsL;
- beta3rhs[index] = beta3rhsL;
- gt11rhs[index] = gt11rhsL;
- gt12rhs[index] = gt12rhsL;
- gt13rhs[index] = gt13rhsL;
- gt22rhs[index] = gt22rhsL;
- gt23rhs[index] = gt23rhsL;
- gt33rhs[index] = gt33rhsL;
- phirhs[index] = phirhsL;
- trKrhs[index] = trKrhsL;
- Xt1rhs[index] = Xt1rhsL;
- Xt2rhs[index] = Xt2rhsL;
- Xt3rhs[index] = Xt3rhsL;
+ 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(Arhs[index],ArhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At11rhs[index],At11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At12rhs[index],At12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At13rhs[index],At13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At22rhs[index],At22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At23rhs[index],At23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At33rhs[index],At33rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B1rhs[index],B1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B2rhs[index],B2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt12rhs[index],gt12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt13rhs[index],gt13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt22rhs[index],gt22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt23rhs[index],gt23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt33rhs[index],gt33rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(phirhs[index],phirhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(trKrhs[index],trKrhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt1rhs[index],Xt1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt2rhs[index],Xt2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt3rhs[index],Xt3rhsL,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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_hi(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_hi(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_hi(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_hi(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_hi(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_hi(At33rhs[index],At33rhsL,elt_count);
+ vec_store_nta_partial_hi(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_hi(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_hi(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_hi(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_hi(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_hi(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_hi(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_hi(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_hi(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_hi(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_hi(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt3rhs[index],Xt3rhsL,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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_lo(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_lo(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_lo(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_lo(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_lo(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_lo(At33rhs[index],At33rhsL,elt_count);
+ vec_store_nta_partial_lo(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_lo(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_lo(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_lo(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_lo(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_lo(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_lo(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_lo(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_lo(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_lo(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_lo(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt3rhs[index],Xt3rhsL,elt_count);
+ break;
+ }
+ vec_store_nta(alpharhs[index],alpharhsL);
+ vec_store_nta(Arhs[index],ArhsL);
+ vec_store_nta(At11rhs[index],At11rhsL);
+ vec_store_nta(At12rhs[index],At12rhsL);
+ vec_store_nta(At13rhs[index],At13rhsL);
+ vec_store_nta(At22rhs[index],At22rhsL);
+ vec_store_nta(At23rhs[index],At23rhsL);
+ vec_store_nta(At33rhs[index],At33rhsL);
+ vec_store_nta(B1rhs[index],B1rhsL);
+ vec_store_nta(B2rhs[index],B2rhsL);
+ vec_store_nta(B3rhs[index],B3rhsL);
+ vec_store_nta(beta1rhs[index],beta1rhsL);
+ vec_store_nta(beta2rhs[index],beta2rhsL);
+ vec_store_nta(beta3rhs[index],beta3rhsL);
+ vec_store_nta(gt11rhs[index],gt11rhsL);
+ vec_store_nta(gt12rhs[index],gt12rhsL);
+ vec_store_nta(gt13rhs[index],gt13rhsL);
+ vec_store_nta(gt22rhs[index],gt22rhsL);
+ vec_store_nta(gt23rhs[index],gt23rhsL);
+ vec_store_nta(gt33rhs[index],gt33rhsL);
+ vec_store_nta(phirhs[index],phirhsL);
+ vec_store_nta(trKrhs[index],trKrhsL);
+ vec_store_nta(Xt1rhs[index],Xt1rhsL);
+ vec_store_nta(Xt2rhs[index],Xt2rhsL);
+ vec_store_nta(Xt3rhs[index],Xt3rhsL);
}
- LC_ENDLOOP3 (ML_BSSN_O8_InitRHS);
+ LC_ENDLOOP3VEC (ML_BSSN_O8_InitRHS);
}
extern "C" void ML_BSSN_O8_InitRHS(CCTK_ARGUMENTS)
@@ -196,5 +406,39 @@ extern "C" void ML_BSSN_O8_InitRHS(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O8_InitRHS_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_O8_InitRHS_calc_every != ML_BSSN_O8_InitRHS_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN_O8::ML_curvrhs","ML_BSSN_O8::ML_dtlapserhs","ML_BSSN_O8::ML_dtshiftrhs","ML_BSSN_O8::ML_Gammarhs","ML_BSSN_O8::ML_lapserhs","ML_BSSN_O8::ML_log_confacrhs","ML_BSSN_O8::ML_metricrhs","ML_BSSN_O8::ML_shiftrhs","ML_BSSN_O8::ML_trace_curvrhs"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O8_InitRHS", 9, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverEverything(cctkGH, &ML_BSSN_O8_InitRHS_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_O8_InitRHS_Body");
+ }
}
diff --git a/ML_BSSN_O8/src/ML_BSSN_O8_Minkowski.cc b/ML_BSSN_O8/src/ML_BSSN_O8_Minkowski.cc
index 0e7ca12..5884f87 100644
--- a/ML_BSSN_O8/src/ML_BSSN_O8_Minkowski.cc
+++ b/ML_BSSN_O8/src/ML_BSSN_O8_Minkowski.cc
@@ -13,15 +13,16 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
-static void ML_BSSN_O8_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_O8_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;
@@ -29,20 +30,6 @@ static void ML_BSSN_O8_Minkowski_Body(cGH const * restrict const cctkGH, int con
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O8_Minkowski_Body");
- }
-
- if (cctk_iteration % ML_BSSN_O8_Minkowski_calc_every != ML_BSSN_O8_Minkowski_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN_O8::ML_curv","ML_BSSN_O8::ML_dtlapse","ML_BSSN_O8::ML_dtshift","ML_BSSN_O8::ML_Gamma","ML_BSSN_O8::ML_lapse","ML_BSSN_O8::ML_log_confac","ML_BSSN_O8::ML_metric","ML_BSSN_O8::ML_shift","ML_BSSN_O8::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O8_Minkowski", 9, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -52,53 +39,162 @@ static void ML_BSSN_O8_Minkowski_Body(cGH const * restrict const cctkGH, int con
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o1024dx = 0.0009765625*INV(dx);
- CCTK_REAL const p1o1024dy = 0.0009765625*INV(dy);
- CCTK_REAL const p1o1024dz = 0.0009765625*INV(dz);
- CCTK_REAL const p1o1680dx = 0.000595238095238095238095238095238*INV(dx);
- CCTK_REAL const p1o1680dy = 0.000595238095238095238095238095238*INV(dy);
- CCTK_REAL const p1o1680dz = 0.000595238095238095238095238095238*INV(dz);
- CCTK_REAL const p1o5040dx2 = 0.000198412698412698412698412698413*INV(SQR(dx));
- CCTK_REAL const p1o5040dy2 = 0.000198412698412698412698412698413*INV(SQR(dy));
- CCTK_REAL const p1o5040dz2 = 0.000198412698412698412698412698413*INV(SQR(dz));
- CCTK_REAL const p1o560dx = 0.00178571428571428571428571428571*INV(dx);
- CCTK_REAL const p1o560dy = 0.00178571428571428571428571428571*INV(dy);
- CCTK_REAL const p1o560dz = 0.00178571428571428571428571428571*INV(dz);
- CCTK_REAL const p1o705600dxdy = 1.41723356009070294784580498866e-6*INV(dx)*INV(dy);
- CCTK_REAL const p1o705600dxdz = 1.41723356009070294784580498866e-6*INV(dx)*INV(dz);
- CCTK_REAL const p1o705600dydz = 1.41723356009070294784580498866e-6*INV(dy)*INV(dz);
- CCTK_REAL const p1o840dx = 0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const p1o840dy = 0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const p1o840dz = 0.00119047619047619047619047619048*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o840dx = -0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const pm1o840dy = -0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const pm1o840dz = -0.00119047619047619047619047619048*INV(dz);
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_O8_Minkowski,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_O8_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;
@@ -106,89 +202,203 @@ static void ML_BSSN_O8_Minkowski_Body(cGH const * restrict const cctkGH, int con
+
/* 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 phiL = IfThen(conformalMethod,1,0);
+ CCTK_REAL_VEC phiL = IfThen(conformalMethod,ToReal(1),ToReal(0));
+
+ CCTK_REAL_VEC gt11L = ToReal(1);
- CCTK_REAL gt11L = 1;
+ CCTK_REAL_VEC gt12L = ToReal(0);
- CCTK_REAL gt12L = 0;
+ CCTK_REAL_VEC gt13L = ToReal(0);
- CCTK_REAL gt13L = 0;
+ CCTK_REAL_VEC gt22L = ToReal(1);
- CCTK_REAL gt22L = 1;
+ CCTK_REAL_VEC gt23L = ToReal(0);
- CCTK_REAL gt23L = 0;
+ CCTK_REAL_VEC gt33L = ToReal(1);
- CCTK_REAL gt33L = 1;
+ CCTK_REAL_VEC trKL = ToReal(0);
- CCTK_REAL trKL = 0;
+ CCTK_REAL_VEC At11L = ToReal(0);
- CCTK_REAL At11L = 0;
+ CCTK_REAL_VEC At12L = ToReal(0);
- CCTK_REAL At12L = 0;
+ CCTK_REAL_VEC At13L = ToReal(0);
- CCTK_REAL At13L = 0;
+ CCTK_REAL_VEC At22L = ToReal(0);
- CCTK_REAL At22L = 0;
+ CCTK_REAL_VEC At23L = ToReal(0);
- CCTK_REAL At23L = 0;
+ CCTK_REAL_VEC At33L = ToReal(0);
- CCTK_REAL At33L = 0;
+ CCTK_REAL_VEC Xt1L = ToReal(0);
- CCTK_REAL Xt1L = 0;
+ CCTK_REAL_VEC Xt2L = ToReal(0);
- CCTK_REAL Xt2L = 0;
+ CCTK_REAL_VEC Xt3L = ToReal(0);
- CCTK_REAL Xt3L = 0;
+ CCTK_REAL_VEC alphaL = ToReal(1);
- CCTK_REAL alphaL = 1;
+ CCTK_REAL_VEC AL = ToReal(0);
- CCTK_REAL AL = 0;
+ CCTK_REAL_VEC beta1L = ToReal(0);
- CCTK_REAL beta1L = 0;
+ CCTK_REAL_VEC beta2L = ToReal(0);
- CCTK_REAL beta2L = 0;
+ CCTK_REAL_VEC beta3L = ToReal(0);
- CCTK_REAL beta3L = 0;
+ CCTK_REAL_VEC B1L = ToReal(0);
- CCTK_REAL B1L = 0;
+ CCTK_REAL_VEC B2L = ToReal(0);
- CCTK_REAL B2L = 0;
+ CCTK_REAL_VEC B3L = ToReal(0);
- CCTK_REAL B3L = 0;
+ /* If necessary, store only partial vectors after the first iteration */
- /* Copy local copies back to grid functions */
- A[index] = AL;
- alpha[index] = alphaL;
- At11[index] = At11L;
- At12[index] = At12L;
- At13[index] = At13L;
- At22[index] = At22L;
- At23[index] = At23L;
- At33[index] = At33L;
- B1[index] = B1L;
- B2[index] = B2L;
- B3[index] = B3L;
- beta1[index] = beta1L;
- beta2[index] = beta2L;
- beta3[index] = beta3L;
- gt11[index] = gt11L;
- gt12[index] = gt12L;
- gt13[index] = gt13L;
- gt22[index] = gt22L;
- gt23[index] = gt23L;
- gt33[index] = gt33L;
- phi[index] = phiL;
- trK[index] = trKL;
- Xt1[index] = Xt1L;
- Xt2[index] = Xt2L;
- Xt3[index] = Xt3L;
+ 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(A[index],AL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(alpha[index],alphaL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At11[index],At11L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At12[index],At12L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At13[index],At13L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At22[index],At22L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At23[index],At23L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At33[index],At33L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B1[index],B1L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B2[index],B2L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B3[index],B3L,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(gt11[index],gt11L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt12[index],gt12L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt13[index],gt13L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt22[index],gt22L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt23[index],gt23L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt33[index],gt33L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(phi[index],phiL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(trK[index],trKL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt1[index],Xt1L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt2[index],Xt2L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt3[index],Xt3L,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(A[index],AL,elt_count);
+ vec_store_nta_partial_hi(alpha[index],alphaL,elt_count);
+ vec_store_nta_partial_hi(At11[index],At11L,elt_count);
+ vec_store_nta_partial_hi(At12[index],At12L,elt_count);
+ vec_store_nta_partial_hi(At13[index],At13L,elt_count);
+ vec_store_nta_partial_hi(At22[index],At22L,elt_count);
+ vec_store_nta_partial_hi(At23[index],At23L,elt_count);
+ vec_store_nta_partial_hi(At33[index],At33L,elt_count);
+ vec_store_nta_partial_hi(B1[index],B1L,elt_count);
+ vec_store_nta_partial_hi(B2[index],B2L,elt_count);
+ vec_store_nta_partial_hi(B3[index],B3L,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(gt11[index],gt11L,elt_count);
+ vec_store_nta_partial_hi(gt12[index],gt12L,elt_count);
+ vec_store_nta_partial_hi(gt13[index],gt13L,elt_count);
+ vec_store_nta_partial_hi(gt22[index],gt22L,elt_count);
+ vec_store_nta_partial_hi(gt23[index],gt23L,elt_count);
+ vec_store_nta_partial_hi(gt33[index],gt33L,elt_count);
+ vec_store_nta_partial_hi(phi[index],phiL,elt_count);
+ vec_store_nta_partial_hi(trK[index],trKL,elt_count);
+ vec_store_nta_partial_hi(Xt1[index],Xt1L,elt_count);
+ vec_store_nta_partial_hi(Xt2[index],Xt2L,elt_count);
+ vec_store_nta_partial_hi(Xt3[index],Xt3L,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(A[index],AL,elt_count);
+ vec_store_nta_partial_lo(alpha[index],alphaL,elt_count);
+ vec_store_nta_partial_lo(At11[index],At11L,elt_count);
+ vec_store_nta_partial_lo(At12[index],At12L,elt_count);
+ vec_store_nta_partial_lo(At13[index],At13L,elt_count);
+ vec_store_nta_partial_lo(At22[index],At22L,elt_count);
+ vec_store_nta_partial_lo(At23[index],At23L,elt_count);
+ vec_store_nta_partial_lo(At33[index],At33L,elt_count);
+ vec_store_nta_partial_lo(B1[index],B1L,elt_count);
+ vec_store_nta_partial_lo(B2[index],B2L,elt_count);
+ vec_store_nta_partial_lo(B3[index],B3L,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(gt11[index],gt11L,elt_count);
+ vec_store_nta_partial_lo(gt12[index],gt12L,elt_count);
+ vec_store_nta_partial_lo(gt13[index],gt13L,elt_count);
+ vec_store_nta_partial_lo(gt22[index],gt22L,elt_count);
+ vec_store_nta_partial_lo(gt23[index],gt23L,elt_count);
+ vec_store_nta_partial_lo(gt33[index],gt33L,elt_count);
+ vec_store_nta_partial_lo(phi[index],phiL,elt_count);
+ vec_store_nta_partial_lo(trK[index],trKL,elt_count);
+ vec_store_nta_partial_lo(Xt1[index],Xt1L,elt_count);
+ vec_store_nta_partial_lo(Xt2[index],Xt2L,elt_count);
+ vec_store_nta_partial_lo(Xt3[index],Xt3L,elt_count);
+ break;
+ }
+ vec_store_nta(A[index],AL);
+ vec_store_nta(alpha[index],alphaL);
+ vec_store_nta(At11[index],At11L);
+ vec_store_nta(At12[index],At12L);
+ vec_store_nta(At13[index],At13L);
+ vec_store_nta(At22[index],At22L);
+ vec_store_nta(At23[index],At23L);
+ vec_store_nta(At33[index],At33L);
+ vec_store_nta(B1[index],B1L);
+ vec_store_nta(B2[index],B2L);
+ vec_store_nta(B3[index],B3L);
+ vec_store_nta(beta1[index],beta1L);
+ vec_store_nta(beta2[index],beta2L);
+ vec_store_nta(beta3[index],beta3L);
+ vec_store_nta(gt11[index],gt11L);
+ vec_store_nta(gt12[index],gt12L);
+ vec_store_nta(gt13[index],gt13L);
+ vec_store_nta(gt22[index],gt22L);
+ vec_store_nta(gt23[index],gt23L);
+ vec_store_nta(gt33[index],gt33L);
+ vec_store_nta(phi[index],phiL);
+ vec_store_nta(trK[index],trKL);
+ vec_store_nta(Xt1[index],Xt1L);
+ vec_store_nta(Xt2[index],Xt2L);
+ vec_store_nta(Xt3[index],Xt3L);
}
- LC_ENDLOOP3 (ML_BSSN_O8_Minkowski);
+ LC_ENDLOOP3VEC (ML_BSSN_O8_Minkowski);
}
extern "C" void ML_BSSN_O8_Minkowski(CCTK_ARGUMENTS)
@@ -196,5 +406,39 @@ extern "C" void ML_BSSN_O8_Minkowski(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O8_Minkowski_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_O8_Minkowski_calc_every != ML_BSSN_O8_Minkowski_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN_O8::ML_curv","ML_BSSN_O8::ML_dtlapse","ML_BSSN_O8::ML_dtshift","ML_BSSN_O8::ML_Gamma","ML_BSSN_O8::ML_lapse","ML_BSSN_O8::ML_log_confac","ML_BSSN_O8::ML_metric","ML_BSSN_O8::ML_shift","ML_BSSN_O8::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O8_Minkowski", 9, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverEverything(cctkGH, &ML_BSSN_O8_Minkowski_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_O8_Minkowski_Body");
+ }
}
diff --git a/ML_BSSN_O8/src/ML_BSSN_O8_RHS1.cc b/ML_BSSN_O8/src/ML_BSSN_O8_RHS1.cc
index 0ba7a33..6467c7f 100644
--- a/ML_BSSN_O8/src/ML_BSSN_O8_RHS1.cc
+++ b/ML_BSSN_O8/src/ML_BSSN_O8_RHS1.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_O8_RHS1_SelectBCs(CCTK_ARGUMENTS)
{
@@ -54,7 +55,7 @@ extern "C" void ML_BSSN_O8_RHS1_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_BSSN_O8_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_O8_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;
@@ -62,21 +63,6 @@ static void ML_BSSN_O8_RHS1_Body(cGH const * restrict const cctkGH, int const di
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O8_RHS1_Body");
- }
-
- if (cctk_iteration % ML_BSSN_O8_RHS1_calc_every != ML_BSSN_O8_RHS1_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"grid::coordinates","Grid::coordinates","ML_BSSN_O8::ML_curv","ML_BSSN_O8::ML_dtlapse","ML_BSSN_O8::ML_dtlapserhs","ML_BSSN_O8::ML_dtshift","ML_BSSN_O8::ML_dtshiftrhs","ML_BSSN_O8::ML_Gamma","ML_BSSN_O8::ML_Gammarhs","ML_BSSN_O8::ML_lapse","ML_BSSN_O8::ML_lapserhs","ML_BSSN_O8::ML_log_confac","ML_BSSN_O8::ML_log_confacrhs","ML_BSSN_O8::ML_metric","ML_BSSN_O8::ML_metricrhs","ML_BSSN_O8::ML_shift","ML_BSSN_O8::ML_shiftrhs","ML_BSSN_O8::ML_trace_curv","ML_BSSN_O8::ML_trace_curvrhs"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O8_RHS1", 19, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O8_RHS1", 4, 4, 4);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -86,99 +72,208 @@ static void ML_BSSN_O8_RHS1_Body(cGH const * restrict const cctkGH, int const di
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o1024dx = 0.0009765625*INV(dx);
- CCTK_REAL const p1o1024dy = 0.0009765625*INV(dy);
- CCTK_REAL const p1o1024dz = 0.0009765625*INV(dz);
- CCTK_REAL const p1o1680dx = 0.000595238095238095238095238095238*INV(dx);
- CCTK_REAL const p1o1680dy = 0.000595238095238095238095238095238*INV(dy);
- CCTK_REAL const p1o1680dz = 0.000595238095238095238095238095238*INV(dz);
- CCTK_REAL const p1o5040dx2 = 0.000198412698412698412698412698413*INV(SQR(dx));
- CCTK_REAL const p1o5040dy2 = 0.000198412698412698412698412698413*INV(SQR(dy));
- CCTK_REAL const p1o5040dz2 = 0.000198412698412698412698412698413*INV(SQR(dz));
- CCTK_REAL const p1o560dx = 0.00178571428571428571428571428571*INV(dx);
- CCTK_REAL const p1o560dy = 0.00178571428571428571428571428571*INV(dy);
- CCTK_REAL const p1o560dz = 0.00178571428571428571428571428571*INV(dz);
- CCTK_REAL const p1o705600dxdy = 1.41723356009070294784580498866e-6*INV(dx)*INV(dy);
- CCTK_REAL const p1o705600dxdz = 1.41723356009070294784580498866e-6*INV(dx)*INV(dz);
- CCTK_REAL const p1o705600dydz = 1.41723356009070294784580498866e-6*INV(dy)*INV(dz);
- CCTK_REAL const p1o840dx = 0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const p1o840dy = 0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const p1o840dz = 0.00119047619047619047619047619048*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o840dx = -0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const pm1o840dy = -0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const pm1o840dz = -0.00119047619047619047619047619048*INV(dz);
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_O8_RHS1,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_O8_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 AL = A[index];
- CCTK_REAL alphaL = alpha[index];
- CCTK_REAL At11L = At11[index];
- CCTK_REAL At12L = At12[index];
- CCTK_REAL At13L = At13[index];
- CCTK_REAL At22L = At22[index];
- CCTK_REAL At23L = At23[index];
- CCTK_REAL At33L = At33[index];
- CCTK_REAL B1L = B1[index];
- CCTK_REAL B2L = B2[index];
- CCTK_REAL B3L = B3[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL gt11L = gt11[index];
- CCTK_REAL gt12L = gt12[index];
- CCTK_REAL gt13L = gt13[index];
- CCTK_REAL gt22L = gt22[index];
- CCTK_REAL gt23L = gt23[index];
- CCTK_REAL gt33L = gt33[index];
- CCTK_REAL phiL = phi[index];
- CCTK_REAL rL = r[index];
- CCTK_REAL trKL = trK[index];
- CCTK_REAL Xt1L = Xt1[index];
- CCTK_REAL Xt2L = Xt2[index];
- CCTK_REAL Xt3L = Xt3[index];
-
- CCTK_REAL eTttL, eTtxL, eTtyL, eTtzL, eTxxL, eTxyL, eTxzL, eTyyL, eTyzL, eTzzL;
+ 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 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 = eTtt[index];
- eTtxL = eTtx[index];
- eTtyL = eTty[index];
- eTtzL = eTtz[index];
- eTxxL = eTxx[index];
- eTxyL = eTxy[index];
- eTxzL = eTxz[index];
- eTyyL = eTyy[index];
- eTyzL = eTyz[index];
- eTzzL = eTzz[index];
+ 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
{
@@ -194,69 +289,357 @@ static void ML_BSSN_O8_RHS1_Body(cGH const * restrict const cctkGH, int const di
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 const PDstandardNth1alpha = PDstandardNth1(&alpha[index]);
- CCTK_REAL const PDstandardNth2alpha = PDstandardNth2(&alpha[index]);
- CCTK_REAL const PDstandardNth3alpha = PDstandardNth3(&alpha[index]);
- CCTK_REAL const PDstandardNth11alpha = PDstandardNth11(&alpha[index]);
- CCTK_REAL const PDstandardNth22alpha = PDstandardNth22(&alpha[index]);
- CCTK_REAL const PDstandardNth33alpha = PDstandardNth33(&alpha[index]);
- CCTK_REAL const PDstandardNth12alpha = PDstandardNth12(&alpha[index]);
- CCTK_REAL const PDstandardNth13alpha = PDstandardNth13(&alpha[index]);
- CCTK_REAL const PDstandardNth23alpha = PDstandardNth23(&alpha[index]);
- CCTK_REAL const PDstandardNth1beta1 = PDstandardNth1(&beta1[index]);
- CCTK_REAL const PDstandardNth2beta1 = PDstandardNth2(&beta1[index]);
- CCTK_REAL const PDstandardNth3beta1 = PDstandardNth3(&beta1[index]);
- CCTK_REAL const PDstandardNth11beta1 = PDstandardNth11(&beta1[index]);
- CCTK_REAL const PDstandardNth22beta1 = PDstandardNth22(&beta1[index]);
- CCTK_REAL const PDstandardNth33beta1 = PDstandardNth33(&beta1[index]);
- CCTK_REAL const PDstandardNth12beta1 = PDstandardNth12(&beta1[index]);
- CCTK_REAL const PDstandardNth13beta1 = PDstandardNth13(&beta1[index]);
- CCTK_REAL const PDstandardNth23beta1 = PDstandardNth23(&beta1[index]);
- CCTK_REAL const PDstandardNth1beta2 = PDstandardNth1(&beta2[index]);
- CCTK_REAL const PDstandardNth2beta2 = PDstandardNth2(&beta2[index]);
- CCTK_REAL const PDstandardNth3beta2 = PDstandardNth3(&beta2[index]);
- CCTK_REAL const PDstandardNth11beta2 = PDstandardNth11(&beta2[index]);
- CCTK_REAL const PDstandardNth22beta2 = PDstandardNth22(&beta2[index]);
- CCTK_REAL const PDstandardNth33beta2 = PDstandardNth33(&beta2[index]);
- CCTK_REAL const PDstandardNth12beta2 = PDstandardNth12(&beta2[index]);
- CCTK_REAL const PDstandardNth13beta2 = PDstandardNth13(&beta2[index]);
- CCTK_REAL const PDstandardNth23beta2 = PDstandardNth23(&beta2[index]);
- CCTK_REAL const PDstandardNth1beta3 = PDstandardNth1(&beta3[index]);
- CCTK_REAL const PDstandardNth2beta3 = PDstandardNth2(&beta3[index]);
- CCTK_REAL const PDstandardNth3beta3 = PDstandardNth3(&beta3[index]);
- CCTK_REAL const PDstandardNth11beta3 = PDstandardNth11(&beta3[index]);
- CCTK_REAL const PDstandardNth22beta3 = PDstandardNth22(&beta3[index]);
- CCTK_REAL const PDstandardNth33beta3 = PDstandardNth33(&beta3[index]);
- CCTK_REAL const PDstandardNth12beta3 = PDstandardNth12(&beta3[index]);
- CCTK_REAL const PDstandardNth13beta3 = PDstandardNth13(&beta3[index]);
- CCTK_REAL const PDstandardNth23beta3 = PDstandardNth23(&beta3[index]);
- CCTK_REAL const PDstandardNth1gt11 = PDstandardNth1(&gt11[index]);
- CCTK_REAL const PDstandardNth2gt11 = PDstandardNth2(&gt11[index]);
- CCTK_REAL const PDstandardNth3gt11 = PDstandardNth3(&gt11[index]);
- CCTK_REAL const PDstandardNth1gt12 = PDstandardNth1(&gt12[index]);
- CCTK_REAL const PDstandardNth2gt12 = PDstandardNth2(&gt12[index]);
- CCTK_REAL const PDstandardNth3gt12 = PDstandardNth3(&gt12[index]);
- CCTK_REAL const PDstandardNth1gt13 = PDstandardNth1(&gt13[index]);
- CCTK_REAL const PDstandardNth2gt13 = PDstandardNth2(&gt13[index]);
- CCTK_REAL const PDstandardNth3gt13 = PDstandardNth3(&gt13[index]);
- CCTK_REAL const PDstandardNth1gt22 = PDstandardNth1(&gt22[index]);
- CCTK_REAL const PDstandardNth2gt22 = PDstandardNth2(&gt22[index]);
- CCTK_REAL const PDstandardNth3gt22 = PDstandardNth3(&gt22[index]);
- CCTK_REAL const PDstandardNth1gt23 = PDstandardNth1(&gt23[index]);
- CCTK_REAL const PDstandardNth2gt23 = PDstandardNth2(&gt23[index]);
- CCTK_REAL const PDstandardNth3gt23 = PDstandardNth3(&gt23[index]);
- CCTK_REAL const PDstandardNth1gt33 = PDstandardNth1(&gt33[index]);
- CCTK_REAL const PDstandardNth2gt33 = PDstandardNth2(&gt33[index]);
- CCTK_REAL const PDstandardNth3gt33 = PDstandardNth3(&gt33[index]);
- CCTK_REAL const PDstandardNth1phi = PDstandardNth1(&phi[index]);
- CCTK_REAL const PDstandardNth2phi = PDstandardNth2(&phi[index]);
- CCTK_REAL const PDstandardNth3phi = PDstandardNth3(&phi[index]);
- CCTK_REAL const PDstandardNth1trK = PDstandardNth1(&trK[index]);
- CCTK_REAL const PDstandardNth2trK = PDstandardNth2(&trK[index]);
- CCTK_REAL const PDstandardNth3trK = PDstandardNth3(&trK[index]);
+ 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 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:
+ 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]);
+ 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:
+ 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]);
+ 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:
+ 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]);
+ 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:
+ 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]);
+ 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 */
ptrdiff_t dir1 = Sign(beta1L);
@@ -265,340 +648,837 @@ static void ML_BSSN_O8_RHS1_Body(cGH const * restrict const cctkGH, int const di
ptrdiff_t dir3 = Sign(beta3L);
- CCTK_REAL detgt = 1;
+ CCTK_REAL_VEC JacPDstandardNth11alpha;
+ CCTK_REAL_VEC JacPDstandardNth11beta1;
+ CCTK_REAL_VEC JacPDstandardNth11beta2;
+ CCTK_REAL_VEC JacPDstandardNth11beta3;
+ CCTK_REAL_VEC JacPDstandardNth12alpha;
+ CCTK_REAL_VEC JacPDstandardNth12beta1;
+ CCTK_REAL_VEC JacPDstandardNth12beta2;
+ CCTK_REAL_VEC JacPDstandardNth12beta3;
+ CCTK_REAL_VEC JacPDstandardNth13alpha;
+ CCTK_REAL_VEC JacPDstandardNth13beta1;
+ CCTK_REAL_VEC JacPDstandardNth13beta2;
+ CCTK_REAL_VEC JacPDstandardNth13beta3;
+ 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 JacPDstandardNth1trK;
+ CCTK_REAL_VEC JacPDstandardNth21alpha;
+ CCTK_REAL_VEC JacPDstandardNth21beta1;
+ CCTK_REAL_VEC JacPDstandardNth21beta2;
+ CCTK_REAL_VEC JacPDstandardNth21beta3;
+ CCTK_REAL_VEC JacPDstandardNth22alpha;
+ CCTK_REAL_VEC JacPDstandardNth22beta1;
+ CCTK_REAL_VEC JacPDstandardNth22beta2;
+ CCTK_REAL_VEC JacPDstandardNth22beta3;
+ CCTK_REAL_VEC JacPDstandardNth23alpha;
+ CCTK_REAL_VEC JacPDstandardNth23beta1;
+ CCTK_REAL_VEC JacPDstandardNth23beta2;
+ CCTK_REAL_VEC JacPDstandardNth23beta3;
+ 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 JacPDstandardNth2trK;
+ CCTK_REAL_VEC JacPDstandardNth31alpha;
+ CCTK_REAL_VEC JacPDstandardNth31beta1;
+ CCTK_REAL_VEC JacPDstandardNth31beta2;
+ CCTK_REAL_VEC JacPDstandardNth31beta3;
+ CCTK_REAL_VEC JacPDstandardNth32alpha;
+ CCTK_REAL_VEC JacPDstandardNth32beta1;
+ CCTK_REAL_VEC JacPDstandardNth32beta2;
+ CCTK_REAL_VEC JacPDstandardNth32beta3;
+ CCTK_REAL_VEC JacPDstandardNth33alpha;
+ CCTK_REAL_VEC JacPDstandardNth33beta1;
+ CCTK_REAL_VEC JacPDstandardNth33beta2;
+ CCTK_REAL_VEC JacPDstandardNth33beta3;
+ 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 JacPDstandardNth3trK;
+
+ 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)));
+
+ JacPDstandardNth1trK =
+ kmadd(J11L,PDstandardNth1trK,kmadd(J21L,PDstandardNth2trK,kmul(J31L,PDstandardNth3trK)));
+
+ 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)));
+
+ JacPDstandardNth2trK =
+ kmadd(J12L,PDstandardNth1trK,kmadd(J22L,PDstandardNth2trK,kmul(J32L,PDstandardNth3trK)));
+
+ 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)));
+
+ JacPDstandardNth3trK =
+ kmadd(J13L,PDstandardNth1trK,kmadd(J23L,PDstandardNth2trK,kmul(J33L,PDstandardNth3trK)));
+
+ 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))))))));
+
+ 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))))))));
+
+ 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))))))));
+
+ 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)))))));
+
+ 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)))))));
+
+ 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)))))));
+
+ 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)))))));
+
+ 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)))))));
+
+ 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)))))));
+ }
+ else
+ {
+ JacPDstandardNth1alpha = PDstandardNth1alpha;
+
+ JacPDstandardNth1beta1 = PDstandardNth1beta1;
+
+ JacPDstandardNth1beta2 = PDstandardNth1beta2;
+
+ JacPDstandardNth1beta3 = PDstandardNth1beta3;
+
+ JacPDstandardNth1gt11 = PDstandardNth1gt11;
+
+ JacPDstandardNth1gt12 = PDstandardNth1gt12;
+
+ JacPDstandardNth1gt13 = PDstandardNth1gt13;
+
+ JacPDstandardNth1gt22 = PDstandardNth1gt22;
+
+ JacPDstandardNth1gt23 = PDstandardNth1gt23;
+
+ JacPDstandardNth1gt33 = PDstandardNth1gt33;
+
+ JacPDstandardNth1phi = PDstandardNth1phi;
+
+ JacPDstandardNth1trK = PDstandardNth1trK;
+
+ JacPDstandardNth2alpha = PDstandardNth2alpha;
+
+ JacPDstandardNth2beta1 = PDstandardNth2beta1;
+
+ JacPDstandardNth2beta2 = PDstandardNth2beta2;
+
+ JacPDstandardNth2beta3 = PDstandardNth2beta3;
+
+ JacPDstandardNth2gt11 = PDstandardNth2gt11;
+
+ JacPDstandardNth2gt12 = PDstandardNth2gt12;
+
+ JacPDstandardNth2gt13 = PDstandardNth2gt13;
+
+ JacPDstandardNth2gt22 = PDstandardNth2gt22;
+
+ JacPDstandardNth2gt23 = PDstandardNth2gt23;
+
+ JacPDstandardNth2gt33 = PDstandardNth2gt33;
+
+ JacPDstandardNth2phi = PDstandardNth2phi;
+
+ JacPDstandardNth2trK = PDstandardNth2trK;
+
+ JacPDstandardNth3alpha = PDstandardNth3alpha;
+
+ JacPDstandardNth3beta1 = PDstandardNth3beta1;
+
+ JacPDstandardNth3beta2 = PDstandardNth3beta2;
+
+ JacPDstandardNth3beta3 = PDstandardNth3beta3;
+
+ JacPDstandardNth3gt11 = PDstandardNth3gt11;
+
+ JacPDstandardNth3gt12 = PDstandardNth3gt12;
+
+ JacPDstandardNth3gt13 = PDstandardNth3gt13;
+
+ JacPDstandardNth3gt22 = PDstandardNth3gt22;
+
+ JacPDstandardNth3gt23 = PDstandardNth3gt23;
+
+ JacPDstandardNth3gt33 = PDstandardNth3gt33;
+
+ JacPDstandardNth3phi = PDstandardNth3phi;
+
+ JacPDstandardNth3trK = PDstandardNth3trK;
+
+ JacPDstandardNth11alpha = PDstandardNth11alpha;
+
+ JacPDstandardNth11beta1 = PDstandardNth11beta1;
+
+ JacPDstandardNth11beta2 = PDstandardNth11beta2;
+
+ JacPDstandardNth11beta3 = PDstandardNth11beta3;
+
+ JacPDstandardNth22alpha = PDstandardNth22alpha;
+
+ JacPDstandardNth22beta1 = PDstandardNth22beta1;
+
+ JacPDstandardNth22beta2 = PDstandardNth22beta2;
+
+ JacPDstandardNth22beta3 = PDstandardNth22beta3;
+
+ JacPDstandardNth33alpha = PDstandardNth33alpha;
+
+ JacPDstandardNth33beta1 = PDstandardNth33beta1;
+
+ JacPDstandardNth33beta2 = PDstandardNth33beta2;
+
+ JacPDstandardNth33beta3 = PDstandardNth33beta3;
+
+ JacPDstandardNth12alpha = PDstandardNth12alpha;
+
+ JacPDstandardNth12beta1 = PDstandardNth12beta1;
+
+ JacPDstandardNth12beta2 = PDstandardNth12beta2;
+
+ JacPDstandardNth12beta3 = PDstandardNth12beta3;
+
+ JacPDstandardNth13alpha = PDstandardNth13alpha;
+
+ JacPDstandardNth13beta1 = PDstandardNth13beta1;
+
+ JacPDstandardNth13beta2 = PDstandardNth13beta2;
+
+ JacPDstandardNth13beta3 = PDstandardNth13beta3;
+
+ JacPDstandardNth21alpha = PDstandardNth12alpha;
+
+ JacPDstandardNth21beta1 = PDstandardNth12beta1;
+
+ JacPDstandardNth21beta2 = PDstandardNth12beta2;
+
+ JacPDstandardNth21beta3 = PDstandardNth12beta3;
+
+ JacPDstandardNth23alpha = PDstandardNth23alpha;
+
+ JacPDstandardNth23beta1 = PDstandardNth23beta1;
+
+ JacPDstandardNth23beta2 = PDstandardNth23beta2;
+
+ JacPDstandardNth23beta3 = PDstandardNth23beta3;
+
+ JacPDstandardNth31alpha = PDstandardNth13alpha;
+
+ JacPDstandardNth31beta1 = PDstandardNth13beta1;
+
+ JacPDstandardNth31beta2 = PDstandardNth13beta2;
+
+ JacPDstandardNth31beta3 = PDstandardNth13beta3;
+
+ JacPDstandardNth32alpha = PDstandardNth23alpha;
+
+ JacPDstandardNth32beta1 = PDstandardNth23beta1;
+
+ JacPDstandardNth32beta2 = PDstandardNth23beta2;
+
+ JacPDstandardNth32beta3 = PDstandardNth23beta3;
+ }
+
+ 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 gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L));
+ CCTK_REAL_VEC Gtl211 =
+ kmadd(JacPDstandardNth2gt11,ToReal(-0.5),JacPDstandardNth1gt12);
- CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt);
+ CCTK_REAL_VEC Gtl212 = kmul(JacPDstandardNth1gt22,ToReal(0.5));
- CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC Gtl213 =
+ kmul(kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth3gt12,JacPDstandardNth2gt13)),ToReal(0.5));
- CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L));
+ CCTK_REAL_VEC Gtl222 = kmul(JacPDstandardNth2gt22,ToReal(0.5));
- CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC Gtl223 = kmul(JacPDstandardNth3gt22,ToReal(0.5));
- CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L));
+ CCTK_REAL_VEC Gtl233 =
+ kmadd(JacPDstandardNth2gt33,ToReal(-0.5),JacPDstandardNth3gt23);
- CCTK_REAL Gtl111 = 0.5*PDstandardNth1gt11;
+ CCTK_REAL_VEC Gtl311 =
+ kmadd(JacPDstandardNth3gt11,ToReal(-0.5),JacPDstandardNth1gt13);
- CCTK_REAL Gtl112 = 0.5*PDstandardNth2gt11;
+ CCTK_REAL_VEC Gtl312 =
+ kmul(kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth2gt13,JacPDstandardNth3gt12)),ToReal(0.5));
- CCTK_REAL Gtl113 = 0.5*PDstandardNth3gt11;
+ CCTK_REAL_VEC Gtl313 = kmul(JacPDstandardNth1gt33,ToReal(0.5));
- CCTK_REAL Gtl122 = -0.5*PDstandardNth1gt22 + PDstandardNth2gt12;
+ CCTK_REAL_VEC Gtl322 =
+ kmadd(JacPDstandardNth3gt22,ToReal(-0.5),JacPDstandardNth2gt23);
- CCTK_REAL Gtl123 = 0.5*(-PDstandardNth1gt23 + PDstandardNth2gt13 +
- PDstandardNth3gt12);
+ CCTK_REAL_VEC Gtl323 = kmul(JacPDstandardNth2gt33,ToReal(0.5));
- CCTK_REAL Gtl133 = -0.5*PDstandardNth1gt33 + PDstandardNth3gt13;
+ CCTK_REAL_VEC Gtl333 = kmul(JacPDstandardNth3gt33,ToReal(0.5));
- CCTK_REAL Gtl211 = PDstandardNth1gt12 - 0.5*PDstandardNth2gt11;
+ CCTK_REAL_VEC Gt111 =
+ kmadd(Gtl111,gtu11,kmadd(Gtl211,gtu12,kmul(Gtl311,gtu13)));
- CCTK_REAL Gtl212 = 0.5*PDstandardNth1gt22;
+ CCTK_REAL_VEC Gt211 =
+ kmadd(Gtl111,gtu12,kmadd(Gtl211,gtu22,kmul(Gtl311,gtu23)));
- CCTK_REAL Gtl213 = 0.5*(PDstandardNth1gt23 - PDstandardNth2gt13 +
- PDstandardNth3gt12);
+ CCTK_REAL_VEC Gt311 =
+ kmadd(Gtl111,gtu13,kmadd(Gtl211,gtu23,kmul(Gtl311,gtu33)));
- CCTK_REAL Gtl222 = 0.5*PDstandardNth2gt22;
+ CCTK_REAL_VEC Gt112 =
+ kmadd(Gtl112,gtu11,kmadd(Gtl212,gtu12,kmul(Gtl312,gtu13)));
- CCTK_REAL Gtl223 = 0.5*PDstandardNth3gt22;
+ CCTK_REAL_VEC Gt212 =
+ kmadd(Gtl112,gtu12,kmadd(Gtl212,gtu22,kmul(Gtl312,gtu23)));
- CCTK_REAL Gtl233 = -0.5*PDstandardNth2gt33 + PDstandardNth3gt23;
+ CCTK_REAL_VEC Gt312 =
+ kmadd(Gtl112,gtu13,kmadd(Gtl212,gtu23,kmul(Gtl312,gtu33)));
- CCTK_REAL Gtl311 = PDstandardNth1gt13 - 0.5*PDstandardNth3gt11;
+ CCTK_REAL_VEC Gt113 =
+ kmadd(Gtl113,gtu11,kmadd(Gtl213,gtu12,kmul(Gtl313,gtu13)));
- CCTK_REAL Gtl312 = 0.5*(PDstandardNth1gt23 + PDstandardNth2gt13 -
- PDstandardNth3gt12);
+ CCTK_REAL_VEC Gt213 =
+ kmadd(Gtl113,gtu12,kmadd(Gtl213,gtu22,kmul(Gtl313,gtu23)));
- CCTK_REAL Gtl313 = 0.5*PDstandardNth1gt33;
+ CCTK_REAL_VEC Gt313 =
+ kmadd(Gtl113,gtu13,kmadd(Gtl213,gtu23,kmul(Gtl313,gtu33)));
- CCTK_REAL Gtl322 = PDstandardNth2gt23 - 0.5*PDstandardNth3gt22;
+ CCTK_REAL_VEC Gt122 =
+ kmadd(Gtl122,gtu11,kmadd(Gtl222,gtu12,kmul(Gtl322,gtu13)));
- CCTK_REAL Gtl323 = 0.5*PDstandardNth2gt33;
+ CCTK_REAL_VEC Gt222 =
+ kmadd(Gtl122,gtu12,kmadd(Gtl222,gtu22,kmul(Gtl322,gtu23)));
- CCTK_REAL Gtl333 = 0.5*PDstandardNth3gt33;
+ CCTK_REAL_VEC Gt322 =
+ kmadd(Gtl122,gtu13,kmadd(Gtl222,gtu23,kmul(Gtl322,gtu33)));
- CCTK_REAL Gt111 = Gtl111*gtu11 + Gtl211*gtu12 + Gtl311*gtu13;
+ CCTK_REAL_VEC Gt123 =
+ kmadd(Gtl123,gtu11,kmadd(Gtl223,gtu12,kmul(Gtl323,gtu13)));
- CCTK_REAL Gt211 = Gtl111*gtu12 + Gtl211*gtu22 + Gtl311*gtu23;
+ CCTK_REAL_VEC Gt223 =
+ kmadd(Gtl123,gtu12,kmadd(Gtl223,gtu22,kmul(Gtl323,gtu23)));
- CCTK_REAL Gt311 = Gtl111*gtu13 + Gtl211*gtu23 + Gtl311*gtu33;
+ CCTK_REAL_VEC Gt323 =
+ kmadd(Gtl123,gtu13,kmadd(Gtl223,gtu23,kmul(Gtl323,gtu33)));
- CCTK_REAL Gt112 = Gtl112*gtu11 + Gtl212*gtu12 + Gtl312*gtu13;
+ CCTK_REAL_VEC Gt133 =
+ kmadd(Gtl133,gtu11,kmadd(Gtl233,gtu12,kmul(Gtl333,gtu13)));
- CCTK_REAL Gt212 = Gtl112*gtu12 + Gtl212*gtu22 + Gtl312*gtu23;
+ CCTK_REAL_VEC Gt233 =
+ kmadd(Gtl133,gtu12,kmadd(Gtl233,gtu22,kmul(Gtl333,gtu23)));
- CCTK_REAL Gt312 = Gtl112*gtu13 + Gtl212*gtu23 + Gtl312*gtu33;
+ CCTK_REAL_VEC Gt333 =
+ kmadd(Gtl133,gtu13,kmadd(Gtl233,gtu23,kmul(Gtl333,gtu33)));
- CCTK_REAL Gt113 = Gtl113*gtu11 + Gtl213*gtu12 + Gtl313*gtu13;
+ 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 Gt213 = Gtl113*gtu12 + Gtl213*gtu22 + Gtl313*gtu23;
+ 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 Gt313 = Gtl113*gtu13 + Gtl213*gtu23 + Gtl313*gtu33;
+ 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 Gt122 = Gtl122*gtu11 + Gtl222*gtu12 + Gtl322*gtu13;
+ CCTK_REAL_VEC fac1 =
+ IfThen(conformalMethod,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
- CCTK_REAL Gt222 = Gtl122*gtu12 + Gtl222*gtu22 + Gtl322*gtu23;
+ CCTK_REAL_VEC cdphi1 = kmul(fac1,JacPDstandardNth1phi);
- CCTK_REAL Gt322 = Gtl122*gtu13 + Gtl222*gtu23 + Gtl322*gtu33;
+ CCTK_REAL_VEC cdphi2 = kmul(fac1,JacPDstandardNth2phi);
- CCTK_REAL Gt123 = Gtl123*gtu11 + Gtl223*gtu12 + Gtl323*gtu13;
+ CCTK_REAL_VEC cdphi3 = kmul(fac1,JacPDstandardNth3phi);
- CCTK_REAL Gt223 = Gtl123*gtu12 + Gtl223*gtu22 + Gtl323*gtu23;
+ CCTK_REAL_VEC Atm11 =
+ kmadd(At11L,gtu11,kmadd(At12L,gtu12,kmul(At13L,gtu13)));
- CCTK_REAL Gt323 = Gtl123*gtu13 + Gtl223*gtu23 + Gtl323*gtu33;
+ CCTK_REAL_VEC Atm21 =
+ kmadd(At11L,gtu12,kmadd(At12L,gtu22,kmul(At13L,gtu23)));
- CCTK_REAL Gt133 = Gtl133*gtu11 + Gtl233*gtu12 + Gtl333*gtu13;
+ CCTK_REAL_VEC Atm31 =
+ kmadd(At11L,gtu13,kmadd(At12L,gtu23,kmul(At13L,gtu33)));
- CCTK_REAL Gt233 = Gtl133*gtu12 + Gtl233*gtu22 + Gtl333*gtu23;
+ CCTK_REAL_VEC Atm12 =
+ kmadd(At12L,gtu11,kmadd(At22L,gtu12,kmul(At23L,gtu13)));
- CCTK_REAL Gt333 = Gtl133*gtu13 + Gtl233*gtu23 + Gtl333*gtu33;
+ CCTK_REAL_VEC Atm22 =
+ kmadd(At12L,gtu12,kmadd(At22L,gtu22,kmul(At23L,gtu23)));
- CCTK_REAL Xtn1 = Gt111*gtu11 + Gt122*gtu22 + 2*(Gt112*gtu12 +
- Gt113*gtu13 + Gt123*gtu23) + Gt133*gtu33;
+ CCTK_REAL_VEC Atm32 =
+ kmadd(At12L,gtu13,kmadd(At22L,gtu23,kmul(At23L,gtu33)));
- CCTK_REAL Xtn2 = Gt211*gtu11 + Gt222*gtu22 + 2*(Gt212*gtu12 +
- Gt213*gtu13 + Gt223*gtu23) + Gt233*gtu33;
+ CCTK_REAL_VEC Atm13 =
+ kmadd(At13L,gtu11,kmadd(At23L,gtu12,kmul(At33L,gtu13)));
- CCTK_REAL Xtn3 = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu12 +
- Gt313*gtu13 + Gt323*gtu23) + Gt333*gtu33;
+ CCTK_REAL_VEC Atm23 =
+ kmadd(At13L,gtu12,kmadd(At23L,gtu22,kmul(At33L,gtu23)));
- CCTK_REAL fac1 = IfThen(conformalMethod,-0.5*INV(phiL),1);
+ CCTK_REAL_VEC Atm33 =
+ kmadd(At13L,gtu13,kmadd(At23L,gtu23,kmul(At33L,gtu33)));
- CCTK_REAL cdphi1 = fac1*PDstandardNth1phi;
+ CCTK_REAL_VEC Atu11 =
+ kmadd(Atm11,gtu11,kmadd(Atm12,gtu12,kmul(Atm13,gtu13)));
- CCTK_REAL cdphi2 = fac1*PDstandardNth2phi;
+ CCTK_REAL_VEC Atu12 =
+ kmadd(Atm11,gtu12,kmadd(Atm12,gtu22,kmul(Atm13,gtu23)));
- CCTK_REAL cdphi3 = fac1*PDstandardNth3phi;
+ CCTK_REAL_VEC Atu13 =
+ kmadd(Atm11,gtu13,kmadd(Atm12,gtu23,kmul(Atm13,gtu33)));
- CCTK_REAL Atm11 = At11L*gtu11 + At12L*gtu12 + At13L*gtu13;
+ CCTK_REAL_VEC Atu22 =
+ kmadd(Atm21,gtu12,kmadd(Atm22,gtu22,kmul(Atm23,gtu23)));
- CCTK_REAL Atm21 = At11L*gtu12 + At12L*gtu22 + At13L*gtu23;
+ CCTK_REAL_VEC Atu23 =
+ kmadd(Atm21,gtu13,kmadd(Atm22,gtu23,kmul(Atm23,gtu33)));
- CCTK_REAL Atm31 = At11L*gtu13 + At12L*gtu23 + At13L*gtu33;
+ CCTK_REAL_VEC Atu33 =
+ kmadd(Atm31,gtu13,kmadd(Atm32,gtu23,kmul(Atm33,gtu33)));
- CCTK_REAL Atm12 = At12L*gtu11 + At22L*gtu12 + At23L*gtu13;
+ CCTK_REAL_VEC e4phi =
+ IfThen(conformalMethod,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
- CCTK_REAL Atm22 = At12L*gtu12 + At22L*gtu22 + At23L*gtu23;
+ CCTK_REAL_VEC em4phi = INV(e4phi);
- CCTK_REAL Atm32 = At12L*gtu13 + At22L*gtu23 + At23L*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 Atm13 = At13L*gtu11 + At23L*gtu12 + At33L*gtu13;
+ CCTK_REAL_VEC S1 =
+ kmul(INV(alphaL),kmadd(beta1L,eTxxL,kmadd(beta2L,eTxyL,kmsub(beta3L,eTxzL,eTtxL))));
- CCTK_REAL Atm23 = At13L*gtu12 + At23L*gtu22 + At33L*gtu23;
+ CCTK_REAL_VEC S2 =
+ kmul(INV(alphaL),kmadd(beta1L,eTxyL,kmadd(beta2L,eTyyL,kmsub(beta3L,eTyzL,eTtyL))));
- CCTK_REAL Atm33 = At13L*gtu13 + At23L*gtu23 + At33L*gtu33;
+ CCTK_REAL_VEC S3 =
+ kmul(INV(alphaL),kmadd(beta1L,eTxzL,kmadd(beta2L,eTyzL,kmsub(beta3L,eTzzL,eTtzL))));
- CCTK_REAL Atu11 = Atm11*gtu11 + Atm12*gtu12 + Atm13*gtu13;
+ 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 Atu12 = Atm11*gtu12 + Atm12*gtu22 + Atm13*gtu23;
+ 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 Atu13 = Atm11*gtu13 + Atm12*gtu23 + Atm13*gtu33;
+ 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))))));
- CCTK_REAL Atu22 = Atm21*gtu12 + Atm22*gtu22 + Atm23*gtu23;
+ CCTK_REAL_VEC gt12rhsL =
+ kmul(ToReal(0.333333333333333333333333333333),kmadd(alphaL,kmul(At12L,ToReal(-6)),kmadd(gt12L,kadd(JacPDstandardNth1beta1,kmadd(JacPDstandardNth3beta3,ToReal(-2),JacPDstandardNth2beta2)),kmul(kmadd(gt22L,JacPDstandardNth1beta2,kmadd(gt23L,JacPDstandardNth1beta3,kmadd(gt11L,JacPDstandardNth2beta1,kmul(gt13L,JacPDstandardNth2beta3)))),ToReal(3)))));
- CCTK_REAL Atu23 = Atm21*gtu13 + Atm22*gtu23 + Atm23*gtu33;
+ CCTK_REAL_VEC gt13rhsL =
+ kmul(ToReal(0.333333333333333333333333333333),kmadd(alphaL,kmul(At13L,ToReal(-6)),kmadd(gt13L,kadd(JacPDstandardNth1beta1,kmadd(JacPDstandardNth2beta2,ToReal(-2),JacPDstandardNth3beta3)),kmul(kmadd(gt23L,JacPDstandardNth1beta2,kmadd(gt33L,JacPDstandardNth1beta3,kmadd(gt11L,JacPDstandardNth3beta1,kmul(gt12L,JacPDstandardNth3beta2)))),ToReal(3)))));
- CCTK_REAL Atu33 = Atm31*gtu13 + Atm32*gtu23 + Atm33*gtu33;
+ CCTK_REAL_VEC gt22rhsL =
+ kmul(ToReal(-0.666666666666666666666666666667),kmadd(kmadd(gt12L,JacPDstandardNth2beta1,kmul(gt23L,JacPDstandardNth2beta3)),ToReal(-3),kmadd(gt22L,kadd(JacPDstandardNth1beta1,kmadd(JacPDstandardNth2beta2,ToReal(-2),JacPDstandardNth3beta3)),kmul(alphaL,kmul(At22L,ToReal(3))))));
- CCTK_REAL e4phi = IfThen(conformalMethod,INV(SQR(phiL)),exp(4*phiL));
+ CCTK_REAL_VEC gt23rhsL =
+ kmul(ToReal(0.333333333333333333333333333333),kmadd(alphaL,kmul(At23L,ToReal(-6)),kmadd(gt23L,kadd(JacPDstandardNth2beta2,kmadd(JacPDstandardNth1beta1,ToReal(-2),JacPDstandardNth3beta3)),kmul(kmadd(gt13L,JacPDstandardNth2beta1,kmadd(gt33L,JacPDstandardNth2beta3,kmadd(gt12L,JacPDstandardNth3beta1,kmul(gt22L,JacPDstandardNth3beta2)))),ToReal(3)))));
- CCTK_REAL em4phi = INV(e4phi);
+ CCTK_REAL_VEC gt33rhsL =
+ kmul(ToReal(-0.666666666666666666666666666667),kmadd(kmadd(gt13L,JacPDstandardNth3beta1,kmul(gt23L,JacPDstandardNth3beta2)),ToReal(-3),kmadd(gt33L,kadd(JacPDstandardNth1beta1,kmadd(JacPDstandardNth3beta3,ToReal(-2),JacPDstandardNth2beta2)),kmul(alphaL,kmul(At33L,ToReal(3))))));
- CCTK_REAL rho = INV(SQR(alphaL))*(eTttL - 2*(beta2L*eTtyL +
- beta3L*eTtzL) + 2*(beta1L*(-eTtxL + beta2L*eTxyL + beta3L*eTxzL) +
- beta2L*beta3L*eTyzL) + eTxxL*SQR(beta1L) + eTyyL*SQR(beta2L) +
- eTzzL*SQR(beta3L));
+ 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),kmul(gtu33,JacPDstandardNth33beta1))))),ToReal(3),kmadd(gtu11,kadd(JacPDstandardNth12beta2,kmadd(JacPDstandardNth11beta1,ToReal(4),JacPDstandardNth13beta3)),kmadd(gtu12,kadd(JacPDstandardNth22beta2,kmadd(JacPDstandardNth21beta1,ToReal(4),JacPDstandardNth23beta3)),kmadd(gtu13,kadd(JacPDstandardNth32beta2,kmadd(JacPDstandardNth31beta1,ToReal(4),JacPDstandardNth33beta3)),kmul(alphaL,kmadd(kmadd(gtu11,S1,kmadd(gtu12,S2,kmul(gtu13,S3))),ToReal(-150.7964473723100754462068823974161384415),kmadd(kmadd(gtu11,JacPDstandardNth1trK,kmadd(gtu12,JacPDstandardNth2trK,kmul(gtu13,JacPDstandardNth3trK))),ToReal(-4),kmadd(ToReal(6),kmadd(Atu22,Gt122,kmadd(Atu33,Gt133,kmul(Atu11,kmadd(cdphi1,ToReal(6),Gt111)))),kmadd(kmadd(Atu23,Gt123,kmul(Atu12,kmadd(cdphi2,ToReal(3),Gt112))),ToReal(12),kmul(Atu13,kmadd(Gt113,ToReal(12),kmul(cdphi3,ToReal(36)))))))))))))))));
- CCTK_REAL S1 = (-eTtxL + beta1L*eTxxL + beta2L*eTxyL +
- beta3L*eTxzL)*INV(alphaL);
+ 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(gtu23,JacPDstandardNth23beta2,kmadd(gtu13,kadd(JacPDstandardNth13beta2,JacPDstandardNth31beta2),kmul(gtu33,JacPDstandardNth33beta2)))),ToReal(3),kmadd(gtu12,kadd(JacPDstandardNth11beta1,kadd(JacPDstandardNth13beta3,kmadd(JacPDstandardNth21beta2,ToReal(3),kmul(JacPDstandardNth12beta2,ToReal(4))))),kmadd(gtu22,kadd(JacPDstandardNth21beta1,kmadd(JacPDstandardNth22beta2,ToReal(4),JacPDstandardNth23beta3)),kmadd(gtu23,kadd(JacPDstandardNth31beta1,kmadd(JacPDstandardNth32beta2,ToReal(4),JacPDstandardNth33beta3)),kmul(alphaL,kmadd(kmadd(gtu12,S1,kmadd(gtu22,S2,kmul(gtu23,S3))),ToReal(-150.7964473723100754462068823974161384415),kmadd(kmadd(gtu12,JacPDstandardNth1trK,kmadd(gtu22,JacPDstandardNth2trK,kmul(gtu23,JacPDstandardNth3trK))),ToReal(-4),kmadd(ToReal(6),kmadd(Atu11,Gt211,kmadd(Atu33,Gt233,kmul(Atu22,kmadd(cdphi2,ToReal(6),Gt222)))),kmadd(kmadd(Atu13,Gt213,kmul(Atu12,kmadd(cdphi1,ToReal(3),Gt212))),ToReal(12),kmul(Atu23,kmadd(Gt223,ToReal(12),kmul(cdphi3,ToReal(36)))))))))))))))));
- CCTK_REAL S2 = (-eTtyL + beta1L*eTxyL + beta2L*eTyyL +
- beta3L*eTyzL)*INV(alphaL);
+ 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),kmadd(Xtn3,kmsub(kadd(JacPDstandardNth1beta1,JacPDstandardNth2beta2),ToReal(2),JacPDstandardNth3beta3),kmadd(kmadd(gtu11,JacPDstandardNth11beta3,kmadd(gtu12,kadd(JacPDstandardNth12beta3,JacPDstandardNth21beta3),kmadd(gtu22,JacPDstandardNth22beta3,kmul(gtu23,JacPDstandardNth32beta3)))),ToReal(3),kmadd(gtu13,kadd(JacPDstandardNth11beta1,kadd(JacPDstandardNth12beta2,kmadd(JacPDstandardNth31beta3,ToReal(3),kmul(JacPDstandardNth13beta3,ToReal(4))))),kmadd(gtu23,kadd(JacPDstandardNth21beta1,kmadd(JacPDstandardNth23beta3,ToReal(4),JacPDstandardNth22beta2)),kmadd(gtu33,kadd(JacPDstandardNth31beta1,kmadd(JacPDstandardNth33beta3,ToReal(4),JacPDstandardNth32beta2)),kmul(alphaL,kmadd(kmadd(gtu13,S1,kmadd(gtu23,S2,kmul(gtu33,S3))),ToReal(-150.7964473723100754462068823974161384415),kmadd(kmadd(gtu13,JacPDstandardNth1trK,kmadd(gtu23,JacPDstandardNth2trK,kmul(gtu33,JacPDstandardNth3trK))),ToReal(-4),kmadd(kmadd(Atu11,Gt311,kmul(Atu22,Gt322)),ToReal(6),kmadd(kmadd(Atu12,Gt312,kmadd(Atu13,kmadd(cdphi1,ToReal(3),Gt313),kmul(Atu23,kmadd(cdphi2,ToReal(3),Gt323)))),ToReal(12),kmul(Atu33,kmadd(Gt333,ToReal(6),kmul(cdphi3,ToReal(36)))))))))))))))));
- CCTK_REAL S3 = (-eTtzL + beta1L*eTxzL + beta2L*eTyzL +
- beta3L*eTzzL)*INV(alphaL);
+ CCTK_REAL_VEC Xt1rhsL = dotXt1;
- CCTK_REAL trS = em4phi*(eTxxL*gtu11 + eTyyL*gtu22 + 2*(eTxyL*gtu12 +
- eTxzL*gtu13 + eTyzL*gtu23) + eTzzL*gtu33);
+ CCTK_REAL_VEC Xt2rhsL = dotXt2;
- CCTK_REAL phirhsL =
- IfThen(conformalMethod,phiL*(-0.333333333333333333333333333333*(PDstandardNth1beta1
- + PDstandardNth2beta2 + PDstandardNth3beta3) +
- 0.333333333333333333333333333333*alphaL*trKL),0.166666666666666666666666666667*(PDstandardNth1beta1
- + PDstandardNth2beta2 + PDstandardNth3beta3) -
- 0.166666666666666666666666666667*alphaL*trKL);
+ CCTK_REAL_VEC Xt3rhsL = dotXt3;
- CCTK_REAL gt11rhsL = -0.666666666666666666666666666667*(3*alphaL*At11L
- - 3*(gt12L*PDstandardNth1beta2 + gt13L*PDstandardNth1beta3) +
- gt11L*(-2*PDstandardNth1beta1 + PDstandardNth2beta2 +
- PDstandardNth3beta3));
+ CCTK_REAL_VEC dottrK =
+ kmsub(alphaL,kadd(SQR(Atm11),kadd(SQR(Atm22),kadd(SQR(Atm33),kmadd(SQR(trKL),ToReal(0.333333333333333333333333333333),kmadd(kmadd(Atm12,Atm21,kmadd(Atm13,Atm31,kmul(Atm23,Atm32))),ToReal(2),kmul(kadd(rho,trS),ToReal(12.56637061435917295385057353311801153679))))))),kmul(em4phi,knmsub(JacPDstandardNth1alpha,Xtn1,knmsub(JacPDstandardNth2alpha,Xtn2,knmsub(JacPDstandardNth3alpha,Xtn3,kmadd(gtu11,kmadd(cdphi1,kmul(JacPDstandardNth1alpha,ToReal(2)),JacPDstandardNth11alpha),kmadd(gtu12,kadd(JacPDstandardNth12alpha,kadd(JacPDstandardNth21alpha,kmadd(cdphi2,kmul(JacPDstandardNth1alpha,ToReal(2)),kmul(cdphi1,kmul(JacPDstandardNth2alpha,ToReal(2)))))),kmadd(gtu22,kmadd(cdphi2,kmul(JacPDstandardNth2alpha,ToReal(2)),JacPDstandardNth22alpha),kmadd(gtu13,kadd(JacPDstandardNth13alpha,kadd(JacPDstandardNth31alpha,kmadd(cdphi3,kmul(JacPDstandardNth1alpha,ToReal(2)),kmul(cdphi1,kmul(JacPDstandardNth3alpha,ToReal(2)))))),kmadd(gtu23,kadd(JacPDstandardNth23alpha,kadd(JacPDstandardNth32alpha,kmadd(cdphi3,kmul(JacPDstandardNth2alpha,ToReal(2)),kmul(cdphi2,kmul(JacPDstandardNth3alpha,ToReal(2)))))),kmul(gtu33,kmadd(cdphi3,kmul(JacPDstandardNth3alpha,ToReal(2)),JacPDstandardNth33alpha))))))))))));
- CCTK_REAL gt12rhsL = 0.333333333333333333333333333333*(-6*alphaL*At12L
- + 3*(gt22L*PDstandardNth1beta2 + gt23L*PDstandardNth1beta3 +
- gt11L*PDstandardNth2beta1 + gt13L*PDstandardNth2beta3) +
- gt12L*(PDstandardNth1beta1 + PDstandardNth2beta2 -
- 2*PDstandardNth3beta3));
+ CCTK_REAL_VEC trKrhsL = dottrK;
- CCTK_REAL gt13rhsL = 0.333333333333333333333333333333*(-6*alphaL*At13L
- + 3*(gt23L*PDstandardNth1beta2 + gt33L*PDstandardNth1beta3 +
- gt11L*PDstandardNth3beta1 + gt12L*PDstandardNth3beta2) +
- gt13L*(PDstandardNth1beta1 - 2*PDstandardNth2beta2 +
- PDstandardNth3beta3));
-
- CCTK_REAL gt22rhsL = -0.666666666666666666666666666667*(3*alphaL*At22L
- - 3*(gt12L*PDstandardNth2beta1 + gt23L*PDstandardNth2beta3) +
- gt22L*(PDstandardNth1beta1 - 2*PDstandardNth2beta2 +
- PDstandardNth3beta3));
-
- CCTK_REAL gt23rhsL = 0.333333333333333333333333333333*(-6*alphaL*At23L
- + 3*(gt13L*PDstandardNth2beta1 + gt33L*PDstandardNth2beta3 +
- gt12L*PDstandardNth3beta1 + gt22L*PDstandardNth3beta2) +
- gt23L*(-2*PDstandardNth1beta1 + PDstandardNth2beta2 +
- PDstandardNth3beta3));
-
- CCTK_REAL gt33rhsL = -0.666666666666666666666666666667*(3*alphaL*At33L
- - 3*(gt13L*PDstandardNth3beta1 + gt23L*PDstandardNth3beta2) +
- gt33L*(PDstandardNth1beta1 + PDstandardNth2beta2 -
- 2*PDstandardNth3beta3));
-
- CCTK_REAL dotXt1 =
- 0.333333333333333333333333333333*(7*(gtu12*PDstandardNth12beta1 +
- gtu13*PDstandardNth13beta1) + 6*gtu23*PDstandardNth23beta1 +
- 3*(gtu22*PDstandardNth22beta1 + gtu33*PDstandardNth33beta1) -
- 6*(Atu11*PDstandardNth1alpha + Atu12*PDstandardNth2alpha +
- Atu13*PDstandardNth3alpha) + gtu11*(4*PDstandardNth11beta1 +
- PDstandardNth12beta2 + PDstandardNth13beta3 -
- 150.7964473723100754462068823974161384415*alphaL*S1) +
- gtu12*(PDstandardNth22beta2 + PDstandardNth23beta3 -
- 150.7964473723100754462068823974161384415*alphaL*S2) +
- gtu13*(PDstandardNth23beta2 + PDstandardNth33beta3 -
- 150.7964473723100754462068823974161384415*alphaL*S3) +
- (-PDstandardNth1beta1 + 2*PDstandardNth3beta3)*Xtn1 +
- 2*(alphaL*(18*(Atu11*cdphi1 + Atu12*cdphi2 + Atu13*cdphi3) +
- 6*(Atu12*Gt112 + Atu13*Gt113 + Atu23*Gt123) + 3*(Atu11*Gt111 +
- Atu22*Gt122 + Atu33*Gt133) - 2*(gtu11*PDstandardNth1trK +
- gtu12*PDstandardNth2trK + gtu13*PDstandardNth3trK)) +
- PDstandardNth2beta2*Xtn1) - 3*(PDstandardNth2beta1*Xtn2 +
- PDstandardNth3beta1*Xtn3));
-
- CCTK_REAL dotXt2 =
- 0.333333333333333333333333333333*(6*gtu13*PDstandardNth13beta2 +
- 3*(gtu11*PDstandardNth11beta2 + gtu33*PDstandardNth33beta2) -
- 6*(Atu12*PDstandardNth1alpha + Atu22*PDstandardNth2alpha +
- Atu23*PDstandardNth3alpha) + gtu12*(PDstandardNth11beta1 +
- 7*PDstandardNth12beta2 + PDstandardNth13beta3 -
- 150.7964473723100754462068823974161384415*alphaL*S1) +
- gtu22*(PDstandardNth12beta1 + 4*PDstandardNth22beta2 +
- PDstandardNth23beta3 -
- 150.7964473723100754462068823974161384415*alphaL*S2) +
- gtu23*(PDstandardNth13beta1 + 7*PDstandardNth23beta2 +
- PDstandardNth33beta3 -
- 150.7964473723100754462068823974161384415*alphaL*S3) +
- (-PDstandardNth2beta2 + 2*PDstandardNth3beta3)*Xtn2 +
- 2*(alphaL*(18*(Atu12*cdphi1 + Atu22*cdphi2 + Atu23*cdphi3) +
- 6*(Atu12*Gt212 + Atu13*Gt213 + Atu23*Gt223) + 3*(Atu11*Gt211 +
- Atu22*Gt222 + Atu33*Gt233) - 2*(gtu12*PDstandardNth1trK +
- gtu22*PDstandardNth2trK + gtu23*PDstandardNth3trK)) +
- PDstandardNth1beta1*Xtn2) - 3*(PDstandardNth1beta2*Xtn1 +
- PDstandardNth3beta2*Xtn3));
-
- CCTK_REAL dotXt3 =
- 0.333333333333333333333333333333*(6*gtu12*PDstandardNth12beta3 +
- 3*(gtu11*PDstandardNth11beta3 + gtu22*PDstandardNth22beta3) -
- 6*(Atu13*PDstandardNth1alpha + Atu23*PDstandardNth2alpha +
- Atu33*PDstandardNth3alpha) + gtu13*(PDstandardNth11beta1 +
- PDstandardNth12beta2 + 7*PDstandardNth13beta3 -
- 150.7964473723100754462068823974161384415*alphaL*S1) +
- gtu23*(PDstandardNth12beta1 + PDstandardNth22beta2 +
- 7*PDstandardNth23beta3 -
- 150.7964473723100754462068823974161384415*alphaL*S2) +
- gtu33*(PDstandardNth13beta1 + PDstandardNth23beta2 +
- 4*PDstandardNth33beta3 -
- 150.7964473723100754462068823974161384415*alphaL*S3) -
- 3*(PDstandardNth1beta3*Xtn1 + PDstandardNth2beta3*Xtn2) +
- (2*PDstandardNth2beta2 - PDstandardNth3beta3)*Xtn3 +
- 2*(alphaL*(18*(Atu13*cdphi1 + Atu23*cdphi2 + Atu33*cdphi3) +
- 6*(Atu12*Gt312 + Atu13*Gt313 + Atu23*Gt323) + 3*(Atu11*Gt311 +
- Atu22*Gt322 + Atu33*Gt333) - 2*(gtu13*PDstandardNth1trK +
- gtu23*PDstandardNth2trK + gtu33*PDstandardNth3trK)) +
- PDstandardNth1beta1*Xtn3));
-
- CCTK_REAL Xt1rhsL = dotXt1;
-
- CCTK_REAL Xt2rhsL = dotXt2;
-
- CCTK_REAL Xt3rhsL = dotXt3;
-
- CCTK_REAL dottrK = -(em4phi*(gtu11*PDstandardNth11alpha +
- gtu22*PDstandardNth22alpha + gtu33*(PDstandardNth33alpha +
- 2*cdphi3*PDstandardNth3alpha) + 2*(gtu12*PDstandardNth12alpha +
- gtu13*(PDstandardNth13alpha + cdphi1*PDstandardNth3alpha) +
- gtu23*(PDstandardNth23alpha + cdphi2*PDstandardNth3alpha)) +
- PDstandardNth1alpha*(2*(cdphi1*gtu11 + cdphi2*gtu12 + cdphi3*gtu13) -
- Xtn1) + PDstandardNth2alpha*(2*(cdphi1*gtu12 + cdphi2*gtu22 +
- cdphi3*gtu23) - Xtn2) - PDstandardNth3alpha*Xtn3)) +
- alphaL*(2*(Atm12*Atm21 + Atm13*Atm31 + Atm23*Atm32) +
- 12.56637061435917295385057353311801153679*(rho + trS) + SQR(Atm11) +
- SQR(Atm22) + SQR(Atm33) + 0.333333333333333333333333333333*SQR(trKL));
-
- CCTK_REAL trKrhsL = dottrK;
-
- CCTK_REAL alpharhsL =
- -(pow(alphaL,ToReal(harmonicN))*ToReal(harmonicF)*(trKL + (AL -
- trKL)*ToReal(LapseACoeff)));
-
- CCTK_REAL ArhsL = (dottrK -
- AL*ToReal(AlphaDriver))*ToReal(LapseACoeff);
-
- CCTK_REAL eta = fmin(1,INV(rL)*ToReal(SpatialBetaDriverRadius));
-
- CCTK_REAL theta = fmin(1,exp(1 -
- rL*INV(ToReal(SpatialShiftGammaCoeffRadius))));
-
- CCTK_REAL beta1rhsL = theta*(Xt1L + beta1L*eta*ToReal(BetaDriver)*(-1
- + ToReal(ShiftBCoeff)) + (B1L -
- Xt1L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
-
- CCTK_REAL beta2rhsL = theta*(Xt2L + beta2L*eta*ToReal(BetaDriver)*(-1
- + ToReal(ShiftBCoeff)) + (B2L -
- Xt2L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
-
- CCTK_REAL beta3rhsL = theta*(Xt3L + beta3L*eta*ToReal(BetaDriver)*(-1
- + ToReal(ShiftBCoeff)) + (B3L -
- Xt3L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
-
- CCTK_REAL B1rhsL = (dotXt1 -
- B1L*eta*ToReal(BetaDriver))*ToReal(ShiftBCoeff);
-
- CCTK_REAL B2rhsL = (dotXt2 -
- B2L*eta*ToReal(BetaDriver))*ToReal(ShiftBCoeff);
-
- CCTK_REAL B3rhsL = (dotXt3 -
- B3L*eta*ToReal(BetaDriver))*ToReal(ShiftBCoeff);
-
- /* Copy local copies back to grid functions */
- alpharhs[index] = alpharhsL;
- Arhs[index] = ArhsL;
- B1rhs[index] = B1rhsL;
- B2rhs[index] = B2rhsL;
- B3rhs[index] = B3rhsL;
- beta1rhs[index] = beta1rhsL;
- beta2rhs[index] = beta2rhsL;
- beta3rhs[index] = beta3rhsL;
- gt11rhs[index] = gt11rhsL;
- gt12rhs[index] = gt12rhsL;
- gt13rhs[index] = gt13rhsL;
- gt22rhs[index] = gt22rhsL;
- gt23rhs[index] = gt23rhsL;
- gt33rhs[index] = gt33rhsL;
- phirhs[index] = phirhsL;
- trKrhs[index] = trKrhsL;
- Xt1rhs[index] = Xt1rhsL;
- Xt2rhs[index] = Xt2rhsL;
- Xt3rhs[index] = Xt3rhsL;
+ CCTK_REAL_VEC alpharhsL =
+ kneg(kmul(kpow(alphaL,harmonicN),kmul(ToReal(harmonicF),kmadd(ksub(AL,trKL),ToReal(LapseACoeff),trKL))));
+
+ CCTK_REAL_VEC ArhsL =
+ kmul(knmsub(AL,ToReal(AlphaDriver),dottrK),ToReal(LapseACoeff));
+
+ CCTK_REAL_VEC eta =
+ kfmin(ToReal(1),kmul(INV(rL),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(kmadd(gtu11,JacPDstandardNth1alpha,kmadd(gtu12,JacPDstandardNth2alpha,kmul(gtu13,JacPDstandardNth3alpha))),kmul(phiL,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(kmadd(gtu12,JacPDstandardNth1alpha,kmadd(gtu22,JacPDstandardNth2alpha,kmul(gtu23,JacPDstandardNth3alpha))),kmul(phiL,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(kmadd(gtu13,JacPDstandardNth1alpha,kmadd(gtu23,JacPDstandardNth2alpha,kmul(gtu33,JacPDstandardNth3alpha))),kmul(phiL,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(beta1L,kmul(eta,ToReal(BetaDriver*(-1 +
+ ShiftBCoeff))),kmul(ksub(B1L,Xt1L),ToReal(ShiftBCoeff)))),ToReal(ShiftGammaCoeff)));
+
+ beta2rhsL =
+ kmul(theta,kmul(kadd(Xt2L,kmadd(beta2L,kmul(eta,ToReal(BetaDriver*(-1 +
+ ShiftBCoeff))),kmul(ksub(B2L,Xt2L),ToReal(ShiftBCoeff)))),ToReal(ShiftGammaCoeff)));
+
+ beta3rhsL =
+ kmul(theta,kmul(kadd(Xt3L,kmadd(beta3L,kmul(eta,ToReal(BetaDriver*(-1 +
+ ShiftBCoeff))),kmul(ksub(B3L,Xt3L),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));
+
+ /* 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(Arhs[index],ArhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B1rhs[index],B1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B2rhs[index],B2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt12rhs[index],gt12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt13rhs[index],gt13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt22rhs[index],gt22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt23rhs[index],gt23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt33rhs[index],gt33rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(phirhs[index],phirhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(trKrhs[index],trKrhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt1rhs[index],Xt1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt2rhs[index],Xt2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt3rhs[index],Xt3rhsL,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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_hi(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_hi(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_hi(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_hi(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_hi(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_hi(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_hi(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_hi(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_hi(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_hi(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_hi(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt3rhs[index],Xt3rhsL,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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_lo(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_lo(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_lo(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_lo(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_lo(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_lo(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_lo(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_lo(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_lo(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_lo(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_lo(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt3rhs[index],Xt3rhsL,elt_count);
+ break;
+ }
+ vec_store_nta(alpharhs[index],alpharhsL);
+ vec_store_nta(Arhs[index],ArhsL);
+ vec_store_nta(B1rhs[index],B1rhsL);
+ vec_store_nta(B2rhs[index],B2rhsL);
+ vec_store_nta(B3rhs[index],B3rhsL);
+ vec_store_nta(beta1rhs[index],beta1rhsL);
+ vec_store_nta(beta2rhs[index],beta2rhsL);
+ vec_store_nta(beta3rhs[index],beta3rhsL);
+ vec_store_nta(gt11rhs[index],gt11rhsL);
+ vec_store_nta(gt12rhs[index],gt12rhsL);
+ vec_store_nta(gt13rhs[index],gt13rhsL);
+ vec_store_nta(gt22rhs[index],gt22rhsL);
+ vec_store_nta(gt23rhs[index],gt23rhsL);
+ vec_store_nta(gt33rhs[index],gt33rhsL);
+ vec_store_nta(phirhs[index],phirhsL);
+ vec_store_nta(trKrhs[index],trKrhsL);
+ vec_store_nta(Xt1rhs[index],Xt1rhsL);
+ vec_store_nta(Xt2rhs[index],Xt2rhsL);
+ vec_store_nta(Xt3rhs[index],Xt3rhsL);
}
- LC_ENDLOOP3 (ML_BSSN_O8_RHS1);
+ LC_ENDLOOP3VEC (ML_BSSN_O8_RHS1);
}
extern "C" void ML_BSSN_O8_RHS1(CCTK_ARGUMENTS)
@@ -606,5 +1486,43 @@ extern "C" void ML_BSSN_O8_RHS1(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O8_RHS1_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_O8_RHS1_calc_every != ML_BSSN_O8_RHS1_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"grid::coordinates","Grid::coordinates","ML_BSSN_O8::ML_curv","ML_BSSN_O8::ML_dtlapse","ML_BSSN_O8::ML_dtlapserhs","ML_BSSN_O8::ML_dtshift","ML_BSSN_O8::ML_dtshiftrhs","ML_BSSN_O8::ML_Gamma","ML_BSSN_O8::ML_Gammarhs","ML_BSSN_O8::ML_lapse","ML_BSSN_O8::ML_lapserhs","ML_BSSN_O8::ML_log_confac","ML_BSSN_O8::ML_log_confacrhs","ML_BSSN_O8::ML_metric","ML_BSSN_O8::ML_metricrhs","ML_BSSN_O8::ML_shift","ML_BSSN_O8::ML_shiftrhs","ML_BSSN_O8::ML_trace_curv","ML_BSSN_O8::ML_trace_curvrhs"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O8_RHS1", 19, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O8_RHS1", 1, 1, 1);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O8_RHS1", 2, 2, 2);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O8_RHS1", 3, 3, 3);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O8_RHS1", 4, 4, 4);
+ break;
+ }
+
GenericFD_LoopOverInterior(cctkGH, &ML_BSSN_O8_RHS1_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_O8_RHS1_Body");
+ }
}
diff --git a/ML_BSSN_O8/src/ML_BSSN_O8_RHS2.cc b/ML_BSSN_O8/src/ML_BSSN_O8_RHS2.cc
index 4570475..841675a 100644
--- a/ML_BSSN_O8/src/ML_BSSN_O8_RHS2.cc
+++ b/ML_BSSN_O8/src/ML_BSSN_O8_RHS2.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_O8_RHS2_SelectBCs(CCTK_ARGUMENTS)
{
@@ -33,7 +34,7 @@ extern "C" void ML_BSSN_O8_RHS2_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_BSSN_O8_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_O8_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;
@@ -41,21 +42,6 @@ static void ML_BSSN_O8_RHS2_Body(cGH const * restrict const cctkGH, int const di
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O8_RHS2_Body");
- }
-
- if (cctk_iteration % ML_BSSN_O8_RHS2_calc_every != ML_BSSN_O8_RHS2_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN_O8::ML_curv","ML_BSSN_O8::ML_curvrhs","ML_BSSN_O8::ML_Gamma","ML_BSSN_O8::ML_lapse","ML_BSSN_O8::ML_log_confac","ML_BSSN_O8::ML_metric","ML_BSSN_O8::ML_shift","ML_BSSN_O8::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O8_RHS2", 8, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O8_RHS2", 4, 4, 4);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -65,90 +51,199 @@ static void ML_BSSN_O8_RHS2_Body(cGH const * restrict const cctkGH, int const di
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o1024dx = 0.0009765625*INV(dx);
- CCTK_REAL const p1o1024dy = 0.0009765625*INV(dy);
- CCTK_REAL const p1o1024dz = 0.0009765625*INV(dz);
- CCTK_REAL const p1o1680dx = 0.000595238095238095238095238095238*INV(dx);
- CCTK_REAL const p1o1680dy = 0.000595238095238095238095238095238*INV(dy);
- CCTK_REAL const p1o1680dz = 0.000595238095238095238095238095238*INV(dz);
- CCTK_REAL const p1o5040dx2 = 0.000198412698412698412698412698413*INV(SQR(dx));
- CCTK_REAL const p1o5040dy2 = 0.000198412698412698412698412698413*INV(SQR(dy));
- CCTK_REAL const p1o5040dz2 = 0.000198412698412698412698412698413*INV(SQR(dz));
- CCTK_REAL const p1o560dx = 0.00178571428571428571428571428571*INV(dx);
- CCTK_REAL const p1o560dy = 0.00178571428571428571428571428571*INV(dy);
- CCTK_REAL const p1o560dz = 0.00178571428571428571428571428571*INV(dz);
- CCTK_REAL const p1o705600dxdy = 1.41723356009070294784580498866e-6*INV(dx)*INV(dy);
- CCTK_REAL const p1o705600dxdz = 1.41723356009070294784580498866e-6*INV(dx)*INV(dz);
- CCTK_REAL const p1o705600dydz = 1.41723356009070294784580498866e-6*INV(dy)*INV(dz);
- CCTK_REAL const p1o840dx = 0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const p1o840dy = 0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const p1o840dz = 0.00119047619047619047619047619048*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o840dx = -0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const pm1o840dy = -0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const pm1o840dz = -0.00119047619047619047619047619048*INV(dz);
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_O8_RHS2,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_O8_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 alphaL = alpha[index];
- CCTK_REAL At11L = At11[index];
- CCTK_REAL At12L = At12[index];
- CCTK_REAL At13L = At13[index];
- CCTK_REAL At22L = At22[index];
- CCTK_REAL At23L = At23[index];
- CCTK_REAL At33L = At33[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL gt11L = gt11[index];
- CCTK_REAL gt12L = gt12[index];
- CCTK_REAL gt13L = gt13[index];
- CCTK_REAL gt22L = gt22[index];
- CCTK_REAL gt23L = gt23[index];
- CCTK_REAL gt33L = gt33[index];
- CCTK_REAL phiL = phi[index];
- CCTK_REAL trKL = trK[index];
- CCTK_REAL Xt1L = Xt1[index];
- CCTK_REAL Xt2L = Xt2[index];
- CCTK_REAL Xt3L = Xt3[index];
-
- CCTK_REAL eTxxL, eTxyL, eTxzL, eTyyL, eTyzL, eTzzL;
+ 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 eTxxL, eTxyL, eTxzL, eTyyL, eTyzL, eTzzL;
if (*stress_energy_state)
{
- eTxxL = eTxx[index];
- eTxyL = eTxy[index];
- eTxzL = eTxz[index];
- eTyyL = eTyy[index];
- eTyzL = eTyz[index];
- eTzzL = eTzz[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
{
@@ -160,99 +255,507 @@ static void ML_BSSN_O8_RHS2_Body(cGH const * restrict const cctkGH, int const di
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 const PDstandardNth1alpha = PDstandardNth1(&alpha[index]);
- CCTK_REAL const PDstandardNth2alpha = PDstandardNth2(&alpha[index]);
- CCTK_REAL const PDstandardNth3alpha = PDstandardNth3(&alpha[index]);
- CCTK_REAL const PDstandardNth11alpha = PDstandardNth11(&alpha[index]);
- CCTK_REAL const PDstandardNth22alpha = PDstandardNth22(&alpha[index]);
- CCTK_REAL const PDstandardNth33alpha = PDstandardNth33(&alpha[index]);
- CCTK_REAL const PDstandardNth12alpha = PDstandardNth12(&alpha[index]);
- CCTK_REAL const PDstandardNth13alpha = PDstandardNth13(&alpha[index]);
- CCTK_REAL const PDstandardNth23alpha = PDstandardNth23(&alpha[index]);
- CCTK_REAL const PDstandardNth1beta1 = PDstandardNth1(&beta1[index]);
- CCTK_REAL const PDstandardNth2beta1 = PDstandardNth2(&beta1[index]);
- CCTK_REAL const PDstandardNth3beta1 = PDstandardNth3(&beta1[index]);
- CCTK_REAL const PDstandardNth1beta2 = PDstandardNth1(&beta2[index]);
- CCTK_REAL const PDstandardNth2beta2 = PDstandardNth2(&beta2[index]);
- CCTK_REAL const PDstandardNth3beta2 = PDstandardNth3(&beta2[index]);
- CCTK_REAL const PDstandardNth1beta3 = PDstandardNth1(&beta3[index]);
- CCTK_REAL const PDstandardNth2beta3 = PDstandardNth2(&beta3[index]);
- CCTK_REAL const PDstandardNth3beta3 = PDstandardNth3(&beta3[index]);
- CCTK_REAL const PDstandardNth1gt11 = PDstandardNth1(&gt11[index]);
- CCTK_REAL const PDstandardNth2gt11 = PDstandardNth2(&gt11[index]);
- CCTK_REAL const PDstandardNth3gt11 = PDstandardNth3(&gt11[index]);
- CCTK_REAL const PDstandardNth11gt11 = PDstandardNth11(&gt11[index]);
- CCTK_REAL const PDstandardNth22gt11 = PDstandardNth22(&gt11[index]);
- CCTK_REAL const PDstandardNth33gt11 = PDstandardNth33(&gt11[index]);
- CCTK_REAL const PDstandardNth12gt11 = PDstandardNth12(&gt11[index]);
- CCTK_REAL const PDstandardNth13gt11 = PDstandardNth13(&gt11[index]);
- CCTK_REAL const PDstandardNth23gt11 = PDstandardNth23(&gt11[index]);
- CCTK_REAL const PDstandardNth1gt12 = PDstandardNth1(&gt12[index]);
- CCTK_REAL const PDstandardNth2gt12 = PDstandardNth2(&gt12[index]);
- CCTK_REAL const PDstandardNth3gt12 = PDstandardNth3(&gt12[index]);
- CCTK_REAL const PDstandardNth11gt12 = PDstandardNth11(&gt12[index]);
- CCTK_REAL const PDstandardNth22gt12 = PDstandardNth22(&gt12[index]);
- CCTK_REAL const PDstandardNth33gt12 = PDstandardNth33(&gt12[index]);
- CCTK_REAL const PDstandardNth12gt12 = PDstandardNth12(&gt12[index]);
- CCTK_REAL const PDstandardNth13gt12 = PDstandardNth13(&gt12[index]);
- CCTK_REAL const PDstandardNth23gt12 = PDstandardNth23(&gt12[index]);
- CCTK_REAL const PDstandardNth1gt13 = PDstandardNth1(&gt13[index]);
- CCTK_REAL const PDstandardNth2gt13 = PDstandardNth2(&gt13[index]);
- CCTK_REAL const PDstandardNth3gt13 = PDstandardNth3(&gt13[index]);
- CCTK_REAL const PDstandardNth11gt13 = PDstandardNth11(&gt13[index]);
- CCTK_REAL const PDstandardNth22gt13 = PDstandardNth22(&gt13[index]);
- CCTK_REAL const PDstandardNth33gt13 = PDstandardNth33(&gt13[index]);
- CCTK_REAL const PDstandardNth12gt13 = PDstandardNth12(&gt13[index]);
- CCTK_REAL const PDstandardNth13gt13 = PDstandardNth13(&gt13[index]);
- CCTK_REAL const PDstandardNth23gt13 = PDstandardNth23(&gt13[index]);
- CCTK_REAL const PDstandardNth1gt22 = PDstandardNth1(&gt22[index]);
- CCTK_REAL const PDstandardNth2gt22 = PDstandardNth2(&gt22[index]);
- CCTK_REAL const PDstandardNth3gt22 = PDstandardNth3(&gt22[index]);
- CCTK_REAL const PDstandardNth11gt22 = PDstandardNth11(&gt22[index]);
- CCTK_REAL const PDstandardNth22gt22 = PDstandardNth22(&gt22[index]);
- CCTK_REAL const PDstandardNth33gt22 = PDstandardNth33(&gt22[index]);
- CCTK_REAL const PDstandardNth12gt22 = PDstandardNth12(&gt22[index]);
- CCTK_REAL const PDstandardNth13gt22 = PDstandardNth13(&gt22[index]);
- CCTK_REAL const PDstandardNth23gt22 = PDstandardNth23(&gt22[index]);
- CCTK_REAL const PDstandardNth1gt23 = PDstandardNth1(&gt23[index]);
- CCTK_REAL const PDstandardNth2gt23 = PDstandardNth2(&gt23[index]);
- CCTK_REAL const PDstandardNth3gt23 = PDstandardNth3(&gt23[index]);
- CCTK_REAL const PDstandardNth11gt23 = PDstandardNth11(&gt23[index]);
- CCTK_REAL const PDstandardNth22gt23 = PDstandardNth22(&gt23[index]);
- CCTK_REAL const PDstandardNth33gt23 = PDstandardNth33(&gt23[index]);
- CCTK_REAL const PDstandardNth12gt23 = PDstandardNth12(&gt23[index]);
- CCTK_REAL const PDstandardNth13gt23 = PDstandardNth13(&gt23[index]);
- CCTK_REAL const PDstandardNth23gt23 = PDstandardNth23(&gt23[index]);
- CCTK_REAL const PDstandardNth1gt33 = PDstandardNth1(&gt33[index]);
- CCTK_REAL const PDstandardNth2gt33 = PDstandardNth2(&gt33[index]);
- CCTK_REAL const PDstandardNth3gt33 = PDstandardNth3(&gt33[index]);
- CCTK_REAL const PDstandardNth11gt33 = PDstandardNth11(&gt33[index]);
- CCTK_REAL const PDstandardNth22gt33 = PDstandardNth22(&gt33[index]);
- CCTK_REAL const PDstandardNth33gt33 = PDstandardNth33(&gt33[index]);
- CCTK_REAL const PDstandardNth12gt33 = PDstandardNth12(&gt33[index]);
- CCTK_REAL const PDstandardNth13gt33 = PDstandardNth13(&gt33[index]);
- CCTK_REAL const PDstandardNth23gt33 = PDstandardNth23(&gt33[index]);
- CCTK_REAL const PDstandardNth1phi = PDstandardNth1(&phi[index]);
- CCTK_REAL const PDstandardNth2phi = PDstandardNth2(&phi[index]);
- CCTK_REAL const PDstandardNth3phi = PDstandardNth3(&phi[index]);
- CCTK_REAL const PDstandardNth11phi = PDstandardNth11(&phi[index]);
- CCTK_REAL const PDstandardNth22phi = PDstandardNth22(&phi[index]);
- CCTK_REAL const PDstandardNth33phi = PDstandardNth33(&phi[index]);
- CCTK_REAL const PDstandardNth12phi = PDstandardNth12(&phi[index]);
- CCTK_REAL const PDstandardNth13phi = PDstandardNth13(&phi[index]);
- CCTK_REAL const PDstandardNth23phi = PDstandardNth23(&phi[index]);
- CCTK_REAL const PDstandardNth1Xt1 = PDstandardNth1(&Xt1[index]);
- CCTK_REAL const PDstandardNth2Xt1 = PDstandardNth2(&Xt1[index]);
- CCTK_REAL const PDstandardNth3Xt1 = PDstandardNth3(&Xt1[index]);
- CCTK_REAL const PDstandardNth1Xt2 = PDstandardNth1(&Xt2[index]);
- CCTK_REAL const PDstandardNth2Xt2 = PDstandardNth2(&Xt2[index]);
- CCTK_REAL const PDstandardNth3Xt2 = PDstandardNth3(&Xt2[index]);
- CCTK_REAL const PDstandardNth1Xt3 = PDstandardNth1(&Xt3[index]);
- CCTK_REAL const PDstandardNth2Xt3 = PDstandardNth2(&Xt3[index]);
- CCTK_REAL const PDstandardNth3Xt3 = PDstandardNth3(&Xt3[index]);
+ 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);
@@ -261,465 +764,1092 @@ static void ML_BSSN_O8_RHS2_Body(cGH const * restrict const cctkGH, int const di
ptrdiff_t dir3 = Sign(beta3L);
- CCTK_REAL detgt = 1;
+ 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 gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L));
+ CCTK_REAL_VEC gtu33 = kmul(INV(detgt),kmsub(gt11L,gt22L,SQR(gt12L)));
- CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt);
+ CCTK_REAL_VEC Gtl111 = kmul(JacPDstandardNth1gt11,ToReal(0.5));
- CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC Gtl112 = kmul(JacPDstandardNth2gt11,ToReal(0.5));
- CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L));
+ CCTK_REAL_VEC Gtl113 = kmul(JacPDstandardNth3gt11,ToReal(0.5));
- CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC Gtl122 =
+ kmadd(JacPDstandardNth1gt22,ToReal(-0.5),JacPDstandardNth2gt12);
- CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L));
+ CCTK_REAL_VEC Gtl123 =
+ kmul(kadd(JacPDstandardNth2gt13,ksub(JacPDstandardNth3gt12,JacPDstandardNth1gt23)),ToReal(0.5));
- CCTK_REAL Gtl111 = 0.5*PDstandardNth1gt11;
+ CCTK_REAL_VEC Gtl133 =
+ kmadd(JacPDstandardNth1gt33,ToReal(-0.5),JacPDstandardNth3gt13);
- CCTK_REAL Gtl112 = 0.5*PDstandardNth2gt11;
+ CCTK_REAL_VEC Gtl211 =
+ kmadd(JacPDstandardNth2gt11,ToReal(-0.5),JacPDstandardNth1gt12);
- CCTK_REAL Gtl113 = 0.5*PDstandardNth3gt11;
+ CCTK_REAL_VEC Gtl212 = kmul(JacPDstandardNth1gt22,ToReal(0.5));
- CCTK_REAL Gtl122 = -0.5*PDstandardNth1gt22 + PDstandardNth2gt12;
+ CCTK_REAL_VEC Gtl213 =
+ kmul(kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth3gt12,JacPDstandardNth2gt13)),ToReal(0.5));
- CCTK_REAL Gtl123 = 0.5*(-PDstandardNth1gt23 + PDstandardNth2gt13 +
- PDstandardNth3gt12);
+ CCTK_REAL_VEC Gtl222 = kmul(JacPDstandardNth2gt22,ToReal(0.5));
- CCTK_REAL Gtl133 = -0.5*PDstandardNth1gt33 + PDstandardNth3gt13;
+ CCTK_REAL_VEC Gtl223 = kmul(JacPDstandardNth3gt22,ToReal(0.5));
- CCTK_REAL Gtl211 = PDstandardNth1gt12 - 0.5*PDstandardNth2gt11;
+ CCTK_REAL_VEC Gtl233 =
+ kmadd(JacPDstandardNth2gt33,ToReal(-0.5),JacPDstandardNth3gt23);
- CCTK_REAL Gtl212 = 0.5*PDstandardNth1gt22;
+ CCTK_REAL_VEC Gtl311 =
+ kmadd(JacPDstandardNth3gt11,ToReal(-0.5),JacPDstandardNth1gt13);
- CCTK_REAL Gtl213 = 0.5*(PDstandardNth1gt23 - PDstandardNth2gt13 +
- PDstandardNth3gt12);
+ CCTK_REAL_VEC Gtl312 =
+ kmul(kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth2gt13,JacPDstandardNth3gt12)),ToReal(0.5));
- CCTK_REAL Gtl222 = 0.5*PDstandardNth2gt22;
+ CCTK_REAL_VEC Gtl313 = kmul(JacPDstandardNth1gt33,ToReal(0.5));
- CCTK_REAL Gtl223 = 0.5*PDstandardNth3gt22;
+ CCTK_REAL_VEC Gtl322 =
+ kmadd(JacPDstandardNth3gt22,ToReal(-0.5),JacPDstandardNth2gt23);
- CCTK_REAL Gtl233 = -0.5*PDstandardNth2gt33 + PDstandardNth3gt23;
+ CCTK_REAL_VEC Gtl323 = kmul(JacPDstandardNth2gt33,ToReal(0.5));
- CCTK_REAL Gtl311 = PDstandardNth1gt13 - 0.5*PDstandardNth3gt11;
+ CCTK_REAL_VEC Gtl333 = kmul(JacPDstandardNth3gt33,ToReal(0.5));
- CCTK_REAL Gtl312 = 0.5*(PDstandardNth1gt23 + PDstandardNth2gt13 -
- PDstandardNth3gt12);
+ CCTK_REAL_VEC Gtlu111 =
+ kmadd(Gtl111,gtu11,kmadd(Gtl112,gtu12,kmul(Gtl113,gtu13)));
- CCTK_REAL Gtl313 = 0.5*PDstandardNth1gt33;
+ CCTK_REAL_VEC Gtlu112 =
+ kmadd(Gtl111,gtu12,kmadd(Gtl112,gtu22,kmul(Gtl113,gtu23)));
- CCTK_REAL Gtl322 = PDstandardNth2gt23 - 0.5*PDstandardNth3gt22;
+ CCTK_REAL_VEC Gtlu113 =
+ kmadd(Gtl111,gtu13,kmadd(Gtl112,gtu23,kmul(Gtl113,gtu33)));
- CCTK_REAL Gtl323 = 0.5*PDstandardNth2gt33;
+ CCTK_REAL_VEC Gtlu121 =
+ kmadd(Gtl112,gtu11,kmadd(Gtl122,gtu12,kmul(Gtl123,gtu13)));
- CCTK_REAL Gtl333 = 0.5*PDstandardNth3gt33;
+ CCTK_REAL_VEC Gtlu122 =
+ kmadd(Gtl112,gtu12,kmadd(Gtl122,gtu22,kmul(Gtl123,gtu23)));
- CCTK_REAL Gtlu111 = Gtl111*gtu11 + Gtl112*gtu12 + Gtl113*gtu13;
+ CCTK_REAL_VEC Gtlu123 =
+ kmadd(Gtl112,gtu13,kmadd(Gtl122,gtu23,kmul(Gtl123,gtu33)));
- CCTK_REAL Gtlu112 = Gtl111*gtu12 + Gtl112*gtu22 + Gtl113*gtu23;
+ CCTK_REAL_VEC Gtlu131 =
+ kmadd(Gtl113,gtu11,kmadd(Gtl123,gtu12,kmul(Gtl133,gtu13)));
- CCTK_REAL Gtlu113 = Gtl111*gtu13 + Gtl112*gtu23 + Gtl113*gtu33;
+ CCTK_REAL_VEC Gtlu132 =
+ kmadd(Gtl113,gtu12,kmadd(Gtl123,gtu22,kmul(Gtl133,gtu23)));
- CCTK_REAL Gtlu121 = Gtl112*gtu11 + Gtl122*gtu12 + Gtl123*gtu13;
+ CCTK_REAL_VEC Gtlu133 =
+ kmadd(Gtl113,gtu13,kmadd(Gtl123,gtu23,kmul(Gtl133,gtu33)));
- CCTK_REAL Gtlu122 = Gtl112*gtu12 + Gtl122*gtu22 + Gtl123*gtu23;
+ CCTK_REAL_VEC Gtlu211 =
+ kmadd(Gtl211,gtu11,kmadd(Gtl212,gtu12,kmul(Gtl213,gtu13)));
- CCTK_REAL Gtlu123 = Gtl112*gtu13 + Gtl122*gtu23 + Gtl123*gtu33;
+ CCTK_REAL_VEC Gtlu212 =
+ kmadd(Gtl211,gtu12,kmadd(Gtl212,gtu22,kmul(Gtl213,gtu23)));
- CCTK_REAL Gtlu131 = Gtl113*gtu11 + Gtl123*gtu12 + Gtl133*gtu13;
+ CCTK_REAL_VEC Gtlu213 =
+ kmadd(Gtl211,gtu13,kmadd(Gtl212,gtu23,kmul(Gtl213,gtu33)));
- CCTK_REAL Gtlu132 = Gtl113*gtu12 + Gtl123*gtu22 + Gtl133*gtu23;
+ CCTK_REAL_VEC Gtlu221 =
+ kmadd(Gtl212,gtu11,kmadd(Gtl222,gtu12,kmul(Gtl223,gtu13)));
- CCTK_REAL Gtlu133 = Gtl113*gtu13 + Gtl123*gtu23 + Gtl133*gtu33;
+ CCTK_REAL_VEC Gtlu222 =
+ kmadd(Gtl212,gtu12,kmadd(Gtl222,gtu22,kmul(Gtl223,gtu23)));
- CCTK_REAL Gtlu211 = Gtl211*gtu11 + Gtl212*gtu12 + Gtl213*gtu13;
+ CCTK_REAL_VEC Gtlu223 =
+ kmadd(Gtl212,gtu13,kmadd(Gtl222,gtu23,kmul(Gtl223,gtu33)));
- CCTK_REAL Gtlu212 = Gtl211*gtu12 + Gtl212*gtu22 + Gtl213*gtu23;
+ CCTK_REAL_VEC Gtlu231 =
+ kmadd(Gtl213,gtu11,kmadd(Gtl223,gtu12,kmul(Gtl233,gtu13)));
- CCTK_REAL Gtlu213 = Gtl211*gtu13 + Gtl212*gtu23 + Gtl213*gtu33;
+ CCTK_REAL_VEC Gtlu232 =
+ kmadd(Gtl213,gtu12,kmadd(Gtl223,gtu22,kmul(Gtl233,gtu23)));
- CCTK_REAL Gtlu221 = Gtl212*gtu11 + Gtl222*gtu12 + Gtl223*gtu13;
+ CCTK_REAL_VEC Gtlu233 =
+ kmadd(Gtl213,gtu13,kmadd(Gtl223,gtu23,kmul(Gtl233,gtu33)));
- CCTK_REAL Gtlu222 = Gtl212*gtu12 + Gtl222*gtu22 + Gtl223*gtu23;
+ CCTK_REAL_VEC Gtlu311 =
+ kmadd(Gtl311,gtu11,kmadd(Gtl312,gtu12,kmul(Gtl313,gtu13)));
- CCTK_REAL Gtlu223 = Gtl212*gtu13 + Gtl222*gtu23 + Gtl223*gtu33;
+ CCTK_REAL_VEC Gtlu312 =
+ kmadd(Gtl311,gtu12,kmadd(Gtl312,gtu22,kmul(Gtl313,gtu23)));
- CCTK_REAL Gtlu231 = Gtl213*gtu11 + Gtl223*gtu12 + Gtl233*gtu13;
+ CCTK_REAL_VEC Gtlu313 =
+ kmadd(Gtl311,gtu13,kmadd(Gtl312,gtu23,kmul(Gtl313,gtu33)));
- CCTK_REAL Gtlu232 = Gtl213*gtu12 + Gtl223*gtu22 + Gtl233*gtu23;
+ CCTK_REAL_VEC Gtlu321 =
+ kmadd(Gtl312,gtu11,kmadd(Gtl322,gtu12,kmul(Gtl323,gtu13)));
- CCTK_REAL Gtlu233 = Gtl213*gtu13 + Gtl223*gtu23 + Gtl233*gtu33;
+ CCTK_REAL_VEC Gtlu322 =
+ kmadd(Gtl312,gtu12,kmadd(Gtl322,gtu22,kmul(Gtl323,gtu23)));
- CCTK_REAL Gtlu311 = Gtl311*gtu11 + Gtl312*gtu12 + Gtl313*gtu13;
+ CCTK_REAL_VEC Gtlu323 =
+ kmadd(Gtl312,gtu13,kmadd(Gtl322,gtu23,kmul(Gtl323,gtu33)));
- CCTK_REAL Gtlu312 = Gtl311*gtu12 + Gtl312*gtu22 + Gtl313*gtu23;
+ CCTK_REAL_VEC Gtlu331 =
+ kmadd(Gtl313,gtu11,kmadd(Gtl323,gtu12,kmul(Gtl333,gtu13)));
- CCTK_REAL Gtlu313 = Gtl311*gtu13 + Gtl312*gtu23 + Gtl313*gtu33;
+ CCTK_REAL_VEC Gtlu332 =
+ kmadd(Gtl313,gtu12,kmadd(Gtl323,gtu22,kmul(Gtl333,gtu23)));
- CCTK_REAL Gtlu321 = Gtl312*gtu11 + Gtl322*gtu12 + Gtl323*gtu13;
+ CCTK_REAL_VEC Gtlu333 =
+ kmadd(Gtl313,gtu13,kmadd(Gtl323,gtu23,kmul(Gtl333,gtu33)));
- CCTK_REAL Gtlu322 = Gtl312*gtu12 + Gtl322*gtu22 + Gtl323*gtu23;
+ CCTK_REAL_VEC Gt111 =
+ kmadd(Gtl111,gtu11,kmadd(Gtl211,gtu12,kmul(Gtl311,gtu13)));
- CCTK_REAL Gtlu323 = Gtl312*gtu13 + Gtl322*gtu23 + Gtl323*gtu33;
+ CCTK_REAL_VEC Gt211 =
+ kmadd(Gtl111,gtu12,kmadd(Gtl211,gtu22,kmul(Gtl311,gtu23)));
- CCTK_REAL Gtlu331 = Gtl313*gtu11 + Gtl323*gtu12 + Gtl333*gtu13;
+ CCTK_REAL_VEC Gt311 =
+ kmadd(Gtl111,gtu13,kmadd(Gtl211,gtu23,kmul(Gtl311,gtu33)));
- CCTK_REAL Gtlu332 = Gtl313*gtu12 + Gtl323*gtu22 + Gtl333*gtu23;
+ CCTK_REAL_VEC Gt112 =
+ kmadd(Gtl112,gtu11,kmadd(Gtl212,gtu12,kmul(Gtl312,gtu13)));
- CCTK_REAL Gtlu333 = Gtl313*gtu13 + Gtl323*gtu23 + Gtl333*gtu33;
+ CCTK_REAL_VEC Gt212 =
+ kmadd(Gtl112,gtu12,kmadd(Gtl212,gtu22,kmul(Gtl312,gtu23)));
- CCTK_REAL Gt111 = Gtl111*gtu11 + Gtl211*gtu12 + Gtl311*gtu13;
+ CCTK_REAL_VEC Gt312 =
+ kmadd(Gtl112,gtu13,kmadd(Gtl212,gtu23,kmul(Gtl312,gtu33)));
- CCTK_REAL Gt211 = Gtl111*gtu12 + Gtl211*gtu22 + Gtl311*gtu23;
+ CCTK_REAL_VEC Gt113 =
+ kmadd(Gtl113,gtu11,kmadd(Gtl213,gtu12,kmul(Gtl313,gtu13)));
- CCTK_REAL Gt311 = Gtl111*gtu13 + Gtl211*gtu23 + Gtl311*gtu33;
+ CCTK_REAL_VEC Gt213 =
+ kmadd(Gtl113,gtu12,kmadd(Gtl213,gtu22,kmul(Gtl313,gtu23)));
- CCTK_REAL Gt112 = Gtl112*gtu11 + Gtl212*gtu12 + Gtl312*gtu13;
+ CCTK_REAL_VEC Gt313 =
+ kmadd(Gtl113,gtu13,kmadd(Gtl213,gtu23,kmul(Gtl313,gtu33)));
- CCTK_REAL Gt212 = Gtl112*gtu12 + Gtl212*gtu22 + Gtl312*gtu23;
+ CCTK_REAL_VEC Gt122 =
+ kmadd(Gtl122,gtu11,kmadd(Gtl222,gtu12,kmul(Gtl322,gtu13)));
- CCTK_REAL Gt312 = Gtl112*gtu13 + Gtl212*gtu23 + Gtl312*gtu33;
+ CCTK_REAL_VEC Gt222 =
+ kmadd(Gtl122,gtu12,kmadd(Gtl222,gtu22,kmul(Gtl322,gtu23)));
- CCTK_REAL Gt113 = Gtl113*gtu11 + Gtl213*gtu12 + Gtl313*gtu13;
+ CCTK_REAL_VEC Gt322 =
+ kmadd(Gtl122,gtu13,kmadd(Gtl222,gtu23,kmul(Gtl322,gtu33)));
- CCTK_REAL Gt213 = Gtl113*gtu12 + Gtl213*gtu22 + Gtl313*gtu23;
+ CCTK_REAL_VEC Gt123 =
+ kmadd(Gtl123,gtu11,kmadd(Gtl223,gtu12,kmul(Gtl323,gtu13)));
- CCTK_REAL Gt313 = Gtl113*gtu13 + Gtl213*gtu23 + Gtl313*gtu33;
+ CCTK_REAL_VEC Gt223 =
+ kmadd(Gtl123,gtu12,kmadd(Gtl223,gtu22,kmul(Gtl323,gtu23)));
- CCTK_REAL Gt122 = Gtl122*gtu11 + Gtl222*gtu12 + Gtl322*gtu13;
+ CCTK_REAL_VEC Gt323 =
+ kmadd(Gtl123,gtu13,kmadd(Gtl223,gtu23,kmul(Gtl323,gtu33)));
- CCTK_REAL Gt222 = Gtl122*gtu12 + Gtl222*gtu22 + Gtl322*gtu23;
+ CCTK_REAL_VEC Gt133 =
+ kmadd(Gtl133,gtu11,kmadd(Gtl233,gtu12,kmul(Gtl333,gtu13)));
- CCTK_REAL Gt322 = Gtl122*gtu13 + Gtl222*gtu23 + Gtl322*gtu33;
+ CCTK_REAL_VEC Gt233 =
+ kmadd(Gtl133,gtu12,kmadd(Gtl233,gtu22,kmul(Gtl333,gtu23)));
- CCTK_REAL Gt123 = Gtl123*gtu11 + Gtl223*gtu12 + Gtl323*gtu13;
+ CCTK_REAL_VEC Gt333 =
+ kmadd(Gtl133,gtu13,kmadd(Gtl233,gtu23,kmul(Gtl333,gtu33)));
- CCTK_REAL Gt223 = Gtl123*gtu12 + Gtl223*gtu22 + Gtl323*gtu23;
+ 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 Gt323 = Gtl123*gtu13 + Gtl223*gtu23 + Gtl323*gtu33;
+ 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 Gt133 = Gtl133*gtu11 + Gtl233*gtu12 + Gtl333*gtu13;
+ 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 Gt233 = Gtl133*gtu12 + Gtl233*gtu22 + Gtl333*gtu23;
+ 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 Gt333 = Gtl133*gtu13 + Gtl233*gtu23 + Gtl333*gtu33;
+ 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 Xtn1 = Gt111*gtu11 + Gt122*gtu22 + 2*(Gt112*gtu12 +
- Gt113*gtu13 + Gt123*gtu23) + Gt133*gtu33;
+ 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 Xtn2 = Gt211*gtu11 + Gt222*gtu22 + 2*(Gt212*gtu12 +
- Gt213*gtu13 + Gt223*gtu23) + Gt233*gtu33;
+ 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 Xtn3 = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu12 +
- Gt313*gtu13 + Gt323*gtu23) + Gt333*gtu33;
+ 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 Rt11 = 0.5*(6*(Gt111*Gtlu111 + Gt112*Gtlu112 +
- Gt113*Gtlu113) + 4*(Gt211*Gtlu121 + Gt212*Gtlu122 + Gt213*Gtlu123 +
- Gt311*Gtlu131 + Gt312*Gtlu132 + Gt313*Gtlu133) -
- gtu11*PDstandardNth11gt11 - 2*gtu12*PDstandardNth12gt11 -
- 2*gtu13*PDstandardNth13gt11 + 2*(Gt211*Gtlu211 + Gt212*Gtlu212 +
- Gt213*Gtlu213 + Gt311*Gtlu311 + Gt312*Gtlu312 + Gt313*Gtlu313 +
- gt11L*PDstandardNth1Xt1) + 2*gt12L*PDstandardNth1Xt2 +
- 2*gt13L*PDstandardNth1Xt3 - gtu22*PDstandardNth22gt11 -
- 2*gtu23*PDstandardNth23gt11 - gtu33*PDstandardNth33gt11 + 2*Gtl111*Xtn1
- + 2*Gtl112*Xtn2 + 2*Gtl113*Xtn3);
+ 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 Rt12 = 0.5*(4*(Gt211*Gtlu221 + Gt212*Gtlu222 +
- Gt213*Gtlu223) + 2*(Gt112*Gtlu111 + Gt122*Gtlu112 + Gt123*Gtlu113 +
- Gt111*Gtlu121 + Gt212*Gtlu121 + Gt112*Gtlu122 + Gt222*Gtlu122 +
- Gt113*Gtlu123 + Gt223*Gtlu123 + Gt312*Gtlu131 + Gt322*Gtlu132 +
- Gt323*Gtlu133 + Gt111*Gtlu211 + Gt112*Gtlu212 + Gt113*Gtlu213 +
- Gt311*Gtlu231 + Gt312*Gtlu232 + Gt313*Gtlu233 + Gt311*Gtlu321 +
- Gt312*Gtlu322 + Gt313*Gtlu323) - gtu11*PDstandardNth11gt12 -
- 2*gtu12*PDstandardNth12gt12 - 2*gtu13*PDstandardNth13gt12 +
- gt12L*PDstandardNth1Xt1 + gt22L*PDstandardNth1Xt2 +
- gt23L*PDstandardNth1Xt3 - gtu22*PDstandardNth22gt12 -
- 2*gtu23*PDstandardNth23gt12 + gt11L*PDstandardNth2Xt1 +
- gt12L*PDstandardNth2Xt2 + gt13L*PDstandardNth2Xt3 -
- gtu33*PDstandardNth33gt12 + Gtl112*Xtn1 + Gtl211*Xtn1 + Gtl122*Xtn2 +
- Gtl212*Xtn2 + Gtl123*Xtn3 + Gtl213*Xtn3);
+ CCTK_REAL_VEC fac1 =
+ IfThen(conformalMethod,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
- CCTK_REAL Rt13 = 0.5*(2*(Gt113*Gtlu111 + Gt123*Gtlu112 + Gt133*Gtlu113
- + Gt213*Gtlu121 + Gt223*Gtlu122 + Gt233*Gtlu123 + Gt111*Gtlu131 +
- Gt313*Gtlu131 + Gt112*Gtlu132 + Gt323*Gtlu132 + Gt113*Gtlu133 +
- Gt333*Gtlu133 + Gt211*Gtlu231 + Gt212*Gtlu232 + Gt213*Gtlu233 +
- Gt111*Gtlu311 + Gt112*Gtlu312 + Gt113*Gtlu313 + Gt211*Gtlu321 +
- Gt212*Gtlu322 + Gt213*Gtlu323) + 4*(Gt311*Gtlu331 + Gt312*Gtlu332 +
- Gt313*Gtlu333) - gtu11*PDstandardNth11gt13 -
- 2*gtu12*PDstandardNth12gt13 - 2*gtu13*PDstandardNth13gt13 +
- gt13L*PDstandardNth1Xt1 + gt23L*PDstandardNth1Xt2 +
- gt33L*PDstandardNth1Xt3 - gtu22*PDstandardNth22gt13 -
- 2*gtu23*PDstandardNth23gt13 - gtu33*PDstandardNth33gt13 +
- gt11L*PDstandardNth3Xt1 + gt12L*PDstandardNth3Xt2 +
- gt13L*PDstandardNth3Xt3 + Gtl113*Xtn1 + Gtl311*Xtn1 + Gtl123*Xtn2 +
- Gtl312*Xtn2 + Gtl133*Xtn3 + Gtl313*Xtn3);
+ CCTK_REAL_VEC cdphi1 = kmul(fac1,JacPDstandardNth1phi);
- CCTK_REAL Rt22 = 0.5*(6*(Gt212*Gtlu221 + Gt222*Gtlu222 +
- Gt223*Gtlu223) + 4*(Gt112*Gtlu211 + Gt122*Gtlu212 + Gt123*Gtlu213 +
- Gt312*Gtlu231 + Gt322*Gtlu232 + Gt323*Gtlu233) -
- gtu11*PDstandardNth11gt22 - 2*gtu12*PDstandardNth12gt22 -
- 2*gtu13*PDstandardNth13gt22 - gtu22*PDstandardNth22gt22 -
- 2*gtu23*PDstandardNth23gt22 + 2*(Gt112*Gtlu121 + Gt122*Gtlu122 +
- Gt123*Gtlu123 + Gt312*Gtlu321 + Gt322*Gtlu322 + Gt323*Gtlu323 +
- gt12L*PDstandardNth2Xt1) + 2*gt22L*PDstandardNth2Xt2 +
- 2*gt23L*PDstandardNth2Xt3 - gtu33*PDstandardNth33gt22 + 2*Gtl212*Xtn1 +
- 2*Gtl222*Xtn2 + 2*Gtl223*Xtn3);
-
- CCTK_REAL Rt23 = 0.5*(2*(Gt112*Gtlu131 + Gt122*Gtlu132 + Gt123*Gtlu133
- + Gt113*Gtlu211 + Gt123*Gtlu212 + Gt133*Gtlu213 + Gt213*Gtlu221 +
- Gt223*Gtlu222 + Gt233*Gtlu223 + Gt212*Gtlu231 + Gt313*Gtlu231 +
- Gt222*Gtlu232 + Gt323*Gtlu232 + Gt223*Gtlu233 + Gt333*Gtlu233 +
- Gt112*Gtlu311 + Gt122*Gtlu312 + Gt123*Gtlu313 + Gt212*Gtlu321 +
- Gt222*Gtlu322 + Gt223*Gtlu323) + 4*(Gt312*Gtlu331 + Gt322*Gtlu332 +
- Gt323*Gtlu333) - gtu11*PDstandardNth11gt23 -
- 2*gtu12*PDstandardNth12gt23 - 2*gtu13*PDstandardNth13gt23 -
- gtu22*PDstandardNth22gt23 - 2*gtu23*PDstandardNth23gt23 +
- gt13L*PDstandardNth2Xt1 + gt23L*PDstandardNth2Xt2 +
- gt33L*PDstandardNth2Xt3 - gtu33*PDstandardNth33gt23 +
- gt12L*PDstandardNth3Xt1 + gt22L*PDstandardNth3Xt2 +
- gt23L*PDstandardNth3Xt3 + Gtl213*Xtn1 + Gtl312*Xtn1 + Gtl223*Xtn2 +
- Gtl322*Xtn2 + Gtl233*Xtn3 + Gtl323*Xtn3);
-
- CCTK_REAL Rt33 = 0.5*(4*(Gt113*Gtlu311 + Gt123*Gtlu312 + Gt133*Gtlu313
- + Gt213*Gtlu321 + Gt223*Gtlu322 + Gt233*Gtlu323) + 6*(Gt313*Gtlu331 +
- Gt323*Gtlu332 + Gt333*Gtlu333) - gtu11*PDstandardNth11gt33 -
- 2*gtu12*PDstandardNth12gt33 - 2*gtu13*PDstandardNth13gt33 -
- gtu22*PDstandardNth22gt33 - 2*gtu23*PDstandardNth23gt33 -
- gtu33*PDstandardNth33gt33 + 2*(Gt113*Gtlu131 + Gt123*Gtlu132 +
- Gt133*Gtlu133 + Gt213*Gtlu231 + Gt223*Gtlu232 + Gt233*Gtlu233 +
- gt13L*PDstandardNth3Xt1) + 2*gt23L*PDstandardNth3Xt2 +
- 2*gt33L*PDstandardNth3Xt3 + 2*Gtl313*Xtn1 + 2*Gtl323*Xtn2 +
- 2*Gtl333*Xtn3);
-
- CCTK_REAL fac1 = IfThen(conformalMethod,-0.5*INV(phiL),1);
-
- CCTK_REAL cdphi1 = fac1*PDstandardNth1phi;
-
- CCTK_REAL cdphi2 = fac1*PDstandardNth2phi;
-
- CCTK_REAL cdphi3 = fac1*PDstandardNth3phi;
-
- CCTK_REAL fac2 = IfThen(conformalMethod,0.5*INV(SQR(phiL)),0);
-
- CCTK_REAL cdphi211 = -(fac1*(-PDstandardNth11phi +
- Gt111*PDstandardNth1phi + Gt211*PDstandardNth2phi +
- Gt311*PDstandardNth3phi)) + fac2*SQR(PDstandardNth1phi);
-
- CCTK_REAL cdphi212 = fac2*PDstandardNth1phi*PDstandardNth2phi -
- fac1*(-PDstandardNth12phi + Gt112*PDstandardNth1phi +
- Gt212*PDstandardNth2phi + Gt312*PDstandardNth3phi);
-
- CCTK_REAL cdphi213 = fac2*PDstandardNth1phi*PDstandardNth3phi -
- fac1*(-PDstandardNth13phi + Gt113*PDstandardNth1phi +
- Gt213*PDstandardNth2phi + Gt313*PDstandardNth3phi);
+ CCTK_REAL_VEC cdphi2 = kmul(fac1,JacPDstandardNth2phi);
- CCTK_REAL cdphi222 = -(fac1*(Gt122*PDstandardNth1phi -
- PDstandardNth22phi + Gt222*PDstandardNth2phi +
- Gt322*PDstandardNth3phi)) + fac2*SQR(PDstandardNth2phi);
+ CCTK_REAL_VEC cdphi3 = kmul(fac1,JacPDstandardNth3phi);
- CCTK_REAL cdphi223 = fac2*PDstandardNth2phi*PDstandardNth3phi -
- fac1*(Gt123*PDstandardNth1phi - PDstandardNth23phi +
- Gt223*PDstandardNth2phi + Gt323*PDstandardNth3phi);
+ CCTK_REAL_VEC fac2 =
+ IfThen(conformalMethod,kmul(INV(SQR(phiL)),ToReal(0.5)),ToReal(0));
- CCTK_REAL cdphi233 = -(fac1*(Gt133*PDstandardNth1phi +
- Gt233*PDstandardNth2phi - PDstandardNth33phi +
- Gt333*PDstandardNth3phi)) + fac2*SQR(PDstandardNth3phi);
+ CCTK_REAL_VEC cdphi211 =
+ kmadd(fac2,SQR(JacPDstandardNth1phi),kmul(fac1,ksub(JacPDstandardNth11phi,kmadd(Gt111,JacPDstandardNth1phi,kmadd(Gt311,JacPDstandardNth3phi,kmul(Gt211,JacPDstandardNth2phi))))));
- CCTK_REAL Rphi11 = -2*(cdphi211 + 2*(-1 + gt11L*gtu11)*SQR(cdphi1) +
- gt11L*(cdphi211*gtu11 + 4*(cdphi1*(cdphi2*gtu12 + cdphi3*gtu13) +
- cdphi2*cdphi3*gtu23) + cdphi233*gtu33 + gtu22*(cdphi222 +
- 2*SQR(cdphi2)) + 2*(cdphi212*gtu12 + cdphi213*gtu13 + cdphi223*gtu23 +
- gtu33*SQR(cdphi3))));
+ CCTK_REAL_VEC cdphi212 =
+ kmadd(fac2,kmul(JacPDstandardNth1phi,JacPDstandardNth2phi),kmul(fac1,ksub(JacPDstandardNth12phi,kmadd(Gt112,JacPDstandardNth1phi,kmadd(Gt312,JacPDstandardNth3phi,kmul(Gt212,JacPDstandardNth2phi))))));
- CCTK_REAL Rphi12 = -2*(cdphi212 + cdphi1*(cdphi2*(-2 + 4*gt12L*gtu12)
- + 4*cdphi3*gt12L*gtu13) + gt12L*(cdphi211*gtu11 + 4*cdphi2*cdphi3*gtu23
- + 2*(cdphi212*gtu12 + cdphi213*gtu13 + cdphi223*gtu23 +
- gtu11*SQR(cdphi1)) + gtu22*(cdphi222 + 2*SQR(cdphi2)) + gtu33*(cdphi233
- + 2*SQR(cdphi3))));
+ CCTK_REAL_VEC cdphi213 =
+ kmadd(fac2,kmul(JacPDstandardNth1phi,JacPDstandardNth3phi),kmul(fac1,ksub(JacPDstandardNth13phi,kmadd(Gt113,JacPDstandardNth1phi,kmadd(Gt313,JacPDstandardNth3phi,kmul(Gt213,JacPDstandardNth2phi))))));
- CCTK_REAL Rphi13 = -2*(cdphi213 + cdphi1*(4*cdphi2*gt13L*gtu12 +
- cdphi3*(-2 + 4*gt13L*gtu13)) + gt13L*(cdphi211*gtu11 +
- 4*cdphi2*cdphi3*gtu23 + 2*(cdphi212*gtu12 + cdphi213*gtu13 +
- cdphi223*gtu23 + gtu11*SQR(cdphi1)) + gtu22*(cdphi222 + 2*SQR(cdphi2))
- + gtu33*(cdphi233 + 2*SQR(cdphi3))));
+ CCTK_REAL_VEC cdphi222 =
+ kmsub(fac2,SQR(JacPDstandardNth2phi),kmul(fac1,kmadd(Gt122,JacPDstandardNth1phi,kmadd(Gt222,JacPDstandardNth2phi,kmsub(Gt322,JacPDstandardNth3phi,JacPDstandardNth22phi)))));
- CCTK_REAL Rphi22 = -2*(cdphi222 + 2*(-1 + gt22L*gtu22)*SQR(cdphi2) +
- gt22L*(cdphi222*gtu22 + 4*(cdphi1*cdphi3*gtu13 + cdphi2*(cdphi1*gtu12 +
- cdphi3*gtu23)) + cdphi233*gtu33 + gtu11*(cdphi211 + 2*SQR(cdphi1)) +
- 2*(cdphi212*gtu12 + cdphi213*gtu13 + cdphi223*gtu23 +
- gtu33*SQR(cdphi3))));
+ CCTK_REAL_VEC cdphi223 =
+ kmsub(fac2,kmul(JacPDstandardNth2phi,JacPDstandardNth3phi),kmul(fac1,kmadd(Gt123,JacPDstandardNth1phi,kmadd(Gt223,JacPDstandardNth2phi,kmsub(Gt323,JacPDstandardNth3phi,JacPDstandardNth23phi)))));
- CCTK_REAL Rphi23 = -2*(cdphi223 + cdphi2*(4*cdphi1*gt23L*gtu12 +
- cdphi3*(-2 + 4*gt23L*gtu23)) + gt23L*(4*cdphi1*cdphi3*gtu13 +
- cdphi222*gtu22 + gtu11*(cdphi211 + 2*SQR(cdphi1)) + 2*(cdphi212*gtu12 +
- cdphi213*gtu13 + cdphi223*gtu23 + gtu22*SQR(cdphi2)) + gtu33*(cdphi233
- + 2*SQR(cdphi3))));
+ CCTK_REAL_VEC cdphi233 =
+ kmsub(fac2,SQR(JacPDstandardNth3phi),kmul(fac1,kmadd(Gt133,JacPDstandardNth1phi,kmadd(Gt233,JacPDstandardNth2phi,kmsub(Gt333,JacPDstandardNth3phi,JacPDstandardNth33phi)))));
- CCTK_REAL Rphi33 = -2*(cdphi233 + gt33L*((4*cdphi1*cdphi2 +
- 2*cdphi212)*gtu12 + 4*cdphi3*(cdphi1*gtu13 + cdphi2*gtu23) +
- 2*(cdphi213*gtu13 + cdphi223*gtu23) + cdphi233*gtu33 + gtu11*(cdphi211
- + 2*SQR(cdphi1)) + gtu22*(cdphi222 + 2*SQR(cdphi2))) + 2*(-1 +
- gt33L*gtu33)*SQR(cdphi3));
+ 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 Atm11 = At11L*gtu11 + At12L*gtu12 + At13L*gtu13;
+ 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(cdphi3,kmul(gt12L,kmul(gtu13,ToReal(4))),kmul(cdphi2,kmadd(gt12L,kmul(gtu12,ToReal(4)),ToReal(-2))))))));
- CCTK_REAL Atm21 = At11L*gtu12 + At12L*gtu22 + At13L*gtu23;
+ 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(cdphi2,kmul(gt13L,kmul(gtu12,ToReal(4))),kmul(cdphi3,kmadd(gt13L,kmul(gtu13,ToReal(4)),ToReal(-2))))))));
- CCTK_REAL Atm31 = At11L*gtu13 + At12L*gtu23 + At13L*gtu33;
+ 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 Atm12 = At12L*gtu11 + At22L*gtu12 + At23L*gtu13;
+ 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(cdphi1,kmul(gt23L,kmul(gtu12,ToReal(4))),kmul(cdphi3,kmadd(gt23L,kmul(gtu23,ToReal(4)),ToReal(-2))))))));
- CCTK_REAL Atm22 = At12L*gtu12 + At22L*gtu22 + At23L*gtu23;
+ 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 Atm32 = At12L*gtu13 + At22L*gtu23 + At23L*gtu33;
+ CCTK_REAL_VEC Atm11 =
+ kmadd(At11L,gtu11,kmadd(At12L,gtu12,kmul(At13L,gtu13)));
- CCTK_REAL Atm13 = At13L*gtu11 + At23L*gtu12 + At33L*gtu13;
+ CCTK_REAL_VEC Atm21 =
+ kmadd(At11L,gtu12,kmadd(At12L,gtu22,kmul(At13L,gtu23)));
- CCTK_REAL Atm23 = At13L*gtu12 + At23L*gtu22 + At33L*gtu23;
+ CCTK_REAL_VEC Atm31 =
+ kmadd(At11L,gtu13,kmadd(At12L,gtu23,kmul(At13L,gtu33)));
- CCTK_REAL Atm33 = At13L*gtu13 + At23L*gtu23 + At33L*gtu33;
+ CCTK_REAL_VEC Atm12 =
+ kmadd(At12L,gtu11,kmadd(At22L,gtu12,kmul(At23L,gtu13)));
- CCTK_REAL e4phi = IfThen(conformalMethod,INV(SQR(phiL)),exp(4*phiL));
+ CCTK_REAL_VEC Atm22 =
+ kmadd(At12L,gtu12,kmadd(At22L,gtu22,kmul(At23L,gtu23)));
- CCTK_REAL em4phi = INV(e4phi);
+ CCTK_REAL_VEC Atm32 =
+ kmadd(At12L,gtu13,kmadd(At22L,gtu23,kmul(At23L,gtu33)));
- CCTK_REAL g11 = e4phi*gt11L;
+ CCTK_REAL_VEC Atm13 =
+ kmadd(At13L,gtu11,kmadd(At23L,gtu12,kmul(At33L,gtu13)));
- CCTK_REAL g12 = e4phi*gt12L;
+ CCTK_REAL_VEC Atm23 =
+ kmadd(At13L,gtu12,kmadd(At23L,gtu22,kmul(At33L,gtu23)));
- CCTK_REAL g13 = e4phi*gt13L;
+ CCTK_REAL_VEC Atm33 =
+ kmadd(At13L,gtu13,kmadd(At23L,gtu23,kmul(At33L,gtu33)));
- CCTK_REAL g22 = e4phi*gt22L;
+ CCTK_REAL_VEC e4phi =
+ IfThen(conformalMethod,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
- CCTK_REAL g23 = e4phi*gt23L;
+ CCTK_REAL_VEC em4phi = INV(e4phi);
- CCTK_REAL g33 = e4phi*gt33L;
+ CCTK_REAL_VEC g11 = kmul(e4phi,gt11L);
- CCTK_REAL gu11 = em4phi*gtu11;
+ CCTK_REAL_VEC g12 = kmul(e4phi,gt12L);
- CCTK_REAL gu12 = em4phi*gtu12;
+ CCTK_REAL_VEC g13 = kmul(e4phi,gt13L);
- CCTK_REAL gu13 = em4phi*gtu13;
+ CCTK_REAL_VEC g22 = kmul(e4phi,gt22L);
- CCTK_REAL gu22 = em4phi*gtu22;
+ CCTK_REAL_VEC g23 = kmul(e4phi,gt23L);
- CCTK_REAL gu23 = em4phi*gtu23;
+ CCTK_REAL_VEC g33 = kmul(e4phi,gt33L);
- CCTK_REAL gu33 = em4phi*gtu33;
+ CCTK_REAL_VEC gu11 = kmul(em4phi,gtu11);
- CCTK_REAL R11 = Rphi11 + Rt11;
+ CCTK_REAL_VEC gu12 = kmul(em4phi,gtu12);
- CCTK_REAL R12 = Rphi12 + Rt12;
+ CCTK_REAL_VEC gu13 = kmul(em4phi,gtu13);
- CCTK_REAL R13 = Rphi13 + Rt13;
+ CCTK_REAL_VEC gu22 = kmul(em4phi,gtu22);
- CCTK_REAL R22 = Rphi22 + Rt22;
+ CCTK_REAL_VEC gu23 = kmul(em4phi,gtu23);
- CCTK_REAL R23 = Rphi23 + Rt23;
+ CCTK_REAL_VEC gu33 = kmul(em4phi,gtu33);
- CCTK_REAL R33 = Rphi33 + Rt33;
+ CCTK_REAL_VEC R11 = kadd(Rphi11,Rt11);
- CCTK_REAL trS = em4phi*(eTxxL*gtu11 + eTyyL*gtu22 + 2*(eTxyL*gtu12 +
- eTxzL*gtu13 + eTyzL*gtu23) + eTzzL*gtu33);
+ CCTK_REAL_VEC R12 = kadd(Rphi12,Rt12);
- CCTK_REAL Ats11 = -PDstandardNth11alpha + (4*cdphi1 +
- Gt111)*PDstandardNth1alpha + Gt211*PDstandardNth2alpha +
- Gt311*PDstandardNth3alpha + alphaL*R11;
+ CCTK_REAL_VEC R13 = kadd(Rphi13,Rt13);
- CCTK_REAL Ats12 = -PDstandardNth12alpha + (2*cdphi2 +
- Gt112)*PDstandardNth1alpha + (2*cdphi1 + Gt212)*PDstandardNth2alpha +
- Gt312*PDstandardNth3alpha + alphaL*R12;
+ CCTK_REAL_VEC R22 = kadd(Rphi22,Rt22);
- CCTK_REAL Ats13 = -PDstandardNth13alpha + (2*cdphi3 +
- Gt113)*PDstandardNth1alpha + Gt213*PDstandardNth2alpha + (2*cdphi1 +
- Gt313)*PDstandardNth3alpha + alphaL*R13;
+ CCTK_REAL_VEC R23 = kadd(Rphi23,Rt23);
- CCTK_REAL Ats22 = Gt122*PDstandardNth1alpha - PDstandardNth22alpha +
- (4*cdphi2 + Gt222)*PDstandardNth2alpha + Gt322*PDstandardNth3alpha +
- alphaL*R22;
+ CCTK_REAL_VEC R33 = kadd(Rphi33,Rt33);
- CCTK_REAL Ats23 = Gt123*PDstandardNth1alpha - PDstandardNth23alpha +
- (2*cdphi3 + Gt223)*PDstandardNth2alpha + (2*cdphi2 +
- Gt323)*PDstandardNth3alpha + alphaL*R23;
+ 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 Ats33 = Gt133*PDstandardNth1alpha +
- Gt233*PDstandardNth2alpha - PDstandardNth33alpha + (4*cdphi3 +
- Gt333)*PDstandardNth3alpha + alphaL*R33;
+ CCTK_REAL_VEC Ats11 =
+ kmadd(Gt211,JacPDstandardNth2alpha,kmadd(Gt311,JacPDstandardNth3alpha,kmadd(alphaL,R11,kmsub(JacPDstandardNth1alpha,kmadd(cdphi1,ToReal(4),Gt111),JacPDstandardNth11alpha))));
- CCTK_REAL trAts = Ats11*gu11 + Ats22*gu22 + 2*(Ats12*gu12 + Ats13*gu13
- + Ats23*gu23) + Ats33*gu33;
+ 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 At11rhsL = -2.*alphaL*(At11L*Atm11 + At12L*Atm21 +
- At13L*Atm31) + 2.*(At12L*PDstandardNth1beta2 +
- At13L*PDstandardNth1beta3) +
- At11L*(1.333333333333333333333333333333333333333*PDstandardNth1beta1 -
- 0.6666666666666666666666666666666666666667*(PDstandardNth2beta2 +
- PDstandardNth3beta3) + alphaL*trKL) + em4phi*(Ats11 -
- 0.3333333333333333333333333333333333333333*g11*trAts +
- alphaL*(-25.13274122871834590770114706623602307358*eTxxL +
- 8.377580409572781969233715688745341024526*g11*trS));
+ 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 At12rhsL = -2.*alphaL*(At11L*Atm12 + At12L*Atm22 +
- At13L*Atm32) + At22L*PDstandardNth1beta2 + At23L*PDstandardNth1beta3 +
- At11L*PDstandardNth2beta1 + At13L*PDstandardNth2beta3 +
- At12L*(0.3333333333333333333333333333333333333333*(PDstandardNth1beta1
- + PDstandardNth2beta2) -
- 0.6666666666666666666666666666666666666667*PDstandardNth3beta3 +
- alphaL*trKL) + em4phi*(Ats12 -
- 0.3333333333333333333333333333333333333333*g12*trAts +
- alphaL*(-25.13274122871834590770114706623602307358*eTxyL +
- 8.377580409572781969233715688745341024526*g12*trS));
+ CCTK_REAL_VEC Ats22 =
+ kmadd(Gt122,JacPDstandardNth1alpha,kmadd(Gt322,JacPDstandardNth3alpha,kmadd(alphaL,R22,kmsub(JacPDstandardNth2alpha,kmadd(cdphi2,ToReal(4),Gt222),JacPDstandardNth22alpha))));
- CCTK_REAL At13rhsL = -2.*alphaL*(At11L*Atm13 + At12L*Atm23 +
- At13L*Atm33) + At23L*PDstandardNth1beta2 + At33L*PDstandardNth1beta3 +
- At11L*PDstandardNth3beta1 + At12L*PDstandardNth3beta2 +
- At13L*(-0.6666666666666666666666666666666666666667*PDstandardNth2beta2
- + 0.3333333333333333333333333333333333333333*(PDstandardNth1beta1 +
- PDstandardNth3beta3) + alphaL*trKL) + em4phi*(Ats13 -
- 0.3333333333333333333333333333333333333333*g13*trAts +
- alphaL*(-25.13274122871834590770114706623602307358*eTxzL +
- 8.377580409572781969233715688745341024526*g13*trS));
+ 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 At22rhsL = -2.*alphaL*(At12L*Atm12 + At22L*Atm22 +
- At23L*Atm32) + 2.*(At12L*PDstandardNth2beta1 +
- At23L*PDstandardNth2beta3) +
- At22L*(1.333333333333333333333333333333333333333*PDstandardNth2beta2 -
- 0.6666666666666666666666666666666666666667*(PDstandardNth1beta1 +
- PDstandardNth3beta3) + alphaL*trKL) + em4phi*(Ats22 -
- 0.3333333333333333333333333333333333333333*g22*trAts +
- alphaL*(-25.13274122871834590770114706623602307358*eTyyL +
- 8.377580409572781969233715688745341024526*g22*trS));
-
- CCTK_REAL At23rhsL = -2.*alphaL*(At12L*Atm13 + At22L*Atm23 +
- At23L*Atm33) + At13L*PDstandardNth2beta1 + At33L*PDstandardNth2beta3 +
- At12L*PDstandardNth3beta1 + At22L*PDstandardNth3beta2 +
- At23L*(-0.6666666666666666666666666666666666666667*PDstandardNth1beta1
- + 0.3333333333333333333333333333333333333333*(PDstandardNth2beta2 +
- PDstandardNth3beta3) + alphaL*trKL) + em4phi*(Ats23 -
- 0.3333333333333333333333333333333333333333*g23*trAts +
- alphaL*(-25.13274122871834590770114706623602307358*eTyzL +
- 8.377580409572781969233715688745341024526*g23*trS));
-
- CCTK_REAL At33rhsL = -2.*alphaL*(At13L*Atm13 + At23L*Atm23 +
- At33L*Atm33) + 2.*(At13L*PDstandardNth3beta1 +
- At23L*PDstandardNth3beta2) +
- At33L*(-0.6666666666666666666666666666666666666667*(PDstandardNth1beta1
- + PDstandardNth2beta2) +
- 1.333333333333333333333333333333333333333*PDstandardNth3beta3 +
- alphaL*trKL) + em4phi*(Ats33 -
- 0.3333333333333333333333333333333333333333*g33*trAts +
- alphaL*(-25.13274122871834590770114706623602307358*eTzzL +
- 8.377580409572781969233715688745341024526*g33*trS));
-
- /* Copy local copies back to grid functions */
- At11rhs[index] = At11rhsL;
- At12rhs[index] = At12rhsL;
- At13rhs[index] = At13rhsL;
- At22rhs[index] = At22rhsL;
- At23rhs[index] = At23rhsL;
- At33rhs[index] = At33rhsL;
+ 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 =
+ kmadd(em4phi,kmadd(g11,kmul(trAts,ToReal(-0.3333333333333333333333333333333333333333)),Ats11),kmadd(At11L,kmadd(kadd(JacPDstandardNth2beta2,JacPDstandardNth3beta3),ToReal(-0.6666666666666666666666666666666666666667),kmul(JacPDstandardNth1beta1,ToReal(1.333333333333333333333333333333333333333))),kmadd(kmadd(At12L,JacPDstandardNth1beta2,kmul(At13L,JacPDstandardNth1beta3)),ToReal(2.),kmul(alphaL,kmadd(kmadd(At12L,Atm21,kmul(At13L,Atm31)),ToReal(-2.),kmadd(At11L,kmadd(Atm11,ToReal(-2.),trKL),kmul(em4phi,kmadd(eTxxL,ToReal(-25.13274122871834590770114706623602307358),kmul(g11,kmul(trS,ToReal(8.377580409572781969233715688745341024526)))))))))));
+
+ CCTK_REAL_VEC At12rhsL =
+ kmadd(At22L,JacPDstandardNth1beta2,kmadd(At23L,JacPDstandardNth1beta3,kmadd(At11L,JacPDstandardNth2beta1,kmadd(At13L,JacPDstandardNth2beta3,kmadd(em4phi,kmadd(g12,kmul(trAts,ToReal(-0.3333333333333333333333333333333333333333)),Ats12),kmadd(At12L,kmadd(JacPDstandardNth3beta3,ToReal(-0.6666666666666666666666666666666666666667),kmul(kadd(JacPDstandardNth1beta1,JacPDstandardNth2beta2),ToReal(0.3333333333333333333333333333333333333333))),kmul(alphaL,kmadd(At12L,trKL,kmadd(kmadd(At11L,Atm12,kmadd(At12L,Atm22,kmul(At13L,Atm32))),ToReal(-2.),kmul(em4phi,kmadd(eTxyL,ToReal(-25.13274122871834590770114706623602307358),kmul(g12,kmul(trS,ToReal(8.377580409572781969233715688745341024526))))))))))))));
+
+ CCTK_REAL_VEC At13rhsL =
+ kmadd(At23L,JacPDstandardNth1beta2,kmadd(At33L,JacPDstandardNth1beta3,kmadd(At11L,JacPDstandardNth3beta1,kmadd(At12L,JacPDstandardNth3beta2,kmadd(em4phi,kmadd(g13,kmul(trAts,ToReal(-0.3333333333333333333333333333333333333333)),Ats13),kmadd(At13L,kmadd(JacPDstandardNth2beta2,ToReal(-0.6666666666666666666666666666666666666667),kmul(kadd(JacPDstandardNth1beta1,JacPDstandardNth3beta3),ToReal(0.3333333333333333333333333333333333333333))),kmul(alphaL,kmadd(At13L,trKL,kmadd(kmadd(At11L,Atm13,kmadd(At12L,Atm23,kmul(At13L,Atm33))),ToReal(-2.),kmul(em4phi,kmadd(eTxzL,ToReal(-25.13274122871834590770114706623602307358),kmul(g13,kmul(trS,ToReal(8.377580409572781969233715688745341024526))))))))))))));
+
+ CCTK_REAL_VEC At22rhsL =
+ kmadd(em4phi,kmadd(g22,kmul(trAts,ToReal(-0.3333333333333333333333333333333333333333)),Ats22),kmadd(At22L,kmadd(kadd(JacPDstandardNth1beta1,JacPDstandardNth3beta3),ToReal(-0.6666666666666666666666666666666666666667),kmul(JacPDstandardNth2beta2,ToReal(1.333333333333333333333333333333333333333))),kmadd(kmadd(At12L,JacPDstandardNth2beta1,kmul(At23L,JacPDstandardNth2beta3)),ToReal(2.),kmul(alphaL,kmadd(At22L,trKL,kmadd(kmadd(At12L,Atm12,kmadd(At22L,Atm22,kmul(At23L,Atm32))),ToReal(-2.),kmul(em4phi,kmadd(eTyyL,ToReal(-25.13274122871834590770114706623602307358),kmul(g22,kmul(trS,ToReal(8.377580409572781969233715688745341024526)))))))))));
+
+ CCTK_REAL_VEC At23rhsL =
+ kmadd(At13L,JacPDstandardNth2beta1,kmadd(At33L,JacPDstandardNth2beta3,kmadd(At12L,JacPDstandardNth3beta1,kmadd(At22L,JacPDstandardNth3beta2,kmadd(em4phi,kmadd(g23,kmul(trAts,ToReal(-0.3333333333333333333333333333333333333333)),Ats23),kmadd(At23L,kmadd(JacPDstandardNth1beta1,ToReal(-0.6666666666666666666666666666666666666667),kmul(kadd(JacPDstandardNth2beta2,JacPDstandardNth3beta3),ToReal(0.3333333333333333333333333333333333333333))),kmul(alphaL,kmadd(At23L,trKL,kmadd(kmadd(At12L,Atm13,kmadd(At22L,Atm23,kmul(At23L,Atm33))),ToReal(-2.),kmul(em4phi,kmadd(eTyzL,ToReal(-25.13274122871834590770114706623602307358),kmul(g23,kmul(trS,ToReal(8.377580409572781969233715688745341024526))))))))))))));
+
+ CCTK_REAL_VEC At33rhsL =
+ kmadd(em4phi,kmadd(g33,kmul(trAts,ToReal(-0.3333333333333333333333333333333333333333)),Ats33),kmadd(At33L,kmadd(kadd(JacPDstandardNth1beta1,JacPDstandardNth2beta2),ToReal(-0.6666666666666666666666666666666666666667),kmul(JacPDstandardNth3beta3,ToReal(1.333333333333333333333333333333333333333))),kmadd(kmadd(At13L,JacPDstandardNth3beta1,kmul(At23L,JacPDstandardNth3beta2)),ToReal(2.),kmul(alphaL,kmadd(At33L,trKL,kmadd(kmadd(At13L,Atm13,kmadd(At23L,Atm23,kmul(At33L,Atm33))),ToReal(-2.),kmul(em4phi,kmadd(eTzzL,ToReal(-25.13274122871834590770114706623602307358),kmul(g33,kmul(trS,ToReal(8.377580409572781969233715688745341024526)))))))))));
+
+ /* 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(At11rhs[index],At11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At12rhs[index],At12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At13rhs[index],At13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At22rhs[index],At22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At23rhs[index],At23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At33rhs[index],At33rhsL,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(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_hi(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_hi(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_hi(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_hi(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_hi(At33rhs[index],At33rhsL,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(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_lo(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_lo(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_lo(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_lo(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_lo(At33rhs[index],At33rhsL,elt_count);
+ break;
+ }
+ vec_store_nta(At11rhs[index],At11rhsL);
+ vec_store_nta(At12rhs[index],At12rhsL);
+ vec_store_nta(At13rhs[index],At13rhsL);
+ vec_store_nta(At22rhs[index],At22rhsL);
+ vec_store_nta(At23rhs[index],At23rhsL);
+ vec_store_nta(At33rhs[index],At33rhsL);
}
- LC_ENDLOOP3 (ML_BSSN_O8_RHS2);
+ LC_ENDLOOP3VEC (ML_BSSN_O8_RHS2);
}
extern "C" void ML_BSSN_O8_RHS2(CCTK_ARGUMENTS)
@@ -727,5 +1857,43 @@ extern "C" void ML_BSSN_O8_RHS2(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O8_RHS2_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_O8_RHS2_calc_every != ML_BSSN_O8_RHS2_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN_O8::ML_curv","ML_BSSN_O8::ML_curvrhs","ML_BSSN_O8::ML_Gamma","ML_BSSN_O8::ML_lapse","ML_BSSN_O8::ML_log_confac","ML_BSSN_O8::ML_metric","ML_BSSN_O8::ML_shift","ML_BSSN_O8::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O8_RHS2", 8, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O8_RHS2", 1, 1, 1);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O8_RHS2", 2, 2, 2);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O8_RHS2", 3, 3, 3);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O8_RHS2", 4, 4, 4);
+ break;
+ }
+
GenericFD_LoopOverInterior(cctkGH, &ML_BSSN_O8_RHS2_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_O8_RHS2_Body");
+ }
}
diff --git a/ML_BSSN_O8/src/ML_BSSN_O8_RHSStaticBoundary.cc b/ML_BSSN_O8/src/ML_BSSN_O8_RHSStaticBoundary.cc
index c5a99d5..6696248 100644
--- a/ML_BSSN_O8/src/ML_BSSN_O8_RHSStaticBoundary.cc
+++ b/ML_BSSN_O8/src/ML_BSSN_O8_RHSStaticBoundary.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_O8_RHSStaticBoundary_SelectBCs(CCTK_ARGUMENTS)
{
@@ -57,7 +58,7 @@ extern "C" void ML_BSSN_O8_RHSStaticBoundary_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_BSSN_O8_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_O8_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;
@@ -65,20 +66,6 @@ static void ML_BSSN_O8_RHSStaticBoundary_Body(cGH const * restrict const cctkGH,
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O8_RHSStaticBoundary_Body");
- }
-
- if (cctk_iteration % ML_BSSN_O8_RHSStaticBoundary_calc_every != ML_BSSN_O8_RHSStaticBoundary_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN_O8::ML_curvrhs","ML_BSSN_O8::ML_dtlapserhs","ML_BSSN_O8::ML_dtshiftrhs","ML_BSSN_O8::ML_Gammarhs","ML_BSSN_O8::ML_lapserhs","ML_BSSN_O8::ML_log_confacrhs","ML_BSSN_O8::ML_metricrhs","ML_BSSN_O8::ML_shiftrhs","ML_BSSN_O8::ML_trace_curvrhs"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O8_RHSStaticBoundary", 9, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -88,53 +75,162 @@ static void ML_BSSN_O8_RHSStaticBoundary_Body(cGH const * restrict const cctkGH,
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o1024dx = 0.0009765625*INV(dx);
- CCTK_REAL const p1o1024dy = 0.0009765625*INV(dy);
- CCTK_REAL const p1o1024dz = 0.0009765625*INV(dz);
- CCTK_REAL const p1o1680dx = 0.000595238095238095238095238095238*INV(dx);
- CCTK_REAL const p1o1680dy = 0.000595238095238095238095238095238*INV(dy);
- CCTK_REAL const p1o1680dz = 0.000595238095238095238095238095238*INV(dz);
- CCTK_REAL const p1o5040dx2 = 0.000198412698412698412698412698413*INV(SQR(dx));
- CCTK_REAL const p1o5040dy2 = 0.000198412698412698412698412698413*INV(SQR(dy));
- CCTK_REAL const p1o5040dz2 = 0.000198412698412698412698412698413*INV(SQR(dz));
- CCTK_REAL const p1o560dx = 0.00178571428571428571428571428571*INV(dx);
- CCTK_REAL const p1o560dy = 0.00178571428571428571428571428571*INV(dy);
- CCTK_REAL const p1o560dz = 0.00178571428571428571428571428571*INV(dz);
- CCTK_REAL const p1o705600dxdy = 1.41723356009070294784580498866e-6*INV(dx)*INV(dy);
- CCTK_REAL const p1o705600dxdz = 1.41723356009070294784580498866e-6*INV(dx)*INV(dz);
- CCTK_REAL const p1o705600dydz = 1.41723356009070294784580498866e-6*INV(dy)*INV(dz);
- CCTK_REAL const p1o840dx = 0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const p1o840dy = 0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const p1o840dz = 0.00119047619047619047619047619048*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o840dx = -0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const pm1o840dy = -0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const pm1o840dz = -0.00119047619047619047619047619048*INV(dz);
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_O8_RHSStaticBoundary,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_O8_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;
@@ -142,89 +238,203 @@ static void ML_BSSN_O8_RHSStaticBoundary_Body(cGH const * restrict const cctkGH,
+
/* 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 phirhsL = 0;
+ CCTK_REAL_VEC phirhsL = ToReal(0);
+
+ CCTK_REAL_VEC gt11rhsL = ToReal(0);
- CCTK_REAL gt11rhsL = 0;
+ CCTK_REAL_VEC gt12rhsL = ToReal(0);
- CCTK_REAL gt12rhsL = 0;
+ CCTK_REAL_VEC gt13rhsL = ToReal(0);
- CCTK_REAL gt13rhsL = 0;
+ CCTK_REAL_VEC gt22rhsL = ToReal(0);
- CCTK_REAL gt22rhsL = 0;
+ CCTK_REAL_VEC gt23rhsL = ToReal(0);
- CCTK_REAL gt23rhsL = 0;
+ CCTK_REAL_VEC gt33rhsL = ToReal(0);
- CCTK_REAL gt33rhsL = 0;
+ CCTK_REAL_VEC trKrhsL = ToReal(0);
- CCTK_REAL trKrhsL = 0;
+ CCTK_REAL_VEC At11rhsL = ToReal(0);
- CCTK_REAL At11rhsL = 0;
+ CCTK_REAL_VEC At12rhsL = ToReal(0);
- CCTK_REAL At12rhsL = 0;
+ CCTK_REAL_VEC At13rhsL = ToReal(0);
- CCTK_REAL At13rhsL = 0;
+ CCTK_REAL_VEC At22rhsL = ToReal(0);
- CCTK_REAL At22rhsL = 0;
+ CCTK_REAL_VEC At23rhsL = ToReal(0);
- CCTK_REAL At23rhsL = 0;
+ CCTK_REAL_VEC At33rhsL = ToReal(0);
- CCTK_REAL At33rhsL = 0;
+ CCTK_REAL_VEC Xt1rhsL = ToReal(0);
- CCTK_REAL Xt1rhsL = 0;
+ CCTK_REAL_VEC Xt2rhsL = ToReal(0);
- CCTK_REAL Xt2rhsL = 0;
+ CCTK_REAL_VEC Xt3rhsL = ToReal(0);
- CCTK_REAL Xt3rhsL = 0;
+ CCTK_REAL_VEC alpharhsL = ToReal(0);
- CCTK_REAL alpharhsL = 0;
+ CCTK_REAL_VEC ArhsL = ToReal(0);
- CCTK_REAL ArhsL = 0;
+ CCTK_REAL_VEC beta1rhsL = ToReal(0);
- CCTK_REAL beta1rhsL = 0;
+ CCTK_REAL_VEC beta2rhsL = ToReal(0);
- CCTK_REAL beta2rhsL = 0;
+ CCTK_REAL_VEC beta3rhsL = ToReal(0);
- CCTK_REAL beta3rhsL = 0;
+ CCTK_REAL_VEC B1rhsL = ToReal(0);
- CCTK_REAL B1rhsL = 0;
+ CCTK_REAL_VEC B2rhsL = ToReal(0);
- CCTK_REAL B2rhsL = 0;
+ CCTK_REAL_VEC B3rhsL = ToReal(0);
- CCTK_REAL B3rhsL = 0;
+ /* If necessary, store only partial vectors after the first iteration */
- /* Copy local copies back to grid functions */
- alpharhs[index] = alpharhsL;
- Arhs[index] = ArhsL;
- At11rhs[index] = At11rhsL;
- At12rhs[index] = At12rhsL;
- At13rhs[index] = At13rhsL;
- At22rhs[index] = At22rhsL;
- At23rhs[index] = At23rhsL;
- At33rhs[index] = At33rhsL;
- B1rhs[index] = B1rhsL;
- B2rhs[index] = B2rhsL;
- B3rhs[index] = B3rhsL;
- beta1rhs[index] = beta1rhsL;
- beta2rhs[index] = beta2rhsL;
- beta3rhs[index] = beta3rhsL;
- gt11rhs[index] = gt11rhsL;
- gt12rhs[index] = gt12rhsL;
- gt13rhs[index] = gt13rhsL;
- gt22rhs[index] = gt22rhsL;
- gt23rhs[index] = gt23rhsL;
- gt33rhs[index] = gt33rhsL;
- phirhs[index] = phirhsL;
- trKrhs[index] = trKrhsL;
- Xt1rhs[index] = Xt1rhsL;
- Xt2rhs[index] = Xt2rhsL;
- Xt3rhs[index] = Xt3rhsL;
+ 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(Arhs[index],ArhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At11rhs[index],At11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At12rhs[index],At12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At13rhs[index],At13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At22rhs[index],At22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At23rhs[index],At23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At33rhs[index],At33rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B1rhs[index],B1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B2rhs[index],B2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt12rhs[index],gt12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt13rhs[index],gt13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt22rhs[index],gt22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt23rhs[index],gt23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt33rhs[index],gt33rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(phirhs[index],phirhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(trKrhs[index],trKrhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt1rhs[index],Xt1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt2rhs[index],Xt2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt3rhs[index],Xt3rhsL,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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_hi(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_hi(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_hi(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_hi(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_hi(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_hi(At33rhs[index],At33rhsL,elt_count);
+ vec_store_nta_partial_hi(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_hi(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_hi(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_hi(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_hi(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_hi(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_hi(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_hi(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_hi(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_hi(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_hi(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt3rhs[index],Xt3rhsL,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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_lo(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_lo(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_lo(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_lo(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_lo(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_lo(At33rhs[index],At33rhsL,elt_count);
+ vec_store_nta_partial_lo(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_lo(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_lo(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_lo(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_lo(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_lo(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_lo(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_lo(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_lo(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_lo(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_lo(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt3rhs[index],Xt3rhsL,elt_count);
+ break;
+ }
+ vec_store_nta(alpharhs[index],alpharhsL);
+ vec_store_nta(Arhs[index],ArhsL);
+ vec_store_nta(At11rhs[index],At11rhsL);
+ vec_store_nta(At12rhs[index],At12rhsL);
+ vec_store_nta(At13rhs[index],At13rhsL);
+ vec_store_nta(At22rhs[index],At22rhsL);
+ vec_store_nta(At23rhs[index],At23rhsL);
+ vec_store_nta(At33rhs[index],At33rhsL);
+ vec_store_nta(B1rhs[index],B1rhsL);
+ vec_store_nta(B2rhs[index],B2rhsL);
+ vec_store_nta(B3rhs[index],B3rhsL);
+ vec_store_nta(beta1rhs[index],beta1rhsL);
+ vec_store_nta(beta2rhs[index],beta2rhsL);
+ vec_store_nta(beta3rhs[index],beta3rhsL);
+ vec_store_nta(gt11rhs[index],gt11rhsL);
+ vec_store_nta(gt12rhs[index],gt12rhsL);
+ vec_store_nta(gt13rhs[index],gt13rhsL);
+ vec_store_nta(gt22rhs[index],gt22rhsL);
+ vec_store_nta(gt23rhs[index],gt23rhsL);
+ vec_store_nta(gt33rhs[index],gt33rhsL);
+ vec_store_nta(phirhs[index],phirhsL);
+ vec_store_nta(trKrhs[index],trKrhsL);
+ vec_store_nta(Xt1rhs[index],Xt1rhsL);
+ vec_store_nta(Xt2rhs[index],Xt2rhsL);
+ vec_store_nta(Xt3rhs[index],Xt3rhsL);
}
- LC_ENDLOOP3 (ML_BSSN_O8_RHSStaticBoundary);
+ LC_ENDLOOP3VEC (ML_BSSN_O8_RHSStaticBoundary);
}
extern "C" void ML_BSSN_O8_RHSStaticBoundary(CCTK_ARGUMENTS)
@@ -232,5 +442,39 @@ extern "C" void ML_BSSN_O8_RHSStaticBoundary(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O8_RHSStaticBoundary_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_O8_RHSStaticBoundary_calc_every != ML_BSSN_O8_RHSStaticBoundary_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN_O8::ML_curvrhs","ML_BSSN_O8::ML_dtlapserhs","ML_BSSN_O8::ML_dtshiftrhs","ML_BSSN_O8::ML_Gammarhs","ML_BSSN_O8::ML_lapserhs","ML_BSSN_O8::ML_log_confacrhs","ML_BSSN_O8::ML_metricrhs","ML_BSSN_O8::ML_shiftrhs","ML_BSSN_O8::ML_trace_curvrhs"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O8_RHSStaticBoundary", 9, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverBoundary(cctkGH, &ML_BSSN_O8_RHSStaticBoundary_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_O8_RHSStaticBoundary_Body");
+ }
}
diff --git a/ML_BSSN_O8/src/ML_BSSN_O8_boundary.cc b/ML_BSSN_O8/src/ML_BSSN_O8_boundary.cc
index 5669ea4..afe203b 100644
--- a/ML_BSSN_O8/src/ML_BSSN_O8_boundary.cc
+++ b/ML_BSSN_O8/src/ML_BSSN_O8_boundary.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_O8_boundary_SelectBCs(CCTK_ARGUMENTS)
{
@@ -57,7 +58,7 @@ extern "C" void ML_BSSN_O8_boundary_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_BSSN_O8_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_O8_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;
@@ -65,20 +66,6 @@ static void ML_BSSN_O8_boundary_Body(cGH const * restrict const cctkGH, int cons
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O8_boundary_Body");
- }
-
- if (cctk_iteration % ML_BSSN_O8_boundary_calc_every != ML_BSSN_O8_boundary_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN_O8::ML_curv","ML_BSSN_O8::ML_dtlapse","ML_BSSN_O8::ML_dtshift","ML_BSSN_O8::ML_Gamma","ML_BSSN_O8::ML_lapse","ML_BSSN_O8::ML_log_confac","ML_BSSN_O8::ML_metric","ML_BSSN_O8::ML_shift","ML_BSSN_O8::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O8_boundary", 9, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -88,53 +75,162 @@ static void ML_BSSN_O8_boundary_Body(cGH const * restrict const cctkGH, int cons
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o1024dx = 0.0009765625*INV(dx);
- CCTK_REAL const p1o1024dy = 0.0009765625*INV(dy);
- CCTK_REAL const p1o1024dz = 0.0009765625*INV(dz);
- CCTK_REAL const p1o1680dx = 0.000595238095238095238095238095238*INV(dx);
- CCTK_REAL const p1o1680dy = 0.000595238095238095238095238095238*INV(dy);
- CCTK_REAL const p1o1680dz = 0.000595238095238095238095238095238*INV(dz);
- CCTK_REAL const p1o5040dx2 = 0.000198412698412698412698412698413*INV(SQR(dx));
- CCTK_REAL const p1o5040dy2 = 0.000198412698412698412698412698413*INV(SQR(dy));
- CCTK_REAL const p1o5040dz2 = 0.000198412698412698412698412698413*INV(SQR(dz));
- CCTK_REAL const p1o560dx = 0.00178571428571428571428571428571*INV(dx);
- CCTK_REAL const p1o560dy = 0.00178571428571428571428571428571*INV(dy);
- CCTK_REAL const p1o560dz = 0.00178571428571428571428571428571*INV(dz);
- CCTK_REAL const p1o705600dxdy = 1.41723356009070294784580498866e-6*INV(dx)*INV(dy);
- CCTK_REAL const p1o705600dxdz = 1.41723356009070294784580498866e-6*INV(dx)*INV(dz);
- CCTK_REAL const p1o705600dydz = 1.41723356009070294784580498866e-6*INV(dy)*INV(dz);
- CCTK_REAL const p1o840dx = 0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const p1o840dy = 0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const p1o840dz = 0.00119047619047619047619047619048*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o840dx = -0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const pm1o840dy = -0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const pm1o840dz = -0.00119047619047619047619047619048*INV(dz);
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_O8_boundary,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_O8_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;
@@ -142,89 +238,203 @@ static void ML_BSSN_O8_boundary_Body(cGH const * restrict const cctkGH, int cons
+
/* 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 phiL = IfThen(conformalMethod,1,0);
+ CCTK_REAL_VEC phiL = IfThen(conformalMethod,ToReal(1),ToReal(0));
+
+ CCTK_REAL_VEC gt11L = ToReal(1);
- CCTK_REAL gt11L = 1;
+ CCTK_REAL_VEC gt12L = ToReal(0);
- CCTK_REAL gt12L = 0;
+ CCTK_REAL_VEC gt13L = ToReal(0);
- CCTK_REAL gt13L = 0;
+ CCTK_REAL_VEC gt22L = ToReal(1);
- CCTK_REAL gt22L = 1;
+ CCTK_REAL_VEC gt23L = ToReal(0);
- CCTK_REAL gt23L = 0;
+ CCTK_REAL_VEC gt33L = ToReal(1);
- CCTK_REAL gt33L = 1;
+ CCTK_REAL_VEC trKL = ToReal(0);
- CCTK_REAL trKL = 0;
+ CCTK_REAL_VEC At11L = ToReal(0);
- CCTK_REAL At11L = 0;
+ CCTK_REAL_VEC At12L = ToReal(0);
- CCTK_REAL At12L = 0;
+ CCTK_REAL_VEC At13L = ToReal(0);
- CCTK_REAL At13L = 0;
+ CCTK_REAL_VEC At22L = ToReal(0);
- CCTK_REAL At22L = 0;
+ CCTK_REAL_VEC At23L = ToReal(0);
- CCTK_REAL At23L = 0;
+ CCTK_REAL_VEC At33L = ToReal(0);
- CCTK_REAL At33L = 0;
+ CCTK_REAL_VEC Xt1L = ToReal(0);
- CCTK_REAL Xt1L = 0;
+ CCTK_REAL_VEC Xt2L = ToReal(0);
- CCTK_REAL Xt2L = 0;
+ CCTK_REAL_VEC Xt3L = ToReal(0);
- CCTK_REAL Xt3L = 0;
+ CCTK_REAL_VEC alphaL = ToReal(1);
- CCTK_REAL alphaL = 1;
+ CCTK_REAL_VEC AL = ToReal(0);
- CCTK_REAL AL = 0;
+ CCTK_REAL_VEC beta1L = ToReal(0);
- CCTK_REAL beta1L = 0;
+ CCTK_REAL_VEC beta2L = ToReal(0);
- CCTK_REAL beta2L = 0;
+ CCTK_REAL_VEC beta3L = ToReal(0);
- CCTK_REAL beta3L = 0;
+ CCTK_REAL_VEC B1L = ToReal(0);
- CCTK_REAL B1L = 0;
+ CCTK_REAL_VEC B2L = ToReal(0);
- CCTK_REAL B2L = 0;
+ CCTK_REAL_VEC B3L = ToReal(0);
- CCTK_REAL B3L = 0;
+ /* If necessary, store only partial vectors after the first iteration */
- /* Copy local copies back to grid functions */
- A[index] = AL;
- alpha[index] = alphaL;
- At11[index] = At11L;
- At12[index] = At12L;
- At13[index] = At13L;
- At22[index] = At22L;
- At23[index] = At23L;
- At33[index] = At33L;
- B1[index] = B1L;
- B2[index] = B2L;
- B3[index] = B3L;
- beta1[index] = beta1L;
- beta2[index] = beta2L;
- beta3[index] = beta3L;
- gt11[index] = gt11L;
- gt12[index] = gt12L;
- gt13[index] = gt13L;
- gt22[index] = gt22L;
- gt23[index] = gt23L;
- gt33[index] = gt33L;
- phi[index] = phiL;
- trK[index] = trKL;
- Xt1[index] = Xt1L;
- Xt2[index] = Xt2L;
- Xt3[index] = Xt3L;
+ 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(A[index],AL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(alpha[index],alphaL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At11[index],At11L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At12[index],At12L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At13[index],At13L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At22[index],At22L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At23[index],At23L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At33[index],At33L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B1[index],B1L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B2[index],B2L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B3[index],B3L,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(gt11[index],gt11L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt12[index],gt12L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt13[index],gt13L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt22[index],gt22L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt23[index],gt23L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt33[index],gt33L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(phi[index],phiL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(trK[index],trKL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt1[index],Xt1L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt2[index],Xt2L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt3[index],Xt3L,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(A[index],AL,elt_count);
+ vec_store_nta_partial_hi(alpha[index],alphaL,elt_count);
+ vec_store_nta_partial_hi(At11[index],At11L,elt_count);
+ vec_store_nta_partial_hi(At12[index],At12L,elt_count);
+ vec_store_nta_partial_hi(At13[index],At13L,elt_count);
+ vec_store_nta_partial_hi(At22[index],At22L,elt_count);
+ vec_store_nta_partial_hi(At23[index],At23L,elt_count);
+ vec_store_nta_partial_hi(At33[index],At33L,elt_count);
+ vec_store_nta_partial_hi(B1[index],B1L,elt_count);
+ vec_store_nta_partial_hi(B2[index],B2L,elt_count);
+ vec_store_nta_partial_hi(B3[index],B3L,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(gt11[index],gt11L,elt_count);
+ vec_store_nta_partial_hi(gt12[index],gt12L,elt_count);
+ vec_store_nta_partial_hi(gt13[index],gt13L,elt_count);
+ vec_store_nta_partial_hi(gt22[index],gt22L,elt_count);
+ vec_store_nta_partial_hi(gt23[index],gt23L,elt_count);
+ vec_store_nta_partial_hi(gt33[index],gt33L,elt_count);
+ vec_store_nta_partial_hi(phi[index],phiL,elt_count);
+ vec_store_nta_partial_hi(trK[index],trKL,elt_count);
+ vec_store_nta_partial_hi(Xt1[index],Xt1L,elt_count);
+ vec_store_nta_partial_hi(Xt2[index],Xt2L,elt_count);
+ vec_store_nta_partial_hi(Xt3[index],Xt3L,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(A[index],AL,elt_count);
+ vec_store_nta_partial_lo(alpha[index],alphaL,elt_count);
+ vec_store_nta_partial_lo(At11[index],At11L,elt_count);
+ vec_store_nta_partial_lo(At12[index],At12L,elt_count);
+ vec_store_nta_partial_lo(At13[index],At13L,elt_count);
+ vec_store_nta_partial_lo(At22[index],At22L,elt_count);
+ vec_store_nta_partial_lo(At23[index],At23L,elt_count);
+ vec_store_nta_partial_lo(At33[index],At33L,elt_count);
+ vec_store_nta_partial_lo(B1[index],B1L,elt_count);
+ vec_store_nta_partial_lo(B2[index],B2L,elt_count);
+ vec_store_nta_partial_lo(B3[index],B3L,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(gt11[index],gt11L,elt_count);
+ vec_store_nta_partial_lo(gt12[index],gt12L,elt_count);
+ vec_store_nta_partial_lo(gt13[index],gt13L,elt_count);
+ vec_store_nta_partial_lo(gt22[index],gt22L,elt_count);
+ vec_store_nta_partial_lo(gt23[index],gt23L,elt_count);
+ vec_store_nta_partial_lo(gt33[index],gt33L,elt_count);
+ vec_store_nta_partial_lo(phi[index],phiL,elt_count);
+ vec_store_nta_partial_lo(trK[index],trKL,elt_count);
+ vec_store_nta_partial_lo(Xt1[index],Xt1L,elt_count);
+ vec_store_nta_partial_lo(Xt2[index],Xt2L,elt_count);
+ vec_store_nta_partial_lo(Xt3[index],Xt3L,elt_count);
+ break;
+ }
+ vec_store_nta(A[index],AL);
+ vec_store_nta(alpha[index],alphaL);
+ vec_store_nta(At11[index],At11L);
+ vec_store_nta(At12[index],At12L);
+ vec_store_nta(At13[index],At13L);
+ vec_store_nta(At22[index],At22L);
+ vec_store_nta(At23[index],At23L);
+ vec_store_nta(At33[index],At33L);
+ vec_store_nta(B1[index],B1L);
+ vec_store_nta(B2[index],B2L);
+ vec_store_nta(B3[index],B3L);
+ vec_store_nta(beta1[index],beta1L);
+ vec_store_nta(beta2[index],beta2L);
+ vec_store_nta(beta3[index],beta3L);
+ vec_store_nta(gt11[index],gt11L);
+ vec_store_nta(gt12[index],gt12L);
+ vec_store_nta(gt13[index],gt13L);
+ vec_store_nta(gt22[index],gt22L);
+ vec_store_nta(gt23[index],gt23L);
+ vec_store_nta(gt33[index],gt33L);
+ vec_store_nta(phi[index],phiL);
+ vec_store_nta(trK[index],trKL);
+ vec_store_nta(Xt1[index],Xt1L);
+ vec_store_nta(Xt2[index],Xt2L);
+ vec_store_nta(Xt3[index],Xt3L);
}
- LC_ENDLOOP3 (ML_BSSN_O8_boundary);
+ LC_ENDLOOP3VEC (ML_BSSN_O8_boundary);
}
extern "C" void ML_BSSN_O8_boundary(CCTK_ARGUMENTS)
@@ -232,5 +442,39 @@ extern "C" void ML_BSSN_O8_boundary(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O8_boundary_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_O8_boundary_calc_every != ML_BSSN_O8_boundary_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN_O8::ML_curv","ML_BSSN_O8::ML_dtlapse","ML_BSSN_O8::ML_dtshift","ML_BSSN_O8::ML_Gamma","ML_BSSN_O8::ML_lapse","ML_BSSN_O8::ML_log_confac","ML_BSSN_O8::ML_metric","ML_BSSN_O8::ML_shift","ML_BSSN_O8::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O8_boundary", 9, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverBoundaryWithGhosts(cctkGH, &ML_BSSN_O8_boundary_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_O8_boundary_Body");
+ }
}
diff --git a/ML_BSSN_O8/src/ML_BSSN_O8_constraints1.cc b/ML_BSSN_O8/src/ML_BSSN_O8_constraints1.cc
index a2d4944..e1dbc8f 100644
--- a/ML_BSSN_O8/src/ML_BSSN_O8_constraints1.cc
+++ b/ML_BSSN_O8/src/ML_BSSN_O8_constraints1.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_O8_constraints1_SelectBCs(CCTK_ARGUMENTS)
{
@@ -33,7 +34,7 @@ extern "C" void ML_BSSN_O8_constraints1_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_BSSN_O8_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_O8_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;
@@ -41,21 +42,6 @@ static void ML_BSSN_O8_constraints1_Body(cGH const * restrict const cctkGH, int
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O8_constraints1_Body");
- }
-
- if (cctk_iteration % ML_BSSN_O8_constraints1_calc_every != ML_BSSN_O8_constraints1_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN_O8::ML_curv","ML_BSSN_O8::ML_Gamma","ML_BSSN_O8::ML_Ham","ML_BSSN_O8::ML_lapse","ML_BSSN_O8::ML_log_confac","ML_BSSN_O8::ML_metric","ML_BSSN_O8::ML_shift","ML_BSSN_O8::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O8_constraints1", 8, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O8_constraints1", 4, 4, 4);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -65,94 +51,203 @@ static void ML_BSSN_O8_constraints1_Body(cGH const * restrict const cctkGH, int
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o1024dx = 0.0009765625*INV(dx);
- CCTK_REAL const p1o1024dy = 0.0009765625*INV(dy);
- CCTK_REAL const p1o1024dz = 0.0009765625*INV(dz);
- CCTK_REAL const p1o1680dx = 0.000595238095238095238095238095238*INV(dx);
- CCTK_REAL const p1o1680dy = 0.000595238095238095238095238095238*INV(dy);
- CCTK_REAL const p1o1680dz = 0.000595238095238095238095238095238*INV(dz);
- CCTK_REAL const p1o5040dx2 = 0.000198412698412698412698412698413*INV(SQR(dx));
- CCTK_REAL const p1o5040dy2 = 0.000198412698412698412698412698413*INV(SQR(dy));
- CCTK_REAL const p1o5040dz2 = 0.000198412698412698412698412698413*INV(SQR(dz));
- CCTK_REAL const p1o560dx = 0.00178571428571428571428571428571*INV(dx);
- CCTK_REAL const p1o560dy = 0.00178571428571428571428571428571*INV(dy);
- CCTK_REAL const p1o560dz = 0.00178571428571428571428571428571*INV(dz);
- CCTK_REAL const p1o705600dxdy = 1.41723356009070294784580498866e-6*INV(dx)*INV(dy);
- CCTK_REAL const p1o705600dxdz = 1.41723356009070294784580498866e-6*INV(dx)*INV(dz);
- CCTK_REAL const p1o705600dydz = 1.41723356009070294784580498866e-6*INV(dy)*INV(dz);
- CCTK_REAL const p1o840dx = 0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const p1o840dy = 0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const p1o840dz = 0.00119047619047619047619047619048*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o840dx = -0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const pm1o840dy = -0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const pm1o840dz = -0.00119047619047619047619047619048*INV(dz);
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_O8_constraints1,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_O8_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 alphaL = alpha[index];
- CCTK_REAL At11L = At11[index];
- CCTK_REAL At12L = At12[index];
- CCTK_REAL At13L = At13[index];
- CCTK_REAL At22L = At22[index];
- CCTK_REAL At23L = At23[index];
- CCTK_REAL At33L = At33[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL gt11L = gt11[index];
- CCTK_REAL gt12L = gt12[index];
- CCTK_REAL gt13L = gt13[index];
- CCTK_REAL gt22L = gt22[index];
- CCTK_REAL gt23L = gt23[index];
- CCTK_REAL gt33L = gt33[index];
- CCTK_REAL phiL = phi[index];
- CCTK_REAL trKL = trK[index];
- CCTK_REAL Xt1L = Xt1[index];
- CCTK_REAL Xt2L = Xt2[index];
- CCTK_REAL Xt3L = Xt3[index];
-
- CCTK_REAL eTttL, eTtxL, eTtyL, eTtzL, eTxxL, eTxyL, eTxzL, eTyyL, eTyzL, eTzzL;
+ 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 = eTtt[index];
- eTtxL = eTtx[index];
- eTtyL = eTty[index];
- eTtzL = eTtz[index];
- eTxxL = eTxx[index];
- eTxyL = eTxy[index];
- eTxzL = eTxz[index];
- eTyyL = eTyy[index];
- eTyzL = eTyz[index];
- eTzzL = eTzz[index];
+ 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
{
@@ -168,446 +263,1332 @@ static void ML_BSSN_O8_constraints1_Body(cGH const * restrict const cctkGH, int
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 const PDstandardNth1gt11 = PDstandardNth1(&gt11[index]);
- CCTK_REAL const PDstandardNth2gt11 = PDstandardNth2(&gt11[index]);
- CCTK_REAL const PDstandardNth3gt11 = PDstandardNth3(&gt11[index]);
- CCTK_REAL const PDstandardNth11gt11 = PDstandardNth11(&gt11[index]);
- CCTK_REAL const PDstandardNth22gt11 = PDstandardNth22(&gt11[index]);
- CCTK_REAL const PDstandardNth33gt11 = PDstandardNth33(&gt11[index]);
- CCTK_REAL const PDstandardNth12gt11 = PDstandardNth12(&gt11[index]);
- CCTK_REAL const PDstandardNth13gt11 = PDstandardNth13(&gt11[index]);
- CCTK_REAL const PDstandardNth23gt11 = PDstandardNth23(&gt11[index]);
- CCTK_REAL const PDstandardNth1gt12 = PDstandardNth1(&gt12[index]);
- CCTK_REAL const PDstandardNth2gt12 = PDstandardNth2(&gt12[index]);
- CCTK_REAL const PDstandardNth3gt12 = PDstandardNth3(&gt12[index]);
- CCTK_REAL const PDstandardNth11gt12 = PDstandardNth11(&gt12[index]);
- CCTK_REAL const PDstandardNth22gt12 = PDstandardNth22(&gt12[index]);
- CCTK_REAL const PDstandardNth33gt12 = PDstandardNth33(&gt12[index]);
- CCTK_REAL const PDstandardNth12gt12 = PDstandardNth12(&gt12[index]);
- CCTK_REAL const PDstandardNth13gt12 = PDstandardNth13(&gt12[index]);
- CCTK_REAL const PDstandardNth23gt12 = PDstandardNth23(&gt12[index]);
- CCTK_REAL const PDstandardNth1gt13 = PDstandardNth1(&gt13[index]);
- CCTK_REAL const PDstandardNth2gt13 = PDstandardNth2(&gt13[index]);
- CCTK_REAL const PDstandardNth3gt13 = PDstandardNth3(&gt13[index]);
- CCTK_REAL const PDstandardNth11gt13 = PDstandardNth11(&gt13[index]);
- CCTK_REAL const PDstandardNth22gt13 = PDstandardNth22(&gt13[index]);
- CCTK_REAL const PDstandardNth33gt13 = PDstandardNth33(&gt13[index]);
- CCTK_REAL const PDstandardNth12gt13 = PDstandardNth12(&gt13[index]);
- CCTK_REAL const PDstandardNth13gt13 = PDstandardNth13(&gt13[index]);
- CCTK_REAL const PDstandardNth23gt13 = PDstandardNth23(&gt13[index]);
- CCTK_REAL const PDstandardNth1gt22 = PDstandardNth1(&gt22[index]);
- CCTK_REAL const PDstandardNth2gt22 = PDstandardNth2(&gt22[index]);
- CCTK_REAL const PDstandardNth3gt22 = PDstandardNth3(&gt22[index]);
- CCTK_REAL const PDstandardNth11gt22 = PDstandardNth11(&gt22[index]);
- CCTK_REAL const PDstandardNth22gt22 = PDstandardNth22(&gt22[index]);
- CCTK_REAL const PDstandardNth33gt22 = PDstandardNth33(&gt22[index]);
- CCTK_REAL const PDstandardNth12gt22 = PDstandardNth12(&gt22[index]);
- CCTK_REAL const PDstandardNth13gt22 = PDstandardNth13(&gt22[index]);
- CCTK_REAL const PDstandardNth23gt22 = PDstandardNth23(&gt22[index]);
- CCTK_REAL const PDstandardNth1gt23 = PDstandardNth1(&gt23[index]);
- CCTK_REAL const PDstandardNth2gt23 = PDstandardNth2(&gt23[index]);
- CCTK_REAL const PDstandardNth3gt23 = PDstandardNth3(&gt23[index]);
- CCTK_REAL const PDstandardNth11gt23 = PDstandardNth11(&gt23[index]);
- CCTK_REAL const PDstandardNth22gt23 = PDstandardNth22(&gt23[index]);
- CCTK_REAL const PDstandardNth33gt23 = PDstandardNth33(&gt23[index]);
- CCTK_REAL const PDstandardNth12gt23 = PDstandardNth12(&gt23[index]);
- CCTK_REAL const PDstandardNth13gt23 = PDstandardNth13(&gt23[index]);
- CCTK_REAL const PDstandardNth23gt23 = PDstandardNth23(&gt23[index]);
- CCTK_REAL const PDstandardNth1gt33 = PDstandardNth1(&gt33[index]);
- CCTK_REAL const PDstandardNth2gt33 = PDstandardNth2(&gt33[index]);
- CCTK_REAL const PDstandardNth3gt33 = PDstandardNth3(&gt33[index]);
- CCTK_REAL const PDstandardNth11gt33 = PDstandardNth11(&gt33[index]);
- CCTK_REAL const PDstandardNth22gt33 = PDstandardNth22(&gt33[index]);
- CCTK_REAL const PDstandardNth33gt33 = PDstandardNth33(&gt33[index]);
- CCTK_REAL const PDstandardNth12gt33 = PDstandardNth12(&gt33[index]);
- CCTK_REAL const PDstandardNth13gt33 = PDstandardNth13(&gt33[index]);
- CCTK_REAL const PDstandardNth23gt33 = PDstandardNth23(&gt33[index]);
- CCTK_REAL const PDstandardNth1phi = PDstandardNth1(&phi[index]);
- CCTK_REAL const PDstandardNth2phi = PDstandardNth2(&phi[index]);
- CCTK_REAL const PDstandardNth3phi = PDstandardNth3(&phi[index]);
- CCTK_REAL const PDstandardNth11phi = PDstandardNth11(&phi[index]);
- CCTK_REAL const PDstandardNth22phi = PDstandardNth22(&phi[index]);
- CCTK_REAL const PDstandardNth33phi = PDstandardNth33(&phi[index]);
- CCTK_REAL const PDstandardNth12phi = PDstandardNth12(&phi[index]);
- CCTK_REAL const PDstandardNth13phi = PDstandardNth13(&phi[index]);
- CCTK_REAL const PDstandardNth23phi = PDstandardNth23(&phi[index]);
- CCTK_REAL const PDstandardNth1Xt1 = PDstandardNth1(&Xt1[index]);
- CCTK_REAL const PDstandardNth2Xt1 = PDstandardNth2(&Xt1[index]);
- CCTK_REAL const PDstandardNth3Xt1 = PDstandardNth3(&Xt1[index]);
- CCTK_REAL const PDstandardNth1Xt2 = PDstandardNth1(&Xt2[index]);
- CCTK_REAL const PDstandardNth2Xt2 = PDstandardNth2(&Xt2[index]);
- CCTK_REAL const PDstandardNth3Xt2 = PDstandardNth3(&Xt2[index]);
- CCTK_REAL const PDstandardNth1Xt3 = PDstandardNth1(&Xt3[index]);
- CCTK_REAL const PDstandardNth2Xt3 = PDstandardNth2(&Xt3[index]);
- CCTK_REAL const PDstandardNth3Xt3 = PDstandardNth3(&Xt3[index]);
+ 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 detgt = 1;
+ 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 gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L));
+ CCTK_REAL_VEC Gtl111 = kmul(JacPDstandardNth1gt11,ToReal(0.5));
- CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt);
+ CCTK_REAL_VEC Gtl112 = kmul(JacPDstandardNth2gt11,ToReal(0.5));
- CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC Gtl113 = kmul(JacPDstandardNth3gt11,ToReal(0.5));
- CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L));
+ CCTK_REAL_VEC Gtl122 =
+ kmadd(JacPDstandardNth1gt22,ToReal(-0.5),JacPDstandardNth2gt12);
- CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC Gtl123 =
+ kmul(kadd(JacPDstandardNth2gt13,ksub(JacPDstandardNth3gt12,JacPDstandardNth1gt23)),ToReal(0.5));
- CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L));
+ CCTK_REAL_VEC Gtl133 =
+ kmadd(JacPDstandardNth1gt33,ToReal(-0.5),JacPDstandardNth3gt13);
- CCTK_REAL Gtl111 = 0.5*PDstandardNth1gt11;
+ CCTK_REAL_VEC Gtl211 =
+ kmadd(JacPDstandardNth2gt11,ToReal(-0.5),JacPDstandardNth1gt12);
- CCTK_REAL Gtl112 = 0.5*PDstandardNth2gt11;
+ CCTK_REAL_VEC Gtl212 = kmul(JacPDstandardNth1gt22,ToReal(0.5));
- CCTK_REAL Gtl113 = 0.5*PDstandardNth3gt11;
+ CCTK_REAL_VEC Gtl213 =
+ kmul(kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth3gt12,JacPDstandardNth2gt13)),ToReal(0.5));
- CCTK_REAL Gtl122 = -0.5*PDstandardNth1gt22 + PDstandardNth2gt12;
+ CCTK_REAL_VEC Gtl222 = kmul(JacPDstandardNth2gt22,ToReal(0.5));
- CCTK_REAL Gtl123 = 0.5*(-PDstandardNth1gt23 + PDstandardNth2gt13 +
- PDstandardNth3gt12);
+ CCTK_REAL_VEC Gtl223 = kmul(JacPDstandardNth3gt22,ToReal(0.5));
- CCTK_REAL Gtl133 = -0.5*PDstandardNth1gt33 + PDstandardNth3gt13;
+ CCTK_REAL_VEC Gtl233 =
+ kmadd(JacPDstandardNth2gt33,ToReal(-0.5),JacPDstandardNth3gt23);
- CCTK_REAL Gtl211 = PDstandardNth1gt12 - 0.5*PDstandardNth2gt11;
+ CCTK_REAL_VEC Gtl311 =
+ kmadd(JacPDstandardNth3gt11,ToReal(-0.5),JacPDstandardNth1gt13);
- CCTK_REAL Gtl212 = 0.5*PDstandardNth1gt22;
+ CCTK_REAL_VEC Gtl312 =
+ kmul(kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth2gt13,JacPDstandardNth3gt12)),ToReal(0.5));
- CCTK_REAL Gtl213 = 0.5*(PDstandardNth1gt23 - PDstandardNth2gt13 +
- PDstandardNth3gt12);
+ CCTK_REAL_VEC Gtl313 = kmul(JacPDstandardNth1gt33,ToReal(0.5));
- CCTK_REAL Gtl222 = 0.5*PDstandardNth2gt22;
+ CCTK_REAL_VEC Gtl322 =
+ kmadd(JacPDstandardNth3gt22,ToReal(-0.5),JacPDstandardNth2gt23);
- CCTK_REAL Gtl223 = 0.5*PDstandardNth3gt22;
+ CCTK_REAL_VEC Gtl323 = kmul(JacPDstandardNth2gt33,ToReal(0.5));
- CCTK_REAL Gtl233 = -0.5*PDstandardNth2gt33 + PDstandardNth3gt23;
+ CCTK_REAL_VEC Gtl333 = kmul(JacPDstandardNth3gt33,ToReal(0.5));
- CCTK_REAL Gtl311 = PDstandardNth1gt13 - 0.5*PDstandardNth3gt11;
+ CCTK_REAL_VEC Gtlu111 =
+ kmadd(Gtl111,gtu11,kmadd(Gtl112,gtu12,kmul(Gtl113,gtu13)));
- CCTK_REAL Gtl312 = 0.5*(PDstandardNth1gt23 + PDstandardNth2gt13 -
- PDstandardNth3gt12);
+ CCTK_REAL_VEC Gtlu112 =
+ kmadd(Gtl111,gtu12,kmadd(Gtl112,gtu22,kmul(Gtl113,gtu23)));
- CCTK_REAL Gtl313 = 0.5*PDstandardNth1gt33;
+ CCTK_REAL_VEC Gtlu113 =
+ kmadd(Gtl111,gtu13,kmadd(Gtl112,gtu23,kmul(Gtl113,gtu33)));
- CCTK_REAL Gtl322 = PDstandardNth2gt23 - 0.5*PDstandardNth3gt22;
+ CCTK_REAL_VEC Gtlu121 =
+ kmadd(Gtl112,gtu11,kmadd(Gtl122,gtu12,kmul(Gtl123,gtu13)));
- CCTK_REAL Gtl323 = 0.5*PDstandardNth2gt33;
+ CCTK_REAL_VEC Gtlu122 =
+ kmadd(Gtl112,gtu12,kmadd(Gtl122,gtu22,kmul(Gtl123,gtu23)));
- CCTK_REAL Gtl333 = 0.5*PDstandardNth3gt33;
+ CCTK_REAL_VEC Gtlu123 =
+ kmadd(Gtl112,gtu13,kmadd(Gtl122,gtu23,kmul(Gtl123,gtu33)));
- CCTK_REAL Gtlu111 = Gtl111*gtu11 + Gtl112*gtu12 + Gtl113*gtu13;
+ CCTK_REAL_VEC Gtlu131 =
+ kmadd(Gtl113,gtu11,kmadd(Gtl123,gtu12,kmul(Gtl133,gtu13)));
- CCTK_REAL Gtlu112 = Gtl111*gtu12 + Gtl112*gtu22 + Gtl113*gtu23;
+ CCTK_REAL_VEC Gtlu132 =
+ kmadd(Gtl113,gtu12,kmadd(Gtl123,gtu22,kmul(Gtl133,gtu23)));
- CCTK_REAL Gtlu113 = Gtl111*gtu13 + Gtl112*gtu23 + Gtl113*gtu33;
+ CCTK_REAL_VEC Gtlu133 =
+ kmadd(Gtl113,gtu13,kmadd(Gtl123,gtu23,kmul(Gtl133,gtu33)));
- CCTK_REAL Gtlu121 = Gtl112*gtu11 + Gtl122*gtu12 + Gtl123*gtu13;
+ CCTK_REAL_VEC Gtlu211 =
+ kmadd(Gtl211,gtu11,kmadd(Gtl212,gtu12,kmul(Gtl213,gtu13)));
- CCTK_REAL Gtlu122 = Gtl112*gtu12 + Gtl122*gtu22 + Gtl123*gtu23;
+ CCTK_REAL_VEC Gtlu212 =
+ kmadd(Gtl211,gtu12,kmadd(Gtl212,gtu22,kmul(Gtl213,gtu23)));
- CCTK_REAL Gtlu123 = Gtl112*gtu13 + Gtl122*gtu23 + Gtl123*gtu33;
+ CCTK_REAL_VEC Gtlu213 =
+ kmadd(Gtl211,gtu13,kmadd(Gtl212,gtu23,kmul(Gtl213,gtu33)));
- CCTK_REAL Gtlu131 = Gtl113*gtu11 + Gtl123*gtu12 + Gtl133*gtu13;
+ CCTK_REAL_VEC Gtlu221 =
+ kmadd(Gtl212,gtu11,kmadd(Gtl222,gtu12,kmul(Gtl223,gtu13)));
- CCTK_REAL Gtlu132 = Gtl113*gtu12 + Gtl123*gtu22 + Gtl133*gtu23;
+ CCTK_REAL_VEC Gtlu222 =
+ kmadd(Gtl212,gtu12,kmadd(Gtl222,gtu22,kmul(Gtl223,gtu23)));
- CCTK_REAL Gtlu133 = Gtl113*gtu13 + Gtl123*gtu23 + Gtl133*gtu33;
+ CCTK_REAL_VEC Gtlu223 =
+ kmadd(Gtl212,gtu13,kmadd(Gtl222,gtu23,kmul(Gtl223,gtu33)));
- CCTK_REAL Gtlu211 = Gtl211*gtu11 + Gtl212*gtu12 + Gtl213*gtu13;
+ CCTK_REAL_VEC Gtlu231 =
+ kmadd(Gtl213,gtu11,kmadd(Gtl223,gtu12,kmul(Gtl233,gtu13)));
- CCTK_REAL Gtlu212 = Gtl211*gtu12 + Gtl212*gtu22 + Gtl213*gtu23;
+ CCTK_REAL_VEC Gtlu232 =
+ kmadd(Gtl213,gtu12,kmadd(Gtl223,gtu22,kmul(Gtl233,gtu23)));
- CCTK_REAL Gtlu213 = Gtl211*gtu13 + Gtl212*gtu23 + Gtl213*gtu33;
+ CCTK_REAL_VEC Gtlu233 =
+ kmadd(Gtl213,gtu13,kmadd(Gtl223,gtu23,kmul(Gtl233,gtu33)));
- CCTK_REAL Gtlu221 = Gtl212*gtu11 + Gtl222*gtu12 + Gtl223*gtu13;
+ CCTK_REAL_VEC Gtlu311 =
+ kmadd(Gtl311,gtu11,kmadd(Gtl312,gtu12,kmul(Gtl313,gtu13)));
- CCTK_REAL Gtlu222 = Gtl212*gtu12 + Gtl222*gtu22 + Gtl223*gtu23;
+ CCTK_REAL_VEC Gtlu312 =
+ kmadd(Gtl311,gtu12,kmadd(Gtl312,gtu22,kmul(Gtl313,gtu23)));
- CCTK_REAL Gtlu223 = Gtl212*gtu13 + Gtl222*gtu23 + Gtl223*gtu33;
+ CCTK_REAL_VEC Gtlu313 =
+ kmadd(Gtl311,gtu13,kmadd(Gtl312,gtu23,kmul(Gtl313,gtu33)));
- CCTK_REAL Gtlu231 = Gtl213*gtu11 + Gtl223*gtu12 + Gtl233*gtu13;
+ CCTK_REAL_VEC Gtlu321 =
+ kmadd(Gtl312,gtu11,kmadd(Gtl322,gtu12,kmul(Gtl323,gtu13)));
- CCTK_REAL Gtlu232 = Gtl213*gtu12 + Gtl223*gtu22 + Gtl233*gtu23;
+ CCTK_REAL_VEC Gtlu322 =
+ kmadd(Gtl312,gtu12,kmadd(Gtl322,gtu22,kmul(Gtl323,gtu23)));
- CCTK_REAL Gtlu233 = Gtl213*gtu13 + Gtl223*gtu23 + Gtl233*gtu33;
+ CCTK_REAL_VEC Gtlu323 =
+ kmadd(Gtl312,gtu13,kmadd(Gtl322,gtu23,kmul(Gtl323,gtu33)));
- CCTK_REAL Gtlu311 = Gtl311*gtu11 + Gtl312*gtu12 + Gtl313*gtu13;
+ CCTK_REAL_VEC Gtlu331 =
+ kmadd(Gtl313,gtu11,kmadd(Gtl323,gtu12,kmul(Gtl333,gtu13)));
- CCTK_REAL Gtlu312 = Gtl311*gtu12 + Gtl312*gtu22 + Gtl313*gtu23;
+ CCTK_REAL_VEC Gtlu332 =
+ kmadd(Gtl313,gtu12,kmadd(Gtl323,gtu22,kmul(Gtl333,gtu23)));
- CCTK_REAL Gtlu313 = Gtl311*gtu13 + Gtl312*gtu23 + Gtl313*gtu33;
+ CCTK_REAL_VEC Gtlu333 =
+ kmadd(Gtl313,gtu13,kmadd(Gtl323,gtu23,kmul(Gtl333,gtu33)));
- CCTK_REAL Gtlu321 = Gtl312*gtu11 + Gtl322*gtu12 + Gtl323*gtu13;
+ CCTK_REAL_VEC Gt111 =
+ kmadd(Gtl111,gtu11,kmadd(Gtl211,gtu12,kmul(Gtl311,gtu13)));
- CCTK_REAL Gtlu322 = Gtl312*gtu12 + Gtl322*gtu22 + Gtl323*gtu23;
+ CCTK_REAL_VEC Gt211 =
+ kmadd(Gtl111,gtu12,kmadd(Gtl211,gtu22,kmul(Gtl311,gtu23)));
- CCTK_REAL Gtlu323 = Gtl312*gtu13 + Gtl322*gtu23 + Gtl323*gtu33;
+ CCTK_REAL_VEC Gt311 =
+ kmadd(Gtl111,gtu13,kmadd(Gtl211,gtu23,kmul(Gtl311,gtu33)));
- CCTK_REAL Gtlu331 = Gtl313*gtu11 + Gtl323*gtu12 + Gtl333*gtu13;
+ CCTK_REAL_VEC Gt112 =
+ kmadd(Gtl112,gtu11,kmadd(Gtl212,gtu12,kmul(Gtl312,gtu13)));
- CCTK_REAL Gtlu332 = Gtl313*gtu12 + Gtl323*gtu22 + Gtl333*gtu23;
+ CCTK_REAL_VEC Gt212 =
+ kmadd(Gtl112,gtu12,kmadd(Gtl212,gtu22,kmul(Gtl312,gtu23)));
- CCTK_REAL Gtlu333 = Gtl313*gtu13 + Gtl323*gtu23 + Gtl333*gtu33;
+ CCTK_REAL_VEC Gt312 =
+ kmadd(Gtl112,gtu13,kmadd(Gtl212,gtu23,kmul(Gtl312,gtu33)));
- CCTK_REAL Gt111 = Gtl111*gtu11 + Gtl211*gtu12 + Gtl311*gtu13;
+ CCTK_REAL_VEC Gt113 =
+ kmadd(Gtl113,gtu11,kmadd(Gtl213,gtu12,kmul(Gtl313,gtu13)));
- CCTK_REAL Gt211 = Gtl111*gtu12 + Gtl211*gtu22 + Gtl311*gtu23;
+ CCTK_REAL_VEC Gt213 =
+ kmadd(Gtl113,gtu12,kmadd(Gtl213,gtu22,kmul(Gtl313,gtu23)));
- CCTK_REAL Gt311 = Gtl111*gtu13 + Gtl211*gtu23 + Gtl311*gtu33;
+ CCTK_REAL_VEC Gt313 =
+ kmadd(Gtl113,gtu13,kmadd(Gtl213,gtu23,kmul(Gtl313,gtu33)));
- CCTK_REAL Gt112 = Gtl112*gtu11 + Gtl212*gtu12 + Gtl312*gtu13;
+ CCTK_REAL_VEC Gt122 =
+ kmadd(Gtl122,gtu11,kmadd(Gtl222,gtu12,kmul(Gtl322,gtu13)));
- CCTK_REAL Gt212 = Gtl112*gtu12 + Gtl212*gtu22 + Gtl312*gtu23;
+ CCTK_REAL_VEC Gt222 =
+ kmadd(Gtl122,gtu12,kmadd(Gtl222,gtu22,kmul(Gtl322,gtu23)));
- CCTK_REAL Gt312 = Gtl112*gtu13 + Gtl212*gtu23 + Gtl312*gtu33;
+ CCTK_REAL_VEC Gt322 =
+ kmadd(Gtl122,gtu13,kmadd(Gtl222,gtu23,kmul(Gtl322,gtu33)));
- CCTK_REAL Gt113 = Gtl113*gtu11 + Gtl213*gtu12 + Gtl313*gtu13;
+ CCTK_REAL_VEC Gt123 =
+ kmadd(Gtl123,gtu11,kmadd(Gtl223,gtu12,kmul(Gtl323,gtu13)));
- CCTK_REAL Gt213 = Gtl113*gtu12 + Gtl213*gtu22 + Gtl313*gtu23;
+ CCTK_REAL_VEC Gt223 =
+ kmadd(Gtl123,gtu12,kmadd(Gtl223,gtu22,kmul(Gtl323,gtu23)));
- CCTK_REAL Gt313 = Gtl113*gtu13 + Gtl213*gtu23 + Gtl313*gtu33;
+ CCTK_REAL_VEC Gt323 =
+ kmadd(Gtl123,gtu13,kmadd(Gtl223,gtu23,kmul(Gtl323,gtu33)));
- CCTK_REAL Gt122 = Gtl122*gtu11 + Gtl222*gtu12 + Gtl322*gtu13;
+ CCTK_REAL_VEC Gt133 =
+ kmadd(Gtl133,gtu11,kmadd(Gtl233,gtu12,kmul(Gtl333,gtu13)));
- CCTK_REAL Gt222 = Gtl122*gtu12 + Gtl222*gtu22 + Gtl322*gtu23;
+ CCTK_REAL_VEC Gt233 =
+ kmadd(Gtl133,gtu12,kmadd(Gtl233,gtu22,kmul(Gtl333,gtu23)));
- CCTK_REAL Gt322 = Gtl122*gtu13 + Gtl222*gtu23 + Gtl322*gtu33;
+ CCTK_REAL_VEC Gt333 =
+ kmadd(Gtl133,gtu13,kmadd(Gtl233,gtu23,kmul(Gtl333,gtu33)));
- CCTK_REAL Gt123 = Gtl123*gtu11 + Gtl223*gtu12 + Gtl323*gtu13;
+ 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 Gt223 = Gtl123*gtu12 + Gtl223*gtu22 + Gtl323*gtu23;
+ 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 Gt323 = Gtl123*gtu13 + Gtl223*gtu23 + Gtl323*gtu33;
+ 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 Gt133 = Gtl133*gtu11 + Gtl233*gtu12 + Gtl333*gtu13;
+ 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 Gt233 = Gtl133*gtu12 + Gtl233*gtu22 + Gtl333*gtu23;
+ 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 Gt333 = Gtl133*gtu13 + Gtl233*gtu23 + Gtl333*gtu33;
+ 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 Xtn1 = Gt111*gtu11 + Gt122*gtu22 + 2*(Gt112*gtu12 +
- Gt113*gtu13 + Gt123*gtu23) + Gt133*gtu33;
+ 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 Xtn2 = Gt211*gtu11 + Gt222*gtu22 + 2*(Gt212*gtu12 +
- Gt213*gtu13 + Gt223*gtu23) + Gt233*gtu33;
+ 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 Xtn3 = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu12 +
- Gt313*gtu13 + Gt323*gtu23) + Gt333*gtu33;
+ 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 Rt11 = 0.5*(6*(Gt111*Gtlu111 + Gt112*Gtlu112 +
- Gt113*Gtlu113) + 4*(Gt211*Gtlu121 + Gt212*Gtlu122 + Gt213*Gtlu123 +
- Gt311*Gtlu131 + Gt312*Gtlu132 + Gt313*Gtlu133) -
- gtu11*PDstandardNth11gt11 - 2*gtu12*PDstandardNth12gt11 -
- 2*gtu13*PDstandardNth13gt11 + 2*(Gt211*Gtlu211 + Gt212*Gtlu212 +
- Gt213*Gtlu213 + Gt311*Gtlu311 + Gt312*Gtlu312 + Gt313*Gtlu313 +
- gt11L*PDstandardNth1Xt1) + 2*gt12L*PDstandardNth1Xt2 +
- 2*gt13L*PDstandardNth1Xt3 - gtu22*PDstandardNth22gt11 -
- 2*gtu23*PDstandardNth23gt11 - gtu33*PDstandardNth33gt11 + 2*Gtl111*Xtn1
- + 2*Gtl112*Xtn2 + 2*Gtl113*Xtn3);
+ CCTK_REAL_VEC fac1 =
+ IfThen(conformalMethod,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
- CCTK_REAL Rt12 = 0.5*(4*(Gt211*Gtlu221 + Gt212*Gtlu222 +
- Gt213*Gtlu223) + 2*(Gt112*Gtlu111 + Gt122*Gtlu112 + Gt123*Gtlu113 +
- Gt111*Gtlu121 + Gt212*Gtlu121 + Gt112*Gtlu122 + Gt222*Gtlu122 +
- Gt113*Gtlu123 + Gt223*Gtlu123 + Gt312*Gtlu131 + Gt322*Gtlu132 +
- Gt323*Gtlu133 + Gt111*Gtlu211 + Gt112*Gtlu212 + Gt113*Gtlu213 +
- Gt311*Gtlu231 + Gt312*Gtlu232 + Gt313*Gtlu233 + Gt311*Gtlu321 +
- Gt312*Gtlu322 + Gt313*Gtlu323) - gtu11*PDstandardNth11gt12 -
- 2*gtu12*PDstandardNth12gt12 - 2*gtu13*PDstandardNth13gt12 +
- gt12L*PDstandardNth1Xt1 + gt22L*PDstandardNth1Xt2 +
- gt23L*PDstandardNth1Xt3 - gtu22*PDstandardNth22gt12 -
- 2*gtu23*PDstandardNth23gt12 + gt11L*PDstandardNth2Xt1 +
- gt12L*PDstandardNth2Xt2 + gt13L*PDstandardNth2Xt3 -
- gtu33*PDstandardNth33gt12 + Gtl112*Xtn1 + Gtl211*Xtn1 + Gtl122*Xtn2 +
- Gtl212*Xtn2 + Gtl123*Xtn3 + Gtl213*Xtn3);
+ CCTK_REAL_VEC cdphi1 = kmul(fac1,JacPDstandardNth1phi);
- CCTK_REAL Rt13 = 0.5*(2*(Gt113*Gtlu111 + Gt123*Gtlu112 + Gt133*Gtlu113
- + Gt213*Gtlu121 + Gt223*Gtlu122 + Gt233*Gtlu123 + Gt111*Gtlu131 +
- Gt313*Gtlu131 + Gt112*Gtlu132 + Gt323*Gtlu132 + Gt113*Gtlu133 +
- Gt333*Gtlu133 + Gt211*Gtlu231 + Gt212*Gtlu232 + Gt213*Gtlu233 +
- Gt111*Gtlu311 + Gt112*Gtlu312 + Gt113*Gtlu313 + Gt211*Gtlu321 +
- Gt212*Gtlu322 + Gt213*Gtlu323) + 4*(Gt311*Gtlu331 + Gt312*Gtlu332 +
- Gt313*Gtlu333) - gtu11*PDstandardNth11gt13 -
- 2*gtu12*PDstandardNth12gt13 - 2*gtu13*PDstandardNth13gt13 +
- gt13L*PDstandardNth1Xt1 + gt23L*PDstandardNth1Xt2 +
- gt33L*PDstandardNth1Xt3 - gtu22*PDstandardNth22gt13 -
- 2*gtu23*PDstandardNth23gt13 - gtu33*PDstandardNth33gt13 +
- gt11L*PDstandardNth3Xt1 + gt12L*PDstandardNth3Xt2 +
- gt13L*PDstandardNth3Xt3 + Gtl113*Xtn1 + Gtl311*Xtn1 + Gtl123*Xtn2 +
- Gtl312*Xtn2 + Gtl133*Xtn3 + Gtl313*Xtn3);
+ CCTK_REAL_VEC cdphi2 = kmul(fac1,JacPDstandardNth2phi);
- CCTK_REAL Rt22 = 0.5*(6*(Gt212*Gtlu221 + Gt222*Gtlu222 +
- Gt223*Gtlu223) + 4*(Gt112*Gtlu211 + Gt122*Gtlu212 + Gt123*Gtlu213 +
- Gt312*Gtlu231 + Gt322*Gtlu232 + Gt323*Gtlu233) -
- gtu11*PDstandardNth11gt22 - 2*gtu12*PDstandardNth12gt22 -
- 2*gtu13*PDstandardNth13gt22 - gtu22*PDstandardNth22gt22 -
- 2*gtu23*PDstandardNth23gt22 + 2*(Gt112*Gtlu121 + Gt122*Gtlu122 +
- Gt123*Gtlu123 + Gt312*Gtlu321 + Gt322*Gtlu322 + Gt323*Gtlu323 +
- gt12L*PDstandardNth2Xt1) + 2*gt22L*PDstandardNth2Xt2 +
- 2*gt23L*PDstandardNth2Xt3 - gtu33*PDstandardNth33gt22 + 2*Gtl212*Xtn1 +
- 2*Gtl222*Xtn2 + 2*Gtl223*Xtn3);
-
- CCTK_REAL Rt23 = 0.5*(2*(Gt112*Gtlu131 + Gt122*Gtlu132 + Gt123*Gtlu133
- + Gt113*Gtlu211 + Gt123*Gtlu212 + Gt133*Gtlu213 + Gt213*Gtlu221 +
- Gt223*Gtlu222 + Gt233*Gtlu223 + Gt212*Gtlu231 + Gt313*Gtlu231 +
- Gt222*Gtlu232 + Gt323*Gtlu232 + Gt223*Gtlu233 + Gt333*Gtlu233 +
- Gt112*Gtlu311 + Gt122*Gtlu312 + Gt123*Gtlu313 + Gt212*Gtlu321 +
- Gt222*Gtlu322 + Gt223*Gtlu323) + 4*(Gt312*Gtlu331 + Gt322*Gtlu332 +
- Gt323*Gtlu333) - gtu11*PDstandardNth11gt23 -
- 2*gtu12*PDstandardNth12gt23 - 2*gtu13*PDstandardNth13gt23 -
- gtu22*PDstandardNth22gt23 - 2*gtu23*PDstandardNth23gt23 +
- gt13L*PDstandardNth2Xt1 + gt23L*PDstandardNth2Xt2 +
- gt33L*PDstandardNth2Xt3 - gtu33*PDstandardNth33gt23 +
- gt12L*PDstandardNth3Xt1 + gt22L*PDstandardNth3Xt2 +
- gt23L*PDstandardNth3Xt3 + Gtl213*Xtn1 + Gtl312*Xtn1 + Gtl223*Xtn2 +
- Gtl322*Xtn2 + Gtl233*Xtn3 + Gtl323*Xtn3);
-
- CCTK_REAL Rt33 = 0.5*(4*(Gt113*Gtlu311 + Gt123*Gtlu312 + Gt133*Gtlu313
- + Gt213*Gtlu321 + Gt223*Gtlu322 + Gt233*Gtlu323) + 6*(Gt313*Gtlu331 +
- Gt323*Gtlu332 + Gt333*Gtlu333) - gtu11*PDstandardNth11gt33 -
- 2*gtu12*PDstandardNth12gt33 - 2*gtu13*PDstandardNth13gt33 -
- gtu22*PDstandardNth22gt33 - 2*gtu23*PDstandardNth23gt33 -
- gtu33*PDstandardNth33gt33 + 2*(Gt113*Gtlu131 + Gt123*Gtlu132 +
- Gt133*Gtlu133 + Gt213*Gtlu231 + Gt223*Gtlu232 + Gt233*Gtlu233 +
- gt13L*PDstandardNth3Xt1) + 2*gt23L*PDstandardNth3Xt2 +
- 2*gt33L*PDstandardNth3Xt3 + 2*Gtl313*Xtn1 + 2*Gtl323*Xtn2 +
- 2*Gtl333*Xtn3);
-
- CCTK_REAL fac1 = IfThen(conformalMethod,-0.5*INV(phiL),1);
-
- CCTK_REAL cdphi1 = fac1*PDstandardNth1phi;
-
- CCTK_REAL cdphi2 = fac1*PDstandardNth2phi;
-
- CCTK_REAL cdphi3 = fac1*PDstandardNth3phi;
-
- CCTK_REAL fac2 = IfThen(conformalMethod,0.5*INV(SQR(phiL)),0);
-
- CCTK_REAL cdphi211 = -(fac1*(-PDstandardNth11phi +
- Gt111*PDstandardNth1phi + Gt211*PDstandardNth2phi +
- Gt311*PDstandardNth3phi)) + fac2*SQR(PDstandardNth1phi);
-
- CCTK_REAL cdphi212 = fac2*PDstandardNth1phi*PDstandardNth2phi -
- fac1*(-PDstandardNth12phi + Gt112*PDstandardNth1phi +
- Gt212*PDstandardNth2phi + Gt312*PDstandardNth3phi);
-
- CCTK_REAL cdphi213 = fac2*PDstandardNth1phi*PDstandardNth3phi -
- fac1*(-PDstandardNth13phi + Gt113*PDstandardNth1phi +
- Gt213*PDstandardNth2phi + Gt313*PDstandardNth3phi);
-
- CCTK_REAL cdphi222 = -(fac1*(Gt122*PDstandardNth1phi -
- PDstandardNth22phi + Gt222*PDstandardNth2phi +
- Gt322*PDstandardNth3phi)) + fac2*SQR(PDstandardNth2phi);
-
- CCTK_REAL cdphi223 = fac2*PDstandardNth2phi*PDstandardNth3phi -
- fac1*(Gt123*PDstandardNth1phi - PDstandardNth23phi +
- Gt223*PDstandardNth2phi + Gt323*PDstandardNth3phi);
-
- CCTK_REAL cdphi233 = -(fac1*(Gt133*PDstandardNth1phi +
- Gt233*PDstandardNth2phi - PDstandardNth33phi +
- Gt333*PDstandardNth3phi)) + fac2*SQR(PDstandardNth3phi);
-
- CCTK_REAL Rphi11 = -2*(cdphi211 + 2*(-1 + gt11L*gtu11)*SQR(cdphi1) +
- gt11L*(cdphi211*gtu11 + 4*(cdphi1*(cdphi2*gtu12 + cdphi3*gtu13) +
- cdphi2*cdphi3*gtu23) + cdphi233*gtu33 + gtu22*(cdphi222 +
- 2*SQR(cdphi2)) + 2*(cdphi212*gtu12 + cdphi213*gtu13 + cdphi223*gtu23 +
- gtu33*SQR(cdphi3))));
+ CCTK_REAL_VEC cdphi3 = kmul(fac1,JacPDstandardNth3phi);
- CCTK_REAL Rphi12 = -2*(cdphi212 + cdphi1*(cdphi2*(-2 + 4*gt12L*gtu12)
- + 4*cdphi3*gt12L*gtu13) + gt12L*(cdphi211*gtu11 + 4*cdphi2*cdphi3*gtu23
- + 2*(cdphi212*gtu12 + cdphi213*gtu13 + cdphi223*gtu23 +
- gtu11*SQR(cdphi1)) + gtu22*(cdphi222 + 2*SQR(cdphi2)) + gtu33*(cdphi233
- + 2*SQR(cdphi3))));
+ CCTK_REAL_VEC fac2 =
+ IfThen(conformalMethod,kmul(INV(SQR(phiL)),ToReal(0.5)),ToReal(0));
- CCTK_REAL Rphi13 = -2*(cdphi213 + cdphi1*(4*cdphi2*gt13L*gtu12 +
- cdphi3*(-2 + 4*gt13L*gtu13)) + gt13L*(cdphi211*gtu11 +
- 4*cdphi2*cdphi3*gtu23 + 2*(cdphi212*gtu12 + cdphi213*gtu13 +
- cdphi223*gtu23 + gtu11*SQR(cdphi1)) + gtu22*(cdphi222 + 2*SQR(cdphi2))
- + gtu33*(cdphi233 + 2*SQR(cdphi3))));
+ CCTK_REAL_VEC cdphi211 =
+ kmadd(fac2,SQR(JacPDstandardNth1phi),kmul(fac1,ksub(JacPDstandardNth11phi,kmadd(Gt111,JacPDstandardNth1phi,kmadd(Gt311,JacPDstandardNth3phi,kmul(Gt211,JacPDstandardNth2phi))))));
- CCTK_REAL Rphi22 = -2*(cdphi222 + 2*(-1 + gt22L*gtu22)*SQR(cdphi2) +
- gt22L*(cdphi222*gtu22 + 4*(cdphi1*cdphi3*gtu13 + cdphi2*(cdphi1*gtu12 +
- cdphi3*gtu23)) + cdphi233*gtu33 + gtu11*(cdphi211 + 2*SQR(cdphi1)) +
- 2*(cdphi212*gtu12 + cdphi213*gtu13 + cdphi223*gtu23 +
- gtu33*SQR(cdphi3))));
+ CCTK_REAL_VEC cdphi212 =
+ kmadd(fac2,kmul(JacPDstandardNth1phi,JacPDstandardNth2phi),kmul(fac1,ksub(JacPDstandardNth12phi,kmadd(Gt112,JacPDstandardNth1phi,kmadd(Gt312,JacPDstandardNth3phi,kmul(Gt212,JacPDstandardNth2phi))))));
- CCTK_REAL Rphi23 = -2*(cdphi223 + cdphi2*(4*cdphi1*gt23L*gtu12 +
- cdphi3*(-2 + 4*gt23L*gtu23)) + gt23L*(4*cdphi1*cdphi3*gtu13 +
- cdphi222*gtu22 + gtu11*(cdphi211 + 2*SQR(cdphi1)) + 2*(cdphi212*gtu12 +
- cdphi213*gtu13 + cdphi223*gtu23 + gtu22*SQR(cdphi2)) + gtu33*(cdphi233
- + 2*SQR(cdphi3))));
+ CCTK_REAL_VEC cdphi213 =
+ kmadd(fac2,kmul(JacPDstandardNth1phi,JacPDstandardNth3phi),kmul(fac1,ksub(JacPDstandardNth13phi,kmadd(Gt113,JacPDstandardNth1phi,kmadd(Gt313,JacPDstandardNth3phi,kmul(Gt213,JacPDstandardNth2phi))))));
- CCTK_REAL Rphi33 = -2*(cdphi233 + gt33L*((4*cdphi1*cdphi2 +
- 2*cdphi212)*gtu12 + 4*cdphi3*(cdphi1*gtu13 + cdphi2*gtu23) +
- 2*(cdphi213*gtu13 + cdphi223*gtu23) + cdphi233*gtu33 + gtu11*(cdphi211
- + 2*SQR(cdphi1)) + gtu22*(cdphi222 + 2*SQR(cdphi2))) + 2*(-1 +
- gt33L*gtu33)*SQR(cdphi3));
+ CCTK_REAL_VEC cdphi222 =
+ kmsub(fac2,SQR(JacPDstandardNth2phi),kmul(fac1,kmadd(Gt122,JacPDstandardNth1phi,kmadd(Gt222,JacPDstandardNth2phi,kmsub(Gt322,JacPDstandardNth3phi,JacPDstandardNth22phi)))));
- CCTK_REAL e4phi = IfThen(conformalMethod,INV(SQR(phiL)),exp(4*phiL));
+ CCTK_REAL_VEC cdphi223 =
+ kmsub(fac2,kmul(JacPDstandardNth2phi,JacPDstandardNth3phi),kmul(fac1,kmadd(Gt123,JacPDstandardNth1phi,kmadd(Gt223,JacPDstandardNth2phi,kmsub(Gt323,JacPDstandardNth3phi,JacPDstandardNth23phi)))));
- CCTK_REAL em4phi = INV(e4phi);
+ CCTK_REAL_VEC cdphi233 =
+ kmsub(fac2,SQR(JacPDstandardNth3phi),kmul(fac1,kmadd(Gt133,JacPDstandardNth1phi,kmadd(Gt233,JacPDstandardNth2phi,kmsub(Gt333,JacPDstandardNth3phi,JacPDstandardNth33phi)))));
- CCTK_REAL gu11 = em4phi*gtu11;
+ 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 gu12 = em4phi*gtu12;
+ 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(cdphi3,kmul(gt12L,kmul(gtu13,ToReal(4))),kmul(cdphi2,kmadd(gt12L,kmul(gtu12,ToReal(4)),ToReal(-2))))))));
- CCTK_REAL gu13 = em4phi*gtu13;
+ 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(cdphi2,kmul(gt13L,kmul(gtu12,ToReal(4))),kmul(cdphi3,kmadd(gt13L,kmul(gtu13,ToReal(4)),ToReal(-2))))))));
- CCTK_REAL gu22 = em4phi*gtu22;
+ 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 gu23 = em4phi*gtu23;
+ 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(cdphi1,kmul(gt23L,kmul(gtu12,ToReal(4))),kmul(cdphi3,kmadd(gt23L,kmul(gtu23,ToReal(4)),ToReal(-2))))))));
- CCTK_REAL gu33 = em4phi*gtu33;
+ 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 R11 = Rphi11 + Rt11;
+ CCTK_REAL_VEC e4phi =
+ IfThen(conformalMethod,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
- CCTK_REAL R12 = Rphi12 + Rt12;
+ CCTK_REAL_VEC em4phi = INV(e4phi);
- CCTK_REAL R13 = Rphi13 + Rt13;
+ CCTK_REAL_VEC gu11 = kmul(em4phi,gtu11);
- CCTK_REAL R22 = Rphi22 + Rt22;
+ CCTK_REAL_VEC gu12 = kmul(em4phi,gtu12);
- CCTK_REAL R23 = Rphi23 + Rt23;
+ CCTK_REAL_VEC gu13 = kmul(em4phi,gtu13);
- CCTK_REAL R33 = Rphi33 + Rt33;
+ CCTK_REAL_VEC gu22 = kmul(em4phi,gtu22);
- CCTK_REAL trR = gu11*R11 + gu22*R22 + 2*(gu12*R12 + gu13*R13 +
- gu23*R23) + gu33*R33;
+ CCTK_REAL_VEC gu23 = kmul(em4phi,gtu23);
- CCTK_REAL Atm11 = At11L*gtu11 + At12L*gtu12 + At13L*gtu13;
+ CCTK_REAL_VEC gu33 = kmul(em4phi,gtu33);
- CCTK_REAL Atm21 = At11L*gtu12 + At12L*gtu22 + At13L*gtu23;
+ CCTK_REAL_VEC R11 = kadd(Rphi11,Rt11);
- CCTK_REAL Atm31 = At11L*gtu13 + At12L*gtu23 + At13L*gtu33;
+ CCTK_REAL_VEC R12 = kadd(Rphi12,Rt12);
- CCTK_REAL Atm12 = At12L*gtu11 + At22L*gtu12 + At23L*gtu13;
+ CCTK_REAL_VEC R13 = kadd(Rphi13,Rt13);
- CCTK_REAL Atm22 = At12L*gtu12 + At22L*gtu22 + At23L*gtu23;
+ CCTK_REAL_VEC R22 = kadd(Rphi22,Rt22);
- CCTK_REAL Atm32 = At12L*gtu13 + At22L*gtu23 + At23L*gtu33;
+ CCTK_REAL_VEC R23 = kadd(Rphi23,Rt23);
- CCTK_REAL Atm13 = At13L*gtu11 + At23L*gtu12 + At33L*gtu13;
+ CCTK_REAL_VEC R33 = kadd(Rphi33,Rt33);
- CCTK_REAL Atm23 = At13L*gtu12 + At23L*gtu22 + At33L*gtu23;
+ 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 Atm33 = At13L*gtu13 + At23L*gtu23 + At33L*gtu33;
+ CCTK_REAL_VEC Atm11 =
+ kmadd(At11L,gtu11,kmadd(At12L,gtu12,kmul(At13L,gtu13)));
- CCTK_REAL rho = INV(SQR(alphaL))*(eTttL - 2*(beta2L*eTtyL +
- beta3L*eTtzL) + 2*(beta1L*(-eTtxL + beta2L*eTxyL + beta3L*eTxzL) +
- beta2L*beta3L*eTyzL) + eTxxL*SQR(beta1L) + eTyyL*SQR(beta2L) +
- eTzzL*SQR(beta3L));
+ CCTK_REAL_VEC Atm21 =
+ kmadd(At11L,gtu12,kmadd(At12L,gtu22,kmul(At13L,gtu23)));
- CCTK_REAL HL = -2.*(Atm12*Atm21 + Atm13*Atm31 + Atm23*Atm32) -
- 50.26548245743669181540229413247204614715*rho + trR - 1.*(SQR(Atm11) +
- SQR(Atm22) + SQR(Atm33)) +
- 0.6666666666666666666666666666666666666667*SQR(trKL);
+ CCTK_REAL_VEC Atm31 =
+ kmadd(At11L,gtu13,kmadd(At12L,gtu23,kmul(At13L,gtu33)));
- /* Copy local copies back to grid functions */
- H[index] = HL;
+ 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(rho,ToReal(-50.26548245743669181540229413247204614715),kmadd(kmadd(Atm12,Atm21,kmadd(Atm13,Atm31,kmul(Atm23,Atm32))),ToReal(-2.),kmadd(kadd(SQR(Atm11),kadd(SQR(Atm22),SQR(Atm33))),ToReal(-1.),kmul(SQR(trKL),ToReal(0.6666666666666666666666666666666666666667))))));
+
+ /* 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);
+ 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);
+ 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);
+ break;
+ }
+ vec_store_nta(H[index],HL);
}
- LC_ENDLOOP3 (ML_BSSN_O8_constraints1);
+ LC_ENDLOOP3VEC (ML_BSSN_O8_constraints1);
}
extern "C" void ML_BSSN_O8_constraints1(CCTK_ARGUMENTS)
@@ -615,5 +1596,43 @@ extern "C" void ML_BSSN_O8_constraints1(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O8_constraints1_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_O8_constraints1_calc_every != ML_BSSN_O8_constraints1_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN_O8::ML_curv","ML_BSSN_O8::ML_Gamma","ML_BSSN_O8::ML_Ham","ML_BSSN_O8::ML_lapse","ML_BSSN_O8::ML_log_confac","ML_BSSN_O8::ML_metric","ML_BSSN_O8::ML_shift","ML_BSSN_O8::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O8_constraints1", 8, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O8_constraints1", 1, 1, 1);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O8_constraints1", 2, 2, 2);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O8_constraints1", 3, 3, 3);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O8_constraints1", 4, 4, 4);
+ break;
+ }
+
GenericFD_LoopOverInterior(cctkGH, &ML_BSSN_O8_constraints1_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_O8_constraints1_Body");
+ }
}
diff --git a/ML_BSSN_O8/src/ML_BSSN_O8_constraints2.cc b/ML_BSSN_O8/src/ML_BSSN_O8_constraints2.cc
index 371bbb2..b5a675e 100644
--- a/ML_BSSN_O8/src/ML_BSSN_O8_constraints2.cc
+++ b/ML_BSSN_O8/src/ML_BSSN_O8_constraints2.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_O8_constraints2_SelectBCs(CCTK_ARGUMENTS)
{
@@ -42,7 +43,7 @@ extern "C" void ML_BSSN_O8_constraints2_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_BSSN_O8_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_O8_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;
@@ -50,21 +51,6 @@ static void ML_BSSN_O8_constraints2_Body(cGH const * restrict const cctkGH, int
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O8_constraints2_Body");
- }
-
- if (cctk_iteration % ML_BSSN_O8_constraints2_calc_every != ML_BSSN_O8_constraints2_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN_O8::ML_cons_detg","ML_BSSN_O8::ML_cons_Gamma","ML_BSSN_O8::ML_cons_traceA","ML_BSSN_O8::ML_curv","ML_BSSN_O8::ML_Gamma","ML_BSSN_O8::ML_lapse","ML_BSSN_O8::ML_log_confac","ML_BSSN_O8::ML_metric","ML_BSSN_O8::ML_mom","ML_BSSN_O8::ML_shift","ML_BSSN_O8::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O8_constraints2", 11, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O8_constraints2", 4, 4, 4);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -74,93 +60,202 @@ static void ML_BSSN_O8_constraints2_Body(cGH const * restrict const cctkGH, int
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o1024dx = 0.0009765625*INV(dx);
- CCTK_REAL const p1o1024dy = 0.0009765625*INV(dy);
- CCTK_REAL const p1o1024dz = 0.0009765625*INV(dz);
- CCTK_REAL const p1o1680dx = 0.000595238095238095238095238095238*INV(dx);
- CCTK_REAL const p1o1680dy = 0.000595238095238095238095238095238*INV(dy);
- CCTK_REAL const p1o1680dz = 0.000595238095238095238095238095238*INV(dz);
- CCTK_REAL const p1o5040dx2 = 0.000198412698412698412698412698413*INV(SQR(dx));
- CCTK_REAL const p1o5040dy2 = 0.000198412698412698412698412698413*INV(SQR(dy));
- CCTK_REAL const p1o5040dz2 = 0.000198412698412698412698412698413*INV(SQR(dz));
- CCTK_REAL const p1o560dx = 0.00178571428571428571428571428571*INV(dx);
- CCTK_REAL const p1o560dy = 0.00178571428571428571428571428571*INV(dy);
- CCTK_REAL const p1o560dz = 0.00178571428571428571428571428571*INV(dz);
- CCTK_REAL const p1o705600dxdy = 1.41723356009070294784580498866e-6*INV(dx)*INV(dy);
- CCTK_REAL const p1o705600dxdz = 1.41723356009070294784580498866e-6*INV(dx)*INV(dz);
- CCTK_REAL const p1o705600dydz = 1.41723356009070294784580498866e-6*INV(dy)*INV(dz);
- CCTK_REAL const p1o840dx = 0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const p1o840dy = 0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const p1o840dz = 0.00119047619047619047619047619048*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o840dx = -0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const pm1o840dy = -0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const pm1o840dz = -0.00119047619047619047619047619048*INV(dz);
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_O8_constraints2,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_O8_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 alphaL = alpha[index];
- CCTK_REAL At11L = At11[index];
- CCTK_REAL At12L = At12[index];
- CCTK_REAL At13L = At13[index];
- CCTK_REAL At22L = At22[index];
- CCTK_REAL At23L = At23[index];
- CCTK_REAL At33L = At33[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL gt11L = gt11[index];
- CCTK_REAL gt12L = gt12[index];
- CCTK_REAL gt13L = gt13[index];
- CCTK_REAL gt22L = gt22[index];
- CCTK_REAL gt23L = gt23[index];
- CCTK_REAL gt33L = gt33[index];
- CCTK_REAL phiL = phi[index];
- CCTK_REAL trKL = trK[index];
- CCTK_REAL Xt1L = Xt1[index];
- CCTK_REAL Xt2L = Xt2[index];
- CCTK_REAL Xt3L = Xt3[index];
-
- CCTK_REAL eTtxL, eTtyL, eTtzL, eTxxL, eTxyL, eTxzL, eTyyL, eTyzL, eTzzL;
+ 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 = eTtx[index];
- eTtyL = eTty[index];
- eTtzL = eTtz[index];
- eTxxL = eTxx[index];
- eTxyL = eTxy[index];
- eTxzL = eTxz[index];
- eTyyL = eTyy[index];
- eTyzL = eTyz[index];
- eTzzL = eTzz[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
{
@@ -175,239 +270,724 @@ static void ML_BSSN_O8_constraints2_Body(cGH const * restrict const cctkGH, int
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 const PDstandardNth1At11 = PDstandardNth1(&At11[index]);
- CCTK_REAL const PDstandardNth2At11 = PDstandardNth2(&At11[index]);
- CCTK_REAL const PDstandardNth3At11 = PDstandardNth3(&At11[index]);
- CCTK_REAL const PDstandardNth1At12 = PDstandardNth1(&At12[index]);
- CCTK_REAL const PDstandardNth2At12 = PDstandardNth2(&At12[index]);
- CCTK_REAL const PDstandardNth3At12 = PDstandardNth3(&At12[index]);
- CCTK_REAL const PDstandardNth1At13 = PDstandardNth1(&At13[index]);
- CCTK_REAL const PDstandardNth2At13 = PDstandardNth2(&At13[index]);
- CCTK_REAL const PDstandardNth3At13 = PDstandardNth3(&At13[index]);
- CCTK_REAL const PDstandardNth1At22 = PDstandardNth1(&At22[index]);
- CCTK_REAL const PDstandardNth2At22 = PDstandardNth2(&At22[index]);
- CCTK_REAL const PDstandardNth3At22 = PDstandardNth3(&At22[index]);
- CCTK_REAL const PDstandardNth1At23 = PDstandardNth1(&At23[index]);
- CCTK_REAL const PDstandardNth2At23 = PDstandardNth2(&At23[index]);
- CCTK_REAL const PDstandardNth3At23 = PDstandardNth3(&At23[index]);
- CCTK_REAL const PDstandardNth1At33 = PDstandardNth1(&At33[index]);
- CCTK_REAL const PDstandardNth2At33 = PDstandardNth2(&At33[index]);
- CCTK_REAL const PDstandardNth3At33 = PDstandardNth3(&At33[index]);
- CCTK_REAL const PDstandardNth1gt11 = PDstandardNth1(&gt11[index]);
- CCTK_REAL const PDstandardNth2gt11 = PDstandardNth2(&gt11[index]);
- CCTK_REAL const PDstandardNth3gt11 = PDstandardNth3(&gt11[index]);
- CCTK_REAL const PDstandardNth1gt12 = PDstandardNth1(&gt12[index]);
- CCTK_REAL const PDstandardNth2gt12 = PDstandardNth2(&gt12[index]);
- CCTK_REAL const PDstandardNth3gt12 = PDstandardNth3(&gt12[index]);
- CCTK_REAL const PDstandardNth1gt13 = PDstandardNth1(&gt13[index]);
- CCTK_REAL const PDstandardNth2gt13 = PDstandardNth2(&gt13[index]);
- CCTK_REAL const PDstandardNth3gt13 = PDstandardNth3(&gt13[index]);
- CCTK_REAL const PDstandardNth1gt22 = PDstandardNth1(&gt22[index]);
- CCTK_REAL const PDstandardNth2gt22 = PDstandardNth2(&gt22[index]);
- CCTK_REAL const PDstandardNth3gt22 = PDstandardNth3(&gt22[index]);
- CCTK_REAL const PDstandardNth1gt23 = PDstandardNth1(&gt23[index]);
- CCTK_REAL const PDstandardNth2gt23 = PDstandardNth2(&gt23[index]);
- CCTK_REAL const PDstandardNth3gt23 = PDstandardNth3(&gt23[index]);
- CCTK_REAL const PDstandardNth1gt33 = PDstandardNth1(&gt33[index]);
- CCTK_REAL const PDstandardNth2gt33 = PDstandardNth2(&gt33[index]);
- CCTK_REAL const PDstandardNth3gt33 = PDstandardNth3(&gt33[index]);
- CCTK_REAL const PDstandardNth1phi = PDstandardNth1(&phi[index]);
- CCTK_REAL const PDstandardNth2phi = PDstandardNth2(&phi[index]);
- CCTK_REAL const PDstandardNth3phi = PDstandardNth3(&phi[index]);
- CCTK_REAL const PDstandardNth1trK = PDstandardNth1(&trK[index]);
- CCTK_REAL const PDstandardNth2trK = PDstandardNth2(&trK[index]);
- CCTK_REAL const PDstandardNth3trK = PDstandardNth3(&trK[index]);
+ 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 detgt = 1;
+ 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 gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L));
+ CCTK_REAL_VEC gtu13 =
+ kmul(INV(detgt),kmsub(gt12L,gt23L,kmul(gt13L,gt22L)));
- CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt);
+ CCTK_REAL_VEC gtu22 = kmul(INV(detgt),kmsub(gt11L,gt33L,SQR(gt13L)));
- CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC gtu23 =
+ kmul(INV(detgt),kmsub(gt12L,gt13L,kmul(gt11L,gt23L)));
- CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L));
+ CCTK_REAL_VEC gtu33 = kmul(INV(detgt),kmsub(gt11L,gt22L,SQR(gt12L)));
- CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC Gtl111 = kmul(JacPDstandardNth1gt11,ToReal(0.5));
- CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L));
+ CCTK_REAL_VEC Gtl112 = kmul(JacPDstandardNth2gt11,ToReal(0.5));
- CCTK_REAL Gtl111 = 0.5*PDstandardNth1gt11;
+ CCTK_REAL_VEC Gtl113 = kmul(JacPDstandardNth3gt11,ToReal(0.5));
- CCTK_REAL Gtl112 = 0.5*PDstandardNth2gt11;
+ CCTK_REAL_VEC Gtl122 =
+ kmadd(JacPDstandardNth1gt22,ToReal(-0.5),JacPDstandardNth2gt12);
- CCTK_REAL Gtl113 = 0.5*PDstandardNth3gt11;
+ CCTK_REAL_VEC Gtl123 =
+ kmul(kadd(JacPDstandardNth2gt13,ksub(JacPDstandardNth3gt12,JacPDstandardNth1gt23)),ToReal(0.5));
- CCTK_REAL Gtl122 = -0.5*PDstandardNth1gt22 + PDstandardNth2gt12;
+ CCTK_REAL_VEC Gtl133 =
+ kmadd(JacPDstandardNth1gt33,ToReal(-0.5),JacPDstandardNth3gt13);
- CCTK_REAL Gtl123 = 0.5*(-PDstandardNth1gt23 + PDstandardNth2gt13 +
- PDstandardNth3gt12);
+ CCTK_REAL_VEC Gtl211 =
+ kmadd(JacPDstandardNth2gt11,ToReal(-0.5),JacPDstandardNth1gt12);
- CCTK_REAL Gtl133 = -0.5*PDstandardNth1gt33 + PDstandardNth3gt13;
+ CCTK_REAL_VEC Gtl212 = kmul(JacPDstandardNth1gt22,ToReal(0.5));
- CCTK_REAL Gtl211 = PDstandardNth1gt12 - 0.5*PDstandardNth2gt11;
+ CCTK_REAL_VEC Gtl213 =
+ kmul(kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth3gt12,JacPDstandardNth2gt13)),ToReal(0.5));
- CCTK_REAL Gtl212 = 0.5*PDstandardNth1gt22;
+ CCTK_REAL_VEC Gtl222 = kmul(JacPDstandardNth2gt22,ToReal(0.5));
- CCTK_REAL Gtl213 = 0.5*(PDstandardNth1gt23 - PDstandardNth2gt13 +
- PDstandardNth3gt12);
+ CCTK_REAL_VEC Gtl223 = kmul(JacPDstandardNth3gt22,ToReal(0.5));
- CCTK_REAL Gtl222 = 0.5*PDstandardNth2gt22;
+ CCTK_REAL_VEC Gtl233 =
+ kmadd(JacPDstandardNth2gt33,ToReal(-0.5),JacPDstandardNth3gt23);
- CCTK_REAL Gtl223 = 0.5*PDstandardNth3gt22;
+ CCTK_REAL_VEC Gtl311 =
+ kmadd(JacPDstandardNth3gt11,ToReal(-0.5),JacPDstandardNth1gt13);
- CCTK_REAL Gtl233 = -0.5*PDstandardNth2gt33 + PDstandardNth3gt23;
+ CCTK_REAL_VEC Gtl312 =
+ kmul(kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth2gt13,JacPDstandardNth3gt12)),ToReal(0.5));
- CCTK_REAL Gtl311 = PDstandardNth1gt13 - 0.5*PDstandardNth3gt11;
+ CCTK_REAL_VEC Gtl313 = kmul(JacPDstandardNth1gt33,ToReal(0.5));
- CCTK_REAL Gtl312 = 0.5*(PDstandardNth1gt23 + PDstandardNth2gt13 -
- PDstandardNth3gt12);
+ CCTK_REAL_VEC Gtl322 =
+ kmadd(JacPDstandardNth3gt22,ToReal(-0.5),JacPDstandardNth2gt23);
- CCTK_REAL Gtl313 = 0.5*PDstandardNth1gt33;
+ CCTK_REAL_VEC Gtl323 = kmul(JacPDstandardNth2gt33,ToReal(0.5));
- CCTK_REAL Gtl322 = PDstandardNth2gt23 - 0.5*PDstandardNth3gt22;
+ CCTK_REAL_VEC Gtl333 = kmul(JacPDstandardNth3gt33,ToReal(0.5));
- CCTK_REAL Gtl323 = 0.5*PDstandardNth2gt33;
+ CCTK_REAL_VEC Gt111 =
+ kmadd(Gtl111,gtu11,kmadd(Gtl211,gtu12,kmul(Gtl311,gtu13)));
- CCTK_REAL Gtl333 = 0.5*PDstandardNth3gt33;
+ CCTK_REAL_VEC Gt211 =
+ kmadd(Gtl111,gtu12,kmadd(Gtl211,gtu22,kmul(Gtl311,gtu23)));
- CCTK_REAL Gt111 = Gtl111*gtu11 + Gtl211*gtu12 + Gtl311*gtu13;
+ CCTK_REAL_VEC Gt311 =
+ kmadd(Gtl111,gtu13,kmadd(Gtl211,gtu23,kmul(Gtl311,gtu33)));
- CCTK_REAL Gt211 = Gtl111*gtu12 + Gtl211*gtu22 + Gtl311*gtu23;
+ CCTK_REAL_VEC Gt112 =
+ kmadd(Gtl112,gtu11,kmadd(Gtl212,gtu12,kmul(Gtl312,gtu13)));
- CCTK_REAL Gt311 = Gtl111*gtu13 + Gtl211*gtu23 + Gtl311*gtu33;
+ CCTK_REAL_VEC Gt212 =
+ kmadd(Gtl112,gtu12,kmadd(Gtl212,gtu22,kmul(Gtl312,gtu23)));
- CCTK_REAL Gt112 = Gtl112*gtu11 + Gtl212*gtu12 + Gtl312*gtu13;
+ CCTK_REAL_VEC Gt312 =
+ kmadd(Gtl112,gtu13,kmadd(Gtl212,gtu23,kmul(Gtl312,gtu33)));
- CCTK_REAL Gt212 = Gtl112*gtu12 + Gtl212*gtu22 + Gtl312*gtu23;
+ CCTK_REAL_VEC Gt113 =
+ kmadd(Gtl113,gtu11,kmadd(Gtl213,gtu12,kmul(Gtl313,gtu13)));
- CCTK_REAL Gt312 = Gtl112*gtu13 + Gtl212*gtu23 + Gtl312*gtu33;
+ CCTK_REAL_VEC Gt213 =
+ kmadd(Gtl113,gtu12,kmadd(Gtl213,gtu22,kmul(Gtl313,gtu23)));
- CCTK_REAL Gt113 = Gtl113*gtu11 + Gtl213*gtu12 + Gtl313*gtu13;
+ CCTK_REAL_VEC Gt313 =
+ kmadd(Gtl113,gtu13,kmadd(Gtl213,gtu23,kmul(Gtl313,gtu33)));
- CCTK_REAL Gt213 = Gtl113*gtu12 + Gtl213*gtu22 + Gtl313*gtu23;
+ CCTK_REAL_VEC Gt122 =
+ kmadd(Gtl122,gtu11,kmadd(Gtl222,gtu12,kmul(Gtl322,gtu13)));
- CCTK_REAL Gt313 = Gtl113*gtu13 + Gtl213*gtu23 + Gtl313*gtu33;
+ CCTK_REAL_VEC Gt222 =
+ kmadd(Gtl122,gtu12,kmadd(Gtl222,gtu22,kmul(Gtl322,gtu23)));
- CCTK_REAL Gt122 = Gtl122*gtu11 + Gtl222*gtu12 + Gtl322*gtu13;
+ CCTK_REAL_VEC Gt322 =
+ kmadd(Gtl122,gtu13,kmadd(Gtl222,gtu23,kmul(Gtl322,gtu33)));
- CCTK_REAL Gt222 = Gtl122*gtu12 + Gtl222*gtu22 + Gtl322*gtu23;
+ CCTK_REAL_VEC Gt123 =
+ kmadd(Gtl123,gtu11,kmadd(Gtl223,gtu12,kmul(Gtl323,gtu13)));
- CCTK_REAL Gt322 = Gtl122*gtu13 + Gtl222*gtu23 + Gtl322*gtu33;
+ CCTK_REAL_VEC Gt223 =
+ kmadd(Gtl123,gtu12,kmadd(Gtl223,gtu22,kmul(Gtl323,gtu23)));
- CCTK_REAL Gt123 = Gtl123*gtu11 + Gtl223*gtu12 + Gtl323*gtu13;
+ CCTK_REAL_VEC Gt323 =
+ kmadd(Gtl123,gtu13,kmadd(Gtl223,gtu23,kmul(Gtl323,gtu33)));
- CCTK_REAL Gt223 = Gtl123*gtu12 + Gtl223*gtu22 + Gtl323*gtu23;
+ CCTK_REAL_VEC Gt133 =
+ kmadd(Gtl133,gtu11,kmadd(Gtl233,gtu12,kmul(Gtl333,gtu13)));
- CCTK_REAL Gt323 = Gtl123*gtu13 + Gtl223*gtu23 + Gtl323*gtu33;
+ CCTK_REAL_VEC Gt233 =
+ kmadd(Gtl133,gtu12,kmadd(Gtl233,gtu22,kmul(Gtl333,gtu23)));
- CCTK_REAL Gt133 = Gtl133*gtu11 + Gtl233*gtu12 + Gtl333*gtu13;
+ CCTK_REAL_VEC Gt333 =
+ kmadd(Gtl133,gtu13,kmadd(Gtl233,gtu23,kmul(Gtl333,gtu33)));
- CCTK_REAL Gt233 = Gtl133*gtu12 + Gtl233*gtu22 + Gtl333*gtu23;
+ CCTK_REAL_VEC fac1 =
+ IfThen(conformalMethod,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
- CCTK_REAL Gt333 = Gtl133*gtu13 + Gtl233*gtu23 + Gtl333*gtu33;
+ CCTK_REAL_VEC cdphi1 = kmul(fac1,JacPDstandardNth1phi);
- CCTK_REAL fac1 = IfThen(conformalMethod,-0.5*INV(phiL),1);
+ CCTK_REAL_VEC cdphi2 = kmul(fac1,JacPDstandardNth2phi);
- CCTK_REAL cdphi1 = fac1*PDstandardNth1phi;
+ CCTK_REAL_VEC cdphi3 = kmul(fac1,JacPDstandardNth3phi);
- CCTK_REAL cdphi2 = fac1*PDstandardNth2phi;
+ CCTK_REAL_VEC S1 =
+ kmul(INV(alphaL),kmadd(beta1L,eTxxL,kmadd(beta2L,eTxyL,kmsub(beta3L,eTxzL,eTtxL))));
- CCTK_REAL cdphi3 = fac1*PDstandardNth3phi;
+ CCTK_REAL_VEC S2 =
+ kmul(INV(alphaL),kmadd(beta1L,eTxyL,kmadd(beta2L,eTyyL,kmsub(beta3L,eTyzL,eTtyL))));
- CCTK_REAL S1 = (-eTtxL + beta1L*eTxxL + beta2L*eTxyL +
- beta3L*eTxzL)*INV(alphaL);
+ CCTK_REAL_VEC S3 =
+ kmul(INV(alphaL),kmadd(beta1L,eTxzL,kmadd(beta2L,eTyzL,kmsub(beta3L,eTzzL,eTtzL))));
- CCTK_REAL S2 = (-eTtyL + beta1L*eTxyL + beta2L*eTyyL +
- beta3L*eTyzL)*INV(alphaL);
+ CCTK_REAL_VEC M1L =
+ kmadd(gtu11,JacPDstandardNth1At11,kmadd(gtu22,JacPDstandardNth2At12,kmadd(gtu23,kadd(JacPDstandardNth2At13,JacPDstandardNth3At12),kmadd(gtu33,JacPDstandardNth3At13,kmadd(S1,ToReal(-25.13274122871834590770114706623602307358),kmadd(kmadd(kmadd(At22L,Gt212,kmul(At23L,Gt312)),gtu22,kmadd(kmadd(At13L,Gt112,kmadd(At22L,Gt213,kmadd(At33L,Gt312,kmul(At23L,kadd(Gt212,Gt313))))),gtu23,kmul(kmadd(At13L,Gt113,kmadd(At23L,Gt213,kmul(At33L,Gt313))),gtu33))),ToReal(-1.),kmadd(gtu12,kadd(JacPDstandardNth1At12,kadd(JacPDstandardNth2At11,kmadd(At13L,kmul(Gt312,ToReal(-3.)),kmul(At22L,kmul(Gt211,ToReal(-1.)))))),kmadd(gtu13,kadd(JacPDstandardNth1At13,kadd(JacPDstandardNth3At11,kmadd(At13L,kmul(Gt313,ToReal(-3.)),kmul(At23L,kmul(Gt211,ToReal(-1.)))))),kmadd(Gt311,kmadd(At13L,kmul(gtu11,ToReal(-2.)),kmul(kmadd(At23L,gtu12,kmul(At33L,gtu13)),ToReal(-1.))),kmadd(JacPDstandardNth1trK,ToReal(-0.6666666666666666666666666666666666666667),kmadd(At13L,kmadd(kmadd(Gt322,gtu22,kmul(Gt333,gtu33)),ToReal(-1.),kmadd(cdphi3,kmul(gtu33,ToReal(6.)),kmadd(gtu13,kmadd(Gt111,ToReal(-1.),kmul(cdphi1,ToReal(6.))),kmul(gtu23,kmadd(Gt323,ToReal(-2.),kmul(cdphi2,ToReal(6.))))))),kmadd(At11L,kmadd(Gt123,kmul(gtu23,ToReal(-2.)),kmadd(kmadd(Gt122,gtu22,kmul(Gt133,gtu33)),ToReal(-1.),kmadd(gtu11,kmadd(Gt111,ToReal(-2.),kmul(cdphi1,ToReal(6.))),kmadd(gtu12,kmadd(Gt112,ToReal(-3.),kmul(cdphi2,ToReal(6.))),kmul(gtu13,kmadd(Gt113,ToReal(-3.),kmul(cdphi3,ToReal(6.)))))))),kmul(At12L,kmadd(Gt213,kmul(gtu13,ToReal(-3.)),kmadd(kmadd(Gt211,gtu11,kmul(Gt223,gtu23)),ToReal(-2.),kmadd(Gt233,kmul(gtu33,ToReal(-1.)),kmadd(gtu12,kmadd(Gt212,ToReal(-3.),kmadd(Gt111,ToReal(-1.),kmul(cdphi1,ToReal(6.)))),kmadd(gtu22,kmadd(kadd(Gt112,Gt222),ToReal(-1.),kmul(cdphi2,ToReal(6.))),kmul(gtu23,kmadd(Gt113,ToReal(-1.),kmul(cdphi3,ToReal(6.))))))))))))))))))))));
- CCTK_REAL S3 = (-eTtzL + beta1L*eTxzL + beta2L*eTyzL +
- beta3L*eTzzL)*INV(alphaL);
+ CCTK_REAL_VEC M2L =
+ kmadd(gtu11,JacPDstandardNth1At12,kmadd(gtu12,kadd(JacPDstandardNth1At22,JacPDstandardNth2At12),kmadd(gtu22,JacPDstandardNth2At22,kmadd(gtu33,JacPDstandardNth3At23,kmadd(S2,ToReal(-25.13274122871834590770114706623602307358),kmadd(kmadd(kmadd(At22L,Gt211,kmadd(At23L,Gt311,kmul(At13L,Gt312))),gtu11,kmadd(kmadd(At23L,Gt212,kmul(At33L,Gt312)),gtu13,kmadd(At11L,kmadd(Gt112,gtu11,kmadd(Gt122,gtu12,kmul(Gt123,gtu13))),kmadd(kmadd(At23L,Gt223,kmul(At33L,Gt323)),gtu33,kmul(At13L,kmadd(Gt322,gtu12,kmadd(Gt112,gtu13,kmadd(Gt122,gtu23,kmul(Gt123,gtu33))))))))),ToReal(-1.),kmadd(gtu23,kadd(JacPDstandardNth2At23,kadd(JacPDstandardNth3At22,kmadd(kmadd(At22L,Gt223,kmul(At23L,Gt323)),ToReal(-3.),kmul(kmadd(At23L,Gt222,kmul(At33L,Gt322)),ToReal(-1.))))),kmadd(gtu13,kadd(JacPDstandardNth1At23,kadd(JacPDstandardNth3At12,kmadd(At23L,kmul(Gt313,ToReal(-2.)),kmul(At13L,kmul(Gt323,ToReal(-1.)))))),kmadd(JacPDstandardNth2trK,ToReal(-0.6666666666666666666666666666666666666667),kmadd(At23L,kmadd(Gt312,kmul(gtu12,ToReal(-3.)),kmadd(Gt322,kmul(gtu22,ToReal(-2.)),kmadd(Gt333,kmul(gtu33,ToReal(-1.)),kmul(kmadd(cdphi1,gtu13,kmadd(cdphi2,gtu23,kmul(cdphi3,gtu33))),ToReal(6.))))),kmadd(At22L,kmadd(kmadd(Gt213,gtu13,kmul(Gt222,gtu22)),ToReal(-2.),kmadd(Gt233,kmul(gtu33,ToReal(-1.)),kmadd(kmadd(cdphi2,gtu22,kmul(cdphi3,gtu23)),ToReal(6.),kmul(gtu12,kmadd(Gt212,ToReal(-3.),kmul(cdphi1,ToReal(6.))))))),kmul(At12L,kmadd(Gt123,kmul(gtu23,ToReal(-3.)),kmadd(Gt122,kmul(gtu22,ToReal(-2.)),kmadd(Gt133,kmul(gtu33,ToReal(-1.)),kmadd(gtu11,kmadd(kadd(Gt111,Gt212),ToReal(-1.),kmul(cdphi1,ToReal(6.))),kmadd(gtu12,kmadd(Gt112,ToReal(-3.),kmadd(Gt222,ToReal(-1.),kmul(cdphi2,ToReal(6.)))),kmul(gtu13,kmadd(Gt113,ToReal(-2.),kmadd(Gt223,ToReal(-1.),kmul(cdphi3,ToReal(6.))))))))))))))))))))));
- CCTK_REAL M1L = -2.*((At12L*Gt211 + At13L*Gt311)*gtu11 +
- At11L*Gt123*gtu23) + At12L*((6.*cdphi1 - 1.*Gt111)*gtu12 -
- 3.*Gt213*gtu13 + 6.*(cdphi2*gtu22 + cdphi3*gtu23) - 1.*Gt233*gtu33) -
- 1.*((At22L*Gt212 + At12L*(Gt112 + Gt222) + At23L*Gt312)*gtu22 +
- (At13L*Gt112 + At12L*Gt113 + At23L*Gt212)*gtu23 + (At13L*Gt113 +
- At23L*Gt213 + At33L*Gt313)*gtu33) + At11L*((6.*cdphi1 - 2.*Gt111)*gtu11
- + 6.*(cdphi2*gtu12 + cdphi3*gtu13) - 1.*(Gt122*gtu22 + Gt133*gtu33)) +
- At13L*((6.*cdphi1 - 1.*Gt111)*gtu13 + 6.*(cdphi2*gtu23 + cdphi3*gtu33)
- - 1.*(Gt322*gtu22 + Gt333*gtu33)) + gtu11*PDstandardNth1At11 -
- 0.6666666666666666666666666666666666666667*PDstandardNth1trK +
- gtu12*(-1.*(At22L*Gt211 + At23L*Gt311) - 3.*(At11L*Gt112 + At12L*Gt212
- + At13L*Gt312) + PDstandardNth1At12 + PDstandardNth2At11) +
- gtu22*PDstandardNth2At12 + gtu13*(-1.*(At23L*Gt211 + At33L*Gt311) -
- 3.*(At11L*Gt113 + At13L*Gt313) + PDstandardNth1At13 +
- PDstandardNth3At11) + gtu23*(-1.*(At22L*Gt213 + At33L*Gt312 +
- At23L*Gt313) - 2.*(At12L*Gt223 + At13L*Gt323) + PDstandardNth2At13 +
- PDstandardNth3At12) + gtu33*PDstandardNth3At13 -
- 25.13274122871834590770114706623602307358*S1;
+ CCTK_REAL_VEC M3L =
+ kmadd(gtu11,JacPDstandardNth1At13,kmadd(gtu22,JacPDstandardNth2At23,kmadd(gtu13,kadd(JacPDstandardNth1At33,JacPDstandardNth3At13),kmadd(gtu33,JacPDstandardNth3At33,kmadd(S3,ToReal(-25.13274122871834590770114706623602307358),kmadd(kmadd(kmadd(At23L,Gt211,kmadd(At12L,Gt213,kmul(At33L,Gt311))),gtu11,kmadd(kmadd(At22L,Gt213,kmul(At12L,kadd(Gt113,Gt223))),gtu12,kmadd(At11L,kmadd(Gt113,gtu11,kmadd(Gt123,gtu12,kmul(Gt133,gtu13))),kmadd(kmadd(At23L,Gt222,kmul(At22L,Gt223)),gtu22,kmul(At12L,kmadd(Gt233,gtu13,kmadd(Gt123,gtu22,kmul(Gt133,gtu23)))))))),ToReal(-1.),kmadd(gtu12,kadd(JacPDstandardNth1At23,kadd(JacPDstandardNth2At13,kmadd(At33L,kmul(Gt312,ToReal(-2.)),kmul(At23L,kmul(Gt313,ToReal(-1.)))))),kmadd(gtu23,kadd(JacPDstandardNth2At33,kadd(JacPDstandardNth3At23,kmadd(kmadd(At23L,Gt223,kmul(At33L,Gt323)),ToReal(-3.),kmul(kmadd(At22L,Gt233,kmul(At23L,Gt333)),ToReal(-1.))))),kmadd(JacPDstandardNth3trK,ToReal(-0.6666666666666666666666666666666666666667),kmadd(At33L,kmadd(Gt333,kmul(gtu33,ToReal(-2.)),kmadd(Gt322,kmul(gtu22,ToReal(-1.)),kmadd(kmadd(cdphi2,gtu23,kmul(cdphi3,gtu33)),ToReal(6.),kmul(gtu13,kmadd(Gt313,ToReal(-3.),kmul(cdphi1,ToReal(6.))))))),kmadd(At23L,kmadd(Gt213,kmul(gtu13,ToReal(-3.)),kmadd(Gt233,kmul(gtu33,ToReal(-2.)),kmadd(cdphi3,kmul(gtu23,ToReal(6.)),kmadd(gtu12,kmadd(Gt212,ToReal(-2.),kmul(cdphi1,ToReal(6.))),kmul(gtu22,kmadd(Gt323,ToReal(-1.),kmul(cdphi2,ToReal(6.)))))))),kmul(At13L,kmadd(Gt123,kmul(gtu23,ToReal(-3.)),kmadd(Gt133,kmul(gtu33,ToReal(-2.)),kmadd(Gt122,kmul(gtu22,ToReal(-1.)),kmadd(gtu11,kmadd(kadd(Gt111,Gt313),ToReal(-1.),kmul(cdphi1,ToReal(6.))),kmadd(gtu12,kmadd(Gt112,ToReal(-2.),kmadd(Gt323,ToReal(-1.),kmul(cdphi2,ToReal(6.)))),kmul(gtu13,kmadd(Gt113,ToReal(-3.),kmadd(Gt333,ToReal(-1.),kmul(cdphi3,ToReal(6.))))))))))))))))))))));
- CCTK_REAL M2L = At12L*((6.*cdphi1 - 1.*Gt111)*gtu11 + 6.*(cdphi2*gtu12
- + cdphi3*gtu13) - 2.*Gt122*gtu22 - 3.*Gt123*gtu23 - 1.*Gt133*gtu33) +
- At22L*((6.*cdphi2 - 2.*Gt222)*gtu22 + 6.*cdphi3*gtu23 - 1.*Gt233*gtu33)
- + At23L*(-2.*Gt322*gtu22 - 1.*Gt333*gtu33 + 6.*(cdphi2*gtu23 +
- cdphi3*gtu33)) - 1.*((At11L*Gt112 + At22L*Gt211 + At12L*Gt212 +
- At23L*Gt311 + At13L*Gt312)*gtu11 + Gt122*(At11L*gtu12 + At13L*gtu23) +
- (At23L*Gt223 + At33L*Gt323)*gtu33 + At13L*(Gt112*gtu13 + Gt123*gtu33))
- + gtu11*PDstandardNth1At12 + gtu12*(At22L*(6.*cdphi1 - 3.*Gt212) +
- At12L*(-3.*Gt112 - 1.*Gt222) - 3.*At23L*Gt312 - 1.*At13L*Gt322 +
- PDstandardNth1At22 + PDstandardNth2At12) + gtu22*PDstandardNth2At22 -
- 0.6666666666666666666666666666666666666667*PDstandardNth2trK +
- gtu13*(-2.*(At12L*Gt113 + At22L*Gt213) + At23L*(6.*cdphi1 - 1.*Gt212 -
- 2.*Gt313) - 1.*(At11L*Gt123 + At12L*Gt223 + At33L*Gt312 + At13L*Gt323)
- + PDstandardNth1At23 + PDstandardNth3At12) + gtu23*(-1.*(At23L*Gt222 +
- At33L*Gt322) - 3.*(At22L*Gt223 + At23L*Gt323) + PDstandardNth2At23 +
- PDstandardNth3At22) + gtu33*PDstandardNth3At23 -
- 25.13274122871834590770114706623602307358*S2;
+ CCTK_REAL_VEC cSL = klog(detgt);
- CCTK_REAL M3L = -1.*((At11L*Gt113 + At23L*Gt211 + At12L*Gt213 +
- At33L*Gt311)*gtu11 + (At22L*Gt223 + At33L*Gt322 + At23L*Gt323)*gtu22 +
- At12L*(Gt113*gtu12 + Gt123*gtu22) + Gt133*(At11L*gtu13 + At12L*gtu23))
- + At13L*((6.*cdphi1 - 1.*(Gt111 + Gt313))*gtu11 + 6.*(cdphi2*gtu12 +
- cdphi3*gtu13) - 1.*Gt122*gtu22 - 3.*Gt123*gtu23 - 2.*Gt133*gtu33) +
- At23L*((6.*cdphi2 - 1.*Gt222)*gtu22 + 6.*cdphi3*gtu23 - 2.*Gt233*gtu33)
- + gtu11*PDstandardNth1At13 + gtu12*(-2.*(At13L*Gt112 + At33L*Gt312) +
- At23L*(6.*cdphi1 - 2.*Gt212 - 1.*Gt313) - 1.*(At11L*Gt123 + At22L*Gt213
- + At12L*Gt223 + At13L*Gt323) + PDstandardNth1At23 + PDstandardNth2At13)
- + gtu22*PDstandardNth2At23 + gtu13*(-3.*(At13L*Gt113 + At23L*Gt213) +
- At33L*(6.*cdphi1 - 3.*Gt313) - 1.*(At12L*Gt233 + At13L*Gt333) +
- PDstandardNth1At33 + PDstandardNth3At13) + gtu23*(-1.*At22L*Gt233 +
- At33L*(6.*cdphi2 - 3.*Gt323) + At23L*(-3.*Gt223 - 1.*Gt333) +
- PDstandardNth2At33 + PDstandardNth3At23) + gtu33*(At33L*(6.*cdphi3 -
- 2.*Gt333) + PDstandardNth3At33) -
- 0.6666666666666666666666666666666666666667*PDstandardNth3trK -
- 25.13274122871834590770114706623602307358*S3;
-
- CCTK_REAL cSL = Log(detgt);
-
- CCTK_REAL cXt1L = Gt111*gtu11 + Gt122*gtu22 + 2*(Gt112*gtu12 +
- Gt113*gtu13 + Gt123*gtu23) + Gt133*gtu33 - Xt1L;
-
- CCTK_REAL cXt2L = Gt211*gtu11 + Gt222*gtu22 + 2*(Gt212*gtu12 +
- Gt213*gtu13 + Gt223*gtu23) + Gt233*gtu33 - Xt2L;
-
- CCTK_REAL cXt3L = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu12 +
- Gt313*gtu13 + Gt323*gtu23) + Gt333*gtu33 - Xt3L;
-
- CCTK_REAL cAL = At11L*gtu11 + At22L*gtu22 + 2*(At12L*gtu12 +
- At13L*gtu13 + At23L*gtu23) + At33L*gtu33;
-
- /* Copy local copies back to grid functions */
- cA[index] = cAL;
- cS[index] = cSL;
- cXt1[index] = cXt1L;
- cXt2[index] = cXt2L;
- cXt3[index] = cXt3L;
- M1[index] = M1L;
- M2[index] = M2L;
- M3[index] = M3L;
+ 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)))));
+
+ /* 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(cA[index],cAL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(cS[index],cSL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(cXt1[index],cXt1L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(cXt2[index],cXt2L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(cXt3[index],cXt3L,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(cA[index],cAL,elt_count);
+ vec_store_nta_partial_hi(cS[index],cSL,elt_count);
+ vec_store_nta_partial_hi(cXt1[index],cXt1L,elt_count);
+ vec_store_nta_partial_hi(cXt2[index],cXt2L,elt_count);
+ vec_store_nta_partial_hi(cXt3[index],cXt3L,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(cA[index],cAL,elt_count);
+ vec_store_nta_partial_lo(cS[index],cSL,elt_count);
+ vec_store_nta_partial_lo(cXt1[index],cXt1L,elt_count);
+ vec_store_nta_partial_lo(cXt2[index],cXt2L,elt_count);
+ vec_store_nta_partial_lo(cXt3[index],cXt3L,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(cA[index],cAL);
+ vec_store_nta(cS[index],cSL);
+ vec_store_nta(cXt1[index],cXt1L);
+ vec_store_nta(cXt2[index],cXt2L);
+ vec_store_nta(cXt3[index],cXt3L);
+ vec_store_nta(M1[index],M1L);
+ vec_store_nta(M2[index],M2L);
+ vec_store_nta(M3[index],M3L);
}
- LC_ENDLOOP3 (ML_BSSN_O8_constraints2);
+ LC_ENDLOOP3VEC (ML_BSSN_O8_constraints2);
}
extern "C" void ML_BSSN_O8_constraints2(CCTK_ARGUMENTS)
@@ -415,5 +995,43 @@ extern "C" void ML_BSSN_O8_constraints2(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O8_constraints2_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_O8_constraints2_calc_every != ML_BSSN_O8_constraints2_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN_O8::ML_cons_detg","ML_BSSN_O8::ML_cons_Gamma","ML_BSSN_O8::ML_cons_traceA","ML_BSSN_O8::ML_curv","ML_BSSN_O8::ML_Gamma","ML_BSSN_O8::ML_lapse","ML_BSSN_O8::ML_log_confac","ML_BSSN_O8::ML_metric","ML_BSSN_O8::ML_mom","ML_BSSN_O8::ML_shift","ML_BSSN_O8::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O8_constraints2", 11, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O8_constraints2", 1, 1, 1);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O8_constraints2", 2, 2, 2);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O8_constraints2", 3, 3, 3);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O8_constraints2", 4, 4, 4);
+ break;
+ }
+
GenericFD_LoopOverInterior(cctkGH, &ML_BSSN_O8_constraints2_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_O8_constraints2_Body");
+ }
}
diff --git a/ML_BSSN_O8/src/ML_BSSN_O8_convertFromADMBase.cc b/ML_BSSN_O8/src/ML_BSSN_O8_convertFromADMBase.cc
index 339c3d5..1ce1c33 100644
--- a/ML_BSSN_O8/src/ML_BSSN_O8_convertFromADMBase.cc
+++ b/ML_BSSN_O8/src/ML_BSSN_O8_convertFromADMBase.cc
@@ -13,15 +13,16 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
-static void ML_BSSN_O8_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_O8_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;
@@ -29,20 +30,6 @@ static void ML_BSSN_O8_convertFromADMBase_Body(cGH const * restrict const cctkGH
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O8_convertFromADMBase_Body");
- }
-
- if (cctk_iteration % ML_BSSN_O8_convertFromADMBase_calc_every != ML_BSSN_O8_convertFromADMBase_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ADMBase::curv","ADMBase::lapse","ADMBase::metric","ADMBase::shift","ML_BSSN_O8::ML_curv","ML_BSSN_O8::ML_lapse","ML_BSSN_O8::ML_log_confac","ML_BSSN_O8::ML_metric","ML_BSSN_O8::ML_shift","ML_BSSN_O8::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O8_convertFromADMBase", 10, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -52,187 +39,389 @@ static void ML_BSSN_O8_convertFromADMBase_Body(cGH const * restrict const cctkGH
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o1024dx = 0.0009765625*INV(dx);
- CCTK_REAL const p1o1024dy = 0.0009765625*INV(dy);
- CCTK_REAL const p1o1024dz = 0.0009765625*INV(dz);
- CCTK_REAL const p1o1680dx = 0.000595238095238095238095238095238*INV(dx);
- CCTK_REAL const p1o1680dy = 0.000595238095238095238095238095238*INV(dy);
- CCTK_REAL const p1o1680dz = 0.000595238095238095238095238095238*INV(dz);
- CCTK_REAL const p1o5040dx2 = 0.000198412698412698412698412698413*INV(SQR(dx));
- CCTK_REAL const p1o5040dy2 = 0.000198412698412698412698412698413*INV(SQR(dy));
- CCTK_REAL const p1o5040dz2 = 0.000198412698412698412698412698413*INV(SQR(dz));
- CCTK_REAL const p1o560dx = 0.00178571428571428571428571428571*INV(dx);
- CCTK_REAL const p1o560dy = 0.00178571428571428571428571428571*INV(dy);
- CCTK_REAL const p1o560dz = 0.00178571428571428571428571428571*INV(dz);
- CCTK_REAL const p1o705600dxdy = 1.41723356009070294784580498866e-6*INV(dx)*INV(dy);
- CCTK_REAL const p1o705600dxdz = 1.41723356009070294784580498866e-6*INV(dx)*INV(dz);
- CCTK_REAL const p1o705600dydz = 1.41723356009070294784580498866e-6*INV(dy)*INV(dz);
- CCTK_REAL const p1o840dx = 0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const p1o840dy = 0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const p1o840dz = 0.00119047619047619047619047619048*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o840dx = -0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const pm1o840dy = -0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const pm1o840dz = -0.00119047619047619047619047619048*INV(dz);
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_O8_convertFromADMBase,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_O8_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 alpL = alp[index];
- CCTK_REAL betaxL = betax[index];
- CCTK_REAL betayL = betay[index];
- CCTK_REAL betazL = betaz[index];
- CCTK_REAL gxxL = gxx[index];
- CCTK_REAL gxyL = gxy[index];
- CCTK_REAL gxzL = gxz[index];
- CCTK_REAL gyyL = gyy[index];
- CCTK_REAL gyzL = gyz[index];
- CCTK_REAL gzzL = gzz[index];
- CCTK_REAL kxxL = kxx[index];
- CCTK_REAL kxyL = kxy[index];
- CCTK_REAL kxzL = kxz[index];
- CCTK_REAL kyyL = kyy[index];
- CCTK_REAL kyzL = kyz[index];
- CCTK_REAL kzzL = kzz[index];
- CCTK_REAL phiL = phi[index];
- CCTK_REAL trKL = trK[index];
+ 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 g11 = gxxL;
+ CCTK_REAL_VEC g11 = gxxL;
- CCTK_REAL g12 = gxyL;
+ CCTK_REAL_VEC g12 = gxyL;
- CCTK_REAL g13 = gxzL;
+ CCTK_REAL_VEC g13 = gxzL;
- CCTK_REAL g22 = gyyL;
+ CCTK_REAL_VEC g22 = gyyL;
- CCTK_REAL g23 = gyzL;
+ CCTK_REAL_VEC g23 = gyzL;
- CCTK_REAL g33 = gzzL;
+ CCTK_REAL_VEC g33 = gzzL;
- CCTK_REAL detg = 2*g12*g13*g23 + g33*(g11*g22 - SQR(g12)) -
- g22*SQR(g13) - g11*SQR(g23);
+ 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 gu11 = INV(detg)*(g22*g33 - SQR(g23));
+ CCTK_REAL_VEC gu11 = kmul(INV(detg),kmsub(g22,g33,SQR(g23)));
- CCTK_REAL gu12 = (g13*g23 - g12*g33)*INV(detg);
+ CCTK_REAL_VEC gu12 = kmul(INV(detg),kmsub(g13,g23,kmul(g12,g33)));
- CCTK_REAL gu13 = (-(g13*g22) + g12*g23)*INV(detg);
+ CCTK_REAL_VEC gu13 = kmul(INV(detg),kmsub(g12,g23,kmul(g13,g22)));
- CCTK_REAL gu22 = INV(detg)*(g11*g33 - SQR(g13));
+ CCTK_REAL_VEC gu22 = kmul(INV(detg),kmsub(g11,g33,SQR(g13)));
- CCTK_REAL gu23 = (g12*g13 - g11*g23)*INV(detg);
+ CCTK_REAL_VEC gu23 = kmul(INV(detg),kmsub(g12,g13,kmul(g11,g23)));
- CCTK_REAL gu33 = INV(detg)*(g11*g22 - SQR(g12));
+ CCTK_REAL_VEC gu33 = kmul(INV(detg),kmsub(g11,g22,SQR(g12)));
- CCTK_REAL em4phi;
+ CCTK_REAL_VEC em4phi;
if (conformalMethod)
{
- phiL = pow(detg,-0.166666666666666666666666666667);
+ phiL = kpow(detg,-0.166666666666666666666666666667);
em4phi = SQR(phiL);
}
else
{
- phiL = 0.0833333333333333333333333333333*Log(detg);
+ phiL = kmul(klog(detg),ToReal(0.0833333333333333333333333333333));
- em4phi = exp(-4*phiL);
+ em4phi = kexp(kmul(phiL,ToReal(-4)));
}
- CCTK_REAL gt11L = em4phi*g11;
+ CCTK_REAL_VEC gt11L = kmul(em4phi,g11);
+
+ CCTK_REAL_VEC gt12L = kmul(em4phi,g12);
- CCTK_REAL gt12L = em4phi*g12;
+ CCTK_REAL_VEC gt13L = kmul(em4phi,g13);
- CCTK_REAL gt13L = em4phi*g13;
+ CCTK_REAL_VEC gt22L = kmul(em4phi,g22);
- CCTK_REAL gt22L = em4phi*g22;
+ CCTK_REAL_VEC gt23L = kmul(em4phi,g23);
- CCTK_REAL gt23L = em4phi*g23;
+ CCTK_REAL_VEC gt33L = kmul(em4phi,g33);
- CCTK_REAL gt33L = em4phi*g33;
+ trKL =
+ kmadd(gu11,kxxL,kmadd(gu22,kyyL,kmadd(gu33,kzzL,kmul(kmadd(gu12,kxyL,kmadd(gu13,kxzL,kmul(gu23,kyzL))),ToReal(2)))));
- trKL = gu11*kxxL + gu22*kyyL + 2*(gu12*kxyL + gu13*kxzL + gu23*kyzL) +
- gu33*kzzL;
+ CCTK_REAL_VEC At11L =
+ kmul(em4phi,kmadd(g11,kmul(trKL,ToReal(-0.333333333333333333333333333333)),kxxL));
- CCTK_REAL At11L = em4phi*(kxxL -
- 0.333333333333333333333333333333*g11*trKL);
+ CCTK_REAL_VEC At12L =
+ kmul(em4phi,kmadd(g12,kmul(trKL,ToReal(-0.333333333333333333333333333333)),kxyL));
- CCTK_REAL At12L = em4phi*(kxyL -
- 0.333333333333333333333333333333*g12*trKL);
+ CCTK_REAL_VEC At13L =
+ kmul(em4phi,kmadd(g13,kmul(trKL,ToReal(-0.333333333333333333333333333333)),kxzL));
- CCTK_REAL At13L = em4phi*(kxzL -
- 0.333333333333333333333333333333*g13*trKL);
+ CCTK_REAL_VEC At22L =
+ kmul(em4phi,kmadd(g22,kmul(trKL,ToReal(-0.333333333333333333333333333333)),kyyL));
- CCTK_REAL At22L = em4phi*(kyyL -
- 0.333333333333333333333333333333*g22*trKL);
+ CCTK_REAL_VEC At23L =
+ kmul(em4phi,kmadd(g23,kmul(trKL,ToReal(-0.333333333333333333333333333333)),kyzL));
- CCTK_REAL At23L = em4phi*(kyzL -
- 0.333333333333333333333333333333*g23*trKL);
+ CCTK_REAL_VEC At33L =
+ kmul(em4phi,kmadd(g33,kmul(trKL,ToReal(-0.333333333333333333333333333333)),kzzL));
- CCTK_REAL At33L = em4phi*(kzzL -
- 0.333333333333333333333333333333*g33*trKL);
+ CCTK_REAL_VEC alphaL = alpL;
- CCTK_REAL alphaL = alpL;
+ CCTK_REAL_VEC beta1L = betaxL;
- CCTK_REAL beta1L = betaxL;
+ CCTK_REAL_VEC beta2L = betayL;
- CCTK_REAL beta2L = betayL;
+ CCTK_REAL_VEC beta3L = betazL;
- CCTK_REAL beta3L = betazL;
+ /* If necessary, store only partial vectors after the first iteration */
- /* Copy local copies back to grid functions */
- alpha[index] = alphaL;
- At11[index] = At11L;
- At12[index] = At12L;
- At13[index] = At13L;
- At22[index] = At22L;
- At23[index] = At23L;
- At33[index] = At33L;
- beta1[index] = beta1L;
- beta2[index] = beta2L;
- beta3[index] = beta3L;
- gt11[index] = gt11L;
- gt12[index] = gt12L;
- gt13[index] = gt13L;
- gt22[index] = gt22L;
- gt23[index] = gt23L;
- gt33[index] = gt33L;
- phi[index] = phiL;
- trK[index] = trKL;
+ 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(At11[index],At11L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At12[index],At12L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At13[index],At13L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At22[index],At22L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At23[index],At23L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At33[index],At33L,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(gt11[index],gt11L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt12[index],gt12L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt13[index],gt13L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt22[index],gt22L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt23[index],gt23L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt33[index],gt33L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(phi[index],phiL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(trK[index],trKL,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(At11[index],At11L,elt_count);
+ vec_store_nta_partial_hi(At12[index],At12L,elt_count);
+ vec_store_nta_partial_hi(At13[index],At13L,elt_count);
+ vec_store_nta_partial_hi(At22[index],At22L,elt_count);
+ vec_store_nta_partial_hi(At23[index],At23L,elt_count);
+ vec_store_nta_partial_hi(At33[index],At33L,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(gt11[index],gt11L,elt_count);
+ vec_store_nta_partial_hi(gt12[index],gt12L,elt_count);
+ vec_store_nta_partial_hi(gt13[index],gt13L,elt_count);
+ vec_store_nta_partial_hi(gt22[index],gt22L,elt_count);
+ vec_store_nta_partial_hi(gt23[index],gt23L,elt_count);
+ vec_store_nta_partial_hi(gt33[index],gt33L,elt_count);
+ vec_store_nta_partial_hi(phi[index],phiL,elt_count);
+ vec_store_nta_partial_hi(trK[index],trKL,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(At11[index],At11L,elt_count);
+ vec_store_nta_partial_lo(At12[index],At12L,elt_count);
+ vec_store_nta_partial_lo(At13[index],At13L,elt_count);
+ vec_store_nta_partial_lo(At22[index],At22L,elt_count);
+ vec_store_nta_partial_lo(At23[index],At23L,elt_count);
+ vec_store_nta_partial_lo(At33[index],At33L,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(gt11[index],gt11L,elt_count);
+ vec_store_nta_partial_lo(gt12[index],gt12L,elt_count);
+ vec_store_nta_partial_lo(gt13[index],gt13L,elt_count);
+ vec_store_nta_partial_lo(gt22[index],gt22L,elt_count);
+ vec_store_nta_partial_lo(gt23[index],gt23L,elt_count);
+ vec_store_nta_partial_lo(gt33[index],gt33L,elt_count);
+ vec_store_nta_partial_lo(phi[index],phiL,elt_count);
+ vec_store_nta_partial_lo(trK[index],trKL,elt_count);
+ break;
+ }
+ vec_store_nta(alpha[index],alphaL);
+ vec_store_nta(At11[index],At11L);
+ vec_store_nta(At12[index],At12L);
+ vec_store_nta(At13[index],At13L);
+ vec_store_nta(At22[index],At22L);
+ vec_store_nta(At23[index],At23L);
+ vec_store_nta(At33[index],At33L);
+ vec_store_nta(beta1[index],beta1L);
+ vec_store_nta(beta2[index],beta2L);
+ vec_store_nta(beta3[index],beta3L);
+ vec_store_nta(gt11[index],gt11L);
+ vec_store_nta(gt12[index],gt12L);
+ vec_store_nta(gt13[index],gt13L);
+ vec_store_nta(gt22[index],gt22L);
+ vec_store_nta(gt23[index],gt23L);
+ vec_store_nta(gt33[index],gt33L);
+ vec_store_nta(phi[index],phiL);
+ vec_store_nta(trK[index],trKL);
}
- LC_ENDLOOP3 (ML_BSSN_O8_convertFromADMBase);
+ LC_ENDLOOP3VEC (ML_BSSN_O8_convertFromADMBase);
}
extern "C" void ML_BSSN_O8_convertFromADMBase(CCTK_ARGUMENTS)
@@ -240,5 +429,39 @@ extern "C" void ML_BSSN_O8_convertFromADMBase(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O8_convertFromADMBase_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_O8_convertFromADMBase_calc_every != ML_BSSN_O8_convertFromADMBase_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ADMBase::curv","ADMBase::lapse","ADMBase::metric","ADMBase::shift","ML_BSSN_O8::ML_curv","ML_BSSN_O8::ML_lapse","ML_BSSN_O8::ML_log_confac","ML_BSSN_O8::ML_metric","ML_BSSN_O8::ML_shift","ML_BSSN_O8::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O8_convertFromADMBase", 10, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverEverything(cctkGH, &ML_BSSN_O8_convertFromADMBase_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_O8_convertFromADMBase_Body");
+ }
}
diff --git a/ML_BSSN_O8/src/ML_BSSN_O8_convertFromADMBaseGamma.cc b/ML_BSSN_O8/src/ML_BSSN_O8_convertFromADMBaseGamma.cc
index e07f898..24cf91f 100644
--- a/ML_BSSN_O8/src/ML_BSSN_O8_convertFromADMBaseGamma.cc
+++ b/ML_BSSN_O8/src/ML_BSSN_O8_convertFromADMBaseGamma.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_O8_convertFromADMBaseGamma_SelectBCs(CCTK_ARGUMENTS)
{
@@ -39,7 +40,7 @@ extern "C" void ML_BSSN_O8_convertFromADMBaseGamma_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_BSSN_O8_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_O8_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;
@@ -47,21 +48,6 @@ static void ML_BSSN_O8_convertFromADMBaseGamma_Body(cGH const * restrict const c
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O8_convertFromADMBaseGamma_Body");
- }
-
- if (cctk_iteration % ML_BSSN_O8_convertFromADMBaseGamma_calc_every != ML_BSSN_O8_convertFromADMBaseGamma_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ADMBase::dtlapse","ADMBase::dtshift","grid::coordinates","Grid::coordinates","ML_BSSN_O8::ML_dtlapse","ML_BSSN_O8::ML_dtshift","ML_BSSN_O8::ML_Gamma","ML_BSSN_O8::ML_lapse","ML_BSSN_O8::ML_metric","ML_BSSN_O8::ML_shift"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O8_convertFromADMBaseGamma", 10, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O8_convertFromADMBaseGamma", 5, 5, 5);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -71,120 +57,427 @@ static void ML_BSSN_O8_convertFromADMBaseGamma_Body(cGH const * restrict const c
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o1024dx = 0.0009765625*INV(dx);
- CCTK_REAL const p1o1024dy = 0.0009765625*INV(dy);
- CCTK_REAL const p1o1024dz = 0.0009765625*INV(dz);
- CCTK_REAL const p1o1680dx = 0.000595238095238095238095238095238*INV(dx);
- CCTK_REAL const p1o1680dy = 0.000595238095238095238095238095238*INV(dy);
- CCTK_REAL const p1o1680dz = 0.000595238095238095238095238095238*INV(dz);
- CCTK_REAL const p1o5040dx2 = 0.000198412698412698412698412698413*INV(SQR(dx));
- CCTK_REAL const p1o5040dy2 = 0.000198412698412698412698412698413*INV(SQR(dy));
- CCTK_REAL const p1o5040dz2 = 0.000198412698412698412698412698413*INV(SQR(dz));
- CCTK_REAL const p1o560dx = 0.00178571428571428571428571428571*INV(dx);
- CCTK_REAL const p1o560dy = 0.00178571428571428571428571428571*INV(dy);
- CCTK_REAL const p1o560dz = 0.00178571428571428571428571428571*INV(dz);
- CCTK_REAL const p1o705600dxdy = 1.41723356009070294784580498866e-6*INV(dx)*INV(dy);
- CCTK_REAL const p1o705600dxdz = 1.41723356009070294784580498866e-6*INV(dx)*INV(dz);
- CCTK_REAL const p1o705600dydz = 1.41723356009070294784580498866e-6*INV(dy)*INV(dz);
- CCTK_REAL const p1o840dx = 0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const p1o840dy = 0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const p1o840dz = 0.00119047619047619047619047619048*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o840dx = -0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const pm1o840dy = -0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const pm1o840dz = -0.00119047619047619047619047619048*INV(dz);
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_O8_convertFromADMBaseGamma,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_O8_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 alphaL = alpha[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL dtalpL = dtalp[index];
- CCTK_REAL dtbetaxL = dtbetax[index];
- CCTK_REAL dtbetayL = dtbetay[index];
- CCTK_REAL dtbetazL = dtbetaz[index];
- CCTK_REAL gt11L = gt11[index];
- CCTK_REAL gt12L = gt12[index];
- CCTK_REAL gt13L = gt13[index];
- CCTK_REAL gt22L = gt22[index];
- CCTK_REAL gt23L = gt23[index];
- CCTK_REAL gt33L = gt33[index];
- CCTK_REAL rL = r[index];
-
+ 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 const PDupwindNthAnti1alpha = PDupwindNthAnti1(&alpha[index]);
- CCTK_REAL const PDupwindNthSymm1alpha = PDupwindNthSymm1(&alpha[index]);
- CCTK_REAL const PDupwindNthAnti2alpha = PDupwindNthAnti2(&alpha[index]);
- CCTK_REAL const PDupwindNthSymm2alpha = PDupwindNthSymm2(&alpha[index]);
- CCTK_REAL const PDupwindNthAnti3alpha = PDupwindNthAnti3(&alpha[index]);
- CCTK_REAL const PDupwindNthSymm3alpha = PDupwindNthSymm3(&alpha[index]);
- CCTK_REAL const PDupwindNthAnti1beta1 = PDupwindNthAnti1(&beta1[index]);
- CCTK_REAL const PDupwindNthSymm1beta1 = PDupwindNthSymm1(&beta1[index]);
- CCTK_REAL const PDupwindNthAnti2beta1 = PDupwindNthAnti2(&beta1[index]);
- CCTK_REAL const PDupwindNthSymm2beta1 = PDupwindNthSymm2(&beta1[index]);
- CCTK_REAL const PDupwindNthAnti3beta1 = PDupwindNthAnti3(&beta1[index]);
- CCTK_REAL const PDupwindNthSymm3beta1 = PDupwindNthSymm3(&beta1[index]);
- CCTK_REAL const PDupwindNthAnti1beta2 = PDupwindNthAnti1(&beta2[index]);
- CCTK_REAL const PDupwindNthSymm1beta2 = PDupwindNthSymm1(&beta2[index]);
- CCTK_REAL const PDupwindNthAnti2beta2 = PDupwindNthAnti2(&beta2[index]);
- CCTK_REAL const PDupwindNthSymm2beta2 = PDupwindNthSymm2(&beta2[index]);
- CCTK_REAL const PDupwindNthAnti3beta2 = PDupwindNthAnti3(&beta2[index]);
- CCTK_REAL const PDupwindNthSymm3beta2 = PDupwindNthSymm3(&beta2[index]);
- CCTK_REAL const PDupwindNthAnti1beta3 = PDupwindNthAnti1(&beta3[index]);
- CCTK_REAL const PDupwindNthSymm1beta3 = PDupwindNthSymm1(&beta3[index]);
- CCTK_REAL const PDupwindNthAnti2beta3 = PDupwindNthAnti2(&beta3[index]);
- CCTK_REAL const PDupwindNthSymm2beta3 = PDupwindNthSymm2(&beta3[index]);
- CCTK_REAL const PDupwindNthAnti3beta3 = PDupwindNthAnti3(&beta3[index]);
- CCTK_REAL const PDupwindNthSymm3beta3 = PDupwindNthSymm3(&beta3[index]);
- CCTK_REAL const PDstandardNth1gt11 = PDstandardNth1(&gt11[index]);
- CCTK_REAL const PDstandardNth2gt11 = PDstandardNth2(&gt11[index]);
- CCTK_REAL const PDstandardNth3gt11 = PDstandardNth3(&gt11[index]);
- CCTK_REAL const PDstandardNth1gt12 = PDstandardNth1(&gt12[index]);
- CCTK_REAL const PDstandardNth2gt12 = PDstandardNth2(&gt12[index]);
- CCTK_REAL const PDstandardNth3gt12 = PDstandardNth3(&gt12[index]);
- CCTK_REAL const PDstandardNth1gt13 = PDstandardNth1(&gt13[index]);
- CCTK_REAL const PDstandardNth2gt13 = PDstandardNth2(&gt13[index]);
- CCTK_REAL const PDstandardNth3gt13 = PDstandardNth3(&gt13[index]);
- CCTK_REAL const PDstandardNth1gt22 = PDstandardNth1(&gt22[index]);
- CCTK_REAL const PDstandardNth2gt22 = PDstandardNth2(&gt22[index]);
- CCTK_REAL const PDstandardNth3gt22 = PDstandardNth3(&gt22[index]);
- CCTK_REAL const PDstandardNth1gt23 = PDstandardNth1(&gt23[index]);
- CCTK_REAL const PDstandardNth2gt23 = PDstandardNth2(&gt23[index]);
- CCTK_REAL const PDstandardNth3gt23 = PDstandardNth3(&gt23[index]);
- CCTK_REAL const PDstandardNth1gt33 = PDstandardNth1(&gt33[index]);
- CCTK_REAL const PDstandardNth2gt33 = PDstandardNth2(&gt33[index]);
- CCTK_REAL const PDstandardNth3gt33 = PDstandardNth3(&gt33[index]);
+ 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);
@@ -193,154 +486,428 @@ static void ML_BSSN_O8_convertFromADMBaseGamma_Body(cGH const * restrict const c
ptrdiff_t dir3 = Sign(beta3L);
- CCTK_REAL detgt = 1;
+ 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 gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L));
+ CCTK_REAL_VEC gtu11 = kmul(INV(detgt),kmsub(gt22L,gt33L,SQR(gt23L)));
- CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt);
+ CCTK_REAL_VEC gtu12 =
+ kmul(INV(detgt),kmsub(gt13L,gt23L,kmul(gt12L,gt33L)));
- CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC gtu13 =
+ kmul(INV(detgt),kmsub(gt12L,gt23L,kmul(gt13L,gt22L)));
- CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L));
+ CCTK_REAL_VEC gtu22 = kmul(INV(detgt),kmsub(gt11L,gt33L,SQR(gt13L)));
- CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC gtu23 =
+ kmul(INV(detgt),kmsub(gt12L,gt13L,kmul(gt11L,gt23L)));
- CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L));
+ CCTK_REAL_VEC gtu33 = kmul(INV(detgt),kmsub(gt11L,gt22L,SQR(gt12L)));
- CCTK_REAL Gt111 = 0.5*(gtu11*PDstandardNth1gt11 +
- 2*(gtu12*PDstandardNth1gt12 + gtu13*PDstandardNth1gt13) -
- gtu12*PDstandardNth2gt11 - gtu13*PDstandardNth3gt11);
+ 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 Gt211 = 0.5*(gtu12*PDstandardNth1gt11 +
- 2*(gtu22*PDstandardNth1gt12 + gtu23*PDstandardNth1gt13) -
- gtu22*PDstandardNth2gt11 - gtu23*PDstandardNth3gt11);
+ 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 Gt311 = 0.5*(gtu13*PDstandardNth1gt11 +
- 2*(gtu23*PDstandardNth1gt12 + gtu33*PDstandardNth1gt13) -
- gtu23*PDstandardNth2gt11 - gtu33*PDstandardNth3gt11);
+ 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 Gt112 = 0.5*(gtu12*PDstandardNth1gt22 +
- gtu11*PDstandardNth2gt11 + gtu13*(PDstandardNth1gt23 +
- PDstandardNth2gt13 - PDstandardNth3gt12));
+ CCTK_REAL_VEC Gt112 =
+ kmul(kmadd(gtu12,JacPDstandardNth1gt22,kmadd(gtu11,JacPDstandardNth2gt11,kmul(gtu13,kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth2gt13,JacPDstandardNth3gt12))))),ToReal(0.5));
- CCTK_REAL Gt212 = 0.5*(gtu22*PDstandardNth1gt22 +
- gtu12*PDstandardNth2gt11 + gtu23*(PDstandardNth1gt23 +
- PDstandardNth2gt13 - PDstandardNth3gt12));
+ CCTK_REAL_VEC Gt212 =
+ kmul(kmadd(gtu22,JacPDstandardNth1gt22,kmadd(gtu12,JacPDstandardNth2gt11,kmul(gtu23,kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth2gt13,JacPDstandardNth3gt12))))),ToReal(0.5));
- CCTK_REAL Gt312 = 0.5*(gtu23*PDstandardNth1gt22 +
- gtu13*PDstandardNth2gt11 + gtu33*(PDstandardNth1gt23 +
- PDstandardNth2gt13 - PDstandardNth3gt12));
+ CCTK_REAL_VEC Gt312 =
+ kmul(kmadd(gtu23,JacPDstandardNth1gt22,kmadd(gtu13,JacPDstandardNth2gt11,kmul(gtu33,kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth2gt13,JacPDstandardNth3gt12))))),ToReal(0.5));
- CCTK_REAL Gt113 = 0.5*(gtu13*PDstandardNth1gt33 +
- gtu11*PDstandardNth3gt11 + gtu12*(PDstandardNth1gt23 -
- PDstandardNth2gt13 + PDstandardNth3gt12));
+ CCTK_REAL_VEC Gt113 =
+ kmul(kmadd(gtu13,JacPDstandardNth1gt33,kmadd(gtu11,JacPDstandardNth3gt11,kmul(gtu12,kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth3gt12,JacPDstandardNth2gt13))))),ToReal(0.5));
- CCTK_REAL Gt213 = 0.5*(gtu23*PDstandardNth1gt33 +
- gtu12*PDstandardNth3gt11 + gtu22*(PDstandardNth1gt23 -
- PDstandardNth2gt13 + PDstandardNth3gt12));
+ CCTK_REAL_VEC Gt213 =
+ kmul(kmadd(gtu23,JacPDstandardNth1gt33,kmadd(gtu12,JacPDstandardNth3gt11,kmul(gtu22,kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth3gt12,JacPDstandardNth2gt13))))),ToReal(0.5));
- CCTK_REAL Gt313 = 0.5*(gtu33*PDstandardNth1gt33 +
- gtu13*PDstandardNth3gt11 + gtu23*(PDstandardNth1gt23 -
- PDstandardNth2gt13 + PDstandardNth3gt12));
+ CCTK_REAL_VEC Gt313 =
+ kmul(kmadd(gtu33,JacPDstandardNth1gt33,kmadd(gtu13,JacPDstandardNth3gt11,kmul(gtu23,kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth3gt12,JacPDstandardNth2gt13))))),ToReal(0.5));
- CCTK_REAL Gt122 = 0.5*(gtu11*(-PDstandardNth1gt22 +
- 2*PDstandardNth2gt12) + gtu12*PDstandardNth2gt22 +
- gtu13*(2*PDstandardNth2gt23 - PDstandardNth3gt22));
+ 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 Gt222 = 0.5*(gtu12*(-PDstandardNth1gt22 +
- 2*PDstandardNth2gt12) + gtu22*PDstandardNth2gt22 +
- gtu23*(2*PDstandardNth2gt23 - PDstandardNth3gt22));
+ 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 Gt322 = 0.5*(gtu13*(-PDstandardNth1gt22 +
- 2*PDstandardNth2gt12) + gtu23*PDstandardNth2gt22 +
- gtu33*(2*PDstandardNth2gt23 - PDstandardNth3gt22));
+ 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 Gt123 = 0.5*(gtu13*PDstandardNth2gt33 +
- gtu11*(-PDstandardNth1gt23 + PDstandardNth2gt13 + PDstandardNth3gt12) +
- gtu12*PDstandardNth3gt22);
+ CCTK_REAL_VEC Gt123 =
+ kmul(kmadd(gtu13,JacPDstandardNth2gt33,kmadd(gtu12,JacPDstandardNth3gt22,kmul(gtu11,kadd(JacPDstandardNth2gt13,ksub(JacPDstandardNth3gt12,JacPDstandardNth1gt23))))),ToReal(0.5));
- CCTK_REAL Gt223 = 0.5*(gtu23*PDstandardNth2gt33 +
- gtu12*(-PDstandardNth1gt23 + PDstandardNth2gt13 + PDstandardNth3gt12) +
- gtu22*PDstandardNth3gt22);
+ CCTK_REAL_VEC Gt223 =
+ kmul(kmadd(gtu23,JacPDstandardNth2gt33,kmadd(gtu22,JacPDstandardNth3gt22,kmul(gtu12,kadd(JacPDstandardNth2gt13,ksub(JacPDstandardNth3gt12,JacPDstandardNth1gt23))))),ToReal(0.5));
- CCTK_REAL Gt323 = 0.5*(gtu33*PDstandardNth2gt33 +
- gtu13*(-PDstandardNth1gt23 + PDstandardNth2gt13 + PDstandardNth3gt12) +
- gtu23*PDstandardNth3gt22);
+ CCTK_REAL_VEC Gt323 =
+ kmul(kmadd(gtu33,JacPDstandardNth2gt33,kmadd(gtu23,JacPDstandardNth3gt22,kmul(gtu13,kadd(JacPDstandardNth2gt13,ksub(JacPDstandardNth3gt12,JacPDstandardNth1gt23))))),ToReal(0.5));
- CCTK_REAL Gt133 = 0.5*(gtu11*(-PDstandardNth1gt33 +
- 2*PDstandardNth3gt13) + gtu12*(-PDstandardNth2gt33 +
- 2*PDstandardNth3gt23) + gtu13*PDstandardNth3gt33);
+ 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 Gt233 = 0.5*(gtu12*(-PDstandardNth1gt33 +
- 2*PDstandardNth3gt13) + gtu22*(-PDstandardNth2gt33 +
- 2*PDstandardNth3gt23) + gtu23*PDstandardNth3gt33);
+ 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 Gt333 = 0.5*(gtu13*(-PDstandardNth1gt33 +
- 2*PDstandardNth3gt13) + gtu23*(-PDstandardNth2gt33 +
- 2*PDstandardNth3gt23) + gtu33*PDstandardNth3gt33);
+ 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 Xt1L = Gt111*gtu11 + Gt122*gtu22 + 2*(Gt112*gtu12 +
- Gt113*gtu13 + Gt123*gtu23) + Gt133*gtu33;
+ 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 Xt2L = Gt211*gtu11 + Gt222*gtu22 + 2*(Gt212*gtu12 +
- Gt213*gtu13 + Gt223*gtu23) + Gt233*gtu33;
+ 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 Xt3L = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu12 +
- Gt313*gtu13 + Gt323*gtu23) + Gt333*gtu33;
+ 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 AL = IfThen(LapseACoeff !=
- 0,-(INV(ToReal(harmonicF))*pow(alphaL,-ToReal(harmonicN))*(dtalpL -
- (beta1L*PDupwindNthAnti1alpha + beta2L*PDupwindNthAnti2alpha +
- beta3L*PDupwindNthAnti3alpha + PDupwindNthSymm1alpha*Abs(beta1L) +
- PDupwindNthSymm2alpha*Abs(beta2L) +
- PDupwindNthSymm3alpha*Abs(beta3L))*ToReal(LapseAdvectionCoeff))),0);
+ 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 theta = fmin(1,exp(1 -
- rL*INV(ToReal(SpatialShiftGammaCoeffRadius))));
+ CCTK_REAL_VEC theta =
+ kfmin(ToReal(1),kexp(knmsub(rL,INV(ToReal(SpatialShiftGammaCoeffRadius)),ToReal(1))));
- CCTK_REAL B1L;
- CCTK_REAL B2L;
- CCTK_REAL B3L;
+ CCTK_REAL_VEC B1L;
+ CCTK_REAL_VEC B2L;
+ CCTK_REAL_VEC B3L;
if (ShiftBCoeff*ShiftGammaCoeff != 0)
{
- B1L = INV(theta)*INV(ToReal(ShiftGammaCoeff))*(dtbetaxL -
- (beta1L*PDupwindNthAnti1beta1 + beta2L*PDupwindNthAnti2beta1 +
- beta3L*PDupwindNthAnti3beta1 + PDupwindNthSymm1beta1*Abs(beta1L) +
- PDupwindNthSymm2beta1*Abs(beta2L) +
- PDupwindNthSymm3beta1*Abs(beta3L))*ToReal(ShiftAdvectionCoeff));
-
- B2L = INV(theta)*INV(ToReal(ShiftGammaCoeff))*(dtbetayL -
- (beta1L*PDupwindNthAnti1beta2 + beta2L*PDupwindNthAnti2beta2 +
- beta3L*PDupwindNthAnti3beta2 + PDupwindNthSymm1beta2*Abs(beta1L) +
- PDupwindNthSymm2beta2*Abs(beta2L) +
- PDupwindNthSymm3beta2*Abs(beta3L))*ToReal(ShiftAdvectionCoeff));
-
- B3L = INV(theta)*INV(ToReal(ShiftGammaCoeff))*(dtbetazL -
- (beta1L*PDupwindNthAnti1beta3 + beta2L*PDupwindNthAnti2beta3 +
- beta3L*PDupwindNthAnti3beta3 + PDupwindNthSymm1beta3*Abs(beta1L) +
- PDupwindNthSymm2beta3*Abs(beta2L) +
- PDupwindNthSymm3beta3*Abs(beta3L))*ToReal(ShiftAdvectionCoeff));
+ B1L =
+ kmul(INV(theta),kmul(INV(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(theta),kmul(INV(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(theta),kmul(INV(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 = 0;
+ B1L = ToReal(0);
- B2L = 0;
+ B2L = ToReal(0);
- B3L = 0;
+ B3L = 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(A[index],AL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B1[index],B1L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B2[index],B2L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B3[index],B3L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt1[index],Xt1L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt2[index],Xt2L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt3[index],Xt3L,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(A[index],AL,elt_count);
+ vec_store_nta_partial_hi(B1[index],B1L,elt_count);
+ vec_store_nta_partial_hi(B2[index],B2L,elt_count);
+ vec_store_nta_partial_hi(B3[index],B3L,elt_count);
+ vec_store_nta_partial_hi(Xt1[index],Xt1L,elt_count);
+ vec_store_nta_partial_hi(Xt2[index],Xt2L,elt_count);
+ vec_store_nta_partial_hi(Xt3[index],Xt3L,elt_count);
+ continue;
}
- /* Copy local copies back to grid functions */
- A[index] = AL;
- B1[index] = B1L;
- B2[index] = B2L;
- B3[index] = B3L;
- Xt1[index] = Xt1L;
- Xt2[index] = Xt2L;
- Xt3[index] = Xt3L;
+ /* 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(A[index],AL,elt_count);
+ vec_store_nta_partial_lo(B1[index],B1L,elt_count);
+ vec_store_nta_partial_lo(B2[index],B2L,elt_count);
+ vec_store_nta_partial_lo(B3[index],B3L,elt_count);
+ vec_store_nta_partial_lo(Xt1[index],Xt1L,elt_count);
+ vec_store_nta_partial_lo(Xt2[index],Xt2L,elt_count);
+ vec_store_nta_partial_lo(Xt3[index],Xt3L,elt_count);
+ break;
+ }
+ vec_store_nta(A[index],AL);
+ vec_store_nta(B1[index],B1L);
+ vec_store_nta(B2[index],B2L);
+ vec_store_nta(B3[index],B3L);
+ vec_store_nta(Xt1[index],Xt1L);
+ vec_store_nta(Xt2[index],Xt2L);
+ vec_store_nta(Xt3[index],Xt3L);
}
- LC_ENDLOOP3 (ML_BSSN_O8_convertFromADMBaseGamma);
+ LC_ENDLOOP3VEC (ML_BSSN_O8_convertFromADMBaseGamma);
}
extern "C" void ML_BSSN_O8_convertFromADMBaseGamma(CCTK_ARGUMENTS)
@@ -348,5 +915,43 @@ extern "C" void ML_BSSN_O8_convertFromADMBaseGamma(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O8_convertFromADMBaseGamma_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_O8_convertFromADMBaseGamma_calc_every != ML_BSSN_O8_convertFromADMBaseGamma_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ADMBase::dtlapse","ADMBase::dtshift","grid::coordinates","Grid::coordinates","ML_BSSN_O8::ML_dtlapse","ML_BSSN_O8::ML_dtshift","ML_BSSN_O8::ML_Gamma","ML_BSSN_O8::ML_lapse","ML_BSSN_O8::ML_metric","ML_BSSN_O8::ML_shift"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O8_convertFromADMBaseGamma", 10, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O8_convertFromADMBaseGamma", 2, 2, 2);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O8_convertFromADMBaseGamma", 3, 3, 3);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O8_convertFromADMBaseGamma", 4, 4, 4);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O8_convertFromADMBaseGamma", 5, 5, 5);
+ break;
+ }
+
GenericFD_LoopOverInterior(cctkGH, &ML_BSSN_O8_convertFromADMBaseGamma_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_O8_convertFromADMBaseGamma_Body");
+ }
}
diff --git a/ML_BSSN_O8/src/ML_BSSN_O8_convertToADMBase.cc b/ML_BSSN_O8/src/ML_BSSN_O8_convertToADMBase.cc
index 0f74f58..8a7e3a3 100644
--- a/ML_BSSN_O8/src/ML_BSSN_O8_convertToADMBase.cc
+++ b/ML_BSSN_O8/src/ML_BSSN_O8_convertToADMBase.cc
@@ -13,15 +13,16 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
-static void ML_BSSN_O8_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_O8_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;
@@ -29,20 +30,6 @@ static void ML_BSSN_O8_convertToADMBase_Body(cGH const * restrict const cctkGH,
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O8_convertToADMBase_Body");
- }
-
- if (cctk_iteration % ML_BSSN_O8_convertToADMBase_calc_every != ML_BSSN_O8_convertToADMBase_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ADMBase::curv","ADMBase::lapse","ADMBase::metric","ADMBase::shift","ML_BSSN_O8::ML_curv","ML_BSSN_O8::ML_lapse","ML_BSSN_O8::ML_log_confac","ML_BSSN_O8::ML_metric","ML_BSSN_O8::ML_shift","ML_BSSN_O8::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O8_convertToADMBase", 10, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -52,148 +39,345 @@ static void ML_BSSN_O8_convertToADMBase_Body(cGH const * restrict const cctkGH,
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o1024dx = 0.0009765625*INV(dx);
- CCTK_REAL const p1o1024dy = 0.0009765625*INV(dy);
- CCTK_REAL const p1o1024dz = 0.0009765625*INV(dz);
- CCTK_REAL const p1o1680dx = 0.000595238095238095238095238095238*INV(dx);
- CCTK_REAL const p1o1680dy = 0.000595238095238095238095238095238*INV(dy);
- CCTK_REAL const p1o1680dz = 0.000595238095238095238095238095238*INV(dz);
- CCTK_REAL const p1o5040dx2 = 0.000198412698412698412698412698413*INV(SQR(dx));
- CCTK_REAL const p1o5040dy2 = 0.000198412698412698412698412698413*INV(SQR(dy));
- CCTK_REAL const p1o5040dz2 = 0.000198412698412698412698412698413*INV(SQR(dz));
- CCTK_REAL const p1o560dx = 0.00178571428571428571428571428571*INV(dx);
- CCTK_REAL const p1o560dy = 0.00178571428571428571428571428571*INV(dy);
- CCTK_REAL const p1o560dz = 0.00178571428571428571428571428571*INV(dz);
- CCTK_REAL const p1o705600dxdy = 1.41723356009070294784580498866e-6*INV(dx)*INV(dy);
- CCTK_REAL const p1o705600dxdz = 1.41723356009070294784580498866e-6*INV(dx)*INV(dz);
- CCTK_REAL const p1o705600dydz = 1.41723356009070294784580498866e-6*INV(dy)*INV(dz);
- CCTK_REAL const p1o840dx = 0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const p1o840dy = 0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const p1o840dz = 0.00119047619047619047619047619048*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o840dx = -0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const pm1o840dy = -0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const pm1o840dz = -0.00119047619047619047619047619048*INV(dz);
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_O8_convertToADMBase,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_O8_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 alphaL = alpha[index];
- CCTK_REAL At11L = At11[index];
- CCTK_REAL At12L = At12[index];
- CCTK_REAL At13L = At13[index];
- CCTK_REAL At22L = At22[index];
- CCTK_REAL At23L = At23[index];
- CCTK_REAL At33L = At33[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL gt11L = gt11[index];
- CCTK_REAL gt12L = gt12[index];
- CCTK_REAL gt13L = gt13[index];
- CCTK_REAL gt22L = gt22[index];
- CCTK_REAL gt23L = gt23[index];
- CCTK_REAL gt33L = gt33[index];
- CCTK_REAL gxxL = gxx[index];
- CCTK_REAL gxyL = gxy[index];
- CCTK_REAL gxzL = gxz[index];
- CCTK_REAL gyyL = gyy[index];
- CCTK_REAL gyzL = gyz[index];
- CCTK_REAL gzzL = gzz[index];
- CCTK_REAL phiL = phi[index];
- CCTK_REAL trKL = trK[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 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 e4phi = IfThen(conformalMethod,INV(SQR(phiL)),exp(4*phiL));
+ CCTK_REAL_VEC e4phi =
+ IfThen(conformalMethod,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
+
+ gxxL = kmul(e4phi,gt11L);
- gxxL = e4phi*gt11L;
+ gxyL = kmul(e4phi,gt12L);
- gxyL = e4phi*gt12L;
+ gxzL = kmul(e4phi,gt13L);
- gxzL = e4phi*gt13L;
+ gyyL = kmul(e4phi,gt22L);
- gyyL = e4phi*gt22L;
+ gyzL = kmul(e4phi,gt23L);
- gyzL = e4phi*gt23L;
+ gzzL = kmul(e4phi,gt33L);
- gzzL = e4phi*gt33L;
+ CCTK_REAL_VEC kxxL =
+ kmadd(At11L,e4phi,kmul(gxxL,kmul(trKL,ToReal(0.333333333333333333333333333333))));
- CCTK_REAL kxxL = At11L*e4phi +
- 0.333333333333333333333333333333*gxxL*trKL;
+ CCTK_REAL_VEC kxyL =
+ kmadd(At12L,e4phi,kmul(gxyL,kmul(trKL,ToReal(0.333333333333333333333333333333))));
- CCTK_REAL kxyL = At12L*e4phi +
- 0.333333333333333333333333333333*gxyL*trKL;
+ CCTK_REAL_VEC kxzL =
+ kmadd(At13L,e4phi,kmul(gxzL,kmul(trKL,ToReal(0.333333333333333333333333333333))));
- CCTK_REAL kxzL = At13L*e4phi +
- 0.333333333333333333333333333333*gxzL*trKL;
+ CCTK_REAL_VEC kyyL =
+ kmadd(At22L,e4phi,kmul(gyyL,kmul(trKL,ToReal(0.333333333333333333333333333333))));
- CCTK_REAL kyyL = At22L*e4phi +
- 0.333333333333333333333333333333*gyyL*trKL;
+ CCTK_REAL_VEC kyzL =
+ kmadd(At23L,e4phi,kmul(gyzL,kmul(trKL,ToReal(0.333333333333333333333333333333))));
- CCTK_REAL kyzL = At23L*e4phi +
- 0.333333333333333333333333333333*gyzL*trKL;
+ CCTK_REAL_VEC kzzL =
+ kmadd(At33L,e4phi,kmul(gzzL,kmul(trKL,ToReal(0.333333333333333333333333333333))));
- CCTK_REAL kzzL = At33L*e4phi +
- 0.333333333333333333333333333333*gzzL*trKL;
+ CCTK_REAL_VEC alpL = alphaL;
- CCTK_REAL alpL = alphaL;
+ CCTK_REAL_VEC betaxL = beta1L;
- CCTK_REAL betaxL = beta1L;
+ CCTK_REAL_VEC betayL = beta2L;
- CCTK_REAL betayL = beta2L;
+ CCTK_REAL_VEC betazL = beta3L;
- CCTK_REAL betazL = beta3L;
+ /* If necessary, store only partial vectors after the first iteration */
- /* Copy local copies back to grid functions */
- alp[index] = alpL;
- betax[index] = betaxL;
- betay[index] = betayL;
- betaz[index] = betazL;
- gxx[index] = gxxL;
- gxy[index] = gxyL;
- gxz[index] = gxzL;
- gyy[index] = gyyL;
- gyz[index] = gyzL;
- gzz[index] = gzzL;
- kxx[index] = kxxL;
- kxy[index] = kxyL;
- kxz[index] = kxzL;
- kyy[index] = kyyL;
- kyz[index] = kyzL;
- kzz[index] = kzzL;
+ 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(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(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(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(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);
}
- LC_ENDLOOP3 (ML_BSSN_O8_convertToADMBase);
+ LC_ENDLOOP3VEC (ML_BSSN_O8_convertToADMBase);
}
extern "C" void ML_BSSN_O8_convertToADMBase(CCTK_ARGUMENTS)
@@ -201,5 +385,39 @@ extern "C" void ML_BSSN_O8_convertToADMBase(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O8_convertToADMBase_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_O8_convertToADMBase_calc_every != ML_BSSN_O8_convertToADMBase_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ADMBase::curv","ADMBase::lapse","ADMBase::metric","ADMBase::shift","ML_BSSN_O8::ML_curv","ML_BSSN_O8::ML_lapse","ML_BSSN_O8::ML_log_confac","ML_BSSN_O8::ML_metric","ML_BSSN_O8::ML_shift","ML_BSSN_O8::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O8_convertToADMBase", 10, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverEverything(cctkGH, &ML_BSSN_O8_convertToADMBase_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_O8_convertToADMBase_Body");
+ }
}
diff --git a/ML_BSSN_O8/src/ML_BSSN_O8_convertToADMBaseDtLapseShift.cc b/ML_BSSN_O8/src/ML_BSSN_O8_convertToADMBaseDtLapseShift.cc
index e8c102a..5fc4a66 100644
--- a/ML_BSSN_O8/src/ML_BSSN_O8_convertToADMBaseDtLapseShift.cc
+++ b/ML_BSSN_O8/src/ML_BSSN_O8_convertToADMBaseDtLapseShift.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_O8_convertToADMBaseDtLapseShift_SelectBCs(CCTK_ARGUMENTS)
{
@@ -36,7 +37,7 @@ extern "C" void ML_BSSN_O8_convertToADMBaseDtLapseShift_SelectBCs(CCTK_ARGUMENTS
return;
}
-static void ML_BSSN_O8_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_O8_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;
@@ -44,21 +45,6 @@ static void ML_BSSN_O8_convertToADMBaseDtLapseShift_Body(cGH const * restrict co
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O8_convertToADMBaseDtLapseShift_Body");
- }
-
- if (cctk_iteration % ML_BSSN_O8_convertToADMBaseDtLapseShift_calc_every != ML_BSSN_O8_convertToADMBaseDtLapseShift_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ADMBase::dtlapse","ADMBase::dtshift","grid::coordinates","Grid::coordinates","ML_BSSN_O8::ML_dtlapse","ML_BSSN_O8::ML_dtshift","ML_BSSN_O8::ML_Gamma","ML_BSSN_O8::ML_lapse","ML_BSSN_O8::ML_shift","ML_BSSN_O8::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O8_convertToADMBaseDtLapseShift", 10, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O8_convertToADMBaseDtLapseShift", 5, 5, 5);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -68,100 +54,462 @@ static void ML_BSSN_O8_convertToADMBaseDtLapseShift_Body(cGH const * restrict co
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o1024dx = 0.0009765625*INV(dx);
- CCTK_REAL const p1o1024dy = 0.0009765625*INV(dy);
- CCTK_REAL const p1o1024dz = 0.0009765625*INV(dz);
- CCTK_REAL const p1o1680dx = 0.000595238095238095238095238095238*INV(dx);
- CCTK_REAL const p1o1680dy = 0.000595238095238095238095238095238*INV(dy);
- CCTK_REAL const p1o1680dz = 0.000595238095238095238095238095238*INV(dz);
- CCTK_REAL const p1o5040dx2 = 0.000198412698412698412698412698413*INV(SQR(dx));
- CCTK_REAL const p1o5040dy2 = 0.000198412698412698412698412698413*INV(SQR(dy));
- CCTK_REAL const p1o5040dz2 = 0.000198412698412698412698412698413*INV(SQR(dz));
- CCTK_REAL const p1o560dx = 0.00178571428571428571428571428571*INV(dx);
- CCTK_REAL const p1o560dy = 0.00178571428571428571428571428571*INV(dy);
- CCTK_REAL const p1o560dz = 0.00178571428571428571428571428571*INV(dz);
- CCTK_REAL const p1o705600dxdy = 1.41723356009070294784580498866e-6*INV(dx)*INV(dy);
- CCTK_REAL const p1o705600dxdz = 1.41723356009070294784580498866e-6*INV(dx)*INV(dz);
- CCTK_REAL const p1o705600dydz = 1.41723356009070294784580498866e-6*INV(dy)*INV(dz);
- CCTK_REAL const p1o840dx = 0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const p1o840dy = 0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const p1o840dz = 0.00119047619047619047619047619048*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o840dx = -0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const pm1o840dy = -0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const pm1o840dz = -0.00119047619047619047619047619048*INV(dz);
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_O8_convertToADMBaseDtLapseShift,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_O8_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 AL = A[index];
- CCTK_REAL alphaL = alpha[index];
- CCTK_REAL B1L = B1[index];
- CCTK_REAL B2L = B2[index];
- CCTK_REAL B3L = B3[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL rL = r[index];
- CCTK_REAL trKL = trK[index];
- CCTK_REAL Xt1L = Xt1[index];
- CCTK_REAL Xt2L = Xt2[index];
- CCTK_REAL Xt3L = Xt3[index];
+ 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 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 const PDupwindNthAnti1alpha = PDupwindNthAnti1(&alpha[index]);
- CCTK_REAL const PDupwindNthSymm1alpha = PDupwindNthSymm1(&alpha[index]);
- CCTK_REAL const PDupwindNthAnti2alpha = PDupwindNthAnti2(&alpha[index]);
- CCTK_REAL const PDupwindNthSymm2alpha = PDupwindNthSymm2(&alpha[index]);
- CCTK_REAL const PDupwindNthAnti3alpha = PDupwindNthAnti3(&alpha[index]);
- CCTK_REAL const PDupwindNthSymm3alpha = PDupwindNthSymm3(&alpha[index]);
- CCTK_REAL const PDupwindNthAnti1beta1 = PDupwindNthAnti1(&beta1[index]);
- CCTK_REAL const PDupwindNthSymm1beta1 = PDupwindNthSymm1(&beta1[index]);
- CCTK_REAL const PDupwindNthAnti2beta1 = PDupwindNthAnti2(&beta1[index]);
- CCTK_REAL const PDupwindNthSymm2beta1 = PDupwindNthSymm2(&beta1[index]);
- CCTK_REAL const PDupwindNthAnti3beta1 = PDupwindNthAnti3(&beta1[index]);
- CCTK_REAL const PDupwindNthSymm3beta1 = PDupwindNthSymm3(&beta1[index]);
- CCTK_REAL const PDupwindNthAnti1beta2 = PDupwindNthAnti1(&beta2[index]);
- CCTK_REAL const PDupwindNthSymm1beta2 = PDupwindNthSymm1(&beta2[index]);
- CCTK_REAL const PDupwindNthAnti2beta2 = PDupwindNthAnti2(&beta2[index]);
- CCTK_REAL const PDupwindNthSymm2beta2 = PDupwindNthSymm2(&beta2[index]);
- CCTK_REAL const PDupwindNthAnti3beta2 = PDupwindNthAnti3(&beta2[index]);
- CCTK_REAL const PDupwindNthSymm3beta2 = PDupwindNthSymm3(&beta2[index]);
- CCTK_REAL const PDupwindNthAnti1beta3 = PDupwindNthAnti1(&beta3[index]);
- CCTK_REAL const PDupwindNthSymm1beta3 = PDupwindNthSymm1(&beta3[index]);
- CCTK_REAL const PDupwindNthAnti2beta3 = PDupwindNthAnti2(&beta3[index]);
- CCTK_REAL const PDupwindNthSymm2beta3 = PDupwindNthSymm2(&beta3[index]);
- CCTK_REAL const PDupwindNthAnti3beta3 = PDupwindNthAnti3(&beta3[index]);
- CCTK_REAL const PDupwindNthSymm3beta3 = PDupwindNthSymm3(&beta3[index]);
+ CCTK_REAL_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);
@@ -170,46 +518,383 @@ static void ML_BSSN_O8_convertToADMBaseDtLapseShift_Body(cGH const * restrict co
ptrdiff_t dir3 = Sign(beta3L);
- CCTK_REAL eta = fmin(1,INV(rL)*ToReal(SpatialBetaDriverRadius));
-
- CCTK_REAL theta = fmin(1,exp(1 -
- rL*INV(ToReal(SpatialShiftGammaCoeffRadius))));
-
- CCTK_REAL dtalpL =
- -(pow(alphaL,ToReal(harmonicN))*ToReal(harmonicF)*(trKL + (AL -
- trKL)*ToReal(LapseACoeff))) + (beta1L*PDupwindNthAnti1alpha +
- beta2L*PDupwindNthAnti2alpha + beta3L*PDupwindNthAnti3alpha +
- PDupwindNthSymm1alpha*Abs(beta1L) + PDupwindNthSymm2alpha*Abs(beta2L) +
- PDupwindNthSymm3alpha*Abs(beta3L))*ToReal(LapseAdvectionCoeff);
-
- CCTK_REAL dtbetaxL = (beta1L*PDupwindNthAnti1beta1 +
- beta2L*PDupwindNthAnti2beta1 + beta3L*PDupwindNthAnti3beta1 +
- PDupwindNthSymm1beta1*Abs(beta1L) + PDupwindNthSymm2beta1*Abs(beta2L) +
- PDupwindNthSymm3beta1*Abs(beta3L))*ToReal(ShiftAdvectionCoeff) +
- theta*(Xt1L + beta1L*eta*ToReal(BetaDriver)*(-1 + ToReal(ShiftBCoeff))
- + (B1L - Xt1L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
-
- CCTK_REAL dtbetayL = (beta1L*PDupwindNthAnti1beta2 +
- beta2L*PDupwindNthAnti2beta2 + beta3L*PDupwindNthAnti3beta2 +
- PDupwindNthSymm1beta2*Abs(beta1L) + PDupwindNthSymm2beta2*Abs(beta2L) +
- PDupwindNthSymm3beta2*Abs(beta3L))*ToReal(ShiftAdvectionCoeff) +
- theta*(Xt2L + beta2L*eta*ToReal(BetaDriver)*(-1 + ToReal(ShiftBCoeff))
- + (B2L - Xt2L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
-
- CCTK_REAL dtbetazL = (beta1L*PDupwindNthAnti1beta3 +
- beta2L*PDupwindNthAnti2beta3 + beta3L*PDupwindNthAnti3beta3 +
- PDupwindNthSymm1beta3*Abs(beta1L) + PDupwindNthSymm2beta3*Abs(beta2L) +
- PDupwindNthSymm3beta3*Abs(beta3L))*ToReal(ShiftAdvectionCoeff) +
- theta*(Xt3L + beta3L*eta*ToReal(BetaDriver)*(-1 + ToReal(ShiftBCoeff))
- + (B3L - Xt3L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
-
- /* Copy local copies back to grid functions */
- dtalp[index] = dtalpL;
- dtbetax[index] = dtbetaxL;
- dtbetay[index] = dtbetayL;
- dtbetaz[index] = dtbetazL;
+ 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 =
+ kfmin(ToReal(1),kmul(INV(rL),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(ksub(AL,trKL),ToReal(LapseACoeff),trKL))));
+
+ 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(kmadd(gtu11,JacPDstandardNth1alpha,kmadd(gtu12,JacPDstandardNth2alpha,kmul(gtu13,JacPDstandardNth3alpha))),kmul(phiL,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(beta1L,kmul(eta,ToReal(BetaDriver*(-1
+ +
+ ShiftBCoeff))),kmul(ksub(B1L,Xt1L),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(kmadd(gtu12,JacPDstandardNth1alpha,kmadd(gtu22,JacPDstandardNth2alpha,kmul(gtu23,JacPDstandardNth3alpha))),kmul(phiL,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(beta2L,kmul(eta,ToReal(BetaDriver*(-1
+ +
+ ShiftBCoeff))),kmul(ksub(B2L,Xt2L),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(kmadd(gtu13,JacPDstandardNth1alpha,kmadd(gtu23,JacPDstandardNth2alpha,kmul(gtu33,JacPDstandardNth3alpha))),kmul(phiL,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(beta3L,kmul(eta,ToReal(BetaDriver*(-1
+ +
+ ShiftBCoeff))),kmul(ksub(B3L,Xt3L),ToReal(ShiftBCoeff)))),ToReal(ShiftGammaCoeff)))));
+
+ /* 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(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);
+ 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(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);
+ 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(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);
+ break;
+ }
+ vec_store_nta(dtalp[index],dtalpL);
+ vec_store_nta(dtbetax[index],dtbetaxL);
+ vec_store_nta(dtbetay[index],dtbetayL);
+ vec_store_nta(dtbetaz[index],dtbetazL);
}
- LC_ENDLOOP3 (ML_BSSN_O8_convertToADMBaseDtLapseShift);
+ LC_ENDLOOP3VEC (ML_BSSN_O8_convertToADMBaseDtLapseShift);
}
extern "C" void ML_BSSN_O8_convertToADMBaseDtLapseShift(CCTK_ARGUMENTS)
@@ -217,5 +902,43 @@ extern "C" void ML_BSSN_O8_convertToADMBaseDtLapseShift(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O8_convertToADMBaseDtLapseShift_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_O8_convertToADMBaseDtLapseShift_calc_every != ML_BSSN_O8_convertToADMBaseDtLapseShift_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ADMBase::dtlapse","ADMBase::dtshift","grid::coordinates","Grid::coordinates","ML_BSSN_O8::ML_dtlapse","ML_BSSN_O8::ML_dtshift","ML_BSSN_O8::ML_Gamma","ML_BSSN_O8::ML_lapse","ML_BSSN_O8::ML_log_confac","ML_BSSN_O8::ML_metric","ML_BSSN_O8::ML_shift","ML_BSSN_O8::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O8_convertToADMBaseDtLapseShift", 12, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O8_convertToADMBaseDtLapseShift", 2, 2, 2);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O8_convertToADMBaseDtLapseShift", 3, 3, 3);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O8_convertToADMBaseDtLapseShift", 4, 4, 4);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_O8_convertToADMBaseDtLapseShift", 5, 5, 5);
+ break;
+ }
+
GenericFD_LoopOverInterior(cctkGH, &ML_BSSN_O8_convertToADMBaseDtLapseShift_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_O8_convertToADMBaseDtLapseShift_Body");
+ }
}
diff --git a/ML_BSSN_O8/src/ML_BSSN_O8_convertToADMBaseDtLapseShiftBoundary.cc b/ML_BSSN_O8/src/ML_BSSN_O8_convertToADMBaseDtLapseShiftBoundary.cc
index a9740f9..1bf55af 100644
--- a/ML_BSSN_O8/src/ML_BSSN_O8_convertToADMBaseDtLapseShiftBoundary.cc
+++ b/ML_BSSN_O8/src/ML_BSSN_O8_convertToADMBaseDtLapseShiftBoundary.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_O8_convertToADMBaseDtLapseShiftBoundary_SelectBCs(CCTK_ARGUMENTS)
{
@@ -36,7 +37,7 @@ extern "C" void ML_BSSN_O8_convertToADMBaseDtLapseShiftBoundary_SelectBCs(CCTK_A
return;
}
-static void ML_BSSN_O8_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_O8_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;
@@ -44,20 +45,6 @@ static void ML_BSSN_O8_convertToADMBaseDtLapseShiftBoundary_Body(cGH const * res
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O8_convertToADMBaseDtLapseShiftBoundary_Body");
- }
-
- if (cctk_iteration % ML_BSSN_O8_convertToADMBaseDtLapseShiftBoundary_calc_every != ML_BSSN_O8_convertToADMBaseDtLapseShiftBoundary_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ADMBase::dtlapse","ADMBase::dtshift","grid::coordinates","Grid::coordinates","ML_BSSN_O8::ML_dtlapse","ML_BSSN_O8::ML_dtshift","ML_BSSN_O8::ML_Gamma","ML_BSSN_O8::ML_lapse","ML_BSSN_O8::ML_shift","ML_BSSN_O8::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O8_convertToADMBaseDtLapseShiftBoundary", 10, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -67,106 +54,281 @@ static void ML_BSSN_O8_convertToADMBaseDtLapseShiftBoundary_Body(cGH const * res
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o1024dx = 0.0009765625*INV(dx);
- CCTK_REAL const p1o1024dy = 0.0009765625*INV(dy);
- CCTK_REAL const p1o1024dz = 0.0009765625*INV(dz);
- CCTK_REAL const p1o1680dx = 0.000595238095238095238095238095238*INV(dx);
- CCTK_REAL const p1o1680dy = 0.000595238095238095238095238095238*INV(dy);
- CCTK_REAL const p1o1680dz = 0.000595238095238095238095238095238*INV(dz);
- CCTK_REAL const p1o5040dx2 = 0.000198412698412698412698412698413*INV(SQR(dx));
- CCTK_REAL const p1o5040dy2 = 0.000198412698412698412698412698413*INV(SQR(dy));
- CCTK_REAL const p1o5040dz2 = 0.000198412698412698412698412698413*INV(SQR(dz));
- CCTK_REAL const p1o560dx = 0.00178571428571428571428571428571*INV(dx);
- CCTK_REAL const p1o560dy = 0.00178571428571428571428571428571*INV(dy);
- CCTK_REAL const p1o560dz = 0.00178571428571428571428571428571*INV(dz);
- CCTK_REAL const p1o705600dxdy = 1.41723356009070294784580498866e-6*INV(dx)*INV(dy);
- CCTK_REAL const p1o705600dxdz = 1.41723356009070294784580498866e-6*INV(dx)*INV(dz);
- CCTK_REAL const p1o705600dydz = 1.41723356009070294784580498866e-6*INV(dy)*INV(dz);
- CCTK_REAL const p1o840dx = 0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const p1o840dy = 0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const p1o840dz = 0.00119047619047619047619047619048*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o840dx = -0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const pm1o840dy = -0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const pm1o840dz = -0.00119047619047619047619047619048*INV(dz);
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_O8_convertToADMBaseDtLapseShiftBoundary,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_O8_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 AL = A[index];
- CCTK_REAL alphaL = alpha[index];
- CCTK_REAL B1L = B1[index];
- CCTK_REAL B2L = B2[index];
- CCTK_REAL B3L = B3[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL rL = r[index];
- CCTK_REAL trKL = trK[index];
- CCTK_REAL Xt1L = Xt1[index];
- CCTK_REAL Xt2L = Xt2[index];
- CCTK_REAL Xt3L = Xt3[index];
+ 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 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 eta = fmin(1,INV(rL)*ToReal(SpatialBetaDriverRadius));
+ CCTK_REAL_VEC eta =
+ kfmin(ToReal(1),kmul(INV(rL),ToReal(SpatialBetaDriverRadius)));
- CCTK_REAL theta = fmin(1,exp(1 -
- rL*INV(ToReal(SpatialShiftGammaCoeffRadius))));
+ CCTK_REAL_VEC theta =
+ kfmin(ToReal(1),kexp(knmsub(rL,INV(ToReal(SpatialShiftGammaCoeffRadius)),ToReal(1))));
- CCTK_REAL dtalpL =
- -(pow(alphaL,ToReal(harmonicN))*ToReal(harmonicF)*(trKL + (AL -
- trKL)*ToReal(LapseACoeff)));
+ CCTK_REAL_VEC dtalpL =
+ kneg(kmul(kpow(alphaL,harmonicN),kmul(ToReal(harmonicF),kmadd(ksub(AL,trKL),ToReal(LapseACoeff),trKL))));
- CCTK_REAL dtbetaxL = theta*(Xt1L + beta1L*eta*ToReal(BetaDriver)*(-1 +
- ToReal(ShiftBCoeff)) + (B1L -
- Xt1L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
+ CCTK_REAL_VEC dtbetaxL;
+ CCTK_REAL_VEC dtbetayL;
+ CCTK_REAL_VEC dtbetazL;
- CCTK_REAL dtbetayL = theta*(Xt2L + beta2L*eta*ToReal(BetaDriver)*(-1 +
- ToReal(ShiftBCoeff)) + (B2L -
- Xt2L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
+ if (harmonicShift)
+ {
+ dtbetaxL = ToReal(0);
+
+ dtbetayL = ToReal(0);
+
+ dtbetazL = ToReal(0);
+ }
+ else
+ {
+ dtbetaxL =
+ kmul(theta,kmul(kadd(Xt1L,kmadd(beta1L,kmul(eta,ToReal(BetaDriver*(-1 +
+ ShiftBCoeff))),kmul(ksub(B1L,Xt1L),ToReal(ShiftBCoeff)))),ToReal(ShiftGammaCoeff)));
+
+ dtbetayL =
+ kmul(theta,kmul(kadd(Xt2L,kmadd(beta2L,kmul(eta,ToReal(BetaDriver*(-1 +
+ ShiftBCoeff))),kmul(ksub(B2L,Xt2L),ToReal(ShiftBCoeff)))),ToReal(ShiftGammaCoeff)));
+
+ dtbetazL =
+ kmul(theta,kmul(kadd(Xt3L,kmadd(beta3L,kmul(eta,ToReal(BetaDriver*(-1 +
+ ShiftBCoeff))),kmul(ksub(B3L,Xt3L),ToReal(ShiftBCoeff)))),ToReal(ShiftGammaCoeff)));
+ }
- CCTK_REAL dtbetazL = theta*(Xt3L + beta3L*eta*ToReal(BetaDriver)*(-1 +
- ToReal(ShiftBCoeff)) + (B3L -
- Xt3L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
+ /* If necessary, store only partial vectors after the first iteration */
- /* Copy local copies back to grid functions */
- dtalp[index] = dtalpL;
- dtbetax[index] = dtbetaxL;
- dtbetay[index] = dtbetayL;
- dtbetaz[index] = dtbetazL;
+ 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(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);
+ 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(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);
+ 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(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);
+ break;
+ }
+ vec_store_nta(dtalp[index],dtalpL);
+ vec_store_nta(dtbetax[index],dtbetaxL);
+ vec_store_nta(dtbetay[index],dtbetayL);
+ vec_store_nta(dtbetaz[index],dtbetazL);
}
- LC_ENDLOOP3 (ML_BSSN_O8_convertToADMBaseDtLapseShiftBoundary);
+ LC_ENDLOOP3VEC (ML_BSSN_O8_convertToADMBaseDtLapseShiftBoundary);
}
extern "C" void ML_BSSN_O8_convertToADMBaseDtLapseShiftBoundary(CCTK_ARGUMENTS)
@@ -174,5 +336,39 @@ extern "C" void ML_BSSN_O8_convertToADMBaseDtLapseShiftBoundary(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O8_convertToADMBaseDtLapseShiftBoundary_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_O8_convertToADMBaseDtLapseShiftBoundary_calc_every != ML_BSSN_O8_convertToADMBaseDtLapseShiftBoundary_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ADMBase::dtlapse","ADMBase::dtshift","grid::coordinates","Grid::coordinates","ML_BSSN_O8::ML_dtlapse","ML_BSSN_O8::ML_dtshift","ML_BSSN_O8::ML_Gamma","ML_BSSN_O8::ML_lapse","ML_BSSN_O8::ML_shift","ML_BSSN_O8::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O8_convertToADMBaseDtLapseShiftBoundary", 10, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverBoundaryWithGhosts(cctkGH, &ML_BSSN_O8_convertToADMBaseDtLapseShiftBoundary_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_O8_convertToADMBaseDtLapseShiftBoundary_Body");
+ }
}
diff --git a/ML_BSSN_O8/src/ML_BSSN_O8_convertToADMBaseFakeDtLapseShift.cc b/ML_BSSN_O8/src/ML_BSSN_O8_convertToADMBaseFakeDtLapseShift.cc
index f00e347..ba27c1b 100644
--- a/ML_BSSN_O8/src/ML_BSSN_O8_convertToADMBaseFakeDtLapseShift.cc
+++ b/ML_BSSN_O8/src/ML_BSSN_O8_convertToADMBaseFakeDtLapseShift.cc
@@ -13,15 +13,16 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
-static void ML_BSSN_O8_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_O8_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;
@@ -29,20 +30,6 @@ static void ML_BSSN_O8_convertToADMBaseFakeDtLapseShift_Body(cGH const * restric
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O8_convertToADMBaseFakeDtLapseShift_Body");
- }
-
- if (cctk_iteration % ML_BSSN_O8_convertToADMBaseFakeDtLapseShift_calc_every != ML_BSSN_O8_convertToADMBaseFakeDtLapseShift_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ADMBase::dtlapse","ADMBase::dtshift","grid::coordinates","Grid::coordinates","ML_BSSN_O8::ML_dtlapse","ML_BSSN_O8::ML_dtshift","ML_BSSN_O8::ML_Gamma","ML_BSSN_O8::ML_lapse","ML_BSSN_O8::ML_shift","ML_BSSN_O8::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O8_convertToADMBaseFakeDtLapseShift", 10, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -52,106 +39,281 @@ static void ML_BSSN_O8_convertToADMBaseFakeDtLapseShift_Body(cGH const * restric
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o1024dx = 0.0009765625*INV(dx);
- CCTK_REAL const p1o1024dy = 0.0009765625*INV(dy);
- CCTK_REAL const p1o1024dz = 0.0009765625*INV(dz);
- CCTK_REAL const p1o1680dx = 0.000595238095238095238095238095238*INV(dx);
- CCTK_REAL const p1o1680dy = 0.000595238095238095238095238095238*INV(dy);
- CCTK_REAL const p1o1680dz = 0.000595238095238095238095238095238*INV(dz);
- CCTK_REAL const p1o5040dx2 = 0.000198412698412698412698412698413*INV(SQR(dx));
- CCTK_REAL const p1o5040dy2 = 0.000198412698412698412698412698413*INV(SQR(dy));
- CCTK_REAL const p1o5040dz2 = 0.000198412698412698412698412698413*INV(SQR(dz));
- CCTK_REAL const p1o560dx = 0.00178571428571428571428571428571*INV(dx);
- CCTK_REAL const p1o560dy = 0.00178571428571428571428571428571*INV(dy);
- CCTK_REAL const p1o560dz = 0.00178571428571428571428571428571*INV(dz);
- CCTK_REAL const p1o705600dxdy = 1.41723356009070294784580498866e-6*INV(dx)*INV(dy);
- CCTK_REAL const p1o705600dxdz = 1.41723356009070294784580498866e-6*INV(dx)*INV(dz);
- CCTK_REAL const p1o705600dydz = 1.41723356009070294784580498866e-6*INV(dy)*INV(dz);
- CCTK_REAL const p1o840dx = 0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const p1o840dy = 0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const p1o840dz = 0.00119047619047619047619047619048*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o840dx = -0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const pm1o840dy = -0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const pm1o840dz = -0.00119047619047619047619047619048*INV(dz);
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_O8_convertToADMBaseFakeDtLapseShift,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_O8_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 AL = A[index];
- CCTK_REAL alphaL = alpha[index];
- CCTK_REAL B1L = B1[index];
- CCTK_REAL B2L = B2[index];
- CCTK_REAL B3L = B3[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL rL = r[index];
- CCTK_REAL trKL = trK[index];
- CCTK_REAL Xt1L = Xt1[index];
- CCTK_REAL Xt2L = Xt2[index];
- CCTK_REAL Xt3L = Xt3[index];
+ 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 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 eta = fmin(1,INV(rL)*ToReal(SpatialBetaDriverRadius));
+ CCTK_REAL_VEC eta =
+ kfmin(ToReal(1),kmul(INV(rL),ToReal(SpatialBetaDriverRadius)));
- CCTK_REAL theta = fmin(1,exp(1 -
- rL*INV(ToReal(SpatialShiftGammaCoeffRadius))));
+ CCTK_REAL_VEC theta =
+ kfmin(ToReal(1),kexp(knmsub(rL,INV(ToReal(SpatialShiftGammaCoeffRadius)),ToReal(1))));
- CCTK_REAL dtalpL =
- -(pow(alphaL,ToReal(harmonicN))*ToReal(harmonicF)*(trKL + (AL -
- trKL)*ToReal(LapseACoeff)));
+ CCTK_REAL_VEC dtalpL =
+ kneg(kmul(kpow(alphaL,harmonicN),kmul(ToReal(harmonicF),kmadd(ksub(AL,trKL),ToReal(LapseACoeff),trKL))));
- CCTK_REAL dtbetaxL = theta*(Xt1L + beta1L*eta*ToReal(BetaDriver)*(-1 +
- ToReal(ShiftBCoeff)) + (B1L -
- Xt1L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
+ CCTK_REAL_VEC dtbetaxL;
+ CCTK_REAL_VEC dtbetayL;
+ CCTK_REAL_VEC dtbetazL;
- CCTK_REAL dtbetayL = theta*(Xt2L + beta2L*eta*ToReal(BetaDriver)*(-1 +
- ToReal(ShiftBCoeff)) + (B2L -
- Xt2L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
+ if (harmonicShift)
+ {
+ dtbetaxL = ToReal(0);
+
+ dtbetayL = ToReal(0);
+
+ dtbetazL = ToReal(0);
+ }
+ else
+ {
+ dtbetaxL =
+ kmul(theta,kmul(kadd(Xt1L,kmadd(beta1L,kmul(eta,ToReal(BetaDriver*(-1 +
+ ShiftBCoeff))),kmul(ksub(B1L,Xt1L),ToReal(ShiftBCoeff)))),ToReal(ShiftGammaCoeff)));
+
+ dtbetayL =
+ kmul(theta,kmul(kadd(Xt2L,kmadd(beta2L,kmul(eta,ToReal(BetaDriver*(-1 +
+ ShiftBCoeff))),kmul(ksub(B2L,Xt2L),ToReal(ShiftBCoeff)))),ToReal(ShiftGammaCoeff)));
+
+ dtbetazL =
+ kmul(theta,kmul(kadd(Xt3L,kmadd(beta3L,kmul(eta,ToReal(BetaDriver*(-1 +
+ ShiftBCoeff))),kmul(ksub(B3L,Xt3L),ToReal(ShiftBCoeff)))),ToReal(ShiftGammaCoeff)));
+ }
- CCTK_REAL dtbetazL = theta*(Xt3L + beta3L*eta*ToReal(BetaDriver)*(-1 +
- ToReal(ShiftBCoeff)) + (B3L -
- Xt3L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
+ /* If necessary, store only partial vectors after the first iteration */
- /* Copy local copies back to grid functions */
- dtalp[index] = dtalpL;
- dtbetax[index] = dtbetaxL;
- dtbetay[index] = dtbetayL;
- dtbetaz[index] = dtbetazL;
+ 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(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);
+ 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(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);
+ 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(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);
+ break;
+ }
+ vec_store_nta(dtalp[index],dtalpL);
+ vec_store_nta(dtbetax[index],dtbetaxL);
+ vec_store_nta(dtbetay[index],dtbetayL);
+ vec_store_nta(dtbetaz[index],dtbetazL);
}
- LC_ENDLOOP3 (ML_BSSN_O8_convertToADMBaseFakeDtLapseShift);
+ LC_ENDLOOP3VEC (ML_BSSN_O8_convertToADMBaseFakeDtLapseShift);
}
extern "C" void ML_BSSN_O8_convertToADMBaseFakeDtLapseShift(CCTK_ARGUMENTS)
@@ -159,5 +321,39 @@ extern "C" void ML_BSSN_O8_convertToADMBaseFakeDtLapseShift(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O8_convertToADMBaseFakeDtLapseShift_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_O8_convertToADMBaseFakeDtLapseShift_calc_every != ML_BSSN_O8_convertToADMBaseFakeDtLapseShift_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ADMBase::dtlapse","ADMBase::dtshift","grid::coordinates","Grid::coordinates","ML_BSSN_O8::ML_dtlapse","ML_BSSN_O8::ML_dtshift","ML_BSSN_O8::ML_Gamma","ML_BSSN_O8::ML_lapse","ML_BSSN_O8::ML_shift","ML_BSSN_O8::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O8_convertToADMBaseFakeDtLapseShift", 10, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverEverything(cctkGH, &ML_BSSN_O8_convertToADMBaseFakeDtLapseShift_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_O8_convertToADMBaseFakeDtLapseShift_Body");
+ }
}
diff --git a/ML_BSSN_O8/src/ML_BSSN_O8_enforce.cc b/ML_BSSN_O8/src/ML_BSSN_O8_enforce.cc
index 6a937af..4ed51fe 100644
--- a/ML_BSSN_O8/src/ML_BSSN_O8_enforce.cc
+++ b/ML_BSSN_O8/src/ML_BSSN_O8_enforce.cc
@@ -13,15 +13,16 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
-static void ML_BSSN_O8_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_O8_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;
@@ -29,20 +30,6 @@ static void ML_BSSN_O8_enforce_Body(cGH const * restrict const cctkGH, int const
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O8_enforce_Body");
- }
-
- if (cctk_iteration % ML_BSSN_O8_enforce_calc_every != ML_BSSN_O8_enforce_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN_O8::ML_curv","ML_BSSN_O8::ML_lapse","ML_BSSN_O8::ML_metric"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O8_enforce", 3, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -52,119 +39,297 @@ static void ML_BSSN_O8_enforce_Body(cGH const * restrict const cctkGH, int const
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o1024dx = 0.0009765625*INV(dx);
- CCTK_REAL const p1o1024dy = 0.0009765625*INV(dy);
- CCTK_REAL const p1o1024dz = 0.0009765625*INV(dz);
- CCTK_REAL const p1o1680dx = 0.000595238095238095238095238095238*INV(dx);
- CCTK_REAL const p1o1680dy = 0.000595238095238095238095238095238*INV(dy);
- CCTK_REAL const p1o1680dz = 0.000595238095238095238095238095238*INV(dz);
- CCTK_REAL const p1o5040dx2 = 0.000198412698412698412698412698413*INV(SQR(dx));
- CCTK_REAL const p1o5040dy2 = 0.000198412698412698412698412698413*INV(SQR(dy));
- CCTK_REAL const p1o5040dz2 = 0.000198412698412698412698412698413*INV(SQR(dz));
- CCTK_REAL const p1o560dx = 0.00178571428571428571428571428571*INV(dx);
- CCTK_REAL const p1o560dy = 0.00178571428571428571428571428571*INV(dy);
- CCTK_REAL const p1o560dz = 0.00178571428571428571428571428571*INV(dz);
- CCTK_REAL const p1o705600dxdy = 1.41723356009070294784580498866e-6*INV(dx)*INV(dy);
- CCTK_REAL const p1o705600dxdz = 1.41723356009070294784580498866e-6*INV(dx)*INV(dz);
- CCTK_REAL const p1o705600dydz = 1.41723356009070294784580498866e-6*INV(dy)*INV(dz);
- CCTK_REAL const p1o840dx = 0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const p1o840dy = 0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const p1o840dz = 0.00119047619047619047619047619048*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o840dx = -0.00119047619047619047619047619048*INV(dx);
- CCTK_REAL const pm1o840dy = -0.00119047619047619047619047619048*INV(dy);
- CCTK_REAL const pm1o840dz = -0.00119047619047619047619047619048*INV(dz);
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_O8_enforce,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_O8_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 alphaL = alpha[index];
- CCTK_REAL At11L = At11[index];
- CCTK_REAL At12L = At12[index];
- CCTK_REAL At13L = At13[index];
- CCTK_REAL At22L = At22[index];
- CCTK_REAL At23L = At23[index];
- CCTK_REAL At33L = At33[index];
- CCTK_REAL gt11L = gt11[index];
- CCTK_REAL gt12L = gt12[index];
- CCTK_REAL gt13L = gt13[index];
- CCTK_REAL gt22L = gt22[index];
- CCTK_REAL gt23L = gt23[index];
- CCTK_REAL gt33L = gt33[index];
+ CCTK_REAL_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 detgt = 1;
+ CCTK_REAL_VEC detgt = ToReal(1);
+
+ CCTK_REAL_VEC gtu11 = kmul(INV(detgt),kmsub(gt22L,gt33L,SQR(gt23L)));
- CCTK_REAL gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L));
+ CCTK_REAL_VEC gtu12 =
+ kmul(INV(detgt),kmsub(gt13L,gt23L,kmul(gt12L,gt33L)));
- CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt);
+ CCTK_REAL_VEC gtu13 =
+ kmul(INV(detgt),kmsub(gt12L,gt23L,kmul(gt13L,gt22L)));
- CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC gtu22 = kmul(INV(detgt),kmsub(gt11L,gt33L,SQR(gt13L)));
- CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L));
+ CCTK_REAL_VEC gtu23 =
+ kmul(INV(detgt),kmsub(gt12L,gt13L,kmul(gt11L,gt23L)));
- CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC gtu33 = kmul(INV(detgt),kmsub(gt11L,gt22L,SQR(gt12L)));
- CCTK_REAL gtu33 = INV(detgt)*(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)))));
- CCTK_REAL trAt = At11L*gtu11 + At22L*gtu22 + 2*(At12L*gtu12 +
- At13L*gtu13 + At23L*gtu23) + At33L*gtu33;
+ At11L =
+ kmadd(gt11L,kmul(trAt,ToReal(-0.333333333333333333333333333333)),At11L);
- At11L = At11L - 0.333333333333333333333333333333*gt11L*trAt;
+ At12L =
+ kmadd(gt12L,kmul(trAt,ToReal(-0.333333333333333333333333333333)),At12L);
- At12L = At12L - 0.333333333333333333333333333333*gt12L*trAt;
+ At13L =
+ kmadd(gt13L,kmul(trAt,ToReal(-0.333333333333333333333333333333)),At13L);
- At13L = At13L - 0.333333333333333333333333333333*gt13L*trAt;
+ At22L =
+ kmadd(gt22L,kmul(trAt,ToReal(-0.333333333333333333333333333333)),At22L);
- At22L = At22L - 0.333333333333333333333333333333*gt22L*trAt;
+ At23L =
+ kmadd(gt23L,kmul(trAt,ToReal(-0.333333333333333333333333333333)),At23L);
- At23L = At23L - 0.333333333333333333333333333333*gt23L*trAt;
+ At33L =
+ kmadd(gt33L,kmul(trAt,ToReal(-0.333333333333333333333333333333)),At33L);
- At33L = At33L - 0.333333333333333333333333333333*gt33L*trAt;
+ alphaL = kfmax(alphaL,ToReal(MinimumLapse));
- alphaL = fmax(alphaL,ToReal(MinimumLapse));
+ /* If necessary, store only partial vectors after the first iteration */
- /* Copy local copies back to grid functions */
- alpha[index] = alphaL;
- At11[index] = At11L;
- At12[index] = At12L;
- At13[index] = At13L;
- At22[index] = At22L;
- At23[index] = At23L;
- At33[index] = At33L;
+ 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(At11[index],At11L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At12[index],At12L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At13[index],At13L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At22[index],At22L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At23[index],At23L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At33[index],At33L,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(At11[index],At11L,elt_count);
+ vec_store_nta_partial_hi(At12[index],At12L,elt_count);
+ vec_store_nta_partial_hi(At13[index],At13L,elt_count);
+ vec_store_nta_partial_hi(At22[index],At22L,elt_count);
+ vec_store_nta_partial_hi(At23[index],At23L,elt_count);
+ vec_store_nta_partial_hi(At33[index],At33L,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(At11[index],At11L,elt_count);
+ vec_store_nta_partial_lo(At12[index],At12L,elt_count);
+ vec_store_nta_partial_lo(At13[index],At13L,elt_count);
+ vec_store_nta_partial_lo(At22[index],At22L,elt_count);
+ vec_store_nta_partial_lo(At23[index],At23L,elt_count);
+ vec_store_nta_partial_lo(At33[index],At33L,elt_count);
+ break;
+ }
+ vec_store_nta(alpha[index],alphaL);
+ vec_store_nta(At11[index],At11L);
+ vec_store_nta(At12[index],At12L);
+ vec_store_nta(At13[index],At13L);
+ vec_store_nta(At22[index],At22L);
+ vec_store_nta(At23[index],At23L);
+ vec_store_nta(At33[index],At33L);
}
- LC_ENDLOOP3 (ML_BSSN_O8_enforce);
+ LC_ENDLOOP3VEC (ML_BSSN_O8_enforce);
}
extern "C" void ML_BSSN_O8_enforce(CCTK_ARGUMENTS)
@@ -172,5 +337,39 @@ extern "C" void ML_BSSN_O8_enforce(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_O8_enforce_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_O8_enforce_calc_every != ML_BSSN_O8_enforce_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN_O8::ML_curv","ML_BSSN_O8::ML_lapse","ML_BSSN_O8::ML_metric"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_O8_enforce", 3, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverEverything(cctkGH, &ML_BSSN_O8_enforce_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_O8_enforce_Body");
+ }
}
diff --git a/ML_BSSN_O8/src/RegisterMoL.cc b/ML_BSSN_O8/src/RegisterMoL.cc
index 5845e78..7e136f8 100644
--- a/ML_BSSN_O8/src/RegisterMoL.cc
+++ b/ML_BSSN_O8/src/RegisterMoL.cc
@@ -37,5 +37,7 @@ extern "C" void ML_BSSN_O8_RegisterVars(CCTK_ARGUMENTS)
ierr += MoLRegisterEvolved(CCTK_VarIndex("ML_BSSN_O8::beta2"), CCTK_VarIndex("ML_BSSN_O8::beta2rhs"));
ierr += MoLRegisterEvolved(CCTK_VarIndex("ML_BSSN_O8::beta3"), CCTK_VarIndex("ML_BSSN_O8::beta3rhs"));
ierr += MoLRegisterEvolved(CCTK_VarIndex("ML_BSSN_O8::trK"), CCTK_VarIndex("ML_BSSN_O8::trKrhs"));
+
+ /* Register all the evolved Array functions with MoL */
return;
}
diff --git a/ML_BSSN_O8_Helper/src/SetGroupTags.c b/ML_BSSN_O8_Helper/src/SetGroupTags.c
index a628c5f..733e1ae 100644
--- a/ML_BSSN_O8_Helper/src/SetGroupTags.c
+++ b/ML_BSSN_O8_Helper/src/SetGroupTags.c
@@ -15,29 +15,30 @@ ML_BSSN_O8_SetGroupTags (void)
{
DECLARE_CCTK_PARAMETERS;
- set_group_tags (0, 0, 1, "ADMBase::metric");
- set_group_tags (0, 0, 1, "ADMBase::curv");
- set_group_tags (0, 0, 1, "ADMBase::lapse");
- set_group_tags (0, 0, 1, "ADMBase::shift");
- set_group_tags (0, 0, 1, "ADMBase::dtlapse");
- set_group_tags (0, 0, 1, "ADMBase::dtshift");
+ 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 (0, 0, 0, "ML_BSSN_O8::ML_cons_detg");
- set_group_tags (0, 0, 0, "ML_BSSN_O8::ML_cons_Gamma");
- set_group_tags (0, 0, 0, "ML_BSSN_O8::ML_cons_traceA");
- set_group_tags (0, 0, 0, "ML_BSSN_O8::ML_Ham");
- set_group_tags (0, 0, 0, "ML_BSSN_O8::ML_mom");
+ set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_O8::ML_cons_detg");
+ set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_O8::ML_cons_Gamma");
+ set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_O8::ML_cons_traceA");
+ set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_O8::ML_Ham");
+ set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_O8::ML_mom");
- int const checkpoint = rhs_timelevels > 1;
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_O8::ML_log_confacrhs");
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_O8::ML_metricrhs");
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_O8::ML_Gammarhs");
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_O8::ML_trace_curvrhs");
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_O8::ML_curvrhs");
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_O8::ML_lapserhs");
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_O8::ML_dtlapserhs");
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_O8::ML_shiftrhs");
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_O8::ML_dtshiftrhs");
+ int const rhs_checkpoint = rhs_timelevels > 1;
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN_O8::ML_log_confacrhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN_O8::ML_metricrhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN_O8::ML_Gammarhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN_O8::ML_trace_curvrhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN_O8::ML_curvrhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN_O8::ML_lapserhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN_O8::ML_dtlapserhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN_O8::ML_shiftrhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN_O8::ML_dtshiftrhs");
return 0;
}
diff --git a/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic.par b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic.par
new file mode 100644
index 0000000..9eaecdf
--- /dev/null
+++ b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic.par
@@ -0,0 +1,142 @@
+
+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_BSSN ML_BSSN_Helper GenericFD TMuNuBase SphericalSurface ADMMacros TimerReport"
+
+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"
+
+# Harmonic gauge
+ML_BSSN::harmonicN = 2
+ML_BSSN::harmonicF = 1.0
+ML_BSSN::harmonicShift = 1
+ML_BSSN::LapseAdvectionCoeff = 1.0
+ML_BSSN::ShiftAdvectionCoeff = 1.0
+
+ML_BSSN::MinimumLapse = 1.0e-8
+ML_BSSN::conformalMethod = 1 # W
+ML_BSSN::my_rhs_boundary_condition = "static"
+
+ML_BSSN::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_BSSN::ML_cons_detg ML_BSSN::ML_cons_Gamma ML_BSSN::ML_cons_traceA ML_BSSN::ML_curv ML_BSSN::ML_dtlapse ML_BSSN::ML_dtshift ML_BSSN::ML_Gamma ML_BSSN::ML_lapse ML_BSSN::ML_log_confac ML_BSSN::ML_metric ML_BSSN::ML_shift ML_BSSN::ML_trace_curv"
diff --git a/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/A.x.asc b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/A.x.asc
new file mode 100644
index 0000000..4014b07
--- /dev/null
+++ b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/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_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/At11.x.asc b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/At11.x.asc
new file mode 100644
index 0000000..7c5d052
--- /dev/null
+++ b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/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.004268336421320069289
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0.004268336421322617598
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0.006425507527047206666
+0 0 0 0 0 3 3 3 0 0 0 0 -3.626728547108844436e-15
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 -0.005178451796058376917
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 -0.003008516424830082279
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 0.003008516424830252715
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 0.005178451796055473857
+0 0 0 0 0 8 3 3 0 0.5 0 0 -1.238115469971310823e-15
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 -0.006425507527046140678
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 -0.004268336421320069289
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 0.004268336421322617598
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 0.006425507527047206666
+0 0 0 0 0 13 3 3 0 1 0 0 -3.626728547108844436e-15
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 -0.005178451796058376917
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 -0.003008516424830082279
+
+#
+
+8 0 0 0 0 0 3 3 0.4000000000000000222 -0.3000000000000000444 0 0 -0.0007125399102582096172
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 -0.005160762982174833813
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 -0.002435743635488946384
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 0.003494993838473087894
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 0.00528897778999663868
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 -0.0002595800178387396863
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 -0.006275584725651734731
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 -0.003304407044021078106
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 0.004520215858370956949
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 0.005687865485525217535
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 -0.0007125399102582096172
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 -0.005160762982174833813
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 -0.002435743635488946384
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 0.003494993838473087894
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 0.00528897778999663868
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 -0.0002595800178387396863
+
+#
+
diff --git a/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/At12.x.asc b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/At12.x.asc
new file mode 100644
index 0000000..d50f905
--- /dev/null
+++ b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/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.0630515811890607486
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0.06305158118905918041
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0.1575503876315909046
+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.05045863700046667594
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 -0.05045863700046628042
+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.0630515811890607486
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 0.06305158118905918041
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 0.1575503876315909046
+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.05045863700046667594
+
+#
+
+8 0 0 0 0 0 3 3 0.4000000000000000222 -0.3000000000000000444 0 0 0.1786123700053528218
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 0.1322950359885705085
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 0.0418007744308180676
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 -0.0603720250453497892
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 -0.143549768082805812
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 -0.1787518653273711122
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 -0.1445030940570869171
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 -0.04818045927518112975
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 0.06940648582696837265
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 0.1566810920061798285
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 0.1786123700053528218
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 0.1322950359885705085
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 0.0418007744308180676
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 -0.0603720250453497892
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 -0.143549768082805812
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 -0.1787518653273711122
+
+#
+
diff --git a/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/At13.x.asc b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/At13.x.asc
new file mode 100644
index 0000000..6b2c94a
--- /dev/null
+++ b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/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.06305158118906031839
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0.06305158118905936082
+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.1813805949244508553
+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.05045863700046674533
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 -0.05045863700046626654
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 -0.1373300779859512322
+0 0 0 0 0 8 3 3 0 0.5 0 0 -0.1813805949244478022
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 -0.1575503876315910989
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 -0.06305158118906031839
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 0.06305158118905936082
+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.1813805949244508553
+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.05045863700046674533
+
+#
+
+8 0 0 0 0 0 3 3 0.4000000000000000222 -0.3000000000000000444 0 0 0.1786123700053580399
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 0.1322950359885665395
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 0.04180077443081832433
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 -0.06037202504534809611
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 -0.1435497680828077272
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 -0.1787518653273714453
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 -0.1445030940570893041
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 -0.04818045927518146282
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 0.06940648582696645752
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 0.1566810920061825763
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 0.1786123700053580399
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 0.1322950359885665395
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 0.04180077443081832433
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 -0.06037202504534809611
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 -0.1435497680828077272
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 -0.1787518653273714453
+
+#
+
diff --git a/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/At22.x.asc b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/At22.x.asc
new file mode 100644
index 0000000..b29f86e
--- /dev/null
+++ b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/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.004268336421320435316
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0.004268336421318900953
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0.006425507527046668034
+0 0 0 0 0 3 3 3 0 0 0 0 6.47630097698008023e-17
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 -0.005178451796059383924
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 -0.003008516424830001181
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 0.003008516424829808193
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 0.005178451796060783846
+0 0 0 0 0 8 3 3 0 0.5 0 0 2.231331481982302972e-15
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 -0.006425507527047301208
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 -0.004268336421320435316
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 0.004268336421318900953
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 0.006425507527046668034
+0 0 0 0 0 13 3 3 0 1 0 0 6.47630097698008023e-17
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 -0.005178451796059383924
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 -0.003008516424830001181
+
+#
+
+8 0 0 0 0 0 3 3 0.4000000000000000222 -0.3000000000000000444 0 0 -0.0007125399102615158917
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 -0.005160762982176536444
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 -0.002435743635481002218
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 0.003494993838469588956
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 0.005288977790008422657
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 -0.0002595800178459837289
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 -0.006275584725653923952
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 -0.003304407044015433316
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 0.004520215858359356853
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 0.005687865485530725282
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 -0.0007125399102615158917
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 -0.005160762982176536444
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 -0.002435743635481002218
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 0.003494993838469588956
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 0.005288977790008422657
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 -0.0002595800178459837289
+
+#
+
diff --git a/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/At23.x.asc b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/At23.x.asc
new file mode 100644
index 0000000..d2fc2bb
--- /dev/null
+++ b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/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.06305158118906066533
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 -0.06305158118905868081
+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.1373300779859494281
+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.05045863700046610001
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 0.1373300779859506493
+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.1575503876315905438
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 0.06305158118906066533
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 -0.06305158118905868081
+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.1373300779859494281
+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.178612370005353599
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 -0.1322950359885713412
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 -0.04180077443081987865
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 0.06037202504535348069
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 0.1435497680828091704
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 0.178751865327375109
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 0.1445030940570906919
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 0.04818045927518503635
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 -0.06940648582696526403
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 -0.1566810920061744716
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 -0.178612370005353599
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 -0.1322950359885713412
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 -0.04180077443081987865
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 0.06037202504535348069
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 0.1435497680828091704
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 0.178751865327375109
+
+#
+
diff --git a/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/At33.x.asc b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/At33.x.asc
new file mode 100644
index 0000000..6c038d6
--- /dev/null
+++ b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/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.004268336421320635676
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0.004268336421319317286
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 0.006425507527046951661
+0 0 0 0 0 3 3 3 0 0 0 0 3.561965537339044163e-15
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 -0.005178451796059275504
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 -0.003008516424829920516
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 0.003008516424829861969
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 0.005178451796061002421
+0 0 0 0 0 8 3 3 0 0.5 0 0 -9.328041381993927742e-16
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 -0.006425507527047273452
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 -0.004268336421320635676
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 0.004268336421319317286
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 0.006425507527046951661
+0 0 0 0 0 13 3 3 0 1 0 0 3.561965537339044163e-15
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 -0.005178451796059275504
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 -0.003008516424829920516
+
+#
+
+8 0 0 0 0 0 3 3 0.4000000000000000222 -0.3000000000000000444 0 0 -0.0007125399102603138368
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 -0.005160762982177298855
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 -0.002435743635472411434
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 0.003494993838459978588
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 0.005288977790009757526
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 -0.0002595800178393936229
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 -0.006275584725657551259
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 -0.00330440704403847001
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 0.004520215858353934107
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 0.005687865485535258982
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 -0.0007125399102603138368
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 -0.005160762982177298855
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 -0.002435743635472411434
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 0.003494993838459978588
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 0.005288977790009757526
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 -0.0002595800178393936229
+
+#
+
diff --git a/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/B1.x.asc b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/B1.x.asc
new file mode 100644
index 0000000..e5560f8
--- /dev/null
+++ b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/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
+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.6069632436271688025
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 0.1630957266545204898
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 -0.2731928188716389316
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 -0.5050643622439442426
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 -0.5711413346343185982
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 -0.5045457870271849998
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 -0.2508171915888172676
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 0.181729136160363014
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 0.590429349430324768
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 0.7802395471015641792
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 0.6069632436271688025
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 0.1630957266545204898
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 -0.2731928188716389316
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 -0.5050643622439442426
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 -0.5711413346343185982
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 -0.5045457870271849998
+
+#
+
diff --git a/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/B2.x.asc b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/B2.x.asc
new file mode 100644
index 0000000..02f6c2c
--- /dev/null
+++ b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/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
+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.606963243627200888
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 -0.1630957266545317585
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 0.2731928188715770922
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 0.5050643622439606739
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 0.5711413346343172659
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 0.5045457870272176404
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 0.250817191588794064
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 -0.1817291361603889932
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 -0.5904293494302357281
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 -0.7802395471015357575
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 -0.606963243627200888
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 -0.1630957266545317585
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 0.2731928188715770922
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 0.5050643622439606739
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 0.5711413346343172659
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 0.5045457870272176404
+
+#
+
diff --git a/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/B3.x.asc b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/B3.x.asc
new file mode 100644
index 0000000..d1ff705
--- /dev/null
+++ b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/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
+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.6069632436271757969
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 -0.163095726654491624
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 0.2731928188716145067
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 0.5050643622439497937
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 0.5711413346343399144
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 0.5045457870272201939
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 0.2508171915887750791
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 -0.1817291361604350675
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 -0.5904293494302607082
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 -0.7802395471015712847
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 -0.6069632436271757969
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 -0.163095726654491624
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 0.2731928188716145067
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 0.5050643622439497937
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 0.5711413346343399144
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 0.5045457870272201939
+
+#
+
diff --git a/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/Xt1.x.asc b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/Xt1.x.asc
new file mode 100644
index 0000000..378622b
--- /dev/null
+++ b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/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.1511973670841792461
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 0.151197367084179024
+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.3075250631768478571
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 0.1111590284029080333
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 -0.1111590284029082276
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 -0.3075250631768484677
+0 0 0 0 0 8 3 3 0 0.5 0 0 -0.4170539798141699173
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 -0.3718616479575357348
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 -0.1511973670841792461
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 0.151197367084179024
+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.3075250631768478571
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 0.1111590284029080333
+
+#
+
+8 0 0 0 0 0 3 3 0.4000000000000000222 -0.3000000000000000444 0 0 0.4012488239555952463
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 0.2828887598111066159
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 0.1027066046409054051
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 -0.09766154748612387859
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 -0.3043020784938538226
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 -0.4346003150185057118
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 -0.3773226198673161336
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 -0.1147259207470364278
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 0.1839325811565581392
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 0.3837833151281490052
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 0.4012488239555952463
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 0.2828887598111066159
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 0.1027066046409054051
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 -0.09766154748612387859
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 -0.3043020784938538226
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 -0.4346003150185057118
+
+#
+
diff --git a/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/Xt2.x.asc b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/Xt2.x.asc
new file mode 100644
index 0000000..59f56fe
--- /dev/null
+++ b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/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.1511973670841820216
+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.4170539798141695287
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 -0.3075250631768493559
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 -0.1111590284029094766
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 0.1111590284029082276
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 0.3075250631768484677
+0 0 0 0 0 8 3 3 0 0.5 0 0 0.4170539798141683629
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 0.371861647957536956
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 0.1511973670841820216
+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.4170539798141695287
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 -0.3075250631768493559
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 -0.1111590284029094766
+
+#
+
+8 0 0 0 0 0 3 3 0.4000000000000000222 -0.3000000000000000444 0 0 -0.4012488239556254443
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 -0.2828887598111180512
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 -0.1027066046409668698
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 0.09766154748614014336
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 0.3043020784938514911
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 0.4346003150185375197
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 0.3773226198672929854
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 0.1147259207470099907
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 -0.1839325811564693214
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 -0.3837833151281195843
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 -0.4012488239556254443
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 -0.2828887598111180512
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 -0.1027066046409668698
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 0.09766154748614014336
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 0.3043020784938514911
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 0.4346003150185375197
+
+#
+
diff --git a/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/Xt3.x.asc b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/Xt3.x.asc
new file mode 100644
index 0000000..919431a
--- /dev/null
+++ b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/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.1511973670841806616
+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.3718616479575346245
+0 0 0 0 0 3 3 3 0 0 0 0 -0.417053979814171083
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 -0.3075250631768494114
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 -0.1111590284029094766
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 0.1111590284029082276
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 0.3075250631768486897
+0 0 0 0 0 8 3 3 0 0.5 0 0 0.4170539798141699173
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 0.371861647957536956
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 0.1511973670841806616
+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.3718616479575346245
+0 0 0 0 0 13 3 3 0 1 0 0 -0.417053979814171083
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 -0.3075250631768494114
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 -0.1111590284029094766
+
+#
+
+8 0 0 0 0 0 3 3 0.4000000000000000222 -0.3000000000000000444 0 0 -0.4012488239556007974
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 -0.2828887598110778612
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 -0.1027066046409297884
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 0.09766154748612798642
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 0.3043020784938746948
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 0.4346003150185405173
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 0.3773226198672738896
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 0.114725920746964527
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 -0.1839325811564939683
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 -0.3837833151281553334
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 -0.4012488239556007974
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 -0.2828887598110778612
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 -0.1027066046409297884
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 0.09766154748612798642
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 0.3043020784938746948
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 0.4346003150185405173
+
+#
+
diff --git a/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/alpha.x.asc b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/alpha.x.asc
new file mode 100644
index 0000000..b6eefbf
--- /dev/null
+++ b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/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 0.9980589063876066369
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 0.9706568936512542933
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 0.9553679134699524234
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 0.9565020495124307853
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 0.9740773727389597791
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 1.003410094575072575
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 1.033936013876468829
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 1.052246517174679541
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 1.049903687691154941
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 1.028523291748868029
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 0.9980589063876066369
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 0.9706568936512542933
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 0.9553679134699524234
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 0.9565020495124307853
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 0.9740773727389597791
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 1.003410094575072575
+
+#
+
diff --git a/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/beta1.x.asc b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/beta1.x.asc
new file mode 100644
index 0000000..470df3b
--- /dev/null
+++ b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/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.0606803144130968683
+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.03605506065609135474
+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.05014061747197682412
+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.0606803144130968683
+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.03605506065609135474
+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.05014061747197682412
+
+#
+
+8 0 0 0 0 0 3 3 0.4000000000000000222 -0.3000000000000000444 0 0 -0.003000270656141820758
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 -0.03408577055200609496
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 -0.05137262302994852203
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 -0.0498930082321887014
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 -0.02936639887682687688
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 0.004959716902610489253
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 0.04026569007953065271
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 0.06109494438291401819
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 0.05763010083189162858
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 0.03211518918807057532
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 -0.003000270656141820758
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 -0.03408577055200609496
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 -0.05137262302994852203
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 -0.0498930082321887014
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 -0.02936639887682687688
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 0.004959716902610489253
+
+#
+
diff --git a/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/beta2.x.asc b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/beta2.x.asc
new file mode 100644
index 0000000..a439aa9
--- /dev/null
+++ b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/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.0606803144130968683
+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.03605506065609135474
+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.05014061747197682412
+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.0606803144130968683
+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.03605506065609135474
+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.05014061747197682412
+
+#
+
+8 0 0 0 0 0 3 3 0.4000000000000000222 -0.3000000000000000444 0 0 0.003000270656141980352
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 0.03408577055200720518
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 0.05137262302994956287
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 0.04989300823218954795
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 0.02936639887682769914
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 -0.004959716902609871692
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 -0.04026569007953191559
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 -0.06109494438291485086
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 -0.05763010083189281513
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 -0.03211518918807241413
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 0.003000270656141980352
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 0.03408577055200720518
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 0.05137262302994956287
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 0.04989300823218954795
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 0.02936639887682769914
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 -0.004959716902609871692
+
+#
+
diff --git a/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/beta3.x.asc b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/beta3.x.asc
new file mode 100644
index 0000000..3ad3f82
--- /dev/null
+++ b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/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.06068031441309688218
+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.03605506065609135474
+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.05014061747197683105
+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.06068031441309688218
+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.03605506065609135474
+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.05014061747197683105
+
+#
+
+8 0 0 0 0 0 3 3 0.4000000000000000222 -0.3000000000000000444 0 0 0.003000270656142778325
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 0.03408577055200739947
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 0.05137262302994967389
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 0.0498930082321889859
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 0.02936639887682604422
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 -0.004959716902611432943
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 -0.04026569007953163803
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 -0.06109494438291439289
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 -0.05763010083189344657
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 -0.03211518918807201167
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 0.003000270656142778325
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 0.03408577055200739947
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 0.05137262302994967389
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 0.0498930082321889859
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 0.02936639887682604422
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 -0.004959716902611432943
+
+#
+
diff --git a/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/cA.x.asc b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/cA.x.asc
new file mode 100644
index 0000000..bf57e33
--- /dev/null
+++ b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/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 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 7.888609052210118054e-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 4.336808689942017736e-19
+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 0
+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 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 7.888609052210118054e-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 4.336808689942017736e-19
+
+#
+
+8 0 0 0 0 0 3 3 0.4000000000000000222 -0.3000000000000000444 0 0 -9.345558876468554321e-10
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 2.872412379999189636e-09
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 -2.738833761346814999e-09
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 2.638699184067533343e-09
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 7.954604223578409794e-10
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 2.639043844023490626e-09
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 1.42642662664255182e-08
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 6.209825852317163442e-10
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 -3.516717970650229397e-09
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 -8.127358248205540647e-11
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 -9.345558876468554321e-10
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 2.872412379999189636e-09
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 -2.738833761346814999e-09
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 2.638699184067533343e-09
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 7.954604223578409794e-10
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 2.639043844023490626e-09
+
+#
+
diff --git a/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/cS.x.asc b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/cS.x.asc
new file mode 100644
index 0000000..4014b07
--- /dev/null
+++ b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/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_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/cXt1.x.asc b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/cXt1.x.asc
new file mode 100644
index 0000000..b7d1d90
--- /dev/null
+++ b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/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.37910516340156164e-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 2.429968119083136813e-17
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 1.240327285323417073e-16
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 -2.200930410145574001e-16
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 -6.199468022272114354e-16
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 -3.139849491518020841e-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 3.469446951953614189e-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.37910516340156164e-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 2.429968119083136813e-17
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 1.240327285323417073e-16
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 -2.200930410145574001e-16
+
+#
+
+8 0 0 0 0 0 3 3 0.4000000000000000222 -0.3000000000000000444 0 0 -0.00304859811620239278
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 -0.00531065819384858584
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 -0.007170159071319373752
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 -0.008349548922679755555
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 -0.000289032324064761835
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 0.004849881516337060244
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 0.005602743805277052812
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 -0.005531595799436806946
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 -0.001570735255511203528
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 -0.005122699589155144465
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 -0.00304859811620239278
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 -0.00531065819384858584
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 -0.007170159071319373752
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 -0.008349548922679755555
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 -0.000289032324064761835
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 0.004849881516337060244
+
+#
+
diff --git a/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/cXt2.x.asc b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/cXt2.x.asc
new file mode 100644
index 0000000..302bb1e
--- /dev/null
+++ b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/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 9.714451465470119729e-17
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 -7.216449660063517513e-16
+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 -1.11022302462515654e-16
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 6.106226635438360972e-16
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 9.992007221626408864e-16
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 6.938893903907228378e-16
+0 0 0 0 0 8 3 3 0 0.5 0 0 2.775557561562891351e-17
+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 9.714451465470119729e-17
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 -7.216449660063517513e-16
+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 -1.11022302462515654e-16
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 6.106226635438360972e-16
+
+#
+
+8 0 0 0 0 0 3 3 0.4000000000000000222 -0.3000000000000000444 0 0 0.00304859811621158161
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 0.00531065819384657356
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 0.007170159071348845836
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 0.00834954892265598464
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 0.0002890323240809788974
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 -0.004849881516359622058
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 -0.005602743805279752909
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 0.005531595799442880212
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 0.001570735255455049661
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 0.005122699589144408261
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 0.00304859811621158161
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 0.00531065819384657356
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 0.007170159071348845836
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 0.00834954892265598464
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 0.0002890323240809788974
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 -0.004849881516359622058
+
+#
+
diff --git a/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/cXt3.x.asc b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/cXt3.x.asc
new file mode 100644
index 0000000..a6f08c8
--- /dev/null
+++ b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/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 4.163336342344337027e-17
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 1.804112415015879378e-16
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 -1.082467449009527627e-15
+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 -5.551115123125782702e-17
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 1.526556658859590243e-16
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 9.645062526431047445e-16
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 3.053113317719180486e-16
+0 0 0 0 0 8 3 3 0 0.5 0 0 3.885780586188047891e-16
+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 4.163336342344337027e-17
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 1.804112415015879378e-16
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 -1.082467449009527627e-15
+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 -5.551115123125782702e-17
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 1.526556658859590243e-16
+
+#
+
+8 0 0 0 0 0 3 3 0.4000000000000000222 -0.3000000000000000444 0 0 0.003048598116204864761
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 0.005310658193834943974
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 0.00717015907133527336
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 0.008349548922683316943
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 0.0002890323240659076198
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 -0.004849881516361093103
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 -0.005602743805279891687
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 0.005531595799466840213
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 0.001570735255462807345
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 0.005122699589162726941
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 0.003048598116204864761
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 0.005310658193834943974
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 0.00717015907133527336
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 0.008349548922683316943
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 0.0002890323240659076198
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 -0.004849881516361093103
+
+#
+
diff --git a/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/gt11.x.asc b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/gt11.x.asc
new file mode 100644
index 0000000..45cd9ef
--- /dev/null
+++ b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/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.000364803038668038
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 1.000926567406855483
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 1.000926567406855483
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 1.000364803038667816
+0 0 0 0 0 8 3 3 0 0.5 0 0 0.999999999999999778
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 1.000405024681067401
+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.000926567406855483
+
+#
+
+8 0 0 0 0 0 3 3 0.4000000000000000222 -0.3000000000000000444 0 0 1.000006211245137777
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 1.000379075942356977
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 1.000875752678576314
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 1.000878540127321026
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 1.000351750849533872
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 0.9999908674068276326
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 1.000443883478746576
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 1.001114356608281186
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 1.001012682091512174
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 1.000321084232208113
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 1.000006211245137777
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 1.000379075942356977
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 1.000875752678576314
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 1.000878540127321026
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 1.000351750849533872
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 0.9999908674068276326
+
+#
+
diff --git a/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/gt12.x.asc b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/gt12.x.asc
new file mode 100644
index 0000000..ec693ba
--- /dev/null
+++ b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/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.01922334923201163975
+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.01999248696063079395
+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.01922334923201163975
+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.00199865256694882476
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 -0.01990029692405023698
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 -0.03003574962800484305
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 -0.02983446977585595128
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 -0.01877444888084781049
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 0.000725559381049303842
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 0.02126231818304295113
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 0.03319198038285065683
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 0.03156836608321724608
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 0.01783322649538873414
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 -0.00199865256694882476
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 -0.01990029692405023698
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 -0.03003574962800484305
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 -0.02983446977585595128
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 -0.01877444888084781049
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 0.000725559381049303842
+
+#
+
diff --git a/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/gt13.x.asc b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/gt13.x.asc
new file mode 100644
index 0000000..fb2e277
--- /dev/null
+++ b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/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.01922334923201155649
+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.01999248696063087721
+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.01922334923201155649
+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.001998652566950389481
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 -0.01990029692404979983
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 -0.0300357496280041214
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 -0.0298344697758561421
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 -0.01877444888084684252
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 0.0007255593810504279428
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 0.02126231818304459564
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 0.03319198038285065683
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 0.03156836608321704485
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 0.01783322649538795698
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 -0.001998652566950389481
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 -0.01990029692404979983
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 -0.0300357496280041214
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 -0.0298344697758561421
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 -0.01877444888084684252
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 0.0007255593810504279428
+
+#
+
diff --git a/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/gt22.x.asc b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/gt22.x.asc
new file mode 100644
index 0000000..b1614db
--- /dev/null
+++ b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/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.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.000405024681067623
+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.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.000006211245136889
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 1.000379075942355644
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 1.000875752678576758
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 1.000878540127319027
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 1.000351750849531207
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 0.9999908674068238579
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 1.000443883478743023
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 1.001114356608281186
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 1.001012682091513284
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 1.000321084232206337
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 1.000006211245136889
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 1.000379075942355644
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 1.000875752678576758
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 1.000878540127319027
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 1.000351750849531207
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 0.9999908674068238579
+
+#
+
diff --git a/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/gt23.x.asc b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/gt23.x.asc
new file mode 100644
index 0000000..21c32de
--- /dev/null
+++ b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/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.01922334923201163975
+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.01999248696063079395
+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.01922334923201163975
+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.00199865256694876231
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 0.01990029692405028555
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 0.03003574962800512754
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 0.02983446977585509086
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 0.01877444888084521188
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 -0.0007255593810517602105
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 -0.02126231818304594873
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 -0.03319198038285234992
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 -0.03156836608321831467
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 -0.01783322649538982355
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 0.00199865256694876231
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 0.01990029692405028555
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 0.03003574962800512754
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 0.02983446977585509086
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 0.01877444888084521188
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 -0.0007255593810517602105
+
+#
+
diff --git a/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/gt33.x.asc b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/gt33.x.asc
new file mode 100644
index 0000000..0299a71
--- /dev/null
+++ b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/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.000405024681067623
+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.000006211245137999
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 1.000379075942358087
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 1.000875752678576758
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 1.000878540127319694
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 1.000351750849532761
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 0.9999908674068274106
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 1.000443883478746354
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 1.001114356608282074
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 1.001012682091513728
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 1.000321084232207003
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 1.000006211245137999
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 1.000379075942358087
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 1.000875752678576758
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 1.000878540127319694
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 1.000351750849532761
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 0.9999908674068274106
+
+#
+
diff --git a/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/gxx.x.asc b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/gxx.x.asc
new file mode 100644
index 0000000..fafead7
--- /dev/null
+++ b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/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.031701883876505077
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 1.031701883876505077
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 1.019592841743082401
+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 0.9804071582569174881
+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.031701883876505077
+
+#
+
+8 0 0 0 0 0 3 3 0.4000000000000000222 -0.3000000000000000444 0 0 1.001313729283590748
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 1.019540829095821
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 1.030952511782250669
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 1.031330033797747348
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 1.019611251948508768
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 0.9995283723093159045
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 0.9795934491462072735
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 0.9685457244112419817
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 0.9699538813349916078
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 0.9824645342773518086
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 1.001313729283590748
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 1.019540829095821
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 1.030952511782250669
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 1.031330033797747348
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 1.019611251948508768
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 0.9995283723093159045
+
+#
+
diff --git a/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/kxx.x.asc b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/kxx.x.asc
new file mode 100644
index 0000000..c6ceee6
--- /dev/null
+++ b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/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.05892153831746866494
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 -0.05892153831746028969
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 -0.151252460053295873
+0 0 0 0 0 3 3 3 0 0 0 0 -0.1813805949244536031
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 -0.1426086965759293668
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 -0.05356058938639057104
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 0.0535605893863894747
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 0.1426086965759309211
+0 0 0 0 0 8 3 3 0 0.5 0 0 0.1813805949244449156
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 0.1512524600532957897
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 0.05892153831746866494
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 -0.05892153831746028969
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 -0.151252460053295873
+0 0 0 0 0 13 3 3 0 1 0 0 -0.1813805949244536031
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 -0.1426086965759293668
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 -0.05356058938639057104
+
+#
+
+8 0 0 0 0 0 3 3 0.4000000000000000222 -0.3000000000000000444 0 0 -0.1792693010741177873
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 -0.1380368346837639593
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 -0.04709340062365281743
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 0.06097230702826346438
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 0.1496638064204420526
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 0.1834951388216642665
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 0.1423559811817424747
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 0.04397018407106294269
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 -0.06910285002935810661
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 -0.1536110826447788513
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 -0.1792693010741177873
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 -0.1380368346837639593
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 -0.04709340062365281743
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 0.06097230702826346438
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 0.1496638064204420526
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 0.1834951388216642665
+
+#
+
diff --git a/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/phi.x.asc b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/phi.x.asc
new file mode 100644
index 0000000..145f685
--- /dev/null
+++ b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/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.9905258471169020584
+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.010147272253753226
+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.9905258471169020584
+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.9993468854369929044
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 0.9905581794249136429
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 0.9853051517093660561
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 0.9851261697710984588
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 0.9905104426875845913
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 1.000231329906201783
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 1.010586356204311587
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 1.016674148316262905
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 1.015884296885046112
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 1.00904670934115237
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 0.9993468854369929044
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 0.9905581794249136429
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 0.9853051517093660561
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 0.9851261697710984588
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 0.9905104426875845913
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 1.000231329906201783
+
+#
+
diff --git a/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/trK.x.asc b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/trK.x.asc
new file mode 100644
index 0000000..d343fd5
--- /dev/null
+++ b/ML_BSSN_Test/test/ML_BSSN_sgw3d_harmonic/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.1953428212594302549
+0 0 0 0 0 1 3 3 0 -0.2000000000000000111 0 0 -0.1953428212594119084
+0 0 0 0 0 2 3 3 0 -0.1000000000000000056 0 0 -0.4820941641502676789
+0 0 0 0 0 3 3 3 0 0 0 0 -0.5441417847733499569
+0 0 0 0 0 4 3 3 0 0.1000000000000000056 0 0 -0.4040751484217694478
+0 0 0 0 0 5 3 3 0 0.2000000000000000111 0 0 -0.1467271837380049737
+0 0 0 0 0 6 3 3 0 0.3000000000000000444 0 0 0.1467271837380012545
+0 0 0 0 0 7 3 3 0 0.4000000000000000222 0 0 0.404075148421782715
+0 0 0 0 0 8 3 3 0 0.5 0 0 0.5441417847733385216
+0 0 0 0 0 9 3 3 0 0.6000000000000000888 0 0 0.4820941641502642927
+0 0 0 0 0 10 3 3 0 0.7000000000000000666 0 0 0.1953428212594302549
+0 0 0 0 0 11 3 3 0 0.8000000000000000444 0 0 -0.1953428212594119084
+0 0 0 0 0 12 3 3 0 0.9000000000000000222 0 0 -0.4820941641502676789
+0 0 0 0 0 13 3 3 0 1 0 0 -0.5441417847733499569
+0 0 0 0 0 14 3 3 0 1.100000000000000089 0 0 -0.4040751484217694478
+0 0 0 0 0 15 3 3 0 1.200000000000000178 0 0 -0.1467271837380049737
+
+#
+
+8 0 0 0 0 0 3 3 0.4000000000000000222 -0.3000000000000000444 0 0 -0.5349646897539648283
+8 0 0 0 0 1 3 3 0.4000000000000000222 -0.2000000000000000111 0 0 -0.3906971141861915187
+8 0 0 0 0 2 3 3 0.4000000000000000222 -0.1000000000000000056 0 0 -0.1297376784234087477
+8 0 0 0 0 3 3 3 0.4000000000000000222 0 0 0 0.1668844412921354214
+8 0 0 0 0 4 3 3 0.4000000000000000222 0.1000000000000000056 0 0 0.4244941425440335037
+8 0 0 0 0 5 3 3 0.4000000000000000222 0.2000000000000000111 0 0 0.5515239102999346388
+8 0 0 0 0 6 3 3 0.4000000000000000222 0.3000000000000000444 0 0 0.4547828757697249813
+8 0 0 0 0 7 3 3 0.4000000000000000222 0.4000000000000000222 0 0 0.1460966365414340939
+8 0 0 0 0 8 3 3 0.4000000000000000222 0.5 0 0 -0.2272772453840591345
+8 0 0 0 0 9 3 3 0.4000000000000000222 0.6000000000000000888 0 0 -0.4861165248897810764
+8 0 0 0 0 10 3 3 0.4000000000000000222 0.7000000000000000666 0 0 -0.5349646897539648283
+8 0 0 0 0 11 3 3 0.4000000000000000222 0.8000000000000000444 0 0 -0.3906971141861915187
+8 0 0 0 0 12 3 3 0.4000000000000000222 0.9000000000000000222 0 0 -0.1297376784234087477
+8 0 0 0 0 13 3 3 0.4000000000000000222 1 0 0 0.1668844412921354214
+8 0 0 0 0 14 3 3 0.4000000000000000222 1.100000000000000089 0 0 0.4244941425440335037
+8 0 0 0 0 15 3 3 0.4000000000000000222 1.200000000000000178 0 0 0.5515239102999346388
+
+#
+
diff --git a/ML_BSSN_UPW/configuration.ccl b/ML_BSSN_UPW/configuration.ccl
index 8e2c3c5..bdbc1bd 100644
--- a/ML_BSSN_UPW/configuration.ccl
+++ b/ML_BSSN_UPW/configuration.ccl
@@ -2,3 +2,4 @@
REQUIRES GenericFD
REQUIRES LoopControl
+REQUIRES Vectors
diff --git a/ML_BSSN_UPW/interface.ccl b/ML_BSSN_UPW/interface.ccl
index 3073f6d..4a464fb 100644
--- a/ML_BSSN_UPW/interface.ccl
+++ b/ML_BSSN_UPW/interface.ccl
@@ -11,6 +11,7 @@ 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
diff --git a/ML_BSSN_UPW/param.ccl b/ML_BSSN_UPW/param.ccl
index 90d9def..180d131 100644
--- a/ML_BSSN_UPW/param.ccl
+++ b/ML_BSSN_UPW/param.ccl
@@ -37,11 +37,15 @@ EXTENDS CCTK_KEYWORD dtshift_evolution_method "dtshift_evolution_method"
shares: GenericFD
+USES CCTK_STRING jacobian_group
+USES CCTK_STRING jacobian_derivative_group
+USES CCTK_INT jacobian_identity_map
shares: MethodOfLines
USES CCTK_INT MoL_Num_Evolved_Vars
+USES CCTK_INT MoL_Num_ArrayEvolved_Vars
restricted:
CCTK_INT verbose "verbose" STEERABLE=ALWAYS
@@ -139,6 +143,18 @@ 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"
{
@@ -203,6 +219,12 @@ CCTK_INT ML_BSSN_UPW_MaxNumEvolvedVars "Number of evolved variables used by this
} 25
restricted:
+CCTK_INT ML_BSSN_UPW_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 :: ""
diff --git a/ML_BSSN_UPW/schedule.ccl b/ML_BSSN_UPW/schedule.ccl
index 7158d0d..a19a7de 100644
--- a/ML_BSSN_UPW/schedule.ccl
+++ b/ML_BSSN_UPW/schedule.ccl
@@ -340,7 +340,7 @@ if (CCTK_EQUALS(my_rhs_boundary_condition, "static"))
} "ML_BSSN_UPW_RHSStaticBoundary"
}
-schedule ML_BSSN_UPW_enforce IN MoL_PostStep BEFORE ML_BSSN_UPW_SelectBoundConds
+schedule ML_BSSN_UPW_enforce IN MoL_PostStepModify
{
LANG: C
} "ML_BSSN_UPW_enforce"
@@ -388,7 +388,7 @@ if (CCTK_EQUALS(dt_lapse_shift_method, "noLapseShiftAdvection"))
} "ML_BSSN_UPW_convertToADMBaseFakeDtLapseShift"
}
-schedule group ML_BSSN_UPW_constraints1_group in MoL_PseudoEvolution
+schedule group ML_BSSN_UPW_constraints1_group in MoL_PseudoEvolution after MoL_PostStep
{
# no language specified
} "ML_BSSN_UPW_constraints1"
@@ -415,17 +415,12 @@ schedule group ML_BSSN_UPW_constraints1_bc_group in ML_BSSN_UPW_constraints1_gro
# no language specified
} "ML_BSSN_UPW_constraints1"
-schedule group ML_BSSN_UPW_constraints1_bc_group at CCTK_POSTRESTRICT
+schedule group ML_BSSN_UPW_constraints1_bc_group in MoL_PseudoEvolutionBoundaries after MoL_PostStep
{
# no language specified
} "ML_BSSN_UPW_constraints1"
-schedule group ML_BSSN_UPW_constraints1_bc_group at CCTK_POSTRESTRICTINITIAL
-{
- # no language specified
-} "ML_BSSN_UPW_constraints1"
-
-schedule group ML_BSSN_UPW_constraints2_group in MoL_PseudoEvolution
+schedule group ML_BSSN_UPW_constraints2_group in MoL_PseudoEvolution after MoL_PostStep
{
# no language specified
} "ML_BSSN_UPW_constraints2"
@@ -455,12 +450,7 @@ schedule group ML_BSSN_UPW_constraints2_bc_group in ML_BSSN_UPW_constraints2_gro
# no language specified
} "ML_BSSN_UPW_constraints2"
-schedule group ML_BSSN_UPW_constraints2_bc_group at CCTK_POSTRESTRICT
-{
- # no language specified
-} "ML_BSSN_UPW_constraints2"
-
-schedule group ML_BSSN_UPW_constraints2_bc_group at CCTK_POSTRESTRICTINITIAL
+schedule group ML_BSSN_UPW_constraints2_bc_group in MoL_PseudoEvolutionBoundaries after MoL_PostStep
{
# no language specified
} "ML_BSSN_UPW_constraints2"
diff --git a/ML_BSSN_UPW/src/Differencing.h b/ML_BSSN_UPW/src/Differencing.h
index 23a98cd..96a0554 100644
--- a/ML_BSSN_UPW/src/Differencing.h
+++ b/ML_BSSN_UPW/src/Differencing.h
@@ -1,324 +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 PDstandardNth1(u) ((-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]))*p1o12dx)
+# 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 PDstandardNth1(u) (PDstandardNth1_impl(u,p1o12dx,cdj,cdk))
-static CCTK_REAL PDstandardNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]))*p1o12dx;
+ 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 PDstandardNth2(u) ((-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]))*p1o12dy)
+# 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 PDstandardNth2(u) (PDstandardNth2_impl(u,p1o12dy,cdj,cdk))
-static CCTK_REAL PDstandardNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]))*p1o12dy;
+ 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 PDstandardNth3(u) ((-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]))*p1o12dz)
+# 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 PDstandardNth3(u) (PDstandardNth3_impl(u,p1o12dz,cdj,cdk))
-static CCTK_REAL PDstandardNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]))*p1o12dz;
+ 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 PDstandardNth11(u) ((30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]))*pm1o12dx2)
+# 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 PDstandardNth11(u) (PDstandardNth11_impl(u,pm1o12dx2,cdj,cdk))
-static CCTK_REAL PDstandardNth11_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dx2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth11_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dx2, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]))*pm1o12dx2;
+ 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 PDstandardNth22(u) ((30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]))*pm1o12dy2)
+# 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 PDstandardNth22(u) (PDstandardNth22_impl(u,pm1o12dy2,cdj,cdk))
-static CCTK_REAL PDstandardNth22_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dy2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth22_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dy2, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]))*pm1o12dy2;
+ 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 PDstandardNth33(u) ((30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]))*pm1o12dz2)
+# 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 PDstandardNth33(u) (PDstandardNth33_impl(u,pm1o12dz2,cdj,cdk))
-static CCTK_REAL PDstandardNth33_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dz2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth33_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dz2, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]))*pm1o12dz2;
+ 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 PDstandardNth12(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-1)+cdk*(0)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(2)+cdk*(0)]))*p1o144dxdy)
+# 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 PDstandardNth12(u) (PDstandardNth12_impl(u,p1o144dxdy,cdj,cdk))
-static CCTK_REAL PDstandardNth12_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth12_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-1)+cdk*(0)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(2)+cdk*(0)]))*p1o144dxdy;
+ 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 PDstandardNth13(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(2)]))*p1o144dxdz)
+# 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 PDstandardNth13(u) (PDstandardNth13_impl(u,p1o144dxdz,cdj,cdk))
-static CCTK_REAL PDstandardNth13_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth13_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(2)]))*p1o144dxdz;
+ 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 PDstandardNth21(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-1)+cdk*(0)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(2)+cdk*(0)]))*p1o144dxdy)
+# 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 PDstandardNth21(u) (PDstandardNth21_impl(u,p1o144dxdy,cdj,cdk))
-static CCTK_REAL PDstandardNth21_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth21_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-1)+cdk*(0)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(2)+cdk*(0)]))*p1o144dxdy;
+ 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 PDstandardNth23(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(2)]))*p1o144dydz)
+# 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 PDstandardNth23(u) (PDstandardNth23_impl(u,p1o144dydz,cdj,cdk))
-static CCTK_REAL PDstandardNth23_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dydz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth23_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dydz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(2)]))*p1o144dydz;
+ 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 PDstandardNth31(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(2)]))*p1o144dxdz)
+# 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 PDstandardNth31(u) (PDstandardNth31_impl(u,p1o144dxdz,cdj,cdk))
-static CCTK_REAL PDstandardNth31_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth31_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(2)]))*p1o144dxdz;
+ 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 PDstandardNth32(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(2)]))*p1o144dydz)
+# 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 PDstandardNth32(u) (PDstandardNth32_impl(u,p1o144dydz,cdj,cdk))
-static CCTK_REAL PDstandardNth32_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dydz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDstandardNth32_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dydz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(2)]))*p1o144dydz;
+ 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 PDdissipationNth1(u) ((-20*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 15*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)])) - 6*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(0)]))*p1o64dx)
+# 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 PDdissipationNth1(u) (PDdissipationNth1_impl(u,p1o64dx,cdj,cdk))
-static CCTK_REAL PDdissipationNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o64dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDdissipationNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o64dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-20*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 15*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)])) - 6*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(0)]))*p1o64dx;
+ 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 PDdissipationNth2(u) ((-20*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 15*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)])) - 6*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(0)]))*p1o64dy)
+# 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 PDdissipationNth2(u) (PDdissipationNth2_impl(u,p1o64dy,cdj,cdk))
-static CCTK_REAL PDdissipationNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o64dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDdissipationNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o64dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-20*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 15*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)])) - 6*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(0)]))*p1o64dy;
+ 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 PDdissipationNth3(u) ((-20*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 15*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)])) - 6*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(3)]))*p1o64dz)
+# 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 PDdissipationNth3(u) (PDdissipationNth3_impl(u,p1o64dz,cdj,cdk))
-static CCTK_REAL PDdissipationNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o64dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDdissipationNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o64dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-20*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 15*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)])) - 6*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(3)]))*p1o64dz;
+ 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 PDupwindNth1(u) ((-10*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(2*dir1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3*dir1)+cdj*(0)+cdk*(0)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-dir1)+cdj*(0)+cdk*(0)]) + 18*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(dir1)+cdj*(0)+cdk*(0)]))*p1o12dx*dir1)
+# 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 PDupwindNth1(u) (PDupwindNth1_impl(u,p1o12dx,cdj,cdk,dir1,dir2,dir3))
-static CCTK_REAL PDupwindNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dx, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDupwindNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dx, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3)
+# 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 (-10*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(2*dir1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3*dir1)+cdj*(0)+cdk*(0)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-dir1)+cdj*(0)+cdk*(0)]) + 18*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(dir1)+cdj*(0)+cdk*(0)]))*p1o12dx*dir1;
+ 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 PDupwindNth2(u) ((-10*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2*dir2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3*dir2)+cdk*(0)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-dir2)+cdk*(0)]) + 18*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(dir2)+cdk*(0)]))*p1o12dy*dir2)
+# 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 PDupwindNth2(u) (PDupwindNth2_impl(u,p1o12dy,cdj,cdk,dir1,dir2,dir3))
-static CCTK_REAL PDupwindNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dy, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDupwindNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dy, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3)
+# 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 (-10*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2*dir2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3*dir2)+cdk*(0)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-dir2)+cdk*(0)]) + 18*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(dir2)+cdk*(0)]))*p1o12dy*dir2;
+ 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 PDupwindNth3(u) ((-10*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2*dir3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(3*dir3)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-dir3)]) + 18*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(dir3)]))*p1o12dz*dir3)
+# 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 PDupwindNth3(u) (PDupwindNth3_impl(u,p1o12dz,cdj,cdk,dir1,dir2,dir3))
-static CCTK_REAL PDupwindNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dz, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDupwindNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dz, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3)
+# 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 (-10*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2*dir3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(3*dir3)]) - 3*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-dir3)]) + 18*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(dir3)]))*p1o12dz*dir3;
+ 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) ((-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(dir1)+cdj*(0)+cdk*(0)]))*p1odx*dir1)
+# 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 PDonesided1(u) (PDonesided1_impl(u,p1odx,cdj,cdk,dir1,dir2,dir3))
-static CCTK_REAL PDonesided1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1odx, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDonesided1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1odx, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3)
+# 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 (-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(dir1)+cdj*(0)+cdk*(0)]))*p1odx*dir1;
+ 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 PDonesided2(u) ((-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(dir2)+cdk*(0)]))*p1ody*dir2)
+# 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 PDonesided2(u) (PDonesided2_impl(u,p1ody,cdj,cdk,dir1,dir2,dir3))
-static CCTK_REAL PDonesided2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1ody, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDonesided2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1ody, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3)
+# 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 (-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(dir2)+cdk*(0)]))*p1ody*dir2;
+ 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 PDonesided3(u) ((-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(dir3)]))*p1odz*dir3)
+# 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 PDonesided3(u) (PDonesided3_impl(u,p1odz,cdj,cdk,dir1,dir2,dir3))
-static CCTK_REAL PDonesided3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1odz, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDonesided3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1odz, ptrdiff_t const cdj, ptrdiff_t const cdk, ptrdiff_t const dir1, ptrdiff_t const dir2, ptrdiff_t const dir3)
+# 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 (-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(dir3)]))*p1odz*dir3;
+ 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 PDupwindNthAnti1(u) ((-21*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + 21*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)]) + 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) - 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(0)]))*p1o24dx)
+# 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 PDupwindNthAnti1(u) (PDupwindNthAnti1_impl(u,p1o24dx,cdj,cdk))
-static CCTK_REAL PDupwindNthAnti1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o24dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDupwindNthAnti1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o24dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-21*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + 21*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)]) + 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) - 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(0)]))*p1o24dx;
+ 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 PDupwindNthSymm1(u) ((-20*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 15*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)])) - 6*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(0)]))*p1o24dx)
+# 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 PDupwindNthSymm1(u) (PDupwindNthSymm1_impl(u,p1o24dx,cdj,cdk))
-static CCTK_REAL PDupwindNthSymm1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o24dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDupwindNthSymm1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o24dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-20*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 15*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)])) - 6*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-3)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(3)+cdj*(0)+cdk*(0)]))*p1o24dx;
+ 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 PDupwindNthAnti2(u) ((-21*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + 21*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)]) + 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) - 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(0)]))*p1o24dy)
+# 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 PDupwindNthAnti2(u) (PDupwindNthAnti2_impl(u,p1o24dy,cdj,cdk))
-static CCTK_REAL PDupwindNthAnti2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o24dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDupwindNthAnti2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o24dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-21*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + 21*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)]) + 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) - 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(0)]))*p1o24dy;
+ 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 PDupwindNthSymm2(u) ((-20*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 15*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)])) - 6*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(0)]))*p1o24dy)
+# 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 PDupwindNthSymm2(u) (PDupwindNthSymm2_impl(u,p1o24dy,cdj,cdk))
-static CCTK_REAL PDupwindNthSymm2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o24dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDupwindNthSymm2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o24dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-20*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 15*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)])) - 6*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-3)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(3)+cdk*(0)]))*p1o24dy;
+ 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 PDupwindNthAnti3(u) ((-21*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + 21*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)]) + 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) - 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(3)]))*p1o24dz)
+# 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 PDupwindNthAnti3(u) (PDupwindNthAnti3_impl(u,p1o24dz,cdj,cdk))
-static CCTK_REAL PDupwindNthAnti3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o24dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDupwindNthAnti3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o24dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-21*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + 21*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)]) + 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) - 6*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(3)]))*p1o24dz;
+ 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 PDupwindNthSymm3(u) ((-20*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 15*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)])) - 6*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(3)]))*p1o24dz)
+# 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 PDupwindNthSymm3(u) (PDupwindNthSymm3_impl(u,p1o24dz,cdj,cdk))
-static CCTK_REAL PDupwindNthSymm3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o24dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
-static CCTK_REAL PDupwindNthSymm3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o24dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
+# 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 (-20*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + 15*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)])) - 6*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-3)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(3)]))*p1o24dz;
+ 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_BSSN_UPW/src/ML_BSSN_UPW_Advect.cc b/ML_BSSN_UPW/src/ML_BSSN_UPW_Advect.cc
index de9caf2..132f6d2 100644
--- a/ML_BSSN_UPW/src/ML_BSSN_UPW_Advect.cc
+++ b/ML_BSSN_UPW/src/ML_BSSN_UPW_Advect.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_UPW_Advect_SelectBCs(CCTK_ARGUMENTS)
{
@@ -57,7 +58,7 @@ extern "C" void ML_BSSN_UPW_Advect_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_BSSN_UPW_Advect_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_UPW_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;
@@ -65,21 +66,6 @@ static void ML_BSSN_UPW_Advect_Body(cGH const * restrict const cctkGH, int const
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_UPW_Advect_Body");
- }
-
- if (cctk_iteration % ML_BSSN_UPW_Advect_calc_every != ML_BSSN_UPW_Advect_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN_UPW::ML_curv","ML_BSSN_UPW::ML_curvrhs","ML_BSSN_UPW::ML_dtlapse","ML_BSSN_UPW::ML_dtlapserhs","ML_BSSN_UPW::ML_dtshift","ML_BSSN_UPW::ML_dtshiftrhs","ML_BSSN_UPW::ML_Gamma","ML_BSSN_UPW::ML_Gammarhs","ML_BSSN_UPW::ML_lapse","ML_BSSN_UPW::ML_lapserhs","ML_BSSN_UPW::ML_log_confac","ML_BSSN_UPW::ML_log_confacrhs","ML_BSSN_UPW::ML_metric","ML_BSSN_UPW::ML_metricrhs","ML_BSSN_UPW::ML_shift","ML_BSSN_UPW::ML_shiftrhs","ML_BSSN_UPW::ML_trace_curv","ML_BSSN_UPW::ML_trace_curvrhs"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_UPW_Advect", 18, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_UPW_Advect", 3, 3, 3);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -89,107 +75,627 @@ static void ML_BSSN_UPW_Advect_Body(cGH const * restrict const cctkGH, int const
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const p1o24dx = 0.0416666666666666666666666666667*INV(dx);
- CCTK_REAL const p1o24dy = 0.0416666666666666666666666666667*INV(dy);
- CCTK_REAL const p1o24dz = 0.0416666666666666666666666666667*INV(dz);
- CCTK_REAL const p1o64dx = 0.015625*INV(dx);
- CCTK_REAL const p1o64dy = 0.015625*INV(dy);
- CCTK_REAL const p1o64dz = 0.015625*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_UPW_Advect,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_UPW_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 AL = A[index];
- CCTK_REAL alphaL = alpha[index];
- CCTK_REAL alpharhsL = alpharhs[index];
- CCTK_REAL ArhsL = Arhs[index];
- CCTK_REAL At11L = At11[index];
- CCTK_REAL At11rhsL = At11rhs[index];
- CCTK_REAL At12L = At12[index];
- CCTK_REAL At12rhsL = At12rhs[index];
- CCTK_REAL At13L = At13[index];
- CCTK_REAL At13rhsL = At13rhs[index];
- CCTK_REAL At22L = At22[index];
- CCTK_REAL At22rhsL = At22rhs[index];
- CCTK_REAL At23L = At23[index];
- CCTK_REAL At23rhsL = At23rhs[index];
- CCTK_REAL At33L = At33[index];
- CCTK_REAL At33rhsL = At33rhs[index];
- CCTK_REAL B1L = B1[index];
- CCTK_REAL B1rhsL = B1rhs[index];
- CCTK_REAL B2L = B2[index];
- CCTK_REAL B2rhsL = B2rhs[index];
- CCTK_REAL B3L = B3[index];
- CCTK_REAL B3rhsL = B3rhs[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta1rhsL = beta1rhs[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta2rhsL = beta2rhs[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL beta3rhsL = beta3rhs[index];
- CCTK_REAL gt11L = gt11[index];
- CCTK_REAL gt11rhsL = gt11rhs[index];
- CCTK_REAL gt12L = gt12[index];
- CCTK_REAL gt12rhsL = gt12rhs[index];
- CCTK_REAL gt13L = gt13[index];
- CCTK_REAL gt13rhsL = gt13rhs[index];
- CCTK_REAL gt22L = gt22[index];
- CCTK_REAL gt22rhsL = gt22rhs[index];
- CCTK_REAL gt23L = gt23[index];
- CCTK_REAL gt23rhsL = gt23rhs[index];
- CCTK_REAL gt33L = gt33[index];
- CCTK_REAL gt33rhsL = gt33rhs[index];
- CCTK_REAL phiL = phi[index];
- CCTK_REAL phirhsL = phirhs[index];
- CCTK_REAL trKL = trK[index];
- CCTK_REAL trKrhsL = trKrhs[index];
- CCTK_REAL Xt1L = Xt1[index];
- CCTK_REAL Xt1rhsL = Xt1rhs[index];
- CCTK_REAL Xt2L = Xt2[index];
- CCTK_REAL Xt2rhsL = Xt2rhs[index];
- CCTK_REAL Xt3L = Xt3[index];
- CCTK_REAL Xt3rhsL = Xt3rhs[index];
+ CCTK_REAL_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 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 PDupwindNth1A;
+ CCTK_REAL_VEC PDupwindNth2A;
+ CCTK_REAL_VEC PDupwindNth3A;
+ CCTK_REAL_VEC PDupwindNth1alpha;
+ CCTK_REAL_VEC PDupwindNth2alpha;
+ CCTK_REAL_VEC PDupwindNth3alpha;
+ CCTK_REAL_VEC PDupwindNth1At11;
+ CCTK_REAL_VEC PDupwindNth2At11;
+ CCTK_REAL_VEC PDupwindNth3At11;
+ CCTK_REAL_VEC PDupwindNth1At12;
+ CCTK_REAL_VEC PDupwindNth2At12;
+ CCTK_REAL_VEC PDupwindNth3At12;
+ CCTK_REAL_VEC PDupwindNth1At13;
+ CCTK_REAL_VEC PDupwindNth2At13;
+ CCTK_REAL_VEC PDupwindNth3At13;
+ CCTK_REAL_VEC PDupwindNth1At22;
+ CCTK_REAL_VEC PDupwindNth2At22;
+ CCTK_REAL_VEC PDupwindNth3At22;
+ CCTK_REAL_VEC PDupwindNth1At23;
+ CCTK_REAL_VEC PDupwindNth2At23;
+ CCTK_REAL_VEC PDupwindNth3At23;
+ CCTK_REAL_VEC PDupwindNth1At33;
+ CCTK_REAL_VEC PDupwindNth2At33;
+ CCTK_REAL_VEC PDupwindNth3At33;
+ CCTK_REAL_VEC PDupwindNth1B1;
+ CCTK_REAL_VEC PDupwindNth2B1;
+ CCTK_REAL_VEC PDupwindNth3B1;
+ CCTK_REAL_VEC PDupwindNth1B2;
+ CCTK_REAL_VEC PDupwindNth2B2;
+ CCTK_REAL_VEC PDupwindNth3B2;
+ CCTK_REAL_VEC PDupwindNth1B3;
+ CCTK_REAL_VEC PDupwindNth2B3;
+ CCTK_REAL_VEC PDupwindNth3B3;
+ CCTK_REAL_VEC PDupwindNth1beta1;
+ CCTK_REAL_VEC PDupwindNth2beta1;
+ CCTK_REAL_VEC PDupwindNth3beta1;
+ CCTK_REAL_VEC PDupwindNth1beta2;
+ CCTK_REAL_VEC PDupwindNth2beta2;
+ CCTK_REAL_VEC PDupwindNth3beta2;
+ CCTK_REAL_VEC PDupwindNth1beta3;
+ CCTK_REAL_VEC PDupwindNth2beta3;
+ CCTK_REAL_VEC PDupwindNth3beta3;
+ CCTK_REAL_VEC PDupwindNth1gt11;
+ CCTK_REAL_VEC PDupwindNth2gt11;
+ CCTK_REAL_VEC PDupwindNth3gt11;
+ CCTK_REAL_VEC PDupwindNth1gt12;
+ CCTK_REAL_VEC PDupwindNth2gt12;
+ CCTK_REAL_VEC PDupwindNth3gt12;
+ CCTK_REAL_VEC PDupwindNth1gt13;
+ CCTK_REAL_VEC PDupwindNth2gt13;
+ CCTK_REAL_VEC PDupwindNth3gt13;
+ CCTK_REAL_VEC PDupwindNth1gt22;
+ CCTK_REAL_VEC PDupwindNth2gt22;
+ CCTK_REAL_VEC PDupwindNth3gt22;
+ CCTK_REAL_VEC PDupwindNth1gt23;
+ CCTK_REAL_VEC PDupwindNth2gt23;
+ CCTK_REAL_VEC PDupwindNth3gt23;
+ CCTK_REAL_VEC PDupwindNth1gt33;
+ CCTK_REAL_VEC PDupwindNth2gt33;
+ CCTK_REAL_VEC PDupwindNth3gt33;
+ CCTK_REAL_VEC PDupwindNth1phi;
+ CCTK_REAL_VEC PDupwindNth2phi;
+ CCTK_REAL_VEC PDupwindNth3phi;
+ CCTK_REAL_VEC PDupwindNth1trK;
+ CCTK_REAL_VEC PDupwindNth2trK;
+ CCTK_REAL_VEC PDupwindNth3trK;
+ CCTK_REAL_VEC PDupwindNth1Xt1;
+ CCTK_REAL_VEC PDupwindNth2Xt1;
+ CCTK_REAL_VEC PDupwindNth3Xt1;
+ CCTK_REAL_VEC PDupwindNth1Xt2;
+ CCTK_REAL_VEC PDupwindNth2Xt2;
+ CCTK_REAL_VEC PDupwindNth3Xt2;
+ CCTK_REAL_VEC PDupwindNth1Xt3;
+ CCTK_REAL_VEC PDupwindNth2Xt3;
+ CCTK_REAL_VEC PDupwindNth3Xt3;
+
+ switch(fdOrder)
+ {
+ case 2:
+ PDupwindNth1A = PDupwindNthfdOrder21(&A[index]);
+ PDupwindNth2A = PDupwindNthfdOrder22(&A[index]);
+ PDupwindNth3A = PDupwindNthfdOrder23(&A[index]);
+ PDupwindNth1alpha = PDupwindNthfdOrder21(&alpha[index]);
+ PDupwindNth2alpha = PDupwindNthfdOrder22(&alpha[index]);
+ PDupwindNth3alpha = PDupwindNthfdOrder23(&alpha[index]);
+ PDupwindNth1At11 = PDupwindNthfdOrder21(&At11[index]);
+ PDupwindNth2At11 = PDupwindNthfdOrder22(&At11[index]);
+ PDupwindNth3At11 = PDupwindNthfdOrder23(&At11[index]);
+ PDupwindNth1At12 = PDupwindNthfdOrder21(&At12[index]);
+ PDupwindNth2At12 = PDupwindNthfdOrder22(&At12[index]);
+ PDupwindNth3At12 = PDupwindNthfdOrder23(&At12[index]);
+ PDupwindNth1At13 = PDupwindNthfdOrder21(&At13[index]);
+ PDupwindNth2At13 = PDupwindNthfdOrder22(&At13[index]);
+ PDupwindNth3At13 = PDupwindNthfdOrder23(&At13[index]);
+ PDupwindNth1At22 = PDupwindNthfdOrder21(&At22[index]);
+ PDupwindNth2At22 = PDupwindNthfdOrder22(&At22[index]);
+ PDupwindNth3At22 = PDupwindNthfdOrder23(&At22[index]);
+ PDupwindNth1At23 = PDupwindNthfdOrder21(&At23[index]);
+ PDupwindNth2At23 = PDupwindNthfdOrder22(&At23[index]);
+ PDupwindNth3At23 = PDupwindNthfdOrder23(&At23[index]);
+ PDupwindNth1At33 = PDupwindNthfdOrder21(&At33[index]);
+ PDupwindNth2At33 = PDupwindNthfdOrder22(&At33[index]);
+ PDupwindNth3At33 = PDupwindNthfdOrder23(&At33[index]);
+ PDupwindNth1B1 = PDupwindNthfdOrder21(&B1[index]);
+ PDupwindNth2B1 = PDupwindNthfdOrder22(&B1[index]);
+ PDupwindNth3B1 = PDupwindNthfdOrder23(&B1[index]);
+ PDupwindNth1B2 = PDupwindNthfdOrder21(&B2[index]);
+ PDupwindNth2B2 = PDupwindNthfdOrder22(&B2[index]);
+ PDupwindNth3B2 = PDupwindNthfdOrder23(&B2[index]);
+ PDupwindNth1B3 = PDupwindNthfdOrder21(&B3[index]);
+ PDupwindNth2B3 = PDupwindNthfdOrder22(&B3[index]);
+ PDupwindNth3B3 = PDupwindNthfdOrder23(&B3[index]);
+ PDupwindNth1beta1 = PDupwindNthfdOrder21(&beta1[index]);
+ PDupwindNth2beta1 = PDupwindNthfdOrder22(&beta1[index]);
+ PDupwindNth3beta1 = PDupwindNthfdOrder23(&beta1[index]);
+ PDupwindNth1beta2 = PDupwindNthfdOrder21(&beta2[index]);
+ PDupwindNth2beta2 = PDupwindNthfdOrder22(&beta2[index]);
+ PDupwindNth3beta2 = PDupwindNthfdOrder23(&beta2[index]);
+ PDupwindNth1beta3 = PDupwindNthfdOrder21(&beta3[index]);
+ PDupwindNth2beta3 = PDupwindNthfdOrder22(&beta3[index]);
+ PDupwindNth3beta3 = PDupwindNthfdOrder23(&beta3[index]);
+ PDupwindNth1gt11 = PDupwindNthfdOrder21(&gt11[index]);
+ PDupwindNth2gt11 = PDupwindNthfdOrder22(&gt11[index]);
+ PDupwindNth3gt11 = PDupwindNthfdOrder23(&gt11[index]);
+ PDupwindNth1gt12 = PDupwindNthfdOrder21(&gt12[index]);
+ PDupwindNth2gt12 = PDupwindNthfdOrder22(&gt12[index]);
+ PDupwindNth3gt12 = PDupwindNthfdOrder23(&gt12[index]);
+ PDupwindNth1gt13 = PDupwindNthfdOrder21(&gt13[index]);
+ PDupwindNth2gt13 = PDupwindNthfdOrder22(&gt13[index]);
+ PDupwindNth3gt13 = PDupwindNthfdOrder23(&gt13[index]);
+ PDupwindNth1gt22 = PDupwindNthfdOrder21(&gt22[index]);
+ PDupwindNth2gt22 = PDupwindNthfdOrder22(&gt22[index]);
+ PDupwindNth3gt22 = PDupwindNthfdOrder23(&gt22[index]);
+ PDupwindNth1gt23 = PDupwindNthfdOrder21(&gt23[index]);
+ PDupwindNth2gt23 = PDupwindNthfdOrder22(&gt23[index]);
+ PDupwindNth3gt23 = PDupwindNthfdOrder23(&gt23[index]);
+ PDupwindNth1gt33 = PDupwindNthfdOrder21(&gt33[index]);
+ PDupwindNth2gt33 = PDupwindNthfdOrder22(&gt33[index]);
+ PDupwindNth3gt33 = PDupwindNthfdOrder23(&gt33[index]);
+ PDupwindNth1phi = PDupwindNthfdOrder21(&phi[index]);
+ PDupwindNth2phi = PDupwindNthfdOrder22(&phi[index]);
+ PDupwindNth3phi = PDupwindNthfdOrder23(&phi[index]);
+ PDupwindNth1trK = PDupwindNthfdOrder21(&trK[index]);
+ PDupwindNth2trK = PDupwindNthfdOrder22(&trK[index]);
+ PDupwindNth3trK = PDupwindNthfdOrder23(&trK[index]);
+ PDupwindNth1Xt1 = PDupwindNthfdOrder21(&Xt1[index]);
+ PDupwindNth2Xt1 = PDupwindNthfdOrder22(&Xt1[index]);
+ PDupwindNth3Xt1 = PDupwindNthfdOrder23(&Xt1[index]);
+ PDupwindNth1Xt2 = PDupwindNthfdOrder21(&Xt2[index]);
+ PDupwindNth2Xt2 = PDupwindNthfdOrder22(&Xt2[index]);
+ PDupwindNth3Xt2 = PDupwindNthfdOrder23(&Xt2[index]);
+ PDupwindNth1Xt3 = PDupwindNthfdOrder21(&Xt3[index]);
+ PDupwindNth2Xt3 = PDupwindNthfdOrder22(&Xt3[index]);
+ PDupwindNth3Xt3 = PDupwindNthfdOrder23(&Xt3[index]);
+ break;
+
+ case 4:
+ PDupwindNth1A = PDupwindNthfdOrder41(&A[index]);
+ PDupwindNth2A = PDupwindNthfdOrder42(&A[index]);
+ PDupwindNth3A = PDupwindNthfdOrder43(&A[index]);
+ PDupwindNth1alpha = PDupwindNthfdOrder41(&alpha[index]);
+ PDupwindNth2alpha = PDupwindNthfdOrder42(&alpha[index]);
+ PDupwindNth3alpha = PDupwindNthfdOrder43(&alpha[index]);
+ PDupwindNth1At11 = PDupwindNthfdOrder41(&At11[index]);
+ PDupwindNth2At11 = PDupwindNthfdOrder42(&At11[index]);
+ PDupwindNth3At11 = PDupwindNthfdOrder43(&At11[index]);
+ PDupwindNth1At12 = PDupwindNthfdOrder41(&At12[index]);
+ PDupwindNth2At12 = PDupwindNthfdOrder42(&At12[index]);
+ PDupwindNth3At12 = PDupwindNthfdOrder43(&At12[index]);
+ PDupwindNth1At13 = PDupwindNthfdOrder41(&At13[index]);
+ PDupwindNth2At13 = PDupwindNthfdOrder42(&At13[index]);
+ PDupwindNth3At13 = PDupwindNthfdOrder43(&At13[index]);
+ PDupwindNth1At22 = PDupwindNthfdOrder41(&At22[index]);
+ PDupwindNth2At22 = PDupwindNthfdOrder42(&At22[index]);
+ PDupwindNth3At22 = PDupwindNthfdOrder43(&At22[index]);
+ PDupwindNth1At23 = PDupwindNthfdOrder41(&At23[index]);
+ PDupwindNth2At23 = PDupwindNthfdOrder42(&At23[index]);
+ PDupwindNth3At23 = PDupwindNthfdOrder43(&At23[index]);
+ PDupwindNth1At33 = PDupwindNthfdOrder41(&At33[index]);
+ PDupwindNth2At33 = PDupwindNthfdOrder42(&At33[index]);
+ PDupwindNth3At33 = PDupwindNthfdOrder43(&At33[index]);
+ PDupwindNth1B1 = PDupwindNthfdOrder41(&B1[index]);
+ PDupwindNth2B1 = PDupwindNthfdOrder42(&B1[index]);
+ PDupwindNth3B1 = PDupwindNthfdOrder43(&B1[index]);
+ PDupwindNth1B2 = PDupwindNthfdOrder41(&B2[index]);
+ PDupwindNth2B2 = PDupwindNthfdOrder42(&B2[index]);
+ PDupwindNth3B2 = PDupwindNthfdOrder43(&B2[index]);
+ PDupwindNth1B3 = PDupwindNthfdOrder41(&B3[index]);
+ PDupwindNth2B3 = PDupwindNthfdOrder42(&B3[index]);
+ PDupwindNth3B3 = PDupwindNthfdOrder43(&B3[index]);
+ PDupwindNth1beta1 = PDupwindNthfdOrder41(&beta1[index]);
+ PDupwindNth2beta1 = PDupwindNthfdOrder42(&beta1[index]);
+ PDupwindNth3beta1 = PDupwindNthfdOrder43(&beta1[index]);
+ PDupwindNth1beta2 = PDupwindNthfdOrder41(&beta2[index]);
+ PDupwindNth2beta2 = PDupwindNthfdOrder42(&beta2[index]);
+ PDupwindNth3beta2 = PDupwindNthfdOrder43(&beta2[index]);
+ PDupwindNth1beta3 = PDupwindNthfdOrder41(&beta3[index]);
+ PDupwindNth2beta3 = PDupwindNthfdOrder42(&beta3[index]);
+ PDupwindNth3beta3 = PDupwindNthfdOrder43(&beta3[index]);
+ PDupwindNth1gt11 = PDupwindNthfdOrder41(&gt11[index]);
+ PDupwindNth2gt11 = PDupwindNthfdOrder42(&gt11[index]);
+ PDupwindNth3gt11 = PDupwindNthfdOrder43(&gt11[index]);
+ PDupwindNth1gt12 = PDupwindNthfdOrder41(&gt12[index]);
+ PDupwindNth2gt12 = PDupwindNthfdOrder42(&gt12[index]);
+ PDupwindNth3gt12 = PDupwindNthfdOrder43(&gt12[index]);
+ PDupwindNth1gt13 = PDupwindNthfdOrder41(&gt13[index]);
+ PDupwindNth2gt13 = PDupwindNthfdOrder42(&gt13[index]);
+ PDupwindNth3gt13 = PDupwindNthfdOrder43(&gt13[index]);
+ PDupwindNth1gt22 = PDupwindNthfdOrder41(&gt22[index]);
+ PDupwindNth2gt22 = PDupwindNthfdOrder42(&gt22[index]);
+ PDupwindNth3gt22 = PDupwindNthfdOrder43(&gt22[index]);
+ PDupwindNth1gt23 = PDupwindNthfdOrder41(&gt23[index]);
+ PDupwindNth2gt23 = PDupwindNthfdOrder42(&gt23[index]);
+ PDupwindNth3gt23 = PDupwindNthfdOrder43(&gt23[index]);
+ PDupwindNth1gt33 = PDupwindNthfdOrder41(&gt33[index]);
+ PDupwindNth2gt33 = PDupwindNthfdOrder42(&gt33[index]);
+ PDupwindNth3gt33 = PDupwindNthfdOrder43(&gt33[index]);
+ PDupwindNth1phi = PDupwindNthfdOrder41(&phi[index]);
+ PDupwindNth2phi = PDupwindNthfdOrder42(&phi[index]);
+ PDupwindNth3phi = PDupwindNthfdOrder43(&phi[index]);
+ PDupwindNth1trK = PDupwindNthfdOrder41(&trK[index]);
+ PDupwindNth2trK = PDupwindNthfdOrder42(&trK[index]);
+ PDupwindNth3trK = PDupwindNthfdOrder43(&trK[index]);
+ PDupwindNth1Xt1 = PDupwindNthfdOrder41(&Xt1[index]);
+ PDupwindNth2Xt1 = PDupwindNthfdOrder42(&Xt1[index]);
+ PDupwindNth3Xt1 = PDupwindNthfdOrder43(&Xt1[index]);
+ PDupwindNth1Xt2 = PDupwindNthfdOrder41(&Xt2[index]);
+ PDupwindNth2Xt2 = PDupwindNthfdOrder42(&Xt2[index]);
+ PDupwindNth3Xt2 = PDupwindNthfdOrder43(&Xt2[index]);
+ PDupwindNth1Xt3 = PDupwindNthfdOrder41(&Xt3[index]);
+ PDupwindNth2Xt3 = PDupwindNthfdOrder42(&Xt3[index]);
+ PDupwindNth3Xt3 = PDupwindNthfdOrder43(&Xt3[index]);
+ break;
+
+ case 6:
+ PDupwindNth1A = PDupwindNthfdOrder61(&A[index]);
+ PDupwindNth2A = PDupwindNthfdOrder62(&A[index]);
+ PDupwindNth3A = PDupwindNthfdOrder63(&A[index]);
+ PDupwindNth1alpha = PDupwindNthfdOrder61(&alpha[index]);
+ PDupwindNth2alpha = PDupwindNthfdOrder62(&alpha[index]);
+ PDupwindNth3alpha = PDupwindNthfdOrder63(&alpha[index]);
+ PDupwindNth1At11 = PDupwindNthfdOrder61(&At11[index]);
+ PDupwindNth2At11 = PDupwindNthfdOrder62(&At11[index]);
+ PDupwindNth3At11 = PDupwindNthfdOrder63(&At11[index]);
+ PDupwindNth1At12 = PDupwindNthfdOrder61(&At12[index]);
+ PDupwindNth2At12 = PDupwindNthfdOrder62(&At12[index]);
+ PDupwindNth3At12 = PDupwindNthfdOrder63(&At12[index]);
+ PDupwindNth1At13 = PDupwindNthfdOrder61(&At13[index]);
+ PDupwindNth2At13 = PDupwindNthfdOrder62(&At13[index]);
+ PDupwindNth3At13 = PDupwindNthfdOrder63(&At13[index]);
+ PDupwindNth1At22 = PDupwindNthfdOrder61(&At22[index]);
+ PDupwindNth2At22 = PDupwindNthfdOrder62(&At22[index]);
+ PDupwindNth3At22 = PDupwindNthfdOrder63(&At22[index]);
+ PDupwindNth1At23 = PDupwindNthfdOrder61(&At23[index]);
+ PDupwindNth2At23 = PDupwindNthfdOrder62(&At23[index]);
+ PDupwindNth3At23 = PDupwindNthfdOrder63(&At23[index]);
+ PDupwindNth1At33 = PDupwindNthfdOrder61(&At33[index]);
+ PDupwindNth2At33 = PDupwindNthfdOrder62(&At33[index]);
+ PDupwindNth3At33 = PDupwindNthfdOrder63(&At33[index]);
+ PDupwindNth1B1 = PDupwindNthfdOrder61(&B1[index]);
+ PDupwindNth2B1 = PDupwindNthfdOrder62(&B1[index]);
+ PDupwindNth3B1 = PDupwindNthfdOrder63(&B1[index]);
+ PDupwindNth1B2 = PDupwindNthfdOrder61(&B2[index]);
+ PDupwindNth2B2 = PDupwindNthfdOrder62(&B2[index]);
+ PDupwindNth3B2 = PDupwindNthfdOrder63(&B2[index]);
+ PDupwindNth1B3 = PDupwindNthfdOrder61(&B3[index]);
+ PDupwindNth2B3 = PDupwindNthfdOrder62(&B3[index]);
+ PDupwindNth3B3 = PDupwindNthfdOrder63(&B3[index]);
+ PDupwindNth1beta1 = PDupwindNthfdOrder61(&beta1[index]);
+ PDupwindNth2beta1 = PDupwindNthfdOrder62(&beta1[index]);
+ PDupwindNth3beta1 = PDupwindNthfdOrder63(&beta1[index]);
+ PDupwindNth1beta2 = PDupwindNthfdOrder61(&beta2[index]);
+ PDupwindNth2beta2 = PDupwindNthfdOrder62(&beta2[index]);
+ PDupwindNth3beta2 = PDupwindNthfdOrder63(&beta2[index]);
+ PDupwindNth1beta3 = PDupwindNthfdOrder61(&beta3[index]);
+ PDupwindNth2beta3 = PDupwindNthfdOrder62(&beta3[index]);
+ PDupwindNth3beta3 = PDupwindNthfdOrder63(&beta3[index]);
+ PDupwindNth1gt11 = PDupwindNthfdOrder61(&gt11[index]);
+ PDupwindNth2gt11 = PDupwindNthfdOrder62(&gt11[index]);
+ PDupwindNth3gt11 = PDupwindNthfdOrder63(&gt11[index]);
+ PDupwindNth1gt12 = PDupwindNthfdOrder61(&gt12[index]);
+ PDupwindNth2gt12 = PDupwindNthfdOrder62(&gt12[index]);
+ PDupwindNth3gt12 = PDupwindNthfdOrder63(&gt12[index]);
+ PDupwindNth1gt13 = PDupwindNthfdOrder61(&gt13[index]);
+ PDupwindNth2gt13 = PDupwindNthfdOrder62(&gt13[index]);
+ PDupwindNth3gt13 = PDupwindNthfdOrder63(&gt13[index]);
+ PDupwindNth1gt22 = PDupwindNthfdOrder61(&gt22[index]);
+ PDupwindNth2gt22 = PDupwindNthfdOrder62(&gt22[index]);
+ PDupwindNth3gt22 = PDupwindNthfdOrder63(&gt22[index]);
+ PDupwindNth1gt23 = PDupwindNthfdOrder61(&gt23[index]);
+ PDupwindNth2gt23 = PDupwindNthfdOrder62(&gt23[index]);
+ PDupwindNth3gt23 = PDupwindNthfdOrder63(&gt23[index]);
+ PDupwindNth1gt33 = PDupwindNthfdOrder61(&gt33[index]);
+ PDupwindNth2gt33 = PDupwindNthfdOrder62(&gt33[index]);
+ PDupwindNth3gt33 = PDupwindNthfdOrder63(&gt33[index]);
+ PDupwindNth1phi = PDupwindNthfdOrder61(&phi[index]);
+ PDupwindNth2phi = PDupwindNthfdOrder62(&phi[index]);
+ PDupwindNth3phi = PDupwindNthfdOrder63(&phi[index]);
+ PDupwindNth1trK = PDupwindNthfdOrder61(&trK[index]);
+ PDupwindNth2trK = PDupwindNthfdOrder62(&trK[index]);
+ PDupwindNth3trK = PDupwindNthfdOrder63(&trK[index]);
+ PDupwindNth1Xt1 = PDupwindNthfdOrder61(&Xt1[index]);
+ PDupwindNth2Xt1 = PDupwindNthfdOrder62(&Xt1[index]);
+ PDupwindNth3Xt1 = PDupwindNthfdOrder63(&Xt1[index]);
+ PDupwindNth1Xt2 = PDupwindNthfdOrder61(&Xt2[index]);
+ PDupwindNth2Xt2 = PDupwindNthfdOrder62(&Xt2[index]);
+ PDupwindNth3Xt2 = PDupwindNthfdOrder63(&Xt2[index]);
+ PDupwindNth1Xt3 = PDupwindNthfdOrder61(&Xt3[index]);
+ PDupwindNth2Xt3 = PDupwindNthfdOrder62(&Xt3[index]);
+ PDupwindNth3Xt3 = PDupwindNthfdOrder63(&Xt3[index]);
+ break;
+
+ case 8:
+ PDupwindNth1A = PDupwindNthfdOrder81(&A[index]);
+ PDupwindNth2A = PDupwindNthfdOrder82(&A[index]);
+ PDupwindNth3A = PDupwindNthfdOrder83(&A[index]);
+ PDupwindNth1alpha = PDupwindNthfdOrder81(&alpha[index]);
+ PDupwindNth2alpha = PDupwindNthfdOrder82(&alpha[index]);
+ PDupwindNth3alpha = PDupwindNthfdOrder83(&alpha[index]);
+ PDupwindNth1At11 = PDupwindNthfdOrder81(&At11[index]);
+ PDupwindNth2At11 = PDupwindNthfdOrder82(&At11[index]);
+ PDupwindNth3At11 = PDupwindNthfdOrder83(&At11[index]);
+ PDupwindNth1At12 = PDupwindNthfdOrder81(&At12[index]);
+ PDupwindNth2At12 = PDupwindNthfdOrder82(&At12[index]);
+ PDupwindNth3At12 = PDupwindNthfdOrder83(&At12[index]);
+ PDupwindNth1At13 = PDupwindNthfdOrder81(&At13[index]);
+ PDupwindNth2At13 = PDupwindNthfdOrder82(&At13[index]);
+ PDupwindNth3At13 = PDupwindNthfdOrder83(&At13[index]);
+ PDupwindNth1At22 = PDupwindNthfdOrder81(&At22[index]);
+ PDupwindNth2At22 = PDupwindNthfdOrder82(&At22[index]);
+ PDupwindNth3At22 = PDupwindNthfdOrder83(&At22[index]);
+ PDupwindNth1At23 = PDupwindNthfdOrder81(&At23[index]);
+ PDupwindNth2At23 = PDupwindNthfdOrder82(&At23[index]);
+ PDupwindNth3At23 = PDupwindNthfdOrder83(&At23[index]);
+ PDupwindNth1At33 = PDupwindNthfdOrder81(&At33[index]);
+ PDupwindNth2At33 = PDupwindNthfdOrder82(&At33[index]);
+ PDupwindNth3At33 = PDupwindNthfdOrder83(&At33[index]);
+ PDupwindNth1B1 = PDupwindNthfdOrder81(&B1[index]);
+ PDupwindNth2B1 = PDupwindNthfdOrder82(&B1[index]);
+ PDupwindNth3B1 = PDupwindNthfdOrder83(&B1[index]);
+ PDupwindNth1B2 = PDupwindNthfdOrder81(&B2[index]);
+ PDupwindNth2B2 = PDupwindNthfdOrder82(&B2[index]);
+ PDupwindNth3B2 = PDupwindNthfdOrder83(&B2[index]);
+ PDupwindNth1B3 = PDupwindNthfdOrder81(&B3[index]);
+ PDupwindNth2B3 = PDupwindNthfdOrder82(&B3[index]);
+ PDupwindNth3B3 = PDupwindNthfdOrder83(&B3[index]);
+ PDupwindNth1beta1 = PDupwindNthfdOrder81(&beta1[index]);
+ PDupwindNth2beta1 = PDupwindNthfdOrder82(&beta1[index]);
+ PDupwindNth3beta1 = PDupwindNthfdOrder83(&beta1[index]);
+ PDupwindNth1beta2 = PDupwindNthfdOrder81(&beta2[index]);
+ PDupwindNth2beta2 = PDupwindNthfdOrder82(&beta2[index]);
+ PDupwindNth3beta2 = PDupwindNthfdOrder83(&beta2[index]);
+ PDupwindNth1beta3 = PDupwindNthfdOrder81(&beta3[index]);
+ PDupwindNth2beta3 = PDupwindNthfdOrder82(&beta3[index]);
+ PDupwindNth3beta3 = PDupwindNthfdOrder83(&beta3[index]);
+ PDupwindNth1gt11 = PDupwindNthfdOrder81(&gt11[index]);
+ PDupwindNth2gt11 = PDupwindNthfdOrder82(&gt11[index]);
+ PDupwindNth3gt11 = PDupwindNthfdOrder83(&gt11[index]);
+ PDupwindNth1gt12 = PDupwindNthfdOrder81(&gt12[index]);
+ PDupwindNth2gt12 = PDupwindNthfdOrder82(&gt12[index]);
+ PDupwindNth3gt12 = PDupwindNthfdOrder83(&gt12[index]);
+ PDupwindNth1gt13 = PDupwindNthfdOrder81(&gt13[index]);
+ PDupwindNth2gt13 = PDupwindNthfdOrder82(&gt13[index]);
+ PDupwindNth3gt13 = PDupwindNthfdOrder83(&gt13[index]);
+ PDupwindNth1gt22 = PDupwindNthfdOrder81(&gt22[index]);
+ PDupwindNth2gt22 = PDupwindNthfdOrder82(&gt22[index]);
+ PDupwindNth3gt22 = PDupwindNthfdOrder83(&gt22[index]);
+ PDupwindNth1gt23 = PDupwindNthfdOrder81(&gt23[index]);
+ PDupwindNth2gt23 = PDupwindNthfdOrder82(&gt23[index]);
+ PDupwindNth3gt23 = PDupwindNthfdOrder83(&gt23[index]);
+ PDupwindNth1gt33 = PDupwindNthfdOrder81(&gt33[index]);
+ PDupwindNth2gt33 = PDupwindNthfdOrder82(&gt33[index]);
+ PDupwindNth3gt33 = PDupwindNthfdOrder83(&gt33[index]);
+ PDupwindNth1phi = PDupwindNthfdOrder81(&phi[index]);
+ PDupwindNth2phi = PDupwindNthfdOrder82(&phi[index]);
+ PDupwindNth3phi = PDupwindNthfdOrder83(&phi[index]);
+ PDupwindNth1trK = PDupwindNthfdOrder81(&trK[index]);
+ PDupwindNth2trK = PDupwindNthfdOrder82(&trK[index]);
+ PDupwindNth3trK = PDupwindNthfdOrder83(&trK[index]);
+ PDupwindNth1Xt1 = PDupwindNthfdOrder81(&Xt1[index]);
+ PDupwindNth2Xt1 = PDupwindNthfdOrder82(&Xt1[index]);
+ PDupwindNth3Xt1 = PDupwindNthfdOrder83(&Xt1[index]);
+ PDupwindNth1Xt2 = PDupwindNthfdOrder81(&Xt2[index]);
+ PDupwindNth2Xt2 = PDupwindNthfdOrder82(&Xt2[index]);
+ PDupwindNth3Xt2 = PDupwindNthfdOrder83(&Xt2[index]);
+ PDupwindNth1Xt3 = PDupwindNthfdOrder81(&Xt3[index]);
+ PDupwindNth2Xt3 = PDupwindNthfdOrder82(&Xt3[index]);
+ PDupwindNth3Xt3 = PDupwindNthfdOrder83(&Xt3[index]);
+ break;
+ }
/* Calculate temporaries and grid functions */
ptrdiff_t dir1 = Sign(beta1L);
@@ -198,152 +704,663 @@ static void ML_BSSN_UPW_Advect_Body(cGH const * restrict const cctkGH, int const
ptrdiff_t dir3 = Sign(beta3L);
- phirhsL = PDupwindNth1(&phi[index])*beta1L +
- PDupwindNth2(&phi[index])*beta2L + PDupwindNth3(&phi[index])*beta3L
- + phirhsL;
-
- gt11rhsL = PDupwindNth1(&gt11[index])*beta1L +
- PDupwindNth2(&gt11[index])*beta2L +
- PDupwindNth3(&gt11[index])*beta3L + gt11rhsL;
-
- gt12rhsL = PDupwindNth1(&gt12[index])*beta1L +
- PDupwindNth2(&gt12[index])*beta2L +
- PDupwindNth3(&gt12[index])*beta3L + gt12rhsL;
-
- gt13rhsL = PDupwindNth1(&gt13[index])*beta1L +
- PDupwindNth2(&gt13[index])*beta2L +
- PDupwindNth3(&gt13[index])*beta3L + gt13rhsL;
-
- gt22rhsL = PDupwindNth1(&gt22[index])*beta1L +
- PDupwindNth2(&gt22[index])*beta2L +
- PDupwindNth3(&gt22[index])*beta3L + gt22rhsL;
-
- gt23rhsL = PDupwindNth1(&gt23[index])*beta1L +
- PDupwindNth2(&gt23[index])*beta2L +
- PDupwindNth3(&gt23[index])*beta3L + gt23rhsL;
-
- gt33rhsL = PDupwindNth1(&gt33[index])*beta1L +
- PDupwindNth2(&gt33[index])*beta2L +
- PDupwindNth3(&gt33[index])*beta3L + gt33rhsL;
-
- Xt1rhsL = PDupwindNth1(&Xt1[index])*beta1L +
- PDupwindNth2(&Xt1[index])*beta2L + PDupwindNth3(&Xt1[index])*beta3L
- + Xt1rhsL;
-
- Xt2rhsL = PDupwindNth1(&Xt2[index])*beta1L +
- PDupwindNth2(&Xt2[index])*beta2L + PDupwindNth3(&Xt2[index])*beta3L
- + Xt2rhsL;
-
- Xt3rhsL = PDupwindNth1(&Xt3[index])*beta1L +
- PDupwindNth2(&Xt3[index])*beta2L + PDupwindNth3(&Xt3[index])*beta3L
- + Xt3rhsL;
-
- trKrhsL = PDupwindNth1(&trK[index])*beta1L +
- PDupwindNth2(&trK[index])*beta2L + PDupwindNth3(&trK[index])*beta3L
- + trKrhsL;
-
- At11rhsL = At11rhsL + PDupwindNth1(&At11[index])*beta1L +
- PDupwindNth2(&At11[index])*beta2L +
- PDupwindNth3(&At11[index])*beta3L;
-
- At12rhsL = At12rhsL + PDupwindNth1(&At12[index])*beta1L +
- PDupwindNth2(&At12[index])*beta2L +
- PDupwindNth3(&At12[index])*beta3L;
-
- At13rhsL = At13rhsL + PDupwindNth1(&At13[index])*beta1L +
- PDupwindNth2(&At13[index])*beta2L +
- PDupwindNth3(&At13[index])*beta3L;
-
- At22rhsL = At22rhsL + PDupwindNth1(&At22[index])*beta1L +
- PDupwindNth2(&At22[index])*beta2L +
- PDupwindNth3(&At22[index])*beta3L;
-
- At23rhsL = At23rhsL + PDupwindNth1(&At23[index])*beta1L +
- PDupwindNth2(&At23[index])*beta2L +
- PDupwindNth3(&At23[index])*beta3L;
-
- At33rhsL = At33rhsL + PDupwindNth1(&At33[index])*beta1L +
- PDupwindNth2(&At33[index])*beta2L +
- PDupwindNth3(&At33[index])*beta3L;
-
- alpharhsL = alpharhsL + (PDupwindNth1(&alpha[index])*beta1L +
- PDupwindNth2(&alpha[index])*beta2L +
- PDupwindNth3(&alpha[index])*beta3L)*ToReal(LapseAdvectionCoeff);
-
- ArhsL = ArhsL + (PDupwindNth1(&A[index])*beta1L +
- PDupwindNth2(&A[index])*beta2L +
- PDupwindNth3(&A[index])*beta3L)*ToReal(LapseAdvectionCoeff);
-
- beta1rhsL = beta1rhsL + (PDupwindNth1(&beta1[index])*beta1L +
- PDupwindNth2(&beta1[index])*beta2L +
- PDupwindNth3(&beta1[index])*beta3L)*ToReal(ShiftAdvectionCoeff);
-
- beta2rhsL = beta2rhsL + (PDupwindNth1(&beta2[index])*beta1L +
- PDupwindNth2(&beta2[index])*beta2L +
- PDupwindNth3(&beta2[index])*beta3L)*ToReal(ShiftAdvectionCoeff);
-
- beta3rhsL = beta3rhsL + (PDupwindNth1(&beta3[index])*beta1L +
- PDupwindNth2(&beta3[index])*beta2L +
- PDupwindNth3(&beta3[index])*beta3L)*ToReal(ShiftAdvectionCoeff);
-
- B1rhsL = B1rhsL + beta1L*((PDupwindNth1(&B1[index]) -
- PDupwindNth1(&Xt1[index]))*ToReal(ShiftAdvectionCoeff) +
- PDupwindNth1(&Xt1[index])*ToReal(ShiftBCoeff)) +
- beta2L*((PDupwindNth2(&B1[index]) -
- PDupwindNth2(&Xt1[index]))*ToReal(ShiftAdvectionCoeff) +
- PDupwindNth2(&Xt1[index])*ToReal(ShiftBCoeff)) +
- beta3L*((PDupwindNth3(&B1[index]) -
- PDupwindNth3(&Xt1[index]))*ToReal(ShiftAdvectionCoeff) +
- PDupwindNth3(&Xt1[index])*ToReal(ShiftBCoeff));
-
- B2rhsL = B2rhsL + beta1L*((PDupwindNth1(&B2[index]) -
- PDupwindNth1(&Xt2[index]))*ToReal(ShiftAdvectionCoeff) +
- PDupwindNth1(&Xt2[index])*ToReal(ShiftBCoeff)) +
- beta2L*((PDupwindNth2(&B2[index]) -
- PDupwindNth2(&Xt2[index]))*ToReal(ShiftAdvectionCoeff) +
- PDupwindNth2(&Xt2[index])*ToReal(ShiftBCoeff)) +
- beta3L*((PDupwindNth3(&B2[index]) -
- PDupwindNth3(&Xt2[index]))*ToReal(ShiftAdvectionCoeff) +
- PDupwindNth3(&Xt2[index])*ToReal(ShiftBCoeff));
-
- B3rhsL = B3rhsL + beta1L*((PDupwindNth1(&B3[index]) -
- PDupwindNth1(&Xt3[index]))*ToReal(ShiftAdvectionCoeff) +
- PDupwindNth1(&Xt3[index])*ToReal(ShiftBCoeff)) +
- beta2L*((PDupwindNth2(&B3[index]) -
- PDupwindNth2(&Xt3[index]))*ToReal(ShiftAdvectionCoeff) +
- PDupwindNth2(&Xt3[index])*ToReal(ShiftBCoeff)) +
- beta3L*((PDupwindNth3(&B3[index]) -
- PDupwindNth3(&Xt3[index]))*ToReal(ShiftAdvectionCoeff) +
- PDupwindNth3(&Xt3[index])*ToReal(ShiftBCoeff));
-
- /* Copy local copies back to grid functions */
- alpharhs[index] = alpharhsL;
- Arhs[index] = ArhsL;
- At11rhs[index] = At11rhsL;
- At12rhs[index] = At12rhsL;
- At13rhs[index] = At13rhsL;
- At22rhs[index] = At22rhsL;
- At23rhs[index] = At23rhsL;
- At33rhs[index] = At33rhsL;
- B1rhs[index] = B1rhsL;
- B2rhs[index] = B2rhsL;
- B3rhs[index] = B3rhsL;
- beta1rhs[index] = beta1rhsL;
- beta2rhs[index] = beta2rhsL;
- beta3rhs[index] = beta3rhsL;
- gt11rhs[index] = gt11rhsL;
- gt12rhs[index] = gt12rhsL;
- gt13rhs[index] = gt13rhsL;
- gt22rhs[index] = gt22rhsL;
- gt23rhs[index] = gt23rhsL;
- gt33rhs[index] = gt33rhsL;
- phirhs[index] = phirhsL;
- trKrhs[index] = trKrhsL;
- Xt1rhs[index] = Xt1rhsL;
- Xt2rhs[index] = Xt2rhsL;
- Xt3rhs[index] = Xt3rhsL;
+ CCTK_REAL_VEC JacPDupwindNth1A;
+ CCTK_REAL_VEC JacPDupwindNth1alpha;
+ CCTK_REAL_VEC JacPDupwindNth1At11;
+ CCTK_REAL_VEC JacPDupwindNth1At12;
+ CCTK_REAL_VEC JacPDupwindNth1At13;
+ CCTK_REAL_VEC JacPDupwindNth1At22;
+ CCTK_REAL_VEC JacPDupwindNth1At23;
+ CCTK_REAL_VEC JacPDupwindNth1At33;
+ CCTK_REAL_VEC JacPDupwindNth1B1;
+ CCTK_REAL_VEC JacPDupwindNth1B2;
+ CCTK_REAL_VEC JacPDupwindNth1B3;
+ CCTK_REAL_VEC JacPDupwindNth1beta1;
+ CCTK_REAL_VEC JacPDupwindNth1beta2;
+ CCTK_REAL_VEC JacPDupwindNth1beta3;
+ CCTK_REAL_VEC JacPDupwindNth1gt11;
+ CCTK_REAL_VEC JacPDupwindNth1gt12;
+ CCTK_REAL_VEC JacPDupwindNth1gt13;
+ CCTK_REAL_VEC JacPDupwindNth1gt22;
+ CCTK_REAL_VEC JacPDupwindNth1gt23;
+ CCTK_REAL_VEC JacPDupwindNth1gt33;
+ CCTK_REAL_VEC JacPDupwindNth1phi;
+ CCTK_REAL_VEC JacPDupwindNth1trK;
+ CCTK_REAL_VEC JacPDupwindNth1Xt1;
+ CCTK_REAL_VEC JacPDupwindNth1Xt2;
+ CCTK_REAL_VEC JacPDupwindNth1Xt3;
+ CCTK_REAL_VEC JacPDupwindNth2A;
+ CCTK_REAL_VEC JacPDupwindNth2alpha;
+ CCTK_REAL_VEC JacPDupwindNth2At11;
+ CCTK_REAL_VEC JacPDupwindNth2At12;
+ CCTK_REAL_VEC JacPDupwindNth2At13;
+ CCTK_REAL_VEC JacPDupwindNth2At22;
+ CCTK_REAL_VEC JacPDupwindNth2At23;
+ CCTK_REAL_VEC JacPDupwindNth2At33;
+ CCTK_REAL_VEC JacPDupwindNth2B1;
+ CCTK_REAL_VEC JacPDupwindNth2B2;
+ CCTK_REAL_VEC JacPDupwindNth2B3;
+ CCTK_REAL_VEC JacPDupwindNth2beta1;
+ CCTK_REAL_VEC JacPDupwindNth2beta2;
+ CCTK_REAL_VEC JacPDupwindNth2beta3;
+ CCTK_REAL_VEC JacPDupwindNth2gt11;
+ CCTK_REAL_VEC JacPDupwindNth2gt12;
+ CCTK_REAL_VEC JacPDupwindNth2gt13;
+ CCTK_REAL_VEC JacPDupwindNth2gt22;
+ CCTK_REAL_VEC JacPDupwindNth2gt23;
+ CCTK_REAL_VEC JacPDupwindNth2gt33;
+ CCTK_REAL_VEC JacPDupwindNth2phi;
+ CCTK_REAL_VEC JacPDupwindNth2trK;
+ CCTK_REAL_VEC JacPDupwindNth2Xt1;
+ CCTK_REAL_VEC JacPDupwindNth2Xt2;
+ CCTK_REAL_VEC JacPDupwindNth2Xt3;
+ CCTK_REAL_VEC JacPDupwindNth3A;
+ CCTK_REAL_VEC JacPDupwindNth3alpha;
+ CCTK_REAL_VEC JacPDupwindNth3At11;
+ CCTK_REAL_VEC JacPDupwindNth3At12;
+ CCTK_REAL_VEC JacPDupwindNth3At13;
+ CCTK_REAL_VEC JacPDupwindNth3At22;
+ CCTK_REAL_VEC JacPDupwindNth3At23;
+ CCTK_REAL_VEC JacPDupwindNth3At33;
+ CCTK_REAL_VEC JacPDupwindNth3B1;
+ CCTK_REAL_VEC JacPDupwindNth3B2;
+ CCTK_REAL_VEC JacPDupwindNth3B3;
+ CCTK_REAL_VEC JacPDupwindNth3beta1;
+ CCTK_REAL_VEC JacPDupwindNth3beta2;
+ CCTK_REAL_VEC JacPDupwindNth3beta3;
+ CCTK_REAL_VEC JacPDupwindNth3gt11;
+ CCTK_REAL_VEC JacPDupwindNth3gt12;
+ CCTK_REAL_VEC JacPDupwindNth3gt13;
+ CCTK_REAL_VEC JacPDupwindNth3gt22;
+ CCTK_REAL_VEC JacPDupwindNth3gt23;
+ CCTK_REAL_VEC JacPDupwindNth3gt33;
+ CCTK_REAL_VEC JacPDupwindNth3phi;
+ CCTK_REAL_VEC JacPDupwindNth3trK;
+ CCTK_REAL_VEC JacPDupwindNth3Xt1;
+ CCTK_REAL_VEC JacPDupwindNth3Xt2;
+ CCTK_REAL_VEC JacPDupwindNth3Xt3;
+
+ if (use_jacobian)
+ {
+ JacPDupwindNth1A =
+ kmadd(J11L,PDupwindNth1A,kmadd(J21L,PDupwindNth2A,kmul(J31L,PDupwindNth3A)));
+
+ JacPDupwindNth1alpha =
+ kmadd(J11L,PDupwindNth1alpha,kmadd(J21L,PDupwindNth2alpha,kmul(J31L,PDupwindNth3alpha)));
+
+ JacPDupwindNth1At11 =
+ kmadd(J11L,PDupwindNth1At11,kmadd(J21L,PDupwindNth2At11,kmul(J31L,PDupwindNth3At11)));
+
+ JacPDupwindNth1At12 =
+ kmadd(J11L,PDupwindNth1At12,kmadd(J21L,PDupwindNth2At12,kmul(J31L,PDupwindNth3At12)));
+
+ JacPDupwindNth1At13 =
+ kmadd(J11L,PDupwindNth1At13,kmadd(J21L,PDupwindNth2At13,kmul(J31L,PDupwindNth3At13)));
+
+ JacPDupwindNth1At22 =
+ kmadd(J11L,PDupwindNth1At22,kmadd(J21L,PDupwindNth2At22,kmul(J31L,PDupwindNth3At22)));
+
+ JacPDupwindNth1At23 =
+ kmadd(J11L,PDupwindNth1At23,kmadd(J21L,PDupwindNth2At23,kmul(J31L,PDupwindNth3At23)));
+
+ JacPDupwindNth1At33 =
+ kmadd(J11L,PDupwindNth1At33,kmadd(J21L,PDupwindNth2At33,kmul(J31L,PDupwindNth3At33)));
+
+ JacPDupwindNth1B1 =
+ kmadd(J11L,PDupwindNth1B1,kmadd(J21L,PDupwindNth2B1,kmul(J31L,PDupwindNth3B1)));
+
+ JacPDupwindNth1B2 =
+ kmadd(J11L,PDupwindNth1B2,kmadd(J21L,PDupwindNth2B2,kmul(J31L,PDupwindNth3B2)));
+
+ JacPDupwindNth1B3 =
+ kmadd(J11L,PDupwindNth1B3,kmadd(J21L,PDupwindNth2B3,kmul(J31L,PDupwindNth3B3)));
+
+ JacPDupwindNth1beta1 =
+ kmadd(J11L,PDupwindNth1beta1,kmadd(J21L,PDupwindNth2beta1,kmul(J31L,PDupwindNth3beta1)));
+
+ JacPDupwindNth1beta2 =
+ kmadd(J11L,PDupwindNth1beta2,kmadd(J21L,PDupwindNth2beta2,kmul(J31L,PDupwindNth3beta2)));
+
+ JacPDupwindNth1beta3 =
+ kmadd(J11L,PDupwindNth1beta3,kmadd(J21L,PDupwindNth2beta3,kmul(J31L,PDupwindNth3beta3)));
+
+ JacPDupwindNth1gt11 =
+ kmadd(J11L,PDupwindNth1gt11,kmadd(J21L,PDupwindNth2gt11,kmul(J31L,PDupwindNth3gt11)));
+
+ JacPDupwindNth1gt12 =
+ kmadd(J11L,PDupwindNth1gt12,kmadd(J21L,PDupwindNth2gt12,kmul(J31L,PDupwindNth3gt12)));
+
+ JacPDupwindNth1gt13 =
+ kmadd(J11L,PDupwindNth1gt13,kmadd(J21L,PDupwindNth2gt13,kmul(J31L,PDupwindNth3gt13)));
+
+ JacPDupwindNth1gt22 =
+ kmadd(J11L,PDupwindNth1gt22,kmadd(J21L,PDupwindNth2gt22,kmul(J31L,PDupwindNth3gt22)));
+
+ JacPDupwindNth1gt23 =
+ kmadd(J11L,PDupwindNth1gt23,kmadd(J21L,PDupwindNth2gt23,kmul(J31L,PDupwindNth3gt23)));
+
+ JacPDupwindNth1gt33 =
+ kmadd(J11L,PDupwindNth1gt33,kmadd(J21L,PDupwindNth2gt33,kmul(J31L,PDupwindNth3gt33)));
+
+ JacPDupwindNth1phi =
+ kmadd(J11L,PDupwindNth1phi,kmadd(J21L,PDupwindNth2phi,kmul(J31L,PDupwindNth3phi)));
+
+ JacPDupwindNth1trK =
+ kmadd(J11L,PDupwindNth1trK,kmadd(J21L,PDupwindNth2trK,kmul(J31L,PDupwindNth3trK)));
+
+ JacPDupwindNth1Xt1 =
+ kmadd(J11L,PDupwindNth1Xt1,kmadd(J21L,PDupwindNth2Xt1,kmul(J31L,PDupwindNth3Xt1)));
+
+ JacPDupwindNth1Xt2 =
+ kmadd(J11L,PDupwindNth1Xt2,kmadd(J21L,PDupwindNth2Xt2,kmul(J31L,PDupwindNth3Xt2)));
+
+ JacPDupwindNth1Xt3 =
+ kmadd(J11L,PDupwindNth1Xt3,kmadd(J21L,PDupwindNth2Xt3,kmul(J31L,PDupwindNth3Xt3)));
+
+ JacPDupwindNth2A =
+ kmadd(J12L,PDupwindNth1A,kmadd(J22L,PDupwindNth2A,kmul(J32L,PDupwindNth3A)));
+
+ JacPDupwindNth2alpha =
+ kmadd(J12L,PDupwindNth1alpha,kmadd(J22L,PDupwindNth2alpha,kmul(J32L,PDupwindNth3alpha)));
+
+ JacPDupwindNth2At11 =
+ kmadd(J12L,PDupwindNth1At11,kmadd(J22L,PDupwindNth2At11,kmul(J32L,PDupwindNth3At11)));
+
+ JacPDupwindNth2At12 =
+ kmadd(J12L,PDupwindNth1At12,kmadd(J22L,PDupwindNth2At12,kmul(J32L,PDupwindNth3At12)));
+
+ JacPDupwindNth2At13 =
+ kmadd(J12L,PDupwindNth1At13,kmadd(J22L,PDupwindNth2At13,kmul(J32L,PDupwindNth3At13)));
+
+ JacPDupwindNth2At22 =
+ kmadd(J12L,PDupwindNth1At22,kmadd(J22L,PDupwindNth2At22,kmul(J32L,PDupwindNth3At22)));
+
+ JacPDupwindNth2At23 =
+ kmadd(J12L,PDupwindNth1At23,kmadd(J22L,PDupwindNth2At23,kmul(J32L,PDupwindNth3At23)));
+
+ JacPDupwindNth2At33 =
+ kmadd(J12L,PDupwindNth1At33,kmadd(J22L,PDupwindNth2At33,kmul(J32L,PDupwindNth3At33)));
+
+ JacPDupwindNth2B1 =
+ kmadd(J12L,PDupwindNth1B1,kmadd(J22L,PDupwindNth2B1,kmul(J32L,PDupwindNth3B1)));
+
+ JacPDupwindNth2B2 =
+ kmadd(J12L,PDupwindNth1B2,kmadd(J22L,PDupwindNth2B2,kmul(J32L,PDupwindNth3B2)));
+
+ JacPDupwindNth2B3 =
+ kmadd(J12L,PDupwindNth1B3,kmadd(J22L,PDupwindNth2B3,kmul(J32L,PDupwindNth3B3)));
+
+ JacPDupwindNth2beta1 =
+ kmadd(J12L,PDupwindNth1beta1,kmadd(J22L,PDupwindNth2beta1,kmul(J32L,PDupwindNth3beta1)));
+
+ JacPDupwindNth2beta2 =
+ kmadd(J12L,PDupwindNth1beta2,kmadd(J22L,PDupwindNth2beta2,kmul(J32L,PDupwindNth3beta2)));
+
+ JacPDupwindNth2beta3 =
+ kmadd(J12L,PDupwindNth1beta3,kmadd(J22L,PDupwindNth2beta3,kmul(J32L,PDupwindNth3beta3)));
+
+ JacPDupwindNth2gt11 =
+ kmadd(J12L,PDupwindNth1gt11,kmadd(J22L,PDupwindNth2gt11,kmul(J32L,PDupwindNth3gt11)));
+
+ JacPDupwindNth2gt12 =
+ kmadd(J12L,PDupwindNth1gt12,kmadd(J22L,PDupwindNth2gt12,kmul(J32L,PDupwindNth3gt12)));
+
+ JacPDupwindNth2gt13 =
+ kmadd(J12L,PDupwindNth1gt13,kmadd(J22L,PDupwindNth2gt13,kmul(J32L,PDupwindNth3gt13)));
+
+ JacPDupwindNth2gt22 =
+ kmadd(J12L,PDupwindNth1gt22,kmadd(J22L,PDupwindNth2gt22,kmul(J32L,PDupwindNth3gt22)));
+
+ JacPDupwindNth2gt23 =
+ kmadd(J12L,PDupwindNth1gt23,kmadd(J22L,PDupwindNth2gt23,kmul(J32L,PDupwindNth3gt23)));
+
+ JacPDupwindNth2gt33 =
+ kmadd(J12L,PDupwindNth1gt33,kmadd(J22L,PDupwindNth2gt33,kmul(J32L,PDupwindNth3gt33)));
+
+ JacPDupwindNth2phi =
+ kmadd(J12L,PDupwindNth1phi,kmadd(J22L,PDupwindNth2phi,kmul(J32L,PDupwindNth3phi)));
+
+ JacPDupwindNth2trK =
+ kmadd(J12L,PDupwindNth1trK,kmadd(J22L,PDupwindNth2trK,kmul(J32L,PDupwindNth3trK)));
+
+ JacPDupwindNth2Xt1 =
+ kmadd(J12L,PDupwindNth1Xt1,kmadd(J22L,PDupwindNth2Xt1,kmul(J32L,PDupwindNth3Xt1)));
+
+ JacPDupwindNth2Xt2 =
+ kmadd(J12L,PDupwindNth1Xt2,kmadd(J22L,PDupwindNth2Xt2,kmul(J32L,PDupwindNth3Xt2)));
+
+ JacPDupwindNth2Xt3 =
+ kmadd(J12L,PDupwindNth1Xt3,kmadd(J22L,PDupwindNth2Xt3,kmul(J32L,PDupwindNth3Xt3)));
+
+ JacPDupwindNth3A =
+ kmadd(J13L,PDupwindNth1A,kmadd(J23L,PDupwindNth2A,kmul(J33L,PDupwindNth3A)));
+
+ JacPDupwindNth3alpha =
+ kmadd(J13L,PDupwindNth1alpha,kmadd(J23L,PDupwindNth2alpha,kmul(J33L,PDupwindNth3alpha)));
+
+ JacPDupwindNth3At11 =
+ kmadd(J13L,PDupwindNth1At11,kmadd(J23L,PDupwindNth2At11,kmul(J33L,PDupwindNth3At11)));
+
+ JacPDupwindNth3At12 =
+ kmadd(J13L,PDupwindNth1At12,kmadd(J23L,PDupwindNth2At12,kmul(J33L,PDupwindNth3At12)));
+
+ JacPDupwindNth3At13 =
+ kmadd(J13L,PDupwindNth1At13,kmadd(J23L,PDupwindNth2At13,kmul(J33L,PDupwindNth3At13)));
+
+ JacPDupwindNth3At22 =
+ kmadd(J13L,PDupwindNth1At22,kmadd(J23L,PDupwindNth2At22,kmul(J33L,PDupwindNth3At22)));
+
+ JacPDupwindNth3At23 =
+ kmadd(J13L,PDupwindNth1At23,kmadd(J23L,PDupwindNth2At23,kmul(J33L,PDupwindNth3At23)));
+
+ JacPDupwindNth3At33 =
+ kmadd(J13L,PDupwindNth1At33,kmadd(J23L,PDupwindNth2At33,kmul(J33L,PDupwindNth3At33)));
+
+ JacPDupwindNth3B1 =
+ kmadd(J13L,PDupwindNth1B1,kmadd(J23L,PDupwindNth2B1,kmul(J33L,PDupwindNth3B1)));
+
+ JacPDupwindNth3B2 =
+ kmadd(J13L,PDupwindNth1B2,kmadd(J23L,PDupwindNth2B2,kmul(J33L,PDupwindNth3B2)));
+
+ JacPDupwindNth3B3 =
+ kmadd(J13L,PDupwindNth1B3,kmadd(J23L,PDupwindNth2B3,kmul(J33L,PDupwindNth3B3)));
+
+ JacPDupwindNth3beta1 =
+ kmadd(J13L,PDupwindNth1beta1,kmadd(J23L,PDupwindNth2beta1,kmul(J33L,PDupwindNth3beta1)));
+
+ JacPDupwindNth3beta2 =
+ kmadd(J13L,PDupwindNth1beta2,kmadd(J23L,PDupwindNth2beta2,kmul(J33L,PDupwindNth3beta2)));
+
+ JacPDupwindNth3beta3 =
+ kmadd(J13L,PDupwindNth1beta3,kmadd(J23L,PDupwindNth2beta3,kmul(J33L,PDupwindNth3beta3)));
+
+ JacPDupwindNth3gt11 =
+ kmadd(J13L,PDupwindNth1gt11,kmadd(J23L,PDupwindNth2gt11,kmul(J33L,PDupwindNth3gt11)));
+
+ JacPDupwindNth3gt12 =
+ kmadd(J13L,PDupwindNth1gt12,kmadd(J23L,PDupwindNth2gt12,kmul(J33L,PDupwindNth3gt12)));
+
+ JacPDupwindNth3gt13 =
+ kmadd(J13L,PDupwindNth1gt13,kmadd(J23L,PDupwindNth2gt13,kmul(J33L,PDupwindNth3gt13)));
+
+ JacPDupwindNth3gt22 =
+ kmadd(J13L,PDupwindNth1gt22,kmadd(J23L,PDupwindNth2gt22,kmul(J33L,PDupwindNth3gt22)));
+
+ JacPDupwindNth3gt23 =
+ kmadd(J13L,PDupwindNth1gt23,kmadd(J23L,PDupwindNth2gt23,kmul(J33L,PDupwindNth3gt23)));
+
+ JacPDupwindNth3gt33 =
+ kmadd(J13L,PDupwindNth1gt33,kmadd(J23L,PDupwindNth2gt33,kmul(J33L,PDupwindNth3gt33)));
+
+ JacPDupwindNth3phi =
+ kmadd(J13L,PDupwindNth1phi,kmadd(J23L,PDupwindNth2phi,kmul(J33L,PDupwindNth3phi)));
+
+ JacPDupwindNth3trK =
+ kmadd(J13L,PDupwindNth1trK,kmadd(J23L,PDupwindNth2trK,kmul(J33L,PDupwindNth3trK)));
+
+ JacPDupwindNth3Xt1 =
+ kmadd(J13L,PDupwindNth1Xt1,kmadd(J23L,PDupwindNth2Xt1,kmul(J33L,PDupwindNth3Xt1)));
+
+ JacPDupwindNth3Xt2 =
+ kmadd(J13L,PDupwindNth1Xt2,kmadd(J23L,PDupwindNth2Xt2,kmul(J33L,PDupwindNth3Xt2)));
+
+ JacPDupwindNth3Xt3 =
+ kmadd(J13L,PDupwindNth1Xt3,kmadd(J23L,PDupwindNth2Xt3,kmul(J33L,PDupwindNth3Xt3)));
+ }
+ else
+ {
+ JacPDupwindNth1A = PDupwindNth1A;
+
+ JacPDupwindNth1alpha = PDupwindNth1alpha;
+
+ JacPDupwindNth1At11 = PDupwindNth1At11;
+
+ JacPDupwindNth1At12 = PDupwindNth1At12;
+
+ JacPDupwindNth1At13 = PDupwindNth1At13;
+
+ JacPDupwindNth1At22 = PDupwindNth1At22;
+
+ JacPDupwindNth1At23 = PDupwindNth1At23;
+
+ JacPDupwindNth1At33 = PDupwindNth1At33;
+
+ JacPDupwindNth1B1 = PDupwindNth1B1;
+
+ JacPDupwindNth1B2 = PDupwindNth1B2;
+
+ JacPDupwindNth1B3 = PDupwindNth1B3;
+
+ JacPDupwindNth1beta1 = PDupwindNth1beta1;
+
+ JacPDupwindNth1beta2 = PDupwindNth1beta2;
+
+ JacPDupwindNth1beta3 = PDupwindNth1beta3;
+
+ JacPDupwindNth1gt11 = PDupwindNth1gt11;
+
+ JacPDupwindNth1gt12 = PDupwindNth1gt12;
+
+ JacPDupwindNth1gt13 = PDupwindNth1gt13;
+
+ JacPDupwindNth1gt22 = PDupwindNth1gt22;
+
+ JacPDupwindNth1gt23 = PDupwindNth1gt23;
+
+ JacPDupwindNth1gt33 = PDupwindNth1gt33;
+
+ JacPDupwindNth1phi = PDupwindNth1phi;
+
+ JacPDupwindNth1trK = PDupwindNth1trK;
+
+ JacPDupwindNth1Xt1 = PDupwindNth1Xt1;
+
+ JacPDupwindNth1Xt2 = PDupwindNth1Xt2;
+
+ JacPDupwindNth1Xt3 = PDupwindNth1Xt3;
+
+ JacPDupwindNth2A = PDupwindNth2A;
+
+ JacPDupwindNth2alpha = PDupwindNth2alpha;
+
+ JacPDupwindNth2At11 = PDupwindNth2At11;
+
+ JacPDupwindNth2At12 = PDupwindNth2At12;
+
+ JacPDupwindNth2At13 = PDupwindNth2At13;
+
+ JacPDupwindNth2At22 = PDupwindNth2At22;
+
+ JacPDupwindNth2At23 = PDupwindNth2At23;
+
+ JacPDupwindNth2At33 = PDupwindNth2At33;
+
+ JacPDupwindNth2B1 = PDupwindNth2B1;
+
+ JacPDupwindNth2B2 = PDupwindNth2B2;
+
+ JacPDupwindNth2B3 = PDupwindNth2B3;
+
+ JacPDupwindNth2beta1 = PDupwindNth2beta1;
+
+ JacPDupwindNth2beta2 = PDupwindNth2beta2;
+
+ JacPDupwindNth2beta3 = PDupwindNth2beta3;
+
+ JacPDupwindNth2gt11 = PDupwindNth2gt11;
+
+ JacPDupwindNth2gt12 = PDupwindNth2gt12;
+
+ JacPDupwindNth2gt13 = PDupwindNth2gt13;
+
+ JacPDupwindNth2gt22 = PDupwindNth2gt22;
+
+ JacPDupwindNth2gt23 = PDupwindNth2gt23;
+
+ JacPDupwindNth2gt33 = PDupwindNth2gt33;
+
+ JacPDupwindNth2phi = PDupwindNth2phi;
+
+ JacPDupwindNth2trK = PDupwindNth2trK;
+
+ JacPDupwindNth2Xt1 = PDupwindNth2Xt1;
+
+ JacPDupwindNth2Xt2 = PDupwindNth2Xt2;
+
+ JacPDupwindNth2Xt3 = PDupwindNth2Xt3;
+
+ JacPDupwindNth3A = PDupwindNth3A;
+
+ JacPDupwindNth3alpha = PDupwindNth3alpha;
+
+ JacPDupwindNth3At11 = PDupwindNth3At11;
+
+ JacPDupwindNth3At12 = PDupwindNth3At12;
+
+ JacPDupwindNth3At13 = PDupwindNth3At13;
+
+ JacPDupwindNth3At22 = PDupwindNth3At22;
+
+ JacPDupwindNth3At23 = PDupwindNth3At23;
+
+ JacPDupwindNth3At33 = PDupwindNth3At33;
+
+ JacPDupwindNth3B1 = PDupwindNth3B1;
+
+ JacPDupwindNth3B2 = PDupwindNth3B2;
+
+ JacPDupwindNth3B3 = PDupwindNth3B3;
+
+ JacPDupwindNth3beta1 = PDupwindNth3beta1;
+
+ JacPDupwindNth3beta2 = PDupwindNth3beta2;
+
+ JacPDupwindNth3beta3 = PDupwindNth3beta3;
+
+ JacPDupwindNth3gt11 = PDupwindNth3gt11;
+
+ JacPDupwindNth3gt12 = PDupwindNth3gt12;
+
+ JacPDupwindNth3gt13 = PDupwindNth3gt13;
+
+ JacPDupwindNth3gt22 = PDupwindNth3gt22;
+
+ JacPDupwindNth3gt23 = PDupwindNth3gt23;
+
+ JacPDupwindNth3gt33 = PDupwindNth3gt33;
+
+ JacPDupwindNth3phi = PDupwindNth3phi;
+
+ JacPDupwindNth3trK = PDupwindNth3trK;
+
+ JacPDupwindNth3Xt1 = PDupwindNth3Xt1;
+
+ JacPDupwindNth3Xt2 = PDupwindNth3Xt2;
+
+ JacPDupwindNth3Xt3 = PDupwindNth3Xt3;
+ }
+
+ phirhsL =
+ kmadd(beta1L,JacPDupwindNth1phi,kmadd(beta2L,JacPDupwindNth2phi,kmadd(beta3L,JacPDupwindNth3phi,phirhsL)));
+
+ gt11rhsL =
+ kadd(gt11rhsL,kmadd(beta1L,JacPDupwindNth1gt11,kmadd(beta2L,JacPDupwindNth2gt11,kmul(beta3L,JacPDupwindNth3gt11))));
+
+ gt12rhsL =
+ kadd(gt12rhsL,kmadd(beta1L,JacPDupwindNth1gt12,kmadd(beta2L,JacPDupwindNth2gt12,kmul(beta3L,JacPDupwindNth3gt12))));
+
+ gt13rhsL =
+ kadd(gt13rhsL,kmadd(beta1L,JacPDupwindNth1gt13,kmadd(beta2L,JacPDupwindNth2gt13,kmul(beta3L,JacPDupwindNth3gt13))));
+
+ gt22rhsL =
+ kadd(gt22rhsL,kmadd(beta1L,JacPDupwindNth1gt22,kmadd(beta2L,JacPDupwindNth2gt22,kmul(beta3L,JacPDupwindNth3gt22))));
+
+ gt23rhsL =
+ kadd(gt23rhsL,kmadd(beta1L,JacPDupwindNth1gt23,kmadd(beta2L,JacPDupwindNth2gt23,kmul(beta3L,JacPDupwindNth3gt23))));
+
+ gt33rhsL =
+ kadd(gt33rhsL,kmadd(beta1L,JacPDupwindNth1gt33,kmadd(beta2L,JacPDupwindNth2gt33,kmul(beta3L,JacPDupwindNth3gt33))));
+
+ Xt1rhsL =
+ kmadd(beta1L,JacPDupwindNth1Xt1,kmadd(beta2L,JacPDupwindNth2Xt1,kmadd(beta3L,JacPDupwindNth3Xt1,Xt1rhsL)));
+
+ Xt2rhsL =
+ kmadd(beta1L,JacPDupwindNth1Xt2,kmadd(beta2L,JacPDupwindNth2Xt2,kmadd(beta3L,JacPDupwindNth3Xt2,Xt2rhsL)));
+
+ Xt3rhsL =
+ kmadd(beta1L,JacPDupwindNth1Xt3,kmadd(beta2L,JacPDupwindNth2Xt3,kmadd(beta3L,JacPDupwindNth3Xt3,Xt3rhsL)));
+
+ trKrhsL =
+ kmadd(beta1L,JacPDupwindNth1trK,kmadd(beta2L,JacPDupwindNth2trK,kmadd(beta3L,JacPDupwindNth3trK,trKrhsL)));
+
+ At11rhsL =
+ kadd(At11rhsL,kmadd(beta1L,JacPDupwindNth1At11,kmadd(beta2L,JacPDupwindNth2At11,kmul(beta3L,JacPDupwindNth3At11))));
+
+ At12rhsL =
+ kadd(At12rhsL,kmadd(beta1L,JacPDupwindNth1At12,kmadd(beta2L,JacPDupwindNth2At12,kmul(beta3L,JacPDupwindNth3At12))));
+
+ At13rhsL =
+ kadd(At13rhsL,kmadd(beta1L,JacPDupwindNth1At13,kmadd(beta2L,JacPDupwindNth2At13,kmul(beta3L,JacPDupwindNth3At13))));
+
+ At22rhsL =
+ kadd(At22rhsL,kmadd(beta1L,JacPDupwindNth1At22,kmadd(beta2L,JacPDupwindNth2At22,kmul(beta3L,JacPDupwindNth3At22))));
+
+ At23rhsL =
+ kadd(At23rhsL,kmadd(beta1L,JacPDupwindNth1At23,kmadd(beta2L,JacPDupwindNth2At23,kmul(beta3L,JacPDupwindNth3At23))));
+
+ At33rhsL =
+ kadd(At33rhsL,kmadd(beta1L,JacPDupwindNth1At33,kmadd(beta2L,JacPDupwindNth2At33,kmul(beta3L,JacPDupwindNth3At33))));
+
+ alpharhsL =
+ kmadd(kmadd(beta1L,JacPDupwindNth1alpha,kmadd(beta2L,JacPDupwindNth2alpha,kmul(beta3L,JacPDupwindNth3alpha))),ToReal(LapseAdvectionCoeff),alpharhsL);
+
+ ArhsL =
+ kmadd(kmadd(beta1L,JacPDupwindNth1A,kmadd(beta2L,JacPDupwindNth2A,kmul(beta3L,JacPDupwindNth3A))),ToReal(LapseAdvectionCoeff),ArhsL);
+
+ beta1rhsL =
+ kmadd(kmadd(beta1L,JacPDupwindNth1beta1,kmadd(beta2L,JacPDupwindNth2beta1,kmul(beta3L,JacPDupwindNth3beta1))),ToReal(ShiftAdvectionCoeff),beta1rhsL);
+
+ beta2rhsL =
+ kmadd(kmadd(beta1L,JacPDupwindNth1beta2,kmadd(beta2L,JacPDupwindNth2beta2,kmul(beta3L,JacPDupwindNth3beta2))),ToReal(ShiftAdvectionCoeff),beta2rhsL);
+
+ beta3rhsL =
+ kmadd(kmadd(beta1L,JacPDupwindNth1beta3,kmadd(beta2L,JacPDupwindNth2beta3,kmul(beta3L,JacPDupwindNth3beta3))),ToReal(ShiftAdvectionCoeff),beta3rhsL);
+
+ B1rhsL =
+ kadd(B1rhsL,kmadd(beta1L,kmadd(ksub(JacPDupwindNth1B1,JacPDupwindNth1Xt1),ToReal(ShiftAdvectionCoeff),kmul(JacPDupwindNth1Xt1,ToReal(ShiftBCoeff))),kmadd(beta2L,kmadd(ksub(JacPDupwindNth2B1,JacPDupwindNth2Xt1),ToReal(ShiftAdvectionCoeff),kmul(JacPDupwindNth2Xt1,ToReal(ShiftBCoeff))),kmul(beta3L,kmadd(ksub(JacPDupwindNth3B1,JacPDupwindNth3Xt1),ToReal(ShiftAdvectionCoeff),kmul(JacPDupwindNth3Xt1,ToReal(ShiftBCoeff)))))));
+
+ B2rhsL =
+ kadd(B2rhsL,kmadd(beta1L,kmadd(ksub(JacPDupwindNth1B2,JacPDupwindNth1Xt2),ToReal(ShiftAdvectionCoeff),kmul(JacPDupwindNth1Xt2,ToReal(ShiftBCoeff))),kmadd(beta2L,kmadd(ksub(JacPDupwindNth2B2,JacPDupwindNth2Xt2),ToReal(ShiftAdvectionCoeff),kmul(JacPDupwindNth2Xt2,ToReal(ShiftBCoeff))),kmul(beta3L,kmadd(ksub(JacPDupwindNth3B2,JacPDupwindNth3Xt2),ToReal(ShiftAdvectionCoeff),kmul(JacPDupwindNth3Xt2,ToReal(ShiftBCoeff)))))));
+
+ B3rhsL =
+ kadd(B3rhsL,kmadd(beta1L,kmadd(ksub(JacPDupwindNth1B3,JacPDupwindNth1Xt3),ToReal(ShiftAdvectionCoeff),kmul(JacPDupwindNth1Xt3,ToReal(ShiftBCoeff))),kmadd(beta2L,kmadd(ksub(JacPDupwindNth2B3,JacPDupwindNth2Xt3),ToReal(ShiftAdvectionCoeff),kmul(JacPDupwindNth2Xt3,ToReal(ShiftBCoeff))),kmul(beta3L,kmadd(ksub(JacPDupwindNth3B3,JacPDupwindNth3Xt3),ToReal(ShiftAdvectionCoeff),kmul(JacPDupwindNth3Xt3,ToReal(ShiftBCoeff)))))));
+
+ /* 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(Arhs[index],ArhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At11rhs[index],At11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At12rhs[index],At12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At13rhs[index],At13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At22rhs[index],At22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At23rhs[index],At23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At33rhs[index],At33rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B1rhs[index],B1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B2rhs[index],B2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt12rhs[index],gt12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt13rhs[index],gt13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt22rhs[index],gt22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt23rhs[index],gt23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt33rhs[index],gt33rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(phirhs[index],phirhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(trKrhs[index],trKrhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt1rhs[index],Xt1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt2rhs[index],Xt2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt3rhs[index],Xt3rhsL,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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_hi(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_hi(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_hi(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_hi(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_hi(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_hi(At33rhs[index],At33rhsL,elt_count);
+ vec_store_nta_partial_hi(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_hi(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_hi(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_hi(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_hi(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_hi(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_hi(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_hi(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_hi(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_hi(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_hi(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt3rhs[index],Xt3rhsL,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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_lo(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_lo(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_lo(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_lo(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_lo(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_lo(At33rhs[index],At33rhsL,elt_count);
+ vec_store_nta_partial_lo(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_lo(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_lo(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_lo(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_lo(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_lo(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_lo(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_lo(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_lo(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_lo(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_lo(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt3rhs[index],Xt3rhsL,elt_count);
+ break;
+ }
+ vec_store_nta(alpharhs[index],alpharhsL);
+ vec_store_nta(Arhs[index],ArhsL);
+ vec_store_nta(At11rhs[index],At11rhsL);
+ vec_store_nta(At12rhs[index],At12rhsL);
+ vec_store_nta(At13rhs[index],At13rhsL);
+ vec_store_nta(At22rhs[index],At22rhsL);
+ vec_store_nta(At23rhs[index],At23rhsL);
+ vec_store_nta(At33rhs[index],At33rhsL);
+ vec_store_nta(B1rhs[index],B1rhsL);
+ vec_store_nta(B2rhs[index],B2rhsL);
+ vec_store_nta(B3rhs[index],B3rhsL);
+ vec_store_nta(beta1rhs[index],beta1rhsL);
+ vec_store_nta(beta2rhs[index],beta2rhsL);
+ vec_store_nta(beta3rhs[index],beta3rhsL);
+ vec_store_nta(gt11rhs[index],gt11rhsL);
+ vec_store_nta(gt12rhs[index],gt12rhsL);
+ vec_store_nta(gt13rhs[index],gt13rhsL);
+ vec_store_nta(gt22rhs[index],gt22rhsL);
+ vec_store_nta(gt23rhs[index],gt23rhsL);
+ vec_store_nta(gt33rhs[index],gt33rhsL);
+ vec_store_nta(phirhs[index],phirhsL);
+ vec_store_nta(trKrhs[index],trKrhsL);
+ vec_store_nta(Xt1rhs[index],Xt1rhsL);
+ vec_store_nta(Xt2rhs[index],Xt2rhsL);
+ vec_store_nta(Xt3rhs[index],Xt3rhsL);
}
- LC_ENDLOOP3 (ML_BSSN_UPW_Advect);
+ LC_ENDLOOP3VEC (ML_BSSN_UPW_Advect);
}
extern "C" void ML_BSSN_UPW_Advect(CCTK_ARGUMENTS)
@@ -351,5 +1368,43 @@ extern "C" void ML_BSSN_UPW_Advect(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_UPW_Advect_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_UPW_Advect_calc_every != ML_BSSN_UPW_Advect_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN_UPW::ML_curv","ML_BSSN_UPW::ML_curvrhs","ML_BSSN_UPW::ML_dtlapse","ML_BSSN_UPW::ML_dtlapserhs","ML_BSSN_UPW::ML_dtshift","ML_BSSN_UPW::ML_dtshiftrhs","ML_BSSN_UPW::ML_Gamma","ML_BSSN_UPW::ML_Gammarhs","ML_BSSN_UPW::ML_lapse","ML_BSSN_UPW::ML_lapserhs","ML_BSSN_UPW::ML_log_confac","ML_BSSN_UPW::ML_log_confacrhs","ML_BSSN_UPW::ML_metric","ML_BSSN_UPW::ML_metricrhs","ML_BSSN_UPW::ML_shift","ML_BSSN_UPW::ML_shiftrhs","ML_BSSN_UPW::ML_trace_curv","ML_BSSN_UPW::ML_trace_curvrhs"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_UPW_Advect", 18, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_UPW_Advect", 2, 2, 2);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_UPW_Advect", 3, 3, 3);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_UPW_Advect", 4, 4, 4);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_UPW_Advect", 5, 5, 5);
+ break;
+ }
+
GenericFD_LoopOverInterior(cctkGH, &ML_BSSN_UPW_Advect_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_UPW_Advect_Body");
+ }
}
diff --git a/ML_BSSN_UPW/src/ML_BSSN_UPW_Dissipation.cc b/ML_BSSN_UPW/src/ML_BSSN_UPW_Dissipation.cc
index fe4cc0e..c2a54b5 100644
--- a/ML_BSSN_UPW/src/ML_BSSN_UPW_Dissipation.cc
+++ b/ML_BSSN_UPW/src/ML_BSSN_UPW_Dissipation.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_UPW_Dissipation_SelectBCs(CCTK_ARGUMENTS)
{
@@ -57,7 +58,7 @@ extern "C" void ML_BSSN_UPW_Dissipation_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_BSSN_UPW_Dissipation_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_UPW_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;
@@ -65,21 +66,6 @@ static void ML_BSSN_UPW_Dissipation_Body(cGH const * restrict const cctkGH, int
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_UPW_Dissipation_Body");
- }
-
- if (cctk_iteration % ML_BSSN_UPW_Dissipation_calc_every != ML_BSSN_UPW_Dissipation_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN_UPW::ML_curv","ML_BSSN_UPW::ML_curvrhs","ML_BSSN_UPW::ML_dtlapse","ML_BSSN_UPW::ML_dtlapserhs","ML_BSSN_UPW::ML_dtshift","ML_BSSN_UPW::ML_dtshiftrhs","ML_BSSN_UPW::ML_Gamma","ML_BSSN_UPW::ML_Gammarhs","ML_BSSN_UPW::ML_lapse","ML_BSSN_UPW::ML_lapserhs","ML_BSSN_UPW::ML_log_confac","ML_BSSN_UPW::ML_log_confacrhs","ML_BSSN_UPW::ML_metric","ML_BSSN_UPW::ML_metricrhs","ML_BSSN_UPW::ML_shift","ML_BSSN_UPW::ML_shiftrhs","ML_BSSN_UPW::ML_trace_curv","ML_BSSN_UPW::ML_trace_curvrhs"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_UPW_Dissipation", 18, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_UPW_Dissipation", 3, 3, 3);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -89,298 +75,1292 @@ static void ML_BSSN_UPW_Dissipation_Body(cGH const * restrict const cctkGH, int
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const p1o24dx = 0.0416666666666666666666666666667*INV(dx);
- CCTK_REAL const p1o24dy = 0.0416666666666666666666666666667*INV(dy);
- CCTK_REAL const p1o24dz = 0.0416666666666666666666666666667*INV(dz);
- CCTK_REAL const p1o64dx = 0.015625*INV(dx);
- CCTK_REAL const p1o64dy = 0.015625*INV(dy);
- CCTK_REAL const p1o64dz = 0.015625*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_UPW_Dissipation,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_UPW_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 AL = A[index];
- CCTK_REAL alphaL = alpha[index];
- CCTK_REAL alpharhsL = alpharhs[index];
- CCTK_REAL ArhsL = Arhs[index];
- CCTK_REAL At11L = At11[index];
- CCTK_REAL At11rhsL = At11rhs[index];
- CCTK_REAL At12L = At12[index];
- CCTK_REAL At12rhsL = At12rhs[index];
- CCTK_REAL At13L = At13[index];
- CCTK_REAL At13rhsL = At13rhs[index];
- CCTK_REAL At22L = At22[index];
- CCTK_REAL At22rhsL = At22rhs[index];
- CCTK_REAL At23L = At23[index];
- CCTK_REAL At23rhsL = At23rhs[index];
- CCTK_REAL At33L = At33[index];
- CCTK_REAL At33rhsL = At33rhs[index];
- CCTK_REAL B1L = B1[index];
- CCTK_REAL B1rhsL = B1rhs[index];
- CCTK_REAL B2L = B2[index];
- CCTK_REAL B2rhsL = B2rhs[index];
- CCTK_REAL B3L = B3[index];
- CCTK_REAL B3rhsL = B3rhs[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta1rhsL = beta1rhs[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta2rhsL = beta2rhs[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL beta3rhsL = beta3rhs[index];
- CCTK_REAL gt11L = gt11[index];
- CCTK_REAL gt11rhsL = gt11rhs[index];
- CCTK_REAL gt12L = gt12[index];
- CCTK_REAL gt12rhsL = gt12rhs[index];
- CCTK_REAL gt13L = gt13[index];
- CCTK_REAL gt13rhsL = gt13rhs[index];
- CCTK_REAL gt22L = gt22[index];
- CCTK_REAL gt22rhsL = gt22rhs[index];
- CCTK_REAL gt23L = gt23[index];
- CCTK_REAL gt23rhsL = gt23rhs[index];
- CCTK_REAL gt33L = gt33[index];
- CCTK_REAL gt33rhsL = gt33rhs[index];
- CCTK_REAL phiL = phi[index];
- CCTK_REAL phirhsL = phirhs[index];
- CCTK_REAL trKL = trK[index];
- CCTK_REAL trKrhsL = trKrhs[index];
- CCTK_REAL Xt1L = Xt1[index];
- CCTK_REAL Xt1rhsL = Xt1rhs[index];
- CCTK_REAL Xt2L = Xt2[index];
- CCTK_REAL Xt2rhsL = Xt2rhs[index];
- CCTK_REAL Xt3L = Xt3[index];
- CCTK_REAL Xt3rhsL = Xt3rhs[index];
+ CCTK_REAL_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 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 const PDdissipationNth1A = PDdissipationNth1(&A[index]);
- CCTK_REAL const PDdissipationNth2A = PDdissipationNth2(&A[index]);
- CCTK_REAL const PDdissipationNth3A = PDdissipationNth3(&A[index]);
- CCTK_REAL const PDdissipationNth1alpha = PDdissipationNth1(&alpha[index]);
- CCTK_REAL const PDdissipationNth2alpha = PDdissipationNth2(&alpha[index]);
- CCTK_REAL const PDdissipationNth3alpha = PDdissipationNth3(&alpha[index]);
- CCTK_REAL const PDdissipationNth1At11 = PDdissipationNth1(&At11[index]);
- CCTK_REAL const PDdissipationNth2At11 = PDdissipationNth2(&At11[index]);
- CCTK_REAL const PDdissipationNth3At11 = PDdissipationNth3(&At11[index]);
- CCTK_REAL const PDdissipationNth1At12 = PDdissipationNth1(&At12[index]);
- CCTK_REAL const PDdissipationNth2At12 = PDdissipationNth2(&At12[index]);
- CCTK_REAL const PDdissipationNth3At12 = PDdissipationNth3(&At12[index]);
- CCTK_REAL const PDdissipationNth1At13 = PDdissipationNth1(&At13[index]);
- CCTK_REAL const PDdissipationNth2At13 = PDdissipationNth2(&At13[index]);
- CCTK_REAL const PDdissipationNth3At13 = PDdissipationNth3(&At13[index]);
- CCTK_REAL const PDdissipationNth1At22 = PDdissipationNth1(&At22[index]);
- CCTK_REAL const PDdissipationNth2At22 = PDdissipationNth2(&At22[index]);
- CCTK_REAL const PDdissipationNth3At22 = PDdissipationNth3(&At22[index]);
- CCTK_REAL const PDdissipationNth1At23 = PDdissipationNth1(&At23[index]);
- CCTK_REAL const PDdissipationNth2At23 = PDdissipationNth2(&At23[index]);
- CCTK_REAL const PDdissipationNth3At23 = PDdissipationNth3(&At23[index]);
- CCTK_REAL const PDdissipationNth1At33 = PDdissipationNth1(&At33[index]);
- CCTK_REAL const PDdissipationNth2At33 = PDdissipationNth2(&At33[index]);
- CCTK_REAL const PDdissipationNth3At33 = PDdissipationNth3(&At33[index]);
- CCTK_REAL const PDdissipationNth1B1 = PDdissipationNth1(&B1[index]);
- CCTK_REAL const PDdissipationNth2B1 = PDdissipationNth2(&B1[index]);
- CCTK_REAL const PDdissipationNth3B1 = PDdissipationNth3(&B1[index]);
- CCTK_REAL const PDdissipationNth1B2 = PDdissipationNth1(&B2[index]);
- CCTK_REAL const PDdissipationNth2B2 = PDdissipationNth2(&B2[index]);
- CCTK_REAL const PDdissipationNth3B2 = PDdissipationNth3(&B2[index]);
- CCTK_REAL const PDdissipationNth1B3 = PDdissipationNth1(&B3[index]);
- CCTK_REAL const PDdissipationNth2B3 = PDdissipationNth2(&B3[index]);
- CCTK_REAL const PDdissipationNth3B3 = PDdissipationNth3(&B3[index]);
- CCTK_REAL const PDdissipationNth1beta1 = PDdissipationNth1(&beta1[index]);
- CCTK_REAL const PDdissipationNth2beta1 = PDdissipationNth2(&beta1[index]);
- CCTK_REAL const PDdissipationNth3beta1 = PDdissipationNth3(&beta1[index]);
- CCTK_REAL const PDdissipationNth1beta2 = PDdissipationNth1(&beta2[index]);
- CCTK_REAL const PDdissipationNth2beta2 = PDdissipationNth2(&beta2[index]);
- CCTK_REAL const PDdissipationNth3beta2 = PDdissipationNth3(&beta2[index]);
- CCTK_REAL const PDdissipationNth1beta3 = PDdissipationNth1(&beta3[index]);
- CCTK_REAL const PDdissipationNth2beta3 = PDdissipationNth2(&beta3[index]);
- CCTK_REAL const PDdissipationNth3beta3 = PDdissipationNth3(&beta3[index]);
- CCTK_REAL const PDdissipationNth1gt11 = PDdissipationNth1(&gt11[index]);
- CCTK_REAL const PDdissipationNth2gt11 = PDdissipationNth2(&gt11[index]);
- CCTK_REAL const PDdissipationNth3gt11 = PDdissipationNth3(&gt11[index]);
- CCTK_REAL const PDdissipationNth1gt12 = PDdissipationNth1(&gt12[index]);
- CCTK_REAL const PDdissipationNth2gt12 = PDdissipationNth2(&gt12[index]);
- CCTK_REAL const PDdissipationNth3gt12 = PDdissipationNth3(&gt12[index]);
- CCTK_REAL const PDdissipationNth1gt13 = PDdissipationNth1(&gt13[index]);
- CCTK_REAL const PDdissipationNth2gt13 = PDdissipationNth2(&gt13[index]);
- CCTK_REAL const PDdissipationNth3gt13 = PDdissipationNth3(&gt13[index]);
- CCTK_REAL const PDdissipationNth1gt22 = PDdissipationNth1(&gt22[index]);
- CCTK_REAL const PDdissipationNth2gt22 = PDdissipationNth2(&gt22[index]);
- CCTK_REAL const PDdissipationNth3gt22 = PDdissipationNth3(&gt22[index]);
- CCTK_REAL const PDdissipationNth1gt23 = PDdissipationNth1(&gt23[index]);
- CCTK_REAL const PDdissipationNth2gt23 = PDdissipationNth2(&gt23[index]);
- CCTK_REAL const PDdissipationNth3gt23 = PDdissipationNth3(&gt23[index]);
- CCTK_REAL const PDdissipationNth1gt33 = PDdissipationNth1(&gt33[index]);
- CCTK_REAL const PDdissipationNth2gt33 = PDdissipationNth2(&gt33[index]);
- CCTK_REAL const PDdissipationNth3gt33 = PDdissipationNth3(&gt33[index]);
- CCTK_REAL const PDdissipationNth1phi = PDdissipationNth1(&phi[index]);
- CCTK_REAL const PDdissipationNth2phi = PDdissipationNth2(&phi[index]);
- CCTK_REAL const PDdissipationNth3phi = PDdissipationNth3(&phi[index]);
- CCTK_REAL const PDdissipationNth1trK = PDdissipationNth1(&trK[index]);
- CCTK_REAL const PDdissipationNth2trK = PDdissipationNth2(&trK[index]);
- CCTK_REAL const PDdissipationNth3trK = PDdissipationNth3(&trK[index]);
- CCTK_REAL const PDdissipationNth1Xt1 = PDdissipationNth1(&Xt1[index]);
- CCTK_REAL const PDdissipationNth2Xt1 = PDdissipationNth2(&Xt1[index]);
- CCTK_REAL const PDdissipationNth3Xt1 = PDdissipationNth3(&Xt1[index]);
- CCTK_REAL const PDdissipationNth1Xt2 = PDdissipationNth1(&Xt2[index]);
- CCTK_REAL const PDdissipationNth2Xt2 = PDdissipationNth2(&Xt2[index]);
- CCTK_REAL const PDdissipationNth3Xt2 = PDdissipationNth3(&Xt2[index]);
- CCTK_REAL const PDdissipationNth1Xt3 = PDdissipationNth1(&Xt3[index]);
- CCTK_REAL const PDdissipationNth2Xt3 = PDdissipationNth2(&Xt3[index]);
- CCTK_REAL const PDdissipationNth3Xt3 = PDdissipationNth3(&Xt3[index]);
+ 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 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]);
+ 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]);
+ 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]);
+ 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]);
+ 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 epsdiss1 = ToReal(EpsDiss);
+ 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 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 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 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)));
+
+ 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)));
+
+ 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)));
+
+ 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;
+
+ JacPDdissipationNth1trK = PDdissipationNth1trK;
+
+ JacPDdissipationNth1Xt1 = PDdissipationNth1Xt1;
+
+ JacPDdissipationNth1Xt2 = PDdissipationNth1Xt2;
+
+ JacPDdissipationNth1Xt3 = PDdissipationNth1Xt3;
+
+ JacPDdissipationNth2A = PDdissipationNth2A;
+
+ JacPDdissipationNth2alpha = PDdissipationNth2alpha;
+
+ JacPDdissipationNth2At11 = PDdissipationNth2At11;
+
+ JacPDdissipationNth2At12 = PDdissipationNth2At12;
+
+ JacPDdissipationNth2At13 = PDdissipationNth2At13;
+
+ JacPDdissipationNth2At22 = PDdissipationNth2At22;
+
+ JacPDdissipationNth2At23 = PDdissipationNth2At23;
+
+ JacPDdissipationNth2At33 = PDdissipationNth2At33;
+
+ JacPDdissipationNth2B1 = PDdissipationNth2B1;
+
+ JacPDdissipationNth2B2 = PDdissipationNth2B2;
+
+ JacPDdissipationNth2B3 = PDdissipationNth2B3;
+
+ JacPDdissipationNth2beta1 = PDdissipationNth2beta1;
+
+ JacPDdissipationNth2beta2 = PDdissipationNth2beta2;
+
+ JacPDdissipationNth2beta3 = PDdissipationNth2beta3;
+
+ JacPDdissipationNth2gt11 = PDdissipationNth2gt11;
+
+ JacPDdissipationNth2gt12 = PDdissipationNth2gt12;
+
+ JacPDdissipationNth2gt13 = PDdissipationNth2gt13;
+
+ JacPDdissipationNth2gt22 = PDdissipationNth2gt22;
+
+ JacPDdissipationNth2gt23 = PDdissipationNth2gt23;
+
+ JacPDdissipationNth2gt33 = PDdissipationNth2gt33;
+
+ JacPDdissipationNth2phi = PDdissipationNth2phi;
+
+ JacPDdissipationNth2trK = PDdissipationNth2trK;
+
+ JacPDdissipationNth2Xt1 = PDdissipationNth2Xt1;
+
+ JacPDdissipationNth2Xt2 = PDdissipationNth2Xt2;
+
+ JacPDdissipationNth2Xt3 = PDdissipationNth2Xt3;
+
+ JacPDdissipationNth3A = PDdissipationNth3A;
+
+ JacPDdissipationNth3alpha = PDdissipationNth3alpha;
+
+ JacPDdissipationNth3At11 = PDdissipationNth3At11;
+
+ JacPDdissipationNth3At12 = PDdissipationNth3At12;
+
+ JacPDdissipationNth3At13 = PDdissipationNth3At13;
+
+ JacPDdissipationNth3At22 = PDdissipationNth3At22;
+
+ JacPDdissipationNth3At23 = PDdissipationNth3At23;
+
+ JacPDdissipationNth3At33 = PDdissipationNth3At33;
+
+ JacPDdissipationNth3B1 = PDdissipationNth3B1;
+
+ JacPDdissipationNth3B2 = PDdissipationNth3B2;
+
+ JacPDdissipationNth3B3 = PDdissipationNth3B3;
+
+ JacPDdissipationNth3beta1 = PDdissipationNth3beta1;
+
+ JacPDdissipationNth3beta2 = PDdissipationNth3beta2;
+
+ JacPDdissipationNth3beta3 = PDdissipationNth3beta3;
+
+ JacPDdissipationNth3gt11 = PDdissipationNth3gt11;
+
+ JacPDdissipationNth3gt12 = PDdissipationNth3gt12;
+
+ JacPDdissipationNth3gt13 = PDdissipationNth3gt13;
+
+ JacPDdissipationNth3gt22 = PDdissipationNth3gt22;
+
+ JacPDdissipationNth3gt23 = PDdissipationNth3gt23;
+
+ JacPDdissipationNth3gt33 = PDdissipationNth3gt33;
+
+ JacPDdissipationNth3phi = PDdissipationNth3phi;
+
+ JacPDdissipationNth3trK = PDdissipationNth3trK;
+
+ JacPDdissipationNth3Xt1 = PDdissipationNth3Xt1;
+
+ JacPDdissipationNth3Xt2 = PDdissipationNth3Xt2;
+
+ JacPDdissipationNth3Xt3 = PDdissipationNth3Xt3;
+ }
- CCTK_REAL epsdiss2 = ToReal(EpsDiss);
+ CCTK_REAL_VEC epsdiss1 = ToReal(EpsDiss);
- CCTK_REAL epsdiss3 = ToReal(EpsDiss);
+ CCTK_REAL_VEC epsdiss2 = ToReal(EpsDiss);
- phirhsL = epsdiss1*PDdissipationNth1phi +
- epsdiss2*PDdissipationNth2phi + epsdiss3*PDdissipationNth3phi +
- phirhsL;
+ CCTK_REAL_VEC epsdiss3 = ToReal(EpsDiss);
- gt11rhsL = gt11rhsL + epsdiss1*PDdissipationNth1gt11 +
- epsdiss2*PDdissipationNth2gt11 + epsdiss3*PDdissipationNth3gt11;
+ phirhsL =
+ kmadd(epsdiss1,JacPDdissipationNth1phi,kmadd(epsdiss2,JacPDdissipationNth2phi,kmadd(epsdiss3,JacPDdissipationNth3phi,phirhsL)));
- gt12rhsL = gt12rhsL + epsdiss1*PDdissipationNth1gt12 +
- epsdiss2*PDdissipationNth2gt12 + epsdiss3*PDdissipationNth3gt12;
+ gt11rhsL =
+ kadd(gt11rhsL,kmadd(epsdiss1,JacPDdissipationNth1gt11,kmadd(epsdiss2,JacPDdissipationNth2gt11,kmul(epsdiss3,JacPDdissipationNth3gt11))));
- gt13rhsL = gt13rhsL + epsdiss1*PDdissipationNth1gt13 +
- epsdiss2*PDdissipationNth2gt13 + epsdiss3*PDdissipationNth3gt13;
+ gt12rhsL =
+ kadd(gt12rhsL,kmadd(epsdiss1,JacPDdissipationNth1gt12,kmadd(epsdiss2,JacPDdissipationNth2gt12,kmul(epsdiss3,JacPDdissipationNth3gt12))));
- gt22rhsL = gt22rhsL + epsdiss1*PDdissipationNth1gt22 +
- epsdiss2*PDdissipationNth2gt22 + epsdiss3*PDdissipationNth3gt22;
+ gt13rhsL =
+ kadd(gt13rhsL,kmadd(epsdiss1,JacPDdissipationNth1gt13,kmadd(epsdiss2,JacPDdissipationNth2gt13,kmul(epsdiss3,JacPDdissipationNth3gt13))));
- gt23rhsL = gt23rhsL + epsdiss1*PDdissipationNth1gt23 +
- epsdiss2*PDdissipationNth2gt23 + epsdiss3*PDdissipationNth3gt23;
+ gt22rhsL =
+ kadd(gt22rhsL,kmadd(epsdiss1,JacPDdissipationNth1gt22,kmadd(epsdiss2,JacPDdissipationNth2gt22,kmul(epsdiss3,JacPDdissipationNth3gt22))));
- gt33rhsL = gt33rhsL + epsdiss1*PDdissipationNth1gt33 +
- epsdiss2*PDdissipationNth2gt33 + epsdiss3*PDdissipationNth3gt33;
+ gt23rhsL =
+ kadd(gt23rhsL,kmadd(epsdiss1,JacPDdissipationNth1gt23,kmadd(epsdiss2,JacPDdissipationNth2gt23,kmul(epsdiss3,JacPDdissipationNth3gt23))));
- Xt1rhsL = epsdiss1*PDdissipationNth1Xt1 +
- epsdiss2*PDdissipationNth2Xt1 + epsdiss3*PDdissipationNth3Xt1 +
- Xt1rhsL;
+ gt33rhsL =
+ kadd(gt33rhsL,kmadd(epsdiss1,JacPDdissipationNth1gt33,kmadd(epsdiss2,JacPDdissipationNth2gt33,kmul(epsdiss3,JacPDdissipationNth3gt33))));
- Xt2rhsL = epsdiss1*PDdissipationNth1Xt2 +
- epsdiss2*PDdissipationNth2Xt2 + epsdiss3*PDdissipationNth3Xt2 +
- Xt2rhsL;
+ Xt1rhsL =
+ kmadd(epsdiss1,JacPDdissipationNth1Xt1,kmadd(epsdiss2,JacPDdissipationNth2Xt1,kmadd(epsdiss3,JacPDdissipationNth3Xt1,Xt1rhsL)));
- Xt3rhsL = epsdiss1*PDdissipationNth1Xt3 +
- epsdiss2*PDdissipationNth2Xt3 + epsdiss3*PDdissipationNth3Xt3 +
- Xt3rhsL;
+ Xt2rhsL =
+ kmadd(epsdiss1,JacPDdissipationNth1Xt2,kmadd(epsdiss2,JacPDdissipationNth2Xt2,kmadd(epsdiss3,JacPDdissipationNth3Xt2,Xt2rhsL)));
- trKrhsL = epsdiss1*PDdissipationNth1trK +
- epsdiss2*PDdissipationNth2trK + epsdiss3*PDdissipationNth3trK +
- trKrhsL;
+ Xt3rhsL =
+ kmadd(epsdiss1,JacPDdissipationNth1Xt3,kmadd(epsdiss2,JacPDdissipationNth2Xt3,kmadd(epsdiss3,JacPDdissipationNth3Xt3,Xt3rhsL)));
- At11rhsL = At11rhsL + epsdiss1*PDdissipationNth1At11 +
- epsdiss2*PDdissipationNth2At11 + epsdiss3*PDdissipationNth3At11;
+ trKrhsL =
+ kmadd(epsdiss1,JacPDdissipationNth1trK,kmadd(epsdiss2,JacPDdissipationNth2trK,kmadd(epsdiss3,JacPDdissipationNth3trK,trKrhsL)));
- At12rhsL = At12rhsL + epsdiss1*PDdissipationNth1At12 +
- epsdiss2*PDdissipationNth2At12 + epsdiss3*PDdissipationNth3At12;
+ At11rhsL =
+ kadd(At11rhsL,kmadd(epsdiss1,JacPDdissipationNth1At11,kmadd(epsdiss2,JacPDdissipationNth2At11,kmul(epsdiss3,JacPDdissipationNth3At11))));
- At13rhsL = At13rhsL + epsdiss1*PDdissipationNth1At13 +
- epsdiss2*PDdissipationNth2At13 + epsdiss3*PDdissipationNth3At13;
+ At12rhsL =
+ kadd(At12rhsL,kmadd(epsdiss1,JacPDdissipationNth1At12,kmadd(epsdiss2,JacPDdissipationNth2At12,kmul(epsdiss3,JacPDdissipationNth3At12))));
- At22rhsL = At22rhsL + epsdiss1*PDdissipationNth1At22 +
- epsdiss2*PDdissipationNth2At22 + epsdiss3*PDdissipationNth3At22;
+ At13rhsL =
+ kadd(At13rhsL,kmadd(epsdiss1,JacPDdissipationNth1At13,kmadd(epsdiss2,JacPDdissipationNth2At13,kmul(epsdiss3,JacPDdissipationNth3At13))));
- At23rhsL = At23rhsL + epsdiss1*PDdissipationNth1At23 +
- epsdiss2*PDdissipationNth2At23 + epsdiss3*PDdissipationNth3At23;
+ At22rhsL =
+ kadd(At22rhsL,kmadd(epsdiss1,JacPDdissipationNth1At22,kmadd(epsdiss2,JacPDdissipationNth2At22,kmul(epsdiss3,JacPDdissipationNth3At22))));
- At33rhsL = At33rhsL + epsdiss1*PDdissipationNth1At33 +
- epsdiss2*PDdissipationNth2At33 + epsdiss3*PDdissipationNth3At33;
+ At23rhsL =
+ kadd(At23rhsL,kmadd(epsdiss1,JacPDdissipationNth1At23,kmadd(epsdiss2,JacPDdissipationNth2At23,kmul(epsdiss3,JacPDdissipationNth3At23))));
- alpharhsL = alpharhsL + epsdiss1*PDdissipationNth1alpha +
- epsdiss2*PDdissipationNth2alpha + epsdiss3*PDdissipationNth3alpha;
+ At33rhsL =
+ kadd(At33rhsL,kmadd(epsdiss1,JacPDdissipationNth1At33,kmadd(epsdiss2,JacPDdissipationNth2At33,kmul(epsdiss3,JacPDdissipationNth3At33))));
- ArhsL = ArhsL + epsdiss1*PDdissipationNth1A +
- epsdiss2*PDdissipationNth2A + epsdiss3*PDdissipationNth3A;
+ alpharhsL =
+ kadd(alpharhsL,kmadd(epsdiss1,JacPDdissipationNth1alpha,kmadd(epsdiss2,JacPDdissipationNth2alpha,kmul(epsdiss3,JacPDdissipationNth3alpha))));
- beta1rhsL = beta1rhsL + epsdiss1*PDdissipationNth1beta1 +
- epsdiss2*PDdissipationNth2beta1 + epsdiss3*PDdissipationNth3beta1;
+ ArhsL =
+ kadd(ArhsL,kmadd(epsdiss1,JacPDdissipationNth1A,kmadd(epsdiss2,JacPDdissipationNth2A,kmul(epsdiss3,JacPDdissipationNth3A))));
- beta2rhsL = beta2rhsL + epsdiss1*PDdissipationNth1beta2 +
- epsdiss2*PDdissipationNth2beta2 + epsdiss3*PDdissipationNth3beta2;
+ beta1rhsL =
+ kadd(beta1rhsL,kmadd(epsdiss1,JacPDdissipationNth1beta1,kmadd(epsdiss2,JacPDdissipationNth2beta1,kmul(epsdiss3,JacPDdissipationNth3beta1))));
- beta3rhsL = beta3rhsL + epsdiss1*PDdissipationNth1beta3 +
- epsdiss2*PDdissipationNth2beta3 + epsdiss3*PDdissipationNth3beta3;
+ beta2rhsL =
+ kadd(beta2rhsL,kmadd(epsdiss1,JacPDdissipationNth1beta2,kmadd(epsdiss2,JacPDdissipationNth2beta2,kmul(epsdiss3,JacPDdissipationNth3beta2))));
- B1rhsL = B1rhsL + epsdiss1*PDdissipationNth1B1 +
- epsdiss2*PDdissipationNth2B1 + epsdiss3*PDdissipationNth3B1;
+ beta3rhsL =
+ kadd(beta3rhsL,kmadd(epsdiss1,JacPDdissipationNth1beta3,kmadd(epsdiss2,JacPDdissipationNth2beta3,kmul(epsdiss3,JacPDdissipationNth3beta3))));
- B2rhsL = B2rhsL + epsdiss1*PDdissipationNth1B2 +
- epsdiss2*PDdissipationNth2B2 + epsdiss3*PDdissipationNth3B2;
+ B1rhsL =
+ kadd(B1rhsL,kmadd(epsdiss1,JacPDdissipationNth1B1,kmadd(epsdiss2,JacPDdissipationNth2B1,kmul(epsdiss3,JacPDdissipationNth3B1))));
- B3rhsL = B3rhsL + epsdiss1*PDdissipationNth1B3 +
- epsdiss2*PDdissipationNth2B3 + epsdiss3*PDdissipationNth3B3;
+ B2rhsL =
+ kadd(B2rhsL,kmadd(epsdiss1,JacPDdissipationNth1B2,kmadd(epsdiss2,JacPDdissipationNth2B2,kmul(epsdiss3,JacPDdissipationNth3B2))));
- /* Copy local copies back to grid functions */
- alpharhs[index] = alpharhsL;
- Arhs[index] = ArhsL;
- At11rhs[index] = At11rhsL;
- At12rhs[index] = At12rhsL;
- At13rhs[index] = At13rhsL;
- At22rhs[index] = At22rhsL;
- At23rhs[index] = At23rhsL;
- At33rhs[index] = At33rhsL;
- B1rhs[index] = B1rhsL;
- B2rhs[index] = B2rhsL;
- B3rhs[index] = B3rhsL;
- beta1rhs[index] = beta1rhsL;
- beta2rhs[index] = beta2rhsL;
- beta3rhs[index] = beta3rhsL;
- gt11rhs[index] = gt11rhsL;
- gt12rhs[index] = gt12rhsL;
- gt13rhs[index] = gt13rhsL;
- gt22rhs[index] = gt22rhsL;
- gt23rhs[index] = gt23rhsL;
- gt33rhs[index] = gt33rhsL;
- phirhs[index] = phirhsL;
- trKrhs[index] = trKrhsL;
- Xt1rhs[index] = Xt1rhsL;
- Xt2rhs[index] = Xt2rhsL;
- Xt3rhs[index] = Xt3rhsL;
+ B3rhsL =
+ kadd(B3rhsL,kmadd(epsdiss1,JacPDdissipationNth1B3,kmadd(epsdiss2,JacPDdissipationNth2B3,kmul(epsdiss3,JacPDdissipationNth3B3))));
+
+ /* 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(Arhs[index],ArhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At11rhs[index],At11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At12rhs[index],At12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At13rhs[index],At13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At22rhs[index],At22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At23rhs[index],At23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At33rhs[index],At33rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B1rhs[index],B1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B2rhs[index],B2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt12rhs[index],gt12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt13rhs[index],gt13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt22rhs[index],gt22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt23rhs[index],gt23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt33rhs[index],gt33rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(phirhs[index],phirhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(trKrhs[index],trKrhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt1rhs[index],Xt1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt2rhs[index],Xt2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt3rhs[index],Xt3rhsL,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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_hi(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_hi(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_hi(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_hi(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_hi(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_hi(At33rhs[index],At33rhsL,elt_count);
+ vec_store_nta_partial_hi(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_hi(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_hi(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_hi(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_hi(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_hi(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_hi(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_hi(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_hi(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_hi(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_hi(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt3rhs[index],Xt3rhsL,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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_lo(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_lo(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_lo(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_lo(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_lo(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_lo(At33rhs[index],At33rhsL,elt_count);
+ vec_store_nta_partial_lo(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_lo(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_lo(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_lo(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_lo(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_lo(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_lo(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_lo(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_lo(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_lo(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_lo(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt3rhs[index],Xt3rhsL,elt_count);
+ break;
+ }
+ vec_store_nta(alpharhs[index],alpharhsL);
+ vec_store_nta(Arhs[index],ArhsL);
+ vec_store_nta(At11rhs[index],At11rhsL);
+ vec_store_nta(At12rhs[index],At12rhsL);
+ vec_store_nta(At13rhs[index],At13rhsL);
+ vec_store_nta(At22rhs[index],At22rhsL);
+ vec_store_nta(At23rhs[index],At23rhsL);
+ vec_store_nta(At33rhs[index],At33rhsL);
+ vec_store_nta(B1rhs[index],B1rhsL);
+ vec_store_nta(B2rhs[index],B2rhsL);
+ vec_store_nta(B3rhs[index],B3rhsL);
+ vec_store_nta(beta1rhs[index],beta1rhsL);
+ vec_store_nta(beta2rhs[index],beta2rhsL);
+ vec_store_nta(beta3rhs[index],beta3rhsL);
+ vec_store_nta(gt11rhs[index],gt11rhsL);
+ vec_store_nta(gt12rhs[index],gt12rhsL);
+ vec_store_nta(gt13rhs[index],gt13rhsL);
+ vec_store_nta(gt22rhs[index],gt22rhsL);
+ vec_store_nta(gt23rhs[index],gt23rhsL);
+ vec_store_nta(gt33rhs[index],gt33rhsL);
+ vec_store_nta(phirhs[index],phirhsL);
+ vec_store_nta(trKrhs[index],trKrhsL);
+ vec_store_nta(Xt1rhs[index],Xt1rhsL);
+ vec_store_nta(Xt2rhs[index],Xt2rhsL);
+ vec_store_nta(Xt3rhs[index],Xt3rhsL);
}
- LC_ENDLOOP3 (ML_BSSN_UPW_Dissipation);
+ LC_ENDLOOP3VEC (ML_BSSN_UPW_Dissipation);
}
extern "C" void ML_BSSN_UPW_Dissipation(CCTK_ARGUMENTS)
@@ -388,5 +1368,43 @@ extern "C" void ML_BSSN_UPW_Dissipation(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_UPW_Dissipation_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_UPW_Dissipation_calc_every != ML_BSSN_UPW_Dissipation_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN_UPW::ML_curv","ML_BSSN_UPW::ML_curvrhs","ML_BSSN_UPW::ML_dtlapse","ML_BSSN_UPW::ML_dtlapserhs","ML_BSSN_UPW::ML_dtshift","ML_BSSN_UPW::ML_dtshiftrhs","ML_BSSN_UPW::ML_Gamma","ML_BSSN_UPW::ML_Gammarhs","ML_BSSN_UPW::ML_lapse","ML_BSSN_UPW::ML_lapserhs","ML_BSSN_UPW::ML_log_confac","ML_BSSN_UPW::ML_log_confacrhs","ML_BSSN_UPW::ML_metric","ML_BSSN_UPW::ML_metricrhs","ML_BSSN_UPW::ML_shift","ML_BSSN_UPW::ML_shiftrhs","ML_BSSN_UPW::ML_trace_curv","ML_BSSN_UPW::ML_trace_curvrhs"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_UPW_Dissipation", 18, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_UPW_Dissipation", 2, 2, 2);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_UPW_Dissipation", 3, 3, 3);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_UPW_Dissipation", 4, 4, 4);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_UPW_Dissipation", 5, 5, 5);
+ break;
+ }
+
GenericFD_LoopOverInterior(cctkGH, &ML_BSSN_UPW_Dissipation_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_UPW_Dissipation_Body");
+ }
}
diff --git a/ML_BSSN_UPW/src/ML_BSSN_UPW_InitGamma.cc b/ML_BSSN_UPW/src/ML_BSSN_UPW_InitGamma.cc
index fc3c938..88908e9 100644
--- a/ML_BSSN_UPW/src/ML_BSSN_UPW_InitGamma.cc
+++ b/ML_BSSN_UPW/src/ML_BSSN_UPW_InitGamma.cc
@@ -13,15 +13,16 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
-static void ML_BSSN_UPW_InitGamma_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_UPW_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;
@@ -29,20 +30,6 @@ static void ML_BSSN_UPW_InitGamma_Body(cGH const * restrict const cctkGH, int co
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_UPW_InitGamma_Body");
- }
-
- if (cctk_iteration % ML_BSSN_UPW_InitGamma_calc_every != ML_BSSN_UPW_InitGamma_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN_UPW::ML_Gamma"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_UPW_InitGamma", 1, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -52,47 +39,162 @@ static void ML_BSSN_UPW_InitGamma_Body(cGH const * restrict const cctkGH, int co
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const p1o24dx = 0.0416666666666666666666666666667*INV(dx);
- CCTK_REAL const p1o24dy = 0.0416666666666666666666666666667*INV(dy);
- CCTK_REAL const p1o24dz = 0.0416666666666666666666666666667*INV(dz);
- CCTK_REAL const p1o64dx = 0.015625*INV(dx);
- CCTK_REAL const p1o64dy = 0.015625*INV(dy);
- CCTK_REAL const p1o64dz = 0.015625*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_UPW_InitGamma,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_UPW_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;
@@ -100,23 +202,95 @@ static void ML_BSSN_UPW_InitGamma_Body(cGH const * restrict const cctkGH, int co
+
/* 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 Xt1L = 0;
+ 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 Xt2L = 0;
+ CCTK_REAL_VEC B1L = ToReal(0);
- CCTK_REAL Xt3L = 0;
+ CCTK_REAL_VEC B2L = ToReal(0);
- /* Copy local copies back to grid functions */
- Xt1[index] = Xt1L;
- Xt2[index] = Xt2L;
- Xt3[index] = Xt3L;
+ CCTK_REAL_VEC B3L = 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(A[index],AL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B1[index],B1L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B2[index],B2L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B3[index],B3L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt1[index],Xt1L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt2[index],Xt2L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt3[index],Xt3L,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(A[index],AL,elt_count);
+ vec_store_nta_partial_hi(B1[index],B1L,elt_count);
+ vec_store_nta_partial_hi(B2[index],B2L,elt_count);
+ vec_store_nta_partial_hi(B3[index],B3L,elt_count);
+ vec_store_nta_partial_hi(Xt1[index],Xt1L,elt_count);
+ vec_store_nta_partial_hi(Xt2[index],Xt2L,elt_count);
+ vec_store_nta_partial_hi(Xt3[index],Xt3L,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(A[index],AL,elt_count);
+ vec_store_nta_partial_lo(B1[index],B1L,elt_count);
+ vec_store_nta_partial_lo(B2[index],B2L,elt_count);
+ vec_store_nta_partial_lo(B3[index],B3L,elt_count);
+ vec_store_nta_partial_lo(Xt1[index],Xt1L,elt_count);
+ vec_store_nta_partial_lo(Xt2[index],Xt2L,elt_count);
+ vec_store_nta_partial_lo(Xt3[index],Xt3L,elt_count);
+ break;
+ }
+ vec_store_nta(A[index],AL);
+ vec_store_nta(B1[index],B1L);
+ vec_store_nta(B2[index],B2L);
+ vec_store_nta(B3[index],B3L);
+ vec_store_nta(Xt1[index],Xt1L);
+ vec_store_nta(Xt2[index],Xt2L);
+ vec_store_nta(Xt3[index],Xt3L);
}
- LC_ENDLOOP3 (ML_BSSN_UPW_InitGamma);
+ LC_ENDLOOP3VEC (ML_BSSN_UPW_InitGamma);
}
extern "C" void ML_BSSN_UPW_InitGamma(CCTK_ARGUMENTS)
@@ -124,5 +298,39 @@ extern "C" void ML_BSSN_UPW_InitGamma(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_UPW_InitGamma_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_UPW_InitGamma_calc_every != ML_BSSN_UPW_InitGamma_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN_UPW::ML_dtlapse","ML_BSSN_UPW::ML_dtshift","ML_BSSN_UPW::ML_Gamma"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_UPW_InitGamma", 3, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverEverything(cctkGH, &ML_BSSN_UPW_InitGamma_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_UPW_InitGamma_Body");
+ }
}
diff --git a/ML_BSSN_UPW/src/ML_BSSN_UPW_InitRHS.cc b/ML_BSSN_UPW/src/ML_BSSN_UPW_InitRHS.cc
index d22ada4..385b62e 100644
--- a/ML_BSSN_UPW/src/ML_BSSN_UPW_InitRHS.cc
+++ b/ML_BSSN_UPW/src/ML_BSSN_UPW_InitRHS.cc
@@ -13,15 +13,16 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
-static void ML_BSSN_UPW_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_UPW_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;
@@ -29,20 +30,6 @@ static void ML_BSSN_UPW_InitRHS_Body(cGH const * restrict const cctkGH, int cons
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_UPW_InitRHS_Body");
- }
-
- if (cctk_iteration % ML_BSSN_UPW_InitRHS_calc_every != ML_BSSN_UPW_InitRHS_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN_UPW::ML_curvrhs","ML_BSSN_UPW::ML_dtlapserhs","ML_BSSN_UPW::ML_dtshiftrhs","ML_BSSN_UPW::ML_Gammarhs","ML_BSSN_UPW::ML_lapserhs","ML_BSSN_UPW::ML_log_confacrhs","ML_BSSN_UPW::ML_metricrhs","ML_BSSN_UPW::ML_shiftrhs","ML_BSSN_UPW::ML_trace_curvrhs"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_UPW_InitRHS", 9, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -52,47 +39,162 @@ static void ML_BSSN_UPW_InitRHS_Body(cGH const * restrict const cctkGH, int cons
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const p1o24dx = 0.0416666666666666666666666666667*INV(dx);
- CCTK_REAL const p1o24dy = 0.0416666666666666666666666666667*INV(dy);
- CCTK_REAL const p1o24dz = 0.0416666666666666666666666666667*INV(dz);
- CCTK_REAL const p1o64dx = 0.015625*INV(dx);
- CCTK_REAL const p1o64dy = 0.015625*INV(dy);
- CCTK_REAL const p1o64dz = 0.015625*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_UPW_InitRHS,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_UPW_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;
@@ -100,89 +202,203 @@ static void ML_BSSN_UPW_InitRHS_Body(cGH const * restrict const cctkGH, int cons
+
/* 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 phirhsL = 0;
+ CCTK_REAL_VEC phirhsL = ToReal(0);
+
+ CCTK_REAL_VEC gt11rhsL = ToReal(0);
- CCTK_REAL gt11rhsL = 0;
+ CCTK_REAL_VEC gt12rhsL = ToReal(0);
- CCTK_REAL gt12rhsL = 0;
+ CCTK_REAL_VEC gt13rhsL = ToReal(0);
- CCTK_REAL gt13rhsL = 0;
+ CCTK_REAL_VEC gt22rhsL = ToReal(0);
- CCTK_REAL gt22rhsL = 0;
+ CCTK_REAL_VEC gt23rhsL = ToReal(0);
- CCTK_REAL gt23rhsL = 0;
+ CCTK_REAL_VEC gt33rhsL = ToReal(0);
- CCTK_REAL gt33rhsL = 0;
+ CCTK_REAL_VEC trKrhsL = ToReal(0);
- CCTK_REAL trKrhsL = 0;
+ CCTK_REAL_VEC At11rhsL = ToReal(0);
- CCTK_REAL At11rhsL = 0;
+ CCTK_REAL_VEC At12rhsL = ToReal(0);
- CCTK_REAL At12rhsL = 0;
+ CCTK_REAL_VEC At13rhsL = ToReal(0);
- CCTK_REAL At13rhsL = 0;
+ CCTK_REAL_VEC At22rhsL = ToReal(0);
- CCTK_REAL At22rhsL = 0;
+ CCTK_REAL_VEC At23rhsL = ToReal(0);
- CCTK_REAL At23rhsL = 0;
+ CCTK_REAL_VEC At33rhsL = ToReal(0);
- CCTK_REAL At33rhsL = 0;
+ CCTK_REAL_VEC Xt1rhsL = ToReal(0);
- CCTK_REAL Xt1rhsL = 0;
+ CCTK_REAL_VEC Xt2rhsL = ToReal(0);
- CCTK_REAL Xt2rhsL = 0;
+ CCTK_REAL_VEC Xt3rhsL = ToReal(0);
- CCTK_REAL Xt3rhsL = 0;
+ CCTK_REAL_VEC alpharhsL = ToReal(0);
- CCTK_REAL alpharhsL = 0;
+ CCTK_REAL_VEC ArhsL = ToReal(0);
- CCTK_REAL ArhsL = 0;
+ CCTK_REAL_VEC beta1rhsL = ToReal(0);
- CCTK_REAL beta1rhsL = 0;
+ CCTK_REAL_VEC beta2rhsL = ToReal(0);
- CCTK_REAL beta2rhsL = 0;
+ CCTK_REAL_VEC beta3rhsL = ToReal(0);
- CCTK_REAL beta3rhsL = 0;
+ CCTK_REAL_VEC B1rhsL = ToReal(0);
- CCTK_REAL B1rhsL = 0;
+ CCTK_REAL_VEC B2rhsL = ToReal(0);
- CCTK_REAL B2rhsL = 0;
+ CCTK_REAL_VEC B3rhsL = ToReal(0);
- CCTK_REAL B3rhsL = 0;
+ /* If necessary, store only partial vectors after the first iteration */
- /* Copy local copies back to grid functions */
- alpharhs[index] = alpharhsL;
- Arhs[index] = ArhsL;
- At11rhs[index] = At11rhsL;
- At12rhs[index] = At12rhsL;
- At13rhs[index] = At13rhsL;
- At22rhs[index] = At22rhsL;
- At23rhs[index] = At23rhsL;
- At33rhs[index] = At33rhsL;
- B1rhs[index] = B1rhsL;
- B2rhs[index] = B2rhsL;
- B3rhs[index] = B3rhsL;
- beta1rhs[index] = beta1rhsL;
- beta2rhs[index] = beta2rhsL;
- beta3rhs[index] = beta3rhsL;
- gt11rhs[index] = gt11rhsL;
- gt12rhs[index] = gt12rhsL;
- gt13rhs[index] = gt13rhsL;
- gt22rhs[index] = gt22rhsL;
- gt23rhs[index] = gt23rhsL;
- gt33rhs[index] = gt33rhsL;
- phirhs[index] = phirhsL;
- trKrhs[index] = trKrhsL;
- Xt1rhs[index] = Xt1rhsL;
- Xt2rhs[index] = Xt2rhsL;
- Xt3rhs[index] = Xt3rhsL;
+ 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(Arhs[index],ArhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At11rhs[index],At11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At12rhs[index],At12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At13rhs[index],At13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At22rhs[index],At22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At23rhs[index],At23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At33rhs[index],At33rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B1rhs[index],B1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B2rhs[index],B2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt12rhs[index],gt12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt13rhs[index],gt13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt22rhs[index],gt22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt23rhs[index],gt23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt33rhs[index],gt33rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(phirhs[index],phirhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(trKrhs[index],trKrhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt1rhs[index],Xt1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt2rhs[index],Xt2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt3rhs[index],Xt3rhsL,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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_hi(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_hi(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_hi(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_hi(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_hi(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_hi(At33rhs[index],At33rhsL,elt_count);
+ vec_store_nta_partial_hi(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_hi(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_hi(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_hi(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_hi(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_hi(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_hi(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_hi(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_hi(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_hi(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_hi(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt3rhs[index],Xt3rhsL,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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_lo(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_lo(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_lo(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_lo(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_lo(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_lo(At33rhs[index],At33rhsL,elt_count);
+ vec_store_nta_partial_lo(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_lo(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_lo(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_lo(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_lo(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_lo(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_lo(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_lo(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_lo(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_lo(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_lo(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt3rhs[index],Xt3rhsL,elt_count);
+ break;
+ }
+ vec_store_nta(alpharhs[index],alpharhsL);
+ vec_store_nta(Arhs[index],ArhsL);
+ vec_store_nta(At11rhs[index],At11rhsL);
+ vec_store_nta(At12rhs[index],At12rhsL);
+ vec_store_nta(At13rhs[index],At13rhsL);
+ vec_store_nta(At22rhs[index],At22rhsL);
+ vec_store_nta(At23rhs[index],At23rhsL);
+ vec_store_nta(At33rhs[index],At33rhsL);
+ vec_store_nta(B1rhs[index],B1rhsL);
+ vec_store_nta(B2rhs[index],B2rhsL);
+ vec_store_nta(B3rhs[index],B3rhsL);
+ vec_store_nta(beta1rhs[index],beta1rhsL);
+ vec_store_nta(beta2rhs[index],beta2rhsL);
+ vec_store_nta(beta3rhs[index],beta3rhsL);
+ vec_store_nta(gt11rhs[index],gt11rhsL);
+ vec_store_nta(gt12rhs[index],gt12rhsL);
+ vec_store_nta(gt13rhs[index],gt13rhsL);
+ vec_store_nta(gt22rhs[index],gt22rhsL);
+ vec_store_nta(gt23rhs[index],gt23rhsL);
+ vec_store_nta(gt33rhs[index],gt33rhsL);
+ vec_store_nta(phirhs[index],phirhsL);
+ vec_store_nta(trKrhs[index],trKrhsL);
+ vec_store_nta(Xt1rhs[index],Xt1rhsL);
+ vec_store_nta(Xt2rhs[index],Xt2rhsL);
+ vec_store_nta(Xt3rhs[index],Xt3rhsL);
}
- LC_ENDLOOP3 (ML_BSSN_UPW_InitRHS);
+ LC_ENDLOOP3VEC (ML_BSSN_UPW_InitRHS);
}
extern "C" void ML_BSSN_UPW_InitRHS(CCTK_ARGUMENTS)
@@ -190,5 +406,39 @@ extern "C" void ML_BSSN_UPW_InitRHS(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_UPW_InitRHS_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_UPW_InitRHS_calc_every != ML_BSSN_UPW_InitRHS_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN_UPW::ML_curvrhs","ML_BSSN_UPW::ML_dtlapserhs","ML_BSSN_UPW::ML_dtshiftrhs","ML_BSSN_UPW::ML_Gammarhs","ML_BSSN_UPW::ML_lapserhs","ML_BSSN_UPW::ML_log_confacrhs","ML_BSSN_UPW::ML_metricrhs","ML_BSSN_UPW::ML_shiftrhs","ML_BSSN_UPW::ML_trace_curvrhs"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_UPW_InitRHS", 9, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverEverything(cctkGH, &ML_BSSN_UPW_InitRHS_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_UPW_InitRHS_Body");
+ }
}
diff --git a/ML_BSSN_UPW/src/ML_BSSN_UPW_Minkowski.cc b/ML_BSSN_UPW/src/ML_BSSN_UPW_Minkowski.cc
index 17ffe3d..91ef782 100644
--- a/ML_BSSN_UPW/src/ML_BSSN_UPW_Minkowski.cc
+++ b/ML_BSSN_UPW/src/ML_BSSN_UPW_Minkowski.cc
@@ -13,15 +13,16 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
-static void ML_BSSN_UPW_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_UPW_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;
@@ -29,20 +30,6 @@ static void ML_BSSN_UPW_Minkowski_Body(cGH const * restrict const cctkGH, int co
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_UPW_Minkowski_Body");
- }
-
- if (cctk_iteration % ML_BSSN_UPW_Minkowski_calc_every != ML_BSSN_UPW_Minkowski_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN_UPW::ML_curv","ML_BSSN_UPW::ML_dtlapse","ML_BSSN_UPW::ML_dtshift","ML_BSSN_UPW::ML_Gamma","ML_BSSN_UPW::ML_lapse","ML_BSSN_UPW::ML_log_confac","ML_BSSN_UPW::ML_metric","ML_BSSN_UPW::ML_shift","ML_BSSN_UPW::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_UPW_Minkowski", 9, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -52,47 +39,162 @@ static void ML_BSSN_UPW_Minkowski_Body(cGH const * restrict const cctkGH, int co
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const p1o24dx = 0.0416666666666666666666666666667*INV(dx);
- CCTK_REAL const p1o24dy = 0.0416666666666666666666666666667*INV(dy);
- CCTK_REAL const p1o24dz = 0.0416666666666666666666666666667*INV(dz);
- CCTK_REAL const p1o64dx = 0.015625*INV(dx);
- CCTK_REAL const p1o64dy = 0.015625*INV(dy);
- CCTK_REAL const p1o64dz = 0.015625*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_UPW_Minkowski,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_UPW_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;
@@ -100,89 +202,203 @@ static void ML_BSSN_UPW_Minkowski_Body(cGH const * restrict const cctkGH, int co
+
/* 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 phiL = IfThen(conformalMethod,1,0);
+ CCTK_REAL_VEC phiL = IfThen(conformalMethod,ToReal(1),ToReal(0));
+
+ CCTK_REAL_VEC gt11L = ToReal(1);
- CCTK_REAL gt11L = 1;
+ CCTK_REAL_VEC gt12L = ToReal(0);
- CCTK_REAL gt12L = 0;
+ CCTK_REAL_VEC gt13L = ToReal(0);
- CCTK_REAL gt13L = 0;
+ CCTK_REAL_VEC gt22L = ToReal(1);
- CCTK_REAL gt22L = 1;
+ CCTK_REAL_VEC gt23L = ToReal(0);
- CCTK_REAL gt23L = 0;
+ CCTK_REAL_VEC gt33L = ToReal(1);
- CCTK_REAL gt33L = 1;
+ CCTK_REAL_VEC trKL = ToReal(0);
- CCTK_REAL trKL = 0;
+ CCTK_REAL_VEC At11L = ToReal(0);
- CCTK_REAL At11L = 0;
+ CCTK_REAL_VEC At12L = ToReal(0);
- CCTK_REAL At12L = 0;
+ CCTK_REAL_VEC At13L = ToReal(0);
- CCTK_REAL At13L = 0;
+ CCTK_REAL_VEC At22L = ToReal(0);
- CCTK_REAL At22L = 0;
+ CCTK_REAL_VEC At23L = ToReal(0);
- CCTK_REAL At23L = 0;
+ CCTK_REAL_VEC At33L = ToReal(0);
- CCTK_REAL At33L = 0;
+ CCTK_REAL_VEC Xt1L = ToReal(0);
- CCTK_REAL Xt1L = 0;
+ CCTK_REAL_VEC Xt2L = ToReal(0);
- CCTK_REAL Xt2L = 0;
+ CCTK_REAL_VEC Xt3L = ToReal(0);
- CCTK_REAL Xt3L = 0;
+ CCTK_REAL_VEC alphaL = ToReal(1);
- CCTK_REAL alphaL = 1;
+ CCTK_REAL_VEC AL = ToReal(0);
- CCTK_REAL AL = 0;
+ CCTK_REAL_VEC beta1L = ToReal(0);
- CCTK_REAL beta1L = 0;
+ CCTK_REAL_VEC beta2L = ToReal(0);
- CCTK_REAL beta2L = 0;
+ CCTK_REAL_VEC beta3L = ToReal(0);
- CCTK_REAL beta3L = 0;
+ CCTK_REAL_VEC B1L = ToReal(0);
- CCTK_REAL B1L = 0;
+ CCTK_REAL_VEC B2L = ToReal(0);
- CCTK_REAL B2L = 0;
+ CCTK_REAL_VEC B3L = ToReal(0);
- CCTK_REAL B3L = 0;
+ /* If necessary, store only partial vectors after the first iteration */
- /* Copy local copies back to grid functions */
- A[index] = AL;
- alpha[index] = alphaL;
- At11[index] = At11L;
- At12[index] = At12L;
- At13[index] = At13L;
- At22[index] = At22L;
- At23[index] = At23L;
- At33[index] = At33L;
- B1[index] = B1L;
- B2[index] = B2L;
- B3[index] = B3L;
- beta1[index] = beta1L;
- beta2[index] = beta2L;
- beta3[index] = beta3L;
- gt11[index] = gt11L;
- gt12[index] = gt12L;
- gt13[index] = gt13L;
- gt22[index] = gt22L;
- gt23[index] = gt23L;
- gt33[index] = gt33L;
- phi[index] = phiL;
- trK[index] = trKL;
- Xt1[index] = Xt1L;
- Xt2[index] = Xt2L;
- Xt3[index] = Xt3L;
+ 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(A[index],AL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(alpha[index],alphaL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At11[index],At11L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At12[index],At12L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At13[index],At13L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At22[index],At22L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At23[index],At23L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At33[index],At33L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B1[index],B1L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B2[index],B2L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B3[index],B3L,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(gt11[index],gt11L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt12[index],gt12L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt13[index],gt13L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt22[index],gt22L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt23[index],gt23L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt33[index],gt33L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(phi[index],phiL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(trK[index],trKL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt1[index],Xt1L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt2[index],Xt2L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt3[index],Xt3L,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(A[index],AL,elt_count);
+ vec_store_nta_partial_hi(alpha[index],alphaL,elt_count);
+ vec_store_nta_partial_hi(At11[index],At11L,elt_count);
+ vec_store_nta_partial_hi(At12[index],At12L,elt_count);
+ vec_store_nta_partial_hi(At13[index],At13L,elt_count);
+ vec_store_nta_partial_hi(At22[index],At22L,elt_count);
+ vec_store_nta_partial_hi(At23[index],At23L,elt_count);
+ vec_store_nta_partial_hi(At33[index],At33L,elt_count);
+ vec_store_nta_partial_hi(B1[index],B1L,elt_count);
+ vec_store_nta_partial_hi(B2[index],B2L,elt_count);
+ vec_store_nta_partial_hi(B3[index],B3L,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(gt11[index],gt11L,elt_count);
+ vec_store_nta_partial_hi(gt12[index],gt12L,elt_count);
+ vec_store_nta_partial_hi(gt13[index],gt13L,elt_count);
+ vec_store_nta_partial_hi(gt22[index],gt22L,elt_count);
+ vec_store_nta_partial_hi(gt23[index],gt23L,elt_count);
+ vec_store_nta_partial_hi(gt33[index],gt33L,elt_count);
+ vec_store_nta_partial_hi(phi[index],phiL,elt_count);
+ vec_store_nta_partial_hi(trK[index],trKL,elt_count);
+ vec_store_nta_partial_hi(Xt1[index],Xt1L,elt_count);
+ vec_store_nta_partial_hi(Xt2[index],Xt2L,elt_count);
+ vec_store_nta_partial_hi(Xt3[index],Xt3L,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(A[index],AL,elt_count);
+ vec_store_nta_partial_lo(alpha[index],alphaL,elt_count);
+ vec_store_nta_partial_lo(At11[index],At11L,elt_count);
+ vec_store_nta_partial_lo(At12[index],At12L,elt_count);
+ vec_store_nta_partial_lo(At13[index],At13L,elt_count);
+ vec_store_nta_partial_lo(At22[index],At22L,elt_count);
+ vec_store_nta_partial_lo(At23[index],At23L,elt_count);
+ vec_store_nta_partial_lo(At33[index],At33L,elt_count);
+ vec_store_nta_partial_lo(B1[index],B1L,elt_count);
+ vec_store_nta_partial_lo(B2[index],B2L,elt_count);
+ vec_store_nta_partial_lo(B3[index],B3L,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(gt11[index],gt11L,elt_count);
+ vec_store_nta_partial_lo(gt12[index],gt12L,elt_count);
+ vec_store_nta_partial_lo(gt13[index],gt13L,elt_count);
+ vec_store_nta_partial_lo(gt22[index],gt22L,elt_count);
+ vec_store_nta_partial_lo(gt23[index],gt23L,elt_count);
+ vec_store_nta_partial_lo(gt33[index],gt33L,elt_count);
+ vec_store_nta_partial_lo(phi[index],phiL,elt_count);
+ vec_store_nta_partial_lo(trK[index],trKL,elt_count);
+ vec_store_nta_partial_lo(Xt1[index],Xt1L,elt_count);
+ vec_store_nta_partial_lo(Xt2[index],Xt2L,elt_count);
+ vec_store_nta_partial_lo(Xt3[index],Xt3L,elt_count);
+ break;
+ }
+ vec_store_nta(A[index],AL);
+ vec_store_nta(alpha[index],alphaL);
+ vec_store_nta(At11[index],At11L);
+ vec_store_nta(At12[index],At12L);
+ vec_store_nta(At13[index],At13L);
+ vec_store_nta(At22[index],At22L);
+ vec_store_nta(At23[index],At23L);
+ vec_store_nta(At33[index],At33L);
+ vec_store_nta(B1[index],B1L);
+ vec_store_nta(B2[index],B2L);
+ vec_store_nta(B3[index],B3L);
+ vec_store_nta(beta1[index],beta1L);
+ vec_store_nta(beta2[index],beta2L);
+ vec_store_nta(beta3[index],beta3L);
+ vec_store_nta(gt11[index],gt11L);
+ vec_store_nta(gt12[index],gt12L);
+ vec_store_nta(gt13[index],gt13L);
+ vec_store_nta(gt22[index],gt22L);
+ vec_store_nta(gt23[index],gt23L);
+ vec_store_nta(gt33[index],gt33L);
+ vec_store_nta(phi[index],phiL);
+ vec_store_nta(trK[index],trKL);
+ vec_store_nta(Xt1[index],Xt1L);
+ vec_store_nta(Xt2[index],Xt2L);
+ vec_store_nta(Xt3[index],Xt3L);
}
- LC_ENDLOOP3 (ML_BSSN_UPW_Minkowski);
+ LC_ENDLOOP3VEC (ML_BSSN_UPW_Minkowski);
}
extern "C" void ML_BSSN_UPW_Minkowski(CCTK_ARGUMENTS)
@@ -190,5 +406,39 @@ extern "C" void ML_BSSN_UPW_Minkowski(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_UPW_Minkowski_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_UPW_Minkowski_calc_every != ML_BSSN_UPW_Minkowski_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN_UPW::ML_curv","ML_BSSN_UPW::ML_dtlapse","ML_BSSN_UPW::ML_dtshift","ML_BSSN_UPW::ML_Gamma","ML_BSSN_UPW::ML_lapse","ML_BSSN_UPW::ML_log_confac","ML_BSSN_UPW::ML_metric","ML_BSSN_UPW::ML_shift","ML_BSSN_UPW::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_UPW_Minkowski", 9, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverEverything(cctkGH, &ML_BSSN_UPW_Minkowski_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_UPW_Minkowski_Body");
+ }
}
diff --git a/ML_BSSN_UPW/src/ML_BSSN_UPW_RHS1.cc b/ML_BSSN_UPW/src/ML_BSSN_UPW_RHS1.cc
index 41b37b1..a9c43d2 100644
--- a/ML_BSSN_UPW/src/ML_BSSN_UPW_RHS1.cc
+++ b/ML_BSSN_UPW/src/ML_BSSN_UPW_RHS1.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_UPW_RHS1_SelectBCs(CCTK_ARGUMENTS)
{
@@ -54,7 +55,7 @@ extern "C" void ML_BSSN_UPW_RHS1_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_BSSN_UPW_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_UPW_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;
@@ -62,21 +63,6 @@ static void ML_BSSN_UPW_RHS1_Body(cGH const * restrict const cctkGH, int const d
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_UPW_RHS1_Body");
- }
-
- if (cctk_iteration % ML_BSSN_UPW_RHS1_calc_every != ML_BSSN_UPW_RHS1_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"grid::coordinates","Grid::coordinates","ML_BSSN_UPW::ML_curv","ML_BSSN_UPW::ML_dtlapse","ML_BSSN_UPW::ML_dtlapserhs","ML_BSSN_UPW::ML_dtshift","ML_BSSN_UPW::ML_dtshiftrhs","ML_BSSN_UPW::ML_Gamma","ML_BSSN_UPW::ML_Gammarhs","ML_BSSN_UPW::ML_lapse","ML_BSSN_UPW::ML_lapserhs","ML_BSSN_UPW::ML_log_confac","ML_BSSN_UPW::ML_log_confacrhs","ML_BSSN_UPW::ML_metric","ML_BSSN_UPW::ML_metricrhs","ML_BSSN_UPW::ML_shift","ML_BSSN_UPW::ML_shiftrhs","ML_BSSN_UPW::ML_trace_curv","ML_BSSN_UPW::ML_trace_curvrhs"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_UPW_RHS1", 19, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_UPW_RHS1", 2, 2, 2);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -86,93 +72,208 @@ static void ML_BSSN_UPW_RHS1_Body(cGH const * restrict const cctkGH, int const d
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const p1o24dx = 0.0416666666666666666666666666667*INV(dx);
- CCTK_REAL const p1o24dy = 0.0416666666666666666666666666667*INV(dy);
- CCTK_REAL const p1o24dz = 0.0416666666666666666666666666667*INV(dz);
- CCTK_REAL const p1o64dx = 0.015625*INV(dx);
- CCTK_REAL const p1o64dy = 0.015625*INV(dy);
- CCTK_REAL const p1o64dz = 0.015625*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_UPW_RHS1,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_UPW_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 AL = A[index];
- CCTK_REAL alphaL = alpha[index];
- CCTK_REAL At11L = At11[index];
- CCTK_REAL At12L = At12[index];
- CCTK_REAL At13L = At13[index];
- CCTK_REAL At22L = At22[index];
- CCTK_REAL At23L = At23[index];
- CCTK_REAL At33L = At33[index];
- CCTK_REAL B1L = B1[index];
- CCTK_REAL B2L = B2[index];
- CCTK_REAL B3L = B3[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL gt11L = gt11[index];
- CCTK_REAL gt12L = gt12[index];
- CCTK_REAL gt13L = gt13[index];
- CCTK_REAL gt22L = gt22[index];
- CCTK_REAL gt23L = gt23[index];
- CCTK_REAL gt33L = gt33[index];
- CCTK_REAL phiL = phi[index];
- CCTK_REAL rL = r[index];
- CCTK_REAL trKL = trK[index];
- CCTK_REAL Xt1L = Xt1[index];
- CCTK_REAL Xt2L = Xt2[index];
- CCTK_REAL Xt3L = Xt3[index];
-
- CCTK_REAL eTttL, eTtxL, eTtyL, eTtzL, eTxxL, eTxyL, eTxzL, eTyyL, eTyzL, eTzzL;
+ 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 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 = eTtt[index];
- eTtxL = eTtx[index];
- eTtyL = eTty[index];
- eTtzL = eTtz[index];
- eTxxL = eTxx[index];
- eTxyL = eTxy[index];
- eTxzL = eTxz[index];
- eTyyL = eTyy[index];
- eTyzL = eTyz[index];
- eTzzL = eTzz[index];
+ 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
{
@@ -188,69 +289,357 @@ static void ML_BSSN_UPW_RHS1_Body(cGH const * restrict const cctkGH, int const d
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 const PDstandardNth1alpha = PDstandardNth1(&alpha[index]);
- CCTK_REAL const PDstandardNth2alpha = PDstandardNth2(&alpha[index]);
- CCTK_REAL const PDstandardNth3alpha = PDstandardNth3(&alpha[index]);
- CCTK_REAL const PDstandardNth11alpha = PDstandardNth11(&alpha[index]);
- CCTK_REAL const PDstandardNth22alpha = PDstandardNth22(&alpha[index]);
- CCTK_REAL const PDstandardNth33alpha = PDstandardNth33(&alpha[index]);
- CCTK_REAL const PDstandardNth12alpha = PDstandardNth12(&alpha[index]);
- CCTK_REAL const PDstandardNth13alpha = PDstandardNth13(&alpha[index]);
- CCTK_REAL const PDstandardNth23alpha = PDstandardNth23(&alpha[index]);
- CCTK_REAL const PDstandardNth1beta1 = PDstandardNth1(&beta1[index]);
- CCTK_REAL const PDstandardNth2beta1 = PDstandardNth2(&beta1[index]);
- CCTK_REAL const PDstandardNth3beta1 = PDstandardNth3(&beta1[index]);
- CCTK_REAL const PDstandardNth11beta1 = PDstandardNth11(&beta1[index]);
- CCTK_REAL const PDstandardNth22beta1 = PDstandardNth22(&beta1[index]);
- CCTK_REAL const PDstandardNth33beta1 = PDstandardNth33(&beta1[index]);
- CCTK_REAL const PDstandardNth12beta1 = PDstandardNth12(&beta1[index]);
- CCTK_REAL const PDstandardNth13beta1 = PDstandardNth13(&beta1[index]);
- CCTK_REAL const PDstandardNth23beta1 = PDstandardNth23(&beta1[index]);
- CCTK_REAL const PDstandardNth1beta2 = PDstandardNth1(&beta2[index]);
- CCTK_REAL const PDstandardNth2beta2 = PDstandardNth2(&beta2[index]);
- CCTK_REAL const PDstandardNth3beta2 = PDstandardNth3(&beta2[index]);
- CCTK_REAL const PDstandardNth11beta2 = PDstandardNth11(&beta2[index]);
- CCTK_REAL const PDstandardNth22beta2 = PDstandardNth22(&beta2[index]);
- CCTK_REAL const PDstandardNth33beta2 = PDstandardNth33(&beta2[index]);
- CCTK_REAL const PDstandardNth12beta2 = PDstandardNth12(&beta2[index]);
- CCTK_REAL const PDstandardNth13beta2 = PDstandardNth13(&beta2[index]);
- CCTK_REAL const PDstandardNth23beta2 = PDstandardNth23(&beta2[index]);
- CCTK_REAL const PDstandardNth1beta3 = PDstandardNth1(&beta3[index]);
- CCTK_REAL const PDstandardNth2beta3 = PDstandardNth2(&beta3[index]);
- CCTK_REAL const PDstandardNth3beta3 = PDstandardNth3(&beta3[index]);
- CCTK_REAL const PDstandardNth11beta3 = PDstandardNth11(&beta3[index]);
- CCTK_REAL const PDstandardNth22beta3 = PDstandardNth22(&beta3[index]);
- CCTK_REAL const PDstandardNth33beta3 = PDstandardNth33(&beta3[index]);
- CCTK_REAL const PDstandardNth12beta3 = PDstandardNth12(&beta3[index]);
- CCTK_REAL const PDstandardNth13beta3 = PDstandardNth13(&beta3[index]);
- CCTK_REAL const PDstandardNth23beta3 = PDstandardNth23(&beta3[index]);
- CCTK_REAL const PDstandardNth1gt11 = PDstandardNth1(&gt11[index]);
- CCTK_REAL const PDstandardNth2gt11 = PDstandardNth2(&gt11[index]);
- CCTK_REAL const PDstandardNth3gt11 = PDstandardNth3(&gt11[index]);
- CCTK_REAL const PDstandardNth1gt12 = PDstandardNth1(&gt12[index]);
- CCTK_REAL const PDstandardNth2gt12 = PDstandardNth2(&gt12[index]);
- CCTK_REAL const PDstandardNth3gt12 = PDstandardNth3(&gt12[index]);
- CCTK_REAL const PDstandardNth1gt13 = PDstandardNth1(&gt13[index]);
- CCTK_REAL const PDstandardNth2gt13 = PDstandardNth2(&gt13[index]);
- CCTK_REAL const PDstandardNth3gt13 = PDstandardNth3(&gt13[index]);
- CCTK_REAL const PDstandardNth1gt22 = PDstandardNth1(&gt22[index]);
- CCTK_REAL const PDstandardNth2gt22 = PDstandardNth2(&gt22[index]);
- CCTK_REAL const PDstandardNth3gt22 = PDstandardNth3(&gt22[index]);
- CCTK_REAL const PDstandardNth1gt23 = PDstandardNth1(&gt23[index]);
- CCTK_REAL const PDstandardNth2gt23 = PDstandardNth2(&gt23[index]);
- CCTK_REAL const PDstandardNth3gt23 = PDstandardNth3(&gt23[index]);
- CCTK_REAL const PDstandardNth1gt33 = PDstandardNth1(&gt33[index]);
- CCTK_REAL const PDstandardNth2gt33 = PDstandardNth2(&gt33[index]);
- CCTK_REAL const PDstandardNth3gt33 = PDstandardNth3(&gt33[index]);
- CCTK_REAL const PDstandardNth1phi = PDstandardNth1(&phi[index]);
- CCTK_REAL const PDstandardNth2phi = PDstandardNth2(&phi[index]);
- CCTK_REAL const PDstandardNth3phi = PDstandardNth3(&phi[index]);
- CCTK_REAL const PDstandardNth1trK = PDstandardNth1(&trK[index]);
- CCTK_REAL const PDstandardNth2trK = PDstandardNth2(&trK[index]);
- CCTK_REAL const PDstandardNth3trK = PDstandardNth3(&trK[index]);
+ 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 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:
+ 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]);
+ 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:
+ 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]);
+ 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:
+ 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]);
+ 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:
+ 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]);
+ 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 */
ptrdiff_t dir1 = Sign(beta1L);
@@ -259,340 +648,837 @@ static void ML_BSSN_UPW_RHS1_Body(cGH const * restrict const cctkGH, int const d
ptrdiff_t dir3 = Sign(beta3L);
- CCTK_REAL detgt = 1;
+ CCTK_REAL_VEC JacPDstandardNth11alpha;
+ CCTK_REAL_VEC JacPDstandardNth11beta1;
+ CCTK_REAL_VEC JacPDstandardNth11beta2;
+ CCTK_REAL_VEC JacPDstandardNth11beta3;
+ CCTK_REAL_VEC JacPDstandardNth12alpha;
+ CCTK_REAL_VEC JacPDstandardNth12beta1;
+ CCTK_REAL_VEC JacPDstandardNth12beta2;
+ CCTK_REAL_VEC JacPDstandardNth12beta3;
+ CCTK_REAL_VEC JacPDstandardNth13alpha;
+ CCTK_REAL_VEC JacPDstandardNth13beta1;
+ CCTK_REAL_VEC JacPDstandardNth13beta2;
+ CCTK_REAL_VEC JacPDstandardNth13beta3;
+ 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 JacPDstandardNth1trK;
+ CCTK_REAL_VEC JacPDstandardNth21alpha;
+ CCTK_REAL_VEC JacPDstandardNth21beta1;
+ CCTK_REAL_VEC JacPDstandardNth21beta2;
+ CCTK_REAL_VEC JacPDstandardNth21beta3;
+ CCTK_REAL_VEC JacPDstandardNth22alpha;
+ CCTK_REAL_VEC JacPDstandardNth22beta1;
+ CCTK_REAL_VEC JacPDstandardNth22beta2;
+ CCTK_REAL_VEC JacPDstandardNth22beta3;
+ CCTK_REAL_VEC JacPDstandardNth23alpha;
+ CCTK_REAL_VEC JacPDstandardNth23beta1;
+ CCTK_REAL_VEC JacPDstandardNth23beta2;
+ CCTK_REAL_VEC JacPDstandardNth23beta3;
+ 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 JacPDstandardNth2trK;
+ CCTK_REAL_VEC JacPDstandardNth31alpha;
+ CCTK_REAL_VEC JacPDstandardNth31beta1;
+ CCTK_REAL_VEC JacPDstandardNth31beta2;
+ CCTK_REAL_VEC JacPDstandardNth31beta3;
+ CCTK_REAL_VEC JacPDstandardNth32alpha;
+ CCTK_REAL_VEC JacPDstandardNth32beta1;
+ CCTK_REAL_VEC JacPDstandardNth32beta2;
+ CCTK_REAL_VEC JacPDstandardNth32beta3;
+ CCTK_REAL_VEC JacPDstandardNth33alpha;
+ CCTK_REAL_VEC JacPDstandardNth33beta1;
+ CCTK_REAL_VEC JacPDstandardNth33beta2;
+ CCTK_REAL_VEC JacPDstandardNth33beta3;
+ 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 JacPDstandardNth3trK;
+
+ 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)));
+
+ JacPDstandardNth1trK =
+ kmadd(J11L,PDstandardNth1trK,kmadd(J21L,PDstandardNth2trK,kmul(J31L,PDstandardNth3trK)));
+
+ 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)));
+
+ JacPDstandardNth2trK =
+ kmadd(J12L,PDstandardNth1trK,kmadd(J22L,PDstandardNth2trK,kmul(J32L,PDstandardNth3trK)));
+
+ 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)));
+
+ JacPDstandardNth3trK =
+ kmadd(J13L,PDstandardNth1trK,kmadd(J23L,PDstandardNth2trK,kmul(J33L,PDstandardNth3trK)));
+
+ 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))))))));
+
+ 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))))))));
+
+ 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))))))));
+
+ 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)))))));
+
+ 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)))))));
+
+ 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)))))));
+
+ 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)))))));
+
+ 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)))))));
+
+ 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)))))));
+ }
+ else
+ {
+ JacPDstandardNth1alpha = PDstandardNth1alpha;
+
+ JacPDstandardNth1beta1 = PDstandardNth1beta1;
+
+ JacPDstandardNth1beta2 = PDstandardNth1beta2;
+
+ JacPDstandardNth1beta3 = PDstandardNth1beta3;
+
+ JacPDstandardNth1gt11 = PDstandardNth1gt11;
+
+ JacPDstandardNth1gt12 = PDstandardNth1gt12;
+
+ JacPDstandardNth1gt13 = PDstandardNth1gt13;
+
+ JacPDstandardNth1gt22 = PDstandardNth1gt22;
+
+ JacPDstandardNth1gt23 = PDstandardNth1gt23;
+
+ JacPDstandardNth1gt33 = PDstandardNth1gt33;
+
+ JacPDstandardNth1phi = PDstandardNth1phi;
+
+ JacPDstandardNth1trK = PDstandardNth1trK;
+
+ JacPDstandardNth2alpha = PDstandardNth2alpha;
+
+ JacPDstandardNth2beta1 = PDstandardNth2beta1;
+
+ JacPDstandardNth2beta2 = PDstandardNth2beta2;
+
+ JacPDstandardNth2beta3 = PDstandardNth2beta3;
+
+ JacPDstandardNth2gt11 = PDstandardNth2gt11;
+
+ JacPDstandardNth2gt12 = PDstandardNth2gt12;
+
+ JacPDstandardNth2gt13 = PDstandardNth2gt13;
+
+ JacPDstandardNth2gt22 = PDstandardNth2gt22;
+
+ JacPDstandardNth2gt23 = PDstandardNth2gt23;
+
+ JacPDstandardNth2gt33 = PDstandardNth2gt33;
+
+ JacPDstandardNth2phi = PDstandardNth2phi;
+
+ JacPDstandardNth2trK = PDstandardNth2trK;
+
+ JacPDstandardNth3alpha = PDstandardNth3alpha;
+
+ JacPDstandardNth3beta1 = PDstandardNth3beta1;
+
+ JacPDstandardNth3beta2 = PDstandardNth3beta2;
+
+ JacPDstandardNth3beta3 = PDstandardNth3beta3;
+
+ JacPDstandardNth3gt11 = PDstandardNth3gt11;
+
+ JacPDstandardNth3gt12 = PDstandardNth3gt12;
+
+ JacPDstandardNth3gt13 = PDstandardNth3gt13;
+
+ JacPDstandardNth3gt22 = PDstandardNth3gt22;
+
+ JacPDstandardNth3gt23 = PDstandardNth3gt23;
+
+ JacPDstandardNth3gt33 = PDstandardNth3gt33;
+
+ JacPDstandardNth3phi = PDstandardNth3phi;
+
+ JacPDstandardNth3trK = PDstandardNth3trK;
+
+ JacPDstandardNth11alpha = PDstandardNth11alpha;
+
+ JacPDstandardNth11beta1 = PDstandardNth11beta1;
+
+ JacPDstandardNth11beta2 = PDstandardNth11beta2;
+
+ JacPDstandardNth11beta3 = PDstandardNth11beta3;
+
+ JacPDstandardNth22alpha = PDstandardNth22alpha;
+
+ JacPDstandardNth22beta1 = PDstandardNth22beta1;
+
+ JacPDstandardNth22beta2 = PDstandardNth22beta2;
+
+ JacPDstandardNth22beta3 = PDstandardNth22beta3;
+
+ JacPDstandardNth33alpha = PDstandardNth33alpha;
+
+ JacPDstandardNth33beta1 = PDstandardNth33beta1;
+
+ JacPDstandardNth33beta2 = PDstandardNth33beta2;
+
+ JacPDstandardNth33beta3 = PDstandardNth33beta3;
+
+ JacPDstandardNth12alpha = PDstandardNth12alpha;
+
+ JacPDstandardNth12beta1 = PDstandardNth12beta1;
+
+ JacPDstandardNth12beta2 = PDstandardNth12beta2;
+
+ JacPDstandardNth12beta3 = PDstandardNth12beta3;
+
+ JacPDstandardNth13alpha = PDstandardNth13alpha;
+
+ JacPDstandardNth13beta1 = PDstandardNth13beta1;
+
+ JacPDstandardNth13beta2 = PDstandardNth13beta2;
+
+ JacPDstandardNth13beta3 = PDstandardNth13beta3;
+
+ JacPDstandardNth21alpha = PDstandardNth12alpha;
+
+ JacPDstandardNth21beta1 = PDstandardNth12beta1;
+
+ JacPDstandardNth21beta2 = PDstandardNth12beta2;
+
+ JacPDstandardNth21beta3 = PDstandardNth12beta3;
+
+ JacPDstandardNth23alpha = PDstandardNth23alpha;
+
+ JacPDstandardNth23beta1 = PDstandardNth23beta1;
+
+ JacPDstandardNth23beta2 = PDstandardNth23beta2;
+
+ JacPDstandardNth23beta3 = PDstandardNth23beta3;
+
+ JacPDstandardNth31alpha = PDstandardNth13alpha;
+
+ JacPDstandardNth31beta1 = PDstandardNth13beta1;
+
+ JacPDstandardNth31beta2 = PDstandardNth13beta2;
+
+ JacPDstandardNth31beta3 = PDstandardNth13beta3;
+
+ JacPDstandardNth32alpha = PDstandardNth23alpha;
+
+ JacPDstandardNth32beta1 = PDstandardNth23beta1;
+
+ JacPDstandardNth32beta2 = PDstandardNth23beta2;
+
+ JacPDstandardNth32beta3 = PDstandardNth23beta3;
+ }
+
+ 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 gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L));
+ CCTK_REAL_VEC Gtl211 =
+ kmadd(JacPDstandardNth2gt11,ToReal(-0.5),JacPDstandardNth1gt12);
- CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt);
+ CCTK_REAL_VEC Gtl212 = kmul(JacPDstandardNth1gt22,ToReal(0.5));
- CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC Gtl213 =
+ kmul(kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth3gt12,JacPDstandardNth2gt13)),ToReal(0.5));
- CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L));
+ CCTK_REAL_VEC Gtl222 = kmul(JacPDstandardNth2gt22,ToReal(0.5));
- CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC Gtl223 = kmul(JacPDstandardNth3gt22,ToReal(0.5));
- CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L));
+ CCTK_REAL_VEC Gtl233 =
+ kmadd(JacPDstandardNth2gt33,ToReal(-0.5),JacPDstandardNth3gt23);
- CCTK_REAL Gtl111 = 0.5*PDstandardNth1gt11;
+ CCTK_REAL_VEC Gtl311 =
+ kmadd(JacPDstandardNth3gt11,ToReal(-0.5),JacPDstandardNth1gt13);
- CCTK_REAL Gtl112 = 0.5*PDstandardNth2gt11;
+ CCTK_REAL_VEC Gtl312 =
+ kmul(kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth2gt13,JacPDstandardNth3gt12)),ToReal(0.5));
- CCTK_REAL Gtl113 = 0.5*PDstandardNth3gt11;
+ CCTK_REAL_VEC Gtl313 = kmul(JacPDstandardNth1gt33,ToReal(0.5));
- CCTK_REAL Gtl122 = -0.5*PDstandardNth1gt22 + PDstandardNth2gt12;
+ CCTK_REAL_VEC Gtl322 =
+ kmadd(JacPDstandardNth3gt22,ToReal(-0.5),JacPDstandardNth2gt23);
- CCTK_REAL Gtl123 = 0.5*(-PDstandardNth1gt23 + PDstandardNth2gt13 +
- PDstandardNth3gt12);
+ CCTK_REAL_VEC Gtl323 = kmul(JacPDstandardNth2gt33,ToReal(0.5));
- CCTK_REAL Gtl133 = -0.5*PDstandardNth1gt33 + PDstandardNth3gt13;
+ CCTK_REAL_VEC Gtl333 = kmul(JacPDstandardNth3gt33,ToReal(0.5));
- CCTK_REAL Gtl211 = PDstandardNth1gt12 - 0.5*PDstandardNth2gt11;
+ CCTK_REAL_VEC Gt111 =
+ kmadd(Gtl111,gtu11,kmadd(Gtl211,gtu12,kmul(Gtl311,gtu13)));
- CCTK_REAL Gtl212 = 0.5*PDstandardNth1gt22;
+ CCTK_REAL_VEC Gt211 =
+ kmadd(Gtl111,gtu12,kmadd(Gtl211,gtu22,kmul(Gtl311,gtu23)));
- CCTK_REAL Gtl213 = 0.5*(PDstandardNth1gt23 - PDstandardNth2gt13 +
- PDstandardNth3gt12);
+ CCTK_REAL_VEC Gt311 =
+ kmadd(Gtl111,gtu13,kmadd(Gtl211,gtu23,kmul(Gtl311,gtu33)));
- CCTK_REAL Gtl222 = 0.5*PDstandardNth2gt22;
+ CCTK_REAL_VEC Gt112 =
+ kmadd(Gtl112,gtu11,kmadd(Gtl212,gtu12,kmul(Gtl312,gtu13)));
- CCTK_REAL Gtl223 = 0.5*PDstandardNth3gt22;
+ CCTK_REAL_VEC Gt212 =
+ kmadd(Gtl112,gtu12,kmadd(Gtl212,gtu22,kmul(Gtl312,gtu23)));
- CCTK_REAL Gtl233 = -0.5*PDstandardNth2gt33 + PDstandardNth3gt23;
+ CCTK_REAL_VEC Gt312 =
+ kmadd(Gtl112,gtu13,kmadd(Gtl212,gtu23,kmul(Gtl312,gtu33)));
- CCTK_REAL Gtl311 = PDstandardNth1gt13 - 0.5*PDstandardNth3gt11;
+ CCTK_REAL_VEC Gt113 =
+ kmadd(Gtl113,gtu11,kmadd(Gtl213,gtu12,kmul(Gtl313,gtu13)));
- CCTK_REAL Gtl312 = 0.5*(PDstandardNth1gt23 + PDstandardNth2gt13 -
- PDstandardNth3gt12);
+ CCTK_REAL_VEC Gt213 =
+ kmadd(Gtl113,gtu12,kmadd(Gtl213,gtu22,kmul(Gtl313,gtu23)));
- CCTK_REAL Gtl313 = 0.5*PDstandardNth1gt33;
+ CCTK_REAL_VEC Gt313 =
+ kmadd(Gtl113,gtu13,kmadd(Gtl213,gtu23,kmul(Gtl313,gtu33)));
- CCTK_REAL Gtl322 = PDstandardNth2gt23 - 0.5*PDstandardNth3gt22;
+ CCTK_REAL_VEC Gt122 =
+ kmadd(Gtl122,gtu11,kmadd(Gtl222,gtu12,kmul(Gtl322,gtu13)));
- CCTK_REAL Gtl323 = 0.5*PDstandardNth2gt33;
+ CCTK_REAL_VEC Gt222 =
+ kmadd(Gtl122,gtu12,kmadd(Gtl222,gtu22,kmul(Gtl322,gtu23)));
- CCTK_REAL Gtl333 = 0.5*PDstandardNth3gt33;
+ CCTK_REAL_VEC Gt322 =
+ kmadd(Gtl122,gtu13,kmadd(Gtl222,gtu23,kmul(Gtl322,gtu33)));
- CCTK_REAL Gt111 = Gtl111*gtu11 + Gtl211*gtu12 + Gtl311*gtu13;
+ CCTK_REAL_VEC Gt123 =
+ kmadd(Gtl123,gtu11,kmadd(Gtl223,gtu12,kmul(Gtl323,gtu13)));
- CCTK_REAL Gt211 = Gtl111*gtu12 + Gtl211*gtu22 + Gtl311*gtu23;
+ CCTK_REAL_VEC Gt223 =
+ kmadd(Gtl123,gtu12,kmadd(Gtl223,gtu22,kmul(Gtl323,gtu23)));
- CCTK_REAL Gt311 = Gtl111*gtu13 + Gtl211*gtu23 + Gtl311*gtu33;
+ CCTK_REAL_VEC Gt323 =
+ kmadd(Gtl123,gtu13,kmadd(Gtl223,gtu23,kmul(Gtl323,gtu33)));
- CCTK_REAL Gt112 = Gtl112*gtu11 + Gtl212*gtu12 + Gtl312*gtu13;
+ CCTK_REAL_VEC Gt133 =
+ kmadd(Gtl133,gtu11,kmadd(Gtl233,gtu12,kmul(Gtl333,gtu13)));
- CCTK_REAL Gt212 = Gtl112*gtu12 + Gtl212*gtu22 + Gtl312*gtu23;
+ CCTK_REAL_VEC Gt233 =
+ kmadd(Gtl133,gtu12,kmadd(Gtl233,gtu22,kmul(Gtl333,gtu23)));
- CCTK_REAL Gt312 = Gtl112*gtu13 + Gtl212*gtu23 + Gtl312*gtu33;
+ CCTK_REAL_VEC Gt333 =
+ kmadd(Gtl133,gtu13,kmadd(Gtl233,gtu23,kmul(Gtl333,gtu33)));
- CCTK_REAL Gt113 = Gtl113*gtu11 + Gtl213*gtu12 + Gtl313*gtu13;
+ 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 Gt213 = Gtl113*gtu12 + Gtl213*gtu22 + Gtl313*gtu23;
+ 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 Gt313 = Gtl113*gtu13 + Gtl213*gtu23 + Gtl313*gtu33;
+ 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 Gt122 = Gtl122*gtu11 + Gtl222*gtu12 + Gtl322*gtu13;
+ CCTK_REAL_VEC fac1 =
+ IfThen(conformalMethod,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
- CCTK_REAL Gt222 = Gtl122*gtu12 + Gtl222*gtu22 + Gtl322*gtu23;
+ CCTK_REAL_VEC cdphi1 = kmul(fac1,JacPDstandardNth1phi);
- CCTK_REAL Gt322 = Gtl122*gtu13 + Gtl222*gtu23 + Gtl322*gtu33;
+ CCTK_REAL_VEC cdphi2 = kmul(fac1,JacPDstandardNth2phi);
- CCTK_REAL Gt123 = Gtl123*gtu11 + Gtl223*gtu12 + Gtl323*gtu13;
+ CCTK_REAL_VEC cdphi3 = kmul(fac1,JacPDstandardNth3phi);
- CCTK_REAL Gt223 = Gtl123*gtu12 + Gtl223*gtu22 + Gtl323*gtu23;
+ CCTK_REAL_VEC Atm11 =
+ kmadd(At11L,gtu11,kmadd(At12L,gtu12,kmul(At13L,gtu13)));
- CCTK_REAL Gt323 = Gtl123*gtu13 + Gtl223*gtu23 + Gtl323*gtu33;
+ CCTK_REAL_VEC Atm21 =
+ kmadd(At11L,gtu12,kmadd(At12L,gtu22,kmul(At13L,gtu23)));
- CCTK_REAL Gt133 = Gtl133*gtu11 + Gtl233*gtu12 + Gtl333*gtu13;
+ CCTK_REAL_VEC Atm31 =
+ kmadd(At11L,gtu13,kmadd(At12L,gtu23,kmul(At13L,gtu33)));
- CCTK_REAL Gt233 = Gtl133*gtu12 + Gtl233*gtu22 + Gtl333*gtu23;
+ CCTK_REAL_VEC Atm12 =
+ kmadd(At12L,gtu11,kmadd(At22L,gtu12,kmul(At23L,gtu13)));
- CCTK_REAL Gt333 = Gtl133*gtu13 + Gtl233*gtu23 + Gtl333*gtu33;
+ CCTK_REAL_VEC Atm22 =
+ kmadd(At12L,gtu12,kmadd(At22L,gtu22,kmul(At23L,gtu23)));
- CCTK_REAL Xtn1 = Gt111*gtu11 + Gt122*gtu22 + 2*(Gt112*gtu12 +
- Gt113*gtu13 + Gt123*gtu23) + Gt133*gtu33;
+ CCTK_REAL_VEC Atm32 =
+ kmadd(At12L,gtu13,kmadd(At22L,gtu23,kmul(At23L,gtu33)));
- CCTK_REAL Xtn2 = Gt211*gtu11 + Gt222*gtu22 + 2*(Gt212*gtu12 +
- Gt213*gtu13 + Gt223*gtu23) + Gt233*gtu33;
+ CCTK_REAL_VEC Atm13 =
+ kmadd(At13L,gtu11,kmadd(At23L,gtu12,kmul(At33L,gtu13)));
- CCTK_REAL Xtn3 = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu12 +
- Gt313*gtu13 + Gt323*gtu23) + Gt333*gtu33;
+ CCTK_REAL_VEC Atm23 =
+ kmadd(At13L,gtu12,kmadd(At23L,gtu22,kmul(At33L,gtu23)));
- CCTK_REAL fac1 = IfThen(conformalMethod,-0.5*INV(phiL),1);
+ CCTK_REAL_VEC Atm33 =
+ kmadd(At13L,gtu13,kmadd(At23L,gtu23,kmul(At33L,gtu33)));
- CCTK_REAL cdphi1 = fac1*PDstandardNth1phi;
+ CCTK_REAL_VEC Atu11 =
+ kmadd(Atm11,gtu11,kmadd(Atm12,gtu12,kmul(Atm13,gtu13)));
- CCTK_REAL cdphi2 = fac1*PDstandardNth2phi;
+ CCTK_REAL_VEC Atu12 =
+ kmadd(Atm11,gtu12,kmadd(Atm12,gtu22,kmul(Atm13,gtu23)));
- CCTK_REAL cdphi3 = fac1*PDstandardNth3phi;
+ CCTK_REAL_VEC Atu13 =
+ kmadd(Atm11,gtu13,kmadd(Atm12,gtu23,kmul(Atm13,gtu33)));
- CCTK_REAL Atm11 = At11L*gtu11 + At12L*gtu12 + At13L*gtu13;
+ CCTK_REAL_VEC Atu22 =
+ kmadd(Atm21,gtu12,kmadd(Atm22,gtu22,kmul(Atm23,gtu23)));
- CCTK_REAL Atm21 = At11L*gtu12 + At12L*gtu22 + At13L*gtu23;
+ CCTK_REAL_VEC Atu23 =
+ kmadd(Atm21,gtu13,kmadd(Atm22,gtu23,kmul(Atm23,gtu33)));
- CCTK_REAL Atm31 = At11L*gtu13 + At12L*gtu23 + At13L*gtu33;
+ CCTK_REAL_VEC Atu33 =
+ kmadd(Atm31,gtu13,kmadd(Atm32,gtu23,kmul(Atm33,gtu33)));
- CCTK_REAL Atm12 = At12L*gtu11 + At22L*gtu12 + At23L*gtu13;
+ CCTK_REAL_VEC e4phi =
+ IfThen(conformalMethod,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
- CCTK_REAL Atm22 = At12L*gtu12 + At22L*gtu22 + At23L*gtu23;
+ CCTK_REAL_VEC em4phi = INV(e4phi);
- CCTK_REAL Atm32 = At12L*gtu13 + At22L*gtu23 + At23L*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 Atm13 = At13L*gtu11 + At23L*gtu12 + At33L*gtu13;
+ CCTK_REAL_VEC S1 =
+ kmul(INV(alphaL),kmadd(beta1L,eTxxL,kmadd(beta2L,eTxyL,kmsub(beta3L,eTxzL,eTtxL))));
- CCTK_REAL Atm23 = At13L*gtu12 + At23L*gtu22 + At33L*gtu23;
+ CCTK_REAL_VEC S2 =
+ kmul(INV(alphaL),kmadd(beta1L,eTxyL,kmadd(beta2L,eTyyL,kmsub(beta3L,eTyzL,eTtyL))));
- CCTK_REAL Atm33 = At13L*gtu13 + At23L*gtu23 + At33L*gtu33;
+ CCTK_REAL_VEC S3 =
+ kmul(INV(alphaL),kmadd(beta1L,eTxzL,kmadd(beta2L,eTyzL,kmsub(beta3L,eTzzL,eTtzL))));
- CCTK_REAL Atu11 = Atm11*gtu11 + Atm12*gtu12 + Atm13*gtu13;
+ 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 Atu12 = Atm11*gtu12 + Atm12*gtu22 + Atm13*gtu23;
+ 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 Atu13 = Atm11*gtu13 + Atm12*gtu23 + Atm13*gtu33;
+ 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))))));
- CCTK_REAL Atu22 = Atm21*gtu12 + Atm22*gtu22 + Atm23*gtu23;
+ CCTK_REAL_VEC gt12rhsL =
+ kmul(ToReal(0.333333333333333333333333333333),kmadd(alphaL,kmul(At12L,ToReal(-6)),kmadd(gt12L,kadd(JacPDstandardNth1beta1,kmadd(JacPDstandardNth3beta3,ToReal(-2),JacPDstandardNth2beta2)),kmul(kmadd(gt22L,JacPDstandardNth1beta2,kmadd(gt23L,JacPDstandardNth1beta3,kmadd(gt11L,JacPDstandardNth2beta1,kmul(gt13L,JacPDstandardNth2beta3)))),ToReal(3)))));
- CCTK_REAL Atu23 = Atm21*gtu13 + Atm22*gtu23 + Atm23*gtu33;
+ CCTK_REAL_VEC gt13rhsL =
+ kmul(ToReal(0.333333333333333333333333333333),kmadd(alphaL,kmul(At13L,ToReal(-6)),kmadd(gt13L,kadd(JacPDstandardNth1beta1,kmadd(JacPDstandardNth2beta2,ToReal(-2),JacPDstandardNth3beta3)),kmul(kmadd(gt23L,JacPDstandardNth1beta2,kmadd(gt33L,JacPDstandardNth1beta3,kmadd(gt11L,JacPDstandardNth3beta1,kmul(gt12L,JacPDstandardNth3beta2)))),ToReal(3)))));
- CCTK_REAL Atu33 = Atm31*gtu13 + Atm32*gtu23 + Atm33*gtu33;
+ CCTK_REAL_VEC gt22rhsL =
+ kmul(ToReal(-0.666666666666666666666666666667),kmadd(kmadd(gt12L,JacPDstandardNth2beta1,kmul(gt23L,JacPDstandardNth2beta3)),ToReal(-3),kmadd(gt22L,kadd(JacPDstandardNth1beta1,kmadd(JacPDstandardNth2beta2,ToReal(-2),JacPDstandardNth3beta3)),kmul(alphaL,kmul(At22L,ToReal(3))))));
- CCTK_REAL e4phi = IfThen(conformalMethod,INV(SQR(phiL)),exp(4*phiL));
+ CCTK_REAL_VEC gt23rhsL =
+ kmul(ToReal(0.333333333333333333333333333333),kmadd(alphaL,kmul(At23L,ToReal(-6)),kmadd(gt23L,kadd(JacPDstandardNth2beta2,kmadd(JacPDstandardNth1beta1,ToReal(-2),JacPDstandardNth3beta3)),kmul(kmadd(gt13L,JacPDstandardNth2beta1,kmadd(gt33L,JacPDstandardNth2beta3,kmadd(gt12L,JacPDstandardNth3beta1,kmul(gt22L,JacPDstandardNth3beta2)))),ToReal(3)))));
- CCTK_REAL em4phi = INV(e4phi);
+ CCTK_REAL_VEC gt33rhsL =
+ kmul(ToReal(-0.666666666666666666666666666667),kmadd(kmadd(gt13L,JacPDstandardNth3beta1,kmul(gt23L,JacPDstandardNth3beta2)),ToReal(-3),kmadd(gt33L,kadd(JacPDstandardNth1beta1,kmadd(JacPDstandardNth3beta3,ToReal(-2),JacPDstandardNth2beta2)),kmul(alphaL,kmul(At33L,ToReal(3))))));
- CCTK_REAL rho = INV(SQR(alphaL))*(eTttL - 2*(beta2L*eTtyL +
- beta3L*eTtzL) + 2*(beta1L*(-eTtxL + beta2L*eTxyL + beta3L*eTxzL) +
- beta2L*beta3L*eTyzL) + eTxxL*SQR(beta1L) + eTyyL*SQR(beta2L) +
- eTzzL*SQR(beta3L));
+ 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),kmul(gtu33,JacPDstandardNth33beta1))))),ToReal(3),kmadd(gtu11,kadd(JacPDstandardNth12beta2,kmadd(JacPDstandardNth11beta1,ToReal(4),JacPDstandardNth13beta3)),kmadd(gtu12,kadd(JacPDstandardNth22beta2,kmadd(JacPDstandardNth21beta1,ToReal(4),JacPDstandardNth23beta3)),kmadd(gtu13,kadd(JacPDstandardNth32beta2,kmadd(JacPDstandardNth31beta1,ToReal(4),JacPDstandardNth33beta3)),kmul(alphaL,kmadd(kmadd(gtu11,S1,kmadd(gtu12,S2,kmul(gtu13,S3))),ToReal(-150.7964473723100754462068823974161384415),kmadd(kmadd(gtu11,JacPDstandardNth1trK,kmadd(gtu12,JacPDstandardNth2trK,kmul(gtu13,JacPDstandardNth3trK))),ToReal(-4),kmadd(ToReal(6),kmadd(Atu22,Gt122,kmadd(Atu33,Gt133,kmul(Atu11,kmadd(cdphi1,ToReal(6),Gt111)))),kmadd(kmadd(Atu23,Gt123,kmul(Atu12,kmadd(cdphi2,ToReal(3),Gt112))),ToReal(12),kmul(Atu13,kmadd(Gt113,ToReal(12),kmul(cdphi3,ToReal(36)))))))))))))))));
- CCTK_REAL S1 = (-eTtxL + beta1L*eTxxL + beta2L*eTxyL +
- beta3L*eTxzL)*INV(alphaL);
+ 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(gtu23,JacPDstandardNth23beta2,kmadd(gtu13,kadd(JacPDstandardNth13beta2,JacPDstandardNth31beta2),kmul(gtu33,JacPDstandardNth33beta2)))),ToReal(3),kmadd(gtu12,kadd(JacPDstandardNth11beta1,kadd(JacPDstandardNth13beta3,kmadd(JacPDstandardNth21beta2,ToReal(3),kmul(JacPDstandardNth12beta2,ToReal(4))))),kmadd(gtu22,kadd(JacPDstandardNth21beta1,kmadd(JacPDstandardNth22beta2,ToReal(4),JacPDstandardNth23beta3)),kmadd(gtu23,kadd(JacPDstandardNth31beta1,kmadd(JacPDstandardNth32beta2,ToReal(4),JacPDstandardNth33beta3)),kmul(alphaL,kmadd(kmadd(gtu12,S1,kmadd(gtu22,S2,kmul(gtu23,S3))),ToReal(-150.7964473723100754462068823974161384415),kmadd(kmadd(gtu12,JacPDstandardNth1trK,kmadd(gtu22,JacPDstandardNth2trK,kmul(gtu23,JacPDstandardNth3trK))),ToReal(-4),kmadd(ToReal(6),kmadd(Atu11,Gt211,kmadd(Atu33,Gt233,kmul(Atu22,kmadd(cdphi2,ToReal(6),Gt222)))),kmadd(kmadd(Atu13,Gt213,kmul(Atu12,kmadd(cdphi1,ToReal(3),Gt212))),ToReal(12),kmul(Atu23,kmadd(Gt223,ToReal(12),kmul(cdphi3,ToReal(36)))))))))))))))));
- CCTK_REAL S2 = (-eTtyL + beta1L*eTxyL + beta2L*eTyyL +
- beta3L*eTyzL)*INV(alphaL);
+ 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),kmadd(Xtn3,kmsub(kadd(JacPDstandardNth1beta1,JacPDstandardNth2beta2),ToReal(2),JacPDstandardNth3beta3),kmadd(kmadd(gtu11,JacPDstandardNth11beta3,kmadd(gtu12,kadd(JacPDstandardNth12beta3,JacPDstandardNth21beta3),kmadd(gtu22,JacPDstandardNth22beta3,kmul(gtu23,JacPDstandardNth32beta3)))),ToReal(3),kmadd(gtu13,kadd(JacPDstandardNth11beta1,kadd(JacPDstandardNth12beta2,kmadd(JacPDstandardNth31beta3,ToReal(3),kmul(JacPDstandardNth13beta3,ToReal(4))))),kmadd(gtu23,kadd(JacPDstandardNth21beta1,kmadd(JacPDstandardNth23beta3,ToReal(4),JacPDstandardNth22beta2)),kmadd(gtu33,kadd(JacPDstandardNth31beta1,kmadd(JacPDstandardNth33beta3,ToReal(4),JacPDstandardNth32beta2)),kmul(alphaL,kmadd(kmadd(gtu13,S1,kmadd(gtu23,S2,kmul(gtu33,S3))),ToReal(-150.7964473723100754462068823974161384415),kmadd(kmadd(gtu13,JacPDstandardNth1trK,kmadd(gtu23,JacPDstandardNth2trK,kmul(gtu33,JacPDstandardNth3trK))),ToReal(-4),kmadd(kmadd(Atu11,Gt311,kmul(Atu22,Gt322)),ToReal(6),kmadd(kmadd(Atu12,Gt312,kmadd(Atu13,kmadd(cdphi1,ToReal(3),Gt313),kmul(Atu23,kmadd(cdphi2,ToReal(3),Gt323)))),ToReal(12),kmul(Atu33,kmadd(Gt333,ToReal(6),kmul(cdphi3,ToReal(36)))))))))))))))));
- CCTK_REAL S3 = (-eTtzL + beta1L*eTxzL + beta2L*eTyzL +
- beta3L*eTzzL)*INV(alphaL);
+ CCTK_REAL_VEC Xt1rhsL = dotXt1;
- CCTK_REAL trS = em4phi*(eTxxL*gtu11 + eTyyL*gtu22 + 2*(eTxyL*gtu12 +
- eTxzL*gtu13 + eTyzL*gtu23) + eTzzL*gtu33);
+ CCTK_REAL_VEC Xt2rhsL = dotXt2;
- CCTK_REAL phirhsL =
- IfThen(conformalMethod,phiL*(-0.333333333333333333333333333333*(PDstandardNth1beta1
- + PDstandardNth2beta2 + PDstandardNth3beta3) +
- 0.333333333333333333333333333333*alphaL*trKL),0.166666666666666666666666666667*(PDstandardNth1beta1
- + PDstandardNth2beta2 + PDstandardNth3beta3) -
- 0.166666666666666666666666666667*alphaL*trKL);
+ CCTK_REAL_VEC Xt3rhsL = dotXt3;
- CCTK_REAL gt11rhsL = -0.666666666666666666666666666667*(3*alphaL*At11L
- - 3*(gt12L*PDstandardNth1beta2 + gt13L*PDstandardNth1beta3) +
- gt11L*(-2*PDstandardNth1beta1 + PDstandardNth2beta2 +
- PDstandardNth3beta3));
+ CCTK_REAL_VEC dottrK =
+ kmsub(alphaL,kadd(SQR(Atm11),kadd(SQR(Atm22),kadd(SQR(Atm33),kmadd(SQR(trKL),ToReal(0.333333333333333333333333333333),kmadd(kmadd(Atm12,Atm21,kmadd(Atm13,Atm31,kmul(Atm23,Atm32))),ToReal(2),kmul(kadd(rho,trS),ToReal(12.56637061435917295385057353311801153679))))))),kmul(em4phi,knmsub(JacPDstandardNth1alpha,Xtn1,knmsub(JacPDstandardNth2alpha,Xtn2,knmsub(JacPDstandardNth3alpha,Xtn3,kmadd(gtu11,kmadd(cdphi1,kmul(JacPDstandardNth1alpha,ToReal(2)),JacPDstandardNth11alpha),kmadd(gtu12,kadd(JacPDstandardNth12alpha,kadd(JacPDstandardNth21alpha,kmadd(cdphi2,kmul(JacPDstandardNth1alpha,ToReal(2)),kmul(cdphi1,kmul(JacPDstandardNth2alpha,ToReal(2)))))),kmadd(gtu22,kmadd(cdphi2,kmul(JacPDstandardNth2alpha,ToReal(2)),JacPDstandardNth22alpha),kmadd(gtu13,kadd(JacPDstandardNth13alpha,kadd(JacPDstandardNth31alpha,kmadd(cdphi3,kmul(JacPDstandardNth1alpha,ToReal(2)),kmul(cdphi1,kmul(JacPDstandardNth3alpha,ToReal(2)))))),kmadd(gtu23,kadd(JacPDstandardNth23alpha,kadd(JacPDstandardNth32alpha,kmadd(cdphi3,kmul(JacPDstandardNth2alpha,ToReal(2)),kmul(cdphi2,kmul(JacPDstandardNth3alpha,ToReal(2)))))),kmul(gtu33,kmadd(cdphi3,kmul(JacPDstandardNth3alpha,ToReal(2)),JacPDstandardNth33alpha))))))))))));
- CCTK_REAL gt12rhsL = 0.333333333333333333333333333333*(-6*alphaL*At12L
- + 3*(gt22L*PDstandardNth1beta2 + gt23L*PDstandardNth1beta3 +
- gt11L*PDstandardNth2beta1 + gt13L*PDstandardNth2beta3) +
- gt12L*(PDstandardNth1beta1 + PDstandardNth2beta2 -
- 2*PDstandardNth3beta3));
+ CCTK_REAL_VEC trKrhsL = dottrK;
- CCTK_REAL gt13rhsL = 0.333333333333333333333333333333*(-6*alphaL*At13L
- + 3*(gt23L*PDstandardNth1beta2 + gt33L*PDstandardNth1beta3 +
- gt11L*PDstandardNth3beta1 + gt12L*PDstandardNth3beta2) +
- gt13L*(PDstandardNth1beta1 - 2*PDstandardNth2beta2 +
- PDstandardNth3beta3));
-
- CCTK_REAL gt22rhsL = -0.666666666666666666666666666667*(3*alphaL*At22L
- - 3*(gt12L*PDstandardNth2beta1 + gt23L*PDstandardNth2beta3) +
- gt22L*(PDstandardNth1beta1 - 2*PDstandardNth2beta2 +
- PDstandardNth3beta3));
-
- CCTK_REAL gt23rhsL = 0.333333333333333333333333333333*(-6*alphaL*At23L
- + 3*(gt13L*PDstandardNth2beta1 + gt33L*PDstandardNth2beta3 +
- gt12L*PDstandardNth3beta1 + gt22L*PDstandardNth3beta2) +
- gt23L*(-2*PDstandardNth1beta1 + PDstandardNth2beta2 +
- PDstandardNth3beta3));
-
- CCTK_REAL gt33rhsL = -0.666666666666666666666666666667*(3*alphaL*At33L
- - 3*(gt13L*PDstandardNth3beta1 + gt23L*PDstandardNth3beta2) +
- gt33L*(PDstandardNth1beta1 + PDstandardNth2beta2 -
- 2*PDstandardNth3beta3));
-
- CCTK_REAL dotXt1 =
- 0.333333333333333333333333333333*(7*(gtu12*PDstandardNth12beta1 +
- gtu13*PDstandardNth13beta1) + 6*gtu23*PDstandardNth23beta1 +
- 3*(gtu22*PDstandardNth22beta1 + gtu33*PDstandardNth33beta1) -
- 6*(Atu11*PDstandardNth1alpha + Atu12*PDstandardNth2alpha +
- Atu13*PDstandardNth3alpha) + gtu11*(4*PDstandardNth11beta1 +
- PDstandardNth12beta2 + PDstandardNth13beta3 -
- 150.7964473723100754462068823974161384415*alphaL*S1) +
- gtu12*(PDstandardNth22beta2 + PDstandardNth23beta3 -
- 150.7964473723100754462068823974161384415*alphaL*S2) +
- gtu13*(PDstandardNth23beta2 + PDstandardNth33beta3 -
- 150.7964473723100754462068823974161384415*alphaL*S3) +
- (-PDstandardNth1beta1 + 2*PDstandardNth3beta3)*Xtn1 +
- 2*(alphaL*(18*(Atu11*cdphi1 + Atu12*cdphi2 + Atu13*cdphi3) +
- 6*(Atu12*Gt112 + Atu13*Gt113 + Atu23*Gt123) + 3*(Atu11*Gt111 +
- Atu22*Gt122 + Atu33*Gt133) - 2*(gtu11*PDstandardNth1trK +
- gtu12*PDstandardNth2trK + gtu13*PDstandardNth3trK)) +
- PDstandardNth2beta2*Xtn1) - 3*(PDstandardNth2beta1*Xtn2 +
- PDstandardNth3beta1*Xtn3));
-
- CCTK_REAL dotXt2 =
- 0.333333333333333333333333333333*(6*gtu13*PDstandardNth13beta2 +
- 3*(gtu11*PDstandardNth11beta2 + gtu33*PDstandardNth33beta2) -
- 6*(Atu12*PDstandardNth1alpha + Atu22*PDstandardNth2alpha +
- Atu23*PDstandardNth3alpha) + gtu12*(PDstandardNth11beta1 +
- 7*PDstandardNth12beta2 + PDstandardNth13beta3 -
- 150.7964473723100754462068823974161384415*alphaL*S1) +
- gtu22*(PDstandardNth12beta1 + 4*PDstandardNth22beta2 +
- PDstandardNth23beta3 -
- 150.7964473723100754462068823974161384415*alphaL*S2) +
- gtu23*(PDstandardNth13beta1 + 7*PDstandardNth23beta2 +
- PDstandardNth33beta3 -
- 150.7964473723100754462068823974161384415*alphaL*S3) +
- (-PDstandardNth2beta2 + 2*PDstandardNth3beta3)*Xtn2 +
- 2*(alphaL*(18*(Atu12*cdphi1 + Atu22*cdphi2 + Atu23*cdphi3) +
- 6*(Atu12*Gt212 + Atu13*Gt213 + Atu23*Gt223) + 3*(Atu11*Gt211 +
- Atu22*Gt222 + Atu33*Gt233) - 2*(gtu12*PDstandardNth1trK +
- gtu22*PDstandardNth2trK + gtu23*PDstandardNth3trK)) +
- PDstandardNth1beta1*Xtn2) - 3*(PDstandardNth1beta2*Xtn1 +
- PDstandardNth3beta2*Xtn3));
-
- CCTK_REAL dotXt3 =
- 0.333333333333333333333333333333*(6*gtu12*PDstandardNth12beta3 +
- 3*(gtu11*PDstandardNth11beta3 + gtu22*PDstandardNth22beta3) -
- 6*(Atu13*PDstandardNth1alpha + Atu23*PDstandardNth2alpha +
- Atu33*PDstandardNth3alpha) + gtu13*(PDstandardNth11beta1 +
- PDstandardNth12beta2 + 7*PDstandardNth13beta3 -
- 150.7964473723100754462068823974161384415*alphaL*S1) +
- gtu23*(PDstandardNth12beta1 + PDstandardNth22beta2 +
- 7*PDstandardNth23beta3 -
- 150.7964473723100754462068823974161384415*alphaL*S2) +
- gtu33*(PDstandardNth13beta1 + PDstandardNth23beta2 +
- 4*PDstandardNth33beta3 -
- 150.7964473723100754462068823974161384415*alphaL*S3) -
- 3*(PDstandardNth1beta3*Xtn1 + PDstandardNth2beta3*Xtn2) +
- (2*PDstandardNth2beta2 - PDstandardNth3beta3)*Xtn3 +
- 2*(alphaL*(18*(Atu13*cdphi1 + Atu23*cdphi2 + Atu33*cdphi3) +
- 6*(Atu12*Gt312 + Atu13*Gt313 + Atu23*Gt323) + 3*(Atu11*Gt311 +
- Atu22*Gt322 + Atu33*Gt333) - 2*(gtu13*PDstandardNth1trK +
- gtu23*PDstandardNth2trK + gtu33*PDstandardNth3trK)) +
- PDstandardNth1beta1*Xtn3));
-
- CCTK_REAL Xt1rhsL = dotXt1;
-
- CCTK_REAL Xt2rhsL = dotXt2;
-
- CCTK_REAL Xt3rhsL = dotXt3;
-
- CCTK_REAL dottrK = -(em4phi*(gtu11*PDstandardNth11alpha +
- gtu22*PDstandardNth22alpha + gtu33*(PDstandardNth33alpha +
- 2*cdphi3*PDstandardNth3alpha) + 2*(gtu12*PDstandardNth12alpha +
- gtu13*(PDstandardNth13alpha + cdphi1*PDstandardNth3alpha) +
- gtu23*(PDstandardNth23alpha + cdphi2*PDstandardNth3alpha)) +
- PDstandardNth1alpha*(2*(cdphi1*gtu11 + cdphi2*gtu12 + cdphi3*gtu13) -
- Xtn1) + PDstandardNth2alpha*(2*(cdphi1*gtu12 + cdphi2*gtu22 +
- cdphi3*gtu23) - Xtn2) - PDstandardNth3alpha*Xtn3)) +
- alphaL*(2*(Atm12*Atm21 + Atm13*Atm31 + Atm23*Atm32) +
- 12.56637061435917295385057353311801153679*(rho + trS) + SQR(Atm11) +
- SQR(Atm22) + SQR(Atm33) + 0.333333333333333333333333333333*SQR(trKL));
-
- CCTK_REAL trKrhsL = dottrK;
-
- CCTK_REAL alpharhsL =
- -(pow(alphaL,ToReal(harmonicN))*ToReal(harmonicF)*(trKL + (AL -
- trKL)*ToReal(LapseACoeff)));
-
- CCTK_REAL ArhsL = (dottrK -
- AL*ToReal(AlphaDriver))*ToReal(LapseACoeff);
-
- CCTK_REAL eta = fmin(1,INV(rL)*ToReal(SpatialBetaDriverRadius));
-
- CCTK_REAL theta = fmin(1,exp(1 -
- rL*INV(ToReal(SpatialShiftGammaCoeffRadius))));
-
- CCTK_REAL beta1rhsL = theta*(Xt1L + beta1L*eta*ToReal(BetaDriver)*(-1
- + ToReal(ShiftBCoeff)) + (B1L -
- Xt1L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
-
- CCTK_REAL beta2rhsL = theta*(Xt2L + beta2L*eta*ToReal(BetaDriver)*(-1
- + ToReal(ShiftBCoeff)) + (B2L -
- Xt2L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
-
- CCTK_REAL beta3rhsL = theta*(Xt3L + beta3L*eta*ToReal(BetaDriver)*(-1
- + ToReal(ShiftBCoeff)) + (B3L -
- Xt3L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
-
- CCTK_REAL B1rhsL = (dotXt1 -
- B1L*eta*ToReal(BetaDriver))*ToReal(ShiftBCoeff);
-
- CCTK_REAL B2rhsL = (dotXt2 -
- B2L*eta*ToReal(BetaDriver))*ToReal(ShiftBCoeff);
-
- CCTK_REAL B3rhsL = (dotXt3 -
- B3L*eta*ToReal(BetaDriver))*ToReal(ShiftBCoeff);
-
- /* Copy local copies back to grid functions */
- alpharhs[index] = alpharhsL;
- Arhs[index] = ArhsL;
- B1rhs[index] = B1rhsL;
- B2rhs[index] = B2rhsL;
- B3rhs[index] = B3rhsL;
- beta1rhs[index] = beta1rhsL;
- beta2rhs[index] = beta2rhsL;
- beta3rhs[index] = beta3rhsL;
- gt11rhs[index] = gt11rhsL;
- gt12rhs[index] = gt12rhsL;
- gt13rhs[index] = gt13rhsL;
- gt22rhs[index] = gt22rhsL;
- gt23rhs[index] = gt23rhsL;
- gt33rhs[index] = gt33rhsL;
- phirhs[index] = phirhsL;
- trKrhs[index] = trKrhsL;
- Xt1rhs[index] = Xt1rhsL;
- Xt2rhs[index] = Xt2rhsL;
- Xt3rhs[index] = Xt3rhsL;
+ CCTK_REAL_VEC alpharhsL =
+ kneg(kmul(kpow(alphaL,harmonicN),kmul(ToReal(harmonicF),kmadd(ksub(AL,trKL),ToReal(LapseACoeff),trKL))));
+
+ CCTK_REAL_VEC ArhsL =
+ kmul(knmsub(AL,ToReal(AlphaDriver),dottrK),ToReal(LapseACoeff));
+
+ CCTK_REAL_VEC eta =
+ kfmin(ToReal(1),kmul(INV(rL),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(kmadd(gtu11,JacPDstandardNth1alpha,kmadd(gtu12,JacPDstandardNth2alpha,kmul(gtu13,JacPDstandardNth3alpha))),kmul(phiL,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(kmadd(gtu12,JacPDstandardNth1alpha,kmadd(gtu22,JacPDstandardNth2alpha,kmul(gtu23,JacPDstandardNth3alpha))),kmul(phiL,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(kmadd(gtu13,JacPDstandardNth1alpha,kmadd(gtu23,JacPDstandardNth2alpha,kmul(gtu33,JacPDstandardNth3alpha))),kmul(phiL,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(beta1L,kmul(eta,ToReal(BetaDriver*(-1 +
+ ShiftBCoeff))),kmul(ksub(B1L,Xt1L),ToReal(ShiftBCoeff)))),ToReal(ShiftGammaCoeff)));
+
+ beta2rhsL =
+ kmul(theta,kmul(kadd(Xt2L,kmadd(beta2L,kmul(eta,ToReal(BetaDriver*(-1 +
+ ShiftBCoeff))),kmul(ksub(B2L,Xt2L),ToReal(ShiftBCoeff)))),ToReal(ShiftGammaCoeff)));
+
+ beta3rhsL =
+ kmul(theta,kmul(kadd(Xt3L,kmadd(beta3L,kmul(eta,ToReal(BetaDriver*(-1 +
+ ShiftBCoeff))),kmul(ksub(B3L,Xt3L),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));
+
+ /* 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(Arhs[index],ArhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B1rhs[index],B1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B2rhs[index],B2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt12rhs[index],gt12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt13rhs[index],gt13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt22rhs[index],gt22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt23rhs[index],gt23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt33rhs[index],gt33rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(phirhs[index],phirhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(trKrhs[index],trKrhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt1rhs[index],Xt1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt2rhs[index],Xt2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt3rhs[index],Xt3rhsL,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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_hi(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_hi(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_hi(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_hi(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_hi(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_hi(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_hi(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_hi(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_hi(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_hi(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_hi(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt3rhs[index],Xt3rhsL,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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_lo(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_lo(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_lo(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_lo(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_lo(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_lo(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_lo(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_lo(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_lo(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_lo(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_lo(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt3rhs[index],Xt3rhsL,elt_count);
+ break;
+ }
+ vec_store_nta(alpharhs[index],alpharhsL);
+ vec_store_nta(Arhs[index],ArhsL);
+ vec_store_nta(B1rhs[index],B1rhsL);
+ vec_store_nta(B2rhs[index],B2rhsL);
+ vec_store_nta(B3rhs[index],B3rhsL);
+ vec_store_nta(beta1rhs[index],beta1rhsL);
+ vec_store_nta(beta2rhs[index],beta2rhsL);
+ vec_store_nta(beta3rhs[index],beta3rhsL);
+ vec_store_nta(gt11rhs[index],gt11rhsL);
+ vec_store_nta(gt12rhs[index],gt12rhsL);
+ vec_store_nta(gt13rhs[index],gt13rhsL);
+ vec_store_nta(gt22rhs[index],gt22rhsL);
+ vec_store_nta(gt23rhs[index],gt23rhsL);
+ vec_store_nta(gt33rhs[index],gt33rhsL);
+ vec_store_nta(phirhs[index],phirhsL);
+ vec_store_nta(trKrhs[index],trKrhsL);
+ vec_store_nta(Xt1rhs[index],Xt1rhsL);
+ vec_store_nta(Xt2rhs[index],Xt2rhsL);
+ vec_store_nta(Xt3rhs[index],Xt3rhsL);
}
- LC_ENDLOOP3 (ML_BSSN_UPW_RHS1);
+ LC_ENDLOOP3VEC (ML_BSSN_UPW_RHS1);
}
extern "C" void ML_BSSN_UPW_RHS1(CCTK_ARGUMENTS)
@@ -600,5 +1486,43 @@ extern "C" void ML_BSSN_UPW_RHS1(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_UPW_RHS1_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_UPW_RHS1_calc_every != ML_BSSN_UPW_RHS1_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"grid::coordinates","Grid::coordinates","ML_BSSN_UPW::ML_curv","ML_BSSN_UPW::ML_dtlapse","ML_BSSN_UPW::ML_dtlapserhs","ML_BSSN_UPW::ML_dtshift","ML_BSSN_UPW::ML_dtshiftrhs","ML_BSSN_UPW::ML_Gamma","ML_BSSN_UPW::ML_Gammarhs","ML_BSSN_UPW::ML_lapse","ML_BSSN_UPW::ML_lapserhs","ML_BSSN_UPW::ML_log_confac","ML_BSSN_UPW::ML_log_confacrhs","ML_BSSN_UPW::ML_metric","ML_BSSN_UPW::ML_metricrhs","ML_BSSN_UPW::ML_shift","ML_BSSN_UPW::ML_shiftrhs","ML_BSSN_UPW::ML_trace_curv","ML_BSSN_UPW::ML_trace_curvrhs"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_UPW_RHS1", 19, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_UPW_RHS1", 1, 1, 1);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_UPW_RHS1", 2, 2, 2);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_UPW_RHS1", 3, 3, 3);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_UPW_RHS1", 4, 4, 4);
+ break;
+ }
+
GenericFD_LoopOverInterior(cctkGH, &ML_BSSN_UPW_RHS1_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_UPW_RHS1_Body");
+ }
}
diff --git a/ML_BSSN_UPW/src/ML_BSSN_UPW_RHS2.cc b/ML_BSSN_UPW/src/ML_BSSN_UPW_RHS2.cc
index f1e2665..f3529a3 100644
--- a/ML_BSSN_UPW/src/ML_BSSN_UPW_RHS2.cc
+++ b/ML_BSSN_UPW/src/ML_BSSN_UPW_RHS2.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_UPW_RHS2_SelectBCs(CCTK_ARGUMENTS)
{
@@ -33,7 +34,7 @@ extern "C" void ML_BSSN_UPW_RHS2_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_BSSN_UPW_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_UPW_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;
@@ -41,21 +42,6 @@ static void ML_BSSN_UPW_RHS2_Body(cGH const * restrict const cctkGH, int const d
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_UPW_RHS2_Body");
- }
-
- if (cctk_iteration % ML_BSSN_UPW_RHS2_calc_every != ML_BSSN_UPW_RHS2_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN_UPW::ML_curv","ML_BSSN_UPW::ML_curvrhs","ML_BSSN_UPW::ML_Gamma","ML_BSSN_UPW::ML_lapse","ML_BSSN_UPW::ML_log_confac","ML_BSSN_UPW::ML_metric","ML_BSSN_UPW::ML_shift","ML_BSSN_UPW::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_UPW_RHS2", 8, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_UPW_RHS2", 2, 2, 2);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -65,84 +51,199 @@ static void ML_BSSN_UPW_RHS2_Body(cGH const * restrict const cctkGH, int const d
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const p1o24dx = 0.0416666666666666666666666666667*INV(dx);
- CCTK_REAL const p1o24dy = 0.0416666666666666666666666666667*INV(dy);
- CCTK_REAL const p1o24dz = 0.0416666666666666666666666666667*INV(dz);
- CCTK_REAL const p1o64dx = 0.015625*INV(dx);
- CCTK_REAL const p1o64dy = 0.015625*INV(dy);
- CCTK_REAL const p1o64dz = 0.015625*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_UPW_RHS2,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_UPW_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 alphaL = alpha[index];
- CCTK_REAL At11L = At11[index];
- CCTK_REAL At12L = At12[index];
- CCTK_REAL At13L = At13[index];
- CCTK_REAL At22L = At22[index];
- CCTK_REAL At23L = At23[index];
- CCTK_REAL At33L = At33[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL gt11L = gt11[index];
- CCTK_REAL gt12L = gt12[index];
- CCTK_REAL gt13L = gt13[index];
- CCTK_REAL gt22L = gt22[index];
- CCTK_REAL gt23L = gt23[index];
- CCTK_REAL gt33L = gt33[index];
- CCTK_REAL phiL = phi[index];
- CCTK_REAL trKL = trK[index];
- CCTK_REAL Xt1L = Xt1[index];
- CCTK_REAL Xt2L = Xt2[index];
- CCTK_REAL Xt3L = Xt3[index];
-
- CCTK_REAL eTxxL, eTxyL, eTxzL, eTyyL, eTyzL, eTzzL;
+ 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 eTxxL, eTxyL, eTxzL, eTyyL, eTyzL, eTzzL;
if (*stress_energy_state)
{
- eTxxL = eTxx[index];
- eTxyL = eTxy[index];
- eTxzL = eTxz[index];
- eTyyL = eTyy[index];
- eTyzL = eTyz[index];
- eTzzL = eTzz[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
{
@@ -154,99 +255,507 @@ static void ML_BSSN_UPW_RHS2_Body(cGH const * restrict const cctkGH, int const d
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 const PDstandardNth1alpha = PDstandardNth1(&alpha[index]);
- CCTK_REAL const PDstandardNth2alpha = PDstandardNth2(&alpha[index]);
- CCTK_REAL const PDstandardNth3alpha = PDstandardNth3(&alpha[index]);
- CCTK_REAL const PDstandardNth11alpha = PDstandardNth11(&alpha[index]);
- CCTK_REAL const PDstandardNth22alpha = PDstandardNth22(&alpha[index]);
- CCTK_REAL const PDstandardNth33alpha = PDstandardNth33(&alpha[index]);
- CCTK_REAL const PDstandardNth12alpha = PDstandardNth12(&alpha[index]);
- CCTK_REAL const PDstandardNth13alpha = PDstandardNth13(&alpha[index]);
- CCTK_REAL const PDstandardNth23alpha = PDstandardNth23(&alpha[index]);
- CCTK_REAL const PDstandardNth1beta1 = PDstandardNth1(&beta1[index]);
- CCTK_REAL const PDstandardNth2beta1 = PDstandardNth2(&beta1[index]);
- CCTK_REAL const PDstandardNth3beta1 = PDstandardNth3(&beta1[index]);
- CCTK_REAL const PDstandardNth1beta2 = PDstandardNth1(&beta2[index]);
- CCTK_REAL const PDstandardNth2beta2 = PDstandardNth2(&beta2[index]);
- CCTK_REAL const PDstandardNth3beta2 = PDstandardNth3(&beta2[index]);
- CCTK_REAL const PDstandardNth1beta3 = PDstandardNth1(&beta3[index]);
- CCTK_REAL const PDstandardNth2beta3 = PDstandardNth2(&beta3[index]);
- CCTK_REAL const PDstandardNth3beta3 = PDstandardNth3(&beta3[index]);
- CCTK_REAL const PDstandardNth1gt11 = PDstandardNth1(&gt11[index]);
- CCTK_REAL const PDstandardNth2gt11 = PDstandardNth2(&gt11[index]);
- CCTK_REAL const PDstandardNth3gt11 = PDstandardNth3(&gt11[index]);
- CCTK_REAL const PDstandardNth11gt11 = PDstandardNth11(&gt11[index]);
- CCTK_REAL const PDstandardNth22gt11 = PDstandardNth22(&gt11[index]);
- CCTK_REAL const PDstandardNth33gt11 = PDstandardNth33(&gt11[index]);
- CCTK_REAL const PDstandardNth12gt11 = PDstandardNth12(&gt11[index]);
- CCTK_REAL const PDstandardNth13gt11 = PDstandardNth13(&gt11[index]);
- CCTK_REAL const PDstandardNth23gt11 = PDstandardNth23(&gt11[index]);
- CCTK_REAL const PDstandardNth1gt12 = PDstandardNth1(&gt12[index]);
- CCTK_REAL const PDstandardNth2gt12 = PDstandardNth2(&gt12[index]);
- CCTK_REAL const PDstandardNth3gt12 = PDstandardNth3(&gt12[index]);
- CCTK_REAL const PDstandardNth11gt12 = PDstandardNth11(&gt12[index]);
- CCTK_REAL const PDstandardNth22gt12 = PDstandardNth22(&gt12[index]);
- CCTK_REAL const PDstandardNth33gt12 = PDstandardNth33(&gt12[index]);
- CCTK_REAL const PDstandardNth12gt12 = PDstandardNth12(&gt12[index]);
- CCTK_REAL const PDstandardNth13gt12 = PDstandardNth13(&gt12[index]);
- CCTK_REAL const PDstandardNth23gt12 = PDstandardNth23(&gt12[index]);
- CCTK_REAL const PDstandardNth1gt13 = PDstandardNth1(&gt13[index]);
- CCTK_REAL const PDstandardNth2gt13 = PDstandardNth2(&gt13[index]);
- CCTK_REAL const PDstandardNth3gt13 = PDstandardNth3(&gt13[index]);
- CCTK_REAL const PDstandardNth11gt13 = PDstandardNth11(&gt13[index]);
- CCTK_REAL const PDstandardNth22gt13 = PDstandardNth22(&gt13[index]);
- CCTK_REAL const PDstandardNth33gt13 = PDstandardNth33(&gt13[index]);
- CCTK_REAL const PDstandardNth12gt13 = PDstandardNth12(&gt13[index]);
- CCTK_REAL const PDstandardNth13gt13 = PDstandardNth13(&gt13[index]);
- CCTK_REAL const PDstandardNth23gt13 = PDstandardNth23(&gt13[index]);
- CCTK_REAL const PDstandardNth1gt22 = PDstandardNth1(&gt22[index]);
- CCTK_REAL const PDstandardNth2gt22 = PDstandardNth2(&gt22[index]);
- CCTK_REAL const PDstandardNth3gt22 = PDstandardNth3(&gt22[index]);
- CCTK_REAL const PDstandardNth11gt22 = PDstandardNth11(&gt22[index]);
- CCTK_REAL const PDstandardNth22gt22 = PDstandardNth22(&gt22[index]);
- CCTK_REAL const PDstandardNth33gt22 = PDstandardNth33(&gt22[index]);
- CCTK_REAL const PDstandardNth12gt22 = PDstandardNth12(&gt22[index]);
- CCTK_REAL const PDstandardNth13gt22 = PDstandardNth13(&gt22[index]);
- CCTK_REAL const PDstandardNth23gt22 = PDstandardNth23(&gt22[index]);
- CCTK_REAL const PDstandardNth1gt23 = PDstandardNth1(&gt23[index]);
- CCTK_REAL const PDstandardNth2gt23 = PDstandardNth2(&gt23[index]);
- CCTK_REAL const PDstandardNth3gt23 = PDstandardNth3(&gt23[index]);
- CCTK_REAL const PDstandardNth11gt23 = PDstandardNth11(&gt23[index]);
- CCTK_REAL const PDstandardNth22gt23 = PDstandardNth22(&gt23[index]);
- CCTK_REAL const PDstandardNth33gt23 = PDstandardNth33(&gt23[index]);
- CCTK_REAL const PDstandardNth12gt23 = PDstandardNth12(&gt23[index]);
- CCTK_REAL const PDstandardNth13gt23 = PDstandardNth13(&gt23[index]);
- CCTK_REAL const PDstandardNth23gt23 = PDstandardNth23(&gt23[index]);
- CCTK_REAL const PDstandardNth1gt33 = PDstandardNth1(&gt33[index]);
- CCTK_REAL const PDstandardNth2gt33 = PDstandardNth2(&gt33[index]);
- CCTK_REAL const PDstandardNth3gt33 = PDstandardNth3(&gt33[index]);
- CCTK_REAL const PDstandardNth11gt33 = PDstandardNth11(&gt33[index]);
- CCTK_REAL const PDstandardNth22gt33 = PDstandardNth22(&gt33[index]);
- CCTK_REAL const PDstandardNth33gt33 = PDstandardNth33(&gt33[index]);
- CCTK_REAL const PDstandardNth12gt33 = PDstandardNth12(&gt33[index]);
- CCTK_REAL const PDstandardNth13gt33 = PDstandardNth13(&gt33[index]);
- CCTK_REAL const PDstandardNth23gt33 = PDstandardNth23(&gt33[index]);
- CCTK_REAL const PDstandardNth1phi = PDstandardNth1(&phi[index]);
- CCTK_REAL const PDstandardNth2phi = PDstandardNth2(&phi[index]);
- CCTK_REAL const PDstandardNth3phi = PDstandardNth3(&phi[index]);
- CCTK_REAL const PDstandardNth11phi = PDstandardNth11(&phi[index]);
- CCTK_REAL const PDstandardNth22phi = PDstandardNth22(&phi[index]);
- CCTK_REAL const PDstandardNth33phi = PDstandardNth33(&phi[index]);
- CCTK_REAL const PDstandardNth12phi = PDstandardNth12(&phi[index]);
- CCTK_REAL const PDstandardNth13phi = PDstandardNth13(&phi[index]);
- CCTK_REAL const PDstandardNth23phi = PDstandardNth23(&phi[index]);
- CCTK_REAL const PDstandardNth1Xt1 = PDstandardNth1(&Xt1[index]);
- CCTK_REAL const PDstandardNth2Xt1 = PDstandardNth2(&Xt1[index]);
- CCTK_REAL const PDstandardNth3Xt1 = PDstandardNth3(&Xt1[index]);
- CCTK_REAL const PDstandardNth1Xt2 = PDstandardNth1(&Xt2[index]);
- CCTK_REAL const PDstandardNth2Xt2 = PDstandardNth2(&Xt2[index]);
- CCTK_REAL const PDstandardNth3Xt2 = PDstandardNth3(&Xt2[index]);
- CCTK_REAL const PDstandardNth1Xt3 = PDstandardNth1(&Xt3[index]);
- CCTK_REAL const PDstandardNth2Xt3 = PDstandardNth2(&Xt3[index]);
- CCTK_REAL const PDstandardNth3Xt3 = PDstandardNth3(&Xt3[index]);
+ 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);
@@ -255,465 +764,1092 @@ static void ML_BSSN_UPW_RHS2_Body(cGH const * restrict const cctkGH, int const d
ptrdiff_t dir3 = Sign(beta3L);
- CCTK_REAL detgt = 1;
+ 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 gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L));
+ CCTK_REAL_VEC gtu33 = kmul(INV(detgt),kmsub(gt11L,gt22L,SQR(gt12L)));
- CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt);
+ CCTK_REAL_VEC Gtl111 = kmul(JacPDstandardNth1gt11,ToReal(0.5));
- CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC Gtl112 = kmul(JacPDstandardNth2gt11,ToReal(0.5));
- CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L));
+ CCTK_REAL_VEC Gtl113 = kmul(JacPDstandardNth3gt11,ToReal(0.5));
- CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC Gtl122 =
+ kmadd(JacPDstandardNth1gt22,ToReal(-0.5),JacPDstandardNth2gt12);
- CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L));
+ CCTK_REAL_VEC Gtl123 =
+ kmul(kadd(JacPDstandardNth2gt13,ksub(JacPDstandardNth3gt12,JacPDstandardNth1gt23)),ToReal(0.5));
- CCTK_REAL Gtl111 = 0.5*PDstandardNth1gt11;
+ CCTK_REAL_VEC Gtl133 =
+ kmadd(JacPDstandardNth1gt33,ToReal(-0.5),JacPDstandardNth3gt13);
- CCTK_REAL Gtl112 = 0.5*PDstandardNth2gt11;
+ CCTK_REAL_VEC Gtl211 =
+ kmadd(JacPDstandardNth2gt11,ToReal(-0.5),JacPDstandardNth1gt12);
- CCTK_REAL Gtl113 = 0.5*PDstandardNth3gt11;
+ CCTK_REAL_VEC Gtl212 = kmul(JacPDstandardNth1gt22,ToReal(0.5));
- CCTK_REAL Gtl122 = -0.5*PDstandardNth1gt22 + PDstandardNth2gt12;
+ CCTK_REAL_VEC Gtl213 =
+ kmul(kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth3gt12,JacPDstandardNth2gt13)),ToReal(0.5));
- CCTK_REAL Gtl123 = 0.5*(-PDstandardNth1gt23 + PDstandardNth2gt13 +
- PDstandardNth3gt12);
+ CCTK_REAL_VEC Gtl222 = kmul(JacPDstandardNth2gt22,ToReal(0.5));
- CCTK_REAL Gtl133 = -0.5*PDstandardNth1gt33 + PDstandardNth3gt13;
+ CCTK_REAL_VEC Gtl223 = kmul(JacPDstandardNth3gt22,ToReal(0.5));
- CCTK_REAL Gtl211 = PDstandardNth1gt12 - 0.5*PDstandardNth2gt11;
+ CCTK_REAL_VEC Gtl233 =
+ kmadd(JacPDstandardNth2gt33,ToReal(-0.5),JacPDstandardNth3gt23);
- CCTK_REAL Gtl212 = 0.5*PDstandardNth1gt22;
+ CCTK_REAL_VEC Gtl311 =
+ kmadd(JacPDstandardNth3gt11,ToReal(-0.5),JacPDstandardNth1gt13);
- CCTK_REAL Gtl213 = 0.5*(PDstandardNth1gt23 - PDstandardNth2gt13 +
- PDstandardNth3gt12);
+ CCTK_REAL_VEC Gtl312 =
+ kmul(kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth2gt13,JacPDstandardNth3gt12)),ToReal(0.5));
- CCTK_REAL Gtl222 = 0.5*PDstandardNth2gt22;
+ CCTK_REAL_VEC Gtl313 = kmul(JacPDstandardNth1gt33,ToReal(0.5));
- CCTK_REAL Gtl223 = 0.5*PDstandardNth3gt22;
+ CCTK_REAL_VEC Gtl322 =
+ kmadd(JacPDstandardNth3gt22,ToReal(-0.5),JacPDstandardNth2gt23);
- CCTK_REAL Gtl233 = -0.5*PDstandardNth2gt33 + PDstandardNth3gt23;
+ CCTK_REAL_VEC Gtl323 = kmul(JacPDstandardNth2gt33,ToReal(0.5));
- CCTK_REAL Gtl311 = PDstandardNth1gt13 - 0.5*PDstandardNth3gt11;
+ CCTK_REAL_VEC Gtl333 = kmul(JacPDstandardNth3gt33,ToReal(0.5));
- CCTK_REAL Gtl312 = 0.5*(PDstandardNth1gt23 + PDstandardNth2gt13 -
- PDstandardNth3gt12);
+ CCTK_REAL_VEC Gtlu111 =
+ kmadd(Gtl111,gtu11,kmadd(Gtl112,gtu12,kmul(Gtl113,gtu13)));
- CCTK_REAL Gtl313 = 0.5*PDstandardNth1gt33;
+ CCTK_REAL_VEC Gtlu112 =
+ kmadd(Gtl111,gtu12,kmadd(Gtl112,gtu22,kmul(Gtl113,gtu23)));
- CCTK_REAL Gtl322 = PDstandardNth2gt23 - 0.5*PDstandardNth3gt22;
+ CCTK_REAL_VEC Gtlu113 =
+ kmadd(Gtl111,gtu13,kmadd(Gtl112,gtu23,kmul(Gtl113,gtu33)));
- CCTK_REAL Gtl323 = 0.5*PDstandardNth2gt33;
+ CCTK_REAL_VEC Gtlu121 =
+ kmadd(Gtl112,gtu11,kmadd(Gtl122,gtu12,kmul(Gtl123,gtu13)));
- CCTK_REAL Gtl333 = 0.5*PDstandardNth3gt33;
+ CCTK_REAL_VEC Gtlu122 =
+ kmadd(Gtl112,gtu12,kmadd(Gtl122,gtu22,kmul(Gtl123,gtu23)));
- CCTK_REAL Gtlu111 = Gtl111*gtu11 + Gtl112*gtu12 + Gtl113*gtu13;
+ CCTK_REAL_VEC Gtlu123 =
+ kmadd(Gtl112,gtu13,kmadd(Gtl122,gtu23,kmul(Gtl123,gtu33)));
- CCTK_REAL Gtlu112 = Gtl111*gtu12 + Gtl112*gtu22 + Gtl113*gtu23;
+ CCTK_REAL_VEC Gtlu131 =
+ kmadd(Gtl113,gtu11,kmadd(Gtl123,gtu12,kmul(Gtl133,gtu13)));
- CCTK_REAL Gtlu113 = Gtl111*gtu13 + Gtl112*gtu23 + Gtl113*gtu33;
+ CCTK_REAL_VEC Gtlu132 =
+ kmadd(Gtl113,gtu12,kmadd(Gtl123,gtu22,kmul(Gtl133,gtu23)));
- CCTK_REAL Gtlu121 = Gtl112*gtu11 + Gtl122*gtu12 + Gtl123*gtu13;
+ CCTK_REAL_VEC Gtlu133 =
+ kmadd(Gtl113,gtu13,kmadd(Gtl123,gtu23,kmul(Gtl133,gtu33)));
- CCTK_REAL Gtlu122 = Gtl112*gtu12 + Gtl122*gtu22 + Gtl123*gtu23;
+ CCTK_REAL_VEC Gtlu211 =
+ kmadd(Gtl211,gtu11,kmadd(Gtl212,gtu12,kmul(Gtl213,gtu13)));
- CCTK_REAL Gtlu123 = Gtl112*gtu13 + Gtl122*gtu23 + Gtl123*gtu33;
+ CCTK_REAL_VEC Gtlu212 =
+ kmadd(Gtl211,gtu12,kmadd(Gtl212,gtu22,kmul(Gtl213,gtu23)));
- CCTK_REAL Gtlu131 = Gtl113*gtu11 + Gtl123*gtu12 + Gtl133*gtu13;
+ CCTK_REAL_VEC Gtlu213 =
+ kmadd(Gtl211,gtu13,kmadd(Gtl212,gtu23,kmul(Gtl213,gtu33)));
- CCTK_REAL Gtlu132 = Gtl113*gtu12 + Gtl123*gtu22 + Gtl133*gtu23;
+ CCTK_REAL_VEC Gtlu221 =
+ kmadd(Gtl212,gtu11,kmadd(Gtl222,gtu12,kmul(Gtl223,gtu13)));
- CCTK_REAL Gtlu133 = Gtl113*gtu13 + Gtl123*gtu23 + Gtl133*gtu33;
+ CCTK_REAL_VEC Gtlu222 =
+ kmadd(Gtl212,gtu12,kmadd(Gtl222,gtu22,kmul(Gtl223,gtu23)));
- CCTK_REAL Gtlu211 = Gtl211*gtu11 + Gtl212*gtu12 + Gtl213*gtu13;
+ CCTK_REAL_VEC Gtlu223 =
+ kmadd(Gtl212,gtu13,kmadd(Gtl222,gtu23,kmul(Gtl223,gtu33)));
- CCTK_REAL Gtlu212 = Gtl211*gtu12 + Gtl212*gtu22 + Gtl213*gtu23;
+ CCTK_REAL_VEC Gtlu231 =
+ kmadd(Gtl213,gtu11,kmadd(Gtl223,gtu12,kmul(Gtl233,gtu13)));
- CCTK_REAL Gtlu213 = Gtl211*gtu13 + Gtl212*gtu23 + Gtl213*gtu33;
+ CCTK_REAL_VEC Gtlu232 =
+ kmadd(Gtl213,gtu12,kmadd(Gtl223,gtu22,kmul(Gtl233,gtu23)));
- CCTK_REAL Gtlu221 = Gtl212*gtu11 + Gtl222*gtu12 + Gtl223*gtu13;
+ CCTK_REAL_VEC Gtlu233 =
+ kmadd(Gtl213,gtu13,kmadd(Gtl223,gtu23,kmul(Gtl233,gtu33)));
- CCTK_REAL Gtlu222 = Gtl212*gtu12 + Gtl222*gtu22 + Gtl223*gtu23;
+ CCTK_REAL_VEC Gtlu311 =
+ kmadd(Gtl311,gtu11,kmadd(Gtl312,gtu12,kmul(Gtl313,gtu13)));
- CCTK_REAL Gtlu223 = Gtl212*gtu13 + Gtl222*gtu23 + Gtl223*gtu33;
+ CCTK_REAL_VEC Gtlu312 =
+ kmadd(Gtl311,gtu12,kmadd(Gtl312,gtu22,kmul(Gtl313,gtu23)));
- CCTK_REAL Gtlu231 = Gtl213*gtu11 + Gtl223*gtu12 + Gtl233*gtu13;
+ CCTK_REAL_VEC Gtlu313 =
+ kmadd(Gtl311,gtu13,kmadd(Gtl312,gtu23,kmul(Gtl313,gtu33)));
- CCTK_REAL Gtlu232 = Gtl213*gtu12 + Gtl223*gtu22 + Gtl233*gtu23;
+ CCTK_REAL_VEC Gtlu321 =
+ kmadd(Gtl312,gtu11,kmadd(Gtl322,gtu12,kmul(Gtl323,gtu13)));
- CCTK_REAL Gtlu233 = Gtl213*gtu13 + Gtl223*gtu23 + Gtl233*gtu33;
+ CCTK_REAL_VEC Gtlu322 =
+ kmadd(Gtl312,gtu12,kmadd(Gtl322,gtu22,kmul(Gtl323,gtu23)));
- CCTK_REAL Gtlu311 = Gtl311*gtu11 + Gtl312*gtu12 + Gtl313*gtu13;
+ CCTK_REAL_VEC Gtlu323 =
+ kmadd(Gtl312,gtu13,kmadd(Gtl322,gtu23,kmul(Gtl323,gtu33)));
- CCTK_REAL Gtlu312 = Gtl311*gtu12 + Gtl312*gtu22 + Gtl313*gtu23;
+ CCTK_REAL_VEC Gtlu331 =
+ kmadd(Gtl313,gtu11,kmadd(Gtl323,gtu12,kmul(Gtl333,gtu13)));
- CCTK_REAL Gtlu313 = Gtl311*gtu13 + Gtl312*gtu23 + Gtl313*gtu33;
+ CCTK_REAL_VEC Gtlu332 =
+ kmadd(Gtl313,gtu12,kmadd(Gtl323,gtu22,kmul(Gtl333,gtu23)));
- CCTK_REAL Gtlu321 = Gtl312*gtu11 + Gtl322*gtu12 + Gtl323*gtu13;
+ CCTK_REAL_VEC Gtlu333 =
+ kmadd(Gtl313,gtu13,kmadd(Gtl323,gtu23,kmul(Gtl333,gtu33)));
- CCTK_REAL Gtlu322 = Gtl312*gtu12 + Gtl322*gtu22 + Gtl323*gtu23;
+ CCTK_REAL_VEC Gt111 =
+ kmadd(Gtl111,gtu11,kmadd(Gtl211,gtu12,kmul(Gtl311,gtu13)));
- CCTK_REAL Gtlu323 = Gtl312*gtu13 + Gtl322*gtu23 + Gtl323*gtu33;
+ CCTK_REAL_VEC Gt211 =
+ kmadd(Gtl111,gtu12,kmadd(Gtl211,gtu22,kmul(Gtl311,gtu23)));
- CCTK_REAL Gtlu331 = Gtl313*gtu11 + Gtl323*gtu12 + Gtl333*gtu13;
+ CCTK_REAL_VEC Gt311 =
+ kmadd(Gtl111,gtu13,kmadd(Gtl211,gtu23,kmul(Gtl311,gtu33)));
- CCTK_REAL Gtlu332 = Gtl313*gtu12 + Gtl323*gtu22 + Gtl333*gtu23;
+ CCTK_REAL_VEC Gt112 =
+ kmadd(Gtl112,gtu11,kmadd(Gtl212,gtu12,kmul(Gtl312,gtu13)));
- CCTK_REAL Gtlu333 = Gtl313*gtu13 + Gtl323*gtu23 + Gtl333*gtu33;
+ CCTK_REAL_VEC Gt212 =
+ kmadd(Gtl112,gtu12,kmadd(Gtl212,gtu22,kmul(Gtl312,gtu23)));
- CCTK_REAL Gt111 = Gtl111*gtu11 + Gtl211*gtu12 + Gtl311*gtu13;
+ CCTK_REAL_VEC Gt312 =
+ kmadd(Gtl112,gtu13,kmadd(Gtl212,gtu23,kmul(Gtl312,gtu33)));
- CCTK_REAL Gt211 = Gtl111*gtu12 + Gtl211*gtu22 + Gtl311*gtu23;
+ CCTK_REAL_VEC Gt113 =
+ kmadd(Gtl113,gtu11,kmadd(Gtl213,gtu12,kmul(Gtl313,gtu13)));
- CCTK_REAL Gt311 = Gtl111*gtu13 + Gtl211*gtu23 + Gtl311*gtu33;
+ CCTK_REAL_VEC Gt213 =
+ kmadd(Gtl113,gtu12,kmadd(Gtl213,gtu22,kmul(Gtl313,gtu23)));
- CCTK_REAL Gt112 = Gtl112*gtu11 + Gtl212*gtu12 + Gtl312*gtu13;
+ CCTK_REAL_VEC Gt313 =
+ kmadd(Gtl113,gtu13,kmadd(Gtl213,gtu23,kmul(Gtl313,gtu33)));
- CCTK_REAL Gt212 = Gtl112*gtu12 + Gtl212*gtu22 + Gtl312*gtu23;
+ CCTK_REAL_VEC Gt122 =
+ kmadd(Gtl122,gtu11,kmadd(Gtl222,gtu12,kmul(Gtl322,gtu13)));
- CCTK_REAL Gt312 = Gtl112*gtu13 + Gtl212*gtu23 + Gtl312*gtu33;
+ CCTK_REAL_VEC Gt222 =
+ kmadd(Gtl122,gtu12,kmadd(Gtl222,gtu22,kmul(Gtl322,gtu23)));
- CCTK_REAL Gt113 = Gtl113*gtu11 + Gtl213*gtu12 + Gtl313*gtu13;
+ CCTK_REAL_VEC Gt322 =
+ kmadd(Gtl122,gtu13,kmadd(Gtl222,gtu23,kmul(Gtl322,gtu33)));
- CCTK_REAL Gt213 = Gtl113*gtu12 + Gtl213*gtu22 + Gtl313*gtu23;
+ CCTK_REAL_VEC Gt123 =
+ kmadd(Gtl123,gtu11,kmadd(Gtl223,gtu12,kmul(Gtl323,gtu13)));
- CCTK_REAL Gt313 = Gtl113*gtu13 + Gtl213*gtu23 + Gtl313*gtu33;
+ CCTK_REAL_VEC Gt223 =
+ kmadd(Gtl123,gtu12,kmadd(Gtl223,gtu22,kmul(Gtl323,gtu23)));
- CCTK_REAL Gt122 = Gtl122*gtu11 + Gtl222*gtu12 + Gtl322*gtu13;
+ CCTK_REAL_VEC Gt323 =
+ kmadd(Gtl123,gtu13,kmadd(Gtl223,gtu23,kmul(Gtl323,gtu33)));
- CCTK_REAL Gt222 = Gtl122*gtu12 + Gtl222*gtu22 + Gtl322*gtu23;
+ CCTK_REAL_VEC Gt133 =
+ kmadd(Gtl133,gtu11,kmadd(Gtl233,gtu12,kmul(Gtl333,gtu13)));
- CCTK_REAL Gt322 = Gtl122*gtu13 + Gtl222*gtu23 + Gtl322*gtu33;
+ CCTK_REAL_VEC Gt233 =
+ kmadd(Gtl133,gtu12,kmadd(Gtl233,gtu22,kmul(Gtl333,gtu23)));
- CCTK_REAL Gt123 = Gtl123*gtu11 + Gtl223*gtu12 + Gtl323*gtu13;
+ CCTK_REAL_VEC Gt333 =
+ kmadd(Gtl133,gtu13,kmadd(Gtl233,gtu23,kmul(Gtl333,gtu33)));
- CCTK_REAL Gt223 = Gtl123*gtu12 + Gtl223*gtu22 + Gtl323*gtu23;
+ 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 Gt323 = Gtl123*gtu13 + Gtl223*gtu23 + Gtl323*gtu33;
+ 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 Gt133 = Gtl133*gtu11 + Gtl233*gtu12 + Gtl333*gtu13;
+ 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 Gt233 = Gtl133*gtu12 + Gtl233*gtu22 + Gtl333*gtu23;
+ 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 Gt333 = Gtl133*gtu13 + Gtl233*gtu23 + Gtl333*gtu33;
+ 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 Xtn1 = Gt111*gtu11 + Gt122*gtu22 + 2*(Gt112*gtu12 +
- Gt113*gtu13 + Gt123*gtu23) + Gt133*gtu33;
+ 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 Xtn2 = Gt211*gtu11 + Gt222*gtu22 + 2*(Gt212*gtu12 +
- Gt213*gtu13 + Gt223*gtu23) + Gt233*gtu33;
+ 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 Xtn3 = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu12 +
- Gt313*gtu13 + Gt323*gtu23) + Gt333*gtu33;
+ 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 Rt11 = 0.5*(6*(Gt111*Gtlu111 + Gt112*Gtlu112 +
- Gt113*Gtlu113) + 4*(Gt211*Gtlu121 + Gt212*Gtlu122 + Gt213*Gtlu123 +
- Gt311*Gtlu131 + Gt312*Gtlu132 + Gt313*Gtlu133) -
- gtu11*PDstandardNth11gt11 - 2*gtu12*PDstandardNth12gt11 -
- 2*gtu13*PDstandardNth13gt11 + 2*(Gt211*Gtlu211 + Gt212*Gtlu212 +
- Gt213*Gtlu213 + Gt311*Gtlu311 + Gt312*Gtlu312 + Gt313*Gtlu313 +
- gt11L*PDstandardNth1Xt1) + 2*gt12L*PDstandardNth1Xt2 +
- 2*gt13L*PDstandardNth1Xt3 - gtu22*PDstandardNth22gt11 -
- 2*gtu23*PDstandardNth23gt11 - gtu33*PDstandardNth33gt11 + 2*Gtl111*Xtn1
- + 2*Gtl112*Xtn2 + 2*Gtl113*Xtn3);
+ 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 Rt12 = 0.5*(4*(Gt211*Gtlu221 + Gt212*Gtlu222 +
- Gt213*Gtlu223) + 2*(Gt112*Gtlu111 + Gt122*Gtlu112 + Gt123*Gtlu113 +
- Gt111*Gtlu121 + Gt212*Gtlu121 + Gt112*Gtlu122 + Gt222*Gtlu122 +
- Gt113*Gtlu123 + Gt223*Gtlu123 + Gt312*Gtlu131 + Gt322*Gtlu132 +
- Gt323*Gtlu133 + Gt111*Gtlu211 + Gt112*Gtlu212 + Gt113*Gtlu213 +
- Gt311*Gtlu231 + Gt312*Gtlu232 + Gt313*Gtlu233 + Gt311*Gtlu321 +
- Gt312*Gtlu322 + Gt313*Gtlu323) - gtu11*PDstandardNth11gt12 -
- 2*gtu12*PDstandardNth12gt12 - 2*gtu13*PDstandardNth13gt12 +
- gt12L*PDstandardNth1Xt1 + gt22L*PDstandardNth1Xt2 +
- gt23L*PDstandardNth1Xt3 - gtu22*PDstandardNth22gt12 -
- 2*gtu23*PDstandardNth23gt12 + gt11L*PDstandardNth2Xt1 +
- gt12L*PDstandardNth2Xt2 + gt13L*PDstandardNth2Xt3 -
- gtu33*PDstandardNth33gt12 + Gtl112*Xtn1 + Gtl211*Xtn1 + Gtl122*Xtn2 +
- Gtl212*Xtn2 + Gtl123*Xtn3 + Gtl213*Xtn3);
+ CCTK_REAL_VEC fac1 =
+ IfThen(conformalMethod,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
- CCTK_REAL Rt13 = 0.5*(2*(Gt113*Gtlu111 + Gt123*Gtlu112 + Gt133*Gtlu113
- + Gt213*Gtlu121 + Gt223*Gtlu122 + Gt233*Gtlu123 + Gt111*Gtlu131 +
- Gt313*Gtlu131 + Gt112*Gtlu132 + Gt323*Gtlu132 + Gt113*Gtlu133 +
- Gt333*Gtlu133 + Gt211*Gtlu231 + Gt212*Gtlu232 + Gt213*Gtlu233 +
- Gt111*Gtlu311 + Gt112*Gtlu312 + Gt113*Gtlu313 + Gt211*Gtlu321 +
- Gt212*Gtlu322 + Gt213*Gtlu323) + 4*(Gt311*Gtlu331 + Gt312*Gtlu332 +
- Gt313*Gtlu333) - gtu11*PDstandardNth11gt13 -
- 2*gtu12*PDstandardNth12gt13 - 2*gtu13*PDstandardNth13gt13 +
- gt13L*PDstandardNth1Xt1 + gt23L*PDstandardNth1Xt2 +
- gt33L*PDstandardNth1Xt3 - gtu22*PDstandardNth22gt13 -
- 2*gtu23*PDstandardNth23gt13 - gtu33*PDstandardNth33gt13 +
- gt11L*PDstandardNth3Xt1 + gt12L*PDstandardNth3Xt2 +
- gt13L*PDstandardNth3Xt3 + Gtl113*Xtn1 + Gtl311*Xtn1 + Gtl123*Xtn2 +
- Gtl312*Xtn2 + Gtl133*Xtn3 + Gtl313*Xtn3);
+ CCTK_REAL_VEC cdphi1 = kmul(fac1,JacPDstandardNth1phi);
- CCTK_REAL Rt22 = 0.5*(6*(Gt212*Gtlu221 + Gt222*Gtlu222 +
- Gt223*Gtlu223) + 4*(Gt112*Gtlu211 + Gt122*Gtlu212 + Gt123*Gtlu213 +
- Gt312*Gtlu231 + Gt322*Gtlu232 + Gt323*Gtlu233) -
- gtu11*PDstandardNth11gt22 - 2*gtu12*PDstandardNth12gt22 -
- 2*gtu13*PDstandardNth13gt22 - gtu22*PDstandardNth22gt22 -
- 2*gtu23*PDstandardNth23gt22 + 2*(Gt112*Gtlu121 + Gt122*Gtlu122 +
- Gt123*Gtlu123 + Gt312*Gtlu321 + Gt322*Gtlu322 + Gt323*Gtlu323 +
- gt12L*PDstandardNth2Xt1) + 2*gt22L*PDstandardNth2Xt2 +
- 2*gt23L*PDstandardNth2Xt3 - gtu33*PDstandardNth33gt22 + 2*Gtl212*Xtn1 +
- 2*Gtl222*Xtn2 + 2*Gtl223*Xtn3);
-
- CCTK_REAL Rt23 = 0.5*(2*(Gt112*Gtlu131 + Gt122*Gtlu132 + Gt123*Gtlu133
- + Gt113*Gtlu211 + Gt123*Gtlu212 + Gt133*Gtlu213 + Gt213*Gtlu221 +
- Gt223*Gtlu222 + Gt233*Gtlu223 + Gt212*Gtlu231 + Gt313*Gtlu231 +
- Gt222*Gtlu232 + Gt323*Gtlu232 + Gt223*Gtlu233 + Gt333*Gtlu233 +
- Gt112*Gtlu311 + Gt122*Gtlu312 + Gt123*Gtlu313 + Gt212*Gtlu321 +
- Gt222*Gtlu322 + Gt223*Gtlu323) + 4*(Gt312*Gtlu331 + Gt322*Gtlu332 +
- Gt323*Gtlu333) - gtu11*PDstandardNth11gt23 -
- 2*gtu12*PDstandardNth12gt23 - 2*gtu13*PDstandardNth13gt23 -
- gtu22*PDstandardNth22gt23 - 2*gtu23*PDstandardNth23gt23 +
- gt13L*PDstandardNth2Xt1 + gt23L*PDstandardNth2Xt2 +
- gt33L*PDstandardNth2Xt3 - gtu33*PDstandardNth33gt23 +
- gt12L*PDstandardNth3Xt1 + gt22L*PDstandardNth3Xt2 +
- gt23L*PDstandardNth3Xt3 + Gtl213*Xtn1 + Gtl312*Xtn1 + Gtl223*Xtn2 +
- Gtl322*Xtn2 + Gtl233*Xtn3 + Gtl323*Xtn3);
-
- CCTK_REAL Rt33 = 0.5*(4*(Gt113*Gtlu311 + Gt123*Gtlu312 + Gt133*Gtlu313
- + Gt213*Gtlu321 + Gt223*Gtlu322 + Gt233*Gtlu323) + 6*(Gt313*Gtlu331 +
- Gt323*Gtlu332 + Gt333*Gtlu333) - gtu11*PDstandardNth11gt33 -
- 2*gtu12*PDstandardNth12gt33 - 2*gtu13*PDstandardNth13gt33 -
- gtu22*PDstandardNth22gt33 - 2*gtu23*PDstandardNth23gt33 -
- gtu33*PDstandardNth33gt33 + 2*(Gt113*Gtlu131 + Gt123*Gtlu132 +
- Gt133*Gtlu133 + Gt213*Gtlu231 + Gt223*Gtlu232 + Gt233*Gtlu233 +
- gt13L*PDstandardNth3Xt1) + 2*gt23L*PDstandardNth3Xt2 +
- 2*gt33L*PDstandardNth3Xt3 + 2*Gtl313*Xtn1 + 2*Gtl323*Xtn2 +
- 2*Gtl333*Xtn3);
-
- CCTK_REAL fac1 = IfThen(conformalMethod,-0.5*INV(phiL),1);
-
- CCTK_REAL cdphi1 = fac1*PDstandardNth1phi;
-
- CCTK_REAL cdphi2 = fac1*PDstandardNth2phi;
-
- CCTK_REAL cdphi3 = fac1*PDstandardNth3phi;
-
- CCTK_REAL fac2 = IfThen(conformalMethod,0.5*INV(SQR(phiL)),0);
-
- CCTK_REAL cdphi211 = -(fac1*(-PDstandardNth11phi +
- Gt111*PDstandardNth1phi + Gt211*PDstandardNth2phi +
- Gt311*PDstandardNth3phi)) + fac2*SQR(PDstandardNth1phi);
-
- CCTK_REAL cdphi212 = fac2*PDstandardNth1phi*PDstandardNth2phi -
- fac1*(-PDstandardNth12phi + Gt112*PDstandardNth1phi +
- Gt212*PDstandardNth2phi + Gt312*PDstandardNth3phi);
-
- CCTK_REAL cdphi213 = fac2*PDstandardNth1phi*PDstandardNth3phi -
- fac1*(-PDstandardNth13phi + Gt113*PDstandardNth1phi +
- Gt213*PDstandardNth2phi + Gt313*PDstandardNth3phi);
+ CCTK_REAL_VEC cdphi2 = kmul(fac1,JacPDstandardNth2phi);
- CCTK_REAL cdphi222 = -(fac1*(Gt122*PDstandardNth1phi -
- PDstandardNth22phi + Gt222*PDstandardNth2phi +
- Gt322*PDstandardNth3phi)) + fac2*SQR(PDstandardNth2phi);
+ CCTK_REAL_VEC cdphi3 = kmul(fac1,JacPDstandardNth3phi);
- CCTK_REAL cdphi223 = fac2*PDstandardNth2phi*PDstandardNth3phi -
- fac1*(Gt123*PDstandardNth1phi - PDstandardNth23phi +
- Gt223*PDstandardNth2phi + Gt323*PDstandardNth3phi);
+ CCTK_REAL_VEC fac2 =
+ IfThen(conformalMethod,kmul(INV(SQR(phiL)),ToReal(0.5)),ToReal(0));
- CCTK_REAL cdphi233 = -(fac1*(Gt133*PDstandardNth1phi +
- Gt233*PDstandardNth2phi - PDstandardNth33phi +
- Gt333*PDstandardNth3phi)) + fac2*SQR(PDstandardNth3phi);
+ CCTK_REAL_VEC cdphi211 =
+ kmadd(fac2,SQR(JacPDstandardNth1phi),kmul(fac1,ksub(JacPDstandardNth11phi,kmadd(Gt111,JacPDstandardNth1phi,kmadd(Gt311,JacPDstandardNth3phi,kmul(Gt211,JacPDstandardNth2phi))))));
- CCTK_REAL Rphi11 = -2*(cdphi211 + 2*(-1 + gt11L*gtu11)*SQR(cdphi1) +
- gt11L*(cdphi211*gtu11 + 4*(cdphi1*(cdphi2*gtu12 + cdphi3*gtu13) +
- cdphi2*cdphi3*gtu23) + cdphi233*gtu33 + gtu22*(cdphi222 +
- 2*SQR(cdphi2)) + 2*(cdphi212*gtu12 + cdphi213*gtu13 + cdphi223*gtu23 +
- gtu33*SQR(cdphi3))));
+ CCTK_REAL_VEC cdphi212 =
+ kmadd(fac2,kmul(JacPDstandardNth1phi,JacPDstandardNth2phi),kmul(fac1,ksub(JacPDstandardNth12phi,kmadd(Gt112,JacPDstandardNth1phi,kmadd(Gt312,JacPDstandardNth3phi,kmul(Gt212,JacPDstandardNth2phi))))));
- CCTK_REAL Rphi12 = -2*(cdphi212 + cdphi1*(cdphi2*(-2 + 4*gt12L*gtu12)
- + 4*cdphi3*gt12L*gtu13) + gt12L*(cdphi211*gtu11 + 4*cdphi2*cdphi3*gtu23
- + 2*(cdphi212*gtu12 + cdphi213*gtu13 + cdphi223*gtu23 +
- gtu11*SQR(cdphi1)) + gtu22*(cdphi222 + 2*SQR(cdphi2)) + gtu33*(cdphi233
- + 2*SQR(cdphi3))));
+ CCTK_REAL_VEC cdphi213 =
+ kmadd(fac2,kmul(JacPDstandardNth1phi,JacPDstandardNth3phi),kmul(fac1,ksub(JacPDstandardNth13phi,kmadd(Gt113,JacPDstandardNth1phi,kmadd(Gt313,JacPDstandardNth3phi,kmul(Gt213,JacPDstandardNth2phi))))));
- CCTK_REAL Rphi13 = -2*(cdphi213 + cdphi1*(4*cdphi2*gt13L*gtu12 +
- cdphi3*(-2 + 4*gt13L*gtu13)) + gt13L*(cdphi211*gtu11 +
- 4*cdphi2*cdphi3*gtu23 + 2*(cdphi212*gtu12 + cdphi213*gtu13 +
- cdphi223*gtu23 + gtu11*SQR(cdphi1)) + gtu22*(cdphi222 + 2*SQR(cdphi2))
- + gtu33*(cdphi233 + 2*SQR(cdphi3))));
+ CCTK_REAL_VEC cdphi222 =
+ kmsub(fac2,SQR(JacPDstandardNth2phi),kmul(fac1,kmadd(Gt122,JacPDstandardNth1phi,kmadd(Gt222,JacPDstandardNth2phi,kmsub(Gt322,JacPDstandardNth3phi,JacPDstandardNth22phi)))));
- CCTK_REAL Rphi22 = -2*(cdphi222 + 2*(-1 + gt22L*gtu22)*SQR(cdphi2) +
- gt22L*(cdphi222*gtu22 + 4*(cdphi1*cdphi3*gtu13 + cdphi2*(cdphi1*gtu12 +
- cdphi3*gtu23)) + cdphi233*gtu33 + gtu11*(cdphi211 + 2*SQR(cdphi1)) +
- 2*(cdphi212*gtu12 + cdphi213*gtu13 + cdphi223*gtu23 +
- gtu33*SQR(cdphi3))));
+ CCTK_REAL_VEC cdphi223 =
+ kmsub(fac2,kmul(JacPDstandardNth2phi,JacPDstandardNth3phi),kmul(fac1,kmadd(Gt123,JacPDstandardNth1phi,kmadd(Gt223,JacPDstandardNth2phi,kmsub(Gt323,JacPDstandardNth3phi,JacPDstandardNth23phi)))));
- CCTK_REAL Rphi23 = -2*(cdphi223 + cdphi2*(4*cdphi1*gt23L*gtu12 +
- cdphi3*(-2 + 4*gt23L*gtu23)) + gt23L*(4*cdphi1*cdphi3*gtu13 +
- cdphi222*gtu22 + gtu11*(cdphi211 + 2*SQR(cdphi1)) + 2*(cdphi212*gtu12 +
- cdphi213*gtu13 + cdphi223*gtu23 + gtu22*SQR(cdphi2)) + gtu33*(cdphi233
- + 2*SQR(cdphi3))));
+ CCTK_REAL_VEC cdphi233 =
+ kmsub(fac2,SQR(JacPDstandardNth3phi),kmul(fac1,kmadd(Gt133,JacPDstandardNth1phi,kmadd(Gt233,JacPDstandardNth2phi,kmsub(Gt333,JacPDstandardNth3phi,JacPDstandardNth33phi)))));
- CCTK_REAL Rphi33 = -2*(cdphi233 + gt33L*((4*cdphi1*cdphi2 +
- 2*cdphi212)*gtu12 + 4*cdphi3*(cdphi1*gtu13 + cdphi2*gtu23) +
- 2*(cdphi213*gtu13 + cdphi223*gtu23) + cdphi233*gtu33 + gtu11*(cdphi211
- + 2*SQR(cdphi1)) + gtu22*(cdphi222 + 2*SQR(cdphi2))) + 2*(-1 +
- gt33L*gtu33)*SQR(cdphi3));
+ 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 Atm11 = At11L*gtu11 + At12L*gtu12 + At13L*gtu13;
+ 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(cdphi3,kmul(gt12L,kmul(gtu13,ToReal(4))),kmul(cdphi2,kmadd(gt12L,kmul(gtu12,ToReal(4)),ToReal(-2))))))));
- CCTK_REAL Atm21 = At11L*gtu12 + At12L*gtu22 + At13L*gtu23;
+ 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(cdphi2,kmul(gt13L,kmul(gtu12,ToReal(4))),kmul(cdphi3,kmadd(gt13L,kmul(gtu13,ToReal(4)),ToReal(-2))))))));
- CCTK_REAL Atm31 = At11L*gtu13 + At12L*gtu23 + At13L*gtu33;
+ 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 Atm12 = At12L*gtu11 + At22L*gtu12 + At23L*gtu13;
+ 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(cdphi1,kmul(gt23L,kmul(gtu12,ToReal(4))),kmul(cdphi3,kmadd(gt23L,kmul(gtu23,ToReal(4)),ToReal(-2))))))));
- CCTK_REAL Atm22 = At12L*gtu12 + At22L*gtu22 + At23L*gtu23;
+ 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 Atm32 = At12L*gtu13 + At22L*gtu23 + At23L*gtu33;
+ CCTK_REAL_VEC Atm11 =
+ kmadd(At11L,gtu11,kmadd(At12L,gtu12,kmul(At13L,gtu13)));
- CCTK_REAL Atm13 = At13L*gtu11 + At23L*gtu12 + At33L*gtu13;
+ CCTK_REAL_VEC Atm21 =
+ kmadd(At11L,gtu12,kmadd(At12L,gtu22,kmul(At13L,gtu23)));
- CCTK_REAL Atm23 = At13L*gtu12 + At23L*gtu22 + At33L*gtu23;
+ CCTK_REAL_VEC Atm31 =
+ kmadd(At11L,gtu13,kmadd(At12L,gtu23,kmul(At13L,gtu33)));
- CCTK_REAL Atm33 = At13L*gtu13 + At23L*gtu23 + At33L*gtu33;
+ CCTK_REAL_VEC Atm12 =
+ kmadd(At12L,gtu11,kmadd(At22L,gtu12,kmul(At23L,gtu13)));
- CCTK_REAL e4phi = IfThen(conformalMethod,INV(SQR(phiL)),exp(4*phiL));
+ CCTK_REAL_VEC Atm22 =
+ kmadd(At12L,gtu12,kmadd(At22L,gtu22,kmul(At23L,gtu23)));
- CCTK_REAL em4phi = INV(e4phi);
+ CCTK_REAL_VEC Atm32 =
+ kmadd(At12L,gtu13,kmadd(At22L,gtu23,kmul(At23L,gtu33)));
- CCTK_REAL g11 = e4phi*gt11L;
+ CCTK_REAL_VEC Atm13 =
+ kmadd(At13L,gtu11,kmadd(At23L,gtu12,kmul(At33L,gtu13)));
- CCTK_REAL g12 = e4phi*gt12L;
+ CCTK_REAL_VEC Atm23 =
+ kmadd(At13L,gtu12,kmadd(At23L,gtu22,kmul(At33L,gtu23)));
- CCTK_REAL g13 = e4phi*gt13L;
+ CCTK_REAL_VEC Atm33 =
+ kmadd(At13L,gtu13,kmadd(At23L,gtu23,kmul(At33L,gtu33)));
- CCTK_REAL g22 = e4phi*gt22L;
+ CCTK_REAL_VEC e4phi =
+ IfThen(conformalMethod,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
- CCTK_REAL g23 = e4phi*gt23L;
+ CCTK_REAL_VEC em4phi = INV(e4phi);
- CCTK_REAL g33 = e4phi*gt33L;
+ CCTK_REAL_VEC g11 = kmul(e4phi,gt11L);
- CCTK_REAL gu11 = em4phi*gtu11;
+ CCTK_REAL_VEC g12 = kmul(e4phi,gt12L);
- CCTK_REAL gu12 = em4phi*gtu12;
+ CCTK_REAL_VEC g13 = kmul(e4phi,gt13L);
- CCTK_REAL gu13 = em4phi*gtu13;
+ CCTK_REAL_VEC g22 = kmul(e4phi,gt22L);
- CCTK_REAL gu22 = em4phi*gtu22;
+ CCTK_REAL_VEC g23 = kmul(e4phi,gt23L);
- CCTK_REAL gu23 = em4phi*gtu23;
+ CCTK_REAL_VEC g33 = kmul(e4phi,gt33L);
- CCTK_REAL gu33 = em4phi*gtu33;
+ CCTK_REAL_VEC gu11 = kmul(em4phi,gtu11);
- CCTK_REAL R11 = Rphi11 + Rt11;
+ CCTK_REAL_VEC gu12 = kmul(em4phi,gtu12);
- CCTK_REAL R12 = Rphi12 + Rt12;
+ CCTK_REAL_VEC gu13 = kmul(em4phi,gtu13);
- CCTK_REAL R13 = Rphi13 + Rt13;
+ CCTK_REAL_VEC gu22 = kmul(em4phi,gtu22);
- CCTK_REAL R22 = Rphi22 + Rt22;
+ CCTK_REAL_VEC gu23 = kmul(em4phi,gtu23);
- CCTK_REAL R23 = Rphi23 + Rt23;
+ CCTK_REAL_VEC gu33 = kmul(em4phi,gtu33);
- CCTK_REAL R33 = Rphi33 + Rt33;
+ CCTK_REAL_VEC R11 = kadd(Rphi11,Rt11);
- CCTK_REAL trS = em4phi*(eTxxL*gtu11 + eTyyL*gtu22 + 2*(eTxyL*gtu12 +
- eTxzL*gtu13 + eTyzL*gtu23) + eTzzL*gtu33);
+ CCTK_REAL_VEC R12 = kadd(Rphi12,Rt12);
- CCTK_REAL Ats11 = -PDstandardNth11alpha + (4*cdphi1 +
- Gt111)*PDstandardNth1alpha + Gt211*PDstandardNth2alpha +
- Gt311*PDstandardNth3alpha + alphaL*R11;
+ CCTK_REAL_VEC R13 = kadd(Rphi13,Rt13);
- CCTK_REAL Ats12 = -PDstandardNth12alpha + (2*cdphi2 +
- Gt112)*PDstandardNth1alpha + (2*cdphi1 + Gt212)*PDstandardNth2alpha +
- Gt312*PDstandardNth3alpha + alphaL*R12;
+ CCTK_REAL_VEC R22 = kadd(Rphi22,Rt22);
- CCTK_REAL Ats13 = -PDstandardNth13alpha + (2*cdphi3 +
- Gt113)*PDstandardNth1alpha + Gt213*PDstandardNth2alpha + (2*cdphi1 +
- Gt313)*PDstandardNth3alpha + alphaL*R13;
+ CCTK_REAL_VEC R23 = kadd(Rphi23,Rt23);
- CCTK_REAL Ats22 = Gt122*PDstandardNth1alpha - PDstandardNth22alpha +
- (4*cdphi2 + Gt222)*PDstandardNth2alpha + Gt322*PDstandardNth3alpha +
- alphaL*R22;
+ CCTK_REAL_VEC R33 = kadd(Rphi33,Rt33);
- CCTK_REAL Ats23 = Gt123*PDstandardNth1alpha - PDstandardNth23alpha +
- (2*cdphi3 + Gt223)*PDstandardNth2alpha + (2*cdphi2 +
- Gt323)*PDstandardNth3alpha + alphaL*R23;
+ 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 Ats33 = Gt133*PDstandardNth1alpha +
- Gt233*PDstandardNth2alpha - PDstandardNth33alpha + (4*cdphi3 +
- Gt333)*PDstandardNth3alpha + alphaL*R33;
+ CCTK_REAL_VEC Ats11 =
+ kmadd(Gt211,JacPDstandardNth2alpha,kmadd(Gt311,JacPDstandardNth3alpha,kmadd(alphaL,R11,kmsub(JacPDstandardNth1alpha,kmadd(cdphi1,ToReal(4),Gt111),JacPDstandardNth11alpha))));
- CCTK_REAL trAts = Ats11*gu11 + Ats22*gu22 + 2*(Ats12*gu12 + Ats13*gu13
- + Ats23*gu23) + Ats33*gu33;
+ 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 At11rhsL = -2.*alphaL*(At11L*Atm11 + At12L*Atm21 +
- At13L*Atm31) + 2.*(At12L*PDstandardNth1beta2 +
- At13L*PDstandardNth1beta3) +
- At11L*(1.333333333333333333333333333333333333333*PDstandardNth1beta1 -
- 0.6666666666666666666666666666666666666667*(PDstandardNth2beta2 +
- PDstandardNth3beta3) + alphaL*trKL) + em4phi*(Ats11 -
- 0.3333333333333333333333333333333333333333*g11*trAts +
- alphaL*(-25.13274122871834590770114706623602307358*eTxxL +
- 8.377580409572781969233715688745341024526*g11*trS));
+ 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 At12rhsL = -2.*alphaL*(At11L*Atm12 + At12L*Atm22 +
- At13L*Atm32) + At22L*PDstandardNth1beta2 + At23L*PDstandardNth1beta3 +
- At11L*PDstandardNth2beta1 + At13L*PDstandardNth2beta3 +
- At12L*(0.3333333333333333333333333333333333333333*(PDstandardNth1beta1
- + PDstandardNth2beta2) -
- 0.6666666666666666666666666666666666666667*PDstandardNth3beta3 +
- alphaL*trKL) + em4phi*(Ats12 -
- 0.3333333333333333333333333333333333333333*g12*trAts +
- alphaL*(-25.13274122871834590770114706623602307358*eTxyL +
- 8.377580409572781969233715688745341024526*g12*trS));
+ CCTK_REAL_VEC Ats22 =
+ kmadd(Gt122,JacPDstandardNth1alpha,kmadd(Gt322,JacPDstandardNth3alpha,kmadd(alphaL,R22,kmsub(JacPDstandardNth2alpha,kmadd(cdphi2,ToReal(4),Gt222),JacPDstandardNth22alpha))));
- CCTK_REAL At13rhsL = -2.*alphaL*(At11L*Atm13 + At12L*Atm23 +
- At13L*Atm33) + At23L*PDstandardNth1beta2 + At33L*PDstandardNth1beta3 +
- At11L*PDstandardNth3beta1 + At12L*PDstandardNth3beta2 +
- At13L*(-0.6666666666666666666666666666666666666667*PDstandardNth2beta2
- + 0.3333333333333333333333333333333333333333*(PDstandardNth1beta1 +
- PDstandardNth3beta3) + alphaL*trKL) + em4phi*(Ats13 -
- 0.3333333333333333333333333333333333333333*g13*trAts +
- alphaL*(-25.13274122871834590770114706623602307358*eTxzL +
- 8.377580409572781969233715688745341024526*g13*trS));
+ 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 At22rhsL = -2.*alphaL*(At12L*Atm12 + At22L*Atm22 +
- At23L*Atm32) + 2.*(At12L*PDstandardNth2beta1 +
- At23L*PDstandardNth2beta3) +
- At22L*(1.333333333333333333333333333333333333333*PDstandardNth2beta2 -
- 0.6666666666666666666666666666666666666667*(PDstandardNth1beta1 +
- PDstandardNth3beta3) + alphaL*trKL) + em4phi*(Ats22 -
- 0.3333333333333333333333333333333333333333*g22*trAts +
- alphaL*(-25.13274122871834590770114706623602307358*eTyyL +
- 8.377580409572781969233715688745341024526*g22*trS));
-
- CCTK_REAL At23rhsL = -2.*alphaL*(At12L*Atm13 + At22L*Atm23 +
- At23L*Atm33) + At13L*PDstandardNth2beta1 + At33L*PDstandardNth2beta3 +
- At12L*PDstandardNth3beta1 + At22L*PDstandardNth3beta2 +
- At23L*(-0.6666666666666666666666666666666666666667*PDstandardNth1beta1
- + 0.3333333333333333333333333333333333333333*(PDstandardNth2beta2 +
- PDstandardNth3beta3) + alphaL*trKL) + em4phi*(Ats23 -
- 0.3333333333333333333333333333333333333333*g23*trAts +
- alphaL*(-25.13274122871834590770114706623602307358*eTyzL +
- 8.377580409572781969233715688745341024526*g23*trS));
-
- CCTK_REAL At33rhsL = -2.*alphaL*(At13L*Atm13 + At23L*Atm23 +
- At33L*Atm33) + 2.*(At13L*PDstandardNth3beta1 +
- At23L*PDstandardNth3beta2) +
- At33L*(-0.6666666666666666666666666666666666666667*(PDstandardNth1beta1
- + PDstandardNth2beta2) +
- 1.333333333333333333333333333333333333333*PDstandardNth3beta3 +
- alphaL*trKL) + em4phi*(Ats33 -
- 0.3333333333333333333333333333333333333333*g33*trAts +
- alphaL*(-25.13274122871834590770114706623602307358*eTzzL +
- 8.377580409572781969233715688745341024526*g33*trS));
-
- /* Copy local copies back to grid functions */
- At11rhs[index] = At11rhsL;
- At12rhs[index] = At12rhsL;
- At13rhs[index] = At13rhsL;
- At22rhs[index] = At22rhsL;
- At23rhs[index] = At23rhsL;
- At33rhs[index] = At33rhsL;
+ 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 =
+ kmadd(em4phi,kmadd(g11,kmul(trAts,ToReal(-0.3333333333333333333333333333333333333333)),Ats11),kmadd(At11L,kmadd(kadd(JacPDstandardNth2beta2,JacPDstandardNth3beta3),ToReal(-0.6666666666666666666666666666666666666667),kmul(JacPDstandardNth1beta1,ToReal(1.333333333333333333333333333333333333333))),kmadd(kmadd(At12L,JacPDstandardNth1beta2,kmul(At13L,JacPDstandardNth1beta3)),ToReal(2.),kmul(alphaL,kmadd(kmadd(At12L,Atm21,kmul(At13L,Atm31)),ToReal(-2.),kmadd(At11L,kmadd(Atm11,ToReal(-2.),trKL),kmul(em4phi,kmadd(eTxxL,ToReal(-25.13274122871834590770114706623602307358),kmul(g11,kmul(trS,ToReal(8.377580409572781969233715688745341024526)))))))))));
+
+ CCTK_REAL_VEC At12rhsL =
+ kmadd(At22L,JacPDstandardNth1beta2,kmadd(At23L,JacPDstandardNth1beta3,kmadd(At11L,JacPDstandardNth2beta1,kmadd(At13L,JacPDstandardNth2beta3,kmadd(em4phi,kmadd(g12,kmul(trAts,ToReal(-0.3333333333333333333333333333333333333333)),Ats12),kmadd(At12L,kmadd(JacPDstandardNth3beta3,ToReal(-0.6666666666666666666666666666666666666667),kmul(kadd(JacPDstandardNth1beta1,JacPDstandardNth2beta2),ToReal(0.3333333333333333333333333333333333333333))),kmul(alphaL,kmadd(At12L,trKL,kmadd(kmadd(At11L,Atm12,kmadd(At12L,Atm22,kmul(At13L,Atm32))),ToReal(-2.),kmul(em4phi,kmadd(eTxyL,ToReal(-25.13274122871834590770114706623602307358),kmul(g12,kmul(trS,ToReal(8.377580409572781969233715688745341024526))))))))))))));
+
+ CCTK_REAL_VEC At13rhsL =
+ kmadd(At23L,JacPDstandardNth1beta2,kmadd(At33L,JacPDstandardNth1beta3,kmadd(At11L,JacPDstandardNth3beta1,kmadd(At12L,JacPDstandardNth3beta2,kmadd(em4phi,kmadd(g13,kmul(trAts,ToReal(-0.3333333333333333333333333333333333333333)),Ats13),kmadd(At13L,kmadd(JacPDstandardNth2beta2,ToReal(-0.6666666666666666666666666666666666666667),kmul(kadd(JacPDstandardNth1beta1,JacPDstandardNth3beta3),ToReal(0.3333333333333333333333333333333333333333))),kmul(alphaL,kmadd(At13L,trKL,kmadd(kmadd(At11L,Atm13,kmadd(At12L,Atm23,kmul(At13L,Atm33))),ToReal(-2.),kmul(em4phi,kmadd(eTxzL,ToReal(-25.13274122871834590770114706623602307358),kmul(g13,kmul(trS,ToReal(8.377580409572781969233715688745341024526))))))))))))));
+
+ CCTK_REAL_VEC At22rhsL =
+ kmadd(em4phi,kmadd(g22,kmul(trAts,ToReal(-0.3333333333333333333333333333333333333333)),Ats22),kmadd(At22L,kmadd(kadd(JacPDstandardNth1beta1,JacPDstandardNth3beta3),ToReal(-0.6666666666666666666666666666666666666667),kmul(JacPDstandardNth2beta2,ToReal(1.333333333333333333333333333333333333333))),kmadd(kmadd(At12L,JacPDstandardNth2beta1,kmul(At23L,JacPDstandardNth2beta3)),ToReal(2.),kmul(alphaL,kmadd(At22L,trKL,kmadd(kmadd(At12L,Atm12,kmadd(At22L,Atm22,kmul(At23L,Atm32))),ToReal(-2.),kmul(em4phi,kmadd(eTyyL,ToReal(-25.13274122871834590770114706623602307358),kmul(g22,kmul(trS,ToReal(8.377580409572781969233715688745341024526)))))))))));
+
+ CCTK_REAL_VEC At23rhsL =
+ kmadd(At13L,JacPDstandardNth2beta1,kmadd(At33L,JacPDstandardNth2beta3,kmadd(At12L,JacPDstandardNth3beta1,kmadd(At22L,JacPDstandardNth3beta2,kmadd(em4phi,kmadd(g23,kmul(trAts,ToReal(-0.3333333333333333333333333333333333333333)),Ats23),kmadd(At23L,kmadd(JacPDstandardNth1beta1,ToReal(-0.6666666666666666666666666666666666666667),kmul(kadd(JacPDstandardNth2beta2,JacPDstandardNth3beta3),ToReal(0.3333333333333333333333333333333333333333))),kmul(alphaL,kmadd(At23L,trKL,kmadd(kmadd(At12L,Atm13,kmadd(At22L,Atm23,kmul(At23L,Atm33))),ToReal(-2.),kmul(em4phi,kmadd(eTyzL,ToReal(-25.13274122871834590770114706623602307358),kmul(g23,kmul(trS,ToReal(8.377580409572781969233715688745341024526))))))))))))));
+
+ CCTK_REAL_VEC At33rhsL =
+ kmadd(em4phi,kmadd(g33,kmul(trAts,ToReal(-0.3333333333333333333333333333333333333333)),Ats33),kmadd(At33L,kmadd(kadd(JacPDstandardNth1beta1,JacPDstandardNth2beta2),ToReal(-0.6666666666666666666666666666666666666667),kmul(JacPDstandardNth3beta3,ToReal(1.333333333333333333333333333333333333333))),kmadd(kmadd(At13L,JacPDstandardNth3beta1,kmul(At23L,JacPDstandardNth3beta2)),ToReal(2.),kmul(alphaL,kmadd(At33L,trKL,kmadd(kmadd(At13L,Atm13,kmadd(At23L,Atm23,kmul(At33L,Atm33))),ToReal(-2.),kmul(em4phi,kmadd(eTzzL,ToReal(-25.13274122871834590770114706623602307358),kmul(g33,kmul(trS,ToReal(8.377580409572781969233715688745341024526)))))))))));
+
+ /* 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(At11rhs[index],At11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At12rhs[index],At12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At13rhs[index],At13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At22rhs[index],At22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At23rhs[index],At23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At33rhs[index],At33rhsL,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(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_hi(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_hi(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_hi(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_hi(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_hi(At33rhs[index],At33rhsL,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(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_lo(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_lo(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_lo(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_lo(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_lo(At33rhs[index],At33rhsL,elt_count);
+ break;
+ }
+ vec_store_nta(At11rhs[index],At11rhsL);
+ vec_store_nta(At12rhs[index],At12rhsL);
+ vec_store_nta(At13rhs[index],At13rhsL);
+ vec_store_nta(At22rhs[index],At22rhsL);
+ vec_store_nta(At23rhs[index],At23rhsL);
+ vec_store_nta(At33rhs[index],At33rhsL);
}
- LC_ENDLOOP3 (ML_BSSN_UPW_RHS2);
+ LC_ENDLOOP3VEC (ML_BSSN_UPW_RHS2);
}
extern "C" void ML_BSSN_UPW_RHS2(CCTK_ARGUMENTS)
@@ -721,5 +1857,43 @@ extern "C" void ML_BSSN_UPW_RHS2(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_UPW_RHS2_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_UPW_RHS2_calc_every != ML_BSSN_UPW_RHS2_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN_UPW::ML_curv","ML_BSSN_UPW::ML_curvrhs","ML_BSSN_UPW::ML_Gamma","ML_BSSN_UPW::ML_lapse","ML_BSSN_UPW::ML_log_confac","ML_BSSN_UPW::ML_metric","ML_BSSN_UPW::ML_shift","ML_BSSN_UPW::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_UPW_RHS2", 8, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_UPW_RHS2", 1, 1, 1);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_UPW_RHS2", 2, 2, 2);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_UPW_RHS2", 3, 3, 3);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_UPW_RHS2", 4, 4, 4);
+ break;
+ }
+
GenericFD_LoopOverInterior(cctkGH, &ML_BSSN_UPW_RHS2_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_UPW_RHS2_Body");
+ }
}
diff --git a/ML_BSSN_UPW/src/ML_BSSN_UPW_RHSStaticBoundary.cc b/ML_BSSN_UPW/src/ML_BSSN_UPW_RHSStaticBoundary.cc
index abe4338..107fe0d 100644
--- a/ML_BSSN_UPW/src/ML_BSSN_UPW_RHSStaticBoundary.cc
+++ b/ML_BSSN_UPW/src/ML_BSSN_UPW_RHSStaticBoundary.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_UPW_RHSStaticBoundary_SelectBCs(CCTK_ARGUMENTS)
{
@@ -57,7 +58,7 @@ extern "C" void ML_BSSN_UPW_RHSStaticBoundary_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_BSSN_UPW_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_UPW_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;
@@ -65,20 +66,6 @@ static void ML_BSSN_UPW_RHSStaticBoundary_Body(cGH const * restrict const cctkGH
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_UPW_RHSStaticBoundary_Body");
- }
-
- if (cctk_iteration % ML_BSSN_UPW_RHSStaticBoundary_calc_every != ML_BSSN_UPW_RHSStaticBoundary_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN_UPW::ML_curvrhs","ML_BSSN_UPW::ML_dtlapserhs","ML_BSSN_UPW::ML_dtshiftrhs","ML_BSSN_UPW::ML_Gammarhs","ML_BSSN_UPW::ML_lapserhs","ML_BSSN_UPW::ML_log_confacrhs","ML_BSSN_UPW::ML_metricrhs","ML_BSSN_UPW::ML_shiftrhs","ML_BSSN_UPW::ML_trace_curvrhs"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_UPW_RHSStaticBoundary", 9, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -88,47 +75,162 @@ static void ML_BSSN_UPW_RHSStaticBoundary_Body(cGH const * restrict const cctkGH
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const p1o24dx = 0.0416666666666666666666666666667*INV(dx);
- CCTK_REAL const p1o24dy = 0.0416666666666666666666666666667*INV(dy);
- CCTK_REAL const p1o24dz = 0.0416666666666666666666666666667*INV(dz);
- CCTK_REAL const p1o64dx = 0.015625*INV(dx);
- CCTK_REAL const p1o64dy = 0.015625*INV(dy);
- CCTK_REAL const p1o64dz = 0.015625*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_UPW_RHSStaticBoundary,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_UPW_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;
@@ -136,89 +238,203 @@ static void ML_BSSN_UPW_RHSStaticBoundary_Body(cGH const * restrict const cctkGH
+
/* 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 phirhsL = 0;
+ CCTK_REAL_VEC phirhsL = ToReal(0);
+
+ CCTK_REAL_VEC gt11rhsL = ToReal(0);
- CCTK_REAL gt11rhsL = 0;
+ CCTK_REAL_VEC gt12rhsL = ToReal(0);
- CCTK_REAL gt12rhsL = 0;
+ CCTK_REAL_VEC gt13rhsL = ToReal(0);
- CCTK_REAL gt13rhsL = 0;
+ CCTK_REAL_VEC gt22rhsL = ToReal(0);
- CCTK_REAL gt22rhsL = 0;
+ CCTK_REAL_VEC gt23rhsL = ToReal(0);
- CCTK_REAL gt23rhsL = 0;
+ CCTK_REAL_VEC gt33rhsL = ToReal(0);
- CCTK_REAL gt33rhsL = 0;
+ CCTK_REAL_VEC trKrhsL = ToReal(0);
- CCTK_REAL trKrhsL = 0;
+ CCTK_REAL_VEC At11rhsL = ToReal(0);
- CCTK_REAL At11rhsL = 0;
+ CCTK_REAL_VEC At12rhsL = ToReal(0);
- CCTK_REAL At12rhsL = 0;
+ CCTK_REAL_VEC At13rhsL = ToReal(0);
- CCTK_REAL At13rhsL = 0;
+ CCTK_REAL_VEC At22rhsL = ToReal(0);
- CCTK_REAL At22rhsL = 0;
+ CCTK_REAL_VEC At23rhsL = ToReal(0);
- CCTK_REAL At23rhsL = 0;
+ CCTK_REAL_VEC At33rhsL = ToReal(0);
- CCTK_REAL At33rhsL = 0;
+ CCTK_REAL_VEC Xt1rhsL = ToReal(0);
- CCTK_REAL Xt1rhsL = 0;
+ CCTK_REAL_VEC Xt2rhsL = ToReal(0);
- CCTK_REAL Xt2rhsL = 0;
+ CCTK_REAL_VEC Xt3rhsL = ToReal(0);
- CCTK_REAL Xt3rhsL = 0;
+ CCTK_REAL_VEC alpharhsL = ToReal(0);
- CCTK_REAL alpharhsL = 0;
+ CCTK_REAL_VEC ArhsL = ToReal(0);
- CCTK_REAL ArhsL = 0;
+ CCTK_REAL_VEC beta1rhsL = ToReal(0);
- CCTK_REAL beta1rhsL = 0;
+ CCTK_REAL_VEC beta2rhsL = ToReal(0);
- CCTK_REAL beta2rhsL = 0;
+ CCTK_REAL_VEC beta3rhsL = ToReal(0);
- CCTK_REAL beta3rhsL = 0;
+ CCTK_REAL_VEC B1rhsL = ToReal(0);
- CCTK_REAL B1rhsL = 0;
+ CCTK_REAL_VEC B2rhsL = ToReal(0);
- CCTK_REAL B2rhsL = 0;
+ CCTK_REAL_VEC B3rhsL = ToReal(0);
- CCTK_REAL B3rhsL = 0;
+ /* If necessary, store only partial vectors after the first iteration */
- /* Copy local copies back to grid functions */
- alpharhs[index] = alpharhsL;
- Arhs[index] = ArhsL;
- At11rhs[index] = At11rhsL;
- At12rhs[index] = At12rhsL;
- At13rhs[index] = At13rhsL;
- At22rhs[index] = At22rhsL;
- At23rhs[index] = At23rhsL;
- At33rhs[index] = At33rhsL;
- B1rhs[index] = B1rhsL;
- B2rhs[index] = B2rhsL;
- B3rhs[index] = B3rhsL;
- beta1rhs[index] = beta1rhsL;
- beta2rhs[index] = beta2rhsL;
- beta3rhs[index] = beta3rhsL;
- gt11rhs[index] = gt11rhsL;
- gt12rhs[index] = gt12rhsL;
- gt13rhs[index] = gt13rhsL;
- gt22rhs[index] = gt22rhsL;
- gt23rhs[index] = gt23rhsL;
- gt33rhs[index] = gt33rhsL;
- phirhs[index] = phirhsL;
- trKrhs[index] = trKrhsL;
- Xt1rhs[index] = Xt1rhsL;
- Xt2rhs[index] = Xt2rhsL;
- Xt3rhs[index] = Xt3rhsL;
+ 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(Arhs[index],ArhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At11rhs[index],At11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At12rhs[index],At12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At13rhs[index],At13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At22rhs[index],At22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At23rhs[index],At23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At33rhs[index],At33rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B1rhs[index],B1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B2rhs[index],B2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt12rhs[index],gt12rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt13rhs[index],gt13rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt22rhs[index],gt22rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt23rhs[index],gt23rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt33rhs[index],gt33rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(phirhs[index],phirhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(trKrhs[index],trKrhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt1rhs[index],Xt1rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt2rhs[index],Xt2rhsL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt3rhs[index],Xt3rhsL,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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_hi(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_hi(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_hi(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_hi(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_hi(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_hi(At33rhs[index],At33rhsL,elt_count);
+ vec_store_nta_partial_hi(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_hi(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_hi(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_hi(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_hi(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_hi(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_hi(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_hi(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_hi(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_hi(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_hi(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_hi(Xt3rhs[index],Xt3rhsL,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(Arhs[index],ArhsL,elt_count);
+ vec_store_nta_partial_lo(At11rhs[index],At11rhsL,elt_count);
+ vec_store_nta_partial_lo(At12rhs[index],At12rhsL,elt_count);
+ vec_store_nta_partial_lo(At13rhs[index],At13rhsL,elt_count);
+ vec_store_nta_partial_lo(At22rhs[index],At22rhsL,elt_count);
+ vec_store_nta_partial_lo(At23rhs[index],At23rhsL,elt_count);
+ vec_store_nta_partial_lo(At33rhs[index],At33rhsL,elt_count);
+ vec_store_nta_partial_lo(B1rhs[index],B1rhsL,elt_count);
+ vec_store_nta_partial_lo(B2rhs[index],B2rhsL,elt_count);
+ vec_store_nta_partial_lo(B3rhs[index],B3rhsL,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(gt11rhs[index],gt11rhsL,elt_count);
+ vec_store_nta_partial_lo(gt12rhs[index],gt12rhsL,elt_count);
+ vec_store_nta_partial_lo(gt13rhs[index],gt13rhsL,elt_count);
+ vec_store_nta_partial_lo(gt22rhs[index],gt22rhsL,elt_count);
+ vec_store_nta_partial_lo(gt23rhs[index],gt23rhsL,elt_count);
+ vec_store_nta_partial_lo(gt33rhs[index],gt33rhsL,elt_count);
+ vec_store_nta_partial_lo(phirhs[index],phirhsL,elt_count);
+ vec_store_nta_partial_lo(trKrhs[index],trKrhsL,elt_count);
+ vec_store_nta_partial_lo(Xt1rhs[index],Xt1rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt2rhs[index],Xt2rhsL,elt_count);
+ vec_store_nta_partial_lo(Xt3rhs[index],Xt3rhsL,elt_count);
+ break;
+ }
+ vec_store_nta(alpharhs[index],alpharhsL);
+ vec_store_nta(Arhs[index],ArhsL);
+ vec_store_nta(At11rhs[index],At11rhsL);
+ vec_store_nta(At12rhs[index],At12rhsL);
+ vec_store_nta(At13rhs[index],At13rhsL);
+ vec_store_nta(At22rhs[index],At22rhsL);
+ vec_store_nta(At23rhs[index],At23rhsL);
+ vec_store_nta(At33rhs[index],At33rhsL);
+ vec_store_nta(B1rhs[index],B1rhsL);
+ vec_store_nta(B2rhs[index],B2rhsL);
+ vec_store_nta(B3rhs[index],B3rhsL);
+ vec_store_nta(beta1rhs[index],beta1rhsL);
+ vec_store_nta(beta2rhs[index],beta2rhsL);
+ vec_store_nta(beta3rhs[index],beta3rhsL);
+ vec_store_nta(gt11rhs[index],gt11rhsL);
+ vec_store_nta(gt12rhs[index],gt12rhsL);
+ vec_store_nta(gt13rhs[index],gt13rhsL);
+ vec_store_nta(gt22rhs[index],gt22rhsL);
+ vec_store_nta(gt23rhs[index],gt23rhsL);
+ vec_store_nta(gt33rhs[index],gt33rhsL);
+ vec_store_nta(phirhs[index],phirhsL);
+ vec_store_nta(trKrhs[index],trKrhsL);
+ vec_store_nta(Xt1rhs[index],Xt1rhsL);
+ vec_store_nta(Xt2rhs[index],Xt2rhsL);
+ vec_store_nta(Xt3rhs[index],Xt3rhsL);
}
- LC_ENDLOOP3 (ML_BSSN_UPW_RHSStaticBoundary);
+ LC_ENDLOOP3VEC (ML_BSSN_UPW_RHSStaticBoundary);
}
extern "C" void ML_BSSN_UPW_RHSStaticBoundary(CCTK_ARGUMENTS)
@@ -226,5 +442,39 @@ extern "C" void ML_BSSN_UPW_RHSStaticBoundary(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_UPW_RHSStaticBoundary_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_UPW_RHSStaticBoundary_calc_every != ML_BSSN_UPW_RHSStaticBoundary_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN_UPW::ML_curvrhs","ML_BSSN_UPW::ML_dtlapserhs","ML_BSSN_UPW::ML_dtshiftrhs","ML_BSSN_UPW::ML_Gammarhs","ML_BSSN_UPW::ML_lapserhs","ML_BSSN_UPW::ML_log_confacrhs","ML_BSSN_UPW::ML_metricrhs","ML_BSSN_UPW::ML_shiftrhs","ML_BSSN_UPW::ML_trace_curvrhs"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_UPW_RHSStaticBoundary", 9, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverBoundary(cctkGH, &ML_BSSN_UPW_RHSStaticBoundary_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_UPW_RHSStaticBoundary_Body");
+ }
}
diff --git a/ML_BSSN_UPW/src/ML_BSSN_UPW_boundary.cc b/ML_BSSN_UPW/src/ML_BSSN_UPW_boundary.cc
index 95f3daf..f964149 100644
--- a/ML_BSSN_UPW/src/ML_BSSN_UPW_boundary.cc
+++ b/ML_BSSN_UPW/src/ML_BSSN_UPW_boundary.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_UPW_boundary_SelectBCs(CCTK_ARGUMENTS)
{
@@ -57,7 +58,7 @@ extern "C" void ML_BSSN_UPW_boundary_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_BSSN_UPW_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_UPW_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;
@@ -65,20 +66,6 @@ static void ML_BSSN_UPW_boundary_Body(cGH const * restrict const cctkGH, int con
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_UPW_boundary_Body");
- }
-
- if (cctk_iteration % ML_BSSN_UPW_boundary_calc_every != ML_BSSN_UPW_boundary_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN_UPW::ML_curv","ML_BSSN_UPW::ML_dtlapse","ML_BSSN_UPW::ML_dtshift","ML_BSSN_UPW::ML_Gamma","ML_BSSN_UPW::ML_lapse","ML_BSSN_UPW::ML_log_confac","ML_BSSN_UPW::ML_metric","ML_BSSN_UPW::ML_shift","ML_BSSN_UPW::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_UPW_boundary", 9, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -88,47 +75,162 @@ static void ML_BSSN_UPW_boundary_Body(cGH const * restrict const cctkGH, int con
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const p1o24dx = 0.0416666666666666666666666666667*INV(dx);
- CCTK_REAL const p1o24dy = 0.0416666666666666666666666666667*INV(dy);
- CCTK_REAL const p1o24dz = 0.0416666666666666666666666666667*INV(dz);
- CCTK_REAL const p1o64dx = 0.015625*INV(dx);
- CCTK_REAL const p1o64dy = 0.015625*INV(dy);
- CCTK_REAL const p1o64dz = 0.015625*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_UPW_boundary,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_UPW_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;
@@ -136,89 +238,203 @@ static void ML_BSSN_UPW_boundary_Body(cGH const * restrict const cctkGH, int con
+
/* 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 phiL = IfThen(conformalMethod,1,0);
+ CCTK_REAL_VEC phiL = IfThen(conformalMethod,ToReal(1),ToReal(0));
+
+ CCTK_REAL_VEC gt11L = ToReal(1);
- CCTK_REAL gt11L = 1;
+ CCTK_REAL_VEC gt12L = ToReal(0);
- CCTK_REAL gt12L = 0;
+ CCTK_REAL_VEC gt13L = ToReal(0);
- CCTK_REAL gt13L = 0;
+ CCTK_REAL_VEC gt22L = ToReal(1);
- CCTK_REAL gt22L = 1;
+ CCTK_REAL_VEC gt23L = ToReal(0);
- CCTK_REAL gt23L = 0;
+ CCTK_REAL_VEC gt33L = ToReal(1);
- CCTK_REAL gt33L = 1;
+ CCTK_REAL_VEC trKL = ToReal(0);
- CCTK_REAL trKL = 0;
+ CCTK_REAL_VEC At11L = ToReal(0);
- CCTK_REAL At11L = 0;
+ CCTK_REAL_VEC At12L = ToReal(0);
- CCTK_REAL At12L = 0;
+ CCTK_REAL_VEC At13L = ToReal(0);
- CCTK_REAL At13L = 0;
+ CCTK_REAL_VEC At22L = ToReal(0);
- CCTK_REAL At22L = 0;
+ CCTK_REAL_VEC At23L = ToReal(0);
- CCTK_REAL At23L = 0;
+ CCTK_REAL_VEC At33L = ToReal(0);
- CCTK_REAL At33L = 0;
+ CCTK_REAL_VEC Xt1L = ToReal(0);
- CCTK_REAL Xt1L = 0;
+ CCTK_REAL_VEC Xt2L = ToReal(0);
- CCTK_REAL Xt2L = 0;
+ CCTK_REAL_VEC Xt3L = ToReal(0);
- CCTK_REAL Xt3L = 0;
+ CCTK_REAL_VEC alphaL = ToReal(1);
- CCTK_REAL alphaL = 1;
+ CCTK_REAL_VEC AL = ToReal(0);
- CCTK_REAL AL = 0;
+ CCTK_REAL_VEC beta1L = ToReal(0);
- CCTK_REAL beta1L = 0;
+ CCTK_REAL_VEC beta2L = ToReal(0);
- CCTK_REAL beta2L = 0;
+ CCTK_REAL_VEC beta3L = ToReal(0);
- CCTK_REAL beta3L = 0;
+ CCTK_REAL_VEC B1L = ToReal(0);
- CCTK_REAL B1L = 0;
+ CCTK_REAL_VEC B2L = ToReal(0);
- CCTK_REAL B2L = 0;
+ CCTK_REAL_VEC B3L = ToReal(0);
- CCTK_REAL B3L = 0;
+ /* If necessary, store only partial vectors after the first iteration */
- /* Copy local copies back to grid functions */
- A[index] = AL;
- alpha[index] = alphaL;
- At11[index] = At11L;
- At12[index] = At12L;
- At13[index] = At13L;
- At22[index] = At22L;
- At23[index] = At23L;
- At33[index] = At33L;
- B1[index] = B1L;
- B2[index] = B2L;
- B3[index] = B3L;
- beta1[index] = beta1L;
- beta2[index] = beta2L;
- beta3[index] = beta3L;
- gt11[index] = gt11L;
- gt12[index] = gt12L;
- gt13[index] = gt13L;
- gt22[index] = gt22L;
- gt23[index] = gt23L;
- gt33[index] = gt33L;
- phi[index] = phiL;
- trK[index] = trKL;
- Xt1[index] = Xt1L;
- Xt2[index] = Xt2L;
- Xt3[index] = Xt3L;
+ 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(A[index],AL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(alpha[index],alphaL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At11[index],At11L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At12[index],At12L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At13[index],At13L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At22[index],At22L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At23[index],At23L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At33[index],At33L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B1[index],B1L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B2[index],B2L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B3[index],B3L,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(gt11[index],gt11L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt12[index],gt12L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt13[index],gt13L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt22[index],gt22L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt23[index],gt23L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt33[index],gt33L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(phi[index],phiL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(trK[index],trKL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt1[index],Xt1L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt2[index],Xt2L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt3[index],Xt3L,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(A[index],AL,elt_count);
+ vec_store_nta_partial_hi(alpha[index],alphaL,elt_count);
+ vec_store_nta_partial_hi(At11[index],At11L,elt_count);
+ vec_store_nta_partial_hi(At12[index],At12L,elt_count);
+ vec_store_nta_partial_hi(At13[index],At13L,elt_count);
+ vec_store_nta_partial_hi(At22[index],At22L,elt_count);
+ vec_store_nta_partial_hi(At23[index],At23L,elt_count);
+ vec_store_nta_partial_hi(At33[index],At33L,elt_count);
+ vec_store_nta_partial_hi(B1[index],B1L,elt_count);
+ vec_store_nta_partial_hi(B2[index],B2L,elt_count);
+ vec_store_nta_partial_hi(B3[index],B3L,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(gt11[index],gt11L,elt_count);
+ vec_store_nta_partial_hi(gt12[index],gt12L,elt_count);
+ vec_store_nta_partial_hi(gt13[index],gt13L,elt_count);
+ vec_store_nta_partial_hi(gt22[index],gt22L,elt_count);
+ vec_store_nta_partial_hi(gt23[index],gt23L,elt_count);
+ vec_store_nta_partial_hi(gt33[index],gt33L,elt_count);
+ vec_store_nta_partial_hi(phi[index],phiL,elt_count);
+ vec_store_nta_partial_hi(trK[index],trKL,elt_count);
+ vec_store_nta_partial_hi(Xt1[index],Xt1L,elt_count);
+ vec_store_nta_partial_hi(Xt2[index],Xt2L,elt_count);
+ vec_store_nta_partial_hi(Xt3[index],Xt3L,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(A[index],AL,elt_count);
+ vec_store_nta_partial_lo(alpha[index],alphaL,elt_count);
+ vec_store_nta_partial_lo(At11[index],At11L,elt_count);
+ vec_store_nta_partial_lo(At12[index],At12L,elt_count);
+ vec_store_nta_partial_lo(At13[index],At13L,elt_count);
+ vec_store_nta_partial_lo(At22[index],At22L,elt_count);
+ vec_store_nta_partial_lo(At23[index],At23L,elt_count);
+ vec_store_nta_partial_lo(At33[index],At33L,elt_count);
+ vec_store_nta_partial_lo(B1[index],B1L,elt_count);
+ vec_store_nta_partial_lo(B2[index],B2L,elt_count);
+ vec_store_nta_partial_lo(B3[index],B3L,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(gt11[index],gt11L,elt_count);
+ vec_store_nta_partial_lo(gt12[index],gt12L,elt_count);
+ vec_store_nta_partial_lo(gt13[index],gt13L,elt_count);
+ vec_store_nta_partial_lo(gt22[index],gt22L,elt_count);
+ vec_store_nta_partial_lo(gt23[index],gt23L,elt_count);
+ vec_store_nta_partial_lo(gt33[index],gt33L,elt_count);
+ vec_store_nta_partial_lo(phi[index],phiL,elt_count);
+ vec_store_nta_partial_lo(trK[index],trKL,elt_count);
+ vec_store_nta_partial_lo(Xt1[index],Xt1L,elt_count);
+ vec_store_nta_partial_lo(Xt2[index],Xt2L,elt_count);
+ vec_store_nta_partial_lo(Xt3[index],Xt3L,elt_count);
+ break;
+ }
+ vec_store_nta(A[index],AL);
+ vec_store_nta(alpha[index],alphaL);
+ vec_store_nta(At11[index],At11L);
+ vec_store_nta(At12[index],At12L);
+ vec_store_nta(At13[index],At13L);
+ vec_store_nta(At22[index],At22L);
+ vec_store_nta(At23[index],At23L);
+ vec_store_nta(At33[index],At33L);
+ vec_store_nta(B1[index],B1L);
+ vec_store_nta(B2[index],B2L);
+ vec_store_nta(B3[index],B3L);
+ vec_store_nta(beta1[index],beta1L);
+ vec_store_nta(beta2[index],beta2L);
+ vec_store_nta(beta3[index],beta3L);
+ vec_store_nta(gt11[index],gt11L);
+ vec_store_nta(gt12[index],gt12L);
+ vec_store_nta(gt13[index],gt13L);
+ vec_store_nta(gt22[index],gt22L);
+ vec_store_nta(gt23[index],gt23L);
+ vec_store_nta(gt33[index],gt33L);
+ vec_store_nta(phi[index],phiL);
+ vec_store_nta(trK[index],trKL);
+ vec_store_nta(Xt1[index],Xt1L);
+ vec_store_nta(Xt2[index],Xt2L);
+ vec_store_nta(Xt3[index],Xt3L);
}
- LC_ENDLOOP3 (ML_BSSN_UPW_boundary);
+ LC_ENDLOOP3VEC (ML_BSSN_UPW_boundary);
}
extern "C" void ML_BSSN_UPW_boundary(CCTK_ARGUMENTS)
@@ -226,5 +442,39 @@ extern "C" void ML_BSSN_UPW_boundary(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_UPW_boundary_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_UPW_boundary_calc_every != ML_BSSN_UPW_boundary_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN_UPW::ML_curv","ML_BSSN_UPW::ML_dtlapse","ML_BSSN_UPW::ML_dtshift","ML_BSSN_UPW::ML_Gamma","ML_BSSN_UPW::ML_lapse","ML_BSSN_UPW::ML_log_confac","ML_BSSN_UPW::ML_metric","ML_BSSN_UPW::ML_shift","ML_BSSN_UPW::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_UPW_boundary", 9, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverBoundaryWithGhosts(cctkGH, &ML_BSSN_UPW_boundary_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_UPW_boundary_Body");
+ }
}
diff --git a/ML_BSSN_UPW/src/ML_BSSN_UPW_constraints1.cc b/ML_BSSN_UPW/src/ML_BSSN_UPW_constraints1.cc
index ee0608b..efa9216 100644
--- a/ML_BSSN_UPW/src/ML_BSSN_UPW_constraints1.cc
+++ b/ML_BSSN_UPW/src/ML_BSSN_UPW_constraints1.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_UPW_constraints1_SelectBCs(CCTK_ARGUMENTS)
{
@@ -33,7 +34,7 @@ extern "C" void ML_BSSN_UPW_constraints1_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_BSSN_UPW_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_UPW_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;
@@ -41,21 +42,6 @@ static void ML_BSSN_UPW_constraints1_Body(cGH const * restrict const cctkGH, int
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_UPW_constraints1_Body");
- }
-
- if (cctk_iteration % ML_BSSN_UPW_constraints1_calc_every != ML_BSSN_UPW_constraints1_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN_UPW::ML_curv","ML_BSSN_UPW::ML_Gamma","ML_BSSN_UPW::ML_Ham","ML_BSSN_UPW::ML_lapse","ML_BSSN_UPW::ML_log_confac","ML_BSSN_UPW::ML_metric","ML_BSSN_UPW::ML_shift","ML_BSSN_UPW::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_UPW_constraints1", 8, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_UPW_constraints1", 2, 2, 2);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -65,88 +51,203 @@ static void ML_BSSN_UPW_constraints1_Body(cGH const * restrict const cctkGH, int
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const p1o24dx = 0.0416666666666666666666666666667*INV(dx);
- CCTK_REAL const p1o24dy = 0.0416666666666666666666666666667*INV(dy);
- CCTK_REAL const p1o24dz = 0.0416666666666666666666666666667*INV(dz);
- CCTK_REAL const p1o64dx = 0.015625*INV(dx);
- CCTK_REAL const p1o64dy = 0.015625*INV(dy);
- CCTK_REAL const p1o64dz = 0.015625*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_UPW_constraints1,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_UPW_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 alphaL = alpha[index];
- CCTK_REAL At11L = At11[index];
- CCTK_REAL At12L = At12[index];
- CCTK_REAL At13L = At13[index];
- CCTK_REAL At22L = At22[index];
- CCTK_REAL At23L = At23[index];
- CCTK_REAL At33L = At33[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL gt11L = gt11[index];
- CCTK_REAL gt12L = gt12[index];
- CCTK_REAL gt13L = gt13[index];
- CCTK_REAL gt22L = gt22[index];
- CCTK_REAL gt23L = gt23[index];
- CCTK_REAL gt33L = gt33[index];
- CCTK_REAL phiL = phi[index];
- CCTK_REAL trKL = trK[index];
- CCTK_REAL Xt1L = Xt1[index];
- CCTK_REAL Xt2L = Xt2[index];
- CCTK_REAL Xt3L = Xt3[index];
-
- CCTK_REAL eTttL, eTtxL, eTtyL, eTtzL, eTxxL, eTxyL, eTxzL, eTyyL, eTyzL, eTzzL;
+ 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 = eTtt[index];
- eTtxL = eTtx[index];
- eTtyL = eTty[index];
- eTtzL = eTtz[index];
- eTxxL = eTxx[index];
- eTxyL = eTxy[index];
- eTxzL = eTxz[index];
- eTyyL = eTyy[index];
- eTyzL = eTyz[index];
- eTzzL = eTzz[index];
+ 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
{
@@ -162,446 +263,1332 @@ static void ML_BSSN_UPW_constraints1_Body(cGH const * restrict const cctkGH, int
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 const PDstandardNth1gt11 = PDstandardNth1(&gt11[index]);
- CCTK_REAL const PDstandardNth2gt11 = PDstandardNth2(&gt11[index]);
- CCTK_REAL const PDstandardNth3gt11 = PDstandardNth3(&gt11[index]);
- CCTK_REAL const PDstandardNth11gt11 = PDstandardNth11(&gt11[index]);
- CCTK_REAL const PDstandardNth22gt11 = PDstandardNth22(&gt11[index]);
- CCTK_REAL const PDstandardNth33gt11 = PDstandardNth33(&gt11[index]);
- CCTK_REAL const PDstandardNth12gt11 = PDstandardNth12(&gt11[index]);
- CCTK_REAL const PDstandardNth13gt11 = PDstandardNth13(&gt11[index]);
- CCTK_REAL const PDstandardNth23gt11 = PDstandardNth23(&gt11[index]);
- CCTK_REAL const PDstandardNth1gt12 = PDstandardNth1(&gt12[index]);
- CCTK_REAL const PDstandardNth2gt12 = PDstandardNth2(&gt12[index]);
- CCTK_REAL const PDstandardNth3gt12 = PDstandardNth3(&gt12[index]);
- CCTK_REAL const PDstandardNth11gt12 = PDstandardNth11(&gt12[index]);
- CCTK_REAL const PDstandardNth22gt12 = PDstandardNth22(&gt12[index]);
- CCTK_REAL const PDstandardNth33gt12 = PDstandardNth33(&gt12[index]);
- CCTK_REAL const PDstandardNth12gt12 = PDstandardNth12(&gt12[index]);
- CCTK_REAL const PDstandardNth13gt12 = PDstandardNth13(&gt12[index]);
- CCTK_REAL const PDstandardNth23gt12 = PDstandardNth23(&gt12[index]);
- CCTK_REAL const PDstandardNth1gt13 = PDstandardNth1(&gt13[index]);
- CCTK_REAL const PDstandardNth2gt13 = PDstandardNth2(&gt13[index]);
- CCTK_REAL const PDstandardNth3gt13 = PDstandardNth3(&gt13[index]);
- CCTK_REAL const PDstandardNth11gt13 = PDstandardNth11(&gt13[index]);
- CCTK_REAL const PDstandardNth22gt13 = PDstandardNth22(&gt13[index]);
- CCTK_REAL const PDstandardNth33gt13 = PDstandardNth33(&gt13[index]);
- CCTK_REAL const PDstandardNth12gt13 = PDstandardNth12(&gt13[index]);
- CCTK_REAL const PDstandardNth13gt13 = PDstandardNth13(&gt13[index]);
- CCTK_REAL const PDstandardNth23gt13 = PDstandardNth23(&gt13[index]);
- CCTK_REAL const PDstandardNth1gt22 = PDstandardNth1(&gt22[index]);
- CCTK_REAL const PDstandardNth2gt22 = PDstandardNth2(&gt22[index]);
- CCTK_REAL const PDstandardNth3gt22 = PDstandardNth3(&gt22[index]);
- CCTK_REAL const PDstandardNth11gt22 = PDstandardNth11(&gt22[index]);
- CCTK_REAL const PDstandardNth22gt22 = PDstandardNth22(&gt22[index]);
- CCTK_REAL const PDstandardNth33gt22 = PDstandardNth33(&gt22[index]);
- CCTK_REAL const PDstandardNth12gt22 = PDstandardNth12(&gt22[index]);
- CCTK_REAL const PDstandardNth13gt22 = PDstandardNth13(&gt22[index]);
- CCTK_REAL const PDstandardNth23gt22 = PDstandardNth23(&gt22[index]);
- CCTK_REAL const PDstandardNth1gt23 = PDstandardNth1(&gt23[index]);
- CCTK_REAL const PDstandardNth2gt23 = PDstandardNth2(&gt23[index]);
- CCTK_REAL const PDstandardNth3gt23 = PDstandardNth3(&gt23[index]);
- CCTK_REAL const PDstandardNth11gt23 = PDstandardNth11(&gt23[index]);
- CCTK_REAL const PDstandardNth22gt23 = PDstandardNth22(&gt23[index]);
- CCTK_REAL const PDstandardNth33gt23 = PDstandardNth33(&gt23[index]);
- CCTK_REAL const PDstandardNth12gt23 = PDstandardNth12(&gt23[index]);
- CCTK_REAL const PDstandardNth13gt23 = PDstandardNth13(&gt23[index]);
- CCTK_REAL const PDstandardNth23gt23 = PDstandardNth23(&gt23[index]);
- CCTK_REAL const PDstandardNth1gt33 = PDstandardNth1(&gt33[index]);
- CCTK_REAL const PDstandardNth2gt33 = PDstandardNth2(&gt33[index]);
- CCTK_REAL const PDstandardNth3gt33 = PDstandardNth3(&gt33[index]);
- CCTK_REAL const PDstandardNth11gt33 = PDstandardNth11(&gt33[index]);
- CCTK_REAL const PDstandardNth22gt33 = PDstandardNth22(&gt33[index]);
- CCTK_REAL const PDstandardNth33gt33 = PDstandardNth33(&gt33[index]);
- CCTK_REAL const PDstandardNth12gt33 = PDstandardNth12(&gt33[index]);
- CCTK_REAL const PDstandardNth13gt33 = PDstandardNth13(&gt33[index]);
- CCTK_REAL const PDstandardNth23gt33 = PDstandardNth23(&gt33[index]);
- CCTK_REAL const PDstandardNth1phi = PDstandardNth1(&phi[index]);
- CCTK_REAL const PDstandardNth2phi = PDstandardNth2(&phi[index]);
- CCTK_REAL const PDstandardNth3phi = PDstandardNth3(&phi[index]);
- CCTK_REAL const PDstandardNth11phi = PDstandardNth11(&phi[index]);
- CCTK_REAL const PDstandardNth22phi = PDstandardNth22(&phi[index]);
- CCTK_REAL const PDstandardNth33phi = PDstandardNth33(&phi[index]);
- CCTK_REAL const PDstandardNth12phi = PDstandardNth12(&phi[index]);
- CCTK_REAL const PDstandardNth13phi = PDstandardNth13(&phi[index]);
- CCTK_REAL const PDstandardNth23phi = PDstandardNth23(&phi[index]);
- CCTK_REAL const PDstandardNth1Xt1 = PDstandardNth1(&Xt1[index]);
- CCTK_REAL const PDstandardNth2Xt1 = PDstandardNth2(&Xt1[index]);
- CCTK_REAL const PDstandardNth3Xt1 = PDstandardNth3(&Xt1[index]);
- CCTK_REAL const PDstandardNth1Xt2 = PDstandardNth1(&Xt2[index]);
- CCTK_REAL const PDstandardNth2Xt2 = PDstandardNth2(&Xt2[index]);
- CCTK_REAL const PDstandardNth3Xt2 = PDstandardNth3(&Xt2[index]);
- CCTK_REAL const PDstandardNth1Xt3 = PDstandardNth1(&Xt3[index]);
- CCTK_REAL const PDstandardNth2Xt3 = PDstandardNth2(&Xt3[index]);
- CCTK_REAL const PDstandardNth3Xt3 = PDstandardNth3(&Xt3[index]);
+ 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 detgt = 1;
+ 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 gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L));
+ CCTK_REAL_VEC Gtl111 = kmul(JacPDstandardNth1gt11,ToReal(0.5));
- CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt);
+ CCTK_REAL_VEC Gtl112 = kmul(JacPDstandardNth2gt11,ToReal(0.5));
- CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC Gtl113 = kmul(JacPDstandardNth3gt11,ToReal(0.5));
- CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L));
+ CCTK_REAL_VEC Gtl122 =
+ kmadd(JacPDstandardNth1gt22,ToReal(-0.5),JacPDstandardNth2gt12);
- CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC Gtl123 =
+ kmul(kadd(JacPDstandardNth2gt13,ksub(JacPDstandardNth3gt12,JacPDstandardNth1gt23)),ToReal(0.5));
- CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L));
+ CCTK_REAL_VEC Gtl133 =
+ kmadd(JacPDstandardNth1gt33,ToReal(-0.5),JacPDstandardNth3gt13);
- CCTK_REAL Gtl111 = 0.5*PDstandardNth1gt11;
+ CCTK_REAL_VEC Gtl211 =
+ kmadd(JacPDstandardNth2gt11,ToReal(-0.5),JacPDstandardNth1gt12);
- CCTK_REAL Gtl112 = 0.5*PDstandardNth2gt11;
+ CCTK_REAL_VEC Gtl212 = kmul(JacPDstandardNth1gt22,ToReal(0.5));
- CCTK_REAL Gtl113 = 0.5*PDstandardNth3gt11;
+ CCTK_REAL_VEC Gtl213 =
+ kmul(kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth3gt12,JacPDstandardNth2gt13)),ToReal(0.5));
- CCTK_REAL Gtl122 = -0.5*PDstandardNth1gt22 + PDstandardNth2gt12;
+ CCTK_REAL_VEC Gtl222 = kmul(JacPDstandardNth2gt22,ToReal(0.5));
- CCTK_REAL Gtl123 = 0.5*(-PDstandardNth1gt23 + PDstandardNth2gt13 +
- PDstandardNth3gt12);
+ CCTK_REAL_VEC Gtl223 = kmul(JacPDstandardNth3gt22,ToReal(0.5));
- CCTK_REAL Gtl133 = -0.5*PDstandardNth1gt33 + PDstandardNth3gt13;
+ CCTK_REAL_VEC Gtl233 =
+ kmadd(JacPDstandardNth2gt33,ToReal(-0.5),JacPDstandardNth3gt23);
- CCTK_REAL Gtl211 = PDstandardNth1gt12 - 0.5*PDstandardNth2gt11;
+ CCTK_REAL_VEC Gtl311 =
+ kmadd(JacPDstandardNth3gt11,ToReal(-0.5),JacPDstandardNth1gt13);
- CCTK_REAL Gtl212 = 0.5*PDstandardNth1gt22;
+ CCTK_REAL_VEC Gtl312 =
+ kmul(kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth2gt13,JacPDstandardNth3gt12)),ToReal(0.5));
- CCTK_REAL Gtl213 = 0.5*(PDstandardNth1gt23 - PDstandardNth2gt13 +
- PDstandardNth3gt12);
+ CCTK_REAL_VEC Gtl313 = kmul(JacPDstandardNth1gt33,ToReal(0.5));
- CCTK_REAL Gtl222 = 0.5*PDstandardNth2gt22;
+ CCTK_REAL_VEC Gtl322 =
+ kmadd(JacPDstandardNth3gt22,ToReal(-0.5),JacPDstandardNth2gt23);
- CCTK_REAL Gtl223 = 0.5*PDstandardNth3gt22;
+ CCTK_REAL_VEC Gtl323 = kmul(JacPDstandardNth2gt33,ToReal(0.5));
- CCTK_REAL Gtl233 = -0.5*PDstandardNth2gt33 + PDstandardNth3gt23;
+ CCTK_REAL_VEC Gtl333 = kmul(JacPDstandardNth3gt33,ToReal(0.5));
- CCTK_REAL Gtl311 = PDstandardNth1gt13 - 0.5*PDstandardNth3gt11;
+ CCTK_REAL_VEC Gtlu111 =
+ kmadd(Gtl111,gtu11,kmadd(Gtl112,gtu12,kmul(Gtl113,gtu13)));
- CCTK_REAL Gtl312 = 0.5*(PDstandardNth1gt23 + PDstandardNth2gt13 -
- PDstandardNth3gt12);
+ CCTK_REAL_VEC Gtlu112 =
+ kmadd(Gtl111,gtu12,kmadd(Gtl112,gtu22,kmul(Gtl113,gtu23)));
- CCTK_REAL Gtl313 = 0.5*PDstandardNth1gt33;
+ CCTK_REAL_VEC Gtlu113 =
+ kmadd(Gtl111,gtu13,kmadd(Gtl112,gtu23,kmul(Gtl113,gtu33)));
- CCTK_REAL Gtl322 = PDstandardNth2gt23 - 0.5*PDstandardNth3gt22;
+ CCTK_REAL_VEC Gtlu121 =
+ kmadd(Gtl112,gtu11,kmadd(Gtl122,gtu12,kmul(Gtl123,gtu13)));
- CCTK_REAL Gtl323 = 0.5*PDstandardNth2gt33;
+ CCTK_REAL_VEC Gtlu122 =
+ kmadd(Gtl112,gtu12,kmadd(Gtl122,gtu22,kmul(Gtl123,gtu23)));
- CCTK_REAL Gtl333 = 0.5*PDstandardNth3gt33;
+ CCTK_REAL_VEC Gtlu123 =
+ kmadd(Gtl112,gtu13,kmadd(Gtl122,gtu23,kmul(Gtl123,gtu33)));
- CCTK_REAL Gtlu111 = Gtl111*gtu11 + Gtl112*gtu12 + Gtl113*gtu13;
+ CCTK_REAL_VEC Gtlu131 =
+ kmadd(Gtl113,gtu11,kmadd(Gtl123,gtu12,kmul(Gtl133,gtu13)));
- CCTK_REAL Gtlu112 = Gtl111*gtu12 + Gtl112*gtu22 + Gtl113*gtu23;
+ CCTK_REAL_VEC Gtlu132 =
+ kmadd(Gtl113,gtu12,kmadd(Gtl123,gtu22,kmul(Gtl133,gtu23)));
- CCTK_REAL Gtlu113 = Gtl111*gtu13 + Gtl112*gtu23 + Gtl113*gtu33;
+ CCTK_REAL_VEC Gtlu133 =
+ kmadd(Gtl113,gtu13,kmadd(Gtl123,gtu23,kmul(Gtl133,gtu33)));
- CCTK_REAL Gtlu121 = Gtl112*gtu11 + Gtl122*gtu12 + Gtl123*gtu13;
+ CCTK_REAL_VEC Gtlu211 =
+ kmadd(Gtl211,gtu11,kmadd(Gtl212,gtu12,kmul(Gtl213,gtu13)));
- CCTK_REAL Gtlu122 = Gtl112*gtu12 + Gtl122*gtu22 + Gtl123*gtu23;
+ CCTK_REAL_VEC Gtlu212 =
+ kmadd(Gtl211,gtu12,kmadd(Gtl212,gtu22,kmul(Gtl213,gtu23)));
- CCTK_REAL Gtlu123 = Gtl112*gtu13 + Gtl122*gtu23 + Gtl123*gtu33;
+ CCTK_REAL_VEC Gtlu213 =
+ kmadd(Gtl211,gtu13,kmadd(Gtl212,gtu23,kmul(Gtl213,gtu33)));
- CCTK_REAL Gtlu131 = Gtl113*gtu11 + Gtl123*gtu12 + Gtl133*gtu13;
+ CCTK_REAL_VEC Gtlu221 =
+ kmadd(Gtl212,gtu11,kmadd(Gtl222,gtu12,kmul(Gtl223,gtu13)));
- CCTK_REAL Gtlu132 = Gtl113*gtu12 + Gtl123*gtu22 + Gtl133*gtu23;
+ CCTK_REAL_VEC Gtlu222 =
+ kmadd(Gtl212,gtu12,kmadd(Gtl222,gtu22,kmul(Gtl223,gtu23)));
- CCTK_REAL Gtlu133 = Gtl113*gtu13 + Gtl123*gtu23 + Gtl133*gtu33;
+ CCTK_REAL_VEC Gtlu223 =
+ kmadd(Gtl212,gtu13,kmadd(Gtl222,gtu23,kmul(Gtl223,gtu33)));
- CCTK_REAL Gtlu211 = Gtl211*gtu11 + Gtl212*gtu12 + Gtl213*gtu13;
+ CCTK_REAL_VEC Gtlu231 =
+ kmadd(Gtl213,gtu11,kmadd(Gtl223,gtu12,kmul(Gtl233,gtu13)));
- CCTK_REAL Gtlu212 = Gtl211*gtu12 + Gtl212*gtu22 + Gtl213*gtu23;
+ CCTK_REAL_VEC Gtlu232 =
+ kmadd(Gtl213,gtu12,kmadd(Gtl223,gtu22,kmul(Gtl233,gtu23)));
- CCTK_REAL Gtlu213 = Gtl211*gtu13 + Gtl212*gtu23 + Gtl213*gtu33;
+ CCTK_REAL_VEC Gtlu233 =
+ kmadd(Gtl213,gtu13,kmadd(Gtl223,gtu23,kmul(Gtl233,gtu33)));
- CCTK_REAL Gtlu221 = Gtl212*gtu11 + Gtl222*gtu12 + Gtl223*gtu13;
+ CCTK_REAL_VEC Gtlu311 =
+ kmadd(Gtl311,gtu11,kmadd(Gtl312,gtu12,kmul(Gtl313,gtu13)));
- CCTK_REAL Gtlu222 = Gtl212*gtu12 + Gtl222*gtu22 + Gtl223*gtu23;
+ CCTK_REAL_VEC Gtlu312 =
+ kmadd(Gtl311,gtu12,kmadd(Gtl312,gtu22,kmul(Gtl313,gtu23)));
- CCTK_REAL Gtlu223 = Gtl212*gtu13 + Gtl222*gtu23 + Gtl223*gtu33;
+ CCTK_REAL_VEC Gtlu313 =
+ kmadd(Gtl311,gtu13,kmadd(Gtl312,gtu23,kmul(Gtl313,gtu33)));
- CCTK_REAL Gtlu231 = Gtl213*gtu11 + Gtl223*gtu12 + Gtl233*gtu13;
+ CCTK_REAL_VEC Gtlu321 =
+ kmadd(Gtl312,gtu11,kmadd(Gtl322,gtu12,kmul(Gtl323,gtu13)));
- CCTK_REAL Gtlu232 = Gtl213*gtu12 + Gtl223*gtu22 + Gtl233*gtu23;
+ CCTK_REAL_VEC Gtlu322 =
+ kmadd(Gtl312,gtu12,kmadd(Gtl322,gtu22,kmul(Gtl323,gtu23)));
- CCTK_REAL Gtlu233 = Gtl213*gtu13 + Gtl223*gtu23 + Gtl233*gtu33;
+ CCTK_REAL_VEC Gtlu323 =
+ kmadd(Gtl312,gtu13,kmadd(Gtl322,gtu23,kmul(Gtl323,gtu33)));
- CCTK_REAL Gtlu311 = Gtl311*gtu11 + Gtl312*gtu12 + Gtl313*gtu13;
+ CCTK_REAL_VEC Gtlu331 =
+ kmadd(Gtl313,gtu11,kmadd(Gtl323,gtu12,kmul(Gtl333,gtu13)));
- CCTK_REAL Gtlu312 = Gtl311*gtu12 + Gtl312*gtu22 + Gtl313*gtu23;
+ CCTK_REAL_VEC Gtlu332 =
+ kmadd(Gtl313,gtu12,kmadd(Gtl323,gtu22,kmul(Gtl333,gtu23)));
- CCTK_REAL Gtlu313 = Gtl311*gtu13 + Gtl312*gtu23 + Gtl313*gtu33;
+ CCTK_REAL_VEC Gtlu333 =
+ kmadd(Gtl313,gtu13,kmadd(Gtl323,gtu23,kmul(Gtl333,gtu33)));
- CCTK_REAL Gtlu321 = Gtl312*gtu11 + Gtl322*gtu12 + Gtl323*gtu13;
+ CCTK_REAL_VEC Gt111 =
+ kmadd(Gtl111,gtu11,kmadd(Gtl211,gtu12,kmul(Gtl311,gtu13)));
- CCTK_REAL Gtlu322 = Gtl312*gtu12 + Gtl322*gtu22 + Gtl323*gtu23;
+ CCTK_REAL_VEC Gt211 =
+ kmadd(Gtl111,gtu12,kmadd(Gtl211,gtu22,kmul(Gtl311,gtu23)));
- CCTK_REAL Gtlu323 = Gtl312*gtu13 + Gtl322*gtu23 + Gtl323*gtu33;
+ CCTK_REAL_VEC Gt311 =
+ kmadd(Gtl111,gtu13,kmadd(Gtl211,gtu23,kmul(Gtl311,gtu33)));
- CCTK_REAL Gtlu331 = Gtl313*gtu11 + Gtl323*gtu12 + Gtl333*gtu13;
+ CCTK_REAL_VEC Gt112 =
+ kmadd(Gtl112,gtu11,kmadd(Gtl212,gtu12,kmul(Gtl312,gtu13)));
- CCTK_REAL Gtlu332 = Gtl313*gtu12 + Gtl323*gtu22 + Gtl333*gtu23;
+ CCTK_REAL_VEC Gt212 =
+ kmadd(Gtl112,gtu12,kmadd(Gtl212,gtu22,kmul(Gtl312,gtu23)));
- CCTK_REAL Gtlu333 = Gtl313*gtu13 + Gtl323*gtu23 + Gtl333*gtu33;
+ CCTK_REAL_VEC Gt312 =
+ kmadd(Gtl112,gtu13,kmadd(Gtl212,gtu23,kmul(Gtl312,gtu33)));
- CCTK_REAL Gt111 = Gtl111*gtu11 + Gtl211*gtu12 + Gtl311*gtu13;
+ CCTK_REAL_VEC Gt113 =
+ kmadd(Gtl113,gtu11,kmadd(Gtl213,gtu12,kmul(Gtl313,gtu13)));
- CCTK_REAL Gt211 = Gtl111*gtu12 + Gtl211*gtu22 + Gtl311*gtu23;
+ CCTK_REAL_VEC Gt213 =
+ kmadd(Gtl113,gtu12,kmadd(Gtl213,gtu22,kmul(Gtl313,gtu23)));
- CCTK_REAL Gt311 = Gtl111*gtu13 + Gtl211*gtu23 + Gtl311*gtu33;
+ CCTK_REAL_VEC Gt313 =
+ kmadd(Gtl113,gtu13,kmadd(Gtl213,gtu23,kmul(Gtl313,gtu33)));
- CCTK_REAL Gt112 = Gtl112*gtu11 + Gtl212*gtu12 + Gtl312*gtu13;
+ CCTK_REAL_VEC Gt122 =
+ kmadd(Gtl122,gtu11,kmadd(Gtl222,gtu12,kmul(Gtl322,gtu13)));
- CCTK_REAL Gt212 = Gtl112*gtu12 + Gtl212*gtu22 + Gtl312*gtu23;
+ CCTK_REAL_VEC Gt222 =
+ kmadd(Gtl122,gtu12,kmadd(Gtl222,gtu22,kmul(Gtl322,gtu23)));
- CCTK_REAL Gt312 = Gtl112*gtu13 + Gtl212*gtu23 + Gtl312*gtu33;
+ CCTK_REAL_VEC Gt322 =
+ kmadd(Gtl122,gtu13,kmadd(Gtl222,gtu23,kmul(Gtl322,gtu33)));
- CCTK_REAL Gt113 = Gtl113*gtu11 + Gtl213*gtu12 + Gtl313*gtu13;
+ CCTK_REAL_VEC Gt123 =
+ kmadd(Gtl123,gtu11,kmadd(Gtl223,gtu12,kmul(Gtl323,gtu13)));
- CCTK_REAL Gt213 = Gtl113*gtu12 + Gtl213*gtu22 + Gtl313*gtu23;
+ CCTK_REAL_VEC Gt223 =
+ kmadd(Gtl123,gtu12,kmadd(Gtl223,gtu22,kmul(Gtl323,gtu23)));
- CCTK_REAL Gt313 = Gtl113*gtu13 + Gtl213*gtu23 + Gtl313*gtu33;
+ CCTK_REAL_VEC Gt323 =
+ kmadd(Gtl123,gtu13,kmadd(Gtl223,gtu23,kmul(Gtl323,gtu33)));
- CCTK_REAL Gt122 = Gtl122*gtu11 + Gtl222*gtu12 + Gtl322*gtu13;
+ CCTK_REAL_VEC Gt133 =
+ kmadd(Gtl133,gtu11,kmadd(Gtl233,gtu12,kmul(Gtl333,gtu13)));
- CCTK_REAL Gt222 = Gtl122*gtu12 + Gtl222*gtu22 + Gtl322*gtu23;
+ CCTK_REAL_VEC Gt233 =
+ kmadd(Gtl133,gtu12,kmadd(Gtl233,gtu22,kmul(Gtl333,gtu23)));
- CCTK_REAL Gt322 = Gtl122*gtu13 + Gtl222*gtu23 + Gtl322*gtu33;
+ CCTK_REAL_VEC Gt333 =
+ kmadd(Gtl133,gtu13,kmadd(Gtl233,gtu23,kmul(Gtl333,gtu33)));
- CCTK_REAL Gt123 = Gtl123*gtu11 + Gtl223*gtu12 + Gtl323*gtu13;
+ 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 Gt223 = Gtl123*gtu12 + Gtl223*gtu22 + Gtl323*gtu23;
+ 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 Gt323 = Gtl123*gtu13 + Gtl223*gtu23 + Gtl323*gtu33;
+ 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 Gt133 = Gtl133*gtu11 + Gtl233*gtu12 + Gtl333*gtu13;
+ 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 Gt233 = Gtl133*gtu12 + Gtl233*gtu22 + Gtl333*gtu23;
+ 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 Gt333 = Gtl133*gtu13 + Gtl233*gtu23 + Gtl333*gtu33;
+ 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 Xtn1 = Gt111*gtu11 + Gt122*gtu22 + 2*(Gt112*gtu12 +
- Gt113*gtu13 + Gt123*gtu23) + Gt133*gtu33;
+ 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 Xtn2 = Gt211*gtu11 + Gt222*gtu22 + 2*(Gt212*gtu12 +
- Gt213*gtu13 + Gt223*gtu23) + Gt233*gtu33;
+ 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 Xtn3 = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu12 +
- Gt313*gtu13 + Gt323*gtu23) + Gt333*gtu33;
+ 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 Rt11 = 0.5*(6*(Gt111*Gtlu111 + Gt112*Gtlu112 +
- Gt113*Gtlu113) + 4*(Gt211*Gtlu121 + Gt212*Gtlu122 + Gt213*Gtlu123 +
- Gt311*Gtlu131 + Gt312*Gtlu132 + Gt313*Gtlu133) -
- gtu11*PDstandardNth11gt11 - 2*gtu12*PDstandardNth12gt11 -
- 2*gtu13*PDstandardNth13gt11 + 2*(Gt211*Gtlu211 + Gt212*Gtlu212 +
- Gt213*Gtlu213 + Gt311*Gtlu311 + Gt312*Gtlu312 + Gt313*Gtlu313 +
- gt11L*PDstandardNth1Xt1) + 2*gt12L*PDstandardNth1Xt2 +
- 2*gt13L*PDstandardNth1Xt3 - gtu22*PDstandardNth22gt11 -
- 2*gtu23*PDstandardNth23gt11 - gtu33*PDstandardNth33gt11 + 2*Gtl111*Xtn1
- + 2*Gtl112*Xtn2 + 2*Gtl113*Xtn3);
+ CCTK_REAL_VEC fac1 =
+ IfThen(conformalMethod,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
- CCTK_REAL Rt12 = 0.5*(4*(Gt211*Gtlu221 + Gt212*Gtlu222 +
- Gt213*Gtlu223) + 2*(Gt112*Gtlu111 + Gt122*Gtlu112 + Gt123*Gtlu113 +
- Gt111*Gtlu121 + Gt212*Gtlu121 + Gt112*Gtlu122 + Gt222*Gtlu122 +
- Gt113*Gtlu123 + Gt223*Gtlu123 + Gt312*Gtlu131 + Gt322*Gtlu132 +
- Gt323*Gtlu133 + Gt111*Gtlu211 + Gt112*Gtlu212 + Gt113*Gtlu213 +
- Gt311*Gtlu231 + Gt312*Gtlu232 + Gt313*Gtlu233 + Gt311*Gtlu321 +
- Gt312*Gtlu322 + Gt313*Gtlu323) - gtu11*PDstandardNth11gt12 -
- 2*gtu12*PDstandardNth12gt12 - 2*gtu13*PDstandardNth13gt12 +
- gt12L*PDstandardNth1Xt1 + gt22L*PDstandardNth1Xt2 +
- gt23L*PDstandardNth1Xt3 - gtu22*PDstandardNth22gt12 -
- 2*gtu23*PDstandardNth23gt12 + gt11L*PDstandardNth2Xt1 +
- gt12L*PDstandardNth2Xt2 + gt13L*PDstandardNth2Xt3 -
- gtu33*PDstandardNth33gt12 + Gtl112*Xtn1 + Gtl211*Xtn1 + Gtl122*Xtn2 +
- Gtl212*Xtn2 + Gtl123*Xtn3 + Gtl213*Xtn3);
+ CCTK_REAL_VEC cdphi1 = kmul(fac1,JacPDstandardNth1phi);
- CCTK_REAL Rt13 = 0.5*(2*(Gt113*Gtlu111 + Gt123*Gtlu112 + Gt133*Gtlu113
- + Gt213*Gtlu121 + Gt223*Gtlu122 + Gt233*Gtlu123 + Gt111*Gtlu131 +
- Gt313*Gtlu131 + Gt112*Gtlu132 + Gt323*Gtlu132 + Gt113*Gtlu133 +
- Gt333*Gtlu133 + Gt211*Gtlu231 + Gt212*Gtlu232 + Gt213*Gtlu233 +
- Gt111*Gtlu311 + Gt112*Gtlu312 + Gt113*Gtlu313 + Gt211*Gtlu321 +
- Gt212*Gtlu322 + Gt213*Gtlu323) + 4*(Gt311*Gtlu331 + Gt312*Gtlu332 +
- Gt313*Gtlu333) - gtu11*PDstandardNth11gt13 -
- 2*gtu12*PDstandardNth12gt13 - 2*gtu13*PDstandardNth13gt13 +
- gt13L*PDstandardNth1Xt1 + gt23L*PDstandardNth1Xt2 +
- gt33L*PDstandardNth1Xt3 - gtu22*PDstandardNth22gt13 -
- 2*gtu23*PDstandardNth23gt13 - gtu33*PDstandardNth33gt13 +
- gt11L*PDstandardNth3Xt1 + gt12L*PDstandardNth3Xt2 +
- gt13L*PDstandardNth3Xt3 + Gtl113*Xtn1 + Gtl311*Xtn1 + Gtl123*Xtn2 +
- Gtl312*Xtn2 + Gtl133*Xtn3 + Gtl313*Xtn3);
+ CCTK_REAL_VEC cdphi2 = kmul(fac1,JacPDstandardNth2phi);
- CCTK_REAL Rt22 = 0.5*(6*(Gt212*Gtlu221 + Gt222*Gtlu222 +
- Gt223*Gtlu223) + 4*(Gt112*Gtlu211 + Gt122*Gtlu212 + Gt123*Gtlu213 +
- Gt312*Gtlu231 + Gt322*Gtlu232 + Gt323*Gtlu233) -
- gtu11*PDstandardNth11gt22 - 2*gtu12*PDstandardNth12gt22 -
- 2*gtu13*PDstandardNth13gt22 - gtu22*PDstandardNth22gt22 -
- 2*gtu23*PDstandardNth23gt22 + 2*(Gt112*Gtlu121 + Gt122*Gtlu122 +
- Gt123*Gtlu123 + Gt312*Gtlu321 + Gt322*Gtlu322 + Gt323*Gtlu323 +
- gt12L*PDstandardNth2Xt1) + 2*gt22L*PDstandardNth2Xt2 +
- 2*gt23L*PDstandardNth2Xt3 - gtu33*PDstandardNth33gt22 + 2*Gtl212*Xtn1 +
- 2*Gtl222*Xtn2 + 2*Gtl223*Xtn3);
-
- CCTK_REAL Rt23 = 0.5*(2*(Gt112*Gtlu131 + Gt122*Gtlu132 + Gt123*Gtlu133
- + Gt113*Gtlu211 + Gt123*Gtlu212 + Gt133*Gtlu213 + Gt213*Gtlu221 +
- Gt223*Gtlu222 + Gt233*Gtlu223 + Gt212*Gtlu231 + Gt313*Gtlu231 +
- Gt222*Gtlu232 + Gt323*Gtlu232 + Gt223*Gtlu233 + Gt333*Gtlu233 +
- Gt112*Gtlu311 + Gt122*Gtlu312 + Gt123*Gtlu313 + Gt212*Gtlu321 +
- Gt222*Gtlu322 + Gt223*Gtlu323) + 4*(Gt312*Gtlu331 + Gt322*Gtlu332 +
- Gt323*Gtlu333) - gtu11*PDstandardNth11gt23 -
- 2*gtu12*PDstandardNth12gt23 - 2*gtu13*PDstandardNth13gt23 -
- gtu22*PDstandardNth22gt23 - 2*gtu23*PDstandardNth23gt23 +
- gt13L*PDstandardNth2Xt1 + gt23L*PDstandardNth2Xt2 +
- gt33L*PDstandardNth2Xt3 - gtu33*PDstandardNth33gt23 +
- gt12L*PDstandardNth3Xt1 + gt22L*PDstandardNth3Xt2 +
- gt23L*PDstandardNth3Xt3 + Gtl213*Xtn1 + Gtl312*Xtn1 + Gtl223*Xtn2 +
- Gtl322*Xtn2 + Gtl233*Xtn3 + Gtl323*Xtn3);
-
- CCTK_REAL Rt33 = 0.5*(4*(Gt113*Gtlu311 + Gt123*Gtlu312 + Gt133*Gtlu313
- + Gt213*Gtlu321 + Gt223*Gtlu322 + Gt233*Gtlu323) + 6*(Gt313*Gtlu331 +
- Gt323*Gtlu332 + Gt333*Gtlu333) - gtu11*PDstandardNth11gt33 -
- 2*gtu12*PDstandardNth12gt33 - 2*gtu13*PDstandardNth13gt33 -
- gtu22*PDstandardNth22gt33 - 2*gtu23*PDstandardNth23gt33 -
- gtu33*PDstandardNth33gt33 + 2*(Gt113*Gtlu131 + Gt123*Gtlu132 +
- Gt133*Gtlu133 + Gt213*Gtlu231 + Gt223*Gtlu232 + Gt233*Gtlu233 +
- gt13L*PDstandardNth3Xt1) + 2*gt23L*PDstandardNth3Xt2 +
- 2*gt33L*PDstandardNth3Xt3 + 2*Gtl313*Xtn1 + 2*Gtl323*Xtn2 +
- 2*Gtl333*Xtn3);
-
- CCTK_REAL fac1 = IfThen(conformalMethod,-0.5*INV(phiL),1);
-
- CCTK_REAL cdphi1 = fac1*PDstandardNth1phi;
-
- CCTK_REAL cdphi2 = fac1*PDstandardNth2phi;
-
- CCTK_REAL cdphi3 = fac1*PDstandardNth3phi;
-
- CCTK_REAL fac2 = IfThen(conformalMethod,0.5*INV(SQR(phiL)),0);
-
- CCTK_REAL cdphi211 = -(fac1*(-PDstandardNth11phi +
- Gt111*PDstandardNth1phi + Gt211*PDstandardNth2phi +
- Gt311*PDstandardNth3phi)) + fac2*SQR(PDstandardNth1phi);
-
- CCTK_REAL cdphi212 = fac2*PDstandardNth1phi*PDstandardNth2phi -
- fac1*(-PDstandardNth12phi + Gt112*PDstandardNth1phi +
- Gt212*PDstandardNth2phi + Gt312*PDstandardNth3phi);
-
- CCTK_REAL cdphi213 = fac2*PDstandardNth1phi*PDstandardNth3phi -
- fac1*(-PDstandardNth13phi + Gt113*PDstandardNth1phi +
- Gt213*PDstandardNth2phi + Gt313*PDstandardNth3phi);
-
- CCTK_REAL cdphi222 = -(fac1*(Gt122*PDstandardNth1phi -
- PDstandardNth22phi + Gt222*PDstandardNth2phi +
- Gt322*PDstandardNth3phi)) + fac2*SQR(PDstandardNth2phi);
-
- CCTK_REAL cdphi223 = fac2*PDstandardNth2phi*PDstandardNth3phi -
- fac1*(Gt123*PDstandardNth1phi - PDstandardNth23phi +
- Gt223*PDstandardNth2phi + Gt323*PDstandardNth3phi);
-
- CCTK_REAL cdphi233 = -(fac1*(Gt133*PDstandardNth1phi +
- Gt233*PDstandardNth2phi - PDstandardNth33phi +
- Gt333*PDstandardNth3phi)) + fac2*SQR(PDstandardNth3phi);
-
- CCTK_REAL Rphi11 = -2*(cdphi211 + 2*(-1 + gt11L*gtu11)*SQR(cdphi1) +
- gt11L*(cdphi211*gtu11 + 4*(cdphi1*(cdphi2*gtu12 + cdphi3*gtu13) +
- cdphi2*cdphi3*gtu23) + cdphi233*gtu33 + gtu22*(cdphi222 +
- 2*SQR(cdphi2)) + 2*(cdphi212*gtu12 + cdphi213*gtu13 + cdphi223*gtu23 +
- gtu33*SQR(cdphi3))));
+ CCTK_REAL_VEC cdphi3 = kmul(fac1,JacPDstandardNth3phi);
- CCTK_REAL Rphi12 = -2*(cdphi212 + cdphi1*(cdphi2*(-2 + 4*gt12L*gtu12)
- + 4*cdphi3*gt12L*gtu13) + gt12L*(cdphi211*gtu11 + 4*cdphi2*cdphi3*gtu23
- + 2*(cdphi212*gtu12 + cdphi213*gtu13 + cdphi223*gtu23 +
- gtu11*SQR(cdphi1)) + gtu22*(cdphi222 + 2*SQR(cdphi2)) + gtu33*(cdphi233
- + 2*SQR(cdphi3))));
+ CCTK_REAL_VEC fac2 =
+ IfThen(conformalMethod,kmul(INV(SQR(phiL)),ToReal(0.5)),ToReal(0));
- CCTK_REAL Rphi13 = -2*(cdphi213 + cdphi1*(4*cdphi2*gt13L*gtu12 +
- cdphi3*(-2 + 4*gt13L*gtu13)) + gt13L*(cdphi211*gtu11 +
- 4*cdphi2*cdphi3*gtu23 + 2*(cdphi212*gtu12 + cdphi213*gtu13 +
- cdphi223*gtu23 + gtu11*SQR(cdphi1)) + gtu22*(cdphi222 + 2*SQR(cdphi2))
- + gtu33*(cdphi233 + 2*SQR(cdphi3))));
+ CCTK_REAL_VEC cdphi211 =
+ kmadd(fac2,SQR(JacPDstandardNth1phi),kmul(fac1,ksub(JacPDstandardNth11phi,kmadd(Gt111,JacPDstandardNth1phi,kmadd(Gt311,JacPDstandardNth3phi,kmul(Gt211,JacPDstandardNth2phi))))));
- CCTK_REAL Rphi22 = -2*(cdphi222 + 2*(-1 + gt22L*gtu22)*SQR(cdphi2) +
- gt22L*(cdphi222*gtu22 + 4*(cdphi1*cdphi3*gtu13 + cdphi2*(cdphi1*gtu12 +
- cdphi3*gtu23)) + cdphi233*gtu33 + gtu11*(cdphi211 + 2*SQR(cdphi1)) +
- 2*(cdphi212*gtu12 + cdphi213*gtu13 + cdphi223*gtu23 +
- gtu33*SQR(cdphi3))));
+ CCTK_REAL_VEC cdphi212 =
+ kmadd(fac2,kmul(JacPDstandardNth1phi,JacPDstandardNth2phi),kmul(fac1,ksub(JacPDstandardNth12phi,kmadd(Gt112,JacPDstandardNth1phi,kmadd(Gt312,JacPDstandardNth3phi,kmul(Gt212,JacPDstandardNth2phi))))));
- CCTK_REAL Rphi23 = -2*(cdphi223 + cdphi2*(4*cdphi1*gt23L*gtu12 +
- cdphi3*(-2 + 4*gt23L*gtu23)) + gt23L*(4*cdphi1*cdphi3*gtu13 +
- cdphi222*gtu22 + gtu11*(cdphi211 + 2*SQR(cdphi1)) + 2*(cdphi212*gtu12 +
- cdphi213*gtu13 + cdphi223*gtu23 + gtu22*SQR(cdphi2)) + gtu33*(cdphi233
- + 2*SQR(cdphi3))));
+ CCTK_REAL_VEC cdphi213 =
+ kmadd(fac2,kmul(JacPDstandardNth1phi,JacPDstandardNth3phi),kmul(fac1,ksub(JacPDstandardNth13phi,kmadd(Gt113,JacPDstandardNth1phi,kmadd(Gt313,JacPDstandardNth3phi,kmul(Gt213,JacPDstandardNth2phi))))));
- CCTK_REAL Rphi33 = -2*(cdphi233 + gt33L*((4*cdphi1*cdphi2 +
- 2*cdphi212)*gtu12 + 4*cdphi3*(cdphi1*gtu13 + cdphi2*gtu23) +
- 2*(cdphi213*gtu13 + cdphi223*gtu23) + cdphi233*gtu33 + gtu11*(cdphi211
- + 2*SQR(cdphi1)) + gtu22*(cdphi222 + 2*SQR(cdphi2))) + 2*(-1 +
- gt33L*gtu33)*SQR(cdphi3));
+ CCTK_REAL_VEC cdphi222 =
+ kmsub(fac2,SQR(JacPDstandardNth2phi),kmul(fac1,kmadd(Gt122,JacPDstandardNth1phi,kmadd(Gt222,JacPDstandardNth2phi,kmsub(Gt322,JacPDstandardNth3phi,JacPDstandardNth22phi)))));
- CCTK_REAL e4phi = IfThen(conformalMethod,INV(SQR(phiL)),exp(4*phiL));
+ CCTK_REAL_VEC cdphi223 =
+ kmsub(fac2,kmul(JacPDstandardNth2phi,JacPDstandardNth3phi),kmul(fac1,kmadd(Gt123,JacPDstandardNth1phi,kmadd(Gt223,JacPDstandardNth2phi,kmsub(Gt323,JacPDstandardNth3phi,JacPDstandardNth23phi)))));
- CCTK_REAL em4phi = INV(e4phi);
+ CCTK_REAL_VEC cdphi233 =
+ kmsub(fac2,SQR(JacPDstandardNth3phi),kmul(fac1,kmadd(Gt133,JacPDstandardNth1phi,kmadd(Gt233,JacPDstandardNth2phi,kmsub(Gt333,JacPDstandardNth3phi,JacPDstandardNth33phi)))));
- CCTK_REAL gu11 = em4phi*gtu11;
+ 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 gu12 = em4phi*gtu12;
+ 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(cdphi3,kmul(gt12L,kmul(gtu13,ToReal(4))),kmul(cdphi2,kmadd(gt12L,kmul(gtu12,ToReal(4)),ToReal(-2))))))));
- CCTK_REAL gu13 = em4phi*gtu13;
+ 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(cdphi2,kmul(gt13L,kmul(gtu12,ToReal(4))),kmul(cdphi3,kmadd(gt13L,kmul(gtu13,ToReal(4)),ToReal(-2))))))));
- CCTK_REAL gu22 = em4phi*gtu22;
+ 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 gu23 = em4phi*gtu23;
+ 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(cdphi1,kmul(gt23L,kmul(gtu12,ToReal(4))),kmul(cdphi3,kmadd(gt23L,kmul(gtu23,ToReal(4)),ToReal(-2))))))));
- CCTK_REAL gu33 = em4phi*gtu33;
+ 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 R11 = Rphi11 + Rt11;
+ CCTK_REAL_VEC e4phi =
+ IfThen(conformalMethod,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
- CCTK_REAL R12 = Rphi12 + Rt12;
+ CCTK_REAL_VEC em4phi = INV(e4phi);
- CCTK_REAL R13 = Rphi13 + Rt13;
+ CCTK_REAL_VEC gu11 = kmul(em4phi,gtu11);
- CCTK_REAL R22 = Rphi22 + Rt22;
+ CCTK_REAL_VEC gu12 = kmul(em4phi,gtu12);
- CCTK_REAL R23 = Rphi23 + Rt23;
+ CCTK_REAL_VEC gu13 = kmul(em4phi,gtu13);
- CCTK_REAL R33 = Rphi33 + Rt33;
+ CCTK_REAL_VEC gu22 = kmul(em4phi,gtu22);
- CCTK_REAL trR = gu11*R11 + gu22*R22 + 2*(gu12*R12 + gu13*R13 +
- gu23*R23) + gu33*R33;
+ CCTK_REAL_VEC gu23 = kmul(em4phi,gtu23);
- CCTK_REAL Atm11 = At11L*gtu11 + At12L*gtu12 + At13L*gtu13;
+ CCTK_REAL_VEC gu33 = kmul(em4phi,gtu33);
- CCTK_REAL Atm21 = At11L*gtu12 + At12L*gtu22 + At13L*gtu23;
+ CCTK_REAL_VEC R11 = kadd(Rphi11,Rt11);
- CCTK_REAL Atm31 = At11L*gtu13 + At12L*gtu23 + At13L*gtu33;
+ CCTK_REAL_VEC R12 = kadd(Rphi12,Rt12);
- CCTK_REAL Atm12 = At12L*gtu11 + At22L*gtu12 + At23L*gtu13;
+ CCTK_REAL_VEC R13 = kadd(Rphi13,Rt13);
- CCTK_REAL Atm22 = At12L*gtu12 + At22L*gtu22 + At23L*gtu23;
+ CCTK_REAL_VEC R22 = kadd(Rphi22,Rt22);
- CCTK_REAL Atm32 = At12L*gtu13 + At22L*gtu23 + At23L*gtu33;
+ CCTK_REAL_VEC R23 = kadd(Rphi23,Rt23);
- CCTK_REAL Atm13 = At13L*gtu11 + At23L*gtu12 + At33L*gtu13;
+ CCTK_REAL_VEC R33 = kadd(Rphi33,Rt33);
- CCTK_REAL Atm23 = At13L*gtu12 + At23L*gtu22 + At33L*gtu23;
+ 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 Atm33 = At13L*gtu13 + At23L*gtu23 + At33L*gtu33;
+ CCTK_REAL_VEC Atm11 =
+ kmadd(At11L,gtu11,kmadd(At12L,gtu12,kmul(At13L,gtu13)));
- CCTK_REAL rho = INV(SQR(alphaL))*(eTttL - 2*(beta2L*eTtyL +
- beta3L*eTtzL) + 2*(beta1L*(-eTtxL + beta2L*eTxyL + beta3L*eTxzL) +
- beta2L*beta3L*eTyzL) + eTxxL*SQR(beta1L) + eTyyL*SQR(beta2L) +
- eTzzL*SQR(beta3L));
+ CCTK_REAL_VEC Atm21 =
+ kmadd(At11L,gtu12,kmadd(At12L,gtu22,kmul(At13L,gtu23)));
- CCTK_REAL HL = -2.*(Atm12*Atm21 + Atm13*Atm31 + Atm23*Atm32) -
- 50.26548245743669181540229413247204614715*rho + trR - 1.*(SQR(Atm11) +
- SQR(Atm22) + SQR(Atm33)) +
- 0.6666666666666666666666666666666666666667*SQR(trKL);
+ CCTK_REAL_VEC Atm31 =
+ kmadd(At11L,gtu13,kmadd(At12L,gtu23,kmul(At13L,gtu33)));
- /* Copy local copies back to grid functions */
- H[index] = HL;
+ 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(rho,ToReal(-50.26548245743669181540229413247204614715),kmadd(kmadd(Atm12,Atm21,kmadd(Atm13,Atm31,kmul(Atm23,Atm32))),ToReal(-2.),kmadd(kadd(SQR(Atm11),kadd(SQR(Atm22),SQR(Atm33))),ToReal(-1.),kmul(SQR(trKL),ToReal(0.6666666666666666666666666666666666666667))))));
+
+ /* 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);
+ 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);
+ 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);
+ break;
+ }
+ vec_store_nta(H[index],HL);
}
- LC_ENDLOOP3 (ML_BSSN_UPW_constraints1);
+ LC_ENDLOOP3VEC (ML_BSSN_UPW_constraints1);
}
extern "C" void ML_BSSN_UPW_constraints1(CCTK_ARGUMENTS)
@@ -609,5 +1596,43 @@ extern "C" void ML_BSSN_UPW_constraints1(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_UPW_constraints1_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_UPW_constraints1_calc_every != ML_BSSN_UPW_constraints1_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN_UPW::ML_curv","ML_BSSN_UPW::ML_Gamma","ML_BSSN_UPW::ML_Ham","ML_BSSN_UPW::ML_lapse","ML_BSSN_UPW::ML_log_confac","ML_BSSN_UPW::ML_metric","ML_BSSN_UPW::ML_shift","ML_BSSN_UPW::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_UPW_constraints1", 8, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_UPW_constraints1", 1, 1, 1);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_UPW_constraints1", 2, 2, 2);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_UPW_constraints1", 3, 3, 3);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_UPW_constraints1", 4, 4, 4);
+ break;
+ }
+
GenericFD_LoopOverInterior(cctkGH, &ML_BSSN_UPW_constraints1_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_UPW_constraints1_Body");
+ }
}
diff --git a/ML_BSSN_UPW/src/ML_BSSN_UPW_constraints2.cc b/ML_BSSN_UPW/src/ML_BSSN_UPW_constraints2.cc
index e8ca69b..5a27be0 100644
--- a/ML_BSSN_UPW/src/ML_BSSN_UPW_constraints2.cc
+++ b/ML_BSSN_UPW/src/ML_BSSN_UPW_constraints2.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_UPW_constraints2_SelectBCs(CCTK_ARGUMENTS)
{
@@ -42,7 +43,7 @@ extern "C" void ML_BSSN_UPW_constraints2_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_BSSN_UPW_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_UPW_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;
@@ -50,21 +51,6 @@ static void ML_BSSN_UPW_constraints2_Body(cGH const * restrict const cctkGH, int
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_UPW_constraints2_Body");
- }
-
- if (cctk_iteration % ML_BSSN_UPW_constraints2_calc_every != ML_BSSN_UPW_constraints2_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN_UPW::ML_cons_detg","ML_BSSN_UPW::ML_cons_Gamma","ML_BSSN_UPW::ML_cons_traceA","ML_BSSN_UPW::ML_curv","ML_BSSN_UPW::ML_Gamma","ML_BSSN_UPW::ML_lapse","ML_BSSN_UPW::ML_log_confac","ML_BSSN_UPW::ML_metric","ML_BSSN_UPW::ML_mom","ML_BSSN_UPW::ML_shift","ML_BSSN_UPW::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_UPW_constraints2", 11, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_UPW_constraints2", 2, 2, 2);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -74,87 +60,202 @@ static void ML_BSSN_UPW_constraints2_Body(cGH const * restrict const cctkGH, int
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const p1o24dx = 0.0416666666666666666666666666667*INV(dx);
- CCTK_REAL const p1o24dy = 0.0416666666666666666666666666667*INV(dy);
- CCTK_REAL const p1o24dz = 0.0416666666666666666666666666667*INV(dz);
- CCTK_REAL const p1o64dx = 0.015625*INV(dx);
- CCTK_REAL const p1o64dy = 0.015625*INV(dy);
- CCTK_REAL const p1o64dz = 0.015625*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_UPW_constraints2,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_UPW_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 alphaL = alpha[index];
- CCTK_REAL At11L = At11[index];
- CCTK_REAL At12L = At12[index];
- CCTK_REAL At13L = At13[index];
- CCTK_REAL At22L = At22[index];
- CCTK_REAL At23L = At23[index];
- CCTK_REAL At33L = At33[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL gt11L = gt11[index];
- CCTK_REAL gt12L = gt12[index];
- CCTK_REAL gt13L = gt13[index];
- CCTK_REAL gt22L = gt22[index];
- CCTK_REAL gt23L = gt23[index];
- CCTK_REAL gt33L = gt33[index];
- CCTK_REAL phiL = phi[index];
- CCTK_REAL trKL = trK[index];
- CCTK_REAL Xt1L = Xt1[index];
- CCTK_REAL Xt2L = Xt2[index];
- CCTK_REAL Xt3L = Xt3[index];
-
- CCTK_REAL eTtxL, eTtyL, eTtzL, eTxxL, eTxyL, eTxzL, eTyyL, eTyzL, eTzzL;
+ 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 = eTtx[index];
- eTtyL = eTty[index];
- eTtzL = eTtz[index];
- eTxxL = eTxx[index];
- eTxyL = eTxy[index];
- eTxzL = eTxz[index];
- eTyyL = eTyy[index];
- eTyzL = eTyz[index];
- eTzzL = eTzz[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
{
@@ -169,239 +270,724 @@ static void ML_BSSN_UPW_constraints2_Body(cGH const * restrict const cctkGH, int
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 const PDstandardNth1At11 = PDstandardNth1(&At11[index]);
- CCTK_REAL const PDstandardNth2At11 = PDstandardNth2(&At11[index]);
- CCTK_REAL const PDstandardNth3At11 = PDstandardNth3(&At11[index]);
- CCTK_REAL const PDstandardNth1At12 = PDstandardNth1(&At12[index]);
- CCTK_REAL const PDstandardNth2At12 = PDstandardNth2(&At12[index]);
- CCTK_REAL const PDstandardNth3At12 = PDstandardNth3(&At12[index]);
- CCTK_REAL const PDstandardNth1At13 = PDstandardNth1(&At13[index]);
- CCTK_REAL const PDstandardNth2At13 = PDstandardNth2(&At13[index]);
- CCTK_REAL const PDstandardNth3At13 = PDstandardNth3(&At13[index]);
- CCTK_REAL const PDstandardNth1At22 = PDstandardNth1(&At22[index]);
- CCTK_REAL const PDstandardNth2At22 = PDstandardNth2(&At22[index]);
- CCTK_REAL const PDstandardNth3At22 = PDstandardNth3(&At22[index]);
- CCTK_REAL const PDstandardNth1At23 = PDstandardNth1(&At23[index]);
- CCTK_REAL const PDstandardNth2At23 = PDstandardNth2(&At23[index]);
- CCTK_REAL const PDstandardNth3At23 = PDstandardNth3(&At23[index]);
- CCTK_REAL const PDstandardNth1At33 = PDstandardNth1(&At33[index]);
- CCTK_REAL const PDstandardNth2At33 = PDstandardNth2(&At33[index]);
- CCTK_REAL const PDstandardNth3At33 = PDstandardNth3(&At33[index]);
- CCTK_REAL const PDstandardNth1gt11 = PDstandardNth1(&gt11[index]);
- CCTK_REAL const PDstandardNth2gt11 = PDstandardNth2(&gt11[index]);
- CCTK_REAL const PDstandardNth3gt11 = PDstandardNth3(&gt11[index]);
- CCTK_REAL const PDstandardNth1gt12 = PDstandardNth1(&gt12[index]);
- CCTK_REAL const PDstandardNth2gt12 = PDstandardNth2(&gt12[index]);
- CCTK_REAL const PDstandardNth3gt12 = PDstandardNth3(&gt12[index]);
- CCTK_REAL const PDstandardNth1gt13 = PDstandardNth1(&gt13[index]);
- CCTK_REAL const PDstandardNth2gt13 = PDstandardNth2(&gt13[index]);
- CCTK_REAL const PDstandardNth3gt13 = PDstandardNth3(&gt13[index]);
- CCTK_REAL const PDstandardNth1gt22 = PDstandardNth1(&gt22[index]);
- CCTK_REAL const PDstandardNth2gt22 = PDstandardNth2(&gt22[index]);
- CCTK_REAL const PDstandardNth3gt22 = PDstandardNth3(&gt22[index]);
- CCTK_REAL const PDstandardNth1gt23 = PDstandardNth1(&gt23[index]);
- CCTK_REAL const PDstandardNth2gt23 = PDstandardNth2(&gt23[index]);
- CCTK_REAL const PDstandardNth3gt23 = PDstandardNth3(&gt23[index]);
- CCTK_REAL const PDstandardNth1gt33 = PDstandardNth1(&gt33[index]);
- CCTK_REAL const PDstandardNth2gt33 = PDstandardNth2(&gt33[index]);
- CCTK_REAL const PDstandardNth3gt33 = PDstandardNth3(&gt33[index]);
- CCTK_REAL const PDstandardNth1phi = PDstandardNth1(&phi[index]);
- CCTK_REAL const PDstandardNth2phi = PDstandardNth2(&phi[index]);
- CCTK_REAL const PDstandardNth3phi = PDstandardNth3(&phi[index]);
- CCTK_REAL const PDstandardNth1trK = PDstandardNth1(&trK[index]);
- CCTK_REAL const PDstandardNth2trK = PDstandardNth2(&trK[index]);
- CCTK_REAL const PDstandardNth3trK = PDstandardNth3(&trK[index]);
+ 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 detgt = 1;
+ 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 gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L));
+ CCTK_REAL_VEC gtu13 =
+ kmul(INV(detgt),kmsub(gt12L,gt23L,kmul(gt13L,gt22L)));
- CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt);
+ CCTK_REAL_VEC gtu22 = kmul(INV(detgt),kmsub(gt11L,gt33L,SQR(gt13L)));
- CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC gtu23 =
+ kmul(INV(detgt),kmsub(gt12L,gt13L,kmul(gt11L,gt23L)));
- CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L));
+ CCTK_REAL_VEC gtu33 = kmul(INV(detgt),kmsub(gt11L,gt22L,SQR(gt12L)));
- CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC Gtl111 = kmul(JacPDstandardNth1gt11,ToReal(0.5));
- CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L));
+ CCTK_REAL_VEC Gtl112 = kmul(JacPDstandardNth2gt11,ToReal(0.5));
- CCTK_REAL Gtl111 = 0.5*PDstandardNth1gt11;
+ CCTK_REAL_VEC Gtl113 = kmul(JacPDstandardNth3gt11,ToReal(0.5));
- CCTK_REAL Gtl112 = 0.5*PDstandardNth2gt11;
+ CCTK_REAL_VEC Gtl122 =
+ kmadd(JacPDstandardNth1gt22,ToReal(-0.5),JacPDstandardNth2gt12);
- CCTK_REAL Gtl113 = 0.5*PDstandardNth3gt11;
+ CCTK_REAL_VEC Gtl123 =
+ kmul(kadd(JacPDstandardNth2gt13,ksub(JacPDstandardNth3gt12,JacPDstandardNth1gt23)),ToReal(0.5));
- CCTK_REAL Gtl122 = -0.5*PDstandardNth1gt22 + PDstandardNth2gt12;
+ CCTK_REAL_VEC Gtl133 =
+ kmadd(JacPDstandardNth1gt33,ToReal(-0.5),JacPDstandardNth3gt13);
- CCTK_REAL Gtl123 = 0.5*(-PDstandardNth1gt23 + PDstandardNth2gt13 +
- PDstandardNth3gt12);
+ CCTK_REAL_VEC Gtl211 =
+ kmadd(JacPDstandardNth2gt11,ToReal(-0.5),JacPDstandardNth1gt12);
- CCTK_REAL Gtl133 = -0.5*PDstandardNth1gt33 + PDstandardNth3gt13;
+ CCTK_REAL_VEC Gtl212 = kmul(JacPDstandardNth1gt22,ToReal(0.5));
- CCTK_REAL Gtl211 = PDstandardNth1gt12 - 0.5*PDstandardNth2gt11;
+ CCTK_REAL_VEC Gtl213 =
+ kmul(kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth3gt12,JacPDstandardNth2gt13)),ToReal(0.5));
- CCTK_REAL Gtl212 = 0.5*PDstandardNth1gt22;
+ CCTK_REAL_VEC Gtl222 = kmul(JacPDstandardNth2gt22,ToReal(0.5));
- CCTK_REAL Gtl213 = 0.5*(PDstandardNth1gt23 - PDstandardNth2gt13 +
- PDstandardNth3gt12);
+ CCTK_REAL_VEC Gtl223 = kmul(JacPDstandardNth3gt22,ToReal(0.5));
- CCTK_REAL Gtl222 = 0.5*PDstandardNth2gt22;
+ CCTK_REAL_VEC Gtl233 =
+ kmadd(JacPDstandardNth2gt33,ToReal(-0.5),JacPDstandardNth3gt23);
- CCTK_REAL Gtl223 = 0.5*PDstandardNth3gt22;
+ CCTK_REAL_VEC Gtl311 =
+ kmadd(JacPDstandardNth3gt11,ToReal(-0.5),JacPDstandardNth1gt13);
- CCTK_REAL Gtl233 = -0.5*PDstandardNth2gt33 + PDstandardNth3gt23;
+ CCTK_REAL_VEC Gtl312 =
+ kmul(kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth2gt13,JacPDstandardNth3gt12)),ToReal(0.5));
- CCTK_REAL Gtl311 = PDstandardNth1gt13 - 0.5*PDstandardNth3gt11;
+ CCTK_REAL_VEC Gtl313 = kmul(JacPDstandardNth1gt33,ToReal(0.5));
- CCTK_REAL Gtl312 = 0.5*(PDstandardNth1gt23 + PDstandardNth2gt13 -
- PDstandardNth3gt12);
+ CCTK_REAL_VEC Gtl322 =
+ kmadd(JacPDstandardNth3gt22,ToReal(-0.5),JacPDstandardNth2gt23);
- CCTK_REAL Gtl313 = 0.5*PDstandardNth1gt33;
+ CCTK_REAL_VEC Gtl323 = kmul(JacPDstandardNth2gt33,ToReal(0.5));
- CCTK_REAL Gtl322 = PDstandardNth2gt23 - 0.5*PDstandardNth3gt22;
+ CCTK_REAL_VEC Gtl333 = kmul(JacPDstandardNth3gt33,ToReal(0.5));
- CCTK_REAL Gtl323 = 0.5*PDstandardNth2gt33;
+ CCTK_REAL_VEC Gt111 =
+ kmadd(Gtl111,gtu11,kmadd(Gtl211,gtu12,kmul(Gtl311,gtu13)));
- CCTK_REAL Gtl333 = 0.5*PDstandardNth3gt33;
+ CCTK_REAL_VEC Gt211 =
+ kmadd(Gtl111,gtu12,kmadd(Gtl211,gtu22,kmul(Gtl311,gtu23)));
- CCTK_REAL Gt111 = Gtl111*gtu11 + Gtl211*gtu12 + Gtl311*gtu13;
+ CCTK_REAL_VEC Gt311 =
+ kmadd(Gtl111,gtu13,kmadd(Gtl211,gtu23,kmul(Gtl311,gtu33)));
- CCTK_REAL Gt211 = Gtl111*gtu12 + Gtl211*gtu22 + Gtl311*gtu23;
+ CCTK_REAL_VEC Gt112 =
+ kmadd(Gtl112,gtu11,kmadd(Gtl212,gtu12,kmul(Gtl312,gtu13)));
- CCTK_REAL Gt311 = Gtl111*gtu13 + Gtl211*gtu23 + Gtl311*gtu33;
+ CCTK_REAL_VEC Gt212 =
+ kmadd(Gtl112,gtu12,kmadd(Gtl212,gtu22,kmul(Gtl312,gtu23)));
- CCTK_REAL Gt112 = Gtl112*gtu11 + Gtl212*gtu12 + Gtl312*gtu13;
+ CCTK_REAL_VEC Gt312 =
+ kmadd(Gtl112,gtu13,kmadd(Gtl212,gtu23,kmul(Gtl312,gtu33)));
- CCTK_REAL Gt212 = Gtl112*gtu12 + Gtl212*gtu22 + Gtl312*gtu23;
+ CCTK_REAL_VEC Gt113 =
+ kmadd(Gtl113,gtu11,kmadd(Gtl213,gtu12,kmul(Gtl313,gtu13)));
- CCTK_REAL Gt312 = Gtl112*gtu13 + Gtl212*gtu23 + Gtl312*gtu33;
+ CCTK_REAL_VEC Gt213 =
+ kmadd(Gtl113,gtu12,kmadd(Gtl213,gtu22,kmul(Gtl313,gtu23)));
- CCTK_REAL Gt113 = Gtl113*gtu11 + Gtl213*gtu12 + Gtl313*gtu13;
+ CCTK_REAL_VEC Gt313 =
+ kmadd(Gtl113,gtu13,kmadd(Gtl213,gtu23,kmul(Gtl313,gtu33)));
- CCTK_REAL Gt213 = Gtl113*gtu12 + Gtl213*gtu22 + Gtl313*gtu23;
+ CCTK_REAL_VEC Gt122 =
+ kmadd(Gtl122,gtu11,kmadd(Gtl222,gtu12,kmul(Gtl322,gtu13)));
- CCTK_REAL Gt313 = Gtl113*gtu13 + Gtl213*gtu23 + Gtl313*gtu33;
+ CCTK_REAL_VEC Gt222 =
+ kmadd(Gtl122,gtu12,kmadd(Gtl222,gtu22,kmul(Gtl322,gtu23)));
- CCTK_REAL Gt122 = Gtl122*gtu11 + Gtl222*gtu12 + Gtl322*gtu13;
+ CCTK_REAL_VEC Gt322 =
+ kmadd(Gtl122,gtu13,kmadd(Gtl222,gtu23,kmul(Gtl322,gtu33)));
- CCTK_REAL Gt222 = Gtl122*gtu12 + Gtl222*gtu22 + Gtl322*gtu23;
+ CCTK_REAL_VEC Gt123 =
+ kmadd(Gtl123,gtu11,kmadd(Gtl223,gtu12,kmul(Gtl323,gtu13)));
- CCTK_REAL Gt322 = Gtl122*gtu13 + Gtl222*gtu23 + Gtl322*gtu33;
+ CCTK_REAL_VEC Gt223 =
+ kmadd(Gtl123,gtu12,kmadd(Gtl223,gtu22,kmul(Gtl323,gtu23)));
- CCTK_REAL Gt123 = Gtl123*gtu11 + Gtl223*gtu12 + Gtl323*gtu13;
+ CCTK_REAL_VEC Gt323 =
+ kmadd(Gtl123,gtu13,kmadd(Gtl223,gtu23,kmul(Gtl323,gtu33)));
- CCTK_REAL Gt223 = Gtl123*gtu12 + Gtl223*gtu22 + Gtl323*gtu23;
+ CCTK_REAL_VEC Gt133 =
+ kmadd(Gtl133,gtu11,kmadd(Gtl233,gtu12,kmul(Gtl333,gtu13)));
- CCTK_REAL Gt323 = Gtl123*gtu13 + Gtl223*gtu23 + Gtl323*gtu33;
+ CCTK_REAL_VEC Gt233 =
+ kmadd(Gtl133,gtu12,kmadd(Gtl233,gtu22,kmul(Gtl333,gtu23)));
- CCTK_REAL Gt133 = Gtl133*gtu11 + Gtl233*gtu12 + Gtl333*gtu13;
+ CCTK_REAL_VEC Gt333 =
+ kmadd(Gtl133,gtu13,kmadd(Gtl233,gtu23,kmul(Gtl333,gtu33)));
- CCTK_REAL Gt233 = Gtl133*gtu12 + Gtl233*gtu22 + Gtl333*gtu23;
+ CCTK_REAL_VEC fac1 =
+ IfThen(conformalMethod,kmul(INV(phiL),ToReal(-0.5)),ToReal(1));
- CCTK_REAL Gt333 = Gtl133*gtu13 + Gtl233*gtu23 + Gtl333*gtu33;
+ CCTK_REAL_VEC cdphi1 = kmul(fac1,JacPDstandardNth1phi);
- CCTK_REAL fac1 = IfThen(conformalMethod,-0.5*INV(phiL),1);
+ CCTK_REAL_VEC cdphi2 = kmul(fac1,JacPDstandardNth2phi);
- CCTK_REAL cdphi1 = fac1*PDstandardNth1phi;
+ CCTK_REAL_VEC cdphi3 = kmul(fac1,JacPDstandardNth3phi);
- CCTK_REAL cdphi2 = fac1*PDstandardNth2phi;
+ CCTK_REAL_VEC S1 =
+ kmul(INV(alphaL),kmadd(beta1L,eTxxL,kmadd(beta2L,eTxyL,kmsub(beta3L,eTxzL,eTtxL))));
- CCTK_REAL cdphi3 = fac1*PDstandardNth3phi;
+ CCTK_REAL_VEC S2 =
+ kmul(INV(alphaL),kmadd(beta1L,eTxyL,kmadd(beta2L,eTyyL,kmsub(beta3L,eTyzL,eTtyL))));
- CCTK_REAL S1 = (-eTtxL + beta1L*eTxxL + beta2L*eTxyL +
- beta3L*eTxzL)*INV(alphaL);
+ CCTK_REAL_VEC S3 =
+ kmul(INV(alphaL),kmadd(beta1L,eTxzL,kmadd(beta2L,eTyzL,kmsub(beta3L,eTzzL,eTtzL))));
- CCTK_REAL S2 = (-eTtyL + beta1L*eTxyL + beta2L*eTyyL +
- beta3L*eTyzL)*INV(alphaL);
+ CCTK_REAL_VEC M1L =
+ kmadd(gtu11,JacPDstandardNth1At11,kmadd(gtu22,JacPDstandardNth2At12,kmadd(gtu23,kadd(JacPDstandardNth2At13,JacPDstandardNth3At12),kmadd(gtu33,JacPDstandardNth3At13,kmadd(S1,ToReal(-25.13274122871834590770114706623602307358),kmadd(kmadd(kmadd(At22L,Gt212,kmul(At23L,Gt312)),gtu22,kmadd(kmadd(At13L,Gt112,kmadd(At22L,Gt213,kmadd(At33L,Gt312,kmul(At23L,kadd(Gt212,Gt313))))),gtu23,kmul(kmadd(At13L,Gt113,kmadd(At23L,Gt213,kmul(At33L,Gt313))),gtu33))),ToReal(-1.),kmadd(gtu12,kadd(JacPDstandardNth1At12,kadd(JacPDstandardNth2At11,kmadd(At13L,kmul(Gt312,ToReal(-3.)),kmul(At22L,kmul(Gt211,ToReal(-1.)))))),kmadd(gtu13,kadd(JacPDstandardNth1At13,kadd(JacPDstandardNth3At11,kmadd(At13L,kmul(Gt313,ToReal(-3.)),kmul(At23L,kmul(Gt211,ToReal(-1.)))))),kmadd(Gt311,kmadd(At13L,kmul(gtu11,ToReal(-2.)),kmul(kmadd(At23L,gtu12,kmul(At33L,gtu13)),ToReal(-1.))),kmadd(JacPDstandardNth1trK,ToReal(-0.6666666666666666666666666666666666666667),kmadd(At13L,kmadd(kmadd(Gt322,gtu22,kmul(Gt333,gtu33)),ToReal(-1.),kmadd(cdphi3,kmul(gtu33,ToReal(6.)),kmadd(gtu13,kmadd(Gt111,ToReal(-1.),kmul(cdphi1,ToReal(6.))),kmul(gtu23,kmadd(Gt323,ToReal(-2.),kmul(cdphi2,ToReal(6.))))))),kmadd(At11L,kmadd(Gt123,kmul(gtu23,ToReal(-2.)),kmadd(kmadd(Gt122,gtu22,kmul(Gt133,gtu33)),ToReal(-1.),kmadd(gtu11,kmadd(Gt111,ToReal(-2.),kmul(cdphi1,ToReal(6.))),kmadd(gtu12,kmadd(Gt112,ToReal(-3.),kmul(cdphi2,ToReal(6.))),kmul(gtu13,kmadd(Gt113,ToReal(-3.),kmul(cdphi3,ToReal(6.)))))))),kmul(At12L,kmadd(Gt213,kmul(gtu13,ToReal(-3.)),kmadd(kmadd(Gt211,gtu11,kmul(Gt223,gtu23)),ToReal(-2.),kmadd(Gt233,kmul(gtu33,ToReal(-1.)),kmadd(gtu12,kmadd(Gt212,ToReal(-3.),kmadd(Gt111,ToReal(-1.),kmul(cdphi1,ToReal(6.)))),kmadd(gtu22,kmadd(kadd(Gt112,Gt222),ToReal(-1.),kmul(cdphi2,ToReal(6.))),kmul(gtu23,kmadd(Gt113,ToReal(-1.),kmul(cdphi3,ToReal(6.))))))))))))))))))))));
- CCTK_REAL S3 = (-eTtzL + beta1L*eTxzL + beta2L*eTyzL +
- beta3L*eTzzL)*INV(alphaL);
+ CCTK_REAL_VEC M2L =
+ kmadd(gtu11,JacPDstandardNth1At12,kmadd(gtu12,kadd(JacPDstandardNth1At22,JacPDstandardNth2At12),kmadd(gtu22,JacPDstandardNth2At22,kmadd(gtu33,JacPDstandardNth3At23,kmadd(S2,ToReal(-25.13274122871834590770114706623602307358),kmadd(kmadd(kmadd(At22L,Gt211,kmadd(At23L,Gt311,kmul(At13L,Gt312))),gtu11,kmadd(kmadd(At23L,Gt212,kmul(At33L,Gt312)),gtu13,kmadd(At11L,kmadd(Gt112,gtu11,kmadd(Gt122,gtu12,kmul(Gt123,gtu13))),kmadd(kmadd(At23L,Gt223,kmul(At33L,Gt323)),gtu33,kmul(At13L,kmadd(Gt322,gtu12,kmadd(Gt112,gtu13,kmadd(Gt122,gtu23,kmul(Gt123,gtu33))))))))),ToReal(-1.),kmadd(gtu23,kadd(JacPDstandardNth2At23,kadd(JacPDstandardNth3At22,kmadd(kmadd(At22L,Gt223,kmul(At23L,Gt323)),ToReal(-3.),kmul(kmadd(At23L,Gt222,kmul(At33L,Gt322)),ToReal(-1.))))),kmadd(gtu13,kadd(JacPDstandardNth1At23,kadd(JacPDstandardNth3At12,kmadd(At23L,kmul(Gt313,ToReal(-2.)),kmul(At13L,kmul(Gt323,ToReal(-1.)))))),kmadd(JacPDstandardNth2trK,ToReal(-0.6666666666666666666666666666666666666667),kmadd(At23L,kmadd(Gt312,kmul(gtu12,ToReal(-3.)),kmadd(Gt322,kmul(gtu22,ToReal(-2.)),kmadd(Gt333,kmul(gtu33,ToReal(-1.)),kmul(kmadd(cdphi1,gtu13,kmadd(cdphi2,gtu23,kmul(cdphi3,gtu33))),ToReal(6.))))),kmadd(At22L,kmadd(kmadd(Gt213,gtu13,kmul(Gt222,gtu22)),ToReal(-2.),kmadd(Gt233,kmul(gtu33,ToReal(-1.)),kmadd(kmadd(cdphi2,gtu22,kmul(cdphi3,gtu23)),ToReal(6.),kmul(gtu12,kmadd(Gt212,ToReal(-3.),kmul(cdphi1,ToReal(6.))))))),kmul(At12L,kmadd(Gt123,kmul(gtu23,ToReal(-3.)),kmadd(Gt122,kmul(gtu22,ToReal(-2.)),kmadd(Gt133,kmul(gtu33,ToReal(-1.)),kmadd(gtu11,kmadd(kadd(Gt111,Gt212),ToReal(-1.),kmul(cdphi1,ToReal(6.))),kmadd(gtu12,kmadd(Gt112,ToReal(-3.),kmadd(Gt222,ToReal(-1.),kmul(cdphi2,ToReal(6.)))),kmul(gtu13,kmadd(Gt113,ToReal(-2.),kmadd(Gt223,ToReal(-1.),kmul(cdphi3,ToReal(6.))))))))))))))))))))));
- CCTK_REAL M1L = -2.*((At12L*Gt211 + At13L*Gt311)*gtu11 +
- At11L*Gt123*gtu23) + At12L*((6.*cdphi1 - 1.*Gt111)*gtu12 -
- 3.*Gt213*gtu13 + 6.*(cdphi2*gtu22 + cdphi3*gtu23) - 1.*Gt233*gtu33) -
- 1.*((At22L*Gt212 + At12L*(Gt112 + Gt222) + At23L*Gt312)*gtu22 +
- (At13L*Gt112 + At12L*Gt113 + At23L*Gt212)*gtu23 + (At13L*Gt113 +
- At23L*Gt213 + At33L*Gt313)*gtu33) + At11L*((6.*cdphi1 - 2.*Gt111)*gtu11
- + 6.*(cdphi2*gtu12 + cdphi3*gtu13) - 1.*(Gt122*gtu22 + Gt133*gtu33)) +
- At13L*((6.*cdphi1 - 1.*Gt111)*gtu13 + 6.*(cdphi2*gtu23 + cdphi3*gtu33)
- - 1.*(Gt322*gtu22 + Gt333*gtu33)) + gtu11*PDstandardNth1At11 -
- 0.6666666666666666666666666666666666666667*PDstandardNth1trK +
- gtu12*(-1.*(At22L*Gt211 + At23L*Gt311) - 3.*(At11L*Gt112 + At12L*Gt212
- + At13L*Gt312) + PDstandardNth1At12 + PDstandardNth2At11) +
- gtu22*PDstandardNth2At12 + gtu13*(-1.*(At23L*Gt211 + At33L*Gt311) -
- 3.*(At11L*Gt113 + At13L*Gt313) + PDstandardNth1At13 +
- PDstandardNth3At11) + gtu23*(-1.*(At22L*Gt213 + At33L*Gt312 +
- At23L*Gt313) - 2.*(At12L*Gt223 + At13L*Gt323) + PDstandardNth2At13 +
- PDstandardNth3At12) + gtu33*PDstandardNth3At13 -
- 25.13274122871834590770114706623602307358*S1;
+ CCTK_REAL_VEC M3L =
+ kmadd(gtu11,JacPDstandardNth1At13,kmadd(gtu22,JacPDstandardNth2At23,kmadd(gtu13,kadd(JacPDstandardNth1At33,JacPDstandardNth3At13),kmadd(gtu33,JacPDstandardNth3At33,kmadd(S3,ToReal(-25.13274122871834590770114706623602307358),kmadd(kmadd(kmadd(At23L,Gt211,kmadd(At12L,Gt213,kmul(At33L,Gt311))),gtu11,kmadd(kmadd(At22L,Gt213,kmul(At12L,kadd(Gt113,Gt223))),gtu12,kmadd(At11L,kmadd(Gt113,gtu11,kmadd(Gt123,gtu12,kmul(Gt133,gtu13))),kmadd(kmadd(At23L,Gt222,kmul(At22L,Gt223)),gtu22,kmul(At12L,kmadd(Gt233,gtu13,kmadd(Gt123,gtu22,kmul(Gt133,gtu23)))))))),ToReal(-1.),kmadd(gtu12,kadd(JacPDstandardNth1At23,kadd(JacPDstandardNth2At13,kmadd(At33L,kmul(Gt312,ToReal(-2.)),kmul(At23L,kmul(Gt313,ToReal(-1.)))))),kmadd(gtu23,kadd(JacPDstandardNth2At33,kadd(JacPDstandardNth3At23,kmadd(kmadd(At23L,Gt223,kmul(At33L,Gt323)),ToReal(-3.),kmul(kmadd(At22L,Gt233,kmul(At23L,Gt333)),ToReal(-1.))))),kmadd(JacPDstandardNth3trK,ToReal(-0.6666666666666666666666666666666666666667),kmadd(At33L,kmadd(Gt333,kmul(gtu33,ToReal(-2.)),kmadd(Gt322,kmul(gtu22,ToReal(-1.)),kmadd(kmadd(cdphi2,gtu23,kmul(cdphi3,gtu33)),ToReal(6.),kmul(gtu13,kmadd(Gt313,ToReal(-3.),kmul(cdphi1,ToReal(6.))))))),kmadd(At23L,kmadd(Gt213,kmul(gtu13,ToReal(-3.)),kmadd(Gt233,kmul(gtu33,ToReal(-2.)),kmadd(cdphi3,kmul(gtu23,ToReal(6.)),kmadd(gtu12,kmadd(Gt212,ToReal(-2.),kmul(cdphi1,ToReal(6.))),kmul(gtu22,kmadd(Gt323,ToReal(-1.),kmul(cdphi2,ToReal(6.)))))))),kmul(At13L,kmadd(Gt123,kmul(gtu23,ToReal(-3.)),kmadd(Gt133,kmul(gtu33,ToReal(-2.)),kmadd(Gt122,kmul(gtu22,ToReal(-1.)),kmadd(gtu11,kmadd(kadd(Gt111,Gt313),ToReal(-1.),kmul(cdphi1,ToReal(6.))),kmadd(gtu12,kmadd(Gt112,ToReal(-2.),kmadd(Gt323,ToReal(-1.),kmul(cdphi2,ToReal(6.)))),kmul(gtu13,kmadd(Gt113,ToReal(-3.),kmadd(Gt333,ToReal(-1.),kmul(cdphi3,ToReal(6.))))))))))))))))))))));
- CCTK_REAL M2L = At12L*((6.*cdphi1 - 1.*Gt111)*gtu11 + 6.*(cdphi2*gtu12
- + cdphi3*gtu13) - 2.*Gt122*gtu22 - 3.*Gt123*gtu23 - 1.*Gt133*gtu33) +
- At22L*((6.*cdphi2 - 2.*Gt222)*gtu22 + 6.*cdphi3*gtu23 - 1.*Gt233*gtu33)
- + At23L*(-2.*Gt322*gtu22 - 1.*Gt333*gtu33 + 6.*(cdphi2*gtu23 +
- cdphi3*gtu33)) - 1.*((At11L*Gt112 + At22L*Gt211 + At12L*Gt212 +
- At23L*Gt311 + At13L*Gt312)*gtu11 + Gt122*(At11L*gtu12 + At13L*gtu23) +
- (At23L*Gt223 + At33L*Gt323)*gtu33 + At13L*(Gt112*gtu13 + Gt123*gtu33))
- + gtu11*PDstandardNth1At12 + gtu12*(At22L*(6.*cdphi1 - 3.*Gt212) +
- At12L*(-3.*Gt112 - 1.*Gt222) - 3.*At23L*Gt312 - 1.*At13L*Gt322 +
- PDstandardNth1At22 + PDstandardNth2At12) + gtu22*PDstandardNth2At22 -
- 0.6666666666666666666666666666666666666667*PDstandardNth2trK +
- gtu13*(-2.*(At12L*Gt113 + At22L*Gt213) + At23L*(6.*cdphi1 - 1.*Gt212 -
- 2.*Gt313) - 1.*(At11L*Gt123 + At12L*Gt223 + At33L*Gt312 + At13L*Gt323)
- + PDstandardNth1At23 + PDstandardNth3At12) + gtu23*(-1.*(At23L*Gt222 +
- At33L*Gt322) - 3.*(At22L*Gt223 + At23L*Gt323) + PDstandardNth2At23 +
- PDstandardNth3At22) + gtu33*PDstandardNth3At23 -
- 25.13274122871834590770114706623602307358*S2;
+ CCTK_REAL_VEC cSL = klog(detgt);
- CCTK_REAL M3L = -1.*((At11L*Gt113 + At23L*Gt211 + At12L*Gt213 +
- At33L*Gt311)*gtu11 + (At22L*Gt223 + At33L*Gt322 + At23L*Gt323)*gtu22 +
- At12L*(Gt113*gtu12 + Gt123*gtu22) + Gt133*(At11L*gtu13 + At12L*gtu23))
- + At13L*((6.*cdphi1 - 1.*(Gt111 + Gt313))*gtu11 + 6.*(cdphi2*gtu12 +
- cdphi3*gtu13) - 1.*Gt122*gtu22 - 3.*Gt123*gtu23 - 2.*Gt133*gtu33) +
- At23L*((6.*cdphi2 - 1.*Gt222)*gtu22 + 6.*cdphi3*gtu23 - 2.*Gt233*gtu33)
- + gtu11*PDstandardNth1At13 + gtu12*(-2.*(At13L*Gt112 + At33L*Gt312) +
- At23L*(6.*cdphi1 - 2.*Gt212 - 1.*Gt313) - 1.*(At11L*Gt123 + At22L*Gt213
- + At12L*Gt223 + At13L*Gt323) + PDstandardNth1At23 + PDstandardNth2At13)
- + gtu22*PDstandardNth2At23 + gtu13*(-3.*(At13L*Gt113 + At23L*Gt213) +
- At33L*(6.*cdphi1 - 3.*Gt313) - 1.*(At12L*Gt233 + At13L*Gt333) +
- PDstandardNth1At33 + PDstandardNth3At13) + gtu23*(-1.*At22L*Gt233 +
- At33L*(6.*cdphi2 - 3.*Gt323) + At23L*(-3.*Gt223 - 1.*Gt333) +
- PDstandardNth2At33 + PDstandardNth3At23) + gtu33*(At33L*(6.*cdphi3 -
- 2.*Gt333) + PDstandardNth3At33) -
- 0.6666666666666666666666666666666666666667*PDstandardNth3trK -
- 25.13274122871834590770114706623602307358*S3;
-
- CCTK_REAL cSL = Log(detgt);
-
- CCTK_REAL cXt1L = Gt111*gtu11 + Gt122*gtu22 + 2*(Gt112*gtu12 +
- Gt113*gtu13 + Gt123*gtu23) + Gt133*gtu33 - Xt1L;
-
- CCTK_REAL cXt2L = Gt211*gtu11 + Gt222*gtu22 + 2*(Gt212*gtu12 +
- Gt213*gtu13 + Gt223*gtu23) + Gt233*gtu33 - Xt2L;
-
- CCTK_REAL cXt3L = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu12 +
- Gt313*gtu13 + Gt323*gtu23) + Gt333*gtu33 - Xt3L;
-
- CCTK_REAL cAL = At11L*gtu11 + At22L*gtu22 + 2*(At12L*gtu12 +
- At13L*gtu13 + At23L*gtu23) + At33L*gtu33;
-
- /* Copy local copies back to grid functions */
- cA[index] = cAL;
- cS[index] = cSL;
- cXt1[index] = cXt1L;
- cXt2[index] = cXt2L;
- cXt3[index] = cXt3L;
- M1[index] = M1L;
- M2[index] = M2L;
- M3[index] = M3L;
+ 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)))));
+
+ /* 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(cA[index],cAL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(cS[index],cSL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(cXt1[index],cXt1L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(cXt2[index],cXt2L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(cXt3[index],cXt3L,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(cA[index],cAL,elt_count);
+ vec_store_nta_partial_hi(cS[index],cSL,elt_count);
+ vec_store_nta_partial_hi(cXt1[index],cXt1L,elt_count);
+ vec_store_nta_partial_hi(cXt2[index],cXt2L,elt_count);
+ vec_store_nta_partial_hi(cXt3[index],cXt3L,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(cA[index],cAL,elt_count);
+ vec_store_nta_partial_lo(cS[index],cSL,elt_count);
+ vec_store_nta_partial_lo(cXt1[index],cXt1L,elt_count);
+ vec_store_nta_partial_lo(cXt2[index],cXt2L,elt_count);
+ vec_store_nta_partial_lo(cXt3[index],cXt3L,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(cA[index],cAL);
+ vec_store_nta(cS[index],cSL);
+ vec_store_nta(cXt1[index],cXt1L);
+ vec_store_nta(cXt2[index],cXt2L);
+ vec_store_nta(cXt3[index],cXt3L);
+ vec_store_nta(M1[index],M1L);
+ vec_store_nta(M2[index],M2L);
+ vec_store_nta(M3[index],M3L);
}
- LC_ENDLOOP3 (ML_BSSN_UPW_constraints2);
+ LC_ENDLOOP3VEC (ML_BSSN_UPW_constraints2);
}
extern "C" void ML_BSSN_UPW_constraints2(CCTK_ARGUMENTS)
@@ -409,5 +995,43 @@ extern "C" void ML_BSSN_UPW_constraints2(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_UPW_constraints2_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_UPW_constraints2_calc_every != ML_BSSN_UPW_constraints2_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN_UPW::ML_cons_detg","ML_BSSN_UPW::ML_cons_Gamma","ML_BSSN_UPW::ML_cons_traceA","ML_BSSN_UPW::ML_curv","ML_BSSN_UPW::ML_Gamma","ML_BSSN_UPW::ML_lapse","ML_BSSN_UPW::ML_log_confac","ML_BSSN_UPW::ML_metric","ML_BSSN_UPW::ML_mom","ML_BSSN_UPW::ML_shift","ML_BSSN_UPW::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_UPW_constraints2", 11, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_UPW_constraints2", 1, 1, 1);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_UPW_constraints2", 2, 2, 2);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_UPW_constraints2", 3, 3, 3);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_UPW_constraints2", 4, 4, 4);
+ break;
+ }
+
GenericFD_LoopOverInterior(cctkGH, &ML_BSSN_UPW_constraints2_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_UPW_constraints2_Body");
+ }
}
diff --git a/ML_BSSN_UPW/src/ML_BSSN_UPW_convertFromADMBase.cc b/ML_BSSN_UPW/src/ML_BSSN_UPW_convertFromADMBase.cc
index 60a907b..5c3413c 100644
--- a/ML_BSSN_UPW/src/ML_BSSN_UPW_convertFromADMBase.cc
+++ b/ML_BSSN_UPW/src/ML_BSSN_UPW_convertFromADMBase.cc
@@ -13,15 +13,16 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
-static void ML_BSSN_UPW_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_UPW_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;
@@ -29,20 +30,6 @@ static void ML_BSSN_UPW_convertFromADMBase_Body(cGH const * restrict const cctkG
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_UPW_convertFromADMBase_Body");
- }
-
- if (cctk_iteration % ML_BSSN_UPW_convertFromADMBase_calc_every != ML_BSSN_UPW_convertFromADMBase_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ADMBase::curv","ADMBase::lapse","ADMBase::metric","ADMBase::shift","ML_BSSN_UPW::ML_curv","ML_BSSN_UPW::ML_lapse","ML_BSSN_UPW::ML_log_confac","ML_BSSN_UPW::ML_metric","ML_BSSN_UPW::ML_shift","ML_BSSN_UPW::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_UPW_convertFromADMBase", 10, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -52,181 +39,389 @@ static void ML_BSSN_UPW_convertFromADMBase_Body(cGH const * restrict const cctkG
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const p1o24dx = 0.0416666666666666666666666666667*INV(dx);
- CCTK_REAL const p1o24dy = 0.0416666666666666666666666666667*INV(dy);
- CCTK_REAL const p1o24dz = 0.0416666666666666666666666666667*INV(dz);
- CCTK_REAL const p1o64dx = 0.015625*INV(dx);
- CCTK_REAL const p1o64dy = 0.015625*INV(dy);
- CCTK_REAL const p1o64dz = 0.015625*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_UPW_convertFromADMBase,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_UPW_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 alpL = alp[index];
- CCTK_REAL betaxL = betax[index];
- CCTK_REAL betayL = betay[index];
- CCTK_REAL betazL = betaz[index];
- CCTK_REAL gxxL = gxx[index];
- CCTK_REAL gxyL = gxy[index];
- CCTK_REAL gxzL = gxz[index];
- CCTK_REAL gyyL = gyy[index];
- CCTK_REAL gyzL = gyz[index];
- CCTK_REAL gzzL = gzz[index];
- CCTK_REAL kxxL = kxx[index];
- CCTK_REAL kxyL = kxy[index];
- CCTK_REAL kxzL = kxz[index];
- CCTK_REAL kyyL = kyy[index];
- CCTK_REAL kyzL = kyz[index];
- CCTK_REAL kzzL = kzz[index];
- CCTK_REAL phiL = phi[index];
- CCTK_REAL trKL = trK[index];
+ 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 g11 = gxxL;
+ CCTK_REAL_VEC g11 = gxxL;
- CCTK_REAL g12 = gxyL;
+ CCTK_REAL_VEC g12 = gxyL;
- CCTK_REAL g13 = gxzL;
+ CCTK_REAL_VEC g13 = gxzL;
- CCTK_REAL g22 = gyyL;
+ CCTK_REAL_VEC g22 = gyyL;
- CCTK_REAL g23 = gyzL;
+ CCTK_REAL_VEC g23 = gyzL;
- CCTK_REAL g33 = gzzL;
+ CCTK_REAL_VEC g33 = gzzL;
- CCTK_REAL detg = 2*g12*g13*g23 + g33*(g11*g22 - SQR(g12)) -
- g22*SQR(g13) - g11*SQR(g23);
+ 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 gu11 = INV(detg)*(g22*g33 - SQR(g23));
+ CCTK_REAL_VEC gu11 = kmul(INV(detg),kmsub(g22,g33,SQR(g23)));
- CCTK_REAL gu12 = (g13*g23 - g12*g33)*INV(detg);
+ CCTK_REAL_VEC gu12 = kmul(INV(detg),kmsub(g13,g23,kmul(g12,g33)));
- CCTK_REAL gu13 = (-(g13*g22) + g12*g23)*INV(detg);
+ CCTK_REAL_VEC gu13 = kmul(INV(detg),kmsub(g12,g23,kmul(g13,g22)));
- CCTK_REAL gu22 = INV(detg)*(g11*g33 - SQR(g13));
+ CCTK_REAL_VEC gu22 = kmul(INV(detg),kmsub(g11,g33,SQR(g13)));
- CCTK_REAL gu23 = (g12*g13 - g11*g23)*INV(detg);
+ CCTK_REAL_VEC gu23 = kmul(INV(detg),kmsub(g12,g13,kmul(g11,g23)));
- CCTK_REAL gu33 = INV(detg)*(g11*g22 - SQR(g12));
+ CCTK_REAL_VEC gu33 = kmul(INV(detg),kmsub(g11,g22,SQR(g12)));
- CCTK_REAL em4phi;
+ CCTK_REAL_VEC em4phi;
if (conformalMethod)
{
- phiL = pow(detg,-0.166666666666666666666666666667);
+ phiL = kpow(detg,-0.166666666666666666666666666667);
em4phi = SQR(phiL);
}
else
{
- phiL = 0.0833333333333333333333333333333*Log(detg);
+ phiL = kmul(klog(detg),ToReal(0.0833333333333333333333333333333));
- em4phi = exp(-4*phiL);
+ em4phi = kexp(kmul(phiL,ToReal(-4)));
}
- CCTK_REAL gt11L = em4phi*g11;
+ CCTK_REAL_VEC gt11L = kmul(em4phi,g11);
+
+ CCTK_REAL_VEC gt12L = kmul(em4phi,g12);
- CCTK_REAL gt12L = em4phi*g12;
+ CCTK_REAL_VEC gt13L = kmul(em4phi,g13);
- CCTK_REAL gt13L = em4phi*g13;
+ CCTK_REAL_VEC gt22L = kmul(em4phi,g22);
- CCTK_REAL gt22L = em4phi*g22;
+ CCTK_REAL_VEC gt23L = kmul(em4phi,g23);
- CCTK_REAL gt23L = em4phi*g23;
+ CCTK_REAL_VEC gt33L = kmul(em4phi,g33);
- CCTK_REAL gt33L = em4phi*g33;
+ trKL =
+ kmadd(gu11,kxxL,kmadd(gu22,kyyL,kmadd(gu33,kzzL,kmul(kmadd(gu12,kxyL,kmadd(gu13,kxzL,kmul(gu23,kyzL))),ToReal(2)))));
- trKL = gu11*kxxL + gu22*kyyL + 2*(gu12*kxyL + gu13*kxzL + gu23*kyzL) +
- gu33*kzzL;
+ CCTK_REAL_VEC At11L =
+ kmul(em4phi,kmadd(g11,kmul(trKL,ToReal(-0.333333333333333333333333333333)),kxxL));
- CCTK_REAL At11L = em4phi*(kxxL -
- 0.333333333333333333333333333333*g11*trKL);
+ CCTK_REAL_VEC At12L =
+ kmul(em4phi,kmadd(g12,kmul(trKL,ToReal(-0.333333333333333333333333333333)),kxyL));
- CCTK_REAL At12L = em4phi*(kxyL -
- 0.333333333333333333333333333333*g12*trKL);
+ CCTK_REAL_VEC At13L =
+ kmul(em4phi,kmadd(g13,kmul(trKL,ToReal(-0.333333333333333333333333333333)),kxzL));
- CCTK_REAL At13L = em4phi*(kxzL -
- 0.333333333333333333333333333333*g13*trKL);
+ CCTK_REAL_VEC At22L =
+ kmul(em4phi,kmadd(g22,kmul(trKL,ToReal(-0.333333333333333333333333333333)),kyyL));
- CCTK_REAL At22L = em4phi*(kyyL -
- 0.333333333333333333333333333333*g22*trKL);
+ CCTK_REAL_VEC At23L =
+ kmul(em4phi,kmadd(g23,kmul(trKL,ToReal(-0.333333333333333333333333333333)),kyzL));
- CCTK_REAL At23L = em4phi*(kyzL -
- 0.333333333333333333333333333333*g23*trKL);
+ CCTK_REAL_VEC At33L =
+ kmul(em4phi,kmadd(g33,kmul(trKL,ToReal(-0.333333333333333333333333333333)),kzzL));
- CCTK_REAL At33L = em4phi*(kzzL -
- 0.333333333333333333333333333333*g33*trKL);
+ CCTK_REAL_VEC alphaL = alpL;
- CCTK_REAL alphaL = alpL;
+ CCTK_REAL_VEC beta1L = betaxL;
- CCTK_REAL beta1L = betaxL;
+ CCTK_REAL_VEC beta2L = betayL;
- CCTK_REAL beta2L = betayL;
+ CCTK_REAL_VEC beta3L = betazL;
- CCTK_REAL beta3L = betazL;
+ /* If necessary, store only partial vectors after the first iteration */
- /* Copy local copies back to grid functions */
- alpha[index] = alphaL;
- At11[index] = At11L;
- At12[index] = At12L;
- At13[index] = At13L;
- At22[index] = At22L;
- At23[index] = At23L;
- At33[index] = At33L;
- beta1[index] = beta1L;
- beta2[index] = beta2L;
- beta3[index] = beta3L;
- gt11[index] = gt11L;
- gt12[index] = gt12L;
- gt13[index] = gt13L;
- gt22[index] = gt22L;
- gt23[index] = gt23L;
- gt33[index] = gt33L;
- phi[index] = phiL;
- trK[index] = trKL;
+ 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(At11[index],At11L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At12[index],At12L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At13[index],At13L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At22[index],At22L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At23[index],At23L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At33[index],At33L,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(gt11[index],gt11L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt12[index],gt12L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt13[index],gt13L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt22[index],gt22L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt23[index],gt23L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(gt33[index],gt33L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(phi[index],phiL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(trK[index],trKL,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(At11[index],At11L,elt_count);
+ vec_store_nta_partial_hi(At12[index],At12L,elt_count);
+ vec_store_nta_partial_hi(At13[index],At13L,elt_count);
+ vec_store_nta_partial_hi(At22[index],At22L,elt_count);
+ vec_store_nta_partial_hi(At23[index],At23L,elt_count);
+ vec_store_nta_partial_hi(At33[index],At33L,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(gt11[index],gt11L,elt_count);
+ vec_store_nta_partial_hi(gt12[index],gt12L,elt_count);
+ vec_store_nta_partial_hi(gt13[index],gt13L,elt_count);
+ vec_store_nta_partial_hi(gt22[index],gt22L,elt_count);
+ vec_store_nta_partial_hi(gt23[index],gt23L,elt_count);
+ vec_store_nta_partial_hi(gt33[index],gt33L,elt_count);
+ vec_store_nta_partial_hi(phi[index],phiL,elt_count);
+ vec_store_nta_partial_hi(trK[index],trKL,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(At11[index],At11L,elt_count);
+ vec_store_nta_partial_lo(At12[index],At12L,elt_count);
+ vec_store_nta_partial_lo(At13[index],At13L,elt_count);
+ vec_store_nta_partial_lo(At22[index],At22L,elt_count);
+ vec_store_nta_partial_lo(At23[index],At23L,elt_count);
+ vec_store_nta_partial_lo(At33[index],At33L,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(gt11[index],gt11L,elt_count);
+ vec_store_nta_partial_lo(gt12[index],gt12L,elt_count);
+ vec_store_nta_partial_lo(gt13[index],gt13L,elt_count);
+ vec_store_nta_partial_lo(gt22[index],gt22L,elt_count);
+ vec_store_nta_partial_lo(gt23[index],gt23L,elt_count);
+ vec_store_nta_partial_lo(gt33[index],gt33L,elt_count);
+ vec_store_nta_partial_lo(phi[index],phiL,elt_count);
+ vec_store_nta_partial_lo(trK[index],trKL,elt_count);
+ break;
+ }
+ vec_store_nta(alpha[index],alphaL);
+ vec_store_nta(At11[index],At11L);
+ vec_store_nta(At12[index],At12L);
+ vec_store_nta(At13[index],At13L);
+ vec_store_nta(At22[index],At22L);
+ vec_store_nta(At23[index],At23L);
+ vec_store_nta(At33[index],At33L);
+ vec_store_nta(beta1[index],beta1L);
+ vec_store_nta(beta2[index],beta2L);
+ vec_store_nta(beta3[index],beta3L);
+ vec_store_nta(gt11[index],gt11L);
+ vec_store_nta(gt12[index],gt12L);
+ vec_store_nta(gt13[index],gt13L);
+ vec_store_nta(gt22[index],gt22L);
+ vec_store_nta(gt23[index],gt23L);
+ vec_store_nta(gt33[index],gt33L);
+ vec_store_nta(phi[index],phiL);
+ vec_store_nta(trK[index],trKL);
}
- LC_ENDLOOP3 (ML_BSSN_UPW_convertFromADMBase);
+ LC_ENDLOOP3VEC (ML_BSSN_UPW_convertFromADMBase);
}
extern "C" void ML_BSSN_UPW_convertFromADMBase(CCTK_ARGUMENTS)
@@ -234,5 +429,39 @@ extern "C" void ML_BSSN_UPW_convertFromADMBase(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_UPW_convertFromADMBase_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_UPW_convertFromADMBase_calc_every != ML_BSSN_UPW_convertFromADMBase_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ADMBase::curv","ADMBase::lapse","ADMBase::metric","ADMBase::shift","ML_BSSN_UPW::ML_curv","ML_BSSN_UPW::ML_lapse","ML_BSSN_UPW::ML_log_confac","ML_BSSN_UPW::ML_metric","ML_BSSN_UPW::ML_shift","ML_BSSN_UPW::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_UPW_convertFromADMBase", 10, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverEverything(cctkGH, &ML_BSSN_UPW_convertFromADMBase_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_UPW_convertFromADMBase_Body");
+ }
}
diff --git a/ML_BSSN_UPW/src/ML_BSSN_UPW_convertFromADMBaseGamma.cc b/ML_BSSN_UPW/src/ML_BSSN_UPW_convertFromADMBaseGamma.cc
index a450d6b..d546630 100644
--- a/ML_BSSN_UPW/src/ML_BSSN_UPW_convertFromADMBaseGamma.cc
+++ b/ML_BSSN_UPW/src/ML_BSSN_UPW_convertFromADMBaseGamma.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_UPW_convertFromADMBaseGamma_SelectBCs(CCTK_ARGUMENTS)
{
@@ -39,7 +40,7 @@ extern "C" void ML_BSSN_UPW_convertFromADMBaseGamma_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void ML_BSSN_UPW_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_UPW_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;
@@ -47,21 +48,6 @@ static void ML_BSSN_UPW_convertFromADMBaseGamma_Body(cGH const * restrict const
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_UPW_convertFromADMBaseGamma_Body");
- }
-
- if (cctk_iteration % ML_BSSN_UPW_convertFromADMBaseGamma_calc_every != ML_BSSN_UPW_convertFromADMBaseGamma_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ADMBase::dtlapse","ADMBase::dtshift","grid::coordinates","Grid::coordinates","ML_BSSN_UPW::ML_dtlapse","ML_BSSN_UPW::ML_dtshift","ML_BSSN_UPW::ML_Gamma","ML_BSSN_UPW::ML_lapse","ML_BSSN_UPW::ML_metric","ML_BSSN_UPW::ML_shift"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_UPW_convertFromADMBaseGamma", 10, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_UPW_convertFromADMBaseGamma", 3, 3, 3);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -71,90 +57,367 @@ static void ML_BSSN_UPW_convertFromADMBaseGamma_Body(cGH const * restrict const
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const p1o24dx = 0.0416666666666666666666666666667*INV(dx);
- CCTK_REAL const p1o24dy = 0.0416666666666666666666666666667*INV(dy);
- CCTK_REAL const p1o24dz = 0.0416666666666666666666666666667*INV(dz);
- CCTK_REAL const p1o64dx = 0.015625*INV(dx);
- CCTK_REAL const p1o64dy = 0.015625*INV(dy);
- CCTK_REAL const p1o64dz = 0.015625*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_UPW_convertFromADMBaseGamma,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_UPW_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 alphaL = alpha[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL dtalpL = dtalp[index];
- CCTK_REAL dtbetaxL = dtbetax[index];
- CCTK_REAL dtbetayL = dtbetay[index];
- CCTK_REAL dtbetazL = dtbetaz[index];
- CCTK_REAL gt11L = gt11[index];
- CCTK_REAL gt12L = gt12[index];
- CCTK_REAL gt13L = gt13[index];
- CCTK_REAL gt22L = gt22[index];
- CCTK_REAL gt23L = gt23[index];
- CCTK_REAL gt33L = gt33[index];
- CCTK_REAL rL = r[index];
-
+ 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 const PDstandardNth1gt11 = PDstandardNth1(&gt11[index]);
- CCTK_REAL const PDstandardNth2gt11 = PDstandardNth2(&gt11[index]);
- CCTK_REAL const PDstandardNth3gt11 = PDstandardNth3(&gt11[index]);
- CCTK_REAL const PDstandardNth1gt12 = PDstandardNth1(&gt12[index]);
- CCTK_REAL const PDstandardNth2gt12 = PDstandardNth2(&gt12[index]);
- CCTK_REAL const PDstandardNth3gt12 = PDstandardNth3(&gt12[index]);
- CCTK_REAL const PDstandardNth1gt13 = PDstandardNth1(&gt13[index]);
- CCTK_REAL const PDstandardNth2gt13 = PDstandardNth2(&gt13[index]);
- CCTK_REAL const PDstandardNth3gt13 = PDstandardNth3(&gt13[index]);
- CCTK_REAL const PDstandardNth1gt22 = PDstandardNth1(&gt22[index]);
- CCTK_REAL const PDstandardNth2gt22 = PDstandardNth2(&gt22[index]);
- CCTK_REAL const PDstandardNth3gt22 = PDstandardNth3(&gt22[index]);
- CCTK_REAL const PDstandardNth1gt23 = PDstandardNth1(&gt23[index]);
- CCTK_REAL const PDstandardNth2gt23 = PDstandardNth2(&gt23[index]);
- CCTK_REAL const PDstandardNth3gt23 = PDstandardNth3(&gt23[index]);
- CCTK_REAL const PDstandardNth1gt33 = PDstandardNth1(&gt33[index]);
- CCTK_REAL const PDstandardNth2gt33 = PDstandardNth2(&gt33[index]);
- CCTK_REAL const PDstandardNth3gt33 = PDstandardNth3(&gt33[index]);
+ CCTK_REAL_VEC PDupwindNth1alpha;
+ CCTK_REAL_VEC PDupwindNth2alpha;
+ CCTK_REAL_VEC PDupwindNth3alpha;
+ CCTK_REAL_VEC PDupwindNth1beta1;
+ CCTK_REAL_VEC PDupwindNth2beta1;
+ CCTK_REAL_VEC PDupwindNth3beta1;
+ CCTK_REAL_VEC PDupwindNth1beta2;
+ CCTK_REAL_VEC PDupwindNth2beta2;
+ CCTK_REAL_VEC PDupwindNth3beta2;
+ CCTK_REAL_VEC PDupwindNth1beta3;
+ CCTK_REAL_VEC PDupwindNth2beta3;
+ CCTK_REAL_VEC PDupwindNth3beta3;
+ 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:
+ PDupwindNth1alpha = PDupwindNthfdOrder21(&alpha[index]);
+ PDupwindNth2alpha = PDupwindNthfdOrder22(&alpha[index]);
+ PDupwindNth3alpha = PDupwindNthfdOrder23(&alpha[index]);
+ PDupwindNth1beta1 = PDupwindNthfdOrder21(&beta1[index]);
+ PDupwindNth2beta1 = PDupwindNthfdOrder22(&beta1[index]);
+ PDupwindNth3beta1 = PDupwindNthfdOrder23(&beta1[index]);
+ PDupwindNth1beta2 = PDupwindNthfdOrder21(&beta2[index]);
+ PDupwindNth2beta2 = PDupwindNthfdOrder22(&beta2[index]);
+ PDupwindNth3beta2 = PDupwindNthfdOrder23(&beta2[index]);
+ PDupwindNth1beta3 = PDupwindNthfdOrder21(&beta3[index]);
+ PDupwindNth2beta3 = PDupwindNthfdOrder22(&beta3[index]);
+ PDupwindNth3beta3 = PDupwindNthfdOrder23(&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:
+ PDupwindNth1alpha = PDupwindNthfdOrder41(&alpha[index]);
+ PDupwindNth2alpha = PDupwindNthfdOrder42(&alpha[index]);
+ PDupwindNth3alpha = PDupwindNthfdOrder43(&alpha[index]);
+ PDupwindNth1beta1 = PDupwindNthfdOrder41(&beta1[index]);
+ PDupwindNth2beta1 = PDupwindNthfdOrder42(&beta1[index]);
+ PDupwindNth3beta1 = PDupwindNthfdOrder43(&beta1[index]);
+ PDupwindNth1beta2 = PDupwindNthfdOrder41(&beta2[index]);
+ PDupwindNth2beta2 = PDupwindNthfdOrder42(&beta2[index]);
+ PDupwindNth3beta2 = PDupwindNthfdOrder43(&beta2[index]);
+ PDupwindNth1beta3 = PDupwindNthfdOrder41(&beta3[index]);
+ PDupwindNth2beta3 = PDupwindNthfdOrder42(&beta3[index]);
+ PDupwindNth3beta3 = PDupwindNthfdOrder43(&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:
+ PDupwindNth1alpha = PDupwindNthfdOrder61(&alpha[index]);
+ PDupwindNth2alpha = PDupwindNthfdOrder62(&alpha[index]);
+ PDupwindNth3alpha = PDupwindNthfdOrder63(&alpha[index]);
+ PDupwindNth1beta1 = PDupwindNthfdOrder61(&beta1[index]);
+ PDupwindNth2beta1 = PDupwindNthfdOrder62(&beta1[index]);
+ PDupwindNth3beta1 = PDupwindNthfdOrder63(&beta1[index]);
+ PDupwindNth1beta2 = PDupwindNthfdOrder61(&beta2[index]);
+ PDupwindNth2beta2 = PDupwindNthfdOrder62(&beta2[index]);
+ PDupwindNth3beta2 = PDupwindNthfdOrder63(&beta2[index]);
+ PDupwindNth1beta3 = PDupwindNthfdOrder61(&beta3[index]);
+ PDupwindNth2beta3 = PDupwindNthfdOrder62(&beta3[index]);
+ PDupwindNth3beta3 = PDupwindNthfdOrder63(&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:
+ PDupwindNth1alpha = PDupwindNthfdOrder81(&alpha[index]);
+ PDupwindNth2alpha = PDupwindNthfdOrder82(&alpha[index]);
+ PDupwindNth3alpha = PDupwindNthfdOrder83(&alpha[index]);
+ PDupwindNth1beta1 = PDupwindNthfdOrder81(&beta1[index]);
+ PDupwindNth2beta1 = PDupwindNthfdOrder82(&beta1[index]);
+ PDupwindNth3beta1 = PDupwindNthfdOrder83(&beta1[index]);
+ PDupwindNth1beta2 = PDupwindNthfdOrder81(&beta2[index]);
+ PDupwindNth2beta2 = PDupwindNthfdOrder82(&beta2[index]);
+ PDupwindNth3beta2 = PDupwindNthfdOrder83(&beta2[index]);
+ PDupwindNth1beta3 = PDupwindNthfdOrder81(&beta3[index]);
+ PDupwindNth2beta3 = PDupwindNthfdOrder82(&beta3[index]);
+ PDupwindNth3beta3 = PDupwindNthfdOrder83(&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);
@@ -163,150 +426,356 @@ static void ML_BSSN_UPW_convertFromADMBaseGamma_Body(cGH const * restrict const
ptrdiff_t dir3 = Sign(beta3L);
- CCTK_REAL detgt = 1;
+ 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 JacPDupwindNth1alpha;
+ CCTK_REAL_VEC JacPDupwindNth1beta1;
+ CCTK_REAL_VEC JacPDupwindNth1beta2;
+ CCTK_REAL_VEC JacPDupwindNth1beta3;
+ CCTK_REAL_VEC JacPDupwindNth2alpha;
+ CCTK_REAL_VEC JacPDupwindNth2beta1;
+ CCTK_REAL_VEC JacPDupwindNth2beta2;
+ CCTK_REAL_VEC JacPDupwindNth2beta3;
+ CCTK_REAL_VEC JacPDupwindNth3alpha;
+ CCTK_REAL_VEC JacPDupwindNth3beta1;
+ CCTK_REAL_VEC JacPDupwindNth3beta2;
+ CCTK_REAL_VEC JacPDupwindNth3beta3;
+
+ 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)));
+
+ JacPDupwindNth1alpha =
+ kmadd(J11L,PDupwindNth1alpha,kmadd(J21L,PDupwindNth2alpha,kmul(J31L,PDupwindNth3alpha)));
+
+ JacPDupwindNth1beta1 =
+ kmadd(J11L,PDupwindNth1beta1,kmadd(J21L,PDupwindNth2beta1,kmul(J31L,PDupwindNth3beta1)));
+
+ JacPDupwindNth1beta2 =
+ kmadd(J11L,PDupwindNth1beta2,kmadd(J21L,PDupwindNth2beta2,kmul(J31L,PDupwindNth3beta2)));
+
+ JacPDupwindNth1beta3 =
+ kmadd(J11L,PDupwindNth1beta3,kmadd(J21L,PDupwindNth2beta3,kmul(J31L,PDupwindNth3beta3)));
+
+ JacPDupwindNth2alpha =
+ kmadd(J12L,PDupwindNth1alpha,kmadd(J22L,PDupwindNth2alpha,kmul(J32L,PDupwindNth3alpha)));
+
+ JacPDupwindNth2beta1 =
+ kmadd(J12L,PDupwindNth1beta1,kmadd(J22L,PDupwindNth2beta1,kmul(J32L,PDupwindNth3beta1)));
+
+ JacPDupwindNth2beta2 =
+ kmadd(J12L,PDupwindNth1beta2,kmadd(J22L,PDupwindNth2beta2,kmul(J32L,PDupwindNth3beta2)));
+
+ JacPDupwindNth2beta3 =
+ kmadd(J12L,PDupwindNth1beta3,kmadd(J22L,PDupwindNth2beta3,kmul(J32L,PDupwindNth3beta3)));
+
+ JacPDupwindNth3alpha =
+ kmadd(J13L,PDupwindNth1alpha,kmadd(J23L,PDupwindNth2alpha,kmul(J33L,PDupwindNth3alpha)));
+
+ JacPDupwindNth3beta1 =
+ kmadd(J13L,PDupwindNth1beta1,kmadd(J23L,PDupwindNth2beta1,kmul(J33L,PDupwindNth3beta1)));
+
+ JacPDupwindNth3beta2 =
+ kmadd(J13L,PDupwindNth1beta2,kmadd(J23L,PDupwindNth2beta2,kmul(J33L,PDupwindNth3beta2)));
+
+ JacPDupwindNth3beta3 =
+ kmadd(J13L,PDupwindNth1beta3,kmadd(J23L,PDupwindNth2beta3,kmul(J33L,PDupwindNth3beta3)));
+ }
+ 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;
+
+ JacPDupwindNth1alpha = PDupwindNth1alpha;
+
+ JacPDupwindNth1beta1 = PDupwindNth1beta1;
+
+ JacPDupwindNth1beta2 = PDupwindNth1beta2;
+
+ JacPDupwindNth1beta3 = PDupwindNth1beta3;
+
+ JacPDupwindNth2alpha = PDupwindNth2alpha;
+
+ JacPDupwindNth2beta1 = PDupwindNth2beta1;
+
+ JacPDupwindNth2beta2 = PDupwindNth2beta2;
+
+ JacPDupwindNth2beta3 = PDupwindNth2beta3;
+
+ JacPDupwindNth3alpha = PDupwindNth3alpha;
+
+ JacPDupwindNth3beta1 = PDupwindNth3beta1;
+
+ JacPDupwindNth3beta2 = PDupwindNth3beta2;
+
+ JacPDupwindNth3beta3 = PDupwindNth3beta3;
+ }
+
+ CCTK_REAL_VEC detgt = ToReal(1);
- CCTK_REAL gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L));
+ CCTK_REAL_VEC gtu11 = kmul(INV(detgt),kmsub(gt22L,gt33L,SQR(gt23L)));
- CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt);
+ CCTK_REAL_VEC gtu12 =
+ kmul(INV(detgt),kmsub(gt13L,gt23L,kmul(gt12L,gt33L)));
- CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC gtu13 =
+ kmul(INV(detgt),kmsub(gt12L,gt23L,kmul(gt13L,gt22L)));
- CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L));
+ CCTK_REAL_VEC gtu22 = kmul(INV(detgt),kmsub(gt11L,gt33L,SQR(gt13L)));
- CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC gtu23 =
+ kmul(INV(detgt),kmsub(gt12L,gt13L,kmul(gt11L,gt23L)));
- CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L));
+ CCTK_REAL_VEC gtu33 = kmul(INV(detgt),kmsub(gt11L,gt22L,SQR(gt12L)));
- CCTK_REAL Gt111 = 0.5*(gtu11*PDstandardNth1gt11 +
- 2*(gtu12*PDstandardNth1gt12 + gtu13*PDstandardNth1gt13) -
- gtu12*PDstandardNth2gt11 - gtu13*PDstandardNth3gt11);
+ 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 Gt211 = 0.5*(gtu12*PDstandardNth1gt11 +
- 2*(gtu22*PDstandardNth1gt12 + gtu23*PDstandardNth1gt13) -
- gtu22*PDstandardNth2gt11 - gtu23*PDstandardNth3gt11);
+ 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 Gt311 = 0.5*(gtu13*PDstandardNth1gt11 +
- 2*(gtu23*PDstandardNth1gt12 + gtu33*PDstandardNth1gt13) -
- gtu23*PDstandardNth2gt11 - gtu33*PDstandardNth3gt11);
+ 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 Gt112 = 0.5*(gtu12*PDstandardNth1gt22 +
- gtu11*PDstandardNth2gt11 + gtu13*(PDstandardNth1gt23 +
- PDstandardNth2gt13 - PDstandardNth3gt12));
+ CCTK_REAL_VEC Gt112 =
+ kmul(kmadd(gtu12,JacPDstandardNth1gt22,kmadd(gtu11,JacPDstandardNth2gt11,kmul(gtu13,kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth2gt13,JacPDstandardNth3gt12))))),ToReal(0.5));
- CCTK_REAL Gt212 = 0.5*(gtu22*PDstandardNth1gt22 +
- gtu12*PDstandardNth2gt11 + gtu23*(PDstandardNth1gt23 +
- PDstandardNth2gt13 - PDstandardNth3gt12));
+ CCTK_REAL_VEC Gt212 =
+ kmul(kmadd(gtu22,JacPDstandardNth1gt22,kmadd(gtu12,JacPDstandardNth2gt11,kmul(gtu23,kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth2gt13,JacPDstandardNth3gt12))))),ToReal(0.5));
- CCTK_REAL Gt312 = 0.5*(gtu23*PDstandardNth1gt22 +
- gtu13*PDstandardNth2gt11 + gtu33*(PDstandardNth1gt23 +
- PDstandardNth2gt13 - PDstandardNth3gt12));
+ CCTK_REAL_VEC Gt312 =
+ kmul(kmadd(gtu23,JacPDstandardNth1gt22,kmadd(gtu13,JacPDstandardNth2gt11,kmul(gtu33,kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth2gt13,JacPDstandardNth3gt12))))),ToReal(0.5));
- CCTK_REAL Gt113 = 0.5*(gtu13*PDstandardNth1gt33 +
- gtu11*PDstandardNth3gt11 + gtu12*(PDstandardNth1gt23 -
- PDstandardNth2gt13 + PDstandardNth3gt12));
+ CCTK_REAL_VEC Gt113 =
+ kmul(kmadd(gtu13,JacPDstandardNth1gt33,kmadd(gtu11,JacPDstandardNth3gt11,kmul(gtu12,kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth3gt12,JacPDstandardNth2gt13))))),ToReal(0.5));
- CCTK_REAL Gt213 = 0.5*(gtu23*PDstandardNth1gt33 +
- gtu12*PDstandardNth3gt11 + gtu22*(PDstandardNth1gt23 -
- PDstandardNth2gt13 + PDstandardNth3gt12));
+ CCTK_REAL_VEC Gt213 =
+ kmul(kmadd(gtu23,JacPDstandardNth1gt33,kmadd(gtu12,JacPDstandardNth3gt11,kmul(gtu22,kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth3gt12,JacPDstandardNth2gt13))))),ToReal(0.5));
- CCTK_REAL Gt313 = 0.5*(gtu33*PDstandardNth1gt33 +
- gtu13*PDstandardNth3gt11 + gtu23*(PDstandardNth1gt23 -
- PDstandardNth2gt13 + PDstandardNth3gt12));
+ CCTK_REAL_VEC Gt313 =
+ kmul(kmadd(gtu33,JacPDstandardNth1gt33,kmadd(gtu13,JacPDstandardNth3gt11,kmul(gtu23,kadd(JacPDstandardNth1gt23,ksub(JacPDstandardNth3gt12,JacPDstandardNth2gt13))))),ToReal(0.5));
- CCTK_REAL Gt122 = 0.5*(gtu11*(-PDstandardNth1gt22 +
- 2*PDstandardNth2gt12) + gtu12*PDstandardNth2gt22 +
- gtu13*(2*PDstandardNth2gt23 - PDstandardNth3gt22));
+ 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 Gt222 = 0.5*(gtu12*(-PDstandardNth1gt22 +
- 2*PDstandardNth2gt12) + gtu22*PDstandardNth2gt22 +
- gtu23*(2*PDstandardNth2gt23 - PDstandardNth3gt22));
+ 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 Gt322 = 0.5*(gtu13*(-PDstandardNth1gt22 +
- 2*PDstandardNth2gt12) + gtu23*PDstandardNth2gt22 +
- gtu33*(2*PDstandardNth2gt23 - PDstandardNth3gt22));
+ 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 Gt123 = 0.5*(gtu13*PDstandardNth2gt33 +
- gtu11*(-PDstandardNth1gt23 + PDstandardNth2gt13 + PDstandardNth3gt12) +
- gtu12*PDstandardNth3gt22);
+ CCTK_REAL_VEC Gt123 =
+ kmul(kmadd(gtu13,JacPDstandardNth2gt33,kmadd(gtu12,JacPDstandardNth3gt22,kmul(gtu11,kadd(JacPDstandardNth2gt13,ksub(JacPDstandardNth3gt12,JacPDstandardNth1gt23))))),ToReal(0.5));
- CCTK_REAL Gt223 = 0.5*(gtu23*PDstandardNth2gt33 +
- gtu12*(-PDstandardNth1gt23 + PDstandardNth2gt13 + PDstandardNth3gt12) +
- gtu22*PDstandardNth3gt22);
+ CCTK_REAL_VEC Gt223 =
+ kmul(kmadd(gtu23,JacPDstandardNth2gt33,kmadd(gtu22,JacPDstandardNth3gt22,kmul(gtu12,kadd(JacPDstandardNth2gt13,ksub(JacPDstandardNth3gt12,JacPDstandardNth1gt23))))),ToReal(0.5));
- CCTK_REAL Gt323 = 0.5*(gtu33*PDstandardNth2gt33 +
- gtu13*(-PDstandardNth1gt23 + PDstandardNth2gt13 + PDstandardNth3gt12) +
- gtu23*PDstandardNth3gt22);
+ CCTK_REAL_VEC Gt323 =
+ kmul(kmadd(gtu33,JacPDstandardNth2gt33,kmadd(gtu23,JacPDstandardNth3gt22,kmul(gtu13,kadd(JacPDstandardNth2gt13,ksub(JacPDstandardNth3gt12,JacPDstandardNth1gt23))))),ToReal(0.5));
- CCTK_REAL Gt133 = 0.5*(gtu11*(-PDstandardNth1gt33 +
- 2*PDstandardNth3gt13) + gtu12*(-PDstandardNth2gt33 +
- 2*PDstandardNth3gt23) + gtu13*PDstandardNth3gt33);
+ 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 Gt233 = 0.5*(gtu12*(-PDstandardNth1gt33 +
- 2*PDstandardNth3gt13) + gtu22*(-PDstandardNth2gt33 +
- 2*PDstandardNth3gt23) + gtu23*PDstandardNth3gt33);
+ 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 Gt333 = 0.5*(gtu13*(-PDstandardNth1gt33 +
- 2*PDstandardNth3gt13) + gtu23*(-PDstandardNth2gt33 +
- 2*PDstandardNth3gt23) + gtu33*PDstandardNth3gt33);
+ 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 Xt1L = Gt111*gtu11 + Gt122*gtu22 + 2*(Gt112*gtu12 +
- Gt113*gtu13 + Gt123*gtu23) + Gt133*gtu33;
+ 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 Xt2L = Gt211*gtu11 + Gt222*gtu22 + 2*(Gt212*gtu12 +
- Gt213*gtu13 + Gt223*gtu23) + Gt233*gtu33;
+ 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 Xt3L = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu12 +
- Gt313*gtu13 + Gt323*gtu23) + Gt333*gtu33;
+ 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 AL = IfThen(LapseACoeff !=
- 0,INV(ToReal(harmonicF))*pow(alphaL,-ToReal(harmonicN))*(-dtalpL +
- (PDupwindNth1(&alpha[index])*beta1L +
- PDupwindNth2(&alpha[index])*beta2L +
- PDupwindNth3(&alpha[index])*beta3L)*ToReal(LapseAdvectionCoeff)),0);
+ CCTK_REAL_VEC AL = IfThen(LapseACoeff !=
+ 0,kmul(INV(ToReal(harmonicF)),kmul(kpow(alphaL,-harmonicN),kmsub(kmadd(beta1L,JacPDupwindNth1alpha,kmadd(beta2L,JacPDupwindNth2alpha,kmul(beta3L,JacPDupwindNth3alpha))),ToReal(LapseAdvectionCoeff),dtalpL))),ToReal(0));
- CCTK_REAL theta = fmin(1,exp(1 -
- rL*INV(ToReal(SpatialShiftGammaCoeffRadius))));
+ CCTK_REAL_VEC theta =
+ kfmin(ToReal(1),kexp(knmsub(rL,INV(ToReal(SpatialShiftGammaCoeffRadius)),ToReal(1))));
- CCTK_REAL B1L;
- CCTK_REAL B2L;
- CCTK_REAL B3L;
+ CCTK_REAL_VEC B1L;
+ CCTK_REAL_VEC B2L;
+ CCTK_REAL_VEC B3L;
if (ShiftBCoeff*ShiftGammaCoeff != 0)
{
- B1L = -(INV(theta)*INV(ToReal(ShiftGammaCoeff))*(-dtbetaxL +
- (PDupwindNth1(&beta1[index])*beta1L +
- PDupwindNth2(&beta1[index])*beta2L +
- PDupwindNth3(&beta1[index])*beta3L)*ToReal(ShiftAdvectionCoeff)));
-
- B2L = -(INV(theta)*INV(ToReal(ShiftGammaCoeff))*(-dtbetayL +
- (PDupwindNth1(&beta2[index])*beta1L +
- PDupwindNth2(&beta2[index])*beta2L +
- PDupwindNth3(&beta2[index])*beta3L)*ToReal(ShiftAdvectionCoeff)));
-
- B3L = -(INV(theta)*INV(ToReal(ShiftGammaCoeff))*(-dtbetazL +
- (PDupwindNth1(&beta3[index])*beta1L +
- PDupwindNth2(&beta3[index])*beta2L +
- PDupwindNth3(&beta3[index])*beta3L)*ToReal(ShiftAdvectionCoeff)));
+ B1L =
+ kmul(INV(theta),kmul(INV(ToReal(ShiftGammaCoeff)),knmsub(kmadd(beta1L,JacPDupwindNth1beta1,kmadd(beta2L,JacPDupwindNth2beta1,kmul(beta3L,JacPDupwindNth3beta1))),ToReal(ShiftAdvectionCoeff),dtbetaxL)));
+
+ B2L =
+ kmul(INV(theta),kmul(INV(ToReal(ShiftGammaCoeff)),knmsub(kmadd(beta1L,JacPDupwindNth1beta2,kmadd(beta2L,JacPDupwindNth2beta2,kmul(beta3L,JacPDupwindNth3beta2))),ToReal(ShiftAdvectionCoeff),dtbetayL)));
+
+ B3L =
+ kmul(INV(theta),kmul(INV(ToReal(ShiftGammaCoeff)),knmsub(kmadd(beta1L,JacPDupwindNth1beta3,kmadd(beta2L,JacPDupwindNth2beta3,kmul(beta3L,JacPDupwindNth3beta3))),ToReal(ShiftAdvectionCoeff),dtbetazL)));
}
else
{
- B1L = 0;
+ B1L = ToReal(0);
- B2L = 0;
+ B2L = ToReal(0);
- B3L = 0;
+ B3L = ToReal(0);
}
- /* Copy local copies back to grid functions */
- A[index] = AL;
- B1[index] = B1L;
- B2[index] = B2L;
- B3[index] = B3L;
- Xt1[index] = Xt1L;
- Xt2[index] = Xt2L;
- Xt3[index] = Xt3L;
+ /* 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(A[index],AL,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B1[index],B1L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B2[index],B2L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(B3[index],B3L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt1[index],Xt1L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt2[index],Xt2L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(Xt3[index],Xt3L,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(A[index],AL,elt_count);
+ vec_store_nta_partial_hi(B1[index],B1L,elt_count);
+ vec_store_nta_partial_hi(B2[index],B2L,elt_count);
+ vec_store_nta_partial_hi(B3[index],B3L,elt_count);
+ vec_store_nta_partial_hi(Xt1[index],Xt1L,elt_count);
+ vec_store_nta_partial_hi(Xt2[index],Xt2L,elt_count);
+ vec_store_nta_partial_hi(Xt3[index],Xt3L,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(A[index],AL,elt_count);
+ vec_store_nta_partial_lo(B1[index],B1L,elt_count);
+ vec_store_nta_partial_lo(B2[index],B2L,elt_count);
+ vec_store_nta_partial_lo(B3[index],B3L,elt_count);
+ vec_store_nta_partial_lo(Xt1[index],Xt1L,elt_count);
+ vec_store_nta_partial_lo(Xt2[index],Xt2L,elt_count);
+ vec_store_nta_partial_lo(Xt3[index],Xt3L,elt_count);
+ break;
+ }
+ vec_store_nta(A[index],AL);
+ vec_store_nta(B1[index],B1L);
+ vec_store_nta(B2[index],B2L);
+ vec_store_nta(B3[index],B3L);
+ vec_store_nta(Xt1[index],Xt1L);
+ vec_store_nta(Xt2[index],Xt2L);
+ vec_store_nta(Xt3[index],Xt3L);
}
- LC_ENDLOOP3 (ML_BSSN_UPW_convertFromADMBaseGamma);
+ LC_ENDLOOP3VEC (ML_BSSN_UPW_convertFromADMBaseGamma);
}
extern "C" void ML_BSSN_UPW_convertFromADMBaseGamma(CCTK_ARGUMENTS)
@@ -314,5 +783,43 @@ extern "C" void ML_BSSN_UPW_convertFromADMBaseGamma(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_UPW_convertFromADMBaseGamma_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_UPW_convertFromADMBaseGamma_calc_every != ML_BSSN_UPW_convertFromADMBaseGamma_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ADMBase::dtlapse","ADMBase::dtshift","grid::coordinates","Grid::coordinates","ML_BSSN_UPW::ML_dtlapse","ML_BSSN_UPW::ML_dtshift","ML_BSSN_UPW::ML_Gamma","ML_BSSN_UPW::ML_lapse","ML_BSSN_UPW::ML_metric","ML_BSSN_UPW::ML_shift"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_UPW_convertFromADMBaseGamma", 10, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_UPW_convertFromADMBaseGamma", 2, 2, 2);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_UPW_convertFromADMBaseGamma", 3, 3, 3);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_UPW_convertFromADMBaseGamma", 4, 4, 4);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_UPW_convertFromADMBaseGamma", 5, 5, 5);
+ break;
+ }
+
GenericFD_LoopOverInterior(cctkGH, &ML_BSSN_UPW_convertFromADMBaseGamma_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_UPW_convertFromADMBaseGamma_Body");
+ }
}
diff --git a/ML_BSSN_UPW/src/ML_BSSN_UPW_convertToADMBase.cc b/ML_BSSN_UPW/src/ML_BSSN_UPW_convertToADMBase.cc
index 964e15f..c7ecab4 100644
--- a/ML_BSSN_UPW/src/ML_BSSN_UPW_convertToADMBase.cc
+++ b/ML_BSSN_UPW/src/ML_BSSN_UPW_convertToADMBase.cc
@@ -13,15 +13,16 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
-static void ML_BSSN_UPW_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_UPW_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;
@@ -29,20 +30,6 @@ static void ML_BSSN_UPW_convertToADMBase_Body(cGH const * restrict const cctkGH,
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_UPW_convertToADMBase_Body");
- }
-
- if (cctk_iteration % ML_BSSN_UPW_convertToADMBase_calc_every != ML_BSSN_UPW_convertToADMBase_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ADMBase::curv","ADMBase::lapse","ADMBase::metric","ADMBase::shift","ML_BSSN_UPW::ML_curv","ML_BSSN_UPW::ML_lapse","ML_BSSN_UPW::ML_log_confac","ML_BSSN_UPW::ML_metric","ML_BSSN_UPW::ML_shift","ML_BSSN_UPW::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_UPW_convertToADMBase", 10, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -52,142 +39,345 @@ static void ML_BSSN_UPW_convertToADMBase_Body(cGH const * restrict const cctkGH,
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const p1o24dx = 0.0416666666666666666666666666667*INV(dx);
- CCTK_REAL const p1o24dy = 0.0416666666666666666666666666667*INV(dy);
- CCTK_REAL const p1o24dz = 0.0416666666666666666666666666667*INV(dz);
- CCTK_REAL const p1o64dx = 0.015625*INV(dx);
- CCTK_REAL const p1o64dy = 0.015625*INV(dy);
- CCTK_REAL const p1o64dz = 0.015625*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_UPW_convertToADMBase,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_UPW_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 alphaL = alpha[index];
- CCTK_REAL At11L = At11[index];
- CCTK_REAL At12L = At12[index];
- CCTK_REAL At13L = At13[index];
- CCTK_REAL At22L = At22[index];
- CCTK_REAL At23L = At23[index];
- CCTK_REAL At33L = At33[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL gt11L = gt11[index];
- CCTK_REAL gt12L = gt12[index];
- CCTK_REAL gt13L = gt13[index];
- CCTK_REAL gt22L = gt22[index];
- CCTK_REAL gt23L = gt23[index];
- CCTK_REAL gt33L = gt33[index];
- CCTK_REAL gxxL = gxx[index];
- CCTK_REAL gxyL = gxy[index];
- CCTK_REAL gxzL = gxz[index];
- CCTK_REAL gyyL = gyy[index];
- CCTK_REAL gyzL = gyz[index];
- CCTK_REAL gzzL = gzz[index];
- CCTK_REAL phiL = phi[index];
- CCTK_REAL trKL = trK[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 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 e4phi = IfThen(conformalMethod,INV(SQR(phiL)),exp(4*phiL));
+ CCTK_REAL_VEC e4phi =
+ IfThen(conformalMethod,INV(SQR(phiL)),kexp(kmul(phiL,ToReal(4))));
+
+ gxxL = kmul(e4phi,gt11L);
- gxxL = e4phi*gt11L;
+ gxyL = kmul(e4phi,gt12L);
- gxyL = e4phi*gt12L;
+ gxzL = kmul(e4phi,gt13L);
- gxzL = e4phi*gt13L;
+ gyyL = kmul(e4phi,gt22L);
- gyyL = e4phi*gt22L;
+ gyzL = kmul(e4phi,gt23L);
- gyzL = e4phi*gt23L;
+ gzzL = kmul(e4phi,gt33L);
- gzzL = e4phi*gt33L;
+ CCTK_REAL_VEC kxxL =
+ kmadd(At11L,e4phi,kmul(gxxL,kmul(trKL,ToReal(0.333333333333333333333333333333))));
- CCTK_REAL kxxL = At11L*e4phi +
- 0.333333333333333333333333333333*gxxL*trKL;
+ CCTK_REAL_VEC kxyL =
+ kmadd(At12L,e4phi,kmul(gxyL,kmul(trKL,ToReal(0.333333333333333333333333333333))));
- CCTK_REAL kxyL = At12L*e4phi +
- 0.333333333333333333333333333333*gxyL*trKL;
+ CCTK_REAL_VEC kxzL =
+ kmadd(At13L,e4phi,kmul(gxzL,kmul(trKL,ToReal(0.333333333333333333333333333333))));
- CCTK_REAL kxzL = At13L*e4phi +
- 0.333333333333333333333333333333*gxzL*trKL;
+ CCTK_REAL_VEC kyyL =
+ kmadd(At22L,e4phi,kmul(gyyL,kmul(trKL,ToReal(0.333333333333333333333333333333))));
- CCTK_REAL kyyL = At22L*e4phi +
- 0.333333333333333333333333333333*gyyL*trKL;
+ CCTK_REAL_VEC kyzL =
+ kmadd(At23L,e4phi,kmul(gyzL,kmul(trKL,ToReal(0.333333333333333333333333333333))));
- CCTK_REAL kyzL = At23L*e4phi +
- 0.333333333333333333333333333333*gyzL*trKL;
+ CCTK_REAL_VEC kzzL =
+ kmadd(At33L,e4phi,kmul(gzzL,kmul(trKL,ToReal(0.333333333333333333333333333333))));
- CCTK_REAL kzzL = At33L*e4phi +
- 0.333333333333333333333333333333*gzzL*trKL;
+ CCTK_REAL_VEC alpL = alphaL;
- CCTK_REAL alpL = alphaL;
+ CCTK_REAL_VEC betaxL = beta1L;
- CCTK_REAL betaxL = beta1L;
+ CCTK_REAL_VEC betayL = beta2L;
- CCTK_REAL betayL = beta2L;
+ CCTK_REAL_VEC betazL = beta3L;
- CCTK_REAL betazL = beta3L;
+ /* If necessary, store only partial vectors after the first iteration */
- /* Copy local copies back to grid functions */
- alp[index] = alpL;
- betax[index] = betaxL;
- betay[index] = betayL;
- betaz[index] = betazL;
- gxx[index] = gxxL;
- gxy[index] = gxyL;
- gxz[index] = gxzL;
- gyy[index] = gyyL;
- gyz[index] = gyzL;
- gzz[index] = gzzL;
- kxx[index] = kxxL;
- kxy[index] = kxyL;
- kxz[index] = kxzL;
- kyy[index] = kyyL;
- kyz[index] = kyzL;
- kzz[index] = kzzL;
+ 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(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(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(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(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);
}
- LC_ENDLOOP3 (ML_BSSN_UPW_convertToADMBase);
+ LC_ENDLOOP3VEC (ML_BSSN_UPW_convertToADMBase);
}
extern "C" void ML_BSSN_UPW_convertToADMBase(CCTK_ARGUMENTS)
@@ -195,5 +385,39 @@ extern "C" void ML_BSSN_UPW_convertToADMBase(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_UPW_convertToADMBase_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_UPW_convertToADMBase_calc_every != ML_BSSN_UPW_convertToADMBase_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ADMBase::curv","ADMBase::lapse","ADMBase::metric","ADMBase::shift","ML_BSSN_UPW::ML_curv","ML_BSSN_UPW::ML_lapse","ML_BSSN_UPW::ML_log_confac","ML_BSSN_UPW::ML_metric","ML_BSSN_UPW::ML_shift","ML_BSSN_UPW::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_UPW_convertToADMBase", 10, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverEverything(cctkGH, &ML_BSSN_UPW_convertToADMBase_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_UPW_convertToADMBase_Body");
+ }
}
diff --git a/ML_BSSN_UPW/src/ML_BSSN_UPW_convertToADMBaseDtLapseShift.cc b/ML_BSSN_UPW/src/ML_BSSN_UPW_convertToADMBaseDtLapseShift.cc
index cc1ba82..df5e612 100644
--- a/ML_BSSN_UPW/src/ML_BSSN_UPW_convertToADMBaseDtLapseShift.cc
+++ b/ML_BSSN_UPW/src/ML_BSSN_UPW_convertToADMBaseDtLapseShift.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_UPW_convertToADMBaseDtLapseShift_SelectBCs(CCTK_ARGUMENTS)
{
@@ -36,7 +37,7 @@ extern "C" void ML_BSSN_UPW_convertToADMBaseDtLapseShift_SelectBCs(CCTK_ARGUMENT
return;
}
-static void ML_BSSN_UPW_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_UPW_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;
@@ -44,21 +45,6 @@ static void ML_BSSN_UPW_convertToADMBaseDtLapseShift_Body(cGH const * restrict c
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_UPW_convertToADMBaseDtLapseShift_Body");
- }
-
- if (cctk_iteration % ML_BSSN_UPW_convertToADMBaseDtLapseShift_calc_every != ML_BSSN_UPW_convertToADMBaseDtLapseShift_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ADMBase::dtlapse","ADMBase::dtshift","grid::coordinates","Grid::coordinates","ML_BSSN_UPW::ML_dtlapse","ML_BSSN_UPW::ML_dtshift","ML_BSSN_UPW::ML_Gamma","ML_BSSN_UPW::ML_lapse","ML_BSSN_UPW::ML_shift","ML_BSSN_UPW::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_UPW_convertToADMBaseDtLapseShift", 10, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_UPW_convertToADMBaseDtLapseShift", 3, 3, 3);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -68,70 +54,402 @@ static void ML_BSSN_UPW_convertToADMBaseDtLapseShift_Body(cGH const * restrict c
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const p1o24dx = 0.0416666666666666666666666666667*INV(dx);
- CCTK_REAL const p1o24dy = 0.0416666666666666666666666666667*INV(dy);
- CCTK_REAL const p1o24dz = 0.0416666666666666666666666666667*INV(dz);
- CCTK_REAL const p1o64dx = 0.015625*INV(dx);
- CCTK_REAL const p1o64dy = 0.015625*INV(dy);
- CCTK_REAL const p1o64dz = 0.015625*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_UPW_convertToADMBaseDtLapseShift,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_UPW_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 AL = A[index];
- CCTK_REAL alphaL = alpha[index];
- CCTK_REAL B1L = B1[index];
- CCTK_REAL B2L = B2[index];
- CCTK_REAL B3L = B3[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL rL = r[index];
- CCTK_REAL trKL = trK[index];
- CCTK_REAL Xt1L = Xt1[index];
- CCTK_REAL Xt2L = Xt2[index];
- CCTK_REAL Xt3L = Xt3[index];
+ 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 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 PDupwindNth1alpha;
+ CCTK_REAL_VEC PDupwindNth2alpha;
+ CCTK_REAL_VEC PDupwindNth3alpha;
+ CCTK_REAL_VEC PDupwindNth1beta1;
+ CCTK_REAL_VEC PDupwindNth2beta1;
+ CCTK_REAL_VEC PDupwindNth3beta1;
+ CCTK_REAL_VEC PDupwindNth1beta2;
+ CCTK_REAL_VEC PDupwindNth2beta2;
+ CCTK_REAL_VEC PDupwindNth3beta2;
+ CCTK_REAL_VEC PDupwindNth1beta3;
+ CCTK_REAL_VEC PDupwindNth2beta3;
+ CCTK_REAL_VEC PDupwindNth3beta3;
+ 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]);
+ PDupwindNth1alpha = PDupwindNthfdOrder21(&alpha[index]);
+ PDupwindNth2alpha = PDupwindNthfdOrder22(&alpha[index]);
+ PDupwindNth3alpha = PDupwindNthfdOrder23(&alpha[index]);
+ PDupwindNth1beta1 = PDupwindNthfdOrder21(&beta1[index]);
+ PDupwindNth2beta1 = PDupwindNthfdOrder22(&beta1[index]);
+ PDupwindNth3beta1 = PDupwindNthfdOrder23(&beta1[index]);
+ PDupwindNth1beta2 = PDupwindNthfdOrder21(&beta2[index]);
+ PDupwindNth2beta2 = PDupwindNthfdOrder22(&beta2[index]);
+ PDupwindNth3beta2 = PDupwindNthfdOrder23(&beta2[index]);
+ PDupwindNth1beta3 = PDupwindNthfdOrder21(&beta3[index]);
+ PDupwindNth2beta3 = PDupwindNthfdOrder22(&beta3[index]);
+ PDupwindNth3beta3 = PDupwindNthfdOrder23(&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]);
+ PDupwindNth1alpha = PDupwindNthfdOrder41(&alpha[index]);
+ PDupwindNth2alpha = PDupwindNthfdOrder42(&alpha[index]);
+ PDupwindNth3alpha = PDupwindNthfdOrder43(&alpha[index]);
+ PDupwindNth1beta1 = PDupwindNthfdOrder41(&beta1[index]);
+ PDupwindNth2beta1 = PDupwindNthfdOrder42(&beta1[index]);
+ PDupwindNth3beta1 = PDupwindNthfdOrder43(&beta1[index]);
+ PDupwindNth1beta2 = PDupwindNthfdOrder41(&beta2[index]);
+ PDupwindNth2beta2 = PDupwindNthfdOrder42(&beta2[index]);
+ PDupwindNth3beta2 = PDupwindNthfdOrder43(&beta2[index]);
+ PDupwindNth1beta3 = PDupwindNthfdOrder41(&beta3[index]);
+ PDupwindNth2beta3 = PDupwindNthfdOrder42(&beta3[index]);
+ PDupwindNth3beta3 = PDupwindNthfdOrder43(&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]);
+ PDupwindNth1alpha = PDupwindNthfdOrder61(&alpha[index]);
+ PDupwindNth2alpha = PDupwindNthfdOrder62(&alpha[index]);
+ PDupwindNth3alpha = PDupwindNthfdOrder63(&alpha[index]);
+ PDupwindNth1beta1 = PDupwindNthfdOrder61(&beta1[index]);
+ PDupwindNth2beta1 = PDupwindNthfdOrder62(&beta1[index]);
+ PDupwindNth3beta1 = PDupwindNthfdOrder63(&beta1[index]);
+ PDupwindNth1beta2 = PDupwindNthfdOrder61(&beta2[index]);
+ PDupwindNth2beta2 = PDupwindNthfdOrder62(&beta2[index]);
+ PDupwindNth3beta2 = PDupwindNthfdOrder63(&beta2[index]);
+ PDupwindNth1beta3 = PDupwindNthfdOrder61(&beta3[index]);
+ PDupwindNth2beta3 = PDupwindNthfdOrder62(&beta3[index]);
+ PDupwindNth3beta3 = PDupwindNthfdOrder63(&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]);
+ PDupwindNth1alpha = PDupwindNthfdOrder81(&alpha[index]);
+ PDupwindNth2alpha = PDupwindNthfdOrder82(&alpha[index]);
+ PDupwindNth3alpha = PDupwindNthfdOrder83(&alpha[index]);
+ PDupwindNth1beta1 = PDupwindNthfdOrder81(&beta1[index]);
+ PDupwindNth2beta1 = PDupwindNthfdOrder82(&beta1[index]);
+ PDupwindNth3beta1 = PDupwindNthfdOrder83(&beta1[index]);
+ PDupwindNth1beta2 = PDupwindNthfdOrder81(&beta2[index]);
+ PDupwindNth2beta2 = PDupwindNthfdOrder82(&beta2[index]);
+ PDupwindNth3beta2 = PDupwindNthfdOrder83(&beta2[index]);
+ PDupwindNth1beta3 = PDupwindNthfdOrder81(&beta3[index]);
+ PDupwindNth2beta3 = PDupwindNthfdOrder82(&beta3[index]);
+ PDupwindNth3beta3 = PDupwindNthfdOrder83(&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);
@@ -140,42 +458,311 @@ static void ML_BSSN_UPW_convertToADMBaseDtLapseShift_Body(cGH const * restrict c
ptrdiff_t dir3 = Sign(beta3L);
- CCTK_REAL eta = fmin(1,INV(rL)*ToReal(SpatialBetaDriverRadius));
-
- CCTK_REAL theta = fmin(1,exp(1 -
- rL*INV(ToReal(SpatialShiftGammaCoeffRadius))));
-
- CCTK_REAL dtalpL =
- -(pow(alphaL,ToReal(harmonicN))*ToReal(harmonicF)*(trKL + (AL -
- trKL)*ToReal(LapseACoeff))) + (PDupwindNth1(&alpha[index])*beta1L +
- PDupwindNth2(&alpha[index])*beta2L +
- PDupwindNth3(&alpha[index])*beta3L)*ToReal(LapseAdvectionCoeff);
-
- CCTK_REAL dtbetaxL = (PDupwindNth1(&beta1[index])*beta1L +
- PDupwindNth2(&beta1[index])*beta2L +
- PDupwindNth3(&beta1[index])*beta3L)*ToReal(ShiftAdvectionCoeff) +
- theta*(Xt1L + beta1L*eta*ToReal(BetaDriver)*(-1 + ToReal(ShiftBCoeff))
- + (B1L - Xt1L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
-
- CCTK_REAL dtbetayL = (PDupwindNth1(&beta2[index])*beta1L +
- PDupwindNth2(&beta2[index])*beta2L +
- PDupwindNth3(&beta2[index])*beta3L)*ToReal(ShiftAdvectionCoeff) +
- theta*(Xt2L + beta2L*eta*ToReal(BetaDriver)*(-1 + ToReal(ShiftBCoeff))
- + (B2L - Xt2L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
-
- CCTK_REAL dtbetazL = (PDupwindNth1(&beta3[index])*beta1L +
- PDupwindNth2(&beta3[index])*beta2L +
- PDupwindNth3(&beta3[index])*beta3L)*ToReal(ShiftAdvectionCoeff) +
- theta*(Xt3L + beta3L*eta*ToReal(BetaDriver)*(-1 + ToReal(ShiftBCoeff))
- + (B3L - Xt3L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
-
- /* Copy local copies back to grid functions */
- dtalp[index] = dtalpL;
- dtbetax[index] = dtbetaxL;
- dtbetay[index] = dtbetayL;
- dtbetaz[index] = dtbetazL;
+ 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 JacPDupwindNth1alpha;
+ CCTK_REAL_VEC JacPDupwindNth1beta1;
+ CCTK_REAL_VEC JacPDupwindNth1beta2;
+ CCTK_REAL_VEC JacPDupwindNth1beta3;
+ CCTK_REAL_VEC JacPDupwindNth2alpha;
+ CCTK_REAL_VEC JacPDupwindNth2beta1;
+ CCTK_REAL_VEC JacPDupwindNth2beta2;
+ CCTK_REAL_VEC JacPDupwindNth2beta3;
+ CCTK_REAL_VEC JacPDupwindNth3alpha;
+ CCTK_REAL_VEC JacPDupwindNth3beta1;
+ CCTK_REAL_VEC JacPDupwindNth3beta2;
+ CCTK_REAL_VEC JacPDupwindNth3beta3;
+
+ 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)));
+
+ JacPDupwindNth1alpha =
+ kmadd(J11L,PDupwindNth1alpha,kmadd(J21L,PDupwindNth2alpha,kmul(J31L,PDupwindNth3alpha)));
+
+ JacPDupwindNth1beta1 =
+ kmadd(J11L,PDupwindNth1beta1,kmadd(J21L,PDupwindNth2beta1,kmul(J31L,PDupwindNth3beta1)));
+
+ JacPDupwindNth1beta2 =
+ kmadd(J11L,PDupwindNth1beta2,kmadd(J21L,PDupwindNth2beta2,kmul(J31L,PDupwindNth3beta2)));
+
+ JacPDupwindNth1beta3 =
+ kmadd(J11L,PDupwindNth1beta3,kmadd(J21L,PDupwindNth2beta3,kmul(J31L,PDupwindNth3beta3)));
+
+ JacPDupwindNth2alpha =
+ kmadd(J12L,PDupwindNth1alpha,kmadd(J22L,PDupwindNth2alpha,kmul(J32L,PDupwindNth3alpha)));
+
+ JacPDupwindNth2beta1 =
+ kmadd(J12L,PDupwindNth1beta1,kmadd(J22L,PDupwindNth2beta1,kmul(J32L,PDupwindNth3beta1)));
+
+ JacPDupwindNth2beta2 =
+ kmadd(J12L,PDupwindNth1beta2,kmadd(J22L,PDupwindNth2beta2,kmul(J32L,PDupwindNth3beta2)));
+
+ JacPDupwindNth2beta3 =
+ kmadd(J12L,PDupwindNth1beta3,kmadd(J22L,PDupwindNth2beta3,kmul(J32L,PDupwindNth3beta3)));
+
+ JacPDupwindNth3alpha =
+ kmadd(J13L,PDupwindNth1alpha,kmadd(J23L,PDupwindNth2alpha,kmul(J33L,PDupwindNth3alpha)));
+
+ JacPDupwindNth3beta1 =
+ kmadd(J13L,PDupwindNth1beta1,kmadd(J23L,PDupwindNth2beta1,kmul(J33L,PDupwindNth3beta1)));
+
+ JacPDupwindNth3beta2 =
+ kmadd(J13L,PDupwindNth1beta2,kmadd(J23L,PDupwindNth2beta2,kmul(J33L,PDupwindNth3beta2)));
+
+ JacPDupwindNth3beta3 =
+ kmadd(J13L,PDupwindNth1beta3,kmadd(J23L,PDupwindNth2beta3,kmul(J33L,PDupwindNth3beta3)));
+ }
+ 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;
+
+ JacPDupwindNth1alpha = PDupwindNth1alpha;
+
+ JacPDupwindNth1beta1 = PDupwindNth1beta1;
+
+ JacPDupwindNth1beta2 = PDupwindNth1beta2;
+
+ JacPDupwindNth1beta3 = PDupwindNth1beta3;
+
+ JacPDupwindNth2alpha = PDupwindNth2alpha;
+
+ JacPDupwindNth2beta1 = PDupwindNth2beta1;
+
+ JacPDupwindNth2beta2 = PDupwindNth2beta2;
+
+ JacPDupwindNth2beta3 = PDupwindNth2beta3;
+
+ JacPDupwindNth3alpha = PDupwindNth3alpha;
+
+ JacPDupwindNth3beta1 = PDupwindNth3beta1;
+
+ JacPDupwindNth3beta2 = PDupwindNth3beta2;
+
+ JacPDupwindNth3beta3 = PDupwindNth3beta3;
+ }
+
+ 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 =
+ kfmin(ToReal(1),kmul(INV(rL),ToReal(SpatialBetaDriverRadius)));
+
+ CCTK_REAL_VEC theta =
+ kfmin(ToReal(1),kexp(knmsub(rL,INV(ToReal(SpatialShiftGammaCoeffRadius)),ToReal(1))));
+
+ CCTK_REAL_VEC dtalpL =
+ kmsub(kmadd(beta1L,JacPDupwindNth1alpha,kmadd(beta2L,JacPDupwindNth2alpha,kmul(beta3L,JacPDupwindNth3alpha))),ToReal(LapseAdvectionCoeff),kmul(kpow(alphaL,harmonicN),kmul(ToReal(harmonicF),kmadd(ksub(AL,trKL),ToReal(LapseACoeff),trKL))));
+
+ CCTK_REAL_VEC dtbetaxL =
+ kmadd(kmadd(beta1L,JacPDupwindNth1beta1,kmadd(beta2L,JacPDupwindNth2beta1,kmul(beta3L,JacPDupwindNth3beta1))),ToReal(ShiftAdvectionCoeff),IfThen(harmonicShift,kmul(alphaL,kmul(phiL,kmul(ToReal(0.5),kmadd(kmadd(gtu11,JacPDstandardNth1alpha,kmadd(gtu12,JacPDstandardNth2alpha,kmul(gtu13,JacPDstandardNth3alpha))),kmul(phiL,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(beta1L,kmul(eta,ToReal(BetaDriver*(-1
+ +
+ ShiftBCoeff))),kmul(ksub(B1L,Xt1L),ToReal(ShiftBCoeff)))),ToReal(ShiftGammaCoeff)))));
+
+ CCTK_REAL_VEC dtbetayL =
+ kmadd(kmadd(beta1L,JacPDupwindNth1beta2,kmadd(beta2L,JacPDupwindNth2beta2,kmul(beta3L,JacPDupwindNth3beta2))),ToReal(ShiftAdvectionCoeff),IfThen(harmonicShift,kmul(alphaL,kmul(phiL,kmul(ToReal(0.5),kmadd(kmadd(gtu12,JacPDstandardNth1alpha,kmadd(gtu22,JacPDstandardNth2alpha,kmul(gtu23,JacPDstandardNth3alpha))),kmul(phiL,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(beta2L,kmul(eta,ToReal(BetaDriver*(-1
+ +
+ ShiftBCoeff))),kmul(ksub(B2L,Xt2L),ToReal(ShiftBCoeff)))),ToReal(ShiftGammaCoeff)))));
+
+ CCTK_REAL_VEC dtbetazL =
+ kmadd(kmadd(beta1L,JacPDupwindNth1beta3,kmadd(beta2L,JacPDupwindNth2beta3,kmul(beta3L,JacPDupwindNth3beta3))),ToReal(ShiftAdvectionCoeff),IfThen(harmonicShift,kmul(alphaL,kmul(phiL,kmul(ToReal(0.5),kmadd(kmadd(gtu13,JacPDstandardNth1alpha,kmadd(gtu23,JacPDstandardNth2alpha,kmul(gtu33,JacPDstandardNth3alpha))),kmul(phiL,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(beta3L,kmul(eta,ToReal(BetaDriver*(-1
+ +
+ ShiftBCoeff))),kmul(ksub(B3L,Xt3L),ToReal(ShiftBCoeff)))),ToReal(ShiftGammaCoeff)))));
+
+ /* 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(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);
+ 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(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);
+ 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(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);
+ break;
+ }
+ vec_store_nta(dtalp[index],dtalpL);
+ vec_store_nta(dtbetax[index],dtbetaxL);
+ vec_store_nta(dtbetay[index],dtbetayL);
+ vec_store_nta(dtbetaz[index],dtbetazL);
}
- LC_ENDLOOP3 (ML_BSSN_UPW_convertToADMBaseDtLapseShift);
+ LC_ENDLOOP3VEC (ML_BSSN_UPW_convertToADMBaseDtLapseShift);
}
extern "C" void ML_BSSN_UPW_convertToADMBaseDtLapseShift(CCTK_ARGUMENTS)
@@ -183,5 +770,43 @@ extern "C" void ML_BSSN_UPW_convertToADMBaseDtLapseShift(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_UPW_convertToADMBaseDtLapseShift_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_UPW_convertToADMBaseDtLapseShift_calc_every != ML_BSSN_UPW_convertToADMBaseDtLapseShift_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ADMBase::dtlapse","ADMBase::dtshift","grid::coordinates","Grid::coordinates","ML_BSSN_UPW::ML_dtlapse","ML_BSSN_UPW::ML_dtshift","ML_BSSN_UPW::ML_Gamma","ML_BSSN_UPW::ML_lapse","ML_BSSN_UPW::ML_log_confac","ML_BSSN_UPW::ML_metric","ML_BSSN_UPW::ML_shift","ML_BSSN_UPW::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_UPW_convertToADMBaseDtLapseShift", 12, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_UPW_convertToADMBaseDtLapseShift", 2, 2, 2);
+ break;
+
+ case 4:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_UPW_convertToADMBaseDtLapseShift", 3, 3, 3);
+ break;
+
+ case 6:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_UPW_convertToADMBaseDtLapseShift", 4, 4, 4);
+ break;
+
+ case 8:
+ GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_UPW_convertToADMBaseDtLapseShift", 5, 5, 5);
+ break;
+ }
+
GenericFD_LoopOverInterior(cctkGH, &ML_BSSN_UPW_convertToADMBaseDtLapseShift_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_UPW_convertToADMBaseDtLapseShift_Body");
+ }
}
diff --git a/ML_BSSN_UPW/src/ML_BSSN_UPW_convertToADMBaseDtLapseShiftBoundary.cc b/ML_BSSN_UPW/src/ML_BSSN_UPW_convertToADMBaseDtLapseShiftBoundary.cc
index 479b1df..aa1c738 100644
--- a/ML_BSSN_UPW/src/ML_BSSN_UPW_convertToADMBaseDtLapseShiftBoundary.cc
+++ b/ML_BSSN_UPW/src/ML_BSSN_UPW_convertToADMBaseDtLapseShiftBoundary.cc
@@ -13,13 +13,14 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
extern "C" void ML_BSSN_UPW_convertToADMBaseDtLapseShiftBoundary_SelectBCs(CCTK_ARGUMENTS)
{
@@ -36,7 +37,7 @@ extern "C" void ML_BSSN_UPW_convertToADMBaseDtLapseShiftBoundary_SelectBCs(CCTK_
return;
}
-static void ML_BSSN_UPW_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_UPW_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;
@@ -44,20 +45,6 @@ static void ML_BSSN_UPW_convertToADMBaseDtLapseShiftBoundary_Body(cGH const * re
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_UPW_convertToADMBaseDtLapseShiftBoundary_Body");
- }
-
- if (cctk_iteration % ML_BSSN_UPW_convertToADMBaseDtLapseShiftBoundary_calc_every != ML_BSSN_UPW_convertToADMBaseDtLapseShiftBoundary_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ADMBase::dtlapse","ADMBase::dtshift","grid::coordinates","Grid::coordinates","ML_BSSN_UPW::ML_dtlapse","ML_BSSN_UPW::ML_dtshift","ML_BSSN_UPW::ML_Gamma","ML_BSSN_UPW::ML_lapse","ML_BSSN_UPW::ML_shift","ML_BSSN_UPW::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_UPW_convertToADMBaseDtLapseShiftBoundary", 10, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -67,100 +54,281 @@ static void ML_BSSN_UPW_convertToADMBaseDtLapseShiftBoundary_Body(cGH const * re
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const p1o24dx = 0.0416666666666666666666666666667*INV(dx);
- CCTK_REAL const p1o24dy = 0.0416666666666666666666666666667*INV(dy);
- CCTK_REAL const p1o24dz = 0.0416666666666666666666666666667*INV(dz);
- CCTK_REAL const p1o64dx = 0.015625*INV(dx);
- CCTK_REAL const p1o64dy = 0.015625*INV(dy);
- CCTK_REAL const p1o64dz = 0.015625*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_UPW_convertToADMBaseDtLapseShiftBoundary,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_UPW_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 AL = A[index];
- CCTK_REAL alphaL = alpha[index];
- CCTK_REAL B1L = B1[index];
- CCTK_REAL B2L = B2[index];
- CCTK_REAL B3L = B3[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL rL = r[index];
- CCTK_REAL trKL = trK[index];
- CCTK_REAL Xt1L = Xt1[index];
- CCTK_REAL Xt2L = Xt2[index];
- CCTK_REAL Xt3L = Xt3[index];
+ 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 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 eta = fmin(1,INV(rL)*ToReal(SpatialBetaDriverRadius));
+ CCTK_REAL_VEC eta =
+ kfmin(ToReal(1),kmul(INV(rL),ToReal(SpatialBetaDriverRadius)));
- CCTK_REAL theta = fmin(1,exp(1 -
- rL*INV(ToReal(SpatialShiftGammaCoeffRadius))));
+ CCTK_REAL_VEC theta =
+ kfmin(ToReal(1),kexp(knmsub(rL,INV(ToReal(SpatialShiftGammaCoeffRadius)),ToReal(1))));
- CCTK_REAL dtalpL =
- -(pow(alphaL,ToReal(harmonicN))*ToReal(harmonicF)*(trKL + (AL -
- trKL)*ToReal(LapseACoeff)));
+ CCTK_REAL_VEC dtalpL =
+ kneg(kmul(kpow(alphaL,harmonicN),kmul(ToReal(harmonicF),kmadd(ksub(AL,trKL),ToReal(LapseACoeff),trKL))));
- CCTK_REAL dtbetaxL = theta*(Xt1L + beta1L*eta*ToReal(BetaDriver)*(-1 +
- ToReal(ShiftBCoeff)) + (B1L -
- Xt1L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
+ CCTK_REAL_VEC dtbetaxL;
+ CCTK_REAL_VEC dtbetayL;
+ CCTK_REAL_VEC dtbetazL;
- CCTK_REAL dtbetayL = theta*(Xt2L + beta2L*eta*ToReal(BetaDriver)*(-1 +
- ToReal(ShiftBCoeff)) + (B2L -
- Xt2L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
+ if (harmonicShift)
+ {
+ dtbetaxL = ToReal(0);
+
+ dtbetayL = ToReal(0);
+
+ dtbetazL = ToReal(0);
+ }
+ else
+ {
+ dtbetaxL =
+ kmul(theta,kmul(kadd(Xt1L,kmadd(beta1L,kmul(eta,ToReal(BetaDriver*(-1 +
+ ShiftBCoeff))),kmul(ksub(B1L,Xt1L),ToReal(ShiftBCoeff)))),ToReal(ShiftGammaCoeff)));
+
+ dtbetayL =
+ kmul(theta,kmul(kadd(Xt2L,kmadd(beta2L,kmul(eta,ToReal(BetaDriver*(-1 +
+ ShiftBCoeff))),kmul(ksub(B2L,Xt2L),ToReal(ShiftBCoeff)))),ToReal(ShiftGammaCoeff)));
+
+ dtbetazL =
+ kmul(theta,kmul(kadd(Xt3L,kmadd(beta3L,kmul(eta,ToReal(BetaDriver*(-1 +
+ ShiftBCoeff))),kmul(ksub(B3L,Xt3L),ToReal(ShiftBCoeff)))),ToReal(ShiftGammaCoeff)));
+ }
- CCTK_REAL dtbetazL = theta*(Xt3L + beta3L*eta*ToReal(BetaDriver)*(-1 +
- ToReal(ShiftBCoeff)) + (B3L -
- Xt3L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
+ /* If necessary, store only partial vectors after the first iteration */
- /* Copy local copies back to grid functions */
- dtalp[index] = dtalpL;
- dtbetax[index] = dtbetaxL;
- dtbetay[index] = dtbetayL;
- dtbetaz[index] = dtbetazL;
+ 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(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);
+ 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(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);
+ 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(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);
+ break;
+ }
+ vec_store_nta(dtalp[index],dtalpL);
+ vec_store_nta(dtbetax[index],dtbetaxL);
+ vec_store_nta(dtbetay[index],dtbetayL);
+ vec_store_nta(dtbetaz[index],dtbetazL);
}
- LC_ENDLOOP3 (ML_BSSN_UPW_convertToADMBaseDtLapseShiftBoundary);
+ LC_ENDLOOP3VEC (ML_BSSN_UPW_convertToADMBaseDtLapseShiftBoundary);
}
extern "C" void ML_BSSN_UPW_convertToADMBaseDtLapseShiftBoundary(CCTK_ARGUMENTS)
@@ -168,5 +336,39 @@ extern "C" void ML_BSSN_UPW_convertToADMBaseDtLapseShiftBoundary(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_UPW_convertToADMBaseDtLapseShiftBoundary_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_UPW_convertToADMBaseDtLapseShiftBoundary_calc_every != ML_BSSN_UPW_convertToADMBaseDtLapseShiftBoundary_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ADMBase::dtlapse","ADMBase::dtshift","grid::coordinates","Grid::coordinates","ML_BSSN_UPW::ML_dtlapse","ML_BSSN_UPW::ML_dtshift","ML_BSSN_UPW::ML_Gamma","ML_BSSN_UPW::ML_lapse","ML_BSSN_UPW::ML_shift","ML_BSSN_UPW::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_UPW_convertToADMBaseDtLapseShiftBoundary", 10, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverBoundaryWithGhosts(cctkGH, &ML_BSSN_UPW_convertToADMBaseDtLapseShiftBoundary_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_UPW_convertToADMBaseDtLapseShiftBoundary_Body");
+ }
}
diff --git a/ML_BSSN_UPW/src/ML_BSSN_UPW_convertToADMBaseFakeDtLapseShift.cc b/ML_BSSN_UPW/src/ML_BSSN_UPW_convertToADMBaseFakeDtLapseShift.cc
index e9e2c5e..2b951cf 100644
--- a/ML_BSSN_UPW/src/ML_BSSN_UPW_convertToADMBaseFakeDtLapseShift.cc
+++ b/ML_BSSN_UPW/src/ML_BSSN_UPW_convertToADMBaseFakeDtLapseShift.cc
@@ -13,15 +13,16 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
-static void ML_BSSN_UPW_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_UPW_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;
@@ -29,20 +30,6 @@ static void ML_BSSN_UPW_convertToADMBaseFakeDtLapseShift_Body(cGH const * restri
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_UPW_convertToADMBaseFakeDtLapseShift_Body");
- }
-
- if (cctk_iteration % ML_BSSN_UPW_convertToADMBaseFakeDtLapseShift_calc_every != ML_BSSN_UPW_convertToADMBaseFakeDtLapseShift_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ADMBase::dtlapse","ADMBase::dtshift","grid::coordinates","Grid::coordinates","ML_BSSN_UPW::ML_dtlapse","ML_BSSN_UPW::ML_dtshift","ML_BSSN_UPW::ML_Gamma","ML_BSSN_UPW::ML_lapse","ML_BSSN_UPW::ML_shift","ML_BSSN_UPW::ML_trace_curv"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_UPW_convertToADMBaseFakeDtLapseShift", 10, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -52,100 +39,281 @@ static void ML_BSSN_UPW_convertToADMBaseFakeDtLapseShift_Body(cGH const * restri
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const p1o24dx = 0.0416666666666666666666666666667*INV(dx);
- CCTK_REAL const p1o24dy = 0.0416666666666666666666666666667*INV(dy);
- CCTK_REAL const p1o24dz = 0.0416666666666666666666666666667*INV(dz);
- CCTK_REAL const p1o64dx = 0.015625*INV(dx);
- CCTK_REAL const p1o64dy = 0.015625*INV(dy);
- CCTK_REAL const p1o64dz = 0.015625*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_UPW_convertToADMBaseFakeDtLapseShift,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_UPW_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 AL = A[index];
- CCTK_REAL alphaL = alpha[index];
- CCTK_REAL B1L = B1[index];
- CCTK_REAL B2L = B2[index];
- CCTK_REAL B3L = B3[index];
- CCTK_REAL beta1L = beta1[index];
- CCTK_REAL beta2L = beta2[index];
- CCTK_REAL beta3L = beta3[index];
- CCTK_REAL rL = r[index];
- CCTK_REAL trKL = trK[index];
- CCTK_REAL Xt1L = Xt1[index];
- CCTK_REAL Xt2L = Xt2[index];
- CCTK_REAL Xt3L = Xt3[index];
+ 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 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 eta = fmin(1,INV(rL)*ToReal(SpatialBetaDriverRadius));
+ CCTK_REAL_VEC eta =
+ kfmin(ToReal(1),kmul(INV(rL),ToReal(SpatialBetaDriverRadius)));
- CCTK_REAL theta = fmin(1,exp(1 -
- rL*INV(ToReal(SpatialShiftGammaCoeffRadius))));
+ CCTK_REAL_VEC theta =
+ kfmin(ToReal(1),kexp(knmsub(rL,INV(ToReal(SpatialShiftGammaCoeffRadius)),ToReal(1))));
- CCTK_REAL dtalpL =
- -(pow(alphaL,ToReal(harmonicN))*ToReal(harmonicF)*(trKL + (AL -
- trKL)*ToReal(LapseACoeff)));
+ CCTK_REAL_VEC dtalpL =
+ kneg(kmul(kpow(alphaL,harmonicN),kmul(ToReal(harmonicF),kmadd(ksub(AL,trKL),ToReal(LapseACoeff),trKL))));
- CCTK_REAL dtbetaxL = theta*(Xt1L + beta1L*eta*ToReal(BetaDriver)*(-1 +
- ToReal(ShiftBCoeff)) + (B1L -
- Xt1L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
+ CCTK_REAL_VEC dtbetaxL;
+ CCTK_REAL_VEC dtbetayL;
+ CCTK_REAL_VEC dtbetazL;
- CCTK_REAL dtbetayL = theta*(Xt2L + beta2L*eta*ToReal(BetaDriver)*(-1 +
- ToReal(ShiftBCoeff)) + (B2L -
- Xt2L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
+ if (harmonicShift)
+ {
+ dtbetaxL = ToReal(0);
+
+ dtbetayL = ToReal(0);
+
+ dtbetazL = ToReal(0);
+ }
+ else
+ {
+ dtbetaxL =
+ kmul(theta,kmul(kadd(Xt1L,kmadd(beta1L,kmul(eta,ToReal(BetaDriver*(-1 +
+ ShiftBCoeff))),kmul(ksub(B1L,Xt1L),ToReal(ShiftBCoeff)))),ToReal(ShiftGammaCoeff)));
+
+ dtbetayL =
+ kmul(theta,kmul(kadd(Xt2L,kmadd(beta2L,kmul(eta,ToReal(BetaDriver*(-1 +
+ ShiftBCoeff))),kmul(ksub(B2L,Xt2L),ToReal(ShiftBCoeff)))),ToReal(ShiftGammaCoeff)));
+
+ dtbetazL =
+ kmul(theta,kmul(kadd(Xt3L,kmadd(beta3L,kmul(eta,ToReal(BetaDriver*(-1 +
+ ShiftBCoeff))),kmul(ksub(B3L,Xt3L),ToReal(ShiftBCoeff)))),ToReal(ShiftGammaCoeff)));
+ }
- CCTK_REAL dtbetazL = theta*(Xt3L + beta3L*eta*ToReal(BetaDriver)*(-1 +
- ToReal(ShiftBCoeff)) + (B3L -
- Xt3L)*ToReal(ShiftBCoeff))*ToReal(ShiftGammaCoeff);
+ /* If necessary, store only partial vectors after the first iteration */
- /* Copy local copies back to grid functions */
- dtalp[index] = dtalpL;
- dtbetax[index] = dtbetaxL;
- dtbetay[index] = dtbetayL;
- dtbetaz[index] = dtbetazL;
+ 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(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);
+ 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(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);
+ 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(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);
+ break;
+ }
+ vec_store_nta(dtalp[index],dtalpL);
+ vec_store_nta(dtbetax[index],dtbetaxL);
+ vec_store_nta(dtbetay[index],dtbetayL);
+ vec_store_nta(dtbetaz[index],dtbetazL);
}
- LC_ENDLOOP3 (ML_BSSN_UPW_convertToADMBaseFakeDtLapseShift);
+ LC_ENDLOOP3VEC (ML_BSSN_UPW_convertToADMBaseFakeDtLapseShift);
}
extern "C" void ML_BSSN_UPW_convertToADMBaseFakeDtLapseShift(CCTK_ARGUMENTS)
@@ -153,5 +321,39 @@ extern "C" void ML_BSSN_UPW_convertToADMBaseFakeDtLapseShift(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_UPW_convertToADMBaseFakeDtLapseShift_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_UPW_convertToADMBaseFakeDtLapseShift_calc_every != ML_BSSN_UPW_convertToADMBaseFakeDtLapseShift_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ADMBase::dtlapse","ADMBase::dtshift","grid::coordinates","Grid::coordinates","ML_BSSN_UPW::ML_dtlapse","ML_BSSN_UPW::ML_dtshift","ML_BSSN_UPW::ML_Gamma","ML_BSSN_UPW::ML_lapse","ML_BSSN_UPW::ML_shift","ML_BSSN_UPW::ML_trace_curv"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_UPW_convertToADMBaseFakeDtLapseShift", 10, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverEverything(cctkGH, &ML_BSSN_UPW_convertToADMBaseFakeDtLapseShift_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_UPW_convertToADMBaseFakeDtLapseShift_Body");
+ }
}
diff --git a/ML_BSSN_UPW/src/ML_BSSN_UPW_enforce.cc b/ML_BSSN_UPW/src/ML_BSSN_UPW_enforce.cc
index 8fcefee..83275eb 100644
--- a/ML_BSSN_UPW/src/ML_BSSN_UPW_enforce.cc
+++ b/ML_BSSN_UPW/src/ML_BSSN_UPW_enforce.cc
@@ -13,15 +13,16 @@
#include "GenericFD.h"
#include "Differencing.h"
#include "loopcontrol.h"
+#include "vectors.h"
/* Define macros used in calculations */
#define INITVALUE (42)
#define QAD(x) (SQR(SQR(x)))
-#define INV(x) ((1.0) / (x))
-#define SQR(x) ((x) * (x))
-#define CUB(x) ((x) * (x) * (x))
+#define INV(x) (kdiv(ToReal(1.0),x))
+#define SQR(x) (kmul(x,x))
+#define CUB(x) (kmul(x,SQR(x)))
-static void ML_BSSN_UPW_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 min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void ML_BSSN_UPW_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;
@@ -29,20 +30,6 @@ static void ML_BSSN_UPW_enforce_Body(cGH const * restrict const cctkGH, int cons
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_UPW_enforce_Body");
- }
-
- if (cctk_iteration % ML_BSSN_UPW_enforce_calc_every != ML_BSSN_UPW_enforce_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_BSSN_UPW::ML_curv","ML_BSSN_UPW::ML_lapse","ML_BSSN_UPW::ML_metric"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_UPW_enforce", 3, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -52,113 +39,297 @@ static void ML_BSSN_UPW_enforce_Body(cGH const * restrict const cctkGH, int cons
ptrdiff_t const cdi = sizeof(CCTK_REAL) * di;
ptrdiff_t const cdj = sizeof(CCTK_REAL) * dj;
ptrdiff_t const cdk = sizeof(CCTK_REAL) * dk;
- CCTK_REAL const dx = ToReal(CCTK_DELTA_SPACE(0));
- CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
- CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
- CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
- CCTK_REAL const dxi = INV(dx);
- CCTK_REAL const dyi = INV(dy);
- CCTK_REAL const dzi = INV(dz);
- CCTK_REAL const khalf = 0.5;
- CCTK_REAL const kthird = 1/3.0;
- CCTK_REAL const ktwothird = 2.0/3.0;
- CCTK_REAL const kfourthird = 4.0/3.0;
- CCTK_REAL const keightthird = 8.0/3.0;
- CCTK_REAL const hdxi = 0.5 * dxi;
- CCTK_REAL const hdyi = 0.5 * dyi;
- CCTK_REAL const hdzi = 0.5 * dzi;
+ CCTK_REAL_VEC const dx = ToReal(CCTK_DELTA_SPACE(0));
+ CCTK_REAL_VEC const dy = ToReal(CCTK_DELTA_SPACE(1));
+ CCTK_REAL_VEC const dz = ToReal(CCTK_DELTA_SPACE(2));
+ CCTK_REAL_VEC const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL_VEC const 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 const p1o12dx = 0.0833333333333333333333333333333*INV(dx);
- CCTK_REAL const p1o12dy = 0.0833333333333333333333333333333*INV(dy);
- CCTK_REAL const p1o12dz = 0.0833333333333333333333333333333*INV(dz);
- CCTK_REAL const p1o144dxdy = 0.00694444444444444444444444444444*INV(dx)*INV(dy);
- CCTK_REAL const p1o144dxdz = 0.00694444444444444444444444444444*INV(dx)*INV(dz);
- CCTK_REAL const p1o144dydz = 0.00694444444444444444444444444444*INV(dy)*INV(dz);
- CCTK_REAL const p1o24dx = 0.0416666666666666666666666666667*INV(dx);
- CCTK_REAL const p1o24dy = 0.0416666666666666666666666666667*INV(dy);
- CCTK_REAL const p1o24dz = 0.0416666666666666666666666666667*INV(dz);
- CCTK_REAL const p1o64dx = 0.015625*INV(dx);
- CCTK_REAL const p1o64dy = 0.015625*INV(dy);
- CCTK_REAL const p1o64dz = 0.015625*INV(dz);
- CCTK_REAL const p1odx = INV(dx);
- CCTK_REAL const p1ody = INV(dy);
- CCTK_REAL const p1odz = INV(dz);
- CCTK_REAL const pm1o12dx2 = -0.0833333333333333333333333333333*INV(SQR(dx));
- CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
- CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ 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(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 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(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 p1o4dx = kmul(INV(dx),ToReal(0.25));
+ 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 p1o4dy = kmul(INV(dy),ToReal(0.25));
+ CCTK_REAL_VEC const p1o4dydz = kmul(INV(dy),kmul(INV(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(dx),kmul(INV(dy),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dxdz = kmul(INV(dx),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o705600dydz = kmul(INV(dy),kmul(INV(dz),ToReal(1.41723356009070294784580498866e-6)));
+ CCTK_REAL_VEC const p1o840dx = kmul(INV(dx),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dy = kmul(INV(dy),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const p1o840dz = kmul(INV(dz),ToReal(0.00119047619047619047619047619048));
+ CCTK_REAL_VEC const 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_LOOP3 (ML_BSSN_UPW_enforce,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
- cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
+ LC_LOOP3VEC (ML_BSSN_UPW_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 alphaL = alpha[index];
- CCTK_REAL At11L = At11[index];
- CCTK_REAL At12L = At12[index];
- CCTK_REAL At13L = At13[index];
- CCTK_REAL At22L = At22[index];
- CCTK_REAL At23L = At23[index];
- CCTK_REAL At33L = At33[index];
- CCTK_REAL gt11L = gt11[index];
- CCTK_REAL gt12L = gt12[index];
- CCTK_REAL gt13L = gt13[index];
- CCTK_REAL gt22L = gt22[index];
- CCTK_REAL gt23L = gt23[index];
- CCTK_REAL gt33L = gt33[index];
+ CCTK_REAL_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 detgt = 1;
+ CCTK_REAL_VEC detgt = ToReal(1);
+
+ CCTK_REAL_VEC gtu11 = kmul(INV(detgt),kmsub(gt22L,gt33L,SQR(gt23L)));
- CCTK_REAL gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L));
+ CCTK_REAL_VEC gtu12 =
+ kmul(INV(detgt),kmsub(gt13L,gt23L,kmul(gt12L,gt33L)));
- CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt);
+ CCTK_REAL_VEC gtu13 =
+ kmul(INV(detgt),kmsub(gt12L,gt23L,kmul(gt13L,gt22L)));
- CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC gtu22 = kmul(INV(detgt),kmsub(gt11L,gt33L,SQR(gt13L)));
- CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L));
+ CCTK_REAL_VEC gtu23 =
+ kmul(INV(detgt),kmsub(gt12L,gt13L,kmul(gt11L,gt23L)));
- CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt);
+ CCTK_REAL_VEC gtu33 = kmul(INV(detgt),kmsub(gt11L,gt22L,SQR(gt12L)));
- CCTK_REAL gtu33 = INV(detgt)*(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)))));
- CCTK_REAL trAt = At11L*gtu11 + At22L*gtu22 + 2*(At12L*gtu12 +
- At13L*gtu13 + At23L*gtu23) + At33L*gtu33;
+ At11L =
+ kmadd(gt11L,kmul(trAt,ToReal(-0.333333333333333333333333333333)),At11L);
- At11L = At11L - 0.333333333333333333333333333333*gt11L*trAt;
+ At12L =
+ kmadd(gt12L,kmul(trAt,ToReal(-0.333333333333333333333333333333)),At12L);
- At12L = At12L - 0.333333333333333333333333333333*gt12L*trAt;
+ At13L =
+ kmadd(gt13L,kmul(trAt,ToReal(-0.333333333333333333333333333333)),At13L);
- At13L = At13L - 0.333333333333333333333333333333*gt13L*trAt;
+ At22L =
+ kmadd(gt22L,kmul(trAt,ToReal(-0.333333333333333333333333333333)),At22L);
- At22L = At22L - 0.333333333333333333333333333333*gt22L*trAt;
+ At23L =
+ kmadd(gt23L,kmul(trAt,ToReal(-0.333333333333333333333333333333)),At23L);
- At23L = At23L - 0.333333333333333333333333333333*gt23L*trAt;
+ At33L =
+ kmadd(gt33L,kmul(trAt,ToReal(-0.333333333333333333333333333333)),At33L);
- At33L = At33L - 0.333333333333333333333333333333*gt33L*trAt;
+ alphaL = kfmax(alphaL,ToReal(MinimumLapse));
- alphaL = fmax(alphaL,ToReal(MinimumLapse));
+ /* If necessary, store only partial vectors after the first iteration */
- /* Copy local copies back to grid functions */
- alpha[index] = alphaL;
- At11[index] = At11L;
- At12[index] = At12L;
- At13[index] = At13L;
- At22[index] = At22L;
- At23[index] = At23L;
- At33[index] = At33L;
+ 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(At11[index],At11L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At12[index],At12L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At13[index],At13L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At22[index],At22L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At23[index],At23L,elt_count_lo,elt_count_hi);
+ vec_store_nta_partial_mid(At33[index],At33L,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(At11[index],At11L,elt_count);
+ vec_store_nta_partial_hi(At12[index],At12L,elt_count);
+ vec_store_nta_partial_hi(At13[index],At13L,elt_count);
+ vec_store_nta_partial_hi(At22[index],At22L,elt_count);
+ vec_store_nta_partial_hi(At23[index],At23L,elt_count);
+ vec_store_nta_partial_hi(At33[index],At33L,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(At11[index],At11L,elt_count);
+ vec_store_nta_partial_lo(At12[index],At12L,elt_count);
+ vec_store_nta_partial_lo(At13[index],At13L,elt_count);
+ vec_store_nta_partial_lo(At22[index],At22L,elt_count);
+ vec_store_nta_partial_lo(At23[index],At23L,elt_count);
+ vec_store_nta_partial_lo(At33[index],At33L,elt_count);
+ break;
+ }
+ vec_store_nta(alpha[index],alphaL);
+ vec_store_nta(At11[index],At11L);
+ vec_store_nta(At12[index],At12L);
+ vec_store_nta(At13[index],At13L);
+ vec_store_nta(At22[index],At22L);
+ vec_store_nta(At23[index],At23L);
+ vec_store_nta(At33[index],At33L);
}
- LC_ENDLOOP3 (ML_BSSN_UPW_enforce);
+ LC_ENDLOOP3VEC (ML_BSSN_UPW_enforce);
}
extern "C" void ML_BSSN_UPW_enforce(CCTK_ARGUMENTS)
@@ -166,5 +337,39 @@ extern "C" void ML_BSSN_UPW_enforce(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_UPW_enforce_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_UPW_enforce_calc_every != ML_BSSN_UPW_enforce_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_BSSN_UPW::ML_curv","ML_BSSN_UPW::ML_lapse","ML_BSSN_UPW::ML_metric"};
+ GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_UPW_enforce", 3, groups);
+
+ switch(fdOrder)
+ {
+ case 2:
+ break;
+
+ case 4:
+ break;
+
+ case 6:
+ break;
+
+ case 8:
+ break;
+ }
+
GenericFD_LoopOverEverything(cctkGH, &ML_BSSN_UPW_enforce_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving ML_BSSN_UPW_enforce_Body");
+ }
}
diff --git a/ML_BSSN_UPW/src/RegisterMoL.cc b/ML_BSSN_UPW/src/RegisterMoL.cc
index e06ade4..7fdd505 100644
--- a/ML_BSSN_UPW/src/RegisterMoL.cc
+++ b/ML_BSSN_UPW/src/RegisterMoL.cc
@@ -37,5 +37,7 @@ extern "C" void ML_BSSN_UPW_RegisterVars(CCTK_ARGUMENTS)
ierr += MoLRegisterEvolved(CCTK_VarIndex("ML_BSSN_UPW::beta2"), CCTK_VarIndex("ML_BSSN_UPW::beta2rhs"));
ierr += MoLRegisterEvolved(CCTK_VarIndex("ML_BSSN_UPW::beta3"), CCTK_VarIndex("ML_BSSN_UPW::beta3rhs"));
ierr += MoLRegisterEvolved(CCTK_VarIndex("ML_BSSN_UPW::trK"), CCTK_VarIndex("ML_BSSN_UPW::trKrhs"));
+
+ /* Register all the evolved Array functions with MoL */
return;
}
diff --git a/ML_BSSN_UPW_Helper/src/SetGroupTags.c b/ML_BSSN_UPW_Helper/src/SetGroupTags.c
index 86c3e64..3ca87a9 100644
--- a/ML_BSSN_UPW_Helper/src/SetGroupTags.c
+++ b/ML_BSSN_UPW_Helper/src/SetGroupTags.c
@@ -15,29 +15,30 @@ ML_BSSN_UPW_SetGroupTags (void)
{
DECLARE_CCTK_PARAMETERS;
- set_group_tags (0, 0, 1, "ADMBase::metric");
- set_group_tags (0, 0, 1, "ADMBase::curv");
- set_group_tags (0, 0, 1, "ADMBase::lapse");
- set_group_tags (0, 0, 1, "ADMBase::shift");
- set_group_tags (0, 0, 1, "ADMBase::dtlapse");
- set_group_tags (0, 0, 1, "ADMBase::dtshift");
+ 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 (0, 0, 0, "ML_BSSN_UPW::ML_cons_detg");
- set_group_tags (0, 0, 0, "ML_BSSN_UPW::ML_cons_Gamma");
- set_group_tags (0, 0, 0, "ML_BSSN_UPW::ML_cons_traceA");
- set_group_tags (0, 0, 0, "ML_BSSN_UPW::ML_Ham");
- set_group_tags (0, 0, 0, "ML_BSSN_UPW::ML_mom");
+ set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_UPW::ML_cons_detg");
+ set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_UPW::ML_cons_Gamma");
+ set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_UPW::ML_cons_traceA");
+ set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_UPW::ML_Ham");
+ set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_UPW::ML_mom");
- int const checkpoint = rhs_timelevels > 1;
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_UPW::ML_log_confacrhs");
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_UPW::ML_metricrhs");
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_UPW::ML_Gammarhs");
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_UPW::ML_trace_curvrhs");
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_UPW::ML_curvrhs");
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_UPW::ML_lapserhs");
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_UPW::ML_dtlapserhs");
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_UPW::ML_shiftrhs");
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN_UPW::ML_dtshiftrhs");
+ int const rhs_checkpoint = rhs_timelevels > 1;
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN_UPW::ML_log_confacrhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN_UPW::ML_metricrhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN_UPW::ML_Gammarhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN_UPW::ML_trace_curvrhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN_UPW::ML_curvrhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN_UPW::ML_lapserhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN_UPW::ML_dtlapserhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN_UPW::ML_shiftrhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN_UPW::ML_dtshiftrhs");
return 0;
}
diff --git a/ML_WaveToy/param.ccl b/ML_WaveToy/param.ccl
index d088d2b..34e3124 100644
--- a/ML_WaveToy/param.ccl
+++ b/ML_WaveToy/param.ccl
@@ -8,6 +8,7 @@ shares: GenericFD
shares: MethodOfLines
USES CCTK_INT MoL_Num_Evolved_Vars
+USES CCTK_INT MoL_Num_ArrayEvolved_Vars
restricted:
CCTK_INT verbose "verbose" STEERABLE=ALWAYS
@@ -22,6 +23,12 @@ CCTK_INT ML_WaveToy_MaxNumEvolvedVars "Number of evolved variables used by this
} 2
restricted:
+CCTK_INT ML_WaveToy_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:2 :: ""
diff --git a/ML_WaveToy/src/Differencing.h b/ML_WaveToy/src/Differencing.h
index cd495e5..b27ce50 100644
--- a/ML_WaveToy/src/Differencing.h
+++ b/ML_WaveToy/src/Differencing.h
@@ -1,144 +1,144 @@
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth1(u) ((-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]))*p1o12dx)
+# define PDstandardNth1(u) ((-8*KRANC_GFOFFSET3D(u,-1,0,0) + 8*KRANC_GFOFFSET3D(u,1,0,0) + KRANC_GFOFFSET3D(u,-2,0,0) - KRANC_GFOFFSET3D(u,2,0,0))*p1o12dx)
#else
# define PDstandardNth1(u) (PDstandardNth1_impl(u,p1o12dx,cdj,cdk))
static CCTK_REAL PDstandardNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]))*p1o12dx;
+ return (-8*KRANC_GFOFFSET3D(u,-1,0,0) + 8*KRANC_GFOFFSET3D(u,1,0,0) + KRANC_GFOFFSET3D(u,-2,0,0) - KRANC_GFOFFSET3D(u,2,0,0))*p1o12dx;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth2(u) ((-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]))*p1o12dy)
+# define PDstandardNth2(u) ((-8*KRANC_GFOFFSET3D(u,0,-1,0) + 8*KRANC_GFOFFSET3D(u,0,1,0) + KRANC_GFOFFSET3D(u,0,-2,0) - KRANC_GFOFFSET3D(u,0,2,0))*p1o12dy)
#else
# define PDstandardNth2(u) (PDstandardNth2_impl(u,p1o12dy,cdj,cdk))
static CCTK_REAL PDstandardNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]))*p1o12dy;
+ return (-8*KRANC_GFOFFSET3D(u,0,-1,0) + 8*KRANC_GFOFFSET3D(u,0,1,0) + KRANC_GFOFFSET3D(u,0,-2,0) - KRANC_GFOFFSET3D(u,0,2,0))*p1o12dy;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth3(u) ((-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]))*p1o12dz)
+# define PDstandardNth3(u) ((-8*KRANC_GFOFFSET3D(u,0,0,-1) + 8*KRANC_GFOFFSET3D(u,0,0,1) + KRANC_GFOFFSET3D(u,0,0,-2) - KRANC_GFOFFSET3D(u,0,0,2))*p1o12dz)
#else
# define PDstandardNth3(u) (PDstandardNth3_impl(u,p1o12dz,cdj,cdk))
static CCTK_REAL PDstandardNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]))*p1o12dz;
+ return (-8*KRANC_GFOFFSET3D(u,0,0,-1) + 8*KRANC_GFOFFSET3D(u,0,0,1) + KRANC_GFOFFSET3D(u,0,0,-2) - KRANC_GFOFFSET3D(u,0,0,2))*p1o12dz;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth11(u) ((30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]))*pm1o12dx2)
+# define PDstandardNth11(u) ((30*KRANC_GFOFFSET3D(u,0,0,0) - 16*(KRANC_GFOFFSET3D(u,-1,0,0) + KRANC_GFOFFSET3D(u,1,0,0)) + KRANC_GFOFFSET3D(u,-2,0,0) + KRANC_GFOFFSET3D(u,2,0,0))*pm1o12dx2)
#else
# define PDstandardNth11(u) (PDstandardNth11_impl(u,pm1o12dx2,cdj,cdk))
static CCTK_REAL PDstandardNth11_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dx2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth11_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dx2, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]))*pm1o12dx2;
+ return (30*KRANC_GFOFFSET3D(u,0,0,0) - 16*(KRANC_GFOFFSET3D(u,-1,0,0) + KRANC_GFOFFSET3D(u,1,0,0)) + KRANC_GFOFFSET3D(u,-2,0,0) + KRANC_GFOFFSET3D(u,2,0,0))*pm1o12dx2;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth22(u) ((30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]))*pm1o12dy2)
+# define PDstandardNth22(u) ((30*KRANC_GFOFFSET3D(u,0,0,0) - 16*(KRANC_GFOFFSET3D(u,0,-1,0) + KRANC_GFOFFSET3D(u,0,1,0)) + KRANC_GFOFFSET3D(u,0,-2,0) + KRANC_GFOFFSET3D(u,0,2,0))*pm1o12dy2)
#else
# define PDstandardNth22(u) (PDstandardNth22_impl(u,pm1o12dy2,cdj,cdk))
static CCTK_REAL PDstandardNth22_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dy2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth22_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dy2, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]))*pm1o12dy2;
+ return (30*KRANC_GFOFFSET3D(u,0,0,0) - 16*(KRANC_GFOFFSET3D(u,0,-1,0) + KRANC_GFOFFSET3D(u,0,1,0)) + KRANC_GFOFFSET3D(u,0,-2,0) + KRANC_GFOFFSET3D(u,0,2,0))*pm1o12dy2;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth33(u) ((30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]))*pm1o12dz2)
+# define PDstandardNth33(u) ((30*KRANC_GFOFFSET3D(u,0,0,0) - 16*(KRANC_GFOFFSET3D(u,0,0,-1) + KRANC_GFOFFSET3D(u,0,0,1)) + KRANC_GFOFFSET3D(u,0,0,-2) + KRANC_GFOFFSET3D(u,0,0,2))*pm1o12dz2)
#else
# define PDstandardNth33(u) (PDstandardNth33_impl(u,pm1o12dz2,cdj,cdk))
static CCTK_REAL PDstandardNth33_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dz2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth33_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dz2, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]))*pm1o12dz2;
+ return (30*KRANC_GFOFFSET3D(u,0,0,0) - 16*(KRANC_GFOFFSET3D(u,0,0,-1) + KRANC_GFOFFSET3D(u,0,0,1)) + KRANC_GFOFFSET3D(u,0,0,-2) + KRANC_GFOFFSET3D(u,0,0,2))*pm1o12dz2;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth12(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-1)+cdk*(0)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(2)+cdk*(0)]))*p1o144dxdy)
+# define PDstandardNth12(u) ((-64*(KRANC_GFOFFSET3D(u,-1,1,0) + KRANC_GFOFFSET3D(u,1,-1,0)) + 64*(KRANC_GFOFFSET3D(u,-1,-1,0) + KRANC_GFOFFSET3D(u,1,1,0)) + 8*(KRANC_GFOFFSET3D(u,-1,2,0) + KRANC_GFOFFSET3D(u,1,-2,0) + KRANC_GFOFFSET3D(u,-2,1,0) + KRANC_GFOFFSET3D(u,2,-1,0)) - 8*(KRANC_GFOFFSET3D(u,-1,-2,0) + KRANC_GFOFFSET3D(u,1,2,0) + KRANC_GFOFFSET3D(u,-2,-1,0) + KRANC_GFOFFSET3D(u,2,1,0)) + KRANC_GFOFFSET3D(u,-2,-2,0) - KRANC_GFOFFSET3D(u,-2,2,0) - KRANC_GFOFFSET3D(u,2,-2,0) + KRANC_GFOFFSET3D(u,2,2,0))*p1o144dxdy)
#else
# define PDstandardNth12(u) (PDstandardNth12_impl(u,p1o144dxdy,cdj,cdk))
static CCTK_REAL PDstandardNth12_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth12_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-1)+cdk*(0)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(2)+cdk*(0)]))*p1o144dxdy;
+ return (-64*(KRANC_GFOFFSET3D(u,-1,1,0) + KRANC_GFOFFSET3D(u,1,-1,0)) + 64*(KRANC_GFOFFSET3D(u,-1,-1,0) + KRANC_GFOFFSET3D(u,1,1,0)) + 8*(KRANC_GFOFFSET3D(u,-1,2,0) + KRANC_GFOFFSET3D(u,1,-2,0) + KRANC_GFOFFSET3D(u,-2,1,0) + KRANC_GFOFFSET3D(u,2,-1,0)) - 8*(KRANC_GFOFFSET3D(u,-1,-2,0) + KRANC_GFOFFSET3D(u,1,2,0) + KRANC_GFOFFSET3D(u,-2,-1,0) + KRANC_GFOFFSET3D(u,2,1,0)) + KRANC_GFOFFSET3D(u,-2,-2,0) - KRANC_GFOFFSET3D(u,-2,2,0) - KRANC_GFOFFSET3D(u,2,-2,0) + KRANC_GFOFFSET3D(u,2,2,0))*p1o144dxdy;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth13(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(2)]))*p1o144dxdz)
+# define PDstandardNth13(u) ((-64*(KRANC_GFOFFSET3D(u,-1,0,1) + KRANC_GFOFFSET3D(u,1,0,-1)) + 64*(KRANC_GFOFFSET3D(u,-1,0,-1) + KRANC_GFOFFSET3D(u,1,0,1)) + 8*(KRANC_GFOFFSET3D(u,-1,0,2) + KRANC_GFOFFSET3D(u,1,0,-2) + KRANC_GFOFFSET3D(u,-2,0,1) + KRANC_GFOFFSET3D(u,2,0,-1)) - 8*(KRANC_GFOFFSET3D(u,-1,0,-2) + KRANC_GFOFFSET3D(u,1,0,2) + KRANC_GFOFFSET3D(u,-2,0,-1) + KRANC_GFOFFSET3D(u,2,0,1)) + KRANC_GFOFFSET3D(u,-2,0,-2) - KRANC_GFOFFSET3D(u,-2,0,2) - KRANC_GFOFFSET3D(u,2,0,-2) + KRANC_GFOFFSET3D(u,2,0,2))*p1o144dxdz)
#else
# define PDstandardNth13(u) (PDstandardNth13_impl(u,p1o144dxdz,cdj,cdk))
static CCTK_REAL PDstandardNth13_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth13_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(2)]))*p1o144dxdz;
+ return (-64*(KRANC_GFOFFSET3D(u,-1,0,1) + KRANC_GFOFFSET3D(u,1,0,-1)) + 64*(KRANC_GFOFFSET3D(u,-1,0,-1) + KRANC_GFOFFSET3D(u,1,0,1)) + 8*(KRANC_GFOFFSET3D(u,-1,0,2) + KRANC_GFOFFSET3D(u,1,0,-2) + KRANC_GFOFFSET3D(u,-2,0,1) + KRANC_GFOFFSET3D(u,2,0,-1)) - 8*(KRANC_GFOFFSET3D(u,-1,0,-2) + KRANC_GFOFFSET3D(u,1,0,2) + KRANC_GFOFFSET3D(u,-2,0,-1) + KRANC_GFOFFSET3D(u,2,0,1)) + KRANC_GFOFFSET3D(u,-2,0,-2) - KRANC_GFOFFSET3D(u,-2,0,2) - KRANC_GFOFFSET3D(u,2,0,-2) + KRANC_GFOFFSET3D(u,2,0,2))*p1o144dxdz;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth21(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-1)+cdk*(0)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(2)+cdk*(0)]))*p1o144dxdy)
+# define PDstandardNth21(u) ((-64*(KRANC_GFOFFSET3D(u,-1,1,0) + KRANC_GFOFFSET3D(u,1,-1,0)) + 64*(KRANC_GFOFFSET3D(u,-1,-1,0) + KRANC_GFOFFSET3D(u,1,1,0)) + 8*(KRANC_GFOFFSET3D(u,-1,2,0) + KRANC_GFOFFSET3D(u,1,-2,0) + KRANC_GFOFFSET3D(u,-2,1,0) + KRANC_GFOFFSET3D(u,2,-1,0)) - 8*(KRANC_GFOFFSET3D(u,-1,-2,0) + KRANC_GFOFFSET3D(u,1,2,0) + KRANC_GFOFFSET3D(u,-2,-1,0) + KRANC_GFOFFSET3D(u,2,1,0)) + KRANC_GFOFFSET3D(u,-2,-2,0) - KRANC_GFOFFSET3D(u,-2,2,0) - KRANC_GFOFFSET3D(u,2,-2,0) + KRANC_GFOFFSET3D(u,2,2,0))*p1o144dxdy)
#else
# define PDstandardNth21(u) (PDstandardNth21_impl(u,p1o144dxdy,cdj,cdk))
static CCTK_REAL PDstandardNth21_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth21_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-1)+cdk*(0)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(2)+cdk*(0)]))*p1o144dxdy;
+ return (-64*(KRANC_GFOFFSET3D(u,-1,1,0) + KRANC_GFOFFSET3D(u,1,-1,0)) + 64*(KRANC_GFOFFSET3D(u,-1,-1,0) + KRANC_GFOFFSET3D(u,1,1,0)) + 8*(KRANC_GFOFFSET3D(u,-1,2,0) + KRANC_GFOFFSET3D(u,1,-2,0) + KRANC_GFOFFSET3D(u,-2,1,0) + KRANC_GFOFFSET3D(u,2,-1,0)) - 8*(KRANC_GFOFFSET3D(u,-1,-2,0) + KRANC_GFOFFSET3D(u,1,2,0) + KRANC_GFOFFSET3D(u,-2,-1,0) + KRANC_GFOFFSET3D(u,2,1,0)) + KRANC_GFOFFSET3D(u,-2,-2,0) - KRANC_GFOFFSET3D(u,-2,2,0) - KRANC_GFOFFSET3D(u,2,-2,0) + KRANC_GFOFFSET3D(u,2,2,0))*p1o144dxdy;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth23(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(2)]))*p1o144dydz)
+# define PDstandardNth23(u) ((-64*(KRANC_GFOFFSET3D(u,0,-1,1) + KRANC_GFOFFSET3D(u,0,1,-1)) + 64*(KRANC_GFOFFSET3D(u,0,-1,-1) + KRANC_GFOFFSET3D(u,0,1,1)) + 8*(KRANC_GFOFFSET3D(u,0,-1,2) + KRANC_GFOFFSET3D(u,0,1,-2) + KRANC_GFOFFSET3D(u,0,-2,1) + KRANC_GFOFFSET3D(u,0,2,-1)) - 8*(KRANC_GFOFFSET3D(u,0,-1,-2) + KRANC_GFOFFSET3D(u,0,1,2) + KRANC_GFOFFSET3D(u,0,-2,-1) + KRANC_GFOFFSET3D(u,0,2,1)) + KRANC_GFOFFSET3D(u,0,-2,-2) - KRANC_GFOFFSET3D(u,0,-2,2) - KRANC_GFOFFSET3D(u,0,2,-2) + KRANC_GFOFFSET3D(u,0,2,2))*p1o144dydz)
#else
# define PDstandardNth23(u) (PDstandardNth23_impl(u,p1o144dydz,cdj,cdk))
static CCTK_REAL PDstandardNth23_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dydz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth23_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dydz, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(2)]))*p1o144dydz;
+ return (-64*(KRANC_GFOFFSET3D(u,0,-1,1) + KRANC_GFOFFSET3D(u,0,1,-1)) + 64*(KRANC_GFOFFSET3D(u,0,-1,-1) + KRANC_GFOFFSET3D(u,0,1,1)) + 8*(KRANC_GFOFFSET3D(u,0,-1,2) + KRANC_GFOFFSET3D(u,0,1,-2) + KRANC_GFOFFSET3D(u,0,-2,1) + KRANC_GFOFFSET3D(u,0,2,-1)) - 8*(KRANC_GFOFFSET3D(u,0,-1,-2) + KRANC_GFOFFSET3D(u,0,1,2) + KRANC_GFOFFSET3D(u,0,-2,-1) + KRANC_GFOFFSET3D(u,0,2,1)) + KRANC_GFOFFSET3D(u,0,-2,-2) - KRANC_GFOFFSET3D(u,0,-2,2) - KRANC_GFOFFSET3D(u,0,2,-2) + KRANC_GFOFFSET3D(u,0,2,2))*p1o144dydz;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth31(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(2)]))*p1o144dxdz)
+# define PDstandardNth31(u) ((-64*(KRANC_GFOFFSET3D(u,-1,0,1) + KRANC_GFOFFSET3D(u,1,0,-1)) + 64*(KRANC_GFOFFSET3D(u,-1,0,-1) + KRANC_GFOFFSET3D(u,1,0,1)) + 8*(KRANC_GFOFFSET3D(u,-1,0,2) + KRANC_GFOFFSET3D(u,1,0,-2) + KRANC_GFOFFSET3D(u,-2,0,1) + KRANC_GFOFFSET3D(u,2,0,-1)) - 8*(KRANC_GFOFFSET3D(u,-1,0,-2) + KRANC_GFOFFSET3D(u,1,0,2) + KRANC_GFOFFSET3D(u,-2,0,-1) + KRANC_GFOFFSET3D(u,2,0,1)) + KRANC_GFOFFSET3D(u,-2,0,-2) - KRANC_GFOFFSET3D(u,-2,0,2) - KRANC_GFOFFSET3D(u,2,0,-2) + KRANC_GFOFFSET3D(u,2,0,2))*p1o144dxdz)
#else
# define PDstandardNth31(u) (PDstandardNth31_impl(u,p1o144dxdz,cdj,cdk))
static CCTK_REAL PDstandardNth31_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth31_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(2)]))*p1o144dxdz;
+ return (-64*(KRANC_GFOFFSET3D(u,-1,0,1) + KRANC_GFOFFSET3D(u,1,0,-1)) + 64*(KRANC_GFOFFSET3D(u,-1,0,-1) + KRANC_GFOFFSET3D(u,1,0,1)) + 8*(KRANC_GFOFFSET3D(u,-1,0,2) + KRANC_GFOFFSET3D(u,1,0,-2) + KRANC_GFOFFSET3D(u,-2,0,1) + KRANC_GFOFFSET3D(u,2,0,-1)) - 8*(KRANC_GFOFFSET3D(u,-1,0,-2) + KRANC_GFOFFSET3D(u,1,0,2) + KRANC_GFOFFSET3D(u,-2,0,-1) + KRANC_GFOFFSET3D(u,2,0,1)) + KRANC_GFOFFSET3D(u,-2,0,-2) - KRANC_GFOFFSET3D(u,-2,0,2) - KRANC_GFOFFSET3D(u,2,0,-2) + KRANC_GFOFFSET3D(u,2,0,2))*p1o144dxdz;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth32(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(2)]))*p1o144dydz)
+# define PDstandardNth32(u) ((-64*(KRANC_GFOFFSET3D(u,0,-1,1) + KRANC_GFOFFSET3D(u,0,1,-1)) + 64*(KRANC_GFOFFSET3D(u,0,-1,-1) + KRANC_GFOFFSET3D(u,0,1,1)) + 8*(KRANC_GFOFFSET3D(u,0,-1,2) + KRANC_GFOFFSET3D(u,0,1,-2) + KRANC_GFOFFSET3D(u,0,-2,1) + KRANC_GFOFFSET3D(u,0,2,-1)) - 8*(KRANC_GFOFFSET3D(u,0,-1,-2) + KRANC_GFOFFSET3D(u,0,1,2) + KRANC_GFOFFSET3D(u,0,-2,-1) + KRANC_GFOFFSET3D(u,0,2,1)) + KRANC_GFOFFSET3D(u,0,-2,-2) - KRANC_GFOFFSET3D(u,0,-2,2) - KRANC_GFOFFSET3D(u,0,2,-2) + KRANC_GFOFFSET3D(u,0,2,2))*p1o144dydz)
#else
# define PDstandardNth32(u) (PDstandardNth32_impl(u,p1o144dydz,cdj,cdk))
static CCTK_REAL PDstandardNth32_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dydz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth32_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dydz, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(2)]))*p1o144dydz;
+ return (-64*(KRANC_GFOFFSET3D(u,0,-1,1) + KRANC_GFOFFSET3D(u,0,1,-1)) + 64*(KRANC_GFOFFSET3D(u,0,-1,-1) + KRANC_GFOFFSET3D(u,0,1,1)) + 8*(KRANC_GFOFFSET3D(u,0,-1,2) + KRANC_GFOFFSET3D(u,0,1,-2) + KRANC_GFOFFSET3D(u,0,-2,1) + KRANC_GFOFFSET3D(u,0,2,-1)) - 8*(KRANC_GFOFFSET3D(u,0,-1,-2) + KRANC_GFOFFSET3D(u,0,1,2) + KRANC_GFOFFSET3D(u,0,-2,-1) + KRANC_GFOFFSET3D(u,0,2,1)) + KRANC_GFOFFSET3D(u,0,-2,-2) - KRANC_GFOFFSET3D(u,0,-2,2) - KRANC_GFOFFSET3D(u,0,2,-2) + KRANC_GFOFFSET3D(u,0,2,2))*p1o144dydz;
}
#endif
diff --git a/ML_WaveToy/src/RegisterMoL.cc b/ML_WaveToy/src/RegisterMoL.cc
index 21434f5..8881277 100644
--- a/ML_WaveToy/src/RegisterMoL.cc
+++ b/ML_WaveToy/src/RegisterMoL.cc
@@ -14,5 +14,7 @@ extern "C" void ML_WaveToy_RegisterVars(CCTK_ARGUMENTS)
/* Register all the evolved grid functions with MoL */
ierr += MoLRegisterEvolved(CCTK_VarIndex("ML_WaveToy::rho"), CCTK_VarIndex("ML_WaveToy::rhorhs"));
ierr += MoLRegisterEvolved(CCTK_VarIndex("ML_WaveToy::u"), CCTK_VarIndex("ML_WaveToy::urhs"));
+
+ /* Register all the evolved Array functions with MoL */
return;
}
diff --git a/ML_WaveToy/src/WT_Gaussian.cc b/ML_WaveToy/src/WT_Gaussian.cc
index 3933786..e6faf2f 100644
--- a/ML_WaveToy/src/WT_Gaussian.cc
+++ b/ML_WaveToy/src/WT_Gaussian.cc
@@ -21,7 +21,7 @@
#define SQR(x) ((x) * (x))
#define CUB(x) ((x) * (x) * (x))
-static void WT_Gaussian_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void WT_Gaussian_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const imin[3], int const imax[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
{
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
@@ -29,20 +29,6 @@ static void WT_Gaussian_Body(cGH const * restrict const cctkGH, int const dir, i
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering WT_Gaussian_Body");
- }
-
- if (cctk_iteration % WT_Gaussian_calc_every != WT_Gaussian_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_WaveToy::WT_rho","ML_WaveToy::WT_u"};
- GenericFD_AssertGroupStorage(cctkGH, "WT_Gaussian", 2, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -56,6 +42,7 @@ static void WT_Gaussian_Body(cGH const * restrict const cctkGH, int const dir, i
CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL const t = ToReal(cctk_time);
CCTK_REAL const dxi = INV(dx);
CCTK_REAL const dyi = INV(dy);
CCTK_REAL const dzi = INV(dz);
@@ -79,10 +66,18 @@ static void WT_Gaussian_Body(cGH const * restrict const cctkGH, int const dir, i
CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ /* 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_LOOP3 (WT_Gaussian,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
+ i,j,k, imin[0],imin[1],imin[2], imax[0],imax[1],imax[2],
cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
{
ptrdiff_t const index = di*i + dj*j + dk*k;
@@ -112,5 +107,25 @@ extern "C" void WT_Gaussian(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering WT_Gaussian_Body");
+ }
+
+ if (cctk_iteration % WT_Gaussian_calc_every != WT_Gaussian_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_WaveToy::WT_rho","ML_WaveToy::WT_u"};
+ GenericFD_AssertGroupStorage(cctkGH, "WT_Gaussian", 2, groups);
+
+
GenericFD_LoopOverEverything(cctkGH, &WT_Gaussian_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving WT_Gaussian_Body");
+ }
}
diff --git a/ML_WaveToy/src/WT_RHS.cc b/ML_WaveToy/src/WT_RHS.cc
index b6c7b2a..01cb50e 100644
--- a/ML_WaveToy/src/WT_RHS.cc
+++ b/ML_WaveToy/src/WT_RHS.cc
@@ -36,7 +36,7 @@ extern "C" void WT_RHS_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void WT_RHS_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void WT_RHS_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;
@@ -44,21 +44,6 @@ static void WT_RHS_Body(cGH const * restrict const cctkGH, int const dir, int co
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering WT_RHS_Body");
- }
-
- if (cctk_iteration % WT_RHS_calc_every != WT_RHS_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_WaveToy::WT_rho","ML_WaveToy::WT_rhorhs","ML_WaveToy::WT_u","ML_WaveToy::WT_urhs"};
- GenericFD_AssertGroupStorage(cctkGH, "WT_RHS", 4, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "WT_RHS", 2, 2, 2);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -72,6 +57,7 @@ static void WT_RHS_Body(cGH const * restrict const cctkGH, int const dir, int co
CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL const t = ToReal(cctk_time);
CCTK_REAL const dxi = INV(dx);
CCTK_REAL const dyi = INV(dy);
CCTK_REAL const dzi = INV(dz);
@@ -95,10 +81,18 @@ static void WT_RHS_Body(cGH const * restrict const cctkGH, int const dir, int co
CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ /* 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_LOOP3 (WT_RHS,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
+ i,j,k, imin[0],imin[1],imin[2], imax[0],imax[1],imax[2],
cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
{
ptrdiff_t const index = di*i + dj*j + dk*k;
@@ -134,5 +128,26 @@ extern "C" void WT_RHS(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering WT_RHS_Body");
+ }
+
+ if (cctk_iteration % WT_RHS_calc_every != WT_RHS_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_WaveToy::WT_rho","ML_WaveToy::WT_rhorhs","ML_WaveToy::WT_u","ML_WaveToy::WT_urhs"};
+ GenericFD_AssertGroupStorage(cctkGH, "WT_RHS", 4, groups);
+
+ GenericFD_EnsureStencilFits(cctkGH, "WT_RHS", 2, 2, 2);
+
GenericFD_LoopOverInterior(cctkGH, &WT_RHS_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving WT_RHS_Body");
+ }
}
diff --git a/ML_WaveToyFO/param.ccl b/ML_WaveToyFO/param.ccl
index cef897e..854aee9 100644
--- a/ML_WaveToyFO/param.ccl
+++ b/ML_WaveToyFO/param.ccl
@@ -8,6 +8,7 @@ shares: GenericFD
shares: MethodOfLines
USES CCTK_INT MoL_Num_Evolved_Vars
+USES CCTK_INT MoL_Num_ArrayEvolved_Vars
restricted:
CCTK_INT verbose "verbose" STEERABLE=ALWAYS
@@ -22,6 +23,12 @@ CCTK_INT ML_WaveToyFO_MaxNumEvolvedVars "Number of evolved variables used by thi
} 5
restricted:
+CCTK_INT ML_WaveToyFO_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:2 :: ""
diff --git a/ML_WaveToyFO/src/Differencing.h b/ML_WaveToyFO/src/Differencing.h
index cd495e5..b27ce50 100644
--- a/ML_WaveToyFO/src/Differencing.h
+++ b/ML_WaveToyFO/src/Differencing.h
@@ -1,144 +1,144 @@
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth1(u) ((-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]))*p1o12dx)
+# define PDstandardNth1(u) ((-8*KRANC_GFOFFSET3D(u,-1,0,0) + 8*KRANC_GFOFFSET3D(u,1,0,0) + KRANC_GFOFFSET3D(u,-2,0,0) - KRANC_GFOFFSET3D(u,2,0,0))*p1o12dx)
#else
# define PDstandardNth1(u) (PDstandardNth1_impl(u,p1o12dx,cdj,cdk))
static CCTK_REAL PDstandardNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]))*p1o12dx;
+ return (-8*KRANC_GFOFFSET3D(u,-1,0,0) + 8*KRANC_GFOFFSET3D(u,1,0,0) + KRANC_GFOFFSET3D(u,-2,0,0) - KRANC_GFOFFSET3D(u,2,0,0))*p1o12dx;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth2(u) ((-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]))*p1o12dy)
+# define PDstandardNth2(u) ((-8*KRANC_GFOFFSET3D(u,0,-1,0) + 8*KRANC_GFOFFSET3D(u,0,1,0) + KRANC_GFOFFSET3D(u,0,-2,0) - KRANC_GFOFFSET3D(u,0,2,0))*p1o12dy)
#else
# define PDstandardNth2(u) (PDstandardNth2_impl(u,p1o12dy,cdj,cdk))
static CCTK_REAL PDstandardNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]))*p1o12dy;
+ return (-8*KRANC_GFOFFSET3D(u,0,-1,0) + 8*KRANC_GFOFFSET3D(u,0,1,0) + KRANC_GFOFFSET3D(u,0,-2,0) - KRANC_GFOFFSET3D(u,0,2,0))*p1o12dy;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth3(u) ((-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]))*p1o12dz)
+# define PDstandardNth3(u) ((-8*KRANC_GFOFFSET3D(u,0,0,-1) + 8*KRANC_GFOFFSET3D(u,0,0,1) + KRANC_GFOFFSET3D(u,0,0,-2) - KRANC_GFOFFSET3D(u,0,0,2))*p1o12dz)
#else
# define PDstandardNth3(u) (PDstandardNth3_impl(u,p1o12dz,cdj,cdk))
static CCTK_REAL PDstandardNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o12dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + 8*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]))*p1o12dz;
+ return (-8*KRANC_GFOFFSET3D(u,0,0,-1) + 8*KRANC_GFOFFSET3D(u,0,0,1) + KRANC_GFOFFSET3D(u,0,0,-2) - KRANC_GFOFFSET3D(u,0,0,2))*p1o12dz;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth11(u) ((30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]))*pm1o12dx2)
+# define PDstandardNth11(u) ((30*KRANC_GFOFFSET3D(u,0,0,0) - 16*(KRANC_GFOFFSET3D(u,-1,0,0) + KRANC_GFOFFSET3D(u,1,0,0)) + KRANC_GFOFFSET3D(u,-2,0,0) + KRANC_GFOFFSET3D(u,2,0,0))*pm1o12dx2)
#else
# define PDstandardNth11(u) (PDstandardNth11_impl(u,pm1o12dx2,cdj,cdk))
static CCTK_REAL PDstandardNth11_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dx2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth11_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dx2, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(0)]))*pm1o12dx2;
+ return (30*KRANC_GFOFFSET3D(u,0,0,0) - 16*(KRANC_GFOFFSET3D(u,-1,0,0) + KRANC_GFOFFSET3D(u,1,0,0)) + KRANC_GFOFFSET3D(u,-2,0,0) + KRANC_GFOFFSET3D(u,2,0,0))*pm1o12dx2;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth22(u) ((30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]))*pm1o12dy2)
+# define PDstandardNth22(u) ((30*KRANC_GFOFFSET3D(u,0,0,0) - 16*(KRANC_GFOFFSET3D(u,0,-1,0) + KRANC_GFOFFSET3D(u,0,1,0)) + KRANC_GFOFFSET3D(u,0,-2,0) + KRANC_GFOFFSET3D(u,0,2,0))*pm1o12dy2)
#else
# define PDstandardNth22(u) (PDstandardNth22_impl(u,pm1o12dy2,cdj,cdk))
static CCTK_REAL PDstandardNth22_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dy2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth22_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dy2, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(0)]))*pm1o12dy2;
+ return (30*KRANC_GFOFFSET3D(u,0,0,0) - 16*(KRANC_GFOFFSET3D(u,0,-1,0) + KRANC_GFOFFSET3D(u,0,1,0)) + KRANC_GFOFFSET3D(u,0,-2,0) + KRANC_GFOFFSET3D(u,0,2,0))*pm1o12dy2;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth33(u) ((30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]))*pm1o12dz2)
+# define PDstandardNth33(u) ((30*KRANC_GFOFFSET3D(u,0,0,0) - 16*(KRANC_GFOFFSET3D(u,0,0,-1) + KRANC_GFOFFSET3D(u,0,0,1)) + KRANC_GFOFFSET3D(u,0,0,-2) + KRANC_GFOFFSET3D(u,0,0,2))*pm1o12dz2)
#else
# define PDstandardNth33(u) (PDstandardNth33_impl(u,pm1o12dz2,cdj,cdk))
static CCTK_REAL PDstandardNth33_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dz2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth33_impl(CCTK_REAL const* restrict const u, CCTK_REAL const pm1o12dz2, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (30*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) - 16*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(2)]))*pm1o12dz2;
+ return (30*KRANC_GFOFFSET3D(u,0,0,0) - 16*(KRANC_GFOFFSET3D(u,0,0,-1) + KRANC_GFOFFSET3D(u,0,0,1)) + KRANC_GFOFFSET3D(u,0,0,-2) + KRANC_GFOFFSET3D(u,0,0,2))*pm1o12dz2;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth12(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-1)+cdk*(0)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(2)+cdk*(0)]))*p1o144dxdy)
+# define PDstandardNth12(u) ((-64*(KRANC_GFOFFSET3D(u,-1,1,0) + KRANC_GFOFFSET3D(u,1,-1,0)) + 64*(KRANC_GFOFFSET3D(u,-1,-1,0) + KRANC_GFOFFSET3D(u,1,1,0)) + 8*(KRANC_GFOFFSET3D(u,-1,2,0) + KRANC_GFOFFSET3D(u,1,-2,0) + KRANC_GFOFFSET3D(u,-2,1,0) + KRANC_GFOFFSET3D(u,2,-1,0)) - 8*(KRANC_GFOFFSET3D(u,-1,-2,0) + KRANC_GFOFFSET3D(u,1,2,0) + KRANC_GFOFFSET3D(u,-2,-1,0) + KRANC_GFOFFSET3D(u,2,1,0)) + KRANC_GFOFFSET3D(u,-2,-2,0) - KRANC_GFOFFSET3D(u,-2,2,0) - KRANC_GFOFFSET3D(u,2,-2,0) + KRANC_GFOFFSET3D(u,2,2,0))*p1o144dxdy)
#else
# define PDstandardNth12(u) (PDstandardNth12_impl(u,p1o144dxdy,cdj,cdk))
static CCTK_REAL PDstandardNth12_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth12_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-1)+cdk*(0)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(2)+cdk*(0)]))*p1o144dxdy;
+ return (-64*(KRANC_GFOFFSET3D(u,-1,1,0) + KRANC_GFOFFSET3D(u,1,-1,0)) + 64*(KRANC_GFOFFSET3D(u,-1,-1,0) + KRANC_GFOFFSET3D(u,1,1,0)) + 8*(KRANC_GFOFFSET3D(u,-1,2,0) + KRANC_GFOFFSET3D(u,1,-2,0) + KRANC_GFOFFSET3D(u,-2,1,0) + KRANC_GFOFFSET3D(u,2,-1,0)) - 8*(KRANC_GFOFFSET3D(u,-1,-2,0) + KRANC_GFOFFSET3D(u,1,2,0) + KRANC_GFOFFSET3D(u,-2,-1,0) + KRANC_GFOFFSET3D(u,2,1,0)) + KRANC_GFOFFSET3D(u,-2,-2,0) - KRANC_GFOFFSET3D(u,-2,2,0) - KRANC_GFOFFSET3D(u,2,-2,0) + KRANC_GFOFFSET3D(u,2,2,0))*p1o144dxdy;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth13(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(2)]))*p1o144dxdz)
+# define PDstandardNth13(u) ((-64*(KRANC_GFOFFSET3D(u,-1,0,1) + KRANC_GFOFFSET3D(u,1,0,-1)) + 64*(KRANC_GFOFFSET3D(u,-1,0,-1) + KRANC_GFOFFSET3D(u,1,0,1)) + 8*(KRANC_GFOFFSET3D(u,-1,0,2) + KRANC_GFOFFSET3D(u,1,0,-2) + KRANC_GFOFFSET3D(u,-2,0,1) + KRANC_GFOFFSET3D(u,2,0,-1)) - 8*(KRANC_GFOFFSET3D(u,-1,0,-2) + KRANC_GFOFFSET3D(u,1,0,2) + KRANC_GFOFFSET3D(u,-2,0,-1) + KRANC_GFOFFSET3D(u,2,0,1)) + KRANC_GFOFFSET3D(u,-2,0,-2) - KRANC_GFOFFSET3D(u,-2,0,2) - KRANC_GFOFFSET3D(u,2,0,-2) + KRANC_GFOFFSET3D(u,2,0,2))*p1o144dxdz)
#else
# define PDstandardNth13(u) (PDstandardNth13_impl(u,p1o144dxdz,cdj,cdk))
static CCTK_REAL PDstandardNth13_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth13_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(2)]))*p1o144dxdz;
+ return (-64*(KRANC_GFOFFSET3D(u,-1,0,1) + KRANC_GFOFFSET3D(u,1,0,-1)) + 64*(KRANC_GFOFFSET3D(u,-1,0,-1) + KRANC_GFOFFSET3D(u,1,0,1)) + 8*(KRANC_GFOFFSET3D(u,-1,0,2) + KRANC_GFOFFSET3D(u,1,0,-2) + KRANC_GFOFFSET3D(u,-2,0,1) + KRANC_GFOFFSET3D(u,2,0,-1)) - 8*(KRANC_GFOFFSET3D(u,-1,0,-2) + KRANC_GFOFFSET3D(u,1,0,2) + KRANC_GFOFFSET3D(u,-2,0,-1) + KRANC_GFOFFSET3D(u,2,0,1)) + KRANC_GFOFFSET3D(u,-2,0,-2) - KRANC_GFOFFSET3D(u,-2,0,2) - KRANC_GFOFFSET3D(u,2,0,-2) + KRANC_GFOFFSET3D(u,2,0,2))*p1o144dxdz;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth21(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-1)+cdk*(0)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(2)+cdk*(0)]))*p1o144dxdy)
+# define PDstandardNth21(u) ((-64*(KRANC_GFOFFSET3D(u,-1,1,0) + KRANC_GFOFFSET3D(u,1,-1,0)) + 64*(KRANC_GFOFFSET3D(u,-1,-1,0) + KRANC_GFOFFSET3D(u,1,1,0)) + 8*(KRANC_GFOFFSET3D(u,-1,2,0) + KRANC_GFOFFSET3D(u,1,-2,0) + KRANC_GFOFFSET3D(u,-2,1,0) + KRANC_GFOFFSET3D(u,2,-1,0)) - 8*(KRANC_GFOFFSET3D(u,-1,-2,0) + KRANC_GFOFFSET3D(u,1,2,0) + KRANC_GFOFFSET3D(u,-2,-1,0) + KRANC_GFOFFSET3D(u,2,1,0)) + KRANC_GFOFFSET3D(u,-2,-2,0) - KRANC_GFOFFSET3D(u,-2,2,0) - KRANC_GFOFFSET3D(u,2,-2,0) + KRANC_GFOFFSET3D(u,2,2,0))*p1o144dxdy)
#else
# define PDstandardNth21(u) (PDstandardNth21_impl(u,p1o144dxdy,cdj,cdk))
static CCTK_REAL PDstandardNth21_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth21_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-1)+cdk*(0)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(1)+cdk*(0)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(-2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(2)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(-2)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(2)+cdk*(0)]))*p1o144dxdy;
+ return (-64*(KRANC_GFOFFSET3D(u,-1,1,0) + KRANC_GFOFFSET3D(u,1,-1,0)) + 64*(KRANC_GFOFFSET3D(u,-1,-1,0) + KRANC_GFOFFSET3D(u,1,1,0)) + 8*(KRANC_GFOFFSET3D(u,-1,2,0) + KRANC_GFOFFSET3D(u,1,-2,0) + KRANC_GFOFFSET3D(u,-2,1,0) + KRANC_GFOFFSET3D(u,2,-1,0)) - 8*(KRANC_GFOFFSET3D(u,-1,-2,0) + KRANC_GFOFFSET3D(u,1,2,0) + KRANC_GFOFFSET3D(u,-2,-1,0) + KRANC_GFOFFSET3D(u,2,1,0)) + KRANC_GFOFFSET3D(u,-2,-2,0) - KRANC_GFOFFSET3D(u,-2,2,0) - KRANC_GFOFFSET3D(u,2,-2,0) + KRANC_GFOFFSET3D(u,2,2,0))*p1o144dxdy;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth23(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(2)]))*p1o144dydz)
+# define PDstandardNth23(u) ((-64*(KRANC_GFOFFSET3D(u,0,-1,1) + KRANC_GFOFFSET3D(u,0,1,-1)) + 64*(KRANC_GFOFFSET3D(u,0,-1,-1) + KRANC_GFOFFSET3D(u,0,1,1)) + 8*(KRANC_GFOFFSET3D(u,0,-1,2) + KRANC_GFOFFSET3D(u,0,1,-2) + KRANC_GFOFFSET3D(u,0,-2,1) + KRANC_GFOFFSET3D(u,0,2,-1)) - 8*(KRANC_GFOFFSET3D(u,0,-1,-2) + KRANC_GFOFFSET3D(u,0,1,2) + KRANC_GFOFFSET3D(u,0,-2,-1) + KRANC_GFOFFSET3D(u,0,2,1)) + KRANC_GFOFFSET3D(u,0,-2,-2) - KRANC_GFOFFSET3D(u,0,-2,2) - KRANC_GFOFFSET3D(u,0,2,-2) + KRANC_GFOFFSET3D(u,0,2,2))*p1o144dydz)
#else
# define PDstandardNth23(u) (PDstandardNth23_impl(u,p1o144dydz,cdj,cdk))
static CCTK_REAL PDstandardNth23_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dydz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth23_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dydz, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(2)]))*p1o144dydz;
+ return (-64*(KRANC_GFOFFSET3D(u,0,-1,1) + KRANC_GFOFFSET3D(u,0,1,-1)) + 64*(KRANC_GFOFFSET3D(u,0,-1,-1) + KRANC_GFOFFSET3D(u,0,1,1)) + 8*(KRANC_GFOFFSET3D(u,0,-1,2) + KRANC_GFOFFSET3D(u,0,1,-2) + KRANC_GFOFFSET3D(u,0,-2,1) + KRANC_GFOFFSET3D(u,0,2,-1)) - 8*(KRANC_GFOFFSET3D(u,0,-1,-2) + KRANC_GFOFFSET3D(u,0,1,2) + KRANC_GFOFFSET3D(u,0,-2,-1) + KRANC_GFOFFSET3D(u,0,2,1)) + KRANC_GFOFFSET3D(u,0,-2,-2) - KRANC_GFOFFSET3D(u,0,-2,2) - KRANC_GFOFFSET3D(u,0,2,-2) + KRANC_GFOFFSET3D(u,0,2,2))*p1o144dydz;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth31(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(2)]))*p1o144dxdz)
+# define PDstandardNth31(u) ((-64*(KRANC_GFOFFSET3D(u,-1,0,1) + KRANC_GFOFFSET3D(u,1,0,-1)) + 64*(KRANC_GFOFFSET3D(u,-1,0,-1) + KRANC_GFOFFSET3D(u,1,0,1)) + 8*(KRANC_GFOFFSET3D(u,-1,0,2) + KRANC_GFOFFSET3D(u,1,0,-2) + KRANC_GFOFFSET3D(u,-2,0,1) + KRANC_GFOFFSET3D(u,2,0,-1)) - 8*(KRANC_GFOFFSET3D(u,-1,0,-2) + KRANC_GFOFFSET3D(u,1,0,2) + KRANC_GFOFFSET3D(u,-2,0,-1) + KRANC_GFOFFSET3D(u,2,0,1)) + KRANC_GFOFFSET3D(u,-2,0,-2) - KRANC_GFOFFSET3D(u,-2,0,2) - KRANC_GFOFFSET3D(u,2,0,-2) + KRANC_GFOFFSET3D(u,2,0,2))*p1o144dxdz)
#else
# define PDstandardNth31(u) (PDstandardNth31_impl(u,p1o144dxdz,cdj,cdk))
static CCTK_REAL PDstandardNth31_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth31_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-2)+cdj*(0)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(2)+cdj*(0)+cdk*(2)]))*p1o144dxdz;
+ return (-64*(KRANC_GFOFFSET3D(u,-1,0,1) + KRANC_GFOFFSET3D(u,1,0,-1)) + 64*(KRANC_GFOFFSET3D(u,-1,0,-1) + KRANC_GFOFFSET3D(u,1,0,1)) + 8*(KRANC_GFOFFSET3D(u,-1,0,2) + KRANC_GFOFFSET3D(u,1,0,-2) + KRANC_GFOFFSET3D(u,-2,0,1) + KRANC_GFOFFSET3D(u,2,0,-1)) - 8*(KRANC_GFOFFSET3D(u,-1,0,-2) + KRANC_GFOFFSET3D(u,1,0,2) + KRANC_GFOFFSET3D(u,-2,0,-1) + KRANC_GFOFFSET3D(u,2,0,1)) + KRANC_GFOFFSET3D(u,-2,0,-2) - KRANC_GFOFFSET3D(u,-2,0,2) - KRANC_GFOFFSET3D(u,2,0,-2) + KRANC_GFOFFSET3D(u,2,0,2))*p1o144dxdz;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth32(u) ((-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(2)]))*p1o144dydz)
+# define PDstandardNth32(u) ((-64*(KRANC_GFOFFSET3D(u,0,-1,1) + KRANC_GFOFFSET3D(u,0,1,-1)) + 64*(KRANC_GFOFFSET3D(u,0,-1,-1) + KRANC_GFOFFSET3D(u,0,1,1)) + 8*(KRANC_GFOFFSET3D(u,0,-1,2) + KRANC_GFOFFSET3D(u,0,1,-2) + KRANC_GFOFFSET3D(u,0,-2,1) + KRANC_GFOFFSET3D(u,0,2,-1)) - 8*(KRANC_GFOFFSET3D(u,0,-1,-2) + KRANC_GFOFFSET3D(u,0,1,2) + KRANC_GFOFFSET3D(u,0,-2,-1) + KRANC_GFOFFSET3D(u,0,2,1)) + KRANC_GFOFFSET3D(u,0,-2,-2) - KRANC_GFOFFSET3D(u,0,-2,2) - KRANC_GFOFFSET3D(u,0,2,-2) + KRANC_GFOFFSET3D(u,0,2,2))*p1o144dydz)
#else
# define PDstandardNth32(u) (PDstandardNth32_impl(u,p1o144dydz,cdj,cdk))
static CCTK_REAL PDstandardNth32_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dydz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth32_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o144dydz, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)])) + 64*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)])) + 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-1)])) - 8*((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(1)])) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(-2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-2)+cdk*(2)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(-2)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(2)+cdk*(2)]))*p1o144dydz;
+ return (-64*(KRANC_GFOFFSET3D(u,0,-1,1) + KRANC_GFOFFSET3D(u,0,1,-1)) + 64*(KRANC_GFOFFSET3D(u,0,-1,-1) + KRANC_GFOFFSET3D(u,0,1,1)) + 8*(KRANC_GFOFFSET3D(u,0,-1,2) + KRANC_GFOFFSET3D(u,0,1,-2) + KRANC_GFOFFSET3D(u,0,-2,1) + KRANC_GFOFFSET3D(u,0,2,-1)) - 8*(KRANC_GFOFFSET3D(u,0,-1,-2) + KRANC_GFOFFSET3D(u,0,1,2) + KRANC_GFOFFSET3D(u,0,-2,-1) + KRANC_GFOFFSET3D(u,0,2,1)) + KRANC_GFOFFSET3D(u,0,-2,-2) - KRANC_GFOFFSET3D(u,0,-2,2) - KRANC_GFOFFSET3D(u,0,2,-2) + KRANC_GFOFFSET3D(u,0,2,2))*p1o144dydz;
}
#endif
diff --git a/ML_WaveToyFO/src/RegisterMoL.cc b/ML_WaveToyFO/src/RegisterMoL.cc
index dca3254..f10b453 100644
--- a/ML_WaveToyFO/src/RegisterMoL.cc
+++ b/ML_WaveToyFO/src/RegisterMoL.cc
@@ -17,5 +17,7 @@ extern "C" void ML_WaveToyFO_RegisterVars(CCTK_ARGUMENTS)
ierr += MoLRegisterEvolved(CCTK_VarIndex("ML_WaveToyFO::v1"), CCTK_VarIndex("ML_WaveToyFO::v1rhs"));
ierr += MoLRegisterEvolved(CCTK_VarIndex("ML_WaveToyFO::v2"), CCTK_VarIndex("ML_WaveToyFO::v2rhs"));
ierr += MoLRegisterEvolved(CCTK_VarIndex("ML_WaveToyFO::v3"), CCTK_VarIndex("ML_WaveToyFO::v3rhs"));
+
+ /* Register all the evolved Array functions with MoL */
return;
}
diff --git a/ML_WaveToyFO/src/WTFO_Gaussian.cc b/ML_WaveToyFO/src/WTFO_Gaussian.cc
index 6711448..0320d22 100644
--- a/ML_WaveToyFO/src/WTFO_Gaussian.cc
+++ b/ML_WaveToyFO/src/WTFO_Gaussian.cc
@@ -21,7 +21,7 @@
#define SQR(x) ((x) * (x))
#define CUB(x) ((x) * (x) * (x))
-static void WTFO_Gaussian_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void WTFO_Gaussian_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const imin[3], int const imax[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
{
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
@@ -29,20 +29,6 @@ static void WTFO_Gaussian_Body(cGH const * restrict const cctkGH, int const dir,
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering WTFO_Gaussian_Body");
- }
-
- if (cctk_iteration % WTFO_Gaussian_calc_every != WTFO_Gaussian_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_WaveToyFO::WT_rho","ML_WaveToyFO::WT_u","ML_WaveToyFO::WT_v"};
- GenericFD_AssertGroupStorage(cctkGH, "WTFO_Gaussian", 3, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -56,6 +42,7 @@ static void WTFO_Gaussian_Body(cGH const * restrict const cctkGH, int const dir,
CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL const t = ToReal(cctk_time);
CCTK_REAL const dxi = INV(dx);
CCTK_REAL const dyi = INV(dy);
CCTK_REAL const dzi = INV(dz);
@@ -79,10 +66,18 @@ static void WTFO_Gaussian_Body(cGH const * restrict const cctkGH, int const dir,
CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ /* 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_LOOP3 (WTFO_Gaussian,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
+ i,j,k, imin[0],imin[1],imin[2], imax[0],imax[1],imax[2],
cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
{
ptrdiff_t const index = di*i + dj*j + dk*k;
@@ -121,5 +116,25 @@ extern "C" void WTFO_Gaussian(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering WTFO_Gaussian_Body");
+ }
+
+ if (cctk_iteration % WTFO_Gaussian_calc_every != WTFO_Gaussian_calc_offset)
+ {
+ return;
+ }
+
+ const char *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);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving WTFO_Gaussian_Body");
+ }
}
diff --git a/ML_WaveToyFO/src/WTFO_RHS.cc b/ML_WaveToyFO/src/WTFO_RHS.cc
index 7141c11..fb9af18 100644
--- a/ML_WaveToyFO/src/WTFO_RHS.cc
+++ b/ML_WaveToyFO/src/WTFO_RHS.cc
@@ -39,7 +39,7 @@ extern "C" void WTFO_RHS_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void WTFO_RHS_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void WTFO_RHS_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;
@@ -47,21 +47,6 @@ static void WTFO_RHS_Body(cGH const * restrict const cctkGH, int const dir, int
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering WTFO_RHS_Body");
- }
-
- if (cctk_iteration % WTFO_RHS_calc_every != WTFO_RHS_calc_offset)
- {
- return;
- }
-
- const char *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);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -75,6 +60,7 @@ static void WTFO_RHS_Body(cGH const * restrict const cctkGH, int const dir, int
CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL const t = ToReal(cctk_time);
CCTK_REAL const dxi = INV(dx);
CCTK_REAL const dyi = INV(dy);
CCTK_REAL const dzi = INV(dz);
@@ -98,10 +84,18 @@ static void WTFO_RHS_Body(cGH const * restrict const cctkGH, int const dir, int
CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ /* 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_LOOP3 (WTFO_RHS,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
+ i,j,k, imin[0],imin[1],imin[2], imax[0],imax[1],imax[2],
cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
{
ptrdiff_t const index = di*i + dj*j + dk*k;
@@ -151,5 +145,26 @@ extern "C" void WTFO_RHS(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering WTFO_RHS_Body");
+ }
+
+ if (cctk_iteration % WTFO_RHS_calc_every != WTFO_RHS_calc_offset)
+ {
+ return;
+ }
+
+ const char *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);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving WTFO_RHS_Body");
+ }
}
diff --git a/ML_WaveToyFO/src/WTFO_constraints.cc b/ML_WaveToyFO/src/WTFO_constraints.cc
index 2b3db6a..3c89dcd 100644
--- a/ML_WaveToyFO/src/WTFO_constraints.cc
+++ b/ML_WaveToyFO/src/WTFO_constraints.cc
@@ -33,7 +33,7 @@ extern "C" void WTFO_constraints_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void WTFO_constraints_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void WTFO_constraints_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;
@@ -41,21 +41,6 @@ static void WTFO_constraints_Body(cGH const * restrict const cctkGH, int const d
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering WTFO_constraints_Body");
- }
-
- if (cctk_iteration % WTFO_constraints_calc_every != WTFO_constraints_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_WaveToyFO::WT_v","ML_WaveToyFO::WT_w"};
- GenericFD_AssertGroupStorage(cctkGH, "WTFO_constraints", 2, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "WTFO_constraints", 2, 2, 2);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -69,6 +54,7 @@ static void WTFO_constraints_Body(cGH const * restrict const cctkGH, int const d
CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL const t = ToReal(cctk_time);
CCTK_REAL const dxi = INV(dx);
CCTK_REAL const dyi = INV(dy);
CCTK_REAL const dzi = INV(dz);
@@ -92,10 +78,18 @@ static void WTFO_constraints_Body(cGH const * restrict const cctkGH, int const d
CCTK_REAL const pm1o12dy2 = -0.0833333333333333333333333333333*INV(SQR(dy));
CCTK_REAL const pm1o12dz2 = -0.0833333333333333333333333333333*INV(SQR(dz));
+ /* 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_LOOP3 (WTFO_constraints,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
+ i,j,k, imin[0],imin[1],imin[2], imax[0],imax[1],imax[2],
cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
{
ptrdiff_t const index = di*i + dj*j + dk*k;
@@ -137,5 +131,26 @@ extern "C" void WTFO_constraints(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering WTFO_constraints_Body");
+ }
+
+ if (cctk_iteration % WTFO_constraints_calc_every != WTFO_constraints_calc_offset)
+ {
+ return;
+ }
+
+ const char *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);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving WTFO_constraints_Body");
+ }
}
diff --git a/ML_hydro/param.ccl b/ML_hydro/param.ccl
index 1dd6af3..957d11a 100644
--- a/ML_hydro/param.ccl
+++ b/ML_hydro/param.ccl
@@ -8,6 +8,7 @@ shares: GenericFD
shares: MethodOfLines
USES CCTK_INT MoL_Num_Evolved_Vars
+USES CCTK_INT MoL_Num_ArrayEvolved_Vars
restricted:
CCTK_INT verbose "verbose" STEERABLE=ALWAYS
@@ -59,6 +60,12 @@ CCTK_INT ML_hydro_MaxNumEvolvedVars "Number of evolved variables used by this th
} 5
restricted:
+CCTK_INT ML_hydro_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 :: ""
diff --git a/ML_hydro/src/Differencing.h b/ML_hydro/src/Differencing.h
index 63cadac..6e7b849 100644
--- a/ML_hydro/src/Differencing.h
+++ b/ML_hydro/src/Differencing.h
@@ -1,144 +1,144 @@
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth1(u) ((-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)]))*p1o2dx)
+# define PDstandardNth1(u) ((-KRANC_GFOFFSET3D(u,-1,0,0) + KRANC_GFOFFSET3D(u,1,0,0))*p1o2dx)
#else
# define PDstandardNth1(u) (PDstandardNth1_impl(u,p1o2dx,cdj,cdk))
static CCTK_REAL PDstandardNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o2dx, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth1_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o2dx, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)]))*p1o2dx;
+ return (-KRANC_GFOFFSET3D(u,-1,0,0) + KRANC_GFOFFSET3D(u,1,0,0))*p1o2dx;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth2(u) ((-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)]))*p1o2dy)
+# define PDstandardNth2(u) ((-KRANC_GFOFFSET3D(u,0,-1,0) + KRANC_GFOFFSET3D(u,0,1,0))*p1o2dy)
#else
# define PDstandardNth2(u) (PDstandardNth2_impl(u,p1o2dy,cdj,cdk))
static CCTK_REAL PDstandardNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o2dy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth2_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o2dy, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)]))*p1o2dy;
+ return (-KRANC_GFOFFSET3D(u,0,-1,0) + KRANC_GFOFFSET3D(u,0,1,0))*p1o2dy;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth3(u) ((-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)]))*p1o2dz)
+# define PDstandardNth3(u) ((-KRANC_GFOFFSET3D(u,0,0,-1) + KRANC_GFOFFSET3D(u,0,0,1))*p1o2dz)
#else
# define PDstandardNth3(u) (PDstandardNth3_impl(u,p1o2dz,cdj,cdk))
static CCTK_REAL PDstandardNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o2dz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth3_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o2dz, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)]))*p1o2dz;
+ return (-KRANC_GFOFFSET3D(u,0,0,-1) + KRANC_GFOFFSET3D(u,0,0,1))*p1o2dz;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth11(u) ((-2*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)]))*p1odx2)
+# define PDstandardNth11(u) ((-2*KRANC_GFOFFSET3D(u,0,0,0) + KRANC_GFOFFSET3D(u,-1,0,0) + KRANC_GFOFFSET3D(u,1,0,0))*p1odx2)
#else
# define PDstandardNth11(u) (PDstandardNth11_impl(u,p1odx2,cdj,cdk))
static CCTK_REAL PDstandardNth11_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1odx2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth11_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1odx2, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-2*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(0)]))*p1odx2;
+ return (-2*KRANC_GFOFFSET3D(u,0,0,0) + KRANC_GFOFFSET3D(u,-1,0,0) + KRANC_GFOFFSET3D(u,1,0,0))*p1odx2;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth22(u) ((-2*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)]))*p1ody2)
+# define PDstandardNth22(u) ((-2*KRANC_GFOFFSET3D(u,0,0,0) + KRANC_GFOFFSET3D(u,0,-1,0) + KRANC_GFOFFSET3D(u,0,1,0))*p1ody2)
#else
# define PDstandardNth22(u) (PDstandardNth22_impl(u,p1ody2,cdj,cdk))
static CCTK_REAL PDstandardNth22_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1ody2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth22_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1ody2, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-2*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(0)]))*p1ody2;
+ return (-2*KRANC_GFOFFSET3D(u,0,0,0) + KRANC_GFOFFSET3D(u,0,-1,0) + KRANC_GFOFFSET3D(u,0,1,0))*p1ody2;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth33(u) ((-2*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)]))*p1odz2)
+# define PDstandardNth33(u) ((-2*KRANC_GFOFFSET3D(u,0,0,0) + KRANC_GFOFFSET3D(u,0,0,-1) + KRANC_GFOFFSET3D(u,0,0,1))*p1odz2)
#else
# define PDstandardNth33(u) (PDstandardNth33_impl(u,p1odz2,cdj,cdk))
static CCTK_REAL PDstandardNth33_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1odz2, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth33_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1odz2, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return (-2*(*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(0)+cdk*(1)]))*p1odz2;
+ return (-2*KRANC_GFOFFSET3D(u,0,0,0) + KRANC_GFOFFSET3D(u,0,0,-1) + KRANC_GFOFFSET3D(u,0,0,1))*p1odz2;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth12(u) (((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)]))*p1o4dxdy)
+# define PDstandardNth12(u) ((KRANC_GFOFFSET3D(u,-1,-1,0) - KRANC_GFOFFSET3D(u,-1,1,0) - KRANC_GFOFFSET3D(u,1,-1,0) + KRANC_GFOFFSET3D(u,1,1,0))*p1o4dxdy)
#else
# define PDstandardNth12(u) (PDstandardNth12_impl(u,p1o4dxdy,cdj,cdk))
static CCTK_REAL PDstandardNth12_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o4dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth12_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o4dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return ((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)]))*p1o4dxdy;
+ return (KRANC_GFOFFSET3D(u,-1,-1,0) - KRANC_GFOFFSET3D(u,-1,1,0) - KRANC_GFOFFSET3D(u,1,-1,0) + KRANC_GFOFFSET3D(u,1,1,0))*p1o4dxdy;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth13(u) (((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)]))*p1o4dxdz)
+# define PDstandardNth13(u) ((KRANC_GFOFFSET3D(u,-1,0,-1) - KRANC_GFOFFSET3D(u,-1,0,1) - KRANC_GFOFFSET3D(u,1,0,-1) + KRANC_GFOFFSET3D(u,1,0,1))*p1o4dxdz)
#else
# define PDstandardNth13(u) (PDstandardNth13_impl(u,p1o4dxdz,cdj,cdk))
static CCTK_REAL PDstandardNth13_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o4dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth13_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o4dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return ((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)]))*p1o4dxdz;
+ return (KRANC_GFOFFSET3D(u,-1,0,-1) - KRANC_GFOFFSET3D(u,-1,0,1) - KRANC_GFOFFSET3D(u,1,0,-1) + KRANC_GFOFFSET3D(u,1,0,1))*p1o4dxdz;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth21(u) (((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)]))*p1o4dxdy)
+# define PDstandardNth21(u) ((KRANC_GFOFFSET3D(u,-1,-1,0) - KRANC_GFOFFSET3D(u,-1,1,0) - KRANC_GFOFFSET3D(u,1,-1,0) + KRANC_GFOFFSET3D(u,1,1,0))*p1o4dxdy)
#else
# define PDstandardNth21(u) (PDstandardNth21_impl(u,p1o4dxdy,cdj,cdk))
static CCTK_REAL PDstandardNth21_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o4dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth21_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o4dxdy, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return ((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(-1)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(1)+cdk*(0)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(-1)+cdk*(0)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(1)+cdk*(0)]))*p1o4dxdy;
+ return (KRANC_GFOFFSET3D(u,-1,-1,0) - KRANC_GFOFFSET3D(u,-1,1,0) - KRANC_GFOFFSET3D(u,1,-1,0) + KRANC_GFOFFSET3D(u,1,1,0))*p1o4dxdy;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth23(u) (((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)]))*p1o4dydz)
+# define PDstandardNth23(u) ((KRANC_GFOFFSET3D(u,0,-1,-1) - KRANC_GFOFFSET3D(u,0,-1,1) - KRANC_GFOFFSET3D(u,0,1,-1) + KRANC_GFOFFSET3D(u,0,1,1))*p1o4dydz)
#else
# define PDstandardNth23(u) (PDstandardNth23_impl(u,p1o4dydz,cdj,cdk))
static CCTK_REAL PDstandardNth23_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o4dydz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth23_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o4dydz, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return ((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)]))*p1o4dydz;
+ return (KRANC_GFOFFSET3D(u,0,-1,-1) - KRANC_GFOFFSET3D(u,0,-1,1) - KRANC_GFOFFSET3D(u,0,1,-1) + KRANC_GFOFFSET3D(u,0,1,1))*p1o4dydz;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth31(u) (((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)]))*p1o4dxdz)
+# define PDstandardNth31(u) ((KRANC_GFOFFSET3D(u,-1,0,-1) - KRANC_GFOFFSET3D(u,-1,0,1) - KRANC_GFOFFSET3D(u,1,0,-1) + KRANC_GFOFFSET3D(u,1,0,1))*p1o4dxdz)
#else
# define PDstandardNth31(u) (PDstandardNth31_impl(u,p1o4dxdz,cdj,cdk))
static CCTK_REAL PDstandardNth31_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o4dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth31_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o4dxdz, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return ((*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(-1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(-1)+cdj*(0)+cdk*(1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(1)+cdj*(0)+cdk*(1)]))*p1o4dxdz;
+ return (KRANC_GFOFFSET3D(u,-1,0,-1) - KRANC_GFOFFSET3D(u,-1,0,1) - KRANC_GFOFFSET3D(u,1,0,-1) + KRANC_GFOFFSET3D(u,1,0,1))*p1o4dxdz;
}
#endif
#ifndef KRANC_DIFF_FUNCTIONS
-# define PDstandardNth32(u) (((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)]))*p1o4dydz)
+# define PDstandardNth32(u) ((KRANC_GFOFFSET3D(u,0,-1,-1) - KRANC_GFOFFSET3D(u,0,-1,1) - KRANC_GFOFFSET3D(u,0,1,-1) + KRANC_GFOFFSET3D(u,0,1,1))*p1o4dydz)
#else
# define PDstandardNth32(u) (PDstandardNth32_impl(u,p1o4dydz,cdj,cdk))
static CCTK_REAL PDstandardNth32_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o4dydz, ptrdiff_t const cdj, ptrdiff_t const cdk) CCTK_ATTRIBUTE_NOINLINE CCTK_ATTRIBUTE_UNUSED;
static CCTK_REAL PDstandardNth32_impl(CCTK_REAL const* restrict const u, CCTK_REAL const p1o4dydz, ptrdiff_t const cdj, ptrdiff_t const cdk)
{
ptrdiff_t const cdi=sizeof(CCTK_REAL);
- return ((*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(-1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(-1)+cdk*(1)]) - (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(-1)]) + (*(CCTK_REAL const*)&((char const*)(u))[cdi*(0)+cdj*(1)+cdk*(1)]))*p1o4dydz;
+ return (KRANC_GFOFFSET3D(u,0,-1,-1) - KRANC_GFOFFSET3D(u,0,-1,1) - KRANC_GFOFFSET3D(u,0,1,-1) + KRANC_GFOFFSET3D(u,0,1,1))*p1o4dydz;
}
#endif
diff --git a/ML_hydro/src/RegisterMoL.cc b/ML_hydro/src/RegisterMoL.cc
index 3f877cb..15b0ebc 100644
--- a/ML_hydro/src/RegisterMoL.cc
+++ b/ML_hydro/src/RegisterMoL.cc
@@ -17,5 +17,7 @@ extern "C" void ML_hydro_RegisterVars(CCTK_ARGUMENTS)
ierr += MoLRegisterEvolved(CCTK_VarIndex("ML_hydro::mom1"), CCTK_VarIndex("ML_hydro::mom1rhs"));
ierr += MoLRegisterEvolved(CCTK_VarIndex("ML_hydro::mom2"), CCTK_VarIndex("ML_hydro::mom2rhs"));
ierr += MoLRegisterEvolved(CCTK_VarIndex("ML_hydro::mom3"), CCTK_VarIndex("ML_hydro::mom3rhs"));
+
+ /* Register all the evolved Array functions with MoL */
return;
}
diff --git a/ML_hydro/src/hydro_RHS.cc b/ML_hydro/src/hydro_RHS.cc
index cdbebfd..c4d92bf 100644
--- a/ML_hydro/src/hydro_RHS.cc
+++ b/ML_hydro/src/hydro_RHS.cc
@@ -39,7 +39,7 @@ extern "C" void hydro_RHS_SelectBCs(CCTK_ARGUMENTS)
return;
}
-static void hydro_RHS_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void hydro_RHS_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;
@@ -47,21 +47,6 @@ static void hydro_RHS_Body(cGH const * restrict const cctkGH, int const dir, int
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering hydro_RHS_Body");
- }
-
- if (cctk_iteration % hydro_RHS_calc_every != hydro_RHS_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_hydro::eneflux_group","ML_hydro::ene_grouprhs","ML_hydro::massflux_group","ML_hydro::mass_grouprhs","ML_hydro::momflux_group","ML_hydro::mom_grouprhs"};
- GenericFD_AssertGroupStorage(cctkGH, "hydro_RHS", 6, groups);
-
- GenericFD_EnsureStencilFits(cctkGH, "hydro_RHS", 1, 1, 1);
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -75,6 +60,7 @@ static void hydro_RHS_Body(cGH const * restrict const cctkGH, int const dir, int
CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL const t = ToReal(cctk_time);
CCTK_REAL const dxi = INV(dx);
CCTK_REAL const dyi = INV(dy);
CCTK_REAL const dzi = INV(dz);
@@ -98,10 +84,18 @@ static void hydro_RHS_Body(cGH const * restrict const cctkGH, int const dir, int
CCTK_REAL const p1ody2 = INV(SQR(dy));
CCTK_REAL const p1odz2 = INV(SQR(dz));
+ /* 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_LOOP3 (hydro_RHS,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
+ i,j,k, imin[0],imin[1],imin[2], imax[0],imax[1],imax[2],
cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
{
ptrdiff_t const index = di*i + dj*j + dk*k;
@@ -175,5 +169,26 @@ extern "C" void hydro_RHS(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering hydro_RHS_Body");
+ }
+
+ if (cctk_iteration % hydro_RHS_calc_every != hydro_RHS_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_hydro::eneflux_group","ML_hydro::ene_grouprhs","ML_hydro::massflux_group","ML_hydro::mass_grouprhs","ML_hydro::momflux_group","ML_hydro::mom_grouprhs"};
+ GenericFD_AssertGroupStorage(cctkGH, "hydro_RHS", 6, groups);
+
+ GenericFD_EnsureStencilFits(cctkGH, "hydro_RHS", 1, 1, 1);
+
GenericFD_LoopOverInterior(cctkGH, &hydro_RHS_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving hydro_RHS_Body");
+ }
}
diff --git a/ML_hydro/src/hydro_con2prim.cc b/ML_hydro/src/hydro_con2prim.cc
index d944588..f9e9188 100644
--- a/ML_hydro/src/hydro_con2prim.cc
+++ b/ML_hydro/src/hydro_con2prim.cc
@@ -21,7 +21,7 @@
#define SQR(x) ((x) * (x))
#define CUB(x) ((x) * (x) * (x))
-static void hydro_con2prim_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void hydro_con2prim_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;
@@ -29,20 +29,6 @@ static void hydro_con2prim_Body(cGH const * restrict const cctkGH, int const dir
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering hydro_con2prim_Body");
- }
-
- if (cctk_iteration % hydro_con2prim_calc_every != hydro_con2prim_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_hydro::ene_group","ML_hydro::eps_group","ML_hydro::mass_group","ML_hydro::mom_group","ML_hydro::press_group","ML_hydro::rho_group","ML_hydro::vel_group","ML_hydro::vol_group"};
- GenericFD_AssertGroupStorage(cctkGH, "hydro_con2prim", 8, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -56,6 +42,7 @@ static void hydro_con2prim_Body(cGH const * restrict const cctkGH, int const dir
CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL const t = ToReal(cctk_time);
CCTK_REAL const dxi = INV(dx);
CCTK_REAL const dyi = INV(dy);
CCTK_REAL const dzi = INV(dz);
@@ -79,10 +66,18 @@ static void hydro_con2prim_Body(cGH const * restrict const cctkGH, int const dir
CCTK_REAL const p1ody2 = INV(SQR(dy));
CCTK_REAL const p1odz2 = INV(SQR(dz));
+ /* 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_LOOP3 (hydro_con2prim,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
+ i,j,k, imin[0],imin[1],imin[2], imax[0],imax[1],imax[2],
cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
{
ptrdiff_t const index = di*i + dj*j + dk*k;
@@ -136,5 +131,25 @@ extern "C" void hydro_con2prim(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering hydro_con2prim_Body");
+ }
+
+ if (cctk_iteration % hydro_con2prim_calc_every != hydro_con2prim_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_hydro::ene_group","ML_hydro::eps_group","ML_hydro::mass_group","ML_hydro::mom_group","ML_hydro::press_group","ML_hydro::rho_group","ML_hydro::vel_group","ML_hydro::vol_group"};
+ GenericFD_AssertGroupStorage(cctkGH, "hydro_con2prim", 8, groups);
+
+
GenericFD_LoopOverEverything(cctkGH, &hydro_con2prim_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving hydro_con2prim_Body");
+ }
}
diff --git a/ML_hydro/src/hydro_prim2con.cc b/ML_hydro/src/hydro_prim2con.cc
index 9ad684d..7c33d60 100644
--- a/ML_hydro/src/hydro_prim2con.cc
+++ b/ML_hydro/src/hydro_prim2con.cc
@@ -21,7 +21,7 @@
#define SQR(x) ((x) * (x))
#define CUB(x) ((x) * (x) * (x))
-static void hydro_prim2con_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void hydro_prim2con_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;
@@ -29,20 +29,6 @@ static void hydro_prim2con_Body(cGH const * restrict const cctkGH, int const dir
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering hydro_prim2con_Body");
- }
-
- if (cctk_iteration % hydro_prim2con_calc_every != hydro_prim2con_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_hydro::ene_group","ML_hydro::eps_group","ML_hydro::mass_group","ML_hydro::mom_group","ML_hydro::rho_group","ML_hydro::vel_group","ML_hydro::vol_group"};
- GenericFD_AssertGroupStorage(cctkGH, "hydro_prim2con", 7, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -56,6 +42,7 @@ static void hydro_prim2con_Body(cGH const * restrict const cctkGH, int const dir
CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL const t = ToReal(cctk_time);
CCTK_REAL const dxi = INV(dx);
CCTK_REAL const dyi = INV(dy);
CCTK_REAL const dzi = INV(dz);
@@ -79,10 +66,18 @@ static void hydro_prim2con_Body(cGH const * restrict const cctkGH, int const dir
CCTK_REAL const p1ody2 = INV(SQR(dy));
CCTK_REAL const p1odz2 = INV(SQR(dz));
+ /* 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_LOOP3 (hydro_prim2con,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
+ i,j,k, imin[0],imin[1],imin[2], imax[0],imax[1],imax[2],
cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
{
ptrdiff_t const index = di*i + dj*j + dk*k;
@@ -132,5 +127,25 @@ extern "C" void hydro_prim2con(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering hydro_prim2con_Body");
+ }
+
+ if (cctk_iteration % hydro_prim2con_calc_every != hydro_prim2con_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_hydro::ene_group","ML_hydro::eps_group","ML_hydro::mass_group","ML_hydro::mom_group","ML_hydro::rho_group","ML_hydro::vel_group","ML_hydro::vol_group"};
+ GenericFD_AssertGroupStorage(cctkGH, "hydro_prim2con", 7, groups);
+
+
GenericFD_LoopOverEverything(cctkGH, &hydro_prim2con_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving hydro_prim2con_Body");
+ }
}
diff --git a/ML_hydro/src/hydro_soundWave.cc b/ML_hydro/src/hydro_soundWave.cc
index 6f25303..ca8be3d 100644
--- a/ML_hydro/src/hydro_soundWave.cc
+++ b/ML_hydro/src/hydro_soundWave.cc
@@ -21,7 +21,7 @@
#define SQR(x) ((x) * (x))
#define CUB(x) ((x) * (x) * (x))
-static void hydro_soundWave_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void hydro_soundWave_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;
@@ -29,20 +29,6 @@ static void hydro_soundWave_Body(cGH const * restrict const cctkGH, int const di
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering hydro_soundWave_Body");
- }
-
- if (cctk_iteration % hydro_soundWave_calc_every != hydro_soundWave_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_hydro::eps_group","grid::coordinates","ML_hydro::rho_group","ML_hydro::vel_group"};
- GenericFD_AssertGroupStorage(cctkGH, "hydro_soundWave", 4, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -56,6 +42,7 @@ static void hydro_soundWave_Body(cGH const * restrict const cctkGH, int const di
CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL const t = ToReal(cctk_time);
CCTK_REAL const dxi = INV(dx);
CCTK_REAL const dyi = INV(dy);
CCTK_REAL const dzi = INV(dz);
@@ -79,10 +66,18 @@ static void hydro_soundWave_Body(cGH const * restrict const cctkGH, int const di
CCTK_REAL const p1ody2 = INV(SQR(dy));
CCTK_REAL const p1odz2 = INV(SQR(dz));
+ /* 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_LOOP3 (hydro_soundWave,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
+ i,j,k, imin[0],imin[1],imin[2], imax[0],imax[1],imax[2],
cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
{
ptrdiff_t const index = di*i + dj*j + dk*k;
@@ -122,5 +117,25 @@ extern "C" void hydro_soundWave(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering hydro_soundWave_Body");
+ }
+
+ if (cctk_iteration % hydro_soundWave_calc_every != hydro_soundWave_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_hydro::eps_group","grid::coordinates","ML_hydro::rho_group","ML_hydro::vel_group"};
+ GenericFD_AssertGroupStorage(cctkGH, "hydro_soundWave", 4, groups);
+
+
GenericFD_LoopOverEverything(cctkGH, &hydro_soundWave_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving hydro_soundWave_Body");
+ }
}
diff --git a/ML_hydro/src/hydro_vacuum.cc b/ML_hydro/src/hydro_vacuum.cc
index ea14bf0..f2299c6 100644
--- a/ML_hydro/src/hydro_vacuum.cc
+++ b/ML_hydro/src/hydro_vacuum.cc
@@ -21,7 +21,7 @@
#define SQR(x) ((x) * (x))
#define CUB(x) ((x) * (x) * (x))
-static void hydro_vacuum_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[])
+static void hydro_vacuum_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;
@@ -29,20 +29,6 @@ static void hydro_vacuum_Body(cGH const * restrict const cctkGH, int const dir,
/* Declare finite differencing variables */
- if (verbose > 1)
- {
- CCTK_VInfo(CCTK_THORNSTRING,"Entering hydro_vacuum_Body");
- }
-
- if (cctk_iteration % hydro_vacuum_calc_every != hydro_vacuum_calc_offset)
- {
- return;
- }
-
- const char *groups[] = {"ML_hydro::eps_group","ML_hydro::rho_group","ML_hydro::vel_group"};
- GenericFD_AssertGroupStorage(cctkGH, "hydro_vacuum", 3, groups);
-
-
/* Include user-supplied include files */
/* Initialise finite differencing variables */
@@ -56,6 +42,7 @@ static void hydro_vacuum_Body(cGH const * restrict const cctkGH, int const dir,
CCTK_REAL const dy = ToReal(CCTK_DELTA_SPACE(1));
CCTK_REAL const dz = ToReal(CCTK_DELTA_SPACE(2));
CCTK_REAL const dt = ToReal(CCTK_DELTA_TIME);
+ CCTK_REAL const t = ToReal(cctk_time);
CCTK_REAL const dxi = INV(dx);
CCTK_REAL const dyi = INV(dy);
CCTK_REAL const dzi = INV(dz);
@@ -79,10 +66,18 @@ static void hydro_vacuum_Body(cGH const * restrict const cctkGH, int const dir,
CCTK_REAL const p1ody2 = INV(SQR(dy));
CCTK_REAL const p1odz2 = INV(SQR(dz));
+ /* 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_LOOP3 (hydro_vacuum,
- i,j,k, min[0],min[1],min[2], max[0],max[1],max[2],
+ i,j,k, imin[0],imin[1],imin[2], imax[0],imax[1],imax[2],
cctk_lsh[0],cctk_lsh[1],cctk_lsh[2])
{
ptrdiff_t const index = di*i + dj*j + dk*k;
@@ -121,5 +116,25 @@ extern "C" void hydro_vacuum(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS;
DECLARE_CCTK_PARAMETERS;
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Entering hydro_vacuum_Body");
+ }
+
+ if (cctk_iteration % hydro_vacuum_calc_every != hydro_vacuum_calc_offset)
+ {
+ return;
+ }
+
+ const char *groups[] = {"ML_hydro::eps_group","ML_hydro::rho_group","ML_hydro::vel_group"};
+ GenericFD_AssertGroupStorage(cctkGH, "hydro_vacuum", 3, groups);
+
+
GenericFD_LoopOverEverything(cctkGH, &hydro_vacuum_Body);
+
+ if (verbose > 1)
+ {
+ CCTK_VInfo(CCTK_THORNSTRING,"Leaving hydro_vacuum_Body");
+ }
}
diff --git a/README b/README
index 5e5a0fd..cdfad89 100644
--- a/README
+++ b/README
@@ -1,5 +1,6 @@
McLachlan
+
Copyright (C) 2007 Erik Schnetter <schnetter@cct.lsu.edu>
diff --git a/m/Makefile b/m/Makefile
index 48c7197..3af082a 100644
--- a/m/Makefile
+++ b/m/Makefile
@@ -6,60 +6,58 @@ all: McLachlan_ADM.out McLachlan_BSSN.out McLachlan_ADMConstraints.out McLachlan
@echo
McLachlan_ADM.out: McLachlan_ADM.m
- rm -rf ML_ADM*
+ rm -rf ML_ADM
./runmath.sh $^
- for thorn in ML_ADM*; do \
- ./copy-if-changed.sh $$thorn ../$$thorn; \
+ for thorn in ML_ADM; do \
+ ./copy-if-changed.sh $$thorn ../$$thorn; \
done
McLachlan_BSSN.out: McLachlan_BSSN.m
rm -rf ML_BSSN*
./runmath.sh $^
- for thorn in ML_BSSN*; do \
- ./copy-if-changed.sh $$thorn ../$$thorn; \
- ./create-helper-thorn.sh $$thorn; \
+ 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
McLachlan_ADMConstraints.out: McLachlan_ADMConstraints.m
rm -rf ML_ADMConstraints*
./runmath.sh $^
- perl -pi -e 's/MoL_PostStep/MoL_PseudoEvolution/g' ML_ADMConstraints*/schedule.ccl
- for thorn in ML_ADMConstraints*; do \
- ./copy-if-changed.sh $$thorn ../$$thorn; \
+ for thorn in ML_ADMConstraints*; do \
+ ./copy-if-changed.sh $$thorn ../$$thorn; \
done
McLachlan_ADMQuantities.out: McLachlan_ADMQuantities.m
rm -rf ML_ADMQuantities*
./runmath.sh $^
- perl -pi -e 's/MoL_PostStep/MoL_PseudoEvolution/g' ML_ADMQuantities*/schedule.ccl
- for thorn in ML_ADMQuantities*; do \
- ./copy-if-changed.sh $$thorn ../$$thorn; \
+ for thorn in ML_ADMQuantities*; do \
+ ./copy-if-changed.sh $$thorn ../$$thorn; \
done
WaveToy.out: WaveToy.m
rm -rf ML_WaveToy
./runmath.sh $^
- for thorn in ML_WaveToy; do \
- ./copy-if-changed.sh $$thorn ../$$thorn; \
+ for thorn in ML_WaveToy; do \
+ ./copy-if-changed.sh $$thorn ../$$thorn; \
done
WaveToyFO.out: WaveToyFO.m
rm -rf ML_WaveToyFO
./runmath.sh $^
- for thorn in ML_WaveToyFO; do \
- ./copy-if-changed.sh $$thorn ../$$thorn; \
+ for thorn in ML_WaveToyFO; do \
+ ./copy-if-changed.sh $$thorn ../$$thorn; \
done
hydro.out: hydro.m
rm -rf ML_hydro
./runmath.sh $^
- for thorn in ML_hydro; do \
- ./copy-if-changed.sh $$thorn ../$$thorn; \
+ for thorn in ML_hydro; do \
+ ./copy-if-changed.sh $$thorn ../$$thorn; \
done
clean:
- rm -rf ML_ADM* ML_BSSN* ML_ADMConstraints*
+ rm -rf ML_ADM ML_BSSN* ML_ADMConstraints* ML_ADMQuantities*
rm -rf ML_WaveToy ML_WaveToyFO
rm -rf ML_hydro
rm -f McLachlan_ADM.out McLachlan_ADM.err
diff --git a/m/McLachlan_ADM.m b/m/McLachlan_ADM.m
index 663b8b3..92f0590 100644
--- a/m/McLachlan_ADM.m
+++ b/m/McLachlan_ADM.m
@@ -1,8 +1,3 @@
-$Path = Join[$Path, {"../../../repos/Kranc/Tools/CodeGen",
- "../../../repos/Kranc/Tools/MathematicaMisc"}];
-
-Get["KrancThorn`"];
-
SetEnhancedTimes[False];
SetSourceLanguage["C"];
@@ -11,27 +6,25 @@ SetSourceLanguage["C"];
(* Options *)
(******************************************************************************)
-(* derivative order: 2, 4, 6, 8, ... *)
-derivOrder = 4;
-
(* useJacobian: True or False *)
-useJacobian = False;
+useJacobian = True;
(* timelevels: 2 or 3
(keep this at 3; this is better chosen with a run-time parameter) *)
evolutionTimelevels = 3;
(* matter: 0 or 1 *)
-addMatter = 0;
+addMatter = 1;
prefix = "ML_";
suffix =
- If [useJacobian, "_MP", ""] <>
- If [derivOrder!=4, "_O" <> ToString[derivOrder], ""] <>
+ (* If [useJacobian, "_MP", ""] <> *)
+ (* If [derivOrder!=4, "_O" <> ToString[derivOrder], ""] <> *)
If [evolutionTimelevels!=3, "_TL" <> ToString[evolutionTimelevels], ""] <>
- If [addMatter!=0, "_M", ""];
+ (* If [addMatter!=0, "_M", ""] <> *)
+ "";
ADM = prefix <> "ADM" <> suffix;
@@ -43,10 +36,10 @@ KD = KroneckerDelta;
derivatives =
{
- PDstandardNth[i_] -> StandardCenteredDifferenceOperator[1,derivOrder/2,i],
- PDstandardNth[i_, i_] -> StandardCenteredDifferenceOperator[2,derivOrder/2,i],
- PDstandardNth[i_, j_] -> StandardCenteredDifferenceOperator[1,derivOrder/2,i]
- StandardCenteredDifferenceOperator[1,derivOrder/2,j]
+ PDstandardNth[i_] -> StandardCenteredDifferenceOperator[1,fdOrder/2,i],
+ PDstandardNth[i_, i_] -> StandardCenteredDifferenceOperator[2,fdOrder/2,i],
+ PDstandardNth[i_, j_] -> StandardCenteredDifferenceOperator[1,fdOrder/2,i]
+ StandardCenteredDifferenceOperator[1,fdOrder/2,j]
};
PD = PDstandardNth;
@@ -278,7 +271,7 @@ constraintsCalc =
gu[ua,ub] -> 1/detg detgExpr MatrixInverse[g[ua,ub]],
G[ua,lb,lc] -> 1/2 gu[ua,ud]
(PD[g[lb,ld],lc] + PD[g[lc,ld],lb] - PD[g[lb,lc],ld]),
- R[la,lb] -> G[uc,ld,la] G[lc,lb,ud] - G[uc,la,lb] G[lc,ld,ud]
+ R[la,lb] -> gu[us,ur](G[um,la,lr] G[uk,ls,lb] g[lk,lm] - G[um,la,lb] G[uk,ls,lr] g[lk,lm])
+ 1/2 gu[uc,ud] (- PD[g[lc,ld],la,lb] + PD[g[lc,la],ld,lb]
- PD[g[la,lb],lc,ld] + PD[g[ld,lb],lc,la]),
trR -> R[la,lb] gu[ua,ub],
@@ -349,6 +342,15 @@ keywordParameters =
}
};
+intParameters =
+{
+ {
+ Name -> fdOrder,
+ Default -> 4,
+ AllowedValues -> {2,4,6,8}
+ }
+};
+
(******************************************************************************)
(* Construct the thorns *)
(******************************************************************************)
@@ -371,6 +373,8 @@ CreateKrancThornTT [groups, ".", ADM,
EvolutionTimelevels -> evolutionTimelevels,
UseJacobian -> useJacobian,
UseLoopControl -> True,
+ UseVectors -> True,
InheritedImplementations -> inheritedImplementations,
- KeywordParameters -> keywordParameters
+ KeywordParameters -> keywordParameters,
+ IntParameters -> intParameters
];
diff --git a/m/McLachlan_ADMConstraints.m b/m/McLachlan_ADMConstraints.m
index 1abb5ae..19346e7 100644
--- a/m/McLachlan_ADMConstraints.m
+++ b/m/McLachlan_ADMConstraints.m
@@ -1,7 +1,3 @@
-$Path = Join[$Path, {"../../../repos/Kranc/Tools/CodeGen",
- "../../../repos/Kranc/Tools/MathematicaMisc"}];
-
-Get["KrancThorn`"];
SetEnhancedTimes[False];
SetSourceLanguage["C"];
@@ -138,8 +134,9 @@ ADMConstraintsCalc =
Name -> ADMConstraints,
Schedule -> Automatic,
Where -> Interior,
+ After -> "MoL_PostStep",
Shorthands -> {detg, gu[ua,ub], G[ua,lb,lc],
- R[la,lb], trR, Km[la,lb], trK,
+ R[la,lb], trR, Km[ua,lb], trK,
rho, S[la]},
Equations ->
{
@@ -147,7 +144,7 @@ ADMConstraintsCalc =
gu[ua,ub] -> 1/detg detgExpr MatrixInverse[g[ua,ub]],
G[ua,lb,lc] -> 1/2 gu[ua,ud]
(PD[g[lb,ld],lc] + PD[g[lc,ld],lb] - PD[g[lb,lc],ld]),
- R[la,lb] -> G[uc,ld,la] G[lc,lb,ud] - G[uc,la,lb] G[lc,ld,ud]
+ R[la,lb] -> gu[us,ur](G[um,la,lr] G[uk,ls,lb] g[lk,lm] - G[um,la,lb] G[uk,ls,lr] g[lk,lm])
+ 1/2 gu[uc,ud] (- PD[g[lc,ld],la,lb] + PD[g[lc,la],ld,lb]
- PD[g[la,lb],lc,ld] + PD[g[ld,lb],lc,la]),
trR -> R[la,lb] gu[ua,ub],
diff --git a/m/McLachlan_ADMQuantities.m b/m/McLachlan_ADMQuantities.m
index dfa5d22..003a9f8 100644
--- a/m/McLachlan_ADMQuantities.m
+++ b/m/McLachlan_ADMQuantities.m
@@ -1,7 +1,3 @@
-$Path = Join[$Path, {"../../../repos/Kranc/Tools/CodeGen",
- "../../../repos/Kranc/Tools/MathematicaMisc"}];
-
-Get["KrancThorn`"];
SetEnhancedTimes[False];
SetSourceLanguage["C"];
@@ -212,6 +208,7 @@ ADMQuantitiesCalc =
Name -> ADMQuantities,
Schedule -> Automatic,
Where -> Interior,
+ After -> "MoL_PostStep",
Shorthands -> {detgt, gtu[ua,ub], dgtu[ua,ub,lc],
Gtl[la,lb,lc], Gtlu[la,lb,uc], Gt[ua,lb,lc],
Xtn[ua], Rt[la,lb], trRt,
diff --git a/m/McLachlan_BSSN.m b/m/McLachlan_BSSN.m
index fb35535..30cda03 100644
--- a/m/McLachlan_BSSN.m
+++ b/m/McLachlan_BSSN.m
@@ -1,7 +1,3 @@
-$Path = Join[$Path, {"../../../repos/Kranc/Tools/CodeGen",
- "../../../repos/Kranc/Tools/MathematicaMisc"}];
-
-Get["KrancThorn`"];
SetEnhancedTimes[False];
SetSourceLanguage["C"];
@@ -25,6 +21,8 @@ suffix =
BSSN = prefix <> "BSSN" <> suffix;
+
+
(******************************************************************************)
(* Derivatives *)
(******************************************************************************)
@@ -33,157 +31,54 @@ KD = KroneckerDelta;
derivatives =
{
- PDstandardNth[i_] -> StandardCenteredDifferenceOperator[1,derivOrder/2,i],
- PDstandardNth[i_,i_] -> StandardCenteredDifferenceOperator[2,derivOrder/2,i],
- PDstandardNth[i_,j_] -> StandardCenteredDifferenceOperator[1,derivOrder/2,i] *
- StandardCenteredDifferenceOperator[1,derivOrder/2,j],
+ PDstandardNth[i_] -> StandardCenteredDifferenceOperator[1,fdOrder/2,i],
+ PDstandardNth[i_,i_] -> StandardCenteredDifferenceOperator[2,fdOrder/2,i],
+ PDstandardNth[i_,j_] -> StandardCenteredDifferenceOperator[1,fdOrder/2,i] *
+ StandardCenteredDifferenceOperator[1,fdOrder/2,j],
PDdissipationNth[i_] ->
- spacing[i]^(derivOrder+1) / 2^(derivOrder+2) *
- StandardCenteredDifferenceOperator[derivOrder+2,derivOrder/2+1,i],
+ spacing[i]^(fdOrder+1) / 2^(fdOrder+2) *
+ StandardCenteredDifferenceOperator[fdOrder+2,fdOrder/2+1,i],
(* PD: These come from my mathematica notebook
"Upwind-Kranc-Convert.nb" that converts upwinding finite
differencing operators generated by
StandardUpwindDifferenceOperator into this form *)
- Switch[derivOrder,
- 2,
- PDupwindNth[1] -> (dir[1]*(-3 + 4*shift[1]^dir[1] -
- shift[1]^(2*dir[1])))/(2*spacing[1]),
- 4,
- PDupwindNth[1] -> (dir[1]*(-10 - 3/shift[1]^dir[1] + 18*shift[1]^dir[1] -
- 6*shift[1]^(2*dir[1]) +
- shift[1]^(3*dir[1])))/(12*spacing[1]),
- 6,
- PDupwindNth[1] -> (dir[1]*(-35 + 2/shift[1]^(2*dir[1]) -
- 24/shift[1]^dir[1] + 80*shift[1]^dir[1] -
- 30*shift[1]^(2*dir[1]) + 8*shift[1]^(3*dir[1]) -
- shift[1]^(4*dir[1])))/(60*spacing[1]),
- 8,
- PDupwindNth[1] -> (dir[1]*(-378 - 5/shift[1]^(3*dir[1]) +
- 60/shift[1]^(2*dir[1]) - 420/shift[1]^dir[1] +
- 1050*shift[1]^dir[1] - 420*shift[1]^(2*dir[1]) +
- 140*shift[1]^(3*dir[1]) - 30*shift[1]^(4*dir[1]) +
- 3*shift[1]^(5*dir[1])))/(840*spacing[1])],
- Switch[derivOrder,
- 2,
- PDupwindNth[2] -> (dir[2]*(-3 + 4*shift[2]^dir[2] -
- shift[2]^(2*dir[2])))/(2*spacing[2]),
- 4,
- PDupwindNth[2] -> (dir[2]*(-10 - 3/shift[2]^dir[2] + 18*shift[2]^dir[2] -
- 6*shift[2]^(2*dir[2]) +
- shift[2]^(3*dir[2])))/(12*spacing[2]),
- 6,
- PDupwindNth[2] -> (dir[2]*(-35 + 2/shift[2]^(2*dir[2]) -
- 24/shift[2]^dir[2] + 80*shift[2]^dir[2] -
- 30*shift[2]^(2*dir[2]) + 8*shift[2]^(3*dir[2]) -
- shift[2]^(4*dir[2])))/(60*spacing[2]),
- 8,
- PDupwindNth[2] -> (dir[2]*(-378 - 5/shift[2]^(3*dir[2]) +
- 60/shift[2]^(2*dir[2]) - 420/shift[2]^dir[2] +
- 1050*shift[2]^dir[2] - 420*shift[2]^(2*dir[2]) +
- 140*shift[2]^(3*dir[2]) - 30*shift[2]^(4*dir[2]) +
- 3*shift[2]^(5*dir[2])))/(840*spacing[2])],
- Switch[derivOrder,
- 2,
- PDupwindNth[3] -> (dir[3]*(-3 + 4*shift[3]^dir[3] -
- shift[3]^(2*dir[3])))/(2*spacing[3]),
- 4,
- PDupwindNth[3] -> (dir[3]*(-10 - 3/shift[3]^dir[3] + 18*shift[3]^dir[3] -
- 6*shift[3]^(2*dir[3]) +
- shift[3]^(3*dir[3])))/(12*spacing[3]),
- 6,
- PDupwindNth[3] -> (dir[3]*(-35 + 2/shift[3]^(2*dir[3]) -
- 24/shift[3]^dir[3] + 80*shift[3]^dir[3] -
- 30*shift[3]^(2*dir[3]) + 8*shift[3]^(3*dir[3]) -
- shift[3]^(4*dir[3])))/(60*spacing[3]),
- 8,
- PDupwindNth[3] -> (dir[3]*(-378 - 5/shift[3]^(3*dir[3]) +
- 60/shift[3]^(2*dir[3]) - 420/shift[3]^dir[3] +
- 1050*shift[3]^dir[3] - 420*shift[3]^(2*dir[3]) +
- 140*shift[3]^(3*dir[3]) - 30*shift[3]^(4*dir[3]) +
- 3*shift[3]^(5*dir[3])))/(840*spacing[3])],
-
- (* TODO: make these higher order stencils *)
- PDonesided[1] -> dir[1] (-1 + shift[1]^dir[1]) / spacing[1],
- PDonesided[2] -> dir[2] (-1 + shift[2]^dir[2]) / spacing[2],
- PDonesided[3] -> dir[3] (-1 + shift[3]^dir[3]) / spacing[3]
+ Sequence@@Flatten[Table[
+ {PDupwindNth[i] -> Switch[fdOrder,
+ 2, (dir[i]*(-3 + 4*shift[i]^dir[i] - shift[i]^(2*dir[i])))/(2*spacing[i]),
+ 4, (dir[i]*(-10 - 3/shift[i]^dir[i] + 18*shift[i]^dir[i] -
+ 6*shift[i]^(2*dir[i]) + shift[i]^(3*dir[i])))/(12*spacing[i]),
+ 6, (dir[i]*(-35 + 2/shift[i]^(2*dir[i]) - 24/shift[i]^dir[i] + 80*shift[i]^dir[i] -
+ 30*shift[i]^(2*dir[i]) + 8*shift[i]^(3*dir[i]) - shift[i]^(4*dir[i])))/(60*spacing[i]),
+ 8, (dir[i]*(-378 - 5/shift[i]^(3*dir[i]) + 60/shift[i]^(2*dir[i]) - 420/shift[i]^dir[i] +
+ 1050*shift[i]^dir[i] - 420*shift[i]^(2*dir[i]) + 140*shift[i]^(3*dir[i]) - 30*shift[i]^(4*dir[i]) +
+ 3*shift[i]^(5*dir[i])))/(840*spacing[i])],
+
+ PDupwindNthAnti[i] -> Switch[fdOrder,
+ 2, (+1 shift[i]^(-2) -4 shift[i]^(-1) +0 shift[i]^( 0) +4 shift[i]^(+1) -1 shift[i]^(+2)) / (4 spacing[i]),
+ 4, (-1 shift[i]^(-3) +6 shift[i]^(-2) -21 shift[i]^(-1 )+0 shift[i]^( 0) +21 shift[i]^(+1)
+ -6 shift[i]^(+2) +1 shift[i]^(+3)) / (24 spacing[i]),
+ 6, (+1 shift[i]^(-4) -8 shift[i]^(-3) +32 shift[i]^(-2) -104 shift[i]^(-1) +0 shift[i]^( 0)
+ +104 shift[i]^(+1) -32 shift[i]^(+2) +8 shift[i]^(+3) -1 shift[i]^(+4)) / (120 spacing[i]),
+ 8, (-3 shift[i]^(-5) +30 shift[i]^(-4) -145 shift[i]^(-3) +480 shift[i]^(-2) -1470 shift[i]^(-1)
+ +0 shift[i]^( 0) +1470 shift[i]^(+1) -480 shift[i]^(+2) +145 shift[i]^(+3) -30 shift[i]^(+4)
+ +3 shift[i]^(+5)) / (1680 spacing[i])],
+
+ PDupwindNthSymm[i] -> Switch[fdOrder,
+ 2, (-1 shift[i]^(-2) +4 shift[i]^(-1) -6 shift[i]^( 0) +4 shift[i]^(+1) -1 shift[i]^(+2)) / (4 spacing[i]),
+ 4, (+1 shift[i]^(-3) -6 shift[i]^(-2) +15 shift[i]^(-1) -20 shift[i]^( 0) +15 shift[i]^(+1)
+ -6 shift[i]^(+2) +1 shift[i]^(+3)) / (24 spacing[i]),
+ 6, (-1 shift[i]^(-4) +8 shift[i]^(-3) - 28 shift[i]^(-2)+56 shift[i]^(-1)-70 shift[i]^( 0)
+ +56 shift[i]^(+1) -28 shift[i]^(+2) +8 shift[i]^(+3) -1 shift[i]^(+4)) / (120 spacing[i]),
+ 8, (+3 shift[i]^(-5) -30 shift[i]^(-4) +135 shift[i]^(-3) -360 shift[i]^(-2) +630 shift[i]^(-1)
+ -756 shift[i]^( 0) +630 shift[i]^(+1) -360 shift[i]^(+2) +135 shift[i]^(+3) -30 shift[i]^(+4)
+ +3 shift[i]^(+5)) / (1680 spacing[i])],
+
+ (* TODO: make these higher order stencils *)
+ PDonesided[i] -> dir[i] (-1 + shift[i]^dir[i]) / spacing[i]} /. i->j, {j,1,3}],1]
};
-derivatives = Join[derivatives,
- Flatten[Table[
- Switch[derivOrder,
- 2,
- {PDupwindNthAnti[i] -> ( +1 shift[i]^(-2)
- -4 shift[i]^(-1)
- +0 shift[i]^( 0)
- +4 shift[i]^(+1)
- -1 shift[i]^(+2)) / (4 spacing[i]),
- PDupwindNthSymm[i] -> ( -1 shift[i]^(-2)
- +4 shift[i]^(-1)
- -6 shift[i]^( 0)
- +4 shift[i]^(+1)
- -1 shift[i]^(+2)) / (4 spacing[i])},
- 4,
- {PDupwindNthAnti[i] -> ( -1 shift[i]^(-3)
- +6 shift[i]^(-2)
- -21 shift[i]^(-1)
- +0 shift[i]^( 0)
- +21 shift[i]^(+1)
- -6 shift[i]^(+2)
- +1 shift[i]^(+3)) / (24 spacing[i]),
- PDupwindNthSymm[i] -> ( +1 shift[i]^(-3)
- -6 shift[i]^(-2)
- +15 shift[i]^(-1)
- -20 shift[i]^( 0)
- +15 shift[i]^(+1)
- -6 shift[i]^(+2)
- +1 shift[i]^(+3)) / (24 spacing[i])},
- 6,
- {PDupwindNthAnti[i] -> ( +1 shift[i]^(-4)
- -8 shift[i]^(-3)
- +32 shift[i]^(-2)
- -104 shift[i]^(-1)
- +0 shift[i]^( 0)
- +104 shift[i]^(+1)
- -32 shift[i]^(+2)
- +8 shift[i]^(+3)
- -1 shift[i]^(+4)) / (120 spacing[i]),
- PDupwindNthSymm[i] -> ( -1 shift[i]^(-4)
- +8 shift[i]^(-3)
- -28 shift[i]^(-2)
- +56 shift[i]^(-1)
- -70 shift[i]^( 0)
- +56 shift[i]^(+1)
- -28 shift[i]^(+2)
- +8 shift[i]^(+3)
- -1 shift[i]^(+4)) / (120 spacing[i])},
- 8,
- {PDupwindNthAnti[i] -> ( -3 shift[i]^(-5)
- +30 shift[i]^(-4)
- -145 shift[i]^(-3)
- +480 shift[i]^(-2)
- -1470 shift[i]^(-1)
- +0 shift[i]^( 0)
- +1470 shift[i]^(+1)
- -480 shift[i]^(+2)
- +145 shift[i]^(+3)
- -30 shift[i]^(+4)
- +3 shift[i]^(+5)) / (1680 spacing[i]),
- PDupwindNthSymm[i] -> ( +3 shift[i]^(-5)
- -30 shift[i]^(-4)
- +135 shift[i]^(-3)
- -360 shift[i]^(-2)
- +630 shift[i]^(-1)
- -756 shift[i]^( 0)
- +630 shift[i]^(+1)
- -360 shift[i]^(+2)
- +135 shift[i]^(+3)
- -30 shift[i]^(+4)
- +3 shift[i]^(+5)) / (1680 spacing[i])}],
- {i,1,3}]]
-];
-
PD = PDstandardNth;
PDu = PDupwindNth;
PDua = PDupwindNthAnti;
@@ -323,9 +218,9 @@ extraGroups =
{"TmunuBase::stress_energy_tensor", {eTxx, eTxy, eTxz, eTyy, eTyz, eTzz}}
};
+groups = Join [declaredGroups, extraGroups];
-groups = Join [declaredGroups, extraGroups];
(******************************************************************************)
(* Initial data *)
@@ -473,11 +368,14 @@ initGammaCalc =
Equations ->
{
Xt[ua] -> 0,
+ A -> 0,
+ B[ua] -> 0,
Tet -> 0
}
};
+
(******************************************************************************)
(* Convert to ADMBase *)
(******************************************************************************)
@@ -504,11 +402,15 @@ convertToADMBaseDtLapseShiftCalc =
Schedule -> {"IN " <> BSSN <> "_convertToADMBaseGroup"},
ConditionalOnKeyword -> {"dt_lapse_shift_method", "correct"},
Where -> Interior,
- Shorthands -> {dir[ua], eta, theta},
+ Shorthands -> {dir[ua], detgt, gtu[ua,ub], eta, theta},
Equations ->
{
dir[ua] -> Sign[beta[ua]],
+ detgt -> 1 (* detgtExpr *),
+ (* This leads to simpler code... *)
+ gtu[ua,ub] -> 1/detgt detgtExpr MatrixInverse [gt[ua,ub]],
+
eta -> etaExpr,
theta -> thetaExpr,
@@ -523,9 +425,17 @@ convertToADMBaseDtLapseShiftCalc =
(+ LapseACoeff A
+ (1 - LapseACoeff) (trK - 2 Tet))
+ LapseAdvectionCoeff Upwind[beta[ua], alpha, la],
- admdtbeta[ua] -> + theta ShiftGammaCoeff
- (+ ShiftBCoeff B[ua]
- + (1 - ShiftBCoeff) (Xt[ua] - eta BetaDriver beta[ua]))
+ admdtbeta[ua] -> IfThen[harmonicShift,
+ - 1/2 gtu[ua,uj] phi alpha
+ (- 2 alpha PD[phi,lj]
+ + 2 phi PD[alpha,lj]
+ + gtu[uk,ul] phi alpha
+ (PD[gt[lk,ll],lj] - 2 PD[gt[lj,lk],ll])),
+ (* else *)
+ + theta ShiftGammaCoeff
+ (+ ShiftBCoeff B[ua]
+ + (1 - ShiftBCoeff)
+ (Xt[ua] - eta BetaDriver beta[ua]))]
+ ShiftAdvectionCoeff Upwind[beta[ub], beta[ua], lb]
}
};
@@ -536,9 +446,13 @@ convertToADMBaseDtLapseShiftBoundaryCalc =
Schedule -> {"IN " <> BSSN <> "_convertToADMBaseGroup"},
ConditionalOnKeyword -> {"dt_lapse_shift_method", "correct"},
Where -> BoundaryWithGhosts,
- Shorthands -> {eta, theta},
+ Shorthands -> {detgt, gtu[ua,ub], eta, theta},
Equations ->
{
+ detgt -> 1 (* detgtExpr *),
+ (* This leads to simpler code... *)
+ gtu[ua,ub] -> 1/detgt detgtExpr MatrixInverse [gt[ua,ub]],
+
eta -> etaExpr,
theta -> thetaExpr,
@@ -551,9 +465,13 @@ convertToADMBaseDtLapseShiftBoundaryCalc =
admdtalpha -> - harmonicF alpha^harmonicN
(+ LapseACoeff A
+ (1 - LapseACoeff) (trK - 2 Tet)),
- admdtbeta[ua] -> + theta ShiftGammaCoeff
- (+ ShiftBCoeff B[ua]
- + (1 - ShiftBCoeff) (Xt[ua] - eta BetaDriver beta[ua]))
+ admdtbeta[ua] -> IfThen[harmonicShift,
+ 0,
+ (* else *)
+ + theta ShiftGammaCoeff
+ (+ ShiftBCoeff B[ua]
+ + (1 - ShiftBCoeff)
+ (Xt[ua] - eta BetaDriver beta[ua]))]
}
};
@@ -563,9 +481,13 @@ convertToADMBaseFakeDtLapseShiftCalc =
Schedule -> {"IN " <> BSSN <> "_convertToADMBaseGroup"},
ConditionalOnKeyword -> {"dt_lapse_shift_method", "noLapseShiftAdvection"},
Where -> Everywhere,
- Shorthands -> {eta, theta},
+ Shorthands -> {detgt, gtu[ua,ub], eta, theta},
Equations ->
{
+ detgt -> 1 (* detgtExpr *),
+ (* This leads to simpler code... *)
+ gtu[ua,ub] -> 1/detgt detgtExpr MatrixInverse [gt[ua,ub]],
+
eta -> etaExpr,
theta -> thetaExpr,
@@ -580,9 +502,13 @@ convertToADMBaseFakeDtLapseShiftCalc =
admdtalpha -> - harmonicF alpha^harmonicN
(+ LapseACoeff A
+ (1 - LapseACoeff) (trK - 2 Tet)),
- admdtbeta[ua] -> + theta ShiftGammaCoeff
- (+ ShiftBCoeff B[ua]
- + (1 - ShiftBCoeff) (Xt[ua] - eta BetaDriver beta[ua]))
+ admdtbeta[ua] -> IfThen[harmonicShift,
+ 0,
+ (* else *)
+ + theta ShiftGammaCoeff
+ (+ ShiftBCoeff B[ua]
+ + (1 - ShiftBCoeff)
+ (Xt[ua] - eta BetaDriver beta[ua]))]
}
};
@@ -784,9 +710,17 @@ evolCalc =
(* dot[beta[ua]] -> eta Xt[ua], *)
(* dot[beta[ua]] -> ShiftGammaCoeff alpha^ShiftAlphaPower B[ua], *)
- dot[beta[ua]] -> + theta ShiftGammaCoeff
- (+ ShiftBCoeff B[ua]
- + (1 - ShiftBCoeff) (Xt[ua] - eta BetaDriver beta[ua])),
+ dot[beta[ua]] -> IfThen[harmonicShift,
+ - 1/2 gtu[ua,uj] phi alpha
+ (- 2 alpha PD[phi,lj]
+ + 2 phi PD[alpha,lj]
+ + gtu[uk,ul] phi alpha
+ (PD[gt[lk,ll],lj] - 2 PD[gt[lj,lk],ll])),
+ (* else *)
+ + theta ShiftGammaCoeff
+ (+ ShiftBCoeff B[ua]
+ + (1 - ShiftBCoeff)
+ (Xt[ua] - eta BetaDriver beta[ua]))],
dot[B[ua]] -> + ShiftBCoeff (dotXt[ua] - eta BetaDriver B[ua])
@@ -859,7 +793,6 @@ evolCalc2 = PartialCalculation[evolCalc, "2",
dot[At[la,lb]]
}];
-
dissCalc =
{
Name -> BSSN <> "_Dissipation",
@@ -877,6 +810,24 @@ dissCalc =
}
};
+dissCalcs =
+Table[
+{
+ Name -> BSSN <> "_Dissipation_" <> ToString[var /. {Tensor[n_,__] -> n}],
+ Schedule -> {"IN " <> BSSN <> "_evolCalcGroup " <>
+ "AFTER (" <> BSSN <> "_RHS1 " <> BSSN <> "_RHS2)"},
+ ConditionalOnKeyword -> {"apply_dissipation", "always"},
+ Where -> InteriorNoSync,
+ Shorthands -> {epsdiss[ua]},
+ Equations ->
+ {
+ epsdiss[ua] -> EpsDiss,
+ 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]}}
+];
+
RHSStaticBoundaryCalc =
{
Name -> BSSN <> "_RHSStaticBoundary",
@@ -940,7 +891,7 @@ RHSRadiativeBoundaryCalc =
em4phi -> IfThen [conformalMethod, phi^2, Exp[-4 phi]],
gu[ua,ub] -> em4phi gtu[ua,ub],
- nn[la] -> normal[la],
+ nn[la] -> Euc[la,lb] normal[ub],
nu[ua] -> gu[ua,ub] nn[lb],
nlen2 -> nu[ua] nn[la],
nlen -> Sqrt[nlen2],
@@ -964,11 +915,14 @@ RHSRadiativeBoundaryCalc =
enforceCalc =
{
Name -> BSSN <> "_enforce",
- Schedule -> {"IN MoL_PostStep BEFORE " <> BSSN <> "_SelectBoundConds"},
+ Schedule -> {"IN MoL_PostStepModify"},
Shorthands -> {detgt, gtu[ua,ub], trAt},
Equations ->
{
- (* Enforcing the constraints needs to be a projection, because it
+ (* The following comment is still interesting, but is not correct
+ any more since it is now scheduled in MoL_PostStepModify instead:
+
+ Enforcing the constraints needs to be a projection, because it
is applied in MoL_PostStep and may thus be applied multiple
times, not only during time evolution. Therefore detgt has to
be calculated correctly, without assuming that det gt_ij = 1,
@@ -1018,12 +972,13 @@ constraintsCalc =
{
Name -> BSSN <> "_constraints",
Schedule -> Automatic,
+ After -> "MoL_PostStep",
Where -> Interior,
Shorthands -> {detgt, ddetgt[la], gtu[ua,ub],
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],
- Rt[la,lb], Rphi[la,lb], R[la,lb], trR, Atm[la,lb],
+ Rt[la,lb], Rphi[la,lb], R[la,lb], trR, Atm[ua,lb],
gK[la,lb,lc], cdphi[la], cdphi2[la,lb],
rho, S[la], fac1, fac2, Zet[ua]},
Equations ->
@@ -1285,6 +1240,18 @@ intParameters =
AllowedValues -> {{Value -> "0", Description -> "phi method"},
{Value -> "1", Description -> "W method"}},
Default -> 0
+ },
+ {
+ Name -> fdOrder,
+ Default -> derivOrder,
+ AllowedValues -> {2,4,6,8}
+ },
+ {
+ Name -> harmonicShift,
+ Description -> "Whether to use the harmonic shift",
+ AllowedValues -> {{Value -> "0", Description -> "Gamma driver shift"},
+ {Value -> "1", Description -> "Harmonic shift"}},
+ Default -> 0
}
};
@@ -1319,7 +1286,7 @@ realParameters =
},
{
Name -> LapseAdvectionCoeff,
- Description -> "Factor in front of the shift advection terms in 1+log",
+ Description -> "Factor in front of the lapse advection terms in 1+log",
Default -> 1
},
{
@@ -1377,6 +1344,7 @@ realParameters =
(******************************************************************************)
calculations =
+Join[
{
initialCalc,
convertFromADMBaseCalc,
@@ -1398,7 +1366,9 @@ calculations =
convertToADMBaseFakeDtLapseShiftCalc,
(* constraintsCalc, *)
constraintsCalc1, constraintsCalc2
-};
+},
+ {} (*dissCalcs*)
+];
CreateKrancThornTT [groups, ".", BSSN,
Calculations -> calculations,
@@ -1406,7 +1376,7 @@ CreateKrancThornTT [groups, ".", BSSN,
PartialDerivatives -> derivatives,
EvolutionTimelevels -> evolutionTimelevels,
DefaultEvolutionTimelevels -> 3,
- UseJacobian -> useJacobian,
+ UseJacobian -> True,
UseLoopControl -> True,
UseVectors -> True,
InheritedImplementations -> inheritedImplementations,
@@ -1427,6 +1397,7 @@ CreateKrancThornTT [groups, ".", BSSN,
(* derivative order: 2, 4, 6, 8, ... *)
(* useJacobian: False or True *)
+(* split upwind derivatives: False or True *)
(* timelevels: 2 or 3
(keep this at 3; this is better chosen with a run-time parameter) *)
(* matter: 0 or 1
diff --git a/m/McLachlan_BSSN_Peter.m b/m/McLachlan_BSSN_Peter.m
index 3631867..c5b5b7d 100644
--- a/m/McLachlan_BSSN_Peter.m
+++ b/m/McLachlan_BSSN_Peter.m
@@ -1,7 +1,3 @@
-$Path = Join[$Path, {"../../../repos/Kranc/Tools/CodeGen",
- "../../../repos/Kranc/Tools/MathematicaMisc"}];
-
-Get["KrancThorn`"];
SetEnhancedTimes[False];
SetSourceLanguage["C"];
diff --git a/m/McLachlan_WeylScalars.m b/m/McLachlan_WeylScalars.m
index 86b4a36..5e8d805 100644
--- a/m/McLachlan_WeylScalars.m
+++ b/m/McLachlan_WeylScalars.m
@@ -1,7 +1,3 @@
-$Path = Join[$Path, {"../../../repos/Kranc/Tools/CodeGen",
- "../../../repos/Kranc/Tools/MathematicaMisc"}];
-
-Get["KrancThorn`"];
SetEnhancedTimes[False];
SetSourceLanguage["C"];
diff --git a/m/McLachlantmp.m b/m/McLachlantmp.m
index 1d652c9..54581e2 100644
--- a/m/McLachlantmp.m
+++ b/m/McLachlantmp.m
@@ -1,7 +1,3 @@
-$Path = Join[$Path, {"../../../repos/Kranc/Tools/CodeGen",
- "../../../repos/Kranc/Tools/MathematicaMisc"}];
-
-Get["KrancThorn`"];
SetEnhancedTimes[False];
SetSourceLanguage["C"];
diff --git a/m/WaveToy.m b/m/WaveToy.m
index dfc0862..de2c73e 100644
--- a/m/WaveToy.m
+++ b/m/WaveToy.m
@@ -1,7 +1,3 @@
-$Path = Join[$Path, {"../../../repos/Kranc/Tools/CodeGen",
- "../../../repos/Kranc/Tools/MathematicaMisc"}];
-
-Get["KrancThorn`"];
SetEnhancedTimes[False];
SetSourceLanguage["C"];
diff --git a/m/WaveToyFO.m b/m/WaveToyFO.m
index 4864131..f80b0b2 100644
--- a/m/WaveToyFO.m
+++ b/m/WaveToyFO.m
@@ -1,7 +1,3 @@
-$Path = Join[$Path, {"../../../repos/Kranc/Tools/CodeGen",
- "../../../repos/Kranc/Tools/MathematicaMisc"}];
-
-Get["KrancThorn`"];
SetEnhancedTimes[False];
SetSourceLanguage["C"];
diff --git a/m/WaveToyMP.m b/m/WaveToyMP.m
deleted file mode 100644
index 546a618..0000000
--- a/m/WaveToyMP.m
+++ /dev/null
@@ -1,271 +0,0 @@
-$Path = Join[$Path, {"../../../repos/Kranc/Tools/CodeGen",
- "../../../repos/Kranc/Tools/MathematicaMisc"}];
-
-Get["KrancThorn`"];
-
-SetEnhancedTimes[False];
-SetSourceLanguage["C"];
-
-(******************************************************************************)
-(* Derivatives *)
-(******************************************************************************)
-
-derivOrder = 4;
-
-derivatives =
-{
- PDstandardNth[i_] -> StandardCenteredDifferenceOperator[1,derivOrder/2,i],
- PDstandardNth[i_, i_] -> StandardCenteredDifferenceOperator[2,derivOrder/2,i],
- PDstandardNth[i_, j_] -> StandardCenteredDifferenceOperator[1,derivOrder/2,i]
- StandardCenteredDifferenceOperator[1,derivOrder/2,j],
- PDstandardNth[i_, i_, i_] ->
- StandardCenteredDifferenceOperator[3,derivOrder/2,i],
- PDstandardNth[i_, i_, j_] ->
- StandardCenteredDifferenceOperator[2,derivOrder/2,i]
- StandardCenteredDifferenceOperator[1,derivOrder/2,j],
- PDstandardNth[i_, j_, i_] ->
- StandardCenteredDifferenceOperator[2,derivOrder/2,i]
- StandardCenteredDifferenceOperator[1,derivOrder/2,j],
- PDstandardNth[j_, i_, i_] ->
- StandardCenteredDifferenceOperator[2,derivOrder/2,i]
- StandardCenteredDifferenceOperator[1,derivOrder/2,j],
- PDstandardNth[i_, j_, k_] ->
- StandardCenteredDifferenceOperator[1,derivOrder/2,i]
- StandardCenteredDifferenceOperator[1,derivOrder/2,j]
- StandardCenteredDifferenceOperator[1,derivOrder/2,k]
-};
-
-(* local derivatives *)
-PDloc = PDstandardNth;
-
-(* global derivatives *)
-PDglob[var_,lx_] := Jinv[u1,lx] PDloc[var,l1];
-PDglob[var_,lx_,ly_] :=
- dJinv[u1,lx,ly] PDloc[var,l1] + Jinv[u1,lx] Jinv[u2,ly] PDloc[var,l1,l2];
-
-UseGlobalDerivs = False;
-PD := If [UseGlobalDerivs, PDglob, PDloc];
-
-(* timelevels *)
-evolutionTimelevels = 2;
-
-KD = KroneckerDelta;
-
-(******************************************************************************)
-(* Tensors *)
-(******************************************************************************)
-
-(* Register the tensor quantities with the TensorTools package *)
-Map [DefineTensor, {u, rho, v, w, J, Jinv, dJ, dJinv}];
-
-AssertSymmetricIncreasing [dJ[uA,lb,lc], lb,lc];
-AssertSymmetricIncreasing [dJinv[ua,lx,ly], lx,ly];
-
-(******************************************************************************)
-(* Groups *)
-(******************************************************************************)
-
-evolvedGroups =
- {SetGroupName [CreateGroupFromTensor [u ], "WT_u" ],
- SetGroupName [CreateGroupFromTensor [rho], "WT_rho"]};
-evaluatedGroups = {};
-
-declaredGroups = Join [evolvedGroups, evaluatedGroups];
-declaredGroupNames = Map [First, declaredGroups];
-
-evolvedGroupsFO =
- {SetGroupName [CreateGroupFromTensor [u ], "WT_u" ],
- SetGroupName [CreateGroupFromTensor [v[la]], "WT_v" ],
- SetGroupName [CreateGroupFromTensor [rho ], "WT_rho"]};
-evaluatedGroupsFO =
- {SetGroupName [CreateGroupFromTensor [w[ua]], "WT_w"]};
-
-declaredGroupsFO = Join [evolvedGroupsFO, evaluatedGroupsFO];
-declaredGroupNamesFO = Map [First, declaredGroupsFO];
-
-
-
-extraGroups =
- {{"MultiPatch::transformation",
- {dxda,dxdb,dxdc, dyda,dydb,dydc, dzda,dzdb,dzdc}},
- {"MultiPatch::transformation_inv",
- {dadx,dady,dadz, dbdx,dbdy,dbdz, dcdx,dcdy,dcdz}},
- {"MultiPatch::transformation_derivs",
- {ddxdada,ddxdadb,ddxdadc,ddxdbdb,ddxdbdc,ddxdcdc,
- ddydada,ddydadb,ddydadc,ddydbdb,ddydbdc,ddydcdc,
- ddzdada,ddzdadb,ddzdadc,ddzdbdb,ddzdbdc,ddzdcdc}},
- {"MultiPatch::transformation_inv_derivs",
- {ddadxdx,ddadxdy,ddadxdz,ddadydy,ddadzdz,ddadydz,
- ddbdxdx,ddbdxdy,ddbdxdz,ddbdydy,ddbdzdz,ddbdydz,
- ddcdxdx,ddcdxdy,ddcdxdz,ddcdydy,ddcdzdz,ddcdydz}}};
-
-
-
-groups = Join [declaredGroups, extraGroups];
-groupsFO = Join [declaredGroupsFO, extraGroups];
-
-(******************************************************************************)
-(* Initial data *)
-(******************************************************************************)
-
-initialCalc =
-{
- Name -> "WT_Gaussian",
- Schedule -> {"AT initial"},
- (* Where -> Boundary, *)
- (* Where -> Interior, *)
- Equations ->
- {
- u -> 0,
- rho -> 0
- }
-};
-
-initialCalcFO =
-{
- Name -> "WTFO_Gaussian",
- Schedule -> {"AT initial"},
- (* Where -> Boundary, *)
- (* Where -> Interior, *)
- Equations ->
- {
- u -> 0,
- v[la] -> 0,
- rho -> 0
- }
-};
-
-(******************************************************************************)
-(* Evolution equations *)
-(******************************************************************************)
-
-evolCalc =
-{
- Name -> "WT_RHS",
- Schedule -> {"IN MoL_CalcRHS", "AT analysis"},
- Where -> Interior,
- Shorthands -> {Jinv[ua,lx], dJinv[ua,lx,ly]},
- Equations ->
- {
- Jinv11 -> dadx,
- Jinv12 -> dady,
- Jinv13 -> dadz,
- Jinv21 -> dbdx,
- Jinv22 -> dbdy,
- Jinv23 -> dbdz,
- Jinv31 -> dcdx,
- Jinv32 -> dcdy,
- Jinv33 -> dcdz,
- dJinv111 -> ddadxdx,
- dJinv112 -> ddadxdy,
- dJinv113 -> ddadxdz,
- dJinv122 -> ddadydy,
- dJinv123 -> ddadydz,
- dJinv133 -> ddadzdz,
- dJinv211 -> ddadxdx,
- dJinv212 -> ddadxdy,
- dJinv213 -> ddadxdz,
- dJinv222 -> ddadydy,
- dJinv223 -> ddadydz,
- dJinv233 -> ddadzdz,
- dJinv311 -> ddadxdx,
- dJinv312 -> ddadxdy,
- dJinv313 -> ddadxdz,
- dJinv322 -> ddadydy,
- dJinv323 -> ddadydz,
- dJinv333 -> ddadzdz,
- dot[u] -> rho,
- dot[rho] -> KD[ua,ub] PD[u,la,lb]
- }
-};
-
-evolCalcFO =
-{
- Name -> "WTFO_RHS",
- Schedule -> {"IN MoL_CalcRHS", "AT analysis"},
- Where -> Interior,
- Shorthands -> {Jinv[ua,lx]},
- Equations ->
- {
- Jinv11 -> dadx,
- Jinv12 -> dady,
- Jinv13 -> dadz,
- Jinv21 -> dbdx,
- Jinv22 -> dbdy,
- Jinv23 -> dbdz,
- Jinv31 -> dcdx,
- Jinv32 -> dcdy,
- Jinv33 -> dcdz,
- dot[u] -> rho,
- dot[rho] -> KD[ua,ub] PD[v[la],lb],
- dot[v[la]] -> PD[rho,la]
- }
-};
-
-(******************************************************************************)
-(* Constraint equations *)
-(******************************************************************************)
-
-constraintsCalcFO =
-{
- Name -> "WTFO_constraints",
- Schedule -> {"AT analysis"},
- Where -> Interior,
- Shorthands -> {Jinv[ua,lx]},
- Equations ->
- {
- Jinv11 -> dadx,
- Jinv12 -> dady,
- Jinv13 -> dadz,
- Jinv21 -> dbdx,
- Jinv22 -> dbdy,
- Jinv23 -> dbdz,
- Jinv31 -> dcdx,
- Jinv32 -> dcdy,
- Jinv33 -> dcdz,
- w[ua] -> Eps[ua,ub,uc] PD[v[lb],lc]
- }
-};
-
-(******************************************************************************)
-(* Implementations *)
-(******************************************************************************)
-
-inheritedImplementations = {"MultiPatch"};
-
-(******************************************************************************)
-(* Construct the thorns *)
-(******************************************************************************)
-
-calculations =
-{
- initialCalc,
- evolCalc
-};
-
-CreateKrancThornTT [groups, ".", "ML_WaveToy",
- Calculations -> calculations,
- DeclaredGroups -> declaredGroupNames,
- PartialDerivatives -> derivatives,
- UseLoopControl -> True,
- EvolutionTimelevels -> evolutionTimelevels,
- InheritedImplementations -> inheritedImplementations
-];
-
-
-
-calculationsFO =
-{
- initialCalcFO,
- evolCalcFO,
- constraintsCalcFO
-};
-
-CreateKrancThornTT [groupsFO, ".", "ML_FOWaveToy",
- Calculations -> calculationsFO,
- DeclaredGroups -> declaredGroupNamesFO,
- PartialDerivatives -> derivatives,
- UseLoopControl -> True,
- EvolutionTimelevels -> evolutionTimelevels,
- InheritedImplementations -> inheritedImplementations
-];
diff --git a/m/hydro.m b/m/hydro.m
index 85b9e45..a69194f 100644
--- a/m/hydro.m
+++ b/m/hydro.m
@@ -113,8 +113,8 @@ prim2conCalc =
{
vol -> h^3,
mass -> vol rho,
- mom[la] -> mass vel[la],
- ene -> (1/2) mass vel[ua] vel[la] + mass eps
+ mom[la] -> mass Euc[la,lb] vel[ub],
+ ene -> (1/2) mass Euc[la,lb] vel[ub] vel[ua] + mass eps
}
};
@@ -129,8 +129,8 @@ con2primCalc =
Equations ->
{
rho -> mass / vol,
- vel[ua] -> mom[ua] / mass,
- eps -> ene / mass - (1/2) vel[ua] vel[la],
+ vel[ua] -> Euc[ua,ub] mom[lb] / mass,
+ eps -> ene / mass - (1/2) Euc[la,lc] vel[ua] vel[uc],
press -> Gamma rho eps
}
diff --git a/m/prototype/ML_BSSN_Helper/src/SetGroupTags.c b/m/prototype/ML_BSSN_Helper/src/SetGroupTags.c
index 4b24e56..7ae24bb 100644
--- a/m/prototype/ML_BSSN_Helper/src/SetGroupTags.c
+++ b/m/prototype/ML_BSSN_Helper/src/SetGroupTags.c
@@ -15,29 +15,30 @@ ML_BSSN_SetGroupTags (void)
{
DECLARE_CCTK_PARAMETERS;
- set_group_tags (0, 0, 1, "ADMBase::metric");
- set_group_tags (0, 0, 1, "ADMBase::curv");
- set_group_tags (0, 0, 1, "ADMBase::lapse");
- set_group_tags (0, 0, 1, "ADMBase::shift");
- set_group_tags (0, 0, 1, "ADMBase::dtlapse");
- set_group_tags (0, 0, 1, "ADMBase::dtshift");
+ 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 (0, 0, 0, "ML_BSSN::ML_cons_detg");
- set_group_tags (0, 0, 0, "ML_BSSN::ML_cons_Gamma");
- set_group_tags (0, 0, 0, "ML_BSSN::ML_cons_traceA");
- set_group_tags (0, 0, 0, "ML_BSSN::ML_Ham");
- set_group_tags (0, 0, 0, "ML_BSSN::ML_mom");
+ set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN::ML_cons_detg");
+ set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN::ML_cons_Gamma");
+ set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN::ML_cons_traceA");
+ set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN::ML_Ham");
+ set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN::ML_mom");
- int const checkpoint = rhs_timelevels > 1;
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN::ML_log_confacrhs");
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN::ML_metricrhs");
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN::ML_Gammarhs");
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN::ML_trace_curvrhs");
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN::ML_curvrhs");
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN::ML_lapserhs");
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN::ML_dtlapserhs");
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN::ML_shiftrhs");
- set_group_tags (checkpoint, checkpoint, 0, "ML_BSSN::ML_dtshiftrhs");
+ int const rhs_checkpoint = rhs_timelevels > 1;
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN::ML_log_confacrhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN::ML_metricrhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN::ML_Gammarhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN::ML_trace_curvrhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN::ML_curvrhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN::ML_lapserhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN::ML_dtlapserhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN::ML_shiftrhs");
+ set_group_tags (rhs_checkpoint, rhs_checkpoint, 0, "ML_BSSN::ML_dtshiftrhs");
return 0;
}
diff --git a/m/runmath.sh b/m/runmath.sh
index 306b2e1..18196d1 100755
--- a/m/runmath.sh
+++ b/m/runmath.sh
@@ -3,8 +3,6 @@
# Abort on errors
set -e
-MATHEMATICA="math"
-
script=$1
if test -z "$script"; then
@@ -18,17 +16,8 @@ output=$(basename $script .m).out
rm -f $output
-# Run Mathematica to regenerate the code
-< $script "$MATHEMATICA" | tee $error
-
-if grep 'KrancError' $error; then
- echo
- echo "There was an error when running Kranc on $script."
- echo "The file $error contains details."
- echo
- echo "*** The Cactus thorns have NOT been updated. ***"
- echo
- exit 1
-fi
+# Run Kranc to regenerate the code
+../../../repos/Kranc/Bin/kranc $script | tee $error
+[ $PIPESTATUS -eq 0 ] || exit $PIPESTATUS
mv $error $output