diff options
author | Erik Schnetter <schnetter@cct.lsu.edu> | 2010-10-11 20:32:55 -0500 |
---|---|---|
committer | Erik Schnetter <schnetter@cct.lsu.edu> | 2010-10-11 20:32:55 -0500 |
commit | 8e1f20f46f07170786de75fae15ffee82149dfcf (patch) | |
tree | 0992b207543c7499241e61b121413f7e7e529ced | |
parent | 15d57eb888fdcd68b873b02b0468e5508a02c581 (diff) |
Regenerate code
114 files changed, 4548 insertions, 2999 deletions
diff --git a/ML_ADM/interface.ccl b/ML_ADM/interface.ccl index f712b9e..7d17f44 100644 --- a/ML_ADM/interface.ccl +++ b/ML_ADM/interface.ccl @@ -25,13 +25,13 @@ CCTK_INT FUNCTION Boundary_SelectVarForBC(CCTK_POINTER_TO_CONST IN GH, CCTK_INT USES FUNCTION Boundary_SelectVarForBC public: -CCTK_REAL ML_Ham type=GF timelevels=1 tags='tensortypealias="Scalar" tensorweight=1.0000000000000000000' +CCTK_REAL ML_Ham type=GF timelevels=1 tags='tensortypealias="Scalar" tensorweight=1' { H } "ML_Ham" public: -CCTK_REAL ML_mom type=GF timelevels=1 tags='tensortypealias="D" tensorweight=1.0000000000000000000' +CCTK_REAL ML_mom type=GF timelevels=1 tags='tensortypealias="D" tensorweight=1' { M1, M2, @@ -39,7 +39,7 @@ CCTK_REAL ML_mom type=GF timelevels=1 tags='tensortypealias="D" tensorweight=1.0 } "ML_mom" public: -CCTK_REAL ML_curv type=GF timelevels=3 tags='tensortypealias="DD_sym" tensorweight=1.0000000000000000000' +CCTK_REAL ML_curv type=GF timelevels=3 tags='tensortypealias="DD_sym" tensorweight=1' { K11, K12, @@ -50,13 +50,13 @@ CCTK_REAL ML_curv type=GF timelevels=3 tags='tensortypealias="DD_sym" tensorweig } "ML_curv" public: -CCTK_REAL ML_lapse type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1.0000000000000000000' +CCTK_REAL ML_lapse type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1' { alpha } "ML_lapse" public: -CCTK_REAL ML_metric type=GF timelevels=3 tags='tensortypealias="DD_sym" tensorweight=1.0000000000000000000' +CCTK_REAL ML_metric type=GF timelevels=3 tags='tensortypealias="DD_sym" tensorweight=1' { g11, g12, @@ -67,7 +67,7 @@ CCTK_REAL ML_metric type=GF timelevels=3 tags='tensortypealias="DD_sym" tensorwe } "ML_metric" public: -CCTK_REAL ML_shift type=GF timelevels=3 tags='tensortypealias="U" tensorweight=1.0000000000000000000' +CCTK_REAL ML_shift type=GF timelevels=3 tags='tensortypealias="U" tensorweight=1' { beta1, beta2, @@ -75,7 +75,7 @@ CCTK_REAL ML_shift type=GF timelevels=3 tags='tensortypealias="U" tensorweight=1 } "ML_shift" public: -CCTK_REAL ML_curvrhs type=GF timelevels=3 tags='tensortypealias="DD_sym" tensorweight=1.0000000000000000000' +CCTK_REAL ML_curvrhs type=GF timelevels=3 tags='tensortypealias="DD_sym" tensorweight=1' { K11rhs, K12rhs, @@ -86,13 +86,13 @@ CCTK_REAL ML_curvrhs type=GF timelevels=3 tags='tensortypealias="DD_sym" tensorw } "ML_curvrhs" public: -CCTK_REAL ML_lapserhs type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1.0000000000000000000' +CCTK_REAL ML_lapserhs type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1' { alpharhs } "ML_lapserhs" public: -CCTK_REAL ML_metricrhs type=GF timelevels=3 tags='tensortypealias="DD_sym" tensorweight=1.0000000000000000000' +CCTK_REAL ML_metricrhs type=GF timelevels=3 tags='tensortypealias="DD_sym" tensorweight=1' { g11rhs, g12rhs, @@ -103,7 +103,7 @@ CCTK_REAL ML_metricrhs type=GF timelevels=3 tags='tensortypealias="DD_sym" tenso } "ML_metricrhs" public: -CCTK_REAL ML_shiftrhs type=GF timelevels=3 tags='tensortypealias="U" tensorweight=1.0000000000000000000' +CCTK_REAL ML_shiftrhs type=GF timelevels=3 tags='tensortypealias="U" tensorweight=1' { beta1rhs, beta2rhs, diff --git a/ML_ADM/schedule.ccl b/ML_ADM/schedule.ccl index 6e7faee..93e7205 100644 --- a/ML_ADM/schedule.ccl +++ b/ML_ADM/schedule.ccl @@ -203,7 +203,7 @@ schedule ML_ADM_CheckBoundaries at BASEGRID OPTIONS: meta } "check boundaries treatment" -schedule group ApplyBCs as ML_ADM_ApplyBCs in MoL_PostStep after ML_ADM_SelectBoundConds +schedule group ApplyBCs as ML_ADM_ApplyBCs in MoL_PostStep after ML_ADM_SelectBoundConds { # no language specified } "Apply boundary conditions controlled by thorn Boundary" diff --git a/ML_ADM/src/ML_ADM_RHS.c b/ML_ADM/src/ML_ADM_RHS.c index 7bf7801..f23b5d6 100644 --- a/ML_ADM/src/ML_ADM_RHS.c +++ b/ML_ADM/src/ML_ADM_RHS.c @@ -20,6 +20,27 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((x) * (x) * (x) * (x)) +void ML_ADM_RHS_SelectBCs(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT ierr = 0; + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_ADM::ML_curvrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_ADM::ML_curvrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_ADM::ML_lapserhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_ADM::ML_lapserhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_ADM::ML_metricrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_ADM::ML_metricrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_ADM::ML_shiftrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_ADM::ML_shiftrhs."); + return; +} + 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[]) { DECLARE_CCTK_ARGUMENTS; diff --git a/ML_ADM/src/ML_ADM_boundary.c b/ML_ADM/src/ML_ADM_boundary.c index 88c13b6..2cbdbf5 100644 --- a/ML_ADM/src/ML_ADM_boundary.c +++ b/ML_ADM/src/ML_ADM_boundary.c @@ -20,6 +20,27 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((x) * (x) * (x) * (x)) +void ML_ADM_boundary_SelectBCs(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT ierr = 0; + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_ADM::ML_curv","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_ADM::ML_curv."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_ADM::ML_lapse","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_ADM::ML_lapse."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_ADM::ML_metric","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_ADM::ML_metric."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_ADM::ML_shift","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_ADM::ML_shift."); + return; +} + 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[]) { DECLARE_CCTK_ARGUMENTS; diff --git a/ML_ADM/src/ML_ADM_constraints.c b/ML_ADM/src/ML_ADM_constraints.c index cae9b5e..1346268 100644 --- a/ML_ADM/src/ML_ADM_constraints.c +++ b/ML_ADM/src/ML_ADM_constraints.c @@ -20,6 +20,21 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((x) * (x) * (x) * (x)) +void ML_ADM_constraints_SelectBCs(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT ierr = 0; + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_ADM::ML_Ham","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_ADM::ML_Ham."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_ADM::ML_mom","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_ADM::ML_mom."); + return; +} + 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[]) { DECLARE_CCTK_ARGUMENTS; diff --git a/ML_ADM/src/ML_ADM_constraints_boundary.c b/ML_ADM/src/ML_ADM_constraints_boundary.c index 82b8dcc..fc5cfd4 100644 --- a/ML_ADM/src/ML_ADM_constraints_boundary.c +++ b/ML_ADM/src/ML_ADM_constraints_boundary.c @@ -20,6 +20,21 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((x) * (x) * (x) * (x)) +void ML_ADM_constraints_boundary_SelectBCs(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT ierr = 0; + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_ADM::ML_Ham","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_ADM::ML_Ham."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_ADM::ML_mom","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_ADM::ML_mom."); + return; +} + 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[]) { DECLARE_CCTK_ARGUMENTS; diff --git a/ML_ADMConstraints/interface.ccl b/ML_ADMConstraints/interface.ccl index b7f5927..65d3dc1 100644 --- a/ML_ADMConstraints/interface.ccl +++ b/ML_ADMConstraints/interface.ccl @@ -25,13 +25,13 @@ CCTK_INT FUNCTION Boundary_SelectVarForBC(CCTK_POINTER_TO_CONST IN GH, CCTK_INT USES FUNCTION Boundary_SelectVarForBC public: -CCTK_REAL ML_Ham type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1.0000000000000000000' +CCTK_REAL ML_Ham type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1' { H } "ML_Ham" public: -CCTK_REAL ML_mom type=GF timelevels=3 tags='tensortypealias="D" tensorweight=1.0000000000000000000' +CCTK_REAL ML_mom type=GF timelevels=3 tags='tensortypealias="D" tensorweight=1' { M1, M2, diff --git a/ML_ADMConstraints/schedule.ccl b/ML_ADMConstraints/schedule.ccl index 13b9b86..fb68f01 100644 --- a/ML_ADMConstraints/schedule.ccl +++ b/ML_ADMConstraints/schedule.ccl @@ -42,7 +42,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_PseudoEvolution after ML_ADMConstraints_SelectBoundConds { # no language specified } "Apply boundary conditions controlled by thorn Boundary" diff --git a/ML_ADMConstraints/src/Boundaries.c b/ML_ADMConstraints/src/Boundaries.c index 91bac44..2066272 100644 --- a/ML_ADMConstraints/src/Boundaries.c +++ b/ML_ADMConstraints/src/Boundaries.c @@ -31,10 +31,10 @@ void ML_ADMConstraints_SelectBoundConds(CCTK_ARGUMENTS) DECLARE_CCTK_PARAMETERS; CCTK_INT ierr = 0; - ierr = Boundary_SelectGroupForBC (cctkGH, CCTK_ALL_FACES, 1, -1, "ML_ADMConstraints::ML_Ham", "scalar"); + ierr = Boundary_SelectGroupForBC (cctkGH, CCTK_ALL_FACES, boundary_width, -1, "ML_ADMConstraints::ML_Ham", "scalar"); if (ierr<0) CCTK_WARN (CCTK_WARN_ABORT, "Failed to select boundary condition for ML_ADMConstraints::ML_Ham"); - ierr = Boundary_SelectGroupForBC (cctkGH, CCTK_ALL_FACES, 1, -1, "ML_ADMConstraints::ML_mom", "scalar"); + ierr = Boundary_SelectGroupForBC (cctkGH, CCTK_ALL_FACES, boundary_width, -1, "ML_ADMConstraints::ML_mom", "scalar"); if (ierr<0) CCTK_WARN (CCTK_WARN_ABORT, "Failed to select boundary condition for ML_ADMConstraints::ML_mom"); } diff --git a/ML_ADMConstraints/src/ML_ADMConstraints.c b/ML_ADMConstraints/src/ML_ADMConstraints.c index ac8fd0a..1944f30 100644 --- a/ML_ADMConstraints/src/ML_ADMConstraints.c +++ b/ML_ADMConstraints/src/ML_ADMConstraints.c @@ -20,6 +20,21 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((x) * (x) * (x) * (x)) +void ML_ADMConstraints_SelectBCs(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT ierr = 0; + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_ADMConstraints::ML_Ham","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_ADMConstraints::ML_Ham."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_ADMConstraints::ML_mom","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_ADMConstraints::ML_mom."); + return; +} + 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[]) { DECLARE_CCTK_ARGUMENTS; diff --git a/ML_ADMConstraints_MP/interface.ccl b/ML_ADMConstraints_MP/interface.ccl index 384ca39..3ef38b3 100644 --- a/ML_ADMConstraints_MP/interface.ccl +++ b/ML_ADMConstraints_MP/interface.ccl @@ -25,13 +25,13 @@ CCTK_INT FUNCTION Boundary_SelectVarForBC(CCTK_POINTER_TO_CONST IN GH, CCTK_INT USES FUNCTION Boundary_SelectVarForBC public: -CCTK_REAL ML_Ham type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1.0000000000000000000' +CCTK_REAL ML_Ham type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1' { H } "ML_Ham" public: -CCTK_REAL ML_mom type=GF timelevels=3 tags='tensortypealias="D" tensorweight=1.0000000000000000000' +CCTK_REAL ML_mom type=GF timelevels=3 tags='tensortypealias="D" tensorweight=1' { M1, M2, diff --git a/ML_ADMConstraints_MP/schedule.ccl b/ML_ADMConstraints_MP/schedule.ccl index 36d7a2a..138e963 100644 --- a/ML_ADMConstraints_MP/schedule.ccl +++ b/ML_ADMConstraints_MP/schedule.ccl @@ -42,7 +42,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_PseudoEvolution after ML_ADMConstraints_MP_SelectBoundConds { # no language specified } "Apply boundary conditions controlled by thorn Boundary" diff --git a/ML_ADMConstraints_MP/src/Boundaries.c b/ML_ADMConstraints_MP/src/Boundaries.c index 6edf1cd..727e80a 100644 --- a/ML_ADMConstraints_MP/src/Boundaries.c +++ b/ML_ADMConstraints_MP/src/Boundaries.c @@ -31,10 +31,10 @@ void ML_ADMConstraints_MP_SelectBoundConds(CCTK_ARGUMENTS) DECLARE_CCTK_PARAMETERS; CCTK_INT ierr = 0; - ierr = Boundary_SelectGroupForBC (cctkGH, CCTK_ALL_FACES, 1, -1, "ML_ADMConstraints_MP::ML_Ham", "scalar"); + ierr = Boundary_SelectGroupForBC (cctkGH, CCTK_ALL_FACES, boundary_width, -1, "ML_ADMConstraints_MP::ML_Ham", "scalar"); if (ierr<0) CCTK_WARN (CCTK_WARN_ABORT, "Failed to select boundary condition for ML_ADMConstraints_MP::ML_Ham"); - ierr = Boundary_SelectGroupForBC (cctkGH, CCTK_ALL_FACES, 1, -1, "ML_ADMConstraints_MP::ML_mom", "scalar"); + ierr = Boundary_SelectGroupForBC (cctkGH, CCTK_ALL_FACES, boundary_width, -1, "ML_ADMConstraints_MP::ML_mom", "scalar"); if (ierr<0) CCTK_WARN (CCTK_WARN_ABORT, "Failed to select boundary condition for ML_ADMConstraints_MP::ML_mom"); } diff --git a/ML_ADMConstraints_MP/src/ML_ADMConstraints_MP.c b/ML_ADMConstraints_MP/src/ML_ADMConstraints_MP.c index d236cd4..db79008 100644 --- a/ML_ADMConstraints_MP/src/ML_ADMConstraints_MP.c +++ b/ML_ADMConstraints_MP/src/ML_ADMConstraints_MP.c @@ -20,6 +20,21 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((x) * (x) * (x) * (x)) +void ML_ADMConstraints_MP_SelectBCs(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT ierr = 0; + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_ADMConstraints_MP::ML_Ham","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_ADMConstraints_MP::ML_Ham."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_ADMConstraints_MP::ML_mom","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_ADMConstraints_MP::ML_mom."); + return; +} + 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[]) { DECLARE_CCTK_ARGUMENTS; diff --git a/ML_ADMConstraints_O2/interface.ccl b/ML_ADMConstraints_O2/interface.ccl index 1631077..5034db8 100644 --- a/ML_ADMConstraints_O2/interface.ccl +++ b/ML_ADMConstraints_O2/interface.ccl @@ -25,13 +25,13 @@ CCTK_INT FUNCTION Boundary_SelectVarForBC(CCTK_POINTER_TO_CONST IN GH, CCTK_INT USES FUNCTION Boundary_SelectVarForBC public: -CCTK_REAL ML_Ham type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1.0000000000000000000' +CCTK_REAL ML_Ham type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1' { H } "ML_Ham" public: -CCTK_REAL ML_mom type=GF timelevels=3 tags='tensortypealias="D" tensorweight=1.0000000000000000000' +CCTK_REAL ML_mom type=GF timelevels=3 tags='tensortypealias="D" tensorweight=1' { M1, M2, diff --git a/ML_ADMConstraints_O2/schedule.ccl b/ML_ADMConstraints_O2/schedule.ccl index 9a496dd..bfd2b57 100644 --- a/ML_ADMConstraints_O2/schedule.ccl +++ b/ML_ADMConstraints_O2/schedule.ccl @@ -42,7 +42,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_PseudoEvolution after ML_ADMConstraints_O2_SelectBoundConds { # no language specified } "Apply boundary conditions controlled by thorn Boundary" diff --git a/ML_ADMConstraints_O2/src/Boundaries.c b/ML_ADMConstraints_O2/src/Boundaries.c index 7acefcc..68a5ee2 100644 --- a/ML_ADMConstraints_O2/src/Boundaries.c +++ b/ML_ADMConstraints_O2/src/Boundaries.c @@ -31,10 +31,10 @@ void ML_ADMConstraints_O2_SelectBoundConds(CCTK_ARGUMENTS) DECLARE_CCTK_PARAMETERS; CCTK_INT ierr = 0; - ierr = Boundary_SelectGroupForBC (cctkGH, CCTK_ALL_FACES, 1, -1, "ML_ADMConstraints_O2::ML_Ham", "scalar"); + ierr = Boundary_SelectGroupForBC (cctkGH, CCTK_ALL_FACES, boundary_width, -1, "ML_ADMConstraints_O2::ML_Ham", "scalar"); if (ierr<0) CCTK_WARN (CCTK_WARN_ABORT, "Failed to select boundary condition for ML_ADMConstraints_O2::ML_Ham"); - ierr = Boundary_SelectGroupForBC (cctkGH, CCTK_ALL_FACES, 1, -1, "ML_ADMConstraints_O2::ML_mom", "scalar"); + ierr = Boundary_SelectGroupForBC (cctkGH, CCTK_ALL_FACES, boundary_width, -1, "ML_ADMConstraints_O2::ML_mom", "scalar"); if (ierr<0) CCTK_WARN (CCTK_WARN_ABORT, "Failed to select boundary condition for ML_ADMConstraints_O2::ML_mom"); } diff --git a/ML_ADMConstraints_O2/src/ML_ADMConstraints_O2.c b/ML_ADMConstraints_O2/src/ML_ADMConstraints_O2.c index c6f5982..8933df1 100644 --- a/ML_ADMConstraints_O2/src/ML_ADMConstraints_O2.c +++ b/ML_ADMConstraints_O2/src/ML_ADMConstraints_O2.c @@ -20,6 +20,21 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((x) * (x) * (x) * (x)) +void ML_ADMConstraints_O2_SelectBCs(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT ierr = 0; + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_ADMConstraints_O2::ML_Ham","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_ADMConstraints_O2::ML_Ham."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_ADMConstraints_O2::ML_mom","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_ADMConstraints_O2::ML_mom."); + return; +} + 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[]) { DECLARE_CCTK_ARGUMENTS; diff --git a/ML_ADMQuantities/interface.ccl b/ML_ADMQuantities/interface.ccl index 6310390..905b0e8 100644 --- a/ML_ADMQuantities/interface.ccl +++ b/ML_ADMQuantities/interface.ccl @@ -25,7 +25,7 @@ CCTK_INT FUNCTION Boundary_SelectVarForBC(CCTK_POINTER_TO_CONST IN GH, CCTK_INT USES FUNCTION Boundary_SelectVarForBC public: -CCTK_REAL ML_Jadm type=GF timelevels=3 tags='tensortypealias="D" tensorweight=1.0000000000000000000' +CCTK_REAL ML_Jadm type=GF timelevels=3 tags='tensortypealias="D" tensorweight=1' { Jadm1, Jadm2, @@ -33,7 +33,7 @@ CCTK_REAL ML_Jadm type=GF timelevels=3 tags='tensortypealias="D" tensorweight=1. } "ML_Jadm" public: -CCTK_REAL ML_Madm type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1.0000000000000000000' +CCTK_REAL ML_Madm type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1' { Madm } "ML_Madm" diff --git a/ML_ADMQuantities/schedule.ccl b/ML_ADMQuantities/schedule.ccl index b0c416a..585ae5d 100644 --- a/ML_ADMQuantities/schedule.ccl +++ b/ML_ADMQuantities/schedule.ccl @@ -42,7 +42,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_PseudoEvolution after ML_ADMQuantities_SelectBoundConds { # no language specified } "Apply boundary conditions controlled by thorn Boundary" diff --git a/ML_ADMQuantities/src/Boundaries.c b/ML_ADMQuantities/src/Boundaries.c index ca87ac2..1516a7e 100644 --- a/ML_ADMQuantities/src/Boundaries.c +++ b/ML_ADMQuantities/src/Boundaries.c @@ -31,10 +31,10 @@ void ML_ADMQuantities_SelectBoundConds(CCTK_ARGUMENTS) DECLARE_CCTK_PARAMETERS; CCTK_INT ierr = 0; - ierr = Boundary_SelectGroupForBC (cctkGH, CCTK_ALL_FACES, 1, -1, "ML_ADMQuantities::ML_Jadm", "scalar"); + ierr = Boundary_SelectGroupForBC (cctkGH, CCTK_ALL_FACES, boundary_width, -1, "ML_ADMQuantities::ML_Jadm", "scalar"); if (ierr<0) CCTK_WARN (CCTK_WARN_ABORT, "Failed to select boundary condition for ML_ADMQuantities::ML_Jadm"); - ierr = Boundary_SelectGroupForBC (cctkGH, CCTK_ALL_FACES, 1, -1, "ML_ADMQuantities::ML_Madm", "scalar"); + ierr = Boundary_SelectGroupForBC (cctkGH, CCTK_ALL_FACES, boundary_width, -1, "ML_ADMQuantities::ML_Madm", "scalar"); if (ierr<0) CCTK_WARN (CCTK_WARN_ABORT, "Failed to select boundary condition for ML_ADMQuantities::ML_Madm"); } diff --git a/ML_ADMQuantities/src/ML_ADMQuantities.c b/ML_ADMQuantities/src/ML_ADMQuantities.c index d8344e5..3512c4b 100644 --- a/ML_ADMQuantities/src/ML_ADMQuantities.c +++ b/ML_ADMQuantities/src/ML_ADMQuantities.c @@ -20,6 +20,21 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((x) * (x) * (x) * (x)) +void ML_ADMQuantities_SelectBCs(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT ierr = 0; + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_ADMQuantities::ML_Jadm","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_ADMQuantities::ML_Jadm."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_ADMQuantities::ML_Madm","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_ADMQuantities::ML_Madm."); + return; +} + 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[]) { DECLARE_CCTK_ARGUMENTS; diff --git a/ML_ADMQuantities_MP/interface.ccl b/ML_ADMQuantities_MP/interface.ccl index 8cae4a1..5b1c472 100644 --- a/ML_ADMQuantities_MP/interface.ccl +++ b/ML_ADMQuantities_MP/interface.ccl @@ -25,7 +25,7 @@ CCTK_INT FUNCTION Boundary_SelectVarForBC(CCTK_POINTER_TO_CONST IN GH, CCTK_INT USES FUNCTION Boundary_SelectVarForBC public: -CCTK_REAL ML_Jadm type=GF timelevels=3 tags='tensortypealias="D" tensorweight=1.0000000000000000000' +CCTK_REAL ML_Jadm type=GF timelevels=3 tags='tensortypealias="D" tensorweight=1' { Jadm1, Jadm2, @@ -33,7 +33,7 @@ CCTK_REAL ML_Jadm type=GF timelevels=3 tags='tensortypealias="D" tensorweight=1. } "ML_Jadm" public: -CCTK_REAL ML_Madm type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1.0000000000000000000' +CCTK_REAL ML_Madm type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1' { Madm } "ML_Madm" diff --git a/ML_ADMQuantities_MP/schedule.ccl b/ML_ADMQuantities_MP/schedule.ccl index 35aedea..f3ae09b 100644 --- a/ML_ADMQuantities_MP/schedule.ccl +++ b/ML_ADMQuantities_MP/schedule.ccl @@ -42,7 +42,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_PseudoEvolution after ML_ADMQuantities_MP_SelectBoundConds { # no language specified } "Apply boundary conditions controlled by thorn Boundary" diff --git a/ML_ADMQuantities_MP/src/Boundaries.c b/ML_ADMQuantities_MP/src/Boundaries.c index b46b917..a90fdb0 100644 --- a/ML_ADMQuantities_MP/src/Boundaries.c +++ b/ML_ADMQuantities_MP/src/Boundaries.c @@ -31,10 +31,10 @@ void ML_ADMQuantities_MP_SelectBoundConds(CCTK_ARGUMENTS) DECLARE_CCTK_PARAMETERS; CCTK_INT ierr = 0; - ierr = Boundary_SelectGroupForBC (cctkGH, CCTK_ALL_FACES, 1, -1, "ML_ADMQuantities_MP::ML_Jadm", "scalar"); + ierr = Boundary_SelectGroupForBC (cctkGH, CCTK_ALL_FACES, boundary_width, -1, "ML_ADMQuantities_MP::ML_Jadm", "scalar"); if (ierr<0) CCTK_WARN (CCTK_WARN_ABORT, "Failed to select boundary condition for ML_ADMQuantities_MP::ML_Jadm"); - ierr = Boundary_SelectGroupForBC (cctkGH, CCTK_ALL_FACES, 1, -1, "ML_ADMQuantities_MP::ML_Madm", "scalar"); + ierr = Boundary_SelectGroupForBC (cctkGH, CCTK_ALL_FACES, boundary_width, -1, "ML_ADMQuantities_MP::ML_Madm", "scalar"); if (ierr<0) CCTK_WARN (CCTK_WARN_ABORT, "Failed to select boundary condition for ML_ADMQuantities_MP::ML_Madm"); } diff --git a/ML_ADMQuantities_MP/src/ML_ADMQuantities_MP.c b/ML_ADMQuantities_MP/src/ML_ADMQuantities_MP.c index cab780b..b92a41f 100644 --- a/ML_ADMQuantities_MP/src/ML_ADMQuantities_MP.c +++ b/ML_ADMQuantities_MP/src/ML_ADMQuantities_MP.c @@ -20,6 +20,21 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((x) * (x) * (x) * (x)) +void ML_ADMQuantities_MP_SelectBCs(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT ierr = 0; + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_ADMQuantities_MP::ML_Jadm","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_ADMQuantities_MP::ML_Jadm."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_ADMQuantities_MP::ML_Madm","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_ADMQuantities_MP::ML_Madm."); + return; +} + 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[]) { DECLARE_CCTK_ARGUMENTS; diff --git a/ML_ADMQuantities_O2/interface.ccl b/ML_ADMQuantities_O2/interface.ccl index f87218f..135a9a5 100644 --- a/ML_ADMQuantities_O2/interface.ccl +++ b/ML_ADMQuantities_O2/interface.ccl @@ -25,7 +25,7 @@ CCTK_INT FUNCTION Boundary_SelectVarForBC(CCTK_POINTER_TO_CONST IN GH, CCTK_INT USES FUNCTION Boundary_SelectVarForBC public: -CCTK_REAL ML_Jadm type=GF timelevels=3 tags='tensortypealias="D" tensorweight=1.0000000000000000000' +CCTK_REAL ML_Jadm type=GF timelevels=3 tags='tensortypealias="D" tensorweight=1' { Jadm1, Jadm2, @@ -33,7 +33,7 @@ CCTK_REAL ML_Jadm type=GF timelevels=3 tags='tensortypealias="D" tensorweight=1. } "ML_Jadm" public: -CCTK_REAL ML_Madm type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1.0000000000000000000' +CCTK_REAL ML_Madm type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1' { Madm } "ML_Madm" diff --git a/ML_ADMQuantities_O2/schedule.ccl b/ML_ADMQuantities_O2/schedule.ccl index c48d48c..5fc101c 100644 --- a/ML_ADMQuantities_O2/schedule.ccl +++ b/ML_ADMQuantities_O2/schedule.ccl @@ -42,7 +42,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_PseudoEvolution after ML_ADMQuantities_O2_SelectBoundConds { # no language specified } "Apply boundary conditions controlled by thorn Boundary" diff --git a/ML_ADMQuantities_O2/src/Boundaries.c b/ML_ADMQuantities_O2/src/Boundaries.c index eb94663..d6af075 100644 --- a/ML_ADMQuantities_O2/src/Boundaries.c +++ b/ML_ADMQuantities_O2/src/Boundaries.c @@ -31,10 +31,10 @@ void ML_ADMQuantities_O2_SelectBoundConds(CCTK_ARGUMENTS) DECLARE_CCTK_PARAMETERS; CCTK_INT ierr = 0; - ierr = Boundary_SelectGroupForBC (cctkGH, CCTK_ALL_FACES, 1, -1, "ML_ADMQuantities_O2::ML_Jadm", "scalar"); + ierr = Boundary_SelectGroupForBC (cctkGH, CCTK_ALL_FACES, boundary_width, -1, "ML_ADMQuantities_O2::ML_Jadm", "scalar"); if (ierr<0) CCTK_WARN (CCTK_WARN_ABORT, "Failed to select boundary condition for ML_ADMQuantities_O2::ML_Jadm"); - ierr = Boundary_SelectGroupForBC (cctkGH, CCTK_ALL_FACES, 1, -1, "ML_ADMQuantities_O2::ML_Madm", "scalar"); + ierr = Boundary_SelectGroupForBC (cctkGH, CCTK_ALL_FACES, boundary_width, -1, "ML_ADMQuantities_O2::ML_Madm", "scalar"); if (ierr<0) CCTK_WARN (CCTK_WARN_ABORT, "Failed to select boundary condition for ML_ADMQuantities_O2::ML_Madm"); } diff --git a/ML_ADMQuantities_O2/src/ML_ADMQuantities_O2.c b/ML_ADMQuantities_O2/src/ML_ADMQuantities_O2.c index 9dfac8d..0560715 100644 --- a/ML_ADMQuantities_O2/src/ML_ADMQuantities_O2.c +++ b/ML_ADMQuantities_O2/src/ML_ADMQuantities_O2.c @@ -20,6 +20,21 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((x) * (x) * (x) * (x)) +void ML_ADMQuantities_O2_SelectBCs(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT ierr = 0; + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_ADMQuantities_O2::ML_Jadm","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_ADMQuantities_O2::ML_Jadm."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_ADMQuantities_O2::ML_Madm","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_ADMQuantities_O2::ML_Madm."); + return; +} + 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[]) { DECLARE_CCTK_ARGUMENTS; diff --git a/ML_BSSN/interface.ccl b/ML_BSSN/interface.ccl index 0474dc3..767b6f0 100644 --- a/ML_BSSN/interface.ccl +++ b/ML_BSSN/interface.ccl @@ -25,7 +25,7 @@ CCTK_INT FUNCTION Boundary_SelectVarForBC(CCTK_POINTER_TO_CONST IN GH, CCTK_INT USES FUNCTION Boundary_SelectVarForBC public: -CCTK_REAL ML_cons_detg type=GF timelevels=1 tags='tensortypealias="Scalar" tensorweight=2.0000000000000000000' +CCTK_REAL ML_cons_detg type=GF timelevels=1 tags='tensortypealias="Scalar" tensorweight=2' { cS } "ML_cons_detg" @@ -39,19 +39,19 @@ CCTK_REAL ML_cons_Gamma type=GF timelevels=1 tags='tensortypealias="U" tensorwei } "ML_cons_Gamma" public: -CCTK_REAL ML_cons_traceA type=GF timelevels=1 tags='tensortypealias="Scalar" tensorweight=1.0000000000000000000' +CCTK_REAL ML_cons_traceA type=GF timelevels=1 tags='tensortypealias="Scalar" tensorweight=1' { cA } "ML_cons_traceA" public: -CCTK_REAL ML_Ham type=GF timelevels=1 tags='tensortypealias="Scalar" tensorweight=1.0000000000000000000' +CCTK_REAL ML_Ham type=GF timelevels=1 tags='tensortypealias="Scalar" tensorweight=1' { H } "ML_Ham" public: -CCTK_REAL ML_mom type=GF timelevels=1 tags='tensortypealias="D" tensorweight=1.0000000000000000000' +CCTK_REAL ML_mom type=GF timelevels=1 tags='tensortypealias="D" tensorweight=1' { M1, M2, @@ -70,13 +70,13 @@ CCTK_REAL ML_curv type=GF timelevels=3 tags='tensortypealias="DD_sym" tensorweig } "ML_curv" public: -CCTK_REAL ML_dtlapse type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1.0000000000000000000' +CCTK_REAL ML_dtlapse type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1' { A } "ML_dtlapse" public: -CCTK_REAL ML_dtshift type=GF timelevels=3 tags='tensortypealias="U" tensorweight=1.0000000000000000000' +CCTK_REAL ML_dtshift type=GF timelevels=3 tags='tensortypealias="U" tensorweight=1' { B1, B2, @@ -92,7 +92,7 @@ CCTK_REAL ML_Gamma type=GF timelevels=3 tags='tensortypealias="U" tensorweight=0 } "ML_Gamma" public: -CCTK_REAL ML_lapse type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1.0000000000000000000' +CCTK_REAL ML_lapse type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1' { alpha } "ML_lapse" @@ -115,7 +115,7 @@ CCTK_REAL ML_metric type=GF timelevels=3 tags='tensortypealias="DD_sym" tensorwe } "ML_metric" public: -CCTK_REAL ML_shift type=GF timelevels=3 tags='tensortypealias="U" tensorweight=1.0000000000000000000' +CCTK_REAL ML_shift type=GF timelevels=3 tags='tensortypealias="U" tensorweight=1' { beta1, beta2, @@ -123,7 +123,7 @@ CCTK_REAL ML_shift type=GF timelevels=3 tags='tensortypealias="U" tensorweight=1 } "ML_shift" public: -CCTK_REAL ML_trace_curv type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1.0000000000000000000' +CCTK_REAL ML_trace_curv type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1' { trK } "ML_trace_curv" @@ -140,13 +140,13 @@ CCTK_REAL ML_curvrhs type=GF timelevels=3 tags='tensortypealias="DD_sym" tensorw } "ML_curvrhs" public: -CCTK_REAL ML_dtlapserhs type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1.0000000000000000000' +CCTK_REAL ML_dtlapserhs type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1' { Arhs } "ML_dtlapserhs" public: -CCTK_REAL ML_dtshiftrhs type=GF timelevels=3 tags='tensortypealias="U" tensorweight=1.0000000000000000000' +CCTK_REAL ML_dtshiftrhs type=GF timelevels=3 tags='tensortypealias="U" tensorweight=1' { B1rhs, B2rhs, @@ -162,7 +162,7 @@ CCTK_REAL ML_Gammarhs type=GF timelevels=3 tags='tensortypealias="U" tensorweigh } "ML_Gammarhs" public: -CCTK_REAL ML_lapserhs type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1.0000000000000000000' +CCTK_REAL ML_lapserhs type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1' { alpharhs } "ML_lapserhs" @@ -185,7 +185,7 @@ CCTK_REAL ML_metricrhs type=GF timelevels=3 tags='tensortypealias="DD_sym" tenso } "ML_metricrhs" public: -CCTK_REAL ML_shiftrhs type=GF timelevels=3 tags='tensortypealias="U" tensorweight=1.0000000000000000000' +CCTK_REAL ML_shiftrhs type=GF timelevels=3 tags='tensortypealias="U" tensorweight=1' { beta1rhs, beta2rhs, @@ -193,7 +193,7 @@ CCTK_REAL ML_shiftrhs type=GF timelevels=3 tags='tensortypealias="U" tensorweigh } "ML_shiftrhs" public: -CCTK_REAL ML_trace_curvrhs type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1.0000000000000000000' +CCTK_REAL ML_trace_curvrhs type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1' { trKrhs } "ML_trace_curvrhs" diff --git a/ML_BSSN/schedule.ccl b/ML_BSSN/schedule.ccl index a7da3b0..516fd9a 100644 --- a/ML_BSSN/schedule.ccl +++ b/ML_BSSN/schedule.ccl @@ -405,7 +405,7 @@ schedule ML_BSSN_CheckBoundaries at BASEGRID OPTIONS: meta } "check boundaries treatment" -schedule group ApplyBCs as ML_BSSN_ApplyBCs in MoL_PostStep after ML_BSSN_SelectBoundConds +schedule group ApplyBCs as ML_BSSN_ApplyBCs in MoL_PostStep after ML_BSSN_SelectBoundConds { # no language specified } "Apply boundary conditions controlled by thorn Boundary" diff --git a/ML_BSSN/src/ML_BSSN_RHS1.c b/ML_BSSN/src/ML_BSSN_RHS1.c index 15e1179..22daf60 100644 --- a/ML_BSSN/src/ML_BSSN_RHS1.c +++ b/ML_BSSN/src/ML_BSSN_RHS1.c @@ -20,6 +20,39 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((x) * (x) * (x) * (x)) +void ML_BSSN_RHS1_SelectBCs(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT ierr = 0; + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN::ML_dtlapserhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN::ML_dtlapserhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN::ML_dtshiftrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN::ML_dtshiftrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN::ML_Gammarhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN::ML_Gammarhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN::ML_lapserhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN::ML_lapserhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN::ML_log_confacrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN::ML_log_confacrhs."); + 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_shiftrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN::ML_shiftrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN::ML_trace_curvrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN::ML_trace_curvrhs."); + return; +} + 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[]) { DECLARE_CCTK_ARGUMENTS; @@ -610,13 +643,13 @@ void ML_BSSN_RHS1_Body(cGH const * restrict const cctkGH, int const dir, int con CCTK_REAL gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L)); - CCTK_REAL gtu21 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt); + CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt); - CCTK_REAL gtu31 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt); + CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt); CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L)); - CCTK_REAL gtu32 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt); + CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt); CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L)); @@ -659,50 +692,50 @@ void ML_BSSN_RHS1_Body(cGH const * restrict const cctkGH, int const dir, int con CCTK_REAL Gtl333 = khalf*PDstandardNth3gt33; - CCTK_REAL Gt111 = Gtl111*gtu11 + Gtl211*gtu21 + Gtl311*gtu31; + CCTK_REAL Gt111 = Gtl111*gtu11 + Gtl211*gtu12 + Gtl311*gtu13; - CCTK_REAL Gt211 = Gtl111*gtu21 + Gtl211*gtu22 + Gtl311*gtu32; + CCTK_REAL Gt211 = Gtl111*gtu12 + Gtl211*gtu22 + Gtl311*gtu23; - CCTK_REAL Gt311 = Gtl111*gtu31 + Gtl211*gtu32 + Gtl311*gtu33; + CCTK_REAL Gt311 = Gtl111*gtu13 + Gtl211*gtu23 + Gtl311*gtu33; - CCTK_REAL Gt112 = Gtl112*gtu11 + Gtl212*gtu21 + Gtl312*gtu31; + CCTK_REAL Gt112 = Gtl112*gtu11 + Gtl212*gtu12 + Gtl312*gtu13; - CCTK_REAL Gt212 = Gtl112*gtu21 + Gtl212*gtu22 + Gtl312*gtu32; + CCTK_REAL Gt212 = Gtl112*gtu12 + Gtl212*gtu22 + Gtl312*gtu23; - CCTK_REAL Gt312 = Gtl112*gtu31 + Gtl212*gtu32 + Gtl312*gtu33; + CCTK_REAL Gt312 = Gtl112*gtu13 + Gtl212*gtu23 + Gtl312*gtu33; - CCTK_REAL Gt113 = Gtl113*gtu11 + Gtl213*gtu21 + Gtl313*gtu31; + CCTK_REAL Gt113 = Gtl113*gtu11 + Gtl213*gtu12 + Gtl313*gtu13; - CCTK_REAL Gt213 = Gtl113*gtu21 + Gtl213*gtu22 + Gtl313*gtu32; + CCTK_REAL Gt213 = Gtl113*gtu12 + Gtl213*gtu22 + Gtl313*gtu23; - CCTK_REAL Gt313 = Gtl113*gtu31 + Gtl213*gtu32 + Gtl313*gtu33; + CCTK_REAL Gt313 = Gtl113*gtu13 + Gtl213*gtu23 + Gtl313*gtu33; - CCTK_REAL Gt122 = Gtl122*gtu11 + Gtl222*gtu21 + Gtl322*gtu31; + CCTK_REAL Gt122 = Gtl122*gtu11 + Gtl222*gtu12 + Gtl322*gtu13; - CCTK_REAL Gt222 = Gtl122*gtu21 + Gtl222*gtu22 + Gtl322*gtu32; + CCTK_REAL Gt222 = Gtl122*gtu12 + Gtl222*gtu22 + Gtl322*gtu23; - CCTK_REAL Gt322 = Gtl122*gtu31 + Gtl222*gtu32 + Gtl322*gtu33; + CCTK_REAL Gt322 = Gtl122*gtu13 + Gtl222*gtu23 + Gtl322*gtu33; - CCTK_REAL Gt123 = Gtl123*gtu11 + Gtl223*gtu21 + Gtl323*gtu31; + CCTK_REAL Gt123 = Gtl123*gtu11 + Gtl223*gtu12 + Gtl323*gtu13; - CCTK_REAL Gt223 = Gtl123*gtu21 + Gtl223*gtu22 + Gtl323*gtu32; + CCTK_REAL Gt223 = Gtl123*gtu12 + Gtl223*gtu22 + Gtl323*gtu23; - CCTK_REAL Gt323 = Gtl123*gtu31 + Gtl223*gtu32 + Gtl323*gtu33; + CCTK_REAL Gt323 = Gtl123*gtu13 + Gtl223*gtu23 + Gtl323*gtu33; - CCTK_REAL Gt133 = Gtl133*gtu11 + Gtl233*gtu21 + Gtl333*gtu31; + CCTK_REAL Gt133 = Gtl133*gtu11 + Gtl233*gtu12 + Gtl333*gtu13; - CCTK_REAL Gt233 = Gtl133*gtu21 + Gtl233*gtu22 + Gtl333*gtu32; + CCTK_REAL Gt233 = Gtl133*gtu12 + Gtl233*gtu22 + Gtl333*gtu23; - CCTK_REAL Gt333 = Gtl133*gtu31 + Gtl233*gtu32 + Gtl333*gtu33; + CCTK_REAL Gt333 = Gtl133*gtu13 + Gtl233*gtu23 + Gtl333*gtu33; - CCTK_REAL Xtn1 = Gt111*gtu11 + Gt122*gtu22 + 2*(Gt112*gtu21 + - Gt113*gtu31 + Gt123*gtu32) + Gt133*gtu33; + CCTK_REAL Xtn1 = Gt111*gtu11 + Gt122*gtu22 + 2*(Gt112*gtu12 + + Gt113*gtu13 + Gt123*gtu23) + Gt133*gtu33; - CCTK_REAL Xtn2 = Gt211*gtu11 + Gt222*gtu22 + 2*(Gt212*gtu21 + - Gt213*gtu31 + Gt223*gtu32) + Gt233*gtu33; + CCTK_REAL Xtn2 = Gt211*gtu11 + Gt222*gtu22 + 2*(Gt212*gtu12 + + Gt213*gtu13 + Gt223*gtu23) + Gt233*gtu33; - CCTK_REAL Xtn3 = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu21 + - Gt313*gtu31 + Gt323*gtu32) + Gt333*gtu33; + CCTK_REAL Xtn3 = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu12 + + Gt313*gtu13 + Gt323*gtu23) + Gt333*gtu33; CCTK_REAL fac1 = IfThen(conformalMethod,-(khalf*INV(phiL)),1); @@ -712,35 +745,35 @@ void ML_BSSN_RHS1_Body(cGH const * restrict const cctkGH, int const dir, int con CCTK_REAL cdphi3 = fac1*PDstandardNth3phi; - CCTK_REAL Atm11 = At11L*gtu11 + At12L*gtu21 + At13L*gtu31; + CCTK_REAL Atm11 = At11L*gtu11 + At12L*gtu12 + At13L*gtu13; - CCTK_REAL Atm21 = At11L*gtu21 + At12L*gtu22 + At13L*gtu32; + CCTK_REAL Atm21 = At11L*gtu12 + At12L*gtu22 + At13L*gtu23; - CCTK_REAL Atm31 = At11L*gtu31 + At12L*gtu32 + At13L*gtu33; + CCTK_REAL Atm31 = At11L*gtu13 + At12L*gtu23 + At13L*gtu33; - CCTK_REAL Atm12 = At12L*gtu11 + At22L*gtu21 + At23L*gtu31; + CCTK_REAL Atm12 = At12L*gtu11 + At22L*gtu12 + At23L*gtu13; - CCTK_REAL Atm22 = At12L*gtu21 + At22L*gtu22 + At23L*gtu32; + CCTK_REAL Atm22 = At12L*gtu12 + At22L*gtu22 + At23L*gtu23; - CCTK_REAL Atm32 = At12L*gtu31 + At22L*gtu32 + At23L*gtu33; + CCTK_REAL Atm32 = At12L*gtu13 + At22L*gtu23 + At23L*gtu33; - CCTK_REAL Atm13 = At13L*gtu11 + At23L*gtu21 + At33L*gtu31; + CCTK_REAL Atm13 = At13L*gtu11 + At23L*gtu12 + At33L*gtu13; - CCTK_REAL Atm23 = At13L*gtu21 + At23L*gtu22 + At33L*gtu32; + CCTK_REAL Atm23 = At13L*gtu12 + At23L*gtu22 + At33L*gtu23; - CCTK_REAL Atm33 = At13L*gtu31 + At23L*gtu32 + At33L*gtu33; + CCTK_REAL Atm33 = At13L*gtu13 + At23L*gtu23 + At33L*gtu33; - CCTK_REAL Atu11 = Atm11*gtu11 + Atm12*gtu21 + Atm13*gtu31; + CCTK_REAL Atu11 = Atm11*gtu11 + Atm12*gtu12 + Atm13*gtu13; - CCTK_REAL Atu21 = Atm11*gtu21 + Atm12*gtu22 + Atm13*gtu32; + CCTK_REAL Atu12 = Atm11*gtu12 + Atm12*gtu22 + Atm13*gtu23; - CCTK_REAL Atu31 = Atm11*gtu31 + Atm12*gtu32 + Atm13*gtu33; + CCTK_REAL Atu13 = Atm11*gtu13 + Atm12*gtu23 + Atm13*gtu33; - CCTK_REAL Atu22 = Atm21*gtu21 + Atm22*gtu22 + Atm23*gtu32; + CCTK_REAL Atu22 = Atm21*gtu12 + Atm22*gtu22 + Atm23*gtu23; - CCTK_REAL Atu32 = Atm21*gtu31 + Atm22*gtu32 + Atm23*gtu33; + CCTK_REAL Atu23 = Atm21*gtu13 + Atm22*gtu23 + Atm23*gtu33; - CCTK_REAL Atu33 = Atm31*gtu31 + Atm32*gtu32 + Atm33*gtu33; + CCTK_REAL Atu33 = Atm31*gtu13 + Atm32*gtu23 + Atm33*gtu33; CCTK_REAL e4phi = IfThen(conformalMethod,pow(phiL,-2),exp(4*phiL)); @@ -760,8 +793,8 @@ void ML_BSSN_RHS1_Body(cGH const * restrict const cctkGH, int const dir, int con CCTK_REAL S3 = (-eTtzL + beta1L*eTxzL + beta2L*eTyzL + beta3L*eTzzL)*INV(alphaL); - CCTK_REAL trS = em4phi*(eTxxL*gtu11 + eTyyL*gtu22 + 2*(eTxyL*gtu21 + - eTxzL*gtu31 + eTyzL*gtu32) + eTzzL*gtu33); + CCTK_REAL trS = em4phi*(eTxxL*gtu11 + eTyyL*gtu22 + 2*(eTxyL*gtu12 + + eTxzL*gtu13 + eTyzL*gtu23) + eTzzL*gtu33); CCTK_REAL phirhsL = epsdiss1*PDdissipationNth1phi + epsdiss2*PDdissipationNth2phi + epsdiss3*PDdissipationNth3phi + @@ -829,19 +862,19 @@ void ML_BSSN_RHS1_Body(cGH const * restrict const cctkGH, int const dir, int con beta3L*PDupwindNthAnti3gt33 + PDupwindNthSymm1gt33*Abs(beta1L) + PDupwindNthSymm2gt33*Abs(beta2L) + PDupwindNthSymm3gt33*Abs(beta3L); - CCTK_REAL dotXt1 = kthird*(7*(gtu21*PDstandardNth12beta1 + - gtu31*PDstandardNth13beta1) + gtu11*(4*PDstandardNth11beta1 + + CCTK_REAL dotXt1 = kthird*(7*(gtu12*PDstandardNth12beta1 + + gtu13*PDstandardNth13beta1) + gtu11*(4*PDstandardNth11beta1 + PDstandardNth12beta2 + PDstandardNth13beta3) + - gtu21*(PDstandardNth22beta2 + PDstandardNth23beta3) + - gtu31*(PDstandardNth23beta2 + PDstandardNth33beta3) - - 6*(Atu11*PDstandardNth1alpha + Atu21*PDstandardNth2alpha + - Atu31*PDstandardNth3alpha) + 6*(gtu32*PDstandardNth23beta1 + - alphaL*(6*(Atu11*cdphi1 + Atu21*cdphi2 + Atu31*cdphi3) + Atu11*Gt111 + - Atu22*Gt122 + 2*(Atu21*Gt112 + Atu31*Gt113 + Atu32*Gt123) + Atu33*Gt133 - - ktwothird*(gtu11*PDstandardNth1trK + gtu21*PDstandardNth2trK + - gtu31*PDstandardNth3trK))) - - 150.7964473723100754462068823974161384415*alphaL*(gtu11*S1 + gtu21*S2 + - gtu31*S3) + (-3*PDstandardNth1beta1 + 2*(PDstandardNth1beta1 + + gtu12*(PDstandardNth22beta2 + PDstandardNth23beta3) + + gtu13*(PDstandardNth23beta2 + PDstandardNth33beta3) - + 6*(Atu11*PDstandardNth1alpha + Atu12*PDstandardNth2alpha + + Atu13*PDstandardNth3alpha) + 6*(gtu23*PDstandardNth23beta1 + + alphaL*(6*(Atu11*cdphi1 + Atu12*cdphi2 + Atu13*cdphi3) + Atu11*Gt111 + + Atu22*Gt122 + 2*(Atu12*Gt112 + Atu13*Gt113 + Atu23*Gt123) + Atu33*Gt133 + - ktwothird*(gtu11*PDstandardNth1trK + gtu12*PDstandardNth2trK + + gtu13*PDstandardNth3trK))) - + 150.7964473723100754462068823974161384415*alphaL*(gtu11*S1 + gtu12*S2 + + gtu13*S3) + (-3*PDstandardNth1beta1 + 2*(PDstandardNth1beta1 + PDstandardNth2beta2 + PDstandardNth3beta3))*Xtn1 - 3*(PDstandardNth2beta1*Xtn2 + PDstandardNth3beta1*Xtn3) + 3*(epsdiss1*PDdissipationNth1Xt1 + epsdiss2*PDdissipationNth2Xt1 + @@ -851,19 +884,19 @@ void ML_BSSN_RHS1_Body(cGH const * restrict const cctkGH, int const dir, int con PDupwindNthSymm1Xt1*Abs(beta1L) + PDupwindNthSymm2Xt1*Abs(beta2L) + PDupwindNthSymm3Xt1*Abs(beta3L))); - CCTK_REAL dotXt2 = kthird*(gtu21*(PDstandardNth11beta1 + + CCTK_REAL dotXt2 = kthird*(gtu12*(PDstandardNth11beta1 + 7*PDstandardNth12beta2 + PDstandardNth13beta3) + gtu22*(PDstandardNth12beta1 + 4*PDstandardNth22beta2 + - PDstandardNth23beta3) + gtu32*(PDstandardNth13beta1 + + PDstandardNth23beta3) + gtu23*(PDstandardNth13beta1 + 7*PDstandardNth23beta2 + PDstandardNth33beta3) - - 6*(Atu21*PDstandardNth1alpha + Atu22*PDstandardNth2alpha + - Atu32*PDstandardNth3alpha) + 6*(gtu31*PDstandardNth13beta2 + - alphaL*(6*(Atu21*cdphi1 + Atu22*cdphi2 + Atu32*cdphi3) + Atu11*Gt211 + - Atu22*Gt222 + 2*(Atu21*Gt212 + Atu31*Gt213 + Atu32*Gt223) + Atu33*Gt233 - - ktwothird*(gtu21*PDstandardNth1trK + gtu22*PDstandardNth2trK + - gtu32*PDstandardNth3trK))) - - 150.7964473723100754462068823974161384415*alphaL*(gtu21*S1 + gtu22*S2 + - gtu32*S3) + 2*(PDstandardNth1beta1 + PDstandardNth2beta2 + + 6*(Atu12*PDstandardNth1alpha + Atu22*PDstandardNth2alpha + + Atu23*PDstandardNth3alpha) + 6*(gtu13*PDstandardNth13beta2 + + alphaL*(6*(Atu12*cdphi1 + Atu22*cdphi2 + Atu23*cdphi3) + Atu11*Gt211 + + Atu22*Gt222 + 2*(Atu12*Gt212 + Atu13*Gt213 + Atu23*Gt223) + Atu33*Gt233 + - ktwothird*(gtu12*PDstandardNth1trK + gtu22*PDstandardNth2trK + + gtu23*PDstandardNth3trK))) - + 150.7964473723100754462068823974161384415*alphaL*(gtu12*S1 + gtu22*S2 + + gtu23*S3) + 2*(PDstandardNth1beta1 + PDstandardNth2beta2 + PDstandardNth3beta3)*Xtn2 - 3*(PDstandardNth1beta2*Xtn1 + PDstandardNth2beta2*Xtn2 + PDstandardNth3beta2*Xtn3) + 3*(epsdiss1*PDdissipationNth1Xt2 + epsdiss2*PDdissipationNth2Xt2 + @@ -873,18 +906,18 @@ void ML_BSSN_RHS1_Body(cGH const * restrict const cctkGH, int const dir, int con PDupwindNthSymm1Xt2*Abs(beta1L) + PDupwindNthSymm2Xt2*Abs(beta2L) + PDupwindNthSymm3Xt2*Abs(beta3L))); - CCTK_REAL dotXt3 = kthird*(gtu31*(PDstandardNth11beta1 + + CCTK_REAL dotXt3 = kthird*(gtu13*(PDstandardNth11beta1 + PDstandardNth12beta2 + 7*PDstandardNth13beta3) + - gtu32*(PDstandardNth12beta1 + PDstandardNth22beta2 + + gtu23*(PDstandardNth12beta1 + PDstandardNth22beta2 + 7*PDstandardNth23beta3) + gtu33*(PDstandardNth13beta1 + PDstandardNth23beta2 + 4*PDstandardNth33beta3) - - 6*(Atu31*PDstandardNth1alpha + Atu32*PDstandardNth2alpha + - Atu33*PDstandardNth3alpha) + 6*(gtu21*PDstandardNth12beta3 + - alphaL*(6*(Atu31*cdphi1 + Atu32*cdphi2 + Atu33*cdphi3) + Atu11*Gt311 + - Atu22*Gt322 + 2*(Atu21*Gt312 + Atu31*Gt313 + Atu32*Gt323) + Atu33*Gt333 - - ktwothird*(gtu31*PDstandardNth1trK + gtu32*PDstandardNth2trK + + 6*(Atu13*PDstandardNth1alpha + Atu23*PDstandardNth2alpha + + Atu33*PDstandardNth3alpha) + 6*(gtu12*PDstandardNth12beta3 + + alphaL*(6*(Atu13*cdphi1 + Atu23*cdphi2 + Atu33*cdphi3) + Atu11*Gt311 + + Atu22*Gt322 + 2*(Atu12*Gt312 + Atu13*Gt313 + Atu23*Gt323) + Atu33*Gt333 + - ktwothird*(gtu13*PDstandardNth1trK + gtu23*PDstandardNth2trK + gtu33*PDstandardNth3trK))) - - 150.7964473723100754462068823974161384415*alphaL*(gtu31*S1 + gtu32*S2 + + 150.7964473723100754462068823974161384415*alphaL*(gtu13*S1 + gtu23*S2 + gtu33*S3) + 2*(PDstandardNth1beta1 + PDstandardNth2beta2 + PDstandardNth3beta3)*Xtn3 - 3*(PDstandardNth1beta3*Xtn1 + PDstandardNth2beta3*Xtn2 + PDstandardNth3beta3*Xtn3) + @@ -906,12 +939,12 @@ void ML_BSSN_RHS1_Body(cGH const * restrict const cctkGH, int const dir, int con beta1L*PDupwindNthAnti1trK + beta2L*PDupwindNthAnti2trK + beta3L*PDupwindNthAnti3trK - em4phi*(gtu11*PDstandardNth11alpha + gtu22*PDstandardNth22alpha + gtu33*(PDstandardNth33alpha + - 2*cdphi3*PDstandardNth3alpha) + 2*(gtu21*PDstandardNth12alpha + - gtu31*(PDstandardNth13alpha + cdphi1*PDstandardNth3alpha) + - gtu32*(PDstandardNth23alpha + cdphi2*PDstandardNth3alpha)) + - PDstandardNth1alpha*(2*(cdphi1*gtu11 + cdphi2*gtu21 + cdphi3*gtu31) - - Xtn1) + PDstandardNth2alpha*(2*(cdphi1*gtu21 + cdphi2*gtu22 + - cdphi3*gtu32) - Xtn2) - PDstandardNth3alpha*Xtn3) + + 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) + PDupwindNthSymm1trK*Abs(beta1L) + PDupwindNthSymm2trK*Abs(beta2L) + PDupwindNthSymm3trK*Abs(beta3L) + alphaL*(2*(Atm12*Atm21 + Atm13*Atm31 + Atm23*Atm32) + 12.56637061435917295385057353311801153679*(rho + trS) diff --git a/ML_BSSN/src/ML_BSSN_RHS2.c b/ML_BSSN/src/ML_BSSN_RHS2.c index 13bd8fc..672e384 100644 --- a/ML_BSSN/src/ML_BSSN_RHS2.c +++ b/ML_BSSN/src/ML_BSSN_RHS2.c @@ -20,6 +20,18 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((x) * (x) * (x) * (x)) +void ML_BSSN_RHS2_SelectBCs(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT ierr = 0; + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN::ML_curvrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN::ML_curvrhs."); + return; +} + 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[]) { DECLARE_CCTK_ARGUMENTS; @@ -427,13 +439,13 @@ void ML_BSSN_RHS2_Body(cGH const * restrict const cctkGH, int const dir, int con CCTK_REAL gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L)); - CCTK_REAL gtu21 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt); + CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt); - CCTK_REAL gtu31 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt); + CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt); CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L)); - CCTK_REAL gtu32 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt); + CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt); CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L)); @@ -476,104 +488,104 @@ void ML_BSSN_RHS2_Body(cGH const * restrict const cctkGH, int const dir, int con CCTK_REAL Gtl333 = khalf*PDstandardNth3gt33; - CCTK_REAL Gtlu111 = Gtl111*gtu11 + Gtl112*gtu21 + Gtl113*gtu31; + CCTK_REAL Gtlu111 = Gtl111*gtu11 + Gtl112*gtu12 + Gtl113*gtu13; - CCTK_REAL Gtlu112 = Gtl111*gtu21 + Gtl112*gtu22 + Gtl113*gtu32; + CCTK_REAL Gtlu112 = Gtl111*gtu12 + Gtl112*gtu22 + Gtl113*gtu23; - CCTK_REAL Gtlu113 = Gtl111*gtu31 + Gtl112*gtu32 + Gtl113*gtu33; + CCTK_REAL Gtlu113 = Gtl111*gtu13 + Gtl112*gtu23 + Gtl113*gtu33; - CCTK_REAL Gtlu121 = Gtl112*gtu11 + Gtl122*gtu21 + Gtl123*gtu31; + CCTK_REAL Gtlu121 = Gtl112*gtu11 + Gtl122*gtu12 + Gtl123*gtu13; - CCTK_REAL Gtlu122 = Gtl112*gtu21 + Gtl122*gtu22 + Gtl123*gtu32; + CCTK_REAL Gtlu122 = Gtl112*gtu12 + Gtl122*gtu22 + Gtl123*gtu23; - CCTK_REAL Gtlu123 = Gtl112*gtu31 + Gtl122*gtu32 + Gtl123*gtu33; + CCTK_REAL Gtlu123 = Gtl112*gtu13 + Gtl122*gtu23 + Gtl123*gtu33; - CCTK_REAL Gtlu131 = Gtl113*gtu11 + Gtl123*gtu21 + Gtl133*gtu31; + CCTK_REAL Gtlu131 = Gtl113*gtu11 + Gtl123*gtu12 + Gtl133*gtu13; - CCTK_REAL Gtlu132 = Gtl113*gtu21 + Gtl123*gtu22 + Gtl133*gtu32; + CCTK_REAL Gtlu132 = Gtl113*gtu12 + Gtl123*gtu22 + Gtl133*gtu23; - CCTK_REAL Gtlu133 = Gtl113*gtu31 + Gtl123*gtu32 + Gtl133*gtu33; + CCTK_REAL Gtlu133 = Gtl113*gtu13 + Gtl123*gtu23 + Gtl133*gtu33; - CCTK_REAL Gtlu211 = Gtl211*gtu11 + Gtl212*gtu21 + Gtl213*gtu31; + CCTK_REAL Gtlu211 = Gtl211*gtu11 + Gtl212*gtu12 + Gtl213*gtu13; - CCTK_REAL Gtlu212 = Gtl211*gtu21 + Gtl212*gtu22 + Gtl213*gtu32; + CCTK_REAL Gtlu212 = Gtl211*gtu12 + Gtl212*gtu22 + Gtl213*gtu23; - CCTK_REAL Gtlu213 = Gtl211*gtu31 + Gtl212*gtu32 + Gtl213*gtu33; + CCTK_REAL Gtlu213 = Gtl211*gtu13 + Gtl212*gtu23 + Gtl213*gtu33; - CCTK_REAL Gtlu221 = Gtl212*gtu11 + Gtl222*gtu21 + Gtl223*gtu31; + CCTK_REAL Gtlu221 = Gtl212*gtu11 + Gtl222*gtu12 + Gtl223*gtu13; - CCTK_REAL Gtlu222 = Gtl212*gtu21 + Gtl222*gtu22 + Gtl223*gtu32; + CCTK_REAL Gtlu222 = Gtl212*gtu12 + Gtl222*gtu22 + Gtl223*gtu23; - CCTK_REAL Gtlu223 = Gtl212*gtu31 + Gtl222*gtu32 + Gtl223*gtu33; + CCTK_REAL Gtlu223 = Gtl212*gtu13 + Gtl222*gtu23 + Gtl223*gtu33; - CCTK_REAL Gtlu231 = Gtl213*gtu11 + Gtl223*gtu21 + Gtl233*gtu31; + CCTK_REAL Gtlu231 = Gtl213*gtu11 + Gtl223*gtu12 + Gtl233*gtu13; - CCTK_REAL Gtlu232 = Gtl213*gtu21 + Gtl223*gtu22 + Gtl233*gtu32; + CCTK_REAL Gtlu232 = Gtl213*gtu12 + Gtl223*gtu22 + Gtl233*gtu23; - CCTK_REAL Gtlu233 = Gtl213*gtu31 + Gtl223*gtu32 + Gtl233*gtu33; + CCTK_REAL Gtlu233 = Gtl213*gtu13 + Gtl223*gtu23 + Gtl233*gtu33; - CCTK_REAL Gtlu311 = Gtl311*gtu11 + Gtl312*gtu21 + Gtl313*gtu31; + CCTK_REAL Gtlu311 = Gtl311*gtu11 + Gtl312*gtu12 + Gtl313*gtu13; - CCTK_REAL Gtlu312 = Gtl311*gtu21 + Gtl312*gtu22 + Gtl313*gtu32; + CCTK_REAL Gtlu312 = Gtl311*gtu12 + Gtl312*gtu22 + Gtl313*gtu23; - CCTK_REAL Gtlu313 = Gtl311*gtu31 + Gtl312*gtu32 + Gtl313*gtu33; + CCTK_REAL Gtlu313 = Gtl311*gtu13 + Gtl312*gtu23 + Gtl313*gtu33; - CCTK_REAL Gtlu321 = Gtl312*gtu11 + Gtl322*gtu21 + Gtl323*gtu31; + CCTK_REAL Gtlu321 = Gtl312*gtu11 + Gtl322*gtu12 + Gtl323*gtu13; - CCTK_REAL Gtlu322 = Gtl312*gtu21 + Gtl322*gtu22 + Gtl323*gtu32; + CCTK_REAL Gtlu322 = Gtl312*gtu12 + Gtl322*gtu22 + Gtl323*gtu23; - CCTK_REAL Gtlu323 = Gtl312*gtu31 + Gtl322*gtu32 + Gtl323*gtu33; + CCTK_REAL Gtlu323 = Gtl312*gtu13 + Gtl322*gtu23 + Gtl323*gtu33; - CCTK_REAL Gtlu331 = Gtl313*gtu11 + Gtl323*gtu21 + Gtl333*gtu31; + CCTK_REAL Gtlu331 = Gtl313*gtu11 + Gtl323*gtu12 + Gtl333*gtu13; - CCTK_REAL Gtlu332 = Gtl313*gtu21 + Gtl323*gtu22 + Gtl333*gtu32; + CCTK_REAL Gtlu332 = Gtl313*gtu12 + Gtl323*gtu22 + Gtl333*gtu23; - CCTK_REAL Gtlu333 = Gtl313*gtu31 + Gtl323*gtu32 + Gtl333*gtu33; + CCTK_REAL Gtlu333 = Gtl313*gtu13 + Gtl323*gtu23 + Gtl333*gtu33; - CCTK_REAL Gt111 = Gtl111*gtu11 + Gtl211*gtu21 + Gtl311*gtu31; + CCTK_REAL Gt111 = Gtl111*gtu11 + Gtl211*gtu12 + Gtl311*gtu13; - CCTK_REAL Gt211 = Gtl111*gtu21 + Gtl211*gtu22 + Gtl311*gtu32; + CCTK_REAL Gt211 = Gtl111*gtu12 + Gtl211*gtu22 + Gtl311*gtu23; - CCTK_REAL Gt311 = Gtl111*gtu31 + Gtl211*gtu32 + Gtl311*gtu33; + CCTK_REAL Gt311 = Gtl111*gtu13 + Gtl211*gtu23 + Gtl311*gtu33; - CCTK_REAL Gt112 = Gtl112*gtu11 + Gtl212*gtu21 + Gtl312*gtu31; + CCTK_REAL Gt112 = Gtl112*gtu11 + Gtl212*gtu12 + Gtl312*gtu13; - CCTK_REAL Gt212 = Gtl112*gtu21 + Gtl212*gtu22 + Gtl312*gtu32; + CCTK_REAL Gt212 = Gtl112*gtu12 + Gtl212*gtu22 + Gtl312*gtu23; - CCTK_REAL Gt312 = Gtl112*gtu31 + Gtl212*gtu32 + Gtl312*gtu33; + CCTK_REAL Gt312 = Gtl112*gtu13 + Gtl212*gtu23 + Gtl312*gtu33; - CCTK_REAL Gt113 = Gtl113*gtu11 + Gtl213*gtu21 + Gtl313*gtu31; + CCTK_REAL Gt113 = Gtl113*gtu11 + Gtl213*gtu12 + Gtl313*gtu13; - CCTK_REAL Gt213 = Gtl113*gtu21 + Gtl213*gtu22 + Gtl313*gtu32; + CCTK_REAL Gt213 = Gtl113*gtu12 + Gtl213*gtu22 + Gtl313*gtu23; - CCTK_REAL Gt313 = Gtl113*gtu31 + Gtl213*gtu32 + Gtl313*gtu33; + CCTK_REAL Gt313 = Gtl113*gtu13 + Gtl213*gtu23 + Gtl313*gtu33; - CCTK_REAL Gt122 = Gtl122*gtu11 + Gtl222*gtu21 + Gtl322*gtu31; + CCTK_REAL Gt122 = Gtl122*gtu11 + Gtl222*gtu12 + Gtl322*gtu13; - CCTK_REAL Gt222 = Gtl122*gtu21 + Gtl222*gtu22 + Gtl322*gtu32; + CCTK_REAL Gt222 = Gtl122*gtu12 + Gtl222*gtu22 + Gtl322*gtu23; - CCTK_REAL Gt322 = Gtl122*gtu31 + Gtl222*gtu32 + Gtl322*gtu33; + CCTK_REAL Gt322 = Gtl122*gtu13 + Gtl222*gtu23 + Gtl322*gtu33; - CCTK_REAL Gt123 = Gtl123*gtu11 + Gtl223*gtu21 + Gtl323*gtu31; + CCTK_REAL Gt123 = Gtl123*gtu11 + Gtl223*gtu12 + Gtl323*gtu13; - CCTK_REAL Gt223 = Gtl123*gtu21 + Gtl223*gtu22 + Gtl323*gtu32; + CCTK_REAL Gt223 = Gtl123*gtu12 + Gtl223*gtu22 + Gtl323*gtu23; - CCTK_REAL Gt323 = Gtl123*gtu31 + Gtl223*gtu32 + Gtl323*gtu33; + CCTK_REAL Gt323 = Gtl123*gtu13 + Gtl223*gtu23 + Gtl323*gtu33; - CCTK_REAL Gt133 = Gtl133*gtu11 + Gtl233*gtu21 + Gtl333*gtu31; + CCTK_REAL Gt133 = Gtl133*gtu11 + Gtl233*gtu12 + Gtl333*gtu13; - CCTK_REAL Gt233 = Gtl133*gtu21 + Gtl233*gtu22 + Gtl333*gtu32; + CCTK_REAL Gt233 = Gtl133*gtu12 + Gtl233*gtu22 + Gtl333*gtu23; - CCTK_REAL Gt333 = Gtl133*gtu31 + Gtl233*gtu32 + Gtl333*gtu33; + CCTK_REAL Gt333 = Gtl133*gtu13 + Gtl233*gtu23 + Gtl333*gtu33; - CCTK_REAL Xtn1 = Gt111*gtu11 + Gt122*gtu22 + 2*(Gt112*gtu21 + - Gt113*gtu31 + Gt123*gtu32) + Gt133*gtu33; + CCTK_REAL Xtn1 = Gt111*gtu11 + Gt122*gtu22 + 2*(Gt112*gtu12 + + Gt113*gtu13 + Gt123*gtu23) + Gt133*gtu33; - CCTK_REAL Xtn2 = Gt211*gtu11 + Gt222*gtu22 + 2*(Gt212*gtu21 + - Gt213*gtu31 + Gt223*gtu32) + Gt233*gtu33; + CCTK_REAL Xtn2 = Gt211*gtu11 + Gt222*gtu22 + 2*(Gt212*gtu12 + + Gt213*gtu13 + Gt223*gtu23) + Gt233*gtu33; - CCTK_REAL Xtn3 = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu21 + - Gt313*gtu31 + Gt323*gtu32) + Gt333*gtu33; + CCTK_REAL Xtn3 = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu12 + + Gt313*gtu13 + Gt323*gtu23) + Gt333*gtu33; CCTK_REAL Rt11 = 3*(Gt111*Gtlu111 + Gt112*Gtlu112 + Gt113*Gtlu113) + 2*(Gt211*Gtlu121 + Gt212*Gtlu122 + Gt213*Gtlu123 + Gt311*Gtlu131 + @@ -581,8 +593,8 @@ void ML_BSSN_RHS2_Body(cGH const * restrict const cctkGH, int const dir, int con Gt213*Gtlu213 + Gt311*Gtlu311 + Gt312*Gtlu312 + Gt313*Gtlu313 + gt11L*PDstandardNth1Xt1 + gt12L*PDstandardNth1Xt2 + gt13L*PDstandardNth1Xt3 + khalf*(-(gtu11*PDstandardNth11gt11) - - 2*gtu21*PDstandardNth12gt11 - 2*gtu31*PDstandardNth13gt11 - - gtu22*PDstandardNth22gt11 - 2*gtu32*PDstandardNth23gt11 - + 2*gtu12*PDstandardNth12gt11 - 2*gtu13*PDstandardNth13gt11 - + gtu22*PDstandardNth22gt11 - 2*gtu23*PDstandardNth23gt11 - gtu33*PDstandardNth33gt11) + Gtl111*Xtn1 + Gtl112*Xtn2 + Gtl113*Xtn3; CCTK_REAL Rt12 = khalf*(4*(Gt211*Gtlu221 + Gt212*Gtlu222 + @@ -592,10 +604,10 @@ void ML_BSSN_RHS2_Body(cGH const * restrict const cctkGH, int const dir, int con Gt323*Gtlu133 + Gt111*Gtlu211 + Gt112*Gtlu212 + Gt113*Gtlu213 + Gt311*Gtlu231 + Gt312*Gtlu232 + Gt313*Gtlu233 + Gt311*Gtlu321 + Gt312*Gtlu322 + Gt313*Gtlu323) - gtu11*PDstandardNth11gt12 - - 2*gtu21*PDstandardNth12gt12 - 2*gtu31*PDstandardNth13gt12 + + 2*gtu12*PDstandardNth12gt12 - 2*gtu13*PDstandardNth13gt12 + gt12L*PDstandardNth1Xt1 + gt22L*PDstandardNth1Xt2 + gt23L*PDstandardNth1Xt3 - gtu22*PDstandardNth22gt12 - - 2*gtu32*PDstandardNth23gt12 + gt11L*PDstandardNth2Xt1 + + 2*gtu23*PDstandardNth23gt12 + gt11L*PDstandardNth2Xt1 + gt12L*PDstandardNth2Xt2 + gt13L*PDstandardNth2Xt3 - gtu33*PDstandardNth33gt12 + Gtl112*Xtn1 + Gtl211*Xtn1 + Gtl122*Xtn2 + Gtl212*Xtn2 + Gtl123*Xtn3 + Gtl213*Xtn3); @@ -607,10 +619,10 @@ void ML_BSSN_RHS2_Body(cGH const * restrict const cctkGH, int const dir, int con Gt213*Gtlu233 + Gt111*Gtlu311 + Gt112*Gtlu312 + Gt113*Gtlu313 + Gt211*Gtlu321 + Gt212*Gtlu322 + Gt213*Gtlu323) + 4*(Gt311*Gtlu331 + Gt312*Gtlu332 + Gt313*Gtlu333) - gtu11*PDstandardNth11gt13 - - 2*gtu21*PDstandardNth12gt13 - 2*gtu31*PDstandardNth13gt13 + + 2*gtu12*PDstandardNth12gt13 - 2*gtu13*PDstandardNth13gt13 + gt13L*PDstandardNth1Xt1 + gt23L*PDstandardNth1Xt2 + gt33L*PDstandardNth1Xt3 - gtu22*PDstandardNth22gt13 - - 2*gtu32*PDstandardNth23gt13 - gtu33*PDstandardNth33gt13 + + 2*gtu23*PDstandardNth23gt13 - gtu33*PDstandardNth33gt13 + gt11L*PDstandardNth3Xt1 + gt12L*PDstandardNth3Xt2 + gt13L*PDstandardNth3Xt3 + Gtl113*Xtn1 + Gtl311*Xtn1 + Gtl123*Xtn2 + Gtl312*Xtn2 + Gtl133*Xtn3 + Gtl313*Xtn3); @@ -621,8 +633,8 @@ void ML_BSSN_RHS2_Body(cGH const * restrict const cctkGH, int const dir, int con Gt323*Gtlu233) + Gt312*Gtlu321 + Gt322*Gtlu322 + Gt323*Gtlu323 + gt12L*PDstandardNth2Xt1 + gt22L*PDstandardNth2Xt2 + gt23L*PDstandardNth2Xt3 + khalf*(-(gtu11*PDstandardNth11gt22) - - 2*gtu21*PDstandardNth12gt22 - 2*gtu31*PDstandardNth13gt22 - - gtu22*PDstandardNth22gt22 - 2*gtu32*PDstandardNth23gt22 - + 2*gtu12*PDstandardNth12gt22 - 2*gtu13*PDstandardNth13gt22 - + gtu22*PDstandardNth22gt22 - 2*gtu23*PDstandardNth23gt22 - gtu33*PDstandardNth33gt22) + Gtl212*Xtn1 + Gtl222*Xtn2 + Gtl223*Xtn3; CCTK_REAL Rt23 = khalf*(2*(Gt112*Gtlu131 + Gt122*Gtlu132 + @@ -632,8 +644,8 @@ void ML_BSSN_RHS2_Body(cGH const * restrict const cctkGH, int const dir, int con Gt333*Gtlu233 + Gt112*Gtlu311 + Gt122*Gtlu312 + Gt123*Gtlu313 + Gt212*Gtlu321 + Gt222*Gtlu322 + Gt223*Gtlu323) + 4*(Gt312*Gtlu331 + Gt322*Gtlu332 + Gt323*Gtlu333) - gtu11*PDstandardNth11gt23 - - 2*gtu21*PDstandardNth12gt23 - 2*gtu31*PDstandardNth13gt23 - - gtu22*PDstandardNth22gt23 - 2*gtu32*PDstandardNth23gt23 + + 2*gtu12*PDstandardNth12gt23 - 2*gtu13*PDstandardNth13gt23 - + gtu22*PDstandardNth22gt23 - 2*gtu23*PDstandardNth23gt23 + gt13L*PDstandardNth2Xt1 + gt23L*PDstandardNth2Xt2 + gt33L*PDstandardNth2Xt3 - gtu33*PDstandardNth33gt23 + gt12L*PDstandardNth3Xt1 + gt22L*PDstandardNth3Xt2 + @@ -644,9 +656,9 @@ void ML_BSSN_RHS2_Body(cGH const * restrict const cctkGH, int const dir, int con 2*Gtlu312) + Gt133*(Gtlu133 + 2*Gtlu313) + Gt213*(Gtlu231 + 2*Gtlu321) + Gt223*(Gtlu232 + 2*Gtlu322) + Gt233*(Gtlu233 + 2*Gtlu323) + 3*(Gt313*Gtlu331 + Gt323*Gtlu332 + Gt333*Gtlu333) + - khalf*(-(gtu11*PDstandardNth11gt33) - 2*gtu21*PDstandardNth12gt33 - - 2*gtu31*PDstandardNth13gt33 - gtu22*PDstandardNth22gt33 - - 2*gtu32*PDstandardNth23gt33 - gtu33*PDstandardNth33gt33) + + khalf*(-(gtu11*PDstandardNth11gt33) - 2*gtu12*PDstandardNth12gt33 - + 2*gtu13*PDstandardNth13gt33 - gtu22*PDstandardNth22gt33 - + 2*gtu23*PDstandardNth23gt33 - gtu33*PDstandardNth33gt33) + gt13L*PDstandardNth3Xt1 + gt23L*PDstandardNth3Xt2 + gt33L*PDstandardNth3Xt3 + Gtl313*Xtn1 + Gtl323*Xtn2 + Gtl333*Xtn3; @@ -685,58 +697,58 @@ void ML_BSSN_RHS2_Body(cGH const * restrict const cctkGH, int const dir, int con Gt333*PDstandardNth3phi)) + fac2*SQR(PDstandardNth3phi); CCTK_REAL Rphi11 = -2*(cdphi211 + 2*(-1 + gt11L*gtu11)*SQR(cdphi1) + - gt11L*(cdphi211*gtu11 + 4*(cdphi1*(cdphi2*gtu21 + cdphi3*gtu31) + - cdphi2*cdphi3*gtu32) + cdphi233*gtu33 + gtu22*(cdphi222 + - 2*SQR(cdphi2)) + 2*(cdphi212*gtu21 + cdphi213*gtu31 + cdphi223*gtu32 + + 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 Rphi12 = -2*(cdphi212 + cdphi1*(cdphi2*(-2 + 4*gt12L*gtu21) - + 4*cdphi3*gt12L*gtu31) + gt12L*(cdphi211*gtu11 + 4*cdphi2*cdphi3*gtu32 - + 2*(cdphi212*gtu21 + cdphi213*gtu31 + cdphi223*gtu32 + + 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 Rphi13 = -2*(cdphi213 + cdphi1*(4*cdphi2*gt13L*gtu21 + - cdphi3*(-2 + 4*gt13L*gtu31)) + gt13L*(cdphi211*gtu11 + - 4*cdphi2*cdphi3*gtu32 + 2*(cdphi212*gtu21 + cdphi213*gtu31 + - cdphi223*gtu32 + gtu11*SQR(cdphi1)) + gtu22*(cdphi222 + 2*SQR(cdphi2)) + 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 Rphi22 = -2*(cdphi222 + 2*(-1 + gt22L*gtu22)*SQR(cdphi2) + - gt22L*(cdphi222*gtu22 + 4*(cdphi1*cdphi3*gtu31 + cdphi2*(cdphi1*gtu21 + - cdphi3*gtu32)) + cdphi233*gtu33 + gtu11*(cdphi211 + 2*SQR(cdphi1)) + - 2*(cdphi212*gtu21 + cdphi213*gtu31 + cdphi223*gtu32 + + 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 Rphi23 = -2*(cdphi223 + cdphi2*(4*cdphi1*gt23L*gtu21 + - cdphi3*(-2 + 4*gt23L*gtu32)) + gt23L*(cdphi222*gtu22 + - 4*cdphi1*cdphi3*gtu31 + gtu11*(cdphi211 + 2*SQR(cdphi1)) + - 2*(cdphi212*gtu21 + cdphi213*gtu31 + cdphi223*gtu32 + - gtu22*SQR(cdphi2)) + gtu33*(cdphi233 + 2*SQR(cdphi3)))); + 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 Rphi33 = -2*(cdphi233 + gt33L*((4*cdphi1*cdphi2 + - 2*cdphi212)*gtu21 + 4*cdphi3*(cdphi1*gtu31 + cdphi2*gtu32) + - 2*(cdphi213*gtu31 + cdphi223*gtu32) + cdphi233*gtu33 + gtu11*(cdphi211 + 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 Atm11 = At11L*gtu11 + At12L*gtu21 + At13L*gtu31; + CCTK_REAL Atm11 = At11L*gtu11 + At12L*gtu12 + At13L*gtu13; - CCTK_REAL Atm21 = At11L*gtu21 + At12L*gtu22 + At13L*gtu32; + CCTK_REAL Atm21 = At11L*gtu12 + At12L*gtu22 + At13L*gtu23; - CCTK_REAL Atm31 = At11L*gtu31 + At12L*gtu32 + At13L*gtu33; + CCTK_REAL Atm31 = At11L*gtu13 + At12L*gtu23 + At13L*gtu33; - CCTK_REAL Atm12 = At12L*gtu11 + At22L*gtu21 + At23L*gtu31; + CCTK_REAL Atm12 = At12L*gtu11 + At22L*gtu12 + At23L*gtu13; - CCTK_REAL Atm22 = At12L*gtu21 + At22L*gtu22 + At23L*gtu32; + CCTK_REAL Atm22 = At12L*gtu12 + At22L*gtu22 + At23L*gtu23; - CCTK_REAL Atm32 = At12L*gtu31 + At22L*gtu32 + At23L*gtu33; + CCTK_REAL Atm32 = At12L*gtu13 + At22L*gtu23 + At23L*gtu33; - CCTK_REAL Atm13 = At13L*gtu11 + At23L*gtu21 + At33L*gtu31; + CCTK_REAL Atm13 = At13L*gtu11 + At23L*gtu12 + At33L*gtu13; - CCTK_REAL Atm23 = At13L*gtu21 + At23L*gtu22 + At33L*gtu32; + CCTK_REAL Atm23 = At13L*gtu12 + At23L*gtu22 + At33L*gtu23; - CCTK_REAL Atm33 = At13L*gtu31 + At23L*gtu32 + At33L*gtu33; + CCTK_REAL Atm33 = At13L*gtu13 + At23L*gtu23 + At33L*gtu33; CCTK_REAL e4phi = IfThen(conformalMethod,pow(phiL,-2),exp(4*phiL)); @@ -756,13 +768,13 @@ void ML_BSSN_RHS2_Body(cGH const * restrict const cctkGH, int const dir, int con CCTK_REAL gu11 = em4phi*gtu11; - CCTK_REAL gu21 = em4phi*gtu21; + CCTK_REAL gu12 = em4phi*gtu12; - CCTK_REAL gu31 = em4phi*gtu31; + CCTK_REAL gu13 = em4phi*gtu13; CCTK_REAL gu22 = em4phi*gtu22; - CCTK_REAL gu32 = em4phi*gtu32; + CCTK_REAL gu23 = em4phi*gtu23; CCTK_REAL gu33 = em4phi*gtu33; @@ -778,8 +790,8 @@ void ML_BSSN_RHS2_Body(cGH const * restrict const cctkGH, int const dir, int con CCTK_REAL R33 = Rphi33 + Rt33; - CCTK_REAL trS = em4phi*(eTxxL*gtu11 + eTyyL*gtu22 + 2*(eTxyL*gtu21 + - eTxzL*gtu31 + eTyzL*gtu32) + eTzzL*gtu33); + CCTK_REAL trS = em4phi*(eTxxL*gtu11 + eTyyL*gtu22 + 2*(eTxyL*gtu12 + + eTxzL*gtu13 + eTyzL*gtu23) + eTzzL*gtu33); CCTK_REAL Ats11 = -PDstandardNth11alpha + (4*cdphi1 + Gt111)*PDstandardNth1alpha + Gt211*PDstandardNth2alpha + @@ -805,8 +817,8 @@ void ML_BSSN_RHS2_Body(cGH const * restrict const cctkGH, int const dir, int con Gt233*PDstandardNth2alpha - PDstandardNth33alpha + (4*cdphi3 + Gt333)*PDstandardNth3alpha + alphaL*R33; - CCTK_REAL trAts = Ats11*gu11 + Ats22*gu22 + 2*(Ats12*gu21 + Ats13*gu31 - + Ats23*gu32) + Ats33*gu33; + CCTK_REAL trAts = Ats11*gu11 + Ats22*gu22 + 2*(Ats12*gu12 + Ats13*gu13 + + Ats23*gu23) + Ats33*gu33; CCTK_REAL At11rhsL = -2.*alphaL*(At11L*Atm11 + At12L*Atm21 + At13L*Atm31) + epsdiss1*PDdissipationNth1At11 + diff --git a/ML_BSSN/src/ML_BSSN_RHSRadiativeBoundary.c b/ML_BSSN/src/ML_BSSN_RHSRadiativeBoundary.c index 59674b7..5572dae 100644 --- a/ML_BSSN/src/ML_BSSN_RHSRadiativeBoundary.c +++ b/ML_BSSN/src/ML_BSSN_RHSRadiativeBoundary.c @@ -20,6 +20,42 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((x) * (x) * (x) * (x)) +void ML_BSSN_RHSRadiativeBoundary_SelectBCs(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT ierr = 0; + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN::ML_curvrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN::ML_curvrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN::ML_dtlapserhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN::ML_dtlapserhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN::ML_dtshiftrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN::ML_dtshiftrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN::ML_Gammarhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN::ML_Gammarhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN::ML_lapserhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN::ML_lapserhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN::ML_log_confacrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN::ML_log_confacrhs."); + 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_shiftrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN::ML_shiftrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN::ML_trace_curvrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN::ML_trace_curvrhs."); + return; +} + void ML_BSSN_RHSRadiativeBoundary_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[]) { DECLARE_CCTK_ARGUMENTS; @@ -131,13 +167,13 @@ void ML_BSSN_RHSRadiativeBoundary_Body(cGH const * restrict const cctkGH, int co CCTK_REAL gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L)); - CCTK_REAL gtu21 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt); + CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt); - CCTK_REAL gtu31 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt); + CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt); CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L)); - CCTK_REAL gtu32 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt); + CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt); CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L)); @@ -145,13 +181,13 @@ void ML_BSSN_RHSRadiativeBoundary_Body(cGH const * restrict const cctkGH, int co CCTK_REAL gu11 = em4phi*gtu11; - CCTK_REAL gu21 = em4phi*gtu21; + CCTK_REAL gu12 = em4phi*gtu12; - CCTK_REAL gu31 = em4phi*gtu31; + CCTK_REAL gu13 = em4phi*gtu13; CCTK_REAL gu22 = em4phi*gtu22; - CCTK_REAL gu32 = em4phi*gtu32; + CCTK_REAL gu23 = em4phi*gtu23; CCTK_REAL gu33 = em4phi*gtu33; @@ -161,11 +197,11 @@ void ML_BSSN_RHSRadiativeBoundary_Body(cGH const * restrict const cctkGH, int co CCTK_REAL nn3 = normal[2]; - CCTK_REAL nu1 = gu11*nn1 + gu21*nn2 + gu31*nn3; + CCTK_REAL nu1 = gu11*nn1 + gu12*nn2 + gu13*nn3; - CCTK_REAL nu2 = gu21*nn1 + gu22*nn2 + gu32*nn3; + CCTK_REAL nu2 = gu12*nn1 + gu22*nn2 + gu23*nn3; - CCTK_REAL nu3 = gu31*nn1 + gu32*nn2 + gu33*nn3; + CCTK_REAL nu3 = gu13*nn1 + gu23*nn2 + gu33*nn3; CCTK_REAL nlen2 = nn1*nu1 + nn2*nu2 + nn3*nu3; diff --git a/ML_BSSN/src/ML_BSSN_RHSStaticBoundary.c b/ML_BSSN/src/ML_BSSN_RHSStaticBoundary.c index 1829b1f..a322308 100644 --- a/ML_BSSN/src/ML_BSSN_RHSStaticBoundary.c +++ b/ML_BSSN/src/ML_BSSN_RHSStaticBoundary.c @@ -20,6 +20,42 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((x) * (x) * (x) * (x)) +void ML_BSSN_RHSStaticBoundary_SelectBCs(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT ierr = 0; + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN::ML_curvrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN::ML_curvrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN::ML_dtlapserhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN::ML_dtlapserhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN::ML_dtshiftrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN::ML_dtshiftrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN::ML_Gammarhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN::ML_Gammarhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN::ML_lapserhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN::ML_lapserhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN::ML_log_confacrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN::ML_log_confacrhs."); + 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_shiftrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN::ML_shiftrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN::ML_trace_curvrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN::ML_trace_curvrhs."); + return; +} + 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[]) { DECLARE_CCTK_ARGUMENTS; diff --git a/ML_BSSN/src/ML_BSSN_boundary.c b/ML_BSSN/src/ML_BSSN_boundary.c index 9bc7fea..eac45fc 100644 --- a/ML_BSSN/src/ML_BSSN_boundary.c +++ b/ML_BSSN/src/ML_BSSN_boundary.c @@ -20,6 +20,42 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((x) * (x) * (x) * (x)) +void ML_BSSN_boundary_SelectBCs(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT ierr = 0; + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN::ML_curv","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN::ML_curv."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN::ML_dtlapse","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN::ML_dtlapse."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN::ML_dtshift","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN::ML_dtshift."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN::ML_Gamma","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN::ML_Gamma."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN::ML_lapse","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN::ML_lapse."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN::ML_log_confac","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN::ML_log_confac."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN::ML_metric","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN::ML_metric."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN::ML_shift","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN::ML_shift."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN::ML_trace_curv","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN::ML_trace_curv."); + return; +} + 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[]) { DECLARE_CCTK_ARGUMENTS; diff --git a/ML_BSSN/src/ML_BSSN_constraints.c b/ML_BSSN/src/ML_BSSN_constraints.c index f87c46b..eb5642a 100644 --- a/ML_BSSN/src/ML_BSSN_constraints.c +++ b/ML_BSSN/src/ML_BSSN_constraints.c @@ -20,6 +20,30 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((x) * (x) * (x) * (x)) +void ML_BSSN_constraints_SelectBCs(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT ierr = 0; + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN::ML_cons_detg","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN::ML_cons_detg."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN::ML_cons_Gamma","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN::ML_cons_Gamma."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN::ML_cons_traceA","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN::ML_cons_traceA."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN::ML_Ham","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN::ML_Ham."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN::ML_mom","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN::ML_mom."); + return; +} + void ML_BSSN_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[]) { DECLARE_CCTK_ARGUMENTS; @@ -317,151 +341,151 @@ void ML_BSSN_constraints_Body(cGH const * restrict const cctkGH, int const dir, CCTK_REAL gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L)); - CCTK_REAL gtu21 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt); + CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt); - CCTK_REAL gtu31 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt); + CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt); CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L)); - CCTK_REAL gtu32 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt); + CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt); CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L)); CCTK_REAL Gt111 = khalf*(gtu11*PDstandardNth1gt11 + - 2*(gtu21*PDstandardNth1gt12 + gtu31*PDstandardNth1gt13) - - gtu21*PDstandardNth2gt11 - gtu31*PDstandardNth3gt11); + 2*(gtu12*PDstandardNth1gt12 + gtu13*PDstandardNth1gt13) - + gtu12*PDstandardNth2gt11 - gtu13*PDstandardNth3gt11); - CCTK_REAL Gt211 = khalf*(gtu21*PDstandardNth1gt11 + - 2*(gtu22*PDstandardNth1gt12 + gtu32*PDstandardNth1gt13) - - gtu22*PDstandardNth2gt11 - gtu32*PDstandardNth3gt11); + CCTK_REAL Gt211 = khalf*(gtu12*PDstandardNth1gt11 + + 2*(gtu22*PDstandardNth1gt12 + gtu23*PDstandardNth1gt13) - + gtu22*PDstandardNth2gt11 - gtu23*PDstandardNth3gt11); - CCTK_REAL Gt311 = khalf*(gtu31*PDstandardNth1gt11 + - 2*(gtu32*PDstandardNth1gt12 + gtu33*PDstandardNth1gt13) - - gtu32*PDstandardNth2gt11 - gtu33*PDstandardNth3gt11); + CCTK_REAL Gt311 = khalf*(gtu13*PDstandardNth1gt11 + + 2*(gtu23*PDstandardNth1gt12 + gtu33*PDstandardNth1gt13) - + gtu23*PDstandardNth2gt11 - gtu33*PDstandardNth3gt11); - CCTK_REAL Gt112 = khalf*(gtu21*PDstandardNth1gt22 + - gtu11*PDstandardNth2gt11 + gtu31*(PDstandardNth1gt23 + + CCTK_REAL Gt112 = khalf*(gtu12*PDstandardNth1gt22 + + gtu11*PDstandardNth2gt11 + gtu13*(PDstandardNth1gt23 + PDstandardNth2gt13 - PDstandardNth3gt12)); CCTK_REAL Gt212 = khalf*(gtu22*PDstandardNth1gt22 + - gtu21*PDstandardNth2gt11 + gtu32*(PDstandardNth1gt23 + + gtu12*PDstandardNth2gt11 + gtu23*(PDstandardNth1gt23 + PDstandardNth2gt13 - PDstandardNth3gt12)); - CCTK_REAL Gt312 = khalf*(gtu32*PDstandardNth1gt22 + - gtu31*PDstandardNth2gt11 + gtu33*(PDstandardNth1gt23 + + CCTK_REAL Gt312 = khalf*(gtu23*PDstandardNth1gt22 + + gtu13*PDstandardNth2gt11 + gtu33*(PDstandardNth1gt23 + PDstandardNth2gt13 - PDstandardNth3gt12)); - CCTK_REAL Gt113 = khalf*(gtu31*PDstandardNth1gt33 + - gtu11*PDstandardNth3gt11 + gtu21*(PDstandardNth1gt23 - + CCTK_REAL Gt113 = khalf*(gtu13*PDstandardNth1gt33 + + gtu11*PDstandardNth3gt11 + gtu12*(PDstandardNth1gt23 - PDstandardNth2gt13 + PDstandardNth3gt12)); - CCTK_REAL Gt213 = khalf*(gtu32*PDstandardNth1gt33 + - gtu21*PDstandardNth3gt11 + gtu22*(PDstandardNth1gt23 - + CCTK_REAL Gt213 = khalf*(gtu23*PDstandardNth1gt33 + + gtu12*PDstandardNth3gt11 + gtu22*(PDstandardNth1gt23 - PDstandardNth2gt13 + PDstandardNth3gt12)); CCTK_REAL Gt313 = khalf*(gtu33*PDstandardNth1gt33 + - gtu31*PDstandardNth3gt11 + gtu32*(PDstandardNth1gt23 - + gtu13*PDstandardNth3gt11 + gtu23*(PDstandardNth1gt23 - PDstandardNth2gt13 + PDstandardNth3gt12)); CCTK_REAL Gt122 = khalf*(gtu11*(-PDstandardNth1gt22 + - 2*PDstandardNth2gt12) + gtu21*PDstandardNth2gt22 + - gtu31*(2*PDstandardNth2gt23 - PDstandardNth3gt22)); + 2*PDstandardNth2gt12) + gtu12*PDstandardNth2gt22 + + gtu13*(2*PDstandardNth2gt23 - PDstandardNth3gt22)); - CCTK_REAL Gt222 = khalf*(gtu21*(-PDstandardNth1gt22 + + CCTK_REAL Gt222 = khalf*(gtu12*(-PDstandardNth1gt22 + 2*PDstandardNth2gt12) + gtu22*PDstandardNth2gt22 + - gtu32*(2*PDstandardNth2gt23 - PDstandardNth3gt22)); + gtu23*(2*PDstandardNth2gt23 - PDstandardNth3gt22)); - CCTK_REAL Gt322 = khalf*(gtu31*(-PDstandardNth1gt22 + - 2*PDstandardNth2gt12) + gtu32*PDstandardNth2gt22 + + CCTK_REAL Gt322 = khalf*(gtu13*(-PDstandardNth1gt22 + + 2*PDstandardNth2gt12) + gtu23*PDstandardNth2gt22 + gtu33*(2*PDstandardNth2gt23 - PDstandardNth3gt22)); - CCTK_REAL Gt123 = khalf*(gtu31*PDstandardNth2gt33 + + CCTK_REAL Gt123 = khalf*(gtu13*PDstandardNth2gt33 + gtu11*(-PDstandardNth1gt23 + PDstandardNth2gt13 + PDstandardNth3gt12) + - gtu21*PDstandardNth3gt22); + gtu12*PDstandardNth3gt22); - CCTK_REAL Gt223 = khalf*(gtu32*PDstandardNth2gt33 + - gtu21*(-PDstandardNth1gt23 + PDstandardNth2gt13 + PDstandardNth3gt12) + + CCTK_REAL Gt223 = khalf*(gtu23*PDstandardNth2gt33 + + gtu12*(-PDstandardNth1gt23 + PDstandardNth2gt13 + PDstandardNth3gt12) + gtu22*PDstandardNth3gt22); CCTK_REAL Gt323 = khalf*(gtu33*PDstandardNth2gt33 + - gtu31*(-PDstandardNth1gt23 + PDstandardNth2gt13 + PDstandardNth3gt12) + - gtu32*PDstandardNth3gt22); + gtu13*(-PDstandardNth1gt23 + PDstandardNth2gt13 + PDstandardNth3gt12) + + gtu23*PDstandardNth3gt22); CCTK_REAL Gt133 = khalf*(-(gtu11*PDstandardNth1gt33) - - gtu21*PDstandardNth2gt33 + 2*gtu11*PDstandardNth3gt13 + - 2*gtu21*PDstandardNth3gt23 + gtu31*PDstandardNth3gt33); + gtu12*PDstandardNth2gt33 + 2*gtu11*PDstandardNth3gt13 + + 2*gtu12*PDstandardNth3gt23 + gtu13*PDstandardNth3gt33); - CCTK_REAL Gt233 = khalf*(-(gtu21*PDstandardNth1gt33) - - gtu22*PDstandardNth2gt33 + 2*gtu21*PDstandardNth3gt13 + - 2*gtu22*PDstandardNth3gt23 + gtu32*PDstandardNth3gt33); + CCTK_REAL Gt233 = khalf*(-(gtu12*PDstandardNth1gt33) - + gtu22*PDstandardNth2gt33 + 2*gtu12*PDstandardNth3gt13 + + 2*gtu22*PDstandardNth3gt23 + gtu23*PDstandardNth3gt33); - CCTK_REAL Gt333 = khalf*(-(gtu31*PDstandardNth1gt33) - - gtu32*PDstandardNth2gt33 + 2*gtu31*PDstandardNth3gt13 + - 2*gtu32*PDstandardNth3gt23 + gtu33*PDstandardNth3gt33); + CCTK_REAL Gt333 = khalf*(-(gtu13*PDstandardNth1gt33) - + gtu23*PDstandardNth2gt33 + 2*gtu13*PDstandardNth3gt13 + + 2*gtu23*PDstandardNth3gt23 + gtu33*PDstandardNth3gt33); CCTK_REAL Rt11 = -(gtu11*khalf*PDstandardNth11gt11) + - gtu21*(2*Gt211*Gt212*gt22L + 4*Gt112*gt13L*Gt311 + 2*Gt113*gt11L*Gt312 + gtu12*(2*Gt211*Gt212*gt22L + 4*Gt112*gt13L*Gt311 + 2*Gt113*gt11L*Gt312 + 2*gt13L*Gt312*Gt313 + 2*gt13L*Gt211*Gt322 + 2*gt13L*Gt311*Gt323 + - 2*Gt311*Gt312*gt33L - PDstandardNth12gt11) - gtu31*PDstandardNth13gt11 - + gt11L*PDstandardNth1Xt1 + gt12L*(4*Gt111*Gt212*gtu21 + - 2*Gt211*Gt222*gtu21 + 2*Gt212*Gt222*gtu22 + 4*Gt113*Gt211*gtu31 + - 4*Gt113*Gt212*gtu32 + 4*Gt113*Gt213*gtu33 + PDstandardNth1Xt2) + - gt13L*(4*Gt111*Gt312*gtu21 + 2*Gt212*Gt312*gtu21 + 4*Gt112*Gt312*gtu22 - + 4*Gt113*Gt311*gtu31 + 4*Gt113*Gt312*gtu32 + 4*Gt113*Gt313*gtu33 + + 2*Gt311*Gt312*gt33L - PDstandardNth12gt11) - gtu13*PDstandardNth13gt11 + + gt11L*PDstandardNth1Xt1 + gt12L*(4*Gt111*Gt212*gtu12 + + 2*Gt211*Gt222*gtu12 + 4*Gt113*Gt211*gtu13 + 4*Gt112*Gt212*gtu22 + + 4*Gt113*Gt212*gtu23 + 4*Gt113*Gt213*gtu33 + PDstandardNth1Xt2) + + gt13L*(4*Gt111*Gt312*gtu12 + 2*Gt212*Gt312*gtu12 + 4*Gt113*Gt311*gtu13 + + 2*Gt212*Gt322*gtu22 + 4*Gt113*Gt312*gtu23 + 4*Gt113*Gt313*gtu33 + PDstandardNth1Xt3) - gtu22*khalf*PDstandardNth22gt11 - - gtu32*PDstandardNth23gt11 - gtu33*khalf*PDstandardNth33gt11 + - Gt111*(6*Gt113*gt11L*gtu31 + 4*gt12L*Gt213*gtu31 + gt11L*Xt1L) + - Gt211*(2*Gt112*gt11L*gtu11 + 4*Gt111*gt12L*gtu11 + 2*gt11L*Gt122*gtu21 - + 2*gt11L*Gt123*gtu31 + gt12L*Xt1L) + Gt311*(4*Gt111*gt13L*gtu11 + - 2*gt12L*Gt213*gtu11 + 2*gt13L*Gt313*gtu11 + 2*gt11L*Gt123*gtu21 + - 2*gt11L*Gt133*gtu31 + gt13L*Xt1L) + gt12L*Gt212*Xt2L + gt13L*Gt312*Xt2L - + Gt112*(6*Gt111*gt11L*gtu21 + 4*gt12L*Gt211*gtu21 + - 4*gt12L*Gt212*gtu22 + 2*gt11L*Gt213*gtu31 + 6*Gt113*gt11L*gtu32 + - gt11L*Xt2L) + Gt113*gt11L*Xt3L + Gt213*(2*gt11L*Gt122*gtu32 + - 4*Gt112*gt12L*gtu32 + 2*gt11L*Gt123*gtu33 + gt12L*Xt3L) + - Gt313*(4*Gt111*gt13L*gtu31 + 2*gt12L*Gt213*gtu31 + 2*gt11L*Gt123*gtu32 - + 4*Gt112*gt13L*gtu32 + 2*gt12L*Gt223*gtu32 + 2*gt11L*Gt133*gtu33 + + gtu23*PDstandardNth23gt11 - gtu33*khalf*PDstandardNth33gt11 + + Gt111*(6*Gt113*gt11L*gtu13 + 4*gt12L*Gt213*gtu13 + gt11L*Xt1L) + + Gt211*(2*Gt112*gt11L*gtu11 + 4*Gt111*gt12L*gtu11 + 2*gt11L*Gt122*gtu12 + + 2*gt11L*Gt123*gtu13 + gt12L*Xt1L) + Gt311*(4*Gt111*gt13L*gtu11 + + 2*gt12L*Gt213*gtu11 + 2*gt13L*Gt313*gtu11 + 2*gt11L*Gt123*gtu12 + + 2*gt11L*Gt133*gtu13 + gt13L*Xt1L) + gt12L*Gt212*Xt2L + gt13L*Gt312*Xt2L + + Gt112*(6*Gt111*gt11L*gtu12 + 4*gt12L*Gt211*gtu12 + + 2*gt11L*Gt213*gtu13 + 4*gt13L*Gt312*gtu22 + 6*Gt113*gt11L*gtu23 + + gt11L*Xt2L) + Gt113*gt11L*Xt3L + Gt213*(2*gt11L*Gt122*gtu23 + + 4*Gt112*gt12L*gtu23 + 2*gt11L*Gt123*gtu33 + gt12L*Xt3L) + + Gt313*(4*Gt111*gt13L*gtu13 + 2*gt12L*Gt213*gtu13 + 2*gt11L*Gt123*gtu23 + + 4*Gt112*gt13L*gtu23 + 2*gt12L*Gt223*gtu23 + 2*gt11L*Gt133*gtu33 + gt13L*Xt3L) + 3*gt11L*gtu11*SQR(Gt111) + 3*gt11L*gtu22*SQR(Gt112) + 3*gt11L*gtu33*SQR(Gt113) + gt22L*gtu11*SQR(Gt211) + gt22L*gtu22*SQR(Gt212) + 2*(gt12L*Gt211*Gt212*gtu11 + Gt113*gt11L*Gt311*gtu11 + Gt211*gt23L*Gt311*gtu11 + - gt13L*Gt211*Gt312*gtu11 + Gt112*gt11L*Gt212*gtu21 + - gt12L*Gt223*Gt311*gtu21 + Gt212*gt23L*Gt311*gtu21 + - gt12L*Gt213*Gt312*gtu21 + Gt211*gt23L*Gt312*gtu21 + - gt11L*Gt122*Gt212*gtu22 + gt11L*Gt123*Gt312*gtu22 + + gt13L*Gt211*Gt312*gtu11 + Gt112*gt11L*Gt212*gtu12 + + gt12L*Gt223*Gt311*gtu12 + Gt212*gt23L*Gt311*gtu12 + + gt12L*Gt213*Gt312*gtu12 + Gt211*gt23L*Gt312*gtu12 + + gt12L*Gt212*Gt213*gtu13 + gt12L*Gt211*Gt223*gtu13 + + Gt211*Gt213*gt22L*gtu13 + gt12L*Gt233*Gt311*gtu13 + + Gt213*gt23L*Gt311*gtu13 + gt13L*Gt213*Gt312*gtu13 + + Gt113*gt11L*Gt313*gtu13 + Gt211*gt23L*Gt313*gtu13 + + gt13L*Gt211*Gt323*gtu13 + gt13L*Gt311*Gt333*gtu13 + + Gt311*Gt313*gt33L*gtu13 + gt11L*Gt122*Gt212*gtu22 + + gt12L*Gt212*Gt222*gtu22 + gt11L*Gt123*Gt312*gtu22 + gt12L*Gt223*Gt312*gtu22 + Gt212*gt23L*Gt312*gtu22 + - gt13L*Gt212*Gt322*gtu22 + gt13L*Gt312*Gt323*gtu22 + - gt12L*Gt212*Gt213*gtu31 + gt12L*Gt211*Gt223*gtu31 + - Gt211*Gt213*gt22L*gtu31 + gt12L*Gt233*Gt311*gtu31 + - Gt213*gt23L*Gt311*gtu31 + gt13L*Gt213*Gt312*gtu31 + - Gt113*gt11L*Gt313*gtu31 + Gt211*gt23L*Gt313*gtu31 + - gt13L*Gt211*Gt323*gtu31 + gt13L*Gt311*Gt333*gtu31 + - Gt311*Gt313*gt33L*gtu31 + gt11L*Gt123*Gt212*gtu32 + - gt12L*Gt213*Gt222*gtu32 + gt12L*Gt212*Gt223*gtu32 + - Gt212*Gt213*gt22L*gtu32 + gt11L*Gt133*Gt312*gtu32 + - gt12L*Gt233*Gt312*gtu32 + Gt213*gt23L*Gt312*gtu32 + - Gt212*gt23L*Gt313*gtu32 + gt13L*Gt213*Gt322*gtu32 + - gt13L*Gt212*Gt323*gtu32 + gt13L*Gt313*Gt323*gtu32 + - gt13L*Gt312*Gt333*gtu32 + Gt312*Gt313*gt33L*gtu32 + + gt13L*Gt312*Gt323*gtu22 + gt11L*Gt123*Gt212*gtu23 + + gt12L*Gt213*Gt222*gtu23 + gt12L*Gt212*Gt223*gtu23 + + Gt212*Gt213*gt22L*gtu23 + gt11L*Gt133*Gt312*gtu23 + + gt12L*Gt233*Gt312*gtu23 + Gt213*gt23L*Gt312*gtu23 + + Gt212*gt23L*Gt313*gtu23 + gt13L*Gt213*Gt322*gtu23 + + gt13L*Gt212*Gt323*gtu23 + gt13L*Gt313*Gt323*gtu23 + + gt13L*Gt312*Gt333*gtu23 + Gt312*Gt313*gt33L*gtu23 + gt12L*Gt213*Gt223*gtu33 + gt12L*Gt233*Gt313*gtu33 + Gt213*gt23L*Gt313*gtu33 + gt13L*Gt213*Gt323*gtu33 + - gt13L*Gt313*Gt333*gtu33 + gt12L*gtu21*SQR(Gt212)) + + gt13L*Gt313*Gt333*gtu33 + gt12L*gtu12*SQR(Gt212)) + gt22L*gtu33*SQR(Gt213) + gt33L*gtu11*SQR(Gt311) + - gt33L*gtu22*SQR(Gt312) + 2*gt13L*gtu31*SQR(Gt313) + + gt33L*gtu22*SQR(Gt312) + 2*gt13L*gtu13*SQR(Gt313) + gt33L*gtu33*SQR(Gt313); CCTK_REAL Rt12 = khalf*(-(gtu11*PDstandardNth11gt12) - - 2*gtu21*PDstandardNth12gt12 - 2*gtu31*PDstandardNth13gt12 + + 2*gtu12*PDstandardNth12gt12 - 2*gtu13*PDstandardNth13gt12 + gt12L*PDstandardNth1Xt1 + gt22L*PDstandardNth1Xt2 + gt23L*PDstandardNth1Xt3 - gtu22*PDstandardNth22gt12 - - 2*gtu32*PDstandardNth23gt12 + gt11L*PDstandardNth2Xt1 + + 2*gtu23*PDstandardNth23gt12 + gt11L*PDstandardNth2Xt1 + gt12L*PDstandardNth2Xt2 + gt13L*PDstandardNth2Xt3 - gtu33*PDstandardNth33gt12 + (Gt111*gt12L + Gt211*gt22L + gt23L*Gt311)*Xt1L + (Gt112*gt11L + gt12L*Gt212 + gt13L*Gt312)*Xt1L + (Gt112*gt12L + Gt212*gt22L + gt23L*Gt312)*Xt2L + (gt11L*Gt122 + gt12L*Gt222 + gt13L*Gt322)*Xt2L + (Gt113*gt12L + Gt213*gt22L + gt23L*Gt313)*Xt3L + (gt11L*Gt123 + gt12L*Gt223 + gt13L*Gt323)*Xt3L + - 2*gtu21*(Gt112*gt11L*Gt222 + Gt112*Gt211*gt22L + Gt211*Gt222*gt22L + + 2*gtu12*(Gt112*gt11L*Gt222 + Gt112*Gt211*gt22L + Gt211*Gt222*gt22L + 2*Gt122*gt13L*Gt311 + Gt112*gt23L*Gt311 + Gt222*gt23L*Gt311 + gt13L*Gt222*Gt312 + Gt213*gt22L*Gt312 + Gt212*gt23L*Gt312 + gt23L*Gt312*Gt313 + Gt113*gt11L*Gt322 + Gt211*gt23L*Gt322 + @@ -475,14 +499,14 @@ void ML_BSSN_constraints_Body(cGH const * restrict const cctkGH, int const dir, Gt123*Gt212 + Gt133*Gt312) + 2*Gt112*gt13L*Gt313 + Gt212*gt23L*Gt313 + Gt111*(Gt113*gt12L + Gt213*gt22L + gt23L*Gt313) + gt13L*Gt212*Gt323 + Gt211*gt23L*Gt323 + gt23L*Gt311*Gt333 + gt13L*Gt312*Gt333 + - Gt312*Gt313*gt33L)*gtu31 + (Gt123*gt12L*Gt212 + 2*Gt122*gt12L*Gt213 + + Gt312*Gt313*gt33L)*gtu13 + (Gt123*gt12L*Gt212 + 2*Gt122*gt12L*Gt213 + Gt113*gt12L*Gt222 + gt12L*Gt222*Gt223 + Gt213*Gt222*gt22L + Gt212*Gt223*gt22L + gt12L*Gt133*Gt312 + gt22L*Gt233*Gt312 + 2*Gt122*gt13L*Gt313 + Gt222*gt23L*Gt313 + Gt112*(Gt113*gt12L + Gt213*gt22L + gt23L*Gt313) + Gt113*gt13L*Gt322 + gt12L*Gt233*Gt322 + Gt213*gt23L*Gt322 + gt11L*(2*Gt113*Gt122 + Gt123*Gt222 + Gt133*Gt322) + gt13L*Gt222*Gt323 + Gt212*gt23L*Gt323 + gt23L*Gt312*Gt333 + - gt13L*Gt322*Gt333 + Gt313*Gt322*gt33L)*gtu32 + + gt13L*Gt322*Gt333 + Gt313*Gt322*gt33L)*gtu23 + gtu11*(3*Gt112*gt12L*Gt211 + 2*Gt211*Gt212*gt22L + Gt113*gt12L*Gt311 + 2*Gt112*gt13L*Gt311 + Gt213*gt22L*Gt311 + Gt212*gt23L*Gt311 + gt13L*Gt212*Gt312 + gt12L*Gt213*Gt312 + 2*Gt211*gt23L*Gt312 + @@ -501,21 +525,21 @@ void ML_BSSN_constraints_Body(cGH const * restrict const cctkGH, int const dir, 2*Gt213*gt23L*Gt323 + Gt113*(2*gt11L*Gt123 + gt12L*Gt223 + Gt213*gt22L + gt23L*Gt313 + gt13L*Gt323) + gt23L*Gt313*Gt333 + gt13L*Gt323*Gt333 + Gt313*Gt323*gt33L + gt12L*SQR(Gt113) + gt12L*(3*Gt123*Gt213 + - Gt133*Gt313 + Gt233*Gt323 + SQR(Gt223))) + 2*gtu21*(Gt122*gt12L*Gt211 + + Gt133*Gt313 + Gt233*Gt323 + SQR(Gt223))) + 2*gtu12*(Gt122*gt12L*Gt211 + 3*Gt112*gt12L*Gt212 + gt12L*Gt212*Gt222 + Gt211*Gt222*gt22L + Gt123*gt12L*Gt311 + Gt223*gt22L*Gt311 + 3*Gt112*gt13L*Gt312 + gt12L*Gt223*Gt312 + 2*Gt212*gt23L*Gt312 + Gt111*(Gt112*gt12L + Gt212*gt22L + gt23L*Gt312) + gt13L*Gt212*Gt322 + Gt211*gt23L*Gt322 + gt23L*Gt311*Gt323 + gt13L*Gt312*Gt323 + gt11L*(Gt122*Gt212 + Gt123*Gt312 + 2*SQR(Gt112)) + gt22L*SQR(Gt212) + gt33L*SQR(Gt312)) + - 2*gtu31*(Gt112*gt11L*Gt223 + Gt113*Gt211*gt22L + Gt212*Gt213*gt22L + + 2*gtu13*(Gt112*gt11L*Gt223 + Gt113*Gt211*gt22L + Gt212*Gt213*gt22L + Gt211*Gt223*gt22L + 2*Gt123*gt13L*Gt311 + Gt113*gt23L*Gt311 + Gt223*gt23L*Gt311 + gt13L*Gt223*Gt312 + Gt213*gt23L*Gt312 + Gt213*gt22L*Gt313 + Gt113*gt11L*Gt323 + Gt211*gt23L*Gt323 + gt13L*Gt313*Gt323 + Gt111*(2*gt11L*Gt123 + Gt113*gt12L + gt12L*Gt223 + gt13L*Gt323) + gt12L*(2*Gt123*Gt211 + Gt112*Gt213 + Gt212*Gt223 + Gt113*Gt313 + Gt213*Gt323) + Gt311*Gt323*gt33L + gt23L*SQR(Gt313)) + - 2*gtu32*(gt11L*Gt122*Gt223 + Gt113*Gt212*gt22L + Gt213*Gt222*gt22L + + 2*gtu23*(gt11L*Gt122*Gt223 + Gt113*Gt212*gt22L + Gt213*Gt222*gt22L + Gt212*Gt223*gt22L + 2*Gt123*gt13L*Gt312 + Gt113*gt23L*Gt312 + Gt223*gt23L*Gt312 + Gt223*gt22L*Gt313 + gt13L*Gt223*Gt322 + Gt213*gt23L*Gt322 + gt11L*Gt123*Gt323 + Gt212*gt23L*Gt323 + @@ -524,10 +548,10 @@ void ML_BSSN_constraints_Body(cGH const * restrict const cctkGH, int const dir, Gt223*(Gt222 + Gt323)) + Gt312*Gt323*gt33L + gt13L*SQR(Gt323))); CCTK_REAL Rt13 = khalf*(-(gtu11*PDstandardNth11gt13) - - 2*gtu21*PDstandardNth12gt13 - 2*gtu31*PDstandardNth13gt13 + + 2*gtu12*PDstandardNth12gt13 - 2*gtu13*PDstandardNth13gt13 + gt13L*PDstandardNth1Xt1 + gt23L*PDstandardNth1Xt2 + gt33L*PDstandardNth1Xt3 - gtu22*PDstandardNth22gt13 - - 2*gtu32*PDstandardNth23gt13 - gtu33*PDstandardNth33gt13 + + 2*gtu23*PDstandardNth23gt13 - gtu33*PDstandardNth33gt13 + gt11L*PDstandardNth3Xt1 + gt12L*PDstandardNth3Xt2 + gt13L*PDstandardNth3Xt3 + (Gt113*gt11L + gt12L*Gt213 + gt13L*Gt313)*Xt1L + (Gt111*gt13L + Gt211*gt23L + Gt311*gt33L)*Xt1L + @@ -541,22 +565,22 @@ void ML_BSSN_constraints_Body(cGH const * restrict const cctkGH, int const dir, Gt212*gt23L*Gt313 + gt11L*(2*Gt112*Gt113 + Gt122*Gt213 + Gt123*Gt313) + gt13L*Gt213*Gt322 + gt13L*Gt313*Gt323 + Gt312*Gt313*gt33L + Gt211*Gt322*gt33L + Gt311*Gt323*gt33L + Gt111*(Gt112*gt13L + - Gt212*gt23L + Gt312*gt33L))*gtu21 + (Gt122*gt13L*Gt213 + + Gt212*gt23L + Gt312*gt33L))*gtu12 + (Gt122*gt13L*Gt213 + gt11L*Gt122*Gt233 + Gt212*gt22L*Gt233 + Gt113*Gt212*gt23L + Gt213*Gt222*gt23L + 2*Gt133*gt13L*Gt312 + Gt233*gt23L*Gt312 + Gt123*gt13L*Gt313 + Gt223*gt23L*Gt313 + gt13L*Gt233*Gt322 + gt11L*Gt123*Gt333 + Gt212*gt23L*Gt333 + gt13L*Gt323*Gt333 + Gt112*(2*gt11L*Gt133 + Gt113*gt13L + gt12L*Gt233 + gt13L*Gt333) + gt12L*(2*Gt133*Gt212 + Gt222*Gt233 + Gt223*Gt333) + Gt113*Gt312*gt33L + - Gt213*Gt322*gt33L + Gt313*Gt323*gt33L + Gt312*Gt333*gt33L)*gtu32 + - gtu21*(2*Gt123*gt12L*Gt211 + Gt112*gt13L*Gt212 + gt12L*Gt212*Gt223 + + Gt213*Gt322*gt33L + Gt313*Gt323*gt33L + Gt312*Gt333*gt33L)*gtu23 + + gtu12*(2*Gt123*gt12L*Gt211 + Gt112*gt13L*Gt212 + gt12L*Gt212*Gt223 + Gt211*Gt223*gt22L + Gt112*Gt211*gt23L + 2*Gt123*gt13L*Gt311 + Gt223*gt23L*Gt311 + Gt113*gt13L*Gt312 + gt13L*Gt223*Gt312 + Gt213*gt23L*Gt312 + gt12L*Gt213*Gt323 + Gt211*gt23L*Gt323 + gt13L*Gt313*Gt323 + gt11L*(2*Gt111*Gt123 + Gt112*Gt223 + Gt113*Gt323) + Gt111*(Gt112*gt13L + gt12L*Gt223 + gt13L*Gt323) + Gt112*Gt311*gt33L + Gt212*Gt312*gt33L + Gt312*Gt313*gt33L + Gt311*Gt323*gt33L + - gt23L*SQR(Gt212))) + 2*gtu32*(Gt123*gt13L*Gt212 + 2*Gt123*gt12L*Gt213 + + gt23L*SQR(Gt212))) + 2*gtu23*(Gt123*gt13L*Gt212 + 2*Gt123*gt12L*Gt213 + Gt113*gt12L*Gt223 + Gt213*Gt223*gt22L + Gt212*Gt223*gt23L + Gt133*gt13L*Gt312 + Gt233*gt23L*Gt312 + 2*Gt123*gt13L*Gt313 + Gt223*gt23L*Gt313 + Gt113*gt13L*Gt323 + gt13L*Gt223*Gt323 + @@ -570,14 +594,14 @@ void ML_BSSN_constraints_Body(cGH const * restrict const cctkGH, int const dir, Gt211*gt23L*Gt313 + gt11L*(2*Gt111*Gt113 + Gt112*Gt213 + Gt113*Gt313) + Gt211*Gt312*gt33L + 2*Gt311*Gt313*gt33L + Gt111*(gt12L*Gt213 + Gt211*gt23L + gt13L*Gt313 + Gt311*gt33L) + gt13L*SQR(Gt111) + - gt13L*SQR(Gt313)) + 2*gtu31*(Gt112*gt13L*Gt213 + Gt112*gt11L*Gt233 + + gt13L*SQR(Gt313)) + 2*gtu13*(Gt112*gt13L*Gt213 + Gt112*gt11L*Gt233 + Gt211*gt22L*Gt233 + Gt113*Gt211*gt23L + Gt212*Gt213*gt23L + 2*Gt133*gt13L*Gt311 + Gt233*gt23L*Gt311 + gt13L*Gt233*Gt312 + Gt113*gt13L*Gt313 + Gt213*gt23L*Gt313 + Gt113*gt11L*Gt333 + Gt211*gt23L*Gt333 + gt13L*Gt313*Gt333 + Gt111*(2*gt11L*Gt133 + Gt113*gt13L + gt12L*Gt233 + gt13L*Gt333) + gt12L*(2*Gt133*Gt211 + Gt212*Gt233 + Gt213*Gt333) + Gt113*Gt311*gt33L + Gt213*Gt312*gt33L + - Gt311*Gt333*gt33L + gt33L*SQR(Gt313)) + 2*gtu31*(Gt123*gt13L*Gt211 + + Gt311*Gt333*gt33L + gt33L*SQR(Gt313)) + 2*gtu13*(Gt123*gt13L*Gt211 + 3*Gt113*gt12L*Gt213 + gt12L*Gt213*Gt223 + Gt211*Gt223*gt23L + Gt133*gt13L*Gt311 + Gt233*gt23L*Gt311 + 3*Gt113*gt13L*Gt313 + gt12L*Gt233*Gt313 + 2*Gt213*gt23L*Gt313 + gt13L*Gt213*Gt323 + @@ -598,58 +622,58 @@ void ML_BSSN_constraints_Body(cGH const * restrict const cctkGH, int const dir, Gt113*(2*gt11L*Gt133 + gt12L*Gt233 + Gt213*gt23L + gt13L*Gt333 + Gt313*gt33L) + gt13L*SQR(Gt113) + gt13L*SQR(Gt333))); - CCTK_REAL Rt22 = 4*(Gt122*gt12L*Gt212*gtu21 + Gt112*gt12L*Gt222*gtu21 - + Gt122*gt12L*Gt222*gtu22 + Gt123*gt12L*Gt212*gtu31 + - Gt123*gt12L*Gt222*gtu32 + Gt123*gt12L*Gt223*gtu33) - - gtu11*khalf*PDstandardNth11gt22 + gtu21*(6*Gt212*Gt222*gt22L + + CCTK_REAL Rt22 = 4*(Gt122*gt12L*Gt212*gtu12 + Gt112*gt12L*Gt222*gtu12 + + Gt123*gt12L*Gt212*gtu13 + Gt122*gt12L*Gt222*gtu22 + + Gt123*gt12L*Gt222*gtu23 + Gt123*gt12L*Gt223*gtu33) - + gtu11*khalf*PDstandardNth11gt22 + gtu12*(6*Gt212*Gt222*gt22L + 2*Gt122*gt23L*Gt311 + 2*Gt122*gt13L*Gt312 + 4*Gt222*gt23L*Gt312 + 2*Gt113*gt12L*Gt322 + 2*gt23L*Gt312*Gt323 + 2*Gt312*Gt322*gt33L - - PDstandardNth12gt22) + gtu31*(6*Gt212*Gt223*gt22L + 2*Gt123*gt13L*Gt312 + PDstandardNth12gt22) + gtu13*(6*Gt212*Gt223*gt22L + 2*Gt123*gt13L*Gt312 + 2*Gt112*gt23L*Gt313 + 2*Gt113*gt12L*Gt323 + 2*gt23L*Gt312*Gt333 + 2*Gt312*Gt323*gt33L - PDstandardNth13gt22) - - gtu22*khalf*PDstandardNth22gt22 + gtu32*(4*Gt122*gt12L*Gt223 + + gtu22*khalf*PDstandardNth22gt22 + gtu23*(4*Gt122*gt12L*Gt223 + 2*Gt123*Gt212*gt22L + 2*gt12L*Gt133*Gt322 + 4*Gt223*gt23L*Gt322 + 2*Gt123*gt12L*Gt323 + 4*Gt222*gt23L*Gt323 + 2*gt23L*Gt322*Gt333 + - 2*Gt322*Gt323*gt33L - PDstandardNth23gt22) + gt12L*(2*Gt111*Gt123*gtu31 - + 4*Gt112*Gt223*gtu31 + 2*Gt113*Gt122*gtu32 + 2*Gt113*Gt123*gtu33 + - PDstandardNth2Xt1) + gt22L*(2*Gt122*Gt213*gtu32 + 6*Gt222*Gt223*gtu32 + - 2*Gt123*Gt213*gtu33 + PDstandardNth2Xt2) + gt23L*(4*Gt212*Gt322*gtu21 + - 2*Gt313*Gt322*gtu21 + 4*Gt222*Gt322*gtu22 + 2*Gt123*Gt311*gtu31 + - 4*Gt212*Gt323*gtu31 + 2*Gt313*Gt323*gtu31 + 2*Gt122*Gt313*gtu32 + - 2*Gt123*Gt313*gtu33 + 4*Gt223*Gt323*gtu33 + 2*Gt323*Gt333*gtu33 + - PDstandardNth2Xt3) - gtu33*khalf*PDstandardNth33gt22 + Gt212*gt22L*Xt1L - + Gt112*(2*Gt111*gt12L*gtu11 + 4*gt12L*Gt212*gtu11 + - 2*gt11L*Gt122*gtu21 + 2*Gt122*gt12L*gtu22 + 2*gt11L*Gt123*gtu31 + - 2*Gt123*gt12L*gtu32 + gt12L*Xt1L) + Gt312*(2*Gt213*gt22L*gtu11 + - 4*Gt212*gt23L*gtu11 + 2*gt23L*Gt313*gtu11 + 2*Gt123*gt12L*gtu21 + - 2*Gt122*gt23L*gtu22 + 2*gt12L*Gt133*gtu31 + 2*gt22L*Gt233*gtu31 + - 4*Gt223*gt23L*gtu31 + 2*Gt123*gt23L*gtu32 + gt23L*Xt1L) + - Gt122*gt12L*Xt2L + Gt222*gt22L*Xt2L + gt23L*Gt322*Xt2L + - Gt123*gt12L*Xt3L + Gt223*gt22L*Xt3L + gt23L*Gt323*Xt3L + - gt11L*gtu11*SQR(Gt112) + 2*(Gt112*Gt211*gt22L*gtu11 + - Gt112*gt23L*Gt311*gtu11 + Gt113*gt12L*Gt312*gtu11 + - Gt112*gt13L*Gt312*gtu11 + Gt111*Gt122*gt12L*gtu21 + - Gt122*Gt211*gt22L*gtu21 + Gt112*Gt212*gt22L*gtu21 + - Gt223*gt22L*Gt312*gtu21 + Gt112*gt23L*Gt312*gtu21 + - Gt112*gt13L*Gt322*gtu21 + Gt213*gt22L*Gt322*gtu21 + - Gt122*Gt212*gt22L*gtu22 + Gt123*gt12L*Gt322*gtu22 + + 2*Gt322*Gt323*gt33L - PDstandardNth23gt22) + gt12L*(2*Gt111*Gt123*gtu13 + + 4*Gt112*Gt223*gtu13 + 2*Gt123*Gt322*gtu22 + 2*Gt113*Gt122*gtu23 + + 2*Gt113*Gt123*gtu33 + PDstandardNth2Xt1) + gt22L*(2*Gt122*Gt213*gtu23 + + 6*Gt222*Gt223*gtu23 + 2*Gt123*Gt213*gtu33 + PDstandardNth2Xt2) + + gt23L*(4*Gt212*Gt322*gtu12 + 2*Gt313*Gt322*gtu12 + 2*Gt123*Gt311*gtu13 + + 4*Gt212*Gt323*gtu13 + 2*Gt313*Gt323*gtu13 + 4*Gt222*Gt322*gtu22 + + 2*Gt122*Gt313*gtu23 + 2*Gt123*Gt313*gtu33 + 4*Gt223*Gt323*gtu33 + + 2*Gt323*Gt333*gtu33 + PDstandardNth2Xt3) - + gtu33*khalf*PDstandardNth33gt22 + Gt212*gt22L*Xt1L + + Gt112*(2*Gt111*gt12L*gtu11 + 4*gt12L*Gt212*gtu11 + 2*gt11L*Gt122*gtu12 + + 2*gt11L*Gt123*gtu13 + 2*Gt122*gt12L*gtu22 + 2*Gt123*gt12L*gtu23 + + gt12L*Xt1L) + Gt312*(2*Gt213*gt22L*gtu11 + 4*Gt212*gt23L*gtu11 + + 2*gt23L*Gt313*gtu11 + 2*Gt123*gt12L*gtu12 + 2*gt12L*Gt133*gtu13 + + 2*gt22L*Gt233*gtu13 + 4*Gt223*gt23L*gtu13 + 2*Gt122*gt23L*gtu22 + + 2*Gt123*gt23L*gtu23 + gt23L*Xt1L) + Gt122*gt12L*Xt2L + Gt222*gt22L*Xt2L + + gt23L*Gt322*Xt2L + Gt123*gt12L*Xt3L + Gt223*gt22L*Xt3L + + gt23L*Gt323*Xt3L + gt11L*gtu11*SQR(Gt112) + 2*(Gt112*Gt211*gt22L*gtu11 + + Gt112*gt23L*Gt311*gtu11 + Gt113*gt12L*Gt312*gtu11 + + Gt112*gt13L*Gt312*gtu11 + Gt111*Gt122*gt12L*gtu12 + + Gt122*Gt211*gt22L*gtu12 + Gt112*Gt212*gt22L*gtu12 + + Gt223*gt22L*Gt312*gtu12 + Gt112*gt23L*Gt312*gtu12 + + Gt112*gt13L*Gt322*gtu12 + Gt213*gt22L*Gt322*gtu12 + + Gt112*Gt113*gt12L*gtu13 + Gt123*Gt211*gt22L*gtu13 + + Gt112*Gt213*gt22L*gtu13 + Gt112*gt13L*Gt323*gtu13 + + Gt213*gt22L*Gt323*gtu13 + Gt122*Gt212*gt22L*gtu22 + Gt122*gt13L*Gt322*gtu22 + Gt223*gt22L*Gt322*gtu22 + - gt23L*Gt322*Gt323*gtu22 + Gt112*Gt113*gt12L*gtu31 + - Gt123*Gt211*gt22L*gtu31 + Gt112*Gt213*gt22L*gtu31 + - Gt112*gt13L*Gt323*gtu31 + Gt213*gt22L*Gt323*gtu31 + - gt11L*Gt122*Gt123*gtu32 + Gt123*gt13L*Gt322*gtu32 + - gt22L*Gt233*Gt322*gtu32 + Gt122*gt13L*Gt323*gtu32 + - Gt223*gt22L*Gt323*gtu32 + gt12L*Gt133*Gt323*gtu33 + - Gt123*gt13L*Gt323*gtu33 + gt22L*Gt233*Gt323*gtu33 + - gt12L*gtu21*SQR(Gt112)) + gt11L*gtu22*SQR(Gt122) + - gt11L*gtu33*SQR(Gt123) + 3*gt22L*gtu11*SQR(Gt212) + - 3*gt22L*gtu22*SQR(Gt222) + 3*gt22L*gtu33*SQR(Gt223) + - gt33L*gtu11*SQR(Gt312) + gt33L*gtu22*SQR(Gt322) + - 2*gt23L*gtu32*SQR(Gt323) + gt33L*gtu33*SQR(Gt323); + gt23L*Gt322*Gt323*gtu22 + gt11L*Gt122*Gt123*gtu23 + + Gt123*gt13L*Gt322*gtu23 + gt22L*Gt233*Gt322*gtu23 + + Gt122*gt13L*Gt323*gtu23 + Gt223*gt22L*Gt323*gtu23 + + gt12L*Gt133*Gt323*gtu33 + Gt123*gt13L*Gt323*gtu33 + + gt22L*Gt233*Gt323*gtu33 + gt12L*gtu12*SQR(Gt112)) + + gt11L*gtu22*SQR(Gt122) + gt11L*gtu33*SQR(Gt123) + + 3*gt22L*gtu11*SQR(Gt212) + 3*gt22L*gtu22*SQR(Gt222) + + 3*gt22L*gtu33*SQR(Gt223) + gt33L*gtu11*SQR(Gt312) + + gt33L*gtu22*SQR(Gt322) + 2*gt23L*gtu23*SQR(Gt323) + + gt33L*gtu33*SQR(Gt323); CCTK_REAL Rt23 = khalf*(-(gtu11*PDstandardNth11gt23) - - 2*gtu21*PDstandardNth12gt23 - 2*gtu31*PDstandardNth13gt23 - - gtu22*PDstandardNth22gt23 - 2*gtu32*PDstandardNth23gt23 + + 2*gtu12*PDstandardNth12gt23 - 2*gtu13*PDstandardNth13gt23 - + gtu22*PDstandardNth22gt23 - 2*gtu23*PDstandardNth23gt23 + gt13L*PDstandardNth2Xt1 + gt23L*PDstandardNth2Xt2 + gt33L*PDstandardNth2Xt3 - gtu33*PDstandardNth33gt23 + gt12L*PDstandardNth3Xt1 + gt22L*PDstandardNth3Xt2 + @@ -665,7 +689,7 @@ void ML_BSSN_constraints_Body(cGH const * restrict const cctkGH, int const dir, 2*Gt223*gt23L*Gt312 + Gt113*gt13L*Gt322 + Gt213*gt23L*Gt322 + Gt113*gt12L*Gt323 + Gt112*gt13L*Gt323 + Gt213*gt22L*Gt323 + Gt212*gt23L*Gt323 + gt23L*Gt313*Gt323 + Gt122*Gt311*gt33L + - Gt222*Gt312*gt33L + Gt313*Gt322*gt33L + Gt312*Gt323*gt33L)*gtu21 + + Gt222*Gt312*gt33L + Gt313*Gt322*gt33L + Gt312*Gt323*gt33L)*gtu12 + (Gt112*gt11L*Gt133 + Gt111*gt12L*Gt133 + Gt111*Gt123*gt13L + gt12L*Gt133*Gt212 + Gt112*gt13L*Gt223 + Gt133*Gt211*gt22L + 2*Gt112*gt12L*Gt233 + 2*Gt212*gt22L*Gt233 + Gt123*Gt211*gt23L + @@ -673,8 +697,8 @@ void ML_BSSN_constraints_Body(cGH const * restrict const cctkGH, int const dir, 2*Gt233*gt23L*Gt312 + Gt113*gt13L*Gt323 + Gt213*gt23L*Gt323 + Gt113*gt12L*Gt333 + Gt112*gt13L*Gt333 + Gt213*gt22L*Gt333 + Gt212*gt23L*Gt333 + gt23L*Gt313*Gt333 + Gt123*Gt311*gt33L + - Gt223*Gt312*gt33L + Gt313*Gt323*gt33L + Gt312*Gt333*gt33L)*gtu31 + - gtu21*(Gt113*gt11L*Gt122 + Gt122*gt13L*Gt212 + 2*Gt122*gt12L*Gt213 + + Gt223*Gt312*gt33L + Gt313*Gt323*gt33L + Gt312*Gt333*gt33L)*gtu13 + + gtu12*(Gt113*gt11L*Gt122 + Gt122*gt13L*Gt212 + 2*Gt122*gt12L*Gt213 + Gt113*gt12L*Gt222 + Gt113*Gt212*gt22L + 2*Gt213*Gt222*gt22L + Gt212*Gt222*gt23L + Gt123*gt13L*Gt312 + Gt113*gt23L*Gt312 + Gt223*gt23L*Gt312 + Gt123*gt12L*Gt313 + Gt122*gt13L*Gt313 + @@ -682,7 +706,7 @@ void ML_BSSN_constraints_Body(cGH const * restrict const cctkGH, int const dir, 2*Gt213*gt23L*Gt322 + gt23L*Gt313*Gt323 + Gt212*Gt322*gt33L + Gt313*Gt322*gt33L + Gt312*Gt323*gt33L + Gt112*(Gt113*gt12L + Gt212*gt23L + Gt312*gt33L) + gt13L*SQR(Gt112))) + - 2*gtu31*(2*Gt213*Gt223*gt22L + Gt112*Gt213*gt23L + Gt212*Gt223*gt23L + + 2*gtu13*(2*Gt213*Gt223*gt22L + Gt112*Gt213*gt23L + Gt212*Gt223*gt23L + Gt133*gt13L*Gt312 + Gt233*gt23L*Gt312 + gt12L*Gt133*Gt313 + gt22L*Gt233*Gt313 + Gt223*gt23L*Gt313 + Gt123*(2*gt12L*Gt213 + gt13L*(Gt212 + Gt313)) + 2*Gt213*gt23L*Gt323 + Gt113*(gt11L*Gt123 + @@ -703,7 +727,7 @@ void ML_BSSN_constraints_Body(cGH const * restrict const cctkGH, int const dir, Gt123*gt12L*Gt323 + Gt122*gt13L*Gt323 + Gt223*gt22L*Gt323 + Gt222*gt23L*Gt323 + Gt122*Gt312*gt33L + Gt222*Gt322*gt33L + 2*Gt322*Gt323*gt33L + gt23L*SQR(Gt222) + gt23L*SQR(Gt323)) + - 2*gtu32*(gt11L*Gt122*Gt133 + Gt112*gt12L*Gt133 + Gt112*Gt123*gt13L + + 2*gtu23*(gt11L*Gt122*Gt133 + Gt112*gt12L*Gt133 + Gt112*Gt123*gt13L + gt12L*Gt133*Gt222 + Gt122*gt13L*Gt223 + Gt133*Gt212*gt22L + 2*Gt122*gt12L*Gt233 + 2*Gt222*gt22L*Gt233 + Gt123*Gt212*gt23L + Gt222*Gt223*gt23L + Gt133*gt23L*Gt312 + Gt133*gt13L*Gt322 + @@ -711,7 +735,7 @@ void ML_BSSN_constraints_Body(cGH const * restrict const cctkGH, int const dir, Gt123*gt12L*Gt333 + Gt122*gt13L*Gt333 + Gt223*gt22L*Gt333 + Gt222*gt23L*Gt333 + gt23L*Gt323*Gt333 + Gt123*Gt312*gt33L + Gt223*Gt322*gt33L + Gt322*Gt333*gt33L + gt33L*SQR(Gt323)) + - 2*gtu32*(Gt113*Gt123*gt12L + Gt113*Gt122*gt13L + Gt123*gt13L*Gt222 + + 2*gtu23*(Gt113*Gt123*gt12L + Gt113*Gt122*gt13L + Gt123*gt13L*Gt222 + 3*Gt123*gt12L*Gt223 + Gt123*Gt213*gt22L + Gt122*Gt213*gt23L + Gt222*Gt223*gt23L + Gt123*gt23L*Gt313 + Gt133*gt13L*Gt322 + Gt233*gt23L*Gt322 + gt12L*Gt133*Gt323 + 2*Gt123*gt13L*Gt323 + @@ -726,57 +750,56 @@ void ML_BSSN_constraints_Body(cGH const * restrict const cctkGH, int const dir, Gt223*gt23L*Gt333 + Gt123*Gt313*gt33L + Gt223*Gt323*gt33L + 2*Gt323*Gt333*gt33L + gt23L*SQR(Gt223) + gt23L*SQR(Gt333))); - CCTK_REAL Rt33 = 4*(Gt123*gt13L*Gt323*gtu22 + Gt223*gt23L*Gt323*gtu22 - + Gt133*gt13L*Gt313*gtu31 + Gt233*gt23L*Gt313*gtu31 + - Gt113*gt13L*Gt333*gtu31 + Gt133*gt13L*Gt323*gtu32 + - Gt233*gt23L*Gt323*gtu32 + Gt123*gt13L*Gt333*gtu32 + - Gt133*gt13L*Gt333*gtu33) + gtu21*(2*Gt212*Gt223*gt23L + + CCTK_REAL Rt33 = 4*(Gt133*gt13L*Gt313*gtu13 + Gt233*gt23L*Gt313*gtu13 + + Gt113*gt13L*Gt333*gtu13 + Gt213*gt23L*Gt333*gtu13 + + Gt123*gt13L*Gt323*gtu22 + Gt133*gt13L*Gt323*gtu23 + + Gt123*gt13L*Gt333*gtu23 + Gt223*gt23L*Gt333*gtu23 + + Gt133*gt13L*Gt333*gtu33) + gtu12*(2*Gt212*Gt223*gt23L + 4*Gt123*gt13L*Gt313 + 4*Gt223*gt23L*Gt313 + 4*Gt113*gt13L*Gt323 + - 4*Gt213*gt23L*Gt323 + 2*Gt123*Gt311*gt33L - PDstandardNth12gt33) + - gtu31*(4*Gt213*gt23L*Gt333 + 2*Gt233*Gt312*gt33L + 6*Gt313*Gt333*gt33L - - PDstandardNth13gt33) - gtu22*khalf*PDstandardNth22gt33 + - gtu32*(4*Gt223*gt23L*Gt333 + 2*Gt123*Gt313*gt33L + 6*Gt323*Gt333*gt33L - - PDstandardNth23gt33) - gtu33*khalf*PDstandardNth33gt33 + + 4*Gt213*gt23L*Gt323 + 2*Gt123*Gt311*gt33L - PDstandardNth12gt33) - + gtu13*PDstandardNth13gt33 - gtu22*khalf*PDstandardNth22gt33 - + gtu23*PDstandardNth23gt33 - gtu33*khalf*PDstandardNth33gt33 + gt13L*PDstandardNth3Xt1 + gt23L*PDstandardNth3Xt2 + - gt33L*(2*Gt213*Gt322*gtu21 + 6*Gt313*Gt323*gtu21 + 2*Gt123*Gt312*gtu22 - + 2*Gt133*Gt311*gtu31 + 2*Gt133*Gt312*gtu32 + 2*Gt133*Gt313*gtu33 + - PDstandardNth3Xt3) + Gt113*gt13L*Xt1L + Gt213*gt23L*Xt1L + - Gt313*gt33L*Xt1L + Gt123*gt13L*Xt2L + Gt223*gt23L*Xt2L + - Gt323*gt33L*Xt2L + Gt133*gt13L*Xt3L + Gt333*gt33L*Xt3L + - Gt233*(4*gt23L*Gt333*gtu33 + 2*Gt323*gt33L*gtu33 + gt23L*Xt3L) + - gtu11*(2*Gt212*Gt213*gt23L + 4*Gt113*gt13L*Gt313 + 4*Gt213*gt23L*Gt313 - + 2*Gt113*Gt311*gt33L + 2*Gt213*Gt312*gt33L - khalf*PDstandardNth11gt33 - + gt11L*SQR(Gt113)) + 2*(Gt111*Gt113*gt13L*gtu11 + - Gt113*gt12L*Gt213*gtu11 + Gt112*gt13L*Gt213*gtu11 + - Gt113*Gt211*gt23L*gtu11 + Gt113*gt11L*Gt123*gtu21 + - Gt112*Gt113*gt13L*gtu21 + Gt111*Gt123*gt13L*gtu21 + - Gt123*gt12L*Gt213*gtu21 + Gt122*gt13L*Gt213*gtu21 + - Gt113*gt12L*Gt223*gtu21 + Gt112*gt13L*Gt223*gtu21 + - Gt213*Gt223*gt22L*gtu21 + Gt123*Gt211*gt23L*gtu21 + - Gt113*Gt212*gt23L*gtu21 + Gt213*Gt222*gt23L*gtu21 + - Gt113*Gt312*gt33L*gtu21 + Gt223*Gt312*gt33L*gtu21 + + gt33L*(2*Gt213*Gt322*gtu12 + 6*Gt313*Gt323*gtu12 + 2*Gt133*Gt311*gtu13 + + 2*Gt213*Gt323*gtu13 + 6*Gt313*Gt333*gtu13 + 2*Gt123*Gt312*gtu22 + + 2*Gt133*Gt312*gtu23 + 2*Gt133*Gt313*gtu33 + PDstandardNth3Xt3) + + Gt113*gt13L*Xt1L + Gt213*gt23L*Xt1L + Gt313*gt33L*Xt1L + + Gt123*gt13L*Xt2L + Gt223*(4*gt23L*Gt323*gtu22 + 2*Gt322*gt33L*gtu22 + + 2*gt12L*Gt133*gtu23 + 2*Gt233*gt23L*gtu33 + gt23L*Xt2L) + + Gt323*(2*Gt223*gt33L*gtu23 + 6*Gt333*gt33L*gtu23 + 2*Gt233*gt33L*gtu33 + + gt33L*Xt2L) + Gt133*gt13L*Xt3L + Gt333*gt33L*Xt3L + + Gt233*(2*Gt222*gt23L*gtu23 + 4*gt23L*Gt323*gtu23 + 2*gt12L*Gt133*gtu33 + + 4*gt23L*Gt333*gtu33 + gt23L*Xt3L) + gtu11*(2*Gt212*Gt213*gt23L + + 4*Gt113*gt13L*Gt313 + 4*Gt213*gt23L*Gt313 + 2*Gt113*Gt311*gt33L + + 2*Gt213*Gt312*gt33L - khalf*PDstandardNth11gt33 + gt11L*SQR(Gt113)) + + 2*(Gt111*Gt113*gt13L*gtu11 + Gt113*gt12L*Gt213*gtu11 + + Gt112*gt13L*Gt213*gtu11 + Gt113*Gt211*gt23L*gtu11 + + Gt113*gt11L*Gt123*gtu12 + Gt112*Gt113*gt13L*gtu12 + + Gt111*Gt123*gt13L*gtu12 + Gt123*gt12L*Gt213*gtu12 + + Gt122*gt13L*Gt213*gtu12 + Gt113*gt12L*Gt223*gtu12 + + Gt112*gt13L*Gt223*gtu12 + Gt213*Gt223*gt22L*gtu12 + + Gt123*Gt211*gt23L*gtu12 + Gt113*Gt212*gt23L*gtu12 + + Gt213*Gt222*gt23L*gtu12 + Gt113*Gt312*gt33L*gtu12 + + Gt223*Gt312*gt33L*gtu12 + Gt113*gt11L*Gt133*gtu13 + + Gt111*Gt133*gt13L*gtu13 + gt12L*Gt133*Gt213*gtu13 + + Gt123*gt13L*Gt213*gtu13 + Gt113*gt12L*Gt233*gtu13 + + Gt112*gt13L*Gt233*gtu13 + Gt213*gt22L*Gt233*gtu13 + + Gt133*Gt211*gt23L*gtu13 + Gt113*Gt213*gt23L*gtu13 + + Gt213*Gt223*gt23L*gtu13 + Gt212*Gt233*gt23L*gtu13 + + Gt233*Gt312*gt33L*gtu13 + Gt113*Gt313*gt33L*gtu13 + Gt112*Gt123*gt13L*gtu22 + Gt123*gt12L*Gt223*gtu22 + Gt122*gt13L*Gt223*gtu22 + Gt123*Gt212*gt23L*gtu22 + - Gt222*Gt223*gt23L*gtu22 + Gt223*Gt322*gt33L*gtu22 + - Gt113*gt11L*Gt133*gtu31 + Gt111*Gt133*gt13L*gtu31 + - gt12L*Gt133*Gt213*gtu31 + Gt123*gt13L*Gt213*gtu31 + - Gt113*gt12L*Gt233*gtu31 + Gt112*gt13L*Gt233*gtu31 + - Gt213*gt22L*Gt233*gtu31 + Gt133*Gt211*gt23L*gtu31 + - Gt113*Gt213*gt23L*gtu31 + Gt213*Gt223*gt23L*gtu31 + - Gt212*Gt233*gt23L*gtu31 + Gt113*Gt313*gt33L*gtu31 + - Gt213*Gt323*gt33L*gtu31 + gt11L*Gt123*Gt133*gtu32 + - Gt113*Gt123*gt13L*gtu32 + Gt112*Gt133*gt13L*gtu32 + - gt12L*Gt133*Gt223*gtu32 + Gt123*gt13L*Gt223*gtu32 + - Gt123*gt12L*Gt233*gtu32 + Gt122*gt13L*Gt233*gtu32 + - Gt223*gt22L*Gt233*gtu32 + Gt133*Gt212*gt23L*gtu32 + - Gt123*Gt213*gt23L*gtu32 + Gt222*Gt233*gt23L*gtu32 + - Gt233*Gt322*gt33L*gtu32 + Gt223*Gt323*gt33L*gtu32 + - Gt113*Gt133*gt13L*gtu33 + gt12L*Gt133*Gt233*gtu33 + - Gt123*gt13L*Gt233*gtu33 + Gt133*Gt213*gt23L*gtu33 + - Gt223*Gt233*gt23L*gtu33 + gt13L*gtu31*SQR(Gt113)) + + Gt222*Gt223*gt23L*gtu22 + gt11L*Gt123*Gt133*gtu23 + + Gt113*Gt123*gt13L*gtu23 + Gt112*Gt133*gt13L*gtu23 + + Gt123*gt13L*Gt223*gtu23 + Gt123*gt12L*Gt233*gtu23 + + Gt122*gt13L*Gt233*gtu23 + Gt223*gt22L*Gt233*gtu23 + + Gt133*Gt212*gt23L*gtu23 + Gt123*Gt213*gt23L*gtu23 + + Gt123*Gt313*gt33L*gtu23 + Gt233*Gt322*gt33L*gtu23 + + Gt113*Gt133*gt13L*gtu33 + Gt123*gt13L*Gt233*gtu33 + + Gt133*Gt213*gt23L*gtu33 + gt13L*gtu13*SQR(Gt113)) + gt11L*gtu22*SQR(Gt123) + gt11L*gtu33*SQR(Gt133) + gt22L*gtu11*SQR(Gt213) + gt22L*gtu22*SQR(Gt223) + - 2*gt23L*gtu32*SQR(Gt223) + gt22L*gtu33*SQR(Gt233) + + 2*gt23L*gtu23*SQR(Gt223) + gt22L*gtu33*SQR(Gt233) + 3*gt33L*gtu11*SQR(Gt313) + 3*gt33L*gtu22*SQR(Gt323) + 3*gt33L*gtu33*SQR(Gt333); @@ -815,38 +838,38 @@ void ML_BSSN_constraints_Body(cGH const * restrict const cctkGH, int const dir, Gt333*PDstandardNth3phi)) + fac2*SQR(PDstandardNth3phi); CCTK_REAL Rphi11 = -2*(cdphi211 + 2*(-1 + gt11L*gtu11)*SQR(cdphi1) + - gt11L*(cdphi211*gtu11 + 4*(cdphi1*(cdphi2*gtu21 + cdphi3*gtu31) + - cdphi2*cdphi3*gtu32) + cdphi233*gtu33 + gtu22*(cdphi222 + - 2*SQR(cdphi2)) + 2*(cdphi212*gtu21 + cdphi213*gtu31 + cdphi223*gtu32 + + 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 Rphi12 = -2*(cdphi212 + cdphi1*(cdphi2*(-2 + 4*gt12L*gtu21) - + 4*cdphi3*gt12L*gtu31) + gt12L*(cdphi211*gtu11 + 4*cdphi2*cdphi3*gtu32 - + 2*(cdphi212*gtu21 + cdphi213*gtu31 + cdphi223*gtu32 + + 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 Rphi13 = -2*(cdphi213 + cdphi1*(4*cdphi2*gt13L*gtu21 + - cdphi3*(-2 + 4*gt13L*gtu31)) + gt13L*(cdphi211*gtu11 + - 4*cdphi2*cdphi3*gtu32 + 2*(cdphi212*gtu21 + cdphi213*gtu31 + - cdphi223*gtu32 + gtu11*SQR(cdphi1)) + gtu22*(cdphi222 + 2*SQR(cdphi2)) + 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 Rphi22 = -2*(cdphi222 + 2*(-1 + gt22L*gtu22)*SQR(cdphi2) + - gt22L*(cdphi222*gtu22 + 4*(cdphi1*cdphi3*gtu31 + cdphi2*(cdphi1*gtu21 + - cdphi3*gtu32)) + cdphi233*gtu33 + gtu11*(cdphi211 + 2*SQR(cdphi1)) + - 2*(cdphi212*gtu21 + cdphi213*gtu31 + cdphi223*gtu32 + + 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 Rphi23 = -2*(cdphi223 + cdphi2*(4*cdphi1*gt23L*gtu21 + - cdphi3*(-2 + 4*gt23L*gtu32)) + gt23L*(cdphi222*gtu22 + - 4*cdphi1*cdphi3*gtu31 + gtu11*(cdphi211 + 2*SQR(cdphi1)) + - 2*(cdphi212*gtu21 + cdphi213*gtu31 + cdphi223*gtu32 + - gtu22*SQR(cdphi2)) + gtu33*(cdphi233 + 2*SQR(cdphi3)))); + 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 Rphi33 = -2*(cdphi233 + gt33L*((4*cdphi1*cdphi2 + - 2*cdphi212)*gtu21 + 4*cdphi3*(cdphi1*gtu31 + cdphi2*gtu32) + - 2*(cdphi213*gtu31 + cdphi223*gtu32) + cdphi233*gtu33 + gtu11*(cdphi211 + 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)); @@ -856,13 +879,13 @@ void ML_BSSN_constraints_Body(cGH const * restrict const cctkGH, int const dir, CCTK_REAL gu11 = em4phi*gtu11; - CCTK_REAL gu21 = em4phi*gtu21; + CCTK_REAL gu12 = em4phi*gtu12; - CCTK_REAL gu31 = em4phi*gtu31; + CCTK_REAL gu13 = em4phi*gtu13; CCTK_REAL gu22 = em4phi*gtu22; - CCTK_REAL gu32 = em4phi*gtu32; + CCTK_REAL gu23 = em4phi*gtu23; CCTK_REAL gu33 = em4phi*gtu33; @@ -878,26 +901,26 @@ void ML_BSSN_constraints_Body(cGH const * restrict const cctkGH, int const dir, CCTK_REAL R33 = Rphi33 + Rt33; - CCTK_REAL trR = gu11*R11 + gu22*R22 + 2*(gu21*R12 + gu31*R13 + - gu32*R23) + gu33*R33; + CCTK_REAL trR = gu11*R11 + gu22*R22 + 2*(gu12*R12 + gu13*R13 + + gu23*R23) + gu33*R33; - CCTK_REAL Atm11 = At11L*gtu11 + At12L*gtu21 + At13L*gtu31; + CCTK_REAL Atm11 = At11L*gtu11 + At12L*gtu12 + At13L*gtu13; - CCTK_REAL Atm21 = At11L*gtu21 + At12L*gtu22 + At13L*gtu32; + CCTK_REAL Atm21 = At11L*gtu12 + At12L*gtu22 + At13L*gtu23; - CCTK_REAL Atm31 = At11L*gtu31 + At12L*gtu32 + At13L*gtu33; + CCTK_REAL Atm31 = At11L*gtu13 + At12L*gtu23 + At13L*gtu33; - CCTK_REAL Atm12 = At12L*gtu11 + At22L*gtu21 + At23L*gtu31; + CCTK_REAL Atm12 = At12L*gtu11 + At22L*gtu12 + At23L*gtu13; - CCTK_REAL Atm22 = At12L*gtu21 + At22L*gtu22 + At23L*gtu32; + CCTK_REAL Atm22 = At12L*gtu12 + At22L*gtu22 + At23L*gtu23; - CCTK_REAL Atm32 = At12L*gtu31 + At22L*gtu32 + At23L*gtu33; + CCTK_REAL Atm32 = At12L*gtu13 + At22L*gtu23 + At23L*gtu33; - CCTK_REAL Atm13 = At13L*gtu11 + At23L*gtu21 + At33L*gtu31; + CCTK_REAL Atm13 = At13L*gtu11 + At23L*gtu12 + At33L*gtu13; - CCTK_REAL Atm23 = At13L*gtu21 + At23L*gtu22 + At33L*gtu32; + CCTK_REAL Atm23 = At13L*gtu12 + At23L*gtu22 + At33L*gtu23; - CCTK_REAL Atm33 = At13L*gtu31 + At23L*gtu32 + At33L*gtu33; + CCTK_REAL Atm33 = At13L*gtu13 + At23L*gtu23 + At33L*gtu33; CCTK_REAL rho = pow(alphaL,-2)*(eTttL - 2*(beta2L*eTtyL + beta3L*eTtzL) + 2*(beta1L*(-eTtxL + beta2L*eTxyL + beta3L*eTxzL) + @@ -919,73 +942,73 @@ void ML_BSSN_constraints_Body(cGH const * restrict const cctkGH, int const dir, 0.6666666666666666666666666666666666666667*SQR(trKL); CCTK_REAL M1L = -2.*((At12L*Gt211 + At13L*Gt311)*gtu11 + - At11L*Gt123*gtu32) + At12L*((6.*cdphi1 - 1.*Gt111)*gtu21 - - 3.*Gt213*gtu31 + 6.*(cdphi2*gtu22 + cdphi3*gtu32) - 1.*Gt233*gtu33) - - 1.*((At22L*Gt212 + At12L*(Gt112 + Gt222) + At23L*Gt312 + - At13L*Gt322)*gtu22 + At13L*(Gt111*gtu31 + Gt112*gtu32 + Gt113*gtu33)) + - At11L*((6.*cdphi1 - 2.*Gt111)*gtu11 + 6.*(cdphi2*gtu21 + cdphi3*gtu31) - - 1.*(Gt122*gtu22 + Gt133*gtu33)) + gtu11*PDstandardNth1At11 - + 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 + - gtu21*(-1.*(At22L*Gt211 + At23L*Gt311) - 3.*(At11L*Gt112 + At12L*Gt212 + gtu12*(-1.*(At22L*Gt211 + At23L*Gt311) - 3.*(At11L*Gt112 + At12L*Gt212 + At13L*Gt312) + PDstandardNth1At12 + PDstandardNth2At11) + - gtu22*PDstandardNth2At12 + gtu31*(-3.*At11L*Gt113 - 1.*(At23L*Gt211 + - At33L*Gt311) + At13L*(6.*cdphi1 - 3.*Gt313) + PDstandardNth1At13 + - PDstandardNth3At11) + gtu32*(-2.*At12L*Gt223 - 1.*(At12L*Gt113 + - At22L*Gt213 + At33L*Gt312 + At23L*(Gt212 + Gt313)) + At13L*(6.*cdphi2 - - 2.*Gt323) + PDstandardNth2At13 + PDstandardNth3At12) + - gtu33*(-1.*(At23L*Gt213 + At33L*Gt313) + At13L*(6.*cdphi3 - 1.*Gt333) + - PDstandardNth3At13) - 25.13274122871834590770114706623602307358*S1; - - CCTK_REAL M2L = At12L*((6.*cdphi1 - 1.*Gt111)*gtu11 - 2.*Gt122*gtu22 + - 6.*(cdphi2*gtu21 + cdphi3*gtu31) - 3.*Gt123*gtu32 - 1.*Gt133*gtu33) + - At22L*((6.*cdphi2 - 2.*Gt222)*gtu22 - 2.*Gt213*gtu31 + 6.*cdphi3*gtu32 - - 1.*Gt233*gtu33) + At23L*(-2.*Gt322*gtu22 - 1.*Gt333*gtu33 + - 6.*(cdphi1*gtu31 + cdphi2*gtu32 + cdphi3*gtu33)) - 1.*((At11L*Gt112 + - At22L*Gt211 + At12L*Gt212 + At23L*Gt311 + At13L*Gt312)*gtu11 + - Gt122*(At11L*gtu21 + At13L*gtu32) + (At23L*Gt223 + At33L*Gt323)*gtu33 + - At13L*(Gt112*gtu31 + Gt123*gtu33)) + gtu11*PDstandardNth1At12 + - gtu21*(At22L*(6.*cdphi1 - 3.*Gt212) + At12L*(-3.*Gt112 - 1.*Gt222) - - 3.*At23L*Gt312 - 1.*At13L*Gt322 + PDstandardNth1At22 + - PDstandardNth2At12) + gtu22*PDstandardNth2At22 - + 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 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 + - gtu31*(At12L*(-2.*Gt113 - 1.*Gt223) - 2.*At23L*Gt313 - 1.*(At11L*Gt123 - + At23L*Gt212 + At33L*Gt312 + At13L*Gt323) + PDstandardNth1At23 + - PDstandardNth3At12) + gtu32*(-1.*(At23L*Gt222 + At33L*Gt322) - - 3.*(At22L*Gt223 + At23L*Gt323) + PDstandardNth2At23 + + 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 M3L = -1.*((At11L*Gt113 + At23L*Gt211 + At12L*Gt213 + At33L*Gt311)*gtu11 + (At22L*Gt223 + At33L*Gt322 + At23L*Gt323)*gtu22 + - At11L*Gt133*gtu31 + At12L*(Gt113*gtu21 + Gt123*gtu22 + Gt133*gtu32)) + - At13L*((6.*cdphi1 - 1.*(Gt111 + Gt313))*gtu11 - 1.*Gt122*gtu22 + - 6.*(cdphi2*gtu21 + cdphi3*gtu31) - 3.*Gt123*gtu32 - 2.*Gt133*gtu33) + - At23L*((6.*cdphi2 - 1.*Gt222)*gtu22 - 3.*Gt213*gtu31 + 6.*cdphi3*gtu32 - - 2.*Gt233*gtu33) + gtu11*PDstandardNth1At13 + gtu21*(-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 + - gtu31*(-1.*At12L*Gt233 + At33L*(6.*cdphi1 - 3.*Gt313) + - At13L*(-3.*Gt113 - 1.*Gt333) + PDstandardNth1At33 + PDstandardNth3At13) - + gtu32*(-1.*At22L*Gt233 + At33L*(6.*cdphi2 - 3.*Gt323) + - At23L*(-3.*Gt223 - 1.*Gt333) + PDstandardNth2At33 + PDstandardNth3At23) - + gtu33*(At33L*(6.*cdphi3 - 2.*Gt333) + PDstandardNth3At33) - + 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*gtu21 + - Gt113*gtu31 + Gt123*gtu32) + Gt133*gtu33 - Xt1L; + 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*gtu21 + - Gt213*gtu31 + Gt223*gtu32) + Gt233*gtu33 - Xt2L; + 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*gtu21 + - Gt313*gtu31 + Gt323*gtu32) + Gt333*gtu33 - Xt3L; + 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*gtu21 + - At13L*gtu31 + At23L*gtu32) + At33L*gtu33; + CCTK_REAL cAL = At11L*gtu11 + At22L*gtu22 + 2*(At12L*gtu12 + + At13L*gtu13 + At23L*gtu23) + At33L*gtu33; /* Copy local copies back to grid functions */ diff --git a/ML_BSSN/src/ML_BSSN_constraints_boundary.c b/ML_BSSN/src/ML_BSSN_constraints_boundary.c index 8fa0869..798a19c 100644 --- a/ML_BSSN/src/ML_BSSN_constraints_boundary.c +++ b/ML_BSSN/src/ML_BSSN_constraints_boundary.c @@ -20,6 +20,30 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((x) * (x) * (x) * (x)) +void ML_BSSN_constraints_boundary_SelectBCs(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT ierr = 0; + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN::ML_cons_detg","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN::ML_cons_detg."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN::ML_cons_Gamma","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN::ML_cons_Gamma."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN::ML_cons_traceA","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN::ML_cons_traceA."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN::ML_Ham","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN::ML_Ham."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN::ML_mom","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN::ML_mom."); + return; +} + void ML_BSSN_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[]) { DECLARE_CCTK_ARGUMENTS; diff --git a/ML_BSSN/src/ML_BSSN_convertFromADMBase.c b/ML_BSSN/src/ML_BSSN_convertFromADMBase.c index 89ef563..b0f0b93 100644 --- a/ML_BSSN/src/ML_BSSN_convertFromADMBase.c +++ b/ML_BSSN/src/ML_BSSN_convertFromADMBase.c @@ -131,13 +131,13 @@ void ML_BSSN_convertFromADMBase_Body(cGH const * restrict const cctkGH, int cons CCTK_REAL gu11 = INV(detg)*(g22*g33 - SQR(g23)); - CCTK_REAL gu21 = (g13*g23 - g12*g33)*INV(detg); + CCTK_REAL gu12 = (g13*g23 - g12*g33)*INV(detg); - CCTK_REAL gu31 = (-(g13*g22) + g12*g23)*INV(detg); + CCTK_REAL gu13 = (-(g13*g22) + g12*g23)*INV(detg); CCTK_REAL gu22 = INV(detg)*(g11*g33 - SQR(g13)); - CCTK_REAL gu32 = (g12*g13 - g11*g23)*INV(detg); + CCTK_REAL gu23 = (g12*g13 - g11*g23)*INV(detg); CCTK_REAL gu33 = INV(detg)*(g11*g22 - SQR(g12)); @@ -158,7 +158,7 @@ void ML_BSSN_convertFromADMBase_Body(cGH const * restrict const cctkGH, int cons CCTK_REAL gt33L = em4phi*g33; - trKL = gu11*kxxL + gu22*kyyL + 2*(gu21*kxyL + gu31*kxzL + gu32*kyzL) + + trKL = gu11*kxxL + gu22*kyyL + 2*(gu12*kxyL + gu13*kxzL + gu23*kyzL) + gu33*kzzL; CCTK_REAL At11L = em4phi*(kxxL - g11*kthird*trKL); diff --git a/ML_BSSN/src/ML_BSSN_convertFromADMBaseGamma.c b/ML_BSSN/src/ML_BSSN_convertFromADMBaseGamma.c index 7b4b9bd..6d6832c 100644 --- a/ML_BSSN/src/ML_BSSN_convertFromADMBaseGamma.c +++ b/ML_BSSN/src/ML_BSSN_convertFromADMBaseGamma.c @@ -20,6 +20,24 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((x) * (x) * (x) * (x)) +void ML_BSSN_convertFromADMBaseGamma_SelectBCs(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT ierr = 0; + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN::ML_dtlapse","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN::ML_dtlapse."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN::ML_dtshift","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN::ML_dtshift."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN::ML_Gamma","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN::ML_Gamma."); + return; +} + 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[]) { DECLARE_CCTK_ARGUMENTS; @@ -205,96 +223,96 @@ void ML_BSSN_convertFromADMBaseGamma_Body(cGH const * restrict const cctkGH, int CCTK_REAL gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L)); - CCTK_REAL gtu21 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt); + CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt); - CCTK_REAL gtu31 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt); + CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt); CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L)); - CCTK_REAL gtu32 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt); + CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt); CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L)); CCTK_REAL Gt111 = khalf*(gtu11*PDstandardNth1gt11 + - 2*(gtu21*PDstandardNth1gt12 + gtu31*PDstandardNth1gt13) - - gtu21*PDstandardNth2gt11 - gtu31*PDstandardNth3gt11); + 2*(gtu12*PDstandardNth1gt12 + gtu13*PDstandardNth1gt13) - + gtu12*PDstandardNth2gt11 - gtu13*PDstandardNth3gt11); - CCTK_REAL Gt211 = khalf*(gtu21*PDstandardNth1gt11 + - 2*(gtu22*PDstandardNth1gt12 + gtu32*PDstandardNth1gt13) - - gtu22*PDstandardNth2gt11 - gtu32*PDstandardNth3gt11); + CCTK_REAL Gt211 = khalf*(gtu12*PDstandardNth1gt11 + + 2*(gtu22*PDstandardNth1gt12 + gtu23*PDstandardNth1gt13) - + gtu22*PDstandardNth2gt11 - gtu23*PDstandardNth3gt11); - CCTK_REAL Gt311 = khalf*(gtu31*PDstandardNth1gt11 + - 2*(gtu32*PDstandardNth1gt12 + gtu33*PDstandardNth1gt13) - - gtu32*PDstandardNth2gt11 - gtu33*PDstandardNth3gt11); + CCTK_REAL Gt311 = khalf*(gtu13*PDstandardNth1gt11 + + 2*(gtu23*PDstandardNth1gt12 + gtu33*PDstandardNth1gt13) - + gtu23*PDstandardNth2gt11 - gtu33*PDstandardNth3gt11); - CCTK_REAL Gt112 = khalf*(gtu21*PDstandardNth1gt22 + - gtu11*PDstandardNth2gt11 + gtu31*(PDstandardNth1gt23 + + CCTK_REAL Gt112 = khalf*(gtu12*PDstandardNth1gt22 + + gtu11*PDstandardNth2gt11 + gtu13*(PDstandardNth1gt23 + PDstandardNth2gt13 - PDstandardNth3gt12)); CCTK_REAL Gt212 = khalf*(gtu22*PDstandardNth1gt22 + - gtu21*PDstandardNth2gt11 + gtu32*(PDstandardNth1gt23 + + gtu12*PDstandardNth2gt11 + gtu23*(PDstandardNth1gt23 + PDstandardNth2gt13 - PDstandardNth3gt12)); - CCTK_REAL Gt312 = khalf*(gtu32*PDstandardNth1gt22 + - gtu31*PDstandardNth2gt11 + gtu33*(PDstandardNth1gt23 + + CCTK_REAL Gt312 = khalf*(gtu23*PDstandardNth1gt22 + + gtu13*PDstandardNth2gt11 + gtu33*(PDstandardNth1gt23 + PDstandardNth2gt13 - PDstandardNth3gt12)); - CCTK_REAL Gt113 = khalf*(gtu31*PDstandardNth1gt33 + - gtu11*PDstandardNth3gt11 + gtu21*(PDstandardNth1gt23 - + CCTK_REAL Gt113 = khalf*(gtu13*PDstandardNth1gt33 + + gtu11*PDstandardNth3gt11 + gtu12*(PDstandardNth1gt23 - PDstandardNth2gt13 + PDstandardNth3gt12)); - CCTK_REAL Gt213 = khalf*(gtu32*PDstandardNth1gt33 + - gtu21*PDstandardNth3gt11 + gtu22*(PDstandardNth1gt23 - + CCTK_REAL Gt213 = khalf*(gtu23*PDstandardNth1gt33 + + gtu12*PDstandardNth3gt11 + gtu22*(PDstandardNth1gt23 - PDstandardNth2gt13 + PDstandardNth3gt12)); CCTK_REAL Gt313 = khalf*(gtu33*PDstandardNth1gt33 + - gtu31*PDstandardNth3gt11 + gtu32*(PDstandardNth1gt23 - + gtu13*PDstandardNth3gt11 + gtu23*(PDstandardNth1gt23 - PDstandardNth2gt13 + PDstandardNth3gt12)); CCTK_REAL Gt122 = khalf*(gtu11*(-PDstandardNth1gt22 + - 2*PDstandardNth2gt12) + gtu21*PDstandardNth2gt22 + - gtu31*(2*PDstandardNth2gt23 - PDstandardNth3gt22)); + 2*PDstandardNth2gt12) + gtu12*PDstandardNth2gt22 + + gtu13*(2*PDstandardNth2gt23 - PDstandardNth3gt22)); - CCTK_REAL Gt222 = khalf*(gtu21*(-PDstandardNth1gt22 + + CCTK_REAL Gt222 = khalf*(gtu12*(-PDstandardNth1gt22 + 2*PDstandardNth2gt12) + gtu22*PDstandardNth2gt22 + - gtu32*(2*PDstandardNth2gt23 - PDstandardNth3gt22)); + gtu23*(2*PDstandardNth2gt23 - PDstandardNth3gt22)); - CCTK_REAL Gt322 = khalf*(gtu31*(-PDstandardNth1gt22 + - 2*PDstandardNth2gt12) + gtu32*PDstandardNth2gt22 + + CCTK_REAL Gt322 = khalf*(gtu13*(-PDstandardNth1gt22 + + 2*PDstandardNth2gt12) + gtu23*PDstandardNth2gt22 + gtu33*(2*PDstandardNth2gt23 - PDstandardNth3gt22)); - CCTK_REAL Gt123 = khalf*(gtu31*PDstandardNth2gt33 + + CCTK_REAL Gt123 = khalf*(gtu13*PDstandardNth2gt33 + gtu11*(-PDstandardNth1gt23 + PDstandardNth2gt13 + PDstandardNth3gt12) + - gtu21*PDstandardNth3gt22); + gtu12*PDstandardNth3gt22); - CCTK_REAL Gt223 = khalf*(gtu32*PDstandardNth2gt33 + - gtu21*(-PDstandardNth1gt23 + PDstandardNth2gt13 + PDstandardNth3gt12) + + CCTK_REAL Gt223 = khalf*(gtu23*PDstandardNth2gt33 + + gtu12*(-PDstandardNth1gt23 + PDstandardNth2gt13 + PDstandardNth3gt12) + gtu22*PDstandardNth3gt22); CCTK_REAL Gt323 = khalf*(gtu33*PDstandardNth2gt33 + - gtu31*(-PDstandardNth1gt23 + PDstandardNth2gt13 + PDstandardNth3gt12) + - gtu32*PDstandardNth3gt22); + gtu13*(-PDstandardNth1gt23 + PDstandardNth2gt13 + PDstandardNth3gt12) + + gtu23*PDstandardNth3gt22); CCTK_REAL Gt133 = khalf*(-(gtu11*PDstandardNth1gt33) - - gtu21*PDstandardNth2gt33 + 2*gtu11*PDstandardNth3gt13 + - 2*gtu21*PDstandardNth3gt23 + gtu31*PDstandardNth3gt33); + gtu12*PDstandardNth2gt33 + 2*gtu11*PDstandardNth3gt13 + + 2*gtu12*PDstandardNth3gt23 + gtu13*PDstandardNth3gt33); - CCTK_REAL Gt233 = khalf*(-(gtu21*PDstandardNth1gt33) - - gtu22*PDstandardNth2gt33 + 2*gtu21*PDstandardNth3gt13 + - 2*gtu22*PDstandardNth3gt23 + gtu32*PDstandardNth3gt33); + CCTK_REAL Gt233 = khalf*(-(gtu12*PDstandardNth1gt33) - + gtu22*PDstandardNth2gt33 + 2*gtu12*PDstandardNth3gt13 + + 2*gtu22*PDstandardNth3gt23 + gtu23*PDstandardNth3gt33); - CCTK_REAL Gt333 = khalf*(-(gtu31*PDstandardNth1gt33) - - gtu32*PDstandardNth2gt33 + 2*gtu31*PDstandardNth3gt13 + - 2*gtu32*PDstandardNth3gt23 + gtu33*PDstandardNth3gt33); + CCTK_REAL Gt333 = khalf*(-(gtu13*PDstandardNth1gt33) - + gtu23*PDstandardNth2gt33 + 2*gtu13*PDstandardNth3gt13 + + 2*gtu23*PDstandardNth3gt23 + gtu33*PDstandardNth3gt33); - CCTK_REAL Xt1L = Gt111*gtu11 + Gt122*gtu22 + 2*(Gt112*gtu21 + - Gt113*gtu31 + Gt123*gtu32) + Gt133*gtu33; + CCTK_REAL Xt1L = Gt111*gtu11 + Gt122*gtu22 + 2*(Gt112*gtu12 + + Gt113*gtu13 + Gt123*gtu23) + Gt133*gtu33; - CCTK_REAL Xt2L = Gt211*gtu11 + Gt222*gtu22 + 2*(Gt212*gtu21 + - Gt213*gtu31 + Gt223*gtu32) + Gt233*gtu33; + CCTK_REAL Xt2L = Gt211*gtu11 + Gt222*gtu22 + 2*(Gt212*gtu12 + + Gt213*gtu13 + Gt223*gtu23) + Gt233*gtu33; - CCTK_REAL Xt3L = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu21 + - Gt313*gtu31 + Gt323*gtu32) + Gt333*gtu33; + CCTK_REAL Xt3L = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu12 + + Gt313*gtu13 + Gt323*gtu23) + Gt333*gtu33; CCTK_REAL AL = 12*IfThen(LapseACoeff != 0,-(dtalpL*INV(harmonicF)*pow(alphaL,-harmonicN)),0) + diff --git a/ML_BSSN/src/ML_BSSN_convertToADMBaseDtLapseShift.c b/ML_BSSN/src/ML_BSSN_convertToADMBaseDtLapseShift.c index 908d19e..b8fe647 100644 --- a/ML_BSSN/src/ML_BSSN_convertToADMBaseDtLapseShift.c +++ b/ML_BSSN/src/ML_BSSN_convertToADMBaseDtLapseShift.c @@ -20,6 +20,21 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((x) * (x) * (x) * (x)) +void ML_BSSN_convertToADMBaseDtLapseShift_SelectBCs(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT ierr = 0; + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ADMBase::dtlapse","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ADMBase::dtlapse."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ADMBase::dtshift","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ADMBase::dtshift."); + return; +} + 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[]) { DECLARE_CCTK_ARGUMENTS; diff --git a/ML_BSSN/src/ML_BSSN_convertToADMBaseDtLapseShiftBoundary.c b/ML_BSSN/src/ML_BSSN_convertToADMBaseDtLapseShiftBoundary.c index 748ae40..72c6ff2 100644 --- a/ML_BSSN/src/ML_BSSN_convertToADMBaseDtLapseShiftBoundary.c +++ b/ML_BSSN/src/ML_BSSN_convertToADMBaseDtLapseShiftBoundary.c @@ -20,6 +20,21 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((x) * (x) * (x) * (x)) +void ML_BSSN_convertToADMBaseDtLapseShiftBoundary_SelectBCs(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT ierr = 0; + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ADMBase::dtlapse","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ADMBase::dtlapse."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ADMBase::dtshift","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ADMBase::dtshift."); + return; +} + 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[]) { DECLARE_CCTK_ARGUMENTS; diff --git a/ML_BSSN/src/ML_BSSN_enforce.c b/ML_BSSN/src/ML_BSSN_enforce.c index e200af5..d8b0d21 100644 --- a/ML_BSSN/src/ML_BSSN_enforce.c +++ b/ML_BSSN/src/ML_BSSN_enforce.c @@ -113,18 +113,18 @@ void ML_BSSN_enforce_Body(cGH const * restrict const cctkGH, int const dir, int CCTK_REAL gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L)); - CCTK_REAL gtu21 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt); + CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt); - CCTK_REAL gtu31 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt); + CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt); CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L)); - CCTK_REAL gtu32 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt); + CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt); CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L)); - CCTK_REAL trAt = At11L*gtu11 + At22L*gtu22 + 2*(At12L*gtu21 + - At13L*gtu31 + At23L*gtu32) + At33L*gtu33; + CCTK_REAL trAt = At11L*gtu11 + At22L*gtu22 + 2*(At12L*gtu12 + + At13L*gtu13 + At23L*gtu23) + At33L*gtu33; At11L = At11L - gt11L*kthird*trAt; diff --git a/ML_BSSN_Helper/schedule.ccl b/ML_BSSN_Helper/schedule.ccl index d4609f9..dbef569 100644 --- a/ML_BSSN_Helper/schedule.ccl +++ b/ML_BSSN_Helper/schedule.ccl @@ -132,7 +132,7 @@ if (CCTK_EQUALS (evolution_method, "ML_BSSN")) { } else if (CCTK_EQUALS (calculate_ADMBase_variables_at, "CCTK_EVOL")) { - SCHEDULE GROUP ML_BSSN_convertToADMBaseGroupWrapper AT evol AFTER MoL_Evolution BEFORE (ADMBase_SetADMVars Whisky_PostStep) + SCHEDULE GROUP ML_BSSN_convertToADMBaseGroupWrapper IN MoL_PseudoEvolution BEFORE (ADMBase_SetADMVars Whisky_PostStep) { } "Calculate ADM variables" } @@ -143,7 +143,7 @@ if (CCTK_EQUALS (evolution_method, "ML_BSSN")) { } "Calculate ADM variables" } - SCHEDULE GROUP ML_BSSN_convertToADMBaseGroupWrapper AT CCTK_POST_RECOVER_VARIABLES + SCHEDULE GROUP ML_BSSN_convertToADMBaseGroupWrapper AT post_recover_variables { } "Calculate ADM variables" diff --git a/ML_BSSN_MP/interface.ccl b/ML_BSSN_MP/interface.ccl index 827935d..72c0c57 100644 --- a/ML_BSSN_MP/interface.ccl +++ b/ML_BSSN_MP/interface.ccl @@ -25,7 +25,7 @@ CCTK_INT FUNCTION Boundary_SelectVarForBC(CCTK_POINTER_TO_CONST IN GH, CCTK_INT USES FUNCTION Boundary_SelectVarForBC public: -CCTK_REAL ML_cons_detg type=GF timelevels=1 tags='tensortypealias="Scalar" tensorweight=2.0000000000000000000' +CCTK_REAL ML_cons_detg type=GF timelevels=1 tags='tensortypealias="Scalar" tensorweight=2' { cS } "ML_cons_detg" @@ -39,19 +39,19 @@ CCTK_REAL ML_cons_Gamma type=GF timelevels=1 tags='tensortypealias="U" tensorwei } "ML_cons_Gamma" public: -CCTK_REAL ML_cons_traceA type=GF timelevels=1 tags='tensortypealias="Scalar" tensorweight=1.0000000000000000000' +CCTK_REAL ML_cons_traceA type=GF timelevels=1 tags='tensortypealias="Scalar" tensorweight=1' { cA } "ML_cons_traceA" public: -CCTK_REAL ML_Ham type=GF timelevels=1 tags='tensortypealias="Scalar" tensorweight=1.0000000000000000000' +CCTK_REAL ML_Ham type=GF timelevels=1 tags='tensortypealias="Scalar" tensorweight=1' { H } "ML_Ham" public: -CCTK_REAL ML_mom type=GF timelevels=1 tags='tensortypealias="D" tensorweight=1.0000000000000000000' +CCTK_REAL ML_mom type=GF timelevels=1 tags='tensortypealias="D" tensorweight=1' { M1, M2, @@ -70,13 +70,13 @@ CCTK_REAL ML_curv type=GF timelevels=3 tags='tensortypealias="DD_sym" tensorweig } "ML_curv" public: -CCTK_REAL ML_dtlapse type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1.0000000000000000000' +CCTK_REAL ML_dtlapse type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1' { A } "ML_dtlapse" public: -CCTK_REAL ML_dtshift type=GF timelevels=3 tags='tensortypealias="U" tensorweight=1.0000000000000000000' +CCTK_REAL ML_dtshift type=GF timelevels=3 tags='tensortypealias="U" tensorweight=1' { B1, B2, @@ -92,7 +92,7 @@ CCTK_REAL ML_Gamma type=GF timelevels=3 tags='tensortypealias="U" tensorweight=0 } "ML_Gamma" public: -CCTK_REAL ML_lapse type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1.0000000000000000000' +CCTK_REAL ML_lapse type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1' { alpha } "ML_lapse" @@ -115,7 +115,7 @@ CCTK_REAL ML_metric type=GF timelevels=3 tags='tensortypealias="DD_sym" tensorwe } "ML_metric" public: -CCTK_REAL ML_shift type=GF timelevels=3 tags='tensortypealias="U" tensorweight=1.0000000000000000000' +CCTK_REAL ML_shift type=GF timelevels=3 tags='tensortypealias="U" tensorweight=1' { beta1, beta2, @@ -123,7 +123,7 @@ CCTK_REAL ML_shift type=GF timelevels=3 tags='tensortypealias="U" tensorweight=1 } "ML_shift" public: -CCTK_REAL ML_trace_curv type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1.0000000000000000000' +CCTK_REAL ML_trace_curv type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1' { trK } "ML_trace_curv" @@ -140,13 +140,13 @@ CCTK_REAL ML_curvrhs type=GF timelevels=3 tags='tensortypealias="DD_sym" tensorw } "ML_curvrhs" public: -CCTK_REAL ML_dtlapserhs type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1.0000000000000000000' +CCTK_REAL ML_dtlapserhs type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1' { Arhs } "ML_dtlapserhs" public: -CCTK_REAL ML_dtshiftrhs type=GF timelevels=3 tags='tensortypealias="U" tensorweight=1.0000000000000000000' +CCTK_REAL ML_dtshiftrhs type=GF timelevels=3 tags='tensortypealias="U" tensorweight=1' { B1rhs, B2rhs, @@ -162,7 +162,7 @@ CCTK_REAL ML_Gammarhs type=GF timelevels=3 tags='tensortypealias="U" tensorweigh } "ML_Gammarhs" public: -CCTK_REAL ML_lapserhs type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1.0000000000000000000' +CCTK_REAL ML_lapserhs type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1' { alpharhs } "ML_lapserhs" @@ -185,7 +185,7 @@ CCTK_REAL ML_metricrhs type=GF timelevels=3 tags='tensortypealias="DD_sym" tenso } "ML_metricrhs" public: -CCTK_REAL ML_shiftrhs type=GF timelevels=3 tags='tensortypealias="U" tensorweight=1.0000000000000000000' +CCTK_REAL ML_shiftrhs type=GF timelevels=3 tags='tensortypealias="U" tensorweight=1' { beta1rhs, beta2rhs, @@ -193,7 +193,7 @@ CCTK_REAL ML_shiftrhs type=GF timelevels=3 tags='tensortypealias="U" tensorweigh } "ML_shiftrhs" public: -CCTK_REAL ML_trace_curvrhs type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1.0000000000000000000' +CCTK_REAL ML_trace_curvrhs type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1' { trKrhs } "ML_trace_curvrhs" diff --git a/ML_BSSN_MP/schedule.ccl b/ML_BSSN_MP/schedule.ccl index c153a18..4faaa53 100644 --- a/ML_BSSN_MP/schedule.ccl +++ b/ML_BSSN_MP/schedule.ccl @@ -405,7 +405,7 @@ schedule ML_BSSN_MP_CheckBoundaries at BASEGRID OPTIONS: meta } "check boundaries treatment" -schedule group ApplyBCs as ML_BSSN_MP_ApplyBCs in MoL_PostStep after ML_BSSN_MP_SelectBoundConds +schedule group ApplyBCs as ML_BSSN_MP_ApplyBCs in MoL_PostStep after ML_BSSN_MP_SelectBoundConds { # no language specified } "Apply boundary conditions controlled by thorn Boundary" diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_RHS1.c b/ML_BSSN_MP/src/ML_BSSN_MP_RHS1.c index 98e1c02..d78a874 100644 --- a/ML_BSSN_MP/src/ML_BSSN_MP_RHS1.c +++ b/ML_BSSN_MP/src/ML_BSSN_MP_RHS1.c @@ -20,6 +20,39 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((x) * (x) * (x) * (x)) +void ML_BSSN_MP_RHS1_SelectBCs(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT ierr = 0; + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_dtlapserhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_dtlapserhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_dtshiftrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_dtshiftrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_Gammarhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_Gammarhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_lapserhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_lapserhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_log_confacrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_log_confacrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_metricrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_metricrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_shiftrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_shiftrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_trace_curvrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_trace_curvrhs."); + return; +} + 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[]) { DECLARE_CCTK_ARGUMENTS; @@ -637,13 +670,13 @@ void ML_BSSN_MP_RHS1_Body(cGH const * restrict const cctkGH, int const dir, int CCTK_REAL gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L)); - CCTK_REAL gtu21 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt); + CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt); - CCTK_REAL gtu31 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt); + CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt); CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L)); - CCTK_REAL gtu32 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt); + CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt); CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L)); @@ -722,50 +755,50 @@ void ML_BSSN_MP_RHS1_Body(cGH const * restrict const cctkGH, int const dir, int CCTK_REAL Gtl333 = khalf*(J13L*PDstandardNth1gt33 + J23L*PDstandardNth2gt33 + J33L*PDstandardNth3gt33); - CCTK_REAL Gt111 = Gtl111*gtu11 + Gtl211*gtu21 + Gtl311*gtu31; + CCTK_REAL Gt111 = Gtl111*gtu11 + Gtl211*gtu12 + Gtl311*gtu13; - CCTK_REAL Gt211 = Gtl111*gtu21 + Gtl211*gtu22 + Gtl311*gtu32; + CCTK_REAL Gt211 = Gtl111*gtu12 + Gtl211*gtu22 + Gtl311*gtu23; - CCTK_REAL Gt311 = Gtl111*gtu31 + Gtl211*gtu32 + Gtl311*gtu33; + CCTK_REAL Gt311 = Gtl111*gtu13 + Gtl211*gtu23 + Gtl311*gtu33; - CCTK_REAL Gt112 = Gtl112*gtu11 + Gtl212*gtu21 + Gtl312*gtu31; + CCTK_REAL Gt112 = Gtl112*gtu11 + Gtl212*gtu12 + Gtl312*gtu13; - CCTK_REAL Gt212 = Gtl112*gtu21 + Gtl212*gtu22 + Gtl312*gtu32; + CCTK_REAL Gt212 = Gtl112*gtu12 + Gtl212*gtu22 + Gtl312*gtu23; - CCTK_REAL Gt312 = Gtl112*gtu31 + Gtl212*gtu32 + Gtl312*gtu33; + CCTK_REAL Gt312 = Gtl112*gtu13 + Gtl212*gtu23 + Gtl312*gtu33; - CCTK_REAL Gt113 = Gtl113*gtu11 + Gtl213*gtu21 + Gtl313*gtu31; + CCTK_REAL Gt113 = Gtl113*gtu11 + Gtl213*gtu12 + Gtl313*gtu13; - CCTK_REAL Gt213 = Gtl113*gtu21 + Gtl213*gtu22 + Gtl313*gtu32; + CCTK_REAL Gt213 = Gtl113*gtu12 + Gtl213*gtu22 + Gtl313*gtu23; - CCTK_REAL Gt313 = Gtl113*gtu31 + Gtl213*gtu32 + Gtl313*gtu33; + CCTK_REAL Gt313 = Gtl113*gtu13 + Gtl213*gtu23 + Gtl313*gtu33; - CCTK_REAL Gt122 = Gtl122*gtu11 + Gtl222*gtu21 + Gtl322*gtu31; + CCTK_REAL Gt122 = Gtl122*gtu11 + Gtl222*gtu12 + Gtl322*gtu13; - CCTK_REAL Gt222 = Gtl122*gtu21 + Gtl222*gtu22 + Gtl322*gtu32; + CCTK_REAL Gt222 = Gtl122*gtu12 + Gtl222*gtu22 + Gtl322*gtu23; - CCTK_REAL Gt322 = Gtl122*gtu31 + Gtl222*gtu32 + Gtl322*gtu33; + CCTK_REAL Gt322 = Gtl122*gtu13 + Gtl222*gtu23 + Gtl322*gtu33; - CCTK_REAL Gt123 = Gtl123*gtu11 + Gtl223*gtu21 + Gtl323*gtu31; + CCTK_REAL Gt123 = Gtl123*gtu11 + Gtl223*gtu12 + Gtl323*gtu13; - CCTK_REAL Gt223 = Gtl123*gtu21 + Gtl223*gtu22 + Gtl323*gtu32; + CCTK_REAL Gt223 = Gtl123*gtu12 + Gtl223*gtu22 + Gtl323*gtu23; - CCTK_REAL Gt323 = Gtl123*gtu31 + Gtl223*gtu32 + Gtl323*gtu33; + CCTK_REAL Gt323 = Gtl123*gtu13 + Gtl223*gtu23 + Gtl323*gtu33; - CCTK_REAL Gt133 = Gtl133*gtu11 + Gtl233*gtu21 + Gtl333*gtu31; + CCTK_REAL Gt133 = Gtl133*gtu11 + Gtl233*gtu12 + Gtl333*gtu13; - CCTK_REAL Gt233 = Gtl133*gtu21 + Gtl233*gtu22 + Gtl333*gtu32; + CCTK_REAL Gt233 = Gtl133*gtu12 + Gtl233*gtu22 + Gtl333*gtu23; - CCTK_REAL Gt333 = Gtl133*gtu31 + Gtl233*gtu32 + Gtl333*gtu33; + CCTK_REAL Gt333 = Gtl133*gtu13 + Gtl233*gtu23 + Gtl333*gtu33; - CCTK_REAL Xtn1 = Gt111*gtu11 + Gt122*gtu22 + 2*(Gt112*gtu21 + - Gt113*gtu31 + Gt123*gtu32) + Gt133*gtu33; + CCTK_REAL Xtn1 = Gt111*gtu11 + Gt122*gtu22 + 2*(Gt112*gtu12 + + Gt113*gtu13 + Gt123*gtu23) + Gt133*gtu33; - CCTK_REAL Xtn2 = Gt211*gtu11 + Gt222*gtu22 + 2*(Gt212*gtu21 + - Gt213*gtu31 + Gt223*gtu32) + Gt233*gtu33; + CCTK_REAL Xtn2 = Gt211*gtu11 + Gt222*gtu22 + 2*(Gt212*gtu12 + + Gt213*gtu13 + Gt223*gtu23) + Gt233*gtu33; - CCTK_REAL Xtn3 = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu21 + - Gt313*gtu31 + Gt323*gtu32) + Gt333*gtu33; + CCTK_REAL Xtn3 = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu12 + + Gt313*gtu13 + Gt323*gtu23) + Gt333*gtu33; CCTK_REAL fac1 = IfThen(conformalMethod,-(khalf*INV(phiL)),1); @@ -778,35 +811,35 @@ void ML_BSSN_MP_RHS1_Body(cGH const * restrict const cctkGH, int const dir, int CCTK_REAL cdphi3 = fac1*(J13L*PDstandardNth1phi + J23L*PDstandardNth2phi + J33L*PDstandardNth3phi); - CCTK_REAL Atm11 = At11L*gtu11 + At12L*gtu21 + At13L*gtu31; + CCTK_REAL Atm11 = At11L*gtu11 + At12L*gtu12 + At13L*gtu13; - CCTK_REAL Atm21 = At11L*gtu21 + At12L*gtu22 + At13L*gtu32; + CCTK_REAL Atm21 = At11L*gtu12 + At12L*gtu22 + At13L*gtu23; - CCTK_REAL Atm31 = At11L*gtu31 + At12L*gtu32 + At13L*gtu33; + CCTK_REAL Atm31 = At11L*gtu13 + At12L*gtu23 + At13L*gtu33; - CCTK_REAL Atm12 = At12L*gtu11 + At22L*gtu21 + At23L*gtu31; + CCTK_REAL Atm12 = At12L*gtu11 + At22L*gtu12 + At23L*gtu13; - CCTK_REAL Atm22 = At12L*gtu21 + At22L*gtu22 + At23L*gtu32; + CCTK_REAL Atm22 = At12L*gtu12 + At22L*gtu22 + At23L*gtu23; - CCTK_REAL Atm32 = At12L*gtu31 + At22L*gtu32 + At23L*gtu33; + CCTK_REAL Atm32 = At12L*gtu13 + At22L*gtu23 + At23L*gtu33; - CCTK_REAL Atm13 = At13L*gtu11 + At23L*gtu21 + At33L*gtu31; + CCTK_REAL Atm13 = At13L*gtu11 + At23L*gtu12 + At33L*gtu13; - CCTK_REAL Atm23 = At13L*gtu21 + At23L*gtu22 + At33L*gtu32; + CCTK_REAL Atm23 = At13L*gtu12 + At23L*gtu22 + At33L*gtu23; - CCTK_REAL Atm33 = At13L*gtu31 + At23L*gtu32 + At33L*gtu33; + CCTK_REAL Atm33 = At13L*gtu13 + At23L*gtu23 + At33L*gtu33; - CCTK_REAL Atu11 = Atm11*gtu11 + Atm12*gtu21 + Atm13*gtu31; + CCTK_REAL Atu11 = Atm11*gtu11 + Atm12*gtu12 + Atm13*gtu13; - CCTK_REAL Atu21 = Atm11*gtu21 + Atm12*gtu22 + Atm13*gtu32; + CCTK_REAL Atu12 = Atm11*gtu12 + Atm12*gtu22 + Atm13*gtu23; - CCTK_REAL Atu31 = Atm11*gtu31 + Atm12*gtu32 + Atm13*gtu33; + CCTK_REAL Atu13 = Atm11*gtu13 + Atm12*gtu23 + Atm13*gtu33; - CCTK_REAL Atu22 = Atm21*gtu21 + Atm22*gtu22 + Atm23*gtu32; + CCTK_REAL Atu22 = Atm21*gtu12 + Atm22*gtu22 + Atm23*gtu23; - CCTK_REAL Atu32 = Atm21*gtu31 + Atm22*gtu32 + Atm23*gtu33; + CCTK_REAL Atu23 = Atm21*gtu13 + Atm22*gtu23 + Atm23*gtu33; - CCTK_REAL Atu33 = Atm31*gtu31 + Atm32*gtu32 + Atm33*gtu33; + CCTK_REAL Atu33 = Atm31*gtu13 + Atm32*gtu23 + Atm33*gtu33; CCTK_REAL e4phi = IfThen(conformalMethod,pow(phiL,-2),exp(4*phiL)); @@ -826,8 +859,8 @@ void ML_BSSN_MP_RHS1_Body(cGH const * restrict const cctkGH, int const dir, int CCTK_REAL S3 = (-eTtzL + beta1L*eTxzL + beta2L*eTyzL + beta3L*eTzzL)*INV(alphaL); - CCTK_REAL trS = em4phi*(eTxxL*gtu11 + eTyyL*gtu22 + 2*(eTxyL*gtu21 + - eTxzL*gtu31 + eTyzL*gtu32) + eTzzL*gtu33); + CCTK_REAL trS = em4phi*(eTxxL*gtu11 + eTyyL*gtu22 + 2*(eTxyL*gtu12 + + eTxzL*gtu13 + eTyzL*gtu23) + eTzzL*gtu33); CCTK_REAL phirhsL = (epsdiss1*J11L + epsdiss2*J12L + epsdiss3*J13L)*PDdissipationNth1phi + (epsdiss1*J21L + epsdiss2*J22L + @@ -994,39 +1027,39 @@ void ML_BSSN_MP_RHS1_Body(cGH const * restrict const cctkGH, int const dir, int CCTK_REAL dotXt1 = (epsdiss1*J11L + epsdiss2*J12L + epsdiss3*J13L)*PDdissipationNth1Xt1 + (epsdiss1*J21L + epsdiss2*J22L + epsdiss3*J23L)*PDdissipationNth2Xt1 + (epsdiss1*J31L + epsdiss2*J32L + - epsdiss3*J33L)*PDdissipationNth3Xt1 - 2*((Atu11*J11L + Atu21*J12L + - Atu31*J13L)*PDstandardNth1alpha + (Atu11*J21L + Atu21*J22L + - Atu31*J23L)*PDstandardNth2alpha + (Atu11*J31L + Atu21*J32L + - Atu31*J33L)*PDstandardNth3alpha) + - 2*(gtu21*(J11L*J12L*PDstandardNth11beta1 + + epsdiss3*J33L)*PDdissipationNth3Xt1 - 2*((Atu11*J11L + Atu12*J12L + + Atu13*J13L)*PDstandardNth1alpha + (Atu11*J21L + Atu12*J22L + + Atu13*J23L)*PDstandardNth2alpha + (Atu11*J31L + Atu12*J32L + + Atu13*J33L)*PDstandardNth3alpha) + + 2*(gtu12*(J11L*J12L*PDstandardNth11beta1 + J12L*J21L*PDstandardNth12beta1 + J11L*J22L*PDstandardNth12beta1 + J12L*J31L*PDstandardNth13beta1 + J11L*J32L*PDstandardNth13beta1 + dJ112L*PDstandardNth1beta1 + J21L*J22L*PDstandardNth22beta1 + J22L*J31L*PDstandardNth23beta1 + J21L*J32L*PDstandardNth23beta1 + dJ212L*PDstandardNth2beta1 + J31L*J32L*PDstandardNth33beta1 + - dJ312L*PDstandardNth3beta1) + gtu31*(J11L*J13L*PDstandardNth11beta1 + + dJ312L*PDstandardNth3beta1) + gtu13*(J11L*J13L*PDstandardNth11beta1 + J13L*J21L*PDstandardNth12beta1 + J11L*J23L*PDstandardNth12beta1 + J13L*J31L*PDstandardNth13beta1 + J11L*J33L*PDstandardNth13beta1 + dJ113L*PDstandardNth1beta1 + J21L*J23L*PDstandardNth22beta1 + J23L*J31L*PDstandardNth23beta1 + J21L*J33L*PDstandardNth23beta1 + dJ213L*PDstandardNth2beta1 + J31L*J33L*PDstandardNth33beta1 + - dJ313L*PDstandardNth3beta1) + gtu32*(J12L*J13L*PDstandardNth11beta1 + + dJ313L*PDstandardNth3beta1) + gtu23*(J12L*J13L*PDstandardNth11beta1 + J13L*J22L*PDstandardNth12beta1 + J12L*J23L*PDstandardNth12beta1 + J13L*J32L*PDstandardNth13beta1 + J12L*J33L*PDstandardNth13beta1 + dJ123L*PDstandardNth1beta1 + J22L*J23L*PDstandardNth22beta1 + J23L*J32L*PDstandardNth23beta1 + J22L*J33L*PDstandardNth23beta1 + dJ223L*PDstandardNth2beta1 + J32L*J33L*PDstandardNth33beta1 + - dJ323L*PDstandardNth3beta1) + alphaL*(6*(Atu11*cdphi1 + Atu21*cdphi2 + - Atu31*cdphi3) + Atu11*Gt111 + 2*Atu21*Gt112 + 2*Atu31*Gt113 + - Atu22*Gt122 + 2*Atu32*Gt123 + Atu33*Gt133 - ktwothird*((gtu11*J11L + - gtu21*J12L + gtu31*J13L)*PDstandardNth1trK + (gtu11*J21L + gtu21*J22L + - gtu31*J23L)*PDstandardNth2trK + (gtu11*J31L + gtu21*J32L + - gtu31*J33L)*PDstandardNth3trK))) + (beta1L*J11L + beta2L*J12L + + dJ323L*PDstandardNth3beta1) + alphaL*(6*(Atu11*cdphi1 + Atu12*cdphi2 + + Atu13*cdphi3) + Atu11*Gt111 + 2*Atu12*Gt112 + 2*Atu13*Gt113 + + Atu22*Gt122 + 2*Atu23*Gt123 + Atu33*Gt133 - ktwothird*((gtu11*J11L + + gtu12*J12L + gtu13*J13L)*PDstandardNth1trK + (gtu11*J21L + gtu12*J22L + + gtu13*J23L)*PDstandardNth2trK + (gtu11*J31L + gtu12*J32L + + gtu13*J33L)*PDstandardNth3trK))) + (beta1L*J11L + beta2L*J12L + beta3L*J13L)*PDupwindNthAnti1Xt1 + (beta1L*J21L + beta2L*J22L + beta3L*J23L)*PDupwindNthAnti2Xt1 + (beta1L*J31L + beta2L*J32L + beta3L*J33L)*PDupwindNthAnti3Xt1 - - 50.26548245743669181540229413247204614715*alphaL*(gtu11*S1 + gtu21*S2 + - gtu31*S3) + ktwothird*(J11L*PDstandardNth1beta1 + + 50.26548245743669181540229413247204614715*alphaL*(gtu11*S1 + gtu12*S2 + + gtu13*S3) + ktwothird*(J11L*PDstandardNth1beta1 + J12L*PDstandardNth1beta2 + J13L*PDstandardNth1beta3 + J21L*PDstandardNth2beta1 + J22L*PDstandardNth2beta2 + J23L*PDstandardNth2beta3 + J31L*PDstandardNth3beta1 + @@ -1071,7 +1104,7 @@ void ML_BSSN_MP_RHS1_Body(cGH const * restrict const cctkGH, int const dir, int dJ311L*PDstandardNth3beta1 + dJ312L*PDstandardNth3beta2 + dJ313L*PDstandardNth3beta3 + PDstandardNth11beta1*SQR(J11L) + PDstandardNth22beta1*SQR(J21L) + PDstandardNth33beta1*SQR(J31L)) + - gtu21*(J11L*J12L*PDstandardNth11beta1 + J12L*J13L*PDstandardNth11beta3 + gtu12*(J11L*J12L*PDstandardNth11beta1 + J12L*J13L*PDstandardNth11beta3 + J12L*J21L*PDstandardNth12beta1 + J11L*J22L*PDstandardNth12beta1 + 2*J12L*J22L*PDstandardNth12beta2 + J13L*J22L*PDstandardNth12beta3 + J12L*J23L*PDstandardNth12beta3 + J12L*J31L*PDstandardNth13beta1 + @@ -1087,7 +1120,7 @@ void ML_BSSN_MP_RHS1_Body(cGH const * restrict const cctkGH, int const dir, int J32L*J33L*PDstandardNth33beta3 + dJ312L*PDstandardNth3beta1 + dJ322L*PDstandardNth3beta2 + dJ323L*PDstandardNth3beta3 + PDstandardNth11beta2*SQR(J12L) + PDstandardNth22beta2*SQR(J22L) + - PDstandardNth33beta2*SQR(J32L)) + gtu31*(J11L*J13L*PDstandardNth11beta1 + PDstandardNth33beta2*SQR(J32L)) + gtu13*(J11L*J13L*PDstandardNth11beta1 + J12L*J13L*PDstandardNth11beta2 + J13L*J21L*PDstandardNth12beta1 + J11L*J23L*PDstandardNth12beta1 + J13L*J22L*PDstandardNth12beta2 + J12L*J23L*PDstandardNth12beta2 + 2*J13L*J23L*PDstandardNth12beta3 + @@ -1108,39 +1141,39 @@ void ML_BSSN_MP_RHS1_Body(cGH const * restrict const cctkGH, int const dir, int CCTK_REAL dotXt2 = (epsdiss1*J11L + epsdiss2*J12L + epsdiss3*J13L)*PDdissipationNth1Xt2 + (epsdiss1*J21L + epsdiss2*J22L + epsdiss3*J23L)*PDdissipationNth2Xt2 + (epsdiss1*J31L + epsdiss2*J32L + - epsdiss3*J33L)*PDdissipationNth3Xt2 - 2*((Atu21*J11L + Atu22*J12L + - Atu32*J13L)*PDstandardNth1alpha + (Atu21*J21L + Atu22*J22L + - Atu32*J23L)*PDstandardNth2alpha + (Atu21*J31L + Atu22*J32L + - Atu32*J33L)*PDstandardNth3alpha) + - 2*(gtu21*(J11L*J12L*PDstandardNth11beta2 + + epsdiss3*J33L)*PDdissipationNth3Xt2 - 2*((Atu12*J11L + Atu22*J12L + + Atu23*J13L)*PDstandardNth1alpha + (Atu12*J21L + Atu22*J22L + + Atu23*J23L)*PDstandardNth2alpha + (Atu12*J31L + Atu22*J32L + + Atu23*J33L)*PDstandardNth3alpha) + + 2*(gtu12*(J11L*J12L*PDstandardNth11beta2 + J12L*J21L*PDstandardNth12beta2 + J11L*J22L*PDstandardNth12beta2 + J12L*J31L*PDstandardNth13beta2 + J11L*J32L*PDstandardNth13beta2 + dJ112L*PDstandardNth1beta2 + J21L*J22L*PDstandardNth22beta2 + J22L*J31L*PDstandardNth23beta2 + J21L*J32L*PDstandardNth23beta2 + dJ212L*PDstandardNth2beta2 + J31L*J32L*PDstandardNth33beta2 + - dJ312L*PDstandardNth3beta2) + gtu31*(J11L*J13L*PDstandardNth11beta2 + + dJ312L*PDstandardNth3beta2) + gtu13*(J11L*J13L*PDstandardNth11beta2 + J13L*J21L*PDstandardNth12beta2 + J11L*J23L*PDstandardNth12beta2 + J13L*J31L*PDstandardNth13beta2 + J11L*J33L*PDstandardNth13beta2 + dJ113L*PDstandardNth1beta2 + J21L*J23L*PDstandardNth22beta2 + J23L*J31L*PDstandardNth23beta2 + J21L*J33L*PDstandardNth23beta2 + dJ213L*PDstandardNth2beta2 + J31L*J33L*PDstandardNth33beta2 + - dJ313L*PDstandardNth3beta2) + gtu32*(J12L*J13L*PDstandardNth11beta2 + + dJ313L*PDstandardNth3beta2) + gtu23*(J12L*J13L*PDstandardNth11beta2 + J13L*J22L*PDstandardNth12beta2 + J12L*J23L*PDstandardNth12beta2 + J13L*J32L*PDstandardNth13beta2 + J12L*J33L*PDstandardNth13beta2 + dJ123L*PDstandardNth1beta2 + J22L*J23L*PDstandardNth22beta2 + J23L*J32L*PDstandardNth23beta2 + J22L*J33L*PDstandardNth23beta2 + dJ223L*PDstandardNth2beta2 + J32L*J33L*PDstandardNth33beta2 + - dJ323L*PDstandardNth3beta2) + alphaL*(6*(Atu21*cdphi1 + Atu22*cdphi2 + - Atu32*cdphi3) + Atu11*Gt211 + 2*Atu21*Gt212 + 2*Atu31*Gt213 + - Atu22*Gt222 + 2*Atu32*Gt223 + Atu33*Gt233 - ktwothird*((gtu21*J11L + - gtu22*J12L + gtu32*J13L)*PDstandardNth1trK + (gtu21*J21L + gtu22*J22L + - gtu32*J23L)*PDstandardNth2trK + (gtu21*J31L + gtu22*J32L + - gtu32*J33L)*PDstandardNth3trK))) + (beta1L*J11L + beta2L*J12L + + dJ323L*PDstandardNth3beta2) + alphaL*(6*(Atu12*cdphi1 + Atu22*cdphi2 + + Atu23*cdphi3) + Atu11*Gt211 + 2*Atu12*Gt212 + 2*Atu13*Gt213 + + Atu22*Gt222 + 2*Atu23*Gt223 + Atu33*Gt233 - ktwothird*((gtu12*J11L + + gtu22*J12L + gtu23*J13L)*PDstandardNth1trK + (gtu12*J21L + gtu22*J22L + + gtu23*J23L)*PDstandardNth2trK + (gtu12*J31L + gtu22*J32L + + gtu23*J33L)*PDstandardNth3trK))) + (beta1L*J11L + beta2L*J12L + beta3L*J13L)*PDupwindNthAnti1Xt2 + (beta1L*J21L + beta2L*J22L + beta3L*J23L)*PDupwindNthAnti2Xt2 + (beta1L*J31L + beta2L*J32L + beta3L*J33L)*PDupwindNthAnti3Xt2 - - 50.26548245743669181540229413247204614715*alphaL*(gtu21*S1 + gtu22*S2 + - gtu32*S3) + ktwothird*(J11L*PDstandardNth1beta1 + + 50.26548245743669181540229413247204614715*alphaL*(gtu12*S1 + gtu22*S2 + + gtu23*S3) + ktwothird*(J11L*PDstandardNth1beta1 + J12L*PDstandardNth1beta2 + J13L*PDstandardNth1beta3 + J21L*PDstandardNth2beta1 + J22L*PDstandardNth2beta2 + J23L*PDstandardNth2beta3 + J31L*PDstandardNth3beta1 + @@ -1168,7 +1201,7 @@ void ML_BSSN_MP_RHS1_Body(cGH const * restrict const cctkGH, int const dir, int 2*J23L*J33L*PDstandardNth23beta2 + dJ233L*PDstandardNth2beta2 + dJ333L*PDstandardNth3beta2 + PDstandardNth11beta2*SQR(J13L) + PDstandardNth22beta2*SQR(J23L) + PDstandardNth33beta2*SQR(J33L)) + - kthird*(gtu21*(J11L*J12L*PDstandardNth11beta2 + + kthird*(gtu12*(J11L*J12L*PDstandardNth11beta2 + J11L*J13L*PDstandardNth11beta3 + 2*J11L*J21L*PDstandardNth12beta1 + J12L*J21L*PDstandardNth12beta2 + J11L*J22L*PDstandardNth12beta2 + J13L*J21L*PDstandardNth12beta3 + J11L*J23L*PDstandardNth12beta3 + @@ -1201,7 +1234,7 @@ void ML_BSSN_MP_RHS1_Body(cGH const * restrict const cctkGH, int const dir, int J32L*J33L*PDstandardNth33beta3 + dJ312L*PDstandardNth3beta1 + dJ322L*PDstandardNth3beta2 + dJ323L*PDstandardNth3beta3 + PDstandardNth11beta2*SQR(J12L) + PDstandardNth22beta2*SQR(J22L) + - PDstandardNth33beta2*SQR(J32L)) + gtu32*(J11L*J13L*PDstandardNth11beta1 + PDstandardNth33beta2*SQR(J32L)) + gtu23*(J11L*J13L*PDstandardNth11beta1 + J12L*J13L*PDstandardNth11beta2 + J13L*J21L*PDstandardNth12beta1 + J11L*J23L*PDstandardNth12beta1 + J13L*J22L*PDstandardNth12beta2 + J12L*J23L*PDstandardNth12beta2 + 2*J13L*J23L*PDstandardNth12beta3 + @@ -1222,38 +1255,38 @@ void ML_BSSN_MP_RHS1_Body(cGH const * restrict const cctkGH, int const dir, int CCTK_REAL dotXt3 = (epsdiss1*J11L + epsdiss2*J12L + epsdiss3*J13L)*PDdissipationNth1Xt3 + (epsdiss1*J21L + epsdiss2*J22L + epsdiss3*J23L)*PDdissipationNth2Xt3 + (epsdiss1*J31L + epsdiss2*J32L + - epsdiss3*J33L)*PDdissipationNth3Xt3 - 2*((Atu31*J11L + Atu32*J12L + - Atu33*J13L)*PDstandardNth1alpha + (Atu31*J21L + Atu32*J22L + - Atu33*J23L)*PDstandardNth2alpha + (Atu31*J31L + Atu32*J32L + + epsdiss3*J33L)*PDdissipationNth3Xt3 - 2*((Atu13*J11L + Atu23*J12L + + Atu33*J13L)*PDstandardNth1alpha + (Atu13*J21L + Atu23*J22L + + Atu33*J23L)*PDstandardNth2alpha + (Atu13*J31L + Atu23*J32L + Atu33*J33L)*PDstandardNth3alpha) + - 2*(gtu21*(J11L*J12L*PDstandardNth11beta3 + + 2*(gtu12*(J11L*J12L*PDstandardNth11beta3 + J12L*J21L*PDstandardNth12beta3 + J11L*J22L*PDstandardNth12beta3 + J12L*J31L*PDstandardNth13beta3 + J11L*J32L*PDstandardNth13beta3 + dJ112L*PDstandardNth1beta3 + J21L*J22L*PDstandardNth22beta3 + J22L*J31L*PDstandardNth23beta3 + J21L*J32L*PDstandardNth23beta3 + dJ212L*PDstandardNth2beta3 + J31L*J32L*PDstandardNth33beta3 + - dJ312L*PDstandardNth3beta3) + gtu31*(J11L*J13L*PDstandardNth11beta3 + + dJ312L*PDstandardNth3beta3) + gtu13*(J11L*J13L*PDstandardNth11beta3 + J13L*J21L*PDstandardNth12beta3 + J11L*J23L*PDstandardNth12beta3 + J13L*J31L*PDstandardNth13beta3 + J11L*J33L*PDstandardNth13beta3 + dJ113L*PDstandardNth1beta3 + J21L*J23L*PDstandardNth22beta3 + J23L*J31L*PDstandardNth23beta3 + J21L*J33L*PDstandardNth23beta3 + dJ213L*PDstandardNth2beta3 + J31L*J33L*PDstandardNth33beta3 + - dJ313L*PDstandardNth3beta3) + gtu32*(J12L*J13L*PDstandardNth11beta3 + + dJ313L*PDstandardNth3beta3) + gtu23*(J12L*J13L*PDstandardNth11beta3 + J13L*J22L*PDstandardNth12beta3 + J12L*J23L*PDstandardNth12beta3 + J13L*J32L*PDstandardNth13beta3 + J12L*J33L*PDstandardNth13beta3 + dJ123L*PDstandardNth1beta3 + J22L*J23L*PDstandardNth22beta3 + J23L*J32L*PDstandardNth23beta3 + J22L*J33L*PDstandardNth23beta3 + dJ223L*PDstandardNth2beta3 + J32L*J33L*PDstandardNth33beta3 + - dJ323L*PDstandardNth3beta3) + alphaL*(6*(Atu31*cdphi1 + Atu32*cdphi2 + - Atu33*cdphi3) + Atu11*Gt311 + 2*Atu21*Gt312 + 2*Atu31*Gt313 + - Atu22*Gt322 + 2*Atu32*Gt323 + Atu33*Gt333 - ktwothird*((gtu31*J11L + - gtu32*J12L + gtu33*J13L)*PDstandardNth1trK + (gtu31*J21L + gtu32*J22L + - gtu33*J23L)*PDstandardNth2trK + (gtu31*J31L + gtu32*J32L + + dJ323L*PDstandardNth3beta3) + alphaL*(6*(Atu13*cdphi1 + Atu23*cdphi2 + + Atu33*cdphi3) + Atu11*Gt311 + 2*Atu12*Gt312 + 2*Atu13*Gt313 + + Atu22*Gt322 + 2*Atu23*Gt323 + Atu33*Gt333 - ktwothird*((gtu13*J11L + + gtu23*J12L + gtu33*J13L)*PDstandardNth1trK + (gtu13*J21L + gtu23*J22L + + gtu33*J23L)*PDstandardNth2trK + (gtu13*J31L + gtu23*J32L + gtu33*J33L)*PDstandardNth3trK))) + (beta1L*J11L + beta2L*J12L + beta3L*J13L)*PDupwindNthAnti1Xt3 + (beta1L*J21L + beta2L*J22L + beta3L*J23L)*PDupwindNthAnti2Xt3 + (beta1L*J31L + beta2L*J32L + beta3L*J33L)*PDupwindNthAnti3Xt3 - - 50.26548245743669181540229413247204614715*alphaL*(gtu31*S1 + gtu32*S2 + + 50.26548245743669181540229413247204614715*alphaL*(gtu13*S1 + gtu23*S2 + gtu33*S3) + ktwothird*(J11L*PDstandardNth1beta1 + J12L*PDstandardNth1beta2 + J13L*PDstandardNth1beta3 + J21L*PDstandardNth2beta1 + J22L*PDstandardNth2beta2 + @@ -1282,7 +1315,7 @@ void ML_BSSN_MP_RHS1_Body(cGH const * restrict const cctkGH, int const dir, int 2*J23L*J33L*PDstandardNth23beta3 + dJ233L*PDstandardNth2beta3 + dJ333L*PDstandardNth3beta3 + PDstandardNth11beta3*SQR(J13L) + PDstandardNth22beta3*SQR(J23L) + PDstandardNth33beta3*SQR(J33L)) + - kthird*(gtu31*(J11L*J12L*PDstandardNth11beta2 + + kthird*(gtu13*(J11L*J12L*PDstandardNth11beta2 + J11L*J13L*PDstandardNth11beta3 + 2*J11L*J21L*PDstandardNth12beta1 + J12L*J21L*PDstandardNth12beta2 + J11L*J22L*PDstandardNth12beta2 + J13L*J21L*PDstandardNth12beta3 + J11L*J23L*PDstandardNth12beta3 + @@ -1299,7 +1332,7 @@ void ML_BSSN_MP_RHS1_Body(cGH const * restrict const cctkGH, int const dir, int dJ311L*PDstandardNth3beta1 + dJ312L*PDstandardNth3beta2 + dJ313L*PDstandardNth3beta3 + PDstandardNth11beta1*SQR(J11L) + PDstandardNth22beta1*SQR(J21L) + PDstandardNth33beta1*SQR(J31L)) + - gtu32*(J11L*J12L*PDstandardNth11beta1 + J12L*J13L*PDstandardNth11beta3 + gtu23*(J11L*J12L*PDstandardNth11beta1 + J12L*J13L*PDstandardNth11beta3 + J12L*J21L*PDstandardNth12beta1 + J11L*J22L*PDstandardNth12beta1 + 2*J12L*J22L*PDstandardNth12beta2 + J13L*J22L*PDstandardNth12beta3 + J12L*J23L*PDstandardNth12beta3 + J12L*J31L*PDstandardNth13beta1 + @@ -1350,39 +1383,39 @@ void ML_BSSN_MP_RHS1_Body(cGH const * restrict const cctkGH, int const dir, int (J12L*PDupwindNthSymm1trK + J22L*PDupwindNthSymm2trK + J32L*PDupwindNthSymm3trK)*Abs(beta2L) + (J13L*PDupwindNthSymm1trK + J23L*PDupwindNthSymm2trK + J33L*PDupwindNthSymm3trK)*Abs(beta3L) - - em4phi*(2*((gtu21*J11L*J22L + gtu31*(J13L*J21L + - J11L*J23L))*PDstandardNth12alpha + (gtu21*J11L*J32L + gtu31*(J13L*J31L - + J11L*J33L))*PDstandardNth13alpha + J11L*((gtu21*J12L + - gtu31*J13L)*PDstandardNth11alpha + gtu11*(J21L*PDstandardNth12alpha + - J31L*PDstandardNth13alpha)) + J12L*(gtu32*J13L*PDstandardNth11alpha + - gtu21*(J21L*PDstandardNth12alpha + J31L*PDstandardNth13alpha)) + - (gtu11*J21L*J31L + (gtu22*J22L + gtu32*J23L)*J32L + (gtu32*J22L + + em4phi*(2*((gtu12*J11L*J22L + gtu13*(J13L*J21L + + J11L*J23L))*PDstandardNth12alpha + (gtu12*J11L*J32L + gtu13*(J13L*J31L + + J11L*J33L))*PDstandardNth13alpha + J11L*((gtu12*J12L + + gtu13*J13L)*PDstandardNth11alpha + gtu11*(J21L*PDstandardNth12alpha + + J31L*PDstandardNth13alpha)) + J12L*(gtu23*J13L*PDstandardNth11alpha + + gtu12*(J21L*PDstandardNth12alpha + J31L*PDstandardNth13alpha)) + + (gtu11*J21L*J31L + (gtu22*J22L + gtu23*J23L)*J32L + (gtu23*J22L + gtu33*J23L)*J33L)*PDstandardNth23alpha + J22L*((gtu22*J12L + - gtu32*J13L)*PDstandardNth12alpha + (gtu21*J21L + - gtu32*J23L)*PDstandardNth22alpha + gtu21*J31L*PDstandardNth23alpha) + - J23L*((gtu32*J12L + gtu33*J13L)*PDstandardNth12alpha + - gtu31*(J21L*PDstandardNth22alpha + J31L*PDstandardNth23alpha)) + - (gtu21*(dJ312L + cdphi2*J31L) + cdphi3*(gtu31*J31L + - gtu32*J32L))*PDstandardNth3alpha + J32L*((gtu22*J12L + - gtu32*J13L)*PDstandardNth13alpha + gtu32*J33L*PDstandardNth33alpha + - gtu21*(J21L*PDstandardNth23alpha + J31L*PDstandardNth33alpha) + - cdphi2*gtu22*PDstandardNth3alpha) + J33L*((gtu32*J12L + - gtu33*J13L)*PDstandardNth13alpha + gtu31*(J21L*PDstandardNth23alpha + - J31L*PDstandardNth33alpha) + (cdphi2*gtu32 + + gtu23*J13L)*PDstandardNth12alpha + (gtu12*J21L + + gtu23*J23L)*PDstandardNth22alpha + gtu12*J31L*PDstandardNth23alpha) + + J23L*((gtu23*J12L + gtu33*J13L)*PDstandardNth12alpha + + gtu13*(J21L*PDstandardNth22alpha + J31L*PDstandardNth23alpha)) + + (gtu12*(dJ312L + cdphi2*J31L) + cdphi3*(gtu13*J31L + + gtu23*J32L))*PDstandardNth3alpha + J32L*((gtu22*J12L + + gtu23*J13L)*PDstandardNth13alpha + gtu23*J33L*PDstandardNth33alpha + + gtu12*(J21L*PDstandardNth23alpha + J31L*PDstandardNth33alpha) + + cdphi2*gtu22*PDstandardNth3alpha) + J33L*((gtu23*J12L + + gtu33*J13L)*PDstandardNth13alpha + gtu13*(J21L*PDstandardNth23alpha + + J31L*PDstandardNth33alpha) + (cdphi2*gtu23 + cdphi3*gtu33)*PDstandardNth3alpha)) + PDstandardNth1alpha*(gtu11*(dJ111L + 2*cdphi1*J11L) + gtu22*(dJ122L + - 2*cdphi2*J12L) + gtu33*(dJ133L + 2*cdphi3*J13L) + 2*(dJ112L*gtu21 + - dJ113L*gtu31 + dJ123L*gtu32 + cdphi2*gtu21*J11L + cdphi3*gtu31*J11L + - cdphi1*gtu21*J12L + cdphi3*gtu32*J12L + cdphi1*gtu31*J13L + - cdphi2*gtu32*J13L) - J11L*Xtn1 - J12L*Xtn2 - J13L*Xtn3) + + 2*cdphi2*J12L) + gtu33*(dJ133L + 2*cdphi3*J13L) + 2*(dJ112L*gtu12 + + dJ113L*gtu13 + dJ123L*gtu23 + cdphi2*gtu12*J11L + cdphi3*gtu13*J11L + + cdphi1*gtu12*J12L + cdphi3*gtu23*J12L + cdphi1*gtu13*J13L + + cdphi2*gtu23*J13L) - J11L*Xtn1 - J12L*Xtn2 - J13L*Xtn3) + PDstandardNth2alpha*(gtu11*(dJ211L + 2*cdphi1*J21L) + gtu22*(dJ222L + - 2*cdphi2*J22L) + gtu33*(dJ233L + 2*cdphi3*J23L) + 2*(dJ212L*gtu21 + - dJ213L*gtu31 + dJ223L*gtu32 + cdphi2*gtu21*J21L + cdphi3*gtu31*J21L + - cdphi1*gtu21*J22L + cdphi3*gtu32*J22L + cdphi1*gtu31*J23L + - cdphi2*gtu32*J23L) - J21L*Xtn1 - J22L*Xtn2 - J23L*Xtn3) + + 2*cdphi2*J22L) + gtu33*(dJ233L + 2*cdphi3*J23L) + 2*(dJ212L*gtu12 + + dJ213L*gtu13 + dJ223L*gtu23 + cdphi2*gtu12*J21L + cdphi3*gtu13*J21L + + cdphi1*gtu12*J22L + cdphi3*gtu23*J22L + cdphi1*gtu13*J23L + + cdphi2*gtu23*J23L) - J21L*Xtn1 - J22L*Xtn2 - J23L*Xtn3) + PDstandardNth3alpha*(dJ322L*gtu22 + dJ333L*gtu33 + gtu11*(dJ311L + - 2*cdphi1*J31L) + 2*(dJ313L*gtu31 + dJ323L*gtu32 + cdphi1*gtu21*J32L + - cdphi1*gtu31*J33L) - J31L*Xtn1 - J32L*Xtn2 - J33L*Xtn3) + + 2*cdphi1*J31L) + 2*(dJ313L*gtu13 + dJ323L*gtu23 + cdphi1*gtu12*J32L + + cdphi1*gtu13*J33L) - J31L*Xtn1 - J32L*Xtn2 - J33L*Xtn3) + PDstandardNth11alpha*(gtu11*SQR(J11L) + gtu22*SQR(J12L) + gtu33*SQR(J13L)) + PDstandardNth22alpha*(gtu11*SQR(J21L) + gtu22*SQR(J22L) + gtu33*SQR(J23L)) + diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_RHS2.c b/ML_BSSN_MP/src/ML_BSSN_MP_RHS2.c index edda1f0..ddb1b62 100644 --- a/ML_BSSN_MP/src/ML_BSSN_MP_RHS2.c +++ b/ML_BSSN_MP/src/ML_BSSN_MP_RHS2.c @@ -20,6 +20,18 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((x) * (x) * (x) * (x)) +void ML_BSSN_MP_RHS2_SelectBCs(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT ierr = 0; + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_curvrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_curvrhs."); + return; +} + 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[]) { DECLARE_CCTK_ARGUMENTS; @@ -454,13 +466,13 @@ void ML_BSSN_MP_RHS2_Body(cGH const * restrict const cctkGH, int const dir, int CCTK_REAL gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L)); - CCTK_REAL gtu21 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt); + CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt); - CCTK_REAL gtu31 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt); + CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt); CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L)); - CCTK_REAL gtu32 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt); + CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt); CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L)); @@ -539,104 +551,104 @@ void ML_BSSN_MP_RHS2_Body(cGH const * restrict const cctkGH, int const dir, int CCTK_REAL Gtl333 = khalf*(J13L*PDstandardNth1gt33 + J23L*PDstandardNth2gt33 + J33L*PDstandardNth3gt33); - CCTK_REAL Gtlu111 = Gtl111*gtu11 + Gtl112*gtu21 + Gtl113*gtu31; + CCTK_REAL Gtlu111 = Gtl111*gtu11 + Gtl112*gtu12 + Gtl113*gtu13; - CCTK_REAL Gtlu112 = Gtl111*gtu21 + Gtl112*gtu22 + Gtl113*gtu32; + CCTK_REAL Gtlu112 = Gtl111*gtu12 + Gtl112*gtu22 + Gtl113*gtu23; - CCTK_REAL Gtlu113 = Gtl111*gtu31 + Gtl112*gtu32 + Gtl113*gtu33; + CCTK_REAL Gtlu113 = Gtl111*gtu13 + Gtl112*gtu23 + Gtl113*gtu33; - CCTK_REAL Gtlu121 = Gtl112*gtu11 + Gtl122*gtu21 + Gtl123*gtu31; + CCTK_REAL Gtlu121 = Gtl112*gtu11 + Gtl122*gtu12 + Gtl123*gtu13; - CCTK_REAL Gtlu122 = Gtl112*gtu21 + Gtl122*gtu22 + Gtl123*gtu32; + CCTK_REAL Gtlu122 = Gtl112*gtu12 + Gtl122*gtu22 + Gtl123*gtu23; - CCTK_REAL Gtlu123 = Gtl112*gtu31 + Gtl122*gtu32 + Gtl123*gtu33; + CCTK_REAL Gtlu123 = Gtl112*gtu13 + Gtl122*gtu23 + Gtl123*gtu33; - CCTK_REAL Gtlu131 = Gtl113*gtu11 + Gtl123*gtu21 + Gtl133*gtu31; + CCTK_REAL Gtlu131 = Gtl113*gtu11 + Gtl123*gtu12 + Gtl133*gtu13; - CCTK_REAL Gtlu132 = Gtl113*gtu21 + Gtl123*gtu22 + Gtl133*gtu32; + CCTK_REAL Gtlu132 = Gtl113*gtu12 + Gtl123*gtu22 + Gtl133*gtu23; - CCTK_REAL Gtlu133 = Gtl113*gtu31 + Gtl123*gtu32 + Gtl133*gtu33; + CCTK_REAL Gtlu133 = Gtl113*gtu13 + Gtl123*gtu23 + Gtl133*gtu33; - CCTK_REAL Gtlu211 = Gtl211*gtu11 + Gtl212*gtu21 + Gtl213*gtu31; + CCTK_REAL Gtlu211 = Gtl211*gtu11 + Gtl212*gtu12 + Gtl213*gtu13; - CCTK_REAL Gtlu212 = Gtl211*gtu21 + Gtl212*gtu22 + Gtl213*gtu32; + CCTK_REAL Gtlu212 = Gtl211*gtu12 + Gtl212*gtu22 + Gtl213*gtu23; - CCTK_REAL Gtlu213 = Gtl211*gtu31 + Gtl212*gtu32 + Gtl213*gtu33; + CCTK_REAL Gtlu213 = Gtl211*gtu13 + Gtl212*gtu23 + Gtl213*gtu33; - CCTK_REAL Gtlu221 = Gtl212*gtu11 + Gtl222*gtu21 + Gtl223*gtu31; + CCTK_REAL Gtlu221 = Gtl212*gtu11 + Gtl222*gtu12 + Gtl223*gtu13; - CCTK_REAL Gtlu222 = Gtl212*gtu21 + Gtl222*gtu22 + Gtl223*gtu32; + CCTK_REAL Gtlu222 = Gtl212*gtu12 + Gtl222*gtu22 + Gtl223*gtu23; - CCTK_REAL Gtlu223 = Gtl212*gtu31 + Gtl222*gtu32 + Gtl223*gtu33; + CCTK_REAL Gtlu223 = Gtl212*gtu13 + Gtl222*gtu23 + Gtl223*gtu33; - CCTK_REAL Gtlu231 = Gtl213*gtu11 + Gtl223*gtu21 + Gtl233*gtu31; + CCTK_REAL Gtlu231 = Gtl213*gtu11 + Gtl223*gtu12 + Gtl233*gtu13; - CCTK_REAL Gtlu232 = Gtl213*gtu21 + Gtl223*gtu22 + Gtl233*gtu32; + CCTK_REAL Gtlu232 = Gtl213*gtu12 + Gtl223*gtu22 + Gtl233*gtu23; - CCTK_REAL Gtlu233 = Gtl213*gtu31 + Gtl223*gtu32 + Gtl233*gtu33; + CCTK_REAL Gtlu233 = Gtl213*gtu13 + Gtl223*gtu23 + Gtl233*gtu33; - CCTK_REAL Gtlu311 = Gtl311*gtu11 + Gtl312*gtu21 + Gtl313*gtu31; + CCTK_REAL Gtlu311 = Gtl311*gtu11 + Gtl312*gtu12 + Gtl313*gtu13; - CCTK_REAL Gtlu312 = Gtl311*gtu21 + Gtl312*gtu22 + Gtl313*gtu32; + CCTK_REAL Gtlu312 = Gtl311*gtu12 + Gtl312*gtu22 + Gtl313*gtu23; - CCTK_REAL Gtlu313 = Gtl311*gtu31 + Gtl312*gtu32 + Gtl313*gtu33; + CCTK_REAL Gtlu313 = Gtl311*gtu13 + Gtl312*gtu23 + Gtl313*gtu33; - CCTK_REAL Gtlu321 = Gtl312*gtu11 + Gtl322*gtu21 + Gtl323*gtu31; + CCTK_REAL Gtlu321 = Gtl312*gtu11 + Gtl322*gtu12 + Gtl323*gtu13; - CCTK_REAL Gtlu322 = Gtl312*gtu21 + Gtl322*gtu22 + Gtl323*gtu32; + CCTK_REAL Gtlu322 = Gtl312*gtu12 + Gtl322*gtu22 + Gtl323*gtu23; - CCTK_REAL Gtlu323 = Gtl312*gtu31 + Gtl322*gtu32 + Gtl323*gtu33; + CCTK_REAL Gtlu323 = Gtl312*gtu13 + Gtl322*gtu23 + Gtl323*gtu33; - CCTK_REAL Gtlu331 = Gtl313*gtu11 + Gtl323*gtu21 + Gtl333*gtu31; + CCTK_REAL Gtlu331 = Gtl313*gtu11 + Gtl323*gtu12 + Gtl333*gtu13; - CCTK_REAL Gtlu332 = Gtl313*gtu21 + Gtl323*gtu22 + Gtl333*gtu32; + CCTK_REAL Gtlu332 = Gtl313*gtu12 + Gtl323*gtu22 + Gtl333*gtu23; - CCTK_REAL Gtlu333 = Gtl313*gtu31 + Gtl323*gtu32 + Gtl333*gtu33; + CCTK_REAL Gtlu333 = Gtl313*gtu13 + Gtl323*gtu23 + Gtl333*gtu33; - CCTK_REAL Gt111 = Gtl111*gtu11 + Gtl211*gtu21 + Gtl311*gtu31; + CCTK_REAL Gt111 = Gtl111*gtu11 + Gtl211*gtu12 + Gtl311*gtu13; - CCTK_REAL Gt211 = Gtl111*gtu21 + Gtl211*gtu22 + Gtl311*gtu32; + CCTK_REAL Gt211 = Gtl111*gtu12 + Gtl211*gtu22 + Gtl311*gtu23; - CCTK_REAL Gt311 = Gtl111*gtu31 + Gtl211*gtu32 + Gtl311*gtu33; + CCTK_REAL Gt311 = Gtl111*gtu13 + Gtl211*gtu23 + Gtl311*gtu33; - CCTK_REAL Gt112 = Gtl112*gtu11 + Gtl212*gtu21 + Gtl312*gtu31; + CCTK_REAL Gt112 = Gtl112*gtu11 + Gtl212*gtu12 + Gtl312*gtu13; - CCTK_REAL Gt212 = Gtl112*gtu21 + Gtl212*gtu22 + Gtl312*gtu32; + CCTK_REAL Gt212 = Gtl112*gtu12 + Gtl212*gtu22 + Gtl312*gtu23; - CCTK_REAL Gt312 = Gtl112*gtu31 + Gtl212*gtu32 + Gtl312*gtu33; + CCTK_REAL Gt312 = Gtl112*gtu13 + Gtl212*gtu23 + Gtl312*gtu33; - CCTK_REAL Gt113 = Gtl113*gtu11 + Gtl213*gtu21 + Gtl313*gtu31; + CCTK_REAL Gt113 = Gtl113*gtu11 + Gtl213*gtu12 + Gtl313*gtu13; - CCTK_REAL Gt213 = Gtl113*gtu21 + Gtl213*gtu22 + Gtl313*gtu32; + CCTK_REAL Gt213 = Gtl113*gtu12 + Gtl213*gtu22 + Gtl313*gtu23; - CCTK_REAL Gt313 = Gtl113*gtu31 + Gtl213*gtu32 + Gtl313*gtu33; + CCTK_REAL Gt313 = Gtl113*gtu13 + Gtl213*gtu23 + Gtl313*gtu33; - CCTK_REAL Gt122 = Gtl122*gtu11 + Gtl222*gtu21 + Gtl322*gtu31; + CCTK_REAL Gt122 = Gtl122*gtu11 + Gtl222*gtu12 + Gtl322*gtu13; - CCTK_REAL Gt222 = Gtl122*gtu21 + Gtl222*gtu22 + Gtl322*gtu32; + CCTK_REAL Gt222 = Gtl122*gtu12 + Gtl222*gtu22 + Gtl322*gtu23; - CCTK_REAL Gt322 = Gtl122*gtu31 + Gtl222*gtu32 + Gtl322*gtu33; + CCTK_REAL Gt322 = Gtl122*gtu13 + Gtl222*gtu23 + Gtl322*gtu33; - CCTK_REAL Gt123 = Gtl123*gtu11 + Gtl223*gtu21 + Gtl323*gtu31; + CCTK_REAL Gt123 = Gtl123*gtu11 + Gtl223*gtu12 + Gtl323*gtu13; - CCTK_REAL Gt223 = Gtl123*gtu21 + Gtl223*gtu22 + Gtl323*gtu32; + CCTK_REAL Gt223 = Gtl123*gtu12 + Gtl223*gtu22 + Gtl323*gtu23; - CCTK_REAL Gt323 = Gtl123*gtu31 + Gtl223*gtu32 + Gtl323*gtu33; + CCTK_REAL Gt323 = Gtl123*gtu13 + Gtl223*gtu23 + Gtl323*gtu33; - CCTK_REAL Gt133 = Gtl133*gtu11 + Gtl233*gtu21 + Gtl333*gtu31; + CCTK_REAL Gt133 = Gtl133*gtu11 + Gtl233*gtu12 + Gtl333*gtu13; - CCTK_REAL Gt233 = Gtl133*gtu21 + Gtl233*gtu22 + Gtl333*gtu32; + CCTK_REAL Gt233 = Gtl133*gtu12 + Gtl233*gtu22 + Gtl333*gtu23; - CCTK_REAL Gt333 = Gtl133*gtu31 + Gtl233*gtu32 + Gtl333*gtu33; + CCTK_REAL Gt333 = Gtl133*gtu13 + Gtl233*gtu23 + Gtl333*gtu33; - CCTK_REAL Xtn1 = Gt111*gtu11 + Gt122*gtu22 + 2*(Gt112*gtu21 + - Gt113*gtu31 + Gt123*gtu32) + Gt133*gtu33; + CCTK_REAL Xtn1 = Gt111*gtu11 + Gt122*gtu22 + 2*(Gt112*gtu12 + + Gt113*gtu13 + Gt123*gtu23) + Gt133*gtu33; - CCTK_REAL Xtn2 = Gt211*gtu11 + Gt222*gtu22 + 2*(Gt212*gtu21 + - Gt213*gtu31 + Gt223*gtu32) + Gt233*gtu33; + CCTK_REAL Xtn2 = Gt211*gtu11 + Gt222*gtu22 + 2*(Gt212*gtu12 + + Gt213*gtu13 + Gt223*gtu23) + Gt233*gtu33; - CCTK_REAL Xtn3 = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu21 + - Gt313*gtu31 + Gt323*gtu32) + Gt333*gtu33; + CCTK_REAL Xtn3 = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu12 + + Gt313*gtu13 + Gt323*gtu23) + Gt333*gtu33; CCTK_REAL Rt11 = 3*(Gt111*Gtlu111 + Gt112*Gtlu112 + Gt113*Gtlu113) + 2*(Gt211*Gtlu121 + Gt212*Gtlu122 + Gt213*Gtlu123 + Gt311*Gtlu131 + @@ -647,19 +659,19 @@ void ML_BSSN_MP_RHS2_Body(cGH const * restrict const cctkGH, int const dir, int gt12L*PDstandardNth2Xt2 + gt13L*PDstandardNth2Xt3) + J31L*(gt11L*PDstandardNth3Xt1 + gt12L*PDstandardNth3Xt2 + gt13L*PDstandardNth3Xt3) + Gtl111*Xtn1 + Gtl112*Xtn2 + Gtl113*Xtn3 + - khalf*(-2*(gtu21*(J11L*J12L*PDstandardNth11gt11 + + khalf*(-2*(gtu12*(J11L*J12L*PDstandardNth11gt11 + J12L*J21L*PDstandardNth12gt11 + J11L*J22L*PDstandardNth12gt11 + J12L*J31L*PDstandardNth13gt11 + J11L*J32L*PDstandardNth13gt11 + dJ112L*PDstandardNth1gt11 + J21L*J22L*PDstandardNth22gt11 + J22L*J31L*PDstandardNth23gt11 + J21L*J32L*PDstandardNth23gt11 + dJ212L*PDstandardNth2gt11 + J31L*J32L*PDstandardNth33gt11 + - dJ312L*PDstandardNth3gt11) + gtu31*(J11L*J13L*PDstandardNth11gt11 + + dJ312L*PDstandardNth3gt11) + gtu13*(J11L*J13L*PDstandardNth11gt11 + J13L*J21L*PDstandardNth12gt11 + J11L*J23L*PDstandardNth12gt11 + J13L*J31L*PDstandardNth13gt11 + J11L*J33L*PDstandardNth13gt11 + dJ113L*PDstandardNth1gt11 + J21L*J23L*PDstandardNth22gt11 + J23L*J31L*PDstandardNth23gt11 + J21L*J33L*PDstandardNth23gt11 + dJ213L*PDstandardNth2gt11 + J31L*J33L*PDstandardNth33gt11 + - dJ313L*PDstandardNth3gt11) + gtu32*(J12L*J13L*PDstandardNth11gt11 + + dJ313L*PDstandardNth3gt11) + gtu23*(J12L*J13L*PDstandardNth11gt11 + J13L*J22L*PDstandardNth12gt11 + J12L*J23L*PDstandardNth12gt11 + J13L*J32L*PDstandardNth13gt11 + J12L*J33L*PDstandardNth13gt11 + dJ123L*PDstandardNth1gt11 + J22L*J23L*PDstandardNth22gt11 + @@ -692,19 +704,19 @@ void ML_BSSN_MP_RHS2_Body(cGH const * restrict const cctkGH, int const dir, int gt13L*J12L)*PDstandardNth1Xt3 + (gt12L*J21L + gt11L*J22L)*PDstandardNth2Xt1 + (gt22L*J21L + gt12L*J22L)*PDstandardNth2Xt2 + (gt23L*J21L + - gt13L*J22L)*PDstandardNth2Xt3 - 2*(gtu21*(J11L*J12L*PDstandardNth11gt12 + gt13L*J22L)*PDstandardNth2Xt3 - 2*(gtu12*(J11L*J12L*PDstandardNth11gt12 + J12L*J21L*PDstandardNth12gt12 + J11L*J22L*PDstandardNth12gt12 + J12L*J31L*PDstandardNth13gt12 + J11L*J32L*PDstandardNth13gt12 + dJ112L*PDstandardNth1gt12 + J21L*J22L*PDstandardNth22gt12 + J22L*J31L*PDstandardNth23gt12 + J21L*J32L*PDstandardNth23gt12 + dJ212L*PDstandardNth2gt12 + J31L*J32L*PDstandardNth33gt12 + - dJ312L*PDstandardNth3gt12) + gtu31*(J11L*J13L*PDstandardNth11gt12 + + dJ312L*PDstandardNth3gt12) + gtu13*(J11L*J13L*PDstandardNth11gt12 + J13L*J21L*PDstandardNth12gt12 + J11L*J23L*PDstandardNth12gt12 + J13L*J31L*PDstandardNth13gt12 + J11L*J33L*PDstandardNth13gt12 + dJ113L*PDstandardNth1gt12 + J21L*J23L*PDstandardNth22gt12 + J23L*J31L*PDstandardNth23gt12 + J21L*J33L*PDstandardNth23gt12 + dJ213L*PDstandardNth2gt12 + J31L*J33L*PDstandardNth33gt12 + - dJ313L*PDstandardNth3gt12) + gtu32*(J12L*J13L*PDstandardNth11gt12 + + dJ313L*PDstandardNth3gt12) + gtu23*(J12L*J13L*PDstandardNth11gt12 + J13L*J22L*PDstandardNth12gt12 + J12L*J23L*PDstandardNth12gt12 + J13L*J32L*PDstandardNth13gt12 + J12L*J33L*PDstandardNth13gt12 + dJ123L*PDstandardNth1gt12 + J22L*J23L*PDstandardNth22gt12 + @@ -742,19 +754,19 @@ void ML_BSSN_MP_RHS2_Body(cGH const * restrict const cctkGH, int const dir, int gt13L*J13L)*PDstandardNth1Xt3 + (gt13L*J21L + gt11L*J23L)*PDstandardNth2Xt1 + (gt23L*J21L + gt12L*J23L)*PDstandardNth2Xt2 + (gt33L*J21L + - gt13L*J23L)*PDstandardNth2Xt3 - 2*(gtu21*(J11L*J12L*PDstandardNth11gt13 + gt13L*J23L)*PDstandardNth2Xt3 - 2*(gtu12*(J11L*J12L*PDstandardNth11gt13 + J12L*J21L*PDstandardNth12gt13 + J11L*J22L*PDstandardNth12gt13 + J12L*J31L*PDstandardNth13gt13 + J11L*J32L*PDstandardNth13gt13 + dJ112L*PDstandardNth1gt13 + J21L*J22L*PDstandardNth22gt13 + J22L*J31L*PDstandardNth23gt13 + J21L*J32L*PDstandardNth23gt13 + dJ212L*PDstandardNth2gt13 + J31L*J32L*PDstandardNth33gt13 + - dJ312L*PDstandardNth3gt13) + gtu31*(J11L*J13L*PDstandardNth11gt13 + + dJ312L*PDstandardNth3gt13) + gtu13*(J11L*J13L*PDstandardNth11gt13 + J13L*J21L*PDstandardNth12gt13 + J11L*J23L*PDstandardNth12gt13 + J13L*J31L*PDstandardNth13gt13 + J11L*J33L*PDstandardNth13gt13 + dJ113L*PDstandardNth1gt13 + J21L*J23L*PDstandardNth22gt13 + J23L*J31L*PDstandardNth23gt13 + J21L*J33L*PDstandardNth23gt13 + dJ213L*PDstandardNth2gt13 + J31L*J33L*PDstandardNth33gt13 + - dJ313L*PDstandardNth3gt13) + gtu32*(J12L*J13L*PDstandardNth11gt13 + + dJ313L*PDstandardNth3gt13) + gtu23*(J12L*J13L*PDstandardNth11gt13 + J13L*J22L*PDstandardNth12gt13 + J12L*J23L*PDstandardNth12gt13 + J13L*J32L*PDstandardNth13gt13 + J12L*J33L*PDstandardNth13gt13 + dJ123L*PDstandardNth1gt13 + J22L*J23L*PDstandardNth22gt13 + @@ -790,19 +802,19 @@ void ML_BSSN_MP_RHS2_Body(cGH const * restrict const cctkGH, int const dir, int gt22L*PDstandardNth2Xt2 + gt23L*PDstandardNth2Xt3) + J32L*(gt12L*PDstandardNth3Xt1 + gt22L*PDstandardNth3Xt2 + gt23L*PDstandardNth3Xt3) + Gtl212*Xtn1 + Gtl222*Xtn2 + Gtl223*Xtn3 + - khalf*(-2*(gtu21*(J11L*J12L*PDstandardNth11gt22 + + khalf*(-2*(gtu12*(J11L*J12L*PDstandardNth11gt22 + J12L*J21L*PDstandardNth12gt22 + J11L*J22L*PDstandardNth12gt22 + J12L*J31L*PDstandardNth13gt22 + J11L*J32L*PDstandardNth13gt22 + dJ112L*PDstandardNth1gt22 + J21L*J22L*PDstandardNth22gt22 + J22L*J31L*PDstandardNth23gt22 + J21L*J32L*PDstandardNth23gt22 + dJ212L*PDstandardNth2gt22 + J31L*J32L*PDstandardNth33gt22 + - dJ312L*PDstandardNth3gt22) + gtu31*(J11L*J13L*PDstandardNth11gt22 + + dJ312L*PDstandardNth3gt22) + gtu13*(J11L*J13L*PDstandardNth11gt22 + J13L*J21L*PDstandardNth12gt22 + J11L*J23L*PDstandardNth12gt22 + J13L*J31L*PDstandardNth13gt22 + J11L*J33L*PDstandardNth13gt22 + dJ113L*PDstandardNth1gt22 + J21L*J23L*PDstandardNth22gt22 + J23L*J31L*PDstandardNth23gt22 + J21L*J33L*PDstandardNth23gt22 + dJ213L*PDstandardNth2gt22 + J31L*J33L*PDstandardNth33gt22 + - dJ313L*PDstandardNth3gt22) + gtu32*(J12L*J13L*PDstandardNth11gt22 + + dJ313L*PDstandardNth3gt22) + gtu23*(J12L*J13L*PDstandardNth11gt22 + J13L*J22L*PDstandardNth12gt22 + J12L*J23L*PDstandardNth12gt22 + J13L*J32L*PDstandardNth13gt22 + J12L*J33L*PDstandardNth13gt22 + dJ123L*PDstandardNth1gt22 + J22L*J23L*PDstandardNth22gt22 + @@ -834,19 +846,19 @@ void ML_BSSN_MP_RHS2_Body(cGH const * restrict const cctkGH, int const dir, int gt23L*J13L)*PDstandardNth1Xt3 + (gt13L*J22L + gt12L*J23L)*PDstandardNth2Xt1 + (gt23L*J22L + gt22L*J23L)*PDstandardNth2Xt2 + (gt33L*J22L + - gt23L*J23L)*PDstandardNth2Xt3 - 2*(gtu21*(J11L*J12L*PDstandardNth11gt23 + gt23L*J23L)*PDstandardNth2Xt3 - 2*(gtu12*(J11L*J12L*PDstandardNth11gt23 + J12L*J21L*PDstandardNth12gt23 + J11L*J22L*PDstandardNth12gt23 + J12L*J31L*PDstandardNth13gt23 + J11L*J32L*PDstandardNth13gt23 + dJ112L*PDstandardNth1gt23 + J21L*J22L*PDstandardNth22gt23 + J22L*J31L*PDstandardNth23gt23 + J21L*J32L*PDstandardNth23gt23 + dJ212L*PDstandardNth2gt23 + J31L*J32L*PDstandardNth33gt23 + - dJ312L*PDstandardNth3gt23) + gtu31*(J11L*J13L*PDstandardNth11gt23 + + dJ312L*PDstandardNth3gt23) + gtu13*(J11L*J13L*PDstandardNth11gt23 + J13L*J21L*PDstandardNth12gt23 + J11L*J23L*PDstandardNth12gt23 + J13L*J31L*PDstandardNth13gt23 + J11L*J33L*PDstandardNth13gt23 + dJ113L*PDstandardNth1gt23 + J21L*J23L*PDstandardNth22gt23 + J23L*J31L*PDstandardNth23gt23 + J21L*J33L*PDstandardNth23gt23 + dJ213L*PDstandardNth2gt23 + J31L*J33L*PDstandardNth33gt23 + - dJ313L*PDstandardNth3gt23) + gtu32*(J12L*J13L*PDstandardNth11gt23 + + dJ313L*PDstandardNth3gt23) + gtu23*(J12L*J13L*PDstandardNth11gt23 + J13L*J22L*PDstandardNth12gt23 + J12L*J23L*PDstandardNth12gt23 + J13L*J32L*PDstandardNth13gt23 + J12L*J33L*PDstandardNth13gt23 + dJ123L*PDstandardNth1gt23 + J22L*J23L*PDstandardNth22gt23 + @@ -882,19 +894,19 @@ void ML_BSSN_MP_RHS2_Body(cGH const * restrict const cctkGH, int const dir, int gt23L*PDstandardNth2Xt2 + gt33L*PDstandardNth2Xt3) + J33L*(gt13L*PDstandardNth3Xt1 + gt23L*PDstandardNth3Xt2 + gt33L*PDstandardNth3Xt3) + Gtl313*Xtn1 + Gtl323*Xtn2 + Gtl333*Xtn3 + - khalf*(-2*(gtu21*(J11L*J12L*PDstandardNth11gt33 + + khalf*(-2*(gtu12*(J11L*J12L*PDstandardNth11gt33 + J12L*J21L*PDstandardNth12gt33 + J11L*J22L*PDstandardNth12gt33 + J12L*J31L*PDstandardNth13gt33 + J11L*J32L*PDstandardNth13gt33 + dJ112L*PDstandardNth1gt33 + J21L*J22L*PDstandardNth22gt33 + J22L*J31L*PDstandardNth23gt33 + J21L*J32L*PDstandardNth23gt33 + dJ212L*PDstandardNth2gt33 + J31L*J32L*PDstandardNth33gt33 + - dJ312L*PDstandardNth3gt33) + gtu31*(J11L*J13L*PDstandardNth11gt33 + + dJ312L*PDstandardNth3gt33) + gtu13*(J11L*J13L*PDstandardNth11gt33 + J13L*J21L*PDstandardNth12gt33 + J11L*J23L*PDstandardNth12gt33 + J13L*J31L*PDstandardNth13gt33 + J11L*J33L*PDstandardNth13gt33 + dJ113L*PDstandardNth1gt33 + J21L*J23L*PDstandardNth22gt33 + J23L*J31L*PDstandardNth23gt33 + J21L*J33L*PDstandardNth23gt33 + dJ213L*PDstandardNth2gt33 + J31L*J33L*PDstandardNth33gt33 + - dJ313L*PDstandardNth3gt33) + gtu32*(J12L*J13L*PDstandardNth11gt33 + + dJ313L*PDstandardNth3gt33) + gtu23*(J12L*J13L*PDstandardNth11gt33 + J13L*J22L*PDstandardNth12gt33 + J12L*J23L*PDstandardNth12gt33 + J13L*J32L*PDstandardNth13gt33 + J12L*J33L*PDstandardNth13gt33 + dJ123L*PDstandardNth1gt33 + J22L*J23L*PDstandardNth22gt33 + @@ -996,58 +1008,58 @@ void ML_BSSN_MP_RHS2_Body(cGH const * restrict const cctkGH, int const dir, int J23L*PDstandardNth2phi + J33L*PDstandardNth3phi); CCTK_REAL Rphi11 = -2*(cdphi211 + 2*(-1 + gt11L*gtu11)*SQR(cdphi1) + - gt11L*(cdphi211*gtu11 + 4*(cdphi1*(cdphi2*gtu21 + cdphi3*gtu31) + - cdphi2*cdphi3*gtu32) + cdphi233*gtu33 + gtu22*(cdphi222 + - 2*SQR(cdphi2)) + 2*(cdphi212*gtu21 + cdphi213*gtu31 + cdphi223*gtu32 + + 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 Rphi12 = -2*(cdphi212 + cdphi1*(cdphi2*(-2 + 4*gt12L*gtu21) - + 4*cdphi3*gt12L*gtu31) + gt12L*(cdphi211*gtu11 + 4*cdphi2*cdphi3*gtu32 - + 2*(cdphi212*gtu21 + cdphi213*gtu31 + cdphi223*gtu32 + + 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 Rphi13 = -2*(cdphi213 + cdphi1*(4*cdphi2*gt13L*gtu21 + - cdphi3*(-2 + 4*gt13L*gtu31)) + gt13L*(cdphi211*gtu11 + - 4*cdphi2*cdphi3*gtu32 + 2*(cdphi212*gtu21 + cdphi213*gtu31 + - cdphi223*gtu32 + gtu11*SQR(cdphi1)) + gtu22*(cdphi222 + 2*SQR(cdphi2)) + 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 Rphi22 = -2*(cdphi222 + 2*(-1 + gt22L*gtu22)*SQR(cdphi2) + - gt22L*(cdphi222*gtu22 + 4*(cdphi1*cdphi3*gtu31 + cdphi2*(cdphi1*gtu21 + - cdphi3*gtu32)) + cdphi233*gtu33 + gtu11*(cdphi211 + 2*SQR(cdphi1)) + - 2*(cdphi212*gtu21 + cdphi213*gtu31 + cdphi223*gtu32 + + 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 Rphi23 = -2*(cdphi223 + cdphi2*(4*cdphi1*gt23L*gtu21 + - cdphi3*(-2 + 4*gt23L*gtu32)) + gt23L*(cdphi222*gtu22 + - 4*cdphi1*cdphi3*gtu31 + gtu11*(cdphi211 + 2*SQR(cdphi1)) + - 2*(cdphi212*gtu21 + cdphi213*gtu31 + cdphi223*gtu32 + - gtu22*SQR(cdphi2)) + gtu33*(cdphi233 + 2*SQR(cdphi3)))); + 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 Rphi33 = -2*(cdphi233 + gt33L*((4*cdphi1*cdphi2 + - 2*cdphi212)*gtu21 + 4*cdphi3*(cdphi1*gtu31 + cdphi2*gtu32) + - 2*(cdphi213*gtu31 + cdphi223*gtu32) + cdphi233*gtu33 + gtu11*(cdphi211 + 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 Atm11 = At11L*gtu11 + At12L*gtu21 + At13L*gtu31; + CCTK_REAL Atm11 = At11L*gtu11 + At12L*gtu12 + At13L*gtu13; - CCTK_REAL Atm21 = At11L*gtu21 + At12L*gtu22 + At13L*gtu32; + CCTK_REAL Atm21 = At11L*gtu12 + At12L*gtu22 + At13L*gtu23; - CCTK_REAL Atm31 = At11L*gtu31 + At12L*gtu32 + At13L*gtu33; + CCTK_REAL Atm31 = At11L*gtu13 + At12L*gtu23 + At13L*gtu33; - CCTK_REAL Atm12 = At12L*gtu11 + At22L*gtu21 + At23L*gtu31; + CCTK_REAL Atm12 = At12L*gtu11 + At22L*gtu12 + At23L*gtu13; - CCTK_REAL Atm22 = At12L*gtu21 + At22L*gtu22 + At23L*gtu32; + CCTK_REAL Atm22 = At12L*gtu12 + At22L*gtu22 + At23L*gtu23; - CCTK_REAL Atm32 = At12L*gtu31 + At22L*gtu32 + At23L*gtu33; + CCTK_REAL Atm32 = At12L*gtu13 + At22L*gtu23 + At23L*gtu33; - CCTK_REAL Atm13 = At13L*gtu11 + At23L*gtu21 + At33L*gtu31; + CCTK_REAL Atm13 = At13L*gtu11 + At23L*gtu12 + At33L*gtu13; - CCTK_REAL Atm23 = At13L*gtu21 + At23L*gtu22 + At33L*gtu32; + CCTK_REAL Atm23 = At13L*gtu12 + At23L*gtu22 + At33L*gtu23; - CCTK_REAL Atm33 = At13L*gtu31 + At23L*gtu32 + At33L*gtu33; + CCTK_REAL Atm33 = At13L*gtu13 + At23L*gtu23 + At33L*gtu33; CCTK_REAL e4phi = IfThen(conformalMethod,pow(phiL,-2),exp(4*phiL)); @@ -1067,13 +1079,13 @@ void ML_BSSN_MP_RHS2_Body(cGH const * restrict const cctkGH, int const dir, int CCTK_REAL gu11 = em4phi*gtu11; - CCTK_REAL gu21 = em4phi*gtu21; + CCTK_REAL gu12 = em4phi*gtu12; - CCTK_REAL gu31 = em4phi*gtu31; + CCTK_REAL gu13 = em4phi*gtu13; CCTK_REAL gu22 = em4phi*gtu22; - CCTK_REAL gu32 = em4phi*gtu32; + CCTK_REAL gu23 = em4phi*gtu23; CCTK_REAL gu33 = em4phi*gtu33; @@ -1089,8 +1101,8 @@ void ML_BSSN_MP_RHS2_Body(cGH const * restrict const cctkGH, int const dir, int CCTK_REAL R33 = Rphi33 + Rt33; - CCTK_REAL trS = em4phi*(eTxxL*gtu11 + eTyyL*gtu22 + 2*(eTxyL*gtu21 + - eTxzL*gtu31 + eTyzL*gtu32) + eTzzL*gtu33); + CCTK_REAL trS = em4phi*(eTxxL*gtu11 + eTyyL*gtu22 + 2*(eTxyL*gtu12 + + eTxzL*gtu13 + eTyzL*gtu23) + eTzzL*gtu33); CCTK_REAL Ats11 = (-dJ111L + 4*cdphi1*J11L + Gt111*J11L + Gt211*J12L + Gt311*J13L)*PDstandardNth1alpha - 2*(J11L*J21L*PDstandardNth12alpha + @@ -1158,8 +1170,8 @@ void ML_BSSN_MP_RHS2_Body(cGH const * restrict const cctkGH, int const dir, int PDstandardNth11alpha*SQR(J13L) - PDstandardNth22alpha*SQR(J23L) - PDstandardNth33alpha*SQR(J33L); - CCTK_REAL trAts = Ats11*gu11 + Ats22*gu22 + 2*(Ats12*gu21 + Ats13*gu31 - + Ats23*gu32) + Ats33*gu33; + CCTK_REAL trAts = Ats11*gu11 + Ats22*gu22 + 2*(Ats12*gu12 + Ats13*gu13 + + Ats23*gu23) + Ats33*gu33; CCTK_REAL At11rhsL = (epsdiss1*J11L + epsdiss2*J12L + epsdiss3*J13L)*PDdissipationNth1At11 + (epsdiss1*J21L + epsdiss2*J22L + diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_RHSRadiativeBoundary.c b/ML_BSSN_MP/src/ML_BSSN_MP_RHSRadiativeBoundary.c index 12791d7..07ffc36 100644 --- a/ML_BSSN_MP/src/ML_BSSN_MP_RHSRadiativeBoundary.c +++ b/ML_BSSN_MP/src/ML_BSSN_MP_RHSRadiativeBoundary.c @@ -20,6 +20,42 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((x) * (x) * (x) * (x)) +void ML_BSSN_MP_RHSRadiativeBoundary_SelectBCs(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT ierr = 0; + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_curvrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_curvrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_dtlapserhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_dtlapserhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_dtshiftrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_dtshiftrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_Gammarhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_Gammarhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_lapserhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_lapserhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_log_confacrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_log_confacrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_metricrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_metricrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_shiftrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_shiftrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_trace_curvrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_trace_curvrhs."); + return; +} + void ML_BSSN_MP_RHSRadiativeBoundary_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[]) { DECLARE_CCTK_ARGUMENTS; @@ -140,13 +176,13 @@ void ML_BSSN_MP_RHSRadiativeBoundary_Body(cGH const * restrict const cctkGH, int CCTK_REAL gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L)); - CCTK_REAL gtu21 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt); + CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt); - CCTK_REAL gtu31 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt); + CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt); CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L)); - CCTK_REAL gtu32 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt); + CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt); CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L)); @@ -154,13 +190,13 @@ void ML_BSSN_MP_RHSRadiativeBoundary_Body(cGH const * restrict const cctkGH, int CCTK_REAL gu11 = em4phi*gtu11; - CCTK_REAL gu21 = em4phi*gtu21; + CCTK_REAL gu12 = em4phi*gtu12; - CCTK_REAL gu31 = em4phi*gtu31; + CCTK_REAL gu13 = em4phi*gtu13; CCTK_REAL gu22 = em4phi*gtu22; - CCTK_REAL gu32 = em4phi*gtu32; + CCTK_REAL gu23 = em4phi*gtu23; CCTK_REAL gu33 = em4phi*gtu33; @@ -170,11 +206,11 @@ void ML_BSSN_MP_RHSRadiativeBoundary_Body(cGH const * restrict const cctkGH, int CCTK_REAL nn3 = normal[2]; - CCTK_REAL nu1 = gu11*nn1 + gu21*nn2 + gu31*nn3; + CCTK_REAL nu1 = gu11*nn1 + gu12*nn2 + gu13*nn3; - CCTK_REAL nu2 = gu21*nn1 + gu22*nn2 + gu32*nn3; + CCTK_REAL nu2 = gu12*nn1 + gu22*nn2 + gu23*nn3; - CCTK_REAL nu3 = gu31*nn1 + gu32*nn2 + gu33*nn3; + CCTK_REAL nu3 = gu13*nn1 + gu23*nn2 + gu33*nn3; CCTK_REAL nlen2 = nn1*nu1 + nn2*nu2 + nn3*nu3; diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_RHSStaticBoundary.c b/ML_BSSN_MP/src/ML_BSSN_MP_RHSStaticBoundary.c index c34d81e..a505bfd 100644 --- a/ML_BSSN_MP/src/ML_BSSN_MP_RHSStaticBoundary.c +++ b/ML_BSSN_MP/src/ML_BSSN_MP_RHSStaticBoundary.c @@ -20,6 +20,42 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((x) * (x) * (x) * (x)) +void ML_BSSN_MP_RHSStaticBoundary_SelectBCs(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT ierr = 0; + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_curvrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_curvrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_dtlapserhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_dtlapserhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_dtshiftrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_dtshiftrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_Gammarhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_Gammarhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_lapserhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_lapserhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_log_confacrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_log_confacrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_metricrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_metricrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_shiftrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_shiftrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_trace_curvrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_trace_curvrhs."); + return; +} + 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[]) { DECLARE_CCTK_ARGUMENTS; diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_boundary.c b/ML_BSSN_MP/src/ML_BSSN_MP_boundary.c index 0b11243..f484db3 100644 --- a/ML_BSSN_MP/src/ML_BSSN_MP_boundary.c +++ b/ML_BSSN_MP/src/ML_BSSN_MP_boundary.c @@ -20,6 +20,42 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((x) * (x) * (x) * (x)) +void ML_BSSN_MP_boundary_SelectBCs(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT ierr = 0; + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_curv","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_curv."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_dtlapse","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_dtlapse."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_dtshift","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_dtshift."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_Gamma","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_Gamma."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_lapse","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_lapse."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_log_confac","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_log_confac."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_metric","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_metric."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_shift","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_shift."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_trace_curv","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_trace_curv."); + return; +} + 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[]) { DECLARE_CCTK_ARGUMENTS; diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_constraints.c b/ML_BSSN_MP/src/ML_BSSN_MP_constraints.c index 23561db..03e95e8 100644 --- a/ML_BSSN_MP/src/ML_BSSN_MP_constraints.c +++ b/ML_BSSN_MP/src/ML_BSSN_MP_constraints.c @@ -20,6 +20,30 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((x) * (x) * (x) * (x)) +void ML_BSSN_MP_constraints_SelectBCs(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT ierr = 0; + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_cons_detg","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_cons_detg."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_cons_Gamma","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_cons_Gamma."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_cons_traceA","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_cons_traceA."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_Ham","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_Ham."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_mom","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_mom."); + return; +} + void ML_BSSN_MP_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[]) { DECLARE_CCTK_ARGUMENTS; @@ -344,61 +368,61 @@ void ML_BSSN_MP_constraints_Body(cGH const * restrict const cctkGH, int const di CCTK_REAL gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L)); - CCTK_REAL gtu21 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt); + CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt); - CCTK_REAL gtu31 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt); + CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt); CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L)); - CCTK_REAL gtu32 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt); + CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt); CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L)); - CCTK_REAL Gt111 = khalf*((gtu11*J11L - gtu21*J12L - - gtu31*J13L)*PDstandardNth1gt11 + (gtu11*J21L - gtu21*J22L - - gtu31*J23L)*PDstandardNth2gt11 + (gtu11*J31L - gtu21*J32L - - gtu31*J33L)*PDstandardNth3gt11 + 2*(J11L*(gtu21*PDstandardNth1gt12 + - gtu31*PDstandardNth1gt13) + J21L*(gtu21*PDstandardNth2gt12 + - gtu31*PDstandardNth2gt13) + J31L*(gtu21*PDstandardNth3gt12 + - gtu31*PDstandardNth3gt13))); - - CCTK_REAL Gt211 = khalf*((gtu21*J11L - gtu22*J12L - - gtu32*J13L)*PDstandardNth1gt11 + (gtu21*J21L - gtu22*J22L - - gtu32*J23L)*PDstandardNth2gt11 + (gtu21*J31L - gtu22*J32L - - gtu32*J33L)*PDstandardNth3gt11 + 2*(J11L*(gtu22*PDstandardNth1gt12 + - gtu32*PDstandardNth1gt13) + J21L*(gtu22*PDstandardNth2gt12 + - gtu32*PDstandardNth2gt13) + J31L*(gtu22*PDstandardNth3gt12 + - gtu32*PDstandardNth3gt13))); - - CCTK_REAL Gt311 = khalf*((gtu31*J11L - gtu32*J12L - - gtu33*J13L)*PDstandardNth1gt11 + (gtu31*J21L - gtu32*J22L - - gtu33*J23L)*PDstandardNth2gt11 + (gtu31*J31L - gtu32*J32L - - gtu33*J33L)*PDstandardNth3gt11 + 2*(J11L*(gtu32*PDstandardNth1gt12 + - gtu33*PDstandardNth1gt13) + J21L*(gtu32*PDstandardNth2gt12 + - gtu33*PDstandardNth2gt13) + J31L*(gtu32*PDstandardNth3gt12 + + CCTK_REAL Gt111 = khalf*((gtu11*J11L - gtu12*J12L - + gtu13*J13L)*PDstandardNth1gt11 + (gtu11*J21L - gtu12*J22L - + gtu13*J23L)*PDstandardNth2gt11 + (gtu11*J31L - gtu12*J32L - + gtu13*J33L)*PDstandardNth3gt11 + 2*(J11L*(gtu12*PDstandardNth1gt12 + + gtu13*PDstandardNth1gt13) + J21L*(gtu12*PDstandardNth2gt12 + + gtu13*PDstandardNth2gt13) + J31L*(gtu12*PDstandardNth3gt12 + + gtu13*PDstandardNth3gt13))); + + CCTK_REAL Gt211 = khalf*((gtu12*J11L - gtu22*J12L - + gtu23*J13L)*PDstandardNth1gt11 + (gtu12*J21L - gtu22*J22L - + gtu23*J23L)*PDstandardNth2gt11 + (gtu12*J31L - gtu22*J32L - + gtu23*J33L)*PDstandardNth3gt11 + 2*(J11L*(gtu22*PDstandardNth1gt12 + + gtu23*PDstandardNth1gt13) + J21L*(gtu22*PDstandardNth2gt12 + + gtu23*PDstandardNth2gt13) + J31L*(gtu22*PDstandardNth3gt12 + + gtu23*PDstandardNth3gt13))); + + CCTK_REAL Gt311 = khalf*((gtu13*J11L - gtu23*J12L - + gtu33*J13L)*PDstandardNth1gt11 + (gtu13*J21L - gtu23*J22L - + gtu33*J23L)*PDstandardNth2gt11 + (gtu13*J31L - gtu23*J32L - + gtu33*J33L)*PDstandardNth3gt11 + 2*(J11L*(gtu23*PDstandardNth1gt12 + + gtu33*PDstandardNth1gt13) + J21L*(gtu23*PDstandardNth2gt12 + + gtu33*PDstandardNth2gt13) + J31L*(gtu23*PDstandardNth3gt12 + gtu33*PDstandardNth3gt13))); CCTK_REAL Gt112 = khalf*(gtu11*(J12L*PDstandardNth1gt11 + J22L*PDstandardNth2gt11 + J32L*PDstandardNth3gt11) + - gtu21*(J11L*PDstandardNth1gt22 + J21L*PDstandardNth2gt22 + - J31L*PDstandardNth3gt22) + gtu31*(-(J13L*PDstandardNth1gt12) + + gtu12*(J11L*PDstandardNth1gt22 + J21L*PDstandardNth2gt22 + + J31L*PDstandardNth3gt22) + gtu13*(-(J13L*PDstandardNth1gt12) + J12L*PDstandardNth1gt13 + J11L*PDstandardNth1gt23 - J23L*PDstandardNth2gt12 + J22L*PDstandardNth2gt13 + J21L*PDstandardNth2gt23 - J33L*PDstandardNth3gt12 + J32L*PDstandardNth3gt13 + J31L*PDstandardNth3gt23)); - CCTK_REAL Gt212 = khalf*(gtu21*(J12L*PDstandardNth1gt11 + + CCTK_REAL Gt212 = khalf*(gtu12*(J12L*PDstandardNth1gt11 + J22L*PDstandardNth2gt11 + J32L*PDstandardNth3gt11) + gtu22*(J11L*PDstandardNth1gt22 + J21L*PDstandardNth2gt22 + - J31L*PDstandardNth3gt22) + gtu32*(-(J13L*PDstandardNth1gt12) + + J31L*PDstandardNth3gt22) + gtu23*(-(J13L*PDstandardNth1gt12) + J12L*PDstandardNth1gt13 + J11L*PDstandardNth1gt23 - J23L*PDstandardNth2gt12 + J22L*PDstandardNth2gt13 + J21L*PDstandardNth2gt23 - J33L*PDstandardNth3gt12 + J32L*PDstandardNth3gt13 + J31L*PDstandardNth3gt23)); - CCTK_REAL Gt312 = khalf*(gtu31*(J12L*PDstandardNth1gt11 + + CCTK_REAL Gt312 = khalf*(gtu13*(J12L*PDstandardNth1gt11 + J22L*PDstandardNth2gt11 + J32L*PDstandardNth3gt11) + - gtu32*(J11L*PDstandardNth1gt22 + J21L*PDstandardNth2gt22 + + gtu23*(J11L*PDstandardNth1gt22 + J21L*PDstandardNth2gt22 + J31L*PDstandardNth3gt22) + gtu33*(-(J13L*PDstandardNth1gt12) + J12L*PDstandardNth1gt13 + J11L*PDstandardNth1gt23 - J23L*PDstandardNth2gt12 + J22L*PDstandardNth2gt13 + @@ -407,25 +431,25 @@ void ML_BSSN_MP_constraints_Body(cGH const * restrict const cctkGH, int const di CCTK_REAL Gt113 = khalf*(gtu11*(J13L*PDstandardNth1gt11 + J23L*PDstandardNth2gt11 + J33L*PDstandardNth3gt11) + - gtu21*(J13L*PDstandardNth1gt12 - J12L*PDstandardNth1gt13 + + gtu12*(J13L*PDstandardNth1gt12 - J12L*PDstandardNth1gt13 + J11L*PDstandardNth1gt23 + J23L*PDstandardNth2gt12 - J22L*PDstandardNth2gt13 + J21L*PDstandardNth2gt23 + J33L*PDstandardNth3gt12 - J32L*PDstandardNth3gt13 + - J31L*PDstandardNth3gt23) + gtu31*(J11L*PDstandardNth1gt33 + + J31L*PDstandardNth3gt23) + gtu13*(J11L*PDstandardNth1gt33 + J21L*PDstandardNth2gt33 + J31L*PDstandardNth3gt33)); - CCTK_REAL Gt213 = khalf*(gtu21*(J13L*PDstandardNth1gt11 + + CCTK_REAL Gt213 = khalf*(gtu12*(J13L*PDstandardNth1gt11 + J23L*PDstandardNth2gt11 + J33L*PDstandardNth3gt11) + gtu22*(J13L*PDstandardNth1gt12 - J12L*PDstandardNth1gt13 + J11L*PDstandardNth1gt23 + J23L*PDstandardNth2gt12 - J22L*PDstandardNth2gt13 + J21L*PDstandardNth2gt23 + J33L*PDstandardNth3gt12 - J32L*PDstandardNth3gt13 + - J31L*PDstandardNth3gt23) + gtu32*(J11L*PDstandardNth1gt33 + + J31L*PDstandardNth3gt23) + gtu23*(J11L*PDstandardNth1gt33 + J21L*PDstandardNth2gt33 + J31L*PDstandardNth3gt33)); - CCTK_REAL Gt313 = khalf*(gtu31*(J13L*PDstandardNth1gt11 + + CCTK_REAL Gt313 = khalf*(gtu13*(J13L*PDstandardNth1gt11 + J23L*PDstandardNth2gt11 + J33L*PDstandardNth3gt11) + - gtu32*(J13L*PDstandardNth1gt12 - J12L*PDstandardNth1gt13 + + gtu23*(J13L*PDstandardNth1gt12 - J12L*PDstandardNth1gt13 + J11L*PDstandardNth1gt23 + J23L*PDstandardNth2gt12 - J22L*PDstandardNth2gt13 + J21L*PDstandardNth2gt23 + J33L*PDstandardNth3gt12 - J32L*PDstandardNth3gt13 + @@ -435,51 +459,51 @@ void ML_BSSN_MP_constraints_Body(cGH const * restrict const cctkGH, int const di CCTK_REAL Gt122 = khalf*(gtu11*(-(J11L*PDstandardNth1gt22) + 2*(J12L*PDstandardNth1gt12 + J22L*PDstandardNth2gt12) - J21L*PDstandardNth2gt22 + 2*J32L*PDstandardNth3gt12 - - J31L*PDstandardNth3gt22) + gtu21*(J12L*PDstandardNth1gt22 + + J31L*PDstandardNth3gt22) + gtu12*(J12L*PDstandardNth1gt22 + J22L*PDstandardNth2gt22 + J32L*PDstandardNth3gt22) - - gtu31*(J13L*PDstandardNth1gt22 + J23L*PDstandardNth2gt22 + + gtu13*(J13L*PDstandardNth1gt22 + J23L*PDstandardNth2gt22 + J33L*PDstandardNth3gt22 - 2*(J12L*PDstandardNth1gt23 + J22L*PDstandardNth2gt23 + J32L*PDstandardNth3gt23))); - CCTK_REAL Gt222 = khalf*(gtu21*(-(J11L*PDstandardNth1gt22) + + CCTK_REAL Gt222 = khalf*(gtu12*(-(J11L*PDstandardNth1gt22) + 2*(J12L*PDstandardNth1gt12 + J22L*PDstandardNth2gt12) - J21L*PDstandardNth2gt22 + 2*J32L*PDstandardNth3gt12 - J31L*PDstandardNth3gt22) + gtu22*(J12L*PDstandardNth1gt22 + J22L*PDstandardNth2gt22 + J32L*PDstandardNth3gt22) - - gtu32*(J13L*PDstandardNth1gt22 + J23L*PDstandardNth2gt22 + + gtu23*(J13L*PDstandardNth1gt22 + J23L*PDstandardNth2gt22 + J33L*PDstandardNth3gt22 - 2*(J12L*PDstandardNth1gt23 + J22L*PDstandardNth2gt23 + J32L*PDstandardNth3gt23))); - CCTK_REAL Gt322 = khalf*(gtu31*(-(J11L*PDstandardNth1gt22) + + CCTK_REAL Gt322 = khalf*(gtu13*(-(J11L*PDstandardNth1gt22) + 2*(J12L*PDstandardNth1gt12 + J22L*PDstandardNth2gt12) - J21L*PDstandardNth2gt22 + 2*J32L*PDstandardNth3gt12 - - J31L*PDstandardNth3gt22) + gtu32*(J12L*PDstandardNth1gt22 + + J31L*PDstandardNth3gt22) + gtu23*(J12L*PDstandardNth1gt22 + J22L*PDstandardNth2gt22 + J32L*PDstandardNth3gt22) - gtu33*(J13L*PDstandardNth1gt22 + J23L*PDstandardNth2gt22 + J33L*PDstandardNth3gt22 - 2*(J12L*PDstandardNth1gt23 + J22L*PDstandardNth2gt23 + J32L*PDstandardNth3gt23))); - CCTK_REAL Gt123 = khalf*(gtu21*(J13L*PDstandardNth1gt22 + + CCTK_REAL Gt123 = khalf*(gtu12*(J13L*PDstandardNth1gt22 + J23L*PDstandardNth2gt22 + J33L*PDstandardNth3gt22) + gtu11*(J13L*PDstandardNth1gt12 + J12L*PDstandardNth1gt13 - J11L*PDstandardNth1gt23 + J23L*PDstandardNth2gt12 + J22L*PDstandardNth2gt13 - J21L*PDstandardNth2gt23 + J33L*PDstandardNth3gt12 + J32L*PDstandardNth3gt13 - - J31L*PDstandardNth3gt23) + gtu31*(J12L*PDstandardNth1gt33 + + J31L*PDstandardNth3gt23) + gtu13*(J12L*PDstandardNth1gt33 + J22L*PDstandardNth2gt33 + J32L*PDstandardNth3gt33)); CCTK_REAL Gt223 = khalf*(gtu22*(J13L*PDstandardNth1gt22 + J23L*PDstandardNth2gt22 + J33L*PDstandardNth3gt22) + - gtu21*(J13L*PDstandardNth1gt12 + J12L*PDstandardNth1gt13 - + gtu12*(J13L*PDstandardNth1gt12 + J12L*PDstandardNth1gt13 - J11L*PDstandardNth1gt23 + J23L*PDstandardNth2gt12 + J22L*PDstandardNth2gt13 - J21L*PDstandardNth2gt23 + J33L*PDstandardNth3gt12 + J32L*PDstandardNth3gt13 - - J31L*PDstandardNth3gt23) + gtu32*(J12L*PDstandardNth1gt33 + + J31L*PDstandardNth3gt23) + gtu23*(J12L*PDstandardNth1gt33 + J22L*PDstandardNth2gt33 + J32L*PDstandardNth3gt33)); - CCTK_REAL Gt323 = khalf*(gtu32*(J13L*PDstandardNth1gt22 + + CCTK_REAL Gt323 = khalf*(gtu23*(J13L*PDstandardNth1gt22 + J23L*PDstandardNth2gt22 + J33L*PDstandardNth3gt22) + - gtu31*(J13L*PDstandardNth1gt12 + J12L*PDstandardNth1gt13 - + gtu13*(J13L*PDstandardNth1gt12 + J12L*PDstandardNth1gt13 - J11L*PDstandardNth1gt23 + J23L*PDstandardNth2gt12 + J22L*PDstandardNth2gt13 - J21L*PDstandardNth2gt23 + J33L*PDstandardNth3gt12 + J32L*PDstandardNth3gt13 - @@ -489,25 +513,25 @@ void ML_BSSN_MP_constraints_Body(cGH const * restrict const cctkGH, int const di CCTK_REAL Gt133 = khalf*(gtu11*(-(J11L*PDstandardNth1gt33) + 2*(J13L*PDstandardNth1gt13 + J23L*PDstandardNth2gt13) - J21L*PDstandardNth2gt33 + 2*J33L*PDstandardNth3gt13 - - J31L*PDstandardNth3gt33) + gtu21*(-(J12L*PDstandardNth1gt33) + + J31L*PDstandardNth3gt33) + gtu12*(-(J12L*PDstandardNth1gt33) + 2*(J13L*PDstandardNth1gt23 + J23L*PDstandardNth2gt23) - J22L*PDstandardNth2gt33 + 2*J33L*PDstandardNth3gt23 - - J32L*PDstandardNth3gt33) + gtu31*(J13L*PDstandardNth1gt33 + + J32L*PDstandardNth3gt33) + gtu13*(J13L*PDstandardNth1gt33 + J23L*PDstandardNth2gt33 + J33L*PDstandardNth3gt33)); - CCTK_REAL Gt233 = khalf*(gtu21*(-(J11L*PDstandardNth1gt33) + + CCTK_REAL Gt233 = khalf*(gtu12*(-(J11L*PDstandardNth1gt33) + 2*(J13L*PDstandardNth1gt13 + J23L*PDstandardNth2gt13) - J21L*PDstandardNth2gt33 + 2*J33L*PDstandardNth3gt13 - J31L*PDstandardNth3gt33) + gtu22*(-(J12L*PDstandardNth1gt33) + 2*(J13L*PDstandardNth1gt23 + J23L*PDstandardNth2gt23) - J22L*PDstandardNth2gt33 + 2*J33L*PDstandardNth3gt23 - - J32L*PDstandardNth3gt33) + gtu32*(J13L*PDstandardNth1gt33 + + J32L*PDstandardNth3gt33) + gtu23*(J13L*PDstandardNth1gt33 + J23L*PDstandardNth2gt33 + J33L*PDstandardNth3gt33)); - CCTK_REAL Gt333 = khalf*(gtu31*(-(J11L*PDstandardNth1gt33) + + CCTK_REAL Gt333 = khalf*(gtu13*(-(J11L*PDstandardNth1gt33) + 2*(J13L*PDstandardNth1gt13 + J23L*PDstandardNth2gt13) - J21L*PDstandardNth2gt33 + 2*J33L*PDstandardNth3gt13 - - J31L*PDstandardNth3gt33) + gtu32*(-(J12L*PDstandardNth1gt33) + + J31L*PDstandardNth3gt33) + gtu23*(-(J12L*PDstandardNth1gt33) + 2*(J13L*PDstandardNth1gt23 + J23L*PDstandardNth2gt23) - J22L*PDstandardNth2gt33 + 2*J33L*PDstandardNth3gt23 - J32L*PDstandardNth3gt33) + gtu33*(J13L*PDstandardNth1gt33 + @@ -519,14 +543,14 @@ void ML_BSSN_MP_constraints_Body(cGH const * restrict const cctkGH, int const di + Gt133*Gt312 + Gt123*(Gt212 + Gt313))) + gt13L*(2*Gt213*Gt322 + Gt313*(4*Gt112 + 2*Gt323)) + 2*(Gt213*(Gt212*gt22L + gt23L*Gt312) + Gt212*(gt23L*Gt313 + gt13L*Gt323) + Gt312*(gt13L*Gt333 + - Gt313*gt33L)))*gtu32 + J11L*(gt11L*PDstandardNth1Xt1 + + Gt313*gt33L)))*gtu23 + J11L*(gt11L*PDstandardNth1Xt1 + gt12L*PDstandardNth1Xt2 + gt13L*PDstandardNth1Xt3) + J21L*(gt11L*PDstandardNth2Xt1 + gt12L*PDstandardNth2Xt2 + gt13L*PDstandardNth2Xt3) + J31L*(gt11L*PDstandardNth3Xt1 + gt12L*PDstandardNth3Xt2 + gt13L*PDstandardNth3Xt3) + (Gt111*gt11L + gt12L*Gt211 + gt13L*Gt311)*Xt1L + (Gt112*gt11L + gt12L*Gt212 + gt13L*Gt312)*Xt2L + (Gt113*gt11L + gt12L*Gt213 + gt13L*Gt313)*Xt3L + - gtu21*(Gt112*(gt13L*Gt311 + 3*(gt12L*Gt211 + gt13L*Gt311)) + + gtu12*(Gt112*(gt13L*Gt311 + 3*(gt12L*Gt211 + gt13L*Gt311)) + gt11L*(Gt112*(6*Gt111 + 2*Gt212) + 2*(Gt122*Gt211 + Gt123*Gt311 + Gt113*Gt312)) + 2*(Gt212*(Gt211*gt22L + gt23L*Gt311 + gt13L*Gt312) + gt13L*(Gt211*Gt322 + Gt311*Gt323)) + Gt312*(gt13L*(4*Gt111 + 2*Gt313) + @@ -542,26 +566,26 @@ void ML_BSSN_MP_constraints_Body(cGH const * restrict const cctkGH, int const di gtu33*(4*Gt113*(gt12L*Gt213 + gt13L*Gt313) + 2*(gt12L*(Gt213*Gt223 + Gt233*Gt313) + Gt213*(gt23L*Gt313 + gt13L*Gt323) + gt13L*Gt313*Gt333) + gt11L*(2*(Gt123*Gt213 + Gt133*Gt313) + 3*SQR(Gt113)) + gt22L*SQR(Gt213) - + gt33L*SQR(Gt313)) + gtu31*(Gt113*(gt13L*Gt311 + 3*(gt12L*Gt211 + + + gt33L*SQR(Gt313)) + gtu13*(Gt113*(gt13L*Gt311 + 3*(gt12L*Gt211 + gt13L*Gt311)) + gt11L*(2*(Gt123*Gt211 + Gt112*Gt213 + Gt133*Gt311) + Gt113*(6*Gt111 + 2*Gt313)) + gt12L*(Gt211*(Gt113 + 2*Gt223) + 2*Gt233*Gt311 + Gt213*(4*Gt111 + 2*(Gt212 + Gt313))) + 2*(Gt213*(Gt211*gt22L + gt23L*Gt311 + gt13L*Gt312) + gt13L*Gt311*Gt333 + Gt313*(Gt211*gt23L + Gt311*gt33L)) + gt13L*(4*Gt111*Gt313 + 2*(Gt211*Gt323 + SQR(Gt313)))) + - khalf*(-2*(gtu21*(J11L*J12L*PDstandardNth11gt11 + + khalf*(-2*(gtu12*(J11L*J12L*PDstandardNth11gt11 + J12L*J21L*PDstandardNth12gt11 + J11L*J22L*PDstandardNth12gt11 + J12L*J31L*PDstandardNth13gt11 + J11L*J32L*PDstandardNth13gt11 + dJ112L*PDstandardNth1gt11 + J21L*J22L*PDstandardNth22gt11 + J22L*J31L*PDstandardNth23gt11 + J21L*J32L*PDstandardNth23gt11 + dJ212L*PDstandardNth2gt11 + J31L*J32L*PDstandardNth33gt11 + - dJ312L*PDstandardNth3gt11) + gtu31*(J11L*J13L*PDstandardNth11gt11 + + dJ312L*PDstandardNth3gt11) + gtu13*(J11L*J13L*PDstandardNth11gt11 + J13L*J21L*PDstandardNth12gt11 + J11L*J23L*PDstandardNth12gt11 + J13L*J31L*PDstandardNth13gt11 + J11L*J33L*PDstandardNth13gt11 + dJ113L*PDstandardNth1gt11 + J21L*J23L*PDstandardNth22gt11 + J23L*J31L*PDstandardNth23gt11 + J21L*J33L*PDstandardNth23gt11 + dJ213L*PDstandardNth2gt11 + J31L*J33L*PDstandardNth33gt11 + - dJ313L*PDstandardNth3gt11) + gtu32*(J12L*J13L*PDstandardNth11gt11 + + dJ313L*PDstandardNth3gt11) + gtu23*(J12L*J13L*PDstandardNth11gt11 + J13L*J22L*PDstandardNth12gt11 + J12L*J23L*PDstandardNth12gt11 + J13L*J32L*PDstandardNth13gt11 + J12L*J33L*PDstandardNth13gt11 + dJ123L*PDstandardNth1gt11 + J22L*J23L*PDstandardNth22gt11 + @@ -588,19 +612,19 @@ void ML_BSSN_MP_constraints_Body(cGH const * restrict const cctkGH, int const di gt13L*J12L)*PDstandardNth1Xt3 + (gt12L*J21L + gt11L*J22L)*PDstandardNth2Xt1 + (gt22L*J21L + gt12L*J22L)*PDstandardNth2Xt2 + (gt23L*J21L + - gt13L*J22L)*PDstandardNth2Xt3 - 2*(gtu21*(J11L*J12L*PDstandardNth11gt12 + gt13L*J22L)*PDstandardNth2Xt3 - 2*(gtu12*(J11L*J12L*PDstandardNth11gt12 + J12L*J21L*PDstandardNth12gt12 + J11L*J22L*PDstandardNth12gt12 + J12L*J31L*PDstandardNth13gt12 + J11L*J32L*PDstandardNth13gt12 + dJ112L*PDstandardNth1gt12 + J21L*J22L*PDstandardNth22gt12 + J22L*J31L*PDstandardNth23gt12 + J21L*J32L*PDstandardNth23gt12 + dJ212L*PDstandardNth2gt12 + J31L*J32L*PDstandardNth33gt12 + - dJ312L*PDstandardNth3gt12) + gtu31*(J11L*J13L*PDstandardNth11gt12 + + dJ312L*PDstandardNth3gt12) + gtu13*(J11L*J13L*PDstandardNth11gt12 + J13L*J21L*PDstandardNth12gt12 + J11L*J23L*PDstandardNth12gt12 + J13L*J31L*PDstandardNth13gt12 + J11L*J33L*PDstandardNth13gt12 + dJ113L*PDstandardNth1gt12 + J21L*J23L*PDstandardNth22gt12 + J23L*J31L*PDstandardNth23gt12 + J21L*J33L*PDstandardNth23gt12 + dJ213L*PDstandardNth2gt12 + J31L*J33L*PDstandardNth33gt12 + - dJ313L*PDstandardNth3gt12) + gtu32*(J12L*J13L*PDstandardNth11gt12 + + dJ313L*PDstandardNth3gt12) + gtu23*(J12L*J13L*PDstandardNth11gt12 + J13L*J22L*PDstandardNth12gt12 + J12L*J23L*PDstandardNth12gt12 + J13L*J32L*PDstandardNth13gt12 + J12L*J33L*PDstandardNth13gt12 + dJ123L*PDstandardNth1gt12 + J22L*J23L*PDstandardNth22gt12 + @@ -620,7 +644,7 @@ void ML_BSSN_MP_constraints_Body(cGH const * restrict const cctkGH, int const di Gt213*gt23L*Gt312 + gt11L*(2*Gt112*Gt113 + Gt123*Gt212 + Gt133*Gt312) + 2*Gt112*gt13L*Gt313 + Gt212*gt23L*Gt313 + Gt111*(Gt113*gt12L + Gt213*gt22L + gt23L*Gt313) + gt13L*Gt212*Gt323 + Gt211*gt23L*Gt323 + - gt23L*Gt311*Gt333 + gt13L*Gt312*Gt333 + Gt312*Gt313*gt33L)*gtu31 + + gt23L*Gt311*Gt333 + gt13L*Gt312*Gt333 + Gt312*Gt313*gt33L)*gtu13 + (Gt123*gt12L*Gt212 + 2*Gt122*gt12L*Gt213 + Gt113*gt12L*Gt222 + gt12L*Gt222*Gt223 + Gt213*Gt222*gt22L + Gt212*Gt223*gt22L + gt12L*Gt133*Gt312 + gt22L*Gt233*Gt312 + 2*Gt122*gt13L*Gt313 + @@ -628,14 +652,14 @@ void ML_BSSN_MP_constraints_Body(cGH const * restrict const cctkGH, int const di Gt113*gt13L*Gt322 + gt12L*Gt233*Gt322 + Gt213*gt23L*Gt322 + gt11L*(2*Gt113*Gt122 + Gt123*Gt222 + Gt133*Gt322) + gt13L*Gt222*Gt323 + Gt212*gt23L*Gt323 + gt23L*Gt312*Gt333 + gt13L*Gt322*Gt333 + - Gt313*Gt322*gt33L)*gtu32 + gtu11*(3*Gt112*gt12L*Gt211 + + Gt313*Gt322*gt33L)*gtu23 + gtu11*(3*Gt112*gt12L*Gt211 + 2*Gt211*Gt212*gt22L + Gt113*gt12L*Gt311 + 2*Gt112*gt13L*Gt311 + Gt213*gt22L*Gt311 + Gt212*gt23L*Gt311 + gt13L*Gt212*Gt312 + gt12L*Gt213*Gt312 + 2*Gt211*gt23L*Gt312 + gt11L*(2*Gt111*Gt112 + Gt112*Gt212 + Gt113*Gt312) + Gt111*(gt12L*Gt212 + Gt211*gt22L + gt23L*Gt311 + gt13L*Gt312) + gt23L*Gt311*Gt313 + gt13L*Gt312*Gt313 + Gt311*Gt312*gt33L + gt12L*SQR(Gt111) + gt12L*SQR(Gt212)) + - gtu21*(Gt112*gt11L*Gt222 + Gt112*Gt211*gt22L + Gt211*Gt222*gt22L + + gtu12*(Gt112*gt11L*Gt222 + Gt112*Gt211*gt22L + Gt211*Gt222*gt22L + 2*Gt122*gt13L*Gt311 + Gt112*gt23L*Gt311 + Gt222*gt23L*Gt311 + gt13L*Gt222*Gt312 + Gt213*gt22L*Gt312 + Gt212*gt23L*Gt312 + gt23L*Gt312*Gt313 + Gt113*gt11L*Gt322 + Gt211*gt23L*Gt322 + @@ -654,21 +678,21 @@ void ML_BSSN_MP_constraints_Body(cGH const * restrict const cctkGH, int const di Gt113*(2*gt11L*Gt123 + gt12L*Gt223 + Gt213*gt22L + gt23L*Gt313 + gt13L*Gt323) + gt23L*Gt313*Gt333 + gt13L*Gt323*Gt333 + Gt313*Gt323*gt33L + gt12L*SQR(Gt113) + gt12L*(3*Gt123*Gt213 + - Gt133*Gt313 + Gt233*Gt323 + SQR(Gt223))) + gtu21*(Gt122*gt12L*Gt211 + + Gt133*Gt313 + Gt233*Gt323 + SQR(Gt223))) + gtu12*(Gt122*gt12L*Gt211 + 3*Gt112*gt12L*Gt212 + gt12L*Gt212*Gt222 + Gt211*Gt222*gt22L + Gt123*gt12L*Gt311 + Gt223*gt22L*Gt311 + 3*Gt112*gt13L*Gt312 + gt12L*Gt223*Gt312 + 2*Gt212*gt23L*Gt312 + Gt111*(Gt112*gt12L + Gt212*gt22L + gt23L*Gt312) + gt13L*Gt212*Gt322 + Gt211*gt23L*Gt322 + gt23L*Gt311*Gt323 + gt13L*Gt312*Gt323 + gt11L*(Gt122*Gt212 + Gt123*Gt312 + 2*SQR(Gt112)) + gt22L*SQR(Gt212) + gt33L*SQR(Gt312)) + - gtu31*(Gt112*gt11L*Gt223 + Gt113*Gt211*gt22L + Gt212*Gt213*gt22L + + gtu13*(Gt112*gt11L*Gt223 + Gt113*Gt211*gt22L + Gt212*Gt213*gt22L + Gt211*Gt223*gt22L + 2*Gt123*gt13L*Gt311 + Gt113*gt23L*Gt311 + Gt223*gt23L*Gt311 + gt13L*Gt223*Gt312 + Gt213*gt23L*Gt312 + Gt213*gt22L*Gt313 + Gt113*gt11L*Gt323 + Gt211*gt23L*Gt323 + gt13L*Gt313*Gt323 + Gt111*(2*gt11L*Gt123 + Gt113*gt12L + gt12L*Gt223 + gt13L*Gt323) + gt12L*(2*Gt123*Gt211 + Gt112*Gt213 + Gt212*Gt223 + Gt113*Gt313 + Gt213*Gt323) + Gt311*Gt323*gt33L + gt23L*SQR(Gt313)) + - gtu32*(gt11L*Gt122*Gt223 + Gt113*Gt212*gt22L + Gt213*Gt222*gt22L + + gtu23*(gt11L*Gt122*Gt223 + Gt113*Gt212*gt22L + Gt213*Gt222*gt22L + Gt212*Gt223*gt22L + 2*Gt123*gt13L*Gt312 + Gt113*gt23L*Gt312 + Gt223*gt23L*Gt312 + Gt223*gt22L*Gt313 + gt13L*Gt223*Gt322 + Gt213*gt23L*Gt322 + gt11L*Gt123*Gt323 + Gt212*gt23L*Gt323 + @@ -696,19 +720,19 @@ void ML_BSSN_MP_constraints_Body(cGH const * restrict const cctkGH, int const di gt13L*J13L)*PDstandardNth1Xt3 + (gt13L*J21L + gt11L*J23L)*PDstandardNth2Xt1 + (gt23L*J21L + gt12L*J23L)*PDstandardNth2Xt2 + (gt33L*J21L + - gt13L*J23L)*PDstandardNth2Xt3 - 2*(gtu21*(J11L*J12L*PDstandardNth11gt13 + gt13L*J23L)*PDstandardNth2Xt3 - 2*(gtu12*(J11L*J12L*PDstandardNth11gt13 + J12L*J21L*PDstandardNth12gt13 + J11L*J22L*PDstandardNth12gt13 + J12L*J31L*PDstandardNth13gt13 + J11L*J32L*PDstandardNth13gt13 + dJ112L*PDstandardNth1gt13 + J21L*J22L*PDstandardNth22gt13 + J22L*J31L*PDstandardNth23gt13 + J21L*J32L*PDstandardNth23gt13 + dJ212L*PDstandardNth2gt13 + J31L*J32L*PDstandardNth33gt13 + - dJ312L*PDstandardNth3gt13) + gtu31*(J11L*J13L*PDstandardNth11gt13 + + dJ312L*PDstandardNth3gt13) + gtu13*(J11L*J13L*PDstandardNth11gt13 + J13L*J21L*PDstandardNth12gt13 + J11L*J23L*PDstandardNth12gt13 + J13L*J31L*PDstandardNth13gt13 + J11L*J33L*PDstandardNth13gt13 + dJ113L*PDstandardNth1gt13 + J21L*J23L*PDstandardNth22gt13 + J23L*J31L*PDstandardNth23gt13 + J21L*J33L*PDstandardNth23gt13 + dJ213L*PDstandardNth2gt13 + J31L*J33L*PDstandardNth33gt13 + - dJ313L*PDstandardNth3gt13) + gtu32*(J12L*J13L*PDstandardNth11gt13 + + dJ313L*PDstandardNth3gt13) + gtu23*(J12L*J13L*PDstandardNth11gt13 + J13L*J22L*PDstandardNth12gt13 + J12L*J23L*PDstandardNth12gt13 + J13L*J32L*PDstandardNth13gt13 + J12L*J33L*PDstandardNth13gt13 + dJ123L*PDstandardNth1gt13 + J22L*J23L*PDstandardNth22gt13 + @@ -729,22 +753,22 @@ void ML_BSSN_MP_constraints_Body(cGH const * restrict const cctkGH, int const di gt11L*(2*Gt112*Gt113 + Gt122*Gt213 + Gt123*Gt313) + gt13L*Gt213*Gt322 + gt13L*Gt313*Gt323 + Gt312*Gt313*gt33L + Gt211*Gt322*gt33L + Gt311*Gt323*gt33L + Gt111*(Gt112*gt13L + Gt212*gt23L + - Gt312*gt33L))*gtu21 + (Gt122*gt13L*Gt213 + gt11L*Gt122*Gt233 + + Gt312*gt33L))*gtu12 + (Gt122*gt13L*Gt213 + gt11L*Gt122*Gt233 + Gt212*gt22L*Gt233 + Gt113*Gt212*gt23L + Gt213*Gt222*gt23L + 2*Gt133*gt13L*Gt312 + Gt233*gt23L*Gt312 + Gt123*gt13L*Gt313 + Gt223*gt23L*Gt313 + gt13L*Gt233*Gt322 + gt11L*Gt123*Gt333 + Gt212*gt23L*Gt333 + gt13L*Gt323*Gt333 + Gt112*(2*gt11L*Gt133 + Gt113*gt13L + gt12L*Gt233 + gt13L*Gt333) + gt12L*(2*Gt133*Gt212 + Gt222*Gt233 + Gt223*Gt333) + Gt113*Gt312*gt33L + Gt213*Gt322*gt33L + - Gt313*Gt323*gt33L + Gt312*Gt333*gt33L)*gtu32 + - gtu21*(2*Gt123*gt12L*Gt211 + Gt112*gt13L*Gt212 + gt12L*Gt212*Gt223 + + Gt313*Gt323*gt33L + Gt312*Gt333*gt33L)*gtu23 + + gtu12*(2*Gt123*gt12L*Gt211 + Gt112*gt13L*Gt212 + gt12L*Gt212*Gt223 + Gt211*Gt223*gt22L + Gt112*Gt211*gt23L + 2*Gt123*gt13L*Gt311 + Gt223*gt23L*Gt311 + Gt113*gt13L*Gt312 + gt13L*Gt223*Gt312 + Gt213*gt23L*Gt312 + gt12L*Gt213*Gt323 + Gt211*gt23L*Gt323 + gt13L*Gt313*Gt323 + gt11L*(2*Gt111*Gt123 + Gt112*Gt223 + Gt113*Gt323) + Gt111*(Gt112*gt13L + gt12L*Gt223 + gt13L*Gt323) + Gt112*Gt311*gt33L + Gt212*Gt312*gt33L + Gt312*Gt313*gt33L + Gt311*Gt323*gt33L + - gt23L*SQR(Gt212)) + gtu32*(Gt123*gt13L*Gt212 + 2*Gt123*gt12L*Gt213 + + gt23L*SQR(Gt212)) + gtu23*(Gt123*gt13L*Gt212 + 2*Gt123*gt12L*Gt213 + Gt113*gt12L*Gt223 + Gt213*Gt223*gt22L + Gt212*Gt223*gt23L + Gt133*gt13L*Gt312 + Gt233*gt23L*Gt312 + 2*Gt123*gt13L*Gt313 + Gt223*gt23L*Gt313 + Gt113*gt13L*Gt323 + gt13L*Gt223*Gt323 + @@ -758,14 +782,14 @@ void ML_BSSN_MP_constraints_Body(cGH const * restrict const cctkGH, int const di Gt211*gt23L*Gt313 + gt11L*(2*Gt111*Gt113 + Gt112*Gt213 + Gt113*Gt313) + Gt211*Gt312*gt33L + 2*Gt311*Gt313*gt33L + Gt111*(gt12L*Gt213 + Gt211*gt23L + gt13L*Gt313 + Gt311*gt33L) + gt13L*SQR(Gt111) + - gt13L*SQR(Gt313)) + gtu31*(Gt112*gt13L*Gt213 + Gt112*gt11L*Gt233 + + gt13L*SQR(Gt313)) + gtu13*(Gt112*gt13L*Gt213 + Gt112*gt11L*Gt233 + Gt211*gt22L*Gt233 + Gt113*Gt211*gt23L + Gt212*Gt213*gt23L + 2*Gt133*gt13L*Gt311 + Gt233*gt23L*Gt311 + gt13L*Gt233*Gt312 + Gt113*gt13L*Gt313 + Gt213*gt23L*Gt313 + Gt113*gt11L*Gt333 + Gt211*gt23L*Gt333 + gt13L*Gt313*Gt333 + Gt111*(2*gt11L*Gt133 + Gt113*gt13L + gt12L*Gt233 + gt13L*Gt333) + gt12L*(2*Gt133*Gt211 + Gt212*Gt233 + Gt213*Gt333) + Gt113*Gt311*gt33L + Gt213*Gt312*gt33L + - Gt311*Gt333*gt33L + gt33L*SQR(Gt313)) + gtu31*(Gt123*gt13L*Gt211 + + Gt311*Gt333*gt33L + gt33L*SQR(Gt313)) + gtu13*(Gt123*gt13L*Gt211 + 3*Gt113*gt12L*Gt213 + gt12L*Gt213*Gt223 + Gt211*Gt223*gt23L + Gt133*gt13L*Gt311 + Gt233*gt23L*Gt311 + 3*Gt113*gt13L*Gt313 + gt12L*Gt233*Gt313 + 2*Gt213*gt23L*Gt313 + gt13L*Gt213*Gt323 + @@ -807,14 +831,14 @@ void ML_BSSN_MP_constraints_Body(cGH const * restrict const cctkGH, int const di gt12L*(2*Gt113 + Gt223) + 2*(Gt213*gt22L + gt23L*Gt313) + gt13L*Gt323) + 2*(Gt113*gt12L*Gt323 + Gt312*(gt12L*Gt133 + gt22L*Gt233 + gt23L*Gt333)) + Gt323*(Gt112*gt13L + 4*Gt212*gt23L + 2*(Gt213*gt22L + - gt23L*Gt313 + Gt312*gt33L)))*gtu31 + J12L*(gt12L*PDstandardNth1Xt1 + + gt23L*Gt313 + Gt312*gt33L)))*gtu13 + J12L*(gt12L*PDstandardNth1Xt1 + gt22L*PDstandardNth1Xt2 + gt23L*PDstandardNth1Xt3) + J22L*(gt12L*PDstandardNth2Xt1 + gt22L*PDstandardNth2Xt2 + gt23L*PDstandardNth2Xt3) + J32L*(gt12L*PDstandardNth3Xt1 + gt22L*PDstandardNth3Xt2 + gt23L*PDstandardNth3Xt3) + (Gt112*gt12L + Gt212*gt22L + gt23L*Gt312)*Xt1L + (Gt122*gt12L + Gt222*gt22L + gt23L*Gt322)*Xt2L + (Gt123*gt12L + Gt223*gt22L + gt23L*Gt323)*Xt3L + - gtu21*(Gt222*(3*Gt112*gt12L + 6*Gt212*gt22L + 4*gt23L*Gt312) + + gtu12*(Gt222*(3*Gt112*gt12L + 6*Gt212*gt22L + 4*gt23L*Gt312) + Gt122*(Gt112*gt11L + gt12L*(2*Gt111 + 4*Gt212) + 2*(Gt211*gt22L + gt23L*Gt311 + gt13L*Gt312)) + Gt112*(gt11L*Gt122 + gt12L*Gt222 + 2*(Gt212*gt22L + gt23L*Gt312) + gt13L*Gt322) + Gt322*(Gt112*gt13L + @@ -830,25 +854,25 @@ void ML_BSSN_MP_constraints_Body(cGH const * restrict const cctkGH, int const di gtu33*(Gt123*(gt12L*(2*Gt113 + 4*Gt223) + 2*(Gt213*gt22L + gt23L*Gt313 + gt13L*Gt323)) + Gt323*(2*(gt12L*Gt133 + gt22L*Gt233) + gt23L*(4*Gt223 + 2*Gt333)) + gt11L*SQR(Gt123) + 3*gt22L*SQR(Gt223) + gt33L*SQR(Gt323)) - + gtu32*(gt22L*(2*(Gt122*Gt213 + Gt233*Gt322) + Gt223*(6*Gt222 + + + gtu23*(gt22L*(2*(Gt122*Gt213 + Gt233*Gt322) + Gt223*(6*Gt222 + 2*Gt323)) + 4*(gt12L*(Gt123*Gt222 + Gt122*Gt223) + gt23L*(Gt223*Gt322 + Gt222*Gt323)) + 2*(Gt123*(Gt112*gt12L + Gt212*gt22L + gt23L*Gt312 + gt13L*Gt322) + gt12L*(Gt133*Gt322 + Gt123*Gt323) + Gt122*(gt11L*Gt123 + Gt113*gt12L + gt23L*Gt313 + gt13L*Gt323) + Gt322*(gt23L*Gt333 + Gt323*gt33L) + gt23L*SQR(Gt323))) + - khalf*(-2*(gtu21*(J11L*J12L*PDstandardNth11gt22 + + khalf*(-2*(gtu12*(J11L*J12L*PDstandardNth11gt22 + J12L*J21L*PDstandardNth12gt22 + J11L*J22L*PDstandardNth12gt22 + J12L*J31L*PDstandardNth13gt22 + J11L*J32L*PDstandardNth13gt22 + dJ112L*PDstandardNth1gt22 + J21L*J22L*PDstandardNth22gt22 + J22L*J31L*PDstandardNth23gt22 + J21L*J32L*PDstandardNth23gt22 + dJ212L*PDstandardNth2gt22 + J31L*J32L*PDstandardNth33gt22 + - dJ312L*PDstandardNth3gt22) + gtu31*(J11L*J13L*PDstandardNth11gt22 + + dJ312L*PDstandardNth3gt22) + gtu13*(J11L*J13L*PDstandardNth11gt22 + J13L*J21L*PDstandardNth12gt22 + J11L*J23L*PDstandardNth12gt22 + J13L*J31L*PDstandardNth13gt22 + J11L*J33L*PDstandardNth13gt22 + dJ113L*PDstandardNth1gt22 + J21L*J23L*PDstandardNth22gt22 + J23L*J31L*PDstandardNth23gt22 + J21L*J33L*PDstandardNth23gt22 + dJ213L*PDstandardNth2gt22 + J31L*J33L*PDstandardNth33gt22 + - dJ313L*PDstandardNth3gt22) + gtu32*(J12L*J13L*PDstandardNth11gt22 + + dJ313L*PDstandardNth3gt22) + gtu23*(J12L*J13L*PDstandardNth11gt22 + J13L*J22L*PDstandardNth12gt22 + J12L*J23L*PDstandardNth12gt22 + J13L*J32L*PDstandardNth13gt22 + J12L*J33L*PDstandardNth13gt22 + dJ123L*PDstandardNth1gt22 + J22L*J23L*PDstandardNth22gt22 + @@ -875,19 +899,19 @@ void ML_BSSN_MP_constraints_Body(cGH const * restrict const cctkGH, int const di gt23L*J13L)*PDstandardNth1Xt3 + (gt13L*J22L + gt12L*J23L)*PDstandardNth2Xt1 + (gt23L*J22L + gt22L*J23L)*PDstandardNth2Xt2 + (gt33L*J22L + - gt23L*J23L)*PDstandardNth2Xt3 - 2*(gtu21*(J11L*J12L*PDstandardNth11gt23 + gt23L*J23L)*PDstandardNth2Xt3 - 2*(gtu12*(J11L*J12L*PDstandardNth11gt23 + J12L*J21L*PDstandardNth12gt23 + J11L*J22L*PDstandardNth12gt23 + J12L*J31L*PDstandardNth13gt23 + J11L*J32L*PDstandardNth13gt23 + dJ112L*PDstandardNth1gt23 + J21L*J22L*PDstandardNth22gt23 + J22L*J31L*PDstandardNth23gt23 + J21L*J32L*PDstandardNth23gt23 + dJ212L*PDstandardNth2gt23 + J31L*J32L*PDstandardNth33gt23 + - dJ312L*PDstandardNth3gt23) + gtu31*(J11L*J13L*PDstandardNth11gt23 + + dJ312L*PDstandardNth3gt23) + gtu13*(J11L*J13L*PDstandardNth11gt23 + J13L*J21L*PDstandardNth12gt23 + J11L*J23L*PDstandardNth12gt23 + J13L*J31L*PDstandardNth13gt23 + J11L*J33L*PDstandardNth13gt23 + dJ113L*PDstandardNth1gt23 + J21L*J23L*PDstandardNth22gt23 + J23L*J31L*PDstandardNth23gt23 + J21L*J33L*PDstandardNth23gt23 + dJ213L*PDstandardNth2gt23 + J31L*J33L*PDstandardNth33gt23 + - dJ313L*PDstandardNth3gt23) + gtu32*(J12L*J13L*PDstandardNth11gt23 + + dJ313L*PDstandardNth3gt23) + gtu23*(J12L*J13L*PDstandardNth11gt23 + J13L*J22L*PDstandardNth12gt23 + J12L*J23L*PDstandardNth12gt23 + J13L*J32L*PDstandardNth13gt23 + J12L*J33L*PDstandardNth13gt23 + dJ123L*PDstandardNth1gt23 + J22L*J23L*PDstandardNth22gt23 + @@ -908,7 +932,7 @@ void ML_BSSN_MP_constraints_Body(cGH const * restrict const cctkGH, int const di Gt113*gt13L*Gt322 + Gt213*gt23L*Gt322 + Gt113*gt12L*Gt323 + Gt112*gt13L*Gt323 + Gt213*gt22L*Gt323 + Gt212*gt23L*Gt323 + gt23L*Gt313*Gt323 + Gt122*Gt311*gt33L + Gt222*Gt312*gt33L + - Gt313*Gt322*gt33L + Gt312*Gt323*gt33L)*gtu21 + (Gt112*gt11L*Gt133 + + Gt313*Gt322*gt33L + Gt312*Gt323*gt33L)*gtu12 + (Gt112*gt11L*Gt133 + Gt111*gt12L*Gt133 + Gt111*Gt123*gt13L + gt12L*Gt133*Gt212 + Gt112*gt13L*Gt223 + Gt133*Gt211*gt22L + 2*Gt112*gt12L*Gt233 + 2*Gt212*gt22L*Gt233 + Gt123*Gt211*gt23L + Gt212*Gt223*gt23L + @@ -916,7 +940,7 @@ void ML_BSSN_MP_constraints_Body(cGH const * restrict const cctkGH, int const di Gt113*gt13L*Gt323 + Gt213*gt23L*Gt323 + Gt113*gt12L*Gt333 + Gt112*gt13L*Gt333 + Gt213*gt22L*Gt333 + Gt212*gt23L*Gt333 + gt23L*Gt313*Gt333 + Gt123*Gt311*gt33L + Gt223*Gt312*gt33L + - Gt313*Gt323*gt33L + Gt312*Gt333*gt33L)*gtu31 + gtu21*(Gt113*gt11L*Gt122 + Gt313*Gt323*gt33L + Gt312*Gt333*gt33L)*gtu13 + gtu12*(Gt113*gt11L*Gt122 + Gt122*gt13L*Gt212 + 2*Gt122*gt12L*Gt213 + Gt113*gt12L*Gt222 + Gt113*Gt212*gt22L + 2*Gt213*Gt222*gt22L + Gt212*Gt222*gt23L + Gt123*gt13L*Gt312 + Gt113*gt23L*Gt312 + Gt223*gt23L*Gt312 + @@ -924,7 +948,7 @@ void ML_BSSN_MP_constraints_Body(cGH const * restrict const cctkGH, int const di Gt222*gt23L*Gt313 + Gt113*gt13L*Gt322 + 2*Gt213*gt23L*Gt322 + gt23L*Gt313*Gt323 + Gt212*Gt322*gt33L + Gt313*Gt322*gt33L + Gt312*Gt323*gt33L + Gt112*(Gt113*gt12L + Gt212*gt23L + Gt312*gt33L) + - gt13L*SQR(Gt112)) + gtu31*(2*Gt213*Gt223*gt22L + Gt112*Gt213*gt23L + + gt13L*SQR(Gt112)) + gtu13*(2*Gt213*Gt223*gt22L + Gt112*Gt213*gt23L + Gt212*Gt223*gt23L + Gt133*gt13L*Gt312 + Gt233*gt23L*Gt312 + gt12L*Gt133*Gt313 + gt22L*Gt233*Gt313 + Gt223*gt23L*Gt313 + Gt123*(2*gt12L*Gt213 + gt13L*(Gt212 + Gt313)) + 2*Gt213*gt23L*Gt323 + @@ -945,7 +969,7 @@ void ML_BSSN_MP_constraints_Body(cGH const * restrict const cctkGH, int const di 3*Gt223*gt23L*Gt322 + Gt123*gt12L*Gt323 + Gt122*gt13L*Gt323 + Gt223*gt22L*Gt323 + Gt222*gt23L*Gt323 + Gt122*Gt312*gt33L + Gt222*Gt322*gt33L + 2*Gt322*Gt323*gt33L + gt23L*SQR(Gt222) + - gt23L*SQR(Gt323)) + gtu32*(gt11L*Gt122*Gt133 + Gt112*gt12L*Gt133 + + gt23L*SQR(Gt323)) + gtu23*(gt11L*Gt122*Gt133 + Gt112*gt12L*Gt133 + Gt112*Gt123*gt13L + gt12L*Gt133*Gt222 + Gt122*gt13L*Gt223 + Gt133*Gt212*gt22L + 2*Gt122*gt12L*Gt233 + 2*Gt222*gt22L*Gt233 + Gt123*Gt212*gt23L + Gt222*Gt223*gt23L + Gt133*gt23L*Gt312 + @@ -953,7 +977,7 @@ void ML_BSSN_MP_constraints_Body(cGH const * restrict const cctkGH, int const di Gt223*gt23L*Gt323 + Gt123*gt12L*Gt333 + Gt122*gt13L*Gt333 + Gt223*gt22L*Gt333 + Gt222*gt23L*Gt333 + gt23L*Gt323*Gt333 + Gt123*Gt312*gt33L + Gt223*Gt322*gt33L + Gt322*Gt333*gt33L + - gt33L*SQR(Gt323)) + gtu32*(Gt113*Gt123*gt12L + Gt113*Gt122*gt13L + + gt33L*SQR(Gt323)) + gtu23*(Gt113*Gt123*gt12L + Gt113*Gt122*gt13L + Gt123*gt13L*Gt222 + 3*Gt123*gt12L*Gt223 + Gt123*Gt213*gt22L + Gt122*Gt213*gt23L + Gt222*Gt223*gt23L + Gt123*gt23L*Gt313 + Gt133*gt13L*Gt322 + Gt233*gt23L*Gt322 + gt12L*Gt133*Gt323 + @@ -988,7 +1012,7 @@ void ML_BSSN_MP_constraints_Body(cGH const * restrict const cctkGH, int const di 2*(gt13L*(Gt122*Gt213 + Gt112*Gt223) + Gt213*(Gt223*gt22L + Gt222*gt23L) + Gt123*(Gt111*gt13L + gt12L*Gt213 + Gt211*gt23L + Gt311*gt33L) + Gt223*(Gt212*gt23L + Gt312*gt33L) + Gt113*(gt11L*Gt123 + - Gt112*gt13L + gt12L*Gt223 + Gt212*gt23L + Gt312*gt33L)))*gtu21 + + Gt112*gt13L + gt12L*Gt223 + Gt212*gt23L + Gt312*gt33L)))*gtu12 + J13L*(gt13L*PDstandardNth1Xt1 + gt23L*PDstandardNth1Xt2 + gt33L*PDstandardNth1Xt3) + J23L*(gt13L*PDstandardNth2Xt1 + gt23L*PDstandardNth2Xt2 + gt33L*PDstandardNth2Xt3) + @@ -996,13 +1020,13 @@ void ML_BSSN_MP_constraints_Body(cGH const * restrict const cctkGH, int const di gt33L*PDstandardNth3Xt3) + (Gt113*gt13L + Gt213*gt23L + Gt313*gt33L)*Xt1L + (Gt123*gt13L + Gt223*gt23L + Gt323*gt33L)*Xt2L + (Gt133*gt13L + Gt233*gt23L + Gt333*gt33L)*Xt3L + - gtu31*(Gt133*(Gt113*gt11L + 2*(Gt111*gt13L + gt12L*Gt213 + Gt211*gt23L) + gtu13*(Gt133*(Gt113*gt11L + 2*(Gt111*gt13L + gt12L*Gt213 + Gt211*gt23L) + 4*gt13L*Gt313) + Gt333*(3*Gt113*gt13L + 4*Gt213*gt23L + 6*Gt313*gt33L) + Gt233*(Gt113*gt12L + 4*gt23L*Gt313 + 2*(Gt213*gt22L + Gt212*gt23L + Gt312*gt33L)) + Gt113*(gt11L*Gt133 + gt12L*Gt233 + gt13L*Gt333 + 2*(Gt213*gt23L + Gt313*gt33L)) + 2*(Gt133*Gt311*gt33L + Gt213*(Gt223*gt23L + Gt323*gt33L) + gt13L*(Gt123*Gt213 + Gt112*Gt233 + - SQR(Gt113)))) + gtu32*(4*((Gt133*gt13L + Gt233*gt23L)*Gt323 + + SQR(Gt113)))) + gtu23*(4*((Gt133*gt13L + Gt233*gt23L)*Gt323 + (Gt123*gt13L + Gt223*gt23L)*Gt333) + Gt323*(2*Gt223 + 6*Gt333)*gt33L + 2*(Gt133*(Gt112*gt13L + gt12L*Gt223 + Gt212*gt23L + Gt312*gt33L) + Gt123*(gt11L*Gt133 + gt13L*(Gt113 + Gt223) + gt12L*Gt233 + Gt213*gt23L @@ -1018,19 +1042,19 @@ void ML_BSSN_MP_constraints_Body(cGH const * restrict const cctkGH, int const di 2*(Gt133*(Gt113*gt13L + gt12L*Gt233 + Gt213*gt23L + Gt313*gt33L) + Gt233*(Gt123*gt13L + Gt223*gt23L + Gt323*gt33L)) + gt11L*SQR(Gt133) + gt22L*SQR(Gt233) + 3*gt33L*SQR(Gt333)) + - khalf*(-2*(gtu21*(J11L*J12L*PDstandardNth11gt33 + + khalf*(-2*(gtu12*(J11L*J12L*PDstandardNth11gt33 + J12L*J21L*PDstandardNth12gt33 + J11L*J22L*PDstandardNth12gt33 + J12L*J31L*PDstandardNth13gt33 + J11L*J32L*PDstandardNth13gt33 + dJ112L*PDstandardNth1gt33 + J21L*J22L*PDstandardNth22gt33 + J22L*J31L*PDstandardNth23gt33 + J21L*J32L*PDstandardNth23gt33 + dJ212L*PDstandardNth2gt33 + J31L*J32L*PDstandardNth33gt33 + - dJ312L*PDstandardNth3gt33) + gtu31*(J11L*J13L*PDstandardNth11gt33 + + dJ312L*PDstandardNth3gt33) + gtu13*(J11L*J13L*PDstandardNth11gt33 + J13L*J21L*PDstandardNth12gt33 + J11L*J23L*PDstandardNth12gt33 + J13L*J31L*PDstandardNth13gt33 + J11L*J33L*PDstandardNth13gt33 + dJ113L*PDstandardNth1gt33 + J21L*J23L*PDstandardNth22gt33 + J23L*J31L*PDstandardNth23gt33 + J21L*J33L*PDstandardNth23gt33 + dJ213L*PDstandardNth2gt33 + J31L*J33L*PDstandardNth33gt33 + - dJ313L*PDstandardNth3gt33) + gtu32*(J12L*J13L*PDstandardNth11gt33 + + dJ313L*PDstandardNth3gt33) + gtu23*(J12L*J13L*PDstandardNth11gt33 + J13L*J22L*PDstandardNth12gt33 + J12L*J23L*PDstandardNth12gt33 + J13L*J32L*PDstandardNth13gt33 + J12L*J33L*PDstandardNth13gt33 + dJ123L*PDstandardNth1gt33 + J22L*J23L*PDstandardNth22gt33 + @@ -1132,38 +1156,38 @@ void ML_BSSN_MP_constraints_Body(cGH const * restrict const cctkGH, int const di J23L*PDstandardNth2phi + J33L*PDstandardNth3phi); CCTK_REAL Rphi11 = -2*(cdphi211 + 2*(-1 + gt11L*gtu11)*SQR(cdphi1) + - gt11L*(cdphi211*gtu11 + 4*(cdphi1*(cdphi2*gtu21 + cdphi3*gtu31) + - cdphi2*cdphi3*gtu32) + cdphi233*gtu33 + gtu22*(cdphi222 + - 2*SQR(cdphi2)) + 2*(cdphi212*gtu21 + cdphi213*gtu31 + cdphi223*gtu32 + + 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 Rphi12 = -2*(cdphi212 + cdphi1*(cdphi2*(-2 + 4*gt12L*gtu21) - + 4*cdphi3*gt12L*gtu31) + gt12L*(cdphi211*gtu11 + 4*cdphi2*cdphi3*gtu32 - + 2*(cdphi212*gtu21 + cdphi213*gtu31 + cdphi223*gtu32 + + 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 Rphi13 = -2*(cdphi213 + cdphi1*(4*cdphi2*gt13L*gtu21 + - cdphi3*(-2 + 4*gt13L*gtu31)) + gt13L*(cdphi211*gtu11 + - 4*cdphi2*cdphi3*gtu32 + 2*(cdphi212*gtu21 + cdphi213*gtu31 + - cdphi223*gtu32 + gtu11*SQR(cdphi1)) + gtu22*(cdphi222 + 2*SQR(cdphi2)) + 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 Rphi22 = -2*(cdphi222 + 2*(-1 + gt22L*gtu22)*SQR(cdphi2) + - gt22L*(cdphi222*gtu22 + 4*(cdphi1*cdphi3*gtu31 + cdphi2*(cdphi1*gtu21 + - cdphi3*gtu32)) + cdphi233*gtu33 + gtu11*(cdphi211 + 2*SQR(cdphi1)) + - 2*(cdphi212*gtu21 + cdphi213*gtu31 + cdphi223*gtu32 + + 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 Rphi23 = -2*(cdphi223 + cdphi2*(4*cdphi1*gt23L*gtu21 + - cdphi3*(-2 + 4*gt23L*gtu32)) + gt23L*(cdphi222*gtu22 + - 4*cdphi1*cdphi3*gtu31 + gtu11*(cdphi211 + 2*SQR(cdphi1)) + - 2*(cdphi212*gtu21 + cdphi213*gtu31 + cdphi223*gtu32 + - gtu22*SQR(cdphi2)) + gtu33*(cdphi233 + 2*SQR(cdphi3)))); + 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 Rphi33 = -2*(cdphi233 + gt33L*((4*cdphi1*cdphi2 + - 2*cdphi212)*gtu21 + 4*cdphi3*(cdphi1*gtu31 + cdphi2*gtu32) + - 2*(cdphi213*gtu31 + cdphi223*gtu32) + cdphi233*gtu33 + gtu11*(cdphi211 + 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)); @@ -1173,13 +1197,13 @@ void ML_BSSN_MP_constraints_Body(cGH const * restrict const cctkGH, int const di CCTK_REAL gu11 = em4phi*gtu11; - CCTK_REAL gu21 = em4phi*gtu21; + CCTK_REAL gu12 = em4phi*gtu12; - CCTK_REAL gu31 = em4phi*gtu31; + CCTK_REAL gu13 = em4phi*gtu13; CCTK_REAL gu22 = em4phi*gtu22; - CCTK_REAL gu32 = em4phi*gtu32; + CCTK_REAL gu23 = em4phi*gtu23; CCTK_REAL gu33 = em4phi*gtu33; @@ -1195,26 +1219,26 @@ void ML_BSSN_MP_constraints_Body(cGH const * restrict const cctkGH, int const di CCTK_REAL R33 = Rphi33 + Rt33; - CCTK_REAL trR = gu11*R11 + gu22*R22 + 2*(gu21*R12 + gu31*R13 + - gu32*R23) + gu33*R33; + CCTK_REAL trR = gu11*R11 + gu22*R22 + 2*(gu12*R12 + gu13*R13 + + gu23*R23) + gu33*R33; - CCTK_REAL Atm11 = At11L*gtu11 + At12L*gtu21 + At13L*gtu31; + CCTK_REAL Atm11 = At11L*gtu11 + At12L*gtu12 + At13L*gtu13; - CCTK_REAL Atm21 = At11L*gtu21 + At12L*gtu22 + At13L*gtu32; + CCTK_REAL Atm21 = At11L*gtu12 + At12L*gtu22 + At13L*gtu23; - CCTK_REAL Atm31 = At11L*gtu31 + At12L*gtu32 + At13L*gtu33; + CCTK_REAL Atm31 = At11L*gtu13 + At12L*gtu23 + At13L*gtu33; - CCTK_REAL Atm12 = At12L*gtu11 + At22L*gtu21 + At23L*gtu31; + CCTK_REAL Atm12 = At12L*gtu11 + At22L*gtu12 + At23L*gtu13; - CCTK_REAL Atm22 = At12L*gtu21 + At22L*gtu22 + At23L*gtu32; + CCTK_REAL Atm22 = At12L*gtu12 + At22L*gtu22 + At23L*gtu23; - CCTK_REAL Atm32 = At12L*gtu31 + At22L*gtu32 + At23L*gtu33; + CCTK_REAL Atm32 = At12L*gtu13 + At22L*gtu23 + At23L*gtu33; - CCTK_REAL Atm13 = At13L*gtu11 + At23L*gtu21 + At33L*gtu31; + CCTK_REAL Atm13 = At13L*gtu11 + At23L*gtu12 + At33L*gtu13; - CCTK_REAL Atm23 = At13L*gtu21 + At23L*gtu22 + At33L*gtu32; + CCTK_REAL Atm23 = At13L*gtu12 + At23L*gtu22 + At33L*gtu23; - CCTK_REAL Atm33 = At13L*gtu31 + At23L*gtu32 + At33L*gtu33; + CCTK_REAL Atm33 = At13L*gtu13 + At23L*gtu23 + At33L*gtu33; CCTK_REAL rho = pow(alphaL,-2)*(eTttL - 2*(beta2L*eTtyL + beta3L*eTtzL) + 2*(beta1L*(-eTtxL + beta2L*eTxyL + beta3L*eTxzL) + @@ -1236,113 +1260,112 @@ void ML_BSSN_MP_constraints_Body(cGH const * restrict const cctkGH, int const di 0.6666666666666666666666666666666666666667*SQR(trKL); CCTK_REAL M1L = -(At12L*Gt112*gtu22) - At22L*Gt212*gtu22 - - At12L*Gt222*gtu22 - At23L*Gt312*gtu22 - At13L*Gt322*gtu22 + - At12L*(6*cdphi1*gtu21 - Gt111*gtu21 + 6*cdphi2*gtu22) + - At11L*(6*cdphi1*gtu11 - 2*Gt111*gtu11 + 6*cdphi2*gtu21 - Gt122*gtu22) + - 6*At13L*cdphi1*gtu31 + 6*At11L*cdphi3*gtu31 - At13L*Gt111*gtu31 - - 3*At11L*Gt113*gtu31 - At23L*Gt211*gtu31 - 3*At12L*Gt213*gtu31 - - At33L*Gt311*gtu31 - 3*At13L*Gt313*gtu31 + 6*At13L*cdphi2*gtu32 + - 6*At12L*cdphi3*gtu32 - At13L*Gt112*gtu32 - At12L*Gt113*gtu32 - - At23L*Gt212*gtu32 - At22L*Gt213*gtu32 - 2*At12L*Gt223*gtu32 - - At33L*Gt312*gtu32 - At23L*Gt313*gtu32 - 2*At13L*Gt323*gtu32 - - 2*(At12L*Gt211*gtu11 + At13L*Gt311*gtu11 + At11L*Gt123*gtu32) + - 6*At13L*cdphi3*gtu33 - At13L*Gt113*gtu33 - At11L*Gt133*gtu33 - - At23L*Gt213*gtu33 - At12L*Gt233*gtu33 - At33L*Gt313*gtu33 - - At13L*Gt333*gtu33 + (gtu11*J11L + gtu21*J12L + - gtu31*J13L)*PDstandardNth1At11 + gtu22*J12L*PDstandardNth1At12 + - gtu32*J13L*PDstandardNth1At12 + gtu21*(-3*At11L*Gt112 - At22L*Gt211 - + At12L*Gt222*gtu22 - At23L*Gt312*gtu22 + At12L*(6*cdphi1*gtu12 - + Gt111*gtu12 - 3*Gt213*gtu13 + 6*cdphi2*gtu22) + At11L*(6*cdphi1*gtu11 - + 2*Gt111*gtu11 + 6*cdphi2*gtu12 + 6*cdphi3*gtu13 - Gt122*gtu22) + + At13L*(6*cdphi1*gtu13 - Gt111*gtu13 - Gt322*gtu22) + + 6*At13L*cdphi2*gtu23 + 6*At12L*cdphi3*gtu23 - At13L*Gt112*gtu23 - + At12L*Gt113*gtu23 - At23L*Gt212*gtu23 - At22L*Gt213*gtu23 - + 2*At12L*Gt223*gtu23 - At33L*Gt312*gtu23 - At23L*Gt313*gtu23 - + 2*At13L*Gt323*gtu23 - 2*(At12L*Gt211*gtu11 + At13L*Gt311*gtu11 + + At11L*Gt123*gtu23) + 6*At13L*cdphi3*gtu33 - At13L*Gt113*gtu33 - + At11L*Gt133*gtu33 - At23L*Gt213*gtu33 - At12L*Gt233*gtu33 - + At33L*Gt313*gtu33 - At13L*Gt333*gtu33 + (gtu11*J11L + gtu12*J12L + + gtu13*J13L)*PDstandardNth1At11 + gtu22*J12L*PDstandardNth1At12 + + gtu23*J13L*PDstandardNth1At12 + gtu12*(-3*At11L*Gt112 - At22L*Gt211 - 3*At12L*Gt212 - At23L*Gt311 - 3*At13L*Gt312 + J11L*PDstandardNth1At12) - + gtu31*J11L*PDstandardNth1At13 + gtu32*J12L*PDstandardNth1At13 + - gtu33*J13L*PDstandardNth1At13 - J11L*ktwothird*PDstandardNth1trK + - (gtu11*J21L + gtu21*J22L + gtu31*J23L)*PDstandardNth2At11 + - gtu21*J21L*PDstandardNth2At12 + gtu22*J22L*PDstandardNth2At12 + - gtu32*J23L*PDstandardNth2At12 + gtu31*J21L*PDstandardNth2At13 + - gtu32*J22L*PDstandardNth2At13 + gtu33*J23L*PDstandardNth2At13 - + + gtu23*J12L*PDstandardNth1At13 + gtu33*J13L*PDstandardNth1At13 + + gtu13*(-3*At11L*Gt113 - At23L*Gt211 - At33L*Gt311 - 3*At13L*Gt313 + + J11L*PDstandardNth1At13) - J11L*ktwothird*PDstandardNth1trK + + (gtu11*J21L + gtu12*J22L + gtu13*J23L)*PDstandardNth2At11 + + gtu12*J21L*PDstandardNth2At12 + gtu22*J22L*PDstandardNth2At12 + + gtu23*J23L*PDstandardNth2At12 + gtu13*J21L*PDstandardNth2At13 + + gtu23*J22L*PDstandardNth2At13 + gtu33*J23L*PDstandardNth2At13 - J21L*ktwothird*PDstandardNth2trK + gtu11*J31L*PDstandardNth3At11 + - gtu21*J32L*PDstandardNth3At11 + gtu31*J33L*PDstandardNth3At11 + - gtu21*J31L*PDstandardNth3At12 + gtu22*J32L*PDstandardNth3At12 + - gtu32*J33L*PDstandardNth3At12 + gtu31*J31L*PDstandardNth3At13 + - gtu32*J32L*PDstandardNth3At13 + gtu33*J33L*PDstandardNth3At13 - + gtu12*J32L*PDstandardNth3At11 + gtu13*J33L*PDstandardNth3At11 + + gtu12*J31L*PDstandardNth3At12 + gtu22*J32L*PDstandardNth3At12 + + gtu23*J33L*PDstandardNth3At12 + gtu13*J31L*PDstandardNth3At13 + + gtu23*J32L*PDstandardNth3At13 + gtu33*J33L*PDstandardNth3At13 - J31L*ktwothird*PDstandardNth3trK - 25.13274122871834590770114706623602307358*S1; CCTK_REAL M2L = -(At11L*Gt112*gtu11) - At22L*Gt211*gtu11 - At12L*Gt212*gtu11 - At23L*Gt311*gtu11 - At13L*Gt312*gtu11 + - At12L*(6*cdphi1*gtu11 - Gt111*gtu11) + 6*At22L*cdphi1*gtu21 + - 6*At12L*cdphi2*gtu21 - 3*At12L*Gt112*gtu21 - At11L*Gt122*gtu21 - - 3*At22L*Gt212*gtu21 - At12L*Gt222*gtu21 - 3*At23L*Gt312*gtu21 - - At13L*Gt322*gtu21 + 6*At22L*cdphi2*gtu22 - 2*At12L*Gt122*gtu22 - - 2*At22L*Gt222*gtu22 - 2*At23L*Gt322*gtu22 + 6*At23L*cdphi1*gtu31 + - 6*At12L*cdphi3*gtu31 - At13L*Gt112*gtu31 - 2*At12L*Gt113*gtu31 - - At11L*Gt123*gtu31 - At23L*Gt212*gtu31 - 2*At22L*Gt213*gtu31 - - At12L*Gt223*gtu31 - At33L*Gt312*gtu31 - 2*At23L*Gt313*gtu31 - - At13L*Gt323*gtu31 + 6*At23L*cdphi2*gtu32 + 6*At22L*cdphi3*gtu32 - - At13L*Gt122*gtu32 - 3*At12L*Gt123*gtu32 - At23L*Gt222*gtu32 - - 3*At22L*Gt223*gtu32 - At33L*Gt322*gtu32 - 3*At23L*Gt323*gtu32 + + At12L*(6*cdphi1*gtu11 - Gt111*gtu11) + 6*At22L*cdphi1*gtu12 + + 6*At12L*cdphi2*gtu12 - 3*At12L*Gt112*gtu12 - At11L*Gt122*gtu12 - + 3*At22L*Gt212*gtu12 - At12L*Gt222*gtu12 - 3*At23L*Gt312*gtu12 - + At13L*Gt322*gtu12 + 6*At23L*cdphi1*gtu13 + 6*At12L*cdphi3*gtu13 - + At13L*Gt112*gtu13 - 2*At12L*Gt113*gtu13 - At11L*Gt123*gtu13 - + At23L*Gt212*gtu13 - 2*At22L*Gt213*gtu13 - At12L*Gt223*gtu13 - + At33L*Gt312*gtu13 - 2*At23L*Gt313*gtu13 - At13L*Gt323*gtu13 + + 6*At22L*cdphi2*gtu22 - 2*At12L*Gt122*gtu22 - 2*At22L*Gt222*gtu22 - + 2*At23L*Gt322*gtu22 + 6*At23L*cdphi2*gtu23 + 6*At22L*cdphi3*gtu23 - + At13L*Gt122*gtu23 - 3*At12L*Gt123*gtu23 - At23L*Gt222*gtu23 - + 3*At22L*Gt223*gtu23 - At33L*Gt322*gtu23 - 3*At23L*Gt323*gtu23 + 6*At23L*cdphi3*gtu33 - At13L*Gt123*gtu33 - At12L*Gt133*gtu33 - At23L*Gt223*gtu33 - At22L*Gt233*gtu33 - At33L*Gt323*gtu33 - - At23L*Gt333*gtu33 + (gtu11*J11L + gtu21*J12L + - gtu31*J13L)*PDstandardNth1At12 + gtu21*J11L*PDstandardNth1At22 + - gtu22*J12L*PDstandardNth1At22 + gtu32*J13L*PDstandardNth1At22 + - gtu31*J11L*PDstandardNth1At23 + gtu32*J12L*PDstandardNth1At23 + + At23L*Gt333*gtu33 + (gtu11*J11L + gtu12*J12L + + gtu13*J13L)*PDstandardNth1At12 + gtu12*J11L*PDstandardNth1At22 + + gtu22*J12L*PDstandardNth1At22 + gtu23*J13L*PDstandardNth1At22 + + gtu13*J11L*PDstandardNth1At23 + gtu23*J12L*PDstandardNth1At23 + gtu33*J13L*PDstandardNth1At23 - J12L*ktwothird*PDstandardNth1trK + - (gtu11*J21L + gtu21*J22L + gtu31*J23L)*PDstandardNth2At12 + - gtu21*J21L*PDstandardNth2At22 + gtu22*J22L*PDstandardNth2At22 + - gtu32*J23L*PDstandardNth2At22 + gtu31*J21L*PDstandardNth2At23 + - gtu32*J22L*PDstandardNth2At23 + gtu33*J23L*PDstandardNth2At23 - + (gtu11*J21L + gtu12*J22L + gtu13*J23L)*PDstandardNth2At12 + + gtu12*J21L*PDstandardNth2At22 + gtu22*J22L*PDstandardNth2At22 + + gtu23*J23L*PDstandardNth2At22 + gtu13*J21L*PDstandardNth2At23 + + gtu23*J22L*PDstandardNth2At23 + gtu33*J23L*PDstandardNth2At23 - J22L*ktwothird*PDstandardNth2trK + gtu11*J31L*PDstandardNth3At12 + - gtu21*J32L*PDstandardNth3At12 + gtu31*J33L*PDstandardNth3At12 + - gtu21*J31L*PDstandardNth3At22 + gtu22*J32L*PDstandardNth3At22 + - gtu32*J33L*PDstandardNth3At22 + gtu31*J31L*PDstandardNth3At23 + - gtu32*J32L*PDstandardNth3At23 + gtu33*J33L*PDstandardNth3At23 - + gtu12*J32L*PDstandardNth3At12 + gtu13*J33L*PDstandardNth3At12 + + gtu12*J31L*PDstandardNth3At22 + gtu22*J32L*PDstandardNth3At22 + + gtu23*J33L*PDstandardNth3At22 + gtu13*J31L*PDstandardNth3At23 + + gtu23*J32L*PDstandardNth3At23 + gtu33*J33L*PDstandardNth3At23 - J32L*ktwothird*PDstandardNth3trK - 25.13274122871834590770114706623602307358*S2; CCTK_REAL M3L = -(At11L*Gt113*gtu11) - At23L*Gt211*gtu11 - At12L*Gt213*gtu11 - At33L*Gt311*gtu11 - At13L*Gt313*gtu11 + - At13L*(6*cdphi1*gtu11 - Gt111*gtu11) + 6*At23L*cdphi1*gtu21 + - 6*At13L*cdphi2*gtu21 - 2*At13L*Gt112*gtu21 - At12L*Gt113*gtu21 - - At11L*Gt123*gtu21 - 2*At23L*Gt212*gtu21 - At22L*Gt213*gtu21 - - At12L*Gt223*gtu21 - 2*At33L*Gt312*gtu21 - At23L*Gt313*gtu21 - - At13L*Gt323*gtu21 + 6*At23L*cdphi2*gtu22 - At13L*Gt122*gtu22 - - At12L*Gt123*gtu22 - At23L*Gt222*gtu22 - At22L*Gt223*gtu22 - - At33L*Gt322*gtu22 - At23L*Gt323*gtu22 + 6*At33L*cdphi1*gtu31 + - 6*At13L*cdphi3*gtu31 - 3*At13L*Gt113*gtu31 - At11L*Gt133*gtu31 - - 3*At23L*Gt213*gtu31 - At12L*Gt233*gtu31 - 3*At33L*Gt313*gtu31 - - At13L*Gt333*gtu31 + 6*At33L*cdphi2*gtu32 + 6*At23L*cdphi3*gtu32 - - 3*At13L*Gt123*gtu32 - At12L*Gt133*gtu32 - 3*At23L*Gt223*gtu32 - - At22L*Gt233*gtu32 - 3*At33L*Gt323*gtu32 - At23L*Gt333*gtu32 + + At13L*(6*cdphi1*gtu11 - Gt111*gtu11) + 6*At23L*cdphi1*gtu12 + + 6*At13L*cdphi2*gtu12 - 2*At13L*Gt112*gtu12 - At12L*Gt113*gtu12 - + At11L*Gt123*gtu12 - 2*At23L*Gt212*gtu12 - At22L*Gt213*gtu12 - + At12L*Gt223*gtu12 - 2*At33L*Gt312*gtu12 - At23L*Gt313*gtu12 - + At13L*Gt323*gtu12 + 6*At33L*cdphi1*gtu13 + 6*At13L*cdphi3*gtu13 - + 3*At13L*Gt113*gtu13 - At11L*Gt133*gtu13 - 3*At23L*Gt213*gtu13 - + At12L*Gt233*gtu13 - 3*At33L*Gt313*gtu13 - At13L*Gt333*gtu13 + + 6*At23L*cdphi2*gtu22 - At13L*Gt122*gtu22 - At12L*Gt123*gtu22 - + At23L*Gt222*gtu22 - At22L*Gt223*gtu22 - At33L*Gt322*gtu22 - + At23L*Gt323*gtu22 + 6*At33L*cdphi2*gtu23 + 6*At23L*cdphi3*gtu23 - + 3*At13L*Gt123*gtu23 - At12L*Gt133*gtu23 - 3*At23L*Gt223*gtu23 - + At22L*Gt233*gtu23 - 3*At33L*Gt323*gtu23 - At23L*Gt333*gtu23 + 6*At33L*cdphi3*gtu33 - 2*At13L*Gt133*gtu33 - 2*At23L*Gt233*gtu33 - - 2*At33L*Gt333*gtu33 + (gtu11*J11L + gtu21*J12L + - gtu31*J13L)*PDstandardNth1At13 + gtu21*J11L*PDstandardNth1At23 + - gtu22*J12L*PDstandardNth1At23 + gtu32*J13L*PDstandardNth1At23 + - gtu31*J11L*PDstandardNth1At33 + gtu32*J12L*PDstandardNth1At33 + + 2*At33L*Gt333*gtu33 + (gtu11*J11L + gtu12*J12L + + gtu13*J13L)*PDstandardNth1At13 + gtu12*J11L*PDstandardNth1At23 + + gtu22*J12L*PDstandardNth1At23 + gtu23*J13L*PDstandardNth1At23 + + gtu13*J11L*PDstandardNth1At33 + gtu23*J12L*PDstandardNth1At33 + gtu33*J13L*PDstandardNth1At33 - J13L*ktwothird*PDstandardNth1trK + - (gtu11*J21L + gtu21*J22L + gtu31*J23L)*PDstandardNth2At13 + - gtu21*J21L*PDstandardNth2At23 + gtu22*J22L*PDstandardNth2At23 + - gtu32*J23L*PDstandardNth2At23 + gtu31*J21L*PDstandardNth2At33 + - gtu32*J22L*PDstandardNth2At33 + gtu33*J23L*PDstandardNth2At33 - + (gtu11*J21L + gtu12*J22L + gtu13*J23L)*PDstandardNth2At13 + + gtu12*J21L*PDstandardNth2At23 + gtu22*J22L*PDstandardNth2At23 + + gtu23*J23L*PDstandardNth2At23 + gtu13*J21L*PDstandardNth2At33 + + gtu23*J22L*PDstandardNth2At33 + gtu33*J23L*PDstandardNth2At33 - J23L*ktwothird*PDstandardNth2trK + gtu11*J31L*PDstandardNth3At13 + - gtu21*J32L*PDstandardNth3At13 + gtu31*J33L*PDstandardNth3At13 + - gtu21*J31L*PDstandardNth3At23 + gtu22*J32L*PDstandardNth3At23 + - gtu32*J33L*PDstandardNth3At23 + gtu31*J31L*PDstandardNth3At33 + - gtu32*J32L*PDstandardNth3At33 + gtu33*J33L*PDstandardNth3At33 - + gtu12*J32L*PDstandardNth3At13 + gtu13*J33L*PDstandardNth3At13 + + gtu12*J31L*PDstandardNth3At23 + gtu22*J32L*PDstandardNth3At23 + + gtu23*J33L*PDstandardNth3At23 + gtu13*J31L*PDstandardNth3At33 + + gtu23*J32L*PDstandardNth3At33 + gtu33*J33L*PDstandardNth3At33 - J33L*ktwothird*PDstandardNth3trK - 25.13274122871834590770114706623602307358*S3; CCTK_REAL cSL = Log(detgt); - CCTK_REAL cXt1L = Gt111*gtu11 + Gt122*gtu22 + 2*(Gt112*gtu21 + - Gt113*gtu31 + Gt123*gtu32) + Gt133*gtu33 - Xt1L; + 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*gtu21 + - Gt213*gtu31 + Gt223*gtu32) + Gt233*gtu33 - Xt2L; + 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*gtu21 + - Gt313*gtu31 + Gt323*gtu32) + Gt333*gtu33 - Xt3L; + 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*gtu21 + - At13L*gtu31 + At23L*gtu32) + At33L*gtu33; + CCTK_REAL cAL = At11L*gtu11 + At22L*gtu22 + 2*(At12L*gtu12 + + At13L*gtu13 + At23L*gtu23) + At33L*gtu33; /* Copy local copies back to grid functions */ diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_constraints_boundary.c b/ML_BSSN_MP/src/ML_BSSN_MP_constraints_boundary.c index 8fdd948..2019be4 100644 --- a/ML_BSSN_MP/src/ML_BSSN_MP_constraints_boundary.c +++ b/ML_BSSN_MP/src/ML_BSSN_MP_constraints_boundary.c @@ -20,6 +20,30 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((x) * (x) * (x) * (x)) +void ML_BSSN_MP_constraints_boundary_SelectBCs(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT ierr = 0; + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_cons_detg","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_cons_detg."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_cons_Gamma","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_cons_Gamma."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_cons_traceA","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_cons_traceA."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_Ham","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_Ham."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_mom","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_mom."); + return; +} + void ML_BSSN_MP_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[]) { DECLARE_CCTK_ARGUMENTS; diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_convertFromADMBase.c b/ML_BSSN_MP/src/ML_BSSN_MP_convertFromADMBase.c index c968fd2..40f2691 100644 --- a/ML_BSSN_MP/src/ML_BSSN_MP_convertFromADMBase.c +++ b/ML_BSSN_MP/src/ML_BSSN_MP_convertFromADMBase.c @@ -131,13 +131,13 @@ void ML_BSSN_MP_convertFromADMBase_Body(cGH const * restrict const cctkGH, int c CCTK_REAL gu11 = INV(detg)*(g22*g33 - SQR(g23)); - CCTK_REAL gu21 = (g13*g23 - g12*g33)*INV(detg); + CCTK_REAL gu12 = (g13*g23 - g12*g33)*INV(detg); - CCTK_REAL gu31 = (-(g13*g22) + g12*g23)*INV(detg); + CCTK_REAL gu13 = (-(g13*g22) + g12*g23)*INV(detg); CCTK_REAL gu22 = INV(detg)*(g11*g33 - SQR(g13)); - CCTK_REAL gu32 = (g12*g13 - g11*g23)*INV(detg); + CCTK_REAL gu23 = (g12*g13 - g11*g23)*INV(detg); CCTK_REAL gu33 = INV(detg)*(g11*g22 - SQR(g12)); @@ -158,7 +158,7 @@ void ML_BSSN_MP_convertFromADMBase_Body(cGH const * restrict const cctkGH, int c CCTK_REAL gt33L = em4phi*g33; - trKL = gu11*kxxL + gu22*kyyL + 2*(gu21*kxyL + gu31*kxzL + gu32*kyzL) + + trKL = gu11*kxxL + gu22*kyyL + 2*(gu12*kxyL + gu13*kxzL + gu23*kyzL) + gu33*kzzL; CCTK_REAL At11L = em4phi*(kxxL - g11*kthird*trKL); diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_convertFromADMBaseGamma.c b/ML_BSSN_MP/src/ML_BSSN_MP_convertFromADMBaseGamma.c index e49a100..b4afaba 100644 --- a/ML_BSSN_MP/src/ML_BSSN_MP_convertFromADMBaseGamma.c +++ b/ML_BSSN_MP/src/ML_BSSN_MP_convertFromADMBaseGamma.c @@ -20,6 +20,24 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((x) * (x) * (x) * (x)) +void ML_BSSN_MP_convertFromADMBaseGamma_SelectBCs(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT ierr = 0; + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_dtlapse","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_dtlapse."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_dtshift","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_dtshift."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_MP::ML_Gamma","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_MP::ML_Gamma."); + return; +} + 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[]) { DECLARE_CCTK_ARGUMENTS; @@ -214,61 +232,61 @@ void ML_BSSN_MP_convertFromADMBaseGamma_Body(cGH const * restrict const cctkGH, CCTK_REAL gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L)); - CCTK_REAL gtu21 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt); + CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt); - CCTK_REAL gtu31 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt); + CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt); CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L)); - CCTK_REAL gtu32 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt); + CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt); CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L)); - CCTK_REAL Gt111 = khalf*((gtu11*J11L - gtu21*J12L - - gtu31*J13L)*PDstandardNth1gt11 + (gtu11*J21L - gtu21*J22L - - gtu31*J23L)*PDstandardNth2gt11 + (gtu11*J31L - gtu21*J32L - - gtu31*J33L)*PDstandardNth3gt11 + 2*(J11L*(gtu21*PDstandardNth1gt12 + - gtu31*PDstandardNth1gt13) + J21L*(gtu21*PDstandardNth2gt12 + - gtu31*PDstandardNth2gt13) + J31L*(gtu21*PDstandardNth3gt12 + - gtu31*PDstandardNth3gt13))); - - CCTK_REAL Gt211 = khalf*((gtu21*J11L - gtu22*J12L - - gtu32*J13L)*PDstandardNth1gt11 + (gtu21*J21L - gtu22*J22L - - gtu32*J23L)*PDstandardNth2gt11 + (gtu21*J31L - gtu22*J32L - - gtu32*J33L)*PDstandardNth3gt11 + 2*(J11L*(gtu22*PDstandardNth1gt12 + - gtu32*PDstandardNth1gt13) + J21L*(gtu22*PDstandardNth2gt12 + - gtu32*PDstandardNth2gt13) + J31L*(gtu22*PDstandardNth3gt12 + - gtu32*PDstandardNth3gt13))); - - CCTK_REAL Gt311 = khalf*((gtu31*J11L - gtu32*J12L - - gtu33*J13L)*PDstandardNth1gt11 + (gtu31*J21L - gtu32*J22L - - gtu33*J23L)*PDstandardNth2gt11 + (gtu31*J31L - gtu32*J32L - - gtu33*J33L)*PDstandardNth3gt11 + 2*(J11L*(gtu32*PDstandardNth1gt12 + - gtu33*PDstandardNth1gt13) + J21L*(gtu32*PDstandardNth2gt12 + - gtu33*PDstandardNth2gt13) + J31L*(gtu32*PDstandardNth3gt12 + + CCTK_REAL Gt111 = khalf*((gtu11*J11L - gtu12*J12L - + gtu13*J13L)*PDstandardNth1gt11 + (gtu11*J21L - gtu12*J22L - + gtu13*J23L)*PDstandardNth2gt11 + (gtu11*J31L - gtu12*J32L - + gtu13*J33L)*PDstandardNth3gt11 + 2*(J11L*(gtu12*PDstandardNth1gt12 + + gtu13*PDstandardNth1gt13) + J21L*(gtu12*PDstandardNth2gt12 + + gtu13*PDstandardNth2gt13) + J31L*(gtu12*PDstandardNth3gt12 + + gtu13*PDstandardNth3gt13))); + + CCTK_REAL Gt211 = khalf*((gtu12*J11L - gtu22*J12L - + gtu23*J13L)*PDstandardNth1gt11 + (gtu12*J21L - gtu22*J22L - + gtu23*J23L)*PDstandardNth2gt11 + (gtu12*J31L - gtu22*J32L - + gtu23*J33L)*PDstandardNth3gt11 + 2*(J11L*(gtu22*PDstandardNth1gt12 + + gtu23*PDstandardNth1gt13) + J21L*(gtu22*PDstandardNth2gt12 + + gtu23*PDstandardNth2gt13) + J31L*(gtu22*PDstandardNth3gt12 + + gtu23*PDstandardNth3gt13))); + + CCTK_REAL Gt311 = khalf*((gtu13*J11L - gtu23*J12L - + gtu33*J13L)*PDstandardNth1gt11 + (gtu13*J21L - gtu23*J22L - + gtu33*J23L)*PDstandardNth2gt11 + (gtu13*J31L - gtu23*J32L - + gtu33*J33L)*PDstandardNth3gt11 + 2*(J11L*(gtu23*PDstandardNth1gt12 + + gtu33*PDstandardNth1gt13) + J21L*(gtu23*PDstandardNth2gt12 + + gtu33*PDstandardNth2gt13) + J31L*(gtu23*PDstandardNth3gt12 + gtu33*PDstandardNth3gt13))); CCTK_REAL Gt112 = khalf*(gtu11*(J12L*PDstandardNth1gt11 + J22L*PDstandardNth2gt11 + J32L*PDstandardNth3gt11) + - gtu21*(J11L*PDstandardNth1gt22 + J21L*PDstandardNth2gt22 + - J31L*PDstandardNth3gt22) + gtu31*(-(J13L*PDstandardNth1gt12) + + gtu12*(J11L*PDstandardNth1gt22 + J21L*PDstandardNth2gt22 + + J31L*PDstandardNth3gt22) + gtu13*(-(J13L*PDstandardNth1gt12) + J12L*PDstandardNth1gt13 + J11L*PDstandardNth1gt23 - J23L*PDstandardNth2gt12 + J22L*PDstandardNth2gt13 + J21L*PDstandardNth2gt23 - J33L*PDstandardNth3gt12 + J32L*PDstandardNth3gt13 + J31L*PDstandardNth3gt23)); - CCTK_REAL Gt212 = khalf*(gtu21*(J12L*PDstandardNth1gt11 + + CCTK_REAL Gt212 = khalf*(gtu12*(J12L*PDstandardNth1gt11 + J22L*PDstandardNth2gt11 + J32L*PDstandardNth3gt11) + gtu22*(J11L*PDstandardNth1gt22 + J21L*PDstandardNth2gt22 + - J31L*PDstandardNth3gt22) + gtu32*(-(J13L*PDstandardNth1gt12) + + J31L*PDstandardNth3gt22) + gtu23*(-(J13L*PDstandardNth1gt12) + J12L*PDstandardNth1gt13 + J11L*PDstandardNth1gt23 - J23L*PDstandardNth2gt12 + J22L*PDstandardNth2gt13 + J21L*PDstandardNth2gt23 - J33L*PDstandardNth3gt12 + J32L*PDstandardNth3gt13 + J31L*PDstandardNth3gt23)); - CCTK_REAL Gt312 = khalf*(gtu31*(J12L*PDstandardNth1gt11 + + CCTK_REAL Gt312 = khalf*(gtu13*(J12L*PDstandardNth1gt11 + J22L*PDstandardNth2gt11 + J32L*PDstandardNth3gt11) + - gtu32*(J11L*PDstandardNth1gt22 + J21L*PDstandardNth2gt22 + + gtu23*(J11L*PDstandardNth1gt22 + J21L*PDstandardNth2gt22 + J31L*PDstandardNth3gt22) + gtu33*(-(J13L*PDstandardNth1gt12) + J12L*PDstandardNth1gt13 + J11L*PDstandardNth1gt23 - J23L*PDstandardNth2gt12 + J22L*PDstandardNth2gt13 + @@ -277,25 +295,25 @@ void ML_BSSN_MP_convertFromADMBaseGamma_Body(cGH const * restrict const cctkGH, CCTK_REAL Gt113 = khalf*(gtu11*(J13L*PDstandardNth1gt11 + J23L*PDstandardNth2gt11 + J33L*PDstandardNth3gt11) + - gtu21*(J13L*PDstandardNth1gt12 - J12L*PDstandardNth1gt13 + + gtu12*(J13L*PDstandardNth1gt12 - J12L*PDstandardNth1gt13 + J11L*PDstandardNth1gt23 + J23L*PDstandardNth2gt12 - J22L*PDstandardNth2gt13 + J21L*PDstandardNth2gt23 + J33L*PDstandardNth3gt12 - J32L*PDstandardNth3gt13 + - J31L*PDstandardNth3gt23) + gtu31*(J11L*PDstandardNth1gt33 + + J31L*PDstandardNth3gt23) + gtu13*(J11L*PDstandardNth1gt33 + J21L*PDstandardNth2gt33 + J31L*PDstandardNth3gt33)); - CCTK_REAL Gt213 = khalf*(gtu21*(J13L*PDstandardNth1gt11 + + CCTK_REAL Gt213 = khalf*(gtu12*(J13L*PDstandardNth1gt11 + J23L*PDstandardNth2gt11 + J33L*PDstandardNth3gt11) + gtu22*(J13L*PDstandardNth1gt12 - J12L*PDstandardNth1gt13 + J11L*PDstandardNth1gt23 + J23L*PDstandardNth2gt12 - J22L*PDstandardNth2gt13 + J21L*PDstandardNth2gt23 + J33L*PDstandardNth3gt12 - J32L*PDstandardNth3gt13 + - J31L*PDstandardNth3gt23) + gtu32*(J11L*PDstandardNth1gt33 + + J31L*PDstandardNth3gt23) + gtu23*(J11L*PDstandardNth1gt33 + J21L*PDstandardNth2gt33 + J31L*PDstandardNth3gt33)); - CCTK_REAL Gt313 = khalf*(gtu31*(J13L*PDstandardNth1gt11 + + CCTK_REAL Gt313 = khalf*(gtu13*(J13L*PDstandardNth1gt11 + J23L*PDstandardNth2gt11 + J33L*PDstandardNth3gt11) + - gtu32*(J13L*PDstandardNth1gt12 - J12L*PDstandardNth1gt13 + + gtu23*(J13L*PDstandardNth1gt12 - J12L*PDstandardNth1gt13 + J11L*PDstandardNth1gt23 + J23L*PDstandardNth2gt12 - J22L*PDstandardNth2gt13 + J21L*PDstandardNth2gt23 + J33L*PDstandardNth3gt12 - J32L*PDstandardNth3gt13 + @@ -305,51 +323,51 @@ void ML_BSSN_MP_convertFromADMBaseGamma_Body(cGH const * restrict const cctkGH, CCTK_REAL Gt122 = khalf*(gtu11*(-(J11L*PDstandardNth1gt22) + 2*(J12L*PDstandardNth1gt12 + J22L*PDstandardNth2gt12) - J21L*PDstandardNth2gt22 + 2*J32L*PDstandardNth3gt12 - - J31L*PDstandardNth3gt22) + gtu21*(J12L*PDstandardNth1gt22 + + J31L*PDstandardNth3gt22) + gtu12*(J12L*PDstandardNth1gt22 + J22L*PDstandardNth2gt22 + J32L*PDstandardNth3gt22) - - gtu31*(J13L*PDstandardNth1gt22 + J23L*PDstandardNth2gt22 + + gtu13*(J13L*PDstandardNth1gt22 + J23L*PDstandardNth2gt22 + J33L*PDstandardNth3gt22 - 2*(J12L*PDstandardNth1gt23 + J22L*PDstandardNth2gt23 + J32L*PDstandardNth3gt23))); - CCTK_REAL Gt222 = khalf*(gtu21*(-(J11L*PDstandardNth1gt22) + + CCTK_REAL Gt222 = khalf*(gtu12*(-(J11L*PDstandardNth1gt22) + 2*(J12L*PDstandardNth1gt12 + J22L*PDstandardNth2gt12) - J21L*PDstandardNth2gt22 + 2*J32L*PDstandardNth3gt12 - J31L*PDstandardNth3gt22) + gtu22*(J12L*PDstandardNth1gt22 + J22L*PDstandardNth2gt22 + J32L*PDstandardNth3gt22) - - gtu32*(J13L*PDstandardNth1gt22 + J23L*PDstandardNth2gt22 + + gtu23*(J13L*PDstandardNth1gt22 + J23L*PDstandardNth2gt22 + J33L*PDstandardNth3gt22 - 2*(J12L*PDstandardNth1gt23 + J22L*PDstandardNth2gt23 + J32L*PDstandardNth3gt23))); - CCTK_REAL Gt322 = khalf*(gtu31*(-(J11L*PDstandardNth1gt22) + + CCTK_REAL Gt322 = khalf*(gtu13*(-(J11L*PDstandardNth1gt22) + 2*(J12L*PDstandardNth1gt12 + J22L*PDstandardNth2gt12) - J21L*PDstandardNth2gt22 + 2*J32L*PDstandardNth3gt12 - - J31L*PDstandardNth3gt22) + gtu32*(J12L*PDstandardNth1gt22 + + J31L*PDstandardNth3gt22) + gtu23*(J12L*PDstandardNth1gt22 + J22L*PDstandardNth2gt22 + J32L*PDstandardNth3gt22) - gtu33*(J13L*PDstandardNth1gt22 + J23L*PDstandardNth2gt22 + J33L*PDstandardNth3gt22 - 2*(J12L*PDstandardNth1gt23 + J22L*PDstandardNth2gt23 + J32L*PDstandardNth3gt23))); - CCTK_REAL Gt123 = khalf*(gtu21*(J13L*PDstandardNth1gt22 + + CCTK_REAL Gt123 = khalf*(gtu12*(J13L*PDstandardNth1gt22 + J23L*PDstandardNth2gt22 + J33L*PDstandardNth3gt22) + gtu11*(J13L*PDstandardNth1gt12 + J12L*PDstandardNth1gt13 - J11L*PDstandardNth1gt23 + J23L*PDstandardNth2gt12 + J22L*PDstandardNth2gt13 - J21L*PDstandardNth2gt23 + J33L*PDstandardNth3gt12 + J32L*PDstandardNth3gt13 - - J31L*PDstandardNth3gt23) + gtu31*(J12L*PDstandardNth1gt33 + + J31L*PDstandardNth3gt23) + gtu13*(J12L*PDstandardNth1gt33 + J22L*PDstandardNth2gt33 + J32L*PDstandardNth3gt33)); CCTK_REAL Gt223 = khalf*(gtu22*(J13L*PDstandardNth1gt22 + J23L*PDstandardNth2gt22 + J33L*PDstandardNth3gt22) + - gtu21*(J13L*PDstandardNth1gt12 + J12L*PDstandardNth1gt13 - + gtu12*(J13L*PDstandardNth1gt12 + J12L*PDstandardNth1gt13 - J11L*PDstandardNth1gt23 + J23L*PDstandardNth2gt12 + J22L*PDstandardNth2gt13 - J21L*PDstandardNth2gt23 + J33L*PDstandardNth3gt12 + J32L*PDstandardNth3gt13 - - J31L*PDstandardNth3gt23) + gtu32*(J12L*PDstandardNth1gt33 + + J31L*PDstandardNth3gt23) + gtu23*(J12L*PDstandardNth1gt33 + J22L*PDstandardNth2gt33 + J32L*PDstandardNth3gt33)); - CCTK_REAL Gt323 = khalf*(gtu32*(J13L*PDstandardNth1gt22 + + CCTK_REAL Gt323 = khalf*(gtu23*(J13L*PDstandardNth1gt22 + J23L*PDstandardNth2gt22 + J33L*PDstandardNth3gt22) + - gtu31*(J13L*PDstandardNth1gt12 + J12L*PDstandardNth1gt13 - + gtu13*(J13L*PDstandardNth1gt12 + J12L*PDstandardNth1gt13 - J11L*PDstandardNth1gt23 + J23L*PDstandardNth2gt12 + J22L*PDstandardNth2gt13 - J21L*PDstandardNth2gt23 + J33L*PDstandardNth3gt12 + J32L*PDstandardNth3gt13 - @@ -359,38 +377,38 @@ void ML_BSSN_MP_convertFromADMBaseGamma_Body(cGH const * restrict const cctkGH, CCTK_REAL Gt133 = khalf*(gtu11*(-(J11L*PDstandardNth1gt33) + 2*(J13L*PDstandardNth1gt13 + J23L*PDstandardNth2gt13) - J21L*PDstandardNth2gt33 + 2*J33L*PDstandardNth3gt13 - - J31L*PDstandardNth3gt33) + gtu21*(-(J12L*PDstandardNth1gt33) + + J31L*PDstandardNth3gt33) + gtu12*(-(J12L*PDstandardNth1gt33) + 2*(J13L*PDstandardNth1gt23 + J23L*PDstandardNth2gt23) - J22L*PDstandardNth2gt33 + 2*J33L*PDstandardNth3gt23 - - J32L*PDstandardNth3gt33) + gtu31*(J13L*PDstandardNth1gt33 + + J32L*PDstandardNth3gt33) + gtu13*(J13L*PDstandardNth1gt33 + J23L*PDstandardNth2gt33 + J33L*PDstandardNth3gt33)); - CCTK_REAL Gt233 = khalf*(gtu21*(-(J11L*PDstandardNth1gt33) + + CCTK_REAL Gt233 = khalf*(gtu12*(-(J11L*PDstandardNth1gt33) + 2*(J13L*PDstandardNth1gt13 + J23L*PDstandardNth2gt13) - J21L*PDstandardNth2gt33 + 2*J33L*PDstandardNth3gt13 - J31L*PDstandardNth3gt33) + gtu22*(-(J12L*PDstandardNth1gt33) + 2*(J13L*PDstandardNth1gt23 + J23L*PDstandardNth2gt23) - J22L*PDstandardNth2gt33 + 2*J33L*PDstandardNth3gt23 - - J32L*PDstandardNth3gt33) + gtu32*(J13L*PDstandardNth1gt33 + + J32L*PDstandardNth3gt33) + gtu23*(J13L*PDstandardNth1gt33 + J23L*PDstandardNth2gt33 + J33L*PDstandardNth3gt33)); - CCTK_REAL Gt333 = khalf*(gtu31*(-(J11L*PDstandardNth1gt33) + + CCTK_REAL Gt333 = khalf*(gtu13*(-(J11L*PDstandardNth1gt33) + 2*(J13L*PDstandardNth1gt13 + J23L*PDstandardNth2gt13) - J21L*PDstandardNth2gt33 + 2*J33L*PDstandardNth3gt13 - - J31L*PDstandardNth3gt33) + gtu32*(-(J12L*PDstandardNth1gt33) + + J31L*PDstandardNth3gt33) + gtu23*(-(J12L*PDstandardNth1gt33) + 2*(J13L*PDstandardNth1gt23 + J23L*PDstandardNth2gt23) - J22L*PDstandardNth2gt33 + 2*J33L*PDstandardNth3gt23 - J32L*PDstandardNth3gt33) + gtu33*(J13L*PDstandardNth1gt33 + J23L*PDstandardNth2gt33 + J33L*PDstandardNth3gt33)); - CCTK_REAL Xt1L = Gt111*gtu11 + Gt122*gtu22 + 2*(Gt112*gtu21 + - Gt113*gtu31 + Gt123*gtu32) + Gt133*gtu33; + CCTK_REAL Xt1L = Gt111*gtu11 + Gt122*gtu22 + 2*(Gt112*gtu12 + + Gt113*gtu13 + Gt123*gtu23) + Gt133*gtu33; - CCTK_REAL Xt2L = Gt211*gtu11 + Gt222*gtu22 + 2*(Gt212*gtu21 + - Gt213*gtu31 + Gt223*gtu32) + Gt233*gtu33; + CCTK_REAL Xt2L = Gt211*gtu11 + Gt222*gtu22 + 2*(Gt212*gtu12 + + Gt213*gtu13 + Gt223*gtu23) + Gt233*gtu33; - CCTK_REAL Xt3L = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu21 + - Gt313*gtu31 + Gt323*gtu32) + Gt333*gtu33; + CCTK_REAL Xt3L = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu12 + + Gt313*gtu13 + Gt323*gtu23) + Gt333*gtu33; CCTK_REAL AL = IfThen(LapseACoeff != 0,(-dtalpL + J11L*LapseAdvectionCoeff*(beta1L*PDupwindNthAnti1alpha + diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBaseDtLapseShift.c b/ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBaseDtLapseShift.c index 55fac38..6798639 100644 --- a/ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBaseDtLapseShift.c +++ b/ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBaseDtLapseShift.c @@ -20,6 +20,21 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((x) * (x) * (x) * (x)) +void ML_BSSN_MP_convertToADMBaseDtLapseShift_SelectBCs(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT ierr = 0; + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ADMBase::dtlapse","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ADMBase::dtlapse."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ADMBase::dtshift","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ADMBase::dtshift."); + return; +} + 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[]) { DECLARE_CCTK_ARGUMENTS; diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBaseDtLapseShiftBoundary.c b/ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBaseDtLapseShiftBoundary.c index f5d40ce..44523f0 100644 --- a/ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBaseDtLapseShiftBoundary.c +++ b/ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBaseDtLapseShiftBoundary.c @@ -20,6 +20,21 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((x) * (x) * (x) * (x)) +void ML_BSSN_MP_convertToADMBaseDtLapseShiftBoundary_SelectBCs(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT ierr = 0; + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ADMBase::dtlapse","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ADMBase::dtlapse."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ADMBase::dtshift","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ADMBase::dtshift."); + return; +} + 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[]) { DECLARE_CCTK_ARGUMENTS; diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_enforce.c b/ML_BSSN_MP/src/ML_BSSN_MP_enforce.c index 5f3be5f..a79f095 100644 --- a/ML_BSSN_MP/src/ML_BSSN_MP_enforce.c +++ b/ML_BSSN_MP/src/ML_BSSN_MP_enforce.c @@ -113,18 +113,18 @@ void ML_BSSN_MP_enforce_Body(cGH const * restrict const cctkGH, int const dir, i CCTK_REAL gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L)); - CCTK_REAL gtu21 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt); + CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt); - CCTK_REAL gtu31 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt); + CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt); CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L)); - CCTK_REAL gtu32 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt); + CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt); CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L)); - CCTK_REAL trAt = At11L*gtu11 + At22L*gtu22 + 2*(At12L*gtu21 + - At13L*gtu31 + At23L*gtu32) + At33L*gtu33; + CCTK_REAL trAt = At11L*gtu11 + At22L*gtu22 + 2*(At12L*gtu12 + + At13L*gtu13 + At23L*gtu23) + At33L*gtu33; At11L = At11L - gt11L*kthird*trAt; diff --git a/ML_BSSN_MP_Helper/schedule.ccl b/ML_BSSN_MP_Helper/schedule.ccl index b302567..38dca48 100644 --- a/ML_BSSN_MP_Helper/schedule.ccl +++ b/ML_BSSN_MP_Helper/schedule.ccl @@ -132,7 +132,7 @@ if (CCTK_EQUALS (evolution_method, "ML_BSSN_MP")) { } else if (CCTK_EQUALS (calculate_ADMBase_variables_at, "CCTK_EVOL")) { - SCHEDULE GROUP ML_BSSN_MP_convertToADMBaseGroupWrapper AT evol AFTER MoL_Evolution BEFORE (ADMBase_SetADMVars Whisky_PostStep) + SCHEDULE GROUP ML_BSSN_MP_convertToADMBaseGroupWrapper IN MoL_PseudoEvolution BEFORE (ADMBase_SetADMVars Whisky_PostStep) { } "Calculate ADM variables" } @@ -143,7 +143,7 @@ if (CCTK_EQUALS (evolution_method, "ML_BSSN_MP")) { } "Calculate ADM variables" } - SCHEDULE GROUP ML_BSSN_MP_convertToADMBaseGroupWrapper AT CCTK_POST_RECOVER_VARIABLES + SCHEDULE GROUP ML_BSSN_MP_convertToADMBaseGroupWrapper AT post_recover_variables { } "Calculate ADM variables" diff --git a/ML_BSSN_O2/interface.ccl b/ML_BSSN_O2/interface.ccl index f074947..27cebe2 100644 --- a/ML_BSSN_O2/interface.ccl +++ b/ML_BSSN_O2/interface.ccl @@ -25,7 +25,7 @@ CCTK_INT FUNCTION Boundary_SelectVarForBC(CCTK_POINTER_TO_CONST IN GH, CCTK_INT USES FUNCTION Boundary_SelectVarForBC public: -CCTK_REAL ML_cons_detg type=GF timelevels=1 tags='tensortypealias="Scalar" tensorweight=2.0000000000000000000' +CCTK_REAL ML_cons_detg type=GF timelevels=1 tags='tensortypealias="Scalar" tensorweight=2' { cS } "ML_cons_detg" @@ -39,19 +39,19 @@ CCTK_REAL ML_cons_Gamma type=GF timelevels=1 tags='tensortypealias="U" tensorwei } "ML_cons_Gamma" public: -CCTK_REAL ML_cons_traceA type=GF timelevels=1 tags='tensortypealias="Scalar" tensorweight=1.0000000000000000000' +CCTK_REAL ML_cons_traceA type=GF timelevels=1 tags='tensortypealias="Scalar" tensorweight=1' { cA } "ML_cons_traceA" public: -CCTK_REAL ML_Ham type=GF timelevels=1 tags='tensortypealias="Scalar" tensorweight=1.0000000000000000000' +CCTK_REAL ML_Ham type=GF timelevels=1 tags='tensortypealias="Scalar" tensorweight=1' { H } "ML_Ham" public: -CCTK_REAL ML_mom type=GF timelevels=1 tags='tensortypealias="D" tensorweight=1.0000000000000000000' +CCTK_REAL ML_mom type=GF timelevels=1 tags='tensortypealias="D" tensorweight=1' { M1, M2, @@ -70,13 +70,13 @@ CCTK_REAL ML_curv type=GF timelevels=3 tags='tensortypealias="DD_sym" tensorweig } "ML_curv" public: -CCTK_REAL ML_dtlapse type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1.0000000000000000000' +CCTK_REAL ML_dtlapse type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1' { A } "ML_dtlapse" public: -CCTK_REAL ML_dtshift type=GF timelevels=3 tags='tensortypealias="U" tensorweight=1.0000000000000000000' +CCTK_REAL ML_dtshift type=GF timelevels=3 tags='tensortypealias="U" tensorweight=1' { B1, B2, @@ -92,7 +92,7 @@ CCTK_REAL ML_Gamma type=GF timelevels=3 tags='tensortypealias="U" tensorweight=0 } "ML_Gamma" public: -CCTK_REAL ML_lapse type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1.0000000000000000000' +CCTK_REAL ML_lapse type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1' { alpha } "ML_lapse" @@ -115,7 +115,7 @@ CCTK_REAL ML_metric type=GF timelevels=3 tags='tensortypealias="DD_sym" tensorwe } "ML_metric" public: -CCTK_REAL ML_shift type=GF timelevels=3 tags='tensortypealias="U" tensorweight=1.0000000000000000000' +CCTK_REAL ML_shift type=GF timelevels=3 tags='tensortypealias="U" tensorweight=1' { beta1, beta2, @@ -123,7 +123,7 @@ CCTK_REAL ML_shift type=GF timelevels=3 tags='tensortypealias="U" tensorweight=1 } "ML_shift" public: -CCTK_REAL ML_trace_curv type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1.0000000000000000000' +CCTK_REAL ML_trace_curv type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1' { trK } "ML_trace_curv" @@ -140,13 +140,13 @@ CCTK_REAL ML_curvrhs type=GF timelevels=3 tags='tensortypealias="DD_sym" tensorw } "ML_curvrhs" public: -CCTK_REAL ML_dtlapserhs type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1.0000000000000000000' +CCTK_REAL ML_dtlapserhs type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1' { Arhs } "ML_dtlapserhs" public: -CCTK_REAL ML_dtshiftrhs type=GF timelevels=3 tags='tensortypealias="U" tensorweight=1.0000000000000000000' +CCTK_REAL ML_dtshiftrhs type=GF timelevels=3 tags='tensortypealias="U" tensorweight=1' { B1rhs, B2rhs, @@ -162,7 +162,7 @@ CCTK_REAL ML_Gammarhs type=GF timelevels=3 tags='tensortypealias="U" tensorweigh } "ML_Gammarhs" public: -CCTK_REAL ML_lapserhs type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1.0000000000000000000' +CCTK_REAL ML_lapserhs type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1' { alpharhs } "ML_lapserhs" @@ -185,7 +185,7 @@ CCTK_REAL ML_metricrhs type=GF timelevels=3 tags='tensortypealias="DD_sym" tenso } "ML_metricrhs" public: -CCTK_REAL ML_shiftrhs type=GF timelevels=3 tags='tensortypealias="U" tensorweight=1.0000000000000000000' +CCTK_REAL ML_shiftrhs type=GF timelevels=3 tags='tensortypealias="U" tensorweight=1' { beta1rhs, beta2rhs, @@ -193,7 +193,7 @@ CCTK_REAL ML_shiftrhs type=GF timelevels=3 tags='tensortypealias="U" tensorweigh } "ML_shiftrhs" public: -CCTK_REAL ML_trace_curvrhs type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1.0000000000000000000' +CCTK_REAL ML_trace_curvrhs type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1' { trKrhs } "ML_trace_curvrhs" diff --git a/ML_BSSN_O2/schedule.ccl b/ML_BSSN_O2/schedule.ccl index 716f052..95f1699 100644 --- a/ML_BSSN_O2/schedule.ccl +++ b/ML_BSSN_O2/schedule.ccl @@ -405,7 +405,7 @@ schedule ML_BSSN_O2_CheckBoundaries at BASEGRID OPTIONS: meta } "check boundaries treatment" -schedule group ApplyBCs as ML_BSSN_O2_ApplyBCs in MoL_PostStep after ML_BSSN_O2_SelectBoundConds +schedule group ApplyBCs as ML_BSSN_O2_ApplyBCs in MoL_PostStep after ML_BSSN_O2_SelectBoundConds { # no language specified } "Apply boundary conditions controlled by thorn Boundary" diff --git a/ML_BSSN_O2/src/ML_BSSN_O2_RHS1.c b/ML_BSSN_O2/src/ML_BSSN_O2_RHS1.c index 5c2048c..f94e894 100644 --- a/ML_BSSN_O2/src/ML_BSSN_O2_RHS1.c +++ b/ML_BSSN_O2/src/ML_BSSN_O2_RHS1.c @@ -20,6 +20,39 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((x) * (x) * (x) * (x)) +void ML_BSSN_O2_RHS1_SelectBCs(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT ierr = 0; + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O2::ML_dtlapserhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O2::ML_dtlapserhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O2::ML_dtshiftrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O2::ML_dtshiftrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O2::ML_Gammarhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O2::ML_Gammarhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O2::ML_lapserhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O2::ML_lapserhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O2::ML_log_confacrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O2::ML_log_confacrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O2::ML_metricrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O2::ML_metricrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O2::ML_shiftrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O2::ML_shiftrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O2::ML_trace_curvrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O2::ML_trace_curvrhs."); + return; +} + 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[]) { DECLARE_CCTK_ARGUMENTS; @@ -616,13 +649,13 @@ void ML_BSSN_O2_RHS1_Body(cGH const * restrict const cctkGH, int const dir, int CCTK_REAL gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L)); - CCTK_REAL gtu21 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt); + CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt); - CCTK_REAL gtu31 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt); + CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt); CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L)); - CCTK_REAL gtu32 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt); + CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt); CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L)); @@ -665,50 +698,50 @@ void ML_BSSN_O2_RHS1_Body(cGH const * restrict const cctkGH, int const dir, int CCTK_REAL Gtl333 = khalf*PDstandardNth3gt33; - CCTK_REAL Gt111 = Gtl111*gtu11 + Gtl211*gtu21 + Gtl311*gtu31; + CCTK_REAL Gt111 = Gtl111*gtu11 + Gtl211*gtu12 + Gtl311*gtu13; - CCTK_REAL Gt211 = Gtl111*gtu21 + Gtl211*gtu22 + Gtl311*gtu32; + CCTK_REAL Gt211 = Gtl111*gtu12 + Gtl211*gtu22 + Gtl311*gtu23; - CCTK_REAL Gt311 = Gtl111*gtu31 + Gtl211*gtu32 + Gtl311*gtu33; + CCTK_REAL Gt311 = Gtl111*gtu13 + Gtl211*gtu23 + Gtl311*gtu33; - CCTK_REAL Gt112 = Gtl112*gtu11 + Gtl212*gtu21 + Gtl312*gtu31; + CCTK_REAL Gt112 = Gtl112*gtu11 + Gtl212*gtu12 + Gtl312*gtu13; - CCTK_REAL Gt212 = Gtl112*gtu21 + Gtl212*gtu22 + Gtl312*gtu32; + CCTK_REAL Gt212 = Gtl112*gtu12 + Gtl212*gtu22 + Gtl312*gtu23; - CCTK_REAL Gt312 = Gtl112*gtu31 + Gtl212*gtu32 + Gtl312*gtu33; + CCTK_REAL Gt312 = Gtl112*gtu13 + Gtl212*gtu23 + Gtl312*gtu33; - CCTK_REAL Gt113 = Gtl113*gtu11 + Gtl213*gtu21 + Gtl313*gtu31; + CCTK_REAL Gt113 = Gtl113*gtu11 + Gtl213*gtu12 + Gtl313*gtu13; - CCTK_REAL Gt213 = Gtl113*gtu21 + Gtl213*gtu22 + Gtl313*gtu32; + CCTK_REAL Gt213 = Gtl113*gtu12 + Gtl213*gtu22 + Gtl313*gtu23; - CCTK_REAL Gt313 = Gtl113*gtu31 + Gtl213*gtu32 + Gtl313*gtu33; + CCTK_REAL Gt313 = Gtl113*gtu13 + Gtl213*gtu23 + Gtl313*gtu33; - CCTK_REAL Gt122 = Gtl122*gtu11 + Gtl222*gtu21 + Gtl322*gtu31; + CCTK_REAL Gt122 = Gtl122*gtu11 + Gtl222*gtu12 + Gtl322*gtu13; - CCTK_REAL Gt222 = Gtl122*gtu21 + Gtl222*gtu22 + Gtl322*gtu32; + CCTK_REAL Gt222 = Gtl122*gtu12 + Gtl222*gtu22 + Gtl322*gtu23; - CCTK_REAL Gt322 = Gtl122*gtu31 + Gtl222*gtu32 + Gtl322*gtu33; + CCTK_REAL Gt322 = Gtl122*gtu13 + Gtl222*gtu23 + Gtl322*gtu33; - CCTK_REAL Gt123 = Gtl123*gtu11 + Gtl223*gtu21 + Gtl323*gtu31; + CCTK_REAL Gt123 = Gtl123*gtu11 + Gtl223*gtu12 + Gtl323*gtu13; - CCTK_REAL Gt223 = Gtl123*gtu21 + Gtl223*gtu22 + Gtl323*gtu32; + CCTK_REAL Gt223 = Gtl123*gtu12 + Gtl223*gtu22 + Gtl323*gtu23; - CCTK_REAL Gt323 = Gtl123*gtu31 + Gtl223*gtu32 + Gtl323*gtu33; + CCTK_REAL Gt323 = Gtl123*gtu13 + Gtl223*gtu23 + Gtl323*gtu33; - CCTK_REAL Gt133 = Gtl133*gtu11 + Gtl233*gtu21 + Gtl333*gtu31; + CCTK_REAL Gt133 = Gtl133*gtu11 + Gtl233*gtu12 + Gtl333*gtu13; - CCTK_REAL Gt233 = Gtl133*gtu21 + Gtl233*gtu22 + Gtl333*gtu32; + CCTK_REAL Gt233 = Gtl133*gtu12 + Gtl233*gtu22 + Gtl333*gtu23; - CCTK_REAL Gt333 = Gtl133*gtu31 + Gtl233*gtu32 + Gtl333*gtu33; + CCTK_REAL Gt333 = Gtl133*gtu13 + Gtl233*gtu23 + Gtl333*gtu33; - CCTK_REAL Xtn1 = Gt111*gtu11 + Gt122*gtu22 + 2*(Gt112*gtu21 + - Gt113*gtu31 + Gt123*gtu32) + Gt133*gtu33; + CCTK_REAL Xtn1 = Gt111*gtu11 + Gt122*gtu22 + 2*(Gt112*gtu12 + + Gt113*gtu13 + Gt123*gtu23) + Gt133*gtu33; - CCTK_REAL Xtn2 = Gt211*gtu11 + Gt222*gtu22 + 2*(Gt212*gtu21 + - Gt213*gtu31 + Gt223*gtu32) + Gt233*gtu33; + CCTK_REAL Xtn2 = Gt211*gtu11 + Gt222*gtu22 + 2*(Gt212*gtu12 + + Gt213*gtu13 + Gt223*gtu23) + Gt233*gtu33; - CCTK_REAL Xtn3 = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu21 + - Gt313*gtu31 + Gt323*gtu32) + Gt333*gtu33; + CCTK_REAL Xtn3 = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu12 + + Gt313*gtu13 + Gt323*gtu23) + Gt333*gtu33; CCTK_REAL fac1 = IfThen(conformalMethod,-(khalf*INV(phiL)),1); @@ -718,35 +751,35 @@ void ML_BSSN_O2_RHS1_Body(cGH const * restrict const cctkGH, int const dir, int CCTK_REAL cdphi3 = fac1*PDstandardNth3phi; - CCTK_REAL Atm11 = At11L*gtu11 + At12L*gtu21 + At13L*gtu31; + CCTK_REAL Atm11 = At11L*gtu11 + At12L*gtu12 + At13L*gtu13; - CCTK_REAL Atm21 = At11L*gtu21 + At12L*gtu22 + At13L*gtu32; + CCTK_REAL Atm21 = At11L*gtu12 + At12L*gtu22 + At13L*gtu23; - CCTK_REAL Atm31 = At11L*gtu31 + At12L*gtu32 + At13L*gtu33; + CCTK_REAL Atm31 = At11L*gtu13 + At12L*gtu23 + At13L*gtu33; - CCTK_REAL Atm12 = At12L*gtu11 + At22L*gtu21 + At23L*gtu31; + CCTK_REAL Atm12 = At12L*gtu11 + At22L*gtu12 + At23L*gtu13; - CCTK_REAL Atm22 = At12L*gtu21 + At22L*gtu22 + At23L*gtu32; + CCTK_REAL Atm22 = At12L*gtu12 + At22L*gtu22 + At23L*gtu23; - CCTK_REAL Atm32 = At12L*gtu31 + At22L*gtu32 + At23L*gtu33; + CCTK_REAL Atm32 = At12L*gtu13 + At22L*gtu23 + At23L*gtu33; - CCTK_REAL Atm13 = At13L*gtu11 + At23L*gtu21 + At33L*gtu31; + CCTK_REAL Atm13 = At13L*gtu11 + At23L*gtu12 + At33L*gtu13; - CCTK_REAL Atm23 = At13L*gtu21 + At23L*gtu22 + At33L*gtu32; + CCTK_REAL Atm23 = At13L*gtu12 + At23L*gtu22 + At33L*gtu23; - CCTK_REAL Atm33 = At13L*gtu31 + At23L*gtu32 + At33L*gtu33; + CCTK_REAL Atm33 = At13L*gtu13 + At23L*gtu23 + At33L*gtu33; - CCTK_REAL Atu11 = Atm11*gtu11 + Atm12*gtu21 + Atm13*gtu31; + CCTK_REAL Atu11 = Atm11*gtu11 + Atm12*gtu12 + Atm13*gtu13; - CCTK_REAL Atu21 = Atm11*gtu21 + Atm12*gtu22 + Atm13*gtu32; + CCTK_REAL Atu12 = Atm11*gtu12 + Atm12*gtu22 + Atm13*gtu23; - CCTK_REAL Atu31 = Atm11*gtu31 + Atm12*gtu32 + Atm13*gtu33; + CCTK_REAL Atu13 = Atm11*gtu13 + Atm12*gtu23 + Atm13*gtu33; - CCTK_REAL Atu22 = Atm21*gtu21 + Atm22*gtu22 + Atm23*gtu32; + CCTK_REAL Atu22 = Atm21*gtu12 + Atm22*gtu22 + Atm23*gtu23; - CCTK_REAL Atu32 = Atm21*gtu31 + Atm22*gtu32 + Atm23*gtu33; + CCTK_REAL Atu23 = Atm21*gtu13 + Atm22*gtu23 + Atm23*gtu33; - CCTK_REAL Atu33 = Atm31*gtu31 + Atm32*gtu32 + Atm33*gtu33; + CCTK_REAL Atu33 = Atm31*gtu13 + Atm32*gtu23 + Atm33*gtu33; CCTK_REAL e4phi = IfThen(conformalMethod,pow(phiL,-2),exp(4*phiL)); @@ -766,8 +799,8 @@ void ML_BSSN_O2_RHS1_Body(cGH const * restrict const cctkGH, int const dir, int CCTK_REAL S3 = (-eTtzL + beta1L*eTxzL + beta2L*eTyzL + beta3L*eTzzL)*INV(alphaL); - CCTK_REAL trS = em4phi*(eTxxL*gtu11 + eTyyL*gtu22 + 2*(eTxyL*gtu21 + - eTxzL*gtu31 + eTyzL*gtu32) + eTzzL*gtu33); + CCTK_REAL trS = em4phi*(eTxxL*gtu11 + eTyyL*gtu22 + 2*(eTxyL*gtu12 + + eTxzL*gtu13 + eTyzL*gtu23) + eTzzL*gtu33); CCTK_REAL phirhsL = epsdiss1*PDdissipationNth1phi + epsdiss2*PDdissipationNth2phi + epsdiss3*PDdissipationNth3phi + @@ -835,19 +868,19 @@ void ML_BSSN_O2_RHS1_Body(cGH const * restrict const cctkGH, int const dir, int beta3L*PDupwindNthAnti3gt33 + PDupwindNthSymm1gt33*Abs(beta1L) + PDupwindNthSymm2gt33*Abs(beta2L) + PDupwindNthSymm3gt33*Abs(beta3L); - CCTK_REAL dotXt1 = kthird*(7*(gtu21*PDstandardNth12beta1 + - gtu31*PDstandardNth13beta1) + gtu11*(4*PDstandardNth11beta1 + + CCTK_REAL dotXt1 = kthird*(7*(gtu12*PDstandardNth12beta1 + + gtu13*PDstandardNth13beta1) + gtu11*(4*PDstandardNth11beta1 + PDstandardNth12beta2 + PDstandardNth13beta3) + - gtu21*(PDstandardNth22beta2 + PDstandardNth23beta3) + - gtu31*(PDstandardNth23beta2 + PDstandardNth33beta3) - - 6*(Atu11*PDstandardNth1alpha + Atu21*PDstandardNth2alpha + - Atu31*PDstandardNth3alpha) + 6*(gtu32*PDstandardNth23beta1 + - alphaL*(6*(Atu11*cdphi1 + Atu21*cdphi2 + Atu31*cdphi3) + Atu11*Gt111 + - Atu22*Gt122 + 2*(Atu21*Gt112 + Atu31*Gt113 + Atu32*Gt123) + Atu33*Gt133 - - ktwothird*(gtu11*PDstandardNth1trK + gtu21*PDstandardNth2trK + - gtu31*PDstandardNth3trK))) - - 150.7964473723100754462068823974161384415*alphaL*(gtu11*S1 + gtu21*S2 + - gtu31*S3) + (-3*PDstandardNth1beta1 + 2*(PDstandardNth1beta1 + + gtu12*(PDstandardNth22beta2 + PDstandardNth23beta3) + + gtu13*(PDstandardNth23beta2 + PDstandardNth33beta3) - + 6*(Atu11*PDstandardNth1alpha + Atu12*PDstandardNth2alpha + + Atu13*PDstandardNth3alpha) + 6*(gtu23*PDstandardNth23beta1 + + alphaL*(6*(Atu11*cdphi1 + Atu12*cdphi2 + Atu13*cdphi3) + Atu11*Gt111 + + Atu22*Gt122 + 2*(Atu12*Gt112 + Atu13*Gt113 + Atu23*Gt123) + Atu33*Gt133 + - ktwothird*(gtu11*PDstandardNth1trK + gtu12*PDstandardNth2trK + + gtu13*PDstandardNth3trK))) - + 150.7964473723100754462068823974161384415*alphaL*(gtu11*S1 + gtu12*S2 + + gtu13*S3) + (-3*PDstandardNth1beta1 + 2*(PDstandardNth1beta1 + PDstandardNth2beta2 + PDstandardNth3beta3))*Xtn1 - 3*(PDstandardNth2beta1*Xtn2 + PDstandardNth3beta1*Xtn3) + 3*(epsdiss1*PDdissipationNth1Xt1 + epsdiss2*PDdissipationNth2Xt1 + @@ -857,19 +890,19 @@ void ML_BSSN_O2_RHS1_Body(cGH const * restrict const cctkGH, int const dir, int PDupwindNthSymm1Xt1*Abs(beta1L) + PDupwindNthSymm2Xt1*Abs(beta2L) + PDupwindNthSymm3Xt1*Abs(beta3L))); - CCTK_REAL dotXt2 = kthird*(gtu21*(PDstandardNth11beta1 + + CCTK_REAL dotXt2 = kthird*(gtu12*(PDstandardNth11beta1 + 7*PDstandardNth12beta2 + PDstandardNth13beta3) + gtu22*(PDstandardNth12beta1 + 4*PDstandardNth22beta2 + - PDstandardNth23beta3) + gtu32*(PDstandardNth13beta1 + + PDstandardNth23beta3) + gtu23*(PDstandardNth13beta1 + 7*PDstandardNth23beta2 + PDstandardNth33beta3) - - 6*(Atu21*PDstandardNth1alpha + Atu22*PDstandardNth2alpha + - Atu32*PDstandardNth3alpha) + 6*(gtu31*PDstandardNth13beta2 + - alphaL*(6*(Atu21*cdphi1 + Atu22*cdphi2 + Atu32*cdphi3) + Atu11*Gt211 + - Atu22*Gt222 + 2*(Atu21*Gt212 + Atu31*Gt213 + Atu32*Gt223) + Atu33*Gt233 - - ktwothird*(gtu21*PDstandardNth1trK + gtu22*PDstandardNth2trK + - gtu32*PDstandardNth3trK))) - - 150.7964473723100754462068823974161384415*alphaL*(gtu21*S1 + gtu22*S2 + - gtu32*S3) + 2*(PDstandardNth1beta1 + PDstandardNth2beta2 + + 6*(Atu12*PDstandardNth1alpha + Atu22*PDstandardNth2alpha + + Atu23*PDstandardNth3alpha) + 6*(gtu13*PDstandardNth13beta2 + + alphaL*(6*(Atu12*cdphi1 + Atu22*cdphi2 + Atu23*cdphi3) + Atu11*Gt211 + + Atu22*Gt222 + 2*(Atu12*Gt212 + Atu13*Gt213 + Atu23*Gt223) + Atu33*Gt233 + - ktwothird*(gtu12*PDstandardNth1trK + gtu22*PDstandardNth2trK + + gtu23*PDstandardNth3trK))) - + 150.7964473723100754462068823974161384415*alphaL*(gtu12*S1 + gtu22*S2 + + gtu23*S3) + 2*(PDstandardNth1beta1 + PDstandardNth2beta2 + PDstandardNth3beta3)*Xtn2 - 3*(PDstandardNth1beta2*Xtn1 + PDstandardNth2beta2*Xtn2 + PDstandardNth3beta2*Xtn3) + 3*(epsdiss1*PDdissipationNth1Xt2 + epsdiss2*PDdissipationNth2Xt2 + @@ -879,18 +912,18 @@ void ML_BSSN_O2_RHS1_Body(cGH const * restrict const cctkGH, int const dir, int PDupwindNthSymm1Xt2*Abs(beta1L) + PDupwindNthSymm2Xt2*Abs(beta2L) + PDupwindNthSymm3Xt2*Abs(beta3L))); - CCTK_REAL dotXt3 = kthird*(gtu31*(PDstandardNth11beta1 + + CCTK_REAL dotXt3 = kthird*(gtu13*(PDstandardNth11beta1 + PDstandardNth12beta2 + 7*PDstandardNth13beta3) + - gtu32*(PDstandardNth12beta1 + PDstandardNth22beta2 + + gtu23*(PDstandardNth12beta1 + PDstandardNth22beta2 + 7*PDstandardNth23beta3) + gtu33*(PDstandardNth13beta1 + PDstandardNth23beta2 + 4*PDstandardNth33beta3) - - 6*(Atu31*PDstandardNth1alpha + Atu32*PDstandardNth2alpha + - Atu33*PDstandardNth3alpha) + 6*(gtu21*PDstandardNth12beta3 + - alphaL*(6*(Atu31*cdphi1 + Atu32*cdphi2 + Atu33*cdphi3) + Atu11*Gt311 + - Atu22*Gt322 + 2*(Atu21*Gt312 + Atu31*Gt313 + Atu32*Gt323) + Atu33*Gt333 - - ktwothird*(gtu31*PDstandardNth1trK + gtu32*PDstandardNth2trK + + 6*(Atu13*PDstandardNth1alpha + Atu23*PDstandardNth2alpha + + Atu33*PDstandardNth3alpha) + 6*(gtu12*PDstandardNth12beta3 + + alphaL*(6*(Atu13*cdphi1 + Atu23*cdphi2 + Atu33*cdphi3) + Atu11*Gt311 + + Atu22*Gt322 + 2*(Atu12*Gt312 + Atu13*Gt313 + Atu23*Gt323) + Atu33*Gt333 + - ktwothird*(gtu13*PDstandardNth1trK + gtu23*PDstandardNth2trK + gtu33*PDstandardNth3trK))) - - 150.7964473723100754462068823974161384415*alphaL*(gtu31*S1 + gtu32*S2 + + 150.7964473723100754462068823974161384415*alphaL*(gtu13*S1 + gtu23*S2 + gtu33*S3) + 2*(PDstandardNth1beta1 + PDstandardNth2beta2 + PDstandardNth3beta3)*Xtn3 - 3*(PDstandardNth1beta3*Xtn1 + PDstandardNth2beta3*Xtn2 + PDstandardNth3beta3*Xtn3) + @@ -912,12 +945,12 @@ void ML_BSSN_O2_RHS1_Body(cGH const * restrict const cctkGH, int const dir, int beta1L*PDupwindNthAnti1trK + beta2L*PDupwindNthAnti2trK + beta3L*PDupwindNthAnti3trK - em4phi*(gtu11*PDstandardNth11alpha + gtu22*PDstandardNth22alpha + gtu33*(PDstandardNth33alpha + - 2*cdphi3*PDstandardNth3alpha) + 2*(gtu21*PDstandardNth12alpha + - gtu31*(PDstandardNth13alpha + cdphi1*PDstandardNth3alpha) + - gtu32*(PDstandardNth23alpha + cdphi2*PDstandardNth3alpha)) + - PDstandardNth1alpha*(2*(cdphi1*gtu11 + cdphi2*gtu21 + cdphi3*gtu31) - - Xtn1) + PDstandardNth2alpha*(2*(cdphi1*gtu21 + cdphi2*gtu22 + - cdphi3*gtu32) - Xtn2) - PDstandardNth3alpha*Xtn3) + + 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) + PDupwindNthSymm1trK*Abs(beta1L) + PDupwindNthSymm2trK*Abs(beta2L) + PDupwindNthSymm3trK*Abs(beta3L) + alphaL*(2*(Atm12*Atm21 + Atm13*Atm31 + Atm23*Atm32) + 12.56637061435917295385057353311801153679*(rho + trS) diff --git a/ML_BSSN_O2/src/ML_BSSN_O2_RHS2.c b/ML_BSSN_O2/src/ML_BSSN_O2_RHS2.c index 294e810..b55f768 100644 --- a/ML_BSSN_O2/src/ML_BSSN_O2_RHS2.c +++ b/ML_BSSN_O2/src/ML_BSSN_O2_RHS2.c @@ -20,6 +20,18 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((x) * (x) * (x) * (x)) +void ML_BSSN_O2_RHS2_SelectBCs(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT ierr = 0; + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O2::ML_curvrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O2::ML_curvrhs."); + return; +} + 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[]) { DECLARE_CCTK_ARGUMENTS; @@ -433,13 +445,13 @@ void ML_BSSN_O2_RHS2_Body(cGH const * restrict const cctkGH, int const dir, int CCTK_REAL gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L)); - CCTK_REAL gtu21 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt); + CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt); - CCTK_REAL gtu31 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt); + CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt); CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L)); - CCTK_REAL gtu32 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt); + CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt); CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L)); @@ -482,104 +494,104 @@ void ML_BSSN_O2_RHS2_Body(cGH const * restrict const cctkGH, int const dir, int CCTK_REAL Gtl333 = khalf*PDstandardNth3gt33; - CCTK_REAL Gtlu111 = Gtl111*gtu11 + Gtl112*gtu21 + Gtl113*gtu31; + CCTK_REAL Gtlu111 = Gtl111*gtu11 + Gtl112*gtu12 + Gtl113*gtu13; - CCTK_REAL Gtlu112 = Gtl111*gtu21 + Gtl112*gtu22 + Gtl113*gtu32; + CCTK_REAL Gtlu112 = Gtl111*gtu12 + Gtl112*gtu22 + Gtl113*gtu23; - CCTK_REAL Gtlu113 = Gtl111*gtu31 + Gtl112*gtu32 + Gtl113*gtu33; + CCTK_REAL Gtlu113 = Gtl111*gtu13 + Gtl112*gtu23 + Gtl113*gtu33; - CCTK_REAL Gtlu121 = Gtl112*gtu11 + Gtl122*gtu21 + Gtl123*gtu31; + CCTK_REAL Gtlu121 = Gtl112*gtu11 + Gtl122*gtu12 + Gtl123*gtu13; - CCTK_REAL Gtlu122 = Gtl112*gtu21 + Gtl122*gtu22 + Gtl123*gtu32; + CCTK_REAL Gtlu122 = Gtl112*gtu12 + Gtl122*gtu22 + Gtl123*gtu23; - CCTK_REAL Gtlu123 = Gtl112*gtu31 + Gtl122*gtu32 + Gtl123*gtu33; + CCTK_REAL Gtlu123 = Gtl112*gtu13 + Gtl122*gtu23 + Gtl123*gtu33; - CCTK_REAL Gtlu131 = Gtl113*gtu11 + Gtl123*gtu21 + Gtl133*gtu31; + CCTK_REAL Gtlu131 = Gtl113*gtu11 + Gtl123*gtu12 + Gtl133*gtu13; - CCTK_REAL Gtlu132 = Gtl113*gtu21 + Gtl123*gtu22 + Gtl133*gtu32; + CCTK_REAL Gtlu132 = Gtl113*gtu12 + Gtl123*gtu22 + Gtl133*gtu23; - CCTK_REAL Gtlu133 = Gtl113*gtu31 + Gtl123*gtu32 + Gtl133*gtu33; + CCTK_REAL Gtlu133 = Gtl113*gtu13 + Gtl123*gtu23 + Gtl133*gtu33; - CCTK_REAL Gtlu211 = Gtl211*gtu11 + Gtl212*gtu21 + Gtl213*gtu31; + CCTK_REAL Gtlu211 = Gtl211*gtu11 + Gtl212*gtu12 + Gtl213*gtu13; - CCTK_REAL Gtlu212 = Gtl211*gtu21 + Gtl212*gtu22 + Gtl213*gtu32; + CCTK_REAL Gtlu212 = Gtl211*gtu12 + Gtl212*gtu22 + Gtl213*gtu23; - CCTK_REAL Gtlu213 = Gtl211*gtu31 + Gtl212*gtu32 + Gtl213*gtu33; + CCTK_REAL Gtlu213 = Gtl211*gtu13 + Gtl212*gtu23 + Gtl213*gtu33; - CCTK_REAL Gtlu221 = Gtl212*gtu11 + Gtl222*gtu21 + Gtl223*gtu31; + CCTK_REAL Gtlu221 = Gtl212*gtu11 + Gtl222*gtu12 + Gtl223*gtu13; - CCTK_REAL Gtlu222 = Gtl212*gtu21 + Gtl222*gtu22 + Gtl223*gtu32; + CCTK_REAL Gtlu222 = Gtl212*gtu12 + Gtl222*gtu22 + Gtl223*gtu23; - CCTK_REAL Gtlu223 = Gtl212*gtu31 + Gtl222*gtu32 + Gtl223*gtu33; + CCTK_REAL Gtlu223 = Gtl212*gtu13 + Gtl222*gtu23 + Gtl223*gtu33; - CCTK_REAL Gtlu231 = Gtl213*gtu11 + Gtl223*gtu21 + Gtl233*gtu31; + CCTK_REAL Gtlu231 = Gtl213*gtu11 + Gtl223*gtu12 + Gtl233*gtu13; - CCTK_REAL Gtlu232 = Gtl213*gtu21 + Gtl223*gtu22 + Gtl233*gtu32; + CCTK_REAL Gtlu232 = Gtl213*gtu12 + Gtl223*gtu22 + Gtl233*gtu23; - CCTK_REAL Gtlu233 = Gtl213*gtu31 + Gtl223*gtu32 + Gtl233*gtu33; + CCTK_REAL Gtlu233 = Gtl213*gtu13 + Gtl223*gtu23 + Gtl233*gtu33; - CCTK_REAL Gtlu311 = Gtl311*gtu11 + Gtl312*gtu21 + Gtl313*gtu31; + CCTK_REAL Gtlu311 = Gtl311*gtu11 + Gtl312*gtu12 + Gtl313*gtu13; - CCTK_REAL Gtlu312 = Gtl311*gtu21 + Gtl312*gtu22 + Gtl313*gtu32; + CCTK_REAL Gtlu312 = Gtl311*gtu12 + Gtl312*gtu22 + Gtl313*gtu23; - CCTK_REAL Gtlu313 = Gtl311*gtu31 + Gtl312*gtu32 + Gtl313*gtu33; + CCTK_REAL Gtlu313 = Gtl311*gtu13 + Gtl312*gtu23 + Gtl313*gtu33; - CCTK_REAL Gtlu321 = Gtl312*gtu11 + Gtl322*gtu21 + Gtl323*gtu31; + CCTK_REAL Gtlu321 = Gtl312*gtu11 + Gtl322*gtu12 + Gtl323*gtu13; - CCTK_REAL Gtlu322 = Gtl312*gtu21 + Gtl322*gtu22 + Gtl323*gtu32; + CCTK_REAL Gtlu322 = Gtl312*gtu12 + Gtl322*gtu22 + Gtl323*gtu23; - CCTK_REAL Gtlu323 = Gtl312*gtu31 + Gtl322*gtu32 + Gtl323*gtu33; + CCTK_REAL Gtlu323 = Gtl312*gtu13 + Gtl322*gtu23 + Gtl323*gtu33; - CCTK_REAL Gtlu331 = Gtl313*gtu11 + Gtl323*gtu21 + Gtl333*gtu31; + CCTK_REAL Gtlu331 = Gtl313*gtu11 + Gtl323*gtu12 + Gtl333*gtu13; - CCTK_REAL Gtlu332 = Gtl313*gtu21 + Gtl323*gtu22 + Gtl333*gtu32; + CCTK_REAL Gtlu332 = Gtl313*gtu12 + Gtl323*gtu22 + Gtl333*gtu23; - CCTK_REAL Gtlu333 = Gtl313*gtu31 + Gtl323*gtu32 + Gtl333*gtu33; + CCTK_REAL Gtlu333 = Gtl313*gtu13 + Gtl323*gtu23 + Gtl333*gtu33; - CCTK_REAL Gt111 = Gtl111*gtu11 + Gtl211*gtu21 + Gtl311*gtu31; + CCTK_REAL Gt111 = Gtl111*gtu11 + Gtl211*gtu12 + Gtl311*gtu13; - CCTK_REAL Gt211 = Gtl111*gtu21 + Gtl211*gtu22 + Gtl311*gtu32; + CCTK_REAL Gt211 = Gtl111*gtu12 + Gtl211*gtu22 + Gtl311*gtu23; - CCTK_REAL Gt311 = Gtl111*gtu31 + Gtl211*gtu32 + Gtl311*gtu33; + CCTK_REAL Gt311 = Gtl111*gtu13 + Gtl211*gtu23 + Gtl311*gtu33; - CCTK_REAL Gt112 = Gtl112*gtu11 + Gtl212*gtu21 + Gtl312*gtu31; + CCTK_REAL Gt112 = Gtl112*gtu11 + Gtl212*gtu12 + Gtl312*gtu13; - CCTK_REAL Gt212 = Gtl112*gtu21 + Gtl212*gtu22 + Gtl312*gtu32; + CCTK_REAL Gt212 = Gtl112*gtu12 + Gtl212*gtu22 + Gtl312*gtu23; - CCTK_REAL Gt312 = Gtl112*gtu31 + Gtl212*gtu32 + Gtl312*gtu33; + CCTK_REAL Gt312 = Gtl112*gtu13 + Gtl212*gtu23 + Gtl312*gtu33; - CCTK_REAL Gt113 = Gtl113*gtu11 + Gtl213*gtu21 + Gtl313*gtu31; + CCTK_REAL Gt113 = Gtl113*gtu11 + Gtl213*gtu12 + Gtl313*gtu13; - CCTK_REAL Gt213 = Gtl113*gtu21 + Gtl213*gtu22 + Gtl313*gtu32; + CCTK_REAL Gt213 = Gtl113*gtu12 + Gtl213*gtu22 + Gtl313*gtu23; - CCTK_REAL Gt313 = Gtl113*gtu31 + Gtl213*gtu32 + Gtl313*gtu33; + CCTK_REAL Gt313 = Gtl113*gtu13 + Gtl213*gtu23 + Gtl313*gtu33; - CCTK_REAL Gt122 = Gtl122*gtu11 + Gtl222*gtu21 + Gtl322*gtu31; + CCTK_REAL Gt122 = Gtl122*gtu11 + Gtl222*gtu12 + Gtl322*gtu13; - CCTK_REAL Gt222 = Gtl122*gtu21 + Gtl222*gtu22 + Gtl322*gtu32; + CCTK_REAL Gt222 = Gtl122*gtu12 + Gtl222*gtu22 + Gtl322*gtu23; - CCTK_REAL Gt322 = Gtl122*gtu31 + Gtl222*gtu32 + Gtl322*gtu33; + CCTK_REAL Gt322 = Gtl122*gtu13 + Gtl222*gtu23 + Gtl322*gtu33; - CCTK_REAL Gt123 = Gtl123*gtu11 + Gtl223*gtu21 + Gtl323*gtu31; + CCTK_REAL Gt123 = Gtl123*gtu11 + Gtl223*gtu12 + Gtl323*gtu13; - CCTK_REAL Gt223 = Gtl123*gtu21 + Gtl223*gtu22 + Gtl323*gtu32; + CCTK_REAL Gt223 = Gtl123*gtu12 + Gtl223*gtu22 + Gtl323*gtu23; - CCTK_REAL Gt323 = Gtl123*gtu31 + Gtl223*gtu32 + Gtl323*gtu33; + CCTK_REAL Gt323 = Gtl123*gtu13 + Gtl223*gtu23 + Gtl323*gtu33; - CCTK_REAL Gt133 = Gtl133*gtu11 + Gtl233*gtu21 + Gtl333*gtu31; + CCTK_REAL Gt133 = Gtl133*gtu11 + Gtl233*gtu12 + Gtl333*gtu13; - CCTK_REAL Gt233 = Gtl133*gtu21 + Gtl233*gtu22 + Gtl333*gtu32; + CCTK_REAL Gt233 = Gtl133*gtu12 + Gtl233*gtu22 + Gtl333*gtu23; - CCTK_REAL Gt333 = Gtl133*gtu31 + Gtl233*gtu32 + Gtl333*gtu33; + CCTK_REAL Gt333 = Gtl133*gtu13 + Gtl233*gtu23 + Gtl333*gtu33; - CCTK_REAL Xtn1 = Gt111*gtu11 + Gt122*gtu22 + 2*(Gt112*gtu21 + - Gt113*gtu31 + Gt123*gtu32) + Gt133*gtu33; + CCTK_REAL Xtn1 = Gt111*gtu11 + Gt122*gtu22 + 2*(Gt112*gtu12 + + Gt113*gtu13 + Gt123*gtu23) + Gt133*gtu33; - CCTK_REAL Xtn2 = Gt211*gtu11 + Gt222*gtu22 + 2*(Gt212*gtu21 + - Gt213*gtu31 + Gt223*gtu32) + Gt233*gtu33; + CCTK_REAL Xtn2 = Gt211*gtu11 + Gt222*gtu22 + 2*(Gt212*gtu12 + + Gt213*gtu13 + Gt223*gtu23) + Gt233*gtu33; - CCTK_REAL Xtn3 = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu21 + - Gt313*gtu31 + Gt323*gtu32) + Gt333*gtu33; + CCTK_REAL Xtn3 = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu12 + + Gt313*gtu13 + Gt323*gtu23) + Gt333*gtu33; CCTK_REAL Rt11 = 3*(Gt111*Gtlu111 + Gt112*Gtlu112 + Gt113*Gtlu113) + 2*(Gt211*Gtlu121 + Gt212*Gtlu122 + Gt213*Gtlu123 + Gt311*Gtlu131 + @@ -587,8 +599,8 @@ void ML_BSSN_O2_RHS2_Body(cGH const * restrict const cctkGH, int const dir, int Gt213*Gtlu213 + Gt311*Gtlu311 + Gt312*Gtlu312 + Gt313*Gtlu313 + gt11L*PDstandardNth1Xt1 + gt12L*PDstandardNth1Xt2 + gt13L*PDstandardNth1Xt3 + khalf*(-(gtu11*PDstandardNth11gt11) - - 2*gtu21*PDstandardNth12gt11 - 2*gtu31*PDstandardNth13gt11 - - gtu22*PDstandardNth22gt11 - 2*gtu32*PDstandardNth23gt11 - + 2*gtu12*PDstandardNth12gt11 - 2*gtu13*PDstandardNth13gt11 - + gtu22*PDstandardNth22gt11 - 2*gtu23*PDstandardNth23gt11 - gtu33*PDstandardNth33gt11) + Gtl111*Xtn1 + Gtl112*Xtn2 + Gtl113*Xtn3; CCTK_REAL Rt12 = khalf*(4*(Gt211*Gtlu221 + Gt212*Gtlu222 + @@ -598,10 +610,10 @@ void ML_BSSN_O2_RHS2_Body(cGH const * restrict const cctkGH, int const dir, int Gt323*Gtlu133 + Gt111*Gtlu211 + Gt112*Gtlu212 + Gt113*Gtlu213 + Gt311*Gtlu231 + Gt312*Gtlu232 + Gt313*Gtlu233 + Gt311*Gtlu321 + Gt312*Gtlu322 + Gt313*Gtlu323) - gtu11*PDstandardNth11gt12 - - 2*gtu21*PDstandardNth12gt12 - 2*gtu31*PDstandardNth13gt12 + + 2*gtu12*PDstandardNth12gt12 - 2*gtu13*PDstandardNth13gt12 + gt12L*PDstandardNth1Xt1 + gt22L*PDstandardNth1Xt2 + gt23L*PDstandardNth1Xt3 - gtu22*PDstandardNth22gt12 - - 2*gtu32*PDstandardNth23gt12 + gt11L*PDstandardNth2Xt1 + + 2*gtu23*PDstandardNth23gt12 + gt11L*PDstandardNth2Xt1 + gt12L*PDstandardNth2Xt2 + gt13L*PDstandardNth2Xt3 - gtu33*PDstandardNth33gt12 + Gtl112*Xtn1 + Gtl211*Xtn1 + Gtl122*Xtn2 + Gtl212*Xtn2 + Gtl123*Xtn3 + Gtl213*Xtn3); @@ -613,10 +625,10 @@ void ML_BSSN_O2_RHS2_Body(cGH const * restrict const cctkGH, int const dir, int Gt213*Gtlu233 + Gt111*Gtlu311 + Gt112*Gtlu312 + Gt113*Gtlu313 + Gt211*Gtlu321 + Gt212*Gtlu322 + Gt213*Gtlu323) + 4*(Gt311*Gtlu331 + Gt312*Gtlu332 + Gt313*Gtlu333) - gtu11*PDstandardNth11gt13 - - 2*gtu21*PDstandardNth12gt13 - 2*gtu31*PDstandardNth13gt13 + + 2*gtu12*PDstandardNth12gt13 - 2*gtu13*PDstandardNth13gt13 + gt13L*PDstandardNth1Xt1 + gt23L*PDstandardNth1Xt2 + gt33L*PDstandardNth1Xt3 - gtu22*PDstandardNth22gt13 - - 2*gtu32*PDstandardNth23gt13 - gtu33*PDstandardNth33gt13 + + 2*gtu23*PDstandardNth23gt13 - gtu33*PDstandardNth33gt13 + gt11L*PDstandardNth3Xt1 + gt12L*PDstandardNth3Xt2 + gt13L*PDstandardNth3Xt3 + Gtl113*Xtn1 + Gtl311*Xtn1 + Gtl123*Xtn2 + Gtl312*Xtn2 + Gtl133*Xtn3 + Gtl313*Xtn3); @@ -627,8 +639,8 @@ void ML_BSSN_O2_RHS2_Body(cGH const * restrict const cctkGH, int const dir, int Gt323*Gtlu233) + Gt312*Gtlu321 + Gt322*Gtlu322 + Gt323*Gtlu323 + gt12L*PDstandardNth2Xt1 + gt22L*PDstandardNth2Xt2 + gt23L*PDstandardNth2Xt3 + khalf*(-(gtu11*PDstandardNth11gt22) - - 2*gtu21*PDstandardNth12gt22 - 2*gtu31*PDstandardNth13gt22 - - gtu22*PDstandardNth22gt22 - 2*gtu32*PDstandardNth23gt22 - + 2*gtu12*PDstandardNth12gt22 - 2*gtu13*PDstandardNth13gt22 - + gtu22*PDstandardNth22gt22 - 2*gtu23*PDstandardNth23gt22 - gtu33*PDstandardNth33gt22) + Gtl212*Xtn1 + Gtl222*Xtn2 + Gtl223*Xtn3; CCTK_REAL Rt23 = khalf*(2*(Gt112*Gtlu131 + Gt122*Gtlu132 + @@ -638,8 +650,8 @@ void ML_BSSN_O2_RHS2_Body(cGH const * restrict const cctkGH, int const dir, int Gt333*Gtlu233 + Gt112*Gtlu311 + Gt122*Gtlu312 + Gt123*Gtlu313 + Gt212*Gtlu321 + Gt222*Gtlu322 + Gt223*Gtlu323) + 4*(Gt312*Gtlu331 + Gt322*Gtlu332 + Gt323*Gtlu333) - gtu11*PDstandardNth11gt23 - - 2*gtu21*PDstandardNth12gt23 - 2*gtu31*PDstandardNth13gt23 - - gtu22*PDstandardNth22gt23 - 2*gtu32*PDstandardNth23gt23 + + 2*gtu12*PDstandardNth12gt23 - 2*gtu13*PDstandardNth13gt23 - + gtu22*PDstandardNth22gt23 - 2*gtu23*PDstandardNth23gt23 + gt13L*PDstandardNth2Xt1 + gt23L*PDstandardNth2Xt2 + gt33L*PDstandardNth2Xt3 - gtu33*PDstandardNth33gt23 + gt12L*PDstandardNth3Xt1 + gt22L*PDstandardNth3Xt2 + @@ -650,9 +662,9 @@ void ML_BSSN_O2_RHS2_Body(cGH const * restrict const cctkGH, int const dir, int 2*Gtlu312) + Gt133*(Gtlu133 + 2*Gtlu313) + Gt213*(Gtlu231 + 2*Gtlu321) + Gt223*(Gtlu232 + 2*Gtlu322) + Gt233*(Gtlu233 + 2*Gtlu323) + 3*(Gt313*Gtlu331 + Gt323*Gtlu332 + Gt333*Gtlu333) + - khalf*(-(gtu11*PDstandardNth11gt33) - 2*gtu21*PDstandardNth12gt33 - - 2*gtu31*PDstandardNth13gt33 - gtu22*PDstandardNth22gt33 - - 2*gtu32*PDstandardNth23gt33 - gtu33*PDstandardNth33gt33) + + khalf*(-(gtu11*PDstandardNth11gt33) - 2*gtu12*PDstandardNth12gt33 - + 2*gtu13*PDstandardNth13gt33 - gtu22*PDstandardNth22gt33 - + 2*gtu23*PDstandardNth23gt33 - gtu33*PDstandardNth33gt33) + gt13L*PDstandardNth3Xt1 + gt23L*PDstandardNth3Xt2 + gt33L*PDstandardNth3Xt3 + Gtl313*Xtn1 + Gtl323*Xtn2 + Gtl333*Xtn3; @@ -691,58 +703,58 @@ void ML_BSSN_O2_RHS2_Body(cGH const * restrict const cctkGH, int const dir, int Gt333*PDstandardNth3phi)) + fac2*SQR(PDstandardNth3phi); CCTK_REAL Rphi11 = -2*(cdphi211 + 2*(-1 + gt11L*gtu11)*SQR(cdphi1) + - gt11L*(cdphi211*gtu11 + 4*(cdphi1*(cdphi2*gtu21 + cdphi3*gtu31) + - cdphi2*cdphi3*gtu32) + cdphi233*gtu33 + gtu22*(cdphi222 + - 2*SQR(cdphi2)) + 2*(cdphi212*gtu21 + cdphi213*gtu31 + cdphi223*gtu32 + + 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 Rphi12 = -2*(cdphi212 + cdphi1*(cdphi2*(-2 + 4*gt12L*gtu21) - + 4*cdphi3*gt12L*gtu31) + gt12L*(cdphi211*gtu11 + 4*cdphi2*cdphi3*gtu32 - + 2*(cdphi212*gtu21 + cdphi213*gtu31 + cdphi223*gtu32 + + 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 Rphi13 = -2*(cdphi213 + cdphi1*(4*cdphi2*gt13L*gtu21 + - cdphi3*(-2 + 4*gt13L*gtu31)) + gt13L*(cdphi211*gtu11 + - 4*cdphi2*cdphi3*gtu32 + 2*(cdphi212*gtu21 + cdphi213*gtu31 + - cdphi223*gtu32 + gtu11*SQR(cdphi1)) + gtu22*(cdphi222 + 2*SQR(cdphi2)) + 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 Rphi22 = -2*(cdphi222 + 2*(-1 + gt22L*gtu22)*SQR(cdphi2) + - gt22L*(cdphi222*gtu22 + 4*(cdphi1*cdphi3*gtu31 + cdphi2*(cdphi1*gtu21 + - cdphi3*gtu32)) + cdphi233*gtu33 + gtu11*(cdphi211 + 2*SQR(cdphi1)) + - 2*(cdphi212*gtu21 + cdphi213*gtu31 + cdphi223*gtu32 + + 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 Rphi23 = -2*(cdphi223 + cdphi2*(4*cdphi1*gt23L*gtu21 + - cdphi3*(-2 + 4*gt23L*gtu32)) + gt23L*(cdphi222*gtu22 + - 4*cdphi1*cdphi3*gtu31 + gtu11*(cdphi211 + 2*SQR(cdphi1)) + - 2*(cdphi212*gtu21 + cdphi213*gtu31 + cdphi223*gtu32 + - gtu22*SQR(cdphi2)) + gtu33*(cdphi233 + 2*SQR(cdphi3)))); + 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 Rphi33 = -2*(cdphi233 + gt33L*((4*cdphi1*cdphi2 + - 2*cdphi212)*gtu21 + 4*cdphi3*(cdphi1*gtu31 + cdphi2*gtu32) + - 2*(cdphi213*gtu31 + cdphi223*gtu32) + cdphi233*gtu33 + gtu11*(cdphi211 + 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 Atm11 = At11L*gtu11 + At12L*gtu21 + At13L*gtu31; + CCTK_REAL Atm11 = At11L*gtu11 + At12L*gtu12 + At13L*gtu13; - CCTK_REAL Atm21 = At11L*gtu21 + At12L*gtu22 + At13L*gtu32; + CCTK_REAL Atm21 = At11L*gtu12 + At12L*gtu22 + At13L*gtu23; - CCTK_REAL Atm31 = At11L*gtu31 + At12L*gtu32 + At13L*gtu33; + CCTK_REAL Atm31 = At11L*gtu13 + At12L*gtu23 + At13L*gtu33; - CCTK_REAL Atm12 = At12L*gtu11 + At22L*gtu21 + At23L*gtu31; + CCTK_REAL Atm12 = At12L*gtu11 + At22L*gtu12 + At23L*gtu13; - CCTK_REAL Atm22 = At12L*gtu21 + At22L*gtu22 + At23L*gtu32; + CCTK_REAL Atm22 = At12L*gtu12 + At22L*gtu22 + At23L*gtu23; - CCTK_REAL Atm32 = At12L*gtu31 + At22L*gtu32 + At23L*gtu33; + CCTK_REAL Atm32 = At12L*gtu13 + At22L*gtu23 + At23L*gtu33; - CCTK_REAL Atm13 = At13L*gtu11 + At23L*gtu21 + At33L*gtu31; + CCTK_REAL Atm13 = At13L*gtu11 + At23L*gtu12 + At33L*gtu13; - CCTK_REAL Atm23 = At13L*gtu21 + At23L*gtu22 + At33L*gtu32; + CCTK_REAL Atm23 = At13L*gtu12 + At23L*gtu22 + At33L*gtu23; - CCTK_REAL Atm33 = At13L*gtu31 + At23L*gtu32 + At33L*gtu33; + CCTK_REAL Atm33 = At13L*gtu13 + At23L*gtu23 + At33L*gtu33; CCTK_REAL e4phi = IfThen(conformalMethod,pow(phiL,-2),exp(4*phiL)); @@ -762,13 +774,13 @@ void ML_BSSN_O2_RHS2_Body(cGH const * restrict const cctkGH, int const dir, int CCTK_REAL gu11 = em4phi*gtu11; - CCTK_REAL gu21 = em4phi*gtu21; + CCTK_REAL gu12 = em4phi*gtu12; - CCTK_REAL gu31 = em4phi*gtu31; + CCTK_REAL gu13 = em4phi*gtu13; CCTK_REAL gu22 = em4phi*gtu22; - CCTK_REAL gu32 = em4phi*gtu32; + CCTK_REAL gu23 = em4phi*gtu23; CCTK_REAL gu33 = em4phi*gtu33; @@ -784,8 +796,8 @@ void ML_BSSN_O2_RHS2_Body(cGH const * restrict const cctkGH, int const dir, int CCTK_REAL R33 = Rphi33 + Rt33; - CCTK_REAL trS = em4phi*(eTxxL*gtu11 + eTyyL*gtu22 + 2*(eTxyL*gtu21 + - eTxzL*gtu31 + eTyzL*gtu32) + eTzzL*gtu33); + CCTK_REAL trS = em4phi*(eTxxL*gtu11 + eTyyL*gtu22 + 2*(eTxyL*gtu12 + + eTxzL*gtu13 + eTyzL*gtu23) + eTzzL*gtu33); CCTK_REAL Ats11 = -PDstandardNth11alpha + (4*cdphi1 + Gt111)*PDstandardNth1alpha + Gt211*PDstandardNth2alpha + @@ -811,8 +823,8 @@ void ML_BSSN_O2_RHS2_Body(cGH const * restrict const cctkGH, int const dir, int Gt233*PDstandardNth2alpha - PDstandardNth33alpha + (4*cdphi3 + Gt333)*PDstandardNth3alpha + alphaL*R33; - CCTK_REAL trAts = Ats11*gu11 + Ats22*gu22 + 2*(Ats12*gu21 + Ats13*gu31 - + Ats23*gu32) + Ats33*gu33; + CCTK_REAL trAts = Ats11*gu11 + Ats22*gu22 + 2*(Ats12*gu12 + Ats13*gu13 + + Ats23*gu23) + Ats33*gu33; CCTK_REAL At11rhsL = -2.*alphaL*(At11L*Atm11 + At12L*Atm21 + At13L*Atm31) + epsdiss1*PDdissipationNth1At11 + diff --git a/ML_BSSN_O2/src/ML_BSSN_O2_RHSRadiativeBoundary.c b/ML_BSSN_O2/src/ML_BSSN_O2_RHSRadiativeBoundary.c index f9e9e1c..254e962 100644 --- a/ML_BSSN_O2/src/ML_BSSN_O2_RHSRadiativeBoundary.c +++ b/ML_BSSN_O2/src/ML_BSSN_O2_RHSRadiativeBoundary.c @@ -20,6 +20,42 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((x) * (x) * (x) * (x)) +void ML_BSSN_O2_RHSRadiativeBoundary_SelectBCs(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT ierr = 0; + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O2::ML_curvrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O2::ML_curvrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O2::ML_dtlapserhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O2::ML_dtlapserhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O2::ML_dtshiftrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O2::ML_dtshiftrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O2::ML_Gammarhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O2::ML_Gammarhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O2::ML_lapserhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O2::ML_lapserhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O2::ML_log_confacrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O2::ML_log_confacrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O2::ML_metricrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O2::ML_metricrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O2::ML_shiftrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O2::ML_shiftrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O2::ML_trace_curvrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O2::ML_trace_curvrhs."); + return; +} + void ML_BSSN_O2_RHSRadiativeBoundary_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[]) { DECLARE_CCTK_ARGUMENTS; @@ -137,13 +173,13 @@ void ML_BSSN_O2_RHSRadiativeBoundary_Body(cGH const * restrict const cctkGH, int CCTK_REAL gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L)); - CCTK_REAL gtu21 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt); + CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt); - CCTK_REAL gtu31 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt); + CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt); CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L)); - CCTK_REAL gtu32 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt); + CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt); CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L)); @@ -151,13 +187,13 @@ void ML_BSSN_O2_RHSRadiativeBoundary_Body(cGH const * restrict const cctkGH, int CCTK_REAL gu11 = em4phi*gtu11; - CCTK_REAL gu21 = em4phi*gtu21; + CCTK_REAL gu12 = em4phi*gtu12; - CCTK_REAL gu31 = em4phi*gtu31; + CCTK_REAL gu13 = em4phi*gtu13; CCTK_REAL gu22 = em4phi*gtu22; - CCTK_REAL gu32 = em4phi*gtu32; + CCTK_REAL gu23 = em4phi*gtu23; CCTK_REAL gu33 = em4phi*gtu33; @@ -167,11 +203,11 @@ void ML_BSSN_O2_RHSRadiativeBoundary_Body(cGH const * restrict const cctkGH, int CCTK_REAL nn3 = normal[2]; - CCTK_REAL nu1 = gu11*nn1 + gu21*nn2 + gu31*nn3; + CCTK_REAL nu1 = gu11*nn1 + gu12*nn2 + gu13*nn3; - CCTK_REAL nu2 = gu21*nn1 + gu22*nn2 + gu32*nn3; + CCTK_REAL nu2 = gu12*nn1 + gu22*nn2 + gu23*nn3; - CCTK_REAL nu3 = gu31*nn1 + gu32*nn2 + gu33*nn3; + CCTK_REAL nu3 = gu13*nn1 + gu23*nn2 + gu33*nn3; CCTK_REAL nlen2 = nn1*nu1 + nn2*nu2 + nn3*nu3; diff --git a/ML_BSSN_O2/src/ML_BSSN_O2_RHSStaticBoundary.c b/ML_BSSN_O2/src/ML_BSSN_O2_RHSStaticBoundary.c index 562a121..04def59 100644 --- a/ML_BSSN_O2/src/ML_BSSN_O2_RHSStaticBoundary.c +++ b/ML_BSSN_O2/src/ML_BSSN_O2_RHSStaticBoundary.c @@ -20,6 +20,42 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((x) * (x) * (x) * (x)) +void ML_BSSN_O2_RHSStaticBoundary_SelectBCs(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT ierr = 0; + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O2::ML_curvrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O2::ML_curvrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O2::ML_dtlapserhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O2::ML_dtlapserhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O2::ML_dtshiftrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O2::ML_dtshiftrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O2::ML_Gammarhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O2::ML_Gammarhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O2::ML_lapserhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O2::ML_lapserhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O2::ML_log_confacrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O2::ML_log_confacrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O2::ML_metricrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O2::ML_metricrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O2::ML_shiftrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O2::ML_shiftrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O2::ML_trace_curvrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O2::ML_trace_curvrhs."); + return; +} + 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[]) { DECLARE_CCTK_ARGUMENTS; diff --git a/ML_BSSN_O2/src/ML_BSSN_O2_boundary.c b/ML_BSSN_O2/src/ML_BSSN_O2_boundary.c index b1bfaa9..527c18c 100644 --- a/ML_BSSN_O2/src/ML_BSSN_O2_boundary.c +++ b/ML_BSSN_O2/src/ML_BSSN_O2_boundary.c @@ -20,6 +20,42 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((x) * (x) * (x) * (x)) +void ML_BSSN_O2_boundary_SelectBCs(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT ierr = 0; + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O2::ML_curv","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O2::ML_curv."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O2::ML_dtlapse","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O2::ML_dtlapse."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O2::ML_dtshift","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O2::ML_dtshift."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O2::ML_Gamma","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O2::ML_Gamma."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O2::ML_lapse","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O2::ML_lapse."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O2::ML_log_confac","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O2::ML_log_confac."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O2::ML_metric","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O2::ML_metric."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O2::ML_shift","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O2::ML_shift."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O2::ML_trace_curv","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O2::ML_trace_curv."); + return; +} + 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[]) { DECLARE_CCTK_ARGUMENTS; diff --git a/ML_BSSN_O2/src/ML_BSSN_O2_constraints.c b/ML_BSSN_O2/src/ML_BSSN_O2_constraints.c index a450c63..0558843 100644 --- a/ML_BSSN_O2/src/ML_BSSN_O2_constraints.c +++ b/ML_BSSN_O2/src/ML_BSSN_O2_constraints.c @@ -20,6 +20,30 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((x) * (x) * (x) * (x)) +void ML_BSSN_O2_constraints_SelectBCs(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT ierr = 0; + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O2::ML_cons_detg","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O2::ML_cons_detg."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O2::ML_cons_Gamma","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O2::ML_cons_Gamma."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O2::ML_cons_traceA","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O2::ML_cons_traceA."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O2::ML_Ham","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O2::ML_Ham."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O2::ML_mom","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O2::ML_mom."); + return; +} + void ML_BSSN_O2_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[]) { DECLARE_CCTK_ARGUMENTS; @@ -323,151 +347,151 @@ void ML_BSSN_O2_constraints_Body(cGH const * restrict const cctkGH, int const di CCTK_REAL gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L)); - CCTK_REAL gtu21 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt); + CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt); - CCTK_REAL gtu31 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt); + CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt); CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L)); - CCTK_REAL gtu32 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt); + CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt); CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L)); CCTK_REAL Gt111 = khalf*(gtu11*PDstandardNth1gt11 + - 2*(gtu21*PDstandardNth1gt12 + gtu31*PDstandardNth1gt13) - - gtu21*PDstandardNth2gt11 - gtu31*PDstandardNth3gt11); + 2*(gtu12*PDstandardNth1gt12 + gtu13*PDstandardNth1gt13) - + gtu12*PDstandardNth2gt11 - gtu13*PDstandardNth3gt11); - CCTK_REAL Gt211 = khalf*(gtu21*PDstandardNth1gt11 + - 2*(gtu22*PDstandardNth1gt12 + gtu32*PDstandardNth1gt13) - - gtu22*PDstandardNth2gt11 - gtu32*PDstandardNth3gt11); + CCTK_REAL Gt211 = khalf*(gtu12*PDstandardNth1gt11 + + 2*(gtu22*PDstandardNth1gt12 + gtu23*PDstandardNth1gt13) - + gtu22*PDstandardNth2gt11 - gtu23*PDstandardNth3gt11); - CCTK_REAL Gt311 = khalf*(gtu31*PDstandardNth1gt11 + - 2*(gtu32*PDstandardNth1gt12 + gtu33*PDstandardNth1gt13) - - gtu32*PDstandardNth2gt11 - gtu33*PDstandardNth3gt11); + CCTK_REAL Gt311 = khalf*(gtu13*PDstandardNth1gt11 + + 2*(gtu23*PDstandardNth1gt12 + gtu33*PDstandardNth1gt13) - + gtu23*PDstandardNth2gt11 - gtu33*PDstandardNth3gt11); - CCTK_REAL Gt112 = khalf*(gtu21*PDstandardNth1gt22 + - gtu11*PDstandardNth2gt11 + gtu31*(PDstandardNth1gt23 + + CCTK_REAL Gt112 = khalf*(gtu12*PDstandardNth1gt22 + + gtu11*PDstandardNth2gt11 + gtu13*(PDstandardNth1gt23 + PDstandardNth2gt13 - PDstandardNth3gt12)); CCTK_REAL Gt212 = khalf*(gtu22*PDstandardNth1gt22 + - gtu21*PDstandardNth2gt11 + gtu32*(PDstandardNth1gt23 + + gtu12*PDstandardNth2gt11 + gtu23*(PDstandardNth1gt23 + PDstandardNth2gt13 - PDstandardNth3gt12)); - CCTK_REAL Gt312 = khalf*(gtu32*PDstandardNth1gt22 + - gtu31*PDstandardNth2gt11 + gtu33*(PDstandardNth1gt23 + + CCTK_REAL Gt312 = khalf*(gtu23*PDstandardNth1gt22 + + gtu13*PDstandardNth2gt11 + gtu33*(PDstandardNth1gt23 + PDstandardNth2gt13 - PDstandardNth3gt12)); - CCTK_REAL Gt113 = khalf*(gtu31*PDstandardNth1gt33 + - gtu11*PDstandardNth3gt11 + gtu21*(PDstandardNth1gt23 - + CCTK_REAL Gt113 = khalf*(gtu13*PDstandardNth1gt33 + + gtu11*PDstandardNth3gt11 + gtu12*(PDstandardNth1gt23 - PDstandardNth2gt13 + PDstandardNth3gt12)); - CCTK_REAL Gt213 = khalf*(gtu32*PDstandardNth1gt33 + - gtu21*PDstandardNth3gt11 + gtu22*(PDstandardNth1gt23 - + CCTK_REAL Gt213 = khalf*(gtu23*PDstandardNth1gt33 + + gtu12*PDstandardNth3gt11 + gtu22*(PDstandardNth1gt23 - PDstandardNth2gt13 + PDstandardNth3gt12)); CCTK_REAL Gt313 = khalf*(gtu33*PDstandardNth1gt33 + - gtu31*PDstandardNth3gt11 + gtu32*(PDstandardNth1gt23 - + gtu13*PDstandardNth3gt11 + gtu23*(PDstandardNth1gt23 - PDstandardNth2gt13 + PDstandardNth3gt12)); CCTK_REAL Gt122 = khalf*(gtu11*(-PDstandardNth1gt22 + - 2*PDstandardNth2gt12) + gtu21*PDstandardNth2gt22 + - gtu31*(2*PDstandardNth2gt23 - PDstandardNth3gt22)); + 2*PDstandardNth2gt12) + gtu12*PDstandardNth2gt22 + + gtu13*(2*PDstandardNth2gt23 - PDstandardNth3gt22)); - CCTK_REAL Gt222 = khalf*(gtu21*(-PDstandardNth1gt22 + + CCTK_REAL Gt222 = khalf*(gtu12*(-PDstandardNth1gt22 + 2*PDstandardNth2gt12) + gtu22*PDstandardNth2gt22 + - gtu32*(2*PDstandardNth2gt23 - PDstandardNth3gt22)); + gtu23*(2*PDstandardNth2gt23 - PDstandardNth3gt22)); - CCTK_REAL Gt322 = khalf*(gtu31*(-PDstandardNth1gt22 + - 2*PDstandardNth2gt12) + gtu32*PDstandardNth2gt22 + + CCTK_REAL Gt322 = khalf*(gtu13*(-PDstandardNth1gt22 + + 2*PDstandardNth2gt12) + gtu23*PDstandardNth2gt22 + gtu33*(2*PDstandardNth2gt23 - PDstandardNth3gt22)); - CCTK_REAL Gt123 = khalf*(gtu31*PDstandardNth2gt33 + + CCTK_REAL Gt123 = khalf*(gtu13*PDstandardNth2gt33 + gtu11*(-PDstandardNth1gt23 + PDstandardNth2gt13 + PDstandardNth3gt12) + - gtu21*PDstandardNth3gt22); + gtu12*PDstandardNth3gt22); - CCTK_REAL Gt223 = khalf*(gtu32*PDstandardNth2gt33 + - gtu21*(-PDstandardNth1gt23 + PDstandardNth2gt13 + PDstandardNth3gt12) + + CCTK_REAL Gt223 = khalf*(gtu23*PDstandardNth2gt33 + + gtu12*(-PDstandardNth1gt23 + PDstandardNth2gt13 + PDstandardNth3gt12) + gtu22*PDstandardNth3gt22); CCTK_REAL Gt323 = khalf*(gtu33*PDstandardNth2gt33 + - gtu31*(-PDstandardNth1gt23 + PDstandardNth2gt13 + PDstandardNth3gt12) + - gtu32*PDstandardNth3gt22); + gtu13*(-PDstandardNth1gt23 + PDstandardNth2gt13 + PDstandardNth3gt12) + + gtu23*PDstandardNth3gt22); CCTK_REAL Gt133 = khalf*(-(gtu11*PDstandardNth1gt33) - - gtu21*PDstandardNth2gt33 + 2*gtu11*PDstandardNth3gt13 + - 2*gtu21*PDstandardNth3gt23 + gtu31*PDstandardNth3gt33); + gtu12*PDstandardNth2gt33 + 2*gtu11*PDstandardNth3gt13 + + 2*gtu12*PDstandardNth3gt23 + gtu13*PDstandardNth3gt33); - CCTK_REAL Gt233 = khalf*(-(gtu21*PDstandardNth1gt33) - - gtu22*PDstandardNth2gt33 + 2*gtu21*PDstandardNth3gt13 + - 2*gtu22*PDstandardNth3gt23 + gtu32*PDstandardNth3gt33); + CCTK_REAL Gt233 = khalf*(-(gtu12*PDstandardNth1gt33) - + gtu22*PDstandardNth2gt33 + 2*gtu12*PDstandardNth3gt13 + + 2*gtu22*PDstandardNth3gt23 + gtu23*PDstandardNth3gt33); - CCTK_REAL Gt333 = khalf*(-(gtu31*PDstandardNth1gt33) - - gtu32*PDstandardNth2gt33 + 2*gtu31*PDstandardNth3gt13 + - 2*gtu32*PDstandardNth3gt23 + gtu33*PDstandardNth3gt33); + CCTK_REAL Gt333 = khalf*(-(gtu13*PDstandardNth1gt33) - + gtu23*PDstandardNth2gt33 + 2*gtu13*PDstandardNth3gt13 + + 2*gtu23*PDstandardNth3gt23 + gtu33*PDstandardNth3gt33); CCTK_REAL Rt11 = -(gtu11*khalf*PDstandardNth11gt11) + - gtu21*(2*Gt211*Gt212*gt22L + 4*Gt112*gt13L*Gt311 + 2*Gt113*gt11L*Gt312 + gtu12*(2*Gt211*Gt212*gt22L + 4*Gt112*gt13L*Gt311 + 2*Gt113*gt11L*Gt312 + 2*gt13L*Gt312*Gt313 + 2*gt13L*Gt211*Gt322 + 2*gt13L*Gt311*Gt323 + - 2*Gt311*Gt312*gt33L - PDstandardNth12gt11) - gtu31*PDstandardNth13gt11 - + gt11L*PDstandardNth1Xt1 + gt12L*(4*Gt111*Gt212*gtu21 + - 2*Gt211*Gt222*gtu21 + 2*Gt212*Gt222*gtu22 + 4*Gt113*Gt211*gtu31 + - 4*Gt113*Gt212*gtu32 + 4*Gt113*Gt213*gtu33 + PDstandardNth1Xt2) + - gt13L*(4*Gt111*Gt312*gtu21 + 2*Gt212*Gt312*gtu21 + 4*Gt112*Gt312*gtu22 - + 4*Gt113*Gt311*gtu31 + 4*Gt113*Gt312*gtu32 + 4*Gt113*Gt313*gtu33 + + 2*Gt311*Gt312*gt33L - PDstandardNth12gt11) - gtu13*PDstandardNth13gt11 + + gt11L*PDstandardNth1Xt1 + gt12L*(4*Gt111*Gt212*gtu12 + + 2*Gt211*Gt222*gtu12 + 4*Gt113*Gt211*gtu13 + 4*Gt112*Gt212*gtu22 + + 4*Gt113*Gt212*gtu23 + 4*Gt113*Gt213*gtu33 + PDstandardNth1Xt2) + + gt13L*(4*Gt111*Gt312*gtu12 + 2*Gt212*Gt312*gtu12 + 4*Gt113*Gt311*gtu13 + + 2*Gt212*Gt322*gtu22 + 4*Gt113*Gt312*gtu23 + 4*Gt113*Gt313*gtu33 + PDstandardNth1Xt3) - gtu22*khalf*PDstandardNth22gt11 - - gtu32*PDstandardNth23gt11 - gtu33*khalf*PDstandardNth33gt11 + - Gt111*(6*Gt113*gt11L*gtu31 + 4*gt12L*Gt213*gtu31 + gt11L*Xt1L) + - Gt211*(2*Gt112*gt11L*gtu11 + 4*Gt111*gt12L*gtu11 + 2*gt11L*Gt122*gtu21 - + 2*gt11L*Gt123*gtu31 + gt12L*Xt1L) + Gt311*(4*Gt111*gt13L*gtu11 + - 2*gt12L*Gt213*gtu11 + 2*gt13L*Gt313*gtu11 + 2*gt11L*Gt123*gtu21 + - 2*gt11L*Gt133*gtu31 + gt13L*Xt1L) + gt12L*Gt212*Xt2L + gt13L*Gt312*Xt2L - + Gt112*(6*Gt111*gt11L*gtu21 + 4*gt12L*Gt211*gtu21 + - 4*gt12L*Gt212*gtu22 + 2*gt11L*Gt213*gtu31 + 6*Gt113*gt11L*gtu32 + - gt11L*Xt2L) + Gt113*gt11L*Xt3L + Gt213*(2*gt11L*Gt122*gtu32 + - 4*Gt112*gt12L*gtu32 + 2*gt11L*Gt123*gtu33 + gt12L*Xt3L) + - Gt313*(4*Gt111*gt13L*gtu31 + 2*gt12L*Gt213*gtu31 + 2*gt11L*Gt123*gtu32 - + 4*Gt112*gt13L*gtu32 + 2*gt12L*Gt223*gtu32 + 2*gt11L*Gt133*gtu33 + + gtu23*PDstandardNth23gt11 - gtu33*khalf*PDstandardNth33gt11 + + Gt111*(6*Gt113*gt11L*gtu13 + 4*gt12L*Gt213*gtu13 + gt11L*Xt1L) + + Gt211*(2*Gt112*gt11L*gtu11 + 4*Gt111*gt12L*gtu11 + 2*gt11L*Gt122*gtu12 + + 2*gt11L*Gt123*gtu13 + gt12L*Xt1L) + Gt311*(4*Gt111*gt13L*gtu11 + + 2*gt12L*Gt213*gtu11 + 2*gt13L*Gt313*gtu11 + 2*gt11L*Gt123*gtu12 + + 2*gt11L*Gt133*gtu13 + gt13L*Xt1L) + gt12L*Gt212*Xt2L + gt13L*Gt312*Xt2L + + Gt112*(6*Gt111*gt11L*gtu12 + 4*gt12L*Gt211*gtu12 + + 2*gt11L*Gt213*gtu13 + 4*gt13L*Gt312*gtu22 + 6*Gt113*gt11L*gtu23 + + gt11L*Xt2L) + Gt113*gt11L*Xt3L + Gt213*(2*gt11L*Gt122*gtu23 + + 4*Gt112*gt12L*gtu23 + 2*gt11L*Gt123*gtu33 + gt12L*Xt3L) + + Gt313*(4*Gt111*gt13L*gtu13 + 2*gt12L*Gt213*gtu13 + 2*gt11L*Gt123*gtu23 + + 4*Gt112*gt13L*gtu23 + 2*gt12L*Gt223*gtu23 + 2*gt11L*Gt133*gtu33 + gt13L*Xt3L) + 3*gt11L*gtu11*SQR(Gt111) + 3*gt11L*gtu22*SQR(Gt112) + 3*gt11L*gtu33*SQR(Gt113) + gt22L*gtu11*SQR(Gt211) + gt22L*gtu22*SQR(Gt212) + 2*(gt12L*Gt211*Gt212*gtu11 + Gt113*gt11L*Gt311*gtu11 + Gt211*gt23L*Gt311*gtu11 + - gt13L*Gt211*Gt312*gtu11 + Gt112*gt11L*Gt212*gtu21 + - gt12L*Gt223*Gt311*gtu21 + Gt212*gt23L*Gt311*gtu21 + - gt12L*Gt213*Gt312*gtu21 + Gt211*gt23L*Gt312*gtu21 + - gt11L*Gt122*Gt212*gtu22 + gt11L*Gt123*Gt312*gtu22 + + gt13L*Gt211*Gt312*gtu11 + Gt112*gt11L*Gt212*gtu12 + + gt12L*Gt223*Gt311*gtu12 + Gt212*gt23L*Gt311*gtu12 + + gt12L*Gt213*Gt312*gtu12 + Gt211*gt23L*Gt312*gtu12 + + gt12L*Gt212*Gt213*gtu13 + gt12L*Gt211*Gt223*gtu13 + + Gt211*Gt213*gt22L*gtu13 + gt12L*Gt233*Gt311*gtu13 + + Gt213*gt23L*Gt311*gtu13 + gt13L*Gt213*Gt312*gtu13 + + Gt113*gt11L*Gt313*gtu13 + Gt211*gt23L*Gt313*gtu13 + + gt13L*Gt211*Gt323*gtu13 + gt13L*Gt311*Gt333*gtu13 + + Gt311*Gt313*gt33L*gtu13 + gt11L*Gt122*Gt212*gtu22 + + gt12L*Gt212*Gt222*gtu22 + gt11L*Gt123*Gt312*gtu22 + gt12L*Gt223*Gt312*gtu22 + Gt212*gt23L*Gt312*gtu22 + - gt13L*Gt212*Gt322*gtu22 + gt13L*Gt312*Gt323*gtu22 + - gt12L*Gt212*Gt213*gtu31 + gt12L*Gt211*Gt223*gtu31 + - Gt211*Gt213*gt22L*gtu31 + gt12L*Gt233*Gt311*gtu31 + - Gt213*gt23L*Gt311*gtu31 + gt13L*Gt213*Gt312*gtu31 + - Gt113*gt11L*Gt313*gtu31 + Gt211*gt23L*Gt313*gtu31 + - gt13L*Gt211*Gt323*gtu31 + gt13L*Gt311*Gt333*gtu31 + - Gt311*Gt313*gt33L*gtu31 + gt11L*Gt123*Gt212*gtu32 + - gt12L*Gt213*Gt222*gtu32 + gt12L*Gt212*Gt223*gtu32 + - Gt212*Gt213*gt22L*gtu32 + gt11L*Gt133*Gt312*gtu32 + - gt12L*Gt233*Gt312*gtu32 + Gt213*gt23L*Gt312*gtu32 + - Gt212*gt23L*Gt313*gtu32 + gt13L*Gt213*Gt322*gtu32 + - gt13L*Gt212*Gt323*gtu32 + gt13L*Gt313*Gt323*gtu32 + - gt13L*Gt312*Gt333*gtu32 + Gt312*Gt313*gt33L*gtu32 + + gt13L*Gt312*Gt323*gtu22 + gt11L*Gt123*Gt212*gtu23 + + gt12L*Gt213*Gt222*gtu23 + gt12L*Gt212*Gt223*gtu23 + + Gt212*Gt213*gt22L*gtu23 + gt11L*Gt133*Gt312*gtu23 + + gt12L*Gt233*Gt312*gtu23 + Gt213*gt23L*Gt312*gtu23 + + Gt212*gt23L*Gt313*gtu23 + gt13L*Gt213*Gt322*gtu23 + + gt13L*Gt212*Gt323*gtu23 + gt13L*Gt313*Gt323*gtu23 + + gt13L*Gt312*Gt333*gtu23 + Gt312*Gt313*gt33L*gtu23 + gt12L*Gt213*Gt223*gtu33 + gt12L*Gt233*Gt313*gtu33 + Gt213*gt23L*Gt313*gtu33 + gt13L*Gt213*Gt323*gtu33 + - gt13L*Gt313*Gt333*gtu33 + gt12L*gtu21*SQR(Gt212)) + + gt13L*Gt313*Gt333*gtu33 + gt12L*gtu12*SQR(Gt212)) + gt22L*gtu33*SQR(Gt213) + gt33L*gtu11*SQR(Gt311) + - gt33L*gtu22*SQR(Gt312) + 2*gt13L*gtu31*SQR(Gt313) + + gt33L*gtu22*SQR(Gt312) + 2*gt13L*gtu13*SQR(Gt313) + gt33L*gtu33*SQR(Gt313); CCTK_REAL Rt12 = khalf*(-(gtu11*PDstandardNth11gt12) - - 2*gtu21*PDstandardNth12gt12 - 2*gtu31*PDstandardNth13gt12 + + 2*gtu12*PDstandardNth12gt12 - 2*gtu13*PDstandardNth13gt12 + gt12L*PDstandardNth1Xt1 + gt22L*PDstandardNth1Xt2 + gt23L*PDstandardNth1Xt3 - gtu22*PDstandardNth22gt12 - - 2*gtu32*PDstandardNth23gt12 + gt11L*PDstandardNth2Xt1 + + 2*gtu23*PDstandardNth23gt12 + gt11L*PDstandardNth2Xt1 + gt12L*PDstandardNth2Xt2 + gt13L*PDstandardNth2Xt3 - gtu33*PDstandardNth33gt12 + (Gt111*gt12L + Gt211*gt22L + gt23L*Gt311)*Xt1L + (Gt112*gt11L + gt12L*Gt212 + gt13L*Gt312)*Xt1L + (Gt112*gt12L + Gt212*gt22L + gt23L*Gt312)*Xt2L + (gt11L*Gt122 + gt12L*Gt222 + gt13L*Gt322)*Xt2L + (Gt113*gt12L + Gt213*gt22L + gt23L*Gt313)*Xt3L + (gt11L*Gt123 + gt12L*Gt223 + gt13L*Gt323)*Xt3L + - 2*gtu21*(Gt112*gt11L*Gt222 + Gt112*Gt211*gt22L + Gt211*Gt222*gt22L + + 2*gtu12*(Gt112*gt11L*Gt222 + Gt112*Gt211*gt22L + Gt211*Gt222*gt22L + 2*Gt122*gt13L*Gt311 + Gt112*gt23L*Gt311 + Gt222*gt23L*Gt311 + gt13L*Gt222*Gt312 + Gt213*gt22L*Gt312 + Gt212*gt23L*Gt312 + gt23L*Gt312*Gt313 + Gt113*gt11L*Gt322 + Gt211*gt23L*Gt322 + @@ -481,14 +505,14 @@ void ML_BSSN_O2_constraints_Body(cGH const * restrict const cctkGH, int const di Gt123*Gt212 + Gt133*Gt312) + 2*Gt112*gt13L*Gt313 + Gt212*gt23L*Gt313 + Gt111*(Gt113*gt12L + Gt213*gt22L + gt23L*Gt313) + gt13L*Gt212*Gt323 + Gt211*gt23L*Gt323 + gt23L*Gt311*Gt333 + gt13L*Gt312*Gt333 + - Gt312*Gt313*gt33L)*gtu31 + (Gt123*gt12L*Gt212 + 2*Gt122*gt12L*Gt213 + + Gt312*Gt313*gt33L)*gtu13 + (Gt123*gt12L*Gt212 + 2*Gt122*gt12L*Gt213 + Gt113*gt12L*Gt222 + gt12L*Gt222*Gt223 + Gt213*Gt222*gt22L + Gt212*Gt223*gt22L + gt12L*Gt133*Gt312 + gt22L*Gt233*Gt312 + 2*Gt122*gt13L*Gt313 + Gt222*gt23L*Gt313 + Gt112*(Gt113*gt12L + Gt213*gt22L + gt23L*Gt313) + Gt113*gt13L*Gt322 + gt12L*Gt233*Gt322 + Gt213*gt23L*Gt322 + gt11L*(2*Gt113*Gt122 + Gt123*Gt222 + Gt133*Gt322) + gt13L*Gt222*Gt323 + Gt212*gt23L*Gt323 + gt23L*Gt312*Gt333 + - gt13L*Gt322*Gt333 + Gt313*Gt322*gt33L)*gtu32 + + gt13L*Gt322*Gt333 + Gt313*Gt322*gt33L)*gtu23 + gtu11*(3*Gt112*gt12L*Gt211 + 2*Gt211*Gt212*gt22L + Gt113*gt12L*Gt311 + 2*Gt112*gt13L*Gt311 + Gt213*gt22L*Gt311 + Gt212*gt23L*Gt311 + gt13L*Gt212*Gt312 + gt12L*Gt213*Gt312 + 2*Gt211*gt23L*Gt312 + @@ -507,21 +531,21 @@ void ML_BSSN_O2_constraints_Body(cGH const * restrict const cctkGH, int const di 2*Gt213*gt23L*Gt323 + Gt113*(2*gt11L*Gt123 + gt12L*Gt223 + Gt213*gt22L + gt23L*Gt313 + gt13L*Gt323) + gt23L*Gt313*Gt333 + gt13L*Gt323*Gt333 + Gt313*Gt323*gt33L + gt12L*SQR(Gt113) + gt12L*(3*Gt123*Gt213 + - Gt133*Gt313 + Gt233*Gt323 + SQR(Gt223))) + 2*gtu21*(Gt122*gt12L*Gt211 + + Gt133*Gt313 + Gt233*Gt323 + SQR(Gt223))) + 2*gtu12*(Gt122*gt12L*Gt211 + 3*Gt112*gt12L*Gt212 + gt12L*Gt212*Gt222 + Gt211*Gt222*gt22L + Gt123*gt12L*Gt311 + Gt223*gt22L*Gt311 + 3*Gt112*gt13L*Gt312 + gt12L*Gt223*Gt312 + 2*Gt212*gt23L*Gt312 + Gt111*(Gt112*gt12L + Gt212*gt22L + gt23L*Gt312) + gt13L*Gt212*Gt322 + Gt211*gt23L*Gt322 + gt23L*Gt311*Gt323 + gt13L*Gt312*Gt323 + gt11L*(Gt122*Gt212 + Gt123*Gt312 + 2*SQR(Gt112)) + gt22L*SQR(Gt212) + gt33L*SQR(Gt312)) + - 2*gtu31*(Gt112*gt11L*Gt223 + Gt113*Gt211*gt22L + Gt212*Gt213*gt22L + + 2*gtu13*(Gt112*gt11L*Gt223 + Gt113*Gt211*gt22L + Gt212*Gt213*gt22L + Gt211*Gt223*gt22L + 2*Gt123*gt13L*Gt311 + Gt113*gt23L*Gt311 + Gt223*gt23L*Gt311 + gt13L*Gt223*Gt312 + Gt213*gt23L*Gt312 + Gt213*gt22L*Gt313 + Gt113*gt11L*Gt323 + Gt211*gt23L*Gt323 + gt13L*Gt313*Gt323 + Gt111*(2*gt11L*Gt123 + Gt113*gt12L + gt12L*Gt223 + gt13L*Gt323) + gt12L*(2*Gt123*Gt211 + Gt112*Gt213 + Gt212*Gt223 + Gt113*Gt313 + Gt213*Gt323) + Gt311*Gt323*gt33L + gt23L*SQR(Gt313)) + - 2*gtu32*(gt11L*Gt122*Gt223 + Gt113*Gt212*gt22L + Gt213*Gt222*gt22L + + 2*gtu23*(gt11L*Gt122*Gt223 + Gt113*Gt212*gt22L + Gt213*Gt222*gt22L + Gt212*Gt223*gt22L + 2*Gt123*gt13L*Gt312 + Gt113*gt23L*Gt312 + Gt223*gt23L*Gt312 + Gt223*gt22L*Gt313 + gt13L*Gt223*Gt322 + Gt213*gt23L*Gt322 + gt11L*Gt123*Gt323 + Gt212*gt23L*Gt323 + @@ -530,10 +554,10 @@ void ML_BSSN_O2_constraints_Body(cGH const * restrict const cctkGH, int const di Gt223*(Gt222 + Gt323)) + Gt312*Gt323*gt33L + gt13L*SQR(Gt323))); CCTK_REAL Rt13 = khalf*(-(gtu11*PDstandardNth11gt13) - - 2*gtu21*PDstandardNth12gt13 - 2*gtu31*PDstandardNth13gt13 + + 2*gtu12*PDstandardNth12gt13 - 2*gtu13*PDstandardNth13gt13 + gt13L*PDstandardNth1Xt1 + gt23L*PDstandardNth1Xt2 + gt33L*PDstandardNth1Xt3 - gtu22*PDstandardNth22gt13 - - 2*gtu32*PDstandardNth23gt13 - gtu33*PDstandardNth33gt13 + + 2*gtu23*PDstandardNth23gt13 - gtu33*PDstandardNth33gt13 + gt11L*PDstandardNth3Xt1 + gt12L*PDstandardNth3Xt2 + gt13L*PDstandardNth3Xt3 + (Gt113*gt11L + gt12L*Gt213 + gt13L*Gt313)*Xt1L + (Gt111*gt13L + Gt211*gt23L + Gt311*gt33L)*Xt1L + @@ -547,22 +571,22 @@ void ML_BSSN_O2_constraints_Body(cGH const * restrict const cctkGH, int const di Gt212*gt23L*Gt313 + gt11L*(2*Gt112*Gt113 + Gt122*Gt213 + Gt123*Gt313) + gt13L*Gt213*Gt322 + gt13L*Gt313*Gt323 + Gt312*Gt313*gt33L + Gt211*Gt322*gt33L + Gt311*Gt323*gt33L + Gt111*(Gt112*gt13L + - Gt212*gt23L + Gt312*gt33L))*gtu21 + (Gt122*gt13L*Gt213 + + Gt212*gt23L + Gt312*gt33L))*gtu12 + (Gt122*gt13L*Gt213 + gt11L*Gt122*Gt233 + Gt212*gt22L*Gt233 + Gt113*Gt212*gt23L + Gt213*Gt222*gt23L + 2*Gt133*gt13L*Gt312 + Gt233*gt23L*Gt312 + Gt123*gt13L*Gt313 + Gt223*gt23L*Gt313 + gt13L*Gt233*Gt322 + gt11L*Gt123*Gt333 + Gt212*gt23L*Gt333 + gt13L*Gt323*Gt333 + Gt112*(2*gt11L*Gt133 + Gt113*gt13L + gt12L*Gt233 + gt13L*Gt333) + gt12L*(2*Gt133*Gt212 + Gt222*Gt233 + Gt223*Gt333) + Gt113*Gt312*gt33L + - Gt213*Gt322*gt33L + Gt313*Gt323*gt33L + Gt312*Gt333*gt33L)*gtu32 + - gtu21*(2*Gt123*gt12L*Gt211 + Gt112*gt13L*Gt212 + gt12L*Gt212*Gt223 + + Gt213*Gt322*gt33L + Gt313*Gt323*gt33L + Gt312*Gt333*gt33L)*gtu23 + + gtu12*(2*Gt123*gt12L*Gt211 + Gt112*gt13L*Gt212 + gt12L*Gt212*Gt223 + Gt211*Gt223*gt22L + Gt112*Gt211*gt23L + 2*Gt123*gt13L*Gt311 + Gt223*gt23L*Gt311 + Gt113*gt13L*Gt312 + gt13L*Gt223*Gt312 + Gt213*gt23L*Gt312 + gt12L*Gt213*Gt323 + Gt211*gt23L*Gt323 + gt13L*Gt313*Gt323 + gt11L*(2*Gt111*Gt123 + Gt112*Gt223 + Gt113*Gt323) + Gt111*(Gt112*gt13L + gt12L*Gt223 + gt13L*Gt323) + Gt112*Gt311*gt33L + Gt212*Gt312*gt33L + Gt312*Gt313*gt33L + Gt311*Gt323*gt33L + - gt23L*SQR(Gt212))) + 2*gtu32*(Gt123*gt13L*Gt212 + 2*Gt123*gt12L*Gt213 + + gt23L*SQR(Gt212))) + 2*gtu23*(Gt123*gt13L*Gt212 + 2*Gt123*gt12L*Gt213 + Gt113*gt12L*Gt223 + Gt213*Gt223*gt22L + Gt212*Gt223*gt23L + Gt133*gt13L*Gt312 + Gt233*gt23L*Gt312 + 2*Gt123*gt13L*Gt313 + Gt223*gt23L*Gt313 + Gt113*gt13L*Gt323 + gt13L*Gt223*Gt323 + @@ -576,14 +600,14 @@ void ML_BSSN_O2_constraints_Body(cGH const * restrict const cctkGH, int const di Gt211*gt23L*Gt313 + gt11L*(2*Gt111*Gt113 + Gt112*Gt213 + Gt113*Gt313) + Gt211*Gt312*gt33L + 2*Gt311*Gt313*gt33L + Gt111*(gt12L*Gt213 + Gt211*gt23L + gt13L*Gt313 + Gt311*gt33L) + gt13L*SQR(Gt111) + - gt13L*SQR(Gt313)) + 2*gtu31*(Gt112*gt13L*Gt213 + Gt112*gt11L*Gt233 + + gt13L*SQR(Gt313)) + 2*gtu13*(Gt112*gt13L*Gt213 + Gt112*gt11L*Gt233 + Gt211*gt22L*Gt233 + Gt113*Gt211*gt23L + Gt212*Gt213*gt23L + 2*Gt133*gt13L*Gt311 + Gt233*gt23L*Gt311 + gt13L*Gt233*Gt312 + Gt113*gt13L*Gt313 + Gt213*gt23L*Gt313 + Gt113*gt11L*Gt333 + Gt211*gt23L*Gt333 + gt13L*Gt313*Gt333 + Gt111*(2*gt11L*Gt133 + Gt113*gt13L + gt12L*Gt233 + gt13L*Gt333) + gt12L*(2*Gt133*Gt211 + Gt212*Gt233 + Gt213*Gt333) + Gt113*Gt311*gt33L + Gt213*Gt312*gt33L + - Gt311*Gt333*gt33L + gt33L*SQR(Gt313)) + 2*gtu31*(Gt123*gt13L*Gt211 + + Gt311*Gt333*gt33L + gt33L*SQR(Gt313)) + 2*gtu13*(Gt123*gt13L*Gt211 + 3*Gt113*gt12L*Gt213 + gt12L*Gt213*Gt223 + Gt211*Gt223*gt23L + Gt133*gt13L*Gt311 + Gt233*gt23L*Gt311 + 3*Gt113*gt13L*Gt313 + gt12L*Gt233*Gt313 + 2*Gt213*gt23L*Gt313 + gt13L*Gt213*Gt323 + @@ -604,58 +628,58 @@ void ML_BSSN_O2_constraints_Body(cGH const * restrict const cctkGH, int const di Gt113*(2*gt11L*Gt133 + gt12L*Gt233 + Gt213*gt23L + gt13L*Gt333 + Gt313*gt33L) + gt13L*SQR(Gt113) + gt13L*SQR(Gt333))); - CCTK_REAL Rt22 = 4*(Gt122*gt12L*Gt212*gtu21 + Gt112*gt12L*Gt222*gtu21 - + Gt122*gt12L*Gt222*gtu22 + Gt123*gt12L*Gt212*gtu31 + - Gt123*gt12L*Gt222*gtu32 + Gt123*gt12L*Gt223*gtu33) - - gtu11*khalf*PDstandardNth11gt22 + gtu21*(6*Gt212*Gt222*gt22L + + CCTK_REAL Rt22 = 4*(Gt122*gt12L*Gt212*gtu12 + Gt112*gt12L*Gt222*gtu12 + + Gt123*gt12L*Gt212*gtu13 + Gt122*gt12L*Gt222*gtu22 + + Gt123*gt12L*Gt222*gtu23 + Gt123*gt12L*Gt223*gtu33) - + gtu11*khalf*PDstandardNth11gt22 + gtu12*(6*Gt212*Gt222*gt22L + 2*Gt122*gt23L*Gt311 + 2*Gt122*gt13L*Gt312 + 4*Gt222*gt23L*Gt312 + 2*Gt113*gt12L*Gt322 + 2*gt23L*Gt312*Gt323 + 2*Gt312*Gt322*gt33L - - PDstandardNth12gt22) + gtu31*(6*Gt212*Gt223*gt22L + 2*Gt123*gt13L*Gt312 + PDstandardNth12gt22) + gtu13*(6*Gt212*Gt223*gt22L + 2*Gt123*gt13L*Gt312 + 2*Gt112*gt23L*Gt313 + 2*Gt113*gt12L*Gt323 + 2*gt23L*Gt312*Gt333 + 2*Gt312*Gt323*gt33L - PDstandardNth13gt22) - - gtu22*khalf*PDstandardNth22gt22 + gtu32*(4*Gt122*gt12L*Gt223 + + gtu22*khalf*PDstandardNth22gt22 + gtu23*(4*Gt122*gt12L*Gt223 + 2*Gt123*Gt212*gt22L + 2*gt12L*Gt133*Gt322 + 4*Gt223*gt23L*Gt322 + 2*Gt123*gt12L*Gt323 + 4*Gt222*gt23L*Gt323 + 2*gt23L*Gt322*Gt333 + - 2*Gt322*Gt323*gt33L - PDstandardNth23gt22) + gt12L*(2*Gt111*Gt123*gtu31 - + 4*Gt112*Gt223*gtu31 + 2*Gt113*Gt122*gtu32 + 2*Gt113*Gt123*gtu33 + - PDstandardNth2Xt1) + gt22L*(2*Gt122*Gt213*gtu32 + 6*Gt222*Gt223*gtu32 + - 2*Gt123*Gt213*gtu33 + PDstandardNth2Xt2) + gt23L*(4*Gt212*Gt322*gtu21 + - 2*Gt313*Gt322*gtu21 + 4*Gt222*Gt322*gtu22 + 2*Gt123*Gt311*gtu31 + - 4*Gt212*Gt323*gtu31 + 2*Gt313*Gt323*gtu31 + 2*Gt122*Gt313*gtu32 + - 2*Gt123*Gt313*gtu33 + 4*Gt223*Gt323*gtu33 + 2*Gt323*Gt333*gtu33 + - PDstandardNth2Xt3) - gtu33*khalf*PDstandardNth33gt22 + Gt212*gt22L*Xt1L - + Gt112*(2*Gt111*gt12L*gtu11 + 4*gt12L*Gt212*gtu11 + - 2*gt11L*Gt122*gtu21 + 2*Gt122*gt12L*gtu22 + 2*gt11L*Gt123*gtu31 + - 2*Gt123*gt12L*gtu32 + gt12L*Xt1L) + Gt312*(2*Gt213*gt22L*gtu11 + - 4*Gt212*gt23L*gtu11 + 2*gt23L*Gt313*gtu11 + 2*Gt123*gt12L*gtu21 + - 2*Gt122*gt23L*gtu22 + 2*gt12L*Gt133*gtu31 + 2*gt22L*Gt233*gtu31 + - 4*Gt223*gt23L*gtu31 + 2*Gt123*gt23L*gtu32 + gt23L*Xt1L) + - Gt122*gt12L*Xt2L + Gt222*gt22L*Xt2L + gt23L*Gt322*Xt2L + - Gt123*gt12L*Xt3L + Gt223*gt22L*Xt3L + gt23L*Gt323*Xt3L + - gt11L*gtu11*SQR(Gt112) + 2*(Gt112*Gt211*gt22L*gtu11 + - Gt112*gt23L*Gt311*gtu11 + Gt113*gt12L*Gt312*gtu11 + - Gt112*gt13L*Gt312*gtu11 + Gt111*Gt122*gt12L*gtu21 + - Gt122*Gt211*gt22L*gtu21 + Gt112*Gt212*gt22L*gtu21 + - Gt223*gt22L*Gt312*gtu21 + Gt112*gt23L*Gt312*gtu21 + - Gt112*gt13L*Gt322*gtu21 + Gt213*gt22L*Gt322*gtu21 + - Gt122*Gt212*gt22L*gtu22 + Gt123*gt12L*Gt322*gtu22 + + 2*Gt322*Gt323*gt33L - PDstandardNth23gt22) + gt12L*(2*Gt111*Gt123*gtu13 + + 4*Gt112*Gt223*gtu13 + 2*Gt123*Gt322*gtu22 + 2*Gt113*Gt122*gtu23 + + 2*Gt113*Gt123*gtu33 + PDstandardNth2Xt1) + gt22L*(2*Gt122*Gt213*gtu23 + + 6*Gt222*Gt223*gtu23 + 2*Gt123*Gt213*gtu33 + PDstandardNth2Xt2) + + gt23L*(4*Gt212*Gt322*gtu12 + 2*Gt313*Gt322*gtu12 + 2*Gt123*Gt311*gtu13 + + 4*Gt212*Gt323*gtu13 + 2*Gt313*Gt323*gtu13 + 4*Gt222*Gt322*gtu22 + + 2*Gt122*Gt313*gtu23 + 2*Gt123*Gt313*gtu33 + 4*Gt223*Gt323*gtu33 + + 2*Gt323*Gt333*gtu33 + PDstandardNth2Xt3) - + gtu33*khalf*PDstandardNth33gt22 + Gt212*gt22L*Xt1L + + Gt112*(2*Gt111*gt12L*gtu11 + 4*gt12L*Gt212*gtu11 + 2*gt11L*Gt122*gtu12 + + 2*gt11L*Gt123*gtu13 + 2*Gt122*gt12L*gtu22 + 2*Gt123*gt12L*gtu23 + + gt12L*Xt1L) + Gt312*(2*Gt213*gt22L*gtu11 + 4*Gt212*gt23L*gtu11 + + 2*gt23L*Gt313*gtu11 + 2*Gt123*gt12L*gtu12 + 2*gt12L*Gt133*gtu13 + + 2*gt22L*Gt233*gtu13 + 4*Gt223*gt23L*gtu13 + 2*Gt122*gt23L*gtu22 + + 2*Gt123*gt23L*gtu23 + gt23L*Xt1L) + Gt122*gt12L*Xt2L + Gt222*gt22L*Xt2L + + gt23L*Gt322*Xt2L + Gt123*gt12L*Xt3L + Gt223*gt22L*Xt3L + + gt23L*Gt323*Xt3L + gt11L*gtu11*SQR(Gt112) + 2*(Gt112*Gt211*gt22L*gtu11 + + Gt112*gt23L*Gt311*gtu11 + Gt113*gt12L*Gt312*gtu11 + + Gt112*gt13L*Gt312*gtu11 + Gt111*Gt122*gt12L*gtu12 + + Gt122*Gt211*gt22L*gtu12 + Gt112*Gt212*gt22L*gtu12 + + Gt223*gt22L*Gt312*gtu12 + Gt112*gt23L*Gt312*gtu12 + + Gt112*gt13L*Gt322*gtu12 + Gt213*gt22L*Gt322*gtu12 + + Gt112*Gt113*gt12L*gtu13 + Gt123*Gt211*gt22L*gtu13 + + Gt112*Gt213*gt22L*gtu13 + Gt112*gt13L*Gt323*gtu13 + + Gt213*gt22L*Gt323*gtu13 + Gt122*Gt212*gt22L*gtu22 + Gt122*gt13L*Gt322*gtu22 + Gt223*gt22L*Gt322*gtu22 + - gt23L*Gt322*Gt323*gtu22 + Gt112*Gt113*gt12L*gtu31 + - Gt123*Gt211*gt22L*gtu31 + Gt112*Gt213*gt22L*gtu31 + - Gt112*gt13L*Gt323*gtu31 + Gt213*gt22L*Gt323*gtu31 + - gt11L*Gt122*Gt123*gtu32 + Gt123*gt13L*Gt322*gtu32 + - gt22L*Gt233*Gt322*gtu32 + Gt122*gt13L*Gt323*gtu32 + - Gt223*gt22L*Gt323*gtu32 + gt12L*Gt133*Gt323*gtu33 + - Gt123*gt13L*Gt323*gtu33 + gt22L*Gt233*Gt323*gtu33 + - gt12L*gtu21*SQR(Gt112)) + gt11L*gtu22*SQR(Gt122) + - gt11L*gtu33*SQR(Gt123) + 3*gt22L*gtu11*SQR(Gt212) + - 3*gt22L*gtu22*SQR(Gt222) + 3*gt22L*gtu33*SQR(Gt223) + - gt33L*gtu11*SQR(Gt312) + gt33L*gtu22*SQR(Gt322) + - 2*gt23L*gtu32*SQR(Gt323) + gt33L*gtu33*SQR(Gt323); + gt23L*Gt322*Gt323*gtu22 + gt11L*Gt122*Gt123*gtu23 + + Gt123*gt13L*Gt322*gtu23 + gt22L*Gt233*Gt322*gtu23 + + Gt122*gt13L*Gt323*gtu23 + Gt223*gt22L*Gt323*gtu23 + + gt12L*Gt133*Gt323*gtu33 + Gt123*gt13L*Gt323*gtu33 + + gt22L*Gt233*Gt323*gtu33 + gt12L*gtu12*SQR(Gt112)) + + gt11L*gtu22*SQR(Gt122) + gt11L*gtu33*SQR(Gt123) + + 3*gt22L*gtu11*SQR(Gt212) + 3*gt22L*gtu22*SQR(Gt222) + + 3*gt22L*gtu33*SQR(Gt223) + gt33L*gtu11*SQR(Gt312) + + gt33L*gtu22*SQR(Gt322) + 2*gt23L*gtu23*SQR(Gt323) + + gt33L*gtu33*SQR(Gt323); CCTK_REAL Rt23 = khalf*(-(gtu11*PDstandardNth11gt23) - - 2*gtu21*PDstandardNth12gt23 - 2*gtu31*PDstandardNth13gt23 - - gtu22*PDstandardNth22gt23 - 2*gtu32*PDstandardNth23gt23 + + 2*gtu12*PDstandardNth12gt23 - 2*gtu13*PDstandardNth13gt23 - + gtu22*PDstandardNth22gt23 - 2*gtu23*PDstandardNth23gt23 + gt13L*PDstandardNth2Xt1 + gt23L*PDstandardNth2Xt2 + gt33L*PDstandardNth2Xt3 - gtu33*PDstandardNth33gt23 + gt12L*PDstandardNth3Xt1 + gt22L*PDstandardNth3Xt2 + @@ -671,7 +695,7 @@ void ML_BSSN_O2_constraints_Body(cGH const * restrict const cctkGH, int const di 2*Gt223*gt23L*Gt312 + Gt113*gt13L*Gt322 + Gt213*gt23L*Gt322 + Gt113*gt12L*Gt323 + Gt112*gt13L*Gt323 + Gt213*gt22L*Gt323 + Gt212*gt23L*Gt323 + gt23L*Gt313*Gt323 + Gt122*Gt311*gt33L + - Gt222*Gt312*gt33L + Gt313*Gt322*gt33L + Gt312*Gt323*gt33L)*gtu21 + + Gt222*Gt312*gt33L + Gt313*Gt322*gt33L + Gt312*Gt323*gt33L)*gtu12 + (Gt112*gt11L*Gt133 + Gt111*gt12L*Gt133 + Gt111*Gt123*gt13L + gt12L*Gt133*Gt212 + Gt112*gt13L*Gt223 + Gt133*Gt211*gt22L + 2*Gt112*gt12L*Gt233 + 2*Gt212*gt22L*Gt233 + Gt123*Gt211*gt23L + @@ -679,8 +703,8 @@ void ML_BSSN_O2_constraints_Body(cGH const * restrict const cctkGH, int const di 2*Gt233*gt23L*Gt312 + Gt113*gt13L*Gt323 + Gt213*gt23L*Gt323 + Gt113*gt12L*Gt333 + Gt112*gt13L*Gt333 + Gt213*gt22L*Gt333 + Gt212*gt23L*Gt333 + gt23L*Gt313*Gt333 + Gt123*Gt311*gt33L + - Gt223*Gt312*gt33L + Gt313*Gt323*gt33L + Gt312*Gt333*gt33L)*gtu31 + - gtu21*(Gt113*gt11L*Gt122 + Gt122*gt13L*Gt212 + 2*Gt122*gt12L*Gt213 + + Gt223*Gt312*gt33L + Gt313*Gt323*gt33L + Gt312*Gt333*gt33L)*gtu13 + + gtu12*(Gt113*gt11L*Gt122 + Gt122*gt13L*Gt212 + 2*Gt122*gt12L*Gt213 + Gt113*gt12L*Gt222 + Gt113*Gt212*gt22L + 2*Gt213*Gt222*gt22L + Gt212*Gt222*gt23L + Gt123*gt13L*Gt312 + Gt113*gt23L*Gt312 + Gt223*gt23L*Gt312 + Gt123*gt12L*Gt313 + Gt122*gt13L*Gt313 + @@ -688,7 +712,7 @@ void ML_BSSN_O2_constraints_Body(cGH const * restrict const cctkGH, int const di 2*Gt213*gt23L*Gt322 + gt23L*Gt313*Gt323 + Gt212*Gt322*gt33L + Gt313*Gt322*gt33L + Gt312*Gt323*gt33L + Gt112*(Gt113*gt12L + Gt212*gt23L + Gt312*gt33L) + gt13L*SQR(Gt112))) + - 2*gtu31*(2*Gt213*Gt223*gt22L + Gt112*Gt213*gt23L + Gt212*Gt223*gt23L + + 2*gtu13*(2*Gt213*Gt223*gt22L + Gt112*Gt213*gt23L + Gt212*Gt223*gt23L + Gt133*gt13L*Gt312 + Gt233*gt23L*Gt312 + gt12L*Gt133*Gt313 + gt22L*Gt233*Gt313 + Gt223*gt23L*Gt313 + Gt123*(2*gt12L*Gt213 + gt13L*(Gt212 + Gt313)) + 2*Gt213*gt23L*Gt323 + Gt113*(gt11L*Gt123 + @@ -709,7 +733,7 @@ void ML_BSSN_O2_constraints_Body(cGH const * restrict const cctkGH, int const di Gt123*gt12L*Gt323 + Gt122*gt13L*Gt323 + Gt223*gt22L*Gt323 + Gt222*gt23L*Gt323 + Gt122*Gt312*gt33L + Gt222*Gt322*gt33L + 2*Gt322*Gt323*gt33L + gt23L*SQR(Gt222) + gt23L*SQR(Gt323)) + - 2*gtu32*(gt11L*Gt122*Gt133 + Gt112*gt12L*Gt133 + Gt112*Gt123*gt13L + + 2*gtu23*(gt11L*Gt122*Gt133 + Gt112*gt12L*Gt133 + Gt112*Gt123*gt13L + gt12L*Gt133*Gt222 + Gt122*gt13L*Gt223 + Gt133*Gt212*gt22L + 2*Gt122*gt12L*Gt233 + 2*Gt222*gt22L*Gt233 + Gt123*Gt212*gt23L + Gt222*Gt223*gt23L + Gt133*gt23L*Gt312 + Gt133*gt13L*Gt322 + @@ -717,7 +741,7 @@ void ML_BSSN_O2_constraints_Body(cGH const * restrict const cctkGH, int const di Gt123*gt12L*Gt333 + Gt122*gt13L*Gt333 + Gt223*gt22L*Gt333 + Gt222*gt23L*Gt333 + gt23L*Gt323*Gt333 + Gt123*Gt312*gt33L + Gt223*Gt322*gt33L + Gt322*Gt333*gt33L + gt33L*SQR(Gt323)) + - 2*gtu32*(Gt113*Gt123*gt12L + Gt113*Gt122*gt13L + Gt123*gt13L*Gt222 + + 2*gtu23*(Gt113*Gt123*gt12L + Gt113*Gt122*gt13L + Gt123*gt13L*Gt222 + 3*Gt123*gt12L*Gt223 + Gt123*Gt213*gt22L + Gt122*Gt213*gt23L + Gt222*Gt223*gt23L + Gt123*gt23L*Gt313 + Gt133*gt13L*Gt322 + Gt233*gt23L*Gt322 + gt12L*Gt133*Gt323 + 2*Gt123*gt13L*Gt323 + @@ -732,57 +756,56 @@ void ML_BSSN_O2_constraints_Body(cGH const * restrict const cctkGH, int const di Gt223*gt23L*Gt333 + Gt123*Gt313*gt33L + Gt223*Gt323*gt33L + 2*Gt323*Gt333*gt33L + gt23L*SQR(Gt223) + gt23L*SQR(Gt333))); - CCTK_REAL Rt33 = 4*(Gt123*gt13L*Gt323*gtu22 + Gt223*gt23L*Gt323*gtu22 - + Gt133*gt13L*Gt313*gtu31 + Gt233*gt23L*Gt313*gtu31 + - Gt113*gt13L*Gt333*gtu31 + Gt133*gt13L*Gt323*gtu32 + - Gt233*gt23L*Gt323*gtu32 + Gt123*gt13L*Gt333*gtu32 + - Gt133*gt13L*Gt333*gtu33) + gtu21*(2*Gt212*Gt223*gt23L + + CCTK_REAL Rt33 = 4*(Gt133*gt13L*Gt313*gtu13 + Gt233*gt23L*Gt313*gtu13 + + Gt113*gt13L*Gt333*gtu13 + Gt213*gt23L*Gt333*gtu13 + + Gt123*gt13L*Gt323*gtu22 + Gt133*gt13L*Gt323*gtu23 + + Gt123*gt13L*Gt333*gtu23 + Gt223*gt23L*Gt333*gtu23 + + Gt133*gt13L*Gt333*gtu33) + gtu12*(2*Gt212*Gt223*gt23L + 4*Gt123*gt13L*Gt313 + 4*Gt223*gt23L*Gt313 + 4*Gt113*gt13L*Gt323 + - 4*Gt213*gt23L*Gt323 + 2*Gt123*Gt311*gt33L - PDstandardNth12gt33) + - gtu31*(4*Gt213*gt23L*Gt333 + 2*Gt233*Gt312*gt33L + 6*Gt313*Gt333*gt33L - - PDstandardNth13gt33) - gtu22*khalf*PDstandardNth22gt33 + - gtu32*(4*Gt223*gt23L*Gt333 + 2*Gt123*Gt313*gt33L + 6*Gt323*Gt333*gt33L - - PDstandardNth23gt33) - gtu33*khalf*PDstandardNth33gt33 + + 4*Gt213*gt23L*Gt323 + 2*Gt123*Gt311*gt33L - PDstandardNth12gt33) - + gtu13*PDstandardNth13gt33 - gtu22*khalf*PDstandardNth22gt33 - + gtu23*PDstandardNth23gt33 - gtu33*khalf*PDstandardNth33gt33 + gt13L*PDstandardNth3Xt1 + gt23L*PDstandardNth3Xt2 + - gt33L*(2*Gt213*Gt322*gtu21 + 6*Gt313*Gt323*gtu21 + 2*Gt123*Gt312*gtu22 - + 2*Gt133*Gt311*gtu31 + 2*Gt133*Gt312*gtu32 + 2*Gt133*Gt313*gtu33 + - PDstandardNth3Xt3) + Gt113*gt13L*Xt1L + Gt213*gt23L*Xt1L + - Gt313*gt33L*Xt1L + Gt123*gt13L*Xt2L + Gt223*gt23L*Xt2L + - Gt323*gt33L*Xt2L + Gt133*gt13L*Xt3L + Gt333*gt33L*Xt3L + - Gt233*(4*gt23L*Gt333*gtu33 + 2*Gt323*gt33L*gtu33 + gt23L*Xt3L) + - gtu11*(2*Gt212*Gt213*gt23L + 4*Gt113*gt13L*Gt313 + 4*Gt213*gt23L*Gt313 - + 2*Gt113*Gt311*gt33L + 2*Gt213*Gt312*gt33L - khalf*PDstandardNth11gt33 - + gt11L*SQR(Gt113)) + 2*(Gt111*Gt113*gt13L*gtu11 + - Gt113*gt12L*Gt213*gtu11 + Gt112*gt13L*Gt213*gtu11 + - Gt113*Gt211*gt23L*gtu11 + Gt113*gt11L*Gt123*gtu21 + - Gt112*Gt113*gt13L*gtu21 + Gt111*Gt123*gt13L*gtu21 + - Gt123*gt12L*Gt213*gtu21 + Gt122*gt13L*Gt213*gtu21 + - Gt113*gt12L*Gt223*gtu21 + Gt112*gt13L*Gt223*gtu21 + - Gt213*Gt223*gt22L*gtu21 + Gt123*Gt211*gt23L*gtu21 + - Gt113*Gt212*gt23L*gtu21 + Gt213*Gt222*gt23L*gtu21 + - Gt113*Gt312*gt33L*gtu21 + Gt223*Gt312*gt33L*gtu21 + + gt33L*(2*Gt213*Gt322*gtu12 + 6*Gt313*Gt323*gtu12 + 2*Gt133*Gt311*gtu13 + + 2*Gt213*Gt323*gtu13 + 6*Gt313*Gt333*gtu13 + 2*Gt123*Gt312*gtu22 + + 2*Gt133*Gt312*gtu23 + 2*Gt133*Gt313*gtu33 + PDstandardNth3Xt3) + + Gt113*gt13L*Xt1L + Gt213*gt23L*Xt1L + Gt313*gt33L*Xt1L + + Gt123*gt13L*Xt2L + Gt223*(4*gt23L*Gt323*gtu22 + 2*Gt322*gt33L*gtu22 + + 2*gt12L*Gt133*gtu23 + 2*Gt233*gt23L*gtu33 + gt23L*Xt2L) + + Gt323*(2*Gt223*gt33L*gtu23 + 6*Gt333*gt33L*gtu23 + 2*Gt233*gt33L*gtu33 + + gt33L*Xt2L) + Gt133*gt13L*Xt3L + Gt333*gt33L*Xt3L + + Gt233*(2*Gt222*gt23L*gtu23 + 4*gt23L*Gt323*gtu23 + 2*gt12L*Gt133*gtu33 + + 4*gt23L*Gt333*gtu33 + gt23L*Xt3L) + gtu11*(2*Gt212*Gt213*gt23L + + 4*Gt113*gt13L*Gt313 + 4*Gt213*gt23L*Gt313 + 2*Gt113*Gt311*gt33L + + 2*Gt213*Gt312*gt33L - khalf*PDstandardNth11gt33 + gt11L*SQR(Gt113)) + + 2*(Gt111*Gt113*gt13L*gtu11 + Gt113*gt12L*Gt213*gtu11 + + Gt112*gt13L*Gt213*gtu11 + Gt113*Gt211*gt23L*gtu11 + + Gt113*gt11L*Gt123*gtu12 + Gt112*Gt113*gt13L*gtu12 + + Gt111*Gt123*gt13L*gtu12 + Gt123*gt12L*Gt213*gtu12 + + Gt122*gt13L*Gt213*gtu12 + Gt113*gt12L*Gt223*gtu12 + + Gt112*gt13L*Gt223*gtu12 + Gt213*Gt223*gt22L*gtu12 + + Gt123*Gt211*gt23L*gtu12 + Gt113*Gt212*gt23L*gtu12 + + Gt213*Gt222*gt23L*gtu12 + Gt113*Gt312*gt33L*gtu12 + + Gt223*Gt312*gt33L*gtu12 + Gt113*gt11L*Gt133*gtu13 + + Gt111*Gt133*gt13L*gtu13 + gt12L*Gt133*Gt213*gtu13 + + Gt123*gt13L*Gt213*gtu13 + Gt113*gt12L*Gt233*gtu13 + + Gt112*gt13L*Gt233*gtu13 + Gt213*gt22L*Gt233*gtu13 + + Gt133*Gt211*gt23L*gtu13 + Gt113*Gt213*gt23L*gtu13 + + Gt213*Gt223*gt23L*gtu13 + Gt212*Gt233*gt23L*gtu13 + + Gt233*Gt312*gt33L*gtu13 + Gt113*Gt313*gt33L*gtu13 + Gt112*Gt123*gt13L*gtu22 + Gt123*gt12L*Gt223*gtu22 + Gt122*gt13L*Gt223*gtu22 + Gt123*Gt212*gt23L*gtu22 + - Gt222*Gt223*gt23L*gtu22 + Gt223*Gt322*gt33L*gtu22 + - Gt113*gt11L*Gt133*gtu31 + Gt111*Gt133*gt13L*gtu31 + - gt12L*Gt133*Gt213*gtu31 + Gt123*gt13L*Gt213*gtu31 + - Gt113*gt12L*Gt233*gtu31 + Gt112*gt13L*Gt233*gtu31 + - Gt213*gt22L*Gt233*gtu31 + Gt133*Gt211*gt23L*gtu31 + - Gt113*Gt213*gt23L*gtu31 + Gt213*Gt223*gt23L*gtu31 + - Gt212*Gt233*gt23L*gtu31 + Gt113*Gt313*gt33L*gtu31 + - Gt213*Gt323*gt33L*gtu31 + gt11L*Gt123*Gt133*gtu32 + - Gt113*Gt123*gt13L*gtu32 + Gt112*Gt133*gt13L*gtu32 + - gt12L*Gt133*Gt223*gtu32 + Gt123*gt13L*Gt223*gtu32 + - Gt123*gt12L*Gt233*gtu32 + Gt122*gt13L*Gt233*gtu32 + - Gt223*gt22L*Gt233*gtu32 + Gt133*Gt212*gt23L*gtu32 + - Gt123*Gt213*gt23L*gtu32 + Gt222*Gt233*gt23L*gtu32 + - Gt233*Gt322*gt33L*gtu32 + Gt223*Gt323*gt33L*gtu32 + - Gt113*Gt133*gt13L*gtu33 + gt12L*Gt133*Gt233*gtu33 + - Gt123*gt13L*Gt233*gtu33 + Gt133*Gt213*gt23L*gtu33 + - Gt223*Gt233*gt23L*gtu33 + gt13L*gtu31*SQR(Gt113)) + + Gt222*Gt223*gt23L*gtu22 + gt11L*Gt123*Gt133*gtu23 + + Gt113*Gt123*gt13L*gtu23 + Gt112*Gt133*gt13L*gtu23 + + Gt123*gt13L*Gt223*gtu23 + Gt123*gt12L*Gt233*gtu23 + + Gt122*gt13L*Gt233*gtu23 + Gt223*gt22L*Gt233*gtu23 + + Gt133*Gt212*gt23L*gtu23 + Gt123*Gt213*gt23L*gtu23 + + Gt123*Gt313*gt33L*gtu23 + Gt233*Gt322*gt33L*gtu23 + + Gt113*Gt133*gt13L*gtu33 + Gt123*gt13L*Gt233*gtu33 + + Gt133*Gt213*gt23L*gtu33 + gt13L*gtu13*SQR(Gt113)) + gt11L*gtu22*SQR(Gt123) + gt11L*gtu33*SQR(Gt133) + gt22L*gtu11*SQR(Gt213) + gt22L*gtu22*SQR(Gt223) + - 2*gt23L*gtu32*SQR(Gt223) + gt22L*gtu33*SQR(Gt233) + + 2*gt23L*gtu23*SQR(Gt223) + gt22L*gtu33*SQR(Gt233) + 3*gt33L*gtu11*SQR(Gt313) + 3*gt33L*gtu22*SQR(Gt323) + 3*gt33L*gtu33*SQR(Gt333); @@ -821,38 +844,38 @@ void ML_BSSN_O2_constraints_Body(cGH const * restrict const cctkGH, int const di Gt333*PDstandardNth3phi)) + fac2*SQR(PDstandardNth3phi); CCTK_REAL Rphi11 = -2*(cdphi211 + 2*(-1 + gt11L*gtu11)*SQR(cdphi1) + - gt11L*(cdphi211*gtu11 + 4*(cdphi1*(cdphi2*gtu21 + cdphi3*gtu31) + - cdphi2*cdphi3*gtu32) + cdphi233*gtu33 + gtu22*(cdphi222 + - 2*SQR(cdphi2)) + 2*(cdphi212*gtu21 + cdphi213*gtu31 + cdphi223*gtu32 + + 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 Rphi12 = -2*(cdphi212 + cdphi1*(cdphi2*(-2 + 4*gt12L*gtu21) - + 4*cdphi3*gt12L*gtu31) + gt12L*(cdphi211*gtu11 + 4*cdphi2*cdphi3*gtu32 - + 2*(cdphi212*gtu21 + cdphi213*gtu31 + cdphi223*gtu32 + + 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 Rphi13 = -2*(cdphi213 + cdphi1*(4*cdphi2*gt13L*gtu21 + - cdphi3*(-2 + 4*gt13L*gtu31)) + gt13L*(cdphi211*gtu11 + - 4*cdphi2*cdphi3*gtu32 + 2*(cdphi212*gtu21 + cdphi213*gtu31 + - cdphi223*gtu32 + gtu11*SQR(cdphi1)) + gtu22*(cdphi222 + 2*SQR(cdphi2)) + 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 Rphi22 = -2*(cdphi222 + 2*(-1 + gt22L*gtu22)*SQR(cdphi2) + - gt22L*(cdphi222*gtu22 + 4*(cdphi1*cdphi3*gtu31 + cdphi2*(cdphi1*gtu21 + - cdphi3*gtu32)) + cdphi233*gtu33 + gtu11*(cdphi211 + 2*SQR(cdphi1)) + - 2*(cdphi212*gtu21 + cdphi213*gtu31 + cdphi223*gtu32 + + 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 Rphi23 = -2*(cdphi223 + cdphi2*(4*cdphi1*gt23L*gtu21 + - cdphi3*(-2 + 4*gt23L*gtu32)) + gt23L*(cdphi222*gtu22 + - 4*cdphi1*cdphi3*gtu31 + gtu11*(cdphi211 + 2*SQR(cdphi1)) + - 2*(cdphi212*gtu21 + cdphi213*gtu31 + cdphi223*gtu32 + - gtu22*SQR(cdphi2)) + gtu33*(cdphi233 + 2*SQR(cdphi3)))); + 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 Rphi33 = -2*(cdphi233 + gt33L*((4*cdphi1*cdphi2 + - 2*cdphi212)*gtu21 + 4*cdphi3*(cdphi1*gtu31 + cdphi2*gtu32) + - 2*(cdphi213*gtu31 + cdphi223*gtu32) + cdphi233*gtu33 + gtu11*(cdphi211 + 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)); @@ -862,13 +885,13 @@ void ML_BSSN_O2_constraints_Body(cGH const * restrict const cctkGH, int const di CCTK_REAL gu11 = em4phi*gtu11; - CCTK_REAL gu21 = em4phi*gtu21; + CCTK_REAL gu12 = em4phi*gtu12; - CCTK_REAL gu31 = em4phi*gtu31; + CCTK_REAL gu13 = em4phi*gtu13; CCTK_REAL gu22 = em4phi*gtu22; - CCTK_REAL gu32 = em4phi*gtu32; + CCTK_REAL gu23 = em4phi*gtu23; CCTK_REAL gu33 = em4phi*gtu33; @@ -884,26 +907,26 @@ void ML_BSSN_O2_constraints_Body(cGH const * restrict const cctkGH, int const di CCTK_REAL R33 = Rphi33 + Rt33; - CCTK_REAL trR = gu11*R11 + gu22*R22 + 2*(gu21*R12 + gu31*R13 + - gu32*R23) + gu33*R33; + CCTK_REAL trR = gu11*R11 + gu22*R22 + 2*(gu12*R12 + gu13*R13 + + gu23*R23) + gu33*R33; - CCTK_REAL Atm11 = At11L*gtu11 + At12L*gtu21 + At13L*gtu31; + CCTK_REAL Atm11 = At11L*gtu11 + At12L*gtu12 + At13L*gtu13; - CCTK_REAL Atm21 = At11L*gtu21 + At12L*gtu22 + At13L*gtu32; + CCTK_REAL Atm21 = At11L*gtu12 + At12L*gtu22 + At13L*gtu23; - CCTK_REAL Atm31 = At11L*gtu31 + At12L*gtu32 + At13L*gtu33; + CCTK_REAL Atm31 = At11L*gtu13 + At12L*gtu23 + At13L*gtu33; - CCTK_REAL Atm12 = At12L*gtu11 + At22L*gtu21 + At23L*gtu31; + CCTK_REAL Atm12 = At12L*gtu11 + At22L*gtu12 + At23L*gtu13; - CCTK_REAL Atm22 = At12L*gtu21 + At22L*gtu22 + At23L*gtu32; + CCTK_REAL Atm22 = At12L*gtu12 + At22L*gtu22 + At23L*gtu23; - CCTK_REAL Atm32 = At12L*gtu31 + At22L*gtu32 + At23L*gtu33; + CCTK_REAL Atm32 = At12L*gtu13 + At22L*gtu23 + At23L*gtu33; - CCTK_REAL Atm13 = At13L*gtu11 + At23L*gtu21 + At33L*gtu31; + CCTK_REAL Atm13 = At13L*gtu11 + At23L*gtu12 + At33L*gtu13; - CCTK_REAL Atm23 = At13L*gtu21 + At23L*gtu22 + At33L*gtu32; + CCTK_REAL Atm23 = At13L*gtu12 + At23L*gtu22 + At33L*gtu23; - CCTK_REAL Atm33 = At13L*gtu31 + At23L*gtu32 + At33L*gtu33; + CCTK_REAL Atm33 = At13L*gtu13 + At23L*gtu23 + At33L*gtu33; CCTK_REAL rho = pow(alphaL,-2)*(eTttL - 2*(beta2L*eTtyL + beta3L*eTtzL) + 2*(beta1L*(-eTtxL + beta2L*eTxyL + beta3L*eTxzL) + @@ -925,73 +948,73 @@ void ML_BSSN_O2_constraints_Body(cGH const * restrict const cctkGH, int const di 0.6666666666666666666666666666666666666667*SQR(trKL); CCTK_REAL M1L = -2.*((At12L*Gt211 + At13L*Gt311)*gtu11 + - At11L*Gt123*gtu32) + At12L*((6.*cdphi1 - 1.*Gt111)*gtu21 - - 3.*Gt213*gtu31 + 6.*(cdphi2*gtu22 + cdphi3*gtu32) - 1.*Gt233*gtu33) - - 1.*((At22L*Gt212 + At12L*(Gt112 + Gt222) + At23L*Gt312 + - At13L*Gt322)*gtu22 + At13L*(Gt111*gtu31 + Gt112*gtu32 + Gt113*gtu33)) + - At11L*((6.*cdphi1 - 2.*Gt111)*gtu11 + 6.*(cdphi2*gtu21 + cdphi3*gtu31) - - 1.*(Gt122*gtu22 + Gt133*gtu33)) + gtu11*PDstandardNth1At11 - + 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 + - gtu21*(-1.*(At22L*Gt211 + At23L*Gt311) - 3.*(At11L*Gt112 + At12L*Gt212 + gtu12*(-1.*(At22L*Gt211 + At23L*Gt311) - 3.*(At11L*Gt112 + At12L*Gt212 + At13L*Gt312) + PDstandardNth1At12 + PDstandardNth2At11) + - gtu22*PDstandardNth2At12 + gtu31*(-3.*At11L*Gt113 - 1.*(At23L*Gt211 + - At33L*Gt311) + At13L*(6.*cdphi1 - 3.*Gt313) + PDstandardNth1At13 + - PDstandardNth3At11) + gtu32*(-2.*At12L*Gt223 - 1.*(At12L*Gt113 + - At22L*Gt213 + At33L*Gt312 + At23L*(Gt212 + Gt313)) + At13L*(6.*cdphi2 - - 2.*Gt323) + PDstandardNth2At13 + PDstandardNth3At12) + - gtu33*(-1.*(At23L*Gt213 + At33L*Gt313) + At13L*(6.*cdphi3 - 1.*Gt333) + - PDstandardNth3At13) - 25.13274122871834590770114706623602307358*S1; - - CCTK_REAL M2L = At12L*((6.*cdphi1 - 1.*Gt111)*gtu11 - 2.*Gt122*gtu22 + - 6.*(cdphi2*gtu21 + cdphi3*gtu31) - 3.*Gt123*gtu32 - 1.*Gt133*gtu33) + - At22L*((6.*cdphi2 - 2.*Gt222)*gtu22 - 2.*Gt213*gtu31 + 6.*cdphi3*gtu32 - - 1.*Gt233*gtu33) + At23L*(-2.*Gt322*gtu22 - 1.*Gt333*gtu33 + - 6.*(cdphi1*gtu31 + cdphi2*gtu32 + cdphi3*gtu33)) - 1.*((At11L*Gt112 + - At22L*Gt211 + At12L*Gt212 + At23L*Gt311 + At13L*Gt312)*gtu11 + - Gt122*(At11L*gtu21 + At13L*gtu32) + (At23L*Gt223 + At33L*Gt323)*gtu33 + - At13L*(Gt112*gtu31 + Gt123*gtu33)) + gtu11*PDstandardNth1At12 + - gtu21*(At22L*(6.*cdphi1 - 3.*Gt212) + At12L*(-3.*Gt112 - 1.*Gt222) - - 3.*At23L*Gt312 - 1.*At13L*Gt322 + PDstandardNth1At22 + - PDstandardNth2At12) + gtu22*PDstandardNth2At22 - + 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 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 + - gtu31*(At12L*(-2.*Gt113 - 1.*Gt223) - 2.*At23L*Gt313 - 1.*(At11L*Gt123 - + At23L*Gt212 + At33L*Gt312 + At13L*Gt323) + PDstandardNth1At23 + - PDstandardNth3At12) + gtu32*(-1.*(At23L*Gt222 + At33L*Gt322) - - 3.*(At22L*Gt223 + At23L*Gt323) + PDstandardNth2At23 + + 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 M3L = -1.*((At11L*Gt113 + At23L*Gt211 + At12L*Gt213 + At33L*Gt311)*gtu11 + (At22L*Gt223 + At33L*Gt322 + At23L*Gt323)*gtu22 + - At11L*Gt133*gtu31 + At12L*(Gt113*gtu21 + Gt123*gtu22 + Gt133*gtu32)) + - At13L*((6.*cdphi1 - 1.*(Gt111 + Gt313))*gtu11 - 1.*Gt122*gtu22 + - 6.*(cdphi2*gtu21 + cdphi3*gtu31) - 3.*Gt123*gtu32 - 2.*Gt133*gtu33) + - At23L*((6.*cdphi2 - 1.*Gt222)*gtu22 - 3.*Gt213*gtu31 + 6.*cdphi3*gtu32 - - 2.*Gt233*gtu33) + gtu11*PDstandardNth1At13 + gtu21*(-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 + - gtu31*(-1.*At12L*Gt233 + At33L*(6.*cdphi1 - 3.*Gt313) + - At13L*(-3.*Gt113 - 1.*Gt333) + PDstandardNth1At33 + PDstandardNth3At13) - + gtu32*(-1.*At22L*Gt233 + At33L*(6.*cdphi2 - 3.*Gt323) + - At23L*(-3.*Gt223 - 1.*Gt333) + PDstandardNth2At33 + PDstandardNth3At23) - + gtu33*(At33L*(6.*cdphi3 - 2.*Gt333) + PDstandardNth3At33) - + 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*gtu21 + - Gt113*gtu31 + Gt123*gtu32) + Gt133*gtu33 - Xt1L; + 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*gtu21 + - Gt213*gtu31 + Gt223*gtu32) + Gt233*gtu33 - Xt2L; + 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*gtu21 + - Gt313*gtu31 + Gt323*gtu32) + Gt333*gtu33 - Xt3L; + 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*gtu21 + - At13L*gtu31 + At23L*gtu32) + At33L*gtu33; + CCTK_REAL cAL = At11L*gtu11 + At22L*gtu22 + 2*(At12L*gtu12 + + At13L*gtu13 + At23L*gtu23) + At33L*gtu33; /* Copy local copies back to grid functions */ diff --git a/ML_BSSN_O2/src/ML_BSSN_O2_constraints_boundary.c b/ML_BSSN_O2/src/ML_BSSN_O2_constraints_boundary.c index e6a9a33..4dfae3f 100644 --- a/ML_BSSN_O2/src/ML_BSSN_O2_constraints_boundary.c +++ b/ML_BSSN_O2/src/ML_BSSN_O2_constraints_boundary.c @@ -20,6 +20,30 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((x) * (x) * (x) * (x)) +void ML_BSSN_O2_constraints_boundary_SelectBCs(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT ierr = 0; + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O2::ML_cons_detg","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O2::ML_cons_detg."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O2::ML_cons_Gamma","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O2::ML_cons_Gamma."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O2::ML_cons_traceA","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O2::ML_cons_traceA."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O2::ML_Ham","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O2::ML_Ham."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O2::ML_mom","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O2::ML_mom."); + return; +} + void ML_BSSN_O2_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[]) { DECLARE_CCTK_ARGUMENTS; diff --git a/ML_BSSN_O2/src/ML_BSSN_O2_convertFromADMBase.c b/ML_BSSN_O2/src/ML_BSSN_O2_convertFromADMBase.c index 02def41..2105acd 100644 --- a/ML_BSSN_O2/src/ML_BSSN_O2_convertFromADMBase.c +++ b/ML_BSSN_O2/src/ML_BSSN_O2_convertFromADMBase.c @@ -137,13 +137,13 @@ void ML_BSSN_O2_convertFromADMBase_Body(cGH const * restrict const cctkGH, int c CCTK_REAL gu11 = INV(detg)*(g22*g33 - SQR(g23)); - CCTK_REAL gu21 = (g13*g23 - g12*g33)*INV(detg); + CCTK_REAL gu12 = (g13*g23 - g12*g33)*INV(detg); - CCTK_REAL gu31 = (-(g13*g22) + g12*g23)*INV(detg); + CCTK_REAL gu13 = (-(g13*g22) + g12*g23)*INV(detg); CCTK_REAL gu22 = INV(detg)*(g11*g33 - SQR(g13)); - CCTK_REAL gu32 = (g12*g13 - g11*g23)*INV(detg); + CCTK_REAL gu23 = (g12*g13 - g11*g23)*INV(detg); CCTK_REAL gu33 = INV(detg)*(g11*g22 - SQR(g12)); @@ -164,7 +164,7 @@ void ML_BSSN_O2_convertFromADMBase_Body(cGH const * restrict const cctkGH, int c CCTK_REAL gt33L = em4phi*g33; - trKL = gu11*kxxL + gu22*kyyL + 2*(gu21*kxyL + gu31*kxzL + gu32*kyzL) + + trKL = gu11*kxxL + gu22*kyyL + 2*(gu12*kxyL + gu13*kxzL + gu23*kyzL) + gu33*kzzL; CCTK_REAL At11L = em4phi*(kxxL - g11*kthird*trKL); diff --git a/ML_BSSN_O2/src/ML_BSSN_O2_convertFromADMBaseGamma.c b/ML_BSSN_O2/src/ML_BSSN_O2_convertFromADMBaseGamma.c index 585d5ef..ba918ef 100644 --- a/ML_BSSN_O2/src/ML_BSSN_O2_convertFromADMBaseGamma.c +++ b/ML_BSSN_O2/src/ML_BSSN_O2_convertFromADMBaseGamma.c @@ -20,6 +20,24 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((x) * (x) * (x) * (x)) +void ML_BSSN_O2_convertFromADMBaseGamma_SelectBCs(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT ierr = 0; + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O2::ML_dtlapse","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O2::ML_dtlapse."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O2::ML_dtshift","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O2::ML_dtshift."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O2::ML_Gamma","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O2::ML_Gamma."); + return; +} + 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[]) { DECLARE_CCTK_ARGUMENTS; @@ -211,96 +229,96 @@ void ML_BSSN_O2_convertFromADMBaseGamma_Body(cGH const * restrict const cctkGH, CCTK_REAL gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L)); - CCTK_REAL gtu21 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt); + CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt); - CCTK_REAL gtu31 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt); + CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt); CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L)); - CCTK_REAL gtu32 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt); + CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt); CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L)); CCTK_REAL Gt111 = khalf*(gtu11*PDstandardNth1gt11 + - 2*(gtu21*PDstandardNth1gt12 + gtu31*PDstandardNth1gt13) - - gtu21*PDstandardNth2gt11 - gtu31*PDstandardNth3gt11); + 2*(gtu12*PDstandardNth1gt12 + gtu13*PDstandardNth1gt13) - + gtu12*PDstandardNth2gt11 - gtu13*PDstandardNth3gt11); - CCTK_REAL Gt211 = khalf*(gtu21*PDstandardNth1gt11 + - 2*(gtu22*PDstandardNth1gt12 + gtu32*PDstandardNth1gt13) - - gtu22*PDstandardNth2gt11 - gtu32*PDstandardNth3gt11); + CCTK_REAL Gt211 = khalf*(gtu12*PDstandardNth1gt11 + + 2*(gtu22*PDstandardNth1gt12 + gtu23*PDstandardNth1gt13) - + gtu22*PDstandardNth2gt11 - gtu23*PDstandardNth3gt11); - CCTK_REAL Gt311 = khalf*(gtu31*PDstandardNth1gt11 + - 2*(gtu32*PDstandardNth1gt12 + gtu33*PDstandardNth1gt13) - - gtu32*PDstandardNth2gt11 - gtu33*PDstandardNth3gt11); + CCTK_REAL Gt311 = khalf*(gtu13*PDstandardNth1gt11 + + 2*(gtu23*PDstandardNth1gt12 + gtu33*PDstandardNth1gt13) - + gtu23*PDstandardNth2gt11 - gtu33*PDstandardNth3gt11); - CCTK_REAL Gt112 = khalf*(gtu21*PDstandardNth1gt22 + - gtu11*PDstandardNth2gt11 + gtu31*(PDstandardNth1gt23 + + CCTK_REAL Gt112 = khalf*(gtu12*PDstandardNth1gt22 + + gtu11*PDstandardNth2gt11 + gtu13*(PDstandardNth1gt23 + PDstandardNth2gt13 - PDstandardNth3gt12)); CCTK_REAL Gt212 = khalf*(gtu22*PDstandardNth1gt22 + - gtu21*PDstandardNth2gt11 + gtu32*(PDstandardNth1gt23 + + gtu12*PDstandardNth2gt11 + gtu23*(PDstandardNth1gt23 + PDstandardNth2gt13 - PDstandardNth3gt12)); - CCTK_REAL Gt312 = khalf*(gtu32*PDstandardNth1gt22 + - gtu31*PDstandardNth2gt11 + gtu33*(PDstandardNth1gt23 + + CCTK_REAL Gt312 = khalf*(gtu23*PDstandardNth1gt22 + + gtu13*PDstandardNth2gt11 + gtu33*(PDstandardNth1gt23 + PDstandardNth2gt13 - PDstandardNth3gt12)); - CCTK_REAL Gt113 = khalf*(gtu31*PDstandardNth1gt33 + - gtu11*PDstandardNth3gt11 + gtu21*(PDstandardNth1gt23 - + CCTK_REAL Gt113 = khalf*(gtu13*PDstandardNth1gt33 + + gtu11*PDstandardNth3gt11 + gtu12*(PDstandardNth1gt23 - PDstandardNth2gt13 + PDstandardNth3gt12)); - CCTK_REAL Gt213 = khalf*(gtu32*PDstandardNth1gt33 + - gtu21*PDstandardNth3gt11 + gtu22*(PDstandardNth1gt23 - + CCTK_REAL Gt213 = khalf*(gtu23*PDstandardNth1gt33 + + gtu12*PDstandardNth3gt11 + gtu22*(PDstandardNth1gt23 - PDstandardNth2gt13 + PDstandardNth3gt12)); CCTK_REAL Gt313 = khalf*(gtu33*PDstandardNth1gt33 + - gtu31*PDstandardNth3gt11 + gtu32*(PDstandardNth1gt23 - + gtu13*PDstandardNth3gt11 + gtu23*(PDstandardNth1gt23 - PDstandardNth2gt13 + PDstandardNth3gt12)); CCTK_REAL Gt122 = khalf*(gtu11*(-PDstandardNth1gt22 + - 2*PDstandardNth2gt12) + gtu21*PDstandardNth2gt22 + - gtu31*(2*PDstandardNth2gt23 - PDstandardNth3gt22)); + 2*PDstandardNth2gt12) + gtu12*PDstandardNth2gt22 + + gtu13*(2*PDstandardNth2gt23 - PDstandardNth3gt22)); - CCTK_REAL Gt222 = khalf*(gtu21*(-PDstandardNth1gt22 + + CCTK_REAL Gt222 = khalf*(gtu12*(-PDstandardNth1gt22 + 2*PDstandardNth2gt12) + gtu22*PDstandardNth2gt22 + - gtu32*(2*PDstandardNth2gt23 - PDstandardNth3gt22)); + gtu23*(2*PDstandardNth2gt23 - PDstandardNth3gt22)); - CCTK_REAL Gt322 = khalf*(gtu31*(-PDstandardNth1gt22 + - 2*PDstandardNth2gt12) + gtu32*PDstandardNth2gt22 + + CCTK_REAL Gt322 = khalf*(gtu13*(-PDstandardNth1gt22 + + 2*PDstandardNth2gt12) + gtu23*PDstandardNth2gt22 + gtu33*(2*PDstandardNth2gt23 - PDstandardNth3gt22)); - CCTK_REAL Gt123 = khalf*(gtu31*PDstandardNth2gt33 + + CCTK_REAL Gt123 = khalf*(gtu13*PDstandardNth2gt33 + gtu11*(-PDstandardNth1gt23 + PDstandardNth2gt13 + PDstandardNth3gt12) + - gtu21*PDstandardNth3gt22); + gtu12*PDstandardNth3gt22); - CCTK_REAL Gt223 = khalf*(gtu32*PDstandardNth2gt33 + - gtu21*(-PDstandardNth1gt23 + PDstandardNth2gt13 + PDstandardNth3gt12) + + CCTK_REAL Gt223 = khalf*(gtu23*PDstandardNth2gt33 + + gtu12*(-PDstandardNth1gt23 + PDstandardNth2gt13 + PDstandardNth3gt12) + gtu22*PDstandardNth3gt22); CCTK_REAL Gt323 = khalf*(gtu33*PDstandardNth2gt33 + - gtu31*(-PDstandardNth1gt23 + PDstandardNth2gt13 + PDstandardNth3gt12) + - gtu32*PDstandardNth3gt22); + gtu13*(-PDstandardNth1gt23 + PDstandardNth2gt13 + PDstandardNth3gt12) + + gtu23*PDstandardNth3gt22); CCTK_REAL Gt133 = khalf*(-(gtu11*PDstandardNth1gt33) - - gtu21*PDstandardNth2gt33 + 2*gtu11*PDstandardNth3gt13 + - 2*gtu21*PDstandardNth3gt23 + gtu31*PDstandardNth3gt33); + gtu12*PDstandardNth2gt33 + 2*gtu11*PDstandardNth3gt13 + + 2*gtu12*PDstandardNth3gt23 + gtu13*PDstandardNth3gt33); - CCTK_REAL Gt233 = khalf*(-(gtu21*PDstandardNth1gt33) - - gtu22*PDstandardNth2gt33 + 2*gtu21*PDstandardNth3gt13 + - 2*gtu22*PDstandardNth3gt23 + gtu32*PDstandardNth3gt33); + CCTK_REAL Gt233 = khalf*(-(gtu12*PDstandardNth1gt33) - + gtu22*PDstandardNth2gt33 + 2*gtu12*PDstandardNth3gt13 + + 2*gtu22*PDstandardNth3gt23 + gtu23*PDstandardNth3gt33); - CCTK_REAL Gt333 = khalf*(-(gtu31*PDstandardNth1gt33) - - gtu32*PDstandardNth2gt33 + 2*gtu31*PDstandardNth3gt13 + - 2*gtu32*PDstandardNth3gt23 + gtu33*PDstandardNth3gt33); + CCTK_REAL Gt333 = khalf*(-(gtu13*PDstandardNth1gt33) - + gtu23*PDstandardNth2gt33 + 2*gtu13*PDstandardNth3gt13 + + 2*gtu23*PDstandardNth3gt23 + gtu33*PDstandardNth3gt33); - CCTK_REAL Xt1L = Gt111*gtu11 + Gt122*gtu22 + 2*(Gt112*gtu21 + - Gt113*gtu31 + Gt123*gtu32) + Gt133*gtu33; + CCTK_REAL Xt1L = Gt111*gtu11 + Gt122*gtu22 + 2*(Gt112*gtu12 + + Gt113*gtu13 + Gt123*gtu23) + Gt133*gtu33; - CCTK_REAL Xt2L = Gt211*gtu11 + Gt222*gtu22 + 2*(Gt212*gtu21 + - Gt213*gtu31 + Gt223*gtu32) + Gt233*gtu33; + CCTK_REAL Xt2L = Gt211*gtu11 + Gt222*gtu22 + 2*(Gt212*gtu12 + + Gt213*gtu13 + Gt223*gtu23) + Gt233*gtu33; - CCTK_REAL Xt3L = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu21 + - Gt313*gtu31 + Gt323*gtu32) + Gt333*gtu33; + CCTK_REAL Xt3L = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu12 + + Gt313*gtu13 + Gt323*gtu23) + Gt333*gtu33; CCTK_REAL AL = 12*IfThen(LapseACoeff != 0,-(dtalpL*INV(harmonicF)*pow(alphaL,-harmonicN)),0) + diff --git a/ML_BSSN_O2/src/ML_BSSN_O2_convertToADMBaseDtLapseShift.c b/ML_BSSN_O2/src/ML_BSSN_O2_convertToADMBaseDtLapseShift.c index 7b41e4b..0c60b1c 100644 --- a/ML_BSSN_O2/src/ML_BSSN_O2_convertToADMBaseDtLapseShift.c +++ b/ML_BSSN_O2/src/ML_BSSN_O2_convertToADMBaseDtLapseShift.c @@ -20,6 +20,21 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((x) * (x) * (x) * (x)) +void ML_BSSN_O2_convertToADMBaseDtLapseShift_SelectBCs(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT ierr = 0; + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ADMBase::dtlapse","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ADMBase::dtlapse."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ADMBase::dtshift","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ADMBase::dtshift."); + return; +} + 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[]) { DECLARE_CCTK_ARGUMENTS; diff --git a/ML_BSSN_O2/src/ML_BSSN_O2_convertToADMBaseDtLapseShiftBoundary.c b/ML_BSSN_O2/src/ML_BSSN_O2_convertToADMBaseDtLapseShiftBoundary.c index cf630e0..7ca2d42 100644 --- a/ML_BSSN_O2/src/ML_BSSN_O2_convertToADMBaseDtLapseShiftBoundary.c +++ b/ML_BSSN_O2/src/ML_BSSN_O2_convertToADMBaseDtLapseShiftBoundary.c @@ -20,6 +20,21 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((x) * (x) * (x) * (x)) +void ML_BSSN_O2_convertToADMBaseDtLapseShiftBoundary_SelectBCs(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT ierr = 0; + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ADMBase::dtlapse","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ADMBase::dtlapse."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ADMBase::dtshift","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ADMBase::dtshift."); + return; +} + 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[]) { DECLARE_CCTK_ARGUMENTS; diff --git a/ML_BSSN_O2/src/ML_BSSN_O2_enforce.c b/ML_BSSN_O2/src/ML_BSSN_O2_enforce.c index e1df087..4a84b3b 100644 --- a/ML_BSSN_O2/src/ML_BSSN_O2_enforce.c +++ b/ML_BSSN_O2/src/ML_BSSN_O2_enforce.c @@ -119,18 +119,18 @@ void ML_BSSN_O2_enforce_Body(cGH const * restrict const cctkGH, int const dir, i CCTK_REAL gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L)); - CCTK_REAL gtu21 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt); + CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt); - CCTK_REAL gtu31 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt); + CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt); CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L)); - CCTK_REAL gtu32 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt); + CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt); CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L)); - CCTK_REAL trAt = At11L*gtu11 + At22L*gtu22 + 2*(At12L*gtu21 + - At13L*gtu31 + At23L*gtu32) + At33L*gtu33; + CCTK_REAL trAt = At11L*gtu11 + At22L*gtu22 + 2*(At12L*gtu12 + + At13L*gtu13 + At23L*gtu23) + At33L*gtu33; At11L = At11L - gt11L*kthird*trAt; diff --git a/ML_BSSN_O2_Helper/schedule.ccl b/ML_BSSN_O2_Helper/schedule.ccl index db0e3c8..61e6bda 100644 --- a/ML_BSSN_O2_Helper/schedule.ccl +++ b/ML_BSSN_O2_Helper/schedule.ccl @@ -132,7 +132,7 @@ if (CCTK_EQUALS (evolution_method, "ML_BSSN_O2")) { } else if (CCTK_EQUALS (calculate_ADMBase_variables_at, "CCTK_EVOL")) { - SCHEDULE GROUP ML_BSSN_O2_convertToADMBaseGroupWrapper AT evol AFTER MoL_Evolution BEFORE (ADMBase_SetADMVars Whisky_PostStep) + SCHEDULE GROUP ML_BSSN_O2_convertToADMBaseGroupWrapper IN MoL_PseudoEvolution BEFORE (ADMBase_SetADMVars Whisky_PostStep) { } "Calculate ADM variables" } @@ -143,7 +143,7 @@ if (CCTK_EQUALS (evolution_method, "ML_BSSN_O2")) { } "Calculate ADM variables" } - SCHEDULE GROUP ML_BSSN_O2_convertToADMBaseGroupWrapper AT CCTK_POST_RECOVER_VARIABLES + SCHEDULE GROUP ML_BSSN_O2_convertToADMBaseGroupWrapper AT post_recover_variables { } "Calculate ADM variables" diff --git a/ML_BSSN_O8/interface.ccl b/ML_BSSN_O8/interface.ccl index 738701f..29fc46e 100644 --- a/ML_BSSN_O8/interface.ccl +++ b/ML_BSSN_O8/interface.ccl @@ -25,7 +25,7 @@ CCTK_INT FUNCTION Boundary_SelectVarForBC(CCTK_POINTER_TO_CONST IN GH, CCTK_INT USES FUNCTION Boundary_SelectVarForBC public: -CCTK_REAL ML_cons_detg type=GF timelevels=1 tags='tensortypealias="Scalar" tensorweight=2.0000000000000000000' +CCTK_REAL ML_cons_detg type=GF timelevels=1 tags='tensortypealias="Scalar" tensorweight=2' { cS } "ML_cons_detg" @@ -39,19 +39,19 @@ CCTK_REAL ML_cons_Gamma type=GF timelevels=1 tags='tensortypealias="U" tensorwei } "ML_cons_Gamma" public: -CCTK_REAL ML_cons_traceA type=GF timelevels=1 tags='tensortypealias="Scalar" tensorweight=1.0000000000000000000' +CCTK_REAL ML_cons_traceA type=GF timelevels=1 tags='tensortypealias="Scalar" tensorweight=1' { cA } "ML_cons_traceA" public: -CCTK_REAL ML_Ham type=GF timelevels=1 tags='tensortypealias="Scalar" tensorweight=1.0000000000000000000' +CCTK_REAL ML_Ham type=GF timelevels=1 tags='tensortypealias="Scalar" tensorweight=1' { H } "ML_Ham" public: -CCTK_REAL ML_mom type=GF timelevels=1 tags='tensortypealias="D" tensorweight=1.0000000000000000000' +CCTK_REAL ML_mom type=GF timelevels=1 tags='tensortypealias="D" tensorweight=1' { M1, M2, @@ -70,13 +70,13 @@ CCTK_REAL ML_curv type=GF timelevels=3 tags='tensortypealias="DD_sym" tensorweig } "ML_curv" public: -CCTK_REAL ML_dtlapse type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1.0000000000000000000' +CCTK_REAL ML_dtlapse type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1' { A } "ML_dtlapse" public: -CCTK_REAL ML_dtshift type=GF timelevels=3 tags='tensortypealias="U" tensorweight=1.0000000000000000000' +CCTK_REAL ML_dtshift type=GF timelevels=3 tags='tensortypealias="U" tensorweight=1' { B1, B2, @@ -92,7 +92,7 @@ CCTK_REAL ML_Gamma type=GF timelevels=3 tags='tensortypealias="U" tensorweight=0 } "ML_Gamma" public: -CCTK_REAL ML_lapse type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1.0000000000000000000' +CCTK_REAL ML_lapse type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1' { alpha } "ML_lapse" @@ -115,7 +115,7 @@ CCTK_REAL ML_metric type=GF timelevels=3 tags='tensortypealias="DD_sym" tensorwe } "ML_metric" public: -CCTK_REAL ML_shift type=GF timelevels=3 tags='tensortypealias="U" tensorweight=1.0000000000000000000' +CCTK_REAL ML_shift type=GF timelevels=3 tags='tensortypealias="U" tensorweight=1' { beta1, beta2, @@ -123,7 +123,7 @@ CCTK_REAL ML_shift type=GF timelevels=3 tags='tensortypealias="U" tensorweight=1 } "ML_shift" public: -CCTK_REAL ML_trace_curv type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1.0000000000000000000' +CCTK_REAL ML_trace_curv type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1' { trK } "ML_trace_curv" @@ -140,13 +140,13 @@ CCTK_REAL ML_curvrhs type=GF timelevels=3 tags='tensortypealias="DD_sym" tensorw } "ML_curvrhs" public: -CCTK_REAL ML_dtlapserhs type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1.0000000000000000000' +CCTK_REAL ML_dtlapserhs type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1' { Arhs } "ML_dtlapserhs" public: -CCTK_REAL ML_dtshiftrhs type=GF timelevels=3 tags='tensortypealias="U" tensorweight=1.0000000000000000000' +CCTK_REAL ML_dtshiftrhs type=GF timelevels=3 tags='tensortypealias="U" tensorweight=1' { B1rhs, B2rhs, @@ -162,7 +162,7 @@ CCTK_REAL ML_Gammarhs type=GF timelevels=3 tags='tensortypealias="U" tensorweigh } "ML_Gammarhs" public: -CCTK_REAL ML_lapserhs type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1.0000000000000000000' +CCTK_REAL ML_lapserhs type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1' { alpharhs } "ML_lapserhs" @@ -185,7 +185,7 @@ CCTK_REAL ML_metricrhs type=GF timelevels=3 tags='tensortypealias="DD_sym" tenso } "ML_metricrhs" public: -CCTK_REAL ML_shiftrhs type=GF timelevels=3 tags='tensortypealias="U" tensorweight=1.0000000000000000000' +CCTK_REAL ML_shiftrhs type=GF timelevels=3 tags='tensortypealias="U" tensorweight=1' { beta1rhs, beta2rhs, @@ -193,7 +193,7 @@ CCTK_REAL ML_shiftrhs type=GF timelevels=3 tags='tensortypealias="U" tensorweigh } "ML_shiftrhs" public: -CCTK_REAL ML_trace_curvrhs type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1.0000000000000000000' +CCTK_REAL ML_trace_curvrhs type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1' { trKrhs } "ML_trace_curvrhs" diff --git a/ML_BSSN_O8/schedule.ccl b/ML_BSSN_O8/schedule.ccl index 27dd89d..bce65a8 100644 --- a/ML_BSSN_O8/schedule.ccl +++ b/ML_BSSN_O8/schedule.ccl @@ -405,7 +405,7 @@ schedule ML_BSSN_O8_CheckBoundaries at BASEGRID OPTIONS: meta } "check boundaries treatment" -schedule group ApplyBCs as ML_BSSN_O8_ApplyBCs in MoL_PostStep after ML_BSSN_O8_SelectBoundConds +schedule group ApplyBCs as ML_BSSN_O8_ApplyBCs in MoL_PostStep after ML_BSSN_O8_SelectBoundConds { # no language specified } "Apply boundary conditions controlled by thorn Boundary" diff --git a/ML_BSSN_O8/src/ML_BSSN_O8_RHS1.c b/ML_BSSN_O8/src/ML_BSSN_O8_RHS1.c index 9f39cbd..514347c 100644 --- a/ML_BSSN_O8/src/ML_BSSN_O8_RHS1.c +++ b/ML_BSSN_O8/src/ML_BSSN_O8_RHS1.c @@ -20,6 +20,39 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((x) * (x) * (x) * (x)) +void ML_BSSN_O8_RHS1_SelectBCs(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT ierr = 0; + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O8::ML_dtlapserhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O8::ML_dtlapserhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O8::ML_dtshiftrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O8::ML_dtshiftrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O8::ML_Gammarhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O8::ML_Gammarhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O8::ML_lapserhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O8::ML_lapserhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O8::ML_log_confacrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O8::ML_log_confacrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O8::ML_metricrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O8::ML_metricrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O8::ML_shiftrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O8::ML_shiftrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O8::ML_trace_curvrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O8::ML_trace_curvrhs."); + return; +} + 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[]) { DECLARE_CCTK_ARGUMENTS; @@ -616,13 +649,13 @@ void ML_BSSN_O8_RHS1_Body(cGH const * restrict const cctkGH, int const dir, int CCTK_REAL gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L)); - CCTK_REAL gtu21 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt); + CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt); - CCTK_REAL gtu31 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt); + CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt); CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L)); - CCTK_REAL gtu32 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt); + CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt); CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L)); @@ -665,50 +698,50 @@ void ML_BSSN_O8_RHS1_Body(cGH const * restrict const cctkGH, int const dir, int CCTK_REAL Gtl333 = khalf*PDstandardNth3gt33; - CCTK_REAL Gt111 = Gtl111*gtu11 + Gtl211*gtu21 + Gtl311*gtu31; + CCTK_REAL Gt111 = Gtl111*gtu11 + Gtl211*gtu12 + Gtl311*gtu13; - CCTK_REAL Gt211 = Gtl111*gtu21 + Gtl211*gtu22 + Gtl311*gtu32; + CCTK_REAL Gt211 = Gtl111*gtu12 + Gtl211*gtu22 + Gtl311*gtu23; - CCTK_REAL Gt311 = Gtl111*gtu31 + Gtl211*gtu32 + Gtl311*gtu33; + CCTK_REAL Gt311 = Gtl111*gtu13 + Gtl211*gtu23 + Gtl311*gtu33; - CCTK_REAL Gt112 = Gtl112*gtu11 + Gtl212*gtu21 + Gtl312*gtu31; + CCTK_REAL Gt112 = Gtl112*gtu11 + Gtl212*gtu12 + Gtl312*gtu13; - CCTK_REAL Gt212 = Gtl112*gtu21 + Gtl212*gtu22 + Gtl312*gtu32; + CCTK_REAL Gt212 = Gtl112*gtu12 + Gtl212*gtu22 + Gtl312*gtu23; - CCTK_REAL Gt312 = Gtl112*gtu31 + Gtl212*gtu32 + Gtl312*gtu33; + CCTK_REAL Gt312 = Gtl112*gtu13 + Gtl212*gtu23 + Gtl312*gtu33; - CCTK_REAL Gt113 = Gtl113*gtu11 + Gtl213*gtu21 + Gtl313*gtu31; + CCTK_REAL Gt113 = Gtl113*gtu11 + Gtl213*gtu12 + Gtl313*gtu13; - CCTK_REAL Gt213 = Gtl113*gtu21 + Gtl213*gtu22 + Gtl313*gtu32; + CCTK_REAL Gt213 = Gtl113*gtu12 + Gtl213*gtu22 + Gtl313*gtu23; - CCTK_REAL Gt313 = Gtl113*gtu31 + Gtl213*gtu32 + Gtl313*gtu33; + CCTK_REAL Gt313 = Gtl113*gtu13 + Gtl213*gtu23 + Gtl313*gtu33; - CCTK_REAL Gt122 = Gtl122*gtu11 + Gtl222*gtu21 + Gtl322*gtu31; + CCTK_REAL Gt122 = Gtl122*gtu11 + Gtl222*gtu12 + Gtl322*gtu13; - CCTK_REAL Gt222 = Gtl122*gtu21 + Gtl222*gtu22 + Gtl322*gtu32; + CCTK_REAL Gt222 = Gtl122*gtu12 + Gtl222*gtu22 + Gtl322*gtu23; - CCTK_REAL Gt322 = Gtl122*gtu31 + Gtl222*gtu32 + Gtl322*gtu33; + CCTK_REAL Gt322 = Gtl122*gtu13 + Gtl222*gtu23 + Gtl322*gtu33; - CCTK_REAL Gt123 = Gtl123*gtu11 + Gtl223*gtu21 + Gtl323*gtu31; + CCTK_REAL Gt123 = Gtl123*gtu11 + Gtl223*gtu12 + Gtl323*gtu13; - CCTK_REAL Gt223 = Gtl123*gtu21 + Gtl223*gtu22 + Gtl323*gtu32; + CCTK_REAL Gt223 = Gtl123*gtu12 + Gtl223*gtu22 + Gtl323*gtu23; - CCTK_REAL Gt323 = Gtl123*gtu31 + Gtl223*gtu32 + Gtl323*gtu33; + CCTK_REAL Gt323 = Gtl123*gtu13 + Gtl223*gtu23 + Gtl323*gtu33; - CCTK_REAL Gt133 = Gtl133*gtu11 + Gtl233*gtu21 + Gtl333*gtu31; + CCTK_REAL Gt133 = Gtl133*gtu11 + Gtl233*gtu12 + Gtl333*gtu13; - CCTK_REAL Gt233 = Gtl133*gtu21 + Gtl233*gtu22 + Gtl333*gtu32; + CCTK_REAL Gt233 = Gtl133*gtu12 + Gtl233*gtu22 + Gtl333*gtu23; - CCTK_REAL Gt333 = Gtl133*gtu31 + Gtl233*gtu32 + Gtl333*gtu33; + CCTK_REAL Gt333 = Gtl133*gtu13 + Gtl233*gtu23 + Gtl333*gtu33; - CCTK_REAL Xtn1 = Gt111*gtu11 + Gt122*gtu22 + 2*(Gt112*gtu21 + - Gt113*gtu31 + Gt123*gtu32) + Gt133*gtu33; + CCTK_REAL Xtn1 = Gt111*gtu11 + Gt122*gtu22 + 2*(Gt112*gtu12 + + Gt113*gtu13 + Gt123*gtu23) + Gt133*gtu33; - CCTK_REAL Xtn2 = Gt211*gtu11 + Gt222*gtu22 + 2*(Gt212*gtu21 + - Gt213*gtu31 + Gt223*gtu32) + Gt233*gtu33; + CCTK_REAL Xtn2 = Gt211*gtu11 + Gt222*gtu22 + 2*(Gt212*gtu12 + + Gt213*gtu13 + Gt223*gtu23) + Gt233*gtu33; - CCTK_REAL Xtn3 = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu21 + - Gt313*gtu31 + Gt323*gtu32) + Gt333*gtu33; + CCTK_REAL Xtn3 = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu12 + + Gt313*gtu13 + Gt323*gtu23) + Gt333*gtu33; CCTK_REAL fac1 = IfThen(conformalMethod,-(khalf*INV(phiL)),1); @@ -718,35 +751,35 @@ void ML_BSSN_O8_RHS1_Body(cGH const * restrict const cctkGH, int const dir, int CCTK_REAL cdphi3 = fac1*PDstandardNth3phi; - CCTK_REAL Atm11 = At11L*gtu11 + At12L*gtu21 + At13L*gtu31; + CCTK_REAL Atm11 = At11L*gtu11 + At12L*gtu12 + At13L*gtu13; - CCTK_REAL Atm21 = At11L*gtu21 + At12L*gtu22 + At13L*gtu32; + CCTK_REAL Atm21 = At11L*gtu12 + At12L*gtu22 + At13L*gtu23; - CCTK_REAL Atm31 = At11L*gtu31 + At12L*gtu32 + At13L*gtu33; + CCTK_REAL Atm31 = At11L*gtu13 + At12L*gtu23 + At13L*gtu33; - CCTK_REAL Atm12 = At12L*gtu11 + At22L*gtu21 + At23L*gtu31; + CCTK_REAL Atm12 = At12L*gtu11 + At22L*gtu12 + At23L*gtu13; - CCTK_REAL Atm22 = At12L*gtu21 + At22L*gtu22 + At23L*gtu32; + CCTK_REAL Atm22 = At12L*gtu12 + At22L*gtu22 + At23L*gtu23; - CCTK_REAL Atm32 = At12L*gtu31 + At22L*gtu32 + At23L*gtu33; + CCTK_REAL Atm32 = At12L*gtu13 + At22L*gtu23 + At23L*gtu33; - CCTK_REAL Atm13 = At13L*gtu11 + At23L*gtu21 + At33L*gtu31; + CCTK_REAL Atm13 = At13L*gtu11 + At23L*gtu12 + At33L*gtu13; - CCTK_REAL Atm23 = At13L*gtu21 + At23L*gtu22 + At33L*gtu32; + CCTK_REAL Atm23 = At13L*gtu12 + At23L*gtu22 + At33L*gtu23; - CCTK_REAL Atm33 = At13L*gtu31 + At23L*gtu32 + At33L*gtu33; + CCTK_REAL Atm33 = At13L*gtu13 + At23L*gtu23 + At33L*gtu33; - CCTK_REAL Atu11 = Atm11*gtu11 + Atm12*gtu21 + Atm13*gtu31; + CCTK_REAL Atu11 = Atm11*gtu11 + Atm12*gtu12 + Atm13*gtu13; - CCTK_REAL Atu21 = Atm11*gtu21 + Atm12*gtu22 + Atm13*gtu32; + CCTK_REAL Atu12 = Atm11*gtu12 + Atm12*gtu22 + Atm13*gtu23; - CCTK_REAL Atu31 = Atm11*gtu31 + Atm12*gtu32 + Atm13*gtu33; + CCTK_REAL Atu13 = Atm11*gtu13 + Atm12*gtu23 + Atm13*gtu33; - CCTK_REAL Atu22 = Atm21*gtu21 + Atm22*gtu22 + Atm23*gtu32; + CCTK_REAL Atu22 = Atm21*gtu12 + Atm22*gtu22 + Atm23*gtu23; - CCTK_REAL Atu32 = Atm21*gtu31 + Atm22*gtu32 + Atm23*gtu33; + CCTK_REAL Atu23 = Atm21*gtu13 + Atm22*gtu23 + Atm23*gtu33; - CCTK_REAL Atu33 = Atm31*gtu31 + Atm32*gtu32 + Atm33*gtu33; + CCTK_REAL Atu33 = Atm31*gtu13 + Atm32*gtu23 + Atm33*gtu33; CCTK_REAL e4phi = IfThen(conformalMethod,pow(phiL,-2),exp(4*phiL)); @@ -766,8 +799,8 @@ void ML_BSSN_O8_RHS1_Body(cGH const * restrict const cctkGH, int const dir, int CCTK_REAL S3 = (-eTtzL + beta1L*eTxzL + beta2L*eTyzL + beta3L*eTzzL)*INV(alphaL); - CCTK_REAL trS = em4phi*(eTxxL*gtu11 + eTyyL*gtu22 + 2*(eTxyL*gtu21 + - eTxzL*gtu31 + eTyzL*gtu32) + eTzzL*gtu33); + CCTK_REAL trS = em4phi*(eTxxL*gtu11 + eTyyL*gtu22 + 2*(eTxyL*gtu12 + + eTxzL*gtu13 + eTyzL*gtu23) + eTzzL*gtu33); CCTK_REAL phirhsL = epsdiss1*PDdissipationNth1phi + epsdiss2*PDdissipationNth2phi + epsdiss3*PDdissipationNth3phi + @@ -835,19 +868,19 @@ void ML_BSSN_O8_RHS1_Body(cGH const * restrict const cctkGH, int const dir, int beta3L*PDupwindNthAnti3gt33 + PDupwindNthSymm1gt33*Abs(beta1L) + PDupwindNthSymm2gt33*Abs(beta2L) + PDupwindNthSymm3gt33*Abs(beta3L); - CCTK_REAL dotXt1 = kthird*(7*(gtu21*PDstandardNth12beta1 + - gtu31*PDstandardNth13beta1) + gtu11*(4*PDstandardNth11beta1 + + CCTK_REAL dotXt1 = kthird*(7*(gtu12*PDstandardNth12beta1 + + gtu13*PDstandardNth13beta1) + gtu11*(4*PDstandardNth11beta1 + PDstandardNth12beta2 + PDstandardNth13beta3) + - gtu21*(PDstandardNth22beta2 + PDstandardNth23beta3) + - gtu31*(PDstandardNth23beta2 + PDstandardNth33beta3) - - 6*(Atu11*PDstandardNth1alpha + Atu21*PDstandardNth2alpha + - Atu31*PDstandardNth3alpha) + 6*(gtu32*PDstandardNth23beta1 + - alphaL*(6*(Atu11*cdphi1 + Atu21*cdphi2 + Atu31*cdphi3) + Atu11*Gt111 + - Atu22*Gt122 + 2*(Atu21*Gt112 + Atu31*Gt113 + Atu32*Gt123) + Atu33*Gt133 - - ktwothird*(gtu11*PDstandardNth1trK + gtu21*PDstandardNth2trK + - gtu31*PDstandardNth3trK))) - - 150.7964473723100754462068823974161384415*alphaL*(gtu11*S1 + gtu21*S2 + - gtu31*S3) + (-3*PDstandardNth1beta1 + 2*(PDstandardNth1beta1 + + gtu12*(PDstandardNth22beta2 + PDstandardNth23beta3) + + gtu13*(PDstandardNth23beta2 + PDstandardNth33beta3) - + 6*(Atu11*PDstandardNth1alpha + Atu12*PDstandardNth2alpha + + Atu13*PDstandardNth3alpha) + 6*(gtu23*PDstandardNth23beta1 + + alphaL*(6*(Atu11*cdphi1 + Atu12*cdphi2 + Atu13*cdphi3) + Atu11*Gt111 + + Atu22*Gt122 + 2*(Atu12*Gt112 + Atu13*Gt113 + Atu23*Gt123) + Atu33*Gt133 + - ktwothird*(gtu11*PDstandardNth1trK + gtu12*PDstandardNth2trK + + gtu13*PDstandardNth3trK))) - + 150.7964473723100754462068823974161384415*alphaL*(gtu11*S1 + gtu12*S2 + + gtu13*S3) + (-3*PDstandardNth1beta1 + 2*(PDstandardNth1beta1 + PDstandardNth2beta2 + PDstandardNth3beta3))*Xtn1 - 3*(PDstandardNth2beta1*Xtn2 + PDstandardNth3beta1*Xtn3) + 3*(epsdiss1*PDdissipationNth1Xt1 + epsdiss2*PDdissipationNth2Xt1 + @@ -857,19 +890,19 @@ void ML_BSSN_O8_RHS1_Body(cGH const * restrict const cctkGH, int const dir, int PDupwindNthSymm1Xt1*Abs(beta1L) + PDupwindNthSymm2Xt1*Abs(beta2L) + PDupwindNthSymm3Xt1*Abs(beta3L))); - CCTK_REAL dotXt2 = kthird*(gtu21*(PDstandardNth11beta1 + + CCTK_REAL dotXt2 = kthird*(gtu12*(PDstandardNth11beta1 + 7*PDstandardNth12beta2 + PDstandardNth13beta3) + gtu22*(PDstandardNth12beta1 + 4*PDstandardNth22beta2 + - PDstandardNth23beta3) + gtu32*(PDstandardNth13beta1 + + PDstandardNth23beta3) + gtu23*(PDstandardNth13beta1 + 7*PDstandardNth23beta2 + PDstandardNth33beta3) - - 6*(Atu21*PDstandardNth1alpha + Atu22*PDstandardNth2alpha + - Atu32*PDstandardNth3alpha) + 6*(gtu31*PDstandardNth13beta2 + - alphaL*(6*(Atu21*cdphi1 + Atu22*cdphi2 + Atu32*cdphi3) + Atu11*Gt211 + - Atu22*Gt222 + 2*(Atu21*Gt212 + Atu31*Gt213 + Atu32*Gt223) + Atu33*Gt233 - - ktwothird*(gtu21*PDstandardNth1trK + gtu22*PDstandardNth2trK + - gtu32*PDstandardNth3trK))) - - 150.7964473723100754462068823974161384415*alphaL*(gtu21*S1 + gtu22*S2 + - gtu32*S3) + 2*(PDstandardNth1beta1 + PDstandardNth2beta2 + + 6*(Atu12*PDstandardNth1alpha + Atu22*PDstandardNth2alpha + + Atu23*PDstandardNth3alpha) + 6*(gtu13*PDstandardNth13beta2 + + alphaL*(6*(Atu12*cdphi1 + Atu22*cdphi2 + Atu23*cdphi3) + Atu11*Gt211 + + Atu22*Gt222 + 2*(Atu12*Gt212 + Atu13*Gt213 + Atu23*Gt223) + Atu33*Gt233 + - ktwothird*(gtu12*PDstandardNth1trK + gtu22*PDstandardNth2trK + + gtu23*PDstandardNth3trK))) - + 150.7964473723100754462068823974161384415*alphaL*(gtu12*S1 + gtu22*S2 + + gtu23*S3) + 2*(PDstandardNth1beta1 + PDstandardNth2beta2 + PDstandardNth3beta3)*Xtn2 - 3*(PDstandardNth1beta2*Xtn1 + PDstandardNth2beta2*Xtn2 + PDstandardNth3beta2*Xtn3) + 3*(epsdiss1*PDdissipationNth1Xt2 + epsdiss2*PDdissipationNth2Xt2 + @@ -879,18 +912,18 @@ void ML_BSSN_O8_RHS1_Body(cGH const * restrict const cctkGH, int const dir, int PDupwindNthSymm1Xt2*Abs(beta1L) + PDupwindNthSymm2Xt2*Abs(beta2L) + PDupwindNthSymm3Xt2*Abs(beta3L))); - CCTK_REAL dotXt3 = kthird*(gtu31*(PDstandardNth11beta1 + + CCTK_REAL dotXt3 = kthird*(gtu13*(PDstandardNth11beta1 + PDstandardNth12beta2 + 7*PDstandardNth13beta3) + - gtu32*(PDstandardNth12beta1 + PDstandardNth22beta2 + + gtu23*(PDstandardNth12beta1 + PDstandardNth22beta2 + 7*PDstandardNth23beta3) + gtu33*(PDstandardNth13beta1 + PDstandardNth23beta2 + 4*PDstandardNth33beta3) - - 6*(Atu31*PDstandardNth1alpha + Atu32*PDstandardNth2alpha + - Atu33*PDstandardNth3alpha) + 6*(gtu21*PDstandardNth12beta3 + - alphaL*(6*(Atu31*cdphi1 + Atu32*cdphi2 + Atu33*cdphi3) + Atu11*Gt311 + - Atu22*Gt322 + 2*(Atu21*Gt312 + Atu31*Gt313 + Atu32*Gt323) + Atu33*Gt333 - - ktwothird*(gtu31*PDstandardNth1trK + gtu32*PDstandardNth2trK + + 6*(Atu13*PDstandardNth1alpha + Atu23*PDstandardNth2alpha + + Atu33*PDstandardNth3alpha) + 6*(gtu12*PDstandardNth12beta3 + + alphaL*(6*(Atu13*cdphi1 + Atu23*cdphi2 + Atu33*cdphi3) + Atu11*Gt311 + + Atu22*Gt322 + 2*(Atu12*Gt312 + Atu13*Gt313 + Atu23*Gt323) + Atu33*Gt333 + - ktwothird*(gtu13*PDstandardNth1trK + gtu23*PDstandardNth2trK + gtu33*PDstandardNth3trK))) - - 150.7964473723100754462068823974161384415*alphaL*(gtu31*S1 + gtu32*S2 + + 150.7964473723100754462068823974161384415*alphaL*(gtu13*S1 + gtu23*S2 + gtu33*S3) + 2*(PDstandardNth1beta1 + PDstandardNth2beta2 + PDstandardNth3beta3)*Xtn3 - 3*(PDstandardNth1beta3*Xtn1 + PDstandardNth2beta3*Xtn2 + PDstandardNth3beta3*Xtn3) + @@ -912,12 +945,12 @@ void ML_BSSN_O8_RHS1_Body(cGH const * restrict const cctkGH, int const dir, int beta1L*PDupwindNthAnti1trK + beta2L*PDupwindNthAnti2trK + beta3L*PDupwindNthAnti3trK - em4phi*(gtu11*PDstandardNth11alpha + gtu22*PDstandardNth22alpha + gtu33*(PDstandardNth33alpha + - 2*cdphi3*PDstandardNth3alpha) + 2*(gtu21*PDstandardNth12alpha + - gtu31*(PDstandardNth13alpha + cdphi1*PDstandardNth3alpha) + - gtu32*(PDstandardNth23alpha + cdphi2*PDstandardNth3alpha)) + - PDstandardNth1alpha*(2*(cdphi1*gtu11 + cdphi2*gtu21 + cdphi3*gtu31) - - Xtn1) + PDstandardNth2alpha*(2*(cdphi1*gtu21 + cdphi2*gtu22 + - cdphi3*gtu32) - Xtn2) - PDstandardNth3alpha*Xtn3) + + 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) + PDupwindNthSymm1trK*Abs(beta1L) + PDupwindNthSymm2trK*Abs(beta2L) + PDupwindNthSymm3trK*Abs(beta3L) + alphaL*(2*(Atm12*Atm21 + Atm13*Atm31 + Atm23*Atm32) + 12.56637061435917295385057353311801153679*(rho + trS) diff --git a/ML_BSSN_O8/src/ML_BSSN_O8_RHS2.c b/ML_BSSN_O8/src/ML_BSSN_O8_RHS2.c index d612982..a240aa3 100644 --- a/ML_BSSN_O8/src/ML_BSSN_O8_RHS2.c +++ b/ML_BSSN_O8/src/ML_BSSN_O8_RHS2.c @@ -20,6 +20,18 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((x) * (x) * (x) * (x)) +void ML_BSSN_O8_RHS2_SelectBCs(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT ierr = 0; + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O8::ML_curvrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O8::ML_curvrhs."); + return; +} + 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[]) { DECLARE_CCTK_ARGUMENTS; @@ -433,13 +445,13 @@ void ML_BSSN_O8_RHS2_Body(cGH const * restrict const cctkGH, int const dir, int CCTK_REAL gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L)); - CCTK_REAL gtu21 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt); + CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt); - CCTK_REAL gtu31 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt); + CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt); CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L)); - CCTK_REAL gtu32 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt); + CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt); CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L)); @@ -482,104 +494,104 @@ void ML_BSSN_O8_RHS2_Body(cGH const * restrict const cctkGH, int const dir, int CCTK_REAL Gtl333 = khalf*PDstandardNth3gt33; - CCTK_REAL Gtlu111 = Gtl111*gtu11 + Gtl112*gtu21 + Gtl113*gtu31; + CCTK_REAL Gtlu111 = Gtl111*gtu11 + Gtl112*gtu12 + Gtl113*gtu13; - CCTK_REAL Gtlu112 = Gtl111*gtu21 + Gtl112*gtu22 + Gtl113*gtu32; + CCTK_REAL Gtlu112 = Gtl111*gtu12 + Gtl112*gtu22 + Gtl113*gtu23; - CCTK_REAL Gtlu113 = Gtl111*gtu31 + Gtl112*gtu32 + Gtl113*gtu33; + CCTK_REAL Gtlu113 = Gtl111*gtu13 + Gtl112*gtu23 + Gtl113*gtu33; - CCTK_REAL Gtlu121 = Gtl112*gtu11 + Gtl122*gtu21 + Gtl123*gtu31; + CCTK_REAL Gtlu121 = Gtl112*gtu11 + Gtl122*gtu12 + Gtl123*gtu13; - CCTK_REAL Gtlu122 = Gtl112*gtu21 + Gtl122*gtu22 + Gtl123*gtu32; + CCTK_REAL Gtlu122 = Gtl112*gtu12 + Gtl122*gtu22 + Gtl123*gtu23; - CCTK_REAL Gtlu123 = Gtl112*gtu31 + Gtl122*gtu32 + Gtl123*gtu33; + CCTK_REAL Gtlu123 = Gtl112*gtu13 + Gtl122*gtu23 + Gtl123*gtu33; - CCTK_REAL Gtlu131 = Gtl113*gtu11 + Gtl123*gtu21 + Gtl133*gtu31; + CCTK_REAL Gtlu131 = Gtl113*gtu11 + Gtl123*gtu12 + Gtl133*gtu13; - CCTK_REAL Gtlu132 = Gtl113*gtu21 + Gtl123*gtu22 + Gtl133*gtu32; + CCTK_REAL Gtlu132 = Gtl113*gtu12 + Gtl123*gtu22 + Gtl133*gtu23; - CCTK_REAL Gtlu133 = Gtl113*gtu31 + Gtl123*gtu32 + Gtl133*gtu33; + CCTK_REAL Gtlu133 = Gtl113*gtu13 + Gtl123*gtu23 + Gtl133*gtu33; - CCTK_REAL Gtlu211 = Gtl211*gtu11 + Gtl212*gtu21 + Gtl213*gtu31; + CCTK_REAL Gtlu211 = Gtl211*gtu11 + Gtl212*gtu12 + Gtl213*gtu13; - CCTK_REAL Gtlu212 = Gtl211*gtu21 + Gtl212*gtu22 + Gtl213*gtu32; + CCTK_REAL Gtlu212 = Gtl211*gtu12 + Gtl212*gtu22 + Gtl213*gtu23; - CCTK_REAL Gtlu213 = Gtl211*gtu31 + Gtl212*gtu32 + Gtl213*gtu33; + CCTK_REAL Gtlu213 = Gtl211*gtu13 + Gtl212*gtu23 + Gtl213*gtu33; - CCTK_REAL Gtlu221 = Gtl212*gtu11 + Gtl222*gtu21 + Gtl223*gtu31; + CCTK_REAL Gtlu221 = Gtl212*gtu11 + Gtl222*gtu12 + Gtl223*gtu13; - CCTK_REAL Gtlu222 = Gtl212*gtu21 + Gtl222*gtu22 + Gtl223*gtu32; + CCTK_REAL Gtlu222 = Gtl212*gtu12 + Gtl222*gtu22 + Gtl223*gtu23; - CCTK_REAL Gtlu223 = Gtl212*gtu31 + Gtl222*gtu32 + Gtl223*gtu33; + CCTK_REAL Gtlu223 = Gtl212*gtu13 + Gtl222*gtu23 + Gtl223*gtu33; - CCTK_REAL Gtlu231 = Gtl213*gtu11 + Gtl223*gtu21 + Gtl233*gtu31; + CCTK_REAL Gtlu231 = Gtl213*gtu11 + Gtl223*gtu12 + Gtl233*gtu13; - CCTK_REAL Gtlu232 = Gtl213*gtu21 + Gtl223*gtu22 + Gtl233*gtu32; + CCTK_REAL Gtlu232 = Gtl213*gtu12 + Gtl223*gtu22 + Gtl233*gtu23; - CCTK_REAL Gtlu233 = Gtl213*gtu31 + Gtl223*gtu32 + Gtl233*gtu33; + CCTK_REAL Gtlu233 = Gtl213*gtu13 + Gtl223*gtu23 + Gtl233*gtu33; - CCTK_REAL Gtlu311 = Gtl311*gtu11 + Gtl312*gtu21 + Gtl313*gtu31; + CCTK_REAL Gtlu311 = Gtl311*gtu11 + Gtl312*gtu12 + Gtl313*gtu13; - CCTK_REAL Gtlu312 = Gtl311*gtu21 + Gtl312*gtu22 + Gtl313*gtu32; + CCTK_REAL Gtlu312 = Gtl311*gtu12 + Gtl312*gtu22 + Gtl313*gtu23; - CCTK_REAL Gtlu313 = Gtl311*gtu31 + Gtl312*gtu32 + Gtl313*gtu33; + CCTK_REAL Gtlu313 = Gtl311*gtu13 + Gtl312*gtu23 + Gtl313*gtu33; - CCTK_REAL Gtlu321 = Gtl312*gtu11 + Gtl322*gtu21 + Gtl323*gtu31; + CCTK_REAL Gtlu321 = Gtl312*gtu11 + Gtl322*gtu12 + Gtl323*gtu13; - CCTK_REAL Gtlu322 = Gtl312*gtu21 + Gtl322*gtu22 + Gtl323*gtu32; + CCTK_REAL Gtlu322 = Gtl312*gtu12 + Gtl322*gtu22 + Gtl323*gtu23; - CCTK_REAL Gtlu323 = Gtl312*gtu31 + Gtl322*gtu32 + Gtl323*gtu33; + CCTK_REAL Gtlu323 = Gtl312*gtu13 + Gtl322*gtu23 + Gtl323*gtu33; - CCTK_REAL Gtlu331 = Gtl313*gtu11 + Gtl323*gtu21 + Gtl333*gtu31; + CCTK_REAL Gtlu331 = Gtl313*gtu11 + Gtl323*gtu12 + Gtl333*gtu13; - CCTK_REAL Gtlu332 = Gtl313*gtu21 + Gtl323*gtu22 + Gtl333*gtu32; + CCTK_REAL Gtlu332 = Gtl313*gtu12 + Gtl323*gtu22 + Gtl333*gtu23; - CCTK_REAL Gtlu333 = Gtl313*gtu31 + Gtl323*gtu32 + Gtl333*gtu33; + CCTK_REAL Gtlu333 = Gtl313*gtu13 + Gtl323*gtu23 + Gtl333*gtu33; - CCTK_REAL Gt111 = Gtl111*gtu11 + Gtl211*gtu21 + Gtl311*gtu31; + CCTK_REAL Gt111 = Gtl111*gtu11 + Gtl211*gtu12 + Gtl311*gtu13; - CCTK_REAL Gt211 = Gtl111*gtu21 + Gtl211*gtu22 + Gtl311*gtu32; + CCTK_REAL Gt211 = Gtl111*gtu12 + Gtl211*gtu22 + Gtl311*gtu23; - CCTK_REAL Gt311 = Gtl111*gtu31 + Gtl211*gtu32 + Gtl311*gtu33; + CCTK_REAL Gt311 = Gtl111*gtu13 + Gtl211*gtu23 + Gtl311*gtu33; - CCTK_REAL Gt112 = Gtl112*gtu11 + Gtl212*gtu21 + Gtl312*gtu31; + CCTK_REAL Gt112 = Gtl112*gtu11 + Gtl212*gtu12 + Gtl312*gtu13; - CCTK_REAL Gt212 = Gtl112*gtu21 + Gtl212*gtu22 + Gtl312*gtu32; + CCTK_REAL Gt212 = Gtl112*gtu12 + Gtl212*gtu22 + Gtl312*gtu23; - CCTK_REAL Gt312 = Gtl112*gtu31 + Gtl212*gtu32 + Gtl312*gtu33; + CCTK_REAL Gt312 = Gtl112*gtu13 + Gtl212*gtu23 + Gtl312*gtu33; - CCTK_REAL Gt113 = Gtl113*gtu11 + Gtl213*gtu21 + Gtl313*gtu31; + CCTK_REAL Gt113 = Gtl113*gtu11 + Gtl213*gtu12 + Gtl313*gtu13; - CCTK_REAL Gt213 = Gtl113*gtu21 + Gtl213*gtu22 + Gtl313*gtu32; + CCTK_REAL Gt213 = Gtl113*gtu12 + Gtl213*gtu22 + Gtl313*gtu23; - CCTK_REAL Gt313 = Gtl113*gtu31 + Gtl213*gtu32 + Gtl313*gtu33; + CCTK_REAL Gt313 = Gtl113*gtu13 + Gtl213*gtu23 + Gtl313*gtu33; - CCTK_REAL Gt122 = Gtl122*gtu11 + Gtl222*gtu21 + Gtl322*gtu31; + CCTK_REAL Gt122 = Gtl122*gtu11 + Gtl222*gtu12 + Gtl322*gtu13; - CCTK_REAL Gt222 = Gtl122*gtu21 + Gtl222*gtu22 + Gtl322*gtu32; + CCTK_REAL Gt222 = Gtl122*gtu12 + Gtl222*gtu22 + Gtl322*gtu23; - CCTK_REAL Gt322 = Gtl122*gtu31 + Gtl222*gtu32 + Gtl322*gtu33; + CCTK_REAL Gt322 = Gtl122*gtu13 + Gtl222*gtu23 + Gtl322*gtu33; - CCTK_REAL Gt123 = Gtl123*gtu11 + Gtl223*gtu21 + Gtl323*gtu31; + CCTK_REAL Gt123 = Gtl123*gtu11 + Gtl223*gtu12 + Gtl323*gtu13; - CCTK_REAL Gt223 = Gtl123*gtu21 + Gtl223*gtu22 + Gtl323*gtu32; + CCTK_REAL Gt223 = Gtl123*gtu12 + Gtl223*gtu22 + Gtl323*gtu23; - CCTK_REAL Gt323 = Gtl123*gtu31 + Gtl223*gtu32 + Gtl323*gtu33; + CCTK_REAL Gt323 = Gtl123*gtu13 + Gtl223*gtu23 + Gtl323*gtu33; - CCTK_REAL Gt133 = Gtl133*gtu11 + Gtl233*gtu21 + Gtl333*gtu31; + CCTK_REAL Gt133 = Gtl133*gtu11 + Gtl233*gtu12 + Gtl333*gtu13; - CCTK_REAL Gt233 = Gtl133*gtu21 + Gtl233*gtu22 + Gtl333*gtu32; + CCTK_REAL Gt233 = Gtl133*gtu12 + Gtl233*gtu22 + Gtl333*gtu23; - CCTK_REAL Gt333 = Gtl133*gtu31 + Gtl233*gtu32 + Gtl333*gtu33; + CCTK_REAL Gt333 = Gtl133*gtu13 + Gtl233*gtu23 + Gtl333*gtu33; - CCTK_REAL Xtn1 = Gt111*gtu11 + Gt122*gtu22 + 2*(Gt112*gtu21 + - Gt113*gtu31 + Gt123*gtu32) + Gt133*gtu33; + CCTK_REAL Xtn1 = Gt111*gtu11 + Gt122*gtu22 + 2*(Gt112*gtu12 + + Gt113*gtu13 + Gt123*gtu23) + Gt133*gtu33; - CCTK_REAL Xtn2 = Gt211*gtu11 + Gt222*gtu22 + 2*(Gt212*gtu21 + - Gt213*gtu31 + Gt223*gtu32) + Gt233*gtu33; + CCTK_REAL Xtn2 = Gt211*gtu11 + Gt222*gtu22 + 2*(Gt212*gtu12 + + Gt213*gtu13 + Gt223*gtu23) + Gt233*gtu33; - CCTK_REAL Xtn3 = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu21 + - Gt313*gtu31 + Gt323*gtu32) + Gt333*gtu33; + CCTK_REAL Xtn3 = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu12 + + Gt313*gtu13 + Gt323*gtu23) + Gt333*gtu33; CCTK_REAL Rt11 = 3*(Gt111*Gtlu111 + Gt112*Gtlu112 + Gt113*Gtlu113) + 2*(Gt211*Gtlu121 + Gt212*Gtlu122 + Gt213*Gtlu123 + Gt311*Gtlu131 + @@ -587,8 +599,8 @@ void ML_BSSN_O8_RHS2_Body(cGH const * restrict const cctkGH, int const dir, int Gt213*Gtlu213 + Gt311*Gtlu311 + Gt312*Gtlu312 + Gt313*Gtlu313 + gt11L*PDstandardNth1Xt1 + gt12L*PDstandardNth1Xt2 + gt13L*PDstandardNth1Xt3 + khalf*(-(gtu11*PDstandardNth11gt11) - - 2*gtu21*PDstandardNth12gt11 - 2*gtu31*PDstandardNth13gt11 - - gtu22*PDstandardNth22gt11 - 2*gtu32*PDstandardNth23gt11 - + 2*gtu12*PDstandardNth12gt11 - 2*gtu13*PDstandardNth13gt11 - + gtu22*PDstandardNth22gt11 - 2*gtu23*PDstandardNth23gt11 - gtu33*PDstandardNth33gt11) + Gtl111*Xtn1 + Gtl112*Xtn2 + Gtl113*Xtn3; CCTK_REAL Rt12 = khalf*(4*(Gt211*Gtlu221 + Gt212*Gtlu222 + @@ -598,10 +610,10 @@ void ML_BSSN_O8_RHS2_Body(cGH const * restrict const cctkGH, int const dir, int Gt323*Gtlu133 + Gt111*Gtlu211 + Gt112*Gtlu212 + Gt113*Gtlu213 + Gt311*Gtlu231 + Gt312*Gtlu232 + Gt313*Gtlu233 + Gt311*Gtlu321 + Gt312*Gtlu322 + Gt313*Gtlu323) - gtu11*PDstandardNth11gt12 - - 2*gtu21*PDstandardNth12gt12 - 2*gtu31*PDstandardNth13gt12 + + 2*gtu12*PDstandardNth12gt12 - 2*gtu13*PDstandardNth13gt12 + gt12L*PDstandardNth1Xt1 + gt22L*PDstandardNth1Xt2 + gt23L*PDstandardNth1Xt3 - gtu22*PDstandardNth22gt12 - - 2*gtu32*PDstandardNth23gt12 + gt11L*PDstandardNth2Xt1 + + 2*gtu23*PDstandardNth23gt12 + gt11L*PDstandardNth2Xt1 + gt12L*PDstandardNth2Xt2 + gt13L*PDstandardNth2Xt3 - gtu33*PDstandardNth33gt12 + Gtl112*Xtn1 + Gtl211*Xtn1 + Gtl122*Xtn2 + Gtl212*Xtn2 + Gtl123*Xtn3 + Gtl213*Xtn3); @@ -613,10 +625,10 @@ void ML_BSSN_O8_RHS2_Body(cGH const * restrict const cctkGH, int const dir, int Gt213*Gtlu233 + Gt111*Gtlu311 + Gt112*Gtlu312 + Gt113*Gtlu313 + Gt211*Gtlu321 + Gt212*Gtlu322 + Gt213*Gtlu323) + 4*(Gt311*Gtlu331 + Gt312*Gtlu332 + Gt313*Gtlu333) - gtu11*PDstandardNth11gt13 - - 2*gtu21*PDstandardNth12gt13 - 2*gtu31*PDstandardNth13gt13 + + 2*gtu12*PDstandardNth12gt13 - 2*gtu13*PDstandardNth13gt13 + gt13L*PDstandardNth1Xt1 + gt23L*PDstandardNth1Xt2 + gt33L*PDstandardNth1Xt3 - gtu22*PDstandardNth22gt13 - - 2*gtu32*PDstandardNth23gt13 - gtu33*PDstandardNth33gt13 + + 2*gtu23*PDstandardNth23gt13 - gtu33*PDstandardNth33gt13 + gt11L*PDstandardNth3Xt1 + gt12L*PDstandardNth3Xt2 + gt13L*PDstandardNth3Xt3 + Gtl113*Xtn1 + Gtl311*Xtn1 + Gtl123*Xtn2 + Gtl312*Xtn2 + Gtl133*Xtn3 + Gtl313*Xtn3); @@ -627,8 +639,8 @@ void ML_BSSN_O8_RHS2_Body(cGH const * restrict const cctkGH, int const dir, int Gt323*Gtlu233) + Gt312*Gtlu321 + Gt322*Gtlu322 + Gt323*Gtlu323 + gt12L*PDstandardNth2Xt1 + gt22L*PDstandardNth2Xt2 + gt23L*PDstandardNth2Xt3 + khalf*(-(gtu11*PDstandardNth11gt22) - - 2*gtu21*PDstandardNth12gt22 - 2*gtu31*PDstandardNth13gt22 - - gtu22*PDstandardNth22gt22 - 2*gtu32*PDstandardNth23gt22 - + 2*gtu12*PDstandardNth12gt22 - 2*gtu13*PDstandardNth13gt22 - + gtu22*PDstandardNth22gt22 - 2*gtu23*PDstandardNth23gt22 - gtu33*PDstandardNth33gt22) + Gtl212*Xtn1 + Gtl222*Xtn2 + Gtl223*Xtn3; CCTK_REAL Rt23 = khalf*(2*(Gt112*Gtlu131 + Gt122*Gtlu132 + @@ -638,8 +650,8 @@ void ML_BSSN_O8_RHS2_Body(cGH const * restrict const cctkGH, int const dir, int Gt333*Gtlu233 + Gt112*Gtlu311 + Gt122*Gtlu312 + Gt123*Gtlu313 + Gt212*Gtlu321 + Gt222*Gtlu322 + Gt223*Gtlu323) + 4*(Gt312*Gtlu331 + Gt322*Gtlu332 + Gt323*Gtlu333) - gtu11*PDstandardNth11gt23 - - 2*gtu21*PDstandardNth12gt23 - 2*gtu31*PDstandardNth13gt23 - - gtu22*PDstandardNth22gt23 - 2*gtu32*PDstandardNth23gt23 + + 2*gtu12*PDstandardNth12gt23 - 2*gtu13*PDstandardNth13gt23 - + gtu22*PDstandardNth22gt23 - 2*gtu23*PDstandardNth23gt23 + gt13L*PDstandardNth2Xt1 + gt23L*PDstandardNth2Xt2 + gt33L*PDstandardNth2Xt3 - gtu33*PDstandardNth33gt23 + gt12L*PDstandardNth3Xt1 + gt22L*PDstandardNth3Xt2 + @@ -650,9 +662,9 @@ void ML_BSSN_O8_RHS2_Body(cGH const * restrict const cctkGH, int const dir, int 2*Gtlu312) + Gt133*(Gtlu133 + 2*Gtlu313) + Gt213*(Gtlu231 + 2*Gtlu321) + Gt223*(Gtlu232 + 2*Gtlu322) + Gt233*(Gtlu233 + 2*Gtlu323) + 3*(Gt313*Gtlu331 + Gt323*Gtlu332 + Gt333*Gtlu333) + - khalf*(-(gtu11*PDstandardNth11gt33) - 2*gtu21*PDstandardNth12gt33 - - 2*gtu31*PDstandardNth13gt33 - gtu22*PDstandardNth22gt33 - - 2*gtu32*PDstandardNth23gt33 - gtu33*PDstandardNth33gt33) + + khalf*(-(gtu11*PDstandardNth11gt33) - 2*gtu12*PDstandardNth12gt33 - + 2*gtu13*PDstandardNth13gt33 - gtu22*PDstandardNth22gt33 - + 2*gtu23*PDstandardNth23gt33 - gtu33*PDstandardNth33gt33) + gt13L*PDstandardNth3Xt1 + gt23L*PDstandardNth3Xt2 + gt33L*PDstandardNth3Xt3 + Gtl313*Xtn1 + Gtl323*Xtn2 + Gtl333*Xtn3; @@ -691,58 +703,58 @@ void ML_BSSN_O8_RHS2_Body(cGH const * restrict const cctkGH, int const dir, int Gt333*PDstandardNth3phi)) + fac2*SQR(PDstandardNth3phi); CCTK_REAL Rphi11 = -2*(cdphi211 + 2*(-1 + gt11L*gtu11)*SQR(cdphi1) + - gt11L*(cdphi211*gtu11 + 4*(cdphi1*(cdphi2*gtu21 + cdphi3*gtu31) + - cdphi2*cdphi3*gtu32) + cdphi233*gtu33 + gtu22*(cdphi222 + - 2*SQR(cdphi2)) + 2*(cdphi212*gtu21 + cdphi213*gtu31 + cdphi223*gtu32 + + 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 Rphi12 = -2*(cdphi212 + cdphi1*(cdphi2*(-2 + 4*gt12L*gtu21) - + 4*cdphi3*gt12L*gtu31) + gt12L*(cdphi211*gtu11 + 4*cdphi2*cdphi3*gtu32 - + 2*(cdphi212*gtu21 + cdphi213*gtu31 + cdphi223*gtu32 + + 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 Rphi13 = -2*(cdphi213 + cdphi1*(4*cdphi2*gt13L*gtu21 + - cdphi3*(-2 + 4*gt13L*gtu31)) + gt13L*(cdphi211*gtu11 + - 4*cdphi2*cdphi3*gtu32 + 2*(cdphi212*gtu21 + cdphi213*gtu31 + - cdphi223*gtu32 + gtu11*SQR(cdphi1)) + gtu22*(cdphi222 + 2*SQR(cdphi2)) + 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 Rphi22 = -2*(cdphi222 + 2*(-1 + gt22L*gtu22)*SQR(cdphi2) + - gt22L*(cdphi222*gtu22 + 4*(cdphi1*cdphi3*gtu31 + cdphi2*(cdphi1*gtu21 + - cdphi3*gtu32)) + cdphi233*gtu33 + gtu11*(cdphi211 + 2*SQR(cdphi1)) + - 2*(cdphi212*gtu21 + cdphi213*gtu31 + cdphi223*gtu32 + + 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 Rphi23 = -2*(cdphi223 + cdphi2*(4*cdphi1*gt23L*gtu21 + - cdphi3*(-2 + 4*gt23L*gtu32)) + gt23L*(cdphi222*gtu22 + - 4*cdphi1*cdphi3*gtu31 + gtu11*(cdphi211 + 2*SQR(cdphi1)) + - 2*(cdphi212*gtu21 + cdphi213*gtu31 + cdphi223*gtu32 + - gtu22*SQR(cdphi2)) + gtu33*(cdphi233 + 2*SQR(cdphi3)))); + 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 Rphi33 = -2*(cdphi233 + gt33L*((4*cdphi1*cdphi2 + - 2*cdphi212)*gtu21 + 4*cdphi3*(cdphi1*gtu31 + cdphi2*gtu32) + - 2*(cdphi213*gtu31 + cdphi223*gtu32) + cdphi233*gtu33 + gtu11*(cdphi211 + 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 Atm11 = At11L*gtu11 + At12L*gtu21 + At13L*gtu31; + CCTK_REAL Atm11 = At11L*gtu11 + At12L*gtu12 + At13L*gtu13; - CCTK_REAL Atm21 = At11L*gtu21 + At12L*gtu22 + At13L*gtu32; + CCTK_REAL Atm21 = At11L*gtu12 + At12L*gtu22 + At13L*gtu23; - CCTK_REAL Atm31 = At11L*gtu31 + At12L*gtu32 + At13L*gtu33; + CCTK_REAL Atm31 = At11L*gtu13 + At12L*gtu23 + At13L*gtu33; - CCTK_REAL Atm12 = At12L*gtu11 + At22L*gtu21 + At23L*gtu31; + CCTK_REAL Atm12 = At12L*gtu11 + At22L*gtu12 + At23L*gtu13; - CCTK_REAL Atm22 = At12L*gtu21 + At22L*gtu22 + At23L*gtu32; + CCTK_REAL Atm22 = At12L*gtu12 + At22L*gtu22 + At23L*gtu23; - CCTK_REAL Atm32 = At12L*gtu31 + At22L*gtu32 + At23L*gtu33; + CCTK_REAL Atm32 = At12L*gtu13 + At22L*gtu23 + At23L*gtu33; - CCTK_REAL Atm13 = At13L*gtu11 + At23L*gtu21 + At33L*gtu31; + CCTK_REAL Atm13 = At13L*gtu11 + At23L*gtu12 + At33L*gtu13; - CCTK_REAL Atm23 = At13L*gtu21 + At23L*gtu22 + At33L*gtu32; + CCTK_REAL Atm23 = At13L*gtu12 + At23L*gtu22 + At33L*gtu23; - CCTK_REAL Atm33 = At13L*gtu31 + At23L*gtu32 + At33L*gtu33; + CCTK_REAL Atm33 = At13L*gtu13 + At23L*gtu23 + At33L*gtu33; CCTK_REAL e4phi = IfThen(conformalMethod,pow(phiL,-2),exp(4*phiL)); @@ -762,13 +774,13 @@ void ML_BSSN_O8_RHS2_Body(cGH const * restrict const cctkGH, int const dir, int CCTK_REAL gu11 = em4phi*gtu11; - CCTK_REAL gu21 = em4phi*gtu21; + CCTK_REAL gu12 = em4phi*gtu12; - CCTK_REAL gu31 = em4phi*gtu31; + CCTK_REAL gu13 = em4phi*gtu13; CCTK_REAL gu22 = em4phi*gtu22; - CCTK_REAL gu32 = em4phi*gtu32; + CCTK_REAL gu23 = em4phi*gtu23; CCTK_REAL gu33 = em4phi*gtu33; @@ -784,8 +796,8 @@ void ML_BSSN_O8_RHS2_Body(cGH const * restrict const cctkGH, int const dir, int CCTK_REAL R33 = Rphi33 + Rt33; - CCTK_REAL trS = em4phi*(eTxxL*gtu11 + eTyyL*gtu22 + 2*(eTxyL*gtu21 + - eTxzL*gtu31 + eTyzL*gtu32) + eTzzL*gtu33); + CCTK_REAL trS = em4phi*(eTxxL*gtu11 + eTyyL*gtu22 + 2*(eTxyL*gtu12 + + eTxzL*gtu13 + eTyzL*gtu23) + eTzzL*gtu33); CCTK_REAL Ats11 = -PDstandardNth11alpha + (4*cdphi1 + Gt111)*PDstandardNth1alpha + Gt211*PDstandardNth2alpha + @@ -811,8 +823,8 @@ void ML_BSSN_O8_RHS2_Body(cGH const * restrict const cctkGH, int const dir, int Gt233*PDstandardNth2alpha - PDstandardNth33alpha + (4*cdphi3 + Gt333)*PDstandardNth3alpha + alphaL*R33; - CCTK_REAL trAts = Ats11*gu11 + Ats22*gu22 + 2*(Ats12*gu21 + Ats13*gu31 - + Ats23*gu32) + Ats33*gu33; + CCTK_REAL trAts = Ats11*gu11 + Ats22*gu22 + 2*(Ats12*gu12 + Ats13*gu13 + + Ats23*gu23) + Ats33*gu33; CCTK_REAL At11rhsL = -2.*alphaL*(At11L*Atm11 + At12L*Atm21 + At13L*Atm31) + epsdiss1*PDdissipationNth1At11 + diff --git a/ML_BSSN_O8/src/ML_BSSN_O8_RHSRadiativeBoundary.c b/ML_BSSN_O8/src/ML_BSSN_O8_RHSRadiativeBoundary.c index 008c907..22de0f5 100644 --- a/ML_BSSN_O8/src/ML_BSSN_O8_RHSRadiativeBoundary.c +++ b/ML_BSSN_O8/src/ML_BSSN_O8_RHSRadiativeBoundary.c @@ -20,6 +20,42 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((x) * (x) * (x) * (x)) +void ML_BSSN_O8_RHSRadiativeBoundary_SelectBCs(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT ierr = 0; + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O8::ML_curvrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O8::ML_curvrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O8::ML_dtlapserhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O8::ML_dtlapserhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O8::ML_dtshiftrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O8::ML_dtshiftrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O8::ML_Gammarhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O8::ML_Gammarhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O8::ML_lapserhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O8::ML_lapserhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O8::ML_log_confacrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O8::ML_log_confacrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O8::ML_metricrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O8::ML_metricrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O8::ML_shiftrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O8::ML_shiftrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O8::ML_trace_curvrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O8::ML_trace_curvrhs."); + return; +} + void ML_BSSN_O8_RHSRadiativeBoundary_Body(cGH const * restrict const cctkGH, int const dir, int const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], int const min[3], int const max[3], int const n_subblock_gfs, CCTK_REAL * restrict const subblock_gfs[]) { DECLARE_CCTK_ARGUMENTS; @@ -137,13 +173,13 @@ void ML_BSSN_O8_RHSRadiativeBoundary_Body(cGH const * restrict const cctkGH, int CCTK_REAL gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L)); - CCTK_REAL gtu21 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt); + CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt); - CCTK_REAL gtu31 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt); + CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt); CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L)); - CCTK_REAL gtu32 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt); + CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt); CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L)); @@ -151,13 +187,13 @@ void ML_BSSN_O8_RHSRadiativeBoundary_Body(cGH const * restrict const cctkGH, int CCTK_REAL gu11 = em4phi*gtu11; - CCTK_REAL gu21 = em4phi*gtu21; + CCTK_REAL gu12 = em4phi*gtu12; - CCTK_REAL gu31 = em4phi*gtu31; + CCTK_REAL gu13 = em4phi*gtu13; CCTK_REAL gu22 = em4phi*gtu22; - CCTK_REAL gu32 = em4phi*gtu32; + CCTK_REAL gu23 = em4phi*gtu23; CCTK_REAL gu33 = em4phi*gtu33; @@ -167,11 +203,11 @@ void ML_BSSN_O8_RHSRadiativeBoundary_Body(cGH const * restrict const cctkGH, int CCTK_REAL nn3 = normal[2]; - CCTK_REAL nu1 = gu11*nn1 + gu21*nn2 + gu31*nn3; + CCTK_REAL nu1 = gu11*nn1 + gu12*nn2 + gu13*nn3; - CCTK_REAL nu2 = gu21*nn1 + gu22*nn2 + gu32*nn3; + CCTK_REAL nu2 = gu12*nn1 + gu22*nn2 + gu23*nn3; - CCTK_REAL nu3 = gu31*nn1 + gu32*nn2 + gu33*nn3; + CCTK_REAL nu3 = gu13*nn1 + gu23*nn2 + gu33*nn3; CCTK_REAL nlen2 = nn1*nu1 + nn2*nu2 + nn3*nu3; diff --git a/ML_BSSN_O8/src/ML_BSSN_O8_RHSStaticBoundary.c b/ML_BSSN_O8/src/ML_BSSN_O8_RHSStaticBoundary.c index 985796d..eb5f955 100644 --- a/ML_BSSN_O8/src/ML_BSSN_O8_RHSStaticBoundary.c +++ b/ML_BSSN_O8/src/ML_BSSN_O8_RHSStaticBoundary.c @@ -20,6 +20,42 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((x) * (x) * (x) * (x)) +void ML_BSSN_O8_RHSStaticBoundary_SelectBCs(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT ierr = 0; + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O8::ML_curvrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O8::ML_curvrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O8::ML_dtlapserhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O8::ML_dtlapserhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O8::ML_dtshiftrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O8::ML_dtshiftrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O8::ML_Gammarhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O8::ML_Gammarhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O8::ML_lapserhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O8::ML_lapserhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O8::ML_log_confacrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O8::ML_log_confacrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O8::ML_metricrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O8::ML_metricrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O8::ML_shiftrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O8::ML_shiftrhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O8::ML_trace_curvrhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O8::ML_trace_curvrhs."); + return; +} + 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[]) { DECLARE_CCTK_ARGUMENTS; diff --git a/ML_BSSN_O8/src/ML_BSSN_O8_boundary.c b/ML_BSSN_O8/src/ML_BSSN_O8_boundary.c index 0e28597..95e3140 100644 --- a/ML_BSSN_O8/src/ML_BSSN_O8_boundary.c +++ b/ML_BSSN_O8/src/ML_BSSN_O8_boundary.c @@ -20,6 +20,42 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((x) * (x) * (x) * (x)) +void ML_BSSN_O8_boundary_SelectBCs(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT ierr = 0; + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O8::ML_curv","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O8::ML_curv."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O8::ML_dtlapse","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O8::ML_dtlapse."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O8::ML_dtshift","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O8::ML_dtshift."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O8::ML_Gamma","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O8::ML_Gamma."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O8::ML_lapse","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O8::ML_lapse."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O8::ML_log_confac","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O8::ML_log_confac."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O8::ML_metric","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O8::ML_metric."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O8::ML_shift","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O8::ML_shift."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O8::ML_trace_curv","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O8::ML_trace_curv."); + return; +} + 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[]) { DECLARE_CCTK_ARGUMENTS; diff --git a/ML_BSSN_O8/src/ML_BSSN_O8_constraints.c b/ML_BSSN_O8/src/ML_BSSN_O8_constraints.c index fb000ba..2754c33 100644 --- a/ML_BSSN_O8/src/ML_BSSN_O8_constraints.c +++ b/ML_BSSN_O8/src/ML_BSSN_O8_constraints.c @@ -20,6 +20,30 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((x) * (x) * (x) * (x)) +void ML_BSSN_O8_constraints_SelectBCs(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT ierr = 0; + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O8::ML_cons_detg","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O8::ML_cons_detg."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O8::ML_cons_Gamma","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O8::ML_cons_Gamma."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O8::ML_cons_traceA","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O8::ML_cons_traceA."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O8::ML_Ham","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O8::ML_Ham."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O8::ML_mom","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O8::ML_mom."); + return; +} + void ML_BSSN_O8_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[]) { DECLARE_CCTK_ARGUMENTS; @@ -323,151 +347,151 @@ void ML_BSSN_O8_constraints_Body(cGH const * restrict const cctkGH, int const di CCTK_REAL gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L)); - CCTK_REAL gtu21 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt); + CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt); - CCTK_REAL gtu31 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt); + CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt); CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L)); - CCTK_REAL gtu32 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt); + CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt); CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L)); CCTK_REAL Gt111 = khalf*(gtu11*PDstandardNth1gt11 + - 2*(gtu21*PDstandardNth1gt12 + gtu31*PDstandardNth1gt13) - - gtu21*PDstandardNth2gt11 - gtu31*PDstandardNth3gt11); + 2*(gtu12*PDstandardNth1gt12 + gtu13*PDstandardNth1gt13) - + gtu12*PDstandardNth2gt11 - gtu13*PDstandardNth3gt11); - CCTK_REAL Gt211 = khalf*(gtu21*PDstandardNth1gt11 + - 2*(gtu22*PDstandardNth1gt12 + gtu32*PDstandardNth1gt13) - - gtu22*PDstandardNth2gt11 - gtu32*PDstandardNth3gt11); + CCTK_REAL Gt211 = khalf*(gtu12*PDstandardNth1gt11 + + 2*(gtu22*PDstandardNth1gt12 + gtu23*PDstandardNth1gt13) - + gtu22*PDstandardNth2gt11 - gtu23*PDstandardNth3gt11); - CCTK_REAL Gt311 = khalf*(gtu31*PDstandardNth1gt11 + - 2*(gtu32*PDstandardNth1gt12 + gtu33*PDstandardNth1gt13) - - gtu32*PDstandardNth2gt11 - gtu33*PDstandardNth3gt11); + CCTK_REAL Gt311 = khalf*(gtu13*PDstandardNth1gt11 + + 2*(gtu23*PDstandardNth1gt12 + gtu33*PDstandardNth1gt13) - + gtu23*PDstandardNth2gt11 - gtu33*PDstandardNth3gt11); - CCTK_REAL Gt112 = khalf*(gtu21*PDstandardNth1gt22 + - gtu11*PDstandardNth2gt11 + gtu31*(PDstandardNth1gt23 + + CCTK_REAL Gt112 = khalf*(gtu12*PDstandardNth1gt22 + + gtu11*PDstandardNth2gt11 + gtu13*(PDstandardNth1gt23 + PDstandardNth2gt13 - PDstandardNth3gt12)); CCTK_REAL Gt212 = khalf*(gtu22*PDstandardNth1gt22 + - gtu21*PDstandardNth2gt11 + gtu32*(PDstandardNth1gt23 + + gtu12*PDstandardNth2gt11 + gtu23*(PDstandardNth1gt23 + PDstandardNth2gt13 - PDstandardNth3gt12)); - CCTK_REAL Gt312 = khalf*(gtu32*PDstandardNth1gt22 + - gtu31*PDstandardNth2gt11 + gtu33*(PDstandardNth1gt23 + + CCTK_REAL Gt312 = khalf*(gtu23*PDstandardNth1gt22 + + gtu13*PDstandardNth2gt11 + gtu33*(PDstandardNth1gt23 + PDstandardNth2gt13 - PDstandardNth3gt12)); - CCTK_REAL Gt113 = khalf*(gtu31*PDstandardNth1gt33 + - gtu11*PDstandardNth3gt11 + gtu21*(PDstandardNth1gt23 - + CCTK_REAL Gt113 = khalf*(gtu13*PDstandardNth1gt33 + + gtu11*PDstandardNth3gt11 + gtu12*(PDstandardNth1gt23 - PDstandardNth2gt13 + PDstandardNth3gt12)); - CCTK_REAL Gt213 = khalf*(gtu32*PDstandardNth1gt33 + - gtu21*PDstandardNth3gt11 + gtu22*(PDstandardNth1gt23 - + CCTK_REAL Gt213 = khalf*(gtu23*PDstandardNth1gt33 + + gtu12*PDstandardNth3gt11 + gtu22*(PDstandardNth1gt23 - PDstandardNth2gt13 + PDstandardNth3gt12)); CCTK_REAL Gt313 = khalf*(gtu33*PDstandardNth1gt33 + - gtu31*PDstandardNth3gt11 + gtu32*(PDstandardNth1gt23 - + gtu13*PDstandardNth3gt11 + gtu23*(PDstandardNth1gt23 - PDstandardNth2gt13 + PDstandardNth3gt12)); CCTK_REAL Gt122 = khalf*(gtu11*(-PDstandardNth1gt22 + - 2*PDstandardNth2gt12) + gtu21*PDstandardNth2gt22 + - gtu31*(2*PDstandardNth2gt23 - PDstandardNth3gt22)); + 2*PDstandardNth2gt12) + gtu12*PDstandardNth2gt22 + + gtu13*(2*PDstandardNth2gt23 - PDstandardNth3gt22)); - CCTK_REAL Gt222 = khalf*(gtu21*(-PDstandardNth1gt22 + + CCTK_REAL Gt222 = khalf*(gtu12*(-PDstandardNth1gt22 + 2*PDstandardNth2gt12) + gtu22*PDstandardNth2gt22 + - gtu32*(2*PDstandardNth2gt23 - PDstandardNth3gt22)); + gtu23*(2*PDstandardNth2gt23 - PDstandardNth3gt22)); - CCTK_REAL Gt322 = khalf*(gtu31*(-PDstandardNth1gt22 + - 2*PDstandardNth2gt12) + gtu32*PDstandardNth2gt22 + + CCTK_REAL Gt322 = khalf*(gtu13*(-PDstandardNth1gt22 + + 2*PDstandardNth2gt12) + gtu23*PDstandardNth2gt22 + gtu33*(2*PDstandardNth2gt23 - PDstandardNth3gt22)); - CCTK_REAL Gt123 = khalf*(gtu31*PDstandardNth2gt33 + + CCTK_REAL Gt123 = khalf*(gtu13*PDstandardNth2gt33 + gtu11*(-PDstandardNth1gt23 + PDstandardNth2gt13 + PDstandardNth3gt12) + - gtu21*PDstandardNth3gt22); + gtu12*PDstandardNth3gt22); - CCTK_REAL Gt223 = khalf*(gtu32*PDstandardNth2gt33 + - gtu21*(-PDstandardNth1gt23 + PDstandardNth2gt13 + PDstandardNth3gt12) + + CCTK_REAL Gt223 = khalf*(gtu23*PDstandardNth2gt33 + + gtu12*(-PDstandardNth1gt23 + PDstandardNth2gt13 + PDstandardNth3gt12) + gtu22*PDstandardNth3gt22); CCTK_REAL Gt323 = khalf*(gtu33*PDstandardNth2gt33 + - gtu31*(-PDstandardNth1gt23 + PDstandardNth2gt13 + PDstandardNth3gt12) + - gtu32*PDstandardNth3gt22); + gtu13*(-PDstandardNth1gt23 + PDstandardNth2gt13 + PDstandardNth3gt12) + + gtu23*PDstandardNth3gt22); CCTK_REAL Gt133 = khalf*(-(gtu11*PDstandardNth1gt33) - - gtu21*PDstandardNth2gt33 + 2*gtu11*PDstandardNth3gt13 + - 2*gtu21*PDstandardNth3gt23 + gtu31*PDstandardNth3gt33); + gtu12*PDstandardNth2gt33 + 2*gtu11*PDstandardNth3gt13 + + 2*gtu12*PDstandardNth3gt23 + gtu13*PDstandardNth3gt33); - CCTK_REAL Gt233 = khalf*(-(gtu21*PDstandardNth1gt33) - - gtu22*PDstandardNth2gt33 + 2*gtu21*PDstandardNth3gt13 + - 2*gtu22*PDstandardNth3gt23 + gtu32*PDstandardNth3gt33); + CCTK_REAL Gt233 = khalf*(-(gtu12*PDstandardNth1gt33) - + gtu22*PDstandardNth2gt33 + 2*gtu12*PDstandardNth3gt13 + + 2*gtu22*PDstandardNth3gt23 + gtu23*PDstandardNth3gt33); - CCTK_REAL Gt333 = khalf*(-(gtu31*PDstandardNth1gt33) - - gtu32*PDstandardNth2gt33 + 2*gtu31*PDstandardNth3gt13 + - 2*gtu32*PDstandardNth3gt23 + gtu33*PDstandardNth3gt33); + CCTK_REAL Gt333 = khalf*(-(gtu13*PDstandardNth1gt33) - + gtu23*PDstandardNth2gt33 + 2*gtu13*PDstandardNth3gt13 + + 2*gtu23*PDstandardNth3gt23 + gtu33*PDstandardNth3gt33); CCTK_REAL Rt11 = -(gtu11*khalf*PDstandardNth11gt11) + - gtu21*(2*Gt211*Gt212*gt22L + 4*Gt112*gt13L*Gt311 + 2*Gt113*gt11L*Gt312 + gtu12*(2*Gt211*Gt212*gt22L + 4*Gt112*gt13L*Gt311 + 2*Gt113*gt11L*Gt312 + 2*gt13L*Gt312*Gt313 + 2*gt13L*Gt211*Gt322 + 2*gt13L*Gt311*Gt323 + - 2*Gt311*Gt312*gt33L - PDstandardNth12gt11) - gtu31*PDstandardNth13gt11 - + gt11L*PDstandardNth1Xt1 + gt12L*(4*Gt111*Gt212*gtu21 + - 2*Gt211*Gt222*gtu21 + 2*Gt212*Gt222*gtu22 + 4*Gt113*Gt211*gtu31 + - 4*Gt113*Gt212*gtu32 + 4*Gt113*Gt213*gtu33 + PDstandardNth1Xt2) + - gt13L*(4*Gt111*Gt312*gtu21 + 2*Gt212*Gt312*gtu21 + 4*Gt112*Gt312*gtu22 - + 4*Gt113*Gt311*gtu31 + 4*Gt113*Gt312*gtu32 + 4*Gt113*Gt313*gtu33 + + 2*Gt311*Gt312*gt33L - PDstandardNth12gt11) - gtu13*PDstandardNth13gt11 + + gt11L*PDstandardNth1Xt1 + gt12L*(4*Gt111*Gt212*gtu12 + + 2*Gt211*Gt222*gtu12 + 4*Gt113*Gt211*gtu13 + 4*Gt112*Gt212*gtu22 + + 4*Gt113*Gt212*gtu23 + 4*Gt113*Gt213*gtu33 + PDstandardNth1Xt2) + + gt13L*(4*Gt111*Gt312*gtu12 + 2*Gt212*Gt312*gtu12 + 4*Gt113*Gt311*gtu13 + + 2*Gt212*Gt322*gtu22 + 4*Gt113*Gt312*gtu23 + 4*Gt113*Gt313*gtu33 + PDstandardNth1Xt3) - gtu22*khalf*PDstandardNth22gt11 - - gtu32*PDstandardNth23gt11 - gtu33*khalf*PDstandardNth33gt11 + - Gt111*(6*Gt113*gt11L*gtu31 + 4*gt12L*Gt213*gtu31 + gt11L*Xt1L) + - Gt211*(2*Gt112*gt11L*gtu11 + 4*Gt111*gt12L*gtu11 + 2*gt11L*Gt122*gtu21 - + 2*gt11L*Gt123*gtu31 + gt12L*Xt1L) + Gt311*(4*Gt111*gt13L*gtu11 + - 2*gt12L*Gt213*gtu11 + 2*gt13L*Gt313*gtu11 + 2*gt11L*Gt123*gtu21 + - 2*gt11L*Gt133*gtu31 + gt13L*Xt1L) + gt12L*Gt212*Xt2L + gt13L*Gt312*Xt2L - + Gt112*(6*Gt111*gt11L*gtu21 + 4*gt12L*Gt211*gtu21 + - 4*gt12L*Gt212*gtu22 + 2*gt11L*Gt213*gtu31 + 6*Gt113*gt11L*gtu32 + - gt11L*Xt2L) + Gt113*gt11L*Xt3L + Gt213*(2*gt11L*Gt122*gtu32 + - 4*Gt112*gt12L*gtu32 + 2*gt11L*Gt123*gtu33 + gt12L*Xt3L) + - Gt313*(4*Gt111*gt13L*gtu31 + 2*gt12L*Gt213*gtu31 + 2*gt11L*Gt123*gtu32 - + 4*Gt112*gt13L*gtu32 + 2*gt12L*Gt223*gtu32 + 2*gt11L*Gt133*gtu33 + + gtu23*PDstandardNth23gt11 - gtu33*khalf*PDstandardNth33gt11 + + Gt111*(6*Gt113*gt11L*gtu13 + 4*gt12L*Gt213*gtu13 + gt11L*Xt1L) + + Gt211*(2*Gt112*gt11L*gtu11 + 4*Gt111*gt12L*gtu11 + 2*gt11L*Gt122*gtu12 + + 2*gt11L*Gt123*gtu13 + gt12L*Xt1L) + Gt311*(4*Gt111*gt13L*gtu11 + + 2*gt12L*Gt213*gtu11 + 2*gt13L*Gt313*gtu11 + 2*gt11L*Gt123*gtu12 + + 2*gt11L*Gt133*gtu13 + gt13L*Xt1L) + gt12L*Gt212*Xt2L + gt13L*Gt312*Xt2L + + Gt112*(6*Gt111*gt11L*gtu12 + 4*gt12L*Gt211*gtu12 + + 2*gt11L*Gt213*gtu13 + 4*gt13L*Gt312*gtu22 + 6*Gt113*gt11L*gtu23 + + gt11L*Xt2L) + Gt113*gt11L*Xt3L + Gt213*(2*gt11L*Gt122*gtu23 + + 4*Gt112*gt12L*gtu23 + 2*gt11L*Gt123*gtu33 + gt12L*Xt3L) + + Gt313*(4*Gt111*gt13L*gtu13 + 2*gt12L*Gt213*gtu13 + 2*gt11L*Gt123*gtu23 + + 4*Gt112*gt13L*gtu23 + 2*gt12L*Gt223*gtu23 + 2*gt11L*Gt133*gtu33 + gt13L*Xt3L) + 3*gt11L*gtu11*SQR(Gt111) + 3*gt11L*gtu22*SQR(Gt112) + 3*gt11L*gtu33*SQR(Gt113) + gt22L*gtu11*SQR(Gt211) + gt22L*gtu22*SQR(Gt212) + 2*(gt12L*Gt211*Gt212*gtu11 + Gt113*gt11L*Gt311*gtu11 + Gt211*gt23L*Gt311*gtu11 + - gt13L*Gt211*Gt312*gtu11 + Gt112*gt11L*Gt212*gtu21 + - gt12L*Gt223*Gt311*gtu21 + Gt212*gt23L*Gt311*gtu21 + - gt12L*Gt213*Gt312*gtu21 + Gt211*gt23L*Gt312*gtu21 + - gt11L*Gt122*Gt212*gtu22 + gt11L*Gt123*Gt312*gtu22 + + gt13L*Gt211*Gt312*gtu11 + Gt112*gt11L*Gt212*gtu12 + + gt12L*Gt223*Gt311*gtu12 + Gt212*gt23L*Gt311*gtu12 + + gt12L*Gt213*Gt312*gtu12 + Gt211*gt23L*Gt312*gtu12 + + gt12L*Gt212*Gt213*gtu13 + gt12L*Gt211*Gt223*gtu13 + + Gt211*Gt213*gt22L*gtu13 + gt12L*Gt233*Gt311*gtu13 + + Gt213*gt23L*Gt311*gtu13 + gt13L*Gt213*Gt312*gtu13 + + Gt113*gt11L*Gt313*gtu13 + Gt211*gt23L*Gt313*gtu13 + + gt13L*Gt211*Gt323*gtu13 + gt13L*Gt311*Gt333*gtu13 + + Gt311*Gt313*gt33L*gtu13 + gt11L*Gt122*Gt212*gtu22 + + gt12L*Gt212*Gt222*gtu22 + gt11L*Gt123*Gt312*gtu22 + gt12L*Gt223*Gt312*gtu22 + Gt212*gt23L*Gt312*gtu22 + - gt13L*Gt212*Gt322*gtu22 + gt13L*Gt312*Gt323*gtu22 + - gt12L*Gt212*Gt213*gtu31 + gt12L*Gt211*Gt223*gtu31 + - Gt211*Gt213*gt22L*gtu31 + gt12L*Gt233*Gt311*gtu31 + - Gt213*gt23L*Gt311*gtu31 + gt13L*Gt213*Gt312*gtu31 + - Gt113*gt11L*Gt313*gtu31 + Gt211*gt23L*Gt313*gtu31 + - gt13L*Gt211*Gt323*gtu31 + gt13L*Gt311*Gt333*gtu31 + - Gt311*Gt313*gt33L*gtu31 + gt11L*Gt123*Gt212*gtu32 + - gt12L*Gt213*Gt222*gtu32 + gt12L*Gt212*Gt223*gtu32 + - Gt212*Gt213*gt22L*gtu32 + gt11L*Gt133*Gt312*gtu32 + - gt12L*Gt233*Gt312*gtu32 + Gt213*gt23L*Gt312*gtu32 + - Gt212*gt23L*Gt313*gtu32 + gt13L*Gt213*Gt322*gtu32 + - gt13L*Gt212*Gt323*gtu32 + gt13L*Gt313*Gt323*gtu32 + - gt13L*Gt312*Gt333*gtu32 + Gt312*Gt313*gt33L*gtu32 + + gt13L*Gt312*Gt323*gtu22 + gt11L*Gt123*Gt212*gtu23 + + gt12L*Gt213*Gt222*gtu23 + gt12L*Gt212*Gt223*gtu23 + + Gt212*Gt213*gt22L*gtu23 + gt11L*Gt133*Gt312*gtu23 + + gt12L*Gt233*Gt312*gtu23 + Gt213*gt23L*Gt312*gtu23 + + Gt212*gt23L*Gt313*gtu23 + gt13L*Gt213*Gt322*gtu23 + + gt13L*Gt212*Gt323*gtu23 + gt13L*Gt313*Gt323*gtu23 + + gt13L*Gt312*Gt333*gtu23 + Gt312*Gt313*gt33L*gtu23 + gt12L*Gt213*Gt223*gtu33 + gt12L*Gt233*Gt313*gtu33 + Gt213*gt23L*Gt313*gtu33 + gt13L*Gt213*Gt323*gtu33 + - gt13L*Gt313*Gt333*gtu33 + gt12L*gtu21*SQR(Gt212)) + + gt13L*Gt313*Gt333*gtu33 + gt12L*gtu12*SQR(Gt212)) + gt22L*gtu33*SQR(Gt213) + gt33L*gtu11*SQR(Gt311) + - gt33L*gtu22*SQR(Gt312) + 2*gt13L*gtu31*SQR(Gt313) + + gt33L*gtu22*SQR(Gt312) + 2*gt13L*gtu13*SQR(Gt313) + gt33L*gtu33*SQR(Gt313); CCTK_REAL Rt12 = khalf*(-(gtu11*PDstandardNth11gt12) - - 2*gtu21*PDstandardNth12gt12 - 2*gtu31*PDstandardNth13gt12 + + 2*gtu12*PDstandardNth12gt12 - 2*gtu13*PDstandardNth13gt12 + gt12L*PDstandardNth1Xt1 + gt22L*PDstandardNth1Xt2 + gt23L*PDstandardNth1Xt3 - gtu22*PDstandardNth22gt12 - - 2*gtu32*PDstandardNth23gt12 + gt11L*PDstandardNth2Xt1 + + 2*gtu23*PDstandardNth23gt12 + gt11L*PDstandardNth2Xt1 + gt12L*PDstandardNth2Xt2 + gt13L*PDstandardNth2Xt3 - gtu33*PDstandardNth33gt12 + (Gt111*gt12L + Gt211*gt22L + gt23L*Gt311)*Xt1L + (Gt112*gt11L + gt12L*Gt212 + gt13L*Gt312)*Xt1L + (Gt112*gt12L + Gt212*gt22L + gt23L*Gt312)*Xt2L + (gt11L*Gt122 + gt12L*Gt222 + gt13L*Gt322)*Xt2L + (Gt113*gt12L + Gt213*gt22L + gt23L*Gt313)*Xt3L + (gt11L*Gt123 + gt12L*Gt223 + gt13L*Gt323)*Xt3L + - 2*gtu21*(Gt112*gt11L*Gt222 + Gt112*Gt211*gt22L + Gt211*Gt222*gt22L + + 2*gtu12*(Gt112*gt11L*Gt222 + Gt112*Gt211*gt22L + Gt211*Gt222*gt22L + 2*Gt122*gt13L*Gt311 + Gt112*gt23L*Gt311 + Gt222*gt23L*Gt311 + gt13L*Gt222*Gt312 + Gt213*gt22L*Gt312 + Gt212*gt23L*Gt312 + gt23L*Gt312*Gt313 + Gt113*gt11L*Gt322 + Gt211*gt23L*Gt322 + @@ -481,14 +505,14 @@ void ML_BSSN_O8_constraints_Body(cGH const * restrict const cctkGH, int const di Gt123*Gt212 + Gt133*Gt312) + 2*Gt112*gt13L*Gt313 + Gt212*gt23L*Gt313 + Gt111*(Gt113*gt12L + Gt213*gt22L + gt23L*Gt313) + gt13L*Gt212*Gt323 + Gt211*gt23L*Gt323 + gt23L*Gt311*Gt333 + gt13L*Gt312*Gt333 + - Gt312*Gt313*gt33L)*gtu31 + (Gt123*gt12L*Gt212 + 2*Gt122*gt12L*Gt213 + + Gt312*Gt313*gt33L)*gtu13 + (Gt123*gt12L*Gt212 + 2*Gt122*gt12L*Gt213 + Gt113*gt12L*Gt222 + gt12L*Gt222*Gt223 + Gt213*Gt222*gt22L + Gt212*Gt223*gt22L + gt12L*Gt133*Gt312 + gt22L*Gt233*Gt312 + 2*Gt122*gt13L*Gt313 + Gt222*gt23L*Gt313 + Gt112*(Gt113*gt12L + Gt213*gt22L + gt23L*Gt313) + Gt113*gt13L*Gt322 + gt12L*Gt233*Gt322 + Gt213*gt23L*Gt322 + gt11L*(2*Gt113*Gt122 + Gt123*Gt222 + Gt133*Gt322) + gt13L*Gt222*Gt323 + Gt212*gt23L*Gt323 + gt23L*Gt312*Gt333 + - gt13L*Gt322*Gt333 + Gt313*Gt322*gt33L)*gtu32 + + gt13L*Gt322*Gt333 + Gt313*Gt322*gt33L)*gtu23 + gtu11*(3*Gt112*gt12L*Gt211 + 2*Gt211*Gt212*gt22L + Gt113*gt12L*Gt311 + 2*Gt112*gt13L*Gt311 + Gt213*gt22L*Gt311 + Gt212*gt23L*Gt311 + gt13L*Gt212*Gt312 + gt12L*Gt213*Gt312 + 2*Gt211*gt23L*Gt312 + @@ -507,21 +531,21 @@ void ML_BSSN_O8_constraints_Body(cGH const * restrict const cctkGH, int const di 2*Gt213*gt23L*Gt323 + Gt113*(2*gt11L*Gt123 + gt12L*Gt223 + Gt213*gt22L + gt23L*Gt313 + gt13L*Gt323) + gt23L*Gt313*Gt333 + gt13L*Gt323*Gt333 + Gt313*Gt323*gt33L + gt12L*SQR(Gt113) + gt12L*(3*Gt123*Gt213 + - Gt133*Gt313 + Gt233*Gt323 + SQR(Gt223))) + 2*gtu21*(Gt122*gt12L*Gt211 + + Gt133*Gt313 + Gt233*Gt323 + SQR(Gt223))) + 2*gtu12*(Gt122*gt12L*Gt211 + 3*Gt112*gt12L*Gt212 + gt12L*Gt212*Gt222 + Gt211*Gt222*gt22L + Gt123*gt12L*Gt311 + Gt223*gt22L*Gt311 + 3*Gt112*gt13L*Gt312 + gt12L*Gt223*Gt312 + 2*Gt212*gt23L*Gt312 + Gt111*(Gt112*gt12L + Gt212*gt22L + gt23L*Gt312) + gt13L*Gt212*Gt322 + Gt211*gt23L*Gt322 + gt23L*Gt311*Gt323 + gt13L*Gt312*Gt323 + gt11L*(Gt122*Gt212 + Gt123*Gt312 + 2*SQR(Gt112)) + gt22L*SQR(Gt212) + gt33L*SQR(Gt312)) + - 2*gtu31*(Gt112*gt11L*Gt223 + Gt113*Gt211*gt22L + Gt212*Gt213*gt22L + + 2*gtu13*(Gt112*gt11L*Gt223 + Gt113*Gt211*gt22L + Gt212*Gt213*gt22L + Gt211*Gt223*gt22L + 2*Gt123*gt13L*Gt311 + Gt113*gt23L*Gt311 + Gt223*gt23L*Gt311 + gt13L*Gt223*Gt312 + Gt213*gt23L*Gt312 + Gt213*gt22L*Gt313 + Gt113*gt11L*Gt323 + Gt211*gt23L*Gt323 + gt13L*Gt313*Gt323 + Gt111*(2*gt11L*Gt123 + Gt113*gt12L + gt12L*Gt223 + gt13L*Gt323) + gt12L*(2*Gt123*Gt211 + Gt112*Gt213 + Gt212*Gt223 + Gt113*Gt313 + Gt213*Gt323) + Gt311*Gt323*gt33L + gt23L*SQR(Gt313)) + - 2*gtu32*(gt11L*Gt122*Gt223 + Gt113*Gt212*gt22L + Gt213*Gt222*gt22L + + 2*gtu23*(gt11L*Gt122*Gt223 + Gt113*Gt212*gt22L + Gt213*Gt222*gt22L + Gt212*Gt223*gt22L + 2*Gt123*gt13L*Gt312 + Gt113*gt23L*Gt312 + Gt223*gt23L*Gt312 + Gt223*gt22L*Gt313 + gt13L*Gt223*Gt322 + Gt213*gt23L*Gt322 + gt11L*Gt123*Gt323 + Gt212*gt23L*Gt323 + @@ -530,10 +554,10 @@ void ML_BSSN_O8_constraints_Body(cGH const * restrict const cctkGH, int const di Gt223*(Gt222 + Gt323)) + Gt312*Gt323*gt33L + gt13L*SQR(Gt323))); CCTK_REAL Rt13 = khalf*(-(gtu11*PDstandardNth11gt13) - - 2*gtu21*PDstandardNth12gt13 - 2*gtu31*PDstandardNth13gt13 + + 2*gtu12*PDstandardNth12gt13 - 2*gtu13*PDstandardNth13gt13 + gt13L*PDstandardNth1Xt1 + gt23L*PDstandardNth1Xt2 + gt33L*PDstandardNth1Xt3 - gtu22*PDstandardNth22gt13 - - 2*gtu32*PDstandardNth23gt13 - gtu33*PDstandardNth33gt13 + + 2*gtu23*PDstandardNth23gt13 - gtu33*PDstandardNth33gt13 + gt11L*PDstandardNth3Xt1 + gt12L*PDstandardNth3Xt2 + gt13L*PDstandardNth3Xt3 + (Gt113*gt11L + gt12L*Gt213 + gt13L*Gt313)*Xt1L + (Gt111*gt13L + Gt211*gt23L + Gt311*gt33L)*Xt1L + @@ -547,22 +571,22 @@ void ML_BSSN_O8_constraints_Body(cGH const * restrict const cctkGH, int const di Gt212*gt23L*Gt313 + gt11L*(2*Gt112*Gt113 + Gt122*Gt213 + Gt123*Gt313) + gt13L*Gt213*Gt322 + gt13L*Gt313*Gt323 + Gt312*Gt313*gt33L + Gt211*Gt322*gt33L + Gt311*Gt323*gt33L + Gt111*(Gt112*gt13L + - Gt212*gt23L + Gt312*gt33L))*gtu21 + (Gt122*gt13L*Gt213 + + Gt212*gt23L + Gt312*gt33L))*gtu12 + (Gt122*gt13L*Gt213 + gt11L*Gt122*Gt233 + Gt212*gt22L*Gt233 + Gt113*Gt212*gt23L + Gt213*Gt222*gt23L + 2*Gt133*gt13L*Gt312 + Gt233*gt23L*Gt312 + Gt123*gt13L*Gt313 + Gt223*gt23L*Gt313 + gt13L*Gt233*Gt322 + gt11L*Gt123*Gt333 + Gt212*gt23L*Gt333 + gt13L*Gt323*Gt333 + Gt112*(2*gt11L*Gt133 + Gt113*gt13L + gt12L*Gt233 + gt13L*Gt333) + gt12L*(2*Gt133*Gt212 + Gt222*Gt233 + Gt223*Gt333) + Gt113*Gt312*gt33L + - Gt213*Gt322*gt33L + Gt313*Gt323*gt33L + Gt312*Gt333*gt33L)*gtu32 + - gtu21*(2*Gt123*gt12L*Gt211 + Gt112*gt13L*Gt212 + gt12L*Gt212*Gt223 + + Gt213*Gt322*gt33L + Gt313*Gt323*gt33L + Gt312*Gt333*gt33L)*gtu23 + + gtu12*(2*Gt123*gt12L*Gt211 + Gt112*gt13L*Gt212 + gt12L*Gt212*Gt223 + Gt211*Gt223*gt22L + Gt112*Gt211*gt23L + 2*Gt123*gt13L*Gt311 + Gt223*gt23L*Gt311 + Gt113*gt13L*Gt312 + gt13L*Gt223*Gt312 + Gt213*gt23L*Gt312 + gt12L*Gt213*Gt323 + Gt211*gt23L*Gt323 + gt13L*Gt313*Gt323 + gt11L*(2*Gt111*Gt123 + Gt112*Gt223 + Gt113*Gt323) + Gt111*(Gt112*gt13L + gt12L*Gt223 + gt13L*Gt323) + Gt112*Gt311*gt33L + Gt212*Gt312*gt33L + Gt312*Gt313*gt33L + Gt311*Gt323*gt33L + - gt23L*SQR(Gt212))) + 2*gtu32*(Gt123*gt13L*Gt212 + 2*Gt123*gt12L*Gt213 + + gt23L*SQR(Gt212))) + 2*gtu23*(Gt123*gt13L*Gt212 + 2*Gt123*gt12L*Gt213 + Gt113*gt12L*Gt223 + Gt213*Gt223*gt22L + Gt212*Gt223*gt23L + Gt133*gt13L*Gt312 + Gt233*gt23L*Gt312 + 2*Gt123*gt13L*Gt313 + Gt223*gt23L*Gt313 + Gt113*gt13L*Gt323 + gt13L*Gt223*Gt323 + @@ -576,14 +600,14 @@ void ML_BSSN_O8_constraints_Body(cGH const * restrict const cctkGH, int const di Gt211*gt23L*Gt313 + gt11L*(2*Gt111*Gt113 + Gt112*Gt213 + Gt113*Gt313) + Gt211*Gt312*gt33L + 2*Gt311*Gt313*gt33L + Gt111*(gt12L*Gt213 + Gt211*gt23L + gt13L*Gt313 + Gt311*gt33L) + gt13L*SQR(Gt111) + - gt13L*SQR(Gt313)) + 2*gtu31*(Gt112*gt13L*Gt213 + Gt112*gt11L*Gt233 + + gt13L*SQR(Gt313)) + 2*gtu13*(Gt112*gt13L*Gt213 + Gt112*gt11L*Gt233 + Gt211*gt22L*Gt233 + Gt113*Gt211*gt23L + Gt212*Gt213*gt23L + 2*Gt133*gt13L*Gt311 + Gt233*gt23L*Gt311 + gt13L*Gt233*Gt312 + Gt113*gt13L*Gt313 + Gt213*gt23L*Gt313 + Gt113*gt11L*Gt333 + Gt211*gt23L*Gt333 + gt13L*Gt313*Gt333 + Gt111*(2*gt11L*Gt133 + Gt113*gt13L + gt12L*Gt233 + gt13L*Gt333) + gt12L*(2*Gt133*Gt211 + Gt212*Gt233 + Gt213*Gt333) + Gt113*Gt311*gt33L + Gt213*Gt312*gt33L + - Gt311*Gt333*gt33L + gt33L*SQR(Gt313)) + 2*gtu31*(Gt123*gt13L*Gt211 + + Gt311*Gt333*gt33L + gt33L*SQR(Gt313)) + 2*gtu13*(Gt123*gt13L*Gt211 + 3*Gt113*gt12L*Gt213 + gt12L*Gt213*Gt223 + Gt211*Gt223*gt23L + Gt133*gt13L*Gt311 + Gt233*gt23L*Gt311 + 3*Gt113*gt13L*Gt313 + gt12L*Gt233*Gt313 + 2*Gt213*gt23L*Gt313 + gt13L*Gt213*Gt323 + @@ -604,58 +628,58 @@ void ML_BSSN_O8_constraints_Body(cGH const * restrict const cctkGH, int const di Gt113*(2*gt11L*Gt133 + gt12L*Gt233 + Gt213*gt23L + gt13L*Gt333 + Gt313*gt33L) + gt13L*SQR(Gt113) + gt13L*SQR(Gt333))); - CCTK_REAL Rt22 = 4*(Gt122*gt12L*Gt212*gtu21 + Gt112*gt12L*Gt222*gtu21 - + Gt122*gt12L*Gt222*gtu22 + Gt123*gt12L*Gt212*gtu31 + - Gt123*gt12L*Gt222*gtu32 + Gt123*gt12L*Gt223*gtu33) - - gtu11*khalf*PDstandardNth11gt22 + gtu21*(6*Gt212*Gt222*gt22L + + CCTK_REAL Rt22 = 4*(Gt122*gt12L*Gt212*gtu12 + Gt112*gt12L*Gt222*gtu12 + + Gt123*gt12L*Gt212*gtu13 + Gt122*gt12L*Gt222*gtu22 + + Gt123*gt12L*Gt222*gtu23 + Gt123*gt12L*Gt223*gtu33) - + gtu11*khalf*PDstandardNth11gt22 + gtu12*(6*Gt212*Gt222*gt22L + 2*Gt122*gt23L*Gt311 + 2*Gt122*gt13L*Gt312 + 4*Gt222*gt23L*Gt312 + 2*Gt113*gt12L*Gt322 + 2*gt23L*Gt312*Gt323 + 2*Gt312*Gt322*gt33L - - PDstandardNth12gt22) + gtu31*(6*Gt212*Gt223*gt22L + 2*Gt123*gt13L*Gt312 + PDstandardNth12gt22) + gtu13*(6*Gt212*Gt223*gt22L + 2*Gt123*gt13L*Gt312 + 2*Gt112*gt23L*Gt313 + 2*Gt113*gt12L*Gt323 + 2*gt23L*Gt312*Gt333 + 2*Gt312*Gt323*gt33L - PDstandardNth13gt22) - - gtu22*khalf*PDstandardNth22gt22 + gtu32*(4*Gt122*gt12L*Gt223 + + gtu22*khalf*PDstandardNth22gt22 + gtu23*(4*Gt122*gt12L*Gt223 + 2*Gt123*Gt212*gt22L + 2*gt12L*Gt133*Gt322 + 4*Gt223*gt23L*Gt322 + 2*Gt123*gt12L*Gt323 + 4*Gt222*gt23L*Gt323 + 2*gt23L*Gt322*Gt333 + - 2*Gt322*Gt323*gt33L - PDstandardNth23gt22) + gt12L*(2*Gt111*Gt123*gtu31 - + 4*Gt112*Gt223*gtu31 + 2*Gt113*Gt122*gtu32 + 2*Gt113*Gt123*gtu33 + - PDstandardNth2Xt1) + gt22L*(2*Gt122*Gt213*gtu32 + 6*Gt222*Gt223*gtu32 + - 2*Gt123*Gt213*gtu33 + PDstandardNth2Xt2) + gt23L*(4*Gt212*Gt322*gtu21 + - 2*Gt313*Gt322*gtu21 + 4*Gt222*Gt322*gtu22 + 2*Gt123*Gt311*gtu31 + - 4*Gt212*Gt323*gtu31 + 2*Gt313*Gt323*gtu31 + 2*Gt122*Gt313*gtu32 + - 2*Gt123*Gt313*gtu33 + 4*Gt223*Gt323*gtu33 + 2*Gt323*Gt333*gtu33 + - PDstandardNth2Xt3) - gtu33*khalf*PDstandardNth33gt22 + Gt212*gt22L*Xt1L - + Gt112*(2*Gt111*gt12L*gtu11 + 4*gt12L*Gt212*gtu11 + - 2*gt11L*Gt122*gtu21 + 2*Gt122*gt12L*gtu22 + 2*gt11L*Gt123*gtu31 + - 2*Gt123*gt12L*gtu32 + gt12L*Xt1L) + Gt312*(2*Gt213*gt22L*gtu11 + - 4*Gt212*gt23L*gtu11 + 2*gt23L*Gt313*gtu11 + 2*Gt123*gt12L*gtu21 + - 2*Gt122*gt23L*gtu22 + 2*gt12L*Gt133*gtu31 + 2*gt22L*Gt233*gtu31 + - 4*Gt223*gt23L*gtu31 + 2*Gt123*gt23L*gtu32 + gt23L*Xt1L) + - Gt122*gt12L*Xt2L + Gt222*gt22L*Xt2L + gt23L*Gt322*Xt2L + - Gt123*gt12L*Xt3L + Gt223*gt22L*Xt3L + gt23L*Gt323*Xt3L + - gt11L*gtu11*SQR(Gt112) + 2*(Gt112*Gt211*gt22L*gtu11 + - Gt112*gt23L*Gt311*gtu11 + Gt113*gt12L*Gt312*gtu11 + - Gt112*gt13L*Gt312*gtu11 + Gt111*Gt122*gt12L*gtu21 + - Gt122*Gt211*gt22L*gtu21 + Gt112*Gt212*gt22L*gtu21 + - Gt223*gt22L*Gt312*gtu21 + Gt112*gt23L*Gt312*gtu21 + - Gt112*gt13L*Gt322*gtu21 + Gt213*gt22L*Gt322*gtu21 + - Gt122*Gt212*gt22L*gtu22 + Gt123*gt12L*Gt322*gtu22 + + 2*Gt322*Gt323*gt33L - PDstandardNth23gt22) + gt12L*(2*Gt111*Gt123*gtu13 + + 4*Gt112*Gt223*gtu13 + 2*Gt123*Gt322*gtu22 + 2*Gt113*Gt122*gtu23 + + 2*Gt113*Gt123*gtu33 + PDstandardNth2Xt1) + gt22L*(2*Gt122*Gt213*gtu23 + + 6*Gt222*Gt223*gtu23 + 2*Gt123*Gt213*gtu33 + PDstandardNth2Xt2) + + gt23L*(4*Gt212*Gt322*gtu12 + 2*Gt313*Gt322*gtu12 + 2*Gt123*Gt311*gtu13 + + 4*Gt212*Gt323*gtu13 + 2*Gt313*Gt323*gtu13 + 4*Gt222*Gt322*gtu22 + + 2*Gt122*Gt313*gtu23 + 2*Gt123*Gt313*gtu33 + 4*Gt223*Gt323*gtu33 + + 2*Gt323*Gt333*gtu33 + PDstandardNth2Xt3) - + gtu33*khalf*PDstandardNth33gt22 + Gt212*gt22L*Xt1L + + Gt112*(2*Gt111*gt12L*gtu11 + 4*gt12L*Gt212*gtu11 + 2*gt11L*Gt122*gtu12 + + 2*gt11L*Gt123*gtu13 + 2*Gt122*gt12L*gtu22 + 2*Gt123*gt12L*gtu23 + + gt12L*Xt1L) + Gt312*(2*Gt213*gt22L*gtu11 + 4*Gt212*gt23L*gtu11 + + 2*gt23L*Gt313*gtu11 + 2*Gt123*gt12L*gtu12 + 2*gt12L*Gt133*gtu13 + + 2*gt22L*Gt233*gtu13 + 4*Gt223*gt23L*gtu13 + 2*Gt122*gt23L*gtu22 + + 2*Gt123*gt23L*gtu23 + gt23L*Xt1L) + Gt122*gt12L*Xt2L + Gt222*gt22L*Xt2L + + gt23L*Gt322*Xt2L + Gt123*gt12L*Xt3L + Gt223*gt22L*Xt3L + + gt23L*Gt323*Xt3L + gt11L*gtu11*SQR(Gt112) + 2*(Gt112*Gt211*gt22L*gtu11 + + Gt112*gt23L*Gt311*gtu11 + Gt113*gt12L*Gt312*gtu11 + + Gt112*gt13L*Gt312*gtu11 + Gt111*Gt122*gt12L*gtu12 + + Gt122*Gt211*gt22L*gtu12 + Gt112*Gt212*gt22L*gtu12 + + Gt223*gt22L*Gt312*gtu12 + Gt112*gt23L*Gt312*gtu12 + + Gt112*gt13L*Gt322*gtu12 + Gt213*gt22L*Gt322*gtu12 + + Gt112*Gt113*gt12L*gtu13 + Gt123*Gt211*gt22L*gtu13 + + Gt112*Gt213*gt22L*gtu13 + Gt112*gt13L*Gt323*gtu13 + + Gt213*gt22L*Gt323*gtu13 + Gt122*Gt212*gt22L*gtu22 + Gt122*gt13L*Gt322*gtu22 + Gt223*gt22L*Gt322*gtu22 + - gt23L*Gt322*Gt323*gtu22 + Gt112*Gt113*gt12L*gtu31 + - Gt123*Gt211*gt22L*gtu31 + Gt112*Gt213*gt22L*gtu31 + - Gt112*gt13L*Gt323*gtu31 + Gt213*gt22L*Gt323*gtu31 + - gt11L*Gt122*Gt123*gtu32 + Gt123*gt13L*Gt322*gtu32 + - gt22L*Gt233*Gt322*gtu32 + Gt122*gt13L*Gt323*gtu32 + - Gt223*gt22L*Gt323*gtu32 + gt12L*Gt133*Gt323*gtu33 + - Gt123*gt13L*Gt323*gtu33 + gt22L*Gt233*Gt323*gtu33 + - gt12L*gtu21*SQR(Gt112)) + gt11L*gtu22*SQR(Gt122) + - gt11L*gtu33*SQR(Gt123) + 3*gt22L*gtu11*SQR(Gt212) + - 3*gt22L*gtu22*SQR(Gt222) + 3*gt22L*gtu33*SQR(Gt223) + - gt33L*gtu11*SQR(Gt312) + gt33L*gtu22*SQR(Gt322) + - 2*gt23L*gtu32*SQR(Gt323) + gt33L*gtu33*SQR(Gt323); + gt23L*Gt322*Gt323*gtu22 + gt11L*Gt122*Gt123*gtu23 + + Gt123*gt13L*Gt322*gtu23 + gt22L*Gt233*Gt322*gtu23 + + Gt122*gt13L*Gt323*gtu23 + Gt223*gt22L*Gt323*gtu23 + + gt12L*Gt133*Gt323*gtu33 + Gt123*gt13L*Gt323*gtu33 + + gt22L*Gt233*Gt323*gtu33 + gt12L*gtu12*SQR(Gt112)) + + gt11L*gtu22*SQR(Gt122) + gt11L*gtu33*SQR(Gt123) + + 3*gt22L*gtu11*SQR(Gt212) + 3*gt22L*gtu22*SQR(Gt222) + + 3*gt22L*gtu33*SQR(Gt223) + gt33L*gtu11*SQR(Gt312) + + gt33L*gtu22*SQR(Gt322) + 2*gt23L*gtu23*SQR(Gt323) + + gt33L*gtu33*SQR(Gt323); CCTK_REAL Rt23 = khalf*(-(gtu11*PDstandardNth11gt23) - - 2*gtu21*PDstandardNth12gt23 - 2*gtu31*PDstandardNth13gt23 - - gtu22*PDstandardNth22gt23 - 2*gtu32*PDstandardNth23gt23 + + 2*gtu12*PDstandardNth12gt23 - 2*gtu13*PDstandardNth13gt23 - + gtu22*PDstandardNth22gt23 - 2*gtu23*PDstandardNth23gt23 + gt13L*PDstandardNth2Xt1 + gt23L*PDstandardNth2Xt2 + gt33L*PDstandardNth2Xt3 - gtu33*PDstandardNth33gt23 + gt12L*PDstandardNth3Xt1 + gt22L*PDstandardNth3Xt2 + @@ -671,7 +695,7 @@ void ML_BSSN_O8_constraints_Body(cGH const * restrict const cctkGH, int const di 2*Gt223*gt23L*Gt312 + Gt113*gt13L*Gt322 + Gt213*gt23L*Gt322 + Gt113*gt12L*Gt323 + Gt112*gt13L*Gt323 + Gt213*gt22L*Gt323 + Gt212*gt23L*Gt323 + gt23L*Gt313*Gt323 + Gt122*Gt311*gt33L + - Gt222*Gt312*gt33L + Gt313*Gt322*gt33L + Gt312*Gt323*gt33L)*gtu21 + + Gt222*Gt312*gt33L + Gt313*Gt322*gt33L + Gt312*Gt323*gt33L)*gtu12 + (Gt112*gt11L*Gt133 + Gt111*gt12L*Gt133 + Gt111*Gt123*gt13L + gt12L*Gt133*Gt212 + Gt112*gt13L*Gt223 + Gt133*Gt211*gt22L + 2*Gt112*gt12L*Gt233 + 2*Gt212*gt22L*Gt233 + Gt123*Gt211*gt23L + @@ -679,8 +703,8 @@ void ML_BSSN_O8_constraints_Body(cGH const * restrict const cctkGH, int const di 2*Gt233*gt23L*Gt312 + Gt113*gt13L*Gt323 + Gt213*gt23L*Gt323 + Gt113*gt12L*Gt333 + Gt112*gt13L*Gt333 + Gt213*gt22L*Gt333 + Gt212*gt23L*Gt333 + gt23L*Gt313*Gt333 + Gt123*Gt311*gt33L + - Gt223*Gt312*gt33L + Gt313*Gt323*gt33L + Gt312*Gt333*gt33L)*gtu31 + - gtu21*(Gt113*gt11L*Gt122 + Gt122*gt13L*Gt212 + 2*Gt122*gt12L*Gt213 + + Gt223*Gt312*gt33L + Gt313*Gt323*gt33L + Gt312*Gt333*gt33L)*gtu13 + + gtu12*(Gt113*gt11L*Gt122 + Gt122*gt13L*Gt212 + 2*Gt122*gt12L*Gt213 + Gt113*gt12L*Gt222 + Gt113*Gt212*gt22L + 2*Gt213*Gt222*gt22L + Gt212*Gt222*gt23L + Gt123*gt13L*Gt312 + Gt113*gt23L*Gt312 + Gt223*gt23L*Gt312 + Gt123*gt12L*Gt313 + Gt122*gt13L*Gt313 + @@ -688,7 +712,7 @@ void ML_BSSN_O8_constraints_Body(cGH const * restrict const cctkGH, int const di 2*Gt213*gt23L*Gt322 + gt23L*Gt313*Gt323 + Gt212*Gt322*gt33L + Gt313*Gt322*gt33L + Gt312*Gt323*gt33L + Gt112*(Gt113*gt12L + Gt212*gt23L + Gt312*gt33L) + gt13L*SQR(Gt112))) + - 2*gtu31*(2*Gt213*Gt223*gt22L + Gt112*Gt213*gt23L + Gt212*Gt223*gt23L + + 2*gtu13*(2*Gt213*Gt223*gt22L + Gt112*Gt213*gt23L + Gt212*Gt223*gt23L + Gt133*gt13L*Gt312 + Gt233*gt23L*Gt312 + gt12L*Gt133*Gt313 + gt22L*Gt233*Gt313 + Gt223*gt23L*Gt313 + Gt123*(2*gt12L*Gt213 + gt13L*(Gt212 + Gt313)) + 2*Gt213*gt23L*Gt323 + Gt113*(gt11L*Gt123 + @@ -709,7 +733,7 @@ void ML_BSSN_O8_constraints_Body(cGH const * restrict const cctkGH, int const di Gt123*gt12L*Gt323 + Gt122*gt13L*Gt323 + Gt223*gt22L*Gt323 + Gt222*gt23L*Gt323 + Gt122*Gt312*gt33L + Gt222*Gt322*gt33L + 2*Gt322*Gt323*gt33L + gt23L*SQR(Gt222) + gt23L*SQR(Gt323)) + - 2*gtu32*(gt11L*Gt122*Gt133 + Gt112*gt12L*Gt133 + Gt112*Gt123*gt13L + + 2*gtu23*(gt11L*Gt122*Gt133 + Gt112*gt12L*Gt133 + Gt112*Gt123*gt13L + gt12L*Gt133*Gt222 + Gt122*gt13L*Gt223 + Gt133*Gt212*gt22L + 2*Gt122*gt12L*Gt233 + 2*Gt222*gt22L*Gt233 + Gt123*Gt212*gt23L + Gt222*Gt223*gt23L + Gt133*gt23L*Gt312 + Gt133*gt13L*Gt322 + @@ -717,7 +741,7 @@ void ML_BSSN_O8_constraints_Body(cGH const * restrict const cctkGH, int const di Gt123*gt12L*Gt333 + Gt122*gt13L*Gt333 + Gt223*gt22L*Gt333 + Gt222*gt23L*Gt333 + gt23L*Gt323*Gt333 + Gt123*Gt312*gt33L + Gt223*Gt322*gt33L + Gt322*Gt333*gt33L + gt33L*SQR(Gt323)) + - 2*gtu32*(Gt113*Gt123*gt12L + Gt113*Gt122*gt13L + Gt123*gt13L*Gt222 + + 2*gtu23*(Gt113*Gt123*gt12L + Gt113*Gt122*gt13L + Gt123*gt13L*Gt222 + 3*Gt123*gt12L*Gt223 + Gt123*Gt213*gt22L + Gt122*Gt213*gt23L + Gt222*Gt223*gt23L + Gt123*gt23L*Gt313 + Gt133*gt13L*Gt322 + Gt233*gt23L*Gt322 + gt12L*Gt133*Gt323 + 2*Gt123*gt13L*Gt323 + @@ -732,57 +756,56 @@ void ML_BSSN_O8_constraints_Body(cGH const * restrict const cctkGH, int const di Gt223*gt23L*Gt333 + Gt123*Gt313*gt33L + Gt223*Gt323*gt33L + 2*Gt323*Gt333*gt33L + gt23L*SQR(Gt223) + gt23L*SQR(Gt333))); - CCTK_REAL Rt33 = 4*(Gt123*gt13L*Gt323*gtu22 + Gt223*gt23L*Gt323*gtu22 - + Gt133*gt13L*Gt313*gtu31 + Gt233*gt23L*Gt313*gtu31 + - Gt113*gt13L*Gt333*gtu31 + Gt133*gt13L*Gt323*gtu32 + - Gt233*gt23L*Gt323*gtu32 + Gt123*gt13L*Gt333*gtu32 + - Gt133*gt13L*Gt333*gtu33) + gtu21*(2*Gt212*Gt223*gt23L + + CCTK_REAL Rt33 = 4*(Gt133*gt13L*Gt313*gtu13 + Gt233*gt23L*Gt313*gtu13 + + Gt113*gt13L*Gt333*gtu13 + Gt213*gt23L*Gt333*gtu13 + + Gt123*gt13L*Gt323*gtu22 + Gt133*gt13L*Gt323*gtu23 + + Gt123*gt13L*Gt333*gtu23 + Gt223*gt23L*Gt333*gtu23 + + Gt133*gt13L*Gt333*gtu33) + gtu12*(2*Gt212*Gt223*gt23L + 4*Gt123*gt13L*Gt313 + 4*Gt223*gt23L*Gt313 + 4*Gt113*gt13L*Gt323 + - 4*Gt213*gt23L*Gt323 + 2*Gt123*Gt311*gt33L - PDstandardNth12gt33) + - gtu31*(4*Gt213*gt23L*Gt333 + 2*Gt233*Gt312*gt33L + 6*Gt313*Gt333*gt33L - - PDstandardNth13gt33) - gtu22*khalf*PDstandardNth22gt33 + - gtu32*(4*Gt223*gt23L*Gt333 + 2*Gt123*Gt313*gt33L + 6*Gt323*Gt333*gt33L - - PDstandardNth23gt33) - gtu33*khalf*PDstandardNth33gt33 + + 4*Gt213*gt23L*Gt323 + 2*Gt123*Gt311*gt33L - PDstandardNth12gt33) - + gtu13*PDstandardNth13gt33 - gtu22*khalf*PDstandardNth22gt33 - + gtu23*PDstandardNth23gt33 - gtu33*khalf*PDstandardNth33gt33 + gt13L*PDstandardNth3Xt1 + gt23L*PDstandardNth3Xt2 + - gt33L*(2*Gt213*Gt322*gtu21 + 6*Gt313*Gt323*gtu21 + 2*Gt123*Gt312*gtu22 - + 2*Gt133*Gt311*gtu31 + 2*Gt133*Gt312*gtu32 + 2*Gt133*Gt313*gtu33 + - PDstandardNth3Xt3) + Gt113*gt13L*Xt1L + Gt213*gt23L*Xt1L + - Gt313*gt33L*Xt1L + Gt123*gt13L*Xt2L + Gt223*gt23L*Xt2L + - Gt323*gt33L*Xt2L + Gt133*gt13L*Xt3L + Gt333*gt33L*Xt3L + - Gt233*(4*gt23L*Gt333*gtu33 + 2*Gt323*gt33L*gtu33 + gt23L*Xt3L) + - gtu11*(2*Gt212*Gt213*gt23L + 4*Gt113*gt13L*Gt313 + 4*Gt213*gt23L*Gt313 - + 2*Gt113*Gt311*gt33L + 2*Gt213*Gt312*gt33L - khalf*PDstandardNth11gt33 - + gt11L*SQR(Gt113)) + 2*(Gt111*Gt113*gt13L*gtu11 + - Gt113*gt12L*Gt213*gtu11 + Gt112*gt13L*Gt213*gtu11 + - Gt113*Gt211*gt23L*gtu11 + Gt113*gt11L*Gt123*gtu21 + - Gt112*Gt113*gt13L*gtu21 + Gt111*Gt123*gt13L*gtu21 + - Gt123*gt12L*Gt213*gtu21 + Gt122*gt13L*Gt213*gtu21 + - Gt113*gt12L*Gt223*gtu21 + Gt112*gt13L*Gt223*gtu21 + - Gt213*Gt223*gt22L*gtu21 + Gt123*Gt211*gt23L*gtu21 + - Gt113*Gt212*gt23L*gtu21 + Gt213*Gt222*gt23L*gtu21 + - Gt113*Gt312*gt33L*gtu21 + Gt223*Gt312*gt33L*gtu21 + + gt33L*(2*Gt213*Gt322*gtu12 + 6*Gt313*Gt323*gtu12 + 2*Gt133*Gt311*gtu13 + + 2*Gt213*Gt323*gtu13 + 6*Gt313*Gt333*gtu13 + 2*Gt123*Gt312*gtu22 + + 2*Gt133*Gt312*gtu23 + 2*Gt133*Gt313*gtu33 + PDstandardNth3Xt3) + + Gt113*gt13L*Xt1L + Gt213*gt23L*Xt1L + Gt313*gt33L*Xt1L + + Gt123*gt13L*Xt2L + Gt223*(4*gt23L*Gt323*gtu22 + 2*Gt322*gt33L*gtu22 + + 2*gt12L*Gt133*gtu23 + 2*Gt233*gt23L*gtu33 + gt23L*Xt2L) + + Gt323*(2*Gt223*gt33L*gtu23 + 6*Gt333*gt33L*gtu23 + 2*Gt233*gt33L*gtu33 + + gt33L*Xt2L) + Gt133*gt13L*Xt3L + Gt333*gt33L*Xt3L + + Gt233*(2*Gt222*gt23L*gtu23 + 4*gt23L*Gt323*gtu23 + 2*gt12L*Gt133*gtu33 + + 4*gt23L*Gt333*gtu33 + gt23L*Xt3L) + gtu11*(2*Gt212*Gt213*gt23L + + 4*Gt113*gt13L*Gt313 + 4*Gt213*gt23L*Gt313 + 2*Gt113*Gt311*gt33L + + 2*Gt213*Gt312*gt33L - khalf*PDstandardNth11gt33 + gt11L*SQR(Gt113)) + + 2*(Gt111*Gt113*gt13L*gtu11 + Gt113*gt12L*Gt213*gtu11 + + Gt112*gt13L*Gt213*gtu11 + Gt113*Gt211*gt23L*gtu11 + + Gt113*gt11L*Gt123*gtu12 + Gt112*Gt113*gt13L*gtu12 + + Gt111*Gt123*gt13L*gtu12 + Gt123*gt12L*Gt213*gtu12 + + Gt122*gt13L*Gt213*gtu12 + Gt113*gt12L*Gt223*gtu12 + + Gt112*gt13L*Gt223*gtu12 + Gt213*Gt223*gt22L*gtu12 + + Gt123*Gt211*gt23L*gtu12 + Gt113*Gt212*gt23L*gtu12 + + Gt213*Gt222*gt23L*gtu12 + Gt113*Gt312*gt33L*gtu12 + + Gt223*Gt312*gt33L*gtu12 + Gt113*gt11L*Gt133*gtu13 + + Gt111*Gt133*gt13L*gtu13 + gt12L*Gt133*Gt213*gtu13 + + Gt123*gt13L*Gt213*gtu13 + Gt113*gt12L*Gt233*gtu13 + + Gt112*gt13L*Gt233*gtu13 + Gt213*gt22L*Gt233*gtu13 + + Gt133*Gt211*gt23L*gtu13 + Gt113*Gt213*gt23L*gtu13 + + Gt213*Gt223*gt23L*gtu13 + Gt212*Gt233*gt23L*gtu13 + + Gt233*Gt312*gt33L*gtu13 + Gt113*Gt313*gt33L*gtu13 + Gt112*Gt123*gt13L*gtu22 + Gt123*gt12L*Gt223*gtu22 + Gt122*gt13L*Gt223*gtu22 + Gt123*Gt212*gt23L*gtu22 + - Gt222*Gt223*gt23L*gtu22 + Gt223*Gt322*gt33L*gtu22 + - Gt113*gt11L*Gt133*gtu31 + Gt111*Gt133*gt13L*gtu31 + - gt12L*Gt133*Gt213*gtu31 + Gt123*gt13L*Gt213*gtu31 + - Gt113*gt12L*Gt233*gtu31 + Gt112*gt13L*Gt233*gtu31 + - Gt213*gt22L*Gt233*gtu31 + Gt133*Gt211*gt23L*gtu31 + - Gt113*Gt213*gt23L*gtu31 + Gt213*Gt223*gt23L*gtu31 + - Gt212*Gt233*gt23L*gtu31 + Gt113*Gt313*gt33L*gtu31 + - Gt213*Gt323*gt33L*gtu31 + gt11L*Gt123*Gt133*gtu32 + - Gt113*Gt123*gt13L*gtu32 + Gt112*Gt133*gt13L*gtu32 + - gt12L*Gt133*Gt223*gtu32 + Gt123*gt13L*Gt223*gtu32 + - Gt123*gt12L*Gt233*gtu32 + Gt122*gt13L*Gt233*gtu32 + - Gt223*gt22L*Gt233*gtu32 + Gt133*Gt212*gt23L*gtu32 + - Gt123*Gt213*gt23L*gtu32 + Gt222*Gt233*gt23L*gtu32 + - Gt233*Gt322*gt33L*gtu32 + Gt223*Gt323*gt33L*gtu32 + - Gt113*Gt133*gt13L*gtu33 + gt12L*Gt133*Gt233*gtu33 + - Gt123*gt13L*Gt233*gtu33 + Gt133*Gt213*gt23L*gtu33 + - Gt223*Gt233*gt23L*gtu33 + gt13L*gtu31*SQR(Gt113)) + + Gt222*Gt223*gt23L*gtu22 + gt11L*Gt123*Gt133*gtu23 + + Gt113*Gt123*gt13L*gtu23 + Gt112*Gt133*gt13L*gtu23 + + Gt123*gt13L*Gt223*gtu23 + Gt123*gt12L*Gt233*gtu23 + + Gt122*gt13L*Gt233*gtu23 + Gt223*gt22L*Gt233*gtu23 + + Gt133*Gt212*gt23L*gtu23 + Gt123*Gt213*gt23L*gtu23 + + Gt123*Gt313*gt33L*gtu23 + Gt233*Gt322*gt33L*gtu23 + + Gt113*Gt133*gt13L*gtu33 + Gt123*gt13L*Gt233*gtu33 + + Gt133*Gt213*gt23L*gtu33 + gt13L*gtu13*SQR(Gt113)) + gt11L*gtu22*SQR(Gt123) + gt11L*gtu33*SQR(Gt133) + gt22L*gtu11*SQR(Gt213) + gt22L*gtu22*SQR(Gt223) + - 2*gt23L*gtu32*SQR(Gt223) + gt22L*gtu33*SQR(Gt233) + + 2*gt23L*gtu23*SQR(Gt223) + gt22L*gtu33*SQR(Gt233) + 3*gt33L*gtu11*SQR(Gt313) + 3*gt33L*gtu22*SQR(Gt323) + 3*gt33L*gtu33*SQR(Gt333); @@ -821,38 +844,38 @@ void ML_BSSN_O8_constraints_Body(cGH const * restrict const cctkGH, int const di Gt333*PDstandardNth3phi)) + fac2*SQR(PDstandardNth3phi); CCTK_REAL Rphi11 = -2*(cdphi211 + 2*(-1 + gt11L*gtu11)*SQR(cdphi1) + - gt11L*(cdphi211*gtu11 + 4*(cdphi1*(cdphi2*gtu21 + cdphi3*gtu31) + - cdphi2*cdphi3*gtu32) + cdphi233*gtu33 + gtu22*(cdphi222 + - 2*SQR(cdphi2)) + 2*(cdphi212*gtu21 + cdphi213*gtu31 + cdphi223*gtu32 + + 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 Rphi12 = -2*(cdphi212 + cdphi1*(cdphi2*(-2 + 4*gt12L*gtu21) - + 4*cdphi3*gt12L*gtu31) + gt12L*(cdphi211*gtu11 + 4*cdphi2*cdphi3*gtu32 - + 2*(cdphi212*gtu21 + cdphi213*gtu31 + cdphi223*gtu32 + + 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 Rphi13 = -2*(cdphi213 + cdphi1*(4*cdphi2*gt13L*gtu21 + - cdphi3*(-2 + 4*gt13L*gtu31)) + gt13L*(cdphi211*gtu11 + - 4*cdphi2*cdphi3*gtu32 + 2*(cdphi212*gtu21 + cdphi213*gtu31 + - cdphi223*gtu32 + gtu11*SQR(cdphi1)) + gtu22*(cdphi222 + 2*SQR(cdphi2)) + 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 Rphi22 = -2*(cdphi222 + 2*(-1 + gt22L*gtu22)*SQR(cdphi2) + - gt22L*(cdphi222*gtu22 + 4*(cdphi1*cdphi3*gtu31 + cdphi2*(cdphi1*gtu21 + - cdphi3*gtu32)) + cdphi233*gtu33 + gtu11*(cdphi211 + 2*SQR(cdphi1)) + - 2*(cdphi212*gtu21 + cdphi213*gtu31 + cdphi223*gtu32 + + 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 Rphi23 = -2*(cdphi223 + cdphi2*(4*cdphi1*gt23L*gtu21 + - cdphi3*(-2 + 4*gt23L*gtu32)) + gt23L*(cdphi222*gtu22 + - 4*cdphi1*cdphi3*gtu31 + gtu11*(cdphi211 + 2*SQR(cdphi1)) + - 2*(cdphi212*gtu21 + cdphi213*gtu31 + cdphi223*gtu32 + - gtu22*SQR(cdphi2)) + gtu33*(cdphi233 + 2*SQR(cdphi3)))); + 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 Rphi33 = -2*(cdphi233 + gt33L*((4*cdphi1*cdphi2 + - 2*cdphi212)*gtu21 + 4*cdphi3*(cdphi1*gtu31 + cdphi2*gtu32) + - 2*(cdphi213*gtu31 + cdphi223*gtu32) + cdphi233*gtu33 + gtu11*(cdphi211 + 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)); @@ -862,13 +885,13 @@ void ML_BSSN_O8_constraints_Body(cGH const * restrict const cctkGH, int const di CCTK_REAL gu11 = em4phi*gtu11; - CCTK_REAL gu21 = em4phi*gtu21; + CCTK_REAL gu12 = em4phi*gtu12; - CCTK_REAL gu31 = em4phi*gtu31; + CCTK_REAL gu13 = em4phi*gtu13; CCTK_REAL gu22 = em4phi*gtu22; - CCTK_REAL gu32 = em4phi*gtu32; + CCTK_REAL gu23 = em4phi*gtu23; CCTK_REAL gu33 = em4phi*gtu33; @@ -884,26 +907,26 @@ void ML_BSSN_O8_constraints_Body(cGH const * restrict const cctkGH, int const di CCTK_REAL R33 = Rphi33 + Rt33; - CCTK_REAL trR = gu11*R11 + gu22*R22 + 2*(gu21*R12 + gu31*R13 + - gu32*R23) + gu33*R33; + CCTK_REAL trR = gu11*R11 + gu22*R22 + 2*(gu12*R12 + gu13*R13 + + gu23*R23) + gu33*R33; - CCTK_REAL Atm11 = At11L*gtu11 + At12L*gtu21 + At13L*gtu31; + CCTK_REAL Atm11 = At11L*gtu11 + At12L*gtu12 + At13L*gtu13; - CCTK_REAL Atm21 = At11L*gtu21 + At12L*gtu22 + At13L*gtu32; + CCTK_REAL Atm21 = At11L*gtu12 + At12L*gtu22 + At13L*gtu23; - CCTK_REAL Atm31 = At11L*gtu31 + At12L*gtu32 + At13L*gtu33; + CCTK_REAL Atm31 = At11L*gtu13 + At12L*gtu23 + At13L*gtu33; - CCTK_REAL Atm12 = At12L*gtu11 + At22L*gtu21 + At23L*gtu31; + CCTK_REAL Atm12 = At12L*gtu11 + At22L*gtu12 + At23L*gtu13; - CCTK_REAL Atm22 = At12L*gtu21 + At22L*gtu22 + At23L*gtu32; + CCTK_REAL Atm22 = At12L*gtu12 + At22L*gtu22 + At23L*gtu23; - CCTK_REAL Atm32 = At12L*gtu31 + At22L*gtu32 + At23L*gtu33; + CCTK_REAL Atm32 = At12L*gtu13 + At22L*gtu23 + At23L*gtu33; - CCTK_REAL Atm13 = At13L*gtu11 + At23L*gtu21 + At33L*gtu31; + CCTK_REAL Atm13 = At13L*gtu11 + At23L*gtu12 + At33L*gtu13; - CCTK_REAL Atm23 = At13L*gtu21 + At23L*gtu22 + At33L*gtu32; + CCTK_REAL Atm23 = At13L*gtu12 + At23L*gtu22 + At33L*gtu23; - CCTK_REAL Atm33 = At13L*gtu31 + At23L*gtu32 + At33L*gtu33; + CCTK_REAL Atm33 = At13L*gtu13 + At23L*gtu23 + At33L*gtu33; CCTK_REAL rho = pow(alphaL,-2)*(eTttL - 2*(beta2L*eTtyL + beta3L*eTtzL) + 2*(beta1L*(-eTtxL + beta2L*eTxyL + beta3L*eTxzL) + @@ -925,73 +948,73 @@ void ML_BSSN_O8_constraints_Body(cGH const * restrict const cctkGH, int const di 0.6666666666666666666666666666666666666667*SQR(trKL); CCTK_REAL M1L = -2.*((At12L*Gt211 + At13L*Gt311)*gtu11 + - At11L*Gt123*gtu32) + At12L*((6.*cdphi1 - 1.*Gt111)*gtu21 - - 3.*Gt213*gtu31 + 6.*(cdphi2*gtu22 + cdphi3*gtu32) - 1.*Gt233*gtu33) - - 1.*((At22L*Gt212 + At12L*(Gt112 + Gt222) + At23L*Gt312 + - At13L*Gt322)*gtu22 + At13L*(Gt111*gtu31 + Gt112*gtu32 + Gt113*gtu33)) + - At11L*((6.*cdphi1 - 2.*Gt111)*gtu11 + 6.*(cdphi2*gtu21 + cdphi3*gtu31) - - 1.*(Gt122*gtu22 + Gt133*gtu33)) + gtu11*PDstandardNth1At11 - + 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 + - gtu21*(-1.*(At22L*Gt211 + At23L*Gt311) - 3.*(At11L*Gt112 + At12L*Gt212 + gtu12*(-1.*(At22L*Gt211 + At23L*Gt311) - 3.*(At11L*Gt112 + At12L*Gt212 + At13L*Gt312) + PDstandardNth1At12 + PDstandardNth2At11) + - gtu22*PDstandardNth2At12 + gtu31*(-3.*At11L*Gt113 - 1.*(At23L*Gt211 + - At33L*Gt311) + At13L*(6.*cdphi1 - 3.*Gt313) + PDstandardNth1At13 + - PDstandardNth3At11) + gtu32*(-2.*At12L*Gt223 - 1.*(At12L*Gt113 + - At22L*Gt213 + At33L*Gt312 + At23L*(Gt212 + Gt313)) + At13L*(6.*cdphi2 - - 2.*Gt323) + PDstandardNth2At13 + PDstandardNth3At12) + - gtu33*(-1.*(At23L*Gt213 + At33L*Gt313) + At13L*(6.*cdphi3 - 1.*Gt333) + - PDstandardNth3At13) - 25.13274122871834590770114706623602307358*S1; - - CCTK_REAL M2L = At12L*((6.*cdphi1 - 1.*Gt111)*gtu11 - 2.*Gt122*gtu22 + - 6.*(cdphi2*gtu21 + cdphi3*gtu31) - 3.*Gt123*gtu32 - 1.*Gt133*gtu33) + - At22L*((6.*cdphi2 - 2.*Gt222)*gtu22 - 2.*Gt213*gtu31 + 6.*cdphi3*gtu32 - - 1.*Gt233*gtu33) + At23L*(-2.*Gt322*gtu22 - 1.*Gt333*gtu33 + - 6.*(cdphi1*gtu31 + cdphi2*gtu32 + cdphi3*gtu33)) - 1.*((At11L*Gt112 + - At22L*Gt211 + At12L*Gt212 + At23L*Gt311 + At13L*Gt312)*gtu11 + - Gt122*(At11L*gtu21 + At13L*gtu32) + (At23L*Gt223 + At33L*Gt323)*gtu33 + - At13L*(Gt112*gtu31 + Gt123*gtu33)) + gtu11*PDstandardNth1At12 + - gtu21*(At22L*(6.*cdphi1 - 3.*Gt212) + At12L*(-3.*Gt112 - 1.*Gt222) - - 3.*At23L*Gt312 - 1.*At13L*Gt322 + PDstandardNth1At22 + - PDstandardNth2At12) + gtu22*PDstandardNth2At22 - + 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 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 + - gtu31*(At12L*(-2.*Gt113 - 1.*Gt223) - 2.*At23L*Gt313 - 1.*(At11L*Gt123 - + At23L*Gt212 + At33L*Gt312 + At13L*Gt323) + PDstandardNth1At23 + - PDstandardNth3At12) + gtu32*(-1.*(At23L*Gt222 + At33L*Gt322) - - 3.*(At22L*Gt223 + At23L*Gt323) + PDstandardNth2At23 + + 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 M3L = -1.*((At11L*Gt113 + At23L*Gt211 + At12L*Gt213 + At33L*Gt311)*gtu11 + (At22L*Gt223 + At33L*Gt322 + At23L*Gt323)*gtu22 + - At11L*Gt133*gtu31 + At12L*(Gt113*gtu21 + Gt123*gtu22 + Gt133*gtu32)) + - At13L*((6.*cdphi1 - 1.*(Gt111 + Gt313))*gtu11 - 1.*Gt122*gtu22 + - 6.*(cdphi2*gtu21 + cdphi3*gtu31) - 3.*Gt123*gtu32 - 2.*Gt133*gtu33) + - At23L*((6.*cdphi2 - 1.*Gt222)*gtu22 - 3.*Gt213*gtu31 + 6.*cdphi3*gtu32 - - 2.*Gt233*gtu33) + gtu11*PDstandardNth1At13 + gtu21*(-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 + - gtu31*(-1.*At12L*Gt233 + At33L*(6.*cdphi1 - 3.*Gt313) + - At13L*(-3.*Gt113 - 1.*Gt333) + PDstandardNth1At33 + PDstandardNth3At13) - + gtu32*(-1.*At22L*Gt233 + At33L*(6.*cdphi2 - 3.*Gt323) + - At23L*(-3.*Gt223 - 1.*Gt333) + PDstandardNth2At33 + PDstandardNth3At23) - + gtu33*(At33L*(6.*cdphi3 - 2.*Gt333) + PDstandardNth3At33) - + 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*gtu21 + - Gt113*gtu31 + Gt123*gtu32) + Gt133*gtu33 - Xt1L; + 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*gtu21 + - Gt213*gtu31 + Gt223*gtu32) + Gt233*gtu33 - Xt2L; + 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*gtu21 + - Gt313*gtu31 + Gt323*gtu32) + Gt333*gtu33 - Xt3L; + 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*gtu21 + - At13L*gtu31 + At23L*gtu32) + At33L*gtu33; + CCTK_REAL cAL = At11L*gtu11 + At22L*gtu22 + 2*(At12L*gtu12 + + At13L*gtu13 + At23L*gtu23) + At33L*gtu33; /* Copy local copies back to grid functions */ diff --git a/ML_BSSN_O8/src/ML_BSSN_O8_constraints_boundary.c b/ML_BSSN_O8/src/ML_BSSN_O8_constraints_boundary.c index 1e70cbe..98cdb26 100644 --- a/ML_BSSN_O8/src/ML_BSSN_O8_constraints_boundary.c +++ b/ML_BSSN_O8/src/ML_BSSN_O8_constraints_boundary.c @@ -20,6 +20,30 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((x) * (x) * (x) * (x)) +void ML_BSSN_O8_constraints_boundary_SelectBCs(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT ierr = 0; + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O8::ML_cons_detg","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O8::ML_cons_detg."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O8::ML_cons_Gamma","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O8::ML_cons_Gamma."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O8::ML_cons_traceA","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O8::ML_cons_traceA."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O8::ML_Ham","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O8::ML_Ham."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O8::ML_mom","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O8::ML_mom."); + return; +} + void ML_BSSN_O8_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[]) { DECLARE_CCTK_ARGUMENTS; diff --git a/ML_BSSN_O8/src/ML_BSSN_O8_convertFromADMBase.c b/ML_BSSN_O8/src/ML_BSSN_O8_convertFromADMBase.c index b672c39..9e6012f 100644 --- a/ML_BSSN_O8/src/ML_BSSN_O8_convertFromADMBase.c +++ b/ML_BSSN_O8/src/ML_BSSN_O8_convertFromADMBase.c @@ -137,13 +137,13 @@ void ML_BSSN_O8_convertFromADMBase_Body(cGH const * restrict const cctkGH, int c CCTK_REAL gu11 = INV(detg)*(g22*g33 - SQR(g23)); - CCTK_REAL gu21 = (g13*g23 - g12*g33)*INV(detg); + CCTK_REAL gu12 = (g13*g23 - g12*g33)*INV(detg); - CCTK_REAL gu31 = (-(g13*g22) + g12*g23)*INV(detg); + CCTK_REAL gu13 = (-(g13*g22) + g12*g23)*INV(detg); CCTK_REAL gu22 = INV(detg)*(g11*g33 - SQR(g13)); - CCTK_REAL gu32 = (g12*g13 - g11*g23)*INV(detg); + CCTK_REAL gu23 = (g12*g13 - g11*g23)*INV(detg); CCTK_REAL gu33 = INV(detg)*(g11*g22 - SQR(g12)); @@ -164,7 +164,7 @@ void ML_BSSN_O8_convertFromADMBase_Body(cGH const * restrict const cctkGH, int c CCTK_REAL gt33L = em4phi*g33; - trKL = gu11*kxxL + gu22*kyyL + 2*(gu21*kxyL + gu31*kxzL + gu32*kyzL) + + trKL = gu11*kxxL + gu22*kyyL + 2*(gu12*kxyL + gu13*kxzL + gu23*kyzL) + gu33*kzzL; CCTK_REAL At11L = em4phi*(kxxL - g11*kthird*trKL); diff --git a/ML_BSSN_O8/src/ML_BSSN_O8_convertFromADMBaseGamma.c b/ML_BSSN_O8/src/ML_BSSN_O8_convertFromADMBaseGamma.c index e97a941..3d92995 100644 --- a/ML_BSSN_O8/src/ML_BSSN_O8_convertFromADMBaseGamma.c +++ b/ML_BSSN_O8/src/ML_BSSN_O8_convertFromADMBaseGamma.c @@ -20,6 +20,24 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((x) * (x) * (x) * (x)) +void ML_BSSN_O8_convertFromADMBaseGamma_SelectBCs(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT ierr = 0; + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O8::ML_dtlapse","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O8::ML_dtlapse."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O8::ML_dtshift","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O8::ML_dtshift."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_BSSN_O8::ML_Gamma","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_BSSN_O8::ML_Gamma."); + return; +} + 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[]) { DECLARE_CCTK_ARGUMENTS; @@ -211,96 +229,96 @@ void ML_BSSN_O8_convertFromADMBaseGamma_Body(cGH const * restrict const cctkGH, CCTK_REAL gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L)); - CCTK_REAL gtu21 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt); + CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt); - CCTK_REAL gtu31 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt); + CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt); CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L)); - CCTK_REAL gtu32 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt); + CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt); CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L)); CCTK_REAL Gt111 = khalf*(gtu11*PDstandardNth1gt11 + - 2*(gtu21*PDstandardNth1gt12 + gtu31*PDstandardNth1gt13) - - gtu21*PDstandardNth2gt11 - gtu31*PDstandardNth3gt11); + 2*(gtu12*PDstandardNth1gt12 + gtu13*PDstandardNth1gt13) - + gtu12*PDstandardNth2gt11 - gtu13*PDstandardNth3gt11); - CCTK_REAL Gt211 = khalf*(gtu21*PDstandardNth1gt11 + - 2*(gtu22*PDstandardNth1gt12 + gtu32*PDstandardNth1gt13) - - gtu22*PDstandardNth2gt11 - gtu32*PDstandardNth3gt11); + CCTK_REAL Gt211 = khalf*(gtu12*PDstandardNth1gt11 + + 2*(gtu22*PDstandardNth1gt12 + gtu23*PDstandardNth1gt13) - + gtu22*PDstandardNth2gt11 - gtu23*PDstandardNth3gt11); - CCTK_REAL Gt311 = khalf*(gtu31*PDstandardNth1gt11 + - 2*(gtu32*PDstandardNth1gt12 + gtu33*PDstandardNth1gt13) - - gtu32*PDstandardNth2gt11 - gtu33*PDstandardNth3gt11); + CCTK_REAL Gt311 = khalf*(gtu13*PDstandardNth1gt11 + + 2*(gtu23*PDstandardNth1gt12 + gtu33*PDstandardNth1gt13) - + gtu23*PDstandardNth2gt11 - gtu33*PDstandardNth3gt11); - CCTK_REAL Gt112 = khalf*(gtu21*PDstandardNth1gt22 + - gtu11*PDstandardNth2gt11 + gtu31*(PDstandardNth1gt23 + + CCTK_REAL Gt112 = khalf*(gtu12*PDstandardNth1gt22 + + gtu11*PDstandardNth2gt11 + gtu13*(PDstandardNth1gt23 + PDstandardNth2gt13 - PDstandardNth3gt12)); CCTK_REAL Gt212 = khalf*(gtu22*PDstandardNth1gt22 + - gtu21*PDstandardNth2gt11 + gtu32*(PDstandardNth1gt23 + + gtu12*PDstandardNth2gt11 + gtu23*(PDstandardNth1gt23 + PDstandardNth2gt13 - PDstandardNth3gt12)); - CCTK_REAL Gt312 = khalf*(gtu32*PDstandardNth1gt22 + - gtu31*PDstandardNth2gt11 + gtu33*(PDstandardNth1gt23 + + CCTK_REAL Gt312 = khalf*(gtu23*PDstandardNth1gt22 + + gtu13*PDstandardNth2gt11 + gtu33*(PDstandardNth1gt23 + PDstandardNth2gt13 - PDstandardNth3gt12)); - CCTK_REAL Gt113 = khalf*(gtu31*PDstandardNth1gt33 + - gtu11*PDstandardNth3gt11 + gtu21*(PDstandardNth1gt23 - + CCTK_REAL Gt113 = khalf*(gtu13*PDstandardNth1gt33 + + gtu11*PDstandardNth3gt11 + gtu12*(PDstandardNth1gt23 - PDstandardNth2gt13 + PDstandardNth3gt12)); - CCTK_REAL Gt213 = khalf*(gtu32*PDstandardNth1gt33 + - gtu21*PDstandardNth3gt11 + gtu22*(PDstandardNth1gt23 - + CCTK_REAL Gt213 = khalf*(gtu23*PDstandardNth1gt33 + + gtu12*PDstandardNth3gt11 + gtu22*(PDstandardNth1gt23 - PDstandardNth2gt13 + PDstandardNth3gt12)); CCTK_REAL Gt313 = khalf*(gtu33*PDstandardNth1gt33 + - gtu31*PDstandardNth3gt11 + gtu32*(PDstandardNth1gt23 - + gtu13*PDstandardNth3gt11 + gtu23*(PDstandardNth1gt23 - PDstandardNth2gt13 + PDstandardNth3gt12)); CCTK_REAL Gt122 = khalf*(gtu11*(-PDstandardNth1gt22 + - 2*PDstandardNth2gt12) + gtu21*PDstandardNth2gt22 + - gtu31*(2*PDstandardNth2gt23 - PDstandardNth3gt22)); + 2*PDstandardNth2gt12) + gtu12*PDstandardNth2gt22 + + gtu13*(2*PDstandardNth2gt23 - PDstandardNth3gt22)); - CCTK_REAL Gt222 = khalf*(gtu21*(-PDstandardNth1gt22 + + CCTK_REAL Gt222 = khalf*(gtu12*(-PDstandardNth1gt22 + 2*PDstandardNth2gt12) + gtu22*PDstandardNth2gt22 + - gtu32*(2*PDstandardNth2gt23 - PDstandardNth3gt22)); + gtu23*(2*PDstandardNth2gt23 - PDstandardNth3gt22)); - CCTK_REAL Gt322 = khalf*(gtu31*(-PDstandardNth1gt22 + - 2*PDstandardNth2gt12) + gtu32*PDstandardNth2gt22 + + CCTK_REAL Gt322 = khalf*(gtu13*(-PDstandardNth1gt22 + + 2*PDstandardNth2gt12) + gtu23*PDstandardNth2gt22 + gtu33*(2*PDstandardNth2gt23 - PDstandardNth3gt22)); - CCTK_REAL Gt123 = khalf*(gtu31*PDstandardNth2gt33 + + CCTK_REAL Gt123 = khalf*(gtu13*PDstandardNth2gt33 + gtu11*(-PDstandardNth1gt23 + PDstandardNth2gt13 + PDstandardNth3gt12) + - gtu21*PDstandardNth3gt22); + gtu12*PDstandardNth3gt22); - CCTK_REAL Gt223 = khalf*(gtu32*PDstandardNth2gt33 + - gtu21*(-PDstandardNth1gt23 + PDstandardNth2gt13 + PDstandardNth3gt12) + + CCTK_REAL Gt223 = khalf*(gtu23*PDstandardNth2gt33 + + gtu12*(-PDstandardNth1gt23 + PDstandardNth2gt13 + PDstandardNth3gt12) + gtu22*PDstandardNth3gt22); CCTK_REAL Gt323 = khalf*(gtu33*PDstandardNth2gt33 + - gtu31*(-PDstandardNth1gt23 + PDstandardNth2gt13 + PDstandardNth3gt12) + - gtu32*PDstandardNth3gt22); + gtu13*(-PDstandardNth1gt23 + PDstandardNth2gt13 + PDstandardNth3gt12) + + gtu23*PDstandardNth3gt22); CCTK_REAL Gt133 = khalf*(-(gtu11*PDstandardNth1gt33) - - gtu21*PDstandardNth2gt33 + 2*gtu11*PDstandardNth3gt13 + - 2*gtu21*PDstandardNth3gt23 + gtu31*PDstandardNth3gt33); + gtu12*PDstandardNth2gt33 + 2*gtu11*PDstandardNth3gt13 + + 2*gtu12*PDstandardNth3gt23 + gtu13*PDstandardNth3gt33); - CCTK_REAL Gt233 = khalf*(-(gtu21*PDstandardNth1gt33) - - gtu22*PDstandardNth2gt33 + 2*gtu21*PDstandardNth3gt13 + - 2*gtu22*PDstandardNth3gt23 + gtu32*PDstandardNth3gt33); + CCTK_REAL Gt233 = khalf*(-(gtu12*PDstandardNth1gt33) - + gtu22*PDstandardNth2gt33 + 2*gtu12*PDstandardNth3gt13 + + 2*gtu22*PDstandardNth3gt23 + gtu23*PDstandardNth3gt33); - CCTK_REAL Gt333 = khalf*(-(gtu31*PDstandardNth1gt33) - - gtu32*PDstandardNth2gt33 + 2*gtu31*PDstandardNth3gt13 + - 2*gtu32*PDstandardNth3gt23 + gtu33*PDstandardNth3gt33); + CCTK_REAL Gt333 = khalf*(-(gtu13*PDstandardNth1gt33) - + gtu23*PDstandardNth2gt33 + 2*gtu13*PDstandardNth3gt13 + + 2*gtu23*PDstandardNth3gt23 + gtu33*PDstandardNth3gt33); - CCTK_REAL Xt1L = Gt111*gtu11 + Gt122*gtu22 + 2*(Gt112*gtu21 + - Gt113*gtu31 + Gt123*gtu32) + Gt133*gtu33; + CCTK_REAL Xt1L = Gt111*gtu11 + Gt122*gtu22 + 2*(Gt112*gtu12 + + Gt113*gtu13 + Gt123*gtu23) + Gt133*gtu33; - CCTK_REAL Xt2L = Gt211*gtu11 + Gt222*gtu22 + 2*(Gt212*gtu21 + - Gt213*gtu31 + Gt223*gtu32) + Gt233*gtu33; + CCTK_REAL Xt2L = Gt211*gtu11 + Gt222*gtu22 + 2*(Gt212*gtu12 + + Gt213*gtu13 + Gt223*gtu23) + Gt233*gtu33; - CCTK_REAL Xt3L = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu21 + - Gt313*gtu31 + Gt323*gtu32) + Gt333*gtu33; + CCTK_REAL Xt3L = Gt311*gtu11 + Gt322*gtu22 + 2*(Gt312*gtu12 + + Gt313*gtu13 + Gt323*gtu23) + Gt333*gtu33; CCTK_REAL AL = 12*IfThen(LapseACoeff != 0,-(dtalpL*INV(harmonicF)*pow(alphaL,-harmonicN)),0) + diff --git a/ML_BSSN_O8/src/ML_BSSN_O8_convertToADMBaseDtLapseShift.c b/ML_BSSN_O8/src/ML_BSSN_O8_convertToADMBaseDtLapseShift.c index cf9c905..4b00d04 100644 --- a/ML_BSSN_O8/src/ML_BSSN_O8_convertToADMBaseDtLapseShift.c +++ b/ML_BSSN_O8/src/ML_BSSN_O8_convertToADMBaseDtLapseShift.c @@ -20,6 +20,21 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((x) * (x) * (x) * (x)) +void ML_BSSN_O8_convertToADMBaseDtLapseShift_SelectBCs(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT ierr = 0; + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ADMBase::dtlapse","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ADMBase::dtlapse."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ADMBase::dtshift","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ADMBase::dtshift."); + return; +} + 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[]) { DECLARE_CCTK_ARGUMENTS; diff --git a/ML_BSSN_O8/src/ML_BSSN_O8_convertToADMBaseDtLapseShiftBoundary.c b/ML_BSSN_O8/src/ML_BSSN_O8_convertToADMBaseDtLapseShiftBoundary.c index 463a8bb..b32257b 100644 --- a/ML_BSSN_O8/src/ML_BSSN_O8_convertToADMBaseDtLapseShiftBoundary.c +++ b/ML_BSSN_O8/src/ML_BSSN_O8_convertToADMBaseDtLapseShiftBoundary.c @@ -20,6 +20,21 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((x) * (x) * (x) * (x)) +void ML_BSSN_O8_convertToADMBaseDtLapseShiftBoundary_SelectBCs(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT ierr = 0; + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ADMBase::dtlapse","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ADMBase::dtlapse."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ADMBase::dtshift","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ADMBase::dtshift."); + return; +} + 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[]) { DECLARE_CCTK_ARGUMENTS; diff --git a/ML_BSSN_O8/src/ML_BSSN_O8_enforce.c b/ML_BSSN_O8/src/ML_BSSN_O8_enforce.c index 5fb8658..6c02be5 100644 --- a/ML_BSSN_O8/src/ML_BSSN_O8_enforce.c +++ b/ML_BSSN_O8/src/ML_BSSN_O8_enforce.c @@ -119,18 +119,18 @@ void ML_BSSN_O8_enforce_Body(cGH const * restrict const cctkGH, int const dir, i CCTK_REAL gtu11 = INV(detgt)*(gt22L*gt33L - SQR(gt23L)); - CCTK_REAL gtu21 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt); + CCTK_REAL gtu12 = (gt13L*gt23L - gt12L*gt33L)*INV(detgt); - CCTK_REAL gtu31 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt); + CCTK_REAL gtu13 = (-(gt13L*gt22L) + gt12L*gt23L)*INV(detgt); CCTK_REAL gtu22 = INV(detgt)*(gt11L*gt33L - SQR(gt13L)); - CCTK_REAL gtu32 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt); + CCTK_REAL gtu23 = (gt12L*gt13L - gt11L*gt23L)*INV(detgt); CCTK_REAL gtu33 = INV(detgt)*(gt11L*gt22L - SQR(gt12L)); - CCTK_REAL trAt = At11L*gtu11 + At22L*gtu22 + 2*(At12L*gtu21 + - At13L*gtu31 + At23L*gtu32) + At33L*gtu33; + CCTK_REAL trAt = At11L*gtu11 + At22L*gtu22 + 2*(At12L*gtu12 + + At13L*gtu13 + At23L*gtu23) + At33L*gtu33; At11L = At11L - gt11L*kthird*trAt; diff --git a/ML_BSSN_O8_Helper/schedule.ccl b/ML_BSSN_O8_Helper/schedule.ccl index 41cd0ef..be82e75 100644 --- a/ML_BSSN_O8_Helper/schedule.ccl +++ b/ML_BSSN_O8_Helper/schedule.ccl @@ -132,7 +132,7 @@ if (CCTK_EQUALS (evolution_method, "ML_BSSN_O8")) { } else if (CCTK_EQUALS (calculate_ADMBase_variables_at, "CCTK_EVOL")) { - SCHEDULE GROUP ML_BSSN_O8_convertToADMBaseGroupWrapper AT evol AFTER MoL_Evolution BEFORE (ADMBase_SetADMVars Whisky_PostStep) + SCHEDULE GROUP ML_BSSN_O8_convertToADMBaseGroupWrapper IN MoL_PseudoEvolution BEFORE (ADMBase_SetADMVars Whisky_PostStep) { } "Calculate ADM variables" } @@ -143,7 +143,7 @@ if (CCTK_EQUALS (evolution_method, "ML_BSSN_O8")) { } "Calculate ADM variables" } - SCHEDULE GROUP ML_BSSN_O8_convertToADMBaseGroupWrapper AT CCTK_POST_RECOVER_VARIABLES + SCHEDULE GROUP ML_BSSN_O8_convertToADMBaseGroupWrapper AT post_recover_variables { } "Calculate ADM variables" diff --git a/ML_WaveToy/interface.ccl b/ML_WaveToy/interface.ccl index 0eaf036..5a72a99 100644 --- a/ML_WaveToy/interface.ccl +++ b/ML_WaveToy/interface.ccl @@ -25,25 +25,25 @@ CCTK_INT FUNCTION Boundary_SelectVarForBC(CCTK_POINTER_TO_CONST IN GH, CCTK_INT USES FUNCTION Boundary_SelectVarForBC public: -CCTK_REAL WT_rho type=GF timelevels=2 tags='tensortypealias="Scalar" tensorweight=1.0000000000000000000' +CCTK_REAL WT_rho type=GF timelevels=2 tags='tensortypealias="Scalar" tensorweight=1' { rho } "WT_rho" public: -CCTK_REAL WT_u type=GF timelevels=2 tags='tensortypealias="Scalar" tensorweight=1.0000000000000000000' +CCTK_REAL WT_u type=GF timelevels=2 tags='tensortypealias="Scalar" tensorweight=1' { u } "WT_u" public: -CCTK_REAL WT_rhorhs type=GF timelevels=2 tags='tensortypealias="Scalar" tensorweight=1.0000000000000000000' +CCTK_REAL WT_rhorhs type=GF timelevels=2 tags='tensortypealias="Scalar" tensorweight=1' { rhorhs } "WT_rhorhs" public: -CCTK_REAL WT_urhs type=GF timelevels=2 tags='tensortypealias="Scalar" tensorweight=1.0000000000000000000' +CCTK_REAL WT_urhs type=GF timelevels=2 tags='tensortypealias="Scalar" tensorweight=1' { urhs } "WT_urhs" diff --git a/ML_WaveToy/schedule.ccl b/ML_WaveToy/schedule.ccl index 883a31b..9517af0 100644 --- a/ML_WaveToy/schedule.ccl +++ b/ML_WaveToy/schedule.ccl @@ -86,7 +86,7 @@ schedule ML_WaveToy_CheckBoundaries at BASEGRID OPTIONS: meta } "check boundaries treatment" -schedule group ApplyBCs as ML_WaveToy_ApplyBCs in MoL_PostStep after ML_WaveToy_SelectBoundConds +schedule group ApplyBCs as ML_WaveToy_ApplyBCs in MoL_PostStep after ML_WaveToy_SelectBoundConds { # no language specified } "Apply boundary conditions controlled by thorn Boundary" diff --git a/ML_WaveToy/src/WT_RHS.c b/ML_WaveToy/src/WT_RHS.c index 4f0e59f..35cdb5c 100644 --- a/ML_WaveToy/src/WT_RHS.c +++ b/ML_WaveToy/src/WT_RHS.c @@ -20,6 +20,21 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((x) * (x) * (x) * (x)) +void WT_RHS_SelectBCs(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT ierr = 0; + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_WaveToy::WT_rhorhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_WaveToy::WT_rhorhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_WaveToy::WT_urhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_WaveToy::WT_urhs."); + return; +} + 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[]) { DECLARE_CCTK_ARGUMENTS; diff --git a/ML_WaveToyFO/interface.ccl b/ML_WaveToyFO/interface.ccl index cdb6319..5ed9b36 100644 --- a/ML_WaveToyFO/interface.ccl +++ b/ML_WaveToyFO/interface.ccl @@ -8,7 +8,6 @@ inherits: Grid GenericFD Boundary USES INCLUDE: GenericFD.h USES INCLUDE: Symmetry.h -USES INCLUDE: Vectors.hh USES INCLUDE: sbp_calc_coeffs.h USES INCLUDE: Boundary.h USES INCLUDE: loopcontrol.h @@ -26,7 +25,7 @@ CCTK_INT FUNCTION Boundary_SelectVarForBC(CCTK_POINTER_TO_CONST IN GH, CCTK_INT USES FUNCTION Boundary_SelectVarForBC public: -CCTK_REAL WT_w type=GF timelevels=1 tags='tensortypealias="U" tensorweight=1.0000000000000000000' +CCTK_REAL WT_w type=GF timelevels=1 tags='tensortypealias="U" tensorweight=1' { w1, w2, @@ -34,19 +33,19 @@ CCTK_REAL WT_w type=GF timelevels=1 tags='tensortypealias="U" tensorweight=1.000 } "WT_w" public: -CCTK_REAL WT_rho type=GF timelevels=2 tags='tensortypealias="Scalar" tensorweight=1.0000000000000000000' +CCTK_REAL WT_rho type=GF timelevels=2 tags='tensortypealias="Scalar" tensorweight=1' { rho } "WT_rho" public: -CCTK_REAL WT_u type=GF timelevels=2 tags='tensortypealias="Scalar" tensorweight=1.0000000000000000000' +CCTK_REAL WT_u type=GF timelevels=2 tags='tensortypealias="Scalar" tensorweight=1' { u } "WT_u" public: -CCTK_REAL WT_v type=GF timelevels=2 tags='tensortypealias="D" tensorweight=1.0000000000000000000' +CCTK_REAL WT_v type=GF timelevels=2 tags='tensortypealias="D" tensorweight=1' { v1, v2, @@ -54,19 +53,19 @@ CCTK_REAL WT_v type=GF timelevels=2 tags='tensortypealias="D" tensorweight=1.000 } "WT_v" public: -CCTK_REAL WT_rhorhs type=GF timelevels=2 tags='tensortypealias="Scalar" tensorweight=1.0000000000000000000' +CCTK_REAL WT_rhorhs type=GF timelevels=2 tags='tensortypealias="Scalar" tensorweight=1' { rhorhs } "WT_rhorhs" public: -CCTK_REAL WT_urhs type=GF timelevels=2 tags='tensortypealias="Scalar" tensorweight=1.0000000000000000000' +CCTK_REAL WT_urhs type=GF timelevels=2 tags='tensortypealias="Scalar" tensorweight=1' { urhs } "WT_urhs" public: -CCTK_REAL WT_vrhs type=GF timelevels=2 tags='tensortypealias="D" tensorweight=1.0000000000000000000' +CCTK_REAL WT_vrhs type=GF timelevels=2 tags='tensortypealias="D" tensorweight=1' { v1rhs, v2rhs, diff --git a/ML_WaveToyFO/src/Differencing.h b/ML_WaveToyFO/src/Differencing.h index 1c7a87f..aa21060 100644 --- a/ML_WaveToyFO/src/Differencing.h +++ b/ML_WaveToyFO/src/Differencing.h @@ -1,12 +1,12 @@ -#define PDstandardNth1(u,i,j,k) (p1o12dx*(-8*vec_loadu((u)[index+di*(-1)+dj*(0)+dk*(0)]) + 8*vec_loadu((u)[index+di*(1)+dj*(0)+dk*(0)]) + vec_loadu((u)[index+di*(-2)+dj*(0)+dk*(0)]) - vec_loadu((u)[index+di*(2)+dj*(0)+dk*(0)]))) -#define PDstandardNth2(u,i,j,k) (p1o12dy*(-8*vec_loadu((u)[index+di*(0)+dj*(-1)+dk*(0)]) + 8*vec_loadu((u)[index+di*(0)+dj*(1)+dk*(0)]) + vec_loadu((u)[index+di*(0)+dj*(-2)+dk*(0)]) - vec_loadu((u)[index+di*(0)+dj*(2)+dk*(0)]))) -#define PDstandardNth3(u,i,j,k) (p1o12dz*(-8*vec_loadu((u)[index+di*(0)+dj*(0)+dk*(-1)]) + 8*vec_loadu((u)[index+di*(0)+dj*(0)+dk*(1)]) + vec_loadu((u)[index+di*(0)+dj*(0)+dk*(-2)]) - vec_loadu((u)[index+di*(0)+dj*(0)+dk*(2)]))) -#define PDstandardNth11(u,i,j,k) (pm1o12dx2*(30*vec_loadu((u)[index+di*(0)+dj*(0)+dk*(0)]) - 16*(vec_loadu((u)[index+di*(-1)+dj*(0)+dk*(0)]) + vec_loadu((u)[index+di*(1)+dj*(0)+dk*(0)])) + vec_loadu((u)[index+di*(-2)+dj*(0)+dk*(0)]) + vec_loadu((u)[index+di*(2)+dj*(0)+dk*(0)]))) -#define PDstandardNth22(u,i,j,k) (pm1o12dy2*(30*vec_loadu((u)[index+di*(0)+dj*(0)+dk*(0)]) - 16*(vec_loadu((u)[index+di*(0)+dj*(-1)+dk*(0)]) + vec_loadu((u)[index+di*(0)+dj*(1)+dk*(0)])) + vec_loadu((u)[index+di*(0)+dj*(-2)+dk*(0)]) + vec_loadu((u)[index+di*(0)+dj*(2)+dk*(0)]))) -#define PDstandardNth33(u,i,j,k) (pm1o12dz2*(30*vec_loadu((u)[index+di*(0)+dj*(0)+dk*(0)]) - 16*(vec_loadu((u)[index+di*(0)+dj*(0)+dk*(-1)]) + vec_loadu((u)[index+di*(0)+dj*(0)+dk*(1)])) + vec_loadu((u)[index+di*(0)+dj*(0)+dk*(-2)]) + vec_loadu((u)[index+di*(0)+dj*(0)+dk*(2)]))) -#define PDstandardNth12(u,i,j,k) (p1o144dxdy*(-64*(vec_loadu((u)[index+di*(-1)+dj*(1)+dk*(0)]) + vec_loadu((u)[index+di*(1)+dj*(-1)+dk*(0)])) + 64*(vec_loadu((u)[index+di*(-1)+dj*(-1)+dk*(0)]) + vec_loadu((u)[index+di*(1)+dj*(1)+dk*(0)])) + 8*(vec_loadu((u)[index+di*(-1)+dj*(2)+dk*(0)]) + vec_loadu((u)[index+di*(1)+dj*(-2)+dk*(0)]) + vec_loadu((u)[index+di*(-2)+dj*(1)+dk*(0)]) + vec_loadu((u)[index+di*(2)+dj*(-1)+dk*(0)])) - 8*(vec_loadu((u)[index+di*(-1)+dj*(-2)+dk*(0)]) + vec_loadu((u)[index+di*(1)+dj*(2)+dk*(0)]) + vec_loadu((u)[index+di*(-2)+dj*(-1)+dk*(0)]) + vec_loadu((u)[index+di*(2)+dj*(1)+dk*(0)])) + vec_loadu((u)[index+di*(-2)+dj*(-2)+dk*(0)]) - vec_loadu((u)[index+di*(-2)+dj*(2)+dk*(0)]) - vec_loadu((u)[index+di*(2)+dj*(-2)+dk*(0)]) + vec_loadu((u)[index+di*(2)+dj*(2)+dk*(0)]))) -#define PDstandardNth13(u,i,j,k) (p1o144dxdz*(-64*(vec_loadu((u)[index+di*(-1)+dj*(0)+dk*(1)]) + vec_loadu((u)[index+di*(1)+dj*(0)+dk*(-1)])) + 64*(vec_loadu((u)[index+di*(-1)+dj*(0)+dk*(-1)]) + vec_loadu((u)[index+di*(1)+dj*(0)+dk*(1)])) + 8*(vec_loadu((u)[index+di*(-1)+dj*(0)+dk*(2)]) + vec_loadu((u)[index+di*(1)+dj*(0)+dk*(-2)]) + vec_loadu((u)[index+di*(-2)+dj*(0)+dk*(1)]) + vec_loadu((u)[index+di*(2)+dj*(0)+dk*(-1)])) - 8*(vec_loadu((u)[index+di*(-1)+dj*(0)+dk*(-2)]) + vec_loadu((u)[index+di*(1)+dj*(0)+dk*(2)]) + vec_loadu((u)[index+di*(-2)+dj*(0)+dk*(-1)]) + vec_loadu((u)[index+di*(2)+dj*(0)+dk*(1)])) + vec_loadu((u)[index+di*(-2)+dj*(0)+dk*(-2)]) - vec_loadu((u)[index+di*(-2)+dj*(0)+dk*(2)]) - vec_loadu((u)[index+di*(2)+dj*(0)+dk*(-2)]) + vec_loadu((u)[index+di*(2)+dj*(0)+dk*(2)]))) -#define PDstandardNth21(u,i,j,k) (p1o144dxdy*(-64*(vec_loadu((u)[index+di*(-1)+dj*(1)+dk*(0)]) + vec_loadu((u)[index+di*(1)+dj*(-1)+dk*(0)])) + 64*(vec_loadu((u)[index+di*(-1)+dj*(-1)+dk*(0)]) + vec_loadu((u)[index+di*(1)+dj*(1)+dk*(0)])) + 8*(vec_loadu((u)[index+di*(-1)+dj*(2)+dk*(0)]) + vec_loadu((u)[index+di*(1)+dj*(-2)+dk*(0)]) + vec_loadu((u)[index+di*(-2)+dj*(1)+dk*(0)]) + vec_loadu((u)[index+di*(2)+dj*(-1)+dk*(0)])) - 8*(vec_loadu((u)[index+di*(-1)+dj*(-2)+dk*(0)]) + vec_loadu((u)[index+di*(1)+dj*(2)+dk*(0)]) + vec_loadu((u)[index+di*(-2)+dj*(-1)+dk*(0)]) + vec_loadu((u)[index+di*(2)+dj*(1)+dk*(0)])) + vec_loadu((u)[index+di*(-2)+dj*(-2)+dk*(0)]) - vec_loadu((u)[index+di*(-2)+dj*(2)+dk*(0)]) - vec_loadu((u)[index+di*(2)+dj*(-2)+dk*(0)]) + vec_loadu((u)[index+di*(2)+dj*(2)+dk*(0)]))) -#define PDstandardNth23(u,i,j,k) (p1o144dydz*(-64*(vec_loadu((u)[index+di*(0)+dj*(-1)+dk*(1)]) + vec_loadu((u)[index+di*(0)+dj*(1)+dk*(-1)])) + 64*(vec_loadu((u)[index+di*(0)+dj*(-1)+dk*(-1)]) + vec_loadu((u)[index+di*(0)+dj*(1)+dk*(1)])) + 8*(vec_loadu((u)[index+di*(0)+dj*(-1)+dk*(2)]) + vec_loadu((u)[index+di*(0)+dj*(1)+dk*(-2)]) + vec_loadu((u)[index+di*(0)+dj*(-2)+dk*(1)]) + vec_loadu((u)[index+di*(0)+dj*(2)+dk*(-1)])) - 8*(vec_loadu((u)[index+di*(0)+dj*(-1)+dk*(-2)]) + vec_loadu((u)[index+di*(0)+dj*(1)+dk*(2)]) + vec_loadu((u)[index+di*(0)+dj*(-2)+dk*(-1)]) + vec_loadu((u)[index+di*(0)+dj*(2)+dk*(1)])) + vec_loadu((u)[index+di*(0)+dj*(-2)+dk*(-2)]) - vec_loadu((u)[index+di*(0)+dj*(-2)+dk*(2)]) - vec_loadu((u)[index+di*(0)+dj*(2)+dk*(-2)]) + vec_loadu((u)[index+di*(0)+dj*(2)+dk*(2)]))) -#define PDstandardNth31(u,i,j,k) (p1o144dxdz*(-64*(vec_loadu((u)[index+di*(-1)+dj*(0)+dk*(1)]) + vec_loadu((u)[index+di*(1)+dj*(0)+dk*(-1)])) + 64*(vec_loadu((u)[index+di*(-1)+dj*(0)+dk*(-1)]) + vec_loadu((u)[index+di*(1)+dj*(0)+dk*(1)])) + 8*(vec_loadu((u)[index+di*(-1)+dj*(0)+dk*(2)]) + vec_loadu((u)[index+di*(1)+dj*(0)+dk*(-2)]) + vec_loadu((u)[index+di*(-2)+dj*(0)+dk*(1)]) + vec_loadu((u)[index+di*(2)+dj*(0)+dk*(-1)])) - 8*(vec_loadu((u)[index+di*(-1)+dj*(0)+dk*(-2)]) + vec_loadu((u)[index+di*(1)+dj*(0)+dk*(2)]) + vec_loadu((u)[index+di*(-2)+dj*(0)+dk*(-1)]) + vec_loadu((u)[index+di*(2)+dj*(0)+dk*(1)])) + vec_loadu((u)[index+di*(-2)+dj*(0)+dk*(-2)]) - vec_loadu((u)[index+di*(-2)+dj*(0)+dk*(2)]) - vec_loadu((u)[index+di*(2)+dj*(0)+dk*(-2)]) + vec_loadu((u)[index+di*(2)+dj*(0)+dk*(2)]))) -#define PDstandardNth32(u,i,j,k) (p1o144dydz*(-64*(vec_loadu((u)[index+di*(0)+dj*(-1)+dk*(1)]) + vec_loadu((u)[index+di*(0)+dj*(1)+dk*(-1)])) + 64*(vec_loadu((u)[index+di*(0)+dj*(-1)+dk*(-1)]) + vec_loadu((u)[index+di*(0)+dj*(1)+dk*(1)])) + 8*(vec_loadu((u)[index+di*(0)+dj*(-1)+dk*(2)]) + vec_loadu((u)[index+di*(0)+dj*(1)+dk*(-2)]) + vec_loadu((u)[index+di*(0)+dj*(-2)+dk*(1)]) + vec_loadu((u)[index+di*(0)+dj*(2)+dk*(-1)])) - 8*(vec_loadu((u)[index+di*(0)+dj*(-1)+dk*(-2)]) + vec_loadu((u)[index+di*(0)+dj*(1)+dk*(2)]) + vec_loadu((u)[index+di*(0)+dj*(-2)+dk*(-1)]) + vec_loadu((u)[index+di*(0)+dj*(2)+dk*(1)])) + vec_loadu((u)[index+di*(0)+dj*(-2)+dk*(-2)]) - vec_loadu((u)[index+di*(0)+dj*(-2)+dk*(2)]) - vec_loadu((u)[index+di*(0)+dj*(2)+dk*(-2)]) + vec_loadu((u)[index+di*(0)+dj*(2)+dk*(2)]))) +#define PDstandardNth1(u,i,j,k) (p1o12dx*(-8*(u)[index+di*(-1)+dj*(0)+dk*(0)] + 8*(u)[index+di*(1)+dj*(0)+dk*(0)] + (u)[index+di*(-2)+dj*(0)+dk*(0)] - (u)[index+di*(2)+dj*(0)+dk*(0)])) +#define PDstandardNth2(u,i,j,k) (p1o12dy*(-8*(u)[index+di*(0)+dj*(-1)+dk*(0)] + 8*(u)[index+di*(0)+dj*(1)+dk*(0)] + (u)[index+di*(0)+dj*(-2)+dk*(0)] - (u)[index+di*(0)+dj*(2)+dk*(0)])) +#define PDstandardNth3(u,i,j,k) (p1o12dz*(-8*(u)[index+di*(0)+dj*(0)+dk*(-1)] + 8*(u)[index+di*(0)+dj*(0)+dk*(1)] + (u)[index+di*(0)+dj*(0)+dk*(-2)] - (u)[index+di*(0)+dj*(0)+dk*(2)])) +#define PDstandardNth11(u,i,j,k) (pm1o12dx2*(30*(u)[index+di*(0)+dj*(0)+dk*(0)] - 16*((u)[index+di*(-1)+dj*(0)+dk*(0)] + (u)[index+di*(1)+dj*(0)+dk*(0)]) + (u)[index+di*(-2)+dj*(0)+dk*(0)] + (u)[index+di*(2)+dj*(0)+dk*(0)])) +#define PDstandardNth22(u,i,j,k) (pm1o12dy2*(30*(u)[index+di*(0)+dj*(0)+dk*(0)] - 16*((u)[index+di*(0)+dj*(-1)+dk*(0)] + (u)[index+di*(0)+dj*(1)+dk*(0)]) + (u)[index+di*(0)+dj*(-2)+dk*(0)] + (u)[index+di*(0)+dj*(2)+dk*(0)])) +#define PDstandardNth33(u,i,j,k) (pm1o12dz2*(30*(u)[index+di*(0)+dj*(0)+dk*(0)] - 16*((u)[index+di*(0)+dj*(0)+dk*(-1)] + (u)[index+di*(0)+dj*(0)+dk*(1)]) + (u)[index+di*(0)+dj*(0)+dk*(-2)] + (u)[index+di*(0)+dj*(0)+dk*(2)])) +#define PDstandardNth12(u,i,j,k) (p1o144dxdy*(-64*((u)[index+di*(-1)+dj*(1)+dk*(0)] + (u)[index+di*(1)+dj*(-1)+dk*(0)]) + 64*((u)[index+di*(-1)+dj*(-1)+dk*(0)] + (u)[index+di*(1)+dj*(1)+dk*(0)]) + 8*((u)[index+di*(-1)+dj*(2)+dk*(0)] + (u)[index+di*(1)+dj*(-2)+dk*(0)] + (u)[index+di*(-2)+dj*(1)+dk*(0)] + (u)[index+di*(2)+dj*(-1)+dk*(0)]) - 8*((u)[index+di*(-1)+dj*(-2)+dk*(0)] + (u)[index+di*(1)+dj*(2)+dk*(0)] + (u)[index+di*(-2)+dj*(-1)+dk*(0)] + (u)[index+di*(2)+dj*(1)+dk*(0)]) + (u)[index+di*(-2)+dj*(-2)+dk*(0)] - (u)[index+di*(-2)+dj*(2)+dk*(0)] - (u)[index+di*(2)+dj*(-2)+dk*(0)] + (u)[index+di*(2)+dj*(2)+dk*(0)])) +#define PDstandardNth13(u,i,j,k) (p1o144dxdz*(-64*((u)[index+di*(-1)+dj*(0)+dk*(1)] + (u)[index+di*(1)+dj*(0)+dk*(-1)]) + 64*((u)[index+di*(-1)+dj*(0)+dk*(-1)] + (u)[index+di*(1)+dj*(0)+dk*(1)]) + 8*((u)[index+di*(-1)+dj*(0)+dk*(2)] + (u)[index+di*(1)+dj*(0)+dk*(-2)] + (u)[index+di*(-2)+dj*(0)+dk*(1)] + (u)[index+di*(2)+dj*(0)+dk*(-1)]) - 8*((u)[index+di*(-1)+dj*(0)+dk*(-2)] + (u)[index+di*(1)+dj*(0)+dk*(2)] + (u)[index+di*(-2)+dj*(0)+dk*(-1)] + (u)[index+di*(2)+dj*(0)+dk*(1)]) + (u)[index+di*(-2)+dj*(0)+dk*(-2)] - (u)[index+di*(-2)+dj*(0)+dk*(2)] - (u)[index+di*(2)+dj*(0)+dk*(-2)] + (u)[index+di*(2)+dj*(0)+dk*(2)])) +#define PDstandardNth21(u,i,j,k) (p1o144dxdy*(-64*((u)[index+di*(-1)+dj*(1)+dk*(0)] + (u)[index+di*(1)+dj*(-1)+dk*(0)]) + 64*((u)[index+di*(-1)+dj*(-1)+dk*(0)] + (u)[index+di*(1)+dj*(1)+dk*(0)]) + 8*((u)[index+di*(-1)+dj*(2)+dk*(0)] + (u)[index+di*(1)+dj*(-2)+dk*(0)] + (u)[index+di*(-2)+dj*(1)+dk*(0)] + (u)[index+di*(2)+dj*(-1)+dk*(0)]) - 8*((u)[index+di*(-1)+dj*(-2)+dk*(0)] + (u)[index+di*(1)+dj*(2)+dk*(0)] + (u)[index+di*(-2)+dj*(-1)+dk*(0)] + (u)[index+di*(2)+dj*(1)+dk*(0)]) + (u)[index+di*(-2)+dj*(-2)+dk*(0)] - (u)[index+di*(-2)+dj*(2)+dk*(0)] - (u)[index+di*(2)+dj*(-2)+dk*(0)] + (u)[index+di*(2)+dj*(2)+dk*(0)])) +#define PDstandardNth23(u,i,j,k) (p1o144dydz*(-64*((u)[index+di*(0)+dj*(-1)+dk*(1)] + (u)[index+di*(0)+dj*(1)+dk*(-1)]) + 64*((u)[index+di*(0)+dj*(-1)+dk*(-1)] + (u)[index+di*(0)+dj*(1)+dk*(1)]) + 8*((u)[index+di*(0)+dj*(-1)+dk*(2)] + (u)[index+di*(0)+dj*(1)+dk*(-2)] + (u)[index+di*(0)+dj*(-2)+dk*(1)] + (u)[index+di*(0)+dj*(2)+dk*(-1)]) - 8*((u)[index+di*(0)+dj*(-1)+dk*(-2)] + (u)[index+di*(0)+dj*(1)+dk*(2)] + (u)[index+di*(0)+dj*(-2)+dk*(-1)] + (u)[index+di*(0)+dj*(2)+dk*(1)]) + (u)[index+di*(0)+dj*(-2)+dk*(-2)] - (u)[index+di*(0)+dj*(-2)+dk*(2)] - (u)[index+di*(0)+dj*(2)+dk*(-2)] + (u)[index+di*(0)+dj*(2)+dk*(2)])) +#define PDstandardNth31(u,i,j,k) (p1o144dxdz*(-64*((u)[index+di*(-1)+dj*(0)+dk*(1)] + (u)[index+di*(1)+dj*(0)+dk*(-1)]) + 64*((u)[index+di*(-1)+dj*(0)+dk*(-1)] + (u)[index+di*(1)+dj*(0)+dk*(1)]) + 8*((u)[index+di*(-1)+dj*(0)+dk*(2)] + (u)[index+di*(1)+dj*(0)+dk*(-2)] + (u)[index+di*(-2)+dj*(0)+dk*(1)] + (u)[index+di*(2)+dj*(0)+dk*(-1)]) - 8*((u)[index+di*(-1)+dj*(0)+dk*(-2)] + (u)[index+di*(1)+dj*(0)+dk*(2)] + (u)[index+di*(-2)+dj*(0)+dk*(-1)] + (u)[index+di*(2)+dj*(0)+dk*(1)]) + (u)[index+di*(-2)+dj*(0)+dk*(-2)] - (u)[index+di*(-2)+dj*(0)+dk*(2)] - (u)[index+di*(2)+dj*(0)+dk*(-2)] + (u)[index+di*(2)+dj*(0)+dk*(2)])) +#define PDstandardNth32(u,i,j,k) (p1o144dydz*(-64*((u)[index+di*(0)+dj*(-1)+dk*(1)] + (u)[index+di*(0)+dj*(1)+dk*(-1)]) + 64*((u)[index+di*(0)+dj*(-1)+dk*(-1)] + (u)[index+di*(0)+dj*(1)+dk*(1)]) + 8*((u)[index+di*(0)+dj*(-1)+dk*(2)] + (u)[index+di*(0)+dj*(1)+dk*(-2)] + (u)[index+di*(0)+dj*(-2)+dk*(1)] + (u)[index+di*(0)+dj*(2)+dk*(-1)]) - 8*((u)[index+di*(0)+dj*(-1)+dk*(-2)] + (u)[index+di*(0)+dj*(1)+dk*(2)] + (u)[index+di*(0)+dj*(-2)+dk*(-1)] + (u)[index+di*(0)+dj*(2)+dk*(1)]) + (u)[index+di*(0)+dj*(-2)+dk*(-2)] - (u)[index+di*(0)+dj*(-2)+dk*(2)] - (u)[index+di*(0)+dj*(2)+dk*(-2)] + (u)[index+di*(0)+dj*(2)+dk*(2)])) diff --git a/ML_WaveToyFO/src/WTFO_Gaussian.c b/ML_WaveToyFO/src/WTFO_Gaussian.c new file mode 100644 index 0000000..44057a7 --- /dev/null +++ b/ML_WaveToyFO/src/WTFO_Gaussian.c @@ -0,0 +1,117 @@ +/* File produced by Kranc */ + +#define KRANC_C + +#include <assert.h> +#include <math.h> +#include <stdio.h> +#include <stdlib.h> +#include "cctk.h" +#include "cctk_Arguments.h" +#include "cctk_Parameters.h" +#include "GenericFD.h" +#include "Differencing.h" +#include "loopcontrol.h" + +/* Define macros used in calculations */ +#define INITVALUE (42) +#define INV(x) ((1.0) / (x)) +#define SQR(x) ((x) * (x)) +#define CUB(x) ((x) * (x) * (x)) +#define QAD(x) ((x) * (x) * (x) * (x)) + +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[]) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + + /* 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; + } + + /* Include user-supplied include files */ + + /* Initialise finite differencing variables */ + CCTK_REAL const dx = CCTK_DELTA_SPACE(0); + CCTK_REAL const dy = CCTK_DELTA_SPACE(1); + CCTK_REAL const dz = CCTK_DELTA_SPACE(2); + int const di = 1; + int const dj = CCTK_GFINDEX3D(cctkGH,0,1,0) - CCTK_GFINDEX3D(cctkGH,0,0,0); + int const dk = CCTK_GFINDEX3D(cctkGH,0,0,1) - CCTK_GFINDEX3D(cctkGH,0,0,0); + CCTK_REAL const dxi = 1.0 / dx; + CCTK_REAL const dyi = 1.0 / dy; + CCTK_REAL const dzi = 1.0 / dz; + CCTK_REAL const khalf = 0.5; + CCTK_REAL const kthird = 1/3.0; + CCTK_REAL const ktwothird = 2.0/3.0; + CCTK_REAL const kfourthird = 4.0/3.0; + CCTK_REAL const keightthird = 8.0/3.0; + CCTK_REAL const hdxi = 0.5 * dxi; + CCTK_REAL const hdyi = 0.5 * dyi; + CCTK_REAL const hdzi = 0.5 * dzi; + + /* Initialize predefined quantities */ + CCTK_REAL const p1o12dx = INV(dx)/12.; + CCTK_REAL const p1o12dy = INV(dy)/12.; + CCTK_REAL const p1o12dz = INV(dz)/12.; + CCTK_REAL const p1o144dxdy = (INV(dx)*INV(dy))/144.; + CCTK_REAL const p1o144dxdz = (INV(dx)*INV(dz))/144.; + CCTK_REAL const p1o144dydz = (INV(dy)*INV(dz))/144.; + CCTK_REAL const pm1o12dx2 = -pow(dx,-2)/12.; + CCTK_REAL const pm1o12dy2 = -pow(dy,-2)/12.; + CCTK_REAL const pm1o12dz2 = -pow(dz,-2)/12.; + + /* 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], + cctk_lsh[0],cctk_lsh[1],cctk_lsh[2]) + { + // int index = INITVALUE; + int const index = CCTK_GFINDEX3D(cctkGH,i,j,k); + /* Declare derivatives */ + + /* Assign local copies of grid functions */ + + /* Include user supplied include files */ + + /* Precompute derivatives */ + + /* Calculate temporaries and grid functions */ + CCTK_REAL uL = 0; + + CCTK_REAL v1L = 0; + + CCTK_REAL v2L = 0; + + CCTK_REAL v3L = 0; + + CCTK_REAL rhoL = 0; + + + /* Copy local copies back to grid functions */ + rho[index] = rhoL; + u[index] = uL; + v1[index] = v1L; + v2[index] = v2L; + v3[index] = v3L; + } + LC_ENDLOOP3 (WTFO_Gaussian); +} + +void WTFO_Gaussian(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + GenericFD_LoopOverEverything(cctkGH, &WTFO_Gaussian_Body); +} diff --git a/ML_WaveToyFO/src/WTFO_RHS.c b/ML_WaveToyFO/src/WTFO_RHS.c new file mode 100644 index 0000000..2d76002 --- /dev/null +++ b/ML_WaveToyFO/src/WTFO_RHS.c @@ -0,0 +1,152 @@ +/* File produced by Kranc */ + +#define KRANC_C + +#include <assert.h> +#include <math.h> +#include <stdio.h> +#include <stdlib.h> +#include "cctk.h" +#include "cctk_Arguments.h" +#include "cctk_Parameters.h" +#include "GenericFD.h" +#include "Differencing.h" +#include "loopcontrol.h" + +/* Define macros used in calculations */ +#define INITVALUE (42) +#define INV(x) ((1.0) / (x)) +#define SQR(x) ((x) * (x)) +#define CUB(x) ((x) * (x) * (x)) +#define QAD(x) ((x) * (x) * (x) * (x)) + +void WTFO_RHS_SelectBCs(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT ierr = 0; + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_WaveToyFO::WT_rhorhs","flat"); + if (ierr < 0) + CCTK_WARN(0, "Failed to register flat BC for ML_WaveToyFO::WT_rhorhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_WaveToyFO::WT_urhs","flat"); + if (ierr < 0) + CCTK_WARN(0, "Failed to register flat BC for ML_WaveToyFO::WT_urhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_WaveToyFO::WT_vrhs","flat"); + if (ierr < 0) + CCTK_WARN(0, "Failed to register flat BC for ML_WaveToyFO::WT_vrhs."); + return; +} + +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[]) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + + /* 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; + } + + /* Include user-supplied include files */ + + /* Initialise finite differencing variables */ + CCTK_REAL const dx = CCTK_DELTA_SPACE(0); + CCTK_REAL const dy = CCTK_DELTA_SPACE(1); + CCTK_REAL const dz = CCTK_DELTA_SPACE(2); + int const di = 1; + int const dj = CCTK_GFINDEX3D(cctkGH,0,1,0) - CCTK_GFINDEX3D(cctkGH,0,0,0); + int const dk = CCTK_GFINDEX3D(cctkGH,0,0,1) - CCTK_GFINDEX3D(cctkGH,0,0,0); + CCTK_REAL const dxi = 1.0 / dx; + CCTK_REAL const dyi = 1.0 / dy; + CCTK_REAL const dzi = 1.0 / dz; + CCTK_REAL const khalf = 0.5; + CCTK_REAL const kthird = 1/3.0; + CCTK_REAL const ktwothird = 2.0/3.0; + CCTK_REAL const kfourthird = 4.0/3.0; + CCTK_REAL const keightthird = 8.0/3.0; + CCTK_REAL const hdxi = 0.5 * dxi; + CCTK_REAL const hdyi = 0.5 * dyi; + CCTK_REAL const hdzi = 0.5 * dzi; + + /* Initialize predefined quantities */ + CCTK_REAL const p1o12dx = INV(dx)/12.; + CCTK_REAL const p1o12dy = INV(dy)/12.; + CCTK_REAL const p1o12dz = INV(dz)/12.; + CCTK_REAL const p1o144dxdy = (INV(dx)*INV(dy))/144.; + CCTK_REAL const p1o144dxdz = (INV(dx)*INV(dz))/144.; + CCTK_REAL const p1o144dydz = (INV(dy)*INV(dz))/144.; + CCTK_REAL const pm1o12dx2 = -pow(dx,-2)/12.; + CCTK_REAL const pm1o12dy2 = -pow(dy,-2)/12.; + CCTK_REAL const pm1o12dz2 = -pow(dz,-2)/12.; + + /* 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], + cctk_lsh[0],cctk_lsh[1],cctk_lsh[2]) + { + // int index = INITVALUE; + int const index = CCTK_GFINDEX3D(cctkGH,i,j,k); + /* Declare derivatives */ + // CCTK_REAL PDstandardNth1rho = INITVALUE; + // CCTK_REAL PDstandardNth2rho = INITVALUE; + // CCTK_REAL PDstandardNth3rho = INITVALUE; + // CCTK_REAL PDstandardNth1v1 = INITVALUE; + // CCTK_REAL PDstandardNth2v2 = INITVALUE; + // CCTK_REAL PDstandardNth3v3 = INITVALUE; + + /* Assign local copies of grid functions */ + CCTK_REAL rhoL = rho[index]; + CCTK_REAL v1L = v1[index]; + CCTK_REAL v2L = v2[index]; + CCTK_REAL v3L = v3[index]; + + /* Include user supplied include files */ + + /* Precompute derivatives */ + CCTK_REAL const PDstandardNth1rho = PDstandardNth1(rho, i, j, k); + CCTK_REAL const PDstandardNth2rho = PDstandardNth2(rho, i, j, k); + CCTK_REAL const PDstandardNth3rho = PDstandardNth3(rho, i, j, k); + CCTK_REAL const PDstandardNth1v1 = PDstandardNth1(v1, i, j, k); + CCTK_REAL const PDstandardNth2v2 = PDstandardNth2(v2, i, j, k); + CCTK_REAL const PDstandardNth3v3 = PDstandardNth3(v3, i, j, k); + + /* Calculate temporaries and grid functions */ + CCTK_REAL urhsL = rhoL; + + CCTK_REAL rhorhsL = PDstandardNth1v1 + PDstandardNth2v2 + + PDstandardNth3v3; + + CCTK_REAL v1rhsL = PDstandardNth1rho; + + CCTK_REAL v2rhsL = PDstandardNth2rho; + + CCTK_REAL v3rhsL = PDstandardNth3rho; + + + /* Copy local copies back to grid functions */ + rhorhs[index] = rhorhsL; + urhs[index] = urhsL; + v1rhs[index] = v1rhsL; + v2rhs[index] = v2rhsL; + v3rhs[index] = v3rhsL; + } + LC_ENDLOOP3 (WTFO_RHS); +} + +void WTFO_RHS(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + GenericFD_LoopOverInterior(cctkGH, &WTFO_RHS_Body); +} diff --git a/ML_WaveToyFO/src/WTFO_constraints.c b/ML_WaveToyFO/src/WTFO_constraints.c new file mode 100644 index 0000000..b8ede34 --- /dev/null +++ b/ML_WaveToyFO/src/WTFO_constraints.c @@ -0,0 +1,138 @@ +/* File produced by Kranc */ + +#define KRANC_C + +#include <assert.h> +#include <math.h> +#include <stdio.h> +#include <stdlib.h> +#include "cctk.h" +#include "cctk_Arguments.h" +#include "cctk_Parameters.h" +#include "GenericFD.h" +#include "Differencing.h" +#include "loopcontrol.h" + +/* Define macros used in calculations */ +#define INITVALUE (42) +#define INV(x) ((1.0) / (x)) +#define SQR(x) ((x) * (x)) +#define CUB(x) ((x) * (x) * (x)) +#define QAD(x) ((x) * (x) * (x) * (x)) + +void WTFO_constraints_SelectBCs(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT ierr = 0; + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_WaveToyFO::WT_w","flat"); + if (ierr < 0) + CCTK_WARN(0, "Failed to register flat BC for ML_WaveToyFO::WT_w."); + return; +} + +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[]) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + + /* 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; + } + + /* Include user-supplied include files */ + + /* Initialise finite differencing variables */ + CCTK_REAL const dx = CCTK_DELTA_SPACE(0); + CCTK_REAL const dy = CCTK_DELTA_SPACE(1); + CCTK_REAL const dz = CCTK_DELTA_SPACE(2); + int const di = 1; + int const dj = CCTK_GFINDEX3D(cctkGH,0,1,0) - CCTK_GFINDEX3D(cctkGH,0,0,0); + int const dk = CCTK_GFINDEX3D(cctkGH,0,0,1) - CCTK_GFINDEX3D(cctkGH,0,0,0); + CCTK_REAL const dxi = 1.0 / dx; + CCTK_REAL const dyi = 1.0 / dy; + CCTK_REAL const dzi = 1.0 / dz; + CCTK_REAL const khalf = 0.5; + CCTK_REAL const kthird = 1/3.0; + CCTK_REAL const ktwothird = 2.0/3.0; + CCTK_REAL const kfourthird = 4.0/3.0; + CCTK_REAL const keightthird = 8.0/3.0; + CCTK_REAL const hdxi = 0.5 * dxi; + CCTK_REAL const hdyi = 0.5 * dyi; + CCTK_REAL const hdzi = 0.5 * dzi; + + /* Initialize predefined quantities */ + CCTK_REAL const p1o12dx = INV(dx)/12.; + CCTK_REAL const p1o12dy = INV(dy)/12.; + CCTK_REAL const p1o12dz = INV(dz)/12.; + CCTK_REAL const p1o144dxdy = (INV(dx)*INV(dy))/144.; + CCTK_REAL const p1o144dxdz = (INV(dx)*INV(dz))/144.; + CCTK_REAL const p1o144dydz = (INV(dy)*INV(dz))/144.; + CCTK_REAL const pm1o12dx2 = -pow(dx,-2)/12.; + CCTK_REAL const pm1o12dy2 = -pow(dy,-2)/12.; + CCTK_REAL const pm1o12dz2 = -pow(dz,-2)/12.; + + /* 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], + cctk_lsh[0],cctk_lsh[1],cctk_lsh[2]) + { + // int index = INITVALUE; + int const index = CCTK_GFINDEX3D(cctkGH,i,j,k); + /* Declare derivatives */ + // CCTK_REAL PDstandardNth2v1 = INITVALUE; + // CCTK_REAL PDstandardNth3v1 = INITVALUE; + // CCTK_REAL PDstandardNth1v2 = INITVALUE; + // CCTK_REAL PDstandardNth3v2 = INITVALUE; + // CCTK_REAL PDstandardNth1v3 = INITVALUE; + // CCTK_REAL PDstandardNth2v3 = INITVALUE; + + /* Assign local copies of grid functions */ + CCTK_REAL v1L = v1[index]; + CCTK_REAL v2L = v2[index]; + CCTK_REAL v3L = v3[index]; + + /* Include user supplied include files */ + + /* Precompute derivatives */ + CCTK_REAL const PDstandardNth2v1 = PDstandardNth2(v1, i, j, k); + CCTK_REAL const PDstandardNth3v1 = PDstandardNth3(v1, i, j, k); + CCTK_REAL const PDstandardNth1v2 = PDstandardNth1(v2, i, j, k); + CCTK_REAL const PDstandardNth3v2 = PDstandardNth3(v2, i, j, k); + CCTK_REAL const PDstandardNth1v3 = PDstandardNth1(v3, i, j, k); + CCTK_REAL const PDstandardNth2v3 = PDstandardNth2(v3, i, j, k); + + /* Calculate temporaries and grid functions */ + CCTK_REAL w1L = -PDstandardNth2v3 + PDstandardNth3v2; + + CCTK_REAL w2L = PDstandardNth1v3 - PDstandardNth3v1; + + CCTK_REAL w3L = -PDstandardNth1v2 + PDstandardNth2v1; + + + /* Copy local copies back to grid functions */ + w1[index] = w1L; + w2[index] = w2L; + w3[index] = w3L; + } + LC_ENDLOOP3 (WTFO_constraints); +} + +void WTFO_constraints(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + GenericFD_LoopOverInterior(cctkGH, &WTFO_constraints_Body); +} diff --git a/ML_WaveToyFO/src/make.code.defn b/ML_WaveToyFO/src/make.code.defn index a51a3f3..a18c783 100644 --- a/ML_WaveToyFO/src/make.code.defn +++ b/ML_WaveToyFO/src/make.code.defn @@ -1,3 +1,3 @@ # File produced by Kranc -SRCS = Startup.c RegisterMoL.c RegisterSymmetries.c WTFO_Gaussian.cc WTFO_RHS.cc WTFO_constraints.cc Boundaries.c +SRCS = Startup.c RegisterMoL.c RegisterSymmetries.c WTFO_Gaussian.c WTFO_RHS.c WTFO_constraints.c Boundaries.c diff --git a/ML_hydro/interface.ccl b/ML_hydro/interface.ccl index 1ffd01c..ab6c0d6 100644 --- a/ML_hydro/interface.ccl +++ b/ML_hydro/interface.ccl @@ -8,7 +8,6 @@ inherits: Grid GenericFD Boundary USES INCLUDE: GenericFD.h USES INCLUDE: Symmetry.h -USES INCLUDE: Vectors.hh USES INCLUDE: sbp_calc_coeffs.h USES INCLUDE: Boundary.h USES INCLUDE: loopcontrol.h @@ -26,7 +25,7 @@ CCTK_INT FUNCTION Boundary_SelectVarForBC(CCTK_POINTER_TO_CONST IN GH, CCTK_INT USES FUNCTION Boundary_SelectVarForBC public: -CCTK_REAL eneflux_group type=GF timelevels=1 tags='tensortypealias="U" tensorweight=1.0000000000000000000' +CCTK_REAL eneflux_group type=GF timelevels=1 tags='tensortypealias="U" tensorweight=1' { eneflux1, eneflux2, @@ -34,13 +33,13 @@ CCTK_REAL eneflux_group type=GF timelevels=1 tags='tensortypealias="U" tensorwei } "eneflux_group" public: -CCTK_REAL eps_group type=GF timelevels=1 tags='tensortypealias="Scalar" tensorweight=1.0000000000000000000' +CCTK_REAL eps_group type=GF timelevels=1 tags='tensortypealias="Scalar" tensorweight=1' { eps } "eps_group" public: -CCTK_REAL massflux_group type=GF timelevels=1 tags='tensortypealias="U" tensorweight=1.0000000000000000000' +CCTK_REAL massflux_group type=GF timelevels=1 tags='tensortypealias="U" tensorweight=1' { massflux1, massflux2, @@ -48,7 +47,7 @@ CCTK_REAL massflux_group type=GF timelevels=1 tags='tensortypealias="U" tensorwe } "massflux_group" public: -CCTK_REAL momflux_group type=GF timelevels=1 tags='tensortypealias="DU" tensorweight=1.0000000000000000000' +CCTK_REAL momflux_group type=GF timelevels=1 tags='tensortypealias="DU" tensorweight=1' { momflux11, momflux12, @@ -62,19 +61,19 @@ CCTK_REAL momflux_group type=GF timelevels=1 tags='tensortypealias="DU" tensorwe } "momflux_group" public: -CCTK_REAL press_group type=GF timelevels=1 tags='tensortypealias="Scalar" tensorweight=1.0000000000000000000' +CCTK_REAL press_group type=GF timelevels=1 tags='tensortypealias="Scalar" tensorweight=1' { press } "press_group" public: -CCTK_REAL rho_group type=GF timelevels=1 tags='tensortypealias="Scalar" tensorweight=1.0000000000000000000' +CCTK_REAL rho_group type=GF timelevels=1 tags='tensortypealias="Scalar" tensorweight=1' { rho } "rho_group" public: -CCTK_REAL vel_group type=GF timelevels=1 tags='tensortypealias="U" tensorweight=1.0000000000000000000' +CCTK_REAL vel_group type=GF timelevels=1 tags='tensortypealias="U" tensorweight=1' { vel1, vel2, @@ -82,25 +81,25 @@ CCTK_REAL vel_group type=GF timelevels=1 tags='tensortypealias="U" tensorweight= } "vel_group" public: -CCTK_REAL vol_group type=GF timelevels=1 tags='tensortypealias="Scalar" tensorweight=1.0000000000000000000' +CCTK_REAL vol_group type=GF timelevels=1 tags='tensortypealias="Scalar" tensorweight=1' { vol } "vol_group" public: -CCTK_REAL ene_group type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1.0000000000000000000' +CCTK_REAL ene_group type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1' { ene } "ene_group" public: -CCTK_REAL mass_group type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1.0000000000000000000' +CCTK_REAL mass_group type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1' { mass } "mass_group" public: -CCTK_REAL mom_group type=GF timelevels=3 tags='tensortypealias="D" tensorweight=1.0000000000000000000' +CCTK_REAL mom_group type=GF timelevels=3 tags='tensortypealias="D" tensorweight=1' { mom1, mom2, @@ -108,19 +107,19 @@ CCTK_REAL mom_group type=GF timelevels=3 tags='tensortypealias="D" tensorweight= } "mom_group" public: -CCTK_REAL ene_grouprhs type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1.0000000000000000000' +CCTK_REAL ene_grouprhs type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1' { enerhs } "ene_grouprhs" public: -CCTK_REAL mass_grouprhs type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1.0000000000000000000' +CCTK_REAL mass_grouprhs type=GF timelevels=3 tags='tensortypealias="Scalar" tensorweight=1' { massrhs } "mass_grouprhs" public: -CCTK_REAL mom_grouprhs type=GF timelevels=3 tags='tensortypealias="D" tensorweight=1.0000000000000000000' +CCTK_REAL mom_grouprhs type=GF timelevels=3 tags='tensortypealias="D" tensorweight=1' { mom1rhs, mom2rhs, diff --git a/ML_hydro/schedule.ccl b/ML_hydro/schedule.ccl index 0d08eb0..78099ec 100644 --- a/ML_hydro/schedule.ccl +++ b/ML_hydro/schedule.ccl @@ -164,7 +164,7 @@ schedule ML_hydro_CheckBoundaries at BASEGRID OPTIONS: meta } "check boundaries treatment" -schedule group ApplyBCs as ML_hydro_ApplyBCs in MoL_PostStep after ML_hydro_SelectBoundConds +schedule group ApplyBCs as ML_hydro_ApplyBCs in MoL_PostStep after ML_hydro_SelectBoundConds { # no language specified } "Apply boundary conditions controlled by thorn Boundary" diff --git a/ML_hydro/src/Differencing.h b/ML_hydro/src/Differencing.h index 0d37c09..9f8428b 100644 --- a/ML_hydro/src/Differencing.h +++ b/ML_hydro/src/Differencing.h @@ -1,12 +1,12 @@ -#define PDstandardNth1(u,i,j,k) (p1o2dx*(-vec_loadu((u)[index+di*(-1)+dj*(0)+dk*(0)]) + vec_loadu((u)[index+di*(1)+dj*(0)+dk*(0)]))) -#define PDstandardNth2(u,i,j,k) (p1o2dy*(-vec_loadu((u)[index+di*(0)+dj*(-1)+dk*(0)]) + vec_loadu((u)[index+di*(0)+dj*(1)+dk*(0)]))) -#define PDstandardNth3(u,i,j,k) (p1o2dz*(-vec_loadu((u)[index+di*(0)+dj*(0)+dk*(-1)]) + vec_loadu((u)[index+di*(0)+dj*(0)+dk*(1)]))) -#define PDstandardNth11(u,i,j,k) (p1odx2*(-2*vec_loadu((u)[index+di*(0)+dj*(0)+dk*(0)]) + vec_loadu((u)[index+di*(-1)+dj*(0)+dk*(0)]) + vec_loadu((u)[index+di*(1)+dj*(0)+dk*(0)]))) -#define PDstandardNth22(u,i,j,k) (p1ody2*(-2*vec_loadu((u)[index+di*(0)+dj*(0)+dk*(0)]) + vec_loadu((u)[index+di*(0)+dj*(-1)+dk*(0)]) + vec_loadu((u)[index+di*(0)+dj*(1)+dk*(0)]))) -#define PDstandardNth33(u,i,j,k) (p1odz2*(-2*vec_loadu((u)[index+di*(0)+dj*(0)+dk*(0)]) + vec_loadu((u)[index+di*(0)+dj*(0)+dk*(-1)]) + vec_loadu((u)[index+di*(0)+dj*(0)+dk*(1)]))) -#define PDstandardNth12(u,i,j,k) (p1o4dxdy*(vec_loadu((u)[index+di*(-1)+dj*(-1)+dk*(0)]) - vec_loadu((u)[index+di*(-1)+dj*(1)+dk*(0)]) - vec_loadu((u)[index+di*(1)+dj*(-1)+dk*(0)]) + vec_loadu((u)[index+di*(1)+dj*(1)+dk*(0)]))) -#define PDstandardNth13(u,i,j,k) (p1o4dxdz*(vec_loadu((u)[index+di*(-1)+dj*(0)+dk*(-1)]) - vec_loadu((u)[index+di*(-1)+dj*(0)+dk*(1)]) - vec_loadu((u)[index+di*(1)+dj*(0)+dk*(-1)]) + vec_loadu((u)[index+di*(1)+dj*(0)+dk*(1)]))) -#define PDstandardNth21(u,i,j,k) (p1o4dxdy*(vec_loadu((u)[index+di*(-1)+dj*(-1)+dk*(0)]) - vec_loadu((u)[index+di*(-1)+dj*(1)+dk*(0)]) - vec_loadu((u)[index+di*(1)+dj*(-1)+dk*(0)]) + vec_loadu((u)[index+di*(1)+dj*(1)+dk*(0)]))) -#define PDstandardNth23(u,i,j,k) (p1o4dydz*(vec_loadu((u)[index+di*(0)+dj*(-1)+dk*(-1)]) - vec_loadu((u)[index+di*(0)+dj*(-1)+dk*(1)]) - vec_loadu((u)[index+di*(0)+dj*(1)+dk*(-1)]) + vec_loadu((u)[index+di*(0)+dj*(1)+dk*(1)]))) -#define PDstandardNth31(u,i,j,k) (p1o4dxdz*(vec_loadu((u)[index+di*(-1)+dj*(0)+dk*(-1)]) - vec_loadu((u)[index+di*(-1)+dj*(0)+dk*(1)]) - vec_loadu((u)[index+di*(1)+dj*(0)+dk*(-1)]) + vec_loadu((u)[index+di*(1)+dj*(0)+dk*(1)]))) -#define PDstandardNth32(u,i,j,k) (p1o4dydz*(vec_loadu((u)[index+di*(0)+dj*(-1)+dk*(-1)]) - vec_loadu((u)[index+di*(0)+dj*(-1)+dk*(1)]) - vec_loadu((u)[index+di*(0)+dj*(1)+dk*(-1)]) + vec_loadu((u)[index+di*(0)+dj*(1)+dk*(1)]))) +#define PDstandardNth1(u,i,j,k) (p1o2dx*(-(u)[index+di*(-1)+dj*(0)+dk*(0)] + (u)[index+di*(1)+dj*(0)+dk*(0)])) +#define PDstandardNth2(u,i,j,k) (p1o2dy*(-(u)[index+di*(0)+dj*(-1)+dk*(0)] + (u)[index+di*(0)+dj*(1)+dk*(0)])) +#define PDstandardNth3(u,i,j,k) (p1o2dz*(-(u)[index+di*(0)+dj*(0)+dk*(-1)] + (u)[index+di*(0)+dj*(0)+dk*(1)])) +#define PDstandardNth11(u,i,j,k) (p1odx2*(-2*(u)[index+di*(0)+dj*(0)+dk*(0)] + (u)[index+di*(-1)+dj*(0)+dk*(0)] + (u)[index+di*(1)+dj*(0)+dk*(0)])) +#define PDstandardNth22(u,i,j,k) (p1ody2*(-2*(u)[index+di*(0)+dj*(0)+dk*(0)] + (u)[index+di*(0)+dj*(-1)+dk*(0)] + (u)[index+di*(0)+dj*(1)+dk*(0)])) +#define PDstandardNth33(u,i,j,k) (p1odz2*(-2*(u)[index+di*(0)+dj*(0)+dk*(0)] + (u)[index+di*(0)+dj*(0)+dk*(-1)] + (u)[index+di*(0)+dj*(0)+dk*(1)])) +#define PDstandardNth12(u,i,j,k) (p1o4dxdy*((u)[index+di*(-1)+dj*(-1)+dk*(0)] - (u)[index+di*(-1)+dj*(1)+dk*(0)] - (u)[index+di*(1)+dj*(-1)+dk*(0)] + (u)[index+di*(1)+dj*(1)+dk*(0)])) +#define PDstandardNth13(u,i,j,k) (p1o4dxdz*((u)[index+di*(-1)+dj*(0)+dk*(-1)] - (u)[index+di*(-1)+dj*(0)+dk*(1)] - (u)[index+di*(1)+dj*(0)+dk*(-1)] + (u)[index+di*(1)+dj*(0)+dk*(1)])) +#define PDstandardNth21(u,i,j,k) (p1o4dxdy*((u)[index+di*(-1)+dj*(-1)+dk*(0)] - (u)[index+di*(-1)+dj*(1)+dk*(0)] - (u)[index+di*(1)+dj*(-1)+dk*(0)] + (u)[index+di*(1)+dj*(1)+dk*(0)])) +#define PDstandardNth23(u,i,j,k) (p1o4dydz*((u)[index+di*(0)+dj*(-1)+dk*(-1)] - (u)[index+di*(0)+dj*(-1)+dk*(1)] - (u)[index+di*(0)+dj*(1)+dk*(-1)] + (u)[index+di*(0)+dj*(1)+dk*(1)])) +#define PDstandardNth31(u,i,j,k) (p1o4dxdz*((u)[index+di*(-1)+dj*(0)+dk*(-1)] - (u)[index+di*(-1)+dj*(0)+dk*(1)] - (u)[index+di*(1)+dj*(0)+dk*(-1)] + (u)[index+di*(1)+dj*(0)+dk*(1)])) +#define PDstandardNth32(u,i,j,k) (p1o4dydz*((u)[index+di*(0)+dj*(-1)+dk*(-1)] - (u)[index+di*(0)+dj*(-1)+dk*(1)] - (u)[index+di*(0)+dj*(1)+dk*(-1)] + (u)[index+di*(0)+dj*(1)+dk*(1)])) diff --git a/ML_hydro/src/hydro_RHS.c b/ML_hydro/src/hydro_RHS.c new file mode 100644 index 0000000..8de4eda --- /dev/null +++ b/ML_hydro/src/hydro_RHS.c @@ -0,0 +1,185 @@ +/* File produced by Kranc */ + +#define KRANC_C + +#include <assert.h> +#include <math.h> +#include <stdio.h> +#include <stdlib.h> +#include "cctk.h" +#include "cctk_Arguments.h" +#include "cctk_Parameters.h" +#include "GenericFD.h" +#include "Differencing.h" +#include "loopcontrol.h" + +/* Define macros used in calculations */ +#define INITVALUE (42) +#define INV(x) ((1.0) / (x)) +#define SQR(x) ((x) * (x)) +#define CUB(x) ((x) * (x) * (x)) +#define QAD(x) ((x) * (x) * (x) * (x)) + +void hydro_RHS_SelectBCs(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT ierr = 0; + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_hydro::ene_grouprhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_hydro::ene_grouprhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_hydro::mass_grouprhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_hydro::mass_grouprhs."); + ierr = Boundary_SelectGroupForBC(cctkGH, CCTK_ALL_FACES, GenericFD_GetBoundaryWidth(cctkGH), -1 /* no table */, "ML_hydro::mom_grouprhs","flat"); + if (ierr < 0) + CCTK_WARN(1, "Failed to register flat BC for ML_hydro::mom_grouprhs."); + return; +} + +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[]) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + + /* 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; + } + + /* Include user-supplied include files */ + + /* Initialise finite differencing variables */ + CCTK_REAL const dx = CCTK_DELTA_SPACE(0); + CCTK_REAL const dy = CCTK_DELTA_SPACE(1); + CCTK_REAL const dz = CCTK_DELTA_SPACE(2); + int const di = 1; + int const dj = CCTK_GFINDEX3D(cctkGH,0,1,0) - CCTK_GFINDEX3D(cctkGH,0,0,0); + int const dk = CCTK_GFINDEX3D(cctkGH,0,0,1) - CCTK_GFINDEX3D(cctkGH,0,0,0); + CCTK_REAL const dxi = 1.0 / dx; + CCTK_REAL const dyi = 1.0 / dy; + CCTK_REAL const dzi = 1.0 / dz; + CCTK_REAL const khalf = 0.5; + CCTK_REAL const kthird = 1/3.0; + CCTK_REAL const ktwothird = 2.0/3.0; + CCTK_REAL const kfourthird = 4.0/3.0; + CCTK_REAL const keightthird = 8.0/3.0; + CCTK_REAL const hdxi = 0.5 * dxi; + CCTK_REAL const hdyi = 0.5 * dyi; + CCTK_REAL const hdzi = 0.5 * dzi; + + /* Initialize predefined quantities */ + CCTK_REAL const p1o2dx = khalf*INV(dx); + CCTK_REAL const p1o2dy = khalf*INV(dy); + CCTK_REAL const p1o2dz = khalf*INV(dz); + CCTK_REAL const p1o4dxdy = (INV(dx)*INV(dy))/4.; + CCTK_REAL const p1o4dxdz = (INV(dx)*INV(dz))/4.; + CCTK_REAL const p1o4dydz = (INV(dy)*INV(dz))/4.; + CCTK_REAL const p1odx2 = pow(dx,-2); + CCTK_REAL const p1ody2 = pow(dy,-2); + CCTK_REAL const p1odz2 = pow(dz,-2); + + /* 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], + cctk_lsh[0],cctk_lsh[1],cctk_lsh[2]) + { + // int index = INITVALUE; + int const index = CCTK_GFINDEX3D(cctkGH,i,j,k); + /* Declare derivatives */ + // CCTK_REAL PDstandardNth1eneflux1 = INITVALUE; + // CCTK_REAL PDstandardNth2eneflux2 = INITVALUE; + // CCTK_REAL PDstandardNth3eneflux3 = INITVALUE; + // CCTK_REAL PDstandardNth1massflux1 = INITVALUE; + // CCTK_REAL PDstandardNth2massflux2 = INITVALUE; + // CCTK_REAL PDstandardNth3massflux3 = INITVALUE; + // CCTK_REAL PDstandardNth1momflux11 = INITVALUE; + // CCTK_REAL PDstandardNth2momflux12 = INITVALUE; + // CCTK_REAL PDstandardNth3momflux13 = INITVALUE; + // CCTK_REAL PDstandardNth1momflux21 = INITVALUE; + // CCTK_REAL PDstandardNth2momflux22 = INITVALUE; + // CCTK_REAL PDstandardNth3momflux23 = INITVALUE; + // CCTK_REAL PDstandardNth1momflux31 = INITVALUE; + // CCTK_REAL PDstandardNth2momflux32 = INITVALUE; + // CCTK_REAL PDstandardNth3momflux33 = INITVALUE; + + /* Assign local copies of grid functions */ + CCTK_REAL eneflux1L = eneflux1[index]; + CCTK_REAL eneflux2L = eneflux2[index]; + CCTK_REAL eneflux3L = eneflux3[index]; + CCTK_REAL massflux1L = massflux1[index]; + CCTK_REAL massflux2L = massflux2[index]; + CCTK_REAL massflux3L = massflux3[index]; + CCTK_REAL momflux11L = momflux11[index]; + CCTK_REAL momflux12L = momflux12[index]; + CCTK_REAL momflux13L = momflux13[index]; + CCTK_REAL momflux21L = momflux21[index]; + CCTK_REAL momflux22L = momflux22[index]; + CCTK_REAL momflux23L = momflux23[index]; + CCTK_REAL momflux31L = momflux31[index]; + CCTK_REAL momflux32L = momflux32[index]; + CCTK_REAL momflux33L = momflux33[index]; + + /* Include user supplied include files */ + + /* Precompute derivatives */ + CCTK_REAL const PDstandardNth1eneflux1 = PDstandardNth1(eneflux1, i, j, k); + CCTK_REAL const PDstandardNth2eneflux2 = PDstandardNth2(eneflux2, i, j, k); + CCTK_REAL const PDstandardNth3eneflux3 = PDstandardNth3(eneflux3, i, j, k); + CCTK_REAL const PDstandardNth1massflux1 = PDstandardNth1(massflux1, i, j, k); + CCTK_REAL const PDstandardNth2massflux2 = PDstandardNth2(massflux2, i, j, k); + CCTK_REAL const PDstandardNth3massflux3 = PDstandardNth3(massflux3, i, j, k); + CCTK_REAL const PDstandardNth1momflux11 = PDstandardNth1(momflux11, i, j, k); + CCTK_REAL const PDstandardNth2momflux12 = PDstandardNth2(momflux12, i, j, k); + CCTK_REAL const PDstandardNth3momflux13 = PDstandardNth3(momflux13, i, j, k); + CCTK_REAL const PDstandardNth1momflux21 = PDstandardNth1(momflux21, i, j, k); + CCTK_REAL const PDstandardNth2momflux22 = PDstandardNth2(momflux22, i, j, k); + CCTK_REAL const PDstandardNth3momflux23 = PDstandardNth3(momflux23, i, j, k); + CCTK_REAL const PDstandardNth1momflux31 = PDstandardNth1(momflux31, i, j, k); + CCTK_REAL const PDstandardNth2momflux32 = PDstandardNth2(momflux32, i, j, k); + CCTK_REAL const PDstandardNth3momflux33 = PDstandardNth3(momflux33, i, j, k); + + /* Calculate temporaries and grid functions */ + CCTK_REAL massrhsL = -PDstandardNth1massflux1 - + PDstandardNth2massflux2 - PDstandardNth3massflux3; + + CCTK_REAL mom1rhsL = -PDstandardNth1momflux11 - + PDstandardNth2momflux12 - PDstandardNth3momflux13; + + CCTK_REAL mom2rhsL = -PDstandardNth1momflux21 - + PDstandardNth2momflux22 - PDstandardNth3momflux23; + + CCTK_REAL mom3rhsL = -PDstandardNth1momflux31 - + PDstandardNth2momflux32 - PDstandardNth3momflux33; + + CCTK_REAL enerhsL = -PDstandardNth1eneflux1 - PDstandardNth2eneflux2 - + PDstandardNth3eneflux3; + + + /* Copy local copies back to grid functions */ + enerhs[index] = enerhsL; + massrhs[index] = massrhsL; + mom1rhs[index] = mom1rhsL; + mom2rhs[index] = mom2rhsL; + mom3rhs[index] = mom3rhsL; + } + LC_ENDLOOP3 (hydro_RHS); +} + +void hydro_RHS(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + GenericFD_LoopOverInterior(cctkGH, &hydro_RHS_Body); +} diff --git a/ML_hydro/src/hydro_RHS.cc b/ML_hydro/src/hydro_RHS.cc deleted file mode 100644 index 57dc25a..0000000 --- a/ML_hydro/src/hydro_RHS.cc +++ /dev/null @@ -1,169 +0,0 @@ -/* File produced by Kranc */ - -#define KRANC_C - -#include <assert.h> -#include <math.h> -#include <stdio.h> -#include <stdlib.h> -#include "cctk.h" -#include "cctk_Arguments.h" -#include "cctk_Parameters.h" -#include "GenericFD.h" -#include "Differencing.h" -#include "Vectors.hh" -#include "loopcontrol.h" - -/* Define macros used in calculations */ -#define INITVALUE (42) -#define INV(x) ((1.0) / (x)) -#define SQR(x) ((x) * (x)) -#define CUB(x) ((x) * (x) * (x)) -#define QAD(x) ((x) * (x) * (x) * (x)) - -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[]) -{ - DECLARE_CCTK_ARGUMENTS; - DECLARE_CCTK_PARAMETERS; - - - /* 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; - } - - /* Include user-supplied include files */ - - /* Initialise finite differencing variables */ - CCTK_REAL const dx = CCTK_DELTA_SPACE(0); - CCTK_REAL const dy = CCTK_DELTA_SPACE(1); - CCTK_REAL const dz = CCTK_DELTA_SPACE(2); - int const di = 1; - int const dj = CCTK_GFINDEX3D(cctkGH,0,1,0) - CCTK_GFINDEX3D(cctkGH,0,0,0); - int const dk = CCTK_GFINDEX3D(cctkGH,0,0,1) - CCTK_GFINDEX3D(cctkGH,0,0,0); - CCTK_REAL const dxi = 1.0 / dx; - CCTK_REAL const dyi = 1.0 / dy; - CCTK_REAL const dzi = 1.0 / dz; - CCTK_REAL const khalf = 0.5; - CCTK_REAL const kthird = 1/3.0; - CCTK_REAL const ktwothird = 2.0/3.0; - CCTK_REAL const kfourthird = 4.0/3.0; - CCTK_REAL const keightthird = 8.0/3.0; - CCTK_REAL const hdxi = 0.5 * dxi; - CCTK_REAL const hdyi = 0.5 * dyi; - CCTK_REAL const hdzi = 0.5 * dzi; - - /* Initialize predefined quantities */ - CCTK_REAL const p1o2dx = khalf*INV(dx); - CCTK_REAL const p1o2dy = khalf*INV(dy); - CCTK_REAL const p1o2dz = khalf*INV(dz); - CCTK_REAL const p1o4dxdy = (INV(dx)*INV(dy))/4.; - CCTK_REAL const p1o4dxdz = (INV(dx)*INV(dz))/4.; - CCTK_REAL const p1o4dydz = (INV(dy)*INV(dz))/4.; - CCTK_REAL const p1odx2 = pow(dx,-2); - CCTK_REAL const p1ody2 = pow(dy,-2); - CCTK_REAL const p1odz2 = pow(dz,-2); - - /* 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], - cctk_lsh[0],cctk_lsh[1],cctk_lsh[2]) - { - // int index = INITVALUE; - int const index = CCTK_GFINDEX3D(cctkGH,i,j,k); - /* Declare derivatives */ - // CCTK_REAL_VEC PDstandardNth1eneflux1 = INITVALUE; - // CCTK_REAL_VEC PDstandardNth2eneflux2 = INITVALUE; - // CCTK_REAL_VEC PDstandardNth3eneflux3 = INITVALUE; - // CCTK_REAL_VEC PDstandardNth1massflux1 = INITVALUE; - // CCTK_REAL_VEC PDstandardNth2massflux2 = INITVALUE; - // CCTK_REAL_VEC PDstandardNth3massflux3 = INITVALUE; - // CCTK_REAL_VEC PDstandardNth1momflux11 = INITVALUE; - // CCTK_REAL_VEC PDstandardNth2momflux12 = INITVALUE; - // CCTK_REAL_VEC PDstandardNth3momflux13 = INITVALUE; - // CCTK_REAL_VEC PDstandardNth1momflux21 = INITVALUE; - // CCTK_REAL_VEC PDstandardNth2momflux22 = INITVALUE; - // CCTK_REAL_VEC PDstandardNth3momflux23 = INITVALUE; - // CCTK_REAL_VEC PDstandardNth1momflux31 = INITVALUE; - // CCTK_REAL_VEC PDstandardNth2momflux32 = INITVALUE; - // CCTK_REAL_VEC PDstandardNth3momflux33 = INITVALUE; - - /* Assign local copies of grid functions */ - CCTK_REAL_VEC eneflux1L = vec_load(eneflux1[index]); - CCTK_REAL_VEC eneflux2L = vec_load(eneflux2[index]); - CCTK_REAL_VEC eneflux3L = vec_load(eneflux3[index]); - CCTK_REAL_VEC massflux1L = vec_load(massflux1[index]); - CCTK_REAL_VEC massflux2L = vec_load(massflux2[index]); - CCTK_REAL_VEC massflux3L = vec_load(massflux3[index]); - CCTK_REAL_VEC momflux11L = vec_load(momflux11[index]); - CCTK_REAL_VEC momflux12L = vec_load(momflux12[index]); - CCTK_REAL_VEC momflux13L = vec_load(momflux13[index]); - CCTK_REAL_VEC momflux21L = vec_load(momflux21[index]); - CCTK_REAL_VEC momflux22L = vec_load(momflux22[index]); - CCTK_REAL_VEC momflux23L = vec_load(momflux23[index]); - CCTK_REAL_VEC momflux31L = vec_load(momflux31[index]); - CCTK_REAL_VEC momflux32L = vec_load(momflux32[index]); - CCTK_REAL_VEC momflux33L = vec_load(momflux33[index]); - - /* Include user supplied include files */ - - /* Precompute derivatives */ - CCTK_REAL_VEC const PDstandardNth1eneflux1 = PDstandardNth1(eneflux1, i, j, k); - CCTK_REAL_VEC const PDstandardNth2eneflux2 = PDstandardNth2(eneflux2, i, j, k); - CCTK_REAL_VEC const PDstandardNth3eneflux3 = PDstandardNth3(eneflux3, i, j, k); - CCTK_REAL_VEC const PDstandardNth1massflux1 = PDstandardNth1(massflux1, i, j, k); - CCTK_REAL_VEC const PDstandardNth2massflux2 = PDstandardNth2(massflux2, i, j, k); - CCTK_REAL_VEC const PDstandardNth3massflux3 = PDstandardNth3(massflux3, i, j, k); - CCTK_REAL_VEC const PDstandardNth1momflux11 = PDstandardNth1(momflux11, i, j, k); - CCTK_REAL_VEC const PDstandardNth2momflux12 = PDstandardNth2(momflux12, i, j, k); - CCTK_REAL_VEC const PDstandardNth3momflux13 = PDstandardNth3(momflux13, i, j, k); - CCTK_REAL_VEC const PDstandardNth1momflux21 = PDstandardNth1(momflux21, i, j, k); - CCTK_REAL_VEC const PDstandardNth2momflux22 = PDstandardNth2(momflux22, i, j, k); - CCTK_REAL_VEC const PDstandardNth3momflux23 = PDstandardNth3(momflux23, i, j, k); - CCTK_REAL_VEC const PDstandardNth1momflux31 = PDstandardNth1(momflux31, i, j, k); - CCTK_REAL_VEC const PDstandardNth2momflux32 = PDstandardNth2(momflux32, i, j, k); - CCTK_REAL_VEC const PDstandardNth3momflux33 = PDstandardNth3(momflux33, i, j, k); - - /* Calculate temporaries and grid functions */ - CCTK_REAL_VEC massrhsL = -PDstandardNth1massflux1 - - PDstandardNth2massflux2 - PDstandardNth3massflux3; - - CCTK_REAL_VEC mom1rhsL = -PDstandardNth1momflux11 - - PDstandardNth2momflux12 - PDstandardNth3momflux13; - - CCTK_REAL_VEC mom2rhsL = -PDstandardNth1momflux21 - - PDstandardNth2momflux22 - PDstandardNth3momflux23; - - CCTK_REAL_VEC mom3rhsL = -PDstandardNth1momflux31 - - PDstandardNth2momflux32 - PDstandardNth3momflux33; - - CCTK_REAL_VEC enerhsL = -PDstandardNth1eneflux1 - - PDstandardNth2eneflux2 - PDstandardNth3eneflux3; - - - /* Copy local copies back to grid functions */ - vec_store_nta(enerhs[index],enerhsL); - vec_store_nta(massrhs[index],massrhsL); - vec_store_nta(mom1rhs[index],mom1rhsL); - vec_store_nta(mom2rhs[index],mom2rhsL); - vec_store_nta(mom3rhs[index],mom3rhsL); - i += CCTK_REAL_VEC_SIZE-1; - } - LC_ENDLOOP3 (hydro_RHS); -} - -extern "C" void hydro_RHS(CCTK_ARGUMENTS) -{ - DECLARE_CCTK_ARGUMENTS; - DECLARE_CCTK_PARAMETERS; - - GenericFD_LoopOverInterior(cctkGH, &hydro_RHS_Body); -} diff --git a/ML_hydro/src/hydro_con2prim.cc b/ML_hydro/src/hydro_con2prim.c index ad437dc..2d8b977 100644 --- a/ML_hydro/src/hydro_con2prim.cc +++ b/ML_hydro/src/hydro_con2prim.c @@ -11,7 +11,6 @@ #include "cctk_Parameters.h" #include "GenericFD.h" #include "Differencing.h" -#include "Vectors.hh" #include "loopcontrol.h" /* Define macros used in calculations */ @@ -21,7 +20,7 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((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[]) +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[]) { DECLARE_CCTK_ARGUMENTS; DECLARE_CCTK_PARAMETERS; @@ -82,17 +81,17 @@ static void hydro_con2prim_Body(cGH const * restrict const cctkGH, int const dir /* Declare derivatives */ /* Assign local copies of grid functions */ - CCTK_REAL_VEC eneL = vec_load(ene[index]); - CCTK_REAL_VEC epsL = vec_load(eps[index]); - CCTK_REAL_VEC massL = vec_load(mass[index]); - CCTK_REAL_VEC mom1L = vec_load(mom1[index]); - CCTK_REAL_VEC mom2L = vec_load(mom2[index]); - CCTK_REAL_VEC mom3L = vec_load(mom3[index]); - CCTK_REAL_VEC rhoL = vec_load(rho[index]); - CCTK_REAL_VEC vel1L = vec_load(vel1[index]); - CCTK_REAL_VEC vel2L = vec_load(vel2[index]); - CCTK_REAL_VEC vel3L = vec_load(vel3[index]); - CCTK_REAL_VEC volL = vec_load(vol[index]); + CCTK_REAL eneL = ene[index]; + CCTK_REAL epsL = eps[index]; + CCTK_REAL massL = mass[index]; + CCTK_REAL mom1L = mom1[index]; + CCTK_REAL mom2L = mom2[index]; + CCTK_REAL mom3L = mom3[index]; + CCTK_REAL rhoL = rho[index]; + CCTK_REAL vel1L = vel1[index]; + CCTK_REAL vel2L = vel2[index]; + CCTK_REAL vel3L = vel3[index]; + CCTK_REAL volL = vol[index]; /* Include user supplied include files */ @@ -110,22 +109,21 @@ static void hydro_con2prim_Body(cGH const * restrict const cctkGH, int const dir epsL = khalf*INV(massL)*(2*eneL - massL*(SQR(vel1L) + SQR(vel2L) + SQR(vel3L))); - CCTK_REAL_VEC pressL = epsL*Gamma*rhoL; + CCTK_REAL pressL = epsL*Gamma*rhoL; /* Copy local copies back to grid functions */ - vec_store_nta(eps[index],epsL); - vec_store_nta(press[index],pressL); - vec_store_nta(rho[index],rhoL); - vec_store_nta(vel1[index],vel1L); - vec_store_nta(vel2[index],vel2L); - vec_store_nta(vel3[index],vel3L); - i += CCTK_REAL_VEC_SIZE-1; + eps[index] = epsL; + press[index] = pressL; + rho[index] = rhoL; + vel1[index] = vel1L; + vel2[index] = vel2L; + vel3[index] = vel3L; } LC_ENDLOOP3 (hydro_con2prim); } -extern "C" void hydro_con2prim(CCTK_ARGUMENTS) +void hydro_con2prim(CCTK_ARGUMENTS) { DECLARE_CCTK_ARGUMENTS; DECLARE_CCTK_PARAMETERS; diff --git a/ML_hydro/src/hydro_prim2con.cc b/ML_hydro/src/hydro_prim2con.c index 77326a9..abedfb4 100644 --- a/ML_hydro/src/hydro_prim2con.cc +++ b/ML_hydro/src/hydro_prim2con.c @@ -11,7 +11,6 @@ #include "cctk_Parameters.h" #include "GenericFD.h" #include "Differencing.h" -#include "Vectors.hh" #include "loopcontrol.h" /* Define macros used in calculations */ @@ -21,7 +20,7 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((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[]) +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[]) { DECLARE_CCTK_ARGUMENTS; DECLARE_CCTK_PARAMETERS; @@ -82,13 +81,13 @@ static void hydro_prim2con_Body(cGH const * restrict const cctkGH, int const dir /* Declare derivatives */ /* Assign local copies of grid functions */ - CCTK_REAL_VEC epsL = vec_load(eps[index]); - CCTK_REAL_VEC massL = vec_load(mass[index]); - CCTK_REAL_VEC rhoL = vec_load(rho[index]); - CCTK_REAL_VEC vel1L = vec_load(vel1[index]); - CCTK_REAL_VEC vel2L = vec_load(vel2[index]); - CCTK_REAL_VEC vel3L = vec_load(vel3[index]); - CCTK_REAL_VEC volL = vec_load(vol[index]); + CCTK_REAL epsL = eps[index]; + CCTK_REAL massL = mass[index]; + CCTK_REAL rhoL = rho[index]; + CCTK_REAL vel1L = vel1[index]; + CCTK_REAL vel2L = vel2[index]; + CCTK_REAL vel3L = vel3[index]; + CCTK_REAL volL = vol[index]; /* Include user supplied include files */ @@ -99,29 +98,28 @@ static void hydro_prim2con_Body(cGH const * restrict const cctkGH, int const dir massL = rhoL*volL; - CCTK_REAL_VEC mom1L = massL*vel1L; + CCTK_REAL mom1L = massL*vel1L; - CCTK_REAL_VEC mom2L = massL*vel2L; + CCTK_REAL mom2L = massL*vel2L; - CCTK_REAL_VEC mom3L = massL*vel3L; + CCTK_REAL mom3L = massL*vel3L; - CCTK_REAL_VEC eneL = khalf*massL*(2*epsL + SQR(vel1L) + SQR(vel2L) + + CCTK_REAL eneL = khalf*massL*(2*epsL + SQR(vel1L) + SQR(vel2L) + SQR(vel3L)); /* Copy local copies back to grid functions */ - vec_store_nta(ene[index],eneL); - vec_store_nta(mass[index],massL); - vec_store_nta(mom1[index],mom1L); - vec_store_nta(mom2[index],mom2L); - vec_store_nta(mom3[index],mom3L); - vec_store_nta(vol[index],volL); - i += CCTK_REAL_VEC_SIZE-1; + ene[index] = eneL; + mass[index] = massL; + mom1[index] = mom1L; + mom2[index] = mom2L; + mom3[index] = mom3L; + vol[index] = volL; } LC_ENDLOOP3 (hydro_prim2con); } -extern "C" void hydro_prim2con(CCTK_ARGUMENTS) +void hydro_prim2con(CCTK_ARGUMENTS) { DECLARE_CCTK_ARGUMENTS; DECLARE_CCTK_PARAMETERS; diff --git a/ML_hydro/src/hydro_soundWave.cc b/ML_hydro/src/hydro_soundWave.c index 197ea04..672c918 100644 --- a/ML_hydro/src/hydro_soundWave.cc +++ b/ML_hydro/src/hydro_soundWave.c @@ -11,7 +11,6 @@ #include "cctk_Parameters.h" #include "GenericFD.h" #include "Differencing.h" -#include "Vectors.hh" #include "loopcontrol.h" /* Define macros used in calculations */ @@ -21,7 +20,7 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((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[]) +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[]) { DECLARE_CCTK_ARGUMENTS; DECLARE_CCTK_PARAMETERS; @@ -82,36 +81,35 @@ static void hydro_soundWave_Body(cGH const * restrict const cctkGH, int const di /* Declare derivatives */ /* Assign local copies of grid functions */ - CCTK_REAL_VEC xL = vec_load(x[index]); + CCTK_REAL xL = x[index]; /* Include user supplied include files */ /* Precompute derivatives */ /* Calculate temporaries and grid functions */ - CCTK_REAL_VEC rhoL = 1.; + CCTK_REAL rhoL = 1.; - CCTK_REAL_VEC vel1L = A*Sin(2*Pi*xL*INV(L)); + CCTK_REAL vel1L = A*Sin(2*Pi*xL*INV(L)); - CCTK_REAL_VEC vel2L = A*Sin(2*Pi*xL*INV(L)); + CCTK_REAL vel2L = A*Sin(2*Pi*xL*INV(L)); - CCTK_REAL_VEC vel3L = A*Sin(2*Pi*xL*INV(L)); + CCTK_REAL vel3L = A*Sin(2*Pi*xL*INV(L)); - CCTK_REAL_VEC epsL = 1.; + CCTK_REAL epsL = 1.; /* Copy local copies back to grid functions */ - vec_store_nta(eps[index],epsL); - vec_store_nta(rho[index],rhoL); - vec_store_nta(vel1[index],vel1L); - vec_store_nta(vel2[index],vel2L); - vec_store_nta(vel3[index],vel3L); - i += CCTK_REAL_VEC_SIZE-1; + eps[index] = epsL; + rho[index] = rhoL; + vel1[index] = vel1L; + vel2[index] = vel2L; + vel3[index] = vel3L; } LC_ENDLOOP3 (hydro_soundWave); } -extern "C" void hydro_soundWave(CCTK_ARGUMENTS) +void hydro_soundWave(CCTK_ARGUMENTS) { DECLARE_CCTK_ARGUMENTS; DECLARE_CCTK_PARAMETERS; diff --git a/ML_hydro/src/hydro_vacuum.cc b/ML_hydro/src/hydro_vacuum.c index 7435d0f..8d8c519 100644 --- a/ML_hydro/src/hydro_vacuum.cc +++ b/ML_hydro/src/hydro_vacuum.c @@ -11,7 +11,6 @@ #include "cctk_Parameters.h" #include "GenericFD.h" #include "Differencing.h" -#include "Vectors.hh" #include "loopcontrol.h" /* Define macros used in calculations */ @@ -21,7 +20,7 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((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[]) +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[]) { DECLARE_CCTK_ARGUMENTS; DECLARE_CCTK_PARAMETERS; @@ -88,29 +87,28 @@ static void hydro_vacuum_Body(cGH const * restrict const cctkGH, int const dir, /* Precompute derivatives */ /* Calculate temporaries and grid functions */ - CCTK_REAL_VEC rhoL = 0; + CCTK_REAL rhoL = 0; - CCTK_REAL_VEC vel1L = 0; + CCTK_REAL vel1L = 0; - CCTK_REAL_VEC vel2L = 0; + CCTK_REAL vel2L = 0; - CCTK_REAL_VEC vel3L = 0; + CCTK_REAL vel3L = 0; - CCTK_REAL_VEC epsL = 0; + CCTK_REAL epsL = 0; /* Copy local copies back to grid functions */ - vec_store_nta(eps[index],epsL); - vec_store_nta(rho[index],rhoL); - vec_store_nta(vel1[index],vel1L); - vec_store_nta(vel2[index],vel2L); - vec_store_nta(vel3[index],vel3L); - i += CCTK_REAL_VEC_SIZE-1; + eps[index] = epsL; + rho[index] = rhoL; + vel1[index] = vel1L; + vel2[index] = vel2L; + vel3[index] = vel3L; } LC_ENDLOOP3 (hydro_vacuum); } -extern "C" void hydro_vacuum(CCTK_ARGUMENTS) +void hydro_vacuum(CCTK_ARGUMENTS) { DECLARE_CCTK_ARGUMENTS; DECLARE_CCTK_PARAMETERS; diff --git a/ML_hydro/src/make.code.defn b/ML_hydro/src/make.code.defn index ff8fb58..71abf2b 100644 --- a/ML_hydro/src/make.code.defn +++ b/ML_hydro/src/make.code.defn @@ -1,3 +1,3 @@ # File produced by Kranc -SRCS = Startup.c RegisterMoL.c RegisterSymmetries.c hydro_vacuum.cc hydro_soundWave.cc hydro_prim2con.cc hydro_con2prim.cc hydro_RHS.cc Boundaries.c +SRCS = Startup.c RegisterMoL.c RegisterSymmetries.c hydro_vacuum.c hydro_soundWave.c hydro_prim2con.c hydro_con2prim.c hydro_RHS.c Boundaries.c diff --git a/m/PARSER/McLachlan_BSSN.kranc b/m/PARSER/McLachlan_BSSN.kranc new file mode 100644 index 0000000..745bcc1 --- /dev/null +++ b/m/PARSER/McLachlan_BSSN.kranc @@ -0,0 +1,200 @@ +# This is an until-end-of-line comment + +THORN BSSN + + + +DERIVATIVE + PDstandardNth[i_] -> StandardCenteredDifferenceOperator[1,derivOrder/2,i] + +DERIVATIVE + PDstandardNth[i_,i_] -> StandardCenteredDifferenceOperator[2,derivOrder/2,i] +DERIVATIVE + PDstandardNth[i_,j_] -> StandardCenteredDifferenceOperator[1,derivOrder/2,i] * + StandardCenteredDifferenceOperator[1,derivOrder/2,j] +DERIVATIVE + PDdissipationNth[i_] -> + spacing[i]^(derivOrder+1) / 2^(derivOrder+2) * + StandardCenteredDifferenceOperator[derivOrder+2,derivOrder/2+1,i] + +JACOBIAN {PD, FD, J, dJ} + + + +TENSOR normal, tangentA, tangentB, dir +TENSOR xx, rr, th, ph +TENSOR J, dJ +TENSOR admg, admK, admalpha, admdtalpha, admbeta, admdtbeta, H, M +TENSOR g, detg, gu, G, R, trR, Km, trK, cdphi, cdphi2 +TENSOR phi, gt, At, Xt, Xtn, alpha, A, beta, B, Atm, Atu, trA, Ats, trAts +TENSOR dottrK, dotXt +TENSOR cXt, cS, cA +TENSOR e4phi, em4phi, ddetg, detgt, gtu, ddetgt, dgtu, ddgtu, Gtl, Gtlu, Gt +TENSOR Rt, Rphi, gK +TENSOR T00, T0, T, rho, S +TENSOR x, y, z, r +TENSOR epsdiss + + + +SYMMETRIC admg[la,lb], admK[la,lb] +SYMMETRIC g[la,lb], K[la,lb], R[la,lb], cdphi2[la,lb] +SYMMETRIC gt[la,lb], At[la,lb], Ats[la,lb], Rt[la,lb], Rphi[la,lb], T[la,lb] + +SYMMETRIC {dJ[ua,lb,lc], lb, lc} +SYMMETRIC {G[ua,lb,lc], lb, lc} +SYMMETRIC {Gtl[la,lb,lc], lb, lc} +SYMMETRIC {Gt[ua,lb,lc], lb, lc} +SYMMETRIC {gK[la,lb,lc], la, lb} + +SYMMETRIC gu[ua,ub], gtu[ua,ub], Atu[ua,ub] +SYMMETRIC {dgtu[ua,ub,lc], ua, ub} +SYMMETRIC {ddgtu[ua,ub,lc,ld], ua, ub} +SYMMETRIC {ddgtu[ua,ub,lc,ld], lc, ld} + + + +CONNECTION {CD, PD, G} +CONNECTION {CDt, PD, Gt} + + + +GROUP {phi , "log_confac"} +GROUP {gt[la,lb], "metric" } +GROUP {Xt[ua ], "Gamma" } + +EXTRA_GROUP {"Grid::coordinates", {x, y, z, r}} +EXTRA_GROUP {"ADMBase::metric", {gxx, gxy, gxz, gyy, gyz, gzz}} +EXTRA_GROUP {"ADMBase::curv", {kxx, kxy, kxz, kyy, kyz, kzz}} + + + +DEFINE pi = N[Pi,40] + +DEFINE + detgExpr = Det [MatrixOfComponents [g [la,lb]]] +DEFINE + ddetgExpr[la_] = + Sum [D[Det[MatrixOfComponents[g[la, lb]]], X] PD[X, la], + {X, Union[Flatten[MatrixOfComponents[g[la, lb]]]]}] + +DEFINE + detgtExpr = Det [MatrixOfComponents [gt[la,lb]]] +DEFINE + ddetgtExpr[la_] = + Sum [D[Det[MatrixOfComponents[gt[la, lb]]], X] PD[X, la], + {X, Union[Flatten[MatrixOfComponents[gt[la, lb]]]]}] + + + +CALCULATION "Minkowski" + Schedule: {"IN ADMBase_InitialData"} + ConditionalOnKeyword: {"my_initial_data", "Minkowski"} + BEGIN EQUATIONS + phi -> IfThen[conformalMethod, 1, 0] + phi -> conformalMethod ? 1 : 0 + gt[la,lb] -> KD[la,lb] + trK -> 0 + At[la,lb] -> 0 + Xt[ua] -> 0 + alpha -> 1 + A -> 0 + beta[ua] -> 0 + B[ua] -> 0 + END EQUATIONS +END CALCULATION + + + +CALCULATION "convertFromADMBase" + Schedule: {"AT initial AFTER ADMBase_PostInitial"} + ConditionalOnKeyword: {"my_initial_data", "ADMBase"} + SHORTHAND g[la,lb], detg, gu[ua,ub], em4phi + BEGIN EQUATIONS + g[la,lb] -> admg[la,lb] + detg -> detgExpr + gu[ua,ub] -> 1/detg detgExpr MatrixInverse [g[ua,ub]] + + phi -> IfThen [conformalMethod, detg^(-1/6), Log[detg]/12] + em4phi -> IfThen [conformalMethod, phi^2, Exp[-4 phi]] + gt[la,lb] -> em4phi g[la,lb] + + trK -> gu[ua,ub] admK[la,lb] + At[la,lb] -> em4phi (admK[la,lb] - (1/3) g[la,lb] trK) + + alpha -> admalpha + + beta[ua] -> admbeta[ua] + END EQUATIONS +END CALCULATION + + + +CALCULATION convertFromADMBaseGammaCalc + Name: BSSN <> "_convertFromADMBaseGamma" + Schedule: {"AT initial AFTER " <> BSSN <> "_convertFromADMBase"} + ConditionalOnKeyword: {"my_initial_data", "ADMBase"} + # Do not synchronise right after this routine; instead, synchronise + # after extrapolating + Where: Interior + # Synchronise after this routine, so that the refinement boundaries + # are set correctly before extrapolating. (We will need to + # synchronise again after extrapolating because extrapolation does + # not fill ghost zones, but this is irrelevant here.) + SHORTHAND dir[ua] + SHORTHAND detgt, gtu[ua,ub], Gt[ua,lb,lc], theta + BEGIN EQUATIONS + dir[ua] -> Sign[beta[ua]] + + detgt -> 1 (* detgtExpr *) + gtu[ua,ub] -> 1/detgt detgtExpr MatrixInverse [gt[ua,ub]] + Gt[ua,lb,lc] -> 1/2 gtu[ua,ud] + (PD[gt[lb,ld],lc] + PD[gt[lc,ld],lb] - PD[gt[lb,lc],ld]) + Xt[ua] -> gtu[ub,uc] Gt[ua,lb,lc] + + # If LapseACoeff=0, then A is not evolved, in the sense that it + # does not influence the time evolution of other variables. + A -> IfThen [LapseACoeff != 0 + 1 / (- harmonicF alpha^harmonicN) + (+ admdtalpha + - LapseAdvectionCoeff beta[ua] PDua[alpha,la] + - LapseAdvectionCoeff Abs[beta[ua]] PDus[alpha,la]) + 0] + + theta -> thetaExpr + + # If ShiftBCoeff=0 or theta ShiftGammaCoeff=0, then B^i is not + # evolved, in the sense that it does not influence the time + # evolution of other variables. + B[ua] -> IfThen [ShiftGammaCoeff ShiftBCoeff != 0 + 1 / (theta ShiftGammaCoeff) + (+ admdtbeta[ua] + - ShiftAdvectionCoeff beta[ub] PDua[beta[ua],lb] + - ShiftAdvectionCoeff Abs[beta[ub]] PDus[beta[ua],lb]) + 0] + END EQUATIONS +END CALCULATION + + + +INHERITED_IMPLEMENTATION ADMBase, TmunuBase + + + +KEYWORD_PARAMETER "my_initial_data" + # Visibility: "restricted" + # Description: "ddd" + AllowedValues: {"ADMBase", "Minkowski"} + Default: "ADMBase" +END KEYWORD_PARAMETER + + + +REAL_PARAMETER LapseACoeff + Description: "Whether to evolve A in time" + Default: 0 +END REAL_PARAMETER + + + +END THORN diff --git a/m/PARSER/McLachlan_BSSN.m b/m/PARSER/McLachlan_BSSN.m new file mode 100644 index 0000000..810edaa --- /dev/null +++ b/m/PARSER/McLachlan_BSSN.m @@ -0,0 +1,275 @@ +$Path = Join[$Path, {"../../../repos/Kranc/Tools/CodeGen", + "../../../repos/Kranc/Tools/MathematicaMisc"}]; + +Get["KrancThorn`"]; + +SetEnhancedTimes[False]; +SetSourceLanguage["C"]; + + + +(******************************************************************************) +(* Derivatives *) +(******************************************************************************) + +KD = KroneckerDelta; + +partialDerivatives = +{ + 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], + PDdissipationNth[i_] -> + spacing[i]^(derivOrder+1) / 2^(derivOrder+2) * + StandardCenteredDifferenceOperator[derivOrder+2,derivOrder/2+1,i], +}; + +ResetJacobians; + +DefineJacobian[PD, FD, J, dJ]; + + + +(******************************************************************************) +(* Tensors *) +(******************************************************************************) + +DefineTensor[normal]; +DefineTensor[tangentA]; +DefineTensor[tangentB]; +DefineTensor[dir]; + +AssertSymmetricIncreasing[admg[lalb]]; +AssertSymmetricIncreasing[admK[lalb]]; +AssertSymmetricIncreasing [dJ[ua,lb,lc], lb, lc]; +AssertSymmetricIncreasing [G[ua,lb,lc], lb, lc]; +AssertSymmetricIncreasing [Gtl[la,lb,lc], lb, lc]; +AssertSymmetricIncreasing [Gt[ua,lb,lc], lb, lc]; +AssertSymmetricIncreasing [gK[la,lb,lc], la, lb]; + +DefineConnection [CD, PD, G]; +DefineConnection [CDt, PD, Gt]; + + + +(******************************************************************************) +(* Expressions *) +(******************************************************************************) + +pi = N[Pi,40]; + +detgExpr = Det [MatrixOfComponents [g [la,lb]]]; +ddetgExpr[la_] = + Sum [D[Det[MatrixOfComponents[g[la, lb]]], X] PD[X, la], + {X, Union[Flatten[MatrixOfComponents[g[la, lb]]]]}]; + +detgtExpr = Det [MatrixOfComponents [gt[la,lb]]]; +ddetgtExpr[la_] = + Sum [D[Det[MatrixOfComponents[gt[la, lb]]], X] PD[X, la], + {X, Union[Flatten[MatrixOfComponents[gt[la, lb]]]]}]; + + + +(******************************************************************************) +(* Groups *) +(******************************************************************************) + +declaredGroups = { + SetGroupName [CreateGroupFromTensor [phi ], "log_confac"], + SetGroupName [CreateGroupFromTensor [gt[la,lb]], "metric" ], + SetGroupName [CreateGroupFromTensor [Xt[ua] ], "Gamma" ] +}; + +declaredGroupNames = Map[First, declaredGroups]; + +extraGroups = + {{"Grid::coordinates", {x, y, z, r}}, + {"ADMBase::metric", {gxx, gxy, gxz, gyy, gyz, gzz}}, + {"ADMBase::curv", {kxx, kxy, kxz, kyy, kyz, kzz}}} +}; + +allGroups = Join[declaredGroups, extraGroups]; + + + +(******************************************************************************) +(* Initial data *) +(******************************************************************************) + +initialCalc = +{ + Name -> BSSN <> "_Minkowski", + Schedule -> {"IN ADMBase_InitialData"}, + ConditionalOnKeyword -> {"my_initial_data", "Minkowski"}, + Equations -> + { + phi -> IfThen [conformalMethod, 1, 0], + gt[la,lb] -> KD[la,lb], + trK -> 0, + At[la,lb] -> 0, + Xt[ua] -> 0, + alpha -> 1, + A -> 0, + beta[ua] -> 0, + B[ua] -> 0 + } +}; + + + +(******************************************************************************) +(* Convert from ADMBase *) +(******************************************************************************) + +convertFromADMBaseCalc = +{ + Name -> BSSN <> "_convertFromADMBase", + Schedule -> {"AT initial AFTER ADMBase_PostInitial"}, + ConditionalOnKeyword -> {"my_initial_data", "ADMBase"}, + Shorthands -> {g[la,lb], detg, gu[ua,ub], em4phi}, + Equations -> + { + g[la,lb] -> admg[la,lb], + detg -> detgExpr, + gu[ua,ub] -> 1/detg detgExpr MatrixInverse [g[ua,ub]], + + phi -> IfThen [conformalMethod, detg^(-1/6), Log[detg]/12], + em4phi -> IfThen [conformalMethod, phi^2, Exp[-4 phi]], + gt[la,lb] -> em4phi g[la,lb], + + trK -> gu[ua,ub] admK[la,lb], + At[la,lb] -> em4phi (admK[la,lb] - (1/3) g[la,lb] trK), + + alpha -> admalpha, + + beta[ua] -> admbeta[ua] + } +}; + +convertFromADMBaseGammaCalc = +{ + Name -> BSSN <> "_convertFromADMBaseGamma", + Schedule -> {"AT initial AFTER " <> BSSN <> "_convertFromADMBase"}, + ConditionalOnKeyword -> {"my_initial_data", "ADMBase"}, + (* + Where -> InteriorNoSync, + *) + (* Do not synchronise right after this routine; instead, synchronise + after extrapolating *) + Where -> Interior, + (* Synchronise after this routine, so that the refinement boundaries + are set correctly before extrapolating. (We will need to + synchronise again after extrapolating because extrapolation does + not fill ghost zones, but this is irrelevant here.) *) + Shorthands -> {dir[ua], + detgt, gtu[ua,ub], Gt[ua,lb,lc], theta}, + Equations -> + { + dir[ua] -> Sign[beta[ua]], + + detgt -> 1 (* detgtExpr *), + gtu[ua,ub] -> 1/detgt detgtExpr MatrixInverse [gt[ua,ub]], + Gt[ua,lb,lc] -> 1/2 gtu[ua,ud] + (PD[gt[lb,ld],lc] + PD[gt[lc,ld],lb] - PD[gt[lb,lc],ld]), + Xt[ua] -> gtu[ub,uc] Gt[ua,lb,lc], + +(* + A -> - admdtalpha / (harmonicF alpha^harmonicN) (LapseAdvectionCoeff - 1), +*) + (* If LapseACoeff=0, then A is not evolved, in the sense that it + does not influence the time evolution of other variables. *) + A -> IfThen [LapseACoeff != 0, + 1 / (- harmonicF alpha^harmonicN) + (+ admdtalpha + - LapseAdvectionCoeff beta[ua] PDua[alpha,la] + - LapseAdvectionCoeff Abs[beta[ua]] PDus[alpha,la]), + 0], + + theta -> thetaExpr, + + (* If ShiftBCoeff=0 or theta ShiftGammaCoeff=0, then B^i is not + evolved, in the sense that it does not influence the time + evolution of other variables. *) + B[ua] -> IfThen [ShiftGammaCoeff ShiftBCoeff != 0, + 1 / (theta ShiftGammaCoeff) + (+ admdtbeta[ua] + - ShiftAdvectionCoeff beta[ub] PDua[beta[ua],lb] + - ShiftAdvectionCoeff Abs[beta[ub]] PDus[beta[ua],lb]), + 0] + } +}; + + + +(******************************************************************************) +(* Implementations *) +(******************************************************************************) + +inheritedImplementations = {"ADMBase", "TmunuBase"}; + + + +(******************************************************************************) +(* Parameters *) +(******************************************************************************) + +keywordParameters = +{ + { + Name -> "my_initial_data", + (* Visibility -> "restricted", *) + (* Description -> "ddd", *) + AllowedValues -> {"ADMBase", "Minkowski"}, + Default -> "ADMBase" + }, + { + Name -> "my_initial_boundary_condition", + Visibility -> "restricted", + (* Description -> "ddd", *) + AllowedValues -> {"none"}, + Default -> "none" + } +}; + +realParameters = +{ + { + Name -> LapseACoeff, + Description -> "Whether to evolve A in time", + Default -> 0 + }, + { + Name -> harmonicF, + Description -> "d/dt alpha = - f alpha^n K (harmonic=1, 1+log=2)", + Default -> 1 + } +}; + + + +(******************************************************************************) +(* Construct the thorns *) +(******************************************************************************) + +calculations = +{ + initialCalc, + convertFromADMBaseCalc, + convertFromADMBaseGammaCalc +}; + +CreateKrancThornTT [allGroups, ".", BSSN, + Calculations -> calculations, + DeclaredGroups -> declaredGroupNames, + PartialDerivatives -> derivatives, + EvolutionTimelevels -> evolutionTimelevels, + DefaultEvolutionTimelevels -> 3, + UseLoopControl -> True, + InheritedImplementations -> inheritedImplementations, + InheritedKeywordParameters -> inheritedKeywordParameters, + ExtendedKeywordParameters -> extendedKeywordParameters, + KeywordParameters -> keywordParameters, + IntParameters -> intParameters, + RealParameters -> realParameters +]; diff --git a/m/cse.m b/m/cse.m deleted file mode 100644 index f327f17..0000000 --- a/m/cse.m +++ /dev/null @@ -1,36 +0,0 @@ -expr = {a -> Sin[Sqrt[x]] + Cos[Sqrt[x]], - b -> Cos[Sqrt[x]]} - -pexpr = expr //. {a_, b__} -> CSequence[a, {b}] //. {a_} -> - a //. (a_ -> b_) -> CAssign[a, b] - -oexp = pexpr // Experimental`OptimizeExpression - -{locals, code} = - ReleaseHold[(Hold @@ oexp) /. - Verbatim[Block][vars_, seq_] :> {vars, Hold[seq]}] - -code1 = - code /. Hold[CompoundExpression[seq__]] :> Hold[{seq}] - -code2 = - First[code1 //. - Hold[{a___Hold, b_, c___}] /; Head[Unevaluated[b]] =!= Hold :> - Hold[{a, Hold[b], c}]] - -statements = - StringReplace[ToString[CForm[#]], - "Hold(" ~~ ShortestMatch[a___] ~~ ")" :> a] & /@ code2 - -mycsequence = StringJoin @@ Riffle[statements, ";\n"] - -replacevar = - Rule @@@ Transpose[{ToString[CForm[#]] & /@ locals, - StringReplace[StringReplace[ToString[#], {__ ~~ "`" ~~ a_ :> a}], - "$" -> "_"] & /@ locals}] - -mycsequence1 = StringReplace[mycsequence, replacevar] - -final = - "{\ndouble " <> StringJoin @@ Riffle[Last /@ replacevar, ","] <> - ";\n\n" <> mycsequence1 <> ";\n}\n" diff --git a/m/grhydro.m b/m/grhydro.m deleted file mode 100644 index a71a28b..0000000 --- a/m/grhydro.m +++ /dev/null @@ -1,154 +0,0 @@ -Get["KrancThorn`"]; - -(*SetDebugLevel[InfoFull];*) - -SetEnhancedTimes[False]; -SetSourceLanguage["C"]; - -(**************************************************************************** - Derivatives -****************************************************************************) - -derivatives = -{ - PDstandard2nd[i_] -> StandardCenteredDifferenceOperator[1,1,i], - PDstandard2nd[i_, i_] -> StandardCenteredDifferenceOperator[2,1,i], - PDstandard2nd[i_, j_] -> StandardCenteredDifferenceOperator[1,1,i] * - StandardCenteredDifferenceOperator[1,1,j], - - PDstandard4th[i_] -> StandardCenteredDifferenceOperator[1,2,i], - PDstandard4th[i_, i_] -> StandardCenteredDifferenceOperator[2,2,i], - PDstandard4th[i_, j_] -> StandardCenteredDifferenceOperator[1,2,i] * - StandardCenteredDifferenceOperator[1,2,j], - - PDplus[i_] -> DPlus[i], - PDminus[i_] -> DMinus[i], - PDplus[i_,j_] -> DPlus[i] DPlus[j], - - PDonesided2nd[1] -> dir[1] (-shift[1]^(2 dir[1]) + 4 shift[1]^dir[1] - 3 )/ - (2 spacing[1]), - PDonesided2nd[2] -> dir[2] (-shift[2]^(2 dir[2]) + 4 shift[2]^dir[2] - 3 )/ - (2 spacing[2]), - PDonesided2nd[3] -> dir[3] (-shift[3]^(2 dir[3]) + 4 shift[3]^dir[3] - 3 )/ - (2 spacing[3]) -}; - -(*PD = PDstandard2nd;*) - -(**************************************************************************** - Tensors -****************************************************************************) - -(* Register all the tensors that will be used with TensorTools *) -Map[DefineTensor, -{ - rho, vel, eps, press, - dens, mom, tau -}]; - -(* Register the TensorTools symmetries (this is very simplistic) *) -Map[AssertSymmetricDecreasing, -{ -}]; - -(* Determinants of the metrics in terms of their components - (Mathematica symbolic expressions) *) -gDet = Det[MatrixOfComponents[g[la,lb]]]; - -(**************************************************************************** - Groups -****************************************************************************) - -SetGroupTimelevels[g_,tl_] = Join[g, {Timelevels -> tl}]; - -evolvedGroups = - {CreateGroupFromTensor [dens ], (* mass density *) - CreateGroupFromTensor [mom[la]], (* momentum density *) - CreateGroupFromTensor [tau ]}; (* energy density *) -evaluatedGroups = - {CreateGroupFromTensor [rho ], (* mass density *) - CreateGroupFromTensor [vel[ua]], (* velocity *) - CreateGroupFromTensor [eps ], (* specific internal energy *) - CreateGroupFromTensor [press ]}; (* pressure *) - -declaredGroups = Join [evolvedGroups, evaluatedGroups]; -declaredGroupNames = Map [First, declaredGroups]; - -groups = Join[declaredGroups]; - -(******************************************************************************) -(* Initial data *) -(******************************************************************************) - -initialCalc = -{ - Name -> BSSN <> "_vacuum", - Schedule -> {"IN ADMBase_InitialData"}, - ConditionalOnKeyword -> {"my_initial_data", "vacuum"}, - Equations -> - { - rho -> 0, - vel[ua] -> 0, - eps -> 0 - } -}; - -(******************************************************************************) -(* Convert from primitive to conserved variables *) -(******************************************************************************) - -prim2conCalc = -{ - Name -> BSSN <> "_con2prim", - Schedule -> {"AT initial AFTER ADMBase_PostInitial"}, - Equations -> - { - dens -> rho, - mom[la] -> rho vel[ua], - tau -> (1/2) rho vel[ua] vel[la] + rho eps - } -}; - -(******************************************************************************) -(* Convert from conserved to primitive variables *) -(******************************************************************************) - -con2primCalc = -{ - Name -> BSSN <> "_con2prim", - Schedule -> {"IN " <> BSSN <>"_con2primGroup"}, - Equations -> - { - rho -> dens, - vel[ua] -> mom[la] / dens, - eps -> tau / dens - (1/2) vel[ua] vel[la], - - press -> Gamma rho eps + - alpha PD[vel[ua],la] - } -}; - -(******************************************************************************) -(* Evolution equations *) -(******************************************************************************) - -evolCalc = -{ - Name -> BSSN <> "_RHS", - Schedule -> {"IN " <> BSSN <>"_evolCalcGroup"}, - Shorthands -> {rhov[ua], momv[la,ub], tauv[ua]}, - Equations -> - { - (* dt rho + div rho v = 0 *) - rhov[ua] -> mom[la], - dot[dens] -> - PD[rhov[ua],la], - - (* dt pi + div (pi v + P) = 0 *) - momv[la,ub] -> mom[la] vel[ub] + KD[la,ub] press, - dot[mom[la]] -> - PD[momv[la,ub],lb], - - (* dt tau + div (tauv + P) = 0 *) - tauv[ua] -> tau vel[ua] + press vel[ua], - dot[tau] -> - PD[tauv[ua],la] - } -}; diff --git a/m/psi.m b/m/psi.m deleted file mode 100644 index 403ba2d..0000000 --- a/m/psi.m +++ /dev/null @@ -1,318 +0,0 @@ -Get["KrancThorn`"]; - -(*SetDebugLevel[InfoFull];*) - -SetEnhancedTimes[False]; -SetSourceLanguage["C"]; - -(**************************************************************************** - Derivatives -****************************************************************************) - -derivatives = -{ - PDstandard2nd[i_] -> StandardCenteredDifferenceOperator[1,1,i], - PDstandard2nd[i_, i_] -> StandardCenteredDifferenceOperator[2,1,i], - PDstandard2nd[i_, j_] -> StandardCenteredDifferenceOperator[1,1,i] * - StandardCenteredDifferenceOperator[1,1,j], - - PDstandard4th[i_] -> StandardCenteredDifferenceOperator[1,2,i], - PDstandard4th[i_, i_] -> StandardCenteredDifferenceOperator[2,2,i], - PDstandard4th[i_, j_] -> StandardCenteredDifferenceOperator[1,2,i] * - StandardCenteredDifferenceOperator[1,2,j], - - PDplus[i_] -> DPlus[i], - PDminus[i_] -> DMinus[i], - PDplus[i_,j_] -> DPlus[i] DPlus[j], - - PDonesided2nd[1] -> dir[1] (-shift[1]^(2 dir[1]) + 4 shift[1]^dir[1] - 3 )/ - (2 spacing[1]), - PDonesided2nd[2] -> dir[2] (-shift[2]^(2 dir[2]) + 4 shift[2]^dir[2] - 3 )/ - (2 spacing[2]), - PDonesided2nd[3] -> dir[3] (-shift[3]^(2 dir[3]) + 4 shift[3]^dir[3] - 3 )/ - (2 spacing[3]) -}; - -(*PD = PDstandard2nd;*) - -(**************************************************************************** - Tensors -****************************************************************************) - -(* Register all the tensors that will be used with TensorTools *) -Map[DefineTensor, -{ - R, gamma,g, gInv, k, ltet, n, rm, im, rmbar, imbar, tn, va, vb, vc, - Ro, Rojo, R4p, Psi0r, Psi0i, Psi1r, Psi1i, Psi2r, Psi2i, Psi3r, - Psi3i, Psi4r,Psi4i -}]; - -SetTensorAttribute[Psi0r, TensorManualCartesianParities, {1,1,1}]; -SetTensorAttribute[Psi2r, TensorManualCartesianParities, {1,1,1}]; -SetTensorAttribute[Psi4r, TensorManualCartesianParities, {1,1,1}]; -SetTensorAttribute[Psi0i, TensorManualCartesianParities, {-1,-1,-1}]; -SetTensorAttribute[Psi2i, TensorManualCartesianParities, {-1,-1,-1}]; -SetTensorAttribute[Psi4i, TensorManualCartesianParities, {-1,-1,-1}]; -SetTensorAttribute[Psi1r, TensorManualCartesianParities, {1,1,-1}]; -SetTensorAttribute[Psi3r, TensorManualCartesianParities, {-1,-1,1}]; -SetTensorAttribute[Psi1i, TensorManualCartesianParities, {-1,-1,1}]; -SetTensorAttribute[Psi3i, TensorManualCartesianParities, {-1,-1,1}]; - -(* Register the TensorTools symmetries (this is very simplistic) *) -Map[AssertSymmetricDecreasing, -{ - k[la,lb], g[la,lb] -}]; - -AssertSymmetricDecreasing[gamma[ua,lb,lc], lb, lc]; - -(*RiemannSymmetries[r_] := - Module[{}, - Do[ -(* If[b < a, r[a,b,c,d] = - r[b,a,c,d]]; - If[d < c, r[a,b,c,d] = - r[a,b,d,c]];*) - If[c < a && d < b, r[a,b,c,d] = r[c,d,a,b]]; - - , {a, 1, 3}, - {b, 1, 3}, - {c, 1, 3}, - {d, 1, 3}]]; - -RiemannSymmetries[R];*) - - - - - - - - - - - - - - - - -(* Determinants of the metrics in terms of their components - (Mathematica symbolic expressions) *) -gDet = Det[MatrixOfComponents[g[la,lb]]]; - -(**************************************************************************** - Groups -****************************************************************************) - -(* Cactus group definitions *) - -scalars = { (*Psi0r, Psi0i, Psi1r, Psi1i, Psi2r, Psi2i, Psi3r, Psi3i, *) Psi4r,Psi4i}; - -scalarGroups = Map[CreateGroupFromTensor, scalars]; - -(* We need extra timelevels so that interpolation onto the extraction sphere - works properly with mesh refinement *) -scalarGroups = Map[AddGroupExtra[#, Timelevels -> 3] &, scalarGroups]; - -admGroups = - {{"admbase::metric", {gxx,gxy,gxz,gyy,gyz,gzz}}, - {"admbase::curv", {kxx,kxy,kxz,kyy,kyz,kzz}}, - {"admbase::lapse", {alp}}, - {"admbase::shift", {betax,betay,betaz}}}; - -declaredGroups = scalarGroups; -declaredGroupNames = Map[First, declaredGroups]; - -groups = Join[declaredGroups, admGroups]; - -(**************************************************************************** - Shorthands -****************************************************************************) - -shorthands = -{ - gamma[ua,lb,lc], R[la,lb,lc,ld], invdetg, detg, third, detgmthirdroot, - gInv[ua,ub], Ro[la,lb,lc], Rojo[la,lb], R4p[li,lj,lk,ll], - omega11, omega22, omega33, omega12, omega13, omega23, va[ua], vb[ua], vc[ua], - tn[ua], n0, ltet[ua],n[ua],rm[ua],im[ua],rmbar[ua],imbar[ua], isqrt2 -}; - -k11=kxx; k21=kxy; k22=kyy; k31=kxz; k32=kyz; k33=kzz; -g11=gxx; g21=gxy; g22=gyy; g31=gxz; g32=gyz; g33=gzz; - -realParameters = {{Name -> offset, Default -> 10^(-15)},xorig,yorig,zorig}; - -PsisCalc[fdOrder_, PD_] := -{ - Name -> "psis_calc_" <> fdOrder, - Schedule -> {"at CCTK_EVOL after MoL_Evolution after evolved_to_adm as calc_np"}, - Where -> Interior, - ConditionalOnKeyword -> {"fd_order", fdOrder}, - Shorthands -> shorthands, - Equations -> - { - detg -> gDet, - invdetg -> 1 / detg, - gInv[ua,ub] -> invdetg gDet MatrixInverse[g[ua,ub]], - gamma[ua, lb, lc] -> 1/2 gInv[ua,ud] (PD[g[lb,ld], lc] + - PD[g[lc,ld], lb] - PD[g[lb,lc],ld]), - -(**************************************************************************** - Offset the origin -****************************************************************************) - - x -> x - xorig, - y -> y - yorig, - z -> z - zorig, - -(**************************************************************************** - Compute the local tetrad -****************************************************************************) - - va1 -> -y, va2 -> x+offset, va3 -> 0, - vb1 -> x+offset, vb2 -> y, vb3 -> z, - vc[ua] -> Sqrt[detg] gInv[ua,ud] Eps[ld,lb,lc] va[ub] vb[uc], - - (* Orthonormalize using Gram-Schmidt*) - - omega11 -> va[ua] va[ub] g[la,lb], - va[ua] -> va[ua] / Sqrt[omega11], - - omega12 -> va[ua] vb[ub] g[la,lb], - vb[ua] -> vb[ua] - omega12 va[ua], - omega22 -> vb[ua] vb[ub] g[la,lb], - vb[ua] -> vb[ua]/Sqrt[omega22], - - omega13 -> va[ua] vc[ub] g[la,lb], - omega23 -> vb[ua] vc[ub] g[la,lb], - vc[ua] -> vc[ua] - omega13 va[ua] - omega23 vb[ua], - omega33 -> vc[ua] vc[ub] g[la,lb], - vc[ua] -> vc[ua]/Sqrt[omega33], - - isqrt2 -> 0.70710678118654752440, - - (* Create Spatial Portion of Null Tetrad *) - ltet[ua] -> ( vb[ua]) isqrt2, - n[ua] -> ( - vb[ua]) isqrt2, - rm[ua] -> vc[ua] isqrt2, - im[ua] -> va[ua] isqrt2, - rmbar[ua] -> vc[ua] isqrt2, - imbar[ua] -> -va[ua] isqrt2, - - n0 -> isqrt2, - - -(**************************************************************************** - Compute the NP pseudoscalars -****************************************************************************) - - (* Calculate the relevant Riemann Quantities *) - - (* The 3-Riemann *) - R[la,lb,lc,ld] -> 1/2 ( PD[g[la,ld],lc,lb] + PD[g[lb,lc],ld,la] ) - - 1/2 ( PD[g[la,lc],lb,ld] + PD[g[lb,ld],la,lc] ) - + g[lj,le] gamma[uj,lb,lc] gamma[ue,la,ld] - - g[lj,le] gamma[uj,lb,ld] gamma[ue,la,lc], - - (* The 4-Riemann projected into the slice on all its indices. - The Gauss equation. *) - R4p[li,lj,lk,ll] -> R[li,lj,lk,ll] + - 2 AntiSymmetrize[k[li,lk] k[ll,lj], lk, ll], - - (* The 4-Riemann projected in the unit normal direction on one - index, then into the slice on the remaining indices. The Codazzi - equation. *) - Ro[lj,lk,ll] -> - 2 AntiSymmetrize[ PD[k[lj,lk],ll], lk,ll] - - 2 AntiSymmetrize[ gamma[up,lj,lk] k[ll,lp], lk,ll], - - (* The 4-Riemann projected in the unit normal direction on two - indices, and into the slice on the remaining two. *) - Rojo[lj,ll] -> gInv[uc,ud] (R[lj,lc,ll,ld] ) - - k[lj,lp] gInv[up,ud] k[ld,ll] - + k[lc,ld] gInv[uc,ud] k[lj,ll], - - (* Calculate End Quantities - NOTE: In writing this, I assume m[0]=0!! to save lots of work *) - - Psi4r -> R4p[li,lj,lk,ll] n[ui] n[uk] - ( rmbar[uj] rmbar[ul] - imbar[uj] imbar[ul] ) - + 2 Ro[lj,lk,ll] n[uk] n0 - ( rmbar[uj] rmbar[ul] - imbar[uj] imbar[ul] ) - + Rojo[lj,ll] n0 n0 ( rmbar[uj] rmbar[ul] - imbar[uj] imbar[ul] - (* + terms in mbar^0 == 0*) ), - - Psi4i -> R4p[la,lb,lc,ld] n[ua] n[uc] ( - rm[ub] im[ud] - im[ub] rm[ud] ) - + 2 Ro[la,lb,lc] n[ub] n0 ( - rm[ua] im[uc] - im[ua] rm[uc] ) - + Rojo[la,lb] n0 n0 ( - rm[ua] im[ub] - im[ua] rm[ub] ) (*, - - - Psi3r -> R4p[la,lb,lc,ld] ltet[ua] n[ub] rm[uc] n[ud] - + Ro[la,lb,lc] ( n0 (n[ua]-ltet[ua]) rm[ub] n[uc] - - n0 rm[ua] ltet[ub] n[uc] ) - - Rojo[la,lb] n0 (n[ua]-ltet[ua]) n0 rm[ub], - - Psi3i -> - R4p[la,lb,lc,ld] ltet[ua] n[ub] im[uc] n[ud] - - Ro[la,lb,lc] ( n0 (n[ua]-ltet[ua]) im[ub] n[uc] - - n0 im[ua] ltet[ub] n[uc] ) - + Rojo[la,lb] n0 (n[ua]-ltet[ua]) n0 im[ub], - - Psi2r -> R4p[la,lb,lc,ld] ltet[ua] n[ud] (rm[ub] rm[uc] + im[ub] im[uc]) - + Ro[la,lb,lc] n0 ( n[uc] (rm[ua] rm[ub] + im[ua] im[ub]) - - ltet[ub] (rm[ua] rm[uc] + im[ua] im[uc]) ) - - Rojo[la,lb] n0 n0 (rm[ua] rm[ub] + im[ua] im[ub]), - - Psi2i -> R4p[la,lb,lc,ld] ltet[ua] n[ud] (im[ub] rm[uc] - rm[ub] im[uc]) - + Ro[la,lb,lc] n0 ( n[uc] (im[ua] rm[ub] - rm[ua] im[ub]) - - ltet[ub] (rm[ua] im[uc] - im[ua] rm[uc]) ) - - Rojo[la,lb] n0 n0 (im[ua] rm[ub] - rm[ua] im[ub]), - - Psi1r -> R4p[la,lb,lc,ld] n[ua] ltet[ub] rm[uc] ltet[ud] - + Ro[la,lb,lc] ( n0 ltet[ua] rm[ub] ltet[uc] - - n0 rm[ua] n[ub] ltet[uc] - - n0 n[ua] rm[ub] ltet[uc] ) - + Rojo[la,lb] n0 n0 ( n[ua] rm[ub] - ltet[ua] rm[ub] ), - - Psi1i -> R4p[la,lb,lc,ld] n[ua] ltet[ub] im[uc] ltet[ud] - + Ro[la,lb,lc] ( n0 ltet[ua] im[ub] ltet[uc] - - n0 im[ua] n[ub] ltet[uc] - - n0 n[ua] im[ub] ltet[uc] ) - + Rojo[la,lb] n0 n0 ( n[ua] im[ub] - ltet[ua] im[ub] ), - - Psi0r -> R4p[la,lb,lc,ld] ltet[ua] ltet[uc] (rm[ub] rm[ud] - im[ub] im[ud]) - + 2 Ro[la,lb,lc] n0 ltet[ub] (rm[ua] rm[uc] - im[ua] im[uc]) - + Rojo[la,lb] n0 n0 (rm[ua] rm[ub] - im[ua] im[ub]), - - Psi0i -> R4p[la,lb,lc,ld] ltet[ua] ltet[uc] (rm[ub] im[ud] + im[ub] rm[ud]) - + 2 Ro[la,lb,lc] n0 ltet[ub] (rm[ua] im[uc] + im[ua] rm[uc]) - + Rojo[la,lb] n0 n0 (rm[ua] im[ub] + im[ua] rm[ub]) *) - } -}; - -(**************************************************************************** - Construct the thorn -****************************************************************************) - -fdOrderParam = -{ - Name -> "fd_order", - Default -> "2nd", - AllowedValues -> {"2nd", "4th"} -}; - -keywordParameters = -{ - fdOrderParam -}; - -calculations = -{ - PsisCalc["2nd", PDstandard2nd], - PsisCalc["4th", PDstandard4th] -}; - -CreateKrancThornTT[groups, ".", "WeylScal4", - Calculations -> calculations, - DeclaredGroups -> declaredGroupNames, - PartialDerivatives -> derivatives, - KeywordParameters -> keywordParameters, - RealParameters -> realParameters, - InheritedImplementations -> {"admbase"}]; |