diff options
author | Erik Schnetter <schnetter@cct.lsu.edu> | 2010-01-12 14:38:22 -0600 |
---|---|---|
committer | Erik Schnetter <schnetter@cct.lsu.edu> | 2010-01-12 14:38:22 -0600 |
commit | b34404d76b7ffbc9088fb0efc44380229c6d3132 (patch) | |
tree | f8d6b5a36e81ffbb061e9dc444a14d6e484ee54b | |
parent | 3583ad21d3cb40d8c0980ea057a954eb6e055273 (diff) |
Commit changes that should have been committed earlier
26 files changed, 1284 insertions, 591 deletions
diff --git a/ML_BSSN/param.ccl b/ML_BSSN/param.ccl index 16cb26b..20c4887 100644 --- a/ML_BSSN/param.ccl +++ b/ML_BSSN/param.ccl @@ -156,6 +156,13 @@ KEYWORD calculate_ADMBase_variables_at "calculate_ADMBase_variables_at" "CCTK_ANALYSIS" :: "CCTK_ANALYSIS" } "MoL_PostStep" +private: +KEYWORD dt_lapse_shift_method "Treatment of ADMBase dtlapse and dtshift" +{ + "correct" :: "correct" + "noLapseShiftAdvection" :: "noLapseShiftAdvection" +} "correct" + restricted: CCTK_INT ML_BSSN_MaxNumEvolvedVars "Number of evolved variables used by this thorn" ACCUMULATOR-BASE=MethodofLines::MoL_Num_Evolved_Vars { @@ -229,7 +236,19 @@ CCTK_INT ML_BSSN_convertToADMBase_calc_every "ML_BSSN_convertToADMBase_calc_ever } 1 restricted: -CCTK_INT ML_BSSN_ADMBaseBoundary_calc_every "ML_BSSN_ADMBaseBoundary_calc_every" +CCTK_INT ML_BSSN_convertToADMBaseDtLapseShift_calc_every "ML_BSSN_convertToADMBaseDtLapseShift_calc_every" +{ + *:* :: "" +} 1 + +restricted: +CCTK_INT ML_BSSN_convertToADMBaseDtLapseShiftBoundary_calc_every "ML_BSSN_convertToADMBaseDtLapseShiftBoundary_calc_every" +{ + *:* :: "" +} 1 + +restricted: +CCTK_INT ML_BSSN_convertToADMBaseFakeDtLapseShift_calc_every "ML_BSSN_convertToADMBaseFakeDtLapseShift_calc_every" { *:* :: "" } 1 @@ -301,7 +320,19 @@ CCTK_INT ML_BSSN_convertToADMBase_calc_offset "ML_BSSN_convertToADMBase_calc_off } 0 restricted: -CCTK_INT ML_BSSN_ADMBaseBoundary_calc_offset "ML_BSSN_ADMBaseBoundary_calc_offset" +CCTK_INT ML_BSSN_convertToADMBaseDtLapseShift_calc_offset "ML_BSSN_convertToADMBaseDtLapseShift_calc_offset" +{ + *:* :: "" +} 0 + +restricted: +CCTK_INT ML_BSSN_convertToADMBaseDtLapseShiftBoundary_calc_offset "ML_BSSN_convertToADMBaseDtLapseShiftBoundary_calc_offset" +{ + *:* :: "" +} 0 + +restricted: +CCTK_INT ML_BSSN_convertToADMBaseFakeDtLapseShift_calc_offset "ML_BSSN_convertToADMBaseFakeDtLapseShift_calc_offset" { *:* :: "" } 0 diff --git a/ML_BSSN/schedule.ccl b/ML_BSSN/schedule.ccl index 08d07d3..353cf71 100644 --- a/ML_BSSN/schedule.ccl +++ b/ML_BSSN/schedule.ccl @@ -368,15 +368,6 @@ if (CCTK_EQUALS(my_initial_data, "ADMBase")) schedule ML_BSSN_RHS IN ML_BSSN_evolCalcGroup { LANG: C - SYNC: ML_curvrhs - SYNC: ML_dtlapserhs - SYNC: ML_dtshiftrhs - SYNC: ML_Gammarhs - SYNC: ML_lapserhs - SYNC: ML_log_confacrhs - SYNC: ML_metricrhs - SYNC: ML_shiftrhs - SYNC: ML_trace_curvrhs } "ML_BSSN_RHS" @@ -414,18 +405,36 @@ if (CCTK_EQUALS(my_boundary_condition, "Minkowski")) schedule ML_BSSN_convertToADMBase IN ML_BSSN_convertToADMBaseGroup { LANG: C - SYNC: ADMBase::curv - SYNC: ADMBase::dtlapse - SYNC: ADMBase::dtshift - SYNC: ADMBase::lapse - SYNC: ADMBase::metric - SYNC: ADMBase::shift } "ML_BSSN_convertToADMBase" -schedule ML_BSSN_ADMBaseBoundary IN ML_BSSN_convertToADMBaseGroup AFTER ML_BSSN_convertToADMBase + +if (CCTK_EQUALS(dt_lapse_shift_method, "correct")) { - LANG: C -} "ML_BSSN_ADMBaseBoundary" + schedule ML_BSSN_convertToADMBaseDtLapseShift IN ML_BSSN_convertToADMBaseGroup + { + LANG: C + SYNC: ADMBase::dtlapse + SYNC: ADMBase::dtshift + } "ML_BSSN_convertToADMBaseDtLapseShift" +} + + +if (CCTK_EQUALS(dt_lapse_shift_method, "correct")) +{ + schedule ML_BSSN_convertToADMBaseDtLapseShiftBoundary IN ML_BSSN_convertToADMBaseGroup + { + LANG: C + } "ML_BSSN_convertToADMBaseDtLapseShiftBoundary" +} + + +if (CCTK_EQUALS(dt_lapse_shift_method, "noLapseShiftAdvection")) +{ + schedule ML_BSSN_convertToADMBaseFakeDtLapseShift IN ML_BSSN_convertToADMBaseGroup + { + LANG: C + } "ML_BSSN_convertToADMBaseFakeDtLapseShift" +} schedule ML_BSSN_constraints IN ML_BSSN_constraintsCalcGroup { diff --git a/ML_BSSN/src/ML_BSSN_convertToADMBase.c b/ML_BSSN/src/ML_BSSN_convertToADMBase.c index be7aed4..3fb72f9 100644 --- a/ML_BSSN/src/ML_BSSN_convertToADMBase.c +++ b/ML_BSSN/src/ML_BSSN_convertToADMBase.c @@ -101,25 +101,18 @@ void ML_BSSN_convertToADMBase_Body(cGH const * const cctkGH, CCTK_INT const dir, subblock_index = i - min[0] + (max[0] - min[0]) * (j - min[1] + (max[1]-min[1]) * (k - min[2])); /* Declare shorthands */ - CCTK_REAL dir1 = INITVALUE, dir2 = INITVALUE, dir3 = INITVALUE; CCTK_REAL e4phi = INITVALUE; CCTK_REAL g11 = INITVALUE, g12 = INITVALUE, g13 = INITVALUE, g22 = INITVALUE, g23 = INITVALUE, g33 = INITVALUE; CCTK_REAL K11 = INITVALUE, K12 = INITVALUE, K13 = INITVALUE, K22 = INITVALUE, K23 = INITVALUE, K33 = INITVALUE; /* Declare local copies of grid functions */ - CCTK_REAL AL = INITVALUE; CCTK_REAL alpL = INITVALUE; CCTK_REAL alphaL = INITVALUE; CCTK_REAL At11L = INITVALUE, At12L = INITVALUE, At13L = INITVALUE, At22L = INITVALUE, At23L = INITVALUE, At33L = INITVALUE; - CCTK_REAL B1L = INITVALUE, B2L = INITVALUE, B3L = INITVALUE; CCTK_REAL beta1L = INITVALUE, beta2L = INITVALUE, beta3L = INITVALUE; CCTK_REAL betaxL = INITVALUE; CCTK_REAL betayL = INITVALUE; CCTK_REAL betazL = INITVALUE; - CCTK_REAL dtalpL = INITVALUE; - CCTK_REAL dtbetaxL = INITVALUE; - CCTK_REAL dtbetayL = INITVALUE; - CCTK_REAL dtbetazL = INITVALUE; CCTK_REAL gt11L = INITVALUE, gt12L = INITVALUE, gt13L = INITVALUE, gt22L = INITVALUE, gt23L = INITVALUE, gt33L = INITVALUE; CCTK_REAL gxxL = INITVALUE; CCTK_REAL gxyL = INITVALUE; @@ -140,7 +133,6 @@ void ML_BSSN_convertToADMBase_Body(cGH const * const cctkGH, CCTK_INT const dir, /* Declare derivatives */ /* Assign local copies of grid functions */ - AL = A[index]; alphaL = alpha[index]; At11L = At11[index]; At12L = At12[index]; @@ -148,9 +140,6 @@ void ML_BSSN_convertToADMBase_Body(cGH const * const cctkGH, CCTK_INT const dir, At22L = At22[index]; At23L = At23[index]; At33L = At33[index]; - B1L = B1[index]; - B2L = B2[index]; - B3L = B3[index]; beta1L = beta1[index]; beta2L = beta2[index]; beta3L = beta3[index]; @@ -172,12 +161,6 @@ void ML_BSSN_convertToADMBase_Body(cGH const * const cctkGH, CCTK_INT const dir, /* Precompute derivatives (old style) */ /* Calculate temporaries and grid functions */ - dir1 = Sign(beta1L); - - dir2 = Sign(beta2L); - - dir3 = Sign(beta3L); - e4phi = IfThen(conformalMethod,pow(phiL,-2),exp(4*phiL)); g11 = e4phi*gt11L; @@ -236,29 +219,12 @@ void ML_BSSN_convertToADMBase_Body(cGH const * const cctkGH, CCTK_INT const dir, betazL = beta3L; - dtalpL = (PDupwindNth1(alpha, i, j, k)*beta1L + PDupwindNth2(alpha, i, j, k)*beta2L + - PDupwindNth3(alpha, i, j, k)*beta3L)*LapseAdvectionCoeff + - harmonicF*(AL*(-1 + LapseAdvectionCoeff) - LapseAdvectionCoeff*trKL)*pow(alphaL,harmonicN); - - dtbetaxL = (PDupwindNth1(beta1, i, j, k)*beta1L + PDupwindNth2(beta1, i, j, k)*beta2L + - PDupwindNth3(beta1, i, j, k)*beta3L)*ShiftAdvectionCoeff + B1L*ShiftGammaCoeff; - - dtbetayL = (PDupwindNth1(beta2, i, j, k)*beta1L + PDupwindNth2(beta2, i, j, k)*beta2L + - PDupwindNth3(beta2, i, j, k)*beta3L)*ShiftAdvectionCoeff + B2L*ShiftGammaCoeff; - - dtbetazL = (PDupwindNth1(beta3, i, j, k)*beta1L + PDupwindNth2(beta3, i, j, k)*beta2L + - PDupwindNth3(beta3, i, j, k)*beta3L)*ShiftAdvectionCoeff + B3L*ShiftGammaCoeff; - /* Copy local copies back to grid functions */ alp[index] = alpL; betax[index] = betaxL; betay[index] = betayL; betaz[index] = betazL; - dtalp[index] = dtalpL; - dtbetax[index] = dtbetaxL; - dtbetay[index] = dtbetayL; - dtbetaz[index] = dtbetazL; gxx[index] = gxxL; gxy[index] = gxyL; gxz[index] = gxzL; @@ -282,5 +248,5 @@ void ML_BSSN_convertToADMBase(CCTK_ARGUMENTS) DECLARE_CCTK_ARGUMENTS; DECLARE_CCTK_PARAMETERS; - GenericFD_LoopOverInterior(cctkGH, &ML_BSSN_convertToADMBase_Body); + GenericFD_LoopOverEverything(cctkGH, &ML_BSSN_convertToADMBase_Body); } diff --git a/ML_BSSN/src/ML_BSSN_convertToADMBaseDtLapseShift.c b/ML_BSSN/src/ML_BSSN_convertToADMBaseDtLapseShift.c new file mode 100644 index 0000000..280b05e --- /dev/null +++ b/ML_BSSN/src/ML_BSSN_convertToADMBaseDtLapseShift.c @@ -0,0 +1,177 @@ +/* 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 ML_BSSN_convertToADMBaseDtLapseShift_Body(cGH const * const cctkGH, CCTK_INT const dir, CCTK_INT const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], CCTK_INT const min[3], CCTK_INT const max[3], CCTK_INT const n_subblock_gfs, CCTK_REAL * const subblock_gfs[]) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + + /* Declare finite differencing variables */ + CCTK_REAL dx = INITVALUE, dy = INITVALUE, dz = INITVALUE; + CCTK_REAL dxi = INITVALUE, dyi = INITVALUE, dzi = INITVALUE; + CCTK_REAL khalf = INITVALUE, kthird = INITVALUE, ktwothird = INITVALUE, kfourthird = INITVALUE, keightthird = INITVALUE; + CCTK_REAL hdxi = INITVALUE, hdyi = INITVALUE, hdzi = INITVALUE; + + + /* Declare predefined quantities */ + CCTK_REAL p1o12dx = INITVALUE; + CCTK_REAL p1o12dy = INITVALUE; + CCTK_REAL p1o12dz = INITVALUE; + CCTK_REAL p1o144dxdy = INITVALUE; + CCTK_REAL p1o144dxdz = INITVALUE; + CCTK_REAL p1o144dydz = INITVALUE; + CCTK_REAL p1odx = INITVALUE; + CCTK_REAL p1ody = INITVALUE; + CCTK_REAL p1odz = INITVALUE; + CCTK_REAL pm1o12dx2 = INITVALUE; + CCTK_REAL pm1o12dy2 = INITVALUE; + CCTK_REAL pm1o12dz2 = INITVALUE; + + if (verbose > 1) + { + CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_convertToADMBaseDtLapseShift_Body"); + } + + if (cctk_iteration % ML_BSSN_convertToADMBaseDtLapseShift_calc_every != ML_BSSN_convertToADMBaseDtLapseShift_calc_offset) + { + return; + } + + /* Include user-supplied include files */ + + /* Initialise finite differencing variables */ + dx = CCTK_DELTA_SPACE(0); + dy = CCTK_DELTA_SPACE(1); + dz = CCTK_DELTA_SPACE(2); + dxi = 1.0 / dx; + dyi = 1.0 / dy; + dzi = 1.0 / dz; + khalf = 0.5; + kthird = 1/3.0; + ktwothird = 2.0/3.0; + kfourthird = 4.0/3.0; + keightthird = 8.0/3.0; + hdxi = 0.5 * dxi; + hdyi = 0.5 * dyi; + hdzi = 0.5 * dzi; + + /* Initialize predefined quantities */ + p1o12dx = INV(dx)/12.; + p1o12dy = INV(dy)/12.; + p1o12dz = INV(dz)/12.; + p1o144dxdy = (INV(dx)*INV(dy))/144.; + p1o144dxdz = (INV(dx)*INV(dz))/144.; + p1o144dydz = (INV(dy)*INV(dz))/144.; + p1odx = INV(dx); + p1ody = INV(dy); + p1odz = INV(dz); + pm1o12dx2 = -pow(dx,-2)/12.; + pm1o12dy2 = -pow(dy,-2)/12.; + pm1o12dz2 = -pow(dz,-2)/12.; + + /* Loop over the grid points */ + #pragma omp parallel + LC_LOOP3 (ML_BSSN_convertToADMBaseDtLapseShift, + i,j,k, min[0],min[1],min[2], max[0],max[1],max[2], + cctk_lsh[0],cctk_lsh[1],cctk_lsh[2]) + { + int index = INITVALUE; + int subblock_index = INITVALUE; + index = CCTK_GFINDEX3D(cctkGH,i,j,k); + subblock_index = i - min[0] + (max[0] - min[0]) * (j - min[1] + (max[1]-min[1]) * (k - min[2])); + + /* Declare shorthands */ + CCTK_REAL dir1 = INITVALUE, dir2 = INITVALUE, dir3 = INITVALUE; + + /* Declare local copies of grid functions */ + CCTK_REAL AL = INITVALUE; + CCTK_REAL alphaL = INITVALUE; + CCTK_REAL B1L = INITVALUE, B2L = INITVALUE, B3L = INITVALUE; + CCTK_REAL beta1L = INITVALUE, beta2L = INITVALUE, beta3L = INITVALUE; + CCTK_REAL dtalpL = INITVALUE; + CCTK_REAL dtbetaxL = INITVALUE; + CCTK_REAL dtbetayL = INITVALUE; + CCTK_REAL dtbetazL = INITVALUE; + CCTK_REAL trKL = INITVALUE; + /* Declare precomputed derivatives*/ + + /* Declare derivatives */ + + /* Assign local copies of grid functions */ + AL = A[index]; + alphaL = alpha[index]; + B1L = B1[index]; + B2L = B2[index]; + B3L = B3[index]; + beta1L = beta1[index]; + beta2L = beta2[index]; + beta3L = beta3[index]; + trKL = trK[index]; + + /* Assign local copies of subblock grid functions */ + + /* Include user supplied include files */ + + /* Precompute derivatives (new style) */ + + /* Precompute derivatives (old style) */ + + /* Calculate temporaries and grid functions */ + dir1 = Sign(beta1L); + + dir2 = Sign(beta2L); + + dir3 = Sign(beta3L); + + dtalpL = (PDupwindNth1(alpha, i, j, k)*beta1L + PDupwindNth2(alpha, i, j, k)*beta2L + + PDupwindNth3(alpha, i, j, k)*beta3L)*LapseAdvectionCoeff + + harmonicF*(AL*(-1 + LapseAdvectionCoeff) - LapseAdvectionCoeff*trKL)*pow(alphaL,harmonicN); + + dtbetaxL = (PDupwindNth1(beta1, i, j, k)*beta1L + PDupwindNth2(beta1, i, j, k)*beta2L + + PDupwindNth3(beta1, i, j, k)*beta3L)*ShiftAdvectionCoeff + B1L*ShiftGammaCoeff; + + dtbetayL = (PDupwindNth1(beta2, i, j, k)*beta1L + PDupwindNth2(beta2, i, j, k)*beta2L + + PDupwindNth3(beta2, i, j, k)*beta3L)*ShiftAdvectionCoeff + B2L*ShiftGammaCoeff; + + dtbetazL = (PDupwindNth1(beta3, i, j, k)*beta1L + PDupwindNth2(beta3, i, j, k)*beta2L + + PDupwindNth3(beta3, i, j, k)*beta3L)*ShiftAdvectionCoeff + B3L*ShiftGammaCoeff; + + + /* Copy local copies back to grid functions */ + dtalp[index] = dtalpL; + dtbetax[index] = dtbetaxL; + dtbetay[index] = dtbetayL; + dtbetaz[index] = dtbetazL; + + /* Copy local copies back to subblock grid functions */ + } + LC_ENDLOOP3 (ML_BSSN_convertToADMBaseDtLapseShift); +} + +void ML_BSSN_convertToADMBaseDtLapseShift(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + GenericFD_LoopOverInterior(cctkGH, &ML_BSSN_convertToADMBaseDtLapseShift_Body); +} diff --git a/ML_BSSN/src/ML_BSSN_ADMBaseBoundary.c b/ML_BSSN/src/ML_BSSN_convertToADMBaseDtLapseShiftBoundary.c index bec587d..cad10b0 100644 --- a/ML_BSSN/src/ML_BSSN_ADMBaseBoundary.c +++ b/ML_BSSN/src/ML_BSSN_convertToADMBaseDtLapseShiftBoundary.c @@ -20,7 +20,7 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((x) * (x) * (x) * (x)) -void ML_BSSN_ADMBaseBoundary_Body(cGH const * const cctkGH, CCTK_INT const dir, CCTK_INT const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], CCTK_INT const min[3], CCTK_INT const max[3], CCTK_INT const n_subblock_gfs, CCTK_REAL * const subblock_gfs[]) +void ML_BSSN_convertToADMBaseDtLapseShiftBoundary_Body(cGH const * const cctkGH, CCTK_INT const dir, CCTK_INT const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], CCTK_INT const min[3], CCTK_INT const max[3], CCTK_INT const n_subblock_gfs, CCTK_REAL * const subblock_gfs[]) { DECLARE_CCTK_ARGUMENTS; DECLARE_CCTK_PARAMETERS; @@ -49,10 +49,10 @@ void ML_BSSN_ADMBaseBoundary_Body(cGH const * const cctkGH, CCTK_INT const dir, if (verbose > 1) { - CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_ADMBaseBoundary_Body"); + CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_convertToADMBaseDtLapseShiftBoundary_Body"); } - if (cctk_iteration % ML_BSSN_ADMBaseBoundary_calc_every != ML_BSSN_ADMBaseBoundary_calc_offset) + if (cctk_iteration % ML_BSSN_convertToADMBaseDtLapseShiftBoundary_calc_every != ML_BSSN_convertToADMBaseDtLapseShiftBoundary_calc_offset) { return; } @@ -91,7 +91,7 @@ void ML_BSSN_ADMBaseBoundary_Body(cGH const * const cctkGH, CCTK_INT const dir, /* Loop over the grid points */ #pragma omp parallel - LC_LOOP3 (ML_BSSN_ADMBaseBoundary, + LC_LOOP3 (ML_BSSN_convertToADMBaseDtLapseShiftBoundary, i,j,k, min[0],min[1],min[2], max[0],max[1],max[2], cctk_lsh[0],cctk_lsh[1],cctk_lsh[2]) { @@ -101,38 +101,15 @@ void ML_BSSN_ADMBaseBoundary_Body(cGH const * const cctkGH, CCTK_INT const dir, subblock_index = i - min[0] + (max[0] - min[0]) * (j - min[1] + (max[1]-min[1]) * (k - min[2])); /* Declare shorthands */ - CCTK_REAL e4phi = INITVALUE; - CCTK_REAL g11 = INITVALUE, g12 = INITVALUE, g13 = INITVALUE, g22 = INITVALUE, g23 = INITVALUE, g33 = INITVALUE; - CCTK_REAL K11 = INITVALUE, K12 = INITVALUE, K13 = INITVALUE, K22 = INITVALUE, K23 = INITVALUE, K33 = INITVALUE; /* Declare local copies of grid functions */ CCTK_REAL AL = INITVALUE; - CCTK_REAL alpL = INITVALUE; CCTK_REAL alphaL = INITVALUE; - CCTK_REAL At11L = INITVALUE, At12L = INITVALUE, At13L = INITVALUE, At22L = INITVALUE, At23L = INITVALUE, At33L = INITVALUE; CCTK_REAL B1L = INITVALUE, B2L = INITVALUE, B3L = INITVALUE; - CCTK_REAL beta1L = INITVALUE, beta2L = INITVALUE, beta3L = INITVALUE; - CCTK_REAL betaxL = INITVALUE; - CCTK_REAL betayL = INITVALUE; - CCTK_REAL betazL = INITVALUE; CCTK_REAL dtalpL = INITVALUE; CCTK_REAL dtbetaxL = INITVALUE; CCTK_REAL dtbetayL = INITVALUE; CCTK_REAL dtbetazL = INITVALUE; - CCTK_REAL gt11L = INITVALUE, gt12L = INITVALUE, gt13L = INITVALUE, gt22L = INITVALUE, gt23L = INITVALUE, gt33L = INITVALUE; - CCTK_REAL gxxL = INITVALUE; - CCTK_REAL gxyL = INITVALUE; - CCTK_REAL gxzL = INITVALUE; - CCTK_REAL gyyL = INITVALUE; - CCTK_REAL gyzL = INITVALUE; - CCTK_REAL gzzL = INITVALUE; - CCTK_REAL kxxL = INITVALUE; - CCTK_REAL kxyL = INITVALUE; - CCTK_REAL kxzL = INITVALUE; - CCTK_REAL kyyL = INITVALUE; - CCTK_REAL kyzL = INITVALUE; - CCTK_REAL kzzL = INITVALUE; - CCTK_REAL phiL = INITVALUE; CCTK_REAL trKL = INITVALUE; /* Declare precomputed derivatives*/ @@ -141,25 +118,9 @@ void ML_BSSN_ADMBaseBoundary_Body(cGH const * const cctkGH, CCTK_INT const dir, /* Assign local copies of grid functions */ AL = A[index]; alphaL = alpha[index]; - At11L = At11[index]; - At12L = At12[index]; - At13L = At13[index]; - At22L = At22[index]; - At23L = At23[index]; - At33L = At33[index]; B1L = B1[index]; B2L = B2[index]; B3L = B3[index]; - beta1L = beta1[index]; - beta2L = beta2[index]; - beta3L = beta3[index]; - gt11L = gt11[index]; - gt12L = gt12[index]; - gt13L = gt13[index]; - gt22L = gt22[index]; - gt23L = gt23[index]; - gt33L = gt33[index]; - phiL = phi[index]; trKL = trK[index]; /* Assign local copies of subblock grid functions */ @@ -171,64 +132,6 @@ void ML_BSSN_ADMBaseBoundary_Body(cGH const * const cctkGH, CCTK_INT const dir, /* Precompute derivatives (old style) */ /* Calculate temporaries and grid functions */ - e4phi = IfThen(conformalMethod,pow(phiL,-2),exp(4*phiL)); - - g11 = e4phi*gt11L; - - g12 = e4phi*gt12L; - - g13 = e4phi*gt13L; - - g22 = e4phi*gt22L; - - g23 = e4phi*gt23L; - - g33 = e4phi*gt33L; - - gxxL = g11; - - gxyL = g12; - - gxzL = g13; - - gyyL = g22; - - gyzL = g23; - - gzzL = g33; - - K11 = At11L*e4phi + g11*kthird*trKL; - - K12 = At12L*e4phi + g12*kthird*trKL; - - K13 = At13L*e4phi + g13*kthird*trKL; - - K22 = At22L*e4phi + g22*kthird*trKL; - - K23 = At23L*e4phi + g23*kthird*trKL; - - K33 = At33L*e4phi + g33*kthird*trKL; - - kxxL = K11; - - kxyL = K12; - - kxzL = K13; - - kyyL = K22; - - kyzL = K23; - - kzzL = K33; - - alpL = alphaL; - - betaxL = beta1L; - - betayL = beta2L; - - betazL = beta3L; - dtalpL = harmonicF*(AL*(-1 + LapseAdvectionCoeff) - LapseAdvectionCoeff*trKL)*pow(alphaL,harmonicN); dtbetaxL = B1L*ShiftGammaCoeff; @@ -239,36 +142,20 @@ void ML_BSSN_ADMBaseBoundary_Body(cGH const * const cctkGH, CCTK_INT const dir, /* Copy local copies back to grid functions */ - alp[index] = alpL; - betax[index] = betaxL; - betay[index] = betayL; - betaz[index] = betazL; dtalp[index] = dtalpL; dtbetax[index] = dtbetaxL; dtbetay[index] = dtbetayL; dtbetaz[index] = dtbetazL; - gxx[index] = gxxL; - gxy[index] = gxyL; - gxz[index] = gxzL; - gyy[index] = gyyL; - gyz[index] = gyzL; - gzz[index] = gzzL; - kxx[index] = kxxL; - kxy[index] = kxyL; - kxz[index] = kxzL; - kyy[index] = kyyL; - kyz[index] = kyzL; - kzz[index] = kzzL; /* Copy local copies back to subblock grid functions */ } - LC_ENDLOOP3 (ML_BSSN_ADMBaseBoundary); + LC_ENDLOOP3 (ML_BSSN_convertToADMBaseDtLapseShiftBoundary); } -void ML_BSSN_ADMBaseBoundary(CCTK_ARGUMENTS) +void ML_BSSN_convertToADMBaseDtLapseShiftBoundary(CCTK_ARGUMENTS) { DECLARE_CCTK_ARGUMENTS; DECLARE_CCTK_PARAMETERS; - GenericFD_LoopOverBoundaryWithGhosts(cctkGH, &ML_BSSN_ADMBaseBoundary_Body); + GenericFD_LoopOverBoundaryWithGhosts(cctkGH, &ML_BSSN_convertToADMBaseDtLapseShiftBoundary_Body); } diff --git a/ML_BSSN_M/src/ML_BSSN_M_ADMBaseBoundary.c b/ML_BSSN/src/ML_BSSN_convertToADMBaseFakeDtLapseShift.c index 242046d..835480a 100644 --- a/ML_BSSN_M/src/ML_BSSN_M_ADMBaseBoundary.c +++ b/ML_BSSN/src/ML_BSSN_convertToADMBaseFakeDtLapseShift.c @@ -20,7 +20,7 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((x) * (x) * (x) * (x)) -void ML_BSSN_M_ADMBaseBoundary_Body(cGH const * const cctkGH, CCTK_INT const dir, CCTK_INT const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], CCTK_INT const min[3], CCTK_INT const max[3], CCTK_INT const n_subblock_gfs, CCTK_REAL * const subblock_gfs[]) +void ML_BSSN_convertToADMBaseFakeDtLapseShift_Body(cGH const * const cctkGH, CCTK_INT const dir, CCTK_INT const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], CCTK_INT const min[3], CCTK_INT const max[3], CCTK_INT const n_subblock_gfs, CCTK_REAL * const subblock_gfs[]) { DECLARE_CCTK_ARGUMENTS; DECLARE_CCTK_PARAMETERS; @@ -49,10 +49,10 @@ void ML_BSSN_M_ADMBaseBoundary_Body(cGH const * const cctkGH, CCTK_INT const dir if (verbose > 1) { - CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_M_ADMBaseBoundary_Body"); + CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_convertToADMBaseFakeDtLapseShift_Body"); } - if (cctk_iteration % ML_BSSN_M_ADMBaseBoundary_calc_every != ML_BSSN_M_ADMBaseBoundary_calc_offset) + if (cctk_iteration % ML_BSSN_convertToADMBaseFakeDtLapseShift_calc_every != ML_BSSN_convertToADMBaseFakeDtLapseShift_calc_offset) { return; } @@ -91,7 +91,7 @@ void ML_BSSN_M_ADMBaseBoundary_Body(cGH const * const cctkGH, CCTK_INT const dir /* Loop over the grid points */ #pragma omp parallel - LC_LOOP3 (ML_BSSN_M_ADMBaseBoundary, + LC_LOOP3 (ML_BSSN_convertToADMBaseFakeDtLapseShift, i,j,k, min[0],min[1],min[2], max[0],max[1],max[2], cctk_lsh[0],cctk_lsh[1],cctk_lsh[2]) { @@ -101,38 +101,15 @@ void ML_BSSN_M_ADMBaseBoundary_Body(cGH const * const cctkGH, CCTK_INT const dir subblock_index = i - min[0] + (max[0] - min[0]) * (j - min[1] + (max[1]-min[1]) * (k - min[2])); /* Declare shorthands */ - CCTK_REAL e4phi = INITVALUE; - CCTK_REAL g11 = INITVALUE, g12 = INITVALUE, g13 = INITVALUE, g22 = INITVALUE, g23 = INITVALUE, g33 = INITVALUE; - CCTK_REAL K11 = INITVALUE, K12 = INITVALUE, K13 = INITVALUE, K22 = INITVALUE, K23 = INITVALUE, K33 = INITVALUE; /* Declare local copies of grid functions */ CCTK_REAL AL = INITVALUE; - CCTK_REAL alpL = INITVALUE; CCTK_REAL alphaL = INITVALUE; - CCTK_REAL At11L = INITVALUE, At12L = INITVALUE, At13L = INITVALUE, At22L = INITVALUE, At23L = INITVALUE, At33L = INITVALUE; CCTK_REAL B1L = INITVALUE, B2L = INITVALUE, B3L = INITVALUE; - CCTK_REAL beta1L = INITVALUE, beta2L = INITVALUE, beta3L = INITVALUE; - CCTK_REAL betaxL = INITVALUE; - CCTK_REAL betayL = INITVALUE; - CCTK_REAL betazL = INITVALUE; CCTK_REAL dtalpL = INITVALUE; CCTK_REAL dtbetaxL = INITVALUE; CCTK_REAL dtbetayL = INITVALUE; CCTK_REAL dtbetazL = INITVALUE; - CCTK_REAL gt11L = INITVALUE, gt12L = INITVALUE, gt13L = INITVALUE, gt22L = INITVALUE, gt23L = INITVALUE, gt33L = INITVALUE; - CCTK_REAL gxxL = INITVALUE; - CCTK_REAL gxyL = INITVALUE; - CCTK_REAL gxzL = INITVALUE; - CCTK_REAL gyyL = INITVALUE; - CCTK_REAL gyzL = INITVALUE; - CCTK_REAL gzzL = INITVALUE; - CCTK_REAL kxxL = INITVALUE; - CCTK_REAL kxyL = INITVALUE; - CCTK_REAL kxzL = INITVALUE; - CCTK_REAL kyyL = INITVALUE; - CCTK_REAL kyzL = INITVALUE; - CCTK_REAL kzzL = INITVALUE; - CCTK_REAL phiL = INITVALUE; CCTK_REAL trKL = INITVALUE; /* Declare precomputed derivatives*/ @@ -141,25 +118,9 @@ void ML_BSSN_M_ADMBaseBoundary_Body(cGH const * const cctkGH, CCTK_INT const dir /* Assign local copies of grid functions */ AL = A[index]; alphaL = alpha[index]; - At11L = At11[index]; - At12L = At12[index]; - At13L = At13[index]; - At22L = At22[index]; - At23L = At23[index]; - At33L = At33[index]; B1L = B1[index]; B2L = B2[index]; B3L = B3[index]; - beta1L = beta1[index]; - beta2L = beta2[index]; - beta3L = beta3[index]; - gt11L = gt11[index]; - gt12L = gt12[index]; - gt13L = gt13[index]; - gt22L = gt22[index]; - gt23L = gt23[index]; - gt33L = gt33[index]; - phiL = phi[index]; trKL = trK[index]; /* Assign local copies of subblock grid functions */ @@ -171,64 +132,6 @@ void ML_BSSN_M_ADMBaseBoundary_Body(cGH const * const cctkGH, CCTK_INT const dir /* Precompute derivatives (old style) */ /* Calculate temporaries and grid functions */ - e4phi = IfThen(conformalMethod,pow(phiL,-2),exp(4*phiL)); - - g11 = e4phi*gt11L; - - g12 = e4phi*gt12L; - - g13 = e4phi*gt13L; - - g22 = e4phi*gt22L; - - g23 = e4phi*gt23L; - - g33 = e4phi*gt33L; - - gxxL = g11; - - gxyL = g12; - - gxzL = g13; - - gyyL = g22; - - gyzL = g23; - - gzzL = g33; - - K11 = At11L*e4phi + g11*kthird*trKL; - - K12 = At12L*e4phi + g12*kthird*trKL; - - K13 = At13L*e4phi + g13*kthird*trKL; - - K22 = At22L*e4phi + g22*kthird*trKL; - - K23 = At23L*e4phi + g23*kthird*trKL; - - K33 = At33L*e4phi + g33*kthird*trKL; - - kxxL = K11; - - kxyL = K12; - - kxzL = K13; - - kyyL = K22; - - kyzL = K23; - - kzzL = K33; - - alpL = alphaL; - - betaxL = beta1L; - - betayL = beta2L; - - betazL = beta3L; - dtalpL = harmonicF*(AL*(-1 + LapseAdvectionCoeff) - LapseAdvectionCoeff*trKL)*pow(alphaL,harmonicN); dtbetaxL = B1L*ShiftGammaCoeff; @@ -239,36 +142,20 @@ void ML_BSSN_M_ADMBaseBoundary_Body(cGH const * const cctkGH, CCTK_INT const dir /* Copy local copies back to grid functions */ - alp[index] = alpL; - betax[index] = betaxL; - betay[index] = betayL; - betaz[index] = betazL; dtalp[index] = dtalpL; dtbetax[index] = dtbetaxL; dtbetay[index] = dtbetayL; dtbetaz[index] = dtbetazL; - gxx[index] = gxxL; - gxy[index] = gxyL; - gxz[index] = gxzL; - gyy[index] = gyyL; - gyz[index] = gyzL; - gzz[index] = gzzL; - kxx[index] = kxxL; - kxy[index] = kxyL; - kxz[index] = kxzL; - kyy[index] = kyyL; - kyz[index] = kyzL; - kzz[index] = kzzL; /* Copy local copies back to subblock grid functions */ } - LC_ENDLOOP3 (ML_BSSN_M_ADMBaseBoundary); + LC_ENDLOOP3 (ML_BSSN_convertToADMBaseFakeDtLapseShift); } -void ML_BSSN_M_ADMBaseBoundary(CCTK_ARGUMENTS) +void ML_BSSN_convertToADMBaseFakeDtLapseShift(CCTK_ARGUMENTS) { DECLARE_CCTK_ARGUMENTS; DECLARE_CCTK_PARAMETERS; - GenericFD_LoopOverBoundaryWithGhosts(cctkGH, &ML_BSSN_M_ADMBaseBoundary_Body); + GenericFD_LoopOverEverything(cctkGH, &ML_BSSN_convertToADMBaseFakeDtLapseShift_Body); } diff --git a/ML_BSSN/src/make.code.defn b/ML_BSSN/src/make.code.defn index 9a0354d..d4d4f44 100644 --- a/ML_BSSN/src/make.code.defn +++ b/ML_BSSN/src/make.code.defn @@ -1,3 +1,3 @@ # File produced by Kranc -SRCS = Startup.c RegisterMoL.c RegisterSymmetries.c ML_BSSN_Minkowski.c ML_BSSN_convertFromADMBase.c ML_BSSN_convertFromADMBaseGamma.c ML_BSSN_RHS.c ML_BSSN_RHSStaticBoundary.c ML_BSSN_RHSRadiativeBoundary.c ML_BSSN_enforce.c ML_BSSN_boundary.c ML_BSSN_convertToADMBase.c ML_BSSN_ADMBaseBoundary.c ML_BSSN_constraints.c ML_BSSN_constraints_boundary.c Boundaries.c +SRCS = Startup.c RegisterMoL.c RegisterSymmetries.c ML_BSSN_Minkowski.c ML_BSSN_convertFromADMBase.c ML_BSSN_convertFromADMBaseGamma.c ML_BSSN_RHS.c ML_BSSN_RHSStaticBoundary.c ML_BSSN_RHSRadiativeBoundary.c ML_BSSN_enforce.c ML_BSSN_boundary.c ML_BSSN_convertToADMBase.c ML_BSSN_convertToADMBaseDtLapseShift.c ML_BSSN_convertToADMBaseDtLapseShiftBoundary.c ML_BSSN_convertToADMBaseFakeDtLapseShift.c ML_BSSN_constraints.c ML_BSSN_constraints_boundary.c Boundaries.c diff --git a/ML_BSSN6_Helper/schedule.ccl b/ML_BSSN6_Helper/schedule.ccl index 87e9fa9..1ec23d9 100644 --- a/ML_BSSN6_Helper/schedule.ccl +++ b/ML_BSSN6_Helper/schedule.ccl @@ -98,15 +98,15 @@ if (CCTK_EQUALS (evolution_method, "ML_BSSN6")) { SCHEDULE ML_BSSN6_NewRad IN ML_BSSN6_evolCalcGroup AFTER ML_BSSN6_RHS { LANG: C - SYNC: ML_curvrhs - SYNC: ML_dtlapserhs - SYNC: ML_dtshiftrhs - SYNC: ML_Gammarhs - SYNC: ML_lapserhs - SYNC: ML_log_confacrhs - SYNC: ML_metricrhs - SYNC: ML_shiftrhs - SYNC: ML_trace_curvrhs + #SYNC: ML_curvrhs + #SYNC: ML_dtlapserhs + #SYNC: ML_dtshiftrhs + #SYNC: ML_Gammarhs + #SYNC: ML_lapserhs + #SYNC: ML_log_confacrhs + #SYNC: ML_metricrhs + #SYNC: ML_shiftrhs + #SYNC: ML_trace_curvrhs } "Apply NewRad boundary conditions to RHS" } diff --git a/ML_BSSNUp_Helper/schedule.ccl b/ML_BSSNUp_Helper/schedule.ccl index 4a9e6a5..7fe1d38 100644 --- a/ML_BSSNUp_Helper/schedule.ccl +++ b/ML_BSSNUp_Helper/schedule.ccl @@ -98,15 +98,15 @@ if (CCTK_EQUALS (evolution_method, "ML_BSSNUp")) { SCHEDULE ML_BSSNUp_NewRad IN ML_BSSNUp_evolCalcGroup AFTER ML_BSSNUp_RHS { LANG: C - SYNC: ML_curvrhs - SYNC: ML_dtlapserhs - SYNC: ML_dtshiftrhs - SYNC: ML_Gammarhs - SYNC: ML_lapserhs - SYNC: ML_log_confacrhs - SYNC: ML_metricrhs - SYNC: ML_shiftrhs - SYNC: ML_trace_curvrhs + #SYNC: ML_curvrhs + #SYNC: ML_dtlapserhs + #SYNC: ML_dtshiftrhs + #SYNC: ML_Gammarhs + #SYNC: ML_lapserhs + #SYNC: ML_log_confacrhs + #SYNC: ML_metricrhs + #SYNC: ML_shiftrhs + #SYNC: ML_trace_curvrhs } "Apply NewRad boundary conditions to RHS" } diff --git a/ML_BSSN_Helper/schedule.ccl b/ML_BSSN_Helper/schedule.ccl index 2c677cc..447b2cd 100644 --- a/ML_BSSN_Helper/schedule.ccl +++ b/ML_BSSN_Helper/schedule.ccl @@ -98,15 +98,15 @@ if (CCTK_EQUALS (evolution_method, "ML_BSSN")) { SCHEDULE ML_BSSN_NewRad IN ML_BSSN_evolCalcGroup AFTER ML_BSSN_RHS { LANG: C - SYNC: ML_curvrhs - SYNC: ML_dtlapserhs - SYNC: ML_dtshiftrhs - SYNC: ML_Gammarhs - SYNC: ML_lapserhs - SYNC: ML_log_confacrhs - SYNC: ML_metricrhs - SYNC: ML_shiftrhs - SYNC: ML_trace_curvrhs + #SYNC: ML_curvrhs + #SYNC: ML_dtlapserhs + #SYNC: ML_dtshiftrhs + #SYNC: ML_Gammarhs + #SYNC: ML_lapserhs + #SYNC: ML_log_confacrhs + #SYNC: ML_metricrhs + #SYNC: ML_shiftrhs + #SYNC: ML_trace_curvrhs } "Apply NewRad boundary conditions to RHS" } diff --git a/ML_BSSN_M/param.ccl b/ML_BSSN_M/param.ccl index ac939d5..7c15b1e 100644 --- a/ML_BSSN_M/param.ccl +++ b/ML_BSSN_M/param.ccl @@ -156,6 +156,13 @@ KEYWORD calculate_ADMBase_variables_at "calculate_ADMBase_variables_at" "CCTK_ANALYSIS" :: "CCTK_ANALYSIS" } "MoL_PostStep" +private: +KEYWORD dt_lapse_shift_method "Treatment of ADMBase dtlapse and dtshift" +{ + "correct" :: "correct" + "noLapseShiftAdvection" :: "noLapseShiftAdvection" +} "correct" + restricted: CCTK_INT ML_BSSN_M_MaxNumEvolvedVars "Number of evolved variables used by this thorn" ACCUMULATOR-BASE=MethodofLines::MoL_Num_Evolved_Vars { @@ -229,7 +236,19 @@ CCTK_INT ML_BSSN_M_convertToADMBase_calc_every "ML_BSSN_M_convertToADMBase_calc_ } 1 restricted: -CCTK_INT ML_BSSN_M_ADMBaseBoundary_calc_every "ML_BSSN_M_ADMBaseBoundary_calc_every" +CCTK_INT ML_BSSN_M_convertToADMBaseDtLapseShift_calc_every "ML_BSSN_M_convertToADMBaseDtLapseShift_calc_every" +{ + *:* :: "" +} 1 + +restricted: +CCTK_INT ML_BSSN_M_convertToADMBaseDtLapseShiftBoundary_calc_every "ML_BSSN_M_convertToADMBaseDtLapseShiftBoundary_calc_every" +{ + *:* :: "" +} 1 + +restricted: +CCTK_INT ML_BSSN_M_convertToADMBaseFakeDtLapseShift_calc_every "ML_BSSN_M_convertToADMBaseFakeDtLapseShift_calc_every" { *:* :: "" } 1 @@ -301,7 +320,19 @@ CCTK_INT ML_BSSN_M_convertToADMBase_calc_offset "ML_BSSN_M_convertToADMBase_calc } 0 restricted: -CCTK_INT ML_BSSN_M_ADMBaseBoundary_calc_offset "ML_BSSN_M_ADMBaseBoundary_calc_offset" +CCTK_INT ML_BSSN_M_convertToADMBaseDtLapseShift_calc_offset "ML_BSSN_M_convertToADMBaseDtLapseShift_calc_offset" +{ + *:* :: "" +} 0 + +restricted: +CCTK_INT ML_BSSN_M_convertToADMBaseDtLapseShiftBoundary_calc_offset "ML_BSSN_M_convertToADMBaseDtLapseShiftBoundary_calc_offset" +{ + *:* :: "" +} 0 + +restricted: +CCTK_INT ML_BSSN_M_convertToADMBaseFakeDtLapseShift_calc_offset "ML_BSSN_M_convertToADMBaseFakeDtLapseShift_calc_offset" { *:* :: "" } 0 diff --git a/ML_BSSN_M/schedule.ccl b/ML_BSSN_M/schedule.ccl index 88709ce..12128fb 100644 --- a/ML_BSSN_M/schedule.ccl +++ b/ML_BSSN_M/schedule.ccl @@ -368,15 +368,6 @@ if (CCTK_EQUALS(my_initial_data, "ADMBase")) schedule ML_BSSN_M_RHS IN ML_BSSN_M_evolCalcGroup { LANG: C - SYNC: ML_curvrhs - SYNC: ML_dtlapserhs - SYNC: ML_dtshiftrhs - SYNC: ML_Gammarhs - SYNC: ML_lapserhs - SYNC: ML_log_confacrhs - SYNC: ML_metricrhs - SYNC: ML_shiftrhs - SYNC: ML_trace_curvrhs } "ML_BSSN_M_RHS" @@ -414,18 +405,36 @@ if (CCTK_EQUALS(my_boundary_condition, "Minkowski")) schedule ML_BSSN_M_convertToADMBase IN ML_BSSN_M_convertToADMBaseGroup { LANG: C - SYNC: ADMBase::curv - SYNC: ADMBase::dtlapse - SYNC: ADMBase::dtshift - SYNC: ADMBase::lapse - SYNC: ADMBase::metric - SYNC: ADMBase::shift } "ML_BSSN_M_convertToADMBase" -schedule ML_BSSN_M_ADMBaseBoundary IN ML_BSSN_M_convertToADMBaseGroup AFTER ML_BSSN_M_convertToADMBase + +if (CCTK_EQUALS(dt_lapse_shift_method, "correct")) { - LANG: C -} "ML_BSSN_M_ADMBaseBoundary" + schedule ML_BSSN_M_convertToADMBaseDtLapseShift IN ML_BSSN_M_convertToADMBaseGroup + { + LANG: C + SYNC: ADMBase::dtlapse + SYNC: ADMBase::dtshift + } "ML_BSSN_M_convertToADMBaseDtLapseShift" +} + + +if (CCTK_EQUALS(dt_lapse_shift_method, "correct")) +{ + schedule ML_BSSN_M_convertToADMBaseDtLapseShiftBoundary IN ML_BSSN_M_convertToADMBaseGroup + { + LANG: C + } "ML_BSSN_M_convertToADMBaseDtLapseShiftBoundary" +} + + +if (CCTK_EQUALS(dt_lapse_shift_method, "noLapseShiftAdvection")) +{ + schedule ML_BSSN_M_convertToADMBaseFakeDtLapseShift IN ML_BSSN_M_convertToADMBaseGroup + { + LANG: C + } "ML_BSSN_M_convertToADMBaseFakeDtLapseShift" +} schedule ML_BSSN_M_constraints IN ML_BSSN_M_constraintsCalcGroup { diff --git a/ML_BSSN_M/src/ML_BSSN_M_convertToADMBase.c b/ML_BSSN_M/src/ML_BSSN_M_convertToADMBase.c index fd4b8f1..2545992 100644 --- a/ML_BSSN_M/src/ML_BSSN_M_convertToADMBase.c +++ b/ML_BSSN_M/src/ML_BSSN_M_convertToADMBase.c @@ -101,25 +101,18 @@ void ML_BSSN_M_convertToADMBase_Body(cGH const * const cctkGH, CCTK_INT const di subblock_index = i - min[0] + (max[0] - min[0]) * (j - min[1] + (max[1]-min[1]) * (k - min[2])); /* Declare shorthands */ - CCTK_REAL dir1 = INITVALUE, dir2 = INITVALUE, dir3 = INITVALUE; CCTK_REAL e4phi = INITVALUE; CCTK_REAL g11 = INITVALUE, g12 = INITVALUE, g13 = INITVALUE, g22 = INITVALUE, g23 = INITVALUE, g33 = INITVALUE; CCTK_REAL K11 = INITVALUE, K12 = INITVALUE, K13 = INITVALUE, K22 = INITVALUE, K23 = INITVALUE, K33 = INITVALUE; /* Declare local copies of grid functions */ - CCTK_REAL AL = INITVALUE; CCTK_REAL alpL = INITVALUE; CCTK_REAL alphaL = INITVALUE; CCTK_REAL At11L = INITVALUE, At12L = INITVALUE, At13L = INITVALUE, At22L = INITVALUE, At23L = INITVALUE, At33L = INITVALUE; - CCTK_REAL B1L = INITVALUE, B2L = INITVALUE, B3L = INITVALUE; CCTK_REAL beta1L = INITVALUE, beta2L = INITVALUE, beta3L = INITVALUE; CCTK_REAL betaxL = INITVALUE; CCTK_REAL betayL = INITVALUE; CCTK_REAL betazL = INITVALUE; - CCTK_REAL dtalpL = INITVALUE; - CCTK_REAL dtbetaxL = INITVALUE; - CCTK_REAL dtbetayL = INITVALUE; - CCTK_REAL dtbetazL = INITVALUE; CCTK_REAL gt11L = INITVALUE, gt12L = INITVALUE, gt13L = INITVALUE, gt22L = INITVALUE, gt23L = INITVALUE, gt33L = INITVALUE; CCTK_REAL gxxL = INITVALUE; CCTK_REAL gxyL = INITVALUE; @@ -140,7 +133,6 @@ void ML_BSSN_M_convertToADMBase_Body(cGH const * const cctkGH, CCTK_INT const di /* Declare derivatives */ /* Assign local copies of grid functions */ - AL = A[index]; alphaL = alpha[index]; At11L = At11[index]; At12L = At12[index]; @@ -148,9 +140,6 @@ void ML_BSSN_M_convertToADMBase_Body(cGH const * const cctkGH, CCTK_INT const di At22L = At22[index]; At23L = At23[index]; At33L = At33[index]; - B1L = B1[index]; - B2L = B2[index]; - B3L = B3[index]; beta1L = beta1[index]; beta2L = beta2[index]; beta3L = beta3[index]; @@ -172,12 +161,6 @@ void ML_BSSN_M_convertToADMBase_Body(cGH const * const cctkGH, CCTK_INT const di /* Precompute derivatives (old style) */ /* Calculate temporaries and grid functions */ - dir1 = Sign(beta1L); - - dir2 = Sign(beta2L); - - dir3 = Sign(beta3L); - e4phi = IfThen(conformalMethod,pow(phiL,-2),exp(4*phiL)); g11 = e4phi*gt11L; @@ -236,29 +219,12 @@ void ML_BSSN_M_convertToADMBase_Body(cGH const * const cctkGH, CCTK_INT const di betazL = beta3L; - dtalpL = (PDupwindNth1(alpha, i, j, k)*beta1L + PDupwindNth2(alpha, i, j, k)*beta2L + - PDupwindNth3(alpha, i, j, k)*beta3L)*LapseAdvectionCoeff + - harmonicF*(AL*(-1 + LapseAdvectionCoeff) - LapseAdvectionCoeff*trKL)*pow(alphaL,harmonicN); - - dtbetaxL = (PDupwindNth1(beta1, i, j, k)*beta1L + PDupwindNth2(beta1, i, j, k)*beta2L + - PDupwindNth3(beta1, i, j, k)*beta3L)*ShiftAdvectionCoeff + B1L*ShiftGammaCoeff; - - dtbetayL = (PDupwindNth1(beta2, i, j, k)*beta1L + PDupwindNth2(beta2, i, j, k)*beta2L + - PDupwindNth3(beta2, i, j, k)*beta3L)*ShiftAdvectionCoeff + B2L*ShiftGammaCoeff; - - dtbetazL = (PDupwindNth1(beta3, i, j, k)*beta1L + PDupwindNth2(beta3, i, j, k)*beta2L + - PDupwindNth3(beta3, i, j, k)*beta3L)*ShiftAdvectionCoeff + B3L*ShiftGammaCoeff; - /* Copy local copies back to grid functions */ alp[index] = alpL; betax[index] = betaxL; betay[index] = betayL; betaz[index] = betazL; - dtalp[index] = dtalpL; - dtbetax[index] = dtbetaxL; - dtbetay[index] = dtbetayL; - dtbetaz[index] = dtbetazL; gxx[index] = gxxL; gxy[index] = gxyL; gxz[index] = gxzL; @@ -282,5 +248,5 @@ void ML_BSSN_M_convertToADMBase(CCTK_ARGUMENTS) DECLARE_CCTK_ARGUMENTS; DECLARE_CCTK_PARAMETERS; - GenericFD_LoopOverInterior(cctkGH, &ML_BSSN_M_convertToADMBase_Body); + GenericFD_LoopOverEverything(cctkGH, &ML_BSSN_M_convertToADMBase_Body); } diff --git a/ML_BSSN_M/src/ML_BSSN_M_convertToADMBaseDtLapseShift.c b/ML_BSSN_M/src/ML_BSSN_M_convertToADMBaseDtLapseShift.c new file mode 100644 index 0000000..cfa17ba --- /dev/null +++ b/ML_BSSN_M/src/ML_BSSN_M_convertToADMBaseDtLapseShift.c @@ -0,0 +1,177 @@ +/* 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 ML_BSSN_M_convertToADMBaseDtLapseShift_Body(cGH const * const cctkGH, CCTK_INT const dir, CCTK_INT const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], CCTK_INT const min[3], CCTK_INT const max[3], CCTK_INT const n_subblock_gfs, CCTK_REAL * const subblock_gfs[]) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + + /* Declare finite differencing variables */ + CCTK_REAL dx = INITVALUE, dy = INITVALUE, dz = INITVALUE; + CCTK_REAL dxi = INITVALUE, dyi = INITVALUE, dzi = INITVALUE; + CCTK_REAL khalf = INITVALUE, kthird = INITVALUE, ktwothird = INITVALUE, kfourthird = INITVALUE, keightthird = INITVALUE; + CCTK_REAL hdxi = INITVALUE, hdyi = INITVALUE, hdzi = INITVALUE; + + + /* Declare predefined quantities */ + CCTK_REAL p1o12dx = INITVALUE; + CCTK_REAL p1o12dy = INITVALUE; + CCTK_REAL p1o12dz = INITVALUE; + CCTK_REAL p1o144dxdy = INITVALUE; + CCTK_REAL p1o144dxdz = INITVALUE; + CCTK_REAL p1o144dydz = INITVALUE; + CCTK_REAL p1odx = INITVALUE; + CCTK_REAL p1ody = INITVALUE; + CCTK_REAL p1odz = INITVALUE; + CCTK_REAL pm1o12dx2 = INITVALUE; + CCTK_REAL pm1o12dy2 = INITVALUE; + CCTK_REAL pm1o12dz2 = INITVALUE; + + if (verbose > 1) + { + CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_M_convertToADMBaseDtLapseShift_Body"); + } + + if (cctk_iteration % ML_BSSN_M_convertToADMBaseDtLapseShift_calc_every != ML_BSSN_M_convertToADMBaseDtLapseShift_calc_offset) + { + return; + } + + /* Include user-supplied include files */ + + /* Initialise finite differencing variables */ + dx = CCTK_DELTA_SPACE(0); + dy = CCTK_DELTA_SPACE(1); + dz = CCTK_DELTA_SPACE(2); + dxi = 1.0 / dx; + dyi = 1.0 / dy; + dzi = 1.0 / dz; + khalf = 0.5; + kthird = 1/3.0; + ktwothird = 2.0/3.0; + kfourthird = 4.0/3.0; + keightthird = 8.0/3.0; + hdxi = 0.5 * dxi; + hdyi = 0.5 * dyi; + hdzi = 0.5 * dzi; + + /* Initialize predefined quantities */ + p1o12dx = INV(dx)/12.; + p1o12dy = INV(dy)/12.; + p1o12dz = INV(dz)/12.; + p1o144dxdy = (INV(dx)*INV(dy))/144.; + p1o144dxdz = (INV(dx)*INV(dz))/144.; + p1o144dydz = (INV(dy)*INV(dz))/144.; + p1odx = INV(dx); + p1ody = INV(dy); + p1odz = INV(dz); + pm1o12dx2 = -pow(dx,-2)/12.; + pm1o12dy2 = -pow(dy,-2)/12.; + pm1o12dz2 = -pow(dz,-2)/12.; + + /* Loop over the grid points */ + #pragma omp parallel + LC_LOOP3 (ML_BSSN_M_convertToADMBaseDtLapseShift, + i,j,k, min[0],min[1],min[2], max[0],max[1],max[2], + cctk_lsh[0],cctk_lsh[1],cctk_lsh[2]) + { + int index = INITVALUE; + int subblock_index = INITVALUE; + index = CCTK_GFINDEX3D(cctkGH,i,j,k); + subblock_index = i - min[0] + (max[0] - min[0]) * (j - min[1] + (max[1]-min[1]) * (k - min[2])); + + /* Declare shorthands */ + CCTK_REAL dir1 = INITVALUE, dir2 = INITVALUE, dir3 = INITVALUE; + + /* Declare local copies of grid functions */ + CCTK_REAL AL = INITVALUE; + CCTK_REAL alphaL = INITVALUE; + CCTK_REAL B1L = INITVALUE, B2L = INITVALUE, B3L = INITVALUE; + CCTK_REAL beta1L = INITVALUE, beta2L = INITVALUE, beta3L = INITVALUE; + CCTK_REAL dtalpL = INITVALUE; + CCTK_REAL dtbetaxL = INITVALUE; + CCTK_REAL dtbetayL = INITVALUE; + CCTK_REAL dtbetazL = INITVALUE; + CCTK_REAL trKL = INITVALUE; + /* Declare precomputed derivatives*/ + + /* Declare derivatives */ + + /* Assign local copies of grid functions */ + AL = A[index]; + alphaL = alpha[index]; + B1L = B1[index]; + B2L = B2[index]; + B3L = B3[index]; + beta1L = beta1[index]; + beta2L = beta2[index]; + beta3L = beta3[index]; + trKL = trK[index]; + + /* Assign local copies of subblock grid functions */ + + /* Include user supplied include files */ + + /* Precompute derivatives (new style) */ + + /* Precompute derivatives (old style) */ + + /* Calculate temporaries and grid functions */ + dir1 = Sign(beta1L); + + dir2 = Sign(beta2L); + + dir3 = Sign(beta3L); + + dtalpL = (PDupwindNth1(alpha, i, j, k)*beta1L + PDupwindNth2(alpha, i, j, k)*beta2L + + PDupwindNth3(alpha, i, j, k)*beta3L)*LapseAdvectionCoeff + + harmonicF*(AL*(-1 + LapseAdvectionCoeff) - LapseAdvectionCoeff*trKL)*pow(alphaL,harmonicN); + + dtbetaxL = (PDupwindNth1(beta1, i, j, k)*beta1L + PDupwindNth2(beta1, i, j, k)*beta2L + + PDupwindNth3(beta1, i, j, k)*beta3L)*ShiftAdvectionCoeff + B1L*ShiftGammaCoeff; + + dtbetayL = (PDupwindNth1(beta2, i, j, k)*beta1L + PDupwindNth2(beta2, i, j, k)*beta2L + + PDupwindNth3(beta2, i, j, k)*beta3L)*ShiftAdvectionCoeff + B2L*ShiftGammaCoeff; + + dtbetazL = (PDupwindNth1(beta3, i, j, k)*beta1L + PDupwindNth2(beta3, i, j, k)*beta2L + + PDupwindNth3(beta3, i, j, k)*beta3L)*ShiftAdvectionCoeff + B3L*ShiftGammaCoeff; + + + /* Copy local copies back to grid functions */ + dtalp[index] = dtalpL; + dtbetax[index] = dtbetaxL; + dtbetay[index] = dtbetayL; + dtbetaz[index] = dtbetazL; + + /* Copy local copies back to subblock grid functions */ + } + LC_ENDLOOP3 (ML_BSSN_M_convertToADMBaseDtLapseShift); +} + +void ML_BSSN_M_convertToADMBaseDtLapseShift(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + GenericFD_LoopOverInterior(cctkGH, &ML_BSSN_M_convertToADMBaseDtLapseShift_Body); +} diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_ADMBaseBoundary.c b/ML_BSSN_M/src/ML_BSSN_M_convertToADMBaseDtLapseShiftBoundary.c index 3a28dce..4b4baa4 100644 --- a/ML_BSSN_MP/src/ML_BSSN_MP_ADMBaseBoundary.c +++ b/ML_BSSN_M/src/ML_BSSN_M_convertToADMBaseDtLapseShiftBoundary.c @@ -20,7 +20,7 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((x) * (x) * (x) * (x)) -void ML_BSSN_MP_ADMBaseBoundary_Body(cGH const * const cctkGH, CCTK_INT const dir, CCTK_INT const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], CCTK_INT const min[3], CCTK_INT const max[3], CCTK_INT const n_subblock_gfs, CCTK_REAL * const subblock_gfs[]) +void ML_BSSN_M_convertToADMBaseDtLapseShiftBoundary_Body(cGH const * const cctkGH, CCTK_INT const dir, CCTK_INT const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], CCTK_INT const min[3], CCTK_INT const max[3], CCTK_INT const n_subblock_gfs, CCTK_REAL * const subblock_gfs[]) { DECLARE_CCTK_ARGUMENTS; DECLARE_CCTK_PARAMETERS; @@ -49,10 +49,10 @@ void ML_BSSN_MP_ADMBaseBoundary_Body(cGH const * const cctkGH, CCTK_INT const di if (verbose > 1) { - CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_ADMBaseBoundary_Body"); + CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_M_convertToADMBaseDtLapseShiftBoundary_Body"); } - if (cctk_iteration % ML_BSSN_MP_ADMBaseBoundary_calc_every != ML_BSSN_MP_ADMBaseBoundary_calc_offset) + if (cctk_iteration % ML_BSSN_M_convertToADMBaseDtLapseShiftBoundary_calc_every != ML_BSSN_M_convertToADMBaseDtLapseShiftBoundary_calc_offset) { return; } @@ -91,7 +91,7 @@ void ML_BSSN_MP_ADMBaseBoundary_Body(cGH const * const cctkGH, CCTK_INT const di /* Loop over the grid points */ #pragma omp parallel - LC_LOOP3 (ML_BSSN_MP_ADMBaseBoundary, + LC_LOOP3 (ML_BSSN_M_convertToADMBaseDtLapseShiftBoundary, i,j,k, min[0],min[1],min[2], max[0],max[1],max[2], cctk_lsh[0],cctk_lsh[1],cctk_lsh[2]) { @@ -101,38 +101,15 @@ void ML_BSSN_MP_ADMBaseBoundary_Body(cGH const * const cctkGH, CCTK_INT const di subblock_index = i - min[0] + (max[0] - min[0]) * (j - min[1] + (max[1]-min[1]) * (k - min[2])); /* Declare shorthands */ - CCTK_REAL e4phi = INITVALUE; - CCTK_REAL g11 = INITVALUE, g12 = INITVALUE, g13 = INITVALUE, g22 = INITVALUE, g23 = INITVALUE, g33 = INITVALUE; - CCTK_REAL K11 = INITVALUE, K12 = INITVALUE, K13 = INITVALUE, K22 = INITVALUE, K23 = INITVALUE, K33 = INITVALUE; /* Declare local copies of grid functions */ CCTK_REAL AL = INITVALUE; - CCTK_REAL alpL = INITVALUE; CCTK_REAL alphaL = INITVALUE; - CCTK_REAL At11L = INITVALUE, At12L = INITVALUE, At13L = INITVALUE, At22L = INITVALUE, At23L = INITVALUE, At33L = INITVALUE; CCTK_REAL B1L = INITVALUE, B2L = INITVALUE, B3L = INITVALUE; - CCTK_REAL beta1L = INITVALUE, beta2L = INITVALUE, beta3L = INITVALUE; - CCTK_REAL betaxL = INITVALUE; - CCTK_REAL betayL = INITVALUE; - CCTK_REAL betazL = INITVALUE; CCTK_REAL dtalpL = INITVALUE; CCTK_REAL dtbetaxL = INITVALUE; CCTK_REAL dtbetayL = INITVALUE; CCTK_REAL dtbetazL = INITVALUE; - CCTK_REAL gt11L = INITVALUE, gt12L = INITVALUE, gt13L = INITVALUE, gt22L = INITVALUE, gt23L = INITVALUE, gt33L = INITVALUE; - CCTK_REAL gxxL = INITVALUE; - CCTK_REAL gxyL = INITVALUE; - CCTK_REAL gxzL = INITVALUE; - CCTK_REAL gyyL = INITVALUE; - CCTK_REAL gyzL = INITVALUE; - CCTK_REAL gzzL = INITVALUE; - CCTK_REAL kxxL = INITVALUE; - CCTK_REAL kxyL = INITVALUE; - CCTK_REAL kxzL = INITVALUE; - CCTK_REAL kyyL = INITVALUE; - CCTK_REAL kyzL = INITVALUE; - CCTK_REAL kzzL = INITVALUE; - CCTK_REAL phiL = INITVALUE; CCTK_REAL trKL = INITVALUE; /* Declare precomputed derivatives*/ @@ -141,25 +118,9 @@ void ML_BSSN_MP_ADMBaseBoundary_Body(cGH const * const cctkGH, CCTK_INT const di /* Assign local copies of grid functions */ AL = A[index]; alphaL = alpha[index]; - At11L = At11[index]; - At12L = At12[index]; - At13L = At13[index]; - At22L = At22[index]; - At23L = At23[index]; - At33L = At33[index]; B1L = B1[index]; B2L = B2[index]; B3L = B3[index]; - beta1L = beta1[index]; - beta2L = beta2[index]; - beta3L = beta3[index]; - gt11L = gt11[index]; - gt12L = gt12[index]; - gt13L = gt13[index]; - gt22L = gt22[index]; - gt23L = gt23[index]; - gt33L = gt33[index]; - phiL = phi[index]; trKL = trK[index]; /* Assign local copies of subblock grid functions */ @@ -171,64 +132,6 @@ void ML_BSSN_MP_ADMBaseBoundary_Body(cGH const * const cctkGH, CCTK_INT const di /* Precompute derivatives (old style) */ /* Calculate temporaries and grid functions */ - e4phi = IfThen(conformalMethod,pow(phiL,-2),exp(4*phiL)); - - g11 = e4phi*gt11L; - - g12 = e4phi*gt12L; - - g13 = e4phi*gt13L; - - g22 = e4phi*gt22L; - - g23 = e4phi*gt23L; - - g33 = e4phi*gt33L; - - gxxL = g11; - - gxyL = g12; - - gxzL = g13; - - gyyL = g22; - - gyzL = g23; - - gzzL = g33; - - K11 = At11L*e4phi + g11*kthird*trKL; - - K12 = At12L*e4phi + g12*kthird*trKL; - - K13 = At13L*e4phi + g13*kthird*trKL; - - K22 = At22L*e4phi + g22*kthird*trKL; - - K23 = At23L*e4phi + g23*kthird*trKL; - - K33 = At33L*e4phi + g33*kthird*trKL; - - kxxL = K11; - - kxyL = K12; - - kxzL = K13; - - kyyL = K22; - - kyzL = K23; - - kzzL = K33; - - alpL = alphaL; - - betaxL = beta1L; - - betayL = beta2L; - - betazL = beta3L; - dtalpL = harmonicF*(AL*(-1 + LapseAdvectionCoeff) - LapseAdvectionCoeff*trKL)*pow(alphaL,harmonicN); dtbetaxL = B1L*ShiftGammaCoeff; @@ -239,36 +142,20 @@ void ML_BSSN_MP_ADMBaseBoundary_Body(cGH const * const cctkGH, CCTK_INT const di /* Copy local copies back to grid functions */ - alp[index] = alpL; - betax[index] = betaxL; - betay[index] = betayL; - betaz[index] = betazL; dtalp[index] = dtalpL; dtbetax[index] = dtbetaxL; dtbetay[index] = dtbetayL; dtbetaz[index] = dtbetazL; - gxx[index] = gxxL; - gxy[index] = gxyL; - gxz[index] = gxzL; - gyy[index] = gyyL; - gyz[index] = gyzL; - gzz[index] = gzzL; - kxx[index] = kxxL; - kxy[index] = kxyL; - kxz[index] = kxzL; - kyy[index] = kyyL; - kyz[index] = kyzL; - kzz[index] = kzzL; /* Copy local copies back to subblock grid functions */ } - LC_ENDLOOP3 (ML_BSSN_MP_ADMBaseBoundary); + LC_ENDLOOP3 (ML_BSSN_M_convertToADMBaseDtLapseShiftBoundary); } -void ML_BSSN_MP_ADMBaseBoundary(CCTK_ARGUMENTS) +void ML_BSSN_M_convertToADMBaseDtLapseShiftBoundary(CCTK_ARGUMENTS) { DECLARE_CCTK_ARGUMENTS; DECLARE_CCTK_PARAMETERS; - GenericFD_LoopOverBoundaryWithGhosts(cctkGH, &ML_BSSN_MP_ADMBaseBoundary_Body); + GenericFD_LoopOverBoundaryWithGhosts(cctkGH, &ML_BSSN_M_convertToADMBaseDtLapseShiftBoundary_Body); } diff --git a/ML_BSSN_M/src/ML_BSSN_M_convertToADMBaseFakeDtLapseShift.c b/ML_BSSN_M/src/ML_BSSN_M_convertToADMBaseFakeDtLapseShift.c new file mode 100644 index 0000000..801f696 --- /dev/null +++ b/ML_BSSN_M/src/ML_BSSN_M_convertToADMBaseFakeDtLapseShift.c @@ -0,0 +1,161 @@ +/* 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 ML_BSSN_M_convertToADMBaseFakeDtLapseShift_Body(cGH const * const cctkGH, CCTK_INT const dir, CCTK_INT const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], CCTK_INT const min[3], CCTK_INT const max[3], CCTK_INT const n_subblock_gfs, CCTK_REAL * const subblock_gfs[]) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + + /* Declare finite differencing variables */ + CCTK_REAL dx = INITVALUE, dy = INITVALUE, dz = INITVALUE; + CCTK_REAL dxi = INITVALUE, dyi = INITVALUE, dzi = INITVALUE; + CCTK_REAL khalf = INITVALUE, kthird = INITVALUE, ktwothird = INITVALUE, kfourthird = INITVALUE, keightthird = INITVALUE; + CCTK_REAL hdxi = INITVALUE, hdyi = INITVALUE, hdzi = INITVALUE; + + + /* Declare predefined quantities */ + CCTK_REAL p1o12dx = INITVALUE; + CCTK_REAL p1o12dy = INITVALUE; + CCTK_REAL p1o12dz = INITVALUE; + CCTK_REAL p1o144dxdy = INITVALUE; + CCTK_REAL p1o144dxdz = INITVALUE; + CCTK_REAL p1o144dydz = INITVALUE; + CCTK_REAL p1odx = INITVALUE; + CCTK_REAL p1ody = INITVALUE; + CCTK_REAL p1odz = INITVALUE; + CCTK_REAL pm1o12dx2 = INITVALUE; + CCTK_REAL pm1o12dy2 = INITVALUE; + CCTK_REAL pm1o12dz2 = INITVALUE; + + if (verbose > 1) + { + CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_M_convertToADMBaseFakeDtLapseShift_Body"); + } + + if (cctk_iteration % ML_BSSN_M_convertToADMBaseFakeDtLapseShift_calc_every != ML_BSSN_M_convertToADMBaseFakeDtLapseShift_calc_offset) + { + return; + } + + /* Include user-supplied include files */ + + /* Initialise finite differencing variables */ + dx = CCTK_DELTA_SPACE(0); + dy = CCTK_DELTA_SPACE(1); + dz = CCTK_DELTA_SPACE(2); + dxi = 1.0 / dx; + dyi = 1.0 / dy; + dzi = 1.0 / dz; + khalf = 0.5; + kthird = 1/3.0; + ktwothird = 2.0/3.0; + kfourthird = 4.0/3.0; + keightthird = 8.0/3.0; + hdxi = 0.5 * dxi; + hdyi = 0.5 * dyi; + hdzi = 0.5 * dzi; + + /* Initialize predefined quantities */ + p1o12dx = INV(dx)/12.; + p1o12dy = INV(dy)/12.; + p1o12dz = INV(dz)/12.; + p1o144dxdy = (INV(dx)*INV(dy))/144.; + p1o144dxdz = (INV(dx)*INV(dz))/144.; + p1o144dydz = (INV(dy)*INV(dz))/144.; + p1odx = INV(dx); + p1ody = INV(dy); + p1odz = INV(dz); + pm1o12dx2 = -pow(dx,-2)/12.; + pm1o12dy2 = -pow(dy,-2)/12.; + pm1o12dz2 = -pow(dz,-2)/12.; + + /* Loop over the grid points */ + #pragma omp parallel + LC_LOOP3 (ML_BSSN_M_convertToADMBaseFakeDtLapseShift, + i,j,k, min[0],min[1],min[2], max[0],max[1],max[2], + cctk_lsh[0],cctk_lsh[1],cctk_lsh[2]) + { + int index = INITVALUE; + int subblock_index = INITVALUE; + index = CCTK_GFINDEX3D(cctkGH,i,j,k); + subblock_index = i - min[0] + (max[0] - min[0]) * (j - min[1] + (max[1]-min[1]) * (k - min[2])); + + /* Declare shorthands */ + + /* Declare local copies of grid functions */ + CCTK_REAL AL = INITVALUE; + CCTK_REAL alphaL = INITVALUE; + CCTK_REAL B1L = INITVALUE, B2L = INITVALUE, B3L = INITVALUE; + CCTK_REAL dtalpL = INITVALUE; + CCTK_REAL dtbetaxL = INITVALUE; + CCTK_REAL dtbetayL = INITVALUE; + CCTK_REAL dtbetazL = INITVALUE; + CCTK_REAL trKL = INITVALUE; + /* Declare precomputed derivatives*/ + + /* Declare derivatives */ + + /* Assign local copies of grid functions */ + AL = A[index]; + alphaL = alpha[index]; + B1L = B1[index]; + B2L = B2[index]; + B3L = B3[index]; + trKL = trK[index]; + + /* Assign local copies of subblock grid functions */ + + /* Include user supplied include files */ + + /* Precompute derivatives (new style) */ + + /* Precompute derivatives (old style) */ + + /* Calculate temporaries and grid functions */ + dtalpL = harmonicF*(AL*(-1 + LapseAdvectionCoeff) - LapseAdvectionCoeff*trKL)*pow(alphaL,harmonicN); + + dtbetaxL = B1L*ShiftGammaCoeff; + + dtbetayL = B2L*ShiftGammaCoeff; + + dtbetazL = B3L*ShiftGammaCoeff; + + + /* Copy local copies back to grid functions */ + dtalp[index] = dtalpL; + dtbetax[index] = dtbetaxL; + dtbetay[index] = dtbetayL; + dtbetaz[index] = dtbetazL; + + /* Copy local copies back to subblock grid functions */ + } + LC_ENDLOOP3 (ML_BSSN_M_convertToADMBaseFakeDtLapseShift); +} + +void ML_BSSN_M_convertToADMBaseFakeDtLapseShift(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + GenericFD_LoopOverEverything(cctkGH, &ML_BSSN_M_convertToADMBaseFakeDtLapseShift_Body); +} diff --git a/ML_BSSN_M/src/make.code.defn b/ML_BSSN_M/src/make.code.defn index 058860e..3989c4c 100644 --- a/ML_BSSN_M/src/make.code.defn +++ b/ML_BSSN_M/src/make.code.defn @@ -1,3 +1,3 @@ # File produced by Kranc -SRCS = Startup.c RegisterMoL.c RegisterSymmetries.c ML_BSSN_M_Minkowski.c ML_BSSN_M_convertFromADMBase.c ML_BSSN_M_convertFromADMBaseGamma.c ML_BSSN_M_RHS.c ML_BSSN_M_RHSStaticBoundary.c ML_BSSN_M_RHSRadiativeBoundary.c ML_BSSN_M_enforce.c ML_BSSN_M_boundary.c ML_BSSN_M_convertToADMBase.c ML_BSSN_M_ADMBaseBoundary.c ML_BSSN_M_constraints.c ML_BSSN_M_constraints_boundary.c Boundaries.c +SRCS = Startup.c RegisterMoL.c RegisterSymmetries.c ML_BSSN_M_Minkowski.c ML_BSSN_M_convertFromADMBase.c ML_BSSN_M_convertFromADMBaseGamma.c ML_BSSN_M_RHS.c ML_BSSN_M_RHSStaticBoundary.c ML_BSSN_M_RHSRadiativeBoundary.c ML_BSSN_M_enforce.c ML_BSSN_M_boundary.c ML_BSSN_M_convertToADMBase.c ML_BSSN_M_convertToADMBaseDtLapseShift.c ML_BSSN_M_convertToADMBaseDtLapseShiftBoundary.c ML_BSSN_M_convertToADMBaseFakeDtLapseShift.c ML_BSSN_M_constraints.c ML_BSSN_M_constraints_boundary.c Boundaries.c diff --git a/ML_BSSN_MP/param.ccl b/ML_BSSN_MP/param.ccl index a7bc380..e006904 100644 --- a/ML_BSSN_MP/param.ccl +++ b/ML_BSSN_MP/param.ccl @@ -156,6 +156,13 @@ KEYWORD calculate_ADMBase_variables_at "calculate_ADMBase_variables_at" "CCTK_ANALYSIS" :: "CCTK_ANALYSIS" } "MoL_PostStep" +private: +KEYWORD dt_lapse_shift_method "Treatment of ADMBase dtlapse and dtshift" +{ + "correct" :: "correct" + "noLapseShiftAdvection" :: "noLapseShiftAdvection" +} "correct" + restricted: CCTK_INT ML_BSSN_MP_MaxNumEvolvedVars "Number of evolved variables used by this thorn" ACCUMULATOR-BASE=MethodofLines::MoL_Num_Evolved_Vars { @@ -229,7 +236,19 @@ CCTK_INT ML_BSSN_MP_convertToADMBase_calc_every "ML_BSSN_MP_convertToADMBase_cal } 1 restricted: -CCTK_INT ML_BSSN_MP_ADMBaseBoundary_calc_every "ML_BSSN_MP_ADMBaseBoundary_calc_every" +CCTK_INT ML_BSSN_MP_convertToADMBaseDtLapseShift_calc_every "ML_BSSN_MP_convertToADMBaseDtLapseShift_calc_every" +{ + *:* :: "" +} 1 + +restricted: +CCTK_INT ML_BSSN_MP_convertToADMBaseDtLapseShiftBoundary_calc_every "ML_BSSN_MP_convertToADMBaseDtLapseShiftBoundary_calc_every" +{ + *:* :: "" +} 1 + +restricted: +CCTK_INT ML_BSSN_MP_convertToADMBaseFakeDtLapseShift_calc_every "ML_BSSN_MP_convertToADMBaseFakeDtLapseShift_calc_every" { *:* :: "" } 1 @@ -301,7 +320,19 @@ CCTK_INT ML_BSSN_MP_convertToADMBase_calc_offset "ML_BSSN_MP_convertToADMBase_ca } 0 restricted: -CCTK_INT ML_BSSN_MP_ADMBaseBoundary_calc_offset "ML_BSSN_MP_ADMBaseBoundary_calc_offset" +CCTK_INT ML_BSSN_MP_convertToADMBaseDtLapseShift_calc_offset "ML_BSSN_MP_convertToADMBaseDtLapseShift_calc_offset" +{ + *:* :: "" +} 0 + +restricted: +CCTK_INT ML_BSSN_MP_convertToADMBaseDtLapseShiftBoundary_calc_offset "ML_BSSN_MP_convertToADMBaseDtLapseShiftBoundary_calc_offset" +{ + *:* :: "" +} 0 + +restricted: +CCTK_INT ML_BSSN_MP_convertToADMBaseFakeDtLapseShift_calc_offset "ML_BSSN_MP_convertToADMBaseFakeDtLapseShift_calc_offset" { *:* :: "" } 0 diff --git a/ML_BSSN_MP/schedule.ccl b/ML_BSSN_MP/schedule.ccl index ea6c4bb..0624678 100644 --- a/ML_BSSN_MP/schedule.ccl +++ b/ML_BSSN_MP/schedule.ccl @@ -368,15 +368,6 @@ if (CCTK_EQUALS(my_initial_data, "ADMBase")) schedule ML_BSSN_MP_RHS IN ML_BSSN_MP_evolCalcGroup { LANG: C - SYNC: ML_curvrhs - SYNC: ML_dtlapserhs - SYNC: ML_dtshiftrhs - SYNC: ML_Gammarhs - SYNC: ML_lapserhs - SYNC: ML_log_confacrhs - SYNC: ML_metricrhs - SYNC: ML_shiftrhs - SYNC: ML_trace_curvrhs } "ML_BSSN_MP_RHS" @@ -414,18 +405,36 @@ if (CCTK_EQUALS(my_boundary_condition, "Minkowski")) schedule ML_BSSN_MP_convertToADMBase IN ML_BSSN_MP_convertToADMBaseGroup { LANG: C - SYNC: ADMBase::curv - SYNC: ADMBase::dtlapse - SYNC: ADMBase::dtshift - SYNC: ADMBase::lapse - SYNC: ADMBase::metric - SYNC: ADMBase::shift } "ML_BSSN_MP_convertToADMBase" -schedule ML_BSSN_MP_ADMBaseBoundary IN ML_BSSN_MP_convertToADMBaseGroup AFTER ML_BSSN_MP_convertToADMBase + +if (CCTK_EQUALS(dt_lapse_shift_method, "correct")) { - LANG: C -} "ML_BSSN_MP_ADMBaseBoundary" + schedule ML_BSSN_MP_convertToADMBaseDtLapseShift IN ML_BSSN_MP_convertToADMBaseGroup + { + LANG: C + SYNC: ADMBase::dtlapse + SYNC: ADMBase::dtshift + } "ML_BSSN_MP_convertToADMBaseDtLapseShift" +} + + +if (CCTK_EQUALS(dt_lapse_shift_method, "correct")) +{ + schedule ML_BSSN_MP_convertToADMBaseDtLapseShiftBoundary IN ML_BSSN_MP_convertToADMBaseGroup + { + LANG: C + } "ML_BSSN_MP_convertToADMBaseDtLapseShiftBoundary" +} + + +if (CCTK_EQUALS(dt_lapse_shift_method, "noLapseShiftAdvection")) +{ + schedule ML_BSSN_MP_convertToADMBaseFakeDtLapseShift IN ML_BSSN_MP_convertToADMBaseGroup + { + LANG: C + } "ML_BSSN_MP_convertToADMBaseFakeDtLapseShift" +} schedule ML_BSSN_MP_constraints IN ML_BSSN_MP_constraintsCalcGroup { diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBase.c b/ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBase.c index 5faa1d7..2ed4725 100644 --- a/ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBase.c +++ b/ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBase.c @@ -101,25 +101,18 @@ void ML_BSSN_MP_convertToADMBase_Body(cGH const * const cctkGH, CCTK_INT const d subblock_index = i - min[0] + (max[0] - min[0]) * (j - min[1] + (max[1]-min[1]) * (k - min[2])); /* Declare shorthands */ - CCTK_REAL dir1 = INITVALUE, dir2 = INITVALUE, dir3 = INITVALUE; CCTK_REAL e4phi = INITVALUE; CCTK_REAL g11 = INITVALUE, g12 = INITVALUE, g13 = INITVALUE, g22 = INITVALUE, g23 = INITVALUE, g33 = INITVALUE; CCTK_REAL K11 = INITVALUE, K12 = INITVALUE, K13 = INITVALUE, K22 = INITVALUE, K23 = INITVALUE, K33 = INITVALUE; /* Declare local copies of grid functions */ - CCTK_REAL AL = INITVALUE; CCTK_REAL alpL = INITVALUE; CCTK_REAL alphaL = INITVALUE; CCTK_REAL At11L = INITVALUE, At12L = INITVALUE, At13L = INITVALUE, At22L = INITVALUE, At23L = INITVALUE, At33L = INITVALUE; - CCTK_REAL B1L = INITVALUE, B2L = INITVALUE, B3L = INITVALUE; CCTK_REAL beta1L = INITVALUE, beta2L = INITVALUE, beta3L = INITVALUE; CCTK_REAL betaxL = INITVALUE; CCTK_REAL betayL = INITVALUE; CCTK_REAL betazL = INITVALUE; - CCTK_REAL dtalpL = INITVALUE; - CCTK_REAL dtbetaxL = INITVALUE; - CCTK_REAL dtbetayL = INITVALUE; - CCTK_REAL dtbetazL = INITVALUE; CCTK_REAL gt11L = INITVALUE, gt12L = INITVALUE, gt13L = INITVALUE, gt22L = INITVALUE, gt23L = INITVALUE, gt33L = INITVALUE; CCTK_REAL gxxL = INITVALUE; CCTK_REAL gxyL = INITVALUE; @@ -127,8 +120,6 @@ void ML_BSSN_MP_convertToADMBase_Body(cGH const * const cctkGH, CCTK_INT const d CCTK_REAL gyyL = INITVALUE; CCTK_REAL gyzL = INITVALUE; CCTK_REAL gzzL = INITVALUE; - CCTK_REAL J11L = INITVALUE, J12L = INITVALUE, J13L = INITVALUE, J21L = INITVALUE, J22L = INITVALUE, J23L = INITVALUE; - CCTK_REAL J31L = INITVALUE, J32L = INITVALUE, J33L = INITVALUE; CCTK_REAL kxxL = INITVALUE; CCTK_REAL kxyL = INITVALUE; CCTK_REAL kxzL = INITVALUE; @@ -142,7 +133,6 @@ void ML_BSSN_MP_convertToADMBase_Body(cGH const * const cctkGH, CCTK_INT const d /* Declare derivatives */ /* Assign local copies of grid functions */ - AL = A[index]; alphaL = alpha[index]; At11L = At11[index]; At12L = At12[index]; @@ -150,9 +140,6 @@ void ML_BSSN_MP_convertToADMBase_Body(cGH const * const cctkGH, CCTK_INT const d At22L = At22[index]; At23L = At23[index]; At33L = At33[index]; - B1L = B1[index]; - B2L = B2[index]; - B3L = B3[index]; beta1L = beta1[index]; beta2L = beta2[index]; beta3L = beta3[index]; @@ -162,15 +149,6 @@ void ML_BSSN_MP_convertToADMBase_Body(cGH const * const cctkGH, CCTK_INT const d gt22L = gt22[index]; gt23L = gt23[index]; gt33L = gt33[index]; - J11L = J11[index]; - J12L = J12[index]; - J13L = J13[index]; - J21L = J21[index]; - J22L = J22[index]; - J23L = J23[index]; - J31L = J31[index]; - J32L = J32[index]; - J33L = J33[index]; phiL = phi[index]; trKL = trK[index]; @@ -183,12 +161,6 @@ void ML_BSSN_MP_convertToADMBase_Body(cGH const * const cctkGH, CCTK_INT const d /* Precompute derivatives (old style) */ /* Calculate temporaries and grid functions */ - dir1 = Sign(beta1L); - - dir2 = Sign(beta2L); - - dir3 = Sign(beta3L); - e4phi = IfThen(conformalMethod,pow(phiL,-2),exp(4*phiL)); g11 = e4phi*gt11L; @@ -247,36 +219,12 @@ void ML_BSSN_MP_convertToADMBase_Body(cGH const * const cctkGH, CCTK_INT const d betazL = beta3L; - dtalpL = (PDupwindNth1(alpha, i, j, k)*(beta1L*J11L + beta2L*J12L + beta3L*J13L) + - PDupwindNth2(alpha, i, j, k)*(beta1L*J21L + beta2L*J22L + beta3L*J23L) + - PDupwindNth3(alpha, i, j, k)*(beta1L*J31L + beta2L*J32L + beta3L*J33L))*LapseAdvectionCoeff + - harmonicF*(AL*(-1 + LapseAdvectionCoeff) - LapseAdvectionCoeff*trKL)*pow(alphaL,harmonicN); - - dtbetaxL = (PDupwindNth1(beta1, i, j, k)*(beta1L*J11L + beta2L*J12L + beta3L*J13L) + - PDupwindNth2(beta1, i, j, k)*(beta1L*J21L + beta2L*J22L + beta3L*J23L) + - PDupwindNth3(beta1, i, j, k)*(beta1L*J31L + beta2L*J32L + beta3L*J33L))*ShiftAdvectionCoeff + - B1L*ShiftGammaCoeff; - - dtbetayL = (PDupwindNth1(beta2, i, j, k)*(beta1L*J11L + beta2L*J12L + beta3L*J13L) + - PDupwindNth2(beta2, i, j, k)*(beta1L*J21L + beta2L*J22L + beta3L*J23L) + - PDupwindNth3(beta2, i, j, k)*(beta1L*J31L + beta2L*J32L + beta3L*J33L))*ShiftAdvectionCoeff + - B2L*ShiftGammaCoeff; - - dtbetazL = (PDupwindNth1(beta3, i, j, k)*(beta1L*J11L + beta2L*J12L + beta3L*J13L) + - PDupwindNth2(beta3, i, j, k)*(beta1L*J21L + beta2L*J22L + beta3L*J23L) + - PDupwindNth3(beta3, i, j, k)*(beta1L*J31L + beta2L*J32L + beta3L*J33L))*ShiftAdvectionCoeff + - B3L*ShiftGammaCoeff; - /* Copy local copies back to grid functions */ alp[index] = alpL; betax[index] = betaxL; betay[index] = betayL; betaz[index] = betazL; - dtalp[index] = dtalpL; - dtbetax[index] = dtbetaxL; - dtbetay[index] = dtbetayL; - dtbetaz[index] = dtbetazL; gxx[index] = gxxL; gxy[index] = gxyL; gxz[index] = gxzL; @@ -300,5 +248,5 @@ void ML_BSSN_MP_convertToADMBase(CCTK_ARGUMENTS) DECLARE_CCTK_ARGUMENTS; DECLARE_CCTK_PARAMETERS; - GenericFD_LoopOverInterior(cctkGH, &ML_BSSN_MP_convertToADMBase_Body); + GenericFD_LoopOverEverything(cctkGH, &ML_BSSN_MP_convertToADMBase_Body); } diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBaseDtLapseShift.c b/ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBaseDtLapseShift.c new file mode 100644 index 0000000..c749f46 --- /dev/null +++ b/ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBaseDtLapseShift.c @@ -0,0 +1,195 @@ +/* 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 ML_BSSN_MP_convertToADMBaseDtLapseShift_Body(cGH const * const cctkGH, CCTK_INT const dir, CCTK_INT const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], CCTK_INT const min[3], CCTK_INT const max[3], CCTK_INT const n_subblock_gfs, CCTK_REAL * const subblock_gfs[]) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + + /* Declare finite differencing variables */ + CCTK_REAL dx = INITVALUE, dy = INITVALUE, dz = INITVALUE; + CCTK_REAL dxi = INITVALUE, dyi = INITVALUE, dzi = INITVALUE; + CCTK_REAL khalf = INITVALUE, kthird = INITVALUE, ktwothird = INITVALUE, kfourthird = INITVALUE, keightthird = INITVALUE; + CCTK_REAL hdxi = INITVALUE, hdyi = INITVALUE, hdzi = INITVALUE; + + + /* Declare predefined quantities */ + CCTK_REAL p1o12dx = INITVALUE; + CCTK_REAL p1o12dy = INITVALUE; + CCTK_REAL p1o12dz = INITVALUE; + CCTK_REAL p1o144dxdy = INITVALUE; + CCTK_REAL p1o144dxdz = INITVALUE; + CCTK_REAL p1o144dydz = INITVALUE; + CCTK_REAL p1odx = INITVALUE; + CCTK_REAL p1ody = INITVALUE; + CCTK_REAL p1odz = INITVALUE; + CCTK_REAL pm1o12dx2 = INITVALUE; + CCTK_REAL pm1o12dy2 = INITVALUE; + CCTK_REAL pm1o12dz2 = INITVALUE; + + if (verbose > 1) + { + CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_convertToADMBaseDtLapseShift_Body"); + } + + if (cctk_iteration % ML_BSSN_MP_convertToADMBaseDtLapseShift_calc_every != ML_BSSN_MP_convertToADMBaseDtLapseShift_calc_offset) + { + return; + } + + /* Include user-supplied include files */ + + /* Initialise finite differencing variables */ + dx = CCTK_DELTA_SPACE(0); + dy = CCTK_DELTA_SPACE(1); + dz = CCTK_DELTA_SPACE(2); + dxi = 1.0 / dx; + dyi = 1.0 / dy; + dzi = 1.0 / dz; + khalf = 0.5; + kthird = 1/3.0; + ktwothird = 2.0/3.0; + kfourthird = 4.0/3.0; + keightthird = 8.0/3.0; + hdxi = 0.5 * dxi; + hdyi = 0.5 * dyi; + hdzi = 0.5 * dzi; + + /* Initialize predefined quantities */ + p1o12dx = INV(dx)/12.; + p1o12dy = INV(dy)/12.; + p1o12dz = INV(dz)/12.; + p1o144dxdy = (INV(dx)*INV(dy))/144.; + p1o144dxdz = (INV(dx)*INV(dz))/144.; + p1o144dydz = (INV(dy)*INV(dz))/144.; + p1odx = INV(dx); + p1ody = INV(dy); + p1odz = INV(dz); + pm1o12dx2 = -pow(dx,-2)/12.; + pm1o12dy2 = -pow(dy,-2)/12.; + pm1o12dz2 = -pow(dz,-2)/12.; + + /* Loop over the grid points */ + #pragma omp parallel + LC_LOOP3 (ML_BSSN_MP_convertToADMBaseDtLapseShift, + i,j,k, min[0],min[1],min[2], max[0],max[1],max[2], + cctk_lsh[0],cctk_lsh[1],cctk_lsh[2]) + { + int index = INITVALUE; + int subblock_index = INITVALUE; + index = CCTK_GFINDEX3D(cctkGH,i,j,k); + subblock_index = i - min[0] + (max[0] - min[0]) * (j - min[1] + (max[1]-min[1]) * (k - min[2])); + + /* Declare shorthands */ + CCTK_REAL dir1 = INITVALUE, dir2 = INITVALUE, dir3 = INITVALUE; + + /* Declare local copies of grid functions */ + CCTK_REAL AL = INITVALUE; + CCTK_REAL alphaL = INITVALUE; + CCTK_REAL B1L = INITVALUE, B2L = INITVALUE, B3L = INITVALUE; + CCTK_REAL beta1L = INITVALUE, beta2L = INITVALUE, beta3L = INITVALUE; + CCTK_REAL dtalpL = INITVALUE; + CCTK_REAL dtbetaxL = INITVALUE; + CCTK_REAL dtbetayL = INITVALUE; + CCTK_REAL dtbetazL = INITVALUE; + CCTK_REAL J11L = INITVALUE, J12L = INITVALUE, J13L = INITVALUE, J21L = INITVALUE, J22L = INITVALUE, J23L = INITVALUE; + CCTK_REAL J31L = INITVALUE, J32L = INITVALUE, J33L = INITVALUE; + CCTK_REAL trKL = INITVALUE; + /* Declare precomputed derivatives*/ + + /* Declare derivatives */ + + /* Assign local copies of grid functions */ + AL = A[index]; + alphaL = alpha[index]; + B1L = B1[index]; + B2L = B2[index]; + B3L = B3[index]; + beta1L = beta1[index]; + beta2L = beta2[index]; + beta3L = beta3[index]; + J11L = J11[index]; + J12L = J12[index]; + J13L = J13[index]; + J21L = J21[index]; + J22L = J22[index]; + J23L = J23[index]; + J31L = J31[index]; + J32L = J32[index]; + J33L = J33[index]; + trKL = trK[index]; + + /* Assign local copies of subblock grid functions */ + + /* Include user supplied include files */ + + /* Precompute derivatives (new style) */ + + /* Precompute derivatives (old style) */ + + /* Calculate temporaries and grid functions */ + dir1 = Sign(beta1L); + + dir2 = Sign(beta2L); + + dir3 = Sign(beta3L); + + dtalpL = (PDupwindNth1(alpha, i, j, k)*(beta1L*J11L + beta2L*J12L + beta3L*J13L) + + PDupwindNth2(alpha, i, j, k)*(beta1L*J21L + beta2L*J22L + beta3L*J23L) + + PDupwindNth3(alpha, i, j, k)*(beta1L*J31L + beta2L*J32L + beta3L*J33L))*LapseAdvectionCoeff + + harmonicF*(AL*(-1 + LapseAdvectionCoeff) - LapseAdvectionCoeff*trKL)*pow(alphaL,harmonicN); + + dtbetaxL = (PDupwindNth1(beta1, i, j, k)*(beta1L*J11L + beta2L*J12L + beta3L*J13L) + + PDupwindNth2(beta1, i, j, k)*(beta1L*J21L + beta2L*J22L + beta3L*J23L) + + PDupwindNth3(beta1, i, j, k)*(beta1L*J31L + beta2L*J32L + beta3L*J33L))*ShiftAdvectionCoeff + + B1L*ShiftGammaCoeff; + + dtbetayL = (PDupwindNth1(beta2, i, j, k)*(beta1L*J11L + beta2L*J12L + beta3L*J13L) + + PDupwindNth2(beta2, i, j, k)*(beta1L*J21L + beta2L*J22L + beta3L*J23L) + + PDupwindNth3(beta2, i, j, k)*(beta1L*J31L + beta2L*J32L + beta3L*J33L))*ShiftAdvectionCoeff + + B2L*ShiftGammaCoeff; + + dtbetazL = (PDupwindNth1(beta3, i, j, k)*(beta1L*J11L + beta2L*J12L + beta3L*J13L) + + PDupwindNth2(beta3, i, j, k)*(beta1L*J21L + beta2L*J22L + beta3L*J23L) + + PDupwindNth3(beta3, i, j, k)*(beta1L*J31L + beta2L*J32L + beta3L*J33L))*ShiftAdvectionCoeff + + B3L*ShiftGammaCoeff; + + + /* Copy local copies back to grid functions */ + dtalp[index] = dtalpL; + dtbetax[index] = dtbetaxL; + dtbetay[index] = dtbetayL; + dtbetaz[index] = dtbetazL; + + /* Copy local copies back to subblock grid functions */ + } + LC_ENDLOOP3 (ML_BSSN_MP_convertToADMBaseDtLapseShift); +} + +void ML_BSSN_MP_convertToADMBaseDtLapseShift(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + GenericFD_LoopOverInterior(cctkGH, &ML_BSSN_MP_convertToADMBaseDtLapseShift_Body); +} diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBaseDtLapseShiftBoundary.c b/ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBaseDtLapseShiftBoundary.c new file mode 100644 index 0000000..8f052ad --- /dev/null +++ b/ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBaseDtLapseShiftBoundary.c @@ -0,0 +1,161 @@ +/* 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 ML_BSSN_MP_convertToADMBaseDtLapseShiftBoundary_Body(cGH const * const cctkGH, CCTK_INT const dir, CCTK_INT const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], CCTK_INT const min[3], CCTK_INT const max[3], CCTK_INT const n_subblock_gfs, CCTK_REAL * const subblock_gfs[]) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + + /* Declare finite differencing variables */ + CCTK_REAL dx = INITVALUE, dy = INITVALUE, dz = INITVALUE; + CCTK_REAL dxi = INITVALUE, dyi = INITVALUE, dzi = INITVALUE; + CCTK_REAL khalf = INITVALUE, kthird = INITVALUE, ktwothird = INITVALUE, kfourthird = INITVALUE, keightthird = INITVALUE; + CCTK_REAL hdxi = INITVALUE, hdyi = INITVALUE, hdzi = INITVALUE; + + + /* Declare predefined quantities */ + CCTK_REAL p1o12dx = INITVALUE; + CCTK_REAL p1o12dy = INITVALUE; + CCTK_REAL p1o12dz = INITVALUE; + CCTK_REAL p1o144dxdy = INITVALUE; + CCTK_REAL p1o144dxdz = INITVALUE; + CCTK_REAL p1o144dydz = INITVALUE; + CCTK_REAL p1odx = INITVALUE; + CCTK_REAL p1ody = INITVALUE; + CCTK_REAL p1odz = INITVALUE; + CCTK_REAL pm1o12dx2 = INITVALUE; + CCTK_REAL pm1o12dy2 = INITVALUE; + CCTK_REAL pm1o12dz2 = INITVALUE; + + if (verbose > 1) + { + CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_convertToADMBaseDtLapseShiftBoundary_Body"); + } + + if (cctk_iteration % ML_BSSN_MP_convertToADMBaseDtLapseShiftBoundary_calc_every != ML_BSSN_MP_convertToADMBaseDtLapseShiftBoundary_calc_offset) + { + return; + } + + /* Include user-supplied include files */ + + /* Initialise finite differencing variables */ + dx = CCTK_DELTA_SPACE(0); + dy = CCTK_DELTA_SPACE(1); + dz = CCTK_DELTA_SPACE(2); + dxi = 1.0 / dx; + dyi = 1.0 / dy; + dzi = 1.0 / dz; + khalf = 0.5; + kthird = 1/3.0; + ktwothird = 2.0/3.0; + kfourthird = 4.0/3.0; + keightthird = 8.0/3.0; + hdxi = 0.5 * dxi; + hdyi = 0.5 * dyi; + hdzi = 0.5 * dzi; + + /* Initialize predefined quantities */ + p1o12dx = INV(dx)/12.; + p1o12dy = INV(dy)/12.; + p1o12dz = INV(dz)/12.; + p1o144dxdy = (INV(dx)*INV(dy))/144.; + p1o144dxdz = (INV(dx)*INV(dz))/144.; + p1o144dydz = (INV(dy)*INV(dz))/144.; + p1odx = INV(dx); + p1ody = INV(dy); + p1odz = INV(dz); + pm1o12dx2 = -pow(dx,-2)/12.; + pm1o12dy2 = -pow(dy,-2)/12.; + pm1o12dz2 = -pow(dz,-2)/12.; + + /* Loop over the grid points */ + #pragma omp parallel + LC_LOOP3 (ML_BSSN_MP_convertToADMBaseDtLapseShiftBoundary, + i,j,k, min[0],min[1],min[2], max[0],max[1],max[2], + cctk_lsh[0],cctk_lsh[1],cctk_lsh[2]) + { + int index = INITVALUE; + int subblock_index = INITVALUE; + index = CCTK_GFINDEX3D(cctkGH,i,j,k); + subblock_index = i - min[0] + (max[0] - min[0]) * (j - min[1] + (max[1]-min[1]) * (k - min[2])); + + /* Declare shorthands */ + + /* Declare local copies of grid functions */ + CCTK_REAL AL = INITVALUE; + CCTK_REAL alphaL = INITVALUE; + CCTK_REAL B1L = INITVALUE, B2L = INITVALUE, B3L = INITVALUE; + CCTK_REAL dtalpL = INITVALUE; + CCTK_REAL dtbetaxL = INITVALUE; + CCTK_REAL dtbetayL = INITVALUE; + CCTK_REAL dtbetazL = INITVALUE; + CCTK_REAL trKL = INITVALUE; + /* Declare precomputed derivatives*/ + + /* Declare derivatives */ + + /* Assign local copies of grid functions */ + AL = A[index]; + alphaL = alpha[index]; + B1L = B1[index]; + B2L = B2[index]; + B3L = B3[index]; + trKL = trK[index]; + + /* Assign local copies of subblock grid functions */ + + /* Include user supplied include files */ + + /* Precompute derivatives (new style) */ + + /* Precompute derivatives (old style) */ + + /* Calculate temporaries and grid functions */ + dtalpL = harmonicF*(AL*(-1 + LapseAdvectionCoeff) - LapseAdvectionCoeff*trKL)*pow(alphaL,harmonicN); + + dtbetaxL = B1L*ShiftGammaCoeff; + + dtbetayL = B2L*ShiftGammaCoeff; + + dtbetazL = B3L*ShiftGammaCoeff; + + + /* Copy local copies back to grid functions */ + dtalp[index] = dtalpL; + dtbetax[index] = dtbetaxL; + dtbetay[index] = dtbetayL; + dtbetaz[index] = dtbetazL; + + /* Copy local copies back to subblock grid functions */ + } + LC_ENDLOOP3 (ML_BSSN_MP_convertToADMBaseDtLapseShiftBoundary); +} + +void ML_BSSN_MP_convertToADMBaseDtLapseShiftBoundary(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + GenericFD_LoopOverBoundaryWithGhosts(cctkGH, &ML_BSSN_MP_convertToADMBaseDtLapseShiftBoundary_Body); +} diff --git a/ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBaseFakeDtLapseShift.c b/ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBaseFakeDtLapseShift.c new file mode 100644 index 0000000..aab9eae --- /dev/null +++ b/ML_BSSN_MP/src/ML_BSSN_MP_convertToADMBaseFakeDtLapseShift.c @@ -0,0 +1,161 @@ +/* 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 ML_BSSN_MP_convertToADMBaseFakeDtLapseShift_Body(cGH const * const cctkGH, CCTK_INT const dir, CCTK_INT const face, CCTK_REAL const normal[3], CCTK_REAL const tangentA[3], CCTK_REAL const tangentB[3], CCTK_INT const min[3], CCTK_INT const max[3], CCTK_INT const n_subblock_gfs, CCTK_REAL * const subblock_gfs[]) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + + /* Declare finite differencing variables */ + CCTK_REAL dx = INITVALUE, dy = INITVALUE, dz = INITVALUE; + CCTK_REAL dxi = INITVALUE, dyi = INITVALUE, dzi = INITVALUE; + CCTK_REAL khalf = INITVALUE, kthird = INITVALUE, ktwothird = INITVALUE, kfourthird = INITVALUE, keightthird = INITVALUE; + CCTK_REAL hdxi = INITVALUE, hdyi = INITVALUE, hdzi = INITVALUE; + + + /* Declare predefined quantities */ + CCTK_REAL p1o12dx = INITVALUE; + CCTK_REAL p1o12dy = INITVALUE; + CCTK_REAL p1o12dz = INITVALUE; + CCTK_REAL p1o144dxdy = INITVALUE; + CCTK_REAL p1o144dxdz = INITVALUE; + CCTK_REAL p1o144dydz = INITVALUE; + CCTK_REAL p1odx = INITVALUE; + CCTK_REAL p1ody = INITVALUE; + CCTK_REAL p1odz = INITVALUE; + CCTK_REAL pm1o12dx2 = INITVALUE; + CCTK_REAL pm1o12dy2 = INITVALUE; + CCTK_REAL pm1o12dz2 = INITVALUE; + + if (verbose > 1) + { + CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_MP_convertToADMBaseFakeDtLapseShift_Body"); + } + + if (cctk_iteration % ML_BSSN_MP_convertToADMBaseFakeDtLapseShift_calc_every != ML_BSSN_MP_convertToADMBaseFakeDtLapseShift_calc_offset) + { + return; + } + + /* Include user-supplied include files */ + + /* Initialise finite differencing variables */ + dx = CCTK_DELTA_SPACE(0); + dy = CCTK_DELTA_SPACE(1); + dz = CCTK_DELTA_SPACE(2); + dxi = 1.0 / dx; + dyi = 1.0 / dy; + dzi = 1.0 / dz; + khalf = 0.5; + kthird = 1/3.0; + ktwothird = 2.0/3.0; + kfourthird = 4.0/3.0; + keightthird = 8.0/3.0; + hdxi = 0.5 * dxi; + hdyi = 0.5 * dyi; + hdzi = 0.5 * dzi; + + /* Initialize predefined quantities */ + p1o12dx = INV(dx)/12.; + p1o12dy = INV(dy)/12.; + p1o12dz = INV(dz)/12.; + p1o144dxdy = (INV(dx)*INV(dy))/144.; + p1o144dxdz = (INV(dx)*INV(dz))/144.; + p1o144dydz = (INV(dy)*INV(dz))/144.; + p1odx = INV(dx); + p1ody = INV(dy); + p1odz = INV(dz); + pm1o12dx2 = -pow(dx,-2)/12.; + pm1o12dy2 = -pow(dy,-2)/12.; + pm1o12dz2 = -pow(dz,-2)/12.; + + /* Loop over the grid points */ + #pragma omp parallel + LC_LOOP3 (ML_BSSN_MP_convertToADMBaseFakeDtLapseShift, + i,j,k, min[0],min[1],min[2], max[0],max[1],max[2], + cctk_lsh[0],cctk_lsh[1],cctk_lsh[2]) + { + int index = INITVALUE; + int subblock_index = INITVALUE; + index = CCTK_GFINDEX3D(cctkGH,i,j,k); + subblock_index = i - min[0] + (max[0] - min[0]) * (j - min[1] + (max[1]-min[1]) * (k - min[2])); + + /* Declare shorthands */ + + /* Declare local copies of grid functions */ + CCTK_REAL AL = INITVALUE; + CCTK_REAL alphaL = INITVALUE; + CCTK_REAL B1L = INITVALUE, B2L = INITVALUE, B3L = INITVALUE; + CCTK_REAL dtalpL = INITVALUE; + CCTK_REAL dtbetaxL = INITVALUE; + CCTK_REAL dtbetayL = INITVALUE; + CCTK_REAL dtbetazL = INITVALUE; + CCTK_REAL trKL = INITVALUE; + /* Declare precomputed derivatives*/ + + /* Declare derivatives */ + + /* Assign local copies of grid functions */ + AL = A[index]; + alphaL = alpha[index]; + B1L = B1[index]; + B2L = B2[index]; + B3L = B3[index]; + trKL = trK[index]; + + /* Assign local copies of subblock grid functions */ + + /* Include user supplied include files */ + + /* Precompute derivatives (new style) */ + + /* Precompute derivatives (old style) */ + + /* Calculate temporaries and grid functions */ + dtalpL = harmonicF*(AL*(-1 + LapseAdvectionCoeff) - LapseAdvectionCoeff*trKL)*pow(alphaL,harmonicN); + + dtbetaxL = B1L*ShiftGammaCoeff; + + dtbetayL = B2L*ShiftGammaCoeff; + + dtbetazL = B3L*ShiftGammaCoeff; + + + /* Copy local copies back to grid functions */ + dtalp[index] = dtalpL; + dtbetax[index] = dtbetaxL; + dtbetay[index] = dtbetayL; + dtbetaz[index] = dtbetazL; + + /* Copy local copies back to subblock grid functions */ + } + LC_ENDLOOP3 (ML_BSSN_MP_convertToADMBaseFakeDtLapseShift); +} + +void ML_BSSN_MP_convertToADMBaseFakeDtLapseShift(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + GenericFD_LoopOverEverything(cctkGH, &ML_BSSN_MP_convertToADMBaseFakeDtLapseShift_Body); +} diff --git a/ML_BSSN_MP/src/make.code.defn b/ML_BSSN_MP/src/make.code.defn index 77b0983..8d63814 100644 --- a/ML_BSSN_MP/src/make.code.defn +++ b/ML_BSSN_MP/src/make.code.defn @@ -1,3 +1,3 @@ # File produced by Kranc -SRCS = Startup.c RegisterMoL.c RegisterSymmetries.c ML_BSSN_MP_Minkowski.c ML_BSSN_MP_convertFromADMBase.c ML_BSSN_MP_convertFromADMBaseGamma.c ML_BSSN_MP_RHS.c ML_BSSN_MP_RHSStaticBoundary.c ML_BSSN_MP_RHSRadiativeBoundary.c ML_BSSN_MP_enforce.c ML_BSSN_MP_boundary.c ML_BSSN_MP_convertToADMBase.c ML_BSSN_MP_ADMBaseBoundary.c ML_BSSN_MP_constraints.c ML_BSSN_MP_constraints_boundary.c Boundaries.c +SRCS = Startup.c RegisterMoL.c RegisterSymmetries.c ML_BSSN_MP_Minkowski.c ML_BSSN_MP_convertFromADMBase.c ML_BSSN_MP_convertFromADMBaseGamma.c ML_BSSN_MP_RHS.c ML_BSSN_MP_RHSStaticBoundary.c ML_BSSN_MP_RHSRadiativeBoundary.c ML_BSSN_MP_enforce.c ML_BSSN_MP_boundary.c ML_BSSN_MP_convertToADMBase.c ML_BSSN_MP_convertToADMBaseDtLapseShift.c ML_BSSN_MP_convertToADMBaseDtLapseShiftBoundary.c ML_BSSN_MP_convertToADMBaseFakeDtLapseShift.c ML_BSSN_MP_constraints.c ML_BSSN_MP_constraints_boundary.c Boundaries.c diff --git a/ML_BSSN_MP_Helper/schedule.ccl b/ML_BSSN_MP_Helper/schedule.ccl index 43a9394..0d44d8d 100644 --- a/ML_BSSN_MP_Helper/schedule.ccl +++ b/ML_BSSN_MP_Helper/schedule.ccl @@ -98,15 +98,15 @@ if (CCTK_EQUALS (evolution_method, "ML_BSSN_MP")) { SCHEDULE ML_BSSN_MP_NewRad IN ML_BSSN_MP_evolCalcGroup AFTER ML_BSSN_MP_RHS { LANG: C - SYNC: ML_curvrhs - SYNC: ML_dtlapserhs - SYNC: ML_dtshiftrhs - SYNC: ML_Gammarhs - SYNC: ML_lapserhs - SYNC: ML_log_confacrhs - SYNC: ML_metricrhs - SYNC: ML_shiftrhs - SYNC: ML_trace_curvrhs + #SYNC: ML_curvrhs + #SYNC: ML_dtlapserhs + #SYNC: ML_dtshiftrhs + #SYNC: ML_Gammarhs + #SYNC: ML_lapserhs + #SYNC: ML_log_confacrhs + #SYNC: ML_metricrhs + #SYNC: ML_shiftrhs + #SYNC: ML_trace_curvrhs } "Apply NewRad boundary conditions to RHS" } diff --git a/ML_BSSN_M_Helper/schedule.ccl b/ML_BSSN_M_Helper/schedule.ccl index c7fc7a5..ee7adac 100644 --- a/ML_BSSN_M_Helper/schedule.ccl +++ b/ML_BSSN_M_Helper/schedule.ccl @@ -98,15 +98,15 @@ if (CCTK_EQUALS (evolution_method, "ML_BSSN_M")) { SCHEDULE ML_BSSN_M_NewRad IN ML_BSSN_M_evolCalcGroup AFTER ML_BSSN_M_RHS { LANG: C - SYNC: ML_curvrhs - SYNC: ML_dtlapserhs - SYNC: ML_dtshiftrhs - SYNC: ML_Gammarhs - SYNC: ML_lapserhs - SYNC: ML_log_confacrhs - SYNC: ML_metricrhs - SYNC: ML_shiftrhs - SYNC: ML_trace_curvrhs + #SYNC: ML_curvrhs + #SYNC: ML_dtlapserhs + #SYNC: ML_dtshiftrhs + #SYNC: ML_Gammarhs + #SYNC: ML_lapserhs + #SYNC: ML_log_confacrhs + #SYNC: ML_metricrhs + #SYNC: ML_shiftrhs + #SYNC: ML_trace_curvrhs } "Apply NewRad boundary conditions to RHS" } |