diff options
author | Peter Diener <diener@linux-hn3d.site> | 2010-02-01 16:19:19 -0600 |
---|---|---|
committer | Peter Diener <diener@linux-hn3d.site> | 2010-02-01 16:19:19 -0600 |
commit | 3f330d6e66c355da6c9dd6aa28a4e8641a49e552 (patch) | |
tree | 8782b4209be586e20f453414b63466d05edbed04 /ML_BSSN | |
parent | 77f234967fbcc6344888c8ef5f84d42adf7d1078 (diff) |
Make sure BetaDriver routines are scheduled appropriately.
Schedule BetaDriver setup routines in initial, postregrid and
post_recover_variables.
Signed-off-by: Peter Diener <diener@linux-hn3d.site>
Diffstat (limited to 'ML_BSSN')
-rw-r--r-- | ML_BSSN/param.ccl | 16 | ||||
-rw-r--r-- | ML_BSSN/schedule.ccl | 13 | ||||
-rw-r--r-- | ML_BSSN/src/ML_BSSN_Minkowski.c | 4 | ||||
-rw-r--r-- | ML_BSSN/src/ML_BSSN_convertFromADMBase.c | 4 | ||||
-rw-r--r-- | ML_BSSN/src/ML_BSSN_setBetaDriverConstant.c | 139 | ||||
-rw-r--r-- | ML_BSSN/src/ML_BSSN_setBetaDriverSpatial.c (renamed from ML_BSSN/src/ML_BSSN_setBetaDriver.c) | 17 | ||||
-rw-r--r-- | ML_BSSN/src/make.code.defn | 2 |
7 files changed, 173 insertions, 22 deletions
diff --git a/ML_BSSN/param.ccl b/ML_BSSN/param.ccl index 8e791df..2d06d8b 100644 --- a/ML_BSSN/param.ccl +++ b/ML_BSSN/param.ccl @@ -213,7 +213,13 @@ CCTK_INT ML_BSSN_convertFromADMBaseGamma_calc_every "ML_BSSN_convertFromADMBaseG } 1 restricted: -CCTK_INT ML_BSSN_setBetaDriver_calc_every "ML_BSSN_setBetaDriver_calc_every" +CCTK_INT ML_BSSN_setBetaDriverSpatial_calc_every "ML_BSSN_setBetaDriverSpatial_calc_every" +{ + *:* :: "" +} 1 + +restricted: +CCTK_INT ML_BSSN_setBetaDriverConstant_calc_every "ML_BSSN_setBetaDriverConstant_calc_every" { *:* :: "" } 1 @@ -303,7 +309,13 @@ CCTK_INT ML_BSSN_convertFromADMBaseGamma_calc_offset "ML_BSSN_convertFromADMBase } 0 restricted: -CCTK_INT ML_BSSN_setBetaDriver_calc_offset "ML_BSSN_setBetaDriver_calc_offset" +CCTK_INT ML_BSSN_setBetaDriverSpatial_calc_offset "ML_BSSN_setBetaDriverSpatial_calc_offset" +{ + *:* :: "" +} 0 + +restricted: +CCTK_INT ML_BSSN_setBetaDriverConstant_calc_offset "ML_BSSN_setBetaDriverConstant_calc_offset" { *:* :: "" } 0 diff --git a/ML_BSSN/schedule.ccl b/ML_BSSN/schedule.ccl index f8a7f3b..1380de4 100644 --- a/ML_BSSN/schedule.ccl +++ b/ML_BSSN/schedule.ccl @@ -370,10 +370,19 @@ if (CCTK_EQUALS(my_initial_data, "ADMBase")) if (CCTK_EQUALS(UseSpatialBetaDriver, "yes")) { - schedule ML_BSSN_setBetaDriver AT initial AFTER ADMBase_PostInitial AFTER ML_BSSN_convertFromADMBase + schedule ML_BSSN_setBetaDriverSpatial IN ML_BSSN_init_eta { LANG: C - } "ML_BSSN_setBetaDriver" + } "ML_BSSN_setBetaDriverSpatial" +} + + +if (CCTK_EQUALS(UseSpatialBetaDriver, "no")) +{ + schedule ML_BSSN_setBetaDriverConstant IN ML_BSSN_init_eta + { + LANG: C + } "ML_BSSN_setBetaDriverConstant" } schedule ML_BSSN_RHS IN ML_BSSN_evolCalcGroup diff --git a/ML_BSSN/src/ML_BSSN_Minkowski.c b/ML_BSSN/src/ML_BSSN_Minkowski.c index 759310a..28229b7 100644 --- a/ML_BSSN/src/ML_BSSN_Minkowski.c +++ b/ML_BSSN/src/ML_BSSN_Minkowski.c @@ -108,7 +108,6 @@ void ML_BSSN_Minkowski_Body(cGH const * const cctkGH, CCTK_INT const dir, CCTK_I 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 etaL = INITVALUE; CCTK_REAL gt11L = INITVALUE, gt12L = INITVALUE, gt13L = INITVALUE, gt22L = INITVALUE, gt23L = INITVALUE, gt33L = INITVALUE; CCTK_REAL phiL = INITVALUE; CCTK_REAL trKL = INITVALUE; @@ -178,8 +177,6 @@ void ML_BSSN_Minkowski_Body(cGH const * const cctkGH, CCTK_INT const dir, CCTK_I B3L = 0; - etaL = BetaDriver; - /* Copy local copies back to grid functions */ A[index] = AL; @@ -196,7 +193,6 @@ void ML_BSSN_Minkowski_Body(cGH const * const cctkGH, CCTK_INT const dir, CCTK_I beta1[index] = beta1L; beta2[index] = beta2L; beta3[index] = beta3L; - eta[index] = etaL; gt11[index] = gt11L; gt12[index] = gt12L; gt13[index] = gt13L; diff --git a/ML_BSSN/src/ML_BSSN_convertFromADMBase.c b/ML_BSSN/src/ML_BSSN_convertFromADMBase.c index 3d5e687..90cd41c 100644 --- a/ML_BSSN/src/ML_BSSN_convertFromADMBase.c +++ b/ML_BSSN/src/ML_BSSN_convertFromADMBase.c @@ -115,7 +115,6 @@ void ML_BSSN_convertFromADMBase_Body(cGH const * const cctkGH, CCTK_INT const di CCTK_REAL betaxL = INITVALUE; CCTK_REAL betayL = INITVALUE; CCTK_REAL betazL = INITVALUE; - CCTK_REAL etaL = INITVALUE; CCTK_REAL gt11L = INITVALUE, gt12L = INITVALUE, gt13L = INITVALUE, gt22L = INITVALUE, gt23L = INITVALUE, gt33L = INITVALUE; CCTK_REAL gxxL = INITVALUE; CCTK_REAL gxyL = INITVALUE; @@ -240,8 +239,6 @@ void ML_BSSN_convertFromADMBase_Body(cGH const * const cctkGH, CCTK_INT const di beta3L = betazL; - etaL = BetaDriver; - /* Copy local copies back to grid functions */ alpha[index] = alphaL; @@ -254,7 +251,6 @@ void ML_BSSN_convertFromADMBase_Body(cGH const * const cctkGH, CCTK_INT const di beta1[index] = beta1L; beta2[index] = beta2L; beta3[index] = beta3L; - eta[index] = etaL; gt11[index] = gt11L; gt12[index] = gt12L; gt13[index] = gt13L; diff --git a/ML_BSSN/src/ML_BSSN_setBetaDriverConstant.c b/ML_BSSN/src/ML_BSSN_setBetaDriverConstant.c new file mode 100644 index 0000000..3ae34af --- /dev/null +++ b/ML_BSSN/src/ML_BSSN_setBetaDriverConstant.c @@ -0,0 +1,139 @@ +/* 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_setBetaDriverConstant_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_setBetaDriverConstant_Body"); + } + + if (cctk_iteration % ML_BSSN_setBetaDriverConstant_calc_every != ML_BSSN_setBetaDriverConstant_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_setBetaDriverConstant, + 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 etaL = INITVALUE; + /* Declare precomputed derivatives*/ + + /* Declare derivatives */ + + /* Assign local copies of grid functions */ + + /* 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 */ + etaL = BetaDriver; + + + /* Copy local copies back to grid functions */ + eta[index] = etaL; + + /* Copy local copies back to subblock grid functions */ + } + LC_ENDLOOP3 (ML_BSSN_setBetaDriverConstant); +} + +void ML_BSSN_setBetaDriverConstant(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + GenericFD_LoopOverEverything(cctkGH, &ML_BSSN_setBetaDriverConstant_Body); +} diff --git a/ML_BSSN/src/ML_BSSN_setBetaDriver.c b/ML_BSSN/src/ML_BSSN_setBetaDriverSpatial.c index 04a369a..0762043 100644 --- a/ML_BSSN/src/ML_BSSN_setBetaDriver.c +++ b/ML_BSSN/src/ML_BSSN_setBetaDriverSpatial.c @@ -20,7 +20,7 @@ #define CUB(x) ((x) * (x) * (x)) #define QAD(x) ((x) * (x) * (x) * (x)) -void ML_BSSN_setBetaDriver_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_setBetaDriverSpatial_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_setBetaDriver_Body(cGH const * const cctkGH, CCTK_INT const dir, CC if (verbose > 1) { - CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_setBetaDriver_Body"); + CCTK_VInfo(CCTK_THORNSTRING,"Entering ML_BSSN_setBetaDriverSpatial_Body"); } - if (cctk_iteration % ML_BSSN_setBetaDriver_calc_every != ML_BSSN_setBetaDriver_calc_offset) + if (cctk_iteration % ML_BSSN_setBetaDriverSpatial_calc_every != ML_BSSN_setBetaDriverSpatial_calc_offset) { return; } @@ -91,7 +91,7 @@ void ML_BSSN_setBetaDriver_Body(cGH const * const cctkGH, CCTK_INT const dir, CC /* Loop over the grid points */ #pragma omp parallel - LC_LOOP3 (ML_BSSN_setBetaDriver, + LC_LOOP3 (ML_BSSN_setBetaDriverSpatial, i,j,k, min[0],min[1],min[2], max[0],max[1],max[2], cctk_lsh[0],cctk_lsh[1],cctk_lsh[2]) { @@ -110,7 +110,6 @@ void ML_BSSN_setBetaDriver_Body(cGH const * const cctkGH, CCTK_INT const dir, CC /* Declare derivatives */ /* Assign local copies of grid functions */ - etaL = eta[index]; rL = r[index]; /* Assign local copies of subblock grid functions */ @@ -122,7 +121,7 @@ void ML_BSSN_setBetaDriver_Body(cGH const * const cctkGH, CCTK_INT const dir, CC /* Precompute derivatives (old style) */ /* Calculate temporaries and grid functions */ - etaL = etaL*IfThen(rL > SpatialBetaDriverRadius,SpatialBetaDriverRadius*INV(rL),1); + etaL = BetaDriver*IfThen(rL > SpatialBetaDriverRadius,SpatialBetaDriverRadius*INV(rL),1); /* Copy local copies back to grid functions */ @@ -130,13 +129,13 @@ void ML_BSSN_setBetaDriver_Body(cGH const * const cctkGH, CCTK_INT const dir, CC /* Copy local copies back to subblock grid functions */ } - LC_ENDLOOP3 (ML_BSSN_setBetaDriver); + LC_ENDLOOP3 (ML_BSSN_setBetaDriverSpatial); } -void ML_BSSN_setBetaDriver(CCTK_ARGUMENTS) +void ML_BSSN_setBetaDriverSpatial(CCTK_ARGUMENTS) { DECLARE_CCTK_ARGUMENTS; DECLARE_CCTK_PARAMETERS; - GenericFD_LoopOverEverything(cctkGH, &ML_BSSN_setBetaDriver_Body); + GenericFD_LoopOverEverything(cctkGH, &ML_BSSN_setBetaDriverSpatial_Body); } diff --git a/ML_BSSN/src/make.code.defn b/ML_BSSN/src/make.code.defn index 461adc2..a1538e8 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_setBetaDriver.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 +SRCS = Startup.c RegisterMoL.c RegisterSymmetries.c ML_BSSN_Minkowski.c ML_BSSN_convertFromADMBase.c ML_BSSN_convertFromADMBaseGamma.c ML_BSSN_setBetaDriverSpatial.c ML_BSSN_setBetaDriverConstant.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 |