aboutsummaryrefslogtreecommitdiff
path: root/ML_BSSN
diff options
context:
space:
mode:
authorErik Schnetter <schnetter@cct.lsu.edu>2010-01-12 14:38:22 -0600
committerErik Schnetter <schnetter@cct.lsu.edu>2010-01-12 14:38:22 -0600
commitb34404d76b7ffbc9088fb0efc44380229c6d3132 (patch)
treef8d6b5a36e81ffbb061e9dc444a14d6e484ee54b /ML_BSSN
parent3583ad21d3cb40d8c0980ea057a954eb6e055273 (diff)
Commit changes that should have been committed earlier
Diffstat (limited to 'ML_BSSN')
-rw-r--r--ML_BSSN/param.ccl35
-rw-r--r--ML_BSSN/schedule.ccl45
-rw-r--r--ML_BSSN/src/ML_BSSN_convertToADMBase.c36
-rw-r--r--ML_BSSN/src/ML_BSSN_convertToADMBaseDtLapseShift.c177
-rw-r--r--ML_BSSN/src/ML_BSSN_convertToADMBaseDtLapseShiftBoundary.c (renamed from ML_BSSN/src/ML_BSSN_ADMBaseBoundary.c)127
-rw-r--r--ML_BSSN/src/ML_BSSN_convertToADMBaseFakeDtLapseShift.c161
-rw-r--r--ML_BSSN/src/make.code.defn2
7 files changed, 407 insertions, 176 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/src/ML_BSSN_convertToADMBaseFakeDtLapseShift.c b/ML_BSSN/src/ML_BSSN_convertToADMBaseFakeDtLapseShift.c
new file mode 100644
index 0000000..835480a
--- /dev/null
+++ b/ML_BSSN/src/ML_BSSN_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_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_convertToADMBaseFakeDtLapseShift_Body");
+ }
+
+ if (cctk_iteration % ML_BSSN_convertToADMBaseFakeDtLapseShift_calc_every != ML_BSSN_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_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_convertToADMBaseFakeDtLapseShift);
+}
+
+void ML_BSSN_convertToADMBaseFakeDtLapseShift(CCTK_ARGUMENTS)
+{
+ DECLARE_CCTK_ARGUMENTS;
+ DECLARE_CCTK_PARAMETERS;
+
+ 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