aboutsummaryrefslogtreecommitdiff
path: root/ML_BSSN/src/ML_BSSN_RHS.cc
diff options
context:
space:
mode:
Diffstat (limited to 'ML_BSSN/src/ML_BSSN_RHS.cc')
-rw-r--r--ML_BSSN/src/ML_BSSN_RHS.cc175
1 files changed, 68 insertions, 107 deletions
diff --git a/ML_BSSN/src/ML_BSSN_RHS.cc b/ML_BSSN/src/ML_BSSN_RHS.cc
index 28c80ea..098f585 100644
--- a/ML_BSSN/src/ML_BSSN_RHS.cc
+++ b/ML_BSSN/src/ML_BSSN_RHS.cc
@@ -27,6 +27,11 @@
#define CUB(x) (kmul(x,SQR(x)))
#define QAD(x) (SQR(SQR(x)))
+extern "C" {
+double TMP_fce_GammaDotX(double x, double z,double t,double tau);
+double TMP_fce_GammaDotZ(double x, double z,double t,double tau);
+}
+
extern "C" void ML_BSSN_RHS_SelectBCs(CCTK_ARGUMENTS)
{
DECLARE_CCTK_ARGUMENTS;
@@ -53,9 +58,6 @@ extern "C" void ML_BSSN_RHS_SelectBCs(CCTK_ARGUMENTS)
ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN::ML_metricrhs","flat");
if (ierr < 0)
CCTK_WARN(1, "Failed to register flat BC for ML_BSSN::ML_metricrhs.");
- ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN::ML_phidot","flat");
- if (ierr < 0)
- CCTK_WARN(1, "Failed to register flat BC for ML_BSSN::ML_phidot.");
ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN::ML_shiftrhs","flat");
if (ierr < 0)
CCTK_WARN(1, "Failed to register flat BC for ML_BSSN::ML_shiftrhs.");
@@ -995,7 +997,6 @@ static void ML_BSSN_RHS_Body(const cGH* restrict const cctkGH, const int dir, co
PDstandardNth22phi = origin ? PDstandardNth11phi : PDstandardNth1phi / xx;
PDstandardNth12phi = 0;
PDstandardNth23phi = 0;
- PDstandardNth2trK = 0;
PDstandardNth2Xt1 = 0;
PDstandardNth2Xt2 = origin ? PDstandardNth1Xt1 : Xt1[index] / xx;
PDstandardNth2Xt3 = 0;
@@ -2361,10 +2362,6 @@ static void ML_BSSN_RHS_Body(const cGH* restrict const cctkGH, const int dir, co
kneg(kmul(IfThen(conformalMethod ==
1,kmul(phiL,ToReal(0.333333333333333333333333333333)),ToReal(-0.166666666666666666666666666667)),kadd(JacPDstandardNth1beta1,kadd(JacPDstandardNth2beta2,knmsub(alphaL,trKL,JacPDstandardNth3beta3)))));
- CCTK_REAL_VEC phidotL CCTK_ATTRIBUTE_UNUSED =
- kneg(kmul(IfThen(conformalMethod ==
- 1,kmul(phiL,ToReal(0.333333333333333333333333333333)),ToReal(-0.166666666666666666666666666667)),kadd(JacPDstandardNth1beta1,kadd(JacPDstandardNth2beta2,knmsub(alphaL,trKL,JacPDstandardNth3beta3)))));
-
CCTK_REAL_VEC gt11rhsL CCTK_ATTRIBUTE_UNUSED =
kmadd(alphaL,kmul(At11L,ToReal(-2)),kmadd(gt11L,kmul(kadd(JacPDstandardNth1beta1,kadd(JacPDstandardNth2beta2,JacPDstandardNth3beta3)),ToReal(-0.666666666666666666666666666667)),kmul(kmadd(gt11L,JacPDstandardNth1beta1,kmadd(gt12L,JacPDstandardNth1beta2,kmul(gt13L,JacPDstandardNth1beta3))),ToReal(2))));
@@ -2398,12 +2395,6 @@ static void ML_BSSN_RHS_Body(const cGH* restrict const cctkGH, const int dir, co
CCTK_REAL_VEC Xt3rhsL CCTK_ATTRIBUTE_UNUSED = dotXt3;
- CCTK_REAL_VEC Xtdot1L CCTK_ATTRIBUTE_UNUSED = dotXt1;
-
- CCTK_REAL_VEC Xtdot2L CCTK_ATTRIBUTE_UNUSED = dotXt2;
-
- CCTK_REAL_VEC Xtdot3L CCTK_ATTRIBUTE_UNUSED = dotXt3;
-
term1L =
kneg(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))))))))))));
@@ -2457,24 +2448,6 @@ static void ML_BSSN_RHS_Body(const cGH* restrict const cctkGH, const int dir, co
CCTK_REAL_VEC At33rhsL CCTK_ATTRIBUTE_UNUSED =
kmadd(At33L,kmul(kadd(JacPDstandardNth1beta1,kadd(JacPDstandardNth2beta2,JacPDstandardNth3beta3)),ToReal(-0.666666666666666666666666666667)),kmadd(em4phi,kmadd(g33,kmul(trAts,ToReal(-0.333333333333333333333333333333)),Ats33),kmadd(kmadd(At13L,JacPDstandardNth3beta1,kmadd(At23L,JacPDstandardNth3beta2,kmul(At33L,JacPDstandardNth3beta3))),ToReal(2),kmul(alphaL,kmadd(At33L,trKL,kmadd(kmadd(At13L,Atm13,kmadd(At23L,Atm23,kmul(At33L,Atm33))),ToReal(-2),kmul(em4phi,kmul(ToReal(-8),kmul(kmadd(g33,kmul(trS,ToReal(-0.333333333333333333333333333333)),eTzzL),ToReal(3.14159265358979323846264338328))))))))));
- CCTK_REAL_VEC Kdot11L CCTK_ATTRIBUTE_UNUSED =
- kmadd(G111,JacPDstandardNth1alpha,kmadd(G211,JacPDstandardNth2alpha,kmadd(G311,JacPDstandardNth3alpha,kmsub(alphaL,kmadd(trKL,K11,kmadd(kmadd(K11,Km11,kmadd(K12,Km12,kmul(K13,Km13))),ToReal(-2),R11)),JacPDstandardNth11alpha))));
-
- CCTK_REAL_VEC Kdot12L CCTK_ATTRIBUTE_UNUSED =
- kmadd(G112,JacPDstandardNth1alpha,kmadd(G212,JacPDstandardNth2alpha,kmadd(G312,JacPDstandardNth3alpha,kmsub(alphaL,kmadd(trKL,K12,kmadd(kmadd(K11,Km21,kmadd(K12,Km22,kmul(K13,Km23))),ToReal(-2),R12)),JacPDstandardNth12alpha))));
-
- CCTK_REAL_VEC Kdot13L CCTK_ATTRIBUTE_UNUSED =
- kmadd(G113,JacPDstandardNth1alpha,kmadd(G213,JacPDstandardNth2alpha,kmadd(G313,JacPDstandardNth3alpha,kmsub(alphaL,kmadd(trKL,K13,kmadd(kmadd(K11,Km31,kmadd(K12,Km32,kmul(K13,Km33))),ToReal(-2),R13)),JacPDstandardNth13alpha))));
-
- CCTK_REAL_VEC Kdot22L CCTK_ATTRIBUTE_UNUSED =
- kmadd(G122,JacPDstandardNth1alpha,kmadd(G222,JacPDstandardNth2alpha,kmadd(G322,JacPDstandardNth3alpha,kmsub(alphaL,kmadd(trKL,K22,kmadd(kmadd(K12,Km21,kmadd(K22,Km22,kmul(K23,Km23))),ToReal(-2),R22)),JacPDstandardNth22alpha))));
-
- CCTK_REAL_VEC Kdot23L CCTK_ATTRIBUTE_UNUSED =
- kmadd(G123,JacPDstandardNth1alpha,kmadd(G223,JacPDstandardNth2alpha,kmadd(G323,JacPDstandardNth3alpha,kmsub(alphaL,kmadd(trKL,K23,kmadd(kmadd(K12,Km31,kmadd(K22,Km32,kmul(K23,Km33))),ToReal(-2),R23)),JacPDstandardNth23alpha))));
-
- CCTK_REAL_VEC Kdot33L CCTK_ATTRIBUTE_UNUSED =
- kmadd(G133,JacPDstandardNth1alpha,kmadd(G233,JacPDstandardNth2alpha,kmadd(G333,JacPDstandardNth3alpha,kmsub(alphaL,kmadd(trKL,K33,kmadd(kmadd(K13,Km31,kmadd(K23,Km32,kmul(K33,Km33))),ToReal(-2),R33)),JacPDstandardNth33alpha))));
-
CCTK_REAL_VEC eta CCTK_ATTRIBUTE_UNUSED =
kdiv(ToReal(SpatialBetaDriverRadius),kfmax(rL,ToReal(SpatialBetaDriverRadius)));
@@ -2495,6 +2468,7 @@ static void ML_BSSN_RHS_Body(const cGH* restrict const cctkGH, const int dir, co
CCTK_REAL_VEC beta3rhsL CCTK_ATTRIBUTE_UNUSED;
if (harmonicShift)
+#if 0
{
beta1rhsL =
kmul(alphaL,kmul(em4phi,kmul(ToReal(-0.5),kmadd(gtu11,kmadd(alphaL,kmadd(kmadd(gtu11,JacPDstandardNth1gt11,kmadd(gtu12,kadd(JacPDstandardNth1gt12,JacPDstandardNth2gt11),kmadd(gtu22,JacPDstandardNth2gt12,kmadd(gtu13,kadd(JacPDstandardNth1gt13,JacPDstandardNth3gt11),kmadd(gtu23,kadd(JacPDstandardNth2gt13,JacPDstandardNth3gt12),kmadd(gtu33,JacPDstandardNth3gt13,kmul(JacPDstandardNth1phi,IfThen(conformalMethod
@@ -2523,19 +2497,57 @@ static void ML_BSSN_RHS_Body(const cGH* restrict const cctkGH, const int dir, co
==
1,kdiv(ToReal(1),phiL),ToReal(-2))))))))),ToReal(-2),Ddetgt3),kmul(JacPDstandardNth3alpha,ToReal(2)))))))));
}
+#else
+ {
+ double gu[3][3] = {{ gu11, gu12, gu13 },
+ { gu12, gu22, gu23 },
+ { gu13, gu23, gu33 }};
+ double G[3][3][3] = {{{ G111, G112, G113 },
+ { G112, G122, G123 },
+ { G113, G123, G133 }},
+ {{ G211, G212, G213 },
+ { G212, G222, G223 },
+ { G213, G223, G233 }},
+ {{ G311, G312, G313 },
+ { G312, G322, G323 },
+ { G313, G323, G333 }}};
+
+ double X1 = 0.0, X3 = 0.0;
+
+ double dux_alpha, duz_alpha;
+
+ for (int fn = 0; fn < 3; fn++)
+ for (int bz = 0; bz < 3; bz++) {
+ X1 += gu[fn][bz] * G[0][fn][bz];
+ X3 += gu[fn][bz] * G[2][fn][bz];
+ }
+
+ dux_alpha = gu[0][0] * PDstandardNth1alpha + gu[0][2] * PDstandardNth3alpha;
+ duz_alpha = gu[2][0] * PDstandardNth1alpha + gu[2][2] * PDstandardNth3alpha;
+
+ beta1rhsL = alphaL * alphaL * X1 - alphaL * dux_alpha - alphaL * BetaDriver * beta1L;
+ beta2rhsL = 0.0;
+ beta3rhsL = alphaL * alphaL * X3 - alphaL * duz_alpha - alphaL * BetaDriver * beta3L;
+ }
+#endif
else
{
- beta1rhsL =
- kmul(theta,kmul(kadd(Xt1L,kmadd(ksub(B1L,Xt1L),ToReal(ShiftBCoeff),kmul(beta1L,kmul(eta,ToReal(BetaDriver*(-1
- + ShiftBCoeff)))))),ToReal(ShiftGammaCoeff)));
-
- beta2rhsL =
- kmul(theta,kmul(kadd(Xt2L,kmadd(ksub(B2L,Xt2L),ToReal(ShiftBCoeff),kmul(beta2L,kmul(eta,ToReal(BetaDriver*(-1
- + ShiftBCoeff)))))),ToReal(ShiftGammaCoeff)));
-
- beta3rhsL =
- kmul(theta,kmul(kadd(Xt3L,kmadd(ksub(B3L,Xt3L),ToReal(ShiftBCoeff),kmul(beta3L,kmul(eta,ToReal(BetaDriver*(-1
- + ShiftBCoeff)))))),ToReal(ShiftGammaCoeff)));
+ double xx = x[index];
+ double zz = z[index];
+ double t = cctkGH->cctk_time;
+ //double rr = sqrt(xx * xx + zz * zz);
+ //double phi = atan2(zz, xx);
+
+ //double gauge_r = -20.0 * (1.0 + 0.0 * cos(2 * phi) * rr * rr) * rr / (1.0 + rr * rr * rr * rr);
+
+ beta1rhsL = theta * ShiftGammaCoeff *
+ (ShiftBCoeff * B1L + (1.0 - ShiftBCoeff) * (Xt1L - eta * BetaDriver * beta1L));
+
+ beta2rhsL = theta * ShiftGammaCoeff *
+ (ShiftBCoeff * B2L + (1.0 - ShiftBCoeff) * (Xt2L - eta * BetaDriver * beta2L));
+
+ beta3rhsL = theta * ShiftGammaCoeff *
+ (ShiftBCoeff * B3L + (1.0 - ShiftBCoeff) * (Xt3L - eta * BetaDriver * beta3L));
}
CCTK_REAL_VEC B1rhsL CCTK_ATTRIBUTE_UNUSED =
@@ -2567,13 +2579,6 @@ static void ML_BSSN_RHS_Body(const cGH* restrict const cctkGH, const int dir, co
vec_store_nta_partial(gt22rhs[index],gt22rhsL);
vec_store_nta_partial(gt23rhs[index],gt23rhsL);
vec_store_nta_partial(gt33rhs[index],gt33rhsL);
- vec_store_nta_partial(Kdot11[index],Kdot11L);
- vec_store_nta_partial(Kdot12[index],Kdot12L);
- vec_store_nta_partial(Kdot13[index],Kdot13L);
- vec_store_nta_partial(Kdot22[index],Kdot22L);
- vec_store_nta_partial(Kdot23[index],Kdot23L);
- vec_store_nta_partial(Kdot33[index],Kdot33L);
- vec_store_nta_partial(phidot[index],phidotL);
vec_store_nta_partial(phirhs[index],phirhsL);
vec_store_nta_partial(term1[index],term1L);
vec_store_nta_partial(term2[index],term2L);
@@ -2582,9 +2587,19 @@ static void ML_BSSN_RHS_Body(const cGH* restrict const cctkGH, const int dir, co
vec_store_nta_partial(Xt1rhs[index],Xt1rhsL);
vec_store_nta_partial(Xt2rhs[index],Xt2rhsL);
vec_store_nta_partial(Xt3rhs[index],Xt3rhsL);
- vec_store_nta_partial(Xtdot1[index],Xtdot1L);
- vec_store_nta_partial(Xtdot2[index],Xtdot2L);
- vec_store_nta_partial(Xtdot3[index],Xtdot3L);
+
+ //if (z[index] == 0.0 && x[index - 5] == 0.0) {
+ // fprintf(stderr, "%d %g", cctkGH->cctk_levfac[0], cctkGH->cctk_time);
+ // for (int i = 0; i < 5; i++) {
+ // double xx = x[index + i - 5];
+ // int origin = fabs(xx) < 1e-8;
+ // fprintf(stderr, " %16.16g ", PDstandardNthfdOrder433(&alpha[index + i - 5]));
+ // }
+ // fprintf(stderr, " | ");
+ // for (int i = 0; i < 5; i++)
+ // fprintf(stderr, " %g ", term1[index - 5 + i]);
+ // fprintf(stderr, "\n\n");
+ //}
}
CCTK_ENDLOOP3STR(ML_BSSN_RHS);
}
@@ -2605,60 +2620,6 @@ extern "C" void ML_BSSN_RHS(CCTK_ARGUMENTS)
return;
}
- const char* const groups[] = {
- "grid::coordinates",
- "ML_BSSN::ML_curv",
- "ML_BSSN::ML_curvrhs",
- "ML_BSSN::ML_dtshift",
- "ML_BSSN::ML_dtshiftrhs",
- "ML_BSSN::ML_Gamma",
- "ML_BSSN::ML_Gammarhs",
- "ML_BSSN::ML_Kdot",
- "ML_BSSN::ML_lapse",
- "ML_BSSN::ML_log_confac",
- "ML_BSSN::ML_log_confacrhs",
- "ML_BSSN::ML_metric",
- "ML_BSSN::ML_metricrhs",
- "ML_BSSN::ML_phidot",
- "ML_BSSN::ML_shift",
- "ML_BSSN::ML_shiftrhs",
- "ML_BSSN::ML_term1",
- "ML_BSSN::ML_term2",
- "ML_BSSN::ML_term3",
- "ML_BSSN::ML_trace_curv",
- "ML_BSSN::ML_trace_curvrhs",
- "ML_BSSN::ML_Xtdot"};
- GenericFD_AssertGroupStorage(cctkGH, "ML_BSSN_RHS", 22, groups);
-
- switch (fdOrder)
- {
- case 2:
- {
- GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_RHS", 1, 1, 1);
- break;
- }
-
- case 4:
- {
- GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_RHS", 2, 2, 2);
- break;
- }
-
- case 6:
- {
- GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_RHS", 3, 3, 3);
- break;
- }
-
- case 8:
- {
- GenericFD_EnsureStencilFits(cctkGH, "ML_BSSN_RHS", 4, 4, 4);
- break;
- }
- default:
- CCTK_BUILTIN_UNREACHABLE();
- }
-
GenericFD_LoopOverInterior(cctkGH, ML_BSSN_RHS_Body);
if (verbose > 1)