aboutsummaryrefslogtreecommitdiff
path: root/ML_BSSN/src/ML_BSSN_RHSStaticBoundary.cc
diff options
context:
space:
mode:
Diffstat (limited to 'ML_BSSN/src/ML_BSSN_RHSStaticBoundary.cc')
-rw-r--r--ML_BSSN/src/ML_BSSN_RHSStaticBoundary.cc135
1 files changed, 135 insertions, 0 deletions
diff --git a/ML_BSSN/src/ML_BSSN_RHSStaticBoundary.cc b/ML_BSSN/src/ML_BSSN_RHSStaticBoundary.cc
index 6d1c90d..4b16e2c 100644
--- a/ML_BSSN/src/ML_BSSN_RHSStaticBoundary.cc
+++ b/ML_BSSN/src/ML_BSSN_RHSStaticBoundary.cc
@@ -79,6 +79,20 @@ static void ML_BSSN_RHSStaticBoundary_Body(cGH const * restrict const cctkGH, in
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;
+ }
/* Include user-supplied include files */
@@ -106,24 +120,129 @@ static void ML_BSSN_RHSStaticBoundary_Body(cGH const * restrict const cctkGH, in
CCTK_REAL_VEC const hdzi = kmul(ToReal(0.5), dzi);
/* Initialize predefined quantities */
+ CCTK_REAL_VEC const p1o1024dx = kmul(INV(dx),ToReal(0.0009765625));
+ CCTK_REAL_VEC const p1o1024dy = kmul(INV(dy),ToReal(0.0009765625));
+ CCTK_REAL_VEC const p1o1024dz = kmul(INV(dz),ToReal(0.0009765625));
+ CCTK_REAL_VEC const p1o120dx = kmul(INV(dx),ToReal(0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o120dy = kmul(INV(dy),ToReal(0.00833333333333333333333333333333));
+ CCTK_REAL_VEC const p1o120dz = kmul(INV(dz),ToReal(0.00833333333333333333333333333333));
CCTK_REAL_VEC const p1o12dx = kmul(INV(dx),ToReal(0.0833333333333333333333333333333));
CCTK_REAL_VEC const p1o12dy = kmul(INV(dy),ToReal(0.0833333333333333333333333333333));
CCTK_REAL_VEC const p1o12dz = kmul(INV(dz),ToReal(0.0833333333333333333333333333333));
CCTK_REAL_VEC const p1o144dxdy = kmul(INV(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;
/* Loop over the grid points */
#pragma omp parallel
@@ -138,10 +257,26 @@ 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_VEC phirhsL = ToReal(0);